miniread 1.17.0 → 1.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 (58) hide show
  1. package/dist/scripts/evaluate/check-expected-evaluations.d.ts +1 -1
  2. package/dist/scripts/evaluate/check-expected-evaluations.js +8 -7
  3. package/dist/scripts/evaluate/create-evaluate-command.js +1 -2
  4. package/dist/scripts/evaluate/parse-evaluate-cli-options.d.ts +2 -2
  5. package/dist/scripts/evaluate/parse-evaluate-cli-options.js +4 -2
  6. package/dist/scripts/evaluate/run-check-mode.d.ts +1 -1
  7. package/dist/scripts/evaluate/run-check-mode.js +9 -4
  8. package/dist/scripts/evaluate/run-evaluate-cli.js +6 -3
  9. package/dist/scripts/evaluate/transform-manifest.d.ts +3 -1
  10. package/dist/scripts/evaluate/transform-manifest.js +43 -36
  11. package/dist/scripts/snapshot/format-code.d.ts +1 -0
  12. package/dist/scripts/snapshot/format-code.js +4 -0
  13. package/dist/scripts/snapshot/print-snapshot-diff.d.ts +6 -0
  14. package/dist/scripts/snapshot/print-snapshot-diff.js +26 -0
  15. package/dist/scripts/snapshot/resolve-testcase-input.d.ts +16 -0
  16. package/dist/scripts/snapshot/resolve-testcase-input.js +30 -0
  17. package/dist/scripts/snapshot/run-snapshot-cli.js +67 -119
  18. package/dist/scripts/snapshot/run-testcase-transform.d.ts +13 -0
  19. package/dist/scripts/snapshot/run-testcase-transform.js +46 -0
  20. package/dist/transforms/_generated/manifest.d.ts +14 -0
  21. package/dist/transforms/_generated/manifest.js +173 -0
  22. package/dist/transforms/_generated/registry.d.ts +3 -0
  23. package/dist/transforms/_generated/registry.js +55 -0
  24. package/dist/transforms/expand-boolean-literals/manifest.json +6 -0
  25. package/dist/transforms/expand-sequence-expressions-v4/manifest.json +7 -0
  26. package/dist/transforms/expand-sequence-expressions-v5/manifest.json +5 -0
  27. package/dist/transforms/expand-special-number-literals/manifest.json +6 -0
  28. package/dist/transforms/expand-undefined-literals/manifest.json +6 -0
  29. package/dist/transforms/preset-stats.json +6 -0
  30. package/dist/transforms/remove-redundant-else/manifest.json +6 -0
  31. package/dist/transforms/rename-catch-parameters/manifest.json +6 -0
  32. package/dist/transforms/rename-char-code-at/manifest.json +6 -0
  33. package/dist/transforms/rename-charcode-variables/manifest.json +7 -0
  34. package/dist/transforms/rename-charcode-variables-v2/manifest.json +6 -0
  35. package/dist/transforms/rename-comparison-flags/manifest.json +6 -0
  36. package/dist/transforms/rename-destructured-aliases/manifest.json +6 -0
  37. package/dist/transforms/rename-event-parameters/manifest.json +5 -0
  38. package/dist/transforms/rename-loop-index-variables/manifest.json +7 -0
  39. package/dist/transforms/rename-loop-index-variables-v2/manifest.json +7 -0
  40. package/dist/transforms/rename-loop-index-variables-v3/manifest.json +6 -0
  41. package/dist/transforms/rename-parameters-to-match-properties/manifest.json +5 -0
  42. package/dist/transforms/rename-promise-executor-parameters/manifest.json +6 -0
  43. package/dist/transforms/rename-replace-child-parameters/manifest.json +6 -0
  44. package/dist/transforms/rename-this-aliases/manifest.json +6 -0
  45. package/dist/transforms/rename-timeout-ids/manifest.json +6 -0
  46. package/dist/transforms/rename-use-reference-guards/manifest.json +7 -0
  47. package/dist/transforms/rename-use-reference-guards-v2/manifest.json +5 -0
  48. package/dist/transforms/simplify-boolean-negations/manifest.json +5 -0
  49. package/dist/transforms/simplify-boolean-negations/simplify-boolean-negations-transform.d.ts +2 -0
  50. package/dist/transforms/simplify-boolean-negations/simplify-boolean-negations-transform.js +90 -0
  51. package/dist/transforms/split-variable-declarations/manifest.json +6 -0
  52. package/dist/transforms/transform-presets.js +2 -17
  53. package/dist/transforms/transform-registry.d.ts +1 -3
  54. package/dist/transforms/transform-registry.js +1 -51
  55. package/package.json +5 -6
  56. package/dist/scripts/evaluate/parse-transform-manifest.d.ts +0 -22
  57. package/dist/scripts/evaluate/parse-transform-manifest.js +0 -29
  58. package/transform-manifest.json +0 -251
