miniread 1.6.0 → 1.7.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/core/normalize-code.d.ts +17 -0
- package/dist/core/normalize-code.js +35 -0
- package/dist/core/stable-naming.d.ts +61 -0
- package/dist/core/stable-naming.js +121 -0
- package/dist/scripts/evaluate/check-expected-evaluations.js +2 -0
- package/dist/scripts/evaluate/check-recommended-snapshot.d.ts +11 -0
- package/dist/scripts/evaluate/check-recommended-snapshot.js +53 -0
- package/dist/scripts/evaluate/check-snapshots.d.ts +1 -0
- package/dist/scripts/evaluate/check-snapshots.js +21 -2
- package/dist/scripts/evaluate/transform-content.d.ts +5 -0
- package/dist/scripts/evaluate/transform-content.js +23 -13
- package/dist/transforms/rename-catch-parameters/rename-catch-parameters-transform.js +15 -38
- package/dist/transforms/rename-destructured-aliases/rename-destructured-aliases-transform.js +13 -12
- package/dist/transforms/rename-event-parameters/process-event-handler-function.d.ts +2 -3
- package/dist/transforms/rename-event-parameters/process-event-handler-function.js +13 -9
- package/dist/transforms/rename-event-parameters/rename-event-parameters-transform.d.ts +1 -1
- package/dist/transforms/rename-event-parameters/rename-event-parameters-transform.js +10 -7
- package/dist/transforms/rename-loop-index-variables/rename-loop-index-variables-transform.js +19 -13
- package/dist/transforms/rename-promise-executor-parameters/rename-promise-executor-parameters-transform.js +12 -5
- package/dist/transforms/rename-timeout-ids/rename-timeout-ids-transform.d.ts +1 -1
- package/dist/transforms/rename-timeout-ids/rename-timeout-ids-transform.js +10 -11
- package/dist/transforms/rename-use-reference-guards/rename-use-reference-guards-transform.js +10 -11
- package/dist/transforms/rename-use-reference-guards-v2/rename-use-reference-guards-v2-transform.d.ts +1 -1
- package/dist/transforms/rename-use-reference-guards-v2/rename-use-reference-guards-v2-transform.js +14 -12
- package/dist/transforms/transform-registry.js +0 -10
- package/package.json +1 -1
- package/transform-manifest.json +3 -53
- package/dist/transforms/expand-return-sequence/expand-return-sequence-transform.d.ts +0 -2
- package/dist/transforms/expand-return-sequence/expand-return-sequence-transform.js +0 -91
- package/dist/transforms/expand-sequence-expressions/expand-expression-statement-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions/expand-expression-statement-sequence.js +0 -57
- package/dist/transforms/expand-sequence-expressions/expand-sequence-expressions-transform.d.ts +0 -2
- package/dist/transforms/expand-sequence-expressions/expand-sequence-expressions-transform.js +0 -34
- package/dist/transforms/expand-sequence-expressions/expand-variable-declaration-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions/expand-variable-declaration-sequence.js +0 -93
- package/dist/transforms/expand-sequence-expressions-v2/expand-expression-statement-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v2/expand-expression-statement-sequence.js +0 -55
- package/dist/transforms/expand-sequence-expressions-v2/expand-return-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v2/expand-return-sequence.js +0 -86
- package/dist/transforms/expand-sequence-expressions-v2/expand-sequence-expressions-v2-transform.d.ts +0 -2
- package/dist/transforms/expand-sequence-expressions-v2/expand-sequence-expressions-v2-transform.js +0 -41
- package/dist/transforms/expand-sequence-expressions-v2/expand-variable-declaration-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v2/expand-variable-declaration-sequence.js +0 -93
- package/dist/transforms/expand-sequence-expressions-v3/expand-expression-statement-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v3/expand-expression-statement-sequence.js +0 -64
- package/dist/transforms/expand-sequence-expressions-v3/expand-return-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v3/expand-return-sequence.js +0 -91
- package/dist/transforms/expand-sequence-expressions-v3/expand-sequence-expressions-v3-transform.d.ts +0 -2
- package/dist/transforms/expand-sequence-expressions-v3/expand-sequence-expressions-v3-transform.js +0 -48
- package/dist/transforms/expand-sequence-expressions-v3/expand-throw-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v3/expand-throw-sequence.js +0 -101
- package/dist/transforms/expand-sequence-expressions-v3/expand-variable-declaration-sequence.d.ts +0 -3
- package/dist/transforms/expand-sequence-expressions-v3/expand-variable-declaration-sequence.js +0 -99
- package/dist/transforms/expand-throw-sequence/expand-throw-sequence-transform.d.ts +0 -2
- package/dist/transforms/expand-throw-sequence/expand-throw-sequence-transform.js +0 -117
- package/dist/transforms/rename-binding/get-target-name.d.ts +0 -4
- package/dist/transforms/rename-binding/get-target-name.js +0 -25
- package/dist/transforms/rename-binding/is-valid-binding-identifier.d.ts +0 -1
- package/dist/transforms/rename-binding/is-valid-binding-identifier.js +0 -10
- package/dist/transforms/rename-use-reference-guards/get-target-name.d.ts +0 -2
- package/dist/transforms/rename-use-reference-guards/get-target-name.js +0 -23
- package/dist/transforms/rename-use-reference-guards/is-valid-binding-identifier.d.ts +0 -1
- package/dist/transforms/rename-use-reference-guards/is-valid-binding-identifier.js +0 -10
- package/dist/transforms/rename-use-reference-guards-v2/get-target-name.d.ts +0 -2
- package/dist/transforms/rename-use-reference-guards-v2/get-target-name.js +0 -23
- package/dist/transforms/rename-use-reference-guards-v2/is-valid-binding-identifier.d.ts +0 -1
- package/dist/transforms/rename-use-reference-guards-v2/is-valid-binding-identifier.js +0 -10
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
const require = createRequire(import.meta.url);
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
4
|
-
const t = require("@babel/types");
|
|
5
|
-
const canReplaceWithMultiple = (path) => {
|
|
6
|
-
return (path.parentPath.isProgram() ||
|
|
7
|
-
path.parentPath.isBlockStatement() ||
|
|
8
|
-
path.parentPath.isStaticBlock() ||
|
|
9
|
-
path.parentPath.isSwitchCase());
|
|
10
|
-
};
|
|
11
|
-
const canWrapInBlock = (path) => {
|
|
12
|
-
const parentPath = path.parentPath;
|
|
13
|
-
if (parentPath.isIfStatement() &&
|
|
14
|
-
(path.key === "consequent" || path.key === "alternate")) {
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
if ((parentPath.isForStatement() ||
|
|
18
|
-
parentPath.isForInStatement() ||
|
|
19
|
-
parentPath.isForOfStatement() ||
|
|
20
|
-
parentPath.isWhileStatement() ||
|
|
21
|
-
parentPath.isDoWhileStatement() ||
|
|
22
|
-
parentPath.isWithStatement() ||
|
|
23
|
-
parentPath.isLabeledStatement()) &&
|
|
24
|
-
path.key === "body") {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
return false;
|
|
28
|
-
};
|
|
29
|
-
const replaceThrowWithStatements = (path, statements) => {
|
|
30
|
-
if (canReplaceWithMultiple(path)) {
|
|
31
|
-
path.replaceWithMultiple(statements);
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
if (canWrapInBlock(path)) {
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
36
|
-
path.replaceWith(t.blockStatement(statements));
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
return false;
|
|
40
|
-
};
|
|
41
|
-
const isDirectiveProloguePosition = (path) => {
|
|
42
|
-
const parentPath = path.parentPath;
|
|
43
|
-
if (parentPath.isBlockStatement()) {
|
|
44
|
-
const grandParent = parentPath.parentPath;
|
|
45
|
-
if (parentPath.key !== "body")
|
|
46
|
-
return false;
|
|
47
|
-
if (!grandParent.isFunction())
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
else if (!parentPath.isProgram()) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
const siblings = parentPath.get("body");
|
|
54
|
-
if (!Array.isArray(siblings))
|
|
55
|
-
return false;
|
|
56
|
-
const index = siblings.findIndex((sibling) => sibling.node === path.node);
|
|
57
|
-
if (index === -1)
|
|
58
|
-
return false;
|
|
59
|
-
for (let bodyIndex = 0; bodyIndex < index; bodyIndex++) {
|
|
60
|
-
const sibling = siblings[bodyIndex];
|
|
61
|
-
if (!sibling)
|
|
62
|
-
return false;
|
|
63
|
-
if (!sibling.isExpressionStatement())
|
|
64
|
-
return false;
|
|
65
|
-
if (sibling.node.expression.type !== "StringLiteral")
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
return true;
|
|
69
|
-
};
|
|
70
|
-
export const tryExpandThrowSequence = (path) => {
|
|
71
|
-
if (!canReplaceWithMultiple(path) && !canWrapInBlock(path))
|
|
72
|
-
return false;
|
|
73
|
-
const argument = path.node.argument;
|
|
74
|
-
if (argument.type !== "SequenceExpression")
|
|
75
|
-
return false;
|
|
76
|
-
if (argument.expressions.length < 2)
|
|
77
|
-
return false;
|
|
78
|
-
const leadingExpressions = argument.expressions.slice(0, -1);
|
|
79
|
-
const lastExpression = argument.expressions.at(-1);
|
|
80
|
-
if (!lastExpression)
|
|
81
|
-
return false;
|
|
82
|
-
const firstExpression = leadingExpressions[0];
|
|
83
|
-
const shouldWrapFirstStringLiteral = firstExpression?.type === "StringLiteral" &&
|
|
84
|
-
isDirectiveProloguePosition(path);
|
|
85
|
-
const statements = leadingExpressions.map((expression) => {
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
87
|
-
let clonedExpression = t.cloneNode(expression, true);
|
|
88
|
-
if (shouldWrapFirstStringLiteral && expression === firstExpression) {
|
|
89
|
-
// Prevent inserting a directive prologue statement like `"use strict";`.
|
|
90
|
-
// `("use strict");` is not treated as a directive.
|
|
91
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
92
|
-
clonedExpression = t.parenthesizedExpression(clonedExpression);
|
|
93
|
-
}
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
95
|
-
return t.expressionStatement(clonedExpression);
|
|
96
|
-
});
|
|
97
|
-
statements.push(
|
|
98
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
99
|
-
t.throwStatement(t.cloneNode(lastExpression, true)));
|
|
100
|
-
return replaceThrowWithStatements(path, statements);
|
|
101
|
-
};
|
package/dist/transforms/expand-sequence-expressions-v3/expand-variable-declaration-sequence.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
const require = createRequire(import.meta.url);
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
4
|
-
const t = require("@babel/types");
|
|
5
|
-
const createExpressionStatement = (expression) => {
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
7
|
-
return t.expressionStatement(
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
9
|
-
t.cloneNode(expression, true));
|
|
10
|
-
};
|
|
11
|
-
const createVariableDeclarationStatement = (kind, declarator) => {
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
13
|
-
return t.variableDeclaration(kind, [declarator]);
|
|
14
|
-
};
|
|
15
|
-
const createVariableDeclarator = (id, init) => {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
17
|
-
return t.variableDeclarator(
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
19
|
-
t.cloneNode(id, true), init
|
|
20
|
-
? // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
21
|
-
t.cloneNode(init, true)
|
|
22
|
-
: undefined);
|
|
23
|
-
};
|
|
24
|
-
const isSupportedStatementContainer = (path) => {
|
|
25
|
-
const parentPath = path.parentPath;
|
|
26
|
-
if (!parentPath)
|
|
27
|
-
return false;
|
|
28
|
-
return (parentPath.isProgram() ||
|
|
29
|
-
parentPath.isBlockStatement() ||
|
|
30
|
-
parentPath.isStaticBlock() ||
|
|
31
|
-
parentPath.isSwitchCase());
|
|
32
|
-
};
|
|
33
|
-
const isDirectiveProloguePosition = (path) => {
|
|
34
|
-
const parentPath = path.parentPath;
|
|
35
|
-
if (!parentPath)
|
|
36
|
-
return false;
|
|
37
|
-
if (parentPath.isBlockStatement()) {
|
|
38
|
-
const grandParent = parentPath.parentPath;
|
|
39
|
-
if (parentPath.key !== "body")
|
|
40
|
-
return false;
|
|
41
|
-
if (!grandParent.isFunction())
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
else if (!parentPath.isProgram()) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
const siblings = parentPath.get("body");
|
|
48
|
-
if (!Array.isArray(siblings))
|
|
49
|
-
return false;
|
|
50
|
-
const index = siblings.findIndex((sibling) => sibling.node === path.node);
|
|
51
|
-
if (index === -1)
|
|
52
|
-
return false;
|
|
53
|
-
for (let bodyIndex = 0; bodyIndex < index; bodyIndex++) {
|
|
54
|
-
const sibling = siblings[bodyIndex];
|
|
55
|
-
if (!sibling)
|
|
56
|
-
return false;
|
|
57
|
-
if (!sibling.isExpressionStatement())
|
|
58
|
-
return false;
|
|
59
|
-
if (sibling.node.expression.type !== "StringLiteral")
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
return true;
|
|
63
|
-
};
|
|
64
|
-
export const tryExpandVariableDeclarationSequenceInitializers = (path) => {
|
|
65
|
-
if (!isSupportedStatementContainer(path))
|
|
66
|
-
return false;
|
|
67
|
-
if (isDirectiveProloguePosition(path)) {
|
|
68
|
-
const wouldInsertStringLiteral = path.node.declarations.some((declarator) => declarator.init?.type === "SequenceExpression" &&
|
|
69
|
-
declarator.init.expressions[0]?.type === "StringLiteral");
|
|
70
|
-
if (wouldInsertStringLiteral)
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
const hasAnySequence = path.node.declarations.some((declarator) => declarator.init?.type === "SequenceExpression" &&
|
|
74
|
-
declarator.init.expressions.length >= 2);
|
|
75
|
-
if (!hasAnySequence)
|
|
76
|
-
return false;
|
|
77
|
-
const kind = path.node.kind;
|
|
78
|
-
const statements = [];
|
|
79
|
-
for (const declarator of path.node.declarations) {
|
|
80
|
-
const init = declarator.init;
|
|
81
|
-
if (init?.type !== "SequenceExpression") {
|
|
82
|
-
statements.push(createVariableDeclarationStatement(kind, declarator));
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
const leadingExpressions = init.expressions.slice(0, -1);
|
|
86
|
-
const lastExpression = init.expressions.at(-1);
|
|
87
|
-
if (!lastExpression) {
|
|
88
|
-
statements.push(createVariableDeclarationStatement(kind, declarator));
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
for (const expression of leadingExpressions) {
|
|
92
|
-
statements.push(createExpressionStatement(expression));
|
|
93
|
-
}
|
|
94
|
-
const newDeclarator = createVariableDeclarator(declarator.id, lastExpression);
|
|
95
|
-
statements.push(createVariableDeclarationStatement(kind, newDeclarator));
|
|
96
|
-
}
|
|
97
|
-
path.replaceWithMultiple(statements);
|
|
98
|
-
return true;
|
|
99
|
-
};
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
import { getFilesToProcess, } from "../../core/types.js";
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
5
|
-
const traverse = require("@babel/traverse").default;
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
7
|
-
const t = require("@babel/types");
|
|
8
|
-
const canReplaceWithMultiple = (path) => {
|
|
9
|
-
return (path.parentPath.isProgram() ||
|
|
10
|
-
path.parentPath.isBlockStatement() ||
|
|
11
|
-
path.parentPath.isStaticBlock() ||
|
|
12
|
-
path.parentPath.isSwitchCase());
|
|
13
|
-
};
|
|
14
|
-
const canWrapInBlock = (path) => {
|
|
15
|
-
const parentPath = path.parentPath;
|
|
16
|
-
if (parentPath.isIfStatement() &&
|
|
17
|
-
(path.key === "consequent" || path.key === "alternate")) {
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
if ((parentPath.isForStatement() ||
|
|
21
|
-
parentPath.isForInStatement() ||
|
|
22
|
-
parentPath.isForOfStatement() ||
|
|
23
|
-
parentPath.isWhileStatement() ||
|
|
24
|
-
parentPath.isDoWhileStatement() ||
|
|
25
|
-
parentPath.isWithStatement() ||
|
|
26
|
-
parentPath.isLabeledStatement()) &&
|
|
27
|
-
path.key === "body") {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
return false;
|
|
31
|
-
};
|
|
32
|
-
const replaceThrowWithStatements = (path, statements) => {
|
|
33
|
-
if (canReplaceWithMultiple(path)) {
|
|
34
|
-
path.replaceWithMultiple(statements);
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
if (canWrapInBlock(path)) {
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
39
|
-
path.replaceWith(t.blockStatement(statements));
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
43
|
-
};
|
|
44
|
-
const isDirectiveProloguePosition = (path) => {
|
|
45
|
-
const parentPath = path.parentPath;
|
|
46
|
-
if (!parentPath.isProgram() && !parentPath.isBlockStatement())
|
|
47
|
-
return false;
|
|
48
|
-
const siblings = parentPath.get("body");
|
|
49
|
-
if (!Array.isArray(siblings))
|
|
50
|
-
return false;
|
|
51
|
-
const index = siblings.findIndex((sibling) => sibling.node === path.node);
|
|
52
|
-
if (index === -1)
|
|
53
|
-
return false;
|
|
54
|
-
for (let bodyIndex = 0; bodyIndex < index; bodyIndex++) {
|
|
55
|
-
const sibling = siblings[bodyIndex];
|
|
56
|
-
if (!sibling)
|
|
57
|
-
return false;
|
|
58
|
-
if (!sibling.isExpressionStatement())
|
|
59
|
-
return false;
|
|
60
|
-
if (sibling.node.expression.type !== "StringLiteral")
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
};
|
|
65
|
-
const tryExpandThrowSequence = (path) => {
|
|
66
|
-
if (!canReplaceWithMultiple(path) && !canWrapInBlock(path))
|
|
67
|
-
return false;
|
|
68
|
-
const argument = path.node.argument;
|
|
69
|
-
if (argument.type !== "SequenceExpression")
|
|
70
|
-
return false;
|
|
71
|
-
if (argument.expressions.length < 2)
|
|
72
|
-
return false;
|
|
73
|
-
const leadingExpressions = argument.expressions.slice(0, -1);
|
|
74
|
-
const lastExpression = argument.expressions.at(-1);
|
|
75
|
-
if (!lastExpression)
|
|
76
|
-
return false;
|
|
77
|
-
const firstExpression = leadingExpressions[0];
|
|
78
|
-
const shouldWrapFirstStringLiteral = firstExpression?.type === "StringLiteral" &&
|
|
79
|
-
isDirectiveProloguePosition(path);
|
|
80
|
-
const statements = leadingExpressions.map((expression) => {
|
|
81
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
82
|
-
let clonedExpression = t.cloneNode(expression, true);
|
|
83
|
-
if (shouldWrapFirstStringLiteral && expression === firstExpression) {
|
|
84
|
-
// Prevent inserting a directive prologue statement like `"use strict";`.
|
|
85
|
-
// `("use strict");` is not treated as a directive.
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
87
|
-
clonedExpression = t.parenthesizedExpression(clonedExpression);
|
|
88
|
-
}
|
|
89
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
90
|
-
return t.expressionStatement(clonedExpression);
|
|
91
|
-
});
|
|
92
|
-
statements.push(
|
|
93
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
94
|
-
t.throwStatement(t.cloneNode(lastExpression, true)));
|
|
95
|
-
return replaceThrowWithStatements(path, statements);
|
|
96
|
-
};
|
|
97
|
-
export const expandThrowSequenceTransform = {
|
|
98
|
-
id: "expand-throw-sequence",
|
|
99
|
-
description: "Expands throw sequences like `throw (a(), b)`",
|
|
100
|
-
scope: "file",
|
|
101
|
-
parallelizable: true,
|
|
102
|
-
transform(context) {
|
|
103
|
-
let nodesVisited = 0;
|
|
104
|
-
let transformationsApplied = 0;
|
|
105
|
-
for (const fileInfo of getFilesToProcess(context)) {
|
|
106
|
-
traverse(fileInfo.ast, {
|
|
107
|
-
ThrowStatement(path) {
|
|
108
|
-
nodesVisited++;
|
|
109
|
-
if (!tryExpandThrowSequence(path))
|
|
110
|
-
return;
|
|
111
|
-
transformationsApplied += 1;
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
return Promise.resolve({ nodesVisited, transformationsApplied });
|
|
116
|
-
},
|
|
117
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { isValidBindingIdentifier } from "./is-valid-binding-identifier.js";
|
|
2
|
-
// Cap retries to avoid pathological loops while handling large bundles.
|
|
3
|
-
const MAX_CANDIDATES = 1000;
|
|
4
|
-
export const getTargetName = (bindingScope, binding, options) => {
|
|
5
|
-
const { baseName } = options;
|
|
6
|
-
if (baseName.length === 0)
|
|
7
|
-
return;
|
|
8
|
-
const programScope = bindingScope.getProgramParent();
|
|
9
|
-
for (let index = 0; index < MAX_CANDIDATES; index++) {
|
|
10
|
-
const candidate = index === 0 ? baseName : `${baseName}${index + 1}`;
|
|
11
|
-
if (!isValidBindingIdentifier(candidate))
|
|
12
|
-
continue;
|
|
13
|
-
// Avoid shadowing bindings in parent scopes.
|
|
14
|
-
if (bindingScope.hasBinding(candidate))
|
|
15
|
-
continue;
|
|
16
|
-
if (Object.hasOwn(programScope.globals, candidate))
|
|
17
|
-
continue;
|
|
18
|
-
const wouldBeShadowed = binding.referencePaths.some((referencePath) => referencePath.scope !== bindingScope &&
|
|
19
|
-
referencePath.scope.hasBinding(candidate));
|
|
20
|
-
if (wouldBeShadowed)
|
|
21
|
-
continue;
|
|
22
|
-
return candidate;
|
|
23
|
-
}
|
|
24
|
-
return;
|
|
25
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const isValidBindingIdentifier: (name: string) => boolean;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { isIdentifierName, isKeyword, isStrictBindReservedWord, } from "@babel/helper-validator-identifier";
|
|
2
|
-
export const isValidBindingIdentifier = (name) => {
|
|
3
|
-
if (!isIdentifierName(name))
|
|
4
|
-
return false;
|
|
5
|
-
if (isKeyword(name))
|
|
6
|
-
return false;
|
|
7
|
-
if (isStrictBindReservedWord(name, true))
|
|
8
|
-
return false;
|
|
9
|
-
return true;
|
|
10
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { isValidBindingIdentifier } from "./is-valid-binding-identifier.js";
|
|
2
|
-
const BASE_NAME = "hasRunRef";
|
|
3
|
-
// Cap retries to avoid pathological loops while handling large bundles.
|
|
4
|
-
const MAX_CANDIDATES = 1000;
|
|
5
|
-
export const getTargetName = (bindingScope, binding) => {
|
|
6
|
-
const programScope = bindingScope.getProgramParent();
|
|
7
|
-
for (let index = 0; index < MAX_CANDIDATES; index++) {
|
|
8
|
-
const candidate = index === 0 ? BASE_NAME : `${BASE_NAME}${index + 1}`;
|
|
9
|
-
if (!isValidBindingIdentifier(candidate))
|
|
10
|
-
continue;
|
|
11
|
-
// Avoid shadowing bindings in parent scopes.
|
|
12
|
-
if (bindingScope.hasBinding(candidate))
|
|
13
|
-
continue;
|
|
14
|
-
if (Object.hasOwn(programScope.globals, candidate))
|
|
15
|
-
continue;
|
|
16
|
-
const wouldBeShadowed = binding.referencePaths.some((referencePath) => referencePath.scope !== bindingScope &&
|
|
17
|
-
referencePath.scope.hasBinding(candidate));
|
|
18
|
-
if (wouldBeShadowed)
|
|
19
|
-
continue;
|
|
20
|
-
return candidate;
|
|
21
|
-
}
|
|
22
|
-
return;
|
|
23
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const isValidBindingIdentifier: (name: string) => boolean;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { isIdentifierName, isKeyword, isStrictBindReservedWord, } from "@babel/helper-validator-identifier";
|
|
2
|
-
export const isValidBindingIdentifier = (name) => {
|
|
3
|
-
if (!isIdentifierName(name))
|
|
4
|
-
return false;
|
|
5
|
-
if (isKeyword(name))
|
|
6
|
-
return false;
|
|
7
|
-
if (isStrictBindReservedWord(name, true))
|
|
8
|
-
return false;
|
|
9
|
-
return true;
|
|
10
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { isValidBindingIdentifier } from "./is-valid-binding-identifier.js";
|
|
2
|
-
const BASE_NAME = "hasRunRef";
|
|
3
|
-
// Cap retries to avoid pathological loops while handling large bundles.
|
|
4
|
-
const MAX_CANDIDATES = 1000;
|
|
5
|
-
export const getTargetName = (bindingScope, binding) => {
|
|
6
|
-
const programScope = bindingScope.getProgramParent();
|
|
7
|
-
for (let index = 0; index < MAX_CANDIDATES; index++) {
|
|
8
|
-
const candidate = index === 0 ? BASE_NAME : `${BASE_NAME}${index + 1}`;
|
|
9
|
-
if (!isValidBindingIdentifier(candidate))
|
|
10
|
-
continue;
|
|
11
|
-
// Avoid shadowing bindings in parent scopes.
|
|
12
|
-
if (bindingScope.hasBinding(candidate))
|
|
13
|
-
continue;
|
|
14
|
-
if (Object.hasOwn(programScope.globals, candidate))
|
|
15
|
-
continue;
|
|
16
|
-
const wouldBeShadowed = binding.referencePaths.some((referencePath) => referencePath.scope !== bindingScope &&
|
|
17
|
-
referencePath.scope.hasBinding(candidate));
|
|
18
|
-
if (wouldBeShadowed)
|
|
19
|
-
continue;
|
|
20
|
-
return candidate;
|
|
21
|
-
}
|
|
22
|
-
return;
|
|
23
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const isValidBindingIdentifier: (name: string) => boolean;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { isIdentifierName, isKeyword, isStrictBindReservedWord, } from "@babel/helper-validator-identifier";
|
|
2
|
-
export const isValidBindingIdentifier = (name) => {
|
|
3
|
-
if (!isIdentifierName(name))
|
|
4
|
-
return false;
|
|
5
|
-
if (isKeyword(name))
|
|
6
|
-
return false;
|
|
7
|
-
if (isStrictBindReservedWord(name, true))
|
|
8
|
-
return false;
|
|
9
|
-
return true;
|
|
10
|
-
};
|