X Tutup
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 @@ -6,6 +6,7 @@ v0.24.0
* Dynamic import and `import.meta` support. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/505
* Now usage of some browser-related options with `target: 'node'` will cause a validation error
* **CLI:** a file path will be displayed on obfuscation error. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/513
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/516
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/512
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/496
* **Internal:** switched from `awesome-typescript-loader` on `ts-loader`
Expand Down
12 changes: 6 additions & 6 deletions dist/index.browser.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/index.cli.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "javascript-obfuscator",
"version": "0.24.0-rc.0",
"version": "0.24.0-rc.1",
"description": "JavaScript obfuscator",
"keywords": [
"obfuscator",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { IStringArrayStorageItemData } from '../../interfaces/storages/string-ar

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

/**
* Adds values of literal nodes to the string array storage
Expand Down Expand Up @@ -67,7 +68,11 @@ export class StringArrayStorageAnalyzer implements IStringArrayStorageAnalyzer {
}

estraverse.traverse(astTree, {
enter: (node: ESTree.Node): estraverse.VisitorOption | void => {
enter: (node: ESTree.Node, parentNode: ESTree.Node | null): estraverse.VisitorOption | void => {
if (!parentNode) {
return;
}

if (NodeMetadata.isIgnoredNode(node)) {
return estraverse.VisitorOption.Skip;
}
Expand All @@ -76,7 +81,7 @@ export class StringArrayStorageAnalyzer implements IStringArrayStorageAnalyzer {
return;
}

this.analyzeLiteralNode(node);
this.analyzeLiteralNode(node, parentNode);
}
});
}
Expand All @@ -91,12 +96,17 @@ export class StringArrayStorageAnalyzer implements IStringArrayStorageAnalyzer {

/**
* @param {Literal} literalNode
* @param {Node} parentNode
*/
private analyzeLiteralNode (literalNode: ESTree.Literal): void {
private analyzeLiteralNode (literalNode: ESTree.Literal, parentNode: ESTree.Node): void {
if (typeof literalNode.value !== 'string') {
return;
}

if (NodeLiteralUtils.isProhibitedLiteralNode(literalNode, parentNode)) {
return;
}

if (!this.shouldAddValueToStringArray(literalNode.value)) {
return;
}
Expand Down
4 changes: 2 additions & 2 deletions src/container/ServiceIdentifiers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export enum ServiceIdentifiers {
Factory__IObfuscatedCode = 'Factory<IObfuscatedCode>',
Factory__IObfuscatingReplacer = 'Factory<IObfuscatingReplacer>',
Factory__IObjectExpressionKeysTransformerCustomNode = 'Factory<IObjectExpressionKeysTransformerCustomNode>',
Factory__IPropertiesExtractor = 'Factory<IPropertiesExtractor>',
Factory__IObjectExpressionExtractor = 'Factory<IObjectExpressionExtractor>',
Factory__TControlFlowStorage = 'Factory<TControlFlowStorage>',
IArrayUtils = 'IArrayUtils',
ICalleeDataExtractor = 'ICalleeDataExtractor',
Expand All @@ -37,7 +37,7 @@ export enum ServiceIdentifiers {
IOptionsNormalizer = 'IOptionsNormalizer',
IObfuscatingReplacer = 'IObfuscatingReplacer',
IPrevailingKindOfVariablesAnalyzer = 'IPrevailingKindOfVariablesAnalyzer',
IPropertiesExtractor = 'IPropertiesExtractor',
IObjectExpressionExtractor = 'IObjectExpressionExtractor',
IRandomGenerator = 'IRandomGenerator',
ISourceCode = 'ISourceCode',
ISourceMapCorrector = 'ISourceMapCorrector',
Expand Down
6 changes: 3 additions & 3 deletions src/container/modules/custom-nodes/CustomNodesModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { DomainLockCustomNodeGroup } from '../../../custom-nodes/domain-lock-nod
import { SelfDefendingCustomNodeGroup } from '../../../custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup';
import { StringArrayCustomNodeGroup } from '../../../custom-nodes/string-array-nodes/group/StringArrayCustomNodeGroup';

import { BasePropertiesExtractorObjectExpressionHostNode } from '../../../custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode';
import { ObjectExpressionVariableDeclarationHostNode } from '../../../custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode';
import { BinaryExpressionFunctionNode } from '../../../custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode';
import { BlockStatementControlFlowFlatteningNode } from '../../../custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode';
import { BlockStatementDeadCodeInjectionNode } from '../../../custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode';
Expand Down Expand Up @@ -127,8 +127,8 @@ export const customNodesModule: interfaces.ContainerModule = new ContainerModule

// object expression keys transformer nodes
bind<interfaces.Newable<ICustomNode>>(ServiceIdentifiers.Newable__ICustomNode)
.toConstructor(BasePropertiesExtractorObjectExpressionHostNode)
.whenTargetNamed(ObjectExpressionKeysTransformerCustomNode.BasePropertiesExtractorObjectExpressionHostNode);
.toConstructor(ObjectExpressionVariableDeclarationHostNode)
.whenTargetNamed(ObjectExpressionKeysTransformerCustomNode.ObjectExpressionVariableDeclarationHostNode);

// node groups
bind<ICustomNodeGroup>(ServiceIdentifiers.ICustomNodeGroup)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,19 @@ import { InversifyContainerFacade } from '../../InversifyContainerFacade';
import { ServiceIdentifiers } from '../../ServiceIdentifiers';

import { INodeTransformer } from '../../../interfaces/node-transformers/INodeTransformer';
import { IPropertiesExtractor } from '../../../interfaces/node-transformers/converting-transformers/properties-extractors/IPropertiesExtractor';
import { IObjectExpressionExtractor } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor';

import { NodeTransformer } from '../../../enums/node-transformers/NodeTransformer';
import { PropertiesExtractor } from '../../../enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor';
import { ObjectExpressionExtractor } from '../../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor';

import { AssignmentExpressionPropertiesExtractor } from '../../../node-transformers/converting-transformers/properties-extractors/AssignmentExpressionPropertiesExtractor';
import { BasePropertiesExtractor } from '../../../node-transformers/converting-transformers/properties-extractors/BasePropertiesExtractor';
import { ObjectExpressionToVariableDeclarationExtractor } from '../../../node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor';
import { MemberExpressionTransformer } from '../../../node-transformers/converting-transformers/MemberExpressionTransformer';
import { MethodDefinitionTransformer } from '../../../node-transformers/converting-transformers/MethodDefinitionTransformer';
import { ObjectExpressionKeysTransformer } from '../../../node-transformers/converting-transformers/ObjectExpressionKeysTransformer';
import { ObjectExpressionTransformer } from '../../../node-transformers/converting-transformers/ObjectExpressionTransformer';
import { SplitStringTransformer } from '../../../node-transformers/converting-transformers/SplitStringTransformer';
import { TemplateLiteralTransformer } from '../../../node-transformers/converting-transformers/TemplateLiteralTransformer';
import { VariableDeclaratorPropertiesExtractor } from '../../../node-transformers/converting-transformers/properties-extractors/VariableDeclaratorPropertiesExtractor';
import { BasePropertiesExtractor } from '../../../node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor';

export const convertingTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
// converting transformers
Expand Down Expand Up @@ -44,23 +43,19 @@ export const convertingTransformersModule: interfaces.ContainerModule = new Cont
.to(TemplateLiteralTransformer)
.whenTargetNamed(NodeTransformer.TemplateLiteralTransformer);

// properties extractors
bind<IPropertiesExtractor>(ServiceIdentifiers.IPropertiesExtractor)
.to(AssignmentExpressionPropertiesExtractor)
.whenTargetNamed(PropertiesExtractor.AssignmentExpressionPropertiesExtractor);
// object expression extractors
bind<IObjectExpressionExtractor>(ServiceIdentifiers.IObjectExpressionExtractor)
.to(ObjectExpressionToVariableDeclarationExtractor)
.whenTargetNamed(ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor);

bind<IPropertiesExtractor>(ServiceIdentifiers.IPropertiesExtractor)
bind<IObjectExpressionExtractor>(ServiceIdentifiers.IObjectExpressionExtractor)
.to(BasePropertiesExtractor)
.whenTargetNamed(PropertiesExtractor.BasePropertiesExtractor);
.whenTargetNamed(ObjectExpressionExtractor.BasePropertiesExtractor);

bind<IPropertiesExtractor>(ServiceIdentifiers.IPropertiesExtractor)
.to(VariableDeclaratorPropertiesExtractor)
.whenTargetNamed(PropertiesExtractor.VariableDeclaratorPropertiesExtractor);

// properties extractor factory
bind<IPropertiesExtractor>(ServiceIdentifiers.Factory__IPropertiesExtractor)
.toFactory<IPropertiesExtractor>(InversifyContainerFacade
.getCacheFactory<PropertiesExtractor, IPropertiesExtractor>(
ServiceIdentifiers.IPropertiesExtractor
// object expression extractor factory
bind<IObjectExpressionExtractor>(ServiceIdentifiers.Factory__IObjectExpressionExtractor)
.toFactory<IObjectExpressionExtractor>(InversifyContainerFacade
.getCacheFactory<ObjectExpressionExtractor, IObjectExpressionExtractor>(
ServiceIdentifiers.IObjectExpressionExtractor
));
});
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { inject, injectable, } from 'inversify';
import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';

import * as ESTree from 'estree';

import { TIdentifierNamesGeneratorFactory } from '../../types/container/generators/TIdentifierNamesGeneratorFactory';
import { TStatement } from '../../types/node/TStatement';

Expand All @@ -12,7 +14,12 @@ import { AbstractCustomNode } from '../AbstractCustomNode';
import { NodeFactory } from '../../node/NodeFactory';

@injectable()
export class BasePropertiesExtractorObjectExpressionHostNode extends AbstractCustomNode {
export class ObjectExpressionVariableDeclarationHostNode extends AbstractCustomNode {
/**
* @ type {Property}
*/
private properties!: ESTree.Property[];

/**
* @param {TIdentifierNamesGeneratorFactory} identifierNamesGeneratorFactory
* @param {ICustomNodeFormatter} customNodeFormatter
Expand All @@ -29,7 +36,9 @@ export class BasePropertiesExtractorObjectExpressionHostNode extends AbstractCus
super(identifierNamesGeneratorFactory, customNodeFormatter, randomGenerator, options);
}

public initialize (): void {}
public initialize (properties: ESTree.Property[]): void {
this.properties = properties;
}

/**
* @param {string} nodeTemplate
Expand All @@ -42,7 +51,7 @@ export class BasePropertiesExtractorObjectExpressionHostNode extends AbstractCus
NodeFactory.identifierNode(
this.identifierNamesGenerator.generate()
),
NodeFactory.objectExpressionNode([])
NodeFactory.objectExpressionNode(this.properties)
)
],
'const'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum ObjectExpressionKeysTransformerCustomNode {
BasePropertiesExtractorObjectExpressionHostNode =
'BasePropertiesExtractorObjectExpressionHostNode'
ObjectExpressionVariableDeclarationHostNode =
'ObjectExpressionVariableDeclarationHostNode'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export enum ObjectExpressionExtractor {
BasePropertiesExtractor = 'BasePropertiesExtractor',
ObjectExpressionToVariableDeclarationExtractor = 'ObjectExpressionToVariableDeclarationExtractor'
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import * as ESTree from 'estree';

import { IObjectExpressionExtractorResult } from './IObjectExpressionExtractorResult';

export interface IObjectExpressionExtractor {
/**
* @param {ObjectExpression} objectExpressionNode
* @param {Statement} hostStatement
* @returns {IObjectExpressionExtractorResult}
*/
extract (
objectExpressionNode: ESTree.ObjectExpression,
hostStatement: ESTree.Statement
): IObjectExpressionExtractorResult;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import * as ESTree from 'estree';

export interface IObjectExpressionExtractorResult {
/**
* @type {Node}
*/
nodeToReplace: ESTree.Node;

/**
* @type {Statement}
*/
objectExpressionHostStatement: ESTree.Statement;

/**
* @type {ObjectExpression}
*/
objectExpressionNode: ESTree.ObjectExpression;
}

This file was deleted.

Loading
X Tutup