@@ -1,51 +1 @@
1
- import { expandBooleanLiteralsTransform } from "./expand-boolean-literals/expand-boolean-literals-transform.js";
2
- import { expandSpecialNumberLiteralsTransform } from "./expand-special-number-literals/expand-special-number-literals-transform.js";
3
- import { expandSequenceExpressionsV4Transform } from "./expand-sequence-expressions-v4/expand-sequence-expressions-v4-transform.js";
4
- import { expandSequenceExpressionsV5Transform } from "./expand-sequence-expressions-v5/expand-sequence-expressions-v5-transform.js";
5
- import { expandUndefinedLiteralsTransform } from "./expand-undefined-literals/expand-undefined-literals-transform.js";
6
- import { removeRedundantElseTransform } from "./remove-redundant-else/remove-redundant-else-transform.js";
7
- import { renameCatchParametersTransform } from "./rename-catch-parameters/rename-catch-parameters-transform.js";
8
- import { renameCharCodeAtTransform } from "./rename-char-code-at/rename-char-code-at-transform.js";
9
- import { renameCharcodeVariablesTransform } from "./rename-charcode-variables/rename-charcode-variables-transform.js";
10
- import { renameCharcodeVariablesV2Transform } from "./rename-charcode-variables-v2/rename-charcode-variables-v2-transform.js";
11
- import { renameComparisonFlagsTransform } from "./rename-comparison-flags/rename-comparison-flags-transform.js";
12
- import { renameDestructuredAliasesTransform } from "./rename-destructured-aliases/rename-destructured-aliases-transform.js";
13
- import { renameEventParametersTransform } from "./rename-event-parameters/rename-event-parameters-transform.js";
14
- import { renameLoopIndexVariablesTransform } from "./rename-loop-index-variables/rename-loop-index-variables-transform.js";
15
- import { renameLoopIndexVariablesV2Transform } from "./rename-loop-index-variables-v2/rename-loop-index-variables-v2-transform.js";
16
- import { renameLoopIndexVariablesV3Transform } from "./rename-loop-index-variables-v3/rename-loop-index-variables-v3-transform.js";
17
- import { renameParametersToMatchPropertiesTransform } from "./rename-parameters-to-match-properties/rename-parameters-to-match-properties-transform.js";
18
- import { renamePromiseExecutorParametersTransform } from "./rename-promise-executor-parameters/rename-promise-executor-parameters-transform.js";
19
- import { renameReplaceChildParametersTransform } from "./rename-replace-child-parameters/rename-replace-child-parameters-transform.js";
20
- import { renameThisAliasesTransform } from "./rename-this-aliases/rename-this-aliases-transform.js";
21
- import { renameTimeoutIdsTransform } from "./rename-timeout-ids/rename-timeout-ids-transform.js";
22
- import { renameUseReferenceGuardsTransform } from "./rename-use-reference-guards/rename-use-reference-guards-transform.js";
23
- import { renameUseReferenceGuardsV2Transform } from "./rename-use-reference-guards-v2/rename-use-reference-guards-v2-transform.js";
24
- import { splitVariableDeclarationsTransform } from "./split-variable-declarations/split-variable-declarations-transform.js";
25
- export const transformRegistry = {
26
- [expandBooleanLiteralsTransform.id]: expandBooleanLiteralsTransform,
27
- [expandSpecialNumberLiteralsTransform.id]: expandSpecialNumberLiteralsTransform,
28
- [expandSequenceExpressionsV4Transform.id]: expandSequenceExpressionsV4Transform,
29
- [expandSequenceExpressionsV5Transform.id]: expandSequenceExpressionsV5Transform,
30
- [expandUndefinedLiteralsTransform.id]: expandUndefinedLiteralsTransform,
31
- [removeRedundantElseTransform.id]: removeRedundantElseTransform,
32
- [renameCatchParametersTransform.id]: renameCatchParametersTransform,
33
- [renameCharCodeAtTransform.id]: renameCharCodeAtTransform,
34
- [renameCharcodeVariablesTransform.id]: renameCharcodeVariablesTransform,
35
- [renameCharcodeVariablesV2Transform.id]: renameCharcodeVariablesV2Transform,
36
- [renameComparisonFlagsTransform.id]: renameComparisonFlagsTransform,
37
- [renameDestructuredAliasesTransform.id]: renameDestructuredAliasesTransform,
38
- [renameEventParametersTransform.id]: renameEventParametersTransform,
39
- [renameLoopIndexVariablesTransform.id]: renameLoopIndexVariablesTransform,
40
- [renameLoopIndexVariablesV2Transform.id]: renameLoopIndexVariablesV2Transform,
41
- [renameLoopIndexVariablesV3Transform.id]: renameLoopIndexVariablesV3Transform,
42
- [renameParametersToMatchPropertiesTransform.id]: renameParametersToMatchPropertiesTransform,
43
- [renamePromiseExecutorParametersTransform.id]: renamePromiseExecutorParametersTransform,
44
- [renameReplaceChildParametersTransform.id]: renameReplaceChildParametersTransform,
45
- [renameThisAliasesTransform.id]: renameThisAliasesTransform,
46
- [renameTimeoutIdsTransform.id]: renameTimeoutIdsTransform,
47
- [renameUseReferenceGuardsTransform.id]: renameUseReferenceGuardsTransform,
48
- [renameUseReferenceGuardsV2Transform.id]: renameUseReferenceGuardsV2Transform,
49
- [splitVariableDeclarationsTransform.id]: splitVariableDeclarationsTransform,
50
- };
51
- export const allTransformIds = Object.keys(transformRegistry);
1
+ export { transformRegistry, allTransformIds } from "./_generated/registry.js";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "miniread",
3
3
  "author": "Łukasz Jerciński",
4
4
  "license": "MIT",
5
- "version": "1.17.0",
5
+ "version": "1.19.0",
6
6
  "description": "Transform minified JavaScript/TypeScript into a more readable form using deterministic AST-based transforms.",
7
7
  "repository": {
8
8
  "type": "git",
@@ -30,16 +30,15 @@
30
30
  "files": [
31
31
  "bin/",
32
32
  "dist/",
33
- "transform-manifest.json",
34
33
  "README.md",
35
34
  "LICENSE"
36
35
  ],
37
36
  "scripts": {
38
37
  "prepare": "git config core.hooksPath .githooks",
39
38
  "prepublishOnly": "pnpm run rebuild",
40
- "build": "tsc -p tsconfig.app.json",
39
+ "build": "node --experimental-strip-types scripts/generate-registry.ts && tsc -p tsconfig.app.json",
41
40
  "check": "pnpm -s run rebuild && node bin/miniread-evaluate -- --check",
42
- "clean": "rm -rf dist *.tsbuildinfo",
41
+ "clean": "rm -rf dist src/transforms/_generated *.tsbuildinfo",
43
42
  "format": "prettier --write .",
44
43
  "format:check": "prettier --check .",
45
44
  "fta": "fta-check",
@@ -50,6 +49,7 @@
50
49
  "miniread-sample": "pnpm -s run rebuild && node bin/miniread-sample",
51
50
  "snapshot": "pnpm -s run rebuild && node bin/miniread-snapshot",
52
51
  "rebuild": "pnpm run clean && pnpm run build",
52
+ "pretest": "node --experimental-strip-types scripts/generate-registry.ts",
53
53
  "test": "vitest run",
54
54
  "test:coverage": "vitest run --coverage",
55
55
  "test:watch": "vitest",
@@ -69,8 +69,7 @@
69
69
  "@commander-js/extra-typings": "^14.0.0",
70
70
  "commander": "^14.0.2",
71
71
  "env-paths": "^3.0.0",
72
- "p-queue": "^9.1.0",
73
- "zod": "^4.3.6"
72
+ "p-queue": "^9.1.0"
74
73
  },
75
74
  "devDependencies": {
76
75
  "@total-typescript/ts-reset": "^0.6.1",
@@ -1,22 +0,0 @@
1
- import type { Transform } from "../../core/types.js";
2
- type TransformManifestEntry = {
3
- id: string;
4
- description: string;
5
- scope: Transform["scope"];
6
- parallelizable: boolean;
7
- diffReductionImpact: number;
8
- recommended: boolean;
9
- evaluatedAt?: string;
10
- notes?: string;
11
- supersededBy?: string;
12
- };
13
- type PresetStatsEntry = {
14
- diffReductionImpact: number;
15
- notes?: string;
16
- };
17
- type TransformManifest = {
18
- transforms: TransformManifestEntry[];
19
- presetStats?: Record<string, PresetStatsEntry>;
20
- };
21
- export declare const parseTransformManifest: (raw: string) => TransformManifest;
22
- export {};
@@ -1,29 +0,0 @@
1
- import * as z from "zod";
2
- const TransformManifestEntrySchema = z
3
- .object({
4
- id: z.string().min(1),
5
- description: z.string(),
6
- scope: z.union([z.literal("file"), z.literal("project")]),
7
- parallelizable: z.boolean(),
8
- diffReductionImpact: z.number(),
9
- recommended: z.boolean(),
10
- evaluatedAt: z.iso.datetime().optional(),
11
- notes: z.string().optional(),
12
- supersededBy: z.string().min(1).optional(),
13
- })
14
- .loose();
15
- const PresetStatsEntrySchema = z
16
- .object({
17
- diffReductionImpact: z.number(),
18
- notes: z.string().optional(),
19
- })
20
- .loose();
21
- const TransformManifestSchema = z
22
- .object({
23
- transforms: z.array(TransformManifestEntrySchema),
24
- presetStats: z.record(z.string(), PresetStatsEntrySchema).optional(),
25
- })
26
- .loose();
27
- export const parseTransformManifest = (raw) => {
28
- return TransformManifestSchema.parse(JSON.parse(raw));
29
- };
@@ -1,251 +0,0 @@
1
- {
2
- "transforms": [
3
- {
4
- "id": "expand-boolean-literals",
5
- "description": "Expands !0 to true and !1 to false",
6
- "scope": "file",
7
- "parallelizable": true,
8
- "diffReductionImpact": 0,
9
- "recommended": true,
10
- "evaluatedAt": "2026-01-21T15:01:23.708Z",
11
- "notes": "Improves readability but does not reduce diffs (boolean literals are already deterministic)"
12
- },
13
- {
14
- "id": "expand-undefined-literals",
15
- "description": "Expands void 0 to undefined (when undefined is not shadowed)",
16
- "scope": "file",
17
- "parallelizable": true,
18
- "diffReductionImpact": 0,
19
- "recommended": true,
20
- "evaluatedAt": "2026-01-21T16:27:42.316Z",
21
- "notes": "Auto-added by evaluation script."
22
- },
23
- {
24
- "id": "rename-loop-index-variables",
25
- "description": "Renames numeric for-loop counters to index/index2/... based on nesting depth",
26
- "scope": "file",
27
- "parallelizable": true,
28
- "diffReductionImpact": 0,
29
- "recommended": false,
30
- "evaluatedAt": "2026-01-21T21:06:19.512Z",
31
- "notes": "Superseded by rename-loop-index-variables-v3.",
32
- "supersededBy": "rename-loop-index-variables-v3"
33
- },
34
- {
35
- "id": "rename-loop-index-variables-v2",
36
- "description": "Renames numeric for-loop counters in `for (var ...)` (single or multi-declarator) and `for (let ...)` (multi-declarator) inits to index/index2/...",
37
- "scope": "file",
38
- "parallelizable": true,
39
- "diffReductionImpact": 0,
40
- "recommended": false,
41
- "evaluatedAt": "2026-01-23T16:34:06.000Z",
42
- "notes": "Superseded by rename-loop-index-variables-v3.",
43
- "supersededBy": "rename-loop-index-variables-v3"
44
- },
45
- {
46
- "id": "rename-loop-index-variables-v3",
47
- "description": "Renames numeric for-loop counters (single or multi-declarator `for (var/let ...)`) to index/index2/... based on nesting depth",
48
- "scope": "file",
49
- "parallelizable": true,
50
- "diffReductionImpact": 0,
51
- "recommended": true,
52
- "evaluatedAt": "2026-01-23T17:09:04.000Z",
53
- "notes": "Unifies rename-loop-index-variables and rename-loop-index-variables-v2 without modifying older transforms. Measured with baseline none: 0.00%."
54
- },
55
- {
56
- "id": "rename-catch-parameters",
57
- "description": "Renames minified catch clause parameters to caughtError/caughtError2/...",
58
- "scope": "file",
59
- "parallelizable": true,
60
- "diffReductionImpact": 0.0007738623280043599,
61
- "recommended": true,
62
- "evaluatedAt": "2026-01-23T07:48:59.087Z",
63
- "notes": "Auto-added by evaluation script."
64
- },
65
- {
66
- "id": "rename-event-parameters",
67
- "description": "Renames minified single-parameter event handlers to event/mouseEvent/keyboardEvent when usage is high-confidence",
68
- "scope": "file",
69
- "parallelizable": true,
70
- "diffReductionImpact": 0,
71
- "recommended": true,
72
- "notes": "Added manually; recommended based on high-confidence heuristics (not yet evaluated)."
73
- },
74
- {
75
- "id": "rename-destructured-aliases",
76
- "description": "Renames destructuring aliases to match property names (e.g., { foo: x } → { foo })",
77
- "scope": "file",
78
- "parallelizable": true,
79
- "diffReductionImpact": 0.000943734546346775,
80
- "recommended": true,
81
- "evaluatedAt": "2026-01-22T12:49:10.952Z",
82
- "notes": "Auto-added by evaluation script. Measured with baseline none: 0.09%."
83
- },
84
- {
85
- "id": "rename-this-aliases",
86
- "description": "Renames `var x = this` aliases to $thisRef (stable when unique) or thisRef/thisRef2/...",
87
- "scope": "file",
88
- "parallelizable": true,
89
- "diffReductionImpact": 0.00003774938185385768,
90
- "recommended": true,
91
- "evaluatedAt": "2026-01-23T17:57:26.908Z",
92
- "notes": "Measured with baseline none: 0.00%. Improves readability by stabilizing `this` aliases used for closures."
93
- },
94
- {
95
- "id": "expand-sequence-expressions-v4",
96
- "description": "Expands comma operator sequences in returns, throws, statements (including control-flow bodies), and variable initializers",
97
- "scope": "file",
98
- "parallelizable": true,
99
- "diffReductionImpact": -0.01730809158000035,
100
- "recommended": false,
101
- "evaluatedAt": "2026-01-23T10:57:45.082Z",
102
- "notes": "Measured with baseline none: -1.73%. Supersedes all prior sequence expression transforms. Superseded by expand-sequence-expressions-v5.",
103
- "supersededBy": "expand-sequence-expressions-v5"
104
- },
105
- {
106
- "id": "expand-sequence-expressions-v5",
107
- "description": "Expands comma operator sequences in returns, throws, statements (including control-flow bodies), variable initializers, and `if` tests",
108
- "scope": "file",
109
- "parallelizable": true,
110
- "diffReductionImpact": -0.020243106019139034,
111
- "recommended": true,
112
- "notes": "Extends expand-sequence-expressions-v4 by also expanding `if ((a, b)) ...` style tests."
113
- },
114
- {
115
- "id": "rename-use-reference-guards",
116
- "description": "Renames boolean useRef(false) guard variables to hasRunRef/hasRunRef2/...",
117
- "scope": "file",
118
- "parallelizable": true,
119
- "diffReductionImpact": 0,
120
- "recommended": false,
121
- "evaluatedAt": "2026-01-22T17:03:19.826Z",
122
- "notes": "Superseded by rename-use-reference-guards-v2.",
123
- "supersededBy": "rename-use-reference-guards-v2"
124
- },
125
- {
126
- "id": "rename-use-reference-guards-v2",
127
- "description": "Renames boolean useRef(false) guard variables (including reset-to-false guards) to hasRunRef/hasRunRef2/...",
128
- "scope": "file",
129
- "parallelizable": true,
130
- "diffReductionImpact": 0,
131
- "recommended": true,
132
- "notes": "Supersedes rename-use-reference-guards and also covers guards that reset to false."
133
- },
134
- {
135
- "id": "rename-timeout-ids",
136
- "description": "Renames setTimeout handle variables to timeoutId/timeoutId2/... when usage is only clearTimeout(...)",
137
- "scope": "file",
138
- "parallelizable": true,
139
- "diffReductionImpact": 0.00003774938185385768,
140
- "recommended": true,
141
- "evaluatedAt": "2026-01-23T10:29:23.279Z",
142
- "notes": "Measured with baseline none: 0.00%. Added to recommended for readability."
143
- },
144
- {
145
- "id": "rename-comparison-flags",
146
- "description": "Rename boolean variables assigned from string comparisons to descriptive flag names",
147
- "scope": "file",
148
- "parallelizable": true,
149
- "diffReductionImpact": 0,
150
- "recommended": true,
151
- "evaluatedAt": "2026-01-23T17:54:14.000Z",
152
- "notes": "Measured with baseline none: 0%. Improves readability by renaming minified variables like 'saA === \"darwin\"' to '$isDarwin'."
153
- },
154
- {
155
- "id": "split-variable-declarations",
156
- "description": "Splits multi-declarator variable declarations into separate statements",
157
- "scope": "file",
158
- "parallelizable": true,
159
- "diffReductionImpact": -0.0027651422207961573,
160
- "recommended": true,
161
- "evaluatedAt": "2026-01-23T05:45:27.981Z",
162
- "notes": "Auto-added by evaluation script. Measured with baseline none: -0.28%. Enabled in the recommended preset for readability and to normalize variable declarations even when line diffs increase."
163
- },
164
- {
165
- "id": "rename-promise-executor-parameters",
166
- "description": "Renames promise-like executor parameters in `new X(executor)` to resolve/reject when usage is high-confidence",
167
- "scope": "file",
168
- "parallelizable": true,
169
- "diffReductionImpact": 0,
170
- "recommended": true,
171
- "evaluatedAt": "2026-01-22T21:39:53.578Z",
172
- "notes": "Auto-added by evaluation script."
173
- },
174
- {
175
- "id": "rename-replace-child-parameters",
176
- "description": "Renames replaceChild forwarding wrapper parameters to $newChild and $oldChild",
177
- "scope": "file",
178
- "parallelizable": true,
179
- "diffReductionImpact": 0,
180
- "recommended": false,
181
- "evaluatedAt": "2026-01-23T17:28:09.184Z",
182
- "notes": "Measured with baseline none: 0.00%."
183
- },
184
- {
185
- "id": "expand-special-number-literals",
186
- "description": "Expands 1/0 to Infinity, -1/0 (and 1/-0) to -Infinity, and 0/0 to NaN (when not shadowed)",
187
- "scope": "file",
188
- "parallelizable": true,
189
- "diffReductionImpact": 0,
190
- "recommended": true,
191
- "evaluatedAt": "2026-01-23T08:17:45.579Z",
192
- "notes": "Auto-added by evaluation script."
193
- },
194
- {
195
- "id": "remove-redundant-else",
196
- "description": "Removes redundant else blocks after return/throw/break/continue",
197
- "scope": "file",
198
- "parallelizable": true,
199
- "diffReductionImpact": 0,
200
- "recommended": true,
201
- "evaluatedAt": "2026-01-23T18:15:00.000Z",
202
- "notes": "Added manually; improves readability by reducing nesting."
203
- },
204
- {
205
- "id": "rename-char-code-at",
206
- "description": "Renames variables used in charCodeAt calls (str.charCodeAt(index))",
207
- "scope": "file",
208
- "parallelizable": true,
209
- "diffReductionImpact": 0,
210
- "recommended": true,
211
- "evaluatedAt": "2026-01-23T18:00:00.000Z",
212
- "notes": "Measured with baseline none: 0.00%. Renames variables used in charCodeAt to improve readability."
213
- },
214
- {
215
- "id": "rename-parameters-to-match-properties",
216
- "description": "Renames parameters that are assigned to object properties of the same name",
217
- "scope": "file",
218
- "parallelizable": true,
219
- "diffReductionImpact": 0.00003774938185385768,
220
- "recommended": true,
221
- "notes": "Added manually based on high-confidence heuristic."
222
- },
223
- {
224
- "id": "rename-charcode-variables",
225
- "description": "Renames variables assigned from .charCodeAt() to $charCode or charCode/charCode2/...",
226
- "scope": "file",
227
- "parallelizable": true,
228
- "diffReductionImpact": 0,
229
- "recommended": false,
230
- "evaluatedAt": "2026-01-23T17:59:00.000Z",
231
- "notes": "Superseded by rename-charcode-variables-v2.",
232
- "supersededBy": "rename-charcode-variables-v2"
233
- },
234
- {
235
- "id": "rename-charcode-variables-v2",
236
- "description": "Renames variables assigned from .charCodeAt(arg) to $charCodeAt{Arg} based on the argument",
237
- "scope": "file",
238
- "parallelizable": true,
239
- "diffReductionImpact": 0,
240
- "recommended": true,
241
- "evaluatedAt": "2026-01-23T18:10:00.000Z",
242
- "notes": "Derives names from charCodeAt argument for better stability (e.g., $charCodeAtIndex, $charCodeAtIndexPlus1)."
243
- }
244
- ],
245
- "presetStats": {
246
- "recommended": {
247
- "diffReductionImpact": 0.003690002076215948,
248
- "notes": "Measured with baseline none: 0.37%."
249
- }
250
- }
251
- }