Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ v4.1.2
---
* Fix `transformObjectKeys` performance in some edge-cases
* Fix `controlFlowFlattening` + optional chaining compatibility. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1325
* Don't obfuscate import.meta.*. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1267
* Revert `Improved stringArray calls wrapper templates` commit. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1330
* Don't publish root index.ts files to NPM. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1252
* Update `class-validator` version. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1324
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ import { CustomCodeHelpersTransformer } from '../../../node-transformers/prepari
import { EvalCallExpressionTransformer } from '../../../node-transformers/preparing-transformers/EvalCallExpressionTransformer';
import { ForceTransformStringObfuscatingGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/ForceTransformStringObfuscatingGuard';
import { IgnoredImportObfuscatingGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/IgnoredImportObfuscatingGuard';
import {
ImportMetaObfuscationGuard
} from '../../../node-transformers/preparing-transformers/obfuscating-guards/ImportMetaObfuscationGuard';
import { MetadataTransformer } from '../../../node-transformers/preparing-transformers/MetadataTransformer';
import { ObfuscatingGuardsTransformer } from '../../../node-transformers/preparing-transformers/ObfuscatingGuardsTransformer';
import { ParentificationTransformer } from '../../../node-transformers/preparing-transformers/ParentificationTransformer';
Expand Down Expand Up @@ -67,6 +70,11 @@ export const preparingTransformersModule: interfaces.ContainerModule = new Conta
.inSingletonScope()
.whenTargetNamed(ObfuscatingGuard.IgnoredImportObfuscatingGuard);

bind<IObfuscatingGuard>(ServiceIdentifiers.INodeGuard)
.to(ImportMetaObfuscationGuard)
.inSingletonScope()
.whenTargetNamed(ObfuscatingGuard.ImportMetaObfuscationGuard);

bind<IObfuscatingGuard>(ServiceIdentifiers.INodeGuard)
.to(ReservedStringObfuscatingGuard)
.inSingletonScope()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ export enum ObfuscatingGuard {
ConditionalCommentObfuscatingGuard = 'ConditionalCommentObfuscatingGuard',
ForceTransformStringObfuscatingGuard = 'ForceTransformStringObfuscatingGuard',
IgnoredImportObfuscatingGuard = 'IgnoredImportObfuscatingGuard',
ImportMetaObfuscationGuard = 'ImportMetaObfuscationGuard',
ReservedStringObfuscatingGuard = 'ReservedStringObfuscatingGuard'
}
1 change: 1 addition & 0 deletions src/enums/node/NodeType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export enum NodeType {
Literal = 'Literal',
LogicalExpression = 'LogicalExpression',
MemberExpression = 'MemberExpression',
MetaProperty = 'MetaProperty',
MethodDefinition = 'MethodDefinition',
NewExpression = 'NewExpression',
ObjectExpression = 'ObjectExpression',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { NodeTransformationStage } from '../../enums/node-transformers/NodeTrans
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
import { NodeFactory } from '../../node/NodeFactory';
import { NodeGuards } from '../../node/NodeGuards';
import { NodeMetadata } from '../../node/NodeMetadata';

@injectable()
export class MemberExpressionTransformer extends AbstractNodeTransformer {
Expand Down Expand Up @@ -63,6 +64,10 @@ export class MemberExpressionTransformer extends AbstractNodeTransformer {
* @returns {NodeGuards}
*/
public transformNode (memberExpressionNode: ESTree.MemberExpression, parentNode: ESTree.Node): ESTree.Node {
if (NodeMetadata.isIgnoredNode(memberExpressionNode.object) || NodeMetadata.isIgnoredNode(memberExpressionNode.property)) {
return memberExpressionNode;
}

if (NodeGuards.isIdentifierNode(memberExpressionNode.property)) {
if (memberExpressionNode.computed) {
return memberExpressionNode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export class ObfuscatingGuardsTransformer extends AbstractNodeTransformer {
ObfuscatingGuard.ConditionalCommentObfuscatingGuard,
ObfuscatingGuard.ForceTransformStringObfuscatingGuard,
ObfuscatingGuard.IgnoredImportObfuscatingGuard,
ObfuscatingGuard.ImportMetaObfuscationGuard,
ObfuscatingGuard.ReservedStringObfuscatingGuard
];

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { injectable } from 'inversify';

import * as ESTree from 'estree';

import { IObfuscatingGuard } from '../../../interfaces/node-transformers/preparing-transformers/obfuscating-guards/IObfuscatingGuard';

import { ObfuscatingGuardResult } from '../../../enums/node/ObfuscatingGuardResult';

import { NodeGuards } from '../../../node/NodeGuards';

@injectable()
export class ImportMetaObfuscationGuard implements IObfuscatingGuard {
/**
* @param {Node} node
* @returns {ObfuscatingGuardResult}
*/
public check (node: ESTree.Node): ObfuscatingGuardResult {
const isMetaProperty = NodeGuards.isMetaPropertyNode(node);
const isMetaPropertyParent = !!node?.parentNode && NodeGuards.isMetaPropertyNode(node.parentNode);

return isMetaProperty || isMetaPropertyParent ? ObfuscatingGuardResult.Ignore : ObfuscatingGuardResult.Transform;
}
}
8 changes: 8 additions & 0 deletions src/node/NodeGuards.ts
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,14 @@ export class NodeGuards {
return node.type === NodeType.MemberExpression;
}

/**
* @param {Node} node
* @returns {boolean}
*/
public static isMetaPropertyNode (node: ESTree.Node): node is ESTree.MetaProperty {
return node.type === NodeType.MetaProperty;
}

/**
* @param {Node} node
* @returns {boolean}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,7 @@ describe('JavaScriptObfuscator', () => {
});

describe('import.meta support', () => {
const regExp: RegExp = /console\['log']\(import\.meta\['url']\);/;
const regExp: RegExp = /console\['log']\(import\.meta\.url\);/;

let obfuscatedCode: string;

Expand Down