javascript-obfuscator 2.19.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +28 -28
  3. package/dist/index.browser.js +1 -1
  4. package/dist/index.browser.js.map +1 -1
  5. package/dist/index.cli.js +1 -1
  6. package/dist/index.cli.js.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/package.json +44 -42
  10. package/typings/src/code-transformers/AbstractCodeTransformer.d.ts +1 -1
  11. package/typings/src/container/InversifyContainerFacade.d.ts +2 -1
  12. package/typings/src/custom-code-helpers/AbstractCustomCodeHelper.d.ts +1 -1
  13. package/typings/src/custom-nodes/AbstractCustomNode.d.ts +1 -1
  14. package/typings/src/custom-nodes/string-array-nodes/AbstractStringArrayCallNode.d.ts +1 -1
  15. package/typings/src/custom-nodes/string-array-nodes/string-array-index-nodes/AbstractStringArrayIndexNode.d.ts +1 -1
  16. package/typings/src/enums/node/NodeType.d.ts +2 -0
  17. package/typings/src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.d.ts +1 -1
  18. package/typings/src/interfaces/options/IOptions.d.ts +3 -3
  19. package/typings/src/node/NodeFactory.d.ts +1 -0
  20. package/typings/src/node/NodeGuards.d.ts +2 -0
  21. package/typings/src/node-transformers/preparing-transformers/obfuscating-guards/{IgnoredRequireImportObfuscatingGuard.d.ts → IgnoredImportObfuscatingGuard.d.ts} +3 -1
  22. package/typings/src/node-transformers/simplifying-transformers/AbstractStatementSimplifyTransformer.d.ts +1 -1
  23. package/typings/src/options/Options.d.ts +3 -3
  24. package/typings/src/storages/ArrayStorage.d.ts +1 -1
  25. package/typings/src/types/TConstructor.d.ts +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "javascript-obfuscator",
3
- "version": "2.19.0",
3
+ "version": "3.1.0",
4
4
  "description": "JavaScript obfuscator",
5
5
  "keywords": [
6
6
  "obfuscator",
@@ -21,76 +21,78 @@
21
21
  },
22
22
  "types": "typings/index.d.ts",
23
23
  "dependencies": {
24
- "@javascript-obfuscator/escodegen": "2.2.1",
25
- "@javascript-obfuscator/estraverse": "5.3.0",
24
+ "@javascript-obfuscator/escodegen": "2.3.0",
25
+ "@javascript-obfuscator/estraverse": "5.4.0",
26
26
  "@nuxtjs/opencollective": "0.3.2",
27
- "acorn": "8.4.1",
27
+ "acorn": "8.7.0",
28
28
  "assert": "2.0.0",
29
- "chalk": "4.1.1",
30
- "chance": "1.1.7",
31
- "class-validator": "0.13.1",
32
- "commander": "8.0.0",
33
- "eslint-scope": "6.0.0",
29
+ "chalk": "4.1.2",
30
+ "chance": "1.1.8",
31
+ "class-validator": "0.13.2",
32
+ "commander": "9.0.0",
33
+ "eslint-scope": "7.1.0",
34
+ "eslint-visitor-keys": "3.2.0",
34
35
  "fast-deep-equal": "3.1.3",
35
- "inversify": "5.1.1",
36
+ "inversify": "6.0.1",
36
37
  "js-string-escape": "1.0.1",
37
38
  "md5": "2.3.0",
38
39
  "mkdirp": "1.0.4",
39
40
  "multimatch": "5.0.0",
40
41
  "process": "0.11.10",
41
42
  "reflect-metadata": "0.1.13",
42
- "source-map-support": "0.5.19",
43
+ "source-map-support": "0.5.21",
43
44
  "string-template": "1.0.0",
44
45
  "stringz": "2.1.0",
45
- "tslib": "2.3.0"
46
+ "tslib": "2.3.1"
46
47
  },
47
48
  "devDependencies": {
48
- "@istanbuljs/nyc-config-typescript": "1.0.1",
49
- "@types/chai": "4.2.21",
49
+ "@istanbuljs/nyc-config-typescript": "1.0.2",
50
+ "@types/chai": "4.3.0",
50
51
  "@types/chance": "1.1.3",
51
52
  "@types/escodegen": "0.0.7",
52
- "@types/eslint-scope": "3.7.1",
53
+ "@types/eslint-scope": "3.7.3",
54
+ "@types/eslint-visitor-keys": "1.0.0",
53
55
  "@types/estraverse": "5.1.1",
54
56
  "@types/estree": "0.0.50",
55
- "@types/js-beautify": "1.13.2",
56
- "@types/js-string-escape": "1.0.0",
57
+ "@types/js-beautify": "1.13.3",
58
+ "@types/js-string-escape": "1.0.1",
57
59
  "@types/md5": "2.3.1",
58
60
  "@types/mkdirp": "1.0.2",
59
- "@types/mocha": "9.0.0",
61
+ "@types/mocha": "9.1.0",
60
62
  "@types/multimatch": "4.0.0",
61
- "@types/node": "16.4.1",
62
- "@types/rimraf": "3.0.1",
63
- "@types/sinon": "10.0.2",
63
+ "@types/node": "17.0.13",
64
+ "@types/rimraf": "3.0.2",
65
+ "@types/sinon": "10.0.9",
64
66
  "@types/string-template": "1.0.2",
65
- "@types/webpack-env": "1.16.2",
66
- "@typescript-eslint/eslint-plugin": "4.28.4",
67
- "@typescript-eslint/parser": "4.28.4",
68
- "chai": "4.3.4",
69
- "chai-exclude": "2.0.3",
67
+ "@types/webpack-env": "1.16.3",
68
+ "@typescript-eslint/eslint-plugin": "5.10.1",
69
+ "@typescript-eslint/parser": "5.10.1",
70
+ "chai": "4.3.6",
71
+ "chai-exclude": "2.1.0",
70
72
  "cross-env": "7.0.3",
71
- "eslint": "7.31.0",
72
- "eslint-plugin-import": "2.23.4",
73
- "eslint-plugin-jsdoc": "35.5.1",
73
+ "eslint": "8.8.0",
74
+ "eslint-plugin-import": "2.25.4",
75
+ "eslint-plugin-jsdoc": "37.7.0",
74
76
  "eslint-plugin-no-null": "1.0.2",
75
77
  "eslint-plugin-prefer-arrow": "1.2.3",
76
- "eslint-plugin-unicorn": "34.0.1",
78
+ "eslint-plugin-unicorn": "40.1.0",
77
79
  "fork-ts-checker-notifier-webpack-plugin": "4.0.0",
78
- "fork-ts-checker-webpack-plugin": "6.2.12",
79
- "husky": "^7.0.1",
80
+ "fork-ts-checker-webpack-plugin": "6.4.0",
81
+ "husky": "7.0.4",
80
82
  "js-beautify": "1.14.0",
81
- "mocha": "9.0.2",
83
+ "mocha": "9.2.0",
82
84
  "nyc": "15.1.0",
83
85
  "pjson": "1.0.9",
84
86
  "rimraf": "3.0.2",
85
- "sinon": "11.1.1",
87
+ "sinon": "13.0.0",
86
88
  "source-map-resolve": "0.6.0",
87
- "terser": "^5.7.1",
88
- "threads": "1.6.5",
89
- "ts-loader": "9.2.3",
90
- "ts-node": "10.1.0",
91
- "typescript": "4.4.0-beta",
92
- "webpack": "5.46.0",
93
- "webpack-cli": "4.7.2",
89
+ "terser": "5.10.0",
90
+ "threads": "1.7.0",
91
+ "ts-loader": "9.2.6",
92
+ "ts-node": "10.4.0",
93
+ "typescript": "4.5.5",
94
+ "webpack": "5.67.0",
95
+ "webpack-cli": "4.9.2",
94
96
  "webpack-node-externals": "3.0.0"
95
97
  },
