eslint-config-typed 7.6.1 → 7.8.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.
- package/README.md +6 -0
- package/dist/plugins/immer-coding-style/rules/immer-produce.d.mts +16 -0
- package/dist/plugins/immer-coding-style/rules/immer-produce.d.mts.map +1 -0
- package/dist/plugins/immer-coding-style/rules/immer-produce.mjs +39 -0
- package/dist/plugins/immer-coding-style/rules/immer-produce.mjs.map +1 -0
- package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.d.mts +7 -4
- package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.d.mts.map +1 -1
- package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.mjs +62 -60
- package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.mjs.map +1 -1
- package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.d.mts.map +1 -1
- package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.mjs +4 -31
- package/dist/plugins/immer-coding-style/rules/prefer-curried-produce.mjs.map +1 -1
- package/dist/plugins/total-functions/rules/no-hidden-type-assertions.d.mts.map +1 -1
- package/dist/plugins/total-functions/rules/no-hidden-type-assertions.mjs +187 -45
- package/dist/plugins/total-functions/rules/no-hidden-type-assertions.mjs.map +1 -1
- package/dist/plugins/total-functions/rules/no-partial-division.d.mts +9 -2
- package/dist/plugins/total-functions/rules/no-partial-division.d.mts.map +1 -1
- package/dist/plugins/total-functions/rules/no-partial-division.mjs +44 -15
- package/dist/plugins/total-functions/rules/no-partial-division.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/array-type-utils.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/array-type-utils.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/function-order.mjs +1 -8
- package/dist/plugins/ts-restrictions/rules/function-order.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-date-only-string-to-date.d.mts +55 -0
- package/dist/plugins/ts-restrictions/rules/no-date-only-string-to-date.d.mts.map +1 -0
- package/dist/plugins/ts-restrictions/rules/no-date-only-string-to-date.mjs +233 -0
- package/dist/plugins/ts-restrictions/rules/no-date-only-string-to-date.mjs.map +1 -0
- package/dist/plugins/ts-restrictions/rules/no-negated-comparison.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-negated-comparison.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/no-negated-comparison.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-restricted-cast-name.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-restricted-cast-name.mjs +1 -3
- package/dist/plugins/ts-restrictions/rules/no-restricted-cast-name.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-unnecessary-array-from.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-unnecessary-array-from.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/no-unnecessary-array-from.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-catch.d.mts +7 -0
- package/dist/plugins/ts-restrictions/rules/prefer-catch.d.mts.map +1 -0
- package/dist/plugins/ts-restrictions/rules/prefer-catch.mjs +10 -0
- package/dist/plugins/ts-restrictions/rules/prefer-catch.mjs.map +1 -0
- package/dist/plugins/ts-restrictions/rules/prefer-curried-call.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-curried-call.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/prefer-curried-call.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.mjs +1 -8
- package/dist/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.mjs +1 -4
- package/dist/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-range-in-number-line-order.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-range-in-number-line-order.mjs +2 -5
- package/dist/plugins/ts-restrictions/rules/prefer-range-in-number-line-order.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-ternary.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/prefer-ternary.mjs +2 -9
- package/dist/plugins/ts-restrictions/rules/prefer-ternary.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/reference-utils.mjs +1 -8
- package/dist/plugins/ts-restrictions/rules/reference-utils.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/require-ime-guard-on-enter.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/require-ime-guard-on-enter.mjs +1 -8
- package/dist/plugins/ts-restrictions/rules/require-ime-guard-on-enter.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/rules.d.mts +4 -0
- package/dist/plugins/ts-restrictions/rules/rules.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/rules.mjs +4 -0
- package/dist/plugins/ts-restrictions/rules/rules.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/suggestion-only.d.mts +24 -0
- package/dist/plugins/ts-restrictions/rules/suggestion-only.d.mts.map +1 -0
- package/dist/plugins/ts-restrictions/rules/suggestion-only.mjs +100 -0
- package/dist/plugins/ts-restrictions/rules/suggestion-only.mjs.map +1 -0
- package/dist/plugins/vitest-coding-style/rules/no-expect-to-strict-equal.d.mts +8 -1
- package/dist/plugins/vitest-coding-style/rules/no-expect-to-strict-equal.d.mts.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/no-expect-to-strict-equal.mjs +47 -9
- package/dist/plugins/vitest-coding-style/rules/no-expect-to-strict-equal.mjs.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.d.mts.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mjs +6 -11
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mjs.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.mjs +2 -2
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.mjs.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.d.mts.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.mjs +6 -11
- package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.mjs.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/rules.d.mts +1 -1
- package/dist/plugins/vitest-coding-style/rules/vitest-binding.d.mts +54 -12
- package/dist/plugins/vitest-coding-style/rules/vitest-binding.d.mts.map +1 -1
- package/dist/plugins/vitest-coding-style/rules/vitest-binding.mjs +163 -12
- package/dist/plugins/vitest-coding-style/rules/vitest-binding.mjs.map +1 -1
- package/dist/rules/eslint-promise-rules.d.mts.map +1 -1
- package/dist/rules/eslint-promise-rules.mjs +0 -2
- package/dist/rules/eslint-promise-rules.mjs.map +1 -1
- package/dist/rules/eslint-ts-data-forge-rules.d.mts +10 -7
- package/dist/rules/eslint-ts-data-forge-rules.d.mts.map +1 -1
- package/dist/rules/eslint-ts-data-forge-rules.mjs +10 -7
- package/dist/rules/eslint-ts-data-forge-rules.mjs.map +1 -1
- package/dist/rules/eslint-ts-restrictions-rules.d.mts +2 -0
- package/dist/rules/eslint-ts-restrictions-rules.d.mts.map +1 -1
- package/dist/rules/eslint-ts-restrictions-rules.mjs +2 -0
- package/dist/rules/eslint-ts-restrictions-rules.mjs.map +1 -1
- package/dist/types/rules/eslint-ts-data-forge-rules.d.mts +92 -44
- package/dist/types/rules/eslint-ts-data-forge-rules.d.mts.map +1 -1
- package/dist/types/rules/eslint-ts-restrictions-rules.d.mts +58 -0
- package/dist/types/rules/eslint-ts-restrictions-rules.d.mts.map +1 -1
- package/dist/types/rules/eslint-vitest-coding-style-rules.d.mts +1 -1
- package/package.json +10 -10
- package/src/configs/typescript.test.mts +18 -0
- package/src/plugins/immer-coding-style/rules/immer-produce.mts +61 -0
- package/src/plugins/immer-coding-style/rules/mut-prefixed-draft.mts +96 -85
- package/src/plugins/immer-coding-style/rules/mut-prefixed-draft.test.mts +162 -2
- package/src/plugins/immer-coding-style/rules/prefer-curried-produce.mts +3 -58
- package/src/plugins/total-functions/rules/no-hidden-type-assertions.mts +351 -112
- package/src/plugins/total-functions/rules/no-hidden-type-assertions.test.mts +315 -7
- package/src/plugins/total-functions/rules/no-partial-division.mts +70 -37
- package/src/plugins/total-functions/rules/no-partial-division.test.mts +522 -0
- package/src/plugins/ts-restrictions/rules/array-type-utils.mts +1 -5
- package/src/plugins/ts-restrictions/rules/function-order.mts +1 -9
- package/src/plugins/ts-restrictions/rules/jsx-boolean-logical-operands.mts +1 -5
- package/src/plugins/ts-restrictions/rules/no-date-only-string-to-date.mts +330 -0
- package/src/plugins/ts-restrictions/rules/no-date-only-string-to-date.test.mts +307 -0
- package/src/plugins/ts-restrictions/rules/no-negated-comparison.mts +1 -4
- package/src/plugins/ts-restrictions/rules/no-restricted-cast-name.mts +1 -4
- package/src/plugins/ts-restrictions/rules/no-unnecessary-array-from.mts +5 -7
- package/src/plugins/ts-restrictions/rules/no-unnecessary-coalesce-undefined.mts +5 -7
- package/src/plugins/ts-restrictions/rules/prefer-catch.mts +13 -0
- package/src/plugins/ts-restrictions/rules/prefer-catch.test.mts +40 -0
- package/src/plugins/ts-restrictions/rules/prefer-curried-call.mts +1 -4
- package/src/plugins/ts-restrictions/rules/prefer-logical-over-boolean-ternary.mts +1 -4
- package/src/plugins/ts-restrictions/rules/prefer-non-mutating-array-method.mts +1 -4
- package/src/plugins/ts-restrictions/rules/prefer-nullish-coalescing-when-safe.mts +6 -10
- package/src/plugins/ts-restrictions/rules/prefer-optional-chain-over-ternary.mts +1 -4
- package/src/plugins/ts-restrictions/rules/prefer-range-in-number-line-order.mts +7 -6
- package/src/plugins/ts-restrictions/rules/prefer-range-in-number-line-order.test.mts +23 -0
- package/src/plugins/ts-restrictions/rules/prefer-ternary.mts +3 -9
- package/src/plugins/ts-restrictions/rules/prefer-ternary.test.mts +9 -0
- package/src/plugins/ts-restrictions/rules/reference-utils.mts +1 -9
- package/src/plugins/ts-restrictions/rules/require-ime-guard-on-enter.mts +5 -9
- package/src/plugins/ts-restrictions/rules/rules.mts +4 -0
- package/src/plugins/ts-restrictions/rules/suggestion-only.mts +130 -0
- package/src/plugins/ts-restrictions/rules/suggestion-only.test.mts +88 -0
- package/src/plugins/vitest-coding-style/rules/no-expect-to-strict-equal.mts +67 -14
- package/src/plugins/vitest-coding-style/rules/no-expect-to-strict-equal.test.mts +152 -0
- package/src/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mts +7 -16
- package/src/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.mts +2 -2
- package/src/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.mts +7 -16
- package/src/plugins/vitest-coding-style/rules/vitest-binding.mts +262 -29
- package/src/plugins/vitest-coding-style/rules/vitest-destructured-binding.test.mts +326 -0
- package/src/rules/eslint-promise-rules.mts +3 -5
- package/src/rules/eslint-ts-data-forge-rules.mts +10 -7
- package/src/rules/eslint-ts-restrictions-rules.mts +2 -0
- package/src/types/rules/eslint-ts-data-forge-rules.mts +95 -51
- package/src/types/rules/eslint-ts-restrictions-rules.mts +62 -0
- package/src/types/rules/eslint-vitest-coding-style-rules.mts +1 -1
package/README.md
CHANGED
|
@@ -582,6 +582,7 @@ The shape of the rule option varies depending on the rule, so please check the c
|
|
|
582
582
|
|
|
583
583
|
- Provides the `ts-restrictions/*` rules; `eslintTsRestrictionsRules` lists each one with the severity the preset sets. `ts-restrictions/no-restricted-syntax` duplicates ESLint's `no-restricted-syntax` rule.
|
|
584
584
|
- Can be used to set the error level to `error` or `warn` as needed.
|
|
585
|
+
- Some rules are an upstream rule wrapped: `ts-restrictions/prefer-global-this` is `unicorn/prefer-global-this` without the reports `globalThis` cannot answer, and `ts-restrictions/prefer-catch` is `promise/prefer-catch` with its fix offered only as a suggestion, because the fix rewrites `p.then(a, b)` into `p.catch(b).then(a)`, which runs `a` after a rejection too. The preset turns each upstream rule off beside its wrapper. A rule whose `--fix` turns out to change what code does is wrapped the same way (`suggestionOnly` in `src/plugins/ts-restrictions/rules/suggestion-only.mts`) rather than turned off, so that its reports stay.
|
|
585
586
|
|
|
586
587
|
Example:
|
|
587
588
|
|
|
@@ -687,6 +688,11 @@ resolving the binding is what keeps `assert(x)` imported from `node:assert`
|
|
|
687
688
|
(which has no `isTrue`) out of it, and what lets
|
|
688
689
|
`import { assert as a } from 'vitest'` be recognized — the fixes then keep the
|
|
689
690
|
local name instead of writing one the file does not have.
|
|
691
|
+
An `expect` destructured from a test's context
|
|
692
|
+
(`test.concurrent('x', ({ expect }) => …)`) or from `import.meta.vitest` is
|
|
693
|
+
Vitest's too and is reported, without a fix: the context has no `assert`, and an
|
|
694
|
+
in-source test reaches Vitest only through that handle, so neither a global
|
|
695
|
+
`assert` nor an added import can be named for it.
|
|
690
696
|
|
|
691
697
|
#### react-coding-style
|
|
692
698
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TSESLint, TSESTree } from '@typescript-eslint/utils';
|
|
2
|
+
import type { DeepReadonly } from 'ts-type-forge';
|
|
3
|
+
/** Which of immer's recipe-taking functions a callee calls. */
|
|
4
|
+
export type ImmerProduce = 'produce' | 'produceWithPatches';
|
|
5
|
+
/**
|
|
6
|
+
* For one file, a function that says which of immer's `produce` and
|
|
7
|
+
* `produceWithPatches` a callee calls, or `undefined` when it calls neither.
|
|
8
|
+
*
|
|
9
|
+
* The callee is immer's when it is a named, aliased, default or namespace
|
|
10
|
+
* import from `immer` (immer 9 and earlier export `produce` as the default too)
|
|
11
|
+
* that nothing nearer shadows — a parameter, a local, an import from another
|
|
12
|
+
* module ({@link isShadowedCallee}). The callee and a namespace object are read
|
|
13
|
+
* through type wrappers.
|
|
14
|
+
*/
|
|
15
|
+
export declare const buildImmerProduceResolver: (sourceCode: TSESLint.SourceCode) => ((callee: DeepReadonly<TSESTree.Expression>) => ImmerProduce | undefined);
|
|
16
|
+
//# sourceMappingURL=immer-produce.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immer-produce.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/immer-produce.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,+DAA+D;AAC/D,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,eAExB,QAAQ,CAAC,UAAU,KAC9B,CAAC,CACF,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,KACtC,YAAY,GAAG,SAAS,CA+B5B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { buildCalleeResolver, getImportDeclarations, isShadowedCallee, } from 'eslint-rule-forge';
|
|
2
|
+
import { Arr } from 'ts-data-forge';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export const buildImmerProduceResolver = (
|
|
14
|
+
|
|
15
|
+
sourceCode) => {
|
|
16
|
+
const immerImports = getImportDeclarations(sourceCode.ast, immerModule);
|
|
17
|
+
if (Arr.isEmpty(immerImports)) {
|
|
18
|
+
return () => undefined;
|
|
19
|
+
}
|
|
20
|
+
const resolveCallee = buildCalleeResolver(immerImports);
|
|
21
|
+
return (callee) => {
|
|
22
|
+
const resolved = resolveCallee(callee);
|
|
23
|
+
if (resolved === undefined ||
|
|
24
|
+
isShadowedCallee(sourceCode, resolved, immerModule)) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
switch (resolved.canonicalName) {
|
|
28
|
+
case 'default':
|
|
29
|
+
case 'produce':
|
|
30
|
+
return 'produce';
|
|
31
|
+
case 'produceWithPatches':
|
|
32
|
+
return 'produceWithPatches';
|
|
33
|
+
default:
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
const immerModule = 'immer';
|
|
39
|
+
//# sourceMappingURL=immer-produce.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immer-produce.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/immer-produce.mts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMrD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;AACvC,8EAA8E;AAC9E,UAA+B,EAGF,EAAE;IAC/B,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAExE,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAExD,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAExD,IACE,QAAQ,KAAK,SAAS;YACtB,gBAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,EACnD,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,QAAQ,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC/B,KAAK,SAAS,CAAC;YACf,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YAEnB,KAAK,oBAAoB;gBACvB,OAAO,oBAAoB,CAAC;YAE9B;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,OAAO,CAAC"}
|
|
@@ -6,10 +6,13 @@ type MessageIds = 'requireMutPrefix';
|
|
|
6
6
|
* mutated, so an unprefixed draft is otherwise reported on every line that
|
|
7
7
|
* writes to it, with a message that does not say the fix is a rename.
|
|
8
8
|
*
|
|
9
|
-
* The recipe is the second argument of `produce` / `produceWithPatches`
|
|
10
|
-
* is a function literal, and otherwise the first when that one is (the
|
|
11
|
-
* form).
|
|
12
|
-
*
|
|
9
|
+
* The recipe is the second argument of immer's `produce` / `produceWithPatches`
|
|
10
|
+
* when it is a function literal, and otherwise the first when that one is (the
|
|
11
|
+
* curried form). The callee is immer's only, through an import from `immer`
|
|
12
|
+
* that nothing nearer shadows (`buildImmerProduceResolver`): a `produce` from
|
|
13
|
+
* another module, a local one or a parameter is not. A destructured draft and
|
|
14
|
+
* one that is never referenced are left alone; a draft with a default value is
|
|
15
|
+
* reported.
|
|
13
16
|
*
|
|
14
17
|
* The fix renames the parameter and its references. It is withheld when it
|
|
15
18
|
* could change the code's meaning or add shadowing; `canRename` lists the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mut-prefixed-draft.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/mut-prefixed-draft.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAET,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mut-prefixed-draft.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/mut-prefixed-draft.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAET,MAAM,0BAA0B,CAAC;AAUlC,KAAK,UAAU,GAAG,kBAAkB,CAAC;AAErC;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAoFvD,CAAC"}
|
|
@@ -2,6 +2,10 @@ import { AST_NODE_TYPES, TSESLint, } from '@typescript-eslint/utils';
|
|
|
2
2
|
import { isTypeWrapper, skipTypeWrappers } from 'eslint-rule-forge';
|
|
3
3
|
import { Arr } from 'ts-data-forge';
|
|
4
4
|
import { mutablePrefix } from '../../../constants/index.mjs';
|
|
5
|
+
import { buildImmerProduceResolver, } from './immer-produce.mjs';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
|
|
@@ -30,62 +34,59 @@ export const mutPrefixedDraftRule = {
|
|
|
30
34
|
},
|
|
31
35
|
defaultOptions: [],
|
|
32
36
|
},
|
|
33
|
-
create: (context) =>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
identifier.parent.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
37
|
+
create: (context) => {
|
|
38
|
+
const resolveProduce = buildImmerProduceResolver(context.sourceCode);
|
|
39
|
+
return {
|
|
40
|
+
CallExpression: (node) => {
|
|
41
|
+
const recipe = findRecipe(node, resolveProduce);
|
|
42
|
+
if (recipe === undefined) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const param = draftParameterOf(recipe);
|
|
46
|
+
if (param === undefined || param.name.startsWith(mutablePrefix)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const scope = context.sourceCode.scopeManager?.scopes.find((s) => s.type === TSESLint.Scope.ScopeType.function &&
|
|
50
|
+
s.block.range[0] === recipe.range[0] &&
|
|
51
|
+
s.block.range[1] === recipe.range[1]);
|
|
52
|
+
if (scope === undefined) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const variable = scope.set.get(param.name);
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
const declared = variable?.identifiers[0];
|
|
59
|
+
if (variable === undefined || declared === undefined) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
const nameToken = context.sourceCode.getFirstToken(declared);
|
|
65
|
+
const references = usesOf(variable);
|
|
66
|
+
if (nameToken === null || Arr.isEmpty(references)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const suggested = `${mutablePrefix}${param.name}`;
|
|
70
|
+
context.report({
|
|
71
|
+
loc: nameToken.loc,
|
|
72
|
+
messageId: 'requireMutPrefix',
|
|
73
|
+
data: { name: param.name, suggested },
|
|
74
|
+
fix: canRename(scope, variable, suggested, resolveProduce)
|
|
75
|
+
? (fixer) => Arr.toUnshifted(references.map(({ identifier }) => identifier.parent.type === AST_NODE_TYPES.Property &&
|
|
76
|
+
identifier.parent.shorthand &&
|
|
77
|
+
identifier.parent.value === identifier
|
|
78
|
+
? fixer.insertTextAfter(identifier, `: ${suggested}`)
|
|
79
|
+
: fixer.replaceText(identifier, suggested)), fixer.replaceText(nameToken, suggested))
|
|
80
|
+
: null,
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
},
|
|
78
85
|
};
|
|
79
|
-
const produceNames = new Set([
|
|
80
|
-
'produce',
|
|
81
|
-
'produceWithPatches',
|
|
82
|
-
]);
|
|
83
86
|
const isFunctionNode = (node) => node.type === AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
84
87
|
node.type === AST_NODE_TYPES.FunctionExpression;
|
|
85
|
-
const findRecipe = (node) => {
|
|
86
|
-
|
|
87
|
-
if (callee.type !== AST_NODE_TYPES.Identifier ||
|
|
88
|
-
!produceNames.has(callee.name)) {
|
|
88
|
+
const findRecipe = (node, resolveProduce) => {
|
|
89
|
+
if (resolveProduce(node.callee) === undefined) {
|
|
89
90
|
return undefined;
|
|
90
91
|
}
|
|
91
92
|
|
|
@@ -125,15 +126,16 @@ const usesOf = (variable) => variable.references.filter(({ identifier }) => iden
|
|
|
125
126
|
const outsideTypeWrappers = (node) => node !== undefined && isTypeWrapper(node)
|
|
126
127
|
? outsideTypeWrappers(node.parent)
|
|
127
128
|
: node;
|
|
128
|
-
const isRecipe = (node) => {
|
|
129
|
+
const isRecipe = (node, resolveProduce) => {
|
|
129
130
|
const call = outsideTypeWrappers(node.parent);
|
|
130
|
-
return (call?.type === AST_NODE_TYPES.CallExpression &&
|
|
131
|
+
return (call?.type === AST_NODE_TYPES.CallExpression &&
|
|
132
|
+
findRecipe(call, resolveProduce) === node);
|
|
131
133
|
};
|
|
132
134
|
|
|
133
135
|
|
|
134
136
|
|
|
135
137
|
|
|
136
|
-
const isDraftNameOfRecipeAround = (scope, name) => {
|
|
138
|
+
const isDraftNameOfRecipeAround = (scope, name, resolveProduce) => {
|
|
137
139
|
const { upper } = scope;
|
|
138
140
|
if (upper === null) {
|
|
139
141
|
return false;
|
|
@@ -143,11 +145,11 @@ const isDraftNameOfRecipeAround = (scope, name) => {
|
|
|
143
145
|
return (
|
|
144
146
|
|
|
145
147
|
(isFunctionNode(block) &&
|
|
146
|
-
isRecipe(block) &&
|
|
148
|
+
isRecipe(block, resolveProduce) &&
|
|
147
149
|
draftParameterOf(block)?.name === name &&
|
|
148
150
|
outer !== undefined &&
|
|
149
151
|
Arr.isNonEmpty(usesOf(outer))) ||
|
|
150
|
-
isDraftNameOfRecipeAround(upper, name));
|
|
152
|
+
isDraftNameOfRecipeAround(upper, name, resolveProduce));
|
|
151
153
|
};
|
|
152
154
|
|
|
153
155
|
const isValueIn = (scope, name) => scope.set.get(name)?.isValueVariable ?? false;
|
|
@@ -172,14 +174,14 @@ const isDeclaredAround = (scope, name) => scope.upper !== null &&
|
|
|
172
174
|
|
|
173
175
|
|
|
174
176
|
|
|
175
|
-
const canRename = (scope, variable, newName) => !isDeclaredWithin(scope, newName) &&
|
|
177
|
+
const canRename = (scope, variable, newName, resolveProduce) => !isDeclaredWithin(scope, newName) &&
|
|
176
178
|
!isDeclaredAround(scope, newName) &&
|
|
177
179
|
scope.through.every(
|
|
178
180
|
|
|
179
181
|
(reference) => !reference.isValueReference ||
|
|
180
182
|
(reference.identifier.name !== newName &&
|
|
181
183
|
reference.identifier.name !== 'eval')) &&
|
|
182
|
-
!isDraftNameOfRecipeAround(scope, variable.name) &&
|
|
184
|
+
!isDraftNameOfRecipeAround(scope, variable.name, resolveProduce) &&
|
|
183
185
|
Arr.isFixedLengthArray(1, variable.defs) &&
|
|
184
186
|
variable.references.every(
|
|
185
187
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mut-prefixed-draft.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/mut-prefixed-draft.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,GAET,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"mut-prefixed-draft.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/mut-prefixed-draft.mts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AAWlC,KAAK,UAAU,GAAG,mBAAmB,CAAC;AAOtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAoI3D,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
|
-
import {
|
|
2
|
+
import { hasCommentWithin, isTypeWrapper, skipTypeWrappers, typeWrapperLayers, } from 'eslint-rule-forge';
|
|
3
3
|
import { Arr, hasKey, isRecord } from 'ts-data-forge';
|
|
4
|
+
import { buildImmerProduceResolver } from './immer-produce.mjs';
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
@@ -51,35 +52,8 @@ export const preferCurriedProduceRule = {
|
|
|
51
52
|
},
|
|
52
53
|
create: (context) => {
|
|
53
54
|
const sourceCode = context.sourceCode;
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
return {};
|
|
57
|
-
}
|
|
58
|
-
const resolveCallee = buildCalleeResolver(immerImports);
|
|
59
|
-
|
|
60
|
-
const defaultImportNames = new Set(immerImports.flatMap((declaration) => Arr.generate(function* () {
|
|
61
|
-
for (const specifier of declaration.specifiers) {
|
|
62
|
-
if (specifier.type === AST_NODE_TYPES.ImportDefaultSpecifier) {
|
|
63
|
-
yield specifier.local.name;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
})));
|
|
67
|
-
const isImmerProduce = (call) => {
|
|
68
|
-
const callee = call.callee;
|
|
69
|
-
const canonicalName = resolveCallee(callee)?.canonicalName;
|
|
70
|
-
const unwrapped = skipTypeWrappers(callee);
|
|
71
|
-
if (canonicalName !== 'produce' &&
|
|
72
|
-
canonicalName !== 'default' &&
|
|
73
|
-
!(unwrapped.type === AST_NODE_TYPES.Identifier &&
|
|
74
|
-
defaultImportNames.has(unwrapped.name))) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
const bound = unwrapped.type === AST_NODE_TYPES.MemberExpression
|
|
78
|
-
? skipTypeWrappers(unwrapped.object)
|
|
79
|
-
: unwrapped;
|
|
80
|
-
return (bound.type === AST_NODE_TYPES.Identifier &&
|
|
81
|
-
!hasForeignBinding(sourceCode, call, bound.name, immerModule));
|
|
82
|
-
};
|
|
55
|
+
const resolveProduce = buildImmerProduceResolver(sourceCode);
|
|
56
|
+
const isImmerProduce = (call) => resolveProduce(call.callee) === 'produce';
|
|
83
57
|
return {
|
|
84
58
|
ArrowFunctionExpression: (node) => {
|
|
85
59
|
if (node.async ||
|
|
@@ -234,7 +208,6 @@ const report = (context, { arrowFunction, callExpression, isFixable, remainingAr
|
|
|
234
208
|
: null,
|
|
235
209
|
});
|
|
236
210
|
};
|
|
237
|
-
const immerModule = 'immer';
|
|
238
211
|
|
|
239
212
|
|
|
240
213
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-curried-produce.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/prefer-curried-produce.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-hidden-type-assertions.d.mts","sourceRoot":"","sources":["../../../../src/plugins/total-functions/rules/no-hidden-type-assertions.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-hidden-type-assertions.d.mts","sourceRoot":"","sources":["../../../../src/plugins/total-functions/rules/no-hidden-type-assertions.mts"],"names":[],"mappings":"AAKA,OAAO,EAEL,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAgClC,oDAAoD;AAEpD,eAAO,MAAM,sBAAsB;;CAscxB,CAAC"}
|