webfuscator 1.1.0 → 1.2.1

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 (155) hide show
  1. package/README.md +17 -12
  2. package/dist/analysis/constant.js +3 -3
  3. package/dist/analysis/constant.js.map +1 -1
  4. package/dist/analysis/inlineability.d.ts.map +1 -1
  5. package/dist/analysis/inlineability.js +39 -27
  6. package/dist/analysis/inlineability.js.map +1 -1
  7. package/dist/analysis/purity.js +1 -1
  8. package/dist/analysis/purity.js.map +1 -1
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/obfuscator.d.ts.map +1 -1
  13. package/dist/obfuscator.js.map +1 -1
  14. package/dist/options.d.ts +7 -0
  15. package/dist/options.d.ts.map +1 -1
  16. package/dist/preparation/expand-destructuring.js +4 -3
  17. package/dist/preparation/expand-destructuring.js.map +1 -1
  18. package/dist/preparation/expand-template-literals.js +3 -2
  19. package/dist/preparation/expand-template-literals.js.map +1 -1
  20. package/dist/preparation/split-sequence-expressions.js +1 -1
  21. package/dist/preparation/split-sequence-expressions.js.map +1 -1
  22. package/dist/preparation/split-variable-declarations.js +1 -1
  23. package/dist/preparation/split-variable-declarations.js.map +1 -1
  24. package/dist/preparation/stringify-object-keys.js +1 -1
  25. package/dist/preparation/stringify-object-keys.js.map +1 -1
  26. package/dist/preparation/wrap-single-statements.js +2 -2
  27. package/dist/preparation/wrap-single-statements.js.map +1 -1
  28. package/dist/transforms/arguments-to-parameters.js +1 -1
  29. package/dist/transforms/arguments-to-parameters.js.map +1 -1
  30. package/dist/transforms/arrow-to-function.js.map +1 -1
  31. package/dist/transforms/collapse-single-use-temps.js +7 -7
  32. package/dist/transforms/collapse-single-use-temps.js.map +1 -1
  33. package/dist/transforms/const-let-to-var.js +3 -3
  34. package/dist/transforms/const-let-to-var.js.map +1 -1
  35. package/dist/transforms/const-to-let.js.map +1 -1
  36. package/dist/transforms/do-while-to-while.js +3 -3
  37. package/dist/transforms/do-while-to-while.js.map +1 -1
  38. package/dist/transforms/drop-console.js +4 -3
  39. package/dist/transforms/drop-console.js.map +1 -1
  40. package/dist/transforms/drop-debugger.js.map +1 -1
  41. package/dist/transforms/expand-binary-assignment.js +5 -3
  42. package/dist/transforms/expand-binary-assignment.js.map +1 -1
  43. package/dist/transforms/expand-logical-assignment.js +5 -3
  44. package/dist/transforms/expand-logical-assignment.js.map +1 -1
  45. package/dist/transforms/extract-object-properties.js +7 -7
  46. package/dist/transforms/extract-object-properties.js.map +1 -1
  47. package/dist/transforms/fold-builtin-methods.js +16 -15
  48. package/dist/transforms/fold-builtin-methods.js.map +1 -1
  49. package/dist/transforms/fold-constants.js +2 -2
  50. package/dist/transforms/fold-constants.js.map +1 -1
  51. package/dist/transforms/for-to-while.js +5 -5
  52. package/dist/transforms/for-to-while.js.map +1 -1
  53. package/dist/transforms/function-declaration-to-expression.js +3 -3
  54. package/dist/transforms/function-declaration-to-expression.js.map +1 -1
  55. package/dist/transforms/inline-functions.js +7 -7
  56. package/dist/transforms/inline-functions.js.map +1 -1
  57. package/dist/transforms/logical-to-ternary.js +2 -2
  58. package/dist/transforms/logical-to-ternary.js.map +1 -1
  59. package/dist/transforms/mangle-properties.d.ts.map +1 -1
  60. package/dist/transforms/mangle-properties.js +35 -86
  61. package/dist/transforms/mangle-properties.js.map +1 -1
  62. package/dist/transforms/nullish-coalescing-to-ternary.js +2 -2
  63. package/dist/transforms/nullish-coalescing-to-ternary.js.map +1 -1
  64. package/dist/transforms/numbers-to-strings.js +2 -2
  65. package/dist/transforms/numbers-to-strings.js.map +1 -1
  66. package/dist/transforms/object-method-to-property.js +1 -1
  67. package/dist/transforms/object-method-to-property.js.map +1 -1
  68. package/dist/transforms/optional-chaining-to-ternary.js +2 -2
  69. package/dist/transforms/optional-chaining-to-ternary.js.map +1 -1
  70. package/dist/transforms/pack-declarations-into-parameters.js +2 -2
  71. package/dist/transforms/pack-declarations-into-parameters.js.map +1 -1
  72. package/dist/transforms/pack.d.ts.map +1 -1
  73. package/dist/transforms/pack.js +194 -26
  74. package/dist/transforms/pack.js.map +1 -1
  75. package/dist/transforms/remove-anonymous-function-names.js +3 -3
  76. package/dist/transforms/remove-anonymous-function-names.js.map +1 -1
  77. package/dist/transforms/remove-unreachable-code.js +1 -1
  78. package/dist/transforms/remove-unreachable-code.js.map +1 -1
  79. package/dist/transforms/remove-unused-code.js +4 -4
  80. package/dist/transforms/remove-unused-code.js.map +1 -1
  81. package/dist/transforms/rename-identifiers.d.ts.map +1 -1
  82. package/dist/transforms/rename-identifiers.js +4 -3
  83. package/dist/transforms/rename-identifiers.js.map +1 -1
  84. package/dist/transforms/specials-to-strings.d.ts.map +1 -1
  85. package/dist/transforms/specials-to-strings.js +2 -2
  86. package/dist/transforms/specials-to-strings.js.map +1 -1
  87. package/dist/transforms/switch-to-if.js +7 -7
  88. package/dist/transforms/switch-to-if.js.map +1 -1
  89. package/dist/transforms/ternary-to-if.js +7 -4
  90. package/dist/transforms/ternary-to-if.js.map +1 -1
  91. package/dist/transforms/update-to-assignment.js +4 -2
  92. package/dist/transforms/update-to-assignment.js.map +1 -1
  93. package/dist/transforms/yodify-conditions.js +3 -3
  94. package/dist/transforms/yodify-conditions.js.map +1 -1
  95. package/dist/utils/ast.d.ts.map +1 -1
  96. package/dist/utils/ast.js +2 -1
  97. package/dist/utils/ast.js.map +1 -1
  98. package/dist/utils/evaluation-order.js.map +1 -1
  99. package/dist/utils/logical-lowering.js +2 -2
  100. package/dist/utils/logical-lowering.js.map +1 -1
  101. package/dist/utils/loop-lowering.js +1 -1
  102. package/dist/utils/loop-lowering.js.map +1 -1
  103. package/dist/utils/string-generator.js +1 -1
  104. package/dist/utils/string-generator.js.map +1 -1
  105. package/package.json +14 -12
  106. package/src/analysis/constant.ts +4 -4
  107. package/src/analysis/inlineability.ts +43 -35
  108. package/src/analysis/purity.ts +3 -3
  109. package/src/index.ts +4 -2
  110. package/src/obfuscator.ts +42 -42
  111. package/src/options.ts +8 -1
  112. package/src/preparation/expand-destructuring.ts +5 -4
  113. package/src/preparation/expand-template-literals.ts +4 -3
  114. package/src/preparation/split-sequence-expressions.ts +2 -2
  115. package/src/preparation/split-variable-declarations.ts +1 -1
  116. package/src/preparation/stringify-object-keys.ts +2 -2
  117. package/src/preparation/wrap-single-statements.ts +2 -2
  118. package/src/transforms/arguments-to-parameters.ts +5 -5
  119. package/src/transforms/arrow-to-function.ts +3 -3
  120. package/src/transforms/collapse-single-use-temps.ts +14 -14
  121. package/src/transforms/const-let-to-var.ts +6 -6
  122. package/src/transforms/const-to-let.ts +4 -4
  123. package/src/transforms/do-while-to-while.ts +6 -6
  124. package/src/transforms/drop-console.ts +8 -7
  125. package/src/transforms/drop-debugger.ts +2 -2
  126. package/src/transforms/expand-binary-assignment.ts +8 -6
  127. package/src/transforms/expand-logical-assignment.ts +8 -6
  128. package/src/transforms/extract-object-properties.ts +12 -12
  129. package/src/transforms/fold-builtin-methods.ts +20 -19
  130. package/src/transforms/fold-constants.ts +8 -8
  131. package/src/transforms/for-to-while.ts +8 -8
  132. package/src/transforms/function-declaration-to-expression.ts +5 -5
  133. package/src/transforms/inline-functions.ts +14 -14
  134. package/src/transforms/logical-to-ternary.ts +7 -7
  135. package/src/transforms/mangle-properties.ts +43 -97
  136. package/src/transforms/nullish-coalescing-to-ternary.ts +6 -6
  137. package/src/transforms/numbers-to-strings.ts +4 -4
  138. package/src/transforms/object-method-to-property.ts +4 -4
  139. package/src/transforms/optional-chaining-to-ternary.ts +5 -5
  140. package/src/transforms/pack-declarations-into-parameters.ts +7 -7
  141. package/src/transforms/pack.ts +212 -33
  142. package/src/transforms/remove-anonymous-function-names.ts +5 -5
  143. package/src/transforms/remove-unreachable-code.ts +3 -3
  144. package/src/transforms/remove-unused-code.ts +8 -8
  145. package/src/transforms/rename-identifiers.ts +9 -8
  146. package/src/transforms/specials-to-strings.ts +7 -7
  147. package/src/transforms/switch-to-if.ts +12 -12
  148. package/src/transforms/ternary-to-if.ts +12 -9
  149. package/src/transforms/update-to-assignment.ts +7 -5
  150. package/src/transforms/yodify-conditions.ts +6 -6
  151. package/src/utils/ast.ts +2 -1
  152. package/src/utils/evaluation-order.ts +1 -1
  153. package/src/utils/logical-lowering.ts +3 -3
  154. package/src/utils/loop-lowering.ts +1 -1
  155. package/src/utils/string-generator.ts +1 -1