96
98
  "repository": {
@@ -111,7 +113,7 @@
111
113
  "test:mocha": "mocha --require ts-node/register --require source-map-support/register test/index.spec.ts --exit",
112
114
  "test:mocha-coverage": "nyc --reporter text-summary --no-clean yarn run test:mocha",
113
115
  "test:mocha-coverage:report": "nyc report --reporter=lcov",
114
- "test:mocha-memory-performance": "cross-env NODE_OPTIONS=--max-old-space-size=220 mocha --require ts-node/register test/performance-tests/JavaScriptObfuscatorMemory.spec.ts",
116
+ "test:mocha-memory-performance": "cross-env NODE_OPTIONS=--max-old-space-size=230 mocha --require ts-node/register test/performance-tests/JavaScriptObfuscatorMemory.spec.ts",
115
117
  "test": "yarn run test:full",
116
118
  "eslint": "eslint src/**/*.ts",
117
119
  "git:addFiles": "git add .",
@@ -7,6 +7,6 @@ export declare abstract class AbstractCodeTransformer implements ICodeTransforme
7
7
  readonly runAfter: CodeTransformer[] | undefined;
8
8
  protected readonly options: IOptions;
9
9
  protected readonly randomGenerator: IRandomGenerator;
10
- protected constructor(randomGenerator: IRandomGenerator, options: IOptions);
10
+ constructor(randomGenerator: IRandomGenerator, options: IOptions);
11
11
  abstract transformCode(code: string, codeTransformationStage: CodeTransformationStage): string;
12
12
  }
@@ -1,4 +1,5 @@
1
1
  import { interfaces } from 'inversify';
2
+ import { TConstructor } from '../types/TConstructor';
2
3
  import { TInputOptions } from '../types/options/TInputOptions';
3
4
  import { IInversifyContainerFacade } from '../interfaces/container/IInversifyContainerFacade';
4
5
  export declare class InversifyContainerFacade implements IInversifyContainerFacade {
@@ -6,7 +7,7 @@ export declare class InversifyContainerFacade implements IInversifyContainerFaca
6
7
  constructor();
7
8
  static getFactory<T extends string, U>(serviceIdentifier: interfaces.ServiceIdentifier<U>): (context: interfaces.Context) => (bindingName: T) => U;
8
9
  static getCacheFactory<T extends string, U>(serviceIdentifier: interfaces.ServiceIdentifier<U>): (context: interfaces.Context) => (bindingName: T) => U;
9
- static getConstructorFactory<T extends string, U>(serviceIdentifier: interfaces.ServiceIdentifier<interfaces.Newable<U>>, ...dependencies: interfaces.ServiceIdentifier<interfaces.Newable<Record<string, any>>>[]): (context: interfaces.Context) => (bindingName: T) => U;
10
+ 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;
10
11
  get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T;
11
12
  getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T;
12
13
  load(sourceCode: string, sourceMap: string, options: TInputOptions): void;
@@ -14,7 +14,7 @@ export declare abstract class AbstractCustomCodeHelper<TInitialData extends unkn
14
14
  protected readonly identifierNamesGenerator: IIdentifierNamesGenerator;
15
15
  protected readonly options: IOptions;
16
16
  protected readonly randomGenerator: IRandomGenerator;
17
- protected constructor(identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory, customCodeHelperFormatter: ICustomCodeHelperFormatter, customCodeHelperObfuscator: ICustomCodeHelperObfuscator, randomGenerator: IRandomGenerator, options: IOptions);
17
+ constructor(identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory, customCodeHelperFormatter: ICustomCodeHelperFormatter, customCodeHelperObfuscator: ICustomCodeHelperObfuscator, randomGenerator: IRandomGenerator, options: IOptions);
18
18
  getNode(): TStatement[];
19
19
  protected getGlobalVariableTemplate(): string;
20
20
  protected getCodeHelperTemplate(): string;
@@ -11,7 +11,7 @@ export declare abstract class AbstractCustomNode<TInitialData extends unknown[]
11
11
  protected readonly identifierNamesGenerator: IIdentifierNamesGenerator;
12
12
  protected readonly options: IOptions;
13
13
  protected readonly randomGenerator: IRandomGenerator;
14
- protected constructor(identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory, customCodeHelperFormatter: ICustomCodeHelperFormatter, randomGenerator: IRandomGenerator, options: IOptions);
14
+ constructor(identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory, customCodeHelperFormatter: ICustomCodeHelperFormatter, randomGenerator: IRandomGenerator, options: IOptions);
15
15
  getNode(): TStatement[];
16
16
  abstract initialize(...args: TInitialData): void;
17
17
  protected abstract getNodeStructure(): TStatement[];
@@ -13,7 +13,7 @@ export declare abstract class AbstractStringArrayCallNode extends AbstractCustom
13
13
  protected readonly arrayUtils: IArrayUtils;
14
14
  protected readonly stringArrayStorage: IStringArrayStorage;
15
15
  private readonly stringArrayIndexNodeFactory;
16
- protected constructor(identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory, stringArrayIndexNodeFactory: TStringArrayIndexNodeFactory, customCodeHelperFormatter: ICustomCodeHelperFormatter, stringArrayStorage: IStringArrayStorage, arrayUtils: IArrayUtils, randomGenerator: IRandomGenerator, options: IOptions);
16
+ constructor(identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory, stringArrayIndexNodeFactory: TStringArrayIndexNodeFactory, customCodeHelperFormatter: ICustomCodeHelperFormatter, stringArrayStorage: IStringArrayStorage, arrayUtils: IArrayUtils, randomGenerator: IRandomGenerator, options: IOptions);
17
17
  protected getStringArrayIndexNode(index: number): ESTree.Expression;
18
18
  protected getRc4KeyLiteralNode(decodeKey: string): ESTree.Literal;
19
19
  }
