@w5s/eslint-config 1.0.0-alpha.44 → 1.0.0-alpha.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/es.js +6 -18
  2. package/functional.js +7 -10
  3. package/index.js +7 -7
  4. package/jest.js +1 -1
  5. package/json.js +1 -1
  6. package/lib/_rule.d.ts +5 -0
  7. package/lib/_rule.js +42 -0
  8. package/lib/_rule.js.map +1 -0
  9. package/lib/base.d.ts +5 -0
  10. package/lib/base.js +68 -0
  11. package/lib/base.js.map +1 -0
  12. package/lib/import.d.ts +4 -0
  13. package/lib/import.js +32 -0
  14. package/lib/import.js.map +1 -0
  15. package/lib/jest.d.ts +4 -0
  16. package/lib/jest.js +58 -0
  17. package/lib/jest.js.map +1 -0
  18. package/lib/jsdoc.d.ts +4 -0
  19. package/lib/jsdoc.js +21 -0
  20. package/lib/jsdoc.js.map +1 -0
  21. package/lib/jsonc.d.ts +4 -0
  22. package/lib/jsonc.js +184 -0
  23. package/lib/jsonc.js.map +1 -0
  24. package/lib/prettier.d.ts +4 -0
  25. package/lib/prettier.js +44 -0
  26. package/lib/prettier.js.map +1 -0
  27. package/lib/promise.d.ts +4 -0
  28. package/lib/promise.js +13 -0
  29. package/lib/promise.js.map +1 -0
  30. package/lib/react.d.ts +4 -0
  31. package/lib/react.js +177 -0
  32. package/lib/react.js.map +1 -0
  33. package/lib/typescript.d.ts +4 -0
  34. package/lib/typescript.js +244 -0
  35. package/lib/typescript.js.map +1 -0
  36. package/lib/unicorn.d.ts +4 -0
  37. package/lib/unicorn.js +69 -0
  38. package/lib/unicorn.js.map +1 -0
  39. package/lib/yml.d.ts +4 -0
  40. package/lib/yml.js +8 -0
  41. package/lib/yml.js.map +1 -0
  42. package/package.json +24 -11
  43. package/react.js +1 -1
  44. package/{rules/_rule.js → src/_rule.ts} +12 -31
  45. package/src/base.ts +81 -0
  46. package/src/import.ts +32 -0
  47. package/src/jest.ts +61 -0
  48. package/src/jsdoc.ts +22 -0
  49. package/{rules/jsonc.js → src/jsonc.ts} +7 -4
  50. package/src/prettier.ts +47 -0
  51. package/src/promise.ts +13 -0
  52. package/src/react.ts +177 -0
  53. package/{rules/typescript.js → src/typescript.ts} +99 -97
  54. package/src/unicorn.ts +72 -0
  55. package/{rules/yml.js → src/yml.ts} +4 -2
  56. package/ts.js +6 -6
  57. package/yml.js +1 -1
  58. package/rules/base.js +0 -53
  59. package/rules/import.js +0 -32
  60. package/rules/jest.js +0 -59
  61. package/rules/jsdoc.js +0 -20
  62. package/rules/prettier.js +0 -44
  63. package/rules/promise.js +0 -11
  64. package/rules/react.js +0 -176
  65. package/rules/unicorn.js +0 -70
package/es.js CHANGED
@@ -1,23 +1,11 @@
1
1
  // http://eslint.org/docs/user-guide/configuring
2
2
  module.exports = {
3
3
  extends: [
4
- require.resolve('./rules/base'),
5
- require.resolve('./rules/promise'),
6
- require.resolve('./rules/jsdoc'),
7
- require.resolve('./rules/import'),
8
- require.resolve('./rules/unicorn'),
9
- require.resolve('./rules/prettier'),
4
+ require.resolve('./lib/base.js'),
5
+ require.resolve('./lib/promise.js'),
6
+ require.resolve('./lib/jsdoc.js'),
7
+ require.resolve('./lib/import.js'),
8
+ require.resolve('./lib/unicorn.js'),
9
+ require.resolve('./lib/prettier.js'),
10
10
  ],
11
- parser: '@babel/eslint-parser',
12
- parserOptions: {
13
- babelOptions: {
14
- plugins: [],
15
- },
16
- ecmaFeatures: {
17
- jsx: true,
18
- },
19
- ecmaVersion: 2020,
20
- requireConfigFile: false,
21
- sourceType: 'module',
22
- },
23
11
  };
