Przeglądaj źródła

[Bug] Fix a name collision in String Array Storage

5 lat temu
rodzic
commit
fb7f898243

Plik diff jest za duży
+ 0 - 0
dist/index.browser.js


Plik diff jest za duży
+ 0 - 0
dist/index.cli.js


Plik diff jest za duży
+ 0 - 0
dist/index.js


+ 4 - 2
src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts

@@ -30,14 +30,16 @@ export abstract class AbstractIdentifierNamesGenerator implements IIdentifierNam
     }
 
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    public abstract generate (): string;
+    public abstract generate (nameLength?: number): string;
 
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    public abstract generateWithPrefix (): string;
+    public abstract generateWithPrefix (nameLength?: number): string;
 
     /**
      * @param {string} name

+ 11 - 5
src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts

@@ -32,18 +32,23 @@ export class HexadecimalIdentifierNamesGenerator extends AbstractIdentifierNames
     }
 
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    public generate (): string {
+    public generate (nameLength?: number): string {
         const rangeMinInteger: number = 10000;
         const rangeMaxInteger: number = 99_999_999;
         const randomInteger: number = this.randomGenerator.getRandomInteger(rangeMinInteger, rangeMaxInteger);
         const hexadecimalNumber: string = NumberUtils.toHex(randomInteger);
-        const baseIdentifierName: string = hexadecimalNumber.substr(0, HexadecimalIdentifierNamesGenerator.baseIdentifierNameLength);
+        const prefixLength: number = Utils.hexadecimalPrefix.length + 1;
+        const baseNameLength: number = nameLength
+            ? nameLength - prefixLength
+            : HexadecimalIdentifierNamesGenerator.baseIdentifierNameLength;
+        const baseIdentifierName: string = hexadecimalNumber.substr(0, baseNameLength);
         const identifierName: string = `_${Utils.hexadecimalPrefix}${baseIdentifierName}`;
 
         if (this.randomVariableNameSet.has(identifierName)) {
-            return this.generate();
+            return this.generate(nameLength);
         }
 
         this.randomVariableNameSet.add(identifierName);
@@ -52,10 +57,11 @@ export class HexadecimalIdentifierNamesGenerator extends AbstractIdentifierNames
     }
 
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    public generateWithPrefix (): string {
-        const identifierName: string = this.generate();
+    public generateWithPrefix (nameLength?: number): string {
+        const identifierName: string = this.generate(nameLength);
 
         return `${this.options.identifiersPrefix}${identifierName}`.replace('__', '_');
     }

+ 6 - 3
src/generators/identifier-names-generators/MangledIdentifierNamesGenerator.ts

@@ -46,9 +46,11 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
     }
 
     /**
+     * We can only ignore limited nameLength, it has no sense here
+     * @param {number} nameLength
      * @returns {string}
      */
-    public generate (): string {
+    public generate (nameLength?: number): string {
         const identifierName: string = this.generateNewMangledName(this.previousMangledName);
 
         this.previousMangledName = identifierName;
@@ -57,13 +59,14 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
     }
 
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    public generateWithPrefix (): string {
+    public generateWithPrefix (nameLength?: number): string {
         const prefix: string = this.options.identifiersPrefix ?
             `${this.options.identifiersPrefix}_`
             : '';
-        const identifierName: string = this.generate();
+        const identifierName: string = this.generate(nameLength);
 
         return `${prefix}${identifierName}`;
     }

+ 4 - 2
src/interfaces/generators/identifier-names-generators/IIdentifierNamesGenerator.d.ts

@@ -1,13 +1,15 @@
 export interface IIdentifierNamesGenerator {
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    generate (): string;
+    generate (nameLength?: number): string;
 
     /**
+     * @param {number} nameLength
      * @returns {string}
      */
-    generateWithPrefix (): string;
+    generateWithPrefix (nameLength?: number): string;
 
     /**
      * @param {string} identifierName

+ 2 - 4
src/storages/string-array/StringArrayStorage.ts

@@ -51,11 +51,9 @@ export class StringArrayStorage extends ArrayStorage <string> {
         super.initialize();
 
         const baseStringArrayName: string = this.identifierNamesGenerator
-            .generate()
-            .slice(0, StringArrayStorage.stringArrayNameLength);
+            .generate(StringArrayStorage.stringArrayNameLength);
         const baseStringArrayCallsWrapperName: string = this.identifierNamesGenerator
-            .generate()
-            .slice(0, StringArrayStorage.stringArrayNameLength);
+            .generate(StringArrayStorage.stringArrayNameLength);
         const stringArrayName: string = `${this.options.identifiersPrefix}${baseStringArrayName}`;
         const stringArrayCallsWrapperName: string = `${this.options.identifiersPrefix}${baseStringArrayCallsWrapperName}`;
 

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików