webfuscator 1.3.2 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/obfuscator.d.ts.map +1 -1
- package/dist/obfuscator.js +29 -19
- package/dist/obfuscator.js.map +1 -1
- package/dist/options.d.ts +10 -11
- package/dist/options.d.ts.map +1 -1
- package/dist/transforms/arguments-to-parameters.d.ts +2 -5
- package/dist/transforms/arguments-to-parameters.d.ts.map +1 -1
- package/dist/transforms/arguments-to-parameters.js +2 -5
- package/dist/transforms/arguments-to-parameters.js.map +1 -1
- package/dist/transforms/arrow-to-function.d.ts +3 -4
- package/dist/transforms/arrow-to-function.d.ts.map +1 -1
- package/dist/transforms/arrow-to-function.js +3 -4
- package/dist/transforms/arrow-to-function.js.map +1 -1
- package/dist/transforms/collapse-single-use-temps.d.ts +2 -3
- package/dist/transforms/collapse-single-use-temps.d.ts.map +1 -1
- package/dist/transforms/collapse-single-use-temps.js +2 -3
- package/dist/transforms/collapse-single-use-temps.js.map +1 -1
- package/dist/transforms/conceal-strings.d.ts +8 -25
- package/dist/transforms/conceal-strings.d.ts.map +1 -1
- package/dist/transforms/conceal-strings.js +33 -48
- package/dist/transforms/conceal-strings.js.map +1 -1
- package/dist/transforms/const-let-to-var.d.ts +3 -4
- package/dist/transforms/const-let-to-var.d.ts.map +1 -1
- package/dist/transforms/const-let-to-var.js +3 -4
- package/dist/transforms/const-let-to-var.js.map +1 -1
- package/dist/transforms/do-while-to-while.d.ts +2 -3
- package/dist/transforms/do-while-to-while.d.ts.map +1 -1
- package/dist/transforms/do-while-to-while.js +2 -3
- package/dist/transforms/do-while-to-while.js.map +1 -1
- package/dist/transforms/drop-console.d.ts +1 -4
- package/dist/transforms/drop-console.d.ts.map +1 -1
- package/dist/transforms/drop-console.js +1 -4
- package/dist/transforms/drop-console.js.map +1 -1
- package/dist/transforms/expand-binary-assignment.d.ts +2 -8
- package/dist/transforms/expand-binary-assignment.d.ts.map +1 -1
- package/dist/transforms/expand-binary-assignment.js +2 -8
- package/dist/transforms/expand-binary-assignment.js.map +1 -1
- package/dist/transforms/expand-logical-assignment.d.ts +3 -2
- package/dist/transforms/expand-logical-assignment.d.ts.map +1 -1
- package/dist/transforms/expand-logical-assignment.js +3 -2
- package/dist/transforms/expand-logical-assignment.js.map +1 -1
- package/dist/transforms/extract-object-properties.d.ts +2 -3
- package/dist/transforms/extract-object-properties.d.ts.map +1 -1
- package/dist/transforms/extract-object-properties.js +2 -3
- package/dist/transforms/extract-object-properties.js.map +1 -1
- package/dist/transforms/fold-builtin-methods.d.ts +2 -3
- package/dist/transforms/fold-builtin-methods.d.ts.map +1 -1
- package/dist/transforms/fold-builtin-methods.js +2 -3
- package/dist/transforms/fold-builtin-methods.js.map +1 -1
- package/dist/transforms/fold-constants.d.ts +2 -2
- package/dist/transforms/fold-constants.js +2 -2
- package/dist/transforms/for-to-while.d.ts +2 -3
- package/dist/transforms/for-to-while.d.ts.map +1 -1
- package/dist/transforms/for-to-while.js +2 -3
- package/dist/transforms/for-to-while.js.map +1 -1
- package/dist/transforms/function-declaration-to-expression.d.ts +3 -7
- package/dist/transforms/function-declaration-to-expression.d.ts.map +1 -1
- package/dist/transforms/function-declaration-to-expression.js +3 -7
- package/dist/transforms/function-declaration-to-expression.js.map +1 -1
- package/dist/transforms/hoist-variables.d.ts +2 -4
- package/dist/transforms/hoist-variables.d.ts.map +1 -1
- package/dist/transforms/hoist-variables.js +2 -4
- package/dist/transforms/hoist-variables.js.map +1 -1
- package/dist/transforms/inline-functions.d.ts +2 -2
- package/dist/transforms/inline-functions.js +2 -2
- package/dist/transforms/logical-to-ternary.d.ts +2 -2
- package/dist/transforms/logical-to-ternary.js +2 -2
- package/dist/transforms/mangle-properties.d.ts +2 -3
- package/dist/transforms/mangle-properties.d.ts.map +1 -1
- package/dist/transforms/mangle-properties.js +2 -3
- package/dist/transforms/mangle-properties.js.map +1 -1
- package/dist/transforms/nullish-coalescing-to-ternary.d.ts +2 -2
- package/dist/transforms/nullish-coalescing-to-ternary.js +2 -2
- package/dist/transforms/numbers-to-strings.d.ts +1 -5
- package/dist/transforms/numbers-to-strings.d.ts.map +1 -1
- package/dist/transforms/numbers-to-strings.js +1 -5
- package/dist/transforms/numbers-to-strings.js.map +1 -1
- package/dist/transforms/object-method-to-property.d.ts +2 -10
- package/dist/transforms/object-method-to-property.d.ts.map +1 -1
- package/dist/transforms/object-method-to-property.js +2 -10
- package/dist/transforms/object-method-to-property.js.map +1 -1
- package/dist/transforms/optional-chaining-to-ternary.d.ts +2 -3
- package/dist/transforms/optional-chaining-to-ternary.d.ts.map +1 -1
- package/dist/transforms/optional-chaining-to-ternary.js +2 -3
- package/dist/transforms/optional-chaining-to-ternary.js.map +1 -1
- package/dist/transforms/pack-declarations-into-parameters.d.ts +2 -5
- package/dist/transforms/pack-declarations-into-parameters.d.ts.map +1 -1
- package/dist/transforms/pack-declarations-into-parameters.js +2 -5
- package/dist/transforms/pack-declarations-into-parameters.js.map +1 -1
- package/dist/transforms/pack-expressions.d.ts +25 -0
- package/dist/transforms/pack-expressions.d.ts.map +1 -0
- package/dist/transforms/pack-expressions.js +187 -0
- package/dist/transforms/pack-expressions.js.map +1 -0
- package/dist/transforms/pack.d.ts +2 -4
- package/dist/transforms/pack.d.ts.map +1 -1
- package/dist/transforms/pack.js +2 -4
- package/dist/transforms/pack.js.map +1 -1
- package/dist/transforms/remove-unreachable-code.d.ts +2 -4
- package/dist/transforms/remove-unreachable-code.d.ts.map +1 -1
- package/dist/transforms/remove-unreachable-code.js +2 -4
- package/dist/transforms/remove-unreachable-code.js.map +1 -1
- package/dist/transforms/remove-unused-code.d.ts +2 -2
- package/dist/transforms/remove-unused-code.js +2 -2
- package/dist/transforms/rename-identifiers.d.ts +2 -3
- package/dist/transforms/rename-identifiers.d.ts.map +1 -1
- package/dist/transforms/rename-identifiers.js +2 -3
- package/dist/transforms/rename-identifiers.js.map +1 -1
- package/dist/transforms/reorder-function-declarations.d.ts +2 -6
- package/dist/transforms/reorder-function-declarations.d.ts.map +1 -1
- package/dist/transforms/reorder-function-declarations.js +2 -6
- package/dist/transforms/reorder-function-declarations.js.map +1 -1
- package/dist/transforms/specials-to-strings.d.ts +2 -13
- package/dist/transforms/specials-to-strings.d.ts.map +1 -1
- package/dist/transforms/specials-to-strings.js +2 -13
- package/dist/transforms/specials-to-strings.js.map +1 -1
- package/dist/transforms/switch-to-if.d.ts +3 -4
- package/dist/transforms/switch-to-if.d.ts.map +1 -1
- package/dist/transforms/switch-to-if.js +3 -4
- package/dist/transforms/switch-to-if.js.map +1 -1
- package/dist/transforms/ternary-to-if.d.ts +2 -3
- package/dist/transforms/ternary-to-if.d.ts.map +1 -1
- package/dist/transforms/ternary-to-if.js +2 -3
- package/dist/transforms/ternary-to-if.js.map +1 -1
- package/dist/transforms/update-to-assignment.d.ts +2 -6
- package/dist/transforms/update-to-assignment.d.ts.map +1 -1
- package/dist/transforms/update-to-assignment.js +2 -6
- package/dist/transforms/update-to-assignment.js.map +1 -1
- package/dist/transforms/yodify-conditions.d.ts +2 -3
- package/dist/transforms/yodify-conditions.d.ts.map +1 -1
- package/dist/transforms/yodify-conditions.js +2 -3
- package/dist/transforms/yodify-conditions.js.map +1 -1
- package/package.json +1 -1
- package/src/obfuscator.ts +31 -19
- package/src/options.ts +12 -13
- package/src/transforms/arguments-to-parameters.ts +2 -5
- package/src/transforms/arrow-to-function.ts +3 -4
- package/src/transforms/collapse-single-use-temps.ts +2 -3
- package/src/transforms/conceal-strings.ts +48 -48
- package/src/transforms/const-let-to-var.ts +3 -4
- package/src/transforms/do-while-to-while.ts +2 -3
- package/src/transforms/drop-console.ts +1 -4
- package/src/transforms/expand-binary-assignment.ts +2 -8
- package/src/transforms/expand-logical-assignment.ts +3 -2
- package/src/transforms/extract-object-properties.ts +2 -3
- package/src/transforms/fold-builtin-methods.ts +2 -3
- package/src/transforms/fold-constants.ts +2 -2
- package/src/transforms/for-to-while.ts +2 -3
- package/src/transforms/function-declaration-to-expression.ts +3 -7
- package/src/transforms/hoist-variables.ts +2 -4
- package/src/transforms/inline-functions.ts +2 -2
- package/src/transforms/logical-to-ternary.ts +2 -2
- package/src/transforms/mangle-properties.ts +2 -3
- package/src/transforms/nullish-coalescing-to-ternary.ts +2 -2
- package/src/transforms/numbers-to-strings.ts +1 -5
- package/src/transforms/object-method-to-property.ts +2 -10
- package/src/transforms/optional-chaining-to-ternary.ts +2 -3
- package/src/transforms/pack-declarations-into-parameters.ts +2 -5
- package/src/transforms/pack-expressions.ts +237 -0
- package/src/transforms/pack.ts +2 -4
- package/src/transforms/remove-unreachable-code.ts +2 -4
- package/src/transforms/remove-unused-code.ts +2 -2
- package/src/transforms/rename-identifiers.ts +2 -3
- package/src/transforms/reorder-function-declarations.ts +2 -6
- package/src/transforms/specials-to-strings.ts +2 -13
- package/src/transforms/switch-to-if.ts +3 -4
- package/src/transforms/ternary-to-if.ts +2 -3
- package/src/transforms/update-to-assignment.ts +2 -6
- package/src/transforms/yodify-conditions.ts +2 -3
- package/dist/transforms/merge-variable-declarations.d.ts +0 -17
- package/dist/transforms/merge-variable-declarations.d.ts.map +0 -1
- package/dist/transforms/merge-variable-declarations.js +0 -68
- package/dist/transforms/merge-variable-declarations.js.map +0 -1
- package/src/transforms/merge-variable-declarations.ts +0 -91
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import * as t from '@babel/types'
|
|
2
|
-
import type { File } from '@babel/types'
|
|
3
|
-
|
|
4
|
-
import { rewriteStatementLists } from '../utils/statement-lists'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Merges adjacent variable declarations when their kinds and export wrappers
|
|
8
|
-
* match. It runs in programs, blocks, switch cases, and static blocks, and
|
|
9
|
-
* removes unlabeled empty statements between compatible declarations.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* // ◀️ before
|
|
13
|
-
* let a = 1;
|
|
14
|
-
* let b = 2;
|
|
15
|
-
*
|
|
16
|
-
* // ▶️ after
|
|
17
|
-
* let a = 1,
|
|
18
|
-
* b = 2;
|
|
19
|
-
*/
|
|
20
|
-
export function mergeVariableDeclarations(ast: File): boolean {
|
|
21
|
-
return rewriteStatementLists(ast, (statements) =>
|
|
22
|
-
mergeAdjacent(statements.map((path) => path.node)),
|
|
23
|
-
)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
type StatementLike = t.Program['body'][number]
|
|
27
|
-
|
|
28
|
-
interface MergeableDeclaration {
|
|
29
|
-
declaration: t.VariableDeclaration
|
|
30
|
-
exported: boolean
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function mergeAdjacent(list: readonly StatementLike[]): StatementLike[] | null {
|
|
34
|
-
const out: StatementLike[] = []
|
|
35
|
-
let pendingEmpty: t.EmptyStatement[] = []
|
|
36
|
-
let merged = false
|
|
37
|
-
|
|
38
|
-
for (const statement of list) {
|
|
39
|
-
if (t.isEmptyStatement(statement) && mergeableDeclaration(out.at(-1)) !== null) {
|
|
40
|
-
pendingEmpty.push(statement)
|
|
41
|
-
continue
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const previous = mergeableDeclaration(out.at(-1))
|
|
45
|
-
const current = mergeableDeclaration(statement)
|
|
46
|
-
if (previous && current && canMerge(previous, current)) {
|
|
47
|
-
out[out.length - 1] = mergePair(previous, current)
|
|
48
|
-
pendingEmpty = []
|
|
49
|
-
merged = true
|
|
50
|
-
continue
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
out.push(...pendingEmpty, statement)
|
|
54
|
-
pendingEmpty = []
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
out.push(...pendingEmpty)
|
|
58
|
-
return merged ? out : null
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function mergeableDeclaration(statement: StatementLike | undefined): MergeableDeclaration | null {
|
|
62
|
-
if (statement === undefined) {
|
|
63
|
-
return null
|
|
64
|
-
}
|
|
65
|
-
if (t.isVariableDeclaration(statement)) {
|
|
66
|
-
return { declaration: statement, exported: false }
|
|
67
|
-
}
|
|
68
|
-
if (t.isExportNamedDeclaration(statement) && t.isVariableDeclaration(statement.declaration)) {
|
|
69
|
-
return { declaration: statement.declaration, exported: true }
|
|
70
|
-
}
|
|
71
|
-
return null
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function canMerge(previous: MergeableDeclaration, current: MergeableDeclaration): boolean {
|
|
75
|
-
return (
|
|
76
|
-
previous.exported === current.exported && previous.declaration.kind === current.declaration.kind
|
|
77
|
-
)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function mergePair(previous: MergeableDeclaration, current: MergeableDeclaration): StatementLike {
|
|
81
|
-
const declaration = t.variableDeclaration(previous.declaration.kind, [
|
|
82
|
-
...previous.declaration.declarations,
|
|
83
|
-
...current.declaration.declarations,
|
|
84
|
-
])
|
|
85
|
-
|
|
86
|
-
if (!previous.exported) {
|
|
87
|
-
return declaration
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return t.exportNamedDeclaration(declaration)
|
|
91
|
-
}
|