miniread 1.99.0 → 1.100.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/dist/transforms/_generated/manifest.js +10 -4
- package/dist/transforms/_generated/registry.js +2 -0
- package/dist/transforms/preset-stats.json +2 -2
- package/dist/transforms/recommended-transform-order.d.ts +1 -1
- package/dist/transforms/recommended-transform-order.js +2 -1
- package/dist/transforms/rename-comparison-flags/manifest.json +3 -2
- package/dist/transforms/rename-comparison-flags-v2/manifest.json +13 -0
- package/dist/transforms/rename-comparison-flags-v2/rename-comparison-flags-v2-transform.d.ts +2 -0
- package/dist/transforms/rename-comparison-flags-v2/rename-comparison-flags-v2-transform.js +109 -0
- package/dist/transforms/rename-platform-win32-flags/rename-platform-win32-flags-transform.js +0 -6
- package/dist/transforms/rename-promise-catch-parameters/manifest.json +2 -2
- package/dist/transforms/rename-promise-catch-parameters/rename-promise-catch-parameters-transform.js +20 -28
- package/package.json +1 -1
|
@@ -81,10 +81,16 @@ const manifestData = {
|
|
|
81
81
|
evaluations: { "claude-code-2.1.10:claude-code-2.1.11": { "diffSizePercent": 100, "evaluatedAt": "2026-01-25T23:10:24.232Z", "changedLines": 68, "durationSeconds": 52.926377209, "stableNames": 1358 } },
|
|
82
82
|
},
|
|
83
83
|
"rename-comparison-flags": {
|
|
84
|
-
recommended:
|
|
85
|
-
notes: "Measured with baseline none: 0%.
|
|
84
|
+
recommended: false,
|
|
85
|
+
notes: "Measured with baseline none: 0%. Superseded by rename-comparison-flags-v2 in the recommended preset.",
|
|
86
|
+
supersededBy: "rename-comparison-flags-v2",
|
|
86
87
|
evaluations: { "claude-code-2.1.10:claude-code-2.1.11": { "diffSizePercent": 100, "evaluatedAt": "2026-01-25T23:11:30.260Z", "changedLines": 190, "durationSeconds": 62.912611250000005, "stableNames": 1381 } },
|
|
87
88
|
},
|
|
89
|
+
"rename-comparison-flags-v2": {
|
|
90
|
+
recommended: true,
|
|
91
|
+
notes: "Supersedes rename-comparison-flags in the recommended preset and extends comparison flag renaming to member expressions like 'client.config.type === \"sse\"'.",
|
|
92
|
+
evaluations: { "claude-code-2.1.10:claude-code-2.1.11": { "diffSizePercent": 99.98869098105739, "evaluatedAt": "2026-02-06T13:05:37.982Z", "changedLines": 606, "durationSeconds": 214.411692843, "stableNames": 1418 } },
|
|
93
|
+
},
|
|
88
94
|
"rename-date-now-start-times": {
|
|
89
95
|
recommended: true,
|
|
90
96
|
notes: "Measured with baseline none: 0.00%. Added to recommended for readability.",
|
|
@@ -225,7 +231,7 @@ const manifestData = {
|
|
|
225
231
|
},
|
|
226
232
|
"rename-promise-catch-parameters": {
|
|
227
233
|
recommended: true,
|
|
228
|
-
evaluations: { "claude-code-2.1.10:claude-code-2.1.11": { "diffSizePercent": 99.9943454905287, "evaluatedAt": "2026-02-
|
|
234
|
+
evaluations: { "claude-code-2.1.10:claude-code-2.1.11": { "diffSizePercent": 99.9943454905287, "evaluatedAt": "2026-02-07T12:43:19.520Z", "changedLines": 462, "durationSeconds": 209.10329718800003, "stableNames": 1358 } },
|
|
229
235
|
},
|
|
230
236
|
"rename-promise-executor-parameters-v2": {
|
|
231
237
|
recommended: true,
|
|
@@ -434,8 +440,8 @@ export const recommendedTransformIds = [
|
|
|
434
440
|
"rename-char-code-at",
|
|
435
441
|
"rename-charcode-variables-v2",
|
|
436
442
|
"rename-client-aliases",
|
|
437
|
-
"rename-comparison-flags",
|
|
438
443
|
"rename-platform-win32-flags",
|
|
444
|
+
"rename-comparison-flags-v2",
|
|
439
445
|
"rename-date-now-start-times",
|
|
440
446
|
"rename-default-options-parameters-v3",
|
|
441
447
|
"rename-deferred-resolve-parameters",
|
|
@@ -17,6 +17,7 @@ import { renameCharCodeAtTransform } from "../rename-char-code-at/rename-char-co
|
|
|
17
17
|
import { renameCharcodeVariablesV2Transform } from "../rename-charcode-variables-v2/rename-charcode-variables-v2-transform.js";
|
|
18
18
|
import { renameClientAliasesTransform } from "../rename-client-aliases/rename-client-aliases-transform.js";
|
|
19
19
|
import { renameComparisonFlagsTransform } from "../rename-comparison-flags/rename-comparison-flags-transform.js";
|
|
20
|
+
import { renameComparisonFlagsV2Transform } from "../rename-comparison-flags-v2/rename-comparison-flags-v2-transform.js";
|
|
20
21
|
import { renameDateNowStartTimesTransform } from "../rename-date-now-start-times/rename-date-now-start-times-transform.js";
|
|
21
22
|
import { renameDefaultOptionsParametersV3Transform } from "../rename-default-options-parameters-v3/rename-default-options-parameters-v3-transform.js";
|
|
22
23
|
import { renameDeferredResolveParametersTransform } from "../rename-deferred-resolve-parameters/rename-deferred-resolve-parameters-transform.js";
|
|
@@ -102,6 +103,7 @@ export const transformRegistry = {
|
|
|
102
103
|
[renameCharcodeVariablesV2Transform.id]: renameCharcodeVariablesV2Transform,
|
|
103
104
|
[renameClientAliasesTransform.id]: renameClientAliasesTransform,
|
|
104
105
|
[renameComparisonFlagsTransform.id]: renameComparisonFlagsTransform,
|
|
106
|
+
[renameComparisonFlagsV2Transform.id]: renameComparisonFlagsV2Transform,
|
|
105
107
|
[renameDateNowStartTimesTransform.id]: renameDateNowStartTimesTransform,
|
|
106
108
|
[renameDefaultOptionsParametersV3Transform.id]: renameDefaultOptionsParametersV3Transform,
|
|
107
109
|
[renameDeferredResolveParametersTransform.id]: renameDeferredResolveParametersTransform,
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This lets us tune transform interactions intentionally instead of relying on
|
|
5
5
|
* alphabetical ID sorting.
|
|
6
6
|
*/
|
|
7
|
-
export declare const recommendedTransformOrder: readonly ["stabilize-top-level-bindings", "stabilize-nested-bindings", "stabilize-deferred-top-level-bindings", "stabilize-deferred-stable-rhs", "expand-boolean-literals", "expand-sequence-expressions-v5", "expand-special-number-literals", "expand-typeof-undefined-comparisons", "expand-undefined-literals", "remove-redundant-else", "rename-arguments-length-flags", "rename-asap-wrappers", "rename-awaiter-parameters", "rename-awaiter-helper-functions", "rename-buffer-variables", "rename-to-buffer-results", "rename-catch-parameters", "rename-promise-catch-parameters", "rename-char-code-at", "rename-charcode-variables-v2", "rename-client-aliases", "rename-
|
|
7
|
+
export declare const recommendedTransformOrder: readonly ["stabilize-top-level-bindings", "stabilize-nested-bindings", "stabilize-deferred-top-level-bindings", "stabilize-deferred-stable-rhs", "expand-boolean-literals", "expand-sequence-expressions-v5", "expand-special-number-literals", "expand-typeof-undefined-comparisons", "expand-undefined-literals", "remove-redundant-else", "rename-arguments-length-flags", "rename-asap-wrappers", "rename-awaiter-parameters", "rename-awaiter-helper-functions", "rename-buffer-variables", "rename-to-buffer-results", "rename-catch-parameters", "rename-promise-catch-parameters", "rename-char-code-at", "rename-charcode-variables-v2", "rename-client-aliases", "rename-platform-win32-flags", "rename-comparison-flags-v2", "rename-date-now-start-times", "rename-default-options-parameters-v3", "rename-deferred-resolve-parameters", "rename-deferred-resolve-parameters-v2", "rename-destructured-aliases", "rename-rest-parameters", "rename-rest-pop-callbacks", "rename-execfile-arguments", "rename-file-reader-variables", "rename-error-first-callback-parameters", "rename-error-first-callback-parameters-v2", "rename-error-variables", "rename-event-parameters", "rename-add-event-listener-parameters", "rename-http-server-parameters", "rename-fs-sync-variables", "rename-http-method-parameters", "rename-interval-ids", "rename-indexeddb-request-variables", "rename-loop-index-variables-v3", "rename-queue-traversal-variables", "rename-loop-length-variables", "rename-document-fragment-variables", "rename-object-keys-variables", "rename-object-keys-iterator-variables", "rename-map-by-id-variables", "rename-object-property-value-variables", "rename-object-keys-reducer-parameters", "rename-object-entries-parameters", "rename-parameters-to-match-properties-v2", "rename-invalid-parameter-arguments", "rename-promise-executor-parameters-v2", "rename-range-parameters", "rename-read-file-lines", "rename-regex-builders", "rename-regex-source-parameters", "rename-search-parameters-variables", "rename-setstate-updater-parameters", "rename-file-extension-variables", "rename-string-split-variables-v2", "rename-this-aliases", "rename-timeout-promises", "rename-timeout-ids", "rename-typeof-variables", "rename-typescript-helper-aliases", "rename-uint8array-concat-variables", "rename-url-parameters", "rename-url-variables", "rename-use-reference-guards-v2", "rename-use-reference-sets", "rename-worker-handles", "rename-zod-check-parameters", "simplify-boolean-negations", "simplify-string-trim", "split-variable-declarations", "use-optional-chaining", "use-object-property-shorthand", "use-object-shorthand", "replace-dynamic-require-eval"];
|
|
@@ -35,8 +35,9 @@ export const recommendedTransformOrder = [
|
|
|
35
35
|
"rename-char-code-at",
|
|
36
36
|
"rename-charcode-variables-v2",
|
|
37
37
|
"rename-client-aliases",
|
|
38
|
-
"rename-comparison-flags",
|
|
39
38
|
"rename-platform-win32-flags",
|
|
39
|
+
// Run the specialized win32 transform before generic comparison-flag naming.
|
|
40
|
+
"rename-comparison-flags-v2",
|
|
40
41
|
"rename-date-now-start-times",
|
|
41
42
|
"rename-default-options-parameters-v3",
|
|
42
43
|
"rename-deferred-resolve-parameters",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"recommended":
|
|
2
|
+
"recommended": false,
|
|
3
|
+
"supersededBy": "rename-comparison-flags-v2",
|
|
3
4
|
"evaluations": {
|
|
4
5
|
"claude-code-2.1.10:claude-code-2.1.11": {
|
|
5
6
|
"diffSizePercent": 100,
|
|
@@ -9,5 +10,5 @@
|
|
|
9
10
|
"stableNames": 1381
|
|
10
11
|
}
|
|
11
12
|
},
|
|
12
|
-
"notes": "Measured with baseline none: 0%.
|
|
13
|
+
"notes": "Measured with baseline none: 0%. Superseded by rename-comparison-flags-v2 in the recommended preset."
|
|
13
14
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"recommended": true,
|
|
3
|
+
"evaluations": {
|
|
4
|
+
"claude-code-2.1.10:claude-code-2.1.11": {
|
|
5
|
+
"diffSizePercent": 99.98869098105739,
|
|
6
|
+
"evaluatedAt": "2026-02-06T13:05:37.982Z",
|
|
7
|
+
"changedLines": 606,
|
|
8
|
+
"durationSeconds": 214.411692843,
|
|
9
|
+
"stableNames": 1418
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"notes": "Supersedes rename-comparison-flags in the recommended preset and extends comparison flag renaming to member expressions like 'client.config.type === \"sse\"'."
|
|
13
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { RenameGroup, isStableRenamed } from "../../core/stable-naming.js";
|
|
3
|
+
import { getFilesToProcess } from "../../core/types.js";
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
6
|
+
const traverse = require("@babel/traverse").default;
|
|
7
|
+
export const renameComparisonFlagsV2Transform = {
|
|
8
|
+
id: "rename-comparison-flags-v2",
|
|
9
|
+
description: "Rename boolean variables assigned from string comparisons (identifiers and member expressions)",
|
|
10
|
+
scope: "file",
|
|
11
|
+
parallelizable: true,
|
|
12
|
+
transform(context) {
|
|
13
|
+
let nodesVisited = 0;
|
|
14
|
+
let transformationsApplied = 0;
|
|
15
|
+
for (const fileInfo of getFilesToProcess(context)) {
|
|
16
|
+
const renameGroup = new RenameGroup();
|
|
17
|
+
traverse(fileInfo.ast, {
|
|
18
|
+
VariableDeclarator(path) {
|
|
19
|
+
nodesVisited++;
|
|
20
|
+
const { id, init } = path.node;
|
|
21
|
+
if (!init || id.type !== "Identifier") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (init.type !== "BinaryExpression" ||
|
|
25
|
+
(init.operator !== "===" &&
|
|
26
|
+
init.operator !== "!==" &&
|
|
27
|
+
init.operator !== "==" &&
|
|
28
|
+
init.operator !== "!=")) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
let stringValue;
|
|
32
|
+
let otherSide;
|
|
33
|
+
if (init.left.type === "StringLiteral") {
|
|
34
|
+
stringValue = init.left.value;
|
|
35
|
+
otherSide = init.right;
|
|
36
|
+
}
|
|
37
|
+
else if (init.right.type === "StringLiteral") {
|
|
38
|
+
stringValue = init.right.value;
|
|
39
|
+
otherSide = init.left;
|
|
40
|
+
}
|
|
41
|
+
if (!otherSide || stringValue === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const isSupportedComparisonSide =
|
|
45
|
+
// Also excludes constant string-vs-string comparisons (e.g. "a" === "b"),
|
|
46
|
+
// which are not variable flag checks.
|
|
47
|
+
otherSide.type === "Identifier" ||
|
|
48
|
+
((otherSide.type === "MemberExpression" ||
|
|
49
|
+
otherSide.type === "OptionalMemberExpression") &&
|
|
50
|
+
// Keep this strict: bracket access (including ["type"]) is excluded.
|
|
51
|
+
// We only rename dot-property comparisons with obvious field semantics.
|
|
52
|
+
!otherSide.computed);
|
|
53
|
+
if (!isSupportedComparisonSide) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const currentName = id.name;
|
|
57
|
+
const binding = path.scope.getBinding(currentName);
|
|
58
|
+
// Prefer high-certainty names over wider coverage: non-constant flags
|
|
59
|
+
// can later hold unrelated values, making semantic renames misleading.
|
|
60
|
+
if (!binding?.constant) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (isStableRenamed(currentName)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const operator = init.operator;
|
|
67
|
+
// Keep name derivation aligned with rename-comparison-flags so v1/v2
|
|
68
|
+
// produce identical flag names for equivalent comparisons.
|
|
69
|
+
const parts = stringValue
|
|
70
|
+
.split(/[^\dA-Za-z]+/u)
|
|
71
|
+
.filter(Boolean);
|
|
72
|
+
const capitalizedValue = parts.length === 0
|
|
73
|
+
? stringValue === ""
|
|
74
|
+
? "EmptyString"
|
|
75
|
+
: "Flag"
|
|
76
|
+
: parts
|
|
77
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
78
|
+
.join("");
|
|
79
|
+
let baseName;
|
|
80
|
+
switch (operator) {
|
|
81
|
+
case "===": {
|
|
82
|
+
baseName = `is${capitalizedValue}`;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case "!==": {
|
|
86
|
+
baseName = `isNot${capitalizedValue}`;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case "==": {
|
|
90
|
+
baseName = `equals${capitalizedValue}`;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case "!=": {
|
|
94
|
+
baseName = `notEquals${capitalizedValue}`;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
renameGroup.add({
|
|
99
|
+
scope: binding.scope,
|
|
100
|
+
currentName,
|
|
101
|
+
baseName,
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
transformationsApplied += renameGroup.apply();
|
|
106
|
+
}
|
|
107
|
+
return Promise.resolve({ nodesVisited, transformationsApplied });
|
|
108
|
+
},
|
|
109
|
+
};
|
package/dist/transforms/rename-platform-win32-flags/rename-platform-win32-flags-transform.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
-
import { collectExportedNames } from "../../core/collect-exported-names.js";
|
|
3
2
|
import { isHashBasedStableName, RenameGroup, } from "../../core/stable-naming.js";
|
|
4
3
|
import { getFilesToProcess, } from "../../core/types.js";
|
|
5
4
|
import { applyHashStableWin32Renames, } from "./apply-hash-stable-win32-renames.js";
|
|
@@ -56,7 +55,6 @@ export const renamePlatformWin32FlagsTransform = {
|
|
|
56
55
|
for (const fileInfo of getFilesToProcess(context)) {
|
|
57
56
|
const group = new RenameGroup();
|
|
58
57
|
const hashEntries = [];
|
|
59
|
-
const exportedNames = collectExportedNames(fileInfo.ast.program);
|
|
60
58
|
traverse(fileInfo.ast, {
|
|
61
59
|
VariableDeclarator(path) {
|
|
62
60
|
nodesVisited++;
|
|
@@ -84,10 +82,6 @@ export const renamePlatformWin32FlagsTransform = {
|
|
|
84
82
|
// semantically named pattern where dead-code renames add little value.
|
|
85
83
|
if (binding.referencePaths.length === 0)
|
|
86
84
|
return;
|
|
87
|
-
if (binding.scope.block.type === "Program" &&
|
|
88
|
-
exportedNames.has(id.name)) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
85
|
if (isHashBasedStableName(id.name)) {
|
|
92
86
|
hashEntries.push({
|
|
93
87
|
baseName,
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"evaluations": {
|
|
4
4
|
"claude-code-2.1.10:claude-code-2.1.11": {
|
|
5
5
|
"diffSizePercent": 99.9943454905287,
|
|
6
|
-
"evaluatedAt": "2026-02-
|
|
6
|
+
"evaluatedAt": "2026-02-07T12:43:19.520Z",
|
|
7
7
|
"changedLines": 462,
|
|
8
|
-
"durationSeconds":
|
|
8
|
+
"durationSeconds": 209.10329718800003,
|
|
9
9
|
"stableNames": 1358
|
|
10
10
|
}
|
|
11
11
|
}
|
package/dist/transforms/rename-promise-catch-parameters/rename-promise-catch-parameters-transform.js
CHANGED
|
@@ -17,36 +17,28 @@ const isCatchMemberExpression = (callee) => {
|
|
|
17
17
|
return false;
|
|
18
18
|
return property.name === "catch";
|
|
19
19
|
};
|
|
20
|
-
const
|
|
21
|
-
|
|
20
|
+
const getCatchCallbackInfo = (path) => {
|
|
21
|
+
const { node } = path;
|
|
22
|
+
if (!isCatchMemberExpression(node.callee))
|
|
22
23
|
return;
|
|
23
|
-
if (
|
|
24
|
+
if (node.arguments.length === 0)
|
|
24
25
|
return;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return;
|
|
29
|
-
if (!callback.isFunctionExpression() &&
|
|
30
|
-
!callback.isArrowFunctionExpression()) {
|
|
26
|
+
const argument = node.arguments[0];
|
|
27
|
+
if (argument?.type !== "FunctionExpression" &&
|
|
28
|
+
argument?.type !== "ArrowFunctionExpression") {
|
|
31
29
|
return;
|
|
32
30
|
}
|
|
33
|
-
if (
|
|
31
|
+
if (argument.params.length !== 1)
|
|
34
32
|
return;
|
|
35
|
-
const parameter =
|
|
33
|
+
const parameter = argument.params[0];
|
|
36
34
|
if (parameter?.type !== "Identifier")
|
|
37
35
|
return;
|
|
38
|
-
return
|
|
36
|
+
return {
|
|
37
|
+
callbackPath: path.get("arguments.0"),
|
|
38
|
+
parameter,
|
|
39
|
+
};
|
|
39
40
|
};
|
|
40
|
-
const
|
|
41
|
-
const parameter = callbackPath.node.params[0];
|
|
42
|
-
if (parameter?.type !== "Identifier")
|
|
43
|
-
return;
|
|
44
|
-
return parameter;
|
|
45
|
-
};
|
|
46
|
-
const addCatchRename = (group, callbackPath) => {
|
|
47
|
-
const parameter = getCatchParameter(callbackPath);
|
|
48
|
-
if (!parameter)
|
|
49
|
-
return;
|
|
41
|
+
const addCatchRename = (group, callbackPath, parameter) => {
|
|
50
42
|
const currentName = parameter.name;
|
|
51
43
|
if (isStableRenamed(currentName))
|
|
52
44
|
return;
|
|
@@ -69,17 +61,17 @@ export const renamePromiseCatchParametersTransform = {
|
|
|
69
61
|
traverse(fileInfo.ast, {
|
|
70
62
|
CallExpression(path) {
|
|
71
63
|
nodesVisited++;
|
|
72
|
-
const
|
|
73
|
-
if (!
|
|
64
|
+
const callbackInfo = getCatchCallbackInfo(path);
|
|
65
|
+
if (!callbackInfo)
|
|
74
66
|
return;
|
|
75
|
-
addCatchRename(group, callbackPath);
|
|
67
|
+
addCatchRename(group, callbackInfo.callbackPath, callbackInfo.parameter);
|
|
76
68
|
},
|
|
77
69
|
OptionalCallExpression(path) {
|
|
78
70
|
nodesVisited++;
|
|
79
|
-
const
|
|
80
|
-
if (!
|
|
71
|
+
const callbackInfo = getCatchCallbackInfo(path);
|
|
72
|
+
if (!callbackInfo)
|
|
81
73
|
return;
|
|
82
|
-
addCatchRename(group, callbackPath);
|
|
74
|
+
addCatchRename(group, callbackInfo.callbackPath, callbackInfo.parameter);
|
|
83
75
|
},
|
|
84
76
|
});
|
|
85
77
|
transformationsApplied += group.apply();
|
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.
|
|
5
|
+
"version": "1.100.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",
|