8000 Slightly different way to execute object expression extractors · sec-js/javascript-obfuscator@43d09fb · GitHub
[go: up one dir, main page]

Skip to content

Commit 43d09fb

Browse files
author
sanex3339
committed
Slightly different way to execute object expression extractors
1 parent f1cf511 commit 43d09fb

File tree

4 files changed

+45
-10
lines changed

4 files changed

+45
-10
lines changed

dist/index.browser.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.cli.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ import { ObjectExpressionExtractor } from '../../enums/node-transformers/convert
1919

2020
@injectable()
2121
export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
22+
/**
23+
* @type {ObjectExpressionExtractor[]}
24+
*/
25+
private static readonly objectExpressionExtractorNames: ObjectExpressionExtractor[] = [
26+
ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor,
27+
ObjectExpressionExtractor.BasePropertiesExtractor
28+
];
29+
2230
/**
2331
* @type {TObjectExpressionExtractorFactory}
2432
*/
@@ -208,18 +216,45 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
208216
return objectExpressionNode;
209217
}
210218

219+
return this.applyObjectExpressionKeysExtractorsRecursive(
220+
ObjectExpressionKeysTransformer.objectExpressionExtractorNames,
221+
objectExpressionNode,
222+
hostStatement
223+
);
224+
}
225+
226+
/**
227+
* @param {ObjectExpressionExtractor[]} objectExpressionExtractorNames
228+
* @param {ObjectExpression} objectExpressionNode
229+
* @param {Statement} hostStatement
230+
* @returns {Node}
231+
*/
232+
private applyObjectExpressionKeysExtractorsRecursive (
233+
objectExpressionExtractorNames: ObjectExpressionExtractor[],
234+
objectExpressionNode: ESTree.ObjectExpression,
235+
hostStatement: ESTree.Statement
236+
): ESTree.Node {
237+
const newObjectExpressionExtractorNames: ObjectExpressionExtractor[] = [...objectExpressionExtractorNames];
238+
const objectExpressionExtractor: ObjectExpressionExtractor | undefined =
239+< D2BC /span>
newObjectExpressionExtractorNames.shift();
240+
241+
if (!objectExpressionExtractor) {
242+
return objectExpressionNode;
243+
}
244+
211245
const {
212-
nodeToReplace: newObjectExpressionIdentifierReference,
246+
nodeToReplace,
213247
objectExpressionHostStatement: newObjectExpressionHostStatement,
214248
objectExpressionNode: newObjectExpressionNode
215-
} = this
216-
.objectExpressionExtractorFactory(ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor)
249+
} = this.objectExpressionExtractorFactory(objectExpressionExtractor)
217250
.extract(objectExpressionNode, hostStatement);
218251

219-
this
220-
.objectExpressionExtractorFactory(ObjectExpressionExtractor.BasePropertiesExtractor)
221-
.extract(newObjectExpressionNode, newObjectExpressionHostStatement);
252+
this.applyObjectExpressionKeysExtractorsRecursive(
253+
newObjectExpressionExtractorNames,
254+
newObjectExpressionNode,
255+
newObjectExpressionHostStatement
256+
);
222257

223-
return newObjectExpressionIdentifierReference;
258+
return nodeToReplace;
224259
}
225260
}

0 commit comments

Comments
 (0)
0