javascript-obfuscator
Advanced tools
+4
-0
| Change Log | ||
| v5.4.3 | ||
| --- | ||
| * Fixed `controlFlowFlattening` occasionally dropping the `?.` short-circuit on `foo?.(arg)` calls, causing `TypeError: <X> is not a function`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1408 | ||
| v5.4.2 | ||
@@ -4,0 +8,0 @@ --- |
+9
-2
@@ -45,3 +45,3 @@ # JavaScript Obfuscator - Project Documentation | ||
| - **AST Traversal**: @javascript-obfuscator/estraverse 5.4.0 | ||
| - **DI Framework**: InversifyJS 6.0.1 | ||
| - **DI Framework**: InversifyJS 7.10.8 | ||
| - **Testing**: Mocha 10.4.0 + Chai 4.3.7 | ||
@@ -214,3 +214,3 @@ - **Build System**: Webpack 5.75.0 | ||
| The project uses **InversifyJS** for dependency injection, providing: | ||
| The project uses **InversifyJS v7** for dependency injection, providing: | ||
@@ -224,2 +224,9 @@ - **Modularity**: Clean separation of concerns | ||
| **Key Changes in InversifyJS v7:** | ||
| - Container modules now use `ContainerModuleLoadOptions` instead of separate `bind`, `unbind`, etc. parameters | ||
| - `getNamed`, `getTagged`, etc. are replaced by `get(serviceId, { name: ... })` or `get(serviceId, { tag: ... })` | ||
| - `load()` and `unload()` are now async, with `loadSync()` and `unloadSync()` alternatives for synchronous operations | ||
| - Types like `Context`, `Newable`, `Factory` are now directly exported instead of through `interfaces` namespace | ||
| - Custom metadata and middleware features have been removed | ||
| ## Key Components Deep Dive | ||
@@ -226,0 +233,0 @@ |
+2
-2
| { | ||
| "name": "javascript-obfuscator", | ||
| "version": "5.4.2", | ||
| "version": "5.4.3", | ||
| "description": "JavaScript obfuscator", | ||
@@ -38,3 +38,3 @@ "keywords": [ | ||
| "fast-deep-equal": "3.1.3", | ||
| "inversify": "6.1.4", | ||
| "inversify": "7.11.0", | ||
| "js-string-escape": "1.0.1", | ||
@@ -41,0 +41,0 @@ "md5": "2.3.0", |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| import { ResolutionContext, ServiceIdentifier } from 'inversify'; | ||
| import { TConstructor } from '../types/TConstructor'; | ||
@@ -8,9 +8,9 @@ import { TInputOptions } from '../types/options/TInputOptions'; | ||
| constructor(); | ||
| static getFactory<T extends string, U>(serviceIdentifier: interfaces.ServiceIdentifier<U>): (context: interfaces.Context) => (bindingName: T) => U; | ||
| static getCacheFactory<T extends string, U>(serviceIdentifier: interfaces.ServiceIdentifier<U>): (context: interfaces.Context) => (bindingName: T) => U; | ||
| static getConstructorFactory<T extends string, U>(serviceIdentifier: interfaces.ServiceIdentifier<TConstructor<Record<string, any>[], U>>, ...dependencies: interfaces.ServiceIdentifier<TConstructor<Record<string, any>[], U>>[]): (context: interfaces.Context) => (bindingName: T) => U; | ||
| get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T; | ||
| getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T; | ||
| static getFactory<T extends string, U>(serviceIdentifier: ServiceIdentifier<U>): (context: ResolutionContext) => (bindingName: T) => U; | ||
| static getCacheFactory<T extends string, U>(serviceIdentifier: ServiceIdentifier<U>): (context: ResolutionContext) => (bindingName: T) => U; | ||
| static getConstructorFactory<T extends string, U>(serviceIdentifier: ServiceIdentifier<TConstructor<Record<string, any>[], U>>, ...dependencies: ServiceIdentifier<TConstructor<Record<string, any>[], U>>[]): (context: ResolutionContext) => (bindingName: T) => U; | ||
| get<T>(serviceIdentifier: ServiceIdentifier<T>): T; | ||
| getNamed<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): T; | ||
| load(sourceCode: string, sourceMap: string, options: TInputOptions): void; | ||
| unload(): void; | ||
| } |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const analyzersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const analyzersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const codeTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const codeTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const customCodeHelpersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const customCodeHelpersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const customNodesModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const customNodesModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const generatorsModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const generatorsModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const controlFlowTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const controlFlowTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const convertingTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const convertingTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const deadCodeInjectionTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const deadCodeInjectionTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const finalizingTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const finalizingTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const initializingTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const initializingTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const nodeTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const nodeTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const preparingTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const preparingTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const renameIdentifiersTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const renameIdentifiersTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const renamePropertiesTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const renamePropertiesTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const simplifyingTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const simplifyingTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const stringArrayTransformersModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const stringArrayTransformersModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const nodeModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const nodeModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const optionsModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const optionsModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const storagesModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const storagesModule: ContainerModule; |
@@ -1,2 +0,2 @@ | ||
| import { interfaces } from 'inversify'; | ||
| export declare const utilsModule: interfaces.ContainerModule; | ||
| import { ContainerModule } from 'inversify'; | ||
| export declare const utilsModule: ContainerModule; |
@@ -1,8 +0,8 @@ | ||
| import { interfaces } from 'inversify'; | ||
| import { ServiceIdentifier } from 'inversify'; | ||
| import { TInputOptions } from '../../types/options/TInputOptions'; | ||
| export interface IInversifyContainerFacade { | ||
| get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T; | ||
| getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T; | ||
| get<T>(serviceIdentifier: ServiceIdentifier<T>): T; | ||
| getNamed<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): T; | ||
| load(sourceCode: string, sourceMap: string, options: TInputOptions): void; | ||
| unload(): void; | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Obfuscated code
Supply chain riskObfuscated files are intentionally packed to hide their behavior. This could be a sign of malware.
Found 1 instance in 1 package
AI-detected potential security risk
Supply chain riskAI has determined that this package may contain potential security issues or vulnerabilities.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 2 instances in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 2 instances in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
11787906
2.43%15724
0.95%2311
0.74%45
-2.17%1
Infinity%15
7.14%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
Updated