From d08a1e407568363ea9eace4204d22f278057f0d9 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Tue, 20 Mar 2018 00:17:20 +0300 Subject: [PATCH] Splitted IStorage into two separate interfaces for map and array storages --- package.json | 2 +- .../{IStorage.d.ts => IArrayStorage.d.ts} | 22 ++++---- src/interfaces/storages/IMapStorage.d.ts | 52 +++++++++++++++++++ src/storages/ArrayStorage.ts | 26 +++++----- src/storages/MapStorage.ts | 36 ++++++------- .../control-flow/ControlFlowStorage.ts | 2 +- .../CustomNodeGroupStorage.ts | 2 +- src/types/storages/TControlFlowStorage.d.ts | 4 +- .../storages/TCustomNodeGroupStorage.d.ts | 4 +- src/types/storages/TStringArrayStorage.d.ts | 4 +- ...inaryExpressionControlFlowReplacer.spec.ts | 2 +- .../CallExpressionControlFlowReplacer.spec.ts | 2 +- ...gicalExpressionControlFlowReplacer.spec.ts | 2 +- .../StringLiteralControlFlowReplacer.spec.ts | 2 +- test/unit-tests/storages/ArrayStorage.spec.ts | 35 +++++++------ test/unit-tests/storages/MapStorage.spec.ts | 44 ++++++++-------- yarn.lock | 11 ++-- 17 files changed, 155 insertions(+), 97 deletions(-) rename src/interfaces/storages/{IStorage.d.ts => IArrayStorage.d.ts} (60%) create mode 100644 src/interfaces/storages/IMapStorage.d.ts diff --git a/package.json b/package.json index f2215f4e..1d8e2135 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@babel/runtime": "7.0.0-beta.42", "chalk": "2.3.2", "chance": "1.0.13", - "class-validator": "0.8.1", + "class-validator": "0.8.4", "commander": "2.15.0", "escodegen-wallaby": "1.6.18", "esprima": "4.0.0", diff --git a/src/interfaces/storages/IStorage.d.ts b/src/interfaces/storages/IArrayStorage.d.ts similarity index 60% rename from src/interfaces/storages/IStorage.d.ts rename to src/interfaces/storages/IArrayStorage.d.ts index f76fab01..ab4239c7 100644 --- a/src/interfaces/storages/IStorage.d.ts +++ b/src/interfaces/storages/IArrayStorage.d.ts @@ -1,17 +1,17 @@ import { IInitializable } from '../IInitializable'; -export interface IStorage extends IInitializable { +export interface IArrayStorage extends IInitializable { /** - * @param key - * @returns T + * @param {number} key + * @returns {V} */ - get (key: string | number): T; + get (key: number): V; /** * @param value - * @returns string | number | null + * @returns number | null */ - getKeyOf (value: T): string | number | null; + getKeyOf (value: V): number | null; /** * @returns number @@ -19,9 +19,9 @@ export interface IStorage extends IInitializable { getLength (): number; /** - * @returns any + * @returns {V[]} */ - getStorage (): any; + getStorage (): V[]; /** * @returns string @@ -40,10 +40,10 @@ export interface IStorage extends IInitializable { mergeWith (storage: this, mergeId: boolean): void; /** - * @param key - * @param value + * @param {number} key + * @param {V} value */ - set (key: string | number, value: T): void; + set (key: number, value: V): void; /** * @returns string diff --git a/src/interfaces/storages/IMapStorage.d.ts b/src/interfaces/storages/IMapStorage.d.ts new file mode 100644 index 00000000..7db7732d --- /dev/null +++ b/src/interfaces/storages/IMapStorage.d.ts @@ -0,0 +1,52 @@ +import { IInitializable } from '../IInitializable'; + +export interface IMapStorage extends IInitializable { + /** + * @param {K} key + * @returns {V} + */ + get (key: K): V; + + /** + * @param {V} value + * @returns {K | null} + */ + getKeyOf (value: V): K | null; + + /** + * @returns number + */ + getLength (): number; + + /** + * @returns {Map} + */ + getStorage (): Map ; + + /** + * @returns string + */ + getStorageId (): string; + + /** + * @param args + */ + initialize (...args: any[]): void; + + /** + * @param storage + * @param mergeId + */ + mergeWith (storage: this, mergeId: boolean): void; + + /** + * @param {K} key + * @param {V} value + */ + set (key: K, value: V): void; + + /** + * @returns string + */ + toString (): string; +} diff --git a/src/storages/ArrayStorage.ts b/src/storages/ArrayStorage.ts index 3b3eb691..66ddadb4 100644 --- a/src/storages/ArrayStorage.ts +++ b/src/storages/ArrayStorage.ts @@ -1,14 +1,14 @@ import { inject, injectable, postConstruct } from 'inversify'; import { ServiceIdentifiers } from '../container/ServiceIdentifiers'; +import { IArrayStorage } from '../interfaces/storages/IArrayStorage'; import { IOptions } from '../interfaces/options/IOptions'; import { IRandomGenerator } from '../interfaces/utils/IRandomGenerator'; -import { IStorage } from '../interfaces/storages/IStorage'; import { initializable } from '../decorators/Initializable'; @injectable() -export abstract class ArrayStorage implements IStorage { +export abstract class ArrayStorage implements IArrayStorage { /** * @type {IRandomGenerator} */ @@ -20,10 +20,10 @@ export abstract class ArrayStorage implements IStorage { protected readonly options: IOptions; /** - * @type {T[]} + * @type {V[]} */ @initializable() - protected storage!: T[]; + protected storage!: V[]; /** * @type {string} @@ -56,10 +56,10 @@ export abstract class ArrayStorage implements IStorage { /** * @param {number} key - * @returns {T} + * @returns {V} */ - public get (key: number): T { - const value: T | undefined = this.storage[key]; + public get (key: number): V { + const value: V | undefined = this.storage[key]; if (!value) { throw new Error(`No value found in array storage with key \`${key}\``); @@ -69,10 +69,10 @@ export abstract class ArrayStorage implements IStorage { } /** - * @param {T} value + * @param {V} value * @returns {number} */ - public getKeyOf (value: T): number | null { + public getKeyOf (value: V): number | null { const key: number = this.storage.indexOf(value); return key >= 0 ? key : null; @@ -86,9 +86,9 @@ export abstract class ArrayStorage implements IStorage { } /** - * @returns {T[]} + * @returns {V[]} */ - public getStorage (): T[] { + public getStorage (): V[] { return this.storage; } @@ -113,9 +113,9 @@ export abstract class ArrayStorage implements IStorage { /** * @param {number} key - * @param {T} value + * @param {V} value */ - public set (key: number, value: T): void { + public set (key: number, value: V): void { if (key === this.storageLength) { this.storage.push(value); } else { diff --git a/src/storages/MapStorage.ts b/src/storages/MapStorage.ts index 87773787..606eb92f 100644 --- a/src/storages/MapStorage.ts +++ b/src/storages/MapStorage.ts @@ -1,14 +1,14 @@ import { inject, injectable, postConstruct } from 'inversify'; import { ServiceIdentifiers } from '../container/ServiceIdentifiers'; +import { IMapStorage } from '../interfaces/storages/IMapStorage'; import { IOptions } from '../interfaces/options/IOptions'; import { IRandomGenerator } from '../interfaces/utils/IRandomGenerator'; -import { IStorage } from '../interfaces/storages/IStorage'; import { initializable } from '../decorators/Initializable'; @injectable() -export abstract class MapStorage implements IStorage { +export abstract class MapStorage implements IMapStorage { /** * @type {IOptions} */ @@ -26,10 +26,10 @@ export abstract class MapStorage implements IStorage { protected storageId!: string; /** - * @type {Map } + * @type {Map } */ @initializable() - protected storage!: Map ; + protected storage!: Map ; /** * @param {IRandomGenerator} randomGenerator @@ -45,16 +45,16 @@ export abstract class MapStorage implements IStorage { @postConstruct() public initialize (): void { - this.storage = new Map (); + this.storage = new Map (); this.storageId = this.randomGenerator.getRandomString(6); } /** - * @param {string | number} key - * @returns {T} + * @param {K} key + * @returns {V} */ - public get (key: string | number): T { - const value: T | undefined = this.storage.get(key); + public get (key: K): V { + const value: V | undefined = this.storage.get(key); if (!value) { throw new Error(`No value found in map storage with key \`${key}\``); @@ -64,10 +64,10 @@ export abstract class MapStorage implements IStorage { } /** - * @param {T} value - * @returns {string | number | null} + * @param {V} value + * @returns {K | null} */ - public getKeyOf (value: T): string | number | null { + public getKeyOf (value: V): K | null { for (const [key, storageValue] of this.storage) { if (value === storageValue) { return key; @@ -85,9 +85,9 @@ export abstract class MapStorage implements IStorage { } /** - * @returns {Map } + * @returns {Map} */ - public getStorage (): Map { + public getStorage (): Map { return this.storage; } @@ -103,7 +103,7 @@ export abstract class MapStorage implements IStorage { * @param {boolean} mergeId */ public mergeWith (storage: this, mergeId: boolean = false): void { - this.storage = new Map ([...this.storage, ...storage.getStorage()]); + this.storage = new Map ([...this.storage, ...storage.getStorage()]); if (mergeId) { this.storageId = storage.getStorageId(); @@ -111,10 +111,10 @@ export abstract class MapStorage implements IStorage { } /** - * @param {string | number} key - * @param {T} value + * @param {K} key + * @param {V} value */ - public set (key: string | number, value: T): void { + public set (key: K, value: V): void { this.storage.set(key, value); } } diff --git a/src/storages/control-flow/ControlFlowStorage.ts b/src/storages/control-flow/ControlFlowStorage.ts index 20d8ee65..a8c768ff 100644 --- a/src/storages/control-flow/ControlFlowStorage.ts +++ b/src/storages/control-flow/ControlFlowStorage.ts @@ -8,7 +8,7 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { MapStorage } from '../MapStorage'; @injectable() -export class ControlFlowStorage extends MapStorage { +export class ControlFlowStorage extends MapStorage { /** * @param {IRandomGenerator} randomGenerator * @param {IOptions} options diff --git a/src/storages/custom-node-group/CustomNodeGroupStorage.ts b/src/storages/custom-node-group/CustomNodeGroupStorage.ts index 6eae508d..3785c883 100644 --- a/src/storages/custom-node-group/CustomNodeGroupStorage.ts +++ b/src/storages/custom-node-group/CustomNodeGroupStorage.ts @@ -12,7 +12,7 @@ import { CustomNodeGroup } from '../../enums/custom-nodes/CustomNodeGroup'; import { MapStorage } from '../MapStorage'; @injectable() -export class CustomNodeGroupStorage extends MapStorage { +export class CustomNodeGroupStorage extends MapStorage { /** * @type {CustomNodeGroup[]} */ diff --git a/src/types/storages/TControlFlowStorage.d.ts b/src/types/storages/TControlFlowStorage.d.ts index 333a448e..512491a6 100644 --- a/src/types/storages/TControlFlowStorage.d.ts +++ b/src/types/storages/TControlFlowStorage.d.ts @@ -1,4 +1,4 @@ import { ICustomNode } from '../../interfaces/custom-nodes/ICustomNode'; -import { IStorage } from '../../interfaces/storages/IStorage'; +import { IMapStorage } from '../../interfaces/storages/IMapStorage'; -export type TControlFlowStorage = IStorage ; +export type TControlFlowStorage = IMapStorage ; diff --git a/src/types/storages/TCustomNodeGroupStorage.d.ts b/src/types/storages/TCustomNodeGroupStorage.d.ts index 2fe6ff58..041dcdad 100644 --- a/src/types/storages/TCustomNodeGroupStorage.d.ts +++ b/src/types/storages/TCustomNodeGroupStorage.d.ts @@ -1,4 +1,4 @@ import { ICustomNodeGroup } from '../../interfaces/custom-nodes/ICustomNodeGroup'; -import { IStorage } from '../../interfaces/storages/IStorage'; +import { IMapStorage } from '../../interfaces/storages/IMapStorage'; -export type TCustomNodeGroupStorage = IStorage ; +export type TCustomNodeGroupStorage = IMapStorage ; diff --git a/src/types/storages/TStringArrayStorage.d.ts b/src/types/storages/TStringArrayStorage.d.ts index 2868c135..2fb61919 100644 --- a/src/types/storages/TStringArrayStorage.d.ts +++ b/src/types/storages/TStringArrayStorage.d.ts @@ -1,3 +1,3 @@ -import { IStorage } from '../../interfaces/storages/IStorage'; +import { IArrayStorage } from '../../interfaces/storages/IArrayStorage'; -export type TStringArrayStorage = IStorage ; +export type TStringArrayStorage = IArrayStorage ; diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts index 87cad341..4e3e3e8c 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts @@ -11,7 +11,7 @@ import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscator describe('BinaryExpressionControlFlowReplacer', function () { this.timeout(100000); - describe('replace (binaryExpressionNode: ESTree.BinaryExpression,parentNode: ESTree.Node,controlFlowStorage: IStorage )', () => { + describe('replace (binaryExpressionNode, parentNode, controlFlowStorage)', () => { describe('Variant #1 - single binary expression', () => { const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['\w{5}'\]\(0x1, *0x2\);/; diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts index e321f0ce..608b4a32 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts @@ -11,7 +11,7 @@ import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscator describe('CallExpressionControlFlowReplacer', function () { this.timeout(100000); - describe('replace (callExpressionNode: ESTree.CallExpression,parentNode: ESTree.Node,controlFlowStorage: IStorage )', () => { + describe('replace (callExpressionNode, parentNode, controlFlowStorage)', () => { describe('Variant #1 - single call expression', () => { const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['\w{5}'\]\(_0x([a-f0-9]){4,6}, *0x1, *0x2\);/; diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts index 912e21c9..3cb9a45f 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts @@ -11,7 +11,7 @@ import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscator describe('LogicalExpressionControlFlowReplacer', function () { this.timeout(100000); - describe('replace (logicalExpressionNode: ESTree.LogicalExpression,parentNode: ESTree.Node,controlFlowStorage: IStorage )', () => { + describe('replace (logicalExpressionNode, parentNode, controlFlowStorage)', () => { describe('Variant #1 - single logical expression', () => { const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['\w{5}'\]\(!!\[\], *!\[\]\);/; diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/string-litertal-control-flow-replacer/StringLiteralControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/string-litertal-control-flow-replacer/StringLiteralControlFlowReplacer.spec.ts index c820ce1a..c18ab864 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/string-litertal-control-flow-replacer/StringLiteralControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/string-litertal-control-flow-replacer/StringLiteralControlFlowReplacer.spec.ts @@ -9,7 +9,7 @@ import { readFileAsString } from '../../../../../helpers/readFileAsString'; import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscatorFacade'; describe('StringLiteralControlFlowReplacer', () => { - describe('replace (literalNode: ESTree.Literal,parentNode: ESTree.Node,controlFlowStorage: IStorage )', () => { + describe('replace (literalNode, parentNode, controlFlowStorage)', () => { const controlFlowStorageStringLiteralRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *\{'\w{5}' *: *'test'\};/; const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['\w{5}'\];/; diff --git a/test/unit-tests/storages/ArrayStorage.spec.ts b/test/unit-tests/storages/ArrayStorage.spec.ts index c90d1dc0..0dc663df 100644 --- a/test/unit-tests/storages/ArrayStorage.spec.ts +++ b/test/unit-tests/storages/ArrayStorage.spec.ts @@ -2,15 +2,16 @@ import { assert } from 'chai'; import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; +import { IArrayStorage } from '../../../src/interfaces/storages/IArrayStorage'; import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; import { IOptions } from '../../../src/interfaces/options/IOptions'; import { IRandomGenerator } from '../../../src/interfaces/utils/IRandomGenerator'; -import { IStorage } from '../../../src/interfaces/storages/IStorage'; + import { ArrayStorage } from '../../../src/storages/ArrayStorage'; import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade'; -class ConcreteStorage extends ArrayStorage { +class ConcreteStorage extends ArrayStorage { constructor () { const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); @@ -24,10 +25,10 @@ class ConcreteStorage extends ArrayStorage { } /** - * @type {IStorage} + * @returns {IArrayStorage} */ -const getStorageInstance = (): IStorage => { - const storage: IStorage = new ConcreteStorage(); +const getStorageInstance = (): IArrayStorage => { + const storage: IArrayStorage = new ConcreteStorage (); storage.initialize(); @@ -38,7 +39,7 @@ describe('ArrayStorage', () => { const storageKey: number = 0; const storageValue: string = 'foo'; - let storage: IStorage ; + let storage: IArrayStorage ; describe('initialize (...args: any[]): void', () => { const expectedError: ErrorConstructor = Error; @@ -46,7 +47,7 @@ describe('ArrayStorage', () => { let testFunc: () => void; before(() => { - storage = new ConcreteStorage(); + storage = new ConcreteStorage(); testFunc = () => storage.set(storageKey, storageValue); }); @@ -61,7 +62,7 @@ describe('ArrayStorage', () => { let arrayStorage: string[]; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); arrayStorage = storage.getStorage(); }); @@ -78,7 +79,7 @@ describe('ArrayStorage', () => { let value: string; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); value = storage.get(storageKey); @@ -95,7 +96,7 @@ describe('ArrayStorage', () => { let testFunc: () => void; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); testFunc = () => storage.get(storageKey); }); @@ -112,7 +113,7 @@ describe('ArrayStorage', () => { let storageLength: number; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); storageLength = storage.getLength(); @@ -128,7 +129,7 @@ describe('ArrayStorage', () => { describe('Variant #1', () => { before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); key = storage.getKeyOf(storageValue); @@ -145,7 +146,7 @@ describe('ArrayStorage', () => { }; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, object); key = storage.getKeyOf(object); @@ -163,7 +164,7 @@ describe('ArrayStorage', () => { }; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, object); key = storage.getKeyOf({...object}); @@ -179,7 +180,7 @@ describe('ArrayStorage', () => { let value: string; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); value = storage.get(storageKey); @@ -199,10 +200,10 @@ describe('ArrayStorage', () => { let array: string[]; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); - const secondStorage: IStorage = getStorageInstance(); + const secondStorage: IArrayStorage = getStorageInstance(); secondStorage.set(secondStorageKey, secondStorageValue); storage.mergeWith(secondStorage, false); diff --git a/test/unit-tests/storages/MapStorage.spec.ts b/test/unit-tests/storages/MapStorage.spec.ts index 7f6fd387..791ac6e9 100644 --- a/test/unit-tests/storages/MapStorage.spec.ts +++ b/test/unit-tests/storages/MapStorage.spec.ts @@ -3,14 +3,14 @@ import { assert } from 'chai'; import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; +import { IMapStorage } from '../../../src/interfaces/storages/IMapStorage'; import { IOptions } from '../../../src/interfaces/options/IOptions'; import { IRandomGenerator } from '../../../src/interfaces/utils/IRandomGenerator'; -import { IStorage } from '../../../src/interfaces/storages/IStorage'; import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade'; import { MapStorage } from '../../../src/storages/MapStorage'; -class ConcreteStorage extends MapStorage { +class ConcreteStorage extends MapStorage { constructor () { const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); @@ -24,10 +24,10 @@ class ConcreteStorage extends MapStorage { } /** - * @type {IStorage} + * @returns {IMapStorage} */ -const getStorageInstance = (): IStorage => { - const storage: IStorage = new ConcreteStorage(); +const getStorageInstance = (): IMapStorage => { + const storage: IMapStorage = new ConcreteStorage (); storage.initialize(); @@ -38,7 +38,7 @@ describe('MapStorage', () => { const storageKey: string = 'foo'; const storageValue: string = 'bar'; - let storage: IStorage ; + let storage: IMapStorage ; describe('initialize (...args: any[]): void', () => { const expectedError: ErrorConstructor = Error; @@ -55,13 +55,13 @@ describe('MapStorage', () => { }); }); - describe('getStorage (): Map ', () => { + describe('getStorage (): Map ', () => { const expectedInstanceOf: MapConstructor = Map; - let mapStorage: string[]; + let mapStorage: Map ; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); mapStorage = storage.getStorage(); }); @@ -71,14 +71,14 @@ describe('MapStorage', () => { }); }); - describe('get (key: string | number): T', () => { + describe('get (key: K): V', () => { describe('Variant #1: value exist', () => { const expectedValue: string = storageValue; let value: string; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); value = storage.get(storageKey); @@ -95,7 +95,7 @@ describe('MapStorage', () => { let testFunc: () => void; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); testFunc = () => storage.get(storageKey); }); @@ -112,7 +112,7 @@ describe('MapStorage', () => { let storageLength: number; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); storageLength = storage.getLength(); @@ -123,12 +123,12 @@ describe('MapStorage', () => { }); }); - describe('getKeyOf (value: T): string | number | null', () => { + describe('getKeyOf (value: V): K | null', () => { let key: string | number | null; describe('Variant #1', () => { before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); key = storage.getKeyOf(storageValue); @@ -145,7 +145,7 @@ describe('MapStorage', () => { }; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, object); key = storage.getKeyOf(object); @@ -163,7 +163,7 @@ describe('MapStorage', () => { }; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, object); key = storage.getKeyOf({...object}); @@ -175,11 +175,11 @@ describe('MapStorage', () => { }); }); - describe('set (key: string | number, value: T): void', () => { + describe('set (key: K, value: V): void', () => { let value: string; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); value = storage.get(storageKey); @@ -202,15 +202,15 @@ describe('MapStorage', () => { let array: string[][]; before(() => { - storage = getStorageInstance(); + storage = getStorageInstance(); storage.set(storageKey, storageValue); - const secondStorage: IStorage = getStorageInstance(); + const secondStorage: IMapStorage = getStorageInstance(); secondStorage.set(secondStorageKey, secondStorageValue); storage.mergeWith(secondStorage, false); - array = Array.from(storage.getStorage()); + array = Array.from(storage.getStorage()); }); it('should merge two storages', () => { diff --git a/yarn.lock b/yarn.lock index 89c63d5d..79047f1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -709,6 +709,10 @@ ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" +ansicolor@1.1.71: + version "1.1.71" + resolved "https://registry.yarnpkg.com/ansicolor/-/ansicolor-1.1.71.tgz#38bbf97db282edb1462dcb23400112407a9486e3" + any-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" @@ -1892,10 +1896,11 @@ class-utils@^0.3.5: lazy-cache "^2.0.2" static-extend "^0.1.1" -class-validator@0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.8.1.tgz#f5efd5c613927e3c2f68692e8f14d53a2644fb2f" +class-validator@0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.8.4.tgz#f78d31f5aeabd27e05394be07e93f42e2041a0bb" dependencies: + ansicolor "1.1.71" validator "9.2.0" cli-cursor@^1.0.2: