Prevented mutation of the name sequences of mangled identifier name generators

This commit is contained in:
sanex3339
2020-07-10 18:59:27 +03:00
parent b2f5a919d3
commit d074bbe816
10 changed files with 109 additions and 18 deletions
@@ -60,11 +60,9 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
@postConstruct()
public initialize (): void {
if (!MangledIdentifierNamesGenerator.nameSequence) {
MangledIdentifierNamesGenerator.nameSequence = [
...`${numbersString}${alphabetString}${alphabetStringUppercase}`
];
}
this.initializeNameSequence([
...`${numbersString}${alphabetString}${alphabetStringUppercase}`
]);
}
/**
@@ -138,13 +136,29 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
&& !MangledIdentifierNamesGenerator.reservedNamesSet.has(mangledName);
}
/**
* @param {string[]} nameSequence
*/
protected initializeNameSequence (nameSequence: string[]): void {
if (!this.getNameSequence()) {
MangledIdentifierNamesGenerator.nameSequence = nameSequence;
}
}
/**
* @returns {string[]}
*/
protected getNameSequence (): string[] {
return MangledIdentifierNamesGenerator.nameSequence;
}
/**
* @param {string} previousMangledName
* @returns {string}
*/
private generateNewMangledName (previousMangledName: string): string {
protected generateNewMangledName (previousMangledName: string): string {
const generateNewMangledName: (name: string) => string = (name: string): string => {
const nameSequence: string[] = MangledIdentifierNamesGenerator.nameSequence;
const nameSequence: string[] = this.getNameSequence();
const nameSequenceLength: number = nameSequence.length;
const nameLength: number = name.length;
@@ -13,6 +13,11 @@ import { MangledIdentifierNamesGenerator } from './MangledIdentifierNamesGenerat
@injectable()
export class MangledShuffledIdentifierNamesGenerator extends MangledIdentifierNamesGenerator {
/**
* @type {string[]}
*/
protected static shuffledNameSequence: string[];
/**
* @type {IArrayUtils}
*/
@@ -35,11 +40,33 @@ export class MangledShuffledIdentifierNamesGenerator extends MangledIdentifierNa
@postConstruct()
public initialize (): void {
if (!MangledIdentifierNamesGenerator.nameSequence) {
MangledIdentifierNamesGenerator.nameSequence = [
...`${numbersString}`,
...this.arrayUtils.shuffle([...`${alphabetString}${alphabetStringUppercase}`])
];
this.initializeNameSequence([
...`${numbersString}`,
...this.arrayUtils.shuffle([...`${alphabetString}${alphabetStringUppercase}`])
]);
}
/**
* @param {string[]} nameSequence
*/
protected initializeNameSequence (nameSequence: string[]): void {
if (!this.getNameSequence()) {
MangledShuffledIdentifierNamesGenerator.shuffledNameSequence = nameSequence;
}
}
/**
* @returns {string[]}
*/
protected getNameSequence (): string[] {
return MangledShuffledIdentifierNamesGenerator.shuffledNameSequence;
}
/**
* @param {string} previousMangledName
* @returns {string}
*/
protected generateNewMangledName (previousMangledName: string): string {
return super.generateNewMangledName(previousMangledName);
}
}