From 30c5e9a93751344040949122d422ded725058f3d Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 11 Oct 2021 03:50:58 +0800 Subject: [PATCH] fix: dynamic import --- src/enums/node/NodeType.ts | 1 + .../IgnoredRequireImportObfuscatingGuard.ts | 16 +++++++++------- src/node/NodeGuards.ts | 8 ++++++++ .../IgnoredRequireImportObfuscatingGuard.spec.ts | 3 ++- .../fixtures/base-behaviour.js | 3 ++- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/enums/node/NodeType.ts b/src/enums/node/NodeType.ts index 18b5acdb..a7812104 100644 --- a/src/enums/node/NodeType.ts +++ b/src/enums/node/NodeType.ts @@ -28,6 +28,7 @@ export enum NodeType { Identifier = 'Identifier', IfStatement = 'IfStatement', ImportDeclaration = 'ImportDeclaration', + ImportExpression = 'ImportExpression', ImportDefaultSpecifier = 'ImportDefaultSpecifier', ImportNamespaceSpecifier = 'ImportNamespaceSpecifier', ImportSpecifier = 'ImportSpecifier', diff --git a/src/node-transformers/preparing-transformers/obfuscating-guards/IgnoredRequireImportObfuscatingGuard.ts b/src/node-transformers/preparing-transformers/obfuscating-guards/IgnoredRequireImportObfuscatingGuard.ts index c80dbafe..7e52f503 100644 --- a/src/node-transformers/preparing-transformers/obfuscating-guards/IgnoredRequireImportObfuscatingGuard.ts +++ b/src/node-transformers/preparing-transformers/obfuscating-guards/IgnoredRequireImportObfuscatingGuard.ts @@ -32,13 +32,15 @@ export class IgnoredRequireImportObfuscatingGuard implements IObfuscatingGuard { * @returns {ObfuscatingGuardResult} */ public check (node: ESTree.Node): ObfuscatingGuardResult { - if ( - this.options.ignoreRequireImports - && NodeGuards.isCallExpressionNode(node) - && NodeGuards.isIdentifierNode(node.callee) - && node.callee.name === 'require' - ) { - return ObfuscatingGuardResult.Ignore; + if (this.options.ignoreRequireImports) { + if ( + NodeGuards.isCallExpressionNode(node) + && NodeGuards.isIdentifierNode(node.callee) + && node.callee.name === 'require' + ) { return ObfuscatingGuardResult.Ignore; } + if ( + NodeGuards.isImportExpressionNode(node) + ) { return ObfuscatingGuardResult.Ignore; } } return ObfuscatingGuardResult.Transform; diff --git a/src/node/NodeGuards.ts b/src/node/NodeGuards.ts index 2f490abd..0db2585c 100644 --- a/src/node/NodeGuards.ts +++ b/src/node/NodeGuards.ts @@ -266,6 +266,14 @@ export class NodeGuards { return node.type === NodeType.ImportDeclaration; } + /** + * @param {Node} node + * @returns {boolean} + */ + public static isImportExpressionNode (node: ESTree.Node): node is ESTree.ImportExpression { + return node.type === NodeType.ImportExpression; + } + /** * @param {Node} node * @returns {boolean} diff --git a/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/IgnoredRequireImportObfuscatingGuard.spec.ts b/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/IgnoredRequireImportObfuscatingGuard.spec.ts index c97870a6..ab2a76ec 100644 --- a/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/IgnoredRequireImportObfuscatingGuard.spec.ts +++ b/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/IgnoredRequireImportObfuscatingGuard.spec.ts @@ -40,7 +40,8 @@ describe('IgnoredRequireImportObfuscatingGuard', () => { const obfuscatingGuardRegExp: RegExp = new RegExp( 'const foo *= *require\\(_0x(?:[a-f0-9]){4,6}\\(0x0\\)\\);.*' + 'import _0x(?:[a-f0-9]){4,6} from *\'\\./bar\';.*' + - 'const baz *= *_0x(?:[a-f0-9]){4,6}\\(0x1\\);' + 'const baz *= *_0x(?:[a-f0-9]){4,6}\\(0x1\\);' + + 'const qux *= *import\\(_0x(?:[a-f0-9]){4,6}\\(0x0\\)\\);.*' ); let obfuscatedCode: string; diff --git a/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/fixtures/base-behaviour.js b/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/fixtures/base-behaviour.js index b118c2c9..c0814785 100644 --- a/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/fixtures/base-behaviour.js +++ b/test/functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/fixtures/base-behaviour.js @@ -1,3 +1,4 @@ const foo = require('./foo'); import bar from './bar'; -const baz = 'baz'; \ No newline at end of file +const baz = 'baz'; +const qux = await import('quux') \ No newline at end of file