@@ -2,9 +2,9 @@ import type { Visitor } from '@babel/traverse'
2
2
  import * as t from '@babel/types'
3
3
  import type { File } from '@babel/types'
4
4
 
5
- import { traverseForChanges } from 'src/utils/change-tracking'
6
- import type { ChangeState } from 'src/utils/change-tracking'
7
- import { isLiteralShaped } from 'src/utils/literal'
5
+ import { traverseForChanges } from '../utils/change-tracking'
6
+ import type { ChangeState } from '../utils/change-tracking'
7
+ import { isLiteralShaped } from '../utils/literal'
8
8
 
9
9
  /**
10
10
  * Moves a safe literal-shaped right operand to the left of a comparison.
@@ -31,7 +31,7 @@ export function yodifyConditions(ast: File): boolean {
31
31
 
32
32
  const visitor: Visitor<ChangeState> = {
33
33
  BinaryExpression(path, state) {
34
- const { node } = path
34
+ const node = path.node
35
35
  const op = node.operator
36
36
  if (!isComparisonOp(op)) {
37
37
  return
@@ -51,8 +51,8 @@ const visitor: Visitor<ChangeState> = {
51
51
  return
52
52
  }
53
53
 
54
- const { left } = node
55
- const { right } = node
54
+ const left = node.left
55
+ const right = node.right
56
56
  node.left = right
57
57
  node.right = left
58
58
  const flipped = RELATIONAL_FLIP[op]
package/src/utils/ast.ts CHANGED
@@ -13,7 +13,8 @@ export function isInDirectivePrologue(path: NodePath): boolean {
13
13
  if (!inBody) {
14
14
  return false
15
15
  }
16
- const { container, key: index } = path
16
+ const container = path.container
17
+ const index = path.key
17
18
  if (!Array.isArray(container) || typeof index !== 'number') {
18
19
  return false
19
20
  }
@@ -1,7 +1,7 @@
1
1
  import type { NodePath } from '@babel/traverse'
2
2
  import * as t from '@babel/types'
3
3
 
4
- import { isPure } from 'src/analysis/purity'
4
+ import { isPure } from '../analysis/purity'
5
5
 
6
6
  // Moving a gated node can change whether it runs.
7
7
  export function isConditionalGate(parent: NodePath, cur: NodePath): boolean {
@@ -1,8 +1,8 @@
1
1
  import type { NodePath } from '@babel/traverse'
2
2
  import * as t from '@babel/types'
3
3
 
4
- import { isSideEffectFree } from 'src/analysis/purity'
5
- import { isStandaloneDeclaration } from 'src/utils/paths'
4
+ import { isSideEffectFree } from '../analysis/purity'
5
+ import { isStandaloneDeclaration } from './paths'
6
6
 
7
7
  // Lowers a short-circuit expression assigned to a bare identifier:
8
8
  //
@@ -15,7 +15,7 @@ export function lowerLogicalWriteStatement(
15
15
  path: NodePath<t.LogicalExpression>,
16
16
  fallbackTest: (target: t.Identifier) => t.Expression,
17
17
  ): boolean {
18
- const { node } = path
18
+ const node = path.node
19
19
  const parent = path.parentPath
20
20
  if (!parent) {
21
21
  return false
@@ -76,7 +76,7 @@ const redirectVisitor: Visitor<RedirectState> = {
76
76
  path.skip()
77
77
  },
78
78
  ContinueStatement(path, state) {
79
- const { label } = path.node
79
+ const label = path.node.label
80
80
  if (!label) {
81
81
  if (!hasInterposedLoop(path, state.rootPath)) {
82
82
  path.replaceWith(t.breakStatement(t.identifier(state.innerLabel)))
@@ -1,4 +1,4 @@
1
- import { shuffleInPlace } from 'src/utils/random'
1
+ import { shuffleInPlace } from './random'
2
2
 
3
3
  /**
4
4
  * Identifier styles supported by `StringGenerator`. An array chooses a style