js-confuser
Version:
JavaScript Obfuscation Tool.
49 lines (41 loc) • 1.15 kB
text/typescript
import { reservedKeywords } from "../constants";
import { shuffle } from "./random-utils";
export function alphabeticalGenerator(index: number) {
let name = "";
while (index > 0) {
var t = (index - 1) % 52;
var thisChar =
t >= 26 ? String.fromCharCode(65 + t - 26) : String.fromCharCode(97 + t);
name = thisChar + name;
index = ((index - t) / 52) | 0;
}
if (!name) {
name = "_";
}
return name;
}
export function createZeroWidthGenerator() {
var maxSize = 0;
var currentKeyWordsArray: string[] = [];
function generateArray() {
var result = reservedKeywords
.map(
(keyWord) =>
keyWord + "\u200C".repeat(Math.max(maxSize - keyWord.length, 1))
)
.filter((craftedVariableName) => craftedVariableName.length == maxSize);
if (!result.length) {
++maxSize;
return generateArray();
}
return shuffle(result);
}
function getNextVariable(): string {
if (!currentKeyWordsArray.length) {
++maxSize;
currentKeyWordsArray = generateArray();
}
return currentKeyWordsArray.pop();
}
return { generate: getNextVariable };
}