{"version":3,"sources":["../src/index.ts","../package.json","../src/core/utils/constants.ts","../src/core/options/options.ts","../src/cli/commands/check.ts","../src/core/generation/read.ts","../src/cli/commands/help.ts","../src/core/generation/write.ts","../src/cli/commands/init.ts","../src/core/process/runtime.ts","../src/core/debug/stats.ts","../src/core/generation/copy.ts","../src/core/mapper/mapper.ts","../src/core/parser/parser.ts","../src/core/replacer/replacer.ts","../src/core/transformation/default.ts","../src/core/transformation/ignore.ts","../src/core/transformation/pool.ts","../src/core/transformation/static.ts","../src/core/process/obfuscate.ts","../src/core/generation/remove.ts","../src/cli/commands/obfuscate.ts","../src/cli/commands/unknown.ts","../src/cli/commands/version.ts","../src/cli/index.ts"],"sourcesContent":["export { buildDebugOptions, buildParserOptions, buildTransformationOptions } from \"./core/options/options\";\nexport { startCLI } from \"./cli\";\nexport { buildRuntimeOptions } from \"./core/process/runtime\";\nexport { obfuscate } from \"./core/process/obfuscate\";\nexport { stats } from \"./core/debug/stats\";\nexport type {\n  IOptions as ICodefendGlobalOptions,\n  IGenerationOptions as ICodefendGenerationOptions,\n  ITransformationOptions as ICodefendTransformationOptions,\n  IParserOptions as ICodefendParserOptions,\n  IDebugOptions as ICodefendDebugOptions,\n  IStaticWordTransformationOption as ICodefendStaticWordTransformationOption,\n  IParserRegexOption as ICodefendParserRegexOption,\n} from \"./models/options\";\n\nexport type {\n  IInternalOptions as ICodefendInternalGlobalOptions,\n  IInternalDebugOptions as ICodefendInternalDebugOptions,\n  IInternalGenerationOptions as ICodefendInternalGenerationOptions,\n  IInternalParserOptions as ICodefendInternalParserOptions,\n  IInternalTransformationOptions as ICodefendInternalTransformationOptions,\n} from \"./models/internal\";\n","{\n  \"name\": \"codefend\",\n  \"version\": \"3.2.0\",\n  \"description\": \"Code obfuscator CLI that protects your code regardless of the programming language or framework.\",\n  \"keywords\": [\n    \"codefend\",\n    \"obfuscator\",\n    \"uglifier\",\n    \"angular\",\n    \"vue\",\n    \"react\",\n    \"svelte\",\n    \"typescript\",\n    \"css\",\n    \"html\",\n    \"python\",\n    \"c#\",\n    \"c++\",\n    \"rollup\",\n    \"webpack\",\n    \"vite\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  },\n  \"author\": \"Mounzer Adas\",\n  \"homepage\": \"https://github.com/Codefend/core.git\",\n  \"bugs\": {\n    \"url\": \"https://github.com/Codefend/core/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/Codefend/core.git\"\n  },\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \"import\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\"\n    },\n    \"require\": {\n      \"types\": \"./dist/index.d.cts\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"files\": [\n    \"dist\",\n    \"bin/**\"\n  ],\n  \"bin\": {\n    \"codefend\": \"./bin/index.js\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"scripts\": {\n    \"build\": \"tsup\",\n    \"format\": \"prettier --write \\\"src/**/*.ts\\\"\",\n    \"format:check\": \"prettier --check \\\"src/**/*.ts\\\"\",\n    \"test\": \"vitest\",\n    \"test:run\": \"vitest --run\",\n    \"test:coverage\": \"vitest run --coverage\",\n    \"lint\": \"eslint src --ext .ts --fix\",\n    \"lint:check\": \"eslint src --ext .ts\",\n    \"spell:check\": \"cspell \\\"{README.md,CODE_OF_CONDUCT.md,CONTRIBUTING.md,.github/*.md,src/**/*.ts}\\\"\",\n    \"type:check\": \"tsc --noEmit\",\n    \"prepack\": \"npm run lint:check && npm run spell:check && npm run type:check && npm run test:run && npm run build\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.4.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.1.0\",\n    \"@typescript-eslint/parser\": \"^8.1.0\",\n    \"cspell\": \"^8.14.1\",\n    \"eslint\": \"^8.56.0\",\n    \"eslint-config-prettier\": \"^9.1.0\",\n    \"eslint-plugin-prettier\": \"^5.1.3\",\n    \"prettier\": \"^3.3.3\",\n    \"tsup\": \"^8.2.4\",\n    \"typescript\": \"^5.5.4\",\n    \"vitest\": \"^2.0.5\"\n  },\n  \"dependencies\": {\n    \"cli-table3\": \"^0.6.5\"\n  }\n}\n","import { version } from \"../../../package.json\";\nimport { IInternalRegexOption } from \"../../models/internal.js\";\nimport { IParserNames } from \"../../models/types\";\n\nexport const PROJECT_KEBAB_CASE_NAME = \"codefend\";\nexport const PROJECT_DISPLAY_NAME = \"Codefend\";\nexport const OPTIONS_FILE_NAME = \".codefendrc.json\";\nexport const OPTIONS_FILE_PATH = `./${OPTIONS_FILE_NAME}`;\nexport const VERSION = version;\nexport const RC_VERSION = \"0.0.1\";\nexport const DEFAULT_PROJECT_NAME = \"project\";\n\nexport const LOG_OPTIONS = {\n  PREFIX_SIZE: 11,\n  MESSAGE_SIZE: 64,\n  COLORS: {\n    PREFIX_BG: \"#282634\",\n    PREFIX_FG: \"#ff4067\",\n  },\n};\n\nexport const DEFAULT_PREFIX = \"Ox\";\n\nexport const VALID_VAR_REGEX = /^[a-zA-Z_$][a-zA-Z$0-9]*$/;\n\nexport const MIN_POOL_ITEM_LENGTH = 3;\n\nexport const HELP_COMMAND_INTRO = `Usage: ${PROJECT_KEBAB_CASE_NAME} [options]\n\nProtect Any Source Code.\n\nOptions:`;\n\nexport const DEFAULT_CLI_OPTION = \"-h\";\n\nexport const CLI_OPTIONS = [\n  {\n    short: \"-i\",\n    long: \"--init\",\n    description: `Create the config file (${OPTIONS_FILE_NAME})`,\n  },\n  {\n    short: \"-c\",\n    long: \"--check\",\n    description: \"Obfuscate the project\",\n  },\n  {\n    short: \"-o\",\n    long: \"--obfuscate\",\n    description: \"Check the config file for potential warnings/errors\",\n  },\n  {\n    short: \"-v\",\n    long: \"--version\",\n    description: \"Output the version number\",\n  },\n  {\n    short: \"-h\",\n    long: \"--help\",\n    description: \"Display help for command\",\n  },\n];\n\nconst DEFAULT_REGEX_LIST = [\n  {\n    name: \"main\",\n    regex: new RegExp(\"([a-zA-Z]+(_[a-zA-Z0-9]+)+)\", \"g\"),\n  },\n  {\n    name: \"file\",\n    regex: new RegExp(\"((pkg|cmp|lib|file|folder|module|style|main)+(-[a-zA-Z0-9]+)+)\", \"g\"),\n  },\n];\n\nexport const PARSER_NAMES = {\n  default: \"default\",\n  fileOnly: \"fileOnly\",\n  codeOnly: \"codeOnly\",\n  Parser_A: \"Parser_A\",\n} as const;\n\nexport const PARSERS: Partial<Record<IParserNames, { regexList: IInternalRegexOption[] }>> = {\n  [PARSER_NAMES.default]: {\n    regexList: DEFAULT_REGEX_LIST,\n  },\n  [PARSER_NAMES.fileOnly]: {\n    regexList: DEFAULT_REGEX_LIST.filter((e) => e.name === \"file\"),\n  },\n  [PARSER_NAMES.codeOnly]: {\n    regexList: DEFAULT_REGEX_LIST.filter((e) => e.name === \"main\"),\n  },\n  [PARSER_NAMES.Parser_A]: {\n    regexList: DEFAULT_REGEX_LIST,\n  },\n};\n\nexport const DEFAULT_PARSER_NAME = PARSER_NAMES.default;\nexport const CUSTOM_PARSER_NAME = \"custom\";\n\nexport const CODEFEND_CHECK_WARNING = {\n  version: {\n    code: \"@meta/version-warning\",\n    message: `${OPTIONS_FILE_NAME} was generated in an older version of ${PROJECT_DISPLAY_NAME}.`,\n  },\n  deprecatedDefaultParser: {\n    code: \"@parser/deprecated-default-parser-warning\",\n    message: `${PARSER_NAMES.Parser_A} has been deprecated.\\nPlease rename '${PARSER_NAMES.Parser_A}' to '${DEFAULT_PARSER_NAME}' in your ${OPTIONS_FILE_NAME}.\\nThis change will not affect functionality; it's only a name update.\\nFor more information, please refer to this issue: https://github.com/Codefend/core/issues/182.`,\n  },\n  ignoreMissingPackageLock: {\n    code: \"@generation/ignore-missing-package-lock-warning\",\n    message: `The 'package-lock.json' entry was not found in the 'ignore' list under 'generation' in your ${OPTIONS_FILE_NAME}.\\nIt is recommended to add it to avoid potential issues.For more information, please refer to this issue: https://github.com/Codefend/core/issues/183.`,\n  },\n} as const;\n\nexport const CODEFEND_CHECK_ERROR = {\n  configurationFileNotFound: {\n    code: \"@config/file-not-found-error\",\n    message: `${OPTIONS_FILE_NAME} not found. Please run ${PROJECT_KEBAB_CASE_NAME} -i first to create it.`,\n  },\n  configurationFileInvalidJSON: {\n    code: \"@config/invalid-json-error\",\n    message: `${OPTIONS_FILE_NAME} contains an invalid JSON format`,\n  },\n  transformationInvalidPrefix: {\n    code: \"@transformation/invalid-prefix-error\",\n    message: `Invalid 'prefix' in ${OPTIONS_FILE_NAME}.`,\n  },\n  transformationInvalidPool: {\n    code: \"@transformation/invalid-pool-error\",\n    message: \"\",\n  },\n} as const;\n\nexport const CHECK_MAX_TABLE_COLUMN_WIDTH = 100;\n","import {\n  IInternalDebugOptions,\n  IInternalGenerationOptions,\n  IInternalParserOptions,\n  IInternalResponse,\n  IInternalTransformationOptions,\n} from \"../../models/internal.js\";\nimport { IDebugOptions, IOptions, IParserOptions, ITransformationOptions } from \"../../models/options.js\";\nimport {\n  CUSTOM_PARSER_NAME,\n  DEFAULT_PARSER_NAME,\n  DEFAULT_PREFIX,\n  DEFAULT_PROJECT_NAME,\n  MIN_POOL_ITEM_LENGTH,\n  PARSER_NAMES,\n  PARSERS,\n  PROJECT_KEBAB_CASE_NAME,\n  RC_VERSION,\n  VERSION,\n} from \"../utils/constants.js\";\n\nexport function buildDefaultOptions(projectName?: string): IOptions {\n  const options: IOptions = {\n    generation: {\n      inputDir: \".\",\n      outputDir: \"codefend-output\",\n      ignore: [\n        \"codefend-output\",\n        \".codefendrc.json\",\n        \"node_modules\",\n        \".git\",\n        \".github\",\n        \".gitignore\",\n        \".vscode\",\n        \"build\",\n        \"dist\",\n        \"README.md\",\n        \"package-lock.json\",\n      ],\n    },\n\n    transformation: {\n      prefix: DEFAULT_PREFIX,\n      static: [],\n      ignore: [\"node_modules\"],\n      pool: [],\n    },\n    debug: {\n      stats: true,\n      ignoredWarnings: [],\n    },\n    parser: {\n      name: DEFAULT_PARSER_NAME,\n    },\n    __meta: {\n      projectName: projectName ?? DEFAULT_PROJECT_NAME,\n      rc: {\n        version: RC_VERSION,\n        generatedBy: `${PROJECT_KEBAB_CASE_NAME}@${VERSION}`,\n        generatedAt: new Date().toISOString(),\n      },\n    },\n  };\n\n  return options;\n}\n\nexport function buildTransformationOptions(\n  transformationOptions?: ITransformationOptions,\n): IInternalTransformationOptions {\n  return {\n    prefix: transformationOptions?.prefix ?? DEFAULT_PREFIX,\n    static: transformationOptions?.static ?? [],\n    ignore: transformationOptions?.ignore ?? [],\n    pool: buildTransformationPoolOption(transformationOptions?.pool),\n  };\n}\n\nexport function buildTransformationPoolOption(pool: string | string[] | undefined): Array<string> {\n  if (!pool) {\n    return [];\n  }\n  const poolWords = typeof pool === \"string\" ? pool.split(\" \") : pool;\n  const parsedPoolWords = [];\n  let parsedPoolWord = \"\";\n\n  for (const poolWord of poolWords) {\n    parsedPoolWord = poolWord.replace(/([^\\w\\s]|_|^[0-9]+|\\n)/gi, \"\");\n    if (parsedPoolWord.length >= MIN_POOL_ITEM_LENGTH) {\n      parsedPoolWords.push(parsedPoolWord.toLowerCase());\n    }\n  }\n\n  return Array.from(new Set<string>(parsedPoolWords));\n}\n\nexport function buildParserOptions(parser?: IParserOptions): IInternalResponse<IInternalParserOptions> {\n  const ret: IInternalResponse<IInternalParserOptions> = {};\n  if (!parser || !parser?.name) {\n    return { data: { name: DEFAULT_PARSER_NAME, regexList: PARSERS[DEFAULT_PARSER_NAME]!.regexList } };\n  }\n\n  if (parser.name in PARSER_NAMES) {\n    return { data: { name: parser.name, regexList: PARSERS[parser.name]!.regexList } };\n  }\n\n  if (parser.name.toLowerCase() === CUSTOM_PARSER_NAME.toLowerCase()) {\n    if (!parser?.regexList?.length) {\n      return {\n        error: {\n          errorCode: \"UO-0000\",\n          errorDescription: \"CUSTOM Parser should have at least 1 regex item in regex list\",\n        },\n      };\n    }\n    ret.data = { name: CUSTOM_PARSER_NAME, regexList: [] };\n    parser.regexList.forEach((e) => {\n      ret.data!.regexList.push({ name: e.name, regex: new RegExp(e.value, \"g\") });\n    });\n    return ret;\n  }\n\n  if (PARSERS[parser.name] === undefined) {\n    return { error: { errorCode: \"UO-0000\", errorDescription: `Parser ${parser?.name} not found` } };\n  }\n\n  return { data: { name: parser.name, regexList: PARSERS[parser.name]!.regexList } };\n}\n\nexport function buildGenerationOptions(options: IOptions): IInternalGenerationOptions {\n  return {\n    inputDir: options.generation.inputDir,\n    outputDir: options.generation.outputDir,\n    ignore: buildGenerationIgnoreOptions(options),\n  };\n}\n\nfunction buildGenerationIgnoreOptions(options: IOptions): string[] {\n  const ret = options.generation.ignore ?? [];\n  if (!ret.includes(options.generation.outputDir)) {\n    ret.push(options.generation.outputDir);\n  }\n  return ret;\n}\n\nexport function buildDebugOptions(debugOptions?: IDebugOptions): IInternalDebugOptions {\n  return {\n    stats: typeof debugOptions?.stats === \"boolean\" ? debugOptions.stats : true,\n    ignoredWarnings: debugOptions?.ignoredWarnings === undefined ? [] : debugOptions?.ignoredWarnings,\n  };\n}\n","import Table from \"cli-table3\";\nimport { readFile, tryParse } from \"../../core/generation/read.js\";\nimport {\n  CHECK_MAX_TABLE_COLUMN_WIDTH,\n  CODEFEND_CHECK_ERROR,\n  CODEFEND_CHECK_WARNING,\n  DEFAULT_PREFIX,\n  OPTIONS_FILE_NAME,\n  OPTIONS_FILE_PATH,\n  PARSER_NAMES,\n  RC_VERSION,\n  VALID_VAR_REGEX,\n} from \"../../core/utils/constants.js\";\nimport { ICheckResults } from \"../../models/ICheck.js\";\nimport { IOptions } from \"../../models/options.js\";\n\nconst RED = \"\\x1b[31m\";\nconst ORANGE = \"\\x1b[33m\";\nconst WHITE = \"\\x1b[37m\";\nconst RESET = \"\\x1b[0m\";\n\nfunction wrapText(text: string, width: number): string {\n  const lines = [];\n  const words = text.split(\" \");\n\n  let line = words.shift() || \"\";\n\n  for (const word of words) {\n    if (line.length + word.length + 1 <= width) {\n      line += \" \" + word;\n    } else {\n      lines.push(line);\n      line = word;\n    }\n  }\n  lines.push(line);\n\n  return lines.join(\"\\n\");\n}\n\nexport function checkCommand(): IOptions | null {\n  const checkResults = initializeCheckResults();\n  const file = loadOptionsFile();\n\n  if (!file) {\n    onFileNotFoundError(checkResults);\n    return null;\n  }\n\n  const options = parseOptions(file);\n  if (!options) {\n    onInvalidJsonError(checkResults);\n    return null;\n  }\n\n  validateMetaVersion(checkResults, options);\n  validateDeprecatedParser(checkResults, options);\n  validateGenerationPackageLock(checkResults, options);\n  validateTransformationPrefix(checkResults, options);\n  validateTransformationPool(checkResults, options);\n\n  const success = !checkResults.errors.length;\n  printCheckResults(checkResults, options);\n\n  return success ? options : null;\n}\n\nfunction initializeCheckResults(): ICheckResults {\n  return {\n    errors: [],\n    warnings: [],\n  };\n}\n\nfunction loadOptionsFile(): string | null {\n  return readFile(OPTIONS_FILE_PATH);\n}\n\nfunction parseOptions(file: string): IOptions | null {\n  return tryParse<IOptions>(file);\n}\n\nfunction onFileNotFoundError(checkResults: ICheckResults): void {\n  checkResults.errors.push(CODEFEND_CHECK_ERROR.configurationFileNotFound);\n  printCheckResults(checkResults, null);\n}\n\nfunction onInvalidJsonError(checkResults: ICheckResults): void {\n  checkResults.errors.push(CODEFEND_CHECK_ERROR.configurationFileInvalidJSON);\n  printCheckResults(checkResults, null);\n}\n\nfunction validateMetaVersion(checkResults: ICheckResults, options: IOptions): void {\n  if (options.debug?.ignoredWarnings?.includes(CODEFEND_CHECK_WARNING.version.code)) {\n    return;\n  }\n  if (options.__meta?.rc?.version && options.__meta.rc.version !== RC_VERSION) {\n    checkResults.warnings.push(CODEFEND_CHECK_WARNING.version);\n  }\n}\n\nfunction validateGenerationPackageLock(checkResults: ICheckResults, options: IOptions): void {\n  if (options.generation?.ignore == null) {\n    return;\n  }\n  if (options.debug?.ignoredWarnings?.includes(CODEFEND_CHECK_WARNING.ignoreMissingPackageLock.code)) {\n    return;\n  }\n  if (!options.generation?.ignore?.includes(\"package-lock.json\")) {\n    checkResults.warnings.push(CODEFEND_CHECK_WARNING.ignoreMissingPackageLock);\n  }\n}\n\nfunction validateDeprecatedParser(checkResults: ICheckResults, options: IOptions): void {\n  if (options.debug?.ignoredWarnings?.includes(CODEFEND_CHECK_WARNING.deprecatedDefaultParser.code)) {\n    return;\n  }\n  if (options.parser?.name === PARSER_NAMES.Parser_A) {\n    checkResults.warnings.push(CODEFEND_CHECK_WARNING.deprecatedDefaultParser);\n  }\n}\n\nfunction validateTransformationPrefix(checkResults: ICheckResults, options: IOptions): void {\n  if (!VALID_VAR_REGEX.test(options.transformation?.prefix ?? DEFAULT_PREFIX)) {\n    checkResults.errors.push(CODEFEND_CHECK_ERROR.transformationInvalidPrefix);\n  }\n}\n\nfunction validateTransformationPool(checkResults: ICheckResults, options: IOptions): void {\n  if (!options.transformation?.pool) {\n    return;\n  }\n\n  const poolArray =\n    typeof options.transformation.pool === \"string\"\n      ? options.transformation.pool.split(\" \")\n      : options.transformation.pool;\n  const poolSet = new Set<string>(poolArray);\n  poolSet.forEach((word) => {\n    if (!VALID_VAR_REGEX.test(word)) {\n      checkResults.errors.push({\n        code: CODEFEND_CHECK_ERROR.transformationInvalidPool.code,\n        message: `Invalid 'pool' in ${OPTIONS_FILE_NAME}. word:\"${word}\"`,\n      });\n    }\n  });\n}\n\nfunction printCheckResults(checkResults: ICheckResults, options: IOptions | null): void {\n  const hasIgnoredAllWarnings = options?.debug?.ignoredWarnings == \"all\";\n\n  const errorRows = checkResults.errors.map((error) => [\n    `${RED}${error.code}${RESET}`,\n    wrapText(`${WHITE}${error.message}${RESET}`, CHECK_MAX_TABLE_COLUMN_WIDTH),\n  ]);\n\n  const warningRows = !hasIgnoredAllWarnings\n    ? checkResults.warnings.map((warning) => [\n        `${ORANGE}${warning.code}${RESET}`,\n        wrapText(`${WHITE}${warning.message}${RESET}`, CHECK_MAX_TABLE_COLUMN_WIDTH),\n      ])\n    : [];\n\n  const errorTable = new Table({\n    head: [\"Error Code\", \"Error Message\"],\n    colWidths: [20, CHECK_MAX_TABLE_COLUMN_WIDTH],\n    style: { \"padding-left\": 1, \"padding-right\": 1 },\n  });\n\n  const warningTable = new Table({\n    head: [`${ORANGE}Warning Code${RESET}`, `${ORANGE}Warning Message${RESET}`],\n    colWidths: [20, CHECK_MAX_TABLE_COLUMN_WIDTH],\n    style: { \"padding-left\": 1, \"padding-right\": 1 },\n  });\n\n  errorRows.forEach((row) => errorTable.push(row));\n  warningRows.forEach((row) => warningTable.push(row));\n\n  const message = `Check completed. ${checkResults.errors.length} error(s)  ${hasIgnoredAllWarnings ? 0 : checkResults.warnings.length} warning(s) `;\n  console.warn(message);\n\n  if (checkResults.errors.length > 0) {\n    console.warn(errorTable.toString());\n  }\n\n  if (!hasIgnoredAllWarnings && checkResults.warnings.length > 0) {\n    console.warn(warningTable.toString());\n    console.warn(printIgnoreWarningSentence(\"N/A\"));\n  }\n}\n\nfunction printIgnoreWarningSentence(warningCode: string): string {\n  return `To turn off this warning, add '${warningCode}' to the 'ignoredWarnings' list or set 'ignoredWarnings':'all' in your ${OPTIONS_FILE_NAME}.\\nFor more information, visit this link: https://codefend.github.io/docs/references/configuration#debug.`;\n}\n","import fs from \"fs\";\nimport path from \"path\";\n\nexport function readFile(path: string, flag = \"r\"): string | null {\n  try {\n    return fs.readFileSync(path, { encoding: \"utf8\", flag: flag });\n  } catch (error) {\n    console.error(error);\n    return null;\n  }\n}\n\nexport function tryParse<T>(json: string): T | null {\n  try {\n    return JSON.parse(json);\n  } catch (error) {\n    console.error(error);\n    return null;\n  }\n}\n\n//TODO: refactor\nexport function getAllFileNamesInDir(dirName: string): string[] {\n  let files: string[] = [];\n  const items = fs.readdirSync(dirName, { withFileTypes: true });\n\n  for (const item of items) {\n    if (item.isDirectory()) {\n      files = [...files, ...getAllFileNamesInDir(`${dirName}/${item.name}`)];\n    } else {\n      files.push(`${dirName}/${item.name}`);\n    }\n  }\n\n  return files;\n}\n\nexport function getCurrentDirectoryName(): string {\n  return path.basename(path.resolve(process.cwd()));\n}\n","import { CLI_OPTIONS, HELP_COMMAND_INTRO } from \"../../core/utils/constants.js\";\n\nexport function helpCommand(): void {\n  const longest = Math.max(...CLI_OPTIONS.map((el) => el.long.length));\n  const offset = 2;\n  let ret = HELP_COMMAND_INTRO;\n  CLI_OPTIONS.forEach((e) => {\n    ret += `\\n  ${e.short}, ${e.long.padEnd(longest + offset, \" \")}${e.description}`;\n  });\n\n  console.log(ret);\n}\n","import fs from \"fs\";\n\nexport function writeFile(path: string, data: string): void {\n  fs.writeFileSync(path, data);\n}\n","import { getCurrentDirectoryName } from \"../../core/generation/read.js\";\nimport { writeFile } from \"../../core/generation/write.js\";\nimport { buildDefaultOptions } from \"../../core/options/options.js\";\nimport { OPTIONS_FILE_NAME, OPTIONS_FILE_PATH } from \"../../core/utils/constants.js\";\n\nexport function initCommand(): void {\n  const options = buildDefaultOptions(getCurrentDirectoryName());\n  writeFile(OPTIONS_FILE_PATH, JSON.stringify(options, null, 4));\n  console.log(`${OPTIONS_FILE_NAME} created.`);\n}\n","export type IRuntimeOptions = {\n  map: Record<string, string>;\n  processed: {\n    map: Record<string, IMapProcessed>;\n  };\n};\n\nexport function buildRuntimeOptions(): IRuntimeOptions {\n  return {\n    map: {},\n    processed: {\n      map: {},\n    },\n  };\n}\n\nexport enum WordEncryptionType {\n  default,\n  ignore,\n  static,\n  pool,\n}\n\nexport type IMapProcessed = {\n  count: number;\n  target: string;\n  type?: WordEncryptionType;\n};\n","import { IRuntimeOptions, WordEncryptionType } from \"../process/runtime.js\";\nimport Table from \"cli-table3\";\n\nexport type IStatsOptions = {\n  stats: boolean;\n};\n\nexport function stats(options: IStatsOptions, runtimeOptions: IRuntimeOptions): void {\n  if (!options.stats) {\n    return;\n  }\n\n  const table = new Table({\n    head: [\"Transformation\", \"From\", \"To\", \"Count\"],\n    colWidths: [17, 35, 35, 10],\n  });\n\n  for (const key in runtimeOptions.processed.map) {\n    const item = runtimeOptions.processed.map[key];\n    const count = item?.count || 0;\n    switch (item?.type) {\n      case WordEncryptionType.ignore:\n        table.push([\"Ignored\", key, `${key}`, count]);\n        break;\n      case WordEncryptionType.static:\n        table.push([\"Static\", key, `${item.target}`, count]);\n        break;\n      case WordEncryptionType.pool:\n        table.push([\"Pool\", key, `${item.target}`, count]);\n        break;\n      case WordEncryptionType.default:\n      case null:\n      case undefined:\n        table.push([\"Prefix\", key, `${item?.target || \"\"}`, count]);\n        break;\n      default:\n        console.warn(`Unknown type for key ${key}`);\n    }\n  }\n\n  console.log(\"Obfuscation stats:\");\n  console.log(table.toString());\n  console.log(\"\");\n}\n\nexport function getObfuscatedWordsCount(runtimeOptions: IRuntimeOptions): number {\n  let ret = Object.keys(runtimeOptions.processed.map).length;\n\n  for (const key in runtimeOptions.processed.map) {\n    if (runtimeOptions.processed.map[key].count == 0) {\n      ret--;\n    }\n  }\n  return ret;\n}\n","import fs from \"fs\";\nimport path from \"path\";\n\nimport { IInternalParserOptions, IInternalTransformationOptions } from \"../../models/internal.js\";\nimport { obfuscate } from \"../process/obfuscate.js\";\nimport { IRuntimeOptions } from \"../process/runtime.js\";\n\nexport function copyFolder(\n  from: string,\n  to: string,\n  ignoredFilesInGeneration: string[],\n  transformationOptions: IInternalTransformationOptions,\n  parserOptions: IInternalParserOptions,\n  runtimeOptions: IRuntimeOptions,\n): void {\n  if (!fs.existsSync(to)) fs.mkdirSync(to);\n  fs.readdirSync(from).forEach((element) => {\n    if (ignoredFilesInGeneration.includes(element)) return;\n    if (fs.lstatSync(path.join(from, element)).isFile()) {\n      fs.copyFileSync(\n        path.join(from, element),\n        path.join(\n          obfuscate(to, transformationOptions, parserOptions, runtimeOptions),\n          obfuscate(element, transformationOptions, parserOptions, runtimeOptions),\n        ),\n      );\n    } else {\n      copyFolder(\n        path.join(from, element),\n        path.join(\n          obfuscate(to, transformationOptions, parserOptions, runtimeOptions),\n          obfuscate(element, transformationOptions, parserOptions, runtimeOptions),\n        ),\n        ignoredFilesInGeneration,\n        transformationOptions,\n        parserOptions,\n        runtimeOptions,\n      );\n    }\n  });\n}\n","import { IParsedWord } from \"../parser/parser.js\";\nimport { IRuntimeOptions, WordEncryptionType } from \"../process/runtime.js\";\n\nexport function buildMap(options: IBuildMapOptions, runtimeOptions: IRuntimeOptions): void {\n  options.words.forEach((word) => {\n    if (runtimeOptions.map[word.value]) {\n      runtimeOptions.processed.map[word.value].count++;\n      return;\n    }\n    runtimeOptions.map[word.value] = \"\";\n    runtimeOptions.processed.map[word.value] = {\n      count: 1,\n      target: \"\",\n      type: WordEncryptionType.default,\n    };\n  });\n}\nexport function sortMap(runtimeOptions: IRuntimeOptions): void {\n  runtimeOptions.map = Object.keys(runtimeOptions.map)\n    .sort((a, b) => {\n      return b.length - a.length;\n    })\n    .reduce((obj: Record<string, string>, key: string) => {\n      obj[key] = runtimeOptions.map[key] ?? \"\";\n      return obj;\n    }, {});\n}\n\nexport type IBuildMapOptions = {\n  words: IParsedWord[];\n};\n","import { IInternalParserOptions } from \"../../models/internal.js\";\n\nexport function parse(options: IParseOptions): IParsedWord[] {\n  const words: IParsedWord[] = [];\n  let matches;\n  options.parserOptions.regexList.forEach((regexListOption) => {\n    matches = options.code.match(regexListOption.regex);\n    if (!matches) return;\n    matches.forEach((word: string) => {\n      words.push({ value: word, fromRegex: regexListOption.name });\n    });\n  });\n  return words;\n}\n\nexport type IParseOptions = {\n  code: string;\n  parserOptions: IInternalParserOptions;\n};\n\nexport type IParsedWord = {\n  value: string;\n  fromRegex: string;\n};\n","import { IRuntimeOptions } from \"../process/runtime.js\";\n\nexport function replace(options: IReplaceOptions, runtimeOptions: IRuntimeOptions): string {\n  const words = Object.keys(runtimeOptions.map);\n  if (!words.length) return options.code;\n\n  const regex = new RegExp(words.join(\"|\"), \"gi\");\n  return options.code.replace(regex, (matched) => runtimeOptions.map[matched] ?? \"\");\n}\n\nexport type IReplaceOptions = {\n  code: string;\n};\n","import { IRuntimeOptions, WordEncryptionType } from \"../process/runtime.js\";\n\nexport function mapDefaultWords(options: IMapDefaultWordOptions, runtimeOptions: IRuntimeOptions): void {\n  let sequence = 0;\n  let word;\n  for (const key in runtimeOptions.processed.map) {\n    if (runtimeOptions.processed.map[key]!.type == WordEncryptionType.default) {\n      word = generateWord(sequence, options);\n      if (!word) continue;\n      runtimeOptions.map[key] = word;\n      runtimeOptions.processed.map[key]!.target = word;\n      sequence++;\n    }\n  }\n}\n\nexport type IMapDefaultWordOptions = {\n  prefix: string;\n};\n\nfunction generateWord(sequence: number, options: IMapDefaultWordOptions): string {\n  return `${options.prefix}${sequence}`;\n}\n","import { IRuntimeOptions, WordEncryptionType } from \"../process/runtime.js\";\n\nexport function mapIgnoredWords(options: IMapIgnoredWordsOptions, runtimeOptions: IRuntimeOptions): void {\n  options.ignore.forEach((word: string) => {\n    runtimeOptions.map[word] = word;\n    if (word in runtimeOptions.processed.map) {\n      runtimeOptions.processed.map[word]!.type = WordEncryptionType.ignore;\n    } else {\n      runtimeOptions.processed.map[word] = {\n        count: 0,\n        target: word,\n        type: WordEncryptionType.ignore,\n      };\n    }\n  });\n}\n\nexport type IMapIgnoredWordsOptions = {\n  ignore: string[];\n};\n","import { IRuntimeOptions, WordEncryptionType } from \"../process/runtime.js\";\n\nexport function mapPoolWords(options: IMapCustomGeneratedWordsOptions, runtimeOptions: IRuntimeOptions): void {\n  let sequence = 0;\n  let word;\n  for (const key in runtimeOptions.processed.map) {\n    if (runtimeOptions.processed.map[key]!.type == WordEncryptionType.default) {\n      word = generateWord(sequence, options);\n      if (!word) continue;\n      runtimeOptions.map[key] = word;\n      runtimeOptions.processed.map[key]!.target = word;\n      runtimeOptions.processed.map[key]!.type = WordEncryptionType.pool;\n      sequence++;\n    }\n  }\n}\n\nexport type IMapCustomGeneratedWordsOptions = {\n  prefix: string;\n  pool: string[];\n};\n\nfunction generateWord(sequence: number, options: IMapCustomGeneratedWordsOptions): string | undefined {\n  if (options.pool.length <= sequence) {\n    return;\n  }\n  let index = 0;\n  for (const entry of options.pool) {\n    if (index === sequence) return entry;\n    index++;\n  }\n}\n","import { IInternalStaticWordTransformationOption } from \"../../models/internal.js\";\nimport { IRuntimeOptions, WordEncryptionType } from \"../process/runtime.js\";\n\nexport function mapStaticWords(options: IMapStaticWordsOptions, runtimeOptions: IRuntimeOptions): void {\n  options.static.forEach((staticWord) => {\n    runtimeOptions.map[staticWord.from] = staticWord.to;\n\n    const element = runtimeOptions.processed.map[staticWord.from];\n    if (element) {\n      element.target = staticWord.to;\n      element.type = WordEncryptionType.static;\n    } else {\n      runtimeOptions.processed.map[staticWord.from] = {\n        count: 0,\n        target: staticWord.to,\n        type: WordEncryptionType.static,\n      };\n    }\n  });\n}\n\nexport type IMapStaticWordsOptions = {\n  static: IInternalStaticWordTransformationOption[];\n};\n","import { IInternalParserOptions, IInternalTransformationOptions } from \"../../models/internal.js\";\nimport { buildMap, sortMap } from \"../mapper/mapper.js\";\nimport { parse } from \"../parser/parser.js\";\nimport { replace } from \"../replacer/replacer.js\";\nimport { mapDefaultWords } from \"../transformation/default.js\";\nimport { mapIgnoredWords } from \"../transformation/ignore.js\";\nimport { mapPoolWords } from \"../transformation/pool.js\";\nimport { mapStaticWords } from \"../transformation/static.js\";\nimport { IRuntimeOptions } from \"./runtime.js\";\n\nexport function obfuscate(\n  code: string,\n  transformationOptions: IInternalTransformationOptions,\n  parserOptions: IInternalParserOptions,\n  runtimeOptions: IRuntimeOptions,\n): string {\n  const words = parse({ code: code, parserOptions: parserOptions });\n\n  buildMap({ words: words }, runtimeOptions);\n\n  sortMap(runtimeOptions);\n\n  mapStaticWords({ static: transformationOptions.static }, runtimeOptions);\n\n  mapIgnoredWords({ ignore: transformationOptions.ignore }, runtimeOptions);\n\n  mapPoolWords({ prefix: transformationOptions.prefix, pool: transformationOptions.pool }, runtimeOptions);\n\n  mapDefaultWords({ prefix: transformationOptions.prefix }, runtimeOptions);\n\n  return replace({ code: code }, runtimeOptions);\n}\n","import fs from \"fs\";\n\nexport function removeFolder(path: string): void {\n  fs.rmSync(path, { recursive: true, force: true });\n}\n","import { getObfuscatedWordsCount, stats } from \"../../core/debug/stats.js\";\nimport { copyFolder } from \"../../core/generation/copy.js\";\nimport { getAllFileNamesInDir, readFile } from \"../../core/generation/read.js\";\nimport { removeFolder } from \"../../core/generation/remove.js\";\nimport { writeFile } from \"../../core/generation/write.js\";\nimport {\n  buildDebugOptions,\n  buildGenerationOptions,\n  buildParserOptions,\n  buildTransformationOptions,\n} from \"../../core/options/options.js\";\nimport { obfuscate } from \"../../core/process/obfuscate.js\";\nimport { buildRuntimeOptions } from \"../../core/process/runtime.js\";\nimport { IOptions } from \"../../models/options.js\";\n\nexport function obfuscateCommand(options: IOptions | null): void {\n  if (!options) {\n    console.warn(\"Obfuscation process canceled due to unresolved errors.\");\n    return;\n  }\n\n  const generationOptions = buildGenerationOptions(options);\n  const transformationOptions = buildTransformationOptions(options.transformation);\n  const parserOptionsResponse = buildParserOptions(options.parser);\n  if (parserOptionsResponse.error) {\n    console.warn(parserOptionsResponse.error.errorDescription);\n    return;\n  }\n  const parserOptions = parserOptionsResponse.data;\n  const debugOptions = buildDebugOptions(options.debug);\n  const runtimeOptions = buildRuntimeOptions();\n\n  removeFolder(generationOptions.outputDir);\n  copyFolder(\n    generationOptions.inputDir,\n    generationOptions.outputDir,\n    generationOptions.ignore,\n    transformationOptions,\n    parserOptions!,\n    runtimeOptions,\n  );\n\n  const fileNames = getAllFileNamesInDir(generationOptions.outputDir);\n  console.warn(`Obfuscated ${fileNames.length} file(s)\\n`);\n\n  let fileCode;\n  fileNames.forEach((fileName) => {\n    fileCode = readFile(fileName);\n    writeFile(fileName, obfuscate(fileCode ?? \"\", transformationOptions, parserOptions!, runtimeOptions));\n  });\n  stats({ stats: debugOptions.stats }, runtimeOptions);\n  console.warn(`Obfuscated ${getObfuscatedWordsCount(runtimeOptions)} word(s)`);\n  console.warn(`Obfuscation completed.`);\n}\n","export function unknownCommand(option: string): void {\n  console.log(`error: unknown option '${option}'`);\n}\n","import { VERSION } from \"../../core/utils/constants.js\";\nexport function versionCommand(): void {\n  console.log(VERSION);\n}\n","import { CLI_OPTIONS, DEFAULT_CLI_OPTION, PROJECT_DISPLAY_NAME, VERSION } from \"../core/utils/constants.js\";\nimport { checkCommand } from \"./commands/check.js\";\nimport { helpCommand } from \"./commands/help.js\";\nimport { initCommand } from \"./commands/init.js\";\nimport { obfuscateCommand } from \"./commands/obfuscate.js\";\nimport { unknownCommand } from \"./commands/unknown.js\";\nimport { versionCommand } from \"./commands/version.js\";\n\nexport function startCLI(): void {\n  const inputArgs = process.argv.splice(2);\n  const selectedArg: string = inputArgs.length > 0 ? (inputArgs[0] ?? DEFAULT_CLI_OPTION) : DEFAULT_CLI_OPTION;\n\n  const option = CLI_OPTIONS.find((e) => [e.short, e.long].includes(selectedArg));\n  switch (option?.short) {\n    case \"-h\":\n      helpCommand();\n      break;\n    case \"-v\":\n      versionCommand();\n      break;\n    case \"-i\":\n      initCommand();\n      break;\n    case \"-c\":\n      checkCommand();\n      break;\n    case \"-o\":\n      console.warn(`${PROJECT_DISPLAY_NAME} v${VERSION}`);\n      obfuscateCommand(checkCommand());\n      break;\n    default:\n      unknownCommand(selectedArg);\n      break;\n  }\n}\n"],"mappings":"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","names":["path","fs","Table","import_fs","path","fs","import_cli_table3","Table","import_fs","import_path","generateWord","fs","path","import_fs","path","fs"]}