mirror of
https://github.com/wassname/talk.git
synced 2026-08-06 13:41:02 +08:00
* CORL-729 Upgrade final form, fix and improve tests This is a squashed rebase from these commits: a300b31c23ab11e5e6f0668bc03ece7697360aaa feat: error on optimisic response warnings during test dd8a9776865ec41d346e23ae0743d0d4fb0caa21 fix: turn off @typescript-eslint/prefer-regexp-exec rule b995daacf1722cace60d755e672cb6a3a20d6bc2 feat: mute false warnings in test e44f9e28307cd63a82c1fb7ac013667dd7b7bc46 fix: wrap remaining tests with act afbd4329b97f3dbc9f873ea4ff234d98bb651ccf feat: fail when act(async () => ...) without await warnings 51dfb60b7d75411ba2e1a28db33f4aba5cf84de1 feat: fail tests with act warnings 97f93546ed8113e207882411eb4cdb7675b0796c fix: mock window.resizeTo globally in tests 850958b8c4d2fc0aca67ae580296433af223f8ab fix: more tests with act 24c05ab88e9a416e4962acc3f20f2c764ba07657 fix: wrap charCountEditComment test in acts ed590b82d147470bba74055dc682e6b70d2e76fb fix signInWithEmail 4a2b9402cb6ce9565d99ae1a950eaa422ff603c3 fix: PostCommentFormContainer 815ebe6ef364d954d4bd0a35495934c9d014170b fix: use final form initialize instead of reset and remove obsolete d3101f2112ed3ffe8d06609620e31e6655d2cf6d Merge branch 'feature/CORL-729-final-form' of https://github.com/coralproject/talk into feature/CORL-729-final-form a0658da610a5f39b6fae78ffb8dd291b22d54e50 fix: addEmailAddress 60f7fc99a44dfa49dfd401a0ef49c60973b3e8e3 fix: use proper act pattern in renderConfigure.spec.tsx d66bdfc2245c2b1ee03a1b3a3a56f1d5ba14ddc4 Stop propagation of Modal content click events (#2706) ec6689594136e22a5b9f05ea284162702dc4955d fix: use proper act pattern in createUsername.spec.tsx ef239496964a5f9a91ee1c4424ad81537c4f47fe fix: stream configuration c7e06a0c6aef6b299c41392af81f8a20855028bf fix: user proper act pattern in streamConfiguration 9712e659e394a898500ed649464ff14d4870e589 Merge branch 'feature/CORL-729-final-form' of https://github.com/coralproject/talk into feature/CORL-729-final-form 9e5cfbaf3593615b457055de23f187fa07edd4c4 fix: signIn test 99b44a4a1bbb7ff2cd44c6821ad33b80f90c4a99 fix: user proper act pattern in stories.spec.tsx ed7c1a92f93ab9aaa85ff92837b0ed21560cb358 fix: user proper act pattern in addEmailAddress a04b392cb2148b9a24791b062027796c409d053e fix: remove obsolete snapshots 59df67c0f9b9d26c74e2cca7d333f5868b0b202d fix: signUp test 7656f179df95b4cd96b37afbc88a1c3a2944fdf4 fix: use proper act pattern on createPassword 85246fbf1f9ab49ad3a09c11ab79bf537059b548 fix: use correct act() pattern in createUsername.spec.tsx d5239373a2d1bbed0bfe8c1ca62ef6a70ef5c7d9 fix: the correct way to use act on form submit :-) d84ecd168354f4acb422a5ddb725fb8faf9c3184 fix: moderation test d8df62ab1a6486144684ff917c47e6e375ffbe03 fix: reportComment test 2756e3184bb292168e8d34e201f340c3799941e6 fix: auth tests a28695dbdd313a7bc3dade9ac1f92d6ef0061526 Properly handle final-form actions in tests 2fafc8ea3458c5b15b66f3d65f0947672dd1a516 Update snapshots now that final form isn't overwriting props 1f9bbaec8678a7653124898ba4a2e84ddc1ef243 fix: prevent final form from overwriting field props f6c66c003d1917db2dcb3f757e8a303266c381fa fix: prevent final form fields overwrite out props 48d1fc7318ee4ba7bf72839127e9a0b1487c1729 chore: rename translation string 728373da5728a4e7c039bd0c3a3cf0037e9f5177 fix: purge relay metadata from request 7cdea925087a6b9b6e318bbb1b31b798be87dc2f fix: radiobuttons 9735bae79222219a81a28d458976a596201b650b chore: revert obsolete checks 0b556e1693584430a5814e81d87b0f233efd1a30 fix: refactor admin configure b245afc7b196035bcb454e031c966e63c77ce522 fix: implement withForm HOC 5787400051211f5d2e1773d7207f32b66b02a2a1 Update the Configure page form state to properly load form values 8c2af3e22a96a3d2e50e7f06fb45d1fb79cf0c8e Replace form.reset() with setTimeout(form.reset) 27d9c90e3f0166cc2db45db461619be15a3cb950 Update radio buttons and on/off fields to work with final-form updates b852dd14af85b14ff8e0d2823e1e83bf278b29b9 Replace any on OnSubmit with typed form submission interfaces f049a70aaf4872825ac3b2aa62dc5cb7f945290a (f) Preliminarily get Coral compiling with latest final-form libraries * feat: act is now actAndReturn * fix: print original filename and line number in custom console impl * feat: trace process warnings * fix: server warnings about potentially memory leak with too many listeners
211 lines
6.9 KiB
JavaScript
211 lines
6.9 KiB
JavaScript
const typescriptEslintRecommended = require('@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended').default.overrides[0];
|
|
const typescriptRecommended = require('@typescript-eslint/eslint-plugin/dist/configs/recommended.json');
|
|
const typescriptRecommendedTypeChecking = require('@typescript-eslint/eslint-plugin/dist/configs/recommended-requiring-type-checking.json');
|
|
const typescriptEslintPrettier = require('eslint-config-prettier/@typescript-eslint');
|
|
const react = require('eslint-plugin-react').configs.recommended;
|
|
const jsxA11y = require('eslint-plugin-jsx-a11y').configs.recommended;
|
|
const reactPrettier = require('eslint-config-prettier/react');
|
|
|
|
const typescriptOverrides = {
|
|
files: ["*.ts", "*.tsx"],
|
|
parser: "@typescript-eslint/parser",
|
|
parserOptions: {
|
|
sourceType: "module",
|
|
ecmaFeatures: {
|
|
jsx: true,
|
|
},
|
|
},
|
|
plugins: [
|
|
"@typescript-eslint",
|
|
"@typescript-eslint/tslint",
|
|
"react",
|
|
"jsx-a11y",
|
|
],
|
|
settings: {
|
|
react: {
|
|
version: "detect",
|
|
}
|
|
},
|
|
rules: Object.assign(
|
|
typescriptEslintRecommended.rules,
|
|
typescriptRecommended.rules,
|
|
typescriptEslintPrettier.rules,
|
|
react.rules,
|
|
jsxA11y.rules,
|
|
reactPrettier.rules,
|
|
{
|
|
"@typescript-eslint/adjacent-overload-signatures": "error",
|
|
// TODO: (cvle) change `readonly` param to `array-simple` when upgraded typescript.
|
|
"@typescript-eslint/array-type": ["error", { "default": "array-simple", "readonly": "generic"}],
|
|
"@typescript-eslint/ban-types": "error",
|
|
"@typescript-eslint/camelcase": "off",
|
|
"@typescript-eslint/consistent-type-assertions": "error",
|
|
"@typescript-eslint/consistent-type-definitions": "error",
|
|
"@typescript-eslint/class-name-casing": "error",
|
|
"@typescript-eslint/explicit-function-return-type": "off",
|
|
"@typescript-eslint/explicit-member-accessibility": [
|
|
"error",
|
|
{
|
|
"overrides": {
|
|
"constructors": "off",
|
|
},
|
|
},
|
|
],
|
|
"@typescript-eslint/indent": "off",
|
|
"@typescript-eslint/interface-name-prefix": "error",
|
|
"@typescript-eslint/member-delimiter-style": "off",
|
|
"@typescript-eslint/no-empty-function": "error",
|
|
"@typescript-eslint/no-empty-interface": "error",
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/no-misused-new": "error",
|
|
"@typescript-eslint/no-namespace": "error",
|
|
"@typescript-eslint/no-non-null-assertion": "off",
|
|
"@typescript-eslint/no-parameter-properties": "off",
|
|
"@typescript-eslint/no-unused-vars": ["error", {"args": "none", "ignoreRestSiblings": true}],
|
|
"@typescript-eslint/no-use-before-define": "off", // TODO: (cvle) Should be on?
|
|
"@typescript-eslint/no-use-before-declare": "off",
|
|
"@typescript-eslint/no-var-requires": "error",
|
|
"@typescript-eslint/prefer-for-of": "error",
|
|
"@typescript-eslint/prefer-function-type": "error",
|
|
"@typescript-eslint/prefer-namespace-keyword": "error",
|
|
"@typescript-eslint/triple-slash-reference": "error",
|
|
"@typescript-eslint/type-annotation-spacing": "off",
|
|
"@typescript-eslint/unified-signatures": "error",
|
|
// (cvle) disabled, because the way we use labels in our code cause to many
|
|
// false positives.
|
|
"jsx-a11y/label-has-associated-control": "off",
|
|
"react/display-name": "error",
|
|
"react/prop-types": "off",
|
|
"react/no-unescaped-entities": "off",
|
|
}
|
|
),
|
|
};
|
|
|
|
let typescriptTypeCheckingOverrides = {
|
|
files: ["*.ts", "*.tsx"],
|
|
parserOptions: {
|
|
project: ["tsconfig.json", "./src/tsconfig.json", "./src/core/client/tsconfig.json"],
|
|
// TODO: (cvle) this is a workaround, see: https://github.com/typescript-eslint/typescript-eslint/issues/1091.
|
|
createDefaultProgram: true,
|
|
},
|
|
rules: Object.assign(
|
|
typescriptRecommendedTypeChecking.rules,
|
|
{
|
|
"@typescript-eslint/tslint/config": ["error", {
|
|
"rules": {
|
|
"ordered-imports": {
|
|
"options": {
|
|
"import-sources-order": "case-insensitive",
|
|
"module-source-path": "full",
|
|
"named-imports-order": "case-insensitive",
|
|
},
|
|
},
|
|
},
|
|
}],
|
|
// 28.11.19: (cvle) Disabled because behavior of regexp.exec seems different than str.match?
|
|
"@typescript-eslint/prefer-regexp-exec": "off",
|
|
"@typescript-eslint/require-await": "off",
|
|
"@typescript-eslint/no-misused-promises": "off",
|
|
"@typescript-eslint/unbound-method": "off", // 10.10.19: (cvle) seems to give false positive.
|
|
}
|
|
),
|
|
};
|
|
|
|
const jestOverrides = {
|
|
env: {
|
|
jest: true,
|
|
},
|
|
files: ["test/**/*.ts", "test/**/*.tsx"],
|
|
globals: {
|
|
"expectAndFail": "readonly",
|
|
"fail": "readonly",
|
|
},
|
|
};
|
|
|
|
// Setup the overrides.
|
|
const overrides = [jestOverrides, typescriptOverrides];
|
|
// Skip type information to make it faster!
|
|
if (process.env.FAST_LINT !== "true") {
|
|
overrides.push(typescriptTypeCheckingOverrides);
|
|
}
|
|
|
|
module.exports = {
|
|
overrides,
|
|
env: {
|
|
browser: true,
|
|
es6: true,
|
|
node: true,
|
|
},
|
|
extends: [
|
|
"eslint:recommended",
|
|
"plugin:jsdoc/recommended",
|
|
"plugin:prettier/recommended",
|
|
],
|
|
parserOptions: {
|
|
"ecmaVersion": 2018,
|
|
},
|
|
rules: {
|
|
"arrow-body-style": "off",
|
|
"arrow-parens": [
|
|
"off",
|
|
"as-needed",
|
|
],
|
|
"camelcase": "off",
|
|
"complexity": "off",
|
|
"constructor-super": "error",
|
|
"spaced-comment": ["error", "always"],
|
|
"curly": "error",
|
|
"dot-notation": "error",
|
|
"eol-last": "off",
|
|
"eqeqeq": "error",
|
|
"guard-for-in": "error",
|
|
"jsdoc/require-jsdoc": "off",
|
|
"jsdoc/require-returns": "off",
|
|
"jsdoc/require-param": "off",
|
|
"jsdoc/require-param-type": "off",
|
|
"jsdoc/require-returns-type": "off",
|
|
"linebreak-style": "off",
|
|
"max-classes-per-file": [
|
|
"error",
|
|
1,
|
|
],
|
|
"member-ordering": "off",
|
|
"new-parens": "off",
|
|
"newline-per-chained-call": "off",
|
|
"no-bitwise": "error",
|
|
"no-caller": "error",
|
|
"no-cond-assign": "error",
|
|
"no-console": "error",
|
|
"no-debugger": "error",
|
|
"no-empty": "error",
|
|
"no-eval": "error",
|
|
"no-extra-semi": "off",
|
|
"no-fallthrough": "error",
|
|
"no-invalid-this": "off",
|
|
"no-irregular-whitespace": "off",
|
|
"no-multiple-empty-lines": "off",
|
|
"no-new-wrappers": "error",
|
|
"no-prototype-builtins": "off",
|
|
"no-shadow": "error",
|
|
"no-throw-literal": "error",
|
|
"no-undef": "off",
|
|
"no-undef-init": "error",
|
|
"no-unsafe-finally": "error",
|
|
"no-unused-expressions": "error",
|
|
"no-unused-labels": "error",
|
|
"no-unused-vars": ["error", {"args": "none", "ignoreRestSiblings": true}],
|
|
"no-var": "error",
|
|
"object-shorthand": "error",
|
|
"one-var": "off",
|
|
"prefer-arrow-callback": "off",
|
|
"prefer-const": "error",
|
|
"quote-props": "off",
|
|
"radix": "error",
|
|
"require-atomic-updates": "off",
|
|
"space-before-function-paren": "off",
|
|
"sort-imports": "off",
|
|
"use-isnan": "error",
|
|
"valid-typeof": "off",
|
|
},
|
|
};
|