varlock 0.0.0 β†’ 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +46 -0
  2. package/bin/cli.js +2 -0
  3. package/dist/auto-load.d.ts +2 -0
  4. package/dist/auto-load.js +11 -0
  5. package/dist/auto-load.js.map +1 -0
  6. package/dist/chunk-332HXE6L.js +53 -0
  7. package/dist/chunk-332HXE6L.js.map +1 -0
  8. package/dist/chunk-33ROL4J5.js +1013 -0
  9. package/dist/chunk-33ROL4J5.js.map +1 -0
  10. package/dist/chunk-4WO4BGKU.js +70 -0
  11. package/dist/chunk-4WO4BGKU.js.map +1 -0
  12. package/dist/chunk-6YLXKXKR.js +225 -0
  13. package/dist/chunk-6YLXKXKR.js.map +1 -0
  14. package/dist/chunk-7UQXFWKN.js +82 -0
  15. package/dist/chunk-7UQXFWKN.js.map +1 -0
  16. package/dist/chunk-B4UBSMSZ.js +142 -0
  17. package/dist/chunk-B4UBSMSZ.js.map +1 -0
  18. package/dist/chunk-CPA2D42B.js +146 -0
  19. package/dist/chunk-CPA2D42B.js.map +1 -0
  20. package/dist/chunk-DAZNZPLN.js +675 -0
  21. package/dist/chunk-DAZNZPLN.js.map +1 -0
  22. package/dist/chunk-G4BD2BPH.js +2310 -0
  23. package/dist/chunk-G4BD2BPH.js.map +1 -0
  24. package/dist/chunk-LQZ6ICSS.js +21 -0
  25. package/dist/chunk-LQZ6ICSS.js.map +1 -0
  26. package/dist/chunk-O2QPQ5MG.js +98 -0
  27. package/dist/chunk-O2QPQ5MG.js.map +1 -0
  28. package/dist/chunk-QCC3P7BT.js +39 -0
  29. package/dist/chunk-QCC3P7BT.js.map +1 -0
  30. package/dist/chunk-RCHPHIHX.js +15 -0
  31. package/dist/chunk-RCHPHIHX.js.map +1 -0
  32. package/dist/chunk-RY3YIJFG.js +681 -0
  33. package/dist/chunk-RY3YIJFG.js.map +1 -0
  34. package/dist/chunk-XCFZJA7V.js +32 -0
  35. package/dist/chunk-XCFZJA7V.js.map +1 -0
  36. package/dist/chunk-XN24GZXQ.js +35 -0
  37. package/dist/chunk-XN24GZXQ.js.map +1 -0
  38. package/dist/chunk-Z55UMN2B.js +69 -0
  39. package/dist/chunk-Z55UMN2B.js.map +1 -0
  40. package/dist/cli/cli-executable.d.ts +2 -0
  41. package/dist/cli/cli-executable.js +205 -0
  42. package/dist/cli/cli-executable.js.map +1 -0
  43. package/dist/doctor.command-SHZI7SR3.js +6 -0
  44. package/dist/doctor.command-SHZI7SR3.js.map +1 -0
  45. package/dist/dotenv-compat.d.ts +2 -0
  46. package/dist/dotenv-compat.js +11 -0
  47. package/dist/dotenv-compat.js.map +1 -0
  48. package/dist/en-US-TSGNDI2P.js +22 -0
  49. package/dist/en-US-TSGNDI2P.js.map +1 -0
  50. package/dist/encrypt.command-VGJABHNK.js +6 -0
  51. package/dist/encrypt.command-VGJABHNK.js.map +1 -0
  52. package/dist/help.command-YZDL2VEQ.js +5 -0
  53. package/dist/help.command-YZDL2VEQ.js.map +1 -0
  54. package/dist/index.d.ts +37 -0
  55. package/dist/index.js +8 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/init.command-ERPGU436.js +10 -0
  58. package/dist/init.command-ERPGU436.js.map +1 -0
  59. package/dist/ja-JP-UBPCQAAD.js +22 -0
  60. package/dist/ja-JP-UBPCQAAD.js.map +1 -0
  61. package/dist/load.command-LQDSWJSK.js +9 -0
  62. package/dist/load.command-LQDSWJSK.js.map +1 -0
  63. package/dist/login.command-22RUZJLR.js +7 -0
  64. package/dist/login.command-22RUZJLR.js.map +1 -0
  65. package/dist/opt-out.command-Y4KUQ6PQ.js +5 -0
  66. package/dist/opt-out.command-Y4KUQ6PQ.js.map +1 -0
  67. package/dist/run.command-OF3UV7AD.js +9 -0
  68. package/dist/run.command-OF3UV7AD.js.map +1 -0
  69. package/package.json +50 -3
  70. package/notes.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/gunshi@0.26.3/node_modules/gunshi/lib/definition-wq1Kmbvq.js","../../../node_modules/.pnpm/gunshi@0.26.3/node_modules/gunshi/lib/utils-D41C8Abf.js","../../../node_modules/.pnpm/gunshi@0.26.3/node_modules/gunshi/lib/context-D_EmfRNA.js","../../../node_modules/.pnpm/args-tokens@0.20.1/node_modules/args-tokens/lib/utils-N7UlhLbz.js","../../../node_modules/.pnpm/gunshi@0.26.3/node_modules/gunshi/lib/renderer-BzRfaLdJ.js","../../../node_modules/.pnpm/args-tokens@0.20.1/node_modules/args-tokens/lib/parser-Dr4iAGaX.js","../../../node_modules/.pnpm/args-tokens@0.20.1/node_modules/args-tokens/lib/resolver-Q4k2fgTW.js","../../../node_modules/.pnpm/gunshi@0.26.3/node_modules/gunshi/lib/cli-DVGNVw3h.js"],"names":[],"mappings":"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","file":"chunk-33ROL4J5.js","sourcesContent":["//#region src/definition.ts\n/**\n* Define a {@link Command | command} with type inference\n* @param definition A {@link Command | command} definition\n* @returns A {@link Command | command} definition with type inference\n*/\nfunction define(definition) {\n\treturn definition;\n}\n/**\n* Define a {@link LazyCommand | lazy command} with command loader, which is attached with command definition as usage metadata.\n* @param loader A {@link CommandLoader | command loader}\n* @param definition A {@link Command | command} definition\n* @returns A {@link LazyCommand | lazy command} loader\n*/\nfunction lazy(loader, definition) {\n\tif (definition != null) {\n\t\tloader.commandName = definition.name;\n\t\tloader.description = definition.description;\n\t\tloader.args = definition.args;\n\t\tloader.examples = definition.examples;\n\t\tloader.resource = definition.resource;\n\t\tloader.toKebab = definition.toKebab;\n\t}\n\treturn loader;\n}\n\n//#endregion\nexport { define, lazy };","//#region src/constants.ts\n/**\n* The default locale string, which format is BCP 47 language tag.\n*/\nconst DEFAULT_LOCALE = \"en-US\";\nconst BUILT_IN_PREFIX = \"_\";\nconst ARG_PREFIX = \"arg\";\nconst BUILT_IN_KEY_SEPARATOR = \":\";\nconst ANONYMOUS_COMMAND_NAME = \"(anonymous)\";\nconst NOOP = () => {};\nconst COMMON_ARGS = {\n\thelp: {\n\t\ttype: \"boolean\",\n\t\tshort: \"h\",\n\t\tdescription: \"Display this help message\"\n\t},\n\tversion: {\n\t\ttype: \"boolean\",\n\t\tshort: \"v\",\n\t\tdescription: \"Display this version\"\n\t}\n};\nconst COMMAND_OPTIONS_DEFAULT = {\n\tname: void 0,\n\tdescription: void 0,\n\tversion: void 0,\n\tcwd: void 0,\n\tusageSilent: false,\n\tsubCommands: void 0,\n\tleftMargin: 2,\n\tmiddleMargin: 10,\n\tusageOptionType: false,\n\tusageOptionValue: true,\n\trenderHeader: void 0,\n\trenderUsage: void 0,\n\trenderValidationErrors: void 0,\n\ttranslationAdapterFactory: void 0\n};\n\n//#endregion\n//#region src/utils.ts\nfunction isLazyCommand(cmd) {\n\treturn typeof cmd === \"function\" && \"commandName\" in cmd && !!cmd.commandName;\n}\nasync function resolveLazyCommand(cmd, name, needRunResolving = false) {\n\tlet command;\n\tif (isLazyCommand(cmd)) {\n\t\tcommand = Object.assign(create(), {\n\t\t\tname: cmd.commandName,\n\t\t\tdescription: cmd.description,\n\t\t\targs: cmd.args,\n\t\t\texamples: cmd.examples,\n\t\t\tresource: cmd.resource\n\t\t});\n\t\tif (needRunResolving) {\n\t\t\tconst loaded = await cmd();\n\t\t\tif (typeof loaded === \"function\") command.run = loaded;\n\t\t\telse if (typeof loaded === \"object\") {\n\t\t\t\tif (loaded.run == null) throw new TypeError(`'run' is required in command: ${cmd.name || name}`);\n\t\t\t\tcommand.run = loaded.run;\n\t\t\t\tcommand.name = loaded.name;\n\t\t\t\tcommand.description = loaded.description;\n\t\t\t\tcommand.args = loaded.args;\n\t\t\t\tcommand.examples = loaded.examples;\n\t\t\t\tcommand.resource = loaded.resource;\n\t\t\t} else throw new TypeError(`Cannot resolve command: ${cmd.name || name}`);\n\t\t}\n\t} else command = Object.assign(create(), cmd);\n\tif (command.name == null && name) command.name = name;\n\treturn deepFreeze(command);\n}\nfunction resolveBuiltInKey(key) {\n\treturn `${BUILT_IN_PREFIX}${BUILT_IN_KEY_SEPARATOR}${key}`;\n}\nfunction resolveArgKey(key) {\n\treturn `${ARG_PREFIX}${BUILT_IN_KEY_SEPARATOR}${key}`;\n}\nasync function resolveExamples(ctx, examples) {\n\treturn typeof examples === \"string\" ? examples : typeof examples === \"function\" ? await examples(ctx) : \"\";\n}\nfunction mapResourceWithBuiltinKey(resource) {\n\treturn Object.entries(resource).reduce((acc, [key, value]) => {\n\t\tacc[resolveBuiltInKey(key)] = value;\n\t\treturn acc;\n\t}, create());\n}\nfunction create(obj = null) {\n\treturn Object.create(obj);\n}\nfunction log(...args) {\n\tconsole.log(...args);\n}\nfunction deepFreeze(obj) {\n\tif (obj === null || typeof obj !== \"object\") return obj;\n\tfor (const key of Object.keys(obj)) {\n\t\tconst value = obj[key];\n\t\tif (typeof value === \"object\" && value !== null) deepFreeze(value);\n\t}\n\treturn Object.freeze(obj);\n}\n\n//#endregion\nexport { ANONYMOUS_COMMAND_NAME, BUILT_IN_PREFIX, COMMAND_OPTIONS_DEFAULT, COMMON_ARGS, DEFAULT_LOCALE as DEFAULT_LOCALE$1, NOOP, create, deepFreeze, isLazyCommand, log, mapResourceWithBuiltinKey, resolveArgKey, resolveBuiltInKey, resolveExamples, resolveLazyCommand };","import { ANONYMOUS_COMMAND_NAME, BUILT_IN_PREFIX, COMMAND_OPTIONS_DEFAULT, DEFAULT_LOCALE$1 as DEFAULT_LOCALE, NOOP, create, deepFreeze, isLazyCommand, log, mapResourceWithBuiltinKey, resolveArgKey, resolveExamples, resolveLazyCommand } from \"./utils-D41C8Abf.js\";\n\n//#region src/locales/en-US.json\nvar COMMAND = \"COMMAND\";\nvar COMMANDS = \"COMMANDS\";\nvar SUBCOMMAND = \"SUBCOMMAND\";\nvar USAGE = \"USAGE\";\nvar ARGUMENTS = \"ARGUMENTS\";\nvar OPTIONS = \"OPTIONS\";\nvar EXAMPLES = \"EXAMPLES\";\nvar FORMORE = \"For more info, run any command with the `--help` flag:\";\nvar NEGATABLE = \"Negatable of\";\nvar DEFAULT = \"default\";\nvar CHOICES = \"choices\";\nvar help = \"Display this help message\";\nvar version = \"Display this version\";\nvar en_US_default = {\n\tCOMMAND,\n\tCOMMANDS,\n\tSUBCOMMAND,\n\tUSAGE,\n\tARGUMENTS,\n\tOPTIONS,\n\tEXAMPLES,\n\tFORMORE,\n\tNEGATABLE,\n\tDEFAULT,\n\tCHOICES,\n\thelp,\n\tversion\n};\n\n//#endregion\n//#region src/translation.ts\nfunction createTranslationAdapter(options) {\n\treturn new DefaultTranslation(options);\n}\nvar DefaultTranslation = class {\n\t#resources = new Map();\n\t#options;\n\tconstructor(options) {\n\t\tthis.#options = options;\n\t\tthis.#resources.set(options.locale, create());\n\t\tif (options.locale !== options.fallbackLocale) this.#resources.set(options.fallbackLocale, create());\n\t}\n\tgetResource(locale) {\n\t\treturn this.#resources.get(locale);\n\t}\n\tsetResource(locale, resource) {\n\t\tthis.#resources.set(locale, resource);\n\t}\n\tgetMessage(locale, key) {\n\t\tconst resource = this.getResource(locale);\n\t\tif (resource) return resource[key];\n\t\treturn void 0;\n\t}\n\ttranslate(locale, key, values = create()) {\n\t\tlet message = this.getMessage(locale, key);\n\t\tif (message === void 0 && locale !== this.#options.fallbackLocale) message = this.getMessage(this.#options.fallbackLocale, key);\n\t\tif (message === void 0) return;\n\t\treturn message.replaceAll(/\\{\\{(\\w+)\\}\\}/g, (_, name) => {\n\t\t\treturn values[name] == null ? \"\" : values[name].toString();\n\t\t});\n\t}\n};\n\n//#endregion\n//#region src/context.ts\nconst BUILT_IN_PREFIX_CODE = BUILT_IN_PREFIX.codePointAt(0);\n/**\n* Create a {@link CommandContext | command context}\n* @param param A {@link CommandContextParams | parameters} to create a {@link CommandContext | command context}\n* @returns A {@link CommandContext | command context}, which is readonly\n*/\nasync function createCommandContext({ args, values, positionals, rest, argv, tokens, command, cliOptions, callMode = \"entry\", omitted = false }) {\n\t/**\n\t* normailize the options schema and values, to avoid prototype pollution\n\t*/\n\tconst _args = Object.entries(args).reduce((acc, [key, value]) => {\n\t\tacc[key] = Object.assign(create(), value);\n\t\treturn acc;\n\t}, create());\n\t/**\n\t* setup the environment\n\t*/\n\tconst env = Object.assign(create(), COMMAND_OPTIONS_DEFAULT, cliOptions);\n\tconst locale = resolveLocale(cliOptions.locale);\n\tconst localeStr = locale.toString();\n\tconst translationAdapterFactory = cliOptions.translationAdapterFactory || createTranslationAdapter;\n\tconst adapter = translationAdapterFactory({\n\t\tlocale: localeStr,\n\t\tfallbackLocale: DEFAULT_LOCALE\n\t});\n\tconst localeResources = new Map();\n\tlet builtInLoadedResources;\n\t/**\n\t* load the built-in locale resources\n\t*/\n\tlocaleResources.set(DEFAULT_LOCALE, mapResourceWithBuiltinKey(en_US_default));\n\tif (DEFAULT_LOCALE !== localeStr) try {\n\t\tbuiltInLoadedResources = (await import(`./locales/${localeStr}.json`, { with: { type: \"json\" } })).default;\n\t\tlocaleResources.set(localeStr, mapResourceWithBuiltinKey(builtInLoadedResources));\n\t} catch {}\n\t/**\n\t* define the translation function, which is used to {@link CommandContext.translate}.\n\t*\n\t*/\n\tfunction translate(key, values$1 = create()) {\n\t\tconst strKey = key;\n\t\tif (strKey.codePointAt(0) === BUILT_IN_PREFIX_CODE) {\n\t\t\tconst resource = localeResources.get(localeStr) || localeResources.get(DEFAULT_LOCALE);\n\t\t\treturn resource[strKey] || strKey;\n\t\t} else return adapter.translate(locale.toString(), strKey, values$1) || \"\";\n\t}\n\t/**\n\t* load the sub commands\n\t*/\n\tlet cachedCommands;\n\tasync function loadCommands() {\n\t\tif (cachedCommands) return cachedCommands;\n\t\tconst subCommands = [...cliOptions.subCommands || []];\n\t\treturn cachedCommands = await Promise.all(subCommands.map(async ([name, cmd]) => await resolveLazyCommand(cmd, name)));\n\t}\n\t/**\n\t* create the context\n\t*/\n\tconst ctx = deepFreeze(Object.assign(create(), {\n\t\tname: getCommandName(command),\n\t\tdescription: command.description,\n\t\tomitted,\n\t\tcallMode,\n\t\tlocale,\n\t\tenv,\n\t\targs: _args,\n\t\tvalues,\n\t\tpositionals,\n\t\trest,\n\t\t_: argv,\n\t\ttokens,\n\t\ttoKebab: command.toKebab,\n\t\tlog: cliOptions.usageSilent ? NOOP : log,\n\t\tloadCommands,\n\t\ttranslate\n\t}));\n\t/**\n\t* load the command resources\n\t*/\n\tconst loadedOptionsResources = Object.entries(args).map(([key, arg]) => {\n\t\tconst description = arg.description || \"\";\n\t\treturn [key, description];\n\t});\n\tconst defaultCommandResource = loadedOptionsResources.reduce((res, [key, value]) => {\n\t\tres[resolveArgKey(key)] = value;\n\t\treturn res;\n\t}, create());\n\tdefaultCommandResource.description = command.description || \"\";\n\tdefaultCommandResource.examples = await resolveExamples(ctx, command.examples);\n\tadapter.setResource(DEFAULT_LOCALE, defaultCommandResource);\n\tconst originalResource = await loadCommandResource(ctx, command);\n\tif (originalResource) {\n\t\tconst resource = Object.assign(create(), originalResource, { examples: await resolveExamples(ctx, originalResource.examples) });\n\t\tif (builtInLoadedResources) {\n\t\t\tresource.help = builtInLoadedResources.help;\n\t\t\tresource.version = builtInLoadedResources.version;\n\t\t}\n\t\tadapter.setResource(localeStr, resource);\n\t}\n\treturn ctx;\n}\nfunction getCommandName(cmd) {\n\tif (isLazyCommand(cmd)) return cmd.commandName || cmd.name || ANONYMOUS_COMMAND_NAME;\n\telse if (typeof cmd === \"object\") return cmd.name || ANONYMOUS_COMMAND_NAME;\n\telse return ANONYMOUS_COMMAND_NAME;\n}\nfunction resolveLocale(locale) {\n\treturn locale instanceof Intl.Locale ? locale : typeof locale === \"string\" ? new Intl.Locale(locale) : new Intl.Locale(DEFAULT_LOCALE);\n}\nasync function loadCommandResource(ctx, command) {\n\tlet resource;\n\ttry {\n\t\tresource = await command.resource?.(ctx);\n\t} catch {}\n\treturn resource;\n}\n\n//#endregion\nexport { DefaultTranslation, createCommandContext };","//#region src/utils.ts\n/**\n* Entry point of utils.\n*\n* Note that this entry point is used by gunshi to import utility functions.\n*\n* @module\n*/\n/**\n* @author kazuya kawaguchi (a.k.a. kazupon)\n* @license MIT\n*/\nfunction kebabnize(str) {\n\treturn str.replace(/[A-Z]/g, (match, offset) => (offset > 0 ? \"-\" : \"\") + match.toLowerCase());\n}\n\n//#endregion\nexport { kebabnize };","import { COMMON_ARGS, create, resolveArgKey, resolveBuiltInKey, resolveExamples } from \"./utils-D41C8Abf.js\";\nimport { kebabnize } from \"args-tokens/utils\";\n\n//#region src/renderer/header.ts\n/**\n* Render the header.\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered header.\n*/\nfunction renderHeader(ctx) {\n\tconst title = ctx.env.description || ctx.env.name || \"\";\n\treturn Promise.resolve(title ? `${title} (${ctx.env.name || \"\"}${ctx.env.version ? ` v${ctx.env.version}` : \"\"})` : title);\n}\n\n//#endregion\n//#region src/renderer/usage.ts\nconst COMMON_ARGS_KEYS = Object.keys(COMMON_ARGS);\n/**\n* Render the usage.\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered usage.\n*/\nasync function renderUsage(ctx) {\n\tconst messages = [];\n\tif (!ctx.omitted) {\n\t\tconst description = resolveDescription(ctx);\n\t\tif (description) messages.push(description, \"\");\n\t}\n\tmessages.push(...await renderUsageSection(ctx), \"\");\n\tif (ctx.omitted && await hasCommands(ctx)) messages.push(...await renderCommandsSection(ctx), \"\");\n\tif (hasPositionalArgs(ctx)) messages.push(...await renderPositionalArgsSection(ctx), \"\");\n\tif (hasOptionalArgs(ctx)) messages.push(...await renderOptionalArgsSection(ctx), \"\");\n\tconst examples = await renderExamplesSection(ctx);\n\tif (examples.length > 0) messages.push(...examples, \"\");\n\treturn messages.join(\"\\n\");\n}\n/**\n* Render the positional arguments section\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered arguments section\n*/\nasync function renderPositionalArgsSection(ctx) {\n\tconst messages = [];\n\tmessages.push(`${ctx.translate(resolveBuiltInKey(\"ARGUMENTS\"))}:`);\n\tmessages.push(await generatePositionalArgsUsage(ctx));\n\treturn messages;\n}\n/**\n* Render the optional arguments section\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered options section\n*/\nasync function renderOptionalArgsSection(ctx) {\n\tconst messages = [];\n\tmessages.push(`${ctx.translate(resolveBuiltInKey(\"OPTIONS\"))}:`);\n\tmessages.push(await generateOptionalArgsUsage(ctx, getOptionalArgsPairs(ctx)));\n\treturn messages;\n}\n/**\n* Render the examples section\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered examples section\n*/\nasync function renderExamplesSection(ctx) {\n\tconst messages = [];\n\tconst resolvedExamples = await resolveExamples$1(ctx);\n\tif (resolvedExamples) {\n\t\tconst examples = resolvedExamples.split(\"\\n\").map((example) => example.padStart(ctx.env.leftMargin + example.length));\n\t\tmessages.push(`${ctx.translate(resolveBuiltInKey(\"EXAMPLES\"))}:`, ...examples);\n\t}\n\treturn messages;\n}\n/**\n* Render the usage section\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered usage section\n*/\nasync function renderUsageSection(ctx) {\n\tconst messages = [`${ctx.translate(resolveBuiltInKey(\"USAGE\"))}:`];\n\tif (ctx.omitted) {\n\t\tconst defaultCommand = `${resolveEntry(ctx)}${await hasCommands(ctx) ? ` [${resolveSubCommand(ctx)}]` : \"\"} ${[generateOptionsSymbols(ctx), generatePositionalSymbols(ctx)].filter(Boolean).join(\" \")}`;\n\t\tmessages.push(defaultCommand.padStart(ctx.env.leftMargin + defaultCommand.length));\n\t\tif (await hasCommands(ctx)) {\n\t\t\tconst commandsUsage = `${resolveEntry(ctx)} <${ctx.translate(resolveBuiltInKey(\"COMMANDS\"))}>`;\n\t\t\tmessages.push(commandsUsage.padStart(ctx.env.leftMargin + commandsUsage.length));\n\t\t}\n\t} else {\n\t\tconst usageStr = `${resolveEntry(ctx)} ${resolveSubCommand(ctx)} ${[generateOptionsSymbols(ctx), generatePositionalSymbols(ctx)].filter(Boolean).join(\" \")}`;\n\t\tmessages.push(usageStr.padStart(ctx.env.leftMargin + usageStr.length));\n\t}\n\treturn messages;\n}\n/**\n* Render the commands section\n* @param ctx A {@link CommandContext | command context}\n* @returns A rendered commands section\n*/\nasync function renderCommandsSection(ctx) {\n\tconst messages = [`${ctx.translate(resolveBuiltInKey(\"COMMANDS\"))}:`];\n\tconst loadedCommands = await ctx.loadCommands();\n\tconst commandMaxLength = Math.max(...loadedCommands.map((cmd) => (cmd.name || \"\").length));\n\tconst commandsStr = await Promise.all(loadedCommands.map((cmd) => {\n\t\tconst key = cmd.name || \"\";\n\t\tconst desc = cmd.description || \"\";\n\t\tconst command = `${key.padEnd(commandMaxLength + ctx.env.middleMargin)}${desc} `;\n\t\treturn `${command.padStart(ctx.env.leftMargin + command.length)} `;\n\t}));\n\tmessages.push(...commandsStr, \"\", ctx.translate(resolveBuiltInKey(\"FORMORE\")));\n\tmessages.push(...loadedCommands.map((cmd) => {\n\t\tconst commandHelp = `${ctx.env.name} ${cmd.name} --help`;\n\t\treturn `${commandHelp.padStart(ctx.env.leftMargin + commandHelp.length)}`;\n\t}));\n\treturn messages;\n}\n/**\n* Resolve the entry command name\n* @param ctx A {@link CommandContext | command context}\n* @returns The entry command name\n*/\nfunction resolveEntry(ctx) {\n\treturn ctx.env.name || ctx.translate(resolveBuiltInKey(\"COMMAND\"));\n}\n/**\n* Resolve the sub command name\n* @param ctx A {@link CommandContext | command context}\n* @returns The sub command name\n*/\nfunction resolveSubCommand(ctx) {\n\treturn ctx.name || ctx.translate(resolveBuiltInKey(\"SUBCOMMAND\"));\n}\n/**\n* Resolve the command description\n* @param ctx A {@link CommandContext | command context}\n* @returns resolved command description\n*/\nfunction resolveDescription(ctx) {\n\treturn ctx.translate(\"description\") || ctx.description || \"\";\n}\n/**\n* Resolve the command examples\n* @param ctx A {@link CommandContext | command context}\n* @returns resolved command examples, if not resolved, return empty string\n*/\nasync function resolveExamples$1(ctx) {\n\tconst ret = ctx.translate(\"examples\");\n\tif (ret) return ret;\n\tconst command = ctx.env.subCommands?.get(ctx.name || \"\");\n\treturn await resolveExamples(ctx, command?.examples);\n}\n/**\n* Check if the command has sub commands\n* @param ctx A {@link CommandContext | command context}\n* @returns True if the command has sub commands\n*/\nasync function hasCommands(ctx) {\n\tconst loadedCommands = await ctx.loadCommands();\n\treturn loadedCommands.length > 1;\n}\n/**\n* Check if the command has optional arguments\n* @param ctx A {@link CommandContext | command context}\n* @returns True if the command has options\n*/\nfunction hasOptionalArgs(ctx) {\n\treturn !!(ctx.args && Object.values(ctx.args).some((arg) => arg.type !== \"positional\"));\n}\n/**\n* Check if the command has positional arguments\n* @param ctx A {@link CommandContext | command context}\n* @returns True if the command has options\n*/\nfunction hasPositionalArgs(ctx) {\n\treturn !!(ctx.args && Object.values(ctx.args).some((arg) => arg.type === \"positional\"));\n}\n/**\n* Check if all options have default values\n* @param ctx A {@link CommandContext | command context}\n* @returns True if all options have default values\n*/\nfunction hasAllDefaultOptions(ctx) {\n\treturn !!(ctx.args && Object.values(ctx.args).every((arg) => arg.default));\n}\n/**\n* Generate options symbols for usage\n* @param ctx A {@link CommandContext | command context}\n* @returns Options symbols for usage\n*/\nfunction generateOptionsSymbols(ctx) {\n\treturn hasOptionalArgs(ctx) ? hasAllDefaultOptions(ctx) ? `[${ctx.translate(resolveBuiltInKey(\"OPTIONS\"))}]` : `<${ctx.translate(resolveBuiltInKey(\"OPTIONS\"))}>` : \"\";\n}\nfunction makeShortLongOptionPair(schema, name, toKebab) {\n\tconst displayName = toKebab || schema.toKebab ? kebabnize(name) : name;\n\tlet key = `--${displayName}`;\n\tif (schema.short) key = `-${schema.short}, ${key}`;\n\treturn key;\n}\n/**\n* Get optional arguments pairs for usage\n* @param ctx A {@link CommandContext | command context}\n* @returns Options pairs for usage\n*/\nfunction getOptionalArgsPairs(ctx) {\n\treturn Object.entries(ctx.args).reduce((acc, [name, schema]) => {\n\t\tif (schema.type === \"positional\") return acc;\n\t\tlet key = makeShortLongOptionPair(schema, name, ctx.toKebab);\n\t\tif (schema.type !== \"boolean\") {\n\t\t\tconst displayName = ctx.toKebab || schema.toKebab ? kebabnize(name) : name;\n\t\t\tkey = schema.default ? `${key} [${displayName}]` : `${key} <${displayName}>`;\n\t\t}\n\t\tacc[name] = key;\n\t\tif (schema.type === \"boolean\" && schema.negatable && !COMMON_ARGS_KEYS.includes(name)) {\n\t\t\tconst displayName = ctx.toKebab || schema.toKebab ? kebabnize(name) : name;\n\t\t\tacc[`no-${name}`] = `--no-${displayName}`;\n\t\t}\n\t\treturn acc;\n\t}, create());\n}\nconst resolveNegatableKey = (key) => key.split(\"no-\")[1];\nfunction resolveNegatableType(key, ctx) {\n\treturn ctx.args[key.startsWith(\"no-\") ? resolveNegatableKey(key) : key].type;\n}\nfunction generateDefaultDisplayValue(ctx, schema) {\n\treturn `${ctx.translate(resolveBuiltInKey(\"DEFAULT\"))}: ${schema.default}`;\n}\nfunction resolveDisplayValue(ctx, key) {\n\tif (COMMON_ARGS_KEYS.includes(key)) return \"\";\n\tconst schema = ctx.args[key];\n\tif ((schema.type === \"boolean\" || schema.type === \"number\" || schema.type === \"string\" || schema.type === \"custom\") && schema.default !== void 0) return `(${generateDefaultDisplayValue(ctx, schema)})`;\n\tif (schema.type === \"enum\") {\n\t\tconst _default = schema.default !== void 0 ? generateDefaultDisplayValue(ctx, schema) : \"\";\n\t\tconst choices = `${ctx.translate(resolveBuiltInKey(\"CHOICES\"))}: ${schema.choices.join(\" | \")}`;\n\t\treturn `(${_default ? `${_default}, ${choices}` : choices})`;\n\t}\n\treturn \"\";\n}\n/**\n* Generate optional arguments usage\n* @param ctx A {@link CommandContext | command context}\n* @param optionsPairs Options pairs for usage\n* @returns Generated options usage\n*/\nasync function generateOptionalArgsUsage(ctx, optionsPairs) {\n\tconst optionsMaxLength = Math.max(...Object.entries(optionsPairs).map(([_, value]) => value.length));\n\tconst optionSchemaMaxLength = ctx.env.usageOptionType ? Math.max(...Object.entries(optionsPairs).map(([key]) => resolveNegatableType(key, ctx).length)) : 0;\n\tconst usages = await Promise.all(Object.entries(optionsPairs).map(([key, value]) => {\n\t\tlet rawDesc = ctx.translate(resolveArgKey(key));\n\t\tif (!rawDesc && key.startsWith(\"no-\")) {\n\t\t\tconst name = resolveNegatableKey(key);\n\t\t\tconst schema = ctx.args[name];\n\t\t\tconst optionKey = makeShortLongOptionPair(schema, name, ctx.toKebab);\n\t\t\trawDesc = `${ctx.translate(resolveBuiltInKey(\"NEGATABLE\"))} ${optionKey}`;\n\t\t}\n\t\tconst optionsSchema = ctx.env.usageOptionType ? `[${resolveNegatableType(key, ctx)}] ` : \"\";\n\t\tconst valueDesc = key.startsWith(\"no-\") ? \"\" : resolveDisplayValue(ctx, key);\n\t\tconst desc = `${optionsSchema ? optionsSchema.padEnd(optionSchemaMaxLength + 3) : \"\"}${rawDesc}`;\n\t\tconst option = `${value.padEnd(optionsMaxLength + ctx.env.middleMargin)}${desc}${valueDesc ? ` ${valueDesc}` : \"\"}`;\n\t\treturn `${option.padStart(ctx.env.leftMargin + option.length)}`;\n\t}));\n\treturn usages.join(\"\\n\");\n}\nfunction getPositionalArgs(ctx) {\n\treturn Object.entries(ctx.args).filter(([_, schema]) => schema.type === \"positional\");\n}\nasync function generatePositionalArgsUsage(ctx) {\n\tconst positionals = getPositionalArgs(ctx);\n\tconst argsMaxLength = Math.max(...positionals.map(([name]) => name.length));\n\tconst usages = await Promise.all(positionals.map(([name]) => {\n\t\tconst desc = ctx.translate(resolveArgKey(name)) || ctx.args[name].description || \"\";\n\t\tconst arg = `${name.padEnd(argsMaxLength + ctx.env.middleMargin)} ${desc}`;\n\t\treturn `${arg.padStart(ctx.env.leftMargin + arg.length)}`;\n\t}));\n\treturn usages.join(\"\\n\");\n}\nfunction generatePositionalSymbols(ctx) {\n\treturn hasPositionalArgs(ctx) ? getPositionalArgs(ctx).map(([name]) => `<${name}>`).join(\" \") : \"\";\n}\n\n//#endregion\n//#region src/renderer/validation.ts\n/**\n* Render the validation errors.\n* @param ctx A {@link CommandContext | command context}\n* @param error An {@link AggregateError} of option in `args-token` validation\n* @returns A rendered validation error.\n*/\nfunction renderValidationErrors(_ctx, error) {\n\tconst messages = [];\n\tfor (const err of error.errors) messages.push(err.message);\n\treturn Promise.resolve(messages.join(\"\\n\"));\n}\n\n//#endregion\nexport { renderHeader, renderUsage, renderValidationErrors };","//#region src/parser.ts\nconst HYPHEN_CHAR = \"-\";\nconst HYPHEN_CODE = HYPHEN_CHAR.codePointAt(0);\nconst EQUAL_CHAR = \"=\";\nconst EQUAL_CODE = EQUAL_CHAR.codePointAt(0);\nconst TERMINATOR = \"--\";\nconst SHORT_OPTION_PREFIX = HYPHEN_CHAR;\nconst LONG_OPTION_PREFIX = \"--\";\n/**\n* Parse command line arguments.\n* @example\n* ```js\n* import { parseArgs } from 'args-tokens' // for Node.js and Bun\n* // import { parseArgs } from 'jsr:@kazupon/args-tokens' // for Deno\n*\n* const tokens = parseArgs(['--foo', 'bar', '-x', '--bar=baz'])\n* // do something with using tokens\n* // ...\n* console.log('tokens:', tokens)\n* ```\n* @param args command line arguments\n* @param options parse options\n* @returns Argument tokens.\n*/\nfunction parseArgs(args, options = {}) {\n\tconst { allowCompatible = false } = options;\n\tconst tokens = [];\n\tconst remainings = [...args];\n\tlet index = -1;\n\tlet groupCount = 0;\n\tlet hasShortValueSeparator = false;\n\twhile (remainings.length > 0) {\n\t\tconst arg = remainings.shift();\n\t\tif (arg == void 0) break;\n\t\tconst nextArg = remainings[0];\n\t\tif (groupCount > 0) groupCount--;\n\t\telse index++;\n\t\tif (arg === TERMINATOR) {\n\t\t\ttokens.push({\n\t\t\t\tkind: \"option-terminator\",\n\t\t\t\tindex\n\t\t\t});\n\t\t\tconst mapped = remainings.map((arg$1) => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"positional\",\n\t\t\t\t\tindex: ++index,\n\t\t\t\t\tvalue: arg$1\n\t\t\t\t};\n\t\t\t});\n\t\t\ttokens.push(...mapped);\n\t\t\tbreak;\n\t\t}\n\t\tif (isShortOption(arg)) {\n\t\t\tconst shortOption = arg.charAt(1);\n\t\t\tlet value;\n\t\t\tlet inlineValue;\n\t\t\tif (groupCount) {\n\t\t\t\ttokens.push({\n\t\t\t\t\tkind: \"option\",\n\t\t\t\t\tname: shortOption,\n\t\t\t\t\trawName: arg,\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue,\n\t\t\t\t\tinlineValue\n\t\t\t\t});\n\t\t\t\tif (groupCount === 1 && hasOptionValue(nextArg)) {\n\t\t\t\t\tvalue = remainings.shift();\n\t\t\t\t\tif (hasShortValueSeparator) {\n\t\t\t\t\t\tinlineValue = true;\n\t\t\t\t\t\thasShortValueSeparator = false;\n\t\t\t\t\t}\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\tkind: \"option\",\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tinlineValue\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else tokens.push({\n\t\t\t\tkind: \"option\",\n\t\t\t\tname: shortOption,\n\t\t\t\trawName: arg,\n\t\t\t\tindex,\n\t\t\t\tvalue,\n\t\t\t\tinlineValue\n\t\t\t});\n\t\t\tif (value != null) ++index;\n\t\t\tcontinue;\n\t\t}\n\t\tif (isShortOptionGroup(arg)) {\n\t\t\tconst expanded = [];\n\t\t\tlet shortValue = \"\";\n\t\t\tfor (let i = 1; i < arg.length; i++) {\n\t\t\t\tconst shortableOption = arg.charAt(i);\n\t\t\t\tif (hasShortValueSeparator) shortValue += shortableOption;\n\t\t\t\telse if (!allowCompatible && shortableOption.codePointAt(0) === EQUAL_CODE) hasShortValueSeparator = true;\n\t\t\t\telse expanded.push(`${SHORT_OPTION_PREFIX}${shortableOption}`);\n\t\t\t}\n\t\t\tif (shortValue) expanded.push(shortValue);\n\t\t\tremainings.unshift(...expanded);\n\t\t\tgroupCount = expanded.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (isLongOption(arg)) {\n\t\t\tconst longOption = arg.slice(2);\n\t\t\ttokens.push({\n\t\t\t\tkind: \"option\",\n\t\t\t\tname: longOption,\n\t\t\t\trawName: arg,\n\t\t\t\tindex,\n\t\t\t\tvalue: void 0,\n\t\t\t\tinlineValue: void 0\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isLongOptionAndValue(arg)) {\n\t\t\tconst equalIndex = arg.indexOf(EQUAL_CHAR);\n\t\t\tconst longOption = arg.slice(2, equalIndex);\n\t\t\tconst value = arg.slice(equalIndex + 1);\n\t\t\ttokens.push({\n\t\t\t\tkind: \"option\",\n\t\t\t\tname: longOption,\n\t\t\t\trawName: `${LONG_OPTION_PREFIX}${longOption}`,\n\t\t\t\tindex,\n\t\t\t\tvalue,\n\t\t\t\tinlineValue: true\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\ttokens.push({\n\t\t\tkind: \"positional\",\n\t\t\tindex,\n\t\t\tvalue: arg\n\t\t});\n\t}\n\treturn tokens;\n}\n/**\n* Check if `arg` is a short option (e.g. `-f`).\n* @param arg the argument to check\n* @returns whether `arg` is a short option.\n*/\nfunction isShortOption(arg) {\n\treturn arg.length === 2 && arg.codePointAt(0) === HYPHEN_CODE && arg.codePointAt(1) !== HYPHEN_CODE;\n}\n/**\n* Check if `arg` is a short option group (e.g. `-abc`).\n* @param arg the argument to check\n* @returns whether `arg` is a short option group.\n*/\nfunction isShortOptionGroup(arg) {\n\tif (arg.length <= 2) return false;\n\tif (arg.codePointAt(0) !== HYPHEN_CODE) return false;\n\tif (arg.codePointAt(1) === HYPHEN_CODE) return false;\n\treturn true;\n}\n/**\n* Check if `arg` is a long option (e.g. `--foo`).\n* @param arg the argument to check\n* @returns whether `arg` is a long option.\n*/\nfunction isLongOption(arg) {\n\treturn hasLongOptionPrefix(arg) && !arg.includes(EQUAL_CHAR, 3);\n}\n/**\n* Check if `arg` is a long option with value (e.g. `--foo=bar`).\n* @param arg the argument to check\n* @returns whether `arg` is a long option.\n*/\nfunction isLongOptionAndValue(arg) {\n\treturn hasLongOptionPrefix(arg) && arg.includes(EQUAL_CHAR, 3);\n}\n/**\n* Check if `arg` is a long option prefix (e.g. `--`).\n* @param arg the argument to check\n* @returns whether `arg` is a long option prefix.\n*/\nfunction hasLongOptionPrefix(arg) {\n\treturn arg.length > 2 && ~arg.indexOf(LONG_OPTION_PREFIX);\n}\n/**\n* Check if a `value` is an option value.\n* @param value a value to check\n* @returns whether a `value` is an option value.\n*/\nfunction hasOptionValue(value) {\n\treturn !(value == null) && value.codePointAt(0) !== HYPHEN_CODE;\n}\n\n//#endregion\nexport { hasLongOptionPrefix, isShortOption, parseArgs };","import { hasLongOptionPrefix, isShortOption } from \"./parser-Dr4iAGaX.js\";\nimport { kebabnize } from \"./utils-N7UlhLbz.js\";\n\n//#region src/resolver.ts\nconst SKIP_POSITIONAL_DEFAULT = -1;\n/**\n* Resolve command line arguments.\n* @param args - An arguments that contains {@link ArgSchema | arguments schema}.\n* @param tokens - An array of {@link ArgToken | tokens}.\n* @param resolveArgs - An arguments that contains {@link ResolveArgs | resolve arguments}.\n* @returns An object that contains the values of the arguments, positional arguments, rest arguments, and {@link AggregateError | validation errors}.\n*/\nfunction resolveArgs(args, tokens, { shortGrouping = false, skipPositional = SKIP_POSITIONAL_DEFAULT, toKebab = false } = {}) {\n\tconst skipPositionalIndex = typeof skipPositional === \"number\" ? Math.max(skipPositional, SKIP_POSITIONAL_DEFAULT) : SKIP_POSITIONAL_DEFAULT;\n\tconst rest = [];\n\tconst optionTokens = [];\n\tconst positionalTokens = [];\n\tlet currentLongOption;\n\tlet currentShortOption;\n\tconst expandableShortOptions = [];\n\tfunction toShortValue() {\n\t\tif (expandableShortOptions.length === 0) return void 0;\n\t\telse {\n\t\t\tconst value = expandableShortOptions.map((token) => token.name).join(\"\");\n\t\t\texpandableShortOptions.length = 0;\n\t\t\treturn value;\n\t\t}\n\t}\n\tfunction applyLongOptionValue(value = void 0) {\n\t\tif (currentLongOption) {\n\t\t\tcurrentLongOption.value = value;\n\t\t\toptionTokens.push({ ...currentLongOption });\n\t\t\tcurrentLongOption = void 0;\n\t\t}\n\t}\n\tfunction applyShortOptionValue(value = void 0) {\n\t\tif (currentShortOption) {\n\t\t\tcurrentShortOption.value = value || toShortValue();\n\t\t\toptionTokens.push({ ...currentShortOption });\n\t\t\tcurrentShortOption = void 0;\n\t\t}\n\t}\n\t/**\n\t* analyze phase to resolve value\n\t* separate tokens into positionals, long and short options, after that resolve values\n\t*/\n\tconst schemas = Object.values(args);\n\tlet terminated = false;\n\tfor (let i = 0; i < tokens.length; i++) {\n\t\tconst token = tokens[i];\n\t\tif (token.kind === \"positional\") {\n\t\t\tif (terminated && token.value) {\n\t\t\t\trest.push(token.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (currentShortOption) {\n\t\t\t\tconst found = schemas.find((schema) => schema.short === currentShortOption.name && schema.type === \"boolean\");\n\t\t\t\tif (found) positionalTokens.push({ ...token });\n\t\t\t} else if (currentLongOption) {\n\t\t\t\tconst found = args[currentLongOption.name]?.type === \"boolean\";\n\t\t\t\tif (found) positionalTokens.push({ ...token });\n\t\t\t} else positionalTokens.push({ ...token });\n\t\t\tapplyLongOptionValue(token.value);\n\t\t\tapplyShortOptionValue(token.value);\n\t\t} else if (token.kind === \"option\") if (token.rawName) {\n\t\t\tif (hasLongOptionPrefix(token.rawName)) {\n\t\t\t\tapplyLongOptionValue();\n\t\t\t\tif (token.inlineValue) optionTokens.push({ ...token });\n\t\t\t\telse currentLongOption = { ...token };\n\t\t\t\tapplyShortOptionValue();\n\t\t\t} else if (isShortOption(token.rawName)) if (currentShortOption) {\n\t\t\t\tif (currentShortOption.index === token.index) if (shortGrouping) {\n\t\t\t\t\tcurrentShortOption.value = token.value;\n\t\t\t\t\toptionTokens.push({ ...currentShortOption });\n\t\t\t\t\tcurrentShortOption = { ...token };\n\t\t\t\t} else expandableShortOptions.push({ ...token });\n\t\t\t\telse {\n\t\t\t\t\tcurrentShortOption.value = toShortValue();\n\t\t\t\t\toptionTokens.push({ ...currentShortOption });\n\t\t\t\t\tcurrentShortOption = { ...token };\n\t\t\t\t}\n\t\t\t\tapplyLongOptionValue();\n\t\t\t} else {\n\t\t\t\tcurrentShortOption = { ...token };\n\t\t\t\tapplyLongOptionValue();\n\t\t\t}\n\t\t} else {\n\t\t\tif (currentShortOption && currentShortOption.index == token.index && token.inlineValue) {\n\t\t\t\tcurrentShortOption.value = token.value;\n\t\t\t\toptionTokens.push({ ...currentShortOption });\n\t\t\t\tcurrentShortOption = void 0;\n\t\t\t}\n\t\t\tapplyLongOptionValue();\n\t\t}\n\t\telse {\n\t\t\tif (token.kind === \"option-terminator\") terminated = true;\n\t\t\tapplyLongOptionValue();\n\t\t\tapplyShortOptionValue();\n\t\t}\n\t}\n\t/**\n\t* check if the last long or short option is not resolved\n\t*/\n\tapplyLongOptionValue();\n\tapplyShortOptionValue();\n\t/**\n\t* resolve values\n\t*/\n\tconst values = Object.create(null);\n\tconst errors = [];\n\tfunction checkTokenName(option, schema, token) {\n\t\treturn token.name === (schema.type === \"boolean\" ? schema.negatable && token.name?.startsWith(\"no-\") ? `no-${option}` : option : option);\n\t}\n\tconst positionalItemCount = tokens.filter((token) => token.kind === \"positional\").length;\n\tfunction getPositionalSkipIndex() {\n\t\treturn Math.min(skipPositionalIndex, positionalItemCount);\n\t}\n\tlet positionalsCount = 0;\n\tfor (const [rawArg, schema] of Object.entries(args)) {\n\t\tconst arg = toKebab || schema.toKebab ? kebabnize(rawArg) : rawArg;\n\t\tif (schema.required) {\n\t\t\tconst found = optionTokens.find((token) => {\n\t\t\t\treturn schema.short && token.name === schema.short || token.rawName && hasLongOptionPrefix(token.rawName) && token.name === arg;\n\t\t\t});\n\t\t\tif (!found) {\n\t\t\t\terrors.push(createRequireError(arg, schema));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (schema.type === \"positional\") {\n\t\t\tif (skipPositionalIndex > SKIP_POSITIONAL_DEFAULT) while (positionalsCount <= getPositionalSkipIndex()) positionalsCount++;\n\t\t\tconst positional = positionalTokens[positionalsCount];\n\t\t\tif (positional != null) values[rawArg] = positional.value;\n\t\t\telse errors.push(createRequireError(arg, schema));\n\t\t\tpositionalsCount++;\n\t\t\tcontinue;\n\t\t}\n\t\tfor (let i = 0; i < optionTokens.length; i++) {\n\t\t\tconst token = optionTokens[i];\n\t\t\tif (checkTokenName(arg, schema, token) && token.rawName != void 0 && hasLongOptionPrefix(token.rawName) || schema.short === token.name && token.rawName != void 0 && isShortOption(token.rawName)) {\n\t\t\t\tconst invalid = validateRequire(token, arg, schema);\n\t\t\t\tif (invalid) {\n\t\t\t\t\terrors.push(invalid);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (schema.type === \"boolean\") token.value = void 0;\n\t\t\t\tconst [parsedValue, error] = parse(token, arg, schema);\n\t\t\t\tif (error) errors.push(error);\n\t\t\t\telse if (schema.multiple) {\n\t\t\t\t\tvalues[rawArg] ||= [];\n\t\t\t\t\tvalues[rawArg].push(parsedValue);\n\t\t\t\t} else values[rawArg] = parsedValue;\n\t\t\t}\n\t\t}\n\t\tif (values[rawArg] == null && schema.default != null) values[rawArg] = schema.default;\n\t}\n\treturn {\n\t\tvalues,\n\t\tpositionals: positionalTokens.map((token) => token.value),\n\t\trest,\n\t\terror: errors.length > 0 ? new AggregateError(errors) : void 0\n\t};\n}\nfunction parse(token, option, schema) {\n\tswitch (schema.type) {\n\t\tcase \"string\": return typeof token.value === \"string\" ? [token.value || schema.default, void 0] : [void 0, createTypeError(option, schema)];\n\t\tcase \"boolean\": return token.value ? [token.value || schema.default, void 0] : [!(schema.negatable && token.name.startsWith(\"no-\")), void 0];\n\t\tcase \"number\": {\n\t\t\tif (!isNumeric(token.value)) return [void 0, createTypeError(option, schema)];\n\t\t\treturn token.value ? [+token.value, void 0] : [+(schema.default || \"\"), void 0];\n\t\t}\n\t\tcase \"enum\": {\n\t\t\tif (schema.choices && !schema.choices.includes(token.value)) return [void 0, new ArgResolveError(`Optional argument '--${option}' ${schema.short ? `or '-${schema.short}' ` : \"\"}should be chosen from '${schema.type}' [${schema.choices.map((c) => JSON.stringify(c)).join(\", \")}] values`, option, \"type\", schema)];\n\t\t\treturn [token.value || schema.default, void 0];\n\t\t}\n\t\tcase \"custom\": {\n\t\t\tif (typeof schema.parse !== \"function\") throw new TypeError(`argument '${option}' should have a 'parse' function`);\n\t\t\ttry {\n\t\t\t\treturn [schema.parse(token.value || String(schema.default || \"\")), void 0];\n\t\t\t} catch (error) {\n\t\t\t\treturn [void 0, error];\n\t\t\t}\n\t\t}\n\t\tdefault: throw new Error(`Unsupported argument type '${schema.type}' for option '${option}'`);\n\t}\n}\nfunction createRequireError(option, schema) {\n\tconst message = schema.type === \"positional\" ? `Positional argument '${option}' is required` : `Optional argument '--${option}' ${schema.short ? `or '-${schema.short}' ` : \"\"}is required`;\n\treturn new ArgResolveError(message, option, \"required\", schema);\n}\n/**\n* An error that occurs when resolving arguments.\n* This error is thrown when the argument is not valid.\n*/\nvar ArgResolveError = class extends Error {\n\tname;\n\tschema;\n\ttype;\n\tconstructor(message, name, type, schema) {\n\t\tsuper(message);\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.schema = schema;\n\t}\n};\nfunction validateRequire(token, option, schema) {\n\tif (schema.required && schema.type !== \"boolean\" && !token.value) return createRequireError(option, schema);\n}\nfunction isNumeric(str) {\n\treturn str.trim() !== \"\" && !isNaN(str);\n}\nfunction createTypeError(option, schema) {\n\treturn new ArgResolveError(`Optional argument '--${option}' ${schema.short ? `or '-${schema.short}' ` : \"\"}should be '${schema.type}'`, option, \"type\", schema);\n}\n\n//#endregion\nexport { ArgResolveError, resolveArgs };","import { ANONYMOUS_COMMAND_NAME, COMMAND_OPTIONS_DEFAULT, COMMON_ARGS, create, isLazyCommand, resolveLazyCommand } from \"./utils-D41C8Abf.js\";\nimport { createCommandContext } from \"./context-D_EmfRNA.js\";\nimport { renderHeader, renderUsage, renderValidationErrors } from \"./renderer-BzRfaLdJ.js\";\nimport { parseArgs, resolveArgs } from \"args-tokens\";\n\n//#region src/cli.ts\n/**\n* Run the command.\n* @param args Command line arguments\n* @param entry A {@link Command | entry command}, an {@link CommandRunner | inline command runner}, or a {@link LazyCommand | lazily-loaded command}\n* @param options A {@link CliOptions | CLI options}\n* @returns A rendered usage or undefined. if you will use {@link CliOptions.usageSilent} option, it will return rendered usage string.\n*/\nasync function cli(argv, entry, options = {}) {\n\tconst cliOptions = resolveCliOptions(options, entry);\n\tconst tokens = parseArgs(argv);\n\tconst subCommand = getSubCommand(tokens);\n\tconst { commandName: name, command, callMode } = await resolveCommand(subCommand, entry, cliOptions);\n\tif (!command) throw new Error(`Command not found: ${name || \"\"}`);\n\tconst args = resolveArguments(getCommandArgs(command));\n\tconst { values, positionals, rest, error } = resolveArgs(args, tokens, {\n\t\tshortGrouping: true,\n\t\ttoKebab: command.toKebab,\n\t\tskipPositional: cliOptions.subCommands.size > 0 ? 0 : -1\n\t});\n\tconst omitted = !subCommand;\n\tconst ctx = await createCommandContext({\n\t\targs,\n\t\tvalues,\n\t\tpositionals,\n\t\trest,\n\t\targv,\n\t\ttokens,\n\t\tomitted,\n\t\tcallMode,\n\t\tcommand,\n\t\tcliOptions\n\t});\n\tif (values.version) {\n\t\tshowVersion(ctx);\n\t\treturn;\n\t}\n\tconst usageBuffer = [];\n\tconst header = await showHeader(ctx);\n\tif (header) usageBuffer.push(header);\n\tif (values.help) {\n\t\tconst usage = await showUsage(ctx);\n\t\tif (usage) usageBuffer.push(usage);\n\t\treturn usageBuffer.join(\"\\n\");\n\t}\n\tif (error) {\n\t\tawait showValidationErrors(ctx, error);\n\t\treturn;\n\t}\n\tawait executeCommand(command, ctx, name || \"\");\n}\nfunction getCommandArgs(cmd) {\n\tif (isLazyCommand(cmd)) return cmd.args || create();\n\telse if (typeof cmd === \"object\") return cmd.args || create();\n\telse return create();\n}\nfunction resolveArguments(args) {\n\treturn Object.assign(create(), args, COMMON_ARGS);\n}\nfunction resolveCliOptions(options, entry) {\n\tconst subCommands = new Map(options.subCommands);\n\tif (options.subCommands) {\n\t\tif (isLazyCommand(entry)) subCommands.set(entry.commandName, entry);\n\t\telse if (typeof entry === \"object\" && entry.name) subCommands.set(entry.name, entry);\n\t}\n\tconst resolvedOptions = Object.assign(create(), COMMAND_OPTIONS_DEFAULT, options, { subCommands });\n\treturn resolvedOptions;\n}\nfunction getSubCommand(tokens) {\n\tconst firstToken = tokens[0];\n\treturn firstToken && firstToken.kind === \"positional\" && firstToken.index === 0 && firstToken.value ? firstToken.value : \"\";\n}\nasync function showUsage(ctx) {\n\tif (ctx.env.renderUsage === null) return;\n\tconst usage = await (ctx.env.renderUsage || renderUsage)(ctx);\n\tif (usage) {\n\t\tctx.log(usage);\n\t\treturn usage;\n\t}\n}\nfunction showVersion(ctx) {\n\tctx.log(ctx.env.version);\n}\nasync function showHeader(ctx) {\n\tif (ctx.env.renderHeader === null) return;\n\tconst header = await (ctx.env.renderHeader || renderHeader)(ctx);\n\tif (header) {\n\t\tctx.log(header);\n\t\tctx.log();\n\t\treturn header;\n\t}\n}\nasync function showValidationErrors(ctx, error) {\n\tif (ctx.env.renderValidationErrors === null) return;\n\tconst render = ctx.env.renderValidationErrors || renderValidationErrors;\n\tctx.log(await render(ctx, error));\n}\nconst CANNOT_RESOLVE_COMMAND = { callMode: \"unexpected\" };\nasync function resolveCommand(sub, entry, options) {\n\tconst omitted = !sub;\n\tasync function doResolveCommand() {\n\t\tif (typeof entry === \"function\") if (\"commandName\" in entry && entry.commandName) return {\n\t\t\tcommandName: entry.commandName,\n\t\t\tcommand: entry,\n\t\t\tcallMode: \"entry\"\n\t\t};\n\t\telse return {\n\t\t\tcommand: { run: entry },\n\t\t\tcallMode: \"entry\"\n\t\t};\n\t\telse if (typeof entry === \"object\") return {\n\t\t\tcommandName: resolveEntryName(entry),\n\t\t\tcommand: entry,\n\t\t\tcallMode: \"entry\"\n\t\t};\n\t\telse return CANNOT_RESOLVE_COMMAND;\n\t}\n\tif (omitted || options.subCommands?.size === 0) return doResolveCommand();\n\tconst cmd = options.subCommands?.get(sub);\n\tif (cmd == null) return {\n\t\tcommandName: sub,\n\t\tcallMode: \"unexpected\"\n\t};\n\tif (isLazyCommand(cmd) && cmd.commandName == null) cmd.commandName = sub;\n\telse if (typeof cmd === \"object\" && cmd.name == null) cmd.name = sub;\n\treturn {\n\t\tcommandName: sub,\n\t\tcommand: cmd,\n\t\tcallMode: \"subCommand\"\n\t};\n}\nfunction resolveEntryName(entry) {\n\treturn entry.name || ANONYMOUS_COMMAND_NAME;\n}\nasync function executeCommand(cmd, ctx, name) {\n\tconst resolved = isLazyCommand(cmd) ? await resolveLazyCommand(cmd, name, true) : cmd;\n\tif (resolved.run == null) throw new Error(`'run' not found on Command \\`${name}\\``);\n\tawait resolved.run(ctx);\n}\n\n//#endregion\nexport { cli };"]}
