eslint-config-typed 6.0.0 → 7.1.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 (40) hide show
  1. package/dist/constants/index.d.mts +1 -0
  2. package/dist/constants/index.d.mts.map +1 -1
  3. package/dist/constants/index.mjs +1 -0
  4. package/dist/constants/index.mjs.map +1 -1
  5. package/dist/constants/mutable-prefix.d.mts +9 -0
  6. package/dist/constants/mutable-prefix.d.mts.map +1 -0
  7. package/dist/constants/mutable-prefix.mjs +9 -0
  8. package/dist/constants/mutable-prefix.mjs.map +1 -0
  9. package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.d.mts +20 -0
  10. package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.d.mts.map +1 -0
  11. package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.mjs +187 -0
  12. package/dist/plugins/immer-coding-style/rules/mut-prefixed-draft.mjs.map +1 -0
  13. package/dist/plugins/immer-coding-style/rules/rules.d.mts +1 -0
  14. package/dist/plugins/immer-coding-style/rules/rules.d.mts.map +1 -1
  15. package/dist/plugins/immer-coding-style/rules/rules.mjs +2 -0
  16. package/dist/plugins/immer-coding-style/rules/rules.mjs.map +1 -1
  17. package/dist/plugins/strict-dependencies/rules/resolve-import-path.d.mts +7 -1
  18. package/dist/plugins/strict-dependencies/rules/resolve-import-path.d.mts.map +1 -1
  19. package/dist/plugins/strict-dependencies/rules/resolve-import-path.mjs +28 -17
  20. package/dist/plugins/strict-dependencies/rules/resolve-import-path.mjs.map +1 -1
  21. package/dist/rules/eslint-functional-rules.d.mts.map +1 -1
  22. package/dist/rules/eslint-functional-rules.mjs +3 -2
  23. package/dist/rules/eslint-functional-rules.mjs.map +1 -1
  24. package/dist/rules/eslint-immer-coding-style-rules.d.mts +1 -0
  25. package/dist/rules/eslint-immer-coding-style-rules.d.mts.map +1 -1
  26. package/dist/rules/eslint-immer-coding-style-rules.mjs +1 -0
  27. package/dist/rules/eslint-immer-coding-style-rules.mjs.map +1 -1
  28. package/dist/types/rules/eslint-immer-coding-style-rules.d.mts +15 -0
  29. package/dist/types/rules/eslint-immer-coding-style-rules.d.mts.map +1 -1
  30. package/package.json +6 -6
  31. package/src/constants/index.mts +1 -0
  32. package/src/constants/mutable-prefix.mts +8 -0
  33. package/src/plugins/immer-coding-style/rules/mut-prefixed-draft.mts +292 -0
  34. package/src/plugins/immer-coding-style/rules/mut-prefixed-draft.test.mts +587 -0
  35. package/src/plugins/immer-coding-style/rules/rules.mts +2 -0
  36. package/src/plugins/strict-dependencies/rules/resolve-import-path.mts +45 -24
  37. package/src/plugins/strict-dependencies/rules/resolve-import-path.test.mts +133 -104
  38. package/src/rules/eslint-functional-rules.mts +3 -2
  39. package/src/rules/eslint-immer-coding-style-rules.mts +1 -0
  40. package/src/types/rules/eslint-immer-coding-style-rules.mts +16 -0
@@ -1,2 +1,3 @@
1
1
  export * from './all-extensions.mjs';