@@ -5,6 +5,6 @@ import { IStringArrayIndexNode } from '../../../interfaces/custom-nodes/string-a
5
5
  export declare abstract class AbstractStringArrayIndexNode implements IStringArrayIndexNode {
6
6
  protected readonly options: IOptions;
7
7
  protected readonly randomGenerator: IRandomGenerator;
8
- protected constructor(randomGenerator: IRandomGenerator, options: IOptions);
8
+ constructor(randomGenerator: IRandomGenerator, options: IOptions);
9
9
  abstract getNode(index: number): ESTree.Expression;
10
10
  }
@@ -28,6 +28,7 @@ export declare enum NodeType {
28
28
  Identifier = "Identifier",
29
29
  IfStatement = "IfStatement",
30
30
  ImportDeclaration = "ImportDeclaration",
31
+ ImportExpression = "ImportExpression",
31
32
  ImportDefaultSpecifier = "ImportDefaultSpecifier",
32
33
  ImportNamespaceSpecifier = "ImportNamespaceSpecifier",
33
34
  ImportSpecifier = "ImportSpecifier",
@@ -46,6 +47,7 @@ export declare enum NodeType {
46
47
  ReturnStatement = "ReturnStatement",
47
48
  SequenceExpression = "SequenceExpression",
48
49
  SpreadElement = "SpreadElement",
50
+ StaticBlock = "StaticBlock",
49
51
  Super = "Super",
50
52
  SwitchCase = "SwitchCase",
51
53
  SwitchStatement = "SwitchStatement",
@@ -2,6 +2,6 @@ export declare enum ObfuscatingGuard {
2
2
  BlackListObfuscatingGuard = "BlackListObfuscatingGuard",
3
3
  ConditionalCommentObfuscatingGuard = "ConditionalCommentObfuscatingGuard",
4
4
  ForceTransformStringObfuscatingGuard = "ForceTransformStringObfuscatingGuard",
5
- IgnoredRequireImportObfuscatingGuard = "IgnoredRequireImportObfuscatingGuard",
5
+ IgnoredImportObfuscatingGuard = "IgnoredImportObfuscatingGuard",
6
6
  ReservedStringObfuscatingGuard = "ReservedStringObfuscatingGuard"
7
7
  }
@@ -25,7 +25,7 @@ export interface IOptions {
25
25
  readonly identifierNamesGenerator: TTypeFromEnum<typeof IdentifierNamesGenerator>;
26
26
  readonly identifiersDictionary: string[];
27
27
  readonly identifiersPrefix: string;
28
- readonly ignoreRequireImports: boolean;
28
+ readonly ignoreImports: boolean;
29
29
  readonly inputFileName: string;
30
30
  readonly log: boolean;
31
31
  readonly numbersToExpressions: boolean;
@@ -35,10 +35,8 @@ export interface IOptions {
35
35
  readonly renamePropertiesMode: TRenamePropertiesMode;
36
36
  readonly reservedNames: string[];
37
37
  readonly reservedStrings: string[];
38
- readonly rotateStringArray: boolean;
39
38
  readonly seed: string | number;
40
39
  readonly selfDefending: boolean;
41
- readonly shuffleStringArray: boolean;
42
40
  readonly simplify: boolean;
43
41
  readonly sourceMap: boolean;
44
42
  readonly sourceMapBaseUrl: string;
@@ -51,6 +49,8 @@ export interface IOptions {
51
49
  readonly stringArrayEncoding: TStringArrayEncoding[];
52
50
  readonly stringArrayIndexesType: TStringArrayIndexesType[];
53
51
  readonly stringArrayIndexShift: boolean;
52
+ readonly stringArrayRotate: boolean;
53
+ readonly stringArrayShuffle: boolean;
54
54
  readonly stringArrayWrappersChainedCalls: boolean;
55
55
  readonly stringArrayWrappersCount: number;
56
56
  readonly stringArrayWrappersParametersMaxCount: number;
@@ -33,6 +33,7 @@ export declare class NodeFactory {
33
33
  static returnStatementNode(argument: ESTree.Expression): ESTree.ReturnStatement;
34
34
  static sequenceExpressionNode(expressions: ESTree.Expression[]): ESTree.SequenceExpression;
35
35
  static spreadElementNode(argument: ESTree.Expression): ESTree.SpreadElement;
36
+ static staticBlockNode(body?: ESTree.Statement[]): ESTree.StaticBlock;
36
37
  static switchStatementNode(discriminant: ESTree.Expression, cases: ESTree.SwitchCase[]): ESTree.SwitchStatement;
37
38
  static switchCaseNode(test: ESTree.Expression, consequent: ESTree.Statement[]): ESTree.SwitchCase;
38
39
  static unaryExpressionNode(operator: ESTree.UnaryOperator, argument: ESTree.Expression, prefix?: true): ESTree.UnaryExpression;
@@ -38,6 +38,7 @@ export declare class NodeGuards {
38
38
  static isIfStatementNode(node: ESTree.Node): node is ESTree.IfStatement;
39
39
  static isIfStatementNodeWithSingleStatementBody(node: ESTree.Node): node is ESTree.IfStatement;
40
40
  static isImportDeclarationNode(node: ESTree.Node): node is ESTree.ImportDeclaration;
41
+ static isImportExpressionNode(node: ESTree.Node): node is ESTree.ImportExpression;
41
42
  static isImportSpecifierNode(node: ESTree.Node): node is ESTree.ImportSpecifier;
42
43
  static isLabelIdentifierNode(node: ESTree.Node, parentNode: ESTree.Node): node is ESTree.Identifier;
43
44
  static isLabeledStatementNode(node: ESTree.Node): node is ESTree.LabeledStatement;
@@ -64,6 +65,7 @@ export declare class NodeGuards {
64
65
  static isReturnStatementNode(node: ESTree.Node): node is ESTree.ReturnStatement;
65
66
  static isSequenceExpressionNode(node: ESTree.Node): node is ESTree.SequenceExpression;
66
67
  static isSpreadElementNode(node: ESTree.Node): node is ESTree.SpreadElement;
68
+ static isStaticBlockNode(node: ESTree.Node): boolean;
67
69
  static isSuperNode(node: ESTree.Node): node is ESTree.Super;
68
70
  static isSwitchCaseNode(node: ESTree.Node): node is ESTree.SwitchCase;
69
71
  static isTaggedTemplateExpressionNode(node: ESTree.Node): node is ESTree.TaggedTemplateExpression;
@@ -2,8 +2,10 @@ import * as ESTree from 'estree';
2
2
  import { IObfuscatingGuard } from '../../../interfaces/node-transformers/preparing-transformers/obfuscating-guards/IObfuscatingGuard';
3
3
  import { IOptions } from '../../../interfaces/options/IOptions';
4
4
  import { ObfuscatingGuardResult } from '../../../enums/node/ObfuscatingGuardResult';
5
- export declare class IgnoredRequireImportObfuscatingGuard implements IObfuscatingGuard {
5
+ export declare class IgnoredImportObfuscatingGuard implements IObfuscatingGuard {
6
6
  private readonly options;
7
7
  constructor(options: IOptions);
8
+ private static isDynamicImport;
9
+ private static isRequireImport;
8
10
  check(node: ESTree.Node): ObfuscatingGuardResult;
9
11
  }
@@ -7,7 +7,7 @@ import { NodeTransformer } from '../../enums/node-transformers/NodeTransformer';
7
7
  import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
8
8
  export declare abstract class AbstractStatementSimplifyTransformer extends AbstractNodeTransformer {
9
9
  readonly runAfter: NodeTransformer[];
10
- protected constructor(randomGenerator: IRandomGenerator, options: IOptions);
10
+ constructor(randomGenerator: IRandomGenerator, options: IOptions);
11
11
  protected getStatementSimplifyData(statementNode: ESTree.Statement | null | undefined): IStatementSimplifyData | null;
12
12
  protected collectIteratedStatementsSimplifyData(statementNode: ESTree.BlockStatement): IIteratedStatementsSimplifyData;
13
13
  protected getLeadingStatements(statementNode: ESTree.BlockStatement, startIndex: number | null): ESTree.Statement[];
@@ -30,7 +30,7 @@ export declare class Options implements IOptions {
30
30
  readonly identifierNamesGenerator: TTypeFromEnum<typeof IdentifierNamesGenerator>;
31
31
  readonly identifiersPrefix: string;
32
32
  readonly identifiersDictionary: string[];
33
- readonly ignoreRequireImports: boolean;
33
+ readonly ignoreImports: boolean;
34
34
  readonly inputFileName: string;
35
35
  readonly log: boolean;
36
36
  readonly numbersToExpressions: boolean;
@@ -40,9 +40,7 @@ export declare class Options implements IOptions {
40
40
  readonly renamePropertiesMode: TRenamePropertiesMode;
41
41
  readonly reservedNames: string[];
42
42
  readonly reservedStrings: string[];
43
- readonly rotateStringArray: boolean;
44
43
  readonly selfDefending: boolean;
45
- readonly shuffleStringArray: boolean;
46
44
  readonly simplify: boolean;
47
45
  readonly sourceMap: boolean;
48
46
  readonly sourceMapBaseUrl: string;
@@ -55,6 +53,8 @@ export declare class Options implements IOptions {
55
53
  readonly stringArrayEncoding: TStringArrayEncoding[];
56
54
  readonly stringArrayIndexesType: TStringArrayIndexesType[];
57
55
  readonly stringArrayIndexShift: boolean;
56
+ readonly stringArrayRotate: boolean;
57
+ readonly stringArrayShuffle: boolean;
58
58
  readonly stringArrayWrappersChainedCalls: boolean;
59
59
  readonly stringArrayWrappersCount: number;
60
60
  readonly stringArrayWrappersParametersMaxCount: number;
@@ -7,7 +7,7 @@ export declare abstract class ArrayStorage<V> implements IArrayStorage<V> {
7
7
  protected readonly randomGenerator: IRandomGenerator;
8
8
  protected readonly options: IOptions;
9
9
  private storageLength;
10
- protected constructor(randomGenerator: IRandomGenerator, options: IOptions);
10
+ constructor(randomGenerator: IRandomGenerator, options: IOptions);
11
11
  initialize(): void;
12
12
  delete(key: number): V | undefined;
13
13
  get(key: number): V | undefined;
@@ -0,0 +1 @@
1
+ export declare type TConstructor<TArgs extends any[], TInstanceType> = new (...args: TArgs) => TInstanceType;