package/functional.js CHANGED
@@ -1,7 +1,5 @@
1
1
  // @see https://github.com/danielnixon/eslint-config-typed-fp/blob/master/src/index.ts
2
2
 
3
- const { off, error } = require('./rules/_rule.js');
4
-
5
3
  module.exports = {
6
4
  overrides: [
7
5
  {
@@ -12,19 +10,18 @@ module.exports = {
12
10
  ],
13
11
  rules: {
14
12
  'functional/functional-parameters': [
15
- error,
13
+ 'error',
16
14
  {
17
15
  allowArgumentsKeyword: false,
18
16
  allowRestParameter: false,
19
17
  enforceParameterCount: false,
20
18
  },
21
19
  ],
22
-
23
- 'functional/no-conditional-statement': off,
24
- 'functional/no-method-signature': off,
20
+ 'functional/no-conditional-statement': 'off',
21
+ 'functional/no-method-signature': 'off',
25
22
  'functional/prefer-readonly-type': [
26
23
  // @see https://github.com/jonaskello/eslint-plugin-functional/issues/51
27
- off, // error
24
+ 'off', // error
28
25
  {
29
26
  // When you call methods like `filter` and `concat` on an array (_even a readonly_ array) you always get back a mutable array.
30
27
  // By default prefer-readonly-type won't catch these cases, but with the checkImplicit option on it will.
@@ -34,15 +31,15 @@ module.exports = {
34
31
  checkImplicit: true,
35
32
  },
36
33
  ],
37
- 'functional/prefer-type-literal': off,
34
+ 'functional/prefer-type-literal': 'off',
38
35
  'total-functions/no-unsafe-readonly-mutable-assignment': [
39
36
  // @see https://github.com/danielnixon/eslint-plugin-total-functions/issues?q=is%3Aissue+is%3Aopen+no-unsafe-readonly-mutable-assignment
40
- off,
37
+ 'off',
41
38
  ],
42
39
 
43
40
  'total-functions/no-unsafe-type-assertion': [
44
41
  // Don't need this given consistent-type-assertions bans type assertions entirely.,
45
- off,
42
+ 'off',
46
43
  ],
47
44
  },
48
45
  },
package/index.js CHANGED
@@ -22,13 +22,13 @@ function includeIf(condition, value) {
22
22
 
23
23
  module.exports = {
24
24
  extends: [
25
- require.resolve('./ignore'),
26
- require.resolve('./es'),
27
- ...includeIf(tryResolve('typescript'), require.resolve('./ts')),
28
- require.resolve('./json'),
29
- require.resolve('./yml'),
30
- require.resolve('./jest'),
31
- ...includeIf(tryResolve('react'), require.resolve('./react')),
25
+ require.resolve('./ignore.js'),
26
+ require.resolve('./es.js'),
27
+ ...includeIf(tryResolve('typescript'), require.resolve('./ts.js')),
28
+ require.resolve('./json.js'),
29
+ require.resolve('./yml.js'),
30
+ require.resolve('./jest.js'),
31
+ ...includeIf(tryResolve('react'), require.resolve('./react.js')),
32
32
  ],
33
33
  root: true,
34
34
  };
package/jest.js CHANGED
@@ -2,7 +2,7 @@
2
2
  module.exports = {
3
3
  overrides: [
4
4
  {
5
- extends: [require.resolve('./rules/jest')],
5
+ extends: [require.resolve('./lib/jest.js')],
6
6
  files: [
7
7
  '**/__mocks__/**/*.+(ts|tsx|js|jsx)',
8
8
  '**/__tests__/**/*.+(ts|tsx|js|jsx)',
package/json.js CHANGED
@@ -3,7 +3,7 @@
3
3
  module.exports = {
4
4
  overrides: [
5
5
  {
6
- extends: [require.resolve('./rules/jsonc.js')],
6
+ extends: [require.resolve('./lib/jsonc.js')],
7
7
  files: ['*.json', '*.json5', '*.jsonc'],
8
8
  },
9
9
  ],
package/lib/_rule.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type { ESLint, Linter } from 'eslint';
2
+ export declare function concatESConfig(...configs: ESLint.ConfigData[]): ESLint.ConfigData;
3
+ export declare function fixme(_status: Linter.RuleLevel | [Linter.RuleLevel, ...any[]] | undefined): "off";
4
+ export declare function disable(_status: Linter.RuleLevel | [Linter.RuleLevel, ...any[]] | undefined, _explanation: string): "off";
5
+ //# sourceMappingURL=_rule.d.ts.map
package/lib/_rule.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.disable = exports.fixme = exports.concatESConfig = void 0;
4
+ function toArray(value) {
5
+ if (value == null) {
6
+ return [];
7
+ }
8
+ if (Array.isArray(value)) {
9
+ return value;
10
+ }
11
+ return [value];
12
+ }
13
+ function concatArray(left, right) {
14
+ return toArray(left).concat(toArray(right));
15
+ }
16
+ function concatESConfig(...configs) {
17
+ return configs.reduce((returnValue, config) => Object.assign({}, returnValue, config, {
18
+ env: Object.assign({}, returnValue.env, config.env),
19
+ extends: concatArray(returnValue.extends, config.extends),
20
+ overrides: concatArray(returnValue.overrides, config.overrides),
21
+ plugins: concatArray(returnValue.plugins, config.plugins),
22
+ rules: Object.assign({}, returnValue.rules, config.rules),
23
+ settings: Object.assign({}, returnValue.settings, config.settings),
24
+ }), {
25
+ env: {},
26
+ extends: [],
27
+ overrides: [],
28
+ plugins: [],
29
+ rules: {},
30
+ settings: {},
31
+ });
32
+ }
33
+ exports.concatESConfig = concatESConfig;
34
+ function fixme(_status) {
35
+ return 'off';
36
+ }
37
+ exports.fixme = fixme;
38
+ function disable(_status, _explanation) {
39
+ return 'off';
40
+ }
41
+ exports.disable = disable;
42
+ //# sourceMappingURL=_rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_rule.js","sourceRoot":"","sources":["../src/_rule.ts"],"names":[],"mappings":";;;AAEA,SAAS,OAAO,CAAI,KAA0B;IAC5C,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,EAAE,CAAC;KACX;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAI,IAAyB,EAAE,KAA0B;IAC3E,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,cAAc,CAAC,GAAG,OAA4B;IAC5D,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CACtB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;QACrC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;QACnD,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;QACzD,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;QAC/D,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;QACzD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACzD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;KACnE,CAAC,EACJ;QACE,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACb,CACF,CAAC;AACJ,CAAC;AApBD,wCAoBC;AAED,SAAgB,KAAK,CAAC,OAAoE;IACxF,OAAO,KAAc,CAAC;AACxB,CAAC;AAFD,sBAEC;AAED,SAAgB,OAAO,CAAC,OAAoE,EAAE,YAAoB;IAChH,OAAO,KAAc,CAAC;AACxB,CAAC;AAFD,0BAEC"}
package/lib/base.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type eslint from 'eslint';
2
+ import '@rushstack/eslint-patch/modern-module-resolution.js';
3
+ declare const config: eslint.Linter.Config;
4
+ export = config;
5
+ //# sourceMappingURL=base.d.ts.map
package/lib/base.js ADDED
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ const dev_1 = require("@w5s/dev");
6
+ const _rule_js_1 = require("./_rule.js");
7
+ // Fix eslint shareable config (https://github.com/eslint/eslint/issues/3458)
8
+ // @ts-ignore
9
+ require("@rushstack/eslint-patch/modern-module-resolution.js");
10
+ // @ts-ignore
11
+ const best_practices_1 = __importDefault(require("eslint-config-airbnb-base/rules/best-practices"));
12
+ // @ts-ignore
13
+ const errors_1 = __importDefault(require("eslint-config-airbnb-base/rules/errors"));
14
+ // @ts-ignore
15
+ const es6_1 = __importDefault(require("eslint-config-airbnb-base/rules/es6"));
16
+ // @ts-ignore
17
+ const node_1 = __importDefault(require("eslint-config-airbnb-base/rules/node"));
18
+ // @ts-ignore
19
+ const strict_1 = __importDefault(require("eslint-config-airbnb-base/rules/strict"));
20
+ // @ts-ignore
21
+ const style_1 = __importDefault(require("eslint-config-airbnb-base/rules/style"));
22
+ // @ts-ignore
23
+ const variables_1 = __importDefault(require("eslint-config-airbnb-base/rules/variables"));
24
+ const baseConfig = (0, _rule_js_1.concatESConfig)(best_practices_1.default, errors_1.default, es6_1.default, node_1.default, strict_1.default, style_1.default, variables_1.default);
25
+ const config = (0, _rule_js_1.concatESConfig)(baseConfig,
26
+ // overrides
27
+ {
28
+ env: {
29
+ [`es${dev_1.ECMA_VERSION}`]: true,
30
+ },
31
+ globals: {
32
+ __DEV__: 'readonly',
33
+ __PROD__: 'readonly',
34
+ __TEST__: 'readonly',
35
+ },
36
+ parser: 'espree',
37
+ parserOptions: {
38
+ ecmaFeatures: {
39
+ jsx: true,
40
+ },
41
+ ecmaVersion: dev_1.ECMA_VERSION,
42
+ sourceType: 'module',
43
+ },
44
+ reportUnusedDisableDirectives: true,
45
+ rules: {
46
+ // Annoying because it is not always wanted
47
+ 'default-case': 'off',
48
+ // We do not want console.* in production. Disable this rule on a per line basis if needed
49
+ 'no-console': 'error',
50
+ // Often useful in jsx
51
+ 'no-nested-ternary': 'off',
52
+ // Too strict, for pure code prefer the functional plugin
53
+ 'no-param-reassign': ['error', { props: false }],
54
+ // Allow for-of syntax
55
+ // @ts-ignore
56
+ 'no-restricted-syntax': baseConfig.rules['no-restricted-syntax'].filter(
57
+ // @ts-ignore
58
+ ({ selector }) => selector !== 'ForOfStatement'),
59
+ // underscore is often used (mongodb, etc)
60
+ 'no-underscore-dangle': 'off',
61
+ // Ignore underscore case arguments
62
+ 'no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
63
+ // Allow in some cases https://github.com/airbnb/javascript/issues/1089#issuecomment-1024351821
64
+ 'no-use-before-define': ['error', 'nofunc'],
65
+ },
66
+ });
67
+ module.exports = config;
68
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";;;;AAEA,kCAAwC;AACxC,yCAA4C;AAE5C,6EAA6E;AAC7E,aAAa;AACb,+DAA6D;AAC7D,aAAa;AACb,oGAAiF;AACjF,aAAa;AACb,oFAAkE;AAClE,aAAa;AACb,8EAA4D;AAC5D,aAAa;AACb,gFAA8D;AAC9D,aAAa;AACb,oFAAkE;AAClE,aAAa;AACb,kFAAgE;AAChE,aAAa;AACb,0FAAwE;AAExE,MAAM,UAAU,GAAG,IAAA,yBAAc,EAC/B,wBAAmB,EACnB,gBAAY,EACZ,aAAS,EACT,cAAU,EACV,gBAAY,EACZ,eAAW,EACX,mBAAe,CAChB,CAAC;AAEF,MAAM,MAAM,GAAyB,IAAA,yBAAc,EACjD,UAAU;AACV,YAAY;AACZ;IACE,GAAG,EAAE;QACH,CAAC,KAAK,kBAAY,EAAE,CAAC,EAAE,IAAI;KAC5B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;KACrB;IACD,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE;QACb,YAAY,EAAE;YACZ,GAAG,EAAE,IAAI;SACV;QACD,WAAW,EAAE,kBAAY;QACzB,UAAU,EAAE,QAAQ;KACrB;IACD,6BAA6B,EAAE,IAAI;IACnC,KAAK,EAAE;QACL,2CAA2C;QAC3C,cAAc,EAAE,KAAK;QACrB,0FAA0F;QAC1F,YAAY,EAAE,OAAO;QACrB,sBAAsB;QACtB,mBAAmB,EAAE,KAAK;QAC1B,yDAAyD;QACzD,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAChD,sBAAsB;QACtB,aAAa;QAEb,sBAAsB,EAAE,UAAU,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,MAAM;QACrE,aAAa;QACb,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,gBAAgB,CAChD;QACD,0CAA0C;QAC1C,sBAAsB,EAAE,KAAK;QAC7B,mCAAmC;QACnC,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACxD,+FAA+F;QAC/F,sBAAsB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC5C;CACF,CACF,CAAC;AAEF,iBAAS,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type eslint from 'eslint';
2
+ declare const config: eslint.Linter.Config;
3
+ export = config;
4
+ //# sourceMappingURL=import.d.ts.map
package/lib/import.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ // @ts-ignore
6
+ const imports_1 = __importDefault(require("eslint-config-airbnb-base/rules/imports"));
7
+ const _rule_js_1 = require("./_rule.js");
8
+ // @see https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md#eslint-plugin-import
9
+ const config = (0, _rule_js_1.concatESConfig)(
10
+ // @ts-ignore
11
+ imports_1.default,
12
+ // Overrides
13
+ {
14
+ rules: {
15
+ 'import/extensions': [
16
+ 'error',
17
+ 'ignorePackages',
18
+ {
19
+ // js: 'never',
20
+ // jsx: 'never',
21
+ // mjs: 'never',
22
+ },
23
+ ],
24
+ 'import/no-deprecated': (0, _rule_js_1.disable)('warn', 'performance'),
25
+ 'import/no-named-as-default': (0, _rule_js_1.disable)('warn', 'performance'),
26
+ 'import/no-unused-modules': (0, _rule_js_1.disable)('warn', 'performance'),
27
+ 'import/prefer-default-export': 'off',
28
+ 'import/unambiguous': (0, _rule_js_1.fixme)('off'), // Disable because proposal still in progress
29
+ },
30
+ });
31
+ module.exports = config;
32
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":";;;;AACA,aAAa;AACb,sFAAmE;AACnE,yCAA4D;AAE5D,mIAAmI;AAEnI,MAAM,MAAM,GAAyB,IAAA,yBAAc;AACjD,aAAa;AACb,iBAAY;AACZ,YAAY;AACZ;IACE,KAAK,EAAE;QACL,mBAAmB,EAAE;YACnB,OAAO;YACP,gBAAgB;YAChB;YACE,eAAe;YACf,gBAAgB;YAChB,gBAAgB;aACjB;SACF;QACD,sBAAsB,EAAE,IAAA,kBAAO,EAAC,MAAM,EAAE,aAAa,CAAC;QACtD,4BAA4B,EAAE,IAAA,kBAAO,EAAC,MAAM,EAAE,aAAa,CAAC;QAC5D,0BAA0B,EAAE,IAAA,kBAAO,EAAC,MAAM,EAAE,aAAa,CAAC;QAC1D,8BAA8B,EAAE,KAAK;QACrC,oBAAoB,EAAE,IAAA,gBAAK,EAAC,KAAK,CAAC,EAAE,6CAA6C;KAClF;CACF,CACF,CAAC;AAEF,iBAAS,MAAM,CAAC"}
package/lib/jest.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type eslint from 'eslint';
2
+ declare const config: eslint.Linter.Config;
3
+ export = config;
4
+ //# sourceMappingURL=jest.d.ts.map
package/lib/jest.js ADDED
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ const _rule_js_1 = require("./_rule.js");
3
+ const config = (0, _rule_js_1.concatESConfig)({
4
+ env: {
5
+ 'jest/globals': true,
6
+ },
7
+ extends: ['plugin:jest/recommended'],
8
+ globals: {
9
+ context: true,
10
+ },
11
+ plugins: ['jest'],
12
+ rules: {
13
+ 'jest/consistent-test-it': 'error',
14
+ 'jest/expect-expect': 'off',
15
+ 'jest/no-alias-methods': 'error',
16
+ 'jest/prefer-spy-on': 'error',
17
+ 'jest/prefer-to-contain': 'error',
18
+ 'jest/valid-title': ['error', { ignoreTypeOfDescribeName: true }],
19
+ },
20
+ settings: {
21
+ jest: {
22
+ // Compatibility with mocha, cypress, etc.
23
+ globalAliases: {
24
+ describe: ['context'],
25
+ fdescribe: ['fcontext'],
26
+ xdescribe: ['xcontext'],
27
+ },
28
+ version: 'latest',
29
+ },
30
+ },
31
+ },
32
+ /**
33
+ * Unicorn less strict to help writing tests
34
+ */
35
+ {
36
+ rules: {
37
+ 'unicorn/consistent-function-scoping': 'off',
38
+ 'unicorn/no-useless-undefined': 'off',
39
+ 'unicorn/prefer-module': 'off',
40
+ },
41
+ },
42
+ /**
43
+ * Typescript config is set to be less strict because we often have "hack", "mock" in tests
44
+ */
45
+ {
46
+ rules: {
47
+ '@typescript-eslint/naming-convention': 'off',
48
+ '@typescript-eslint/no-non-null-assertion': 'off',
49
+ '@typescript-eslint/no-unsafe-assignment': 'off',
50
+ '@typescript-eslint/no-unsafe-call': 'off',
51
+ '@typescript-eslint/no-unsafe-member-access': 'off',
52
+ '@typescript-eslint/no-unsafe-return': 'off',
53
+ '@typescript-eslint/restrict-template-expressions': 'off',
54
+ '@typescript-eslint/unbound-method': 'off',
55
+ },
56
+ });
57
+ module.exports = config;
58
+ //# sourceMappingURL=jest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.js","sourceRoot":"","sources":["../src/jest.ts"],"names":[],"mappings":";AACA,yCAA4C;AAE5C,MAAM,MAAM,GAAyB,IAAA,yBAAc,EACjD;IACE,GAAG,EAAE;QACH,cAAc,EAAE,IAAI;KACrB;IACD,OAAO,EAAE,CAAC,yBAAyB,CAAC;IACpC,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;KACd;IACD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,yBAAyB,EAAE,OAAO;QAClC,oBAAoB,EAAE,KAAK;QAC3B,uBAAuB,EAAE,OAAO;QAChC,oBAAoB,EAAE,OAAO;QAC7B,wBAAwB,EAAE,OAAO;QACjC,kBAAkB,EAAE,CAAC,OAAO,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;KAClE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,0CAA0C;YAC1C,aAAa,EAAE;gBACb,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,UAAU,CAAC;gBACvB,SAAS,EAAE,CAAC,UAAU,CAAC;aACxB;YAED,OAAO,EAAE,QAAQ;SAClB;KACF;CACF;AACD;;GAEG;AACH;IACE,KAAK,EAAE;QACL,qCAAqC,EAAE,KAAK;QAC5C,8BAA8B,EAAE,KAAK;QACrC,uBAAuB,EAAE,KAAK;KAC/B;CACF;AACD;;GAEG;AACH;IACE,KAAK,EAAE;QACL,sCAAsC,EAAE,KAAK;QAC7C,0CAA0C,EAAE,KAAK;QACjD,yCAAyC,EAAE,KAAK;QAChD,mCAAmC,EAAE,KAAK;QAC1C,4CAA4C,EAAE,KAAK;QACnD,qCAAqC,EAAE,KAAK;QAC5C,kDAAkD,EAAE,KAAK;QACzD,mCAAmC,EAAE,KAAK;KAC3C;CACF,CACF,CAAC;AACF,iBAAS,MAAM,CAAC"}
package/lib/jsdoc.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type eslint from 'eslint';
2
+ declare const config: eslint.Linter.Config;
3
+ export = config;
4
+ //# sourceMappingURL=jsdoc.d.ts.map
package/lib/jsdoc.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ const config = {
3
+ extends: ['plugin:jsdoc/recommended'],
4
+ plugins: ['jsdoc'],
5
+ rules: {
6
+ 'jsdoc/no-undefined-types': 'off',
7
+ 'jsdoc/require-hyphen-before-param-description': ['warn', 'always'],
8
+ 'jsdoc/require-jsdoc': 'off',
9
+ 'jsdoc/require-param-description': 'off',
10
+ 'jsdoc/require-returns': 'off',
11
+ 'jsdoc/valid-types': 'off',
12
+ strict: ['error', 'safe'],
13
+ },
14
+ settings: {
15
+ jsdoc: {
16
+ mode: 'typescript',
17
+ },
18
+ },
19
+ };
20
+ module.exports = config;
21
+ //# sourceMappingURL=jsdoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.js","sourceRoot":"","sources":["../src/jsdoc.ts"],"names":[],"mappings":";AAEA,MAAM,MAAM,GAAyB;IACnC,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,KAAK,EAAE;QACL,0BAA0B,EAAE,KAAK;QACjC,+CAA+C,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QACnE,qBAAqB,EAAE,KAAK;QAC5B,iCAAiC,EAAE,KAAK;QACxC,uBAAuB,EAAE,KAAK;QAC9B,mBAAmB,EAAE,KAAK;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B;IACD,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,IAAI,EAAE,YAAY;SACnB;KACF;CACF,CAAC;AAEF,iBAAS,MAAM,CAAC"}
package/lib/jsonc.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type eslint from 'eslint';
2
+ declare const config: eslint.Linter.Config;
3
+ export = config;
4
+ //# sourceMappingURL=jsonc.d.ts.map
package/lib/jsonc.js ADDED
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ // https://github.com/keithamus/sort-package-json/blob/master/defaultRules.md
3
+ const config = {
4
+ extends: ['plugin:jsonc/recommended-with-jsonc', 'plugin:jsonc/prettier'],
5
+ overrides: [
6
+ {
7
+ files: ['tsconfig*.json'],
8
+ rules: {
9
+ 'jsonc/sort-keys': [
10
+ 'error',
11
+ {
12
+ order: ['$schema', 'display', 'extends', 'compilerOptions', 'include', 'exclude', 'files', 'references'],
13
+ pathPattern: '^$',
14
+ },
15
+ {
16
+ order: { type: 'asc' },
17
+ pathPattern: '.*',
18
+ },
19
+ ],
20
+ },
21
+ },
22
+ {
23
+ files: ['package.json'],
24
+ rules: {
25
+ 'jsonc/sort-keys': [
26
+ 'error',
27
+ {
28
+ order: [
29
+ '$schema',
30
+ 'name',
31
+ 'displayName',
32
+ 'version',
33
+ 'private',
34
+ 'description',
35
+ 'categories',
36
+ 'keywords',
37
+ 'homepage',
38
+ 'bugs',
39
+ 'repository',
40
+ 'funding',
41
+ 'license',
42
+ 'qna',
43
+ 'author',
44
+ 'maintainers',
45
+ 'contributors',
46
+ 'publisher',
47
+ 'sideEffects',
48
+ 'type',
49
+ 'imports',
50
+ 'exports',
51
+ 'main',
52
+ 'svelte',
53
+ 'umd:main',
54
+ 'jsdelivr',
55
+ 'unpkg',
56
+ 'module',
57
+ 'source',
58
+ 'jsnext:main',
59
+ 'browser',
60
+ 'react-native',
61
+ 'types',
62
+ 'typesVersions',
63
+ 'typings',
64
+ 'style',
65
+ 'example',
66
+ 'examplestyle',
67
+ 'assets',
68
+ 'bin',
69
+ 'man',
70
+ 'directories',
71
+ 'files',
72
+ 'workspaces',
73
+ 'binary',
74
+ 'scripts',
75
+ 'betterScripts',
76
+ 'contributes',
77
+ 'activationEvents',
78
+ 'husky',
79
+ 'simple-git-hooks',
80
+ 'pre-commit',
81
+ 'commitlint',
82
+ 'lint-staged',
83
+ 'config',
84
+ 'nodemonConfig',
85
+ 'browserify',
86
+ 'babel',
87
+ 'browserslist',
88
+ 'xo',
89
+ 'prettier',
90
+ 'eslintConfig',
91
+ 'eslintIgnore',
92
+ 'npmpackagejsonlint',
93
+ 'release',
94
+ 'remarkConfig',
95
+ 'stylelint',
96
+ 'ava',
97
+ 'jest',
98
+ 'mocha',
99
+ 'nyc',
100
+ 'tap',
101
+ 'resolutions',
102
+ 'dependencies',
103
+ 'devDependencies',
104
+ 'dependenciesMeta',
105
+ 'peerDependencies',
106
+ 'peerDependenciesMeta',
107
+ 'optionalDependencies',
108
+ 'bundledDependencies',
109
+ 'bundleDependencies',
110
+ 'extensionPack',
111
+ 'extensionDependencies',
112
+ 'flat',
113
+ 'packageManager',
114
+ 'engines',
115
+ 'engineStrict',
116
+ 'volta',
117
+ 'languageName',
118
+ 'os',
119
+ 'cpu',
120
+ 'preferGlobal',
121
+ 'publishConfig',
122
+ 'icon',
123
+ 'badges',
124
+ 'galleryBanner',
125
+ 'preview',
126
+ 'markdown',
127
+ ],
128
+ pathPattern: '^$',
129
+ },
130
+ {
131
+ order: ['url', 'email'],
132
+ pathPattern: `^bugs$`,
133
+ },
134
+ ...['repository', 'funding', 'license', 'author'].map((key) => ({
135
+ order: ['type', 'name', 'email', 'url'],
136
+ pathPattern: `^${key}$`,
137
+ })),
138
+ ...['scripts', 'betterScripts'].map((key) => ({
139
+ order: { type: 'asc' },
140
+ pathPattern: `^${key}$`,
141
+ })),
142
+ ...[
143
+ 'bin',
144
+ 'contributes',
145
+ 'commitlint',
146
+ 'config',
147
+ 'nodemonConfig',
148
+ 'browserify',
149
+ 'babel',
150
+ 'xo',
151
+ 'release',
152
+ 'remarkConfig',
153
+ 'ava',
154
+ 'jest',
155
+ 'mocha',
156
+ 'nyc',
157
+ 'tap',
158
+ 'resolutions',
159
+ 'engines',
160
+ 'engineStrict',
161
+ 'preferGlobal',
162
+ 'publishConfig',
163
+ 'galleryBanner',
164
+ ].map((key) => ({
165
+ order: { type: 'asc' },
166
+ pathPattern: `^${key}$`,
167
+ })),
168
+ {
169
+ order: { type: 'asc' },
170
+ pathPattern: '^(?:dev|peer|optional|bundled|extension)?[Dd]ependencies$',
171
+ },
172
+ {
173
+ order: ['types', 'require', 'import'],
174
+ pathPattern: '^exports.*$',
175
+ },
176
+ ],
177
+ },
178
+ },
179
+ ],
180
+ parser: 'jsonc-eslint-parser',
181
+ plugins: ['jsonc'],
182
+ };
183
+ module.exports = config;
184
+ //# sourceMappingURL=jsonc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../src/jsonc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type eslint from 'eslint';
2
+ declare const config: eslint.Linter.Config;
3
+ export = config;
4
+ //# sourceMappingURL=prettier.d.ts.map
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /* eslint-disable global-require */
3
+ /* eslint-disable import/no-dynamic-require */
4
+ /* eslint-disable @typescript-eslint/no-var-requires */
5
+ /* eslint-disable @typescript-eslint/no-require-imports */
6
+ const getPackageScope = () => {
7
+ try {
8
+ const { name } = require('../package.json');
9
+ const prefixMatch = (name ?? '').match(/(@\w+)\//);
10
+ const packageScope = prefixMatch == null ? undefined : prefixMatch[1];
11
+ return packageScope;
12
+ }
13
+ catch (error_) {
14
+ // eslint-disable-next-line no-console
15
+ console.warn(error_);
16
+ return undefined;
17
+ }
18
+ };
19
+ const getPrettierConfig = (moduleName) => {
20
+ try {
21
+ const moduleConfig = require(moduleName);
22
+ return moduleConfig;
23
+ }
24
+ catch {
25
+ return undefined;
26
+ }
27
+ };
28
+ // Try require '@my-organization/prettier-config'
29
+ const getPrettierConfigDefault = () => {
30
+ const defaultConfig = {
31
+ trailingComma: 'es5',
32
+ };
33
+ const packageScope = getPackageScope();
34
+ return (packageScope == null ? undefined : getPrettierConfig(`${packageScope}/prettier-config`)) ?? defaultConfig;
35
+ };
36
+ const config = {
37
+ extends: ['prettier'],
38
+ plugins: ['prettier'],
39
+ rules: {
40
+ 'prettier/prettier': ['error', getPrettierConfigDefault()],
41
+ },
42
+ };
43
+ module.exports = config;
44
+ //# sourceMappingURL=prettier.js.map