@@ -0,0 +1,70 @@
1
+ import { checkForSchemaErrors, checkForConfigErrors } from './chunk-Z55UMN2B.js';
2
+ import { define } from './chunk-33ROL4J5.js';
3
+ import { loadVarlockEnvGraph, getItemSummary } from './chunk-6YLXKXKR.js';
4
+ import { my_dash_default } from './chunk-G4BD2BPH.js';
5
+ import { __name } from './chunk-XN24GZXQ.js';
6
+
7
+ // src/cli/commands/load.command.ts
8
+ var commandSpec = define({
9
+ name: "load",
10
+ description: "Load env according to schema and resolve values",
11
+ args: {
12
+ format: {
13
+ type: "string",
14
+ short: "f",
15
+ description: "Format of output (if not pretty printed to console)",
16
+ default: "pretty"
17
+ },
18
+ "show-all": {
19
+ type: "boolean",
20
+ description: "When load is fialing, show all items rather than only failing items"
21
+ }
22
+ }
23
+ });
24
+ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
25
+ const { format, "show-all": showAll } = ctx.values;
26
+ const envGraph = await loadVarlockEnvGraph();
27
+ checkForSchemaErrors(envGraph);
28
+ if (envGraph.schemaDataSource?.decorators.generateTypes) {
29
+ const typeGenSettings = envGraph.schemaDataSource?.decorators.generateTypes.bareFnArgs?.simplifiedValues;
30
+ if (!my_dash_default.isPlainObject(typeGenSettings)) {
31
+ throw new Error("@generateTypes - must be a fn call with key/value args");
32
+ }
33
+ if (!typeGenSettings.lang) throw new Error("@generateTypes - must set `lang` arg");
34
+ if (typeGenSettings.lang !== "ts") throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.lang}`);
35
+ if (!typeGenSettings.path) throw new Error("@generateTypes - must set `path` arg");
36
+ if (!my_dash_default.isString(typeGenSettings.path)) throw new Error("@generateTypes - `path` arg must be a string");
37
+ await envGraph.generateTypes(typeGenSettings.lang, typeGenSettings.path);
38
+ }
39
+ await envGraph.resolveEnvValues();
40
+ checkForConfigErrors(envGraph, { showAll });
41
+ if (format === "pretty") {
42
+ for (const itemKey in envGraph.configSchema) {
43
+ const item = envGraph.configSchema[itemKey];
44
+ console.log(getItemSummary(item));
45
+ }
46
+ } else if (format === "json") {
47
+ const resolvedEnv = envGraph.getResolvedEnvObject();
48
+ console.log(JSON.stringify(resolvedEnv, null, 2));
49
+ } else if (format === "env") {
50
+ const resolvedEnv = envGraph.getResolvedEnvObject();
51
+ for (const key in resolvedEnv) {
52
+ const value = resolvedEnv[key];
53
+ let strValue;
54
+ if (value === void 0) {
55
+ strValue = "";
56
+ } else if (typeof value === "string") {
57
+ strValue = `"${value.replaceAll('"', '\\"').replaceAll("\n", "\\n")}"`;
58
+ } else {
59
+ strValue = JSON.stringify(value);
60
+ }
61
+ console.log(`${key}=${strValue}`);
62
+ }
63
+ } else {
64
+ throw new Error(`Unknown format: ${format}`);
65
+ }
66
+ }, "commandFn");
67
+
68
+ export { commandFn, commandSpec };
69
+ //# sourceMappingURL=chunk-4WO4BGKU.js.map
70
+ //# sourceMappingURL=chunk-4WO4BGKU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":"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","file":"chunk-4WO4BGKU.js","sourcesContent":["import { define } from 'gunshi';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { getItemSummary } from '../../lib/formatting';\nimport { checkForConfigErrors, checkForSchemaErrors } from '../helpers/error-checks';\nimport { TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\nexport const commandSpec = define({\n name: 'load',\n description: 'Load env according to schema and resolve values',\n args: {\n format: {\n type: 'string',\n short: 'f',\n description: 'Format of output (if not pretty printed to console)',\n default: 'pretty',\n },\n 'show-all': {\n type: 'boolean',\n description: 'When load is fialing, show all items rather than only failing items',\n },\n },\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { format, 'show-all': showAll } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph();\n checkForSchemaErrors(envGraph);\n\n // TODO: move into a more general post-load hook system\n if (envGraph.schemaDataSource?.decorators.generateTypes) {\n // TODO: much of this logic should move to the definition of the decorator itself\n const typeGenSettings = envGraph.schemaDataSource?.decorators.generateTypes.bareFnArgs?.simplifiedValues;\n if (!_.isPlainObject(typeGenSettings)) {\n throw new Error('@generateTypes - must be a fn call with key/value args');\n }\n if (!typeGenSettings.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.lang}`);\n if (!typeGenSettings.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.path)) throw new Error('@generateTypes - `path` arg must be a string');\n await envGraph.generateTypes(typeGenSettings.lang, typeGenSettings.path);\n }\n\n await envGraph.resolveEnvValues();\n checkForConfigErrors(envGraph, { showAll });\n\n if (format === 'pretty') {\n for (const itemKey in envGraph.configSchema) {\n const item = envGraph.configSchema[itemKey];\n console.log(getItemSummary(item));\n }\n } else if (format === 'json') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n console.log(JSON.stringify(resolvedEnv, null, 2));\n } else if (format === 'env') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\n let strValue: string;\n if (value === undefined) {\n strValue = '';\n } else if (typeof value === 'string') {\n strValue = `\"${value.replaceAll('\"', '\\\\\"').replaceAll('\\n', '\\\\n')}\"`;\n } else {\n strValue = JSON.stringify(value);\n }\n console.log(`${key}=${strValue}`);\n }\n } else {\n throw new Error(`Unknown format: ${format}`);\n }\n\n // const resolvedEnv = envGraph.getResolvedEnvObject();\n // console.log(resolvedEnv);\n};\n"]}
@@ -0,0 +1,225 @@
1
+ import { my_dash_default, loadEnvGraph } from './chunk-G4BD2BPH.js';
2
+ import { ansis_default } from './chunk-7UQXFWKN.js';
3
+ import { __name } from './chunk-XN24GZXQ.js';
4
+
5
+ // src/lib/redaction-helpers.ts
6
+ var UNMASK_STR = "\u{1F441}";
7
+ function redactString(valStr, mode, hideLength = true) {
8
+ if (!valStr) return valStr;
9
+ const hiddenLength = hideLength ? 5 : valStr.length - 2;
10
+ const hiddenStr = "\u2592".repeat(hiddenLength);
11
+ if (mode === "show_last_2") {
12
+ return `${hiddenStr}${valStr.substring(valStr.length - 2, valStr.length)}`;
13
+ } else if (mode === "show_first_last") {
14
+ return `${valStr.substring(0, 1)}${hiddenStr}${valStr.substring(valStr.length - 1, valStr.length)}`;
15
+ } else {
16
+ return `${valStr.substring(0, 2)}${hiddenStr}`;
17
+ }
18
+ }
19
+ __name(redactString, "redactString");
20
+ var sensitiveSecretsMap = {};
21
+ var redactorFindReplace;
22
+ function resetRedactionMap(graph) {
23
+ sensitiveSecretsMap = {};
24
+ for (const itemKey in graph.configSchema) {
25
+ const item = graph.configSchema[itemKey];
26
+ if (item.isSensitive && item.resolvedValue && my_dash_default.isString(item.resolvedValue)) {
27
+ const redacted = redactString(item.resolvedValue);
28
+ if (redacted) sensitiveSecretsMap[item.resolvedValue] = redacted;
29
+ }
30
+ }
31
+ const findRegex = new RegExp(
32
+ [
33
+ `(${UNMASK_STR} )?`,
34
+ "(",
35
+ Object.keys(sensitiveSecretsMap).map((s) => s.replace(/[()[\]{}*+?^$|#.,/\\\s-]/g, "\\$&")).sort((a, b) => b.length - a.length).join("|"),
36
+ ")",
37
+ `( ${UNMASK_STR})?`
38
+ ].join(""),
39
+ "g"
40
+ );
41
+ const replaceFn = /* @__PURE__ */ __name((match, pre, val, post) => {
42
+ if (pre && post) return match;
43
+ return sensitiveSecretsMap[val];
44
+ }, "replaceFn");
45
+ redactorFindReplace = { find: findRegex, replace: replaceFn };
46
+ }
47
+ __name(resetRedactionMap, "resetRedactionMap");
48
+ var CONSOLE_METHODS = ["trace", "debug", "info", "log", "info", "warn", "error"];
49
+ var VarlockRedactor = {
50
+ /**
51
+ * Redacts senstive config values from any string/array/object/etc
52
+ *
53
+ * NOTE - must be used only after varlock has loaded config
54
+ * */
55
+ redactSensitiveConfig(o) {
56
+ if (!redactorFindReplace) return o;
57
+ if (!o) return o;
58
+ if (Array.isArray(o)) {
59
+ return o.map(VarlockRedactor.redactSensitiveConfig);
60
+ }
61
+ if (o && typeof o === "object" && Object.getPrototypeOf(o) === Object.prototype) {
62
+ try {
63
+ return JSON.parse(VarlockRedactor.redactSensitiveConfig(JSON.stringify(o)));
64
+ } catch (err) {
65
+ return o;
66
+ }
67
+ }
68
+ const type = typeof o;
69
+ if (type === "string" || type === "object" && Object.prototype.toString.call(o) === "[object String]") {
70
+ return o.replaceAll(redactorFindReplace.find, redactorFindReplace.replace);
71
+ }
72
+ return o;
73
+ },
74
+ /**
75
+ * utility to unmask a secret/sensitive value when logging to the console
76
+ * currently this only works on a single secret, not objects or aggregated strings
77
+ * */
78
+ unredact(secretStr) {
79
+ if (!globalThis._varlockOrigWriteToConsoleFn) return secretStr;
80
+ return `${UNMASK_STR} ${secretStr} ${UNMASK_STR}`;
81
+ },
82
+ /**
83
+ * patches global console methods to redact sensitive config
84
+ *
85
+ * NOTE - this may not be 100% foolproof depending on the platform
86
+ * */
87
+ patchConsole() {
88
+ if (!redactorFindReplace) return;
89
+ const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === "kWriteToConsole");
90
+ globalThis._varlockOrigWriteToConsoleFn ||= globalThis.console[kWriteToConsoleSymbol];
91
+ globalThis.console[kWriteToConsoleSymbol] = function() {
92
+ globalThis._varlockOrigWriteToConsoleFn.apply(this, [
93
+ arguments[0],
94
+ VarlockRedactor.redactSensitiveConfig(arguments[1]),
95
+ arguments[2]
96
+ ]);
97
+ };
98
+ if (
99
+ // !console.log.toString().includes('[native code]') &&
100
+ !console.log._varlockPatchedFn
101
+ ) {
102
+ for (const logMethodName of CONSOLE_METHODS) {
103
+ const originalLogMethod = globalThis.console[logMethodName];
104
+ const patchedFn = /* @__PURE__ */ __name(function() {
105
+ originalLogMethod.apply(this, Array.from(arguments).map(VarlockRedactor.redactSensitiveConfig));
106
+ }, "patchedFn");
107
+ patchedFn._varlockPatchedFn = true;
108
+ globalThis.console[logMethodName] = patchedFn;
109
+ }
110
+ }
111
+ },
112
+ /**
113
+ * restore's original global console methods to stop redacting secrets
114
+ *
115
+ * (only needed during local development when switching settings on/off in a process that does not reload)
116
+ * */
117
+ unpatchConsole() {
118
+ if (!globalThis._varlockOrigWriteToConsoleFn) return;
119
+ const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === "kWriteToConsole");
120
+ globalThis.console[kWriteToConsoleSymbol] = globalThis._varlockOrigWriteToConsoleFn;
121
+ delete globalThis._varlockOrigWriteToConsoleFn;
122
+ }
123
+ };
124
+
125
+ // src/lib/formatting.ts
126
+ function applyMods(str, mods) {
127
+ if (!mods) return str;
128
+ if (my_dash_default.isArray(mods)) {
129
+ let modStr = str;
130
+ mods.forEach((mod) => {
131
+ modStr = ansis_default[mod](modStr);
132
+ });
133
+ return modStr;
134
+ }
135
+ return ansis_default[mods](str);
136
+ }
137
+ __name(applyMods, "applyMods");
138
+ function formattedValue(val, showType = false) {
139
+ let strVal = "";
140
+ let strType = "";
141
+ let mods;
142
+ if (my_dash_default.isBoolean(val)) {
143
+ strVal = val.toString();
144
+ mods = ["yellow", "italic"];
145
+ strType = "boolean";
146
+ } else if (my_dash_default.isNumber(val)) {
147
+ strVal = val.toString();
148
+ mods = "yellow";
149
+ strType = "number";
150
+ } else if (my_dash_default.isString(val)) {
151
+ strVal = `"${val}"`;
152
+ strType = "string";
153
+ } else if (my_dash_default.isPlainObject(val)) {
154
+ strVal = JSON.stringify(val);
155
+ strType = "object";
156
+ } else if (val === null) {
157
+ strVal = "null";
158
+ mods = "gray";
159
+ } else if (val === void 0) {
160
+ strVal = "undefined";
161
+ mods = "gray";
162
+ }
163
+ return [
164
+ applyMods(strVal, mods),
165
+ showType && strType ? ansis_default.gray(` (${strType})`) : ""
166
+ ].join("");
167
+ }
168
+ __name(formattedValue, "formattedValue");
169
+ function joinAndCompact(strings, joinChar = " ") {
170
+ return strings.filter((s) => (
171
+ // we'll not filter out empty strings - because it's useful to just add newlines
172
+ s !== void 0 && s !== null && s !== false
173
+ )).join(joinChar);
174
+ }
175
+ __name(joinAndCompact, "joinAndCompact");
176
+ var VALIDATION_STATE_COLORS = {
177
+ error: "red",
178
+ warn: "yellow",
179
+ valid: "cyan"
180
+ };
181
+ function getItemSummary(item) {
182
+ const summary = [];
183
+ const itemErrors = item.errors;
184
+ const icon = itemErrors.length ? itemErrors[0].icon : "\u2705";
185
+ const isSensitive = item.isSensitive;
186
+ const isRequired = item.isRequired;
187
+ summary.push(joinAndCompact([
188
+ icon,
189
+ ansis_default[VALIDATION_STATE_COLORS[item.validationState]](item.key) + (isRequired ? ansis_default.magenta("*") : ""),
190
+ // ansis.gray(`[type = ${item.type.typeLabel}]`),
191
+ isSensitive && ` \u{1F510}${ansis_default.gray.italic("sensitive")}`
192
+ // item.useAt ? ansis.gray.italic(`(${item.useAt?.join(', ')})`) : undefined,
193
+ ]));
194
+ let valAsStr = formattedValue(item.resolvedValue, false);
195
+ if (isSensitive && item.resolvedValue && my_dash_default.isString(item.resolvedValue)) {
196
+ valAsStr = redactString(item.resolvedValue);
197
+ }
198
+ summary.push(joinAndCompact([
199
+ ansis_default.gray(" \u2514"),
200
+ valAsStr,
201
+ item.isCoerced && ansis_default.gray.italic("< coerced from ") + (isSensitive ? formattedValue(item.resolvedRawValue) : formattedValue(item.resolvedRawValue, false))
202
+ ]));
203
+ itemErrors?.forEach((err) => {
204
+ summary.push(ansis_default[err.isWarning ? "yellow" : "red"](` - ${err.isWarning ? "[WARNING] " : ""}${err.message}`));
205
+ if (err.tip) {
206
+ summary.push(...err.tip.split("\n").map((line) => ` ${line}`));
207
+ }
208
+ });
209
+ return summary.join("\n");
210
+ }
211
+ __name(getItemSummary, "getItemSummary");
212
+
213
+ // src/lib/load-graph.ts
214
+ async function loadVarlockEnvGraph() {
215
+ const envGraph = await loadEnvGraph({
216
+ afterInit: /* @__PURE__ */ __name(async (g) => {
217
+ }, "afterInit")
218
+ });
219
+ return envGraph;
220
+ }
221
+ __name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
222
+
223
+ export { VarlockRedactor, getItemSummary, joinAndCompact, loadVarlockEnvGraph, resetRedactionMap };
224
+ //# sourceMappingURL=chunk-6YLXKXKR.js.map
225
+ //# sourceMappingURL=chunk-6YLXKXKR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/redaction-helpers.ts","../src/lib/formatting.ts","../src/lib/load-graph.ts"],"names":[],"mappings":"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","file":"chunk-6YLXKXKR.js","sourcesContent":["import { EnvGraph } from '@env-spec/env-graph';\nimport _ from '@env-spec/utils/my-dash';\n\nconst UNMASK_STR = 'πŸ‘';\n\nexport type RedactMode = 'show_first_2' | 'show_last_2' | 'show_first_last';\n\n/**\n * utility to mask/redact a string, for example transforming \"hello\" into \"heβ–’β–’β–’\"\n * this function just redacts _any_ string passed in\n *\n * To redact sensitive parts of a larger object/string, use redactSensitiveConfig\n * */\nexport function redactString(valStr: string | undefined, mode?: RedactMode, hideLength = true) {\n if (!valStr) return valStr;\n\n const hiddenLength = hideLength ? 5 : valStr.length - 2;\n const hiddenStr = 'β–’'.repeat(hiddenLength);\n\n if (mode === 'show_last_2') {\n return `${hiddenStr}${valStr.substring(valStr.length - 2, valStr.length)}`;\n } else if (mode === 'show_first_last') {\n return `${valStr.substring(0, 1)}${hiddenStr}${valStr.substring(valStr.length - 1, valStr.length)}`;\n } else { // 'show_first_2' - also default\n return `${valStr.substring(0, 2)}${hiddenStr}`;\n }\n}\n\n\n/** key value lookup of sensitive values to their redacted version */\nlet sensitiveSecretsMap: Record<string, string> = {};\n\ntype ReplaceFn = (match: string, pre: string, val: string, post: string) => string;\nlet redactorFindReplace: undefined | { find: RegExp, replace: ReplaceFn };\n\nexport function resetRedactionMap(graph: EnvGraph) {\n // reset map of { [sensitive] => redacted }\n sensitiveSecretsMap = {};\n for (const itemKey in graph.configSchema) {\n const item = graph.configSchema[itemKey];\n if (item.isSensitive && item.resolvedValue && _.isString(item.resolvedValue)) {\n // TODO: we want to respect masking settings from the schema (once added)\n const redacted = redactString(item.resolvedValue);\n if (redacted) sensitiveSecretsMap[item.resolvedValue] = redacted;\n }\n }\n\n // reset find/replace regex+fn used for redacting secrets in strings\n const findRegex = new RegExp(\n [\n `(${UNMASK_STR} )?`,\n '(',\n Object.keys(sensitiveSecretsMap)\n // Escape special characters\n .map((s) => s.replace(/[()[\\]{}*+?^$|#.,/\\\\\\s-]/g, '\\\\$&'))\n // Sort for maximal munch\n .sort((a, b) => b.length - a.length)\n .join('|'),\n ')',\n `( ${UNMASK_STR})?`,\n ].join(''),\n 'g',\n );\n\n const replaceFn: ReplaceFn = (match, pre, val, post) => {\n // the pre and post matches only will be populated if they were present\n // and they are used to unmask the secret - so we do not want to replace in this case\n if (pre && post) return match;\n return sensitiveSecretsMap[val];\n };\n redactorFindReplace = { find: findRegex, replace: replaceFn };\n}\n\n\nconst CONSOLE_METHODS = ['trace', 'debug', 'info', 'log', 'info', 'warn', 'error'];\n\n// While the module itself acts as a singleton to hold the current map of redacted values\n// we expose only the below const to end users\n\n/** singleton wrapper for varlock's redaction utilities */\nexport const VarlockRedactor = {\n /**\n * Redacts senstive config values from any string/array/object/etc\n *\n * NOTE - must be used only after varlock has loaded config\n * */\n redactSensitiveConfig(o: any): any {\n if (!redactorFindReplace) return o;\n if (!o) return o;\n\n // TODO: handle more cases?\n // we can probably redact safely from a few other datatypes - like set,map,etc?\n // objects are a bit tougher\n if (Array.isArray(o)) {\n return o.map(VarlockRedactor.redactSensitiveConfig);\n }\n // try to redact if it's a plain object - not necessarily great for perf...\n if (o && typeof (o) === 'object' && Object.getPrototypeOf(o) === Object.prototype) {\n try {\n return JSON.parse(VarlockRedactor.redactSensitiveConfig(JSON.stringify(o)));\n } catch (err) {\n return o;\n }\n }\n\n const type = typeof o;\n if (type === 'string' || (type === 'object' && Object.prototype.toString.call(o) === '[object String]')) {\n return (o as string).replaceAll(redactorFindReplace.find, redactorFindReplace.replace);\n }\n\n return o;\n },\n\n /**\n * utility to unmask a secret/sensitive value when logging to the console\n * currently this only works on a single secret, not objects or aggregated strings\n * */\n unredact(secretStr: string) {\n // if redaction not enabled, we just return the secret itself\n if (!(globalThis as any)._varlockOrigWriteToConsoleFn) return secretStr;\n // otherwise we add some wrapper characters which will be removed by the patched console behaviour\n return `${UNMASK_STR} ${secretStr} ${UNMASK_STR}`;\n },\n\n /**\n * patches global console methods to redact sensitive config\n *\n * NOTE - this may not be 100% foolproof depending on the platform\n * */\n patchConsole() {\n /* eslint-disable no-console, prefer-rest-params */\n if (!redactorFindReplace) return;\n\n // our method of patching involves replacing an internal node method which may not be called if console.log itself has also been patched\n // for example AWS lambdas patches this to write the logs to a file which then is pushed to the rest of their system\n\n // so first we'll just patch the internal method do deal with normal stdout/stderr logs -------------------------------------\n\n // we need the internal symbol name to access the internal method\n const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === 'kWriteToConsole');\n\n // @ts-ignore\n (globalThis as any)._varlockOrigWriteToConsoleFn ||= globalThis.console[kWriteToConsoleSymbol];\n // @ts-ignore\n globalThis.console[kWriteToConsoleSymbol] = function () {\n (globalThis as any)._varlockOrigWriteToConsoleFn.apply(this, [\n arguments[0],\n VarlockRedactor.redactSensitiveConfig(arguments[1]),\n arguments[2],\n ]);\n };\n\n // and now we'll wrap console.log (and the other methods) if it looks like they have been patched already ------------------\n // NOTE - this will not fully redact from everything since we can't safely reach deep into objects\n // ideally we would only turn this when the above method does not work, but it's not trivial to detect when it that is the case\n // so we'll turn it on all the time for now...\n if (\n // !console.log.toString().includes('[native code]') &&\n !(console.log as any)._varlockPatchedFn\n ) {\n for (const logMethodName of CONSOLE_METHODS) {\n // @ts-ignore\n const originalLogMethod = globalThis.console[logMethodName];\n\n const patchedFn = function () {\n // @ts-ignore\n originalLogMethod.apply(this, Array.from(arguments).map(VarlockRedactor.redactSensitiveConfig));\n };\n patchedFn._varlockPatchedFn = true;\n\n // @ts-ignore\n globalThis.console[logMethodName] = patchedFn;\n }\n }\n },\n\n /**\n * restore's original global console methods to stop redacting secrets\n *\n * (only needed during local development when switching settings on/off in a process that does not reload)\n * */\n unpatchConsole() {\n // we'll only care about the normal case where console.log has NOT been patched by something else... (see above)\n if (!(globalThis as any)._varlockOrigWriteToConsoleFn) return;\n\n const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === 'kWriteToConsole');\n // @ts-ignore\n globalThis.console[kWriteToConsoleSymbol] = (globalThis as any)._varlockOrigWriteToConsoleFn;\n delete (globalThis as any)._varlockOrigWriteToConsoleFn;\n },\n};\n","import ansis, { AnsiColors, AnsiStyles } from 'ansis';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { ConfigItem } from '../../../env-graph/src/lib/config-item';\nimport { VarlockError } from '../../../env-graph/src/lib/errors';\nimport { redactString } from './redaction-helpers';\n\ntype ColorMod = AnsiStyles | AnsiColors;\ntype ColorMods = ColorMod | Array<ColorMod>;\n\nfunction applyMods(str: string, mods?: ColorMods) {\n if (!mods) return str;\n if (_.isArray(mods)) {\n let modStr = str;\n mods.forEach((mod) => {\n modStr = ansis[mod](modStr);\n });\n return modStr;\n }\n return ansis[mods](str);\n}\n\nexport function formattedValue(val: any, showType = false) {\n let strVal: string = '';\n let strType: string = '';\n let mods: ColorMods | undefined;\n if (_.isBoolean(val)) {\n strVal = val.toString();\n mods = ['yellow', 'italic'];\n strType = 'boolean';\n } else if (_.isNumber(val)) {\n strVal = val.toString();\n mods = 'yellow';\n strType = 'number';\n } else if (_.isString(val)) {\n strVal = `\"${val}\"`;\n strType = 'string';\n } else if (_.isPlainObject(val)) {\n // TODO: can definitely make this better...\n strVal = JSON.stringify(val);\n strType = 'object';\n } else if (val === null) {\n strVal = 'null';\n mods = 'gray';\n } else if (val === undefined) {\n strVal = 'undefined';\n mods = 'gray';\n }\n return [\n applyMods(strVal, mods),\n showType && strType ? ansis.gray(` (${strType})`) : '',\n ].join('');\n}\n\n\nexport function formatError(err: VarlockError) {\n let whenStr = '';\n if (err.type === 'SchemaError') {\n whenStr += 'during schema initialization';\n }\n if (err.type === 'ValidationError') {\n whenStr += 'during validation';\n }\n if (err.type === 'CoercionError') {\n whenStr += 'during coercion';\n }\n if (err.type === 'ResolutionError') {\n whenStr += 'during resolution';\n }\n\n let errStr = `${err.icon} ${err.message}`;\n if (err.isUnexpected) {\n errStr += ansis.gray.italic(`\\n (unexpected error${whenStr ? ` ${whenStr}` : ''})`);\n if ('stack' in err) errStr += err.stack;\n }\n return errStr;\n}\n\nexport function joinAndCompact(strings: Array<string | number | boolean | undefined | null | false>, joinChar = ' ') {\n return strings.filter((s) => (\n // we'll not filter out empty strings - because it's useful to just add newlines\n s !== undefined && s !== null && s !== false\n )).join(joinChar);\n}\n\nconst VALIDATION_STATE_COLORS = {\n error: 'red',\n warn: 'yellow',\n valid: 'cyan',\n} as const;\n\nexport function getItemSummary(item: ConfigItem) {\n const summary: Array<string> = [];\n const itemErrors = item.errors;\n const icon = itemErrors.length ? itemErrors[0].icon : 'βœ…';\n const isSensitive = item.isSensitive;\n const isRequired = item.isRequired;\n summary.push(joinAndCompact([\n icon,\n ansis[VALIDATION_STATE_COLORS[item.validationState]](item.key) + (isRequired ? ansis.magenta('*') : ''),\n\n // ansis.gray(`[type = ${item.type.typeLabel}]`),\n isSensitive && ` πŸ”${ansis.gray.italic('sensitive')}`,\n\n // item.useAt ? ansis.gray.italic(`(${item.useAt?.join(', ')})`) : undefined,\n ]));\n\n let valAsStr = formattedValue(item.resolvedValue, false);\n if (isSensitive && item.resolvedValue && _.isString(item.resolvedValue)) {\n valAsStr = redactString(item.resolvedValue)!;\n }\n\n summary.push(joinAndCompact([\n ansis.gray(' β””'),\n valAsStr,\n item.isCoerced && (\n ansis.gray.italic('< coerced from ')\n + (isSensitive ? formattedValue(item.resolvedRawValue) : formattedValue(item.resolvedRawValue, false))\n ),\n ]));\n\n // if (item.overrides?.length) {\n // const activeOverride = item.overrides[0];\n // let overrideNote = ansis.gray.italic('value set via override: ');\n // overrideNote += ansis.gray(activeOverride.sourceType);\n // if (activeOverride.sourceLabel) overrideNote += ansis.gray(` - ${activeOverride.sourceLabel}`);\n // summary.push(` ${overrideNote}`);\n // }\n\n itemErrors?.forEach((err) => {\n summary.push(ansis[err.isWarning ? 'yellow' : 'red'](` - ${err.isWarning ? '[WARNING] ' : ''}${err.message}`));\n\n // TODO: standardize here how we show parse error locations and stack info?\n\n // summary.push(...err.cleanedStack || '');\n if (err.tip) {\n summary.push(...err.tip.split('\\n').map((line) => ` ${line}`));\n }\n });\n\n // NO OBJECT/CHILDREN FOR NOW\n // for (const childItem of _.values(item.children)) {\n // const childSummary = getItemSummary(childItem);\n // summary.push(childSummary.split('\\n').map((l) => ` ${l}`).join('\\n'));\n // }\n\n return summary.join('\\n');\n}\n","import { loadEnvGraph } from '@env-spec/env-graph';\n\nexport async function loadVarlockEnvGraph() {\n const envGraph = await loadEnvGraph({\n afterInit: async (g) => {\n // TODO: register varlock resolver\n },\n });\n\n return envGraph;\n}\n"]}