anobis
Version:
JavaScript obfuscator
71 lines (57 loc) • 2.46 kB
text/typescript
import { injectable, inject, postConstruct } from 'inversify';
import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
import { TCustomNodeGroupFactory } from '../../types/container/custom-nodes/TCustomNodeGroupFactory';
import { ICustomNodeGroup } from '../../interfaces/custom-nodes/ICustomNodeGroup';
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { CustomNodeGroup } from '../../enums/container/custom-nodes/CustomNodeGroup';
import { MapStorage } from '../MapStorage';
()
export class CustomNodeGroupStorage extends MapStorage <ICustomNodeGroup> {
/**
* @type {CustomNodeGroup[]}
*/
private static readonly customNodeGroupsList: CustomNodeGroup[] = [
CustomNodeGroup.ConsoleOutputCustomNodeGroup,
CustomNodeGroup.DebugProtectionCustomNodeGroup,
CustomNodeGroup.DomainLockCustomNodeGroup,
CustomNodeGroup.SelfDefendingCustomNodeGroup,
CustomNodeGroup.StringArrayCustomNodeGroup
];
/**
* @type {TCustomNodesFactoriesFactory}
*/
private readonly customNodeGroupFactory: TCustomNodeGroupFactory;
/**
* @type {IOptions}
*/
private readonly options: IOptions;
/**
* @param {TCustomNodeGroupFactory} customNodeGroupFactory
* @param {IRandomGenerator} randomGenerator
* @param {IOptions} options
*/
constructor (
(ServiceIdentifiers.Factory__ICustomNodeGroup) customNodeGroupFactory: TCustomNodeGroupFactory,
(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
(ServiceIdentifiers.IOptions) options: IOptions
) {
super(randomGenerator);
this.customNodeGroupFactory = customNodeGroupFactory;
this.options = options;
}
()
public initialize (): void {
this.storage = new Map <string, ICustomNodeGroup>();
this.storageId = this.randomGenerator.getRandomString(6);
CustomNodeGroupStorage.customNodeGroupsList.forEach((customNodeGroupName: CustomNodeGroup) => {
const customNodeGroup: ICustomNodeGroup = this.customNodeGroupFactory(
customNodeGroupName
);
if (!customNodeGroup) {
return;
}
this.storage.set(customNodeGroupName, customNodeGroup);
});
}
}