vanzy-protect
Version:
Epic Obfuscator Yeahhh
72 lines (51 loc) • 1.88 kB
text/typescript
import * as fs from 'fs'
import * as YAML from 'yaml'
import { createRandomSeed } from '../random/createRandomSeed'
import { Config } from './Config'
export var __cfg: Config
function tlvl(o: any, d: 0 | 1 | 2 | 3): 0 | 1 | 2 | 3 {
if (o === 0) return 0
if (o === 1) return 1
if (o === 2) return 2
if (o === 3) return 3
return d
}
const numer = (a: any, n: number) => typeof a === 'number' ? a : n
const arr = (a: any, v: string[]) => Array.isArray(a) ? a : v
export function loadConfig(f: string): Config {
const string = String(fs.readFileSync(f))
const obj = YAML.parse(string) ?? {}
const data: Config = {
transforms: {
obfuscateNames: obj.transforms?.obfuscateNames ?? true,
obfuscateBooleans: obj.transforms?.obfuscateBooleans ?? true,
keyObfuscationLevel: tlvl(obj.transforms?.keyObfuscationLevel, 2),
stringObfLevel: tlvl(obj.transforms?.stringObfLevel, 3),
numberObfLevel: tlvl(obj.transforms?.numberObfLevel, 3),
extractStringsToArray: obj.transforms?.extractStringsToArray ?? false,
addFakeStringsToArray: obj.transforms?.addFakeStringsToArray ?? true,
ignore: arr(obj.transforms?.ignore, []),
webMode: obj.transforms?.webMode ?? false,
noES2021Syntax: obj.transforms?.noES2021Syntax ?? false
},
format: {
amogus: {
start: obj.format?.amogus?.start ?? true,
end: obj.format?.amogus?.end ?? false,
},
epicEndArt: obj.format?.epicEndArt ?? true,
lineStart: obj.format?.lineStart ?? true,
lineEnd: obj.format?.lineEnd ?? false,
removeEmptyLines: obj.format?.removeEmptyLines ?? false,
shrink: obj.format?.shrink ?? false,
commentFrequency: tlvl(obj.format?.commentFrequency, 2),
comments: obj.format?.comments || false
},
input: {
esVersion: numer(obj.input?.esVersion, 6),
seed: obj.input?.seed || createRandomSeed()
}
}
__cfg = data
return data
}