eslint-config-typed 5.18.0 → 5.19.0

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 (92) hide show
  1. package/README.md +9 -5
  2. package/dist/configs/preact.d.mts +7 -0
  3. package/dist/configs/preact.d.mts.map +1 -1
  4. package/dist/configs/preact.mjs +38 -18
  5. package/dist/configs/preact.mjs.map +1 -1
  6. package/dist/configs/vitest.d.mts.map +1 -1
  7. package/dist/configs/vitest.mjs +10 -0
  8. package/dist/configs/vitest.mjs.map +1 -1
  9. package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.d.mts +9 -1
  10. package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.d.mts.map +1 -1
  11. package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.mjs +47 -4
  12. package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.mjs.map +1 -1
  13. package/dist/plugins/react-coding-style/rules/display-name.d.mts +2 -1
  14. package/dist/plugins/react-coding-style/rules/display-name.d.mts.map +1 -1
  15. package/dist/plugins/react-coding-style/rules/display-name.mjs +9 -4
  16. package/dist/plugins/react-coding-style/rules/display-name.mjs.map +1 -1
  17. package/dist/plugins/react-coding-style/rules/use-memo-hooks-style.d.mts.map +1 -1
  18. package/dist/plugins/react-coding-style/rules/use-memo-hooks-style.mjs +34 -15
  19. package/dist/plugins/react-coding-style/rules/use-memo-hooks-style.mjs.map +1 -1
  20. package/dist/plugins/total-functions/rules/no-partial-string-normalize.d.mts.map +1 -1
  21. package/dist/plugins/total-functions/rules/no-partial-string-normalize.mjs +21 -13
  22. package/dist/plugins/total-functions/rules/no-partial-string-normalize.mjs.map +1 -1
  23. package/dist/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.d.mts.map +1 -1
  24. package/dist/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mjs +1 -2
  25. package/dist/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mjs.map +1 -1
  26. package/dist/plugins/ts-restrictions/rules/no-negated-comparison.mjs +1 -3
  27. package/dist/plugins/ts-restrictions/rules/no-negated-comparison.mjs.map +1 -1
  28. package/dist/plugins/ts-restrictions/rules/no-string-spread.mjs +1 -1
  29. package/dist/plugins/ts-restrictions/rules/no-string-spread.mjs.map +1 -1
  30. package/dist/plugins/ts-restrictions/rules/no-unnecessary-array-from.d.mts.map +1 -1
  31. package/dist/plugins/ts-restrictions/rules/no-unnecessary-array-from.mjs +1 -2
  32. package/dist/plugins/ts-restrictions/rules/no-unnecessary-array-from.mjs.map +1 -1
  33. package/dist/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.d.mts.map +1 -1
  34. package/dist/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.mjs +1 -2
  35. package/dist/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.mjs.map +1 -1
  36. package/dist/plugins/ts-restrictions/rules/prefer-curried-call.d.mts +4 -1
  37. package/dist/plugins/ts-restrictions/rules/prefer-curried-call.d.mts.map +1 -1
  38. package/dist/plugins/ts-restrictions/rules/prefer-curried-call.mjs +11 -4
  39. package/dist/plugins/ts-restrictions/rules/prefer-curried-call.mjs.map +1 -1
  40. package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.d.mts +5 -4
  41. package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.d.mts.map +1 -1
  42. package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.mjs +15 -52
  43. package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.mjs.map +1 -1
  44. package/dist/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.d.mts.map +1 -1
  45. package/dist/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.mjs +1 -2
  46. package/dist/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.mjs.map +1 -1
  47. package/dist/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.d.mts.map +1 -1
  48. package/dist/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.mjs +1 -2
  49. package/dist/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.mjs.map +1 -1
  50. package/dist/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.d.mts.map +1 -1
  51. package/dist/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.mjs +1 -2
  52. package/dist/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.mjs.map +1 -1
  53. package/dist/rules/eslint-rules.d.mts +42 -11
  54. package/dist/rules/eslint-rules.d.mts.map +1 -1
  55. package/dist/rules/eslint-rules.mjs +28 -14
  56. package/dist/rules/eslint-rules.mjs.map +1 -1
  57. package/package.json +15 -13
  58. package/src/configs/preact.mts +45 -18
  59. package/src/configs/preact.test.mts +146 -0
  60. package/src/configs/vitest.mts +10 -0
  61. package/src/configs/vitest.test.mts +63 -0
  62. package/src/plugins/immer-coding-style/rules/prefer-curried-produce.mts +67 -3
  63. package/src/plugins/immer-coding-style/rules/prefer-curried-produce.test.mts +108 -0
  64. package/src/plugins/react-coding-style/rules/display-name.mts +12 -5
  65. package/src/plugins/react-coding-style/rules/display-name.test.mts +9 -0
  66. package/src/plugins/react-coding-style/rules/use-memo-hooks-style-namespace.test.mts +41 -0
  67. package/src/plugins/react-coding-style/rules/use-memo-hooks-style.mts +47 -18
  68. package/src/plugins/total-functions/rules/no-partial-string-normalize.mts +32 -23
  69. package/src/plugins/total-functions/rules/no-partial-string-normalize.test.mts +57 -0
  70. package/src/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mts +1 -2
  71. package/src/plugins/ts-restrictions/rules/no-negated-comparison.mts +5 -5
  72. package/src/plugins/ts-restrictions/rules/no-string-spread.mts +1 -1
  73. package/src/plugins/ts-restrictions/rules/no-unnecessary-array-from.mts +1 -2
  74. package/src/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.mts +1 -2
  75. package/src/plugins/ts-restrictions/rules/prefer-curried-call.mts +18 -7
  76. package/src/plugins/ts-restrictions/rules/prefer-curried-call.test.mts +64 -0
  77. package/src/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.mts +29 -72
  78. package/src/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.test.mts +9 -4
  79. package/src/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.mts +5 -2
  80. package/src/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.mts +1 -2
  81. package/src/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.mts +5 -2
  82. package/src/rules/eslint-rules.mts +56 -15
  83. package/dist/plugins/ts-restrictions/rules/comparison-utils.d.mts +0 -41
  84. package/dist/plugins/ts-restrictions/rules/comparison-utils.d.mts.map +0 -1
  85. package/dist/plugins/ts-restrictions/rules/comparison-utils.mjs +0 -89
  86. package/dist/plugins/ts-restrictions/rules/comparison-utils.mjs.map +0 -1
  87. package/dist/plugins/ts-restrictions/rules/type-layer-utils.d.mts +0 -15
  88. package/dist/plugins/ts-restrictions/rules/type-layer-utils.d.mts.map +0 -1
  89. package/dist/plugins/ts-restrictions/rules/type-layer-utils.mjs +0 -21
  90. package/dist/plugins/ts-restrictions/rules/type-layer-utils.mjs.map +0 -1
  91. package/src/plugins/ts-restrictions/rules/comparison-utils.mts +0 -140
  92. package/src/plugins/ts-restrictions/rules/type-layer-utils.mts +0 -36