2
+ export * from './mutable-prefix.mjs';
2
3
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/constants/index.mts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/constants/index.mts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './all-extensions.mjs';
2
+ export * from './mutable-prefix.mjs';
2
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/constants/index.mts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/constants/index.mts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The name prefix `functional/immutable-data` and `functional/no-let` let be
3
+ * mutated (`eslint-functional-rules.mts`), and the one
4
+ * `immer-coding-style/mut-prefixed-draft` asks of a draft. The codemod
5
+ * counterpart is ts-codemod-lib's `DEFAULT_MUTABLE_PREFIXES`;
6
+ * `eslint-functional-rules.test.mts` fails when the two differ.
7
+ */
8
+ export declare const mutablePrefix = "mut_";
9
+ //# sourceMappingURL=mutable-prefix.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutable-prefix.d.mts","sourceRoot":"","sources":["../../src/constants/mutable-prefix.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+ export const mutablePrefix = 'mut_';
9
+ //# sourceMappingURL=mutable-prefix.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutable-prefix.mjs","sourceRoot":"","sources":["../../src/constants/mutable-prefix.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+ type MessageIds = 'requireMutPrefix';
3
+ /**
4
+ * Reports the draft parameter of an immer recipe whose name lacks the `mut_`
5
+ * prefix. `functional/immutable-data` lets only `mut_`-prefixed bindings be
6
+ * mutated, so an unprefixed draft is otherwise reported on every line that
7
+ * writes to it, with a message that does not say the fix is a rename.
8
+ *
9
+ * The recipe is the second argument of `produce` / `produceWithPatches` when
10
+ * it is a function literal, and otherwise the first when that one is (the
11
+ * curried form). A destructured draft and one that is never referenced are
12
+ * left alone; a draft with a default value is reported.
13
+ *
14
+ * The fix renames the parameter and its references. It is withheld when it
15
+ * could change the code's meaning or add shadowing; `canRename` lists the
16
+ * cases.
17
+ */
18
+ export declare const mutPrefixedDraftRule: TSESLint.RuleModule<MessageIds>;
19
+ export {};
20
+ //# sourceMappingURL=mut-prefixed-draft.d.mts.map
@@ -0,0 +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;AAMlC,KAAK,UAAU,GAAG,kBAAkB,CAAC;AAErC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAgFvD,CAAC"}
@@ -0,0 +1,187 @@
1
+ import { AST_NODE_TYPES, TSESLint, } from '@typescript-eslint/utils';
2
+ import { isTypeWrapper, skipTypeWrappers } from 'eslint-rule-forge';
3
+ import { Arr } from 'ts-data-forge';
4
+ import { mutablePrefix } from '../../../constants/index.mjs';
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+ export const mutPrefixedDraftRule = {
21
+ meta: {
22
+ type: 'suggestion',
23
+ docs: {
24
+ description: `Require the \`${mutablePrefix}\` prefix on the draft parameter of an immer recipe.`,
25
+ },
26
+ fixable: 'code',
27
+ schema: [],
28
+ messages: {
29
+ requireMutPrefix: `Name the draft \`{{suggested}}\` instead of \`{{name}}\`: \`functional/immutable-data\` allows mutation only through \`${mutablePrefix}\`-prefixed bindings.`,
30
+ },
31
+ defaultOptions: [],
32
+ },
33
+ create: (context) => ({
34
+ CallExpression: (node) => {
35
+ const recipe = findRecipe(node);
36
+ if (recipe === undefined) {
37
+ return;
38
+ }
39
+ const param = draftParameterOf(recipe);
40
+ if (param === undefined || param.name.startsWith(mutablePrefix)) {
41
+ return;
42
+ }
43
+ const scope = context.sourceCode.scopeManager?.scopes.find((s) => s.type === TSESLint.Scope.ScopeType.function &&
44
+ s.block.range[0] === recipe.range[0] &&
45
+ s.block.range[1] === recipe.range[1]);
46
+ if (scope === undefined) {
47
+ return;
48
+ }
49
+ const variable = scope.set.get(param.name);
50
+
51
+
52
+ const declared = variable?.identifiers[0];
53
+ if (variable === undefined || declared === undefined) {
54
+ return;
55
+ }
56
+
57
+
58
+ const nameToken = context.sourceCode.getFirstToken(declared);
59
+ const references = usesOf(variable);
60
+ if (nameToken === null || Arr.isEmpty(references)) {
61
+ return;
62
+ }
63
+ const suggested = `${mutablePrefix}${param.name}`;
64
+ context.report({
65
+ loc: nameToken.loc,
66
+ messageId: 'requireMutPrefix',
67
+ data: { name: param.name, suggested },
68
+ fix: canRename(scope, variable, suggested)
69
+ ? (fixer) => Arr.toUnshifted(references.map(({ identifier }) => identifier.parent.type === AST_NODE_TYPES.Property &&
70
+ identifier.parent.shorthand &&
71
+ identifier.parent.value === identifier
72
+ ? fixer.insertTextAfter(identifier, `: ${suggested}`)
73
+ : fixer.replaceText(identifier, suggested)), fixer.replaceText(nameToken, suggested))
74
+ : null,
75
+ });
76
+ },
77
+ }),
78
+ };
79
+ const produceNames = new Set([
80
+ 'produce',
81
+ 'produceWithPatches',
82
+ ]);
83
+ const isFunctionNode = (node) => node.type === AST_NODE_TYPES.ArrowFunctionExpression ||
84
+ node.type === AST_NODE_TYPES.FunctionExpression;
85
+ const findRecipe = (node) => {
86
+ const callee = skipTypeWrappers(node.callee);
87
+ if (callee.type !== AST_NODE_TYPES.Identifier ||
88
+ !produceNames.has(callee.name)) {
89
+ return undefined;
90
+ }
91
+
92
+ if (node.arguments.some((a) => a.type === AST_NODE_TYPES.SpreadElement)) {
93
+ return undefined;
94
+ }
95
+ const [first, second] = [node.arguments[0], node.arguments[1]].map((argument) => argument === undefined || argument.type === AST_NODE_TYPES.SpreadElement
96
+ ? undefined
97
+ : skipTypeWrappers(argument));
98
+
99
+
100
+
101
+
102
+ return second !== undefined && isFunctionNode(second)
103
+ ? second
104
+ : first !== undefined &&
105
+ isFunctionNode(first) &&
106
+ Arr.isMaxLengthArray(2, node.arguments)
107
+ ? first
108
+ : undefined;
109
+ };
110
+
111
+
112
+
113
+
114
+
115
+ const draftParameterOf = (recipe) => {
116
+ const first = recipe.params.find((p) => p.type !== AST_NODE_TYPES.Identifier || p.name !== 'this');
117
+ const param = first?.type === AST_NODE_TYPES.AssignmentPattern ? first.left : first;
118
+ return param?.type === AST_NODE_TYPES.Identifier ? param : undefined;
119
+ };
120
+
121
+
122
+
123
+
124
+ const usesOf = (variable) => variable.references.filter(({ identifier }) => identifier !== variable.identifiers[0]);
125
+ const outsideTypeWrappers = (node) => node !== undefined && isTypeWrapper(node)
126
+ ? outsideTypeWrappers(node.parent)
127
+ : node;
128
+ const isRecipe = (node) => {
129
+ const call = outsideTypeWrappers(node.parent);
130
+ return (call?.type === AST_NODE_TYPES.CallExpression && findRecipe(call) === node);
131
+ };
132
+
133
+
134
+
135
+
136
+ const isDraftNameOfRecipeAround = (scope, name) => {
137
+ const { upper } = scope;
138
+ if (upper === null) {
139
+ return false;
140
+ }
141
+ const { block } = upper;
142
+ const outer = upper.set.get(name);
143
+ return (
144
+
145
+ (isFunctionNode(block) &&
146
+ isRecipe(block) &&
147
+ draftParameterOf(block)?.name === name &&
148
+ outer !== undefined &&
149
+ Arr.isNonEmpty(usesOf(outer))) ||
150
+ isDraftNameOfRecipeAround(upper, name));
151
+ };
152
+
153
+ const isValueIn = (scope, name) => scope.set.get(name)?.isValueVariable ?? false;
154
+
155
+ const isDeclaredWithin = (scope, name) => isValueIn(scope, name) ||
156
+ scope.childScopes.some((child) => isDeclaredWithin(child, name));
157
+
158
+ const isDeclaredAround = (scope, name) => scope.upper !== null &&
159
+ (isValueIn(scope.upper, name) || isDeclaredAround(scope.upper, name));
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ const canRename = (scope, variable, newName) => !isDeclaredWithin(scope, newName) &&
176
+ !isDeclaredAround(scope, newName) &&
177
+ scope.through.every(
178
+
179
+ (reference) => !reference.isValueReference ||
180
+ (reference.identifier.name !== newName &&
181
+ reference.identifier.name !== 'eval')) &&
182
+ !isDraftNameOfRecipeAround(scope, variable.name) &&
183
+ Arr.isFixedLengthArray(1, variable.defs) &&
184
+ variable.references.every(
185
+
186
+ (reference) => !reference.isWrite() || reference.init === true);
187
+ //# sourceMappingURL=mut-prefixed-draft.mjs.map
@@ -0,0 +1 @@
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,4 +1,5 @@
1
1
  export declare const immerCodingStyleRules: {
2
+ readonly 'mut-prefixed-draft': import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireMutPrefix", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
3
  readonly 'prefer-curried-produce': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useCurriedProduce", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
4
  };
