fix: dynamic import

This commit is contained in:
Kevin
2021-10-11 03:50:58 +08:00
parent 314855eb8b
commit 30c5e9a937
5 changed files with 22 additions and 9 deletions
+1
View File
@@ -28,6 +28,7 @@ export enum NodeType {
Identifier = 'Identifier',
IfStatement = 'IfStatement',
ImportDeclaration = 'ImportDeclaration',
ImportExpression = 'ImportExpression',
ImportDefaultSpecifier = 'ImportDefaultSpecifier',
ImportNamespaceSpecifier = 'ImportNamespaceSpecifier',
ImportSpecifier = 'ImportSpecifier',
@@ -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;
+8
View File
@@ -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}
@@ -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;
@@ -1,3 +1,4 @@
const foo = require('./foo');
import bar from './bar';
const baz = 'baz';
const baz = 'baz';
const qux = await import('quux')