package/README.md CHANGED
@@ -537,11 +537,15 @@ Pre-configured rule sets that can be imported and customized:
537
537
 
538
538
  ### Exported Pre-configured Rule Options
539
539
 
540
- | Pre-configured rule option | Rule | Description |
541
- | :-------------------------------- | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
542
- | **`restrictedGlobals`** | `no-restricted-globals` | Array of restricted global variables |
543
- | **`restrictedGlobalsForBrowser`** | `no-restricted-globals` | Browser-environment-specific restricted globals |
544
- | **`restrictedSyntax`** | `no-restricted-syntax` | Disallows the `in` operator, `Object.prototype.hasOwnProperty.call` (suggests using `Object.hasOwn`), and `new Array(*)` syntax (suggests using `Array.from`) |
540
+ | Pre-configured rule option | Rule | Description |
541
+ | :-------------------------------------- | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
542
+ | **`restrictedGlobals`** | `no-restricted-globals` | Array of restricted global variables |
543
+ | **`restrictedGlobalsForBrowser`** | `no-restricted-globals` | Browser-environment-specific restricted globals |
544
+ | **`restrictedSyntax`** | `no-restricted-syntax` | Disallows the `in` operator, `Object.prototype.hasOwnProperty.call` (suggests using `Object.hasOwn`), and `new Array(*)` syntax (suggests using `Array.from`) |
545
+ | **`restrictedImportsOptions`** | `no-restricted-imports` | Disallows importing `index.mjs` by relative path |
546
+ | **`restrictedImportsOptionsForPreact`** | `no-restricted-imports` | `restrictedImportsOptions` plus the hooks of `preact/compat` (suggests `preact/hooks`) |
547
+
548
+ A config that sets a rule replaces the options an earlier config set. To restrict more imports after `eslintConfigForPreact`, concatenate yours with the ones it set, using `mergeRestrictedImportsOptions(restrictedImportsOptionsForPreact, { paths: [...], patterns: [...] })`.
545
549
 
546
550
  You can find other pre-configured rule options by traversing the pre-defined rules object like this:
547
551
 
@@ -1,3 +1,10 @@
1
+ import { type RestrictedImportsOptions } from '../rules/index.mjs';
1
2
  import { type FlatConfig } from '../types/index.mjs';
2
3
  export declare const eslintConfigForPreact: (files?: readonly string[]) => readonly FlatConfig[];
4
+ /**
5
+ * The options `eslintConfigForPreact` sets `no-restricted-imports` with: the
6
+ * base config's and its own. A config after it that restricts more imports
7
+ * passes this to `mergeRestrictedImportsOptions` along with its own.
8
+ */
9
+ export declare const restrictedImportsOptionsForPreact: RestrictedImportsOptions;
3
10
  //# sourceMappingURL=preact.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preact.d.mts","sourceRoot":"","sources":["../../src/configs/preact.mts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGvE,eAAO,MAAM,qBAAqB,WACxB,SAAS,MAAM,EAAE,KACxB,SAAS,UAAU,EAoClB,CAAC"}
1
+ {"version":3,"file":"preact.d.mts","sourceRoot":"","sources":["../../src/configs/preact.mts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGvE,eAAO,MAAM,qBAAqB,WACxB,SAAS,MAAM,EAAE,KACxB,SAAS,UAAU,EA8BlB,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,EAAE,wBAoB5C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Arr } from 'ts-data-forge';
2
+ import { eslintReactRules, mergeRestrictedImportsOptions, restrictedImportsOptions, } from '../rules/index.mjs';
2
3
  import { defineKnownRules } from '../types/index.mjs';
3
4
  import { eslintConfigForReactBase } from './react-base.mjs';
4
5
  export const eslintConfigForPreact = (files) => Arr.toPushed(eslintConfigForReactBase(files), {
@@ -12,29 +13,48 @@ export const eslintConfigForPreact = (files) => Arr.toPushed(eslintConfigForReac
12
13
  },
13
14
  },
14
15
  rules: defineKnownRules({
15
- 'no-restricted-imports': [
16
+ 'react/no-unknown-property': [
16
17
  'error',
17
18
  {
18
- paths: [
19
- {
20
- name: 'preact/compat',
21
- importNames: [
22
- 'memo',
23
- 'useState',
24
- 'useReducer',
25
- 'useMemo',
26
- 'useCallback',
27
- 'useRef',
28
- 'useContext',
29
- 'useEffect',
30
- 'useLayoutEffect',
31
- 'useErrorBoundary',
32
- ],
33
- message: 'import hooks from preact/hooks instead.',
34
- },
19
+ ignore: [
20
+ ...eslintReactRules['react/no-unknown-property'][1].ignore,
21
+
22
+
23
+
24
+
25
+ 'tabindex',
26
+
27
+
28
+ 'onDblClick',
35
29
  ],
36
30
  },
37
31
  ],
32
+ 'no-restricted-imports': ['error', restrictedImportsOptionsForPreact],
38
33
  }),
39
34
  });
35
+
36
+
37
+
38
+
39
+
40
+ export const restrictedImportsOptionsForPreact = mergeRestrictedImportsOptions(restrictedImportsOptions, {
41
+ paths: [
42
+ {
43
+ name: 'preact/compat',
44
+ importNames: [
45
+ 'memo',
46
+ 'useState',
47
+ 'useReducer',
48
+ 'useMemo',
49
+ 'useCallback',
50
+ 'useRef',
51
+ 'useContext',
52
+ 'useEffect',
53
+ 'useLayoutEffect',
54
+ 'useErrorBoundary',
55
+ ],
56
+ message: 'import hooks from preact/hooks instead.',
57
+ },
58
+ ],
59
+ });
40
60
  //# sourceMappingURL=preact.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"preact.mjs","sourceRoot":"","sources":["../../src/configs/preact.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAyB,EACF,EAAE,CACzB,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;IAC5C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzC,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,MAAM,EAAE,GAAG;YACX,0DAA0D;YAC1D,qEAAqE;YACrE,6DAA6D;SAC9D;KACF;IACD,KAAK,EAAE,gBAAgB,CAAC;QACtB,uBAAuB,EAAE;YACvB,OAAO;YACP;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,eAAe;wBACrB,WAAW,EAAE;4BACX,MAAM;4BACN,UAAU;4BACV,YAAY;4BACZ,SAAS;4BACT,aAAa;4BACb,QAAQ;4BACR,YAAY;4BACZ,WAAW;4BACX,iBAAiB;4BACjB,kBAAkB;yBACnB;wBACD,OAAO,EAAE,yCAAyC;qBACnD;iBACF;aACF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"preact.mjs","sourceRoot":"","sources":["../../src/configs/preact.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,GAEzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAyB,EACF,EAAE,CACzB,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;IAC5C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzC,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,MAAM,EAAE,GAAG;YACX,0DAA0D;YAC1D,qEAAqE;YACrE,6DAA6D;SAC9D;KACF;IACD,KAAK,EAAE,gBAAgB,CAAC;QACtB,2BAA2B,EAAE;YAC3B,OAAO;YACP;gBACE,MAAM,EAAE;oBACN,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;oBAC1D,+DAA+D;oBAC/D,0DAA0D;oBAC1D,gEAAgE;oBAChE,cAAc;oBACd,UAAU;oBACV,6DAA6D;oBAC7D,8DAA8D;oBAC9D,YAAY;iBACb;aACF;SACF;QACD,uBAAuB,EAAE,CAAC,OAAO,EAAE,iCAAiC,CAAC;KACtE,CAAC;CACH,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,6BAA6B,CAAC,wBAAwB,EAAE;IACtD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE;gBACX,MAAM;gBACN,UAAU;gBACV,YAAY;gBACZ,SAAS;gBACT,aAAa;gBACb,QAAQ;gBACR,YAAY;gBACZ,WAAW;gBACX,iBAAiB;gBACjB,kBAAkB;aACnB;YACD,OAAO,EAAE,yCAAyC;SACnD;KACF;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.d.mts","sourceRoot":"","sources":["../../src/configs/vitest.mts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEvE,eAAO,MAAM,qBAAqB,WAAY,SAAS,MAAM,EAAE,KAAG,UAgBrD,CAAC"}
1
+ {"version":3,"file":"vitest.d.mts","sourceRoot":"","sources":["../../src/configs/vitest.mts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEvE,eAAO,MAAM,qBAAqB,WAAY,SAAS,MAAM,EAAE,KAAG,UA0BrD,CAAC"}
@@ -8,6 +8,16 @@ export const eslintConfigForVitest = (files) => ({
8
8
 
9
9
  },
10
10
  },
11
+ settings: {
12
+ vitest: {
13
+
14
+
15
+
16
+
17
+
18
+ typecheck: true,
19
+ },
20
+ },
11
21
  rules: defineKnownRules({
12
22
  ...eslintVitestRules,
13
23
  ...eslintVitestCodingStyleRules,
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.mjs","sourceRoot":"","sources":["../../src/configs/vitest.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAyB,EAAc,EAAE,CAC7E,CAAC;IACC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzC,eAAe,EAAE;QACf,iEAAiE;QACjE,OAAO,EAAE;QACP,sCAAsC;SACvC;KACF;IACD,KAAK,EAAE,gBAAgB,CAAC;QACtB,GAAG,iBAAiB;QACpB,GAAG,4BAA4B;QAE/B,+DAA+D;QAC/D,mCAAmC,EAAE,KAAK;KAC3C,CAAC;CACH,CAAU,CAAC"}
1
+ {"version":3,"file":"vitest.mjs","sourceRoot":"","sources":["../../src/configs/vitest.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAyB,EAAc,EAAE,CAC7E,CAAC;IACC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzC,eAAe,EAAE;QACf,iEAAiE;QACjE,OAAO,EAAE;QACP,sCAAsC;SACvC;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,yCAAyC;YACzC,sEAAsE;YACtE,iEAAiE;YACjE,gEAAgE;YAChE,uDAAuD;YACvD,SAAS,EAAE,IAAI;SAChB;KACF;IACD,KAAK,EAAE,gBAAgB,CAAC;QACtB,GAAG,iBAAiB;QACpB,GAAG,4BAA4B;QAE/B,+DAA+D;QAC/D,mCAAmC,EAAE,KAAK;KAC3C,CAAC;CACH,CAAU,CAAC"}
@@ -3,7 +3,15 @@ type MessageIds = 'useCurriedProduce';
3
3
  /**
4
4
  * Rewrites `(state) => produce(state, recipe)` as `produce(recipe)`. The base
5
5
  * state is recognized through type wrappers (`produce(state satisfies State,
6
- * recipe)`), which change nothing at run time and go with the argument.
6
+ * recipe)`), which change nothing at run time and go with the argument; the
7
+ * type an `as` gives it is kept as the type argument (`produce<State>`).
8
+ *
9
+ * The curried form passes its extra arguments on to the recipe (`recipe(draft,
10
+ * ...args)`), so `xs.map((s) => produce(s, r))` → `xs.map(produce(r))` would
11
+ * hand `r` the index and the array. The fix is applied only when the recipe is
12
+ * an arrow function taking at most one parameter, which cannot read them, and
13
+ * only when it is the last argument: a third one (a patch listener) would
14
+ * become the curried form's initial state.
7
15
  */
8
16
  export declare const preferCurriedProduceRule: TSESLint.RuleModule<MessageIds>;
9
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-curried-produce.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/prefer-curried-produce.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG,mBAAmB,CAAC;AAOtC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAoE3D,CAAC"}
1
+ {"version":3,"file":"prefer-curried-produce.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/prefer-curried-produce.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG,mBAAmB,CAAC;AAOtC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAyE3D,CAAC"}
@@ -1,11 +1,19 @@
1
1
  import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
2
- import { skipTypeWrappers } from 'eslint-rule-forge';
2
+ import { isTypeWrapper, skipTypeWrappers } from 'eslint-rule-forge';
3
3
  import { Arr, hasKey, isRecord } from 'ts-data-forge';
4
4
 
5
5
 
6
6
 
7
7
 
8
8
 
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
9
17
  export const preferCurriedProduceRule = {
10
18
  meta: {
11
19
  type: 'suggestion',
@@ -36,7 +44,9 @@ export const preferCurriedProduceRule = {
36
44
  return;
37
45
  }
38
46
  const [baseArgument, ...restArguments] = callExpression.arguments;
39
- if (baseArgument === undefined || Arr.isEmpty(restArguments)) {
47
+ if (baseArgument === undefined ||
48
+ !Arr.isFixedLengthArray(1, restArguments) ||
49
+ !ignoresExtraArguments(restArguments[0])) {
40
50
  return;
41
51
  }
42
52
  const baseIdentifier = findIdentifier(baseArgument, parameterName);
@@ -48,6 +58,7 @@ export const preferCurriedProduceRule = {
48
58
  }
49
59
  report(context, {
50
60
  arrowFunction: node,
61
+ baseArgument,
51
62
  callExpression,
52
63
  remainingArguments: restArguments,
53
64
  sourceCode,
@@ -57,10 +68,11 @@ export const preferCurriedProduceRule = {
57
68
  },
58
69
  defaultOptions: [],
59
70
  };
60
- const report = (context, { arrowFunction, callExpression, remainingArguments, sourceCode, }) => {
71
+ const report = (context, { arrowFunction, baseArgument, callExpression, remainingArguments, sourceCode, }) => {
61
72
  const calleeText = sourceCode.getText(callExpression.callee);
62
73
  const typeParametersText = getTypeParametersText({
63
74
  arrowFunction,
75
+ baseArgument,
64
76
  callExpression,
65
77
  sourceCode,
66
78
  });
@@ -85,6 +97,21 @@ const isProduceCall = (node) => {
85
97
 
86
98
 
87
99
 
100
+
101
+
102
+ const ignoresExtraArguments = (recipe) => {
103
+ if (recipe.type === AST_NODE_TYPES.SpreadElement) {
104
+ return false;
105
+ }
106
+ const node = skipTypeWrappers(recipe);
107
+ return (node.type === AST_NODE_TYPES.ArrowFunctionExpression &&
108
+ Arr.isMaxLengthArray(1, node.params) &&
109
+ node.params.every((param) => param.type !== AST_NODE_TYPES.RestElement));
110
+ };
111
+
112
+
113
+
114
+
88
115
  const findIdentifier = (argument, expectedName) => {
89
116
  if (argument.type === AST_NODE_TYPES.SpreadElement) {
90
117
  return undefined;
@@ -113,11 +140,16 @@ const getTypeArguments = (node) => {
113
140
  }
114
141
  return undefined;
115
142
  };
116
- const getTypeParametersText = ({ arrowFunction, callExpression, sourceCode, }) => {
143
+ const getTypeParametersText = ({ arrowFunction, baseArgument, callExpression, sourceCode, }) => {
117
144
  const typeArguments = getTypeArguments(callExpression);
118
145
  if (typeArguments !== undefined) {
119
146
  return sourceCode.getText(typeArguments);
120
147
  }
148
+
149
+ const assertedType = getAssertedType(baseArgument);
150
+ if (assertedType !== undefined) {
151
+ return `<${sourceCode.getText(assertedType)}>`;
152
+ }
121
153
  const parameterType = getArrowFunctionParameterType({
122
154
  arrowFunction,
123
155
  sourceCode,
@@ -131,6 +163,17 @@ const getTypeParametersText = ({ arrowFunction, callExpression, sourceCode, }) =
131
163
  });
132
164
  return returnType !== undefined ? `<${returnType}>` : '';
133
165
  };
166
+
167
+
168
+
169
+
170
+ const getAssertedType = (node) => {
171
+ if (node.type === AST_NODE_TYPES.TSAsExpression ||
172
+ node.type === AST_NODE_TYPES.TSTypeAssertion) {
173
+ return node.typeAnnotation;
174
+ }
175
+ return isTypeWrapper(node) ? getAssertedType(node.expression) : undefined;
176
+ };
134
177
  const getArrowFunctionParameterType = ({ arrowFunction, sourceCode, }) => {
135
178
  const [parameter] = arrowFunction.params;
136
179
  if (parameter?.type !== AST_NODE_TYPES.Identifier) {
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-curried-produce.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/prefer-curried-produce.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefer-curried-produce.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/prefer-curried-produce.mts"],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@ type MessageIds = 'missingDisplayName' | 'mismatchedDisplayName';
10
10
  * This helps with debugging and component identification in React DevTools
11
11
  *
12
12
  * Type wrappers (`as`, `satisfies`, `!`, `<T>`) are looked through on the
13
- * memo call, on the component in `C.displayName` and on the assigned name.
13
+ * memo call, on the `C.displayName = ...` statement, on the component in
14
+ * `C.displayName` and on the assigned name.
14
15
  */
15
16
  export declare const displayNameRule: TSESLint.RuleModule<MessageIds, Options>;
16
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"display-name.d.mts","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/display-name.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAMlC,KAAK,OAAO,GAAG,SAAS;IACtB,QAAQ,CAAC;QACP,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;KACzC,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,UAAU,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CA+G3D,CAAC"}
1
+ {"version":3,"file":"display-name.d.mts","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/display-name.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAMlC,KAAK,OAAO,GAAG,SAAS;IACtB,QAAQ,CAAC;QACP,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;KACzC,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,UAAU,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAEjE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CA+G3D,CAAC"}
@@ -9,6 +9,7 @@ import { castNode, isReactApiCall } from './shared.mjs';
9
9
 
10
10
 
11
11
 
12
+
12
13
  export const displayNameRule = {
13
14
  meta: {
14
15
  type: 'suggestion',
@@ -123,10 +124,14 @@ const getDisplayNameAssignment = (node) => {
123
124
  return undefined;
124
125
  }
125
126
  const nextStatement = program.body[componentIndex + 1];
126
- return nextStatement?.type !== AST_NODE_TYPES.ExpressionStatement ||
127
- nextStatement.expression.type !== AST_NODE_TYPES.AssignmentExpression
128
- ? undefined
129
- : nextStatement.expression;
127
+ if (nextStatement?.type !== AST_NODE_TYPES.ExpressionStatement) {
128
+ return undefined;
129
+ }
130
+
131
+ const expression = skipTypeWrappers(nextStatement.expression);
132
+ return expression.type === AST_NODE_TYPES.AssignmentExpression
133
+ ? expression
134
+ : undefined;
130
135
  };
131
136
  const isComponentDisplayNameAssignment = (assignment, componentName) => {
132
137
  const left = skipTypeWrappers(assignment.left);
@@ -1 +1 @@
1
- {"version":3,"file":"display-name.mjs","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/display-name.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display-name.mjs","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/display-name.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-memo-hooks-style.d.mts","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/use-memo-hooks-style.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG,+BAA+B,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CA0DxD,CAAC"}
1
+ {"version":3,"file":"use-memo-hooks-style.d.mts","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/use-memo-hooks-style.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAMlC,KAAK,UAAU,GAAG,+BAA+B,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CA6CxD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
2
+ import { isTypeWrapper } from 'eslint-rule-forge';
2
3
  import { hasKey } from 'ts-data-forge';
3
4
  import { castNode, isReactApiCall } from './shared.mjs';
4
5
  export const useMemoHooksStyleRule = {
@@ -28,22 +29,10 @@ export const useMemoHooksStyleRule = {
28
29
  messageId: 'disallowUseMemoTypeAnnotation',
29
30
  });
30
31
  }
31
- if (parent?.type === AST_NODE_TYPES.TSTypeAnnotation) {
32
- context.report({
33
- node: castNode(parent),
34
- messageId: 'disallowUseMemoTypeAnnotation',
35
- });
36
- }
37
32
  const [firstArg] = node.arguments;
38
- if (firstArg?.type === AST_NODE_TYPES.ArrowFunctionExpression) {
39
- const { returnType, body } = firstArg;
40
- if (returnType !== undefined) {
41
- context.report({
42
- node: castNode(returnType),
43
- messageId: 'disallowUseMemoTypeAnnotation',
44
- });
45
- }
46
- checkNodeForTypeAnnotations(context, body);
33
+ if (firstArg !== undefined &&
34
+ firstArg.type !== AST_NODE_TYPES.SpreadElement) {
35
+ checkFactory(context, firstArg);
47
36
  }
48
37
  },
49
38
  }),
@@ -53,6 +42,36 @@ export const useMemoHooksStyleRule = {
53
42
 
54
43
 
55
44
 
45
+
46
+
47
+ const checkFactory = (context, node) => {
48
+ if ((node.type === AST_NODE_TYPES.TSAsExpression ||
49
+ node.type === AST_NODE_TYPES.TSTypeAssertion) &&
50
+ !isConstAssertion(node.typeAnnotation)) {
51
+ context.report({
52
+ node: castNode(node),
53
+ messageId: 'disallowUseMemoTypeAnnotation',
54
+ });
55
+ }
56
+ if (isTypeWrapper(node)) {
57
+ checkFactory(context, node.expression);
58
+ return;
59
+ }
60
+ if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
61
+ const { returnType, body } = node;
62
+ if (returnType !== undefined) {
63
+ context.report({
64
+ node: castNode(returnType),
65
+ messageId: 'disallowUseMemoTypeAnnotation',
66
+ });
67
+ }
68
+ checkNodeForTypeAnnotations(context, body);
69
+ }
70
+ };
71
+
72
+
73
+
74
+
56
75
  const skipNonAssertingParents = (node) => {
57
76
  const { parent } = node;
58
77
  return (parent?.type === AST_NODE_TYPES.TSNonNullExpression ||
@@ -1 +1 @@
1
- {"version":3,"file":"use-memo-hooks-style.mjs","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/use-memo-hooks-style.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-memo-hooks-style.mjs","sourceRoot":"","sources":["../../../../src/plugins/react-coding-style/rules/use-memo-hooks-style.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-partial-string-normalize.d.mts","sourceRoot":"","sources":["../../../../src/plugins/total-functions/rules/no-partial-string-normalize.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAUlC;;;;;;;GAOG;AAEH,eAAO,MAAM,wBAAwB;;CAoI1B,CAAC"}
1
+ {"version":3,"file":"no-partial-string-normalize.d.mts","sourceRoot":"","sources":["../../../../src/plugins/total-functions/rules/no-partial-string-normalize.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAUlC;;;;;;;GAOG;AAEH,eAAO,MAAM,wBAAwB;;CA2I1B,CAAC"}
@@ -27,6 +27,24 @@ export const noPartialStringNormalize = createRule({
27
27
  const parserServices = ESLintUtils.getParserServices(context);
28
28
  const checker = parserServices.program.getTypeChecker();
29
29
  const typeOf = (expression) => checker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(expression));
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+ const isSafeForm = (node) => {
38
+ const expression = skipTypeWrappers(node);
39
+ if (expression.type === AST_NODE_TYPES.ConditionalExpression) {
40
+ return (isSafeForm(expression.consequent) && isSafeForm(expression.alternate));
41
+ }
42
+ if (expression.type === AST_NODE_TYPES.LogicalExpression) {
43
+ return isSafeForm(expression.left) && isSafeForm(expression.right);
44
+ }
45
+ return unionTypeParts(typeOf(expression)).every((type) => (type.isStringLiteral() && SAFE_FORMS.has(type.value)) ||
46
+ isTypeFlagSet(type, TypeFlags.Undefined));
47
+ };
30
48
  return {
31
49
  CallExpression: (node) => {
32
50
 
@@ -78,20 +96,9 @@ export const noPartialStringNormalize = createRule({
78
96
 
79
97
  return;
80
98
  }
81
- const argument = rawArgument.type === AST_NODE_TYPES.SpreadElement
82
- ? rawArgument
83
- : skipTypeWrappers(rawArgument);
84
- const safeValues = new Set(['NFC', 'NFD', 'NFKC', 'NFKD']);
85
- if (argument.type === AST_NODE_TYPES.Literal &&
86
- typeof argument.value === 'string' &&
87
- safeValues.has(argument.value)) {
88
-
89
99
 
90
- return;
91
- }
92
- if (argument.type === AST_NODE_TYPES.Identifier &&
93
- unionTypeParts(typeOf(argument)).every((type) => (type.isStringLiteral() && safeValues.has(type.value)) ||
94
- isTypeFlagSet(type, TypeFlags.Undefined))) {
100
+ if (rawArgument.type !== AST_NODE_TYPES.SpreadElement &&
101
+ isSafeForm(rawArgument)) {
95
102
  return;
96
103
  }
97
104
 
@@ -104,4 +111,5 @@ export const noPartialStringNormalize = createRule({
104
111
  },
105
112
  defaultOptions: [],
106
113
  });
114
+ const SAFE_FORMS = new Set(['NFC', 'NFD', 'NFKC', 'NFKD']);
107
115
  //# sourceMappingURL=no-partial-string-normalize.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-partial-string-normalize.mjs","sourceRoot":"","sources":["../../../../src/plugins/total-functions/rules/no-partial-string-normalize.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-partial-string-normalize.mjs","sourceRoot":"","sources":["../../../../src/plugins/total-functions/rules/no-partial-string-normalize.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-boolean-logical-operands.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAOlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CACzD,UAAU,EACV,OAAO,CAyGC,CAAC"}
1
+ {"version":3,"file":"jsx-boolean-logical-operands.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAMlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CACzD,UAAU,EACV,OAAO,CAyGC,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { AST_NODE_TYPES, ESLintUtils, } from '@typescript-eslint/utils';
2
- import { isTypeWrapper } from 'eslint-rule-forge';
2
+ import { createGetLayerTypes, isTypeWrapper } from 'eslint-rule-forge';
3
3
  import * as ts from 'typescript';
4
4
  import { jsxValuePositionOf } from './jsx-utils.mjs';
5
- import { createGetLayerTypes } from './type-layer-utils.mjs';
6
5
 
7
6
 
8
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-boolean-logical-operands.mjs","sourceRoot":"","sources":["../../../../src/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsx-boolean-logical-operands.mjs","sourceRoot":"","sources":["../../../../src/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mts"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  import { AST_NODE_TYPES, ESLintUtils, } from '@typescript-eslint/utils';
2
- import { skipTypeWrappers } from 'eslint-rule-forge';
3
- import { invertedComparisonText, isComparison, isExactlyInvertible, } from './comparison-utils.mjs';
4
- import { createGetLayerTypes } from './type-layer-utils.mjs';
2
+ import { createGetLayerTypes, invertedComparisonText, isComparison, isExactlyInvertible, skipTypeWrappers, } from 'eslint-rule-forge';
5
3
 
6
4
 
7
5