4
5
  //# sourceMappingURL=rules.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/rules.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB;;CAEQ,CAAC"}
1
+ {"version":3,"file":"rules.d.mts","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/rules.mts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB;;;CAGQ,CAAC"}
@@ -1,5 +1,7 @@
1
+ import { mutPrefixedDraftRule } from './mut-prefixed-draft.mjs';
1
2
  import { preferCurriedProduceRule } from './prefer-curried-produce.mjs';
2
3
  export const immerCodingStyleRules = {
4
+ 'mut-prefixed-draft': mutPrefixedDraftRule,
3
5
  'prefer-curried-produce': preferCurriedProduceRule,
4
6
  };
5
7
  //# sourceMappingURL=rules.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/rules.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,wBAAwB,EAAE,wBAAwB;CACV,CAAC"}
1
+ {"version":3,"file":"rules.mjs","sourceRoot":"","sources":["../../../../src/plugins/immer-coding-style/rules/rules.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oBAAoB,EAAE,oBAAoB;IAC1C,wBAAwB,EAAE,wBAAwB;CACV,CAAC"}
@@ -5,7 +5,13 @@ import * as ts from 'typescript';
5
5
  *
6
6
  * `readCompilerOptions` は tsconfig の compilerOptions を返す関数で、既定では
7
7
  * カレントディレクトリの tsconfig.json を読む。テストが `typescript` を
8
- * モジュールごと差し替えずにすむよう引数にしている。
8
+ * モジュールごと差し替えずにすむよう引数にしている。返す `paths` の値は
9
+ * カレントディレクトリからの相対パスとして扱う。
9
10
  */
10
11
  export declare const resolveImportPath: (importPath: string, relativeFilePath: string | undefined, pathIndexMap: ReadonlyRecord<string, number>, readCompilerOptions?: () => ts.CompilerOptions | undefined) => string;
12
+ /**
13
+ * Reads the tsconfig.json found from `cwd` upward, with `paths` rewritten as
14
+ * relative to `cwd`.
15
+ */
16
+ export declare const readTsConfig: (cwd: string) => ts.CompilerOptions | undefined;
11
17
  //# sourceMappingURL=resolve-import-path.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-import-path.d.mts","sourceRoot":"","sources":["../../../../src/plugins/strict-dependencies/rules/resolve-import-path.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAIjC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,eAChB,MAAM,oBACA,MAAM,GAAG,SAAS,gBACtB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,wBACvB,MAAM,EAAE,CAAC,eAAe,GAAG,SAAS,KAExD,MA4DF,CAAC"}
1
+ {"version":3,"file":"resolve-import-path.d.mts","sourceRoot":"","sources":["../../../../src/plugins/strict-dependencies/rules/resolve-import-path.mts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAIjC;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,eAChB,MAAM,oBACA,MAAM,GAAG,SAAS,gBACtB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,wBACvB,MAAM,EAAE,CAAC,eAAe,GAAG,SAAS,KAExD,MAmDF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,EAAE,CAAC,eAAe,GAAG,SAoD/D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as path from 'node:path';
2
- import { Arr, isNonEmptyString, mapNullable } from 'ts-data-forge';
2
+ import { Arr, isNonEmptyString, isString, mapNullable, Obj, } from 'ts-data-forge';
3
3
  import * as ts from 'typescript';
4
4
 
5
5
 
@@ -9,6 +9,7 @@ import * as ts from 'typescript';
9
9
 
10
10
 
11
11
 
12
+
12
13
  export const resolveImportPath = (importPath, relativeFilePath, pathIndexMap, readCompilerOptions = () => readTsConfig(process.cwd())) => {
13
14
 
14
15
  const mut_importAliasMap = {};
@@ -25,14 +26,8 @@ export const resolveImportPath = (importPath, relativeFilePath, pathIndexMap, re
25
26
  if (!Arr.isNonEmpty(value)) {
26
27
  continue;
27
28
  }
28
- const pathValue = mapNullable(pathIndex, (i) => value[i]) ?? value[0];
29
-
30
-
31
-
32
-
33
- const { baseUrl } = tsconfigOptions;
34
29
  mut_importAliasMap[key] =
35
- baseUrl !== undefined ? path.join(baseUrl, pathValue) : pathValue;
30
+ mapNullable(pathIndex, (i) => value[i]) ?? value[0];
36
31
  }
37
32
  }
38
33
  }
@@ -48,14 +43,12 @@ export const resolveImportPath = (importPath, relativeFilePath, pathIndexMap, re
48
43
  (resolvedImportPath, key) => resolvedImportPath.replace(key.replace('*', ''), mut_importAliasMap[key]?.replace('*', '') ?? ''), mut_importPath);
49
44
  return path.normalize(absolutePath);
50
45
  };
51
- const readTsConfig = (tsconfigPath) => {
52
-
53
- const basePath = ts.sys.directoryExists(tsconfigPath)
54
- ? tsconfigPath
55
- : path.dirname(tsconfigPath);
56
- const found = ts.findConfigFile(basePath, (filePath) => ts.sys.fileExists(filePath), ts.sys.directoryExists(tsconfigPath)
57
- ? 'tsconfig.json'
58
- : path.basename(tsconfigPath));
46
+
47
+
48
+
49
+
50
+ export const readTsConfig = (cwd) => {
51
+ const found = ts.findConfigFile(cwd, (filePath) => ts.sys.fileExists(filePath), 'tsconfig.json');
59
52
  if (found === undefined) {
60
53
 
61
54
  return undefined;
@@ -77,6 +70,24 @@ const readTsConfig = (tsconfigPath) => {
77
70
  });
78
71
 
79
72
 
80
- return result?.options;
73
+ if (result?.options.paths === undefined) {
74
+ return result?.options;
75
+ }
76
+
77
+
78
+
79
+ const pathsBasePath = result.options['pathsBasePath'];
80
+ const baseDir = isString(pathsBasePath) ? pathsBasePath : path.dirname(found);
81
+ return {
82
+ ...result.options,
83
+ paths: Obj.map(result.options.paths, (values) => values.map((value) => relativeTo(cwd, baseDir, value))),
84
+ };
85
+ };
86
+
87
+ const relativeTo = (cwd, baseDir, value) => {
88
+ const relative = path.relative(cwd, path.resolve(baseDir, value));
89
+ const nonEmpty = relative === '' ? '.' : relative;
90
+
91
+ return value.endsWith('/') ? `${nonEmpty}/` : nonEmpty;
81
92
  };
82
93
  //# sourceMappingURL=resolve-import-path.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-import-path.mjs","sourceRoot":"","sources":["../../../../src/plugins/strict-dependencies/rules/resolve-import-path.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-import-path.mjs","sourceRoot":"","sources":["../../../../src/plugins/strict-dependencies/rules/resolve-import-path.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-functional-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-functional-rules.mts"],"names":[],"mappings":"AAiBA,qEAAqE;AACrE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;sCAqCP,KAAK;0CACD,KAAK;+CAQA,KAAK;qDAGC,KAAK;oDAeN,KAAK;8CACX,KAAK;0CACT,KAAK;6CAGF,KAAK;+CACH,KAAK;6CACP,KAAK;iDAGD,KAAK;wCAGd,KAAK;yCAeJ,KAAK;kDAGI,KAAK;yDA6BE,KAAK;;gDA0Bd,CAAC;CACI,CAAC"}
1
+ {"version":3,"file":"eslint-functional-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-functional-rules.mts"],"names":[],"mappings":"AAkBA,qEAAqE;AACrE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;sCAqCP,KAAK;0CACD,KAAK;+CAQA,KAAK;qDAGC,KAAK;oDAeN,KAAK;8CACX,KAAK;0CACT,KAAK;6CAGF,KAAK;+CACH,KAAK;6CACP,KAAK;iDAGD,KAAK;wCAGd,KAAK;yCAeJ,KAAK;kDAGI,KAAK;yDA6BE,KAAK;;gDA0Bd,CAAC;CACI,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { mutablePrefix } from '../constants/index.mjs';
1
2
  import { withDefaultOption, } from '../types/index.mjs';
2
3
 
3
4
 
@@ -9,7 +10,7 @@ import { withDefaultOption, } from '../types/index.mjs';
9
10
 
10
11
 
11
12
 
12
- const ignoredMutablePattern = ['^mut_'];
13
+ const ignoredMutablePattern = [`^${mutablePrefix}`];
13
14
 
14
15
  export const eslintFunctionalRules = {
15
16
 
@@ -26,7 +27,7 @@ export const eslintFunctionalRules = {
26
27
  ],
27
28
  ignoreNonConstDeclarations: false,
28
29
  ignoreAccessorPattern: [
29
- '**.mut_**',
30
+ `**.${mutablePrefix}**`,
30
31
  'this.**',
31
32
  'super.**',
32
33
  '**.current.**',
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-functional-rules.mjs","sourceRoot":"","sources":["../../src/rules/eslint-functional-rules.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint-functional-rules.mjs","sourceRoot":"","sources":["../../src/rules/eslint-functional-rules.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAE5B,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAC9E,6EAA6E;AAC7E,SAAS;AACT,MAAM,qBAAqB,GAAG,CAAC,IAAI,aAAa,EAAE,CAAU,CAAC;AAE7D,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qBAAqB;IACrB,2BAA2B,EAAE;QAC3B,OAAO;QACP;YACE,aAAa,EAAE,IAAI;YACnB,uBAAuB,EAAE,IAAI;YAC7B,uBAAuB,EAAE;gBACvB,GAAG,qBAAqB;gBACxB,MAAM;gBACN,OAAO;gBACP,sBAAsB;aACvB;YACD,0BAA0B,EAAE,KAAK;YACjC,qBAAqB,EAAE;gBACrB,MAAM,aAAa,IAAI;gBACvB,SAAS;gBACT,UAAU;gBACV,eAAe,EAAE,yBAAyB;gBAC1C,gBAAgB,EAAE,oCAAoC;gBACtD,cAAc,EAAE,4BAA4B;gBAC5C,eAAe,EAAE,QAAQ;aAC1B;SACF;KACF;IACD,mBAAmB,EAAE;QACnB,OAAO;QACP;YACE,kBAAkB,EAAE,KAAK;YACzB,gBAAgB,EAAE,KAAK;YACvB,uBAAuB,EAAE,qBAAqB;SAC/C;KACF;IACD,uCAAuC,EAAE,iBAAiB,CAAC,OAAO,CAAC;IACnE,0EAA0E;IAE1E,8BAA8B;IAC9B,uBAAuB,EAAE,KAAK;IAC9B,2BAA2B,EAAE,KAAK;IAClC,iCAAiC;IACjC,aAAa;IACb,MAAM;IACN,6BAA6B;IAC7B,+BAA+B;IAC/B,OAAO;IACP,KAAK;IACL,gCAAgC,EAAE,KAAK;IAEvC,sBAAsB;IACtB,sCAAsC,EAAE,KAAK;IAC7C,0CAA0C;IAC1C,YAAY;IACZ,MAAM;IACN,wBAAwB;IACxB,uBAAuB;IACvB,sBAAsB;IACtB,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,yBAAyB;IACzB,kCAAkC;IAClC,SAAS;IACT,OAAO;IACP,KAAK;IACL,qCAAqC,EAAE,KAAK;IAC5C,+BAA+B,EAAE,KAAK;IACtC,2BAA2B,EAAE,KAAK;IAElC,sBAAsB;IACtB,8BAA8B,EAAE,KAAK;IACrC,gCAAgC,EAAE,KAAK;IACvC,8BAA8B,EAAE,KAAK;IAErC,iBAAiB;IACjB,kCAAkC,EAAE,KAAK;IAEzC,kBAAkB;IAClB,yBAAyB,EAAE,KAAK,EAAE,kBAAkB;IAEpD,mEAAmE;IACnE,iEAAiE;IACjE,yEAAyE;IACzE,0EAA0E;IAC1E,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,8CAA8C;IAC9C,EAAE;IACF,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,0BAA0B,EAAE,KAAK;IAEjC,OAAO;IACP,mCAAmC,EAAE,KAAK;IAC1C,yCAAyC;IACzC,YAAY;IACZ,MAAM;IACN,gCAAgC;IAChC,gDAAgD;IAChD,4BAA4B;IAC5B,kCAAkC;IAClC,eAAe;IACf,2BAA2B;IAC3B,YAAY;IACZ,qBAAqB;IACrB,8EAA8E;IAC9E,oCAAoC;IACpC,aAAa;IACb,YAAY;IACZ,gDAAgD;IAChD,uCAAuC;IACvC,aAAa;IACb,YAAY;IACZ,+BAA+B;IAC/B,qCAAqC;IACrC,aAAa;IACb,WAAW;IACX,6BAA6B;IAC7B,0BAA0B;IAC1B,SAAS;IACT,OAAO;IACP,KAAK;IACL,0CAA0C,EAAE,KAAK;IACjD,gDAAgD;IAChD,aAAa;IACb,MAAM;IACN,qBAAqB;IACrB,eAAe;IACf,UAAU;IACV,8BAA8B;IAC9B,qCAAqC;IACrC,iCAAiC;IACjC,wBAAwB;IACxB,WAAW;IACX,UAAU;IACV,sCAAsC;IACtC,mCAAmC;IACnC,iCAAiC;IACjC,wBAAwB;IACxB,WAAW;IACX,SAAS;IACT,+BAA+B;IAC/B,OAAO;IACP,KAAK;IAEL,iCAAiC,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAE7D,aAAa;IACb,iCAAiC,EAAE,CAAC;CACI,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare const eslintImmerCodingStyleRules: {
2
+ readonly 'immer-coding-style/mut-prefixed-draft': 'error';
2
3
  readonly 'immer-coding-style/prefer-curried-produce': 'error';
3
4
  };
4
5
  //# sourceMappingURL=eslint-immer-coding-style-rules.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-immer-coding-style-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-immer-coding-style-rules.mts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;0DACO,OAAO;CACN,CAAC"}
1
+ {"version":3,"file":"eslint-immer-coding-style-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-immer-coding-style-rules.mts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;sDACG,OAAO;0DACH,OAAO;CACN,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export const eslintImmerCodingStyleRules = {
2
+ 'immer-coding-style/mut-prefixed-draft': 'error',
2
3
  'immer-coding-style/prefer-curried-produce': 'error',
3
4
  };
4
5
  //# sourceMappingURL=eslint-immer-coding-style-rules.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-immer-coding-style-rules.mjs","sourceRoot":"","sources":["../../src/rules/eslint-immer-coding-style-rules.mts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,2CAA2C,EAAE,OAAO;CACN,CAAC"}
1
+ {"version":3,"file":"eslint-immer-coding-style-rules.mjs","sourceRoot":"","sources":["../../src/rules/eslint-immer-coding-style-rules.mts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,uCAAuC,EAAE,OAAO;IAChD,2CAA2C,EAAE,OAAO;CACN,CAAC"}
@@ -1,4 +1,18 @@
1
1
  import type { Linter } from 'eslint';
2
+ /**
3
+ * @description Require the `mut_` prefix on the draft parameter of an immer recipe.
4
+ *
5
+ * ```md
6
+ * | key | value |
7
+ * | :--------- | :--------- |
8
+ * | type | suggestion |
9
+ * | deprecated | false |
10
+ * | fixable | code |
11
+ * ```
12
+ */
13
+ declare namespace MutPrefixedDraft {
14
+ type RuleEntry = Linter.StringSeverity;
15
+ }
2
16
  /**
3
17
  * @description Prefer the curried overload of immer produce for shorter updater definitions.
4
18
  *
@@ -14,6 +28,7 @@ declare namespace PreferCurriedProduce {
14
28
  type RuleEntry = Linter.StringSeverity;
15
29
  }
16
30
  export type EslintImmerCodingStyleRules = Readonly<{
31
+ 'immer-coding-style/mut-prefixed-draft': MutPrefixedDraft.RuleEntry;
17
32
  'immer-coding-style/prefer-curried-produce': PreferCurriedProduce.RuleEntry;
18
33
  }>;
19
34
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-immer-coding-style-rules.d.mts","sourceRoot":"","sources":["../../../src/types/rules/eslint-immer-coding-style-rules.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;;;;;;GAUG;AACH,kBAAU,oBAAoB,CAAC;IAC7B,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,2CAA2C,EAAE,oBAAoB,CAAC,SAAS,CAAC;CAC7E,CAAC,CAAC"}
1
+ {"version":3,"file":"eslint-immer-coding-style-rules.d.mts","sourceRoot":"","sources":["../../../src/types/rules/eslint-immer-coding-style-rules.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;;;;;;GAUG;AACH,kBAAU,gBAAgB,CAAC;IACzB,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,oBAAoB,CAAC;IAC7B,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,uCAAuC,EAAE,gBAAgB,CAAC,SAAS,CAAC;IACpE,2CAA2C,EAAE,oBAAoB,CAAC,SAAS,CAAC;CAC7E,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-config-typed",
3
- "version": "6.0.0",
3
+ "version": "7.1.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -70,7 +70,7 @@
70
70
  "eslint-plugin-sort-destructure-keys": "^3.0.0",
71
71
  "eslint-plugin-testing-library": "^7.16.2",
72
72
  "eslint-plugin-unicorn": "^78.0.0",
73
- "eslint-rule-forge": "^0.3.2",
73
+ "eslint-rule-forge": "^0.4.0",
74
74
  "globals": "^17.13.0",
75
75
  "is-glob": "^4.0.3",
76
76
  "is-immutable-type": "^5.0.4",
@@ -90,10 +90,10 @@
90
90
  "@vitest/ui": "5.0.5",
91
91
  "cspell": "10.4.0",
92
92
  "dedent": "1.7.2",
93
- "eslint-config-typed": "6.0.0",
94
- "eslint-plugin-ts-data-forge": "0.10.4",
95
- "eslint-plugin-ts-fortress": "1.3.9",
96
- "eslint-plugin-ts-type-forge": "0.8.14",
93
+ "eslint-config-typed": "7.1.0",
94
+ "eslint-plugin-ts-data-forge": "0.10.5",
95
+ "eslint-plugin-ts-fortress": "1.3.10",
96
+ "eslint-plugin-ts-type-forge": "0.8.15",
97
97
  "immer": "11.2.7",
98
98
  "jiti": "2.7.0",
99
99
  "json-schema": "0.4.0",
@@ -1 +1,2 @@
1
1
  export * from './all-extensions.mjs';
2
+ export * from './mutable-prefix.mjs';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The name prefix `functional/immutable-data` and `functional/no-let` let be
3
+ * mutated (`eslint-functional-rules.mts`), and the one
4
+ * `immer-coding-style/mut-prefixed-draft` asks of a draft. The codemod
5
+ * counterpart is ts-codemod-lib's `DEFAULT_MUTABLE_PREFIXES`;
6
+ * `eslint-functional-rules.test.mts` fails when the two differ.
7
+ */
8
+ export const mutablePrefix = 'mut_';