@varlock/nextjs-integration 1.0.0 → 1.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/next-env-compat.ts"],"names":["initialEnv","path","fs","execSync","resetRedactionMap","patchGlobalConsole","execSyncVarlock","initVarlockEnv"],"mappings":"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","file":"next-env-compat.js","sourcesContent":["/**\n * Drop-in replacement for @next/env that uses varlock instead of dotenv\n *\n * This must be the default export of the module, and it must stay compatible with @next/env\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { type SerializedEnvGraph } from 'varlock';\nimport { initVarlockEnv, resetRedactionMap } from 'varlock/env';\nimport { patchGlobalConsole } from 'varlock/patch-console';\nimport { execSyncVarlock } from 'varlock/exec-sync-varlock';\n\nexport type Env = { [key: string]: string | undefined };\nexport type LoadedEnvFiles = Array<{\n path: string\n contents: string\n env: Env\n}>;\n\n/** will store the original values of process.env */\nexport let initialEnv: Env | undefined;\n\nlet lastReloadAt: Date | undefined;\n\nlet varlockLoadedEnv: SerializedEnvGraph;\nlet combinedEnv: Env | undefined;\nlet parsedEnv: Env | undefined;\n// this is used by next just to display the list of .env files in a startup log\nlet loadedEnvFiles: LoadedEnvFiles = [];\nlet rootDir: string | undefined;\n\n// @next/env exports this info and currently it is only used to display\n// a list of filenames loaded, for example: `Environments: .env, .env.development`\nfunction getVarlockSourcesAsLoadedEnvFiles(): LoadedEnvFiles {\n const envFiles = varlockLoadedEnv.sources\n // TODO expose more info so we can filter out disabled sources\n // and maybe show relative paths\n .filter((s) => s.enabled && !s.label.startsWith('directory -'))\n .map((s) => ({\n path: s.label,\n contents: '',\n env: {},\n }));\n if (envFiles.length) {\n // this adds an additional line, below the list of files\n envFiles.push({ path: '\\n ✨ loaded by varlock ✨', contents: '', env: {} });\n }\n return envFiles;\n}\n\nconst IS_WORKER = !!process.env.NEXT_PRIVATE_WORKER;\nfunction debug(...args: Array<any>) {\n if (!process.env.DEBUG_VARLOCK_NEXT_INTEGRATION) return;\n // eslint-disable-next-line no-console\n console.log(\n IS_WORKER ? 'worker -- ' : 'server -- ',\n ...args,\n );\n}\ndebug('✨ LOADED @next/env module!');\n\n\n// Next.js only watches .env, .env.local, .env.development, .env.development.local\n// but we want to trigger reloads when .env.schema changes\n// so we set up an extra watcher, and trigger no-op changes to one of those files\nlet extraWatcherEnabled = false;\nconst NEXT_WATCHED_ENV_FILES = ['.env', '.env.local', '.env.development', '.env.development.local'];\nfunction enableExtraFileWatchers() {\n if (extraWatcherEnabled || IS_WORKER) return;\n extraWatcherEnabled = true;\n\n if (!rootDir) throw new Error('expected rootDir to be set');\n const envSchemaPath = path.join(rootDir, '.env.schema');\n // its faster to update an existing file, so we check if the user has any\n // otherwise we can create and destroy\n let envFilePathToUpdate: string | null = null;\n for (const envFileName of NEXT_WATCHED_ENV_FILES) {\n const filePath = path.join(rootDir, envFileName);\n if (fs.existsSync(filePath)) {\n envFilePathToUpdate = filePath;\n break;\n }\n }\n let destroyFile = false;\n if (!envFilePathToUpdate) {\n envFilePathToUpdate ||= path.join(rootDir, '.env');\n destroyFile = true;\n }\n\n debug('set up extra file watchers', envFilePathToUpdate, destroyFile);\n\n fs.watchFile(envSchemaPath, { interval: 500 }, (_curr, _prev) => {\n debug('.env.schema changed', envFilePathToUpdate, destroyFile);\n if (destroyFile) {\n fs.writeFileSync(envFilePathToUpdate, [\n '# This file was created by @varlock/nextjs-integration',\n '# It is used to trigger Next.js to reload when non-standard .env files change',\n '# You can safely ignore and delete it',\n '# @disable',\n '# ---',\n ].join('\\n'), 'utf-8');\n setTimeout(() => {\n fs.unlinkSync(envFilePathToUpdate);\n }, 1000);\n } else {\n const currentContents = fs.readFileSync(envFilePathToUpdate, 'utf-8');\n fs.writeFileSync(envFilePathToUpdate, currentContents, 'utf-8');\n }\n });\n}\n\nfunction detectOpenNextCloudflareBuild() {\n try {\n // the above works if the build is happening within CI, but we may need to do this for local builds or other CI platforms\n // so we can try to detect if we are within an open-next build by looking at the process info\n\n // we will look at the process tree to try to determine if we are in a opennext build\n // process tree looks like:\n // - opennext-cloudflare build > npm run build > next build\n\n // get grandparent process id\n const pppid = parseInt(execSync(`ps -o ppid= -p ${process.ppid}`).toString().trim());\n // const processInfo = execSync('ps -p '+grandparentPid+' -o command');\n // output looks like\n // ---\n // COMMAND\n // node /.../node_modules/.bin/opennextjs-cloudflare build\n //\n // ---\n const commandName = execSync(`ps -p ${pppid} -o command`).toString().split('\\n')[1];\n if (commandName.endsWith('.bin/opennextjs-cloudflare build')) {\n return true;\n }\n } catch (err) {\n // do nothing\n }\n return false;\n}\n\nfunction writeResolvedEnvFile() {\n // things get complicated on platforms like vercel/cloudflare, they do some of their own magic to load env vars\n // our loader (this file) will run during the _build_ process, but not when the platform is handling server rendered requests\n // also opennext is needed to run outside of vercel, so that adds other changes\n // so we export an additional .env file which the platform itself will automatically load\n\n const dotEnvStrLines = [];\n for (const [itemKey, itemInfo] of Object.entries(varlockLoadedEnv.config)) {\n if (itemInfo.value !== undefined) dotEnvStrLines.push(`${itemKey}=${JSON.stringify(itemInfo.value)}`);\n }\n\n if (\n detectOpenNextCloudflareBuild()\n || process.env.VERCEL || process.env.WORKERS_CI || process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE\n ) {\n dotEnvStrLines.unshift(`\n# 🛑 DO NOT CHECK THIS FILE INTO VERSION CONTROL 🛑\n# This file was automatically generated by @varlock/nextjs-integration\n# It contains a _fully resolved env_ to pass to platforms (ex: vercel, cloudflare, etc)\n# that are doing their own magic when booting up nextjs in certain scenarios\n#\n# It likely contains sensitive config data and should be deleted after use\n#\n# @disable # tells varlock to ignore this file\n# ---\n `);\n // this is the fully resolved env, which includes additional metadata about each item\n // our runtime code uses this to provide coerced values, redact sensitive values, etc\n dotEnvStrLines.push(`__VARLOCK_ENV=${JSON.stringify(varlockLoadedEnv)}`);\n\n let resolvedEnvFileName = '.env.production.local';\n if (process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE && !(['true', '1'].includes(process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE))) {\n resolvedEnvFileName = process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE;\n }\n if (!rootDir) throw new Error('expected rootDir to be set');\n fs.writeFileSync(path.resolve(rootDir, resolvedEnvFileName), dotEnvStrLines.join('\\n'), 'utf-8');\n }\n}\n\n// - these methods are the same as the original module -----------------\n\nexport function updateInitialEnv(newEnv: Env) {\n if (Object.keys(newEnv).length) {\n debug('updateInitialEnv', newEnv);\n Object.assign(initialEnv || {}, newEnv);\n }\n}\n\ntype Log = {\n info: (...args: Array<any>) => void\n error: (...args: Array<any>) => void\n};\n\nfunction replaceProcessEnv(sourceEnv: Env) {\n Object.keys(process.env).forEach((key) => {\n // Allow mutating internal Next.js env variables after the server has initiated.\n // This is necessary for dynamic things like the IPC server port.\n if (!key.startsWith('__NEXT_PRIVATE')) {\n if (sourceEnv[key] === undefined || sourceEnv[key] === '') {\n delete process.env[key];\n }\n }\n });\n\n Object.entries(sourceEnv).forEach(([key, value]) => {\n process.env[key] = value;\n });\n}\n\n// in original module, but does not appear to be used\nexport function processEnv(\n _loadedEnvFiles: LoadedEnvFiles,\n _dir?: string,\n _log: Log = console,\n _forceReload = false,\n _onReload?: (envFilePath: string) => void,\n) {\n return [process.env];\n}\n\nexport function resetEnv() {\n if (initialEnv) {\n replaceProcessEnv(initialEnv);\n }\n}\n\ntype LoadedEnvConfig = {\n combinedEnv: Env\n parsedEnv: Env | undefined\n loadedEnvFiles: LoadedEnvFiles\n};\n\nlet loadCount = 0;\n\nexport function loadEnvConfig(\n dir: string,\n dev?: boolean,\n _log: Log = console,\n forceReload = false,\n _onReload?: (envFilePath: string) => void,\n): LoadedEnvConfig {\n // store actual process.env so we can restore it later\n initialEnv ||= { ...process.env };\n\n debug('loadEnvConfig!', 'forceReload = ', forceReload);\n\n // onReload is used to show a log of which .env file changed\n // TODO: add similar log to show which env file changed\n\n rootDir ||= dir;\n if (rootDir !== dir) throw new Error('root directory changed');\n\n if (dev) enableExtraFileWatchers();\n\n let useCachedEnv = !!process.env.__VARLOCK_ENV;\n if (forceReload) {\n if (!lastReloadAt) {\n lastReloadAt = new Date();\n } else if (lastReloadAt.getTime() < Date.now() - 1000) {\n lastReloadAt = new Date();\n useCachedEnv = false;\n }\n }\n\n if (useCachedEnv) {\n if (!varlockLoadedEnv) {\n varlockLoadedEnv = JSON.parse(process.env.__VARLOCK_ENV || '{}');\n parsedEnv = Object.fromEntries(\n Object.entries(varlockLoadedEnv.config).map(([key, value]) => [key, value.value]),\n );\n\n resetRedactionMap(varlockLoadedEnv);\n debug('patching console with varlock redactor');\n patchGlobalConsole();\n }\n\n combinedEnv = { ...initialEnv, ...parsedEnv };\n\n debug('>> USING CACHED ENV');\n\n return { combinedEnv, parsedEnv, loadedEnvFiles };\n }\n\n lastReloadAt = new Date();\n\n debug('>> RELOADING ENV');\n replaceProcessEnv(initialEnv);\n\n // we must match @next/env default behaviour for which .env.XXX files to load\n // which is based on the current command (`next dev` vs `next build`) and `NODE_ENV=test`\n // however we will pass it through and let the user ignore it by setting their own `@currentEnv`\n let envFromNextCommand = dev ? 'development' : 'production';\n if (process.env.NODE_ENV === 'test') envFromNextCommand = 'test';\n debug('Inferred env mode (to match @next/env):', envFromNextCommand);\n\n try {\n loadCount++;\n const varlockLoadedEnvStr = execSyncVarlock(`load --format json-full --env ${envFromNextCommand}`, {\n // in dev, there are 2 loads up front, so we dont show the first\n showLogsOnError: !dev || loadCount > 1,\n // in a build, we want to fail and exit, while in dev we can keep retrying when changes are detected\n exitOnError: !dev,\n env: initialEnv as any,\n });\n if (loadCount >= 2) {\n // eslint-disable-next-line no-console\n console.log('✅ env reloaded and validated');\n }\n varlockLoadedEnv = JSON.parse(varlockLoadedEnvStr);\n } catch (err) {\n // this error message comes from execSyncVarlock when it cannot find varlock\n if ((err as any).message.includes('Unable to find varlock executable')) {\n // eslint-disable-next-line no-console\n console.error([\n '',\n '❌ ERROR: varlock not found',\n 'varlock is a required peer dependency of @varlock/nextjs-integration',\n '',\n 'Please add varlock as a dependency to your project (e.g., `npm install varlock`)',\n ].join('\\n'));\n process.exit(1);\n }\n\n // if we dont do this, we'll see an error that looks like `process.env.__VARLOCK_ENV is not set` which is misleading.\n // Ideally we would pass through an error of some kind and trigger the webpack runtime error popup\n process.env.__VARLOCK_ENV = JSON.stringify({\n sources: [],\n config: {},\n settings: {},\n });\n\n return { combinedEnv: {}, parsedEnv: {}, loadedEnvFiles: [] };\n }\n\n parsedEnv = {};\n for (const [itemKey, itemInfo] of Object.entries(varlockLoadedEnv.config)) {\n parsedEnv[itemKey] = itemInfo.value;\n }\n debug('LOADED ENV:', parsedEnv);\n process.env.__VARLOCK_ENV = JSON.stringify(varlockLoadedEnv);\n initVarlockEnv(); // calling this will set process.env vars\n\n resetRedactionMap(varlockLoadedEnv);\n debug('patching console with varlock redactor');\n patchGlobalConsole();\n\n combinedEnv = { ...initialEnv, ...parsedEnv };\n loadedEnvFiles = getVarlockSourcesAsLoadedEnvFiles();\n\n // if not a dev build, we may need to write a temp resolved .env file\n if (!dev) writeResolvedEnvFile();\n\n return { combinedEnv, parsedEnv, loadedEnvFiles };\n}\n"]}
1
+ {"version":3,"sources":["../../../varlock/dist/chunk-6PEHRAEP.js","../../../varlock/src/lib/user-config-dir.ts","../../../../node_modules/.bun/fast-wrap-ansi@0.1.6/node_modules/fast-wrap-ansi/src/main.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/utils/cursor.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/utils/settings.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/utils/string.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/utils/index.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/autocomplete.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/date.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/autocomplete.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/box.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/date.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/progress-bar.ts","../../../../node_modules/.bun/sisteransi@1.0.5/node_modules/sisteransi/src/index.js","../../../../node_modules/.bun/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/utils.js","../../../../node_modules/.bun/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/index.js","../../../../node_modules/.bun/fast-string-width@1.1.0/node_modules/fast-string-width/dist/index.js","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/prompt.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/confirm.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/group-multiselect.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/password.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/select.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/select-key.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/text.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/common.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/limit-options.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/confirm.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/group.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/group-multi-select.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/log.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/messages.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/multi-select.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/note.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/password.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/path.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/spinner.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/select.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/select-key.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/stream.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/task.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/task-log.ts","../../../../node_modules/.bun/@clack+prompts@1.2.0/node_modules/@clack/prompts/src/text.ts","../../../../node_modules/.bun/@clack+core@1.2.0/node_modules/@clack/core/src/prompts/multi-select.ts","../../../../node_modules/.bun/@sindresorhus+is@7.2.0/node_modules/@sindresorhus/is/distribution/utilities.js","../../../../node_modules/.bun/@sindresorhus+is@7.2.0/node_modules/@sindresorhus/is/distribution/index.js","../../../utils/src/my-dash.ts","../../../varlock/src/lib/debug.ts","../../../varlock/src/plugin-context.ts","../../../varlock/src/env-graph/lib/errors.ts","../../../varlock/dist/dist-WGIHRGBZ.js","../../../varlock/dist/config-item-2FQ6I6PO.js","../../../env-spec-parser/src/helpers.ts","../../../env-spec-parser/src/classes.ts","../../../env-spec-parser/src/expand.ts","../../../env-spec-parser/src/updater.ts","../../../env-spec-parser/src/grammar.js","../../../env-spec-parser/src/index.ts","../../../utils/src/try-catch.ts","../../../varlock/src/env-graph/lib/graph-utils.ts","../../../varlock/src/env-graph/lib/type-generation.ts","../../../varlock/src/env-graph/lib/error-location.ts","../../../ci-env-info/src/normalize.ts","../../../ci-env-info/src/platforms.ts","../../../ci-env-info/src/detect.ts","../../../utils/src/exec-helpers.ts","../../../varlock/src/env-graph/lib/builtin-vars.ts","../../../utils/src/fs-utils.ts","../../../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js","../../../varlock/src/cli/helpers/prompts.ts","../../../varlock/src/lib/workspace-utils.ts","../../../varlock/src/env-graph/lib/plugins.ts","../../../varlock/src/env-graph/lib/decorators.ts","../../../varlock/src/env-graph/lib/resolver.ts","../../../varlock/src/env-graph/lib/data-types.ts","../../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.cjs","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/constants.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/debug.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/re.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/parse-options.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/identifiers.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/semver.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/parse.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/valid.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/clean.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/inc.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/diff.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/major.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/minor.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/patch.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/prerelease.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/rcompare.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare-loose.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare-build.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/sort.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/rsort.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/gt.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/lt.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/eq.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/neq.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/gte.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/lte.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/cmp.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/coerce.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/lrucache.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/range.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/comparator.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/satisfies.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/to-comparators.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/min-version.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/valid.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/outside.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/gtr.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/ltr.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/intersects.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/simplify.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/subset.js","../../../../node_modules/.bun/semver@7.7.4/node_modules/semver/index.js","../../../varlock/src/env-graph/lib/simple-queue.ts","../../../varlock/src/env-graph/lib/env-graph.ts","../../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.mjs","../../../varlock/src/env-graph/lib/data-source.ts","../../../varlock/src/env-graph/lib/config-item.ts","../../../varlock/src/runtime/lib/redaction.ts","../../../varlock/src/lib/detect-runtime.ts","../../../varlock/src/runtime/lib/debug.ts","../../../varlock/src/runtime/env.ts","../../../varlock/src/runtime/patch-response.ts","../../../varlock/src/runtime/patch-server-response.ts","../../../varlock/src/lib/check-bun-version.ts","../../../../node_modules/.bun/exit-hook@5.1.0/node_modules/exit-hook/index.js","../../../varlock/src/env-graph/lib/loader.ts","../../../varlock/src/lib/formatting.ts","../../../varlock/src/cli/helpers/exit-error.ts","../../../varlock/src/cli/helpers/error-checks.ts","../../../varlock/src/lib/local-encrypt/wsl-detect.ts","../../../varlock/src/lib/local-encrypt/binary-resolver.ts","../../../varlock/src/lib/local-encrypt/daemon-client.ts","../../../varlock/src/lib/local-encrypt/crypto.ts","../../../varlock/src/lib/local-encrypt/file-backend.ts","../../../varlock/src/lib/local-encrypt/index.ts","../../../varlock/src/lib/local-encrypt/write-back.ts","../../../varlock/src/lib/local-encrypt/builtin-resolver.ts","../../../varlock/src/lib/local-encrypt/keychain-resolver.ts","../../../varlock/src/lib/package-json-config.ts","../../../varlock/src/lib/load-graph.ts","../../../varlock/src/runtime/patch-console.ts","../../../varlock/src/index.ts","../../../varlock/dist/runtime/env.js","../../../varlock/dist/runtime/patch-console.js","../../../varlock/src/lib/exec-sync-varlock.ts","../../../varlock/dist/lib/exec-sync-varlock.js","../src/next-env-compat.ts"],"names":["__defProp","__getOwnPropNames","os","join","existsSync","findCursor","cursor","delta","options","opt","newCursor","maxCursor","clampedCursor","updateSettings","updates","aliases","alias","action","settings","messages","date","isActionKey","key","value","diffLines","a","b","aLines","bLines","numLines","diff","i","isCancel","CANCEL_SYMBOL","setRawMode","input","block","stdin","output","stdout","overwrite","hideCursor","rl","_","ReadStream","clear","data","name","sequence","str","dx","dy","isWindows","wrapTextWithPrefix","text","prefix","startPrefix","columns","getColumns","wrapAnsi","line","index","getCursorForValue","selected","items","item","defaultFilter","option","normalisedValue","multiple","values","segmentsFor","fmt","c","SEGMENTS","detectLocaleFormat","locale","parts","segments","separator","p","parseSegmentToNum","s","parse","daysInMonth","year","month","validParts","day","d","toDate","segmentBounds","type","ctx","minDate","maxDate","minP","maxP","isUnicodeSupported","process","getLabel","getFilteredOption","searchText","label","hint","term","getSelectedOptions","results","getPaddingForLine","lineLength","innerWidth","padding","contentAlign","leftPadding","rightPadding","renderDate","prompt","state","sep","styleText","seg","isActive","DEFAULT_LABELS","renderSegment","opts","isBlank","progress","style","userMax","userSize","spinnerOptions","spin","spinner","previousMessage","max","size","activeStyle","drawProgress","msg","active","S_PROGRESS_CHAR","start","advance","step","NO_TRUNCATION","dist_default","actions","DEFAULT_MONTH_NAMES","getRows","g$1","T$1","ConfirmPrompt","DatePrompt","GroupMultiSelectPrompt","PasswordPrompt","SelectPrompt","SelectKeyPrompt","TextPrompt","unicode","isCI","isTTY","unicodeOr","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_BAR_START_RIGHT","S_BAR_END_RIGHT","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_CHECKBOX_ACTIVE","S_CHECKBOX_SELECTED","S_CHECKBOX_INACTIVE","S_PASSWORD_MASK","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_CORNER_BOTTOM_LEFT","S_CORNER_TOP_LEFT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","symbol","symbolBar","trimLines","limitOptions","autocomplete","autocompleteMultiselect","roundedSymbols","squareSymbols","defaultFormatBorder","box","confirm","group","groupMultiselect","log","cancel","intro","outro","computeLabel","multiselect","defaultNoteFormatter","wrapWithFormat","note","password","path","defaultStyleFn","select","selectKey","stream","tasks","stripDestructiveANSI","taskLog","exports","ESC","CSI","y","visible","days","min","trackValue","render","signal","event","params","cb","cbs","cleanup","subscriber","resolve","readline","char","_key","write","problem","lines","frame","rows","diffOffsetAfter","diffOffsetBefore","diffLine","erase","adjustedDiffLine","newLines","Prompt","#cursor","#lastUserInput","#filterFn","#options","#placeholder","s1","s2","s3","initialValues","selectedValue","selectedIndex","#onKey","#onUserInputChanged","_char","isUpKey","isDownKey","isReturnKey","isEmptyOrOnlyTab","placeholder","placeholderMatchesOption","v","valueCursor","focusedOption","#segments","#separator","#segmentValues","#minDate","#maxDate","#segmentSelected","#pendingTensDigit","#format","#refresh","detected","initialDate","segmentValues","initialDisplay","#onCursor","#onFinalize","#seg","segment","#navigate","direction","#adjust","raw","num","bounds","next","dir","newVal","newParts","err","#validateSegment","display","firstBlank","pos","shouldStaySelected","digit","parsed","maxDay","nextBlank","#selectableGroups","o","groupedItems","currentIsGroup","enabledOptions","allSelected","notSelected","userInput","masked","mask","initialCursor","caseSensitive","keys","initial","keyInfo","casedKey","fallback","groups","initialLineCount","startIndex","endIndex","maxLines","lineCount","removals","maxItems","columnPadding","rowPadding","maxWidth","overflowFormat","outputMaxItems","computedMaxItems","slidingWindowLocation","shouldRenderTopEllipsis","shouldRenderBottomEllipsis","slidingWindowLocationEnd","lineGroups","slidingWindowLocationWithEllipsis","slidingWindowLocationEndWithEllipsis","wrappedLines","precedingRemovals","followingRemovals","newLineCount","cursorGroupIndex","trimLinesLocal","result","lineGroup","AutocompletePrompt","search","hasGuide","headings","showPlaceholder","submitPrefix","userInputText","cancelPrefix","barStyle","guidePrefix","guidePrefixEnd","searchTextValue","matches","noResults","validationError","instructions","footers","displayOptions","formatOption","selectedValues","focusedValue","isSelected","checkbox","title","errorMessage","headerLines","footerLines","message","borderTotalWidth","titlePadding","contentPadding","width","linePrefix","formatBorder","symbols","hSymbol","vSymbol","linePrefixWidth","stringWidth","titleWidth","maxBoxWidth","boxWidth","longestLine","lineWithPadding","longestLineWidth","maxTitleLength","truncatedTitle","titlePaddingLeft","titlePaddingRight","wrappedMessage","leftLinePadding","rightLinePadding","inactive","titlePrefix","titlePrefixBar","messageLines","defaultPrefix","defaultPrefixEnd","validate","iso","errorText","bar","barEnd","valueText","inlineBar","inlineError","prompts","promptNames","e","selectableGroups","groupSpacing","isItem","isLast","spacingPrefix","spacingPrefixText","selectedCheckbox","unselectedCheckbox","required","selectedOptions","optionValue","optionsText","footer","ln","groupActive","optionText","optionsPrefix","secondarySymbol","spacing","withGuide","spacingString","secondaryPrefix","messageParts","firstLine","format","MultiSelectPrompt","styleOption","submitText","wrappedSubmitText","wrappedLabel","titleLineCount","footerLineCount","wrapMsg","maxWidthNormal","sum","maxWidthFormat","wrapWidth","titleLen","len","leadingBorder","bottomLeft","errorPrefix","errorPrefixEnd","maskedText","searchPath","lstatSync","dirname","readdirSync","stats","isDirectory","indicator","onCancel","cancelMessage","frames","delay","isCIFn","unblock","loop","isSpinnerActive","isCancelled","_message","_prevMessage","_origin","styleFn","handleExit","code","_stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","removeTrailingDots","formatTimer","origin","duration","secs","frameIndex","indicatorTimer","outputMessage","loadingDots","wrapped","silent","prefixEnd","selectedOption","iterable","lineWidth","chunk","strip","chunkLen","task","barSize","retainLog","isTTYFn","buffers","lastMessageWasRaw","clearTitle","buffer","bufferHeight","count","printBuffer","messageSpacing","full","renderBuffer","header","mopts","linesToRemove","removedLines","printBuffers","completeBuffer","isString","w","__name","location","offset","expected","isPromise","fs","crypto","map","platform","k","spawn","processEnv","access","accessSync","debug","fsSync","createRequire","pathToFileURL","exec","promisify","execCb","https","semver","require_valid","require_semver","processExists","originalProcessEnv","EnvGraphDataSource","RootDecoratorInstance","t","r","l","u","n","O","T","R","C","E","I","re","gt","lt","isAny","z","st","hex","j","found","WriteStream","AsyncLocalStorage","enabledResolver","source","ConfigItem","reset","ServerResponse","zlib","import_semver","__dirname","fileURLToPath","net","webcrypto","DEFAULT_KEY_ID","execFileSync","spawnSync","keyExists","generateKey","encryptValue","decryptValue","ciphertext","writeBackResult","execSync","initialEnv","path6","fs6"],"mappings":"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U,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,KAAM,QAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,MAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,QAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,KAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,QAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,KAAK,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,QAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,KAAM,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,KAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,IAAK,IAAA,IAAU,CAAA,KAAM,IAAA,IAA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","file":"next-env-compat.js","sourcesContent":["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\nexport { __commonJS, __name, __toESM };\n//# sourceMappingURL=chunk-6PEHRAEP.js.map\n//# sourceMappingURL=chunk-6PEHRAEP.js.map","import os from 'node:os';\nimport { join } from 'node:path';\nimport { existsSync } from 'node:fs';\n\n/**\n * Resolves the user-level varlock config directory, respecting the XDG Base Directory Specification.\n *\n * Resolution order:\n * 1. If `$XDG_CONFIG_HOME` is set → `$XDG_CONFIG_HOME/varlock`\n * 2. If legacy `~/.varlock` exists → `~/.varlock` (backwards compatibility)\n * 3. Otherwise → `~/.config/varlock` (XDG default)\n *\n * @see https://specifications.freedesktop.org/basedir/latest/\n */\nexport function getUserVarlockDir(): string {\n const home = os.homedir();\n\n // If XDG_CONFIG_HOME is explicitly set, always respect it\n if (process.env.XDG_CONFIG_HOME) {\n return join(process.env.XDG_CONFIG_HOME, 'varlock');\n }\n\n // Backwards compatibility: if legacy ~/.varlock exists, keep using it\n const legacyDir = join(home, '.varlock');\n if (existsSync(legacyDir)) {\n return legacyDir;\n }\n\n // Default to XDG standard location: ~/.config/varlock\n return join(home, '.config', 'varlock');\n}\n",null,"export function findCursor<T extends { disabled?: boolean }>(\n\tcursor: number,\n\tdelta: number,\n\toptions: T[]\n) {\n\tconst hasEnabledOptions = options.some((opt) => !opt.disabled);\n\tif (!hasEnabledOptions) {\n\t\treturn cursor;\n\t}\n\tconst newCursor = cursor + delta;\n\tconst maxCursor = Math.max(options.length - 1, 0);\n\tconst clampedCursor = newCursor < 0 ? maxCursor : newCursor > maxCursor ? 0 : newCursor;\n\tconst newOption = options[clampedCursor];\n\tif (newOption.disabled) {\n\t\treturn findCursor(clampedCursor, delta < 0 ? -1 : 1, options);\n\t}\n\treturn clampedCursor;\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\nconst DEFAULT_MONTH_NAMES = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n\tmessages: {\n\t\tcancel: string;\n\t\terror: string;\n\t};\n\twithGuide: boolean;\n\tdate: {\n\t\tmonthNames: string[];\n\t\tmessages: {\n\t\t\tinvalidMonth: string;\n\t\t\trequired: string;\n\t\t\tinvalidDay: (days: number, month: string) => string;\n\t\t\tafterMin: (min: Date) => string;\n\t\t\tbeforeMax: (max: Date) => string;\n\t\t};\n\t};\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n\tmessages: {\n\t\tcancel: 'Canceled',\n\t\terror: 'Something went wrong',\n\t},\n\twithGuide: true,\n\tdate: {\n\t\tmonthNames: [...DEFAULT_MONTH_NAMES],\n\t\tmessages: {\n\t\t\trequired: 'Please enter a valid date',\n\t\t\tinvalidMonth: 'There are only 12 months in a year',\n\t\t\tinvalidDay: (days, month) => `There are only ${days} days in ${month}`,\n\t\t\tafterMin: (min) => `Date must be on or after ${min.toISOString().slice(0, 10)}`,\n\t\t\tbeforeMax: (max) => `Date must be on or before ${max.toISOString().slice(0, 10)}`,\n\t\t},\n\t},\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases?: Record<string, Action>;\n\n\t/**\n\t * Custom messages for prompts\n\t */\n\tmessages?: {\n\t\t/**\n\t\t * Custom message to display when a spinner is cancelled\n\t\t * @default \"Canceled\"\n\t\t */\n\t\tcancel?: string;\n\t\t/**\n\t\t * Custom message to display when a spinner encounters an error\n\t\t * @default \"Something went wrong\"\n\t\t */\n\t\terror?: string;\n\t};\n\n\twithGuide?: boolean;\n\n\t/**\n\t * Date prompt localization\n\t */\n\tdate?: {\n\t\t/** Month names for validation messages (January, February, ...) */\n\t\tmonthNames?: string[];\n\t\tmessages?: {\n\t\t\t/** Shown when date is missing */\n\t\t\trequired?: string;\n\t\t\t/** Shown when month > 12 */\n\t\t\tinvalidMonth?: string;\n\t\t\t/** (days, monthName) => message for invalid day */\n\t\t\tinvalidDay?: (days: number, month: string) => string;\n\t\t\t/** (min) => message when date is before minDate */\n\t\t\tafterMin?: (min: Date) => string;\n\t\t\t/** (max) => message when date is after maxDate */\n\t\t\tbeforeMax?: (max: Date) => string;\n\t\t};\n\t};\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\t// Handle each property in the updates\n\tif (updates.aliases !== undefined) {\n\t\tconst aliases = updates.aliases;\n\t\tfor (const alias in aliases) {\n\t\t\tif (!Object.hasOwn(aliases, alias)) continue;\n\n\t\t\tconst action = aliases[alias];\n\t\t\tif (!settings.actions.has(action)) continue;\n\n\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\tsettings.aliases.set(alias, action);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (updates.messages !== undefined) {\n\t\tconst messages = updates.messages;\n\t\tif (messages.cancel !== undefined) {\n\t\t\tsettings.messages.cancel = messages.cancel;\n\t\t}\n\t\tif (messages.error !== undefined) {\n\t\t\tsettings.messages.error = messages.error;\n\t\t}\n\t}\n\n\tif (updates.withGuide !== undefined) {\n\t\tsettings.withGuide = updates.withGuide !== false;\n\t}\n\n\tif (updates.date !== undefined) {\n\t\tconst date = updates.date;\n\t\tif (date.monthNames !== undefined) {\n\t\t\tsettings.date.monthNames = [...date.monthNames];\n\t\t}\n\t\tif (date.messages !== undefined) {\n\t\t\tif (date.messages.required !== undefined) {\n\t\t\t\tsettings.date.messages.required = date.messages.required;\n\t\t\t}\n\t\t\tif (date.messages.invalidMonth !== undefined) {\n\t\t\t\tsettings.date.messages.invalidMonth = date.messages.invalidMonth;\n\t\t\t}\n\t\t\tif (date.messages.invalidDay !== undefined) {\n\t\t\t\tsettings.date.messages.invalidDay = date.messages.invalidDay;\n\t\t\t}\n\t\t\tif (date.messages.afterMin !== undefined) {\n\t\t\t\tsettings.date.messages.afterMin = date.messages.afterMin;\n\t\t\t}\n\t\t\tif (date.messages.beforeMax !== undefined) {\n\t\t\t\tsettings.date.messages.beforeMax = date.messages.beforeMax;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst numLines = Math.max(aLines.length, bLines.length);\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < numLines; i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn {\n\t\tlines: diff,\n\t\tnumLinesBefore: aLines.length,\n\t\tnumLinesAfter: bLines.length,\n\t\tnumLines,\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable, Writable } from 'node:stream';\nimport { ReadStream } from 'node:tty';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings.js';\n\nexport * from './settings.js';\nexport * from './string.js';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\ninterface BlockOptions {\n\tinput?: Readable;\n\toutput?: Writable;\n\toverwrite?: boolean;\n\thideCursor?: boolean;\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n}: BlockOptions = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\n\tif (input instanceof ReadStream && input.isTTY) {\n\t\tinput.setRawMode(true);\n\t}\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input instanceof ReadStream && input.isTTY && !isWindows) {\n\t\t\tinput.setRawMode(false);\n\t\t}\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n\nexport const getColumns = (output: Writable): number => {\n\tif ('columns' in output && typeof output.columns === 'number') {\n\t\treturn output.columns;\n\t}\n\treturn 80;\n};\n\nexport const getRows = (output: Writable): number => {\n\tif ('rows' in output && typeof output.rows === 'number') {\n\t\treturn output.rows;\n\t}\n\treturn 20;\n};\n\nexport function wrapTextWithPrefix(\n\toutput: Writable | undefined,\n\ttext: string,\n\tprefix: string,\n\tstartPrefix: string = prefix\n): string {\n\tconst columns = getColumns(output ?? stdout);\n\tconst wrapped = wrapAnsi(text, columns - prefix.length, {\n\t\thard: true,\n\t\ttrim: false,\n\t});\n\tconst lines = wrapped\n\t\t.split('\\n')\n\t\t.map((line, index) => {\n\t\t\treturn `${index === 0 ? startPrefix : prefix}${line}`;\n\t\t})\n\t\t.join('\\n');\n\treturn lines;\n}\n","import type { Key } from 'node:readline';\nimport { styleText } from 'node:util';\nimport { findCursor } from '../utils/cursor.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\ninterface OptionLike {\n\tvalue: unknown;\n\tlabel?: string;\n\tdisabled?: boolean;\n}\n\ntype FilterFunction<T extends OptionLike> = (search: string, opt: T) => boolean;\n\nfunction getCursorForValue<T extends OptionLike>(\n\tselected: T['value'] | undefined,\n\titems: T[]\n): number {\n\tif (selected === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst currLength = items.length;\n\n\t// If filtering changed the available options, update cursor\n\tif (currLength === 0) {\n\t\treturn 0;\n\t}\n\n\t// Try to maintain the same selected item\n\tconst index = items.findIndex((item) => item.value === selected);\n\treturn index !== -1 ? index : 0;\n}\n\nfunction defaultFilter<T extends OptionLike>(input: string, option: T): boolean {\n\tconst label = option.label ?? String(option.value);\n\treturn label.toLowerCase().includes(input.toLowerCase());\n}\n\nfunction normalisedValue<T>(multiple: boolean, values: T[] | undefined): T | T[] | undefined {\n\tif (!values) {\n\t\treturn undefined;\n\t}\n\tif (multiple) {\n\t\treturn values;\n\t}\n\treturn values[0];\n}\n\nexport interface AutocompleteOptions<T extends OptionLike>\n\textends PromptOptions<T['value'] | T['value'][], AutocompletePrompt<T>> {\n\toptions: T[] | ((this: AutocompletePrompt<T>) => T[]);\n\tfilter?: FilterFunction<T>;\n\tmultiple?: boolean;\n\t/**\n\t * When set (non-empty), pressing Tab with no input fills the field with this value\n\t * and runs the normal filter/selection logic so the user can confirm with Enter.\n\t * Tab only fills the input when the placeholder matches at least one option under\n\t * the prompt's filter (so the value remains selectable).\n\t */\n\tplaceholder?: string;\n}\n\nexport default class AutocompletePrompt<T extends OptionLike> extends Prompt<\n\tT['value'] | T['value'][]\n> {\n\tfilteredOptions: T[];\n\tmultiple: boolean;\n\tisNavigating = false;\n\tselectedValues: Array<T['value']> = [];\n\n\tfocusedValue: T['value'] | undefined;\n\t#cursor = 0;\n\t#lastUserInput = '';\n\t#filterFn: FilterFunction<T> | undefined;\n\t#options: T[] | (() => T[]);\n\t#placeholder: string | undefined;\n\n\tget cursor(): number {\n\t\treturn this.#cursor;\n\t}\n\n\tget userInputWithCursor() {\n\t\tif (!this.userInput) {\n\t\t\treturn styleText(['inverse', 'hidden'], '_');\n\t\t}\n\t\tif (this._cursor >= this.userInput.length) {\n\t\t\treturn `${this.userInput}█`;\n\t\t}\n\t\tconst s1 = this.userInput.slice(0, this._cursor);\n\t\tconst [s2, ...s3] = this.userInput.slice(this._cursor);\n\t\treturn `${s1}${styleText('inverse', s2)}${s3.join('')}`;\n\t}\n\n\tget options(): T[] {\n\t\tif (typeof this.#options === 'function') {\n\t\t\treturn this.#options();\n\t\t}\n\t\treturn this.#options;\n\t}\n\n\tconstructor(opts: AutocompleteOptions<T>) {\n\t\tsuper(opts);\n\n\t\tthis.#options = opts.options;\n\t\tthis.#placeholder = opts.placeholder;\n\t\tconst options = this.options;\n\t\tthis.filteredOptions = [...options];\n\t\tthis.multiple = opts.multiple === true;\n\t\tthis.#filterFn =\n\t\t\ttypeof opts.options === 'function' ? opts.filter : (opts.filter ?? defaultFilter);\n\t\tlet initialValues: unknown[] | undefined;\n\t\tif (opts.initialValue && Array.isArray(opts.initialValue)) {\n\t\t\tif (this.multiple) {\n\t\t\t\tinitialValues = opts.initialValue;\n\t\t\t} else {\n\t\t\t\tinitialValues = opts.initialValue.slice(0, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.multiple && this.options.length > 0) {\n\t\t\t\tinitialValues = [this.options[0].value];\n\t\t\t}\n\t\t}\n\n\t\tif (initialValues) {\n\t\t\tfor (const selectedValue of initialValues) {\n\t\t\t\tconst selectedIndex = options.findIndex((opt) => opt.value === selectedValue);\n\t\t\t\tif (selectedIndex !== -1) {\n\t\t\t\t\tthis.toggleSelected(selectedValue);\n\t\t\t\t\tthis.#cursor = selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.focusedValue = this.options[this.#cursor]?.value;\n\n\t\tthis.on('key', (char, key) => this.#onKey(char, key));\n\t\tthis.on('userInput', (value) => this.#onUserInputChanged(value));\n\t}\n\n\tprotected override _isActionKey(char: string | undefined, key: Key): boolean {\n\t\treturn (\n\t\t\tchar === '\\t' ||\n\t\t\t(this.multiple &&\n\t\t\t\tthis.isNavigating &&\n\t\t\t\tkey.name === 'space' &&\n\t\t\t\tchar !== undefined &&\n\t\t\t\tchar !== '')\n\t\t);\n\t}\n\n\t#onKey(_char: string | undefined, key: Key): void {\n\t\tconst isUpKey = key.name === 'up';\n\t\tconst isDownKey = key.name === 'down';\n\t\tconst isReturnKey = key.name === 'return';\n\n\t\t// Tab with empty input and placeholder: fill input with placeholder to trigger autocomplete\n\t\t// Only when the placeholder matches at least one (non-disabled) option so the value remains selectable\n\t\tconst isEmptyOrOnlyTab = this.userInput === '' || this.userInput === '\\t';\n\t\tconst placeholder = this.#placeholder;\n\t\tconst options = this.options;\n\t\tconst placeholderMatchesOption =\n\t\t\tplaceholder !== undefined &&\n\t\t\tplaceholder !== '' &&\n\t\t\toptions.some(\n\t\t\t\t(opt) => !opt.disabled && (this.#filterFn ? this.#filterFn(placeholder, opt) : true)\n\t\t\t);\n\t\tif (key.name === 'tab' && isEmptyOrOnlyTab && placeholderMatchesOption) {\n\t\t\tif (this.userInput === '\\t') {\n\t\t\t\tthis._clearUserInput();\n\t\t\t}\n\t\t\tthis._setUserInput(placeholder, true);\n\t\t\tthis.isNavigating = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// Start navigation mode with up/down arrows\n\t\tif (isUpKey || isDownKey) {\n\t\t\tthis.#cursor = findCursor(this.#cursor, isUpKey ? -1 : 1, this.filteredOptions);\n\t\t\tthis.focusedValue = this.filteredOptions[this.#cursor]?.value;\n\t\t\tif (!this.multiple) {\n\t\t\t\tthis.selectedValues = [this.focusedValue];\n\t\t\t}\n\t\t\tthis.isNavigating = true;\n\t\t} else if (isReturnKey) {\n\t\t\tthis.value = normalisedValue(this.multiple, this.selectedValues);\n\t\t} else {\n\t\t\tif (this.multiple) {\n\t\t\t\tif (\n\t\t\t\t\tthis.focusedValue !== undefined &&\n\t\t\t\t\t(key.name === 'tab' || (this.isNavigating && key.name === 'space'))\n\t\t\t\t) {\n\t\t\t\t\tthis.toggleSelected(this.focusedValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis.isNavigating = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.focusedValue) {\n\t\t\t\t\tthis.selectedValues = [this.focusedValue];\n\t\t\t\t}\n\t\t\t\tthis.isNavigating = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tdeselectAll() {\n\t\tthis.selectedValues = [];\n\t}\n\n\ttoggleSelected(value: T['value']) {\n\t\tif (this.filteredOptions.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.multiple) {\n\t\t\tif (this.selectedValues.includes(value)) {\n\t\t\t\tthis.selectedValues = this.selectedValues.filter((v) => v !== value);\n\t\t\t} else {\n\t\t\t\tthis.selectedValues = [...this.selectedValues, value];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.selectedValues = [value];\n\t\t}\n\t}\n\n\t#onUserInputChanged(value: string): void {\n\t\tif (value !== this.#lastUserInput) {\n\t\t\tthis.#lastUserInput = value;\n\n\t\t\tconst options = this.options;\n\n\t\t\tif (value && this.#filterFn) {\n\t\t\t\tthis.filteredOptions = options.filter((opt) => this.#filterFn?.(value, opt));\n\t\t\t} else {\n\t\t\t\tthis.filteredOptions = [...options];\n\t\t\t}\n\t\t\tconst valueCursor = getCursorForValue(this.focusedValue, this.filteredOptions);\n\t\t\tthis.#cursor = findCursor(valueCursor, 0, this.filteredOptions);\n\t\t\tconst focusedOption = this.filteredOptions[this.#cursor];\n\t\t\tif (focusedOption && !focusedOption.disabled) {\n\t\t\t\tthis.focusedValue = focusedOption.value;\n\t\t\t} else {\n\t\t\t\tthis.focusedValue = undefined;\n\t\t\t}\n\t\t\tif (!this.multiple) {\n\t\t\t\tif (this.focusedValue !== undefined) {\n\t\t\t\t\tthis.toggleSelected(this.focusedValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis.deselectAll();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { Key } from 'node:readline';\nimport { settings } from '../utils/settings.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\ninterface SegmentConfig {\n\ttype: 'year' | 'month' | 'day';\n\tlen: number;\n}\n\nexport interface DateParts {\n\tyear: string;\n\tmonth: string;\n\tday: string;\n}\n\nexport type DateFormat = 'YMD' | 'MDY' | 'DMY';\n\nconst SEGMENTS: Record<string, SegmentConfig> = {\n\tY: { type: 'year', len: 4 },\n\tM: { type: 'month', len: 2 },\n\tD: { type: 'day', len: 2 },\n} as const;\n\nfunction segmentsFor(fmt: DateFormat): SegmentConfig[] {\n\treturn [...fmt].map((c) => SEGMENTS[c as keyof typeof SEGMENTS]);\n}\n\nfunction detectLocaleFormat(locale?: string): { segments: SegmentConfig[]; separator: string } {\n\tconst fmt = new Intl.DateTimeFormat(locale, {\n\t\tyear: 'numeric',\n\t\tmonth: '2-digit',\n\t\tday: '2-digit',\n\t});\n\tconst parts = fmt.formatToParts(new Date(2000, 0, 15));\n\tconst segments: SegmentConfig[] = [];\n\tlet separator = '/';\n\tfor (const p of parts) {\n\t\tif (p.type === 'literal') {\n\t\t\tseparator = p.value.trim() || p.value;\n\t\t} else if (p.type === 'year' || p.type === 'month' || p.type === 'day') {\n\t\t\tsegments.push({ type: p.type, len: p.type === 'year' ? 4 : 2 });\n\t\t}\n\t}\n\treturn { segments, separator };\n}\n\n/** Parse string segment values to numbers, treating blanks as 0 */\nfunction parseSegmentToNum(s: string): number {\n\treturn Number.parseInt((s || '0').replace(/_/g, '0'), 10) || 0;\n}\n\nfunction parse(parts: DateParts): { year: number; month: number; day: number } {\n\treturn {\n\t\tyear: parseSegmentToNum(parts.year),\n\t\tmonth: parseSegmentToNum(parts.month),\n\t\tday: parseSegmentToNum(parts.day),\n\t};\n}\n\nfunction daysInMonth(year: number, month: number): number {\n\treturn new Date(year || 2001, month || 1, 0).getDate();\n}\n\n/** Validate and return calendar parts, or undefined if invalid */\nfunction validParts(parts: DateParts): { year: number; month: number; day: number } | undefined {\n\tconst { year, month, day } = parse(parts);\n\tif (!year || year < 0 || year > 9999) return undefined;\n\tif (!month || month < 1 || month > 12) return undefined;\n\tif (!day || day < 1) return undefined;\n\tconst d = new Date(Date.UTC(year, month - 1, day));\n\tif (d.getUTCFullYear() !== year || d.getUTCMonth() !== month - 1 || d.getUTCDate() !== day)\n\t\treturn undefined;\n\treturn { year, month, day };\n}\n\nfunction toDate(parts: DateParts): Date | undefined {\n\tconst p = validParts(parts);\n\treturn p ? new Date(Date.UTC(p.year, p.month - 1, p.day)) : undefined;\n}\n\nfunction segmentBounds(\n\ttype: 'year' | 'month' | 'day',\n\tctx: { year: number; month: number },\n\tminDate: Date | undefined,\n\tmaxDate: Date | undefined\n): { min: number; max: number } {\n\tconst minP = minDate\n\t\t? {\n\t\t\t\tyear: minDate.getUTCFullYear(),\n\t\t\t\tmonth: minDate.getUTCMonth() + 1,\n\t\t\t\tday: minDate.getUTCDate(),\n\t\t\t}\n\t\t: null;\n\tconst maxP = maxDate\n\t\t? {\n\t\t\t\tyear: maxDate.getUTCFullYear(),\n\t\t\t\tmonth: maxDate.getUTCMonth() + 1,\n\t\t\t\tday: maxDate.getUTCDate(),\n\t\t\t}\n\t\t: null;\n\n\tif (type === 'year') {\n\t\treturn { min: minP?.year ?? 1, max: maxP?.year ?? 9999 };\n\t}\n\tif (type === 'month') {\n\t\treturn {\n\t\t\tmin: minP && ctx.year === minP.year ? minP.month : 1,\n\t\t\tmax: maxP && ctx.year === maxP.year ? maxP.month : 12,\n\t\t};\n\t}\n\treturn {\n\t\tmin: minP && ctx.year === minP.year && ctx.month === minP.month ? minP.day : 1,\n\t\tmax:\n\t\t\tmaxP && ctx.year === maxP.year && ctx.month === maxP.month\n\t\t\t\t? maxP.day\n\t\t\t\t: daysInMonth(ctx.year, ctx.month),\n\t};\n}\n\nexport interface DateOptions extends PromptOptions<Date, DatePrompt> {\n\tformat?: DateFormat;\n\tlocale?: string;\n\tseparator?: string;\n\tdefaultValue?: Date;\n\tinitialValue?: Date;\n\tminDate?: Date;\n\tmaxDate?: Date;\n}\n\nexport default class DatePrompt extends Prompt<Date> {\n\t#segments: SegmentConfig[];\n\t#separator: string;\n\t#segmentValues: DateParts;\n\t#minDate: Date | undefined;\n\t#maxDate: Date | undefined;\n\t#cursor = { segmentIndex: 0, positionInSegment: 0 };\n\t#segmentSelected = true;\n\t#pendingTensDigit: string | null = null;\n\n\tinlineError = '';\n\n\tget segmentCursor() {\n\t\treturn { ...this.#cursor };\n\t}\n\n\tget segmentValues(): DateParts {\n\t\treturn { ...this.#segmentValues };\n\t}\n\n\tget segments(): readonly SegmentConfig[] {\n\t\treturn this.#segments;\n\t}\n\n\tget separator(): string {\n\t\treturn this.#separator;\n\t}\n\n\tget formattedValue(): string {\n\t\treturn this.#format(this.#segmentValues);\n\t}\n\n\t#format(parts: DateParts): string {\n\t\treturn this.#segments.map((s) => parts[s.type]).join(this.#separator);\n\t}\n\n\t#refresh() {\n\t\tthis._setUserInput(this.#format(this.#segmentValues));\n\t\tthis._setValue(toDate(this.#segmentValues) ?? undefined);\n\t}\n\n\tconstructor(opts: DateOptions) {\n\t\tconst detected = opts.format\n\t\t\t? { segments: segmentsFor(opts.format), separator: opts.separator ?? '/' }\n\t\t\t: detectLocaleFormat(opts.locale);\n\t\tconst sep = opts.separator ?? detected.separator;\n\t\tconst segments = opts.format ? segmentsFor(opts.format) : detected.segments;\n\n\t\tconst initialDate = opts.initialValue ?? opts.defaultValue;\n\t\tconst segmentValues: DateParts = initialDate\n\t\t\t? {\n\t\t\t\t\tyear: String(initialDate.getUTCFullYear()).padStart(4, '0'),\n\t\t\t\t\tmonth: String(initialDate.getUTCMonth() + 1).padStart(2, '0'),\n\t\t\t\t\tday: String(initialDate.getUTCDate()).padStart(2, '0'),\n\t\t\t\t}\n\t\t\t: { year: '____', month: '__', day: '__' };\n\n\t\tconst initialDisplay = segments.map((s) => segmentValues[s.type]).join(sep);\n\n\t\tsuper({ ...opts, initialUserInput: initialDisplay }, false);\n\t\tthis.#segments = segments;\n\t\tthis.#separator = sep;\n\t\tthis.#segmentValues = segmentValues;\n\t\tthis.#minDate = opts.minDate;\n\t\tthis.#maxDate = opts.maxDate;\n\t\tthis.#refresh();\n\n\t\tthis.on('cursor', (key) => this.#onCursor(key));\n\t\tthis.on('key', (char, key) => this.#onKey(char, key));\n\t\tthis.on('finalize', () => this.#onFinalize(opts));\n\t}\n\n\t#seg(): { segment: SegmentConfig; index: number } | undefined {\n\t\tconst index = Math.max(0, Math.min(this.#cursor.segmentIndex, this.#segments.length - 1));\n\t\tconst segment = this.#segments[index];\n\t\tif (!segment) return undefined;\n\t\tthis.#cursor.positionInSegment = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.#cursor.positionInSegment, segment.len - 1)\n\t\t);\n\t\treturn { segment, index };\n\t}\n\n\t#navigate(direction: 1 | -1) {\n\t\tthis.inlineError = '';\n\t\tthis.#pendingTensDigit = null;\n\t\tconst ctx = this.#seg();\n\t\tif (!ctx) return;\n\t\tthis.#cursor.segmentIndex = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.#segments.length - 1, ctx.index + direction)\n\t\t);\n\t\tthis.#cursor.positionInSegment = 0;\n\t\tthis.#segmentSelected = true;\n\t}\n\n\t#adjust(direction: 1 | -1) {\n\t\tconst ctx = this.#seg();\n\t\tif (!ctx) return;\n\t\tconst { segment } = ctx;\n\t\tconst raw = this.#segmentValues[segment.type];\n\t\tconst isBlank = !raw || raw.replace(/_/g, '') === '';\n\t\tconst num = Number.parseInt((raw || '0').replace(/_/g, '0'), 10) || 0;\n\t\tconst bounds = segmentBounds(\n\t\t\tsegment.type,\n\t\t\tparse(this.#segmentValues),\n\t\t\tthis.#minDate,\n\t\t\tthis.#maxDate\n\t\t);\n\n\t\tlet next: number;\n\t\tif (isBlank) {\n\t\t\tnext = direction === 1 ? bounds.min : bounds.max;\n\t\t} else {\n\t\t\tnext = Math.max(Math.min(bounds.max, num + direction), bounds.min);\n\t\t}\n\n\t\tthis.#segmentValues = {\n\t\t\t...this.#segmentValues,\n\t\t\t[segment.type]: next.toString().padStart(segment.len, '0'),\n\t\t};\n\t\tthis.#segmentSelected = true;\n\t\tthis.#pendingTensDigit = null;\n\t\tthis.#refresh();\n\t}\n\n\t#onCursor(key?: string) {\n\t\tif (!key) return;\n\t\tswitch (key) {\n\t\t\tcase 'right':\n\t\t\t\treturn this.#navigate(1);\n\t\t\tcase 'left':\n\t\t\t\treturn this.#navigate(-1);\n\t\t\tcase 'up':\n\t\t\t\treturn this.#adjust(1);\n\t\t\tcase 'down':\n\t\t\t\treturn this.#adjust(-1);\n\t\t}\n\t}\n\n\t#onKey(char: string | undefined, key: Key) {\n\t\t// Backspace\n\t\tconst isBackspace =\n\t\t\tkey?.name === 'backspace' ||\n\t\t\tkey?.sequence === '\\x7f' ||\n\t\t\tkey?.sequence === '\\b' ||\n\t\t\tchar === '\\x7f' ||\n\t\t\tchar === '\\b';\n\t\tif (isBackspace) {\n\t\t\tthis.inlineError = '';\n\t\t\tconst ctx = this.#seg();\n\t\t\tif (!ctx) return;\n\t\t\tif (!this.#segmentValues[ctx.segment.type].replace(/_/g, '')) {\n\t\t\t\tthis.#navigate(-1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.#segmentValues[ctx.segment.type] = '_'.repeat(ctx.segment.len);\n\t\t\tthis.#segmentSelected = true;\n\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\tthis.#refresh();\n\t\t\treturn;\n\t\t}\n\n\t\t// Tab navigation\n\t\tif (key?.name === 'tab') {\n\t\t\tthis.inlineError = '';\n\t\t\tconst ctx = this.#seg();\n\t\t\tif (!ctx) return;\n\t\t\tconst dir = key.shift ? -1 : 1;\n\t\t\tconst next = ctx.index + dir;\n\t\t\tif (next >= 0 && next < this.#segments.length) {\n\t\t\t\tthis.#cursor.segmentIndex = next;\n\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t\tthis.#segmentSelected = true;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Digit input\n\t\tif (char && /^[0-9]$/.test(char)) {\n\t\t\tconst ctx = this.#seg();\n\t\t\tif (!ctx) return;\n\t\t\tconst { segment } = ctx;\n\t\t\tconst isBlank = !this.#segmentValues[segment.type].replace(/_/g, '');\n\n\t\t\t// Pending tens digit: complete the two-digit entry\n\t\t\tif (this.#segmentSelected && this.#pendingTensDigit !== null && !isBlank) {\n\t\t\t\tconst newVal = this.#pendingTensDigit + char;\n\t\t\t\tconst newParts = { ...this.#segmentValues, [segment.type]: newVal };\n\t\t\t\tconst err = this.#validateSegment(newParts, segment);\n\t\t\t\tif (err) {\n\t\t\t\t\tthis.inlineError = err;\n\t\t\t\t\tthis.#pendingTensDigit = null;\n\t\t\t\t\tthis.#segmentSelected = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.inlineError = '';\n\t\t\t\tthis.#segmentValues[segment.type] = newVal;\n\t\t\t\tthis.#pendingTensDigit = null;\n\t\t\t\tthis.#segmentSelected = false;\n\t\t\t\tthis.#refresh();\n\t\t\t\tif (ctx.index < this.#segments.length - 1) {\n\t\t\t\t\tthis.#cursor.segmentIndex = ctx.index + 1;\n\t\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t\t\tthis.#segmentSelected = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Clear-on-type: typing into a selected filled segment clears it first\n\t\t\tif (this.#segmentSelected && !isBlank) {\n\t\t\t\tthis.#segmentValues[segment.type] = '_'.repeat(segment.len);\n\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t}\n\t\t\tthis.#segmentSelected = false;\n\t\t\tthis.#pendingTensDigit = null;\n\n\t\t\tconst display = this.#segmentValues[segment.type];\n\t\t\tconst firstBlank = display.indexOf('_');\n\t\t\tconst pos =\n\t\t\t\tfirstBlank >= 0 ? firstBlank : Math.min(this.#cursor.positionInSegment, segment.len - 1);\n\t\t\tif (pos < 0 || pos >= segment.len) return;\n\n\t\t\tlet newVal = display.slice(0, pos) + char + display.slice(pos + 1);\n\n\t\t\t// Smart digit placement\n\t\t\tlet shouldStaySelected = false;\n\t\t\tif (pos === 0 && display === '__' && (segment.type === 'month' || segment.type === 'day')) {\n\t\t\t\tconst digit = Number.parseInt(char, 10);\n\t\t\t\tnewVal = `0${char}`;\n\t\t\t\tshouldStaySelected = digit <= (segment.type === 'month' ? 1 : 2);\n\t\t\t}\n\t\t\tif (segment.type === 'year') {\n\t\t\t\tconst digits = display.replace(/_/g, '');\n\t\t\t\tnewVal = (digits + char).padStart(segment.len, '_');\n\t\t\t}\n\n\t\t\tif (!newVal.includes('_')) {\n\t\t\t\tconst newParts = { ...this.#segmentValues, [segment.type]: newVal };\n\t\t\t\tconst err = this.#validateSegment(newParts, segment);\n\t\t\t\tif (err) {\n\t\t\t\t\tthis.inlineError = err;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.inlineError = '';\n\n\t\t\tthis.#segmentValues[segment.type] = newVal;\n\n\t\t\t// Clamp only when the current segment is fully entered\n\t\t\tconst parsed = !newVal.includes('_') ? validParts(this.#segmentValues) : undefined;\n\t\t\tif (parsed) {\n\t\t\t\tconst { year, month } = parsed;\n\t\t\t\tconst maxDay = daysInMonth(year, month);\n\t\t\t\tthis.#segmentValues = {\n\t\t\t\t\tyear: String(Math.max(0, Math.min(9999, year))).padStart(4, '0'),\n\t\t\t\t\tmonth: String(Math.max(1, Math.min(12, month))).padStart(2, '0'),\n\t\t\t\t\tday: String(Math.max(1, Math.min(maxDay, parsed.day))).padStart(2, '0'),\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.#refresh();\n\n\t\t\t// Advance cursor\n\t\t\tconst nextBlank = newVal.indexOf('_');\n\t\t\tif (shouldStaySelected) {\n\t\t\t\tthis.#segmentSelected = true;\n\t\t\t\tthis.#pendingTensDigit = char;\n\t\t\t} else if (nextBlank >= 0) {\n\t\t\t\tthis.#cursor.positionInSegment = nextBlank;\n\t\t\t} else if (firstBlank >= 0 && ctx.index < this.#segments.length - 1) {\n\t\t\t\tthis.#cursor.segmentIndex = ctx.index + 1;\n\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t\tthis.#segmentSelected = true;\n\t\t\t} else {\n\t\t\t\tthis.#cursor.positionInSegment = Math.min(pos + 1, segment.len - 1);\n\t\t\t}\n\t\t}\n\t}\n\n\t#validateSegment(parts: DateParts, seg: SegmentConfig): string | undefined {\n\t\tconst { month, day } = parse(parts);\n\t\tif (seg.type === 'month' && (month < 0 || month > 12)) {\n\t\t\treturn settings.date.messages.invalidMonth;\n\t\t}\n\t\tif (seg.type === 'day' && (day < 0 || day > 31)) {\n\t\t\treturn settings.date.messages.invalidDay(31, 'any month');\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t#onFinalize(opts: DateOptions) {\n\t\tconst { year, month, day } = parse(this.#segmentValues);\n\t\tif (year && month && day) {\n\t\t\tconst maxDay = daysInMonth(year, month);\n\t\t\tthis.#segmentValues = {\n\t\t\t\t...this.#segmentValues,\n\t\t\t\tday: String(Math.min(day, maxDay)).padStart(2, '0'),\n\t\t\t};\n\t\t}\n\t\tthis.value = toDate(this.#segmentValues) ?? opts.defaultValue ?? undefined;\n\t}\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import { styleText } from 'node:util';\nimport { AutocompletePrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nfunction getLabel<T>(option: Option<T>) {\n\treturn option.label ?? String(option.value ?? '');\n}\n\nfunction getFilteredOption<T>(searchText: string, option: Option<T>): boolean {\n\tif (!searchText) {\n\t\treturn true;\n\t}\n\tconst label = (option.label ?? String(option.value ?? '')).toLowerCase();\n\tconst hint = (option.hint ?? '').toLowerCase();\n\tconst value = String(option.value).toLowerCase();\n\tconst term = searchText.toLowerCase();\n\n\treturn label.includes(term) || hint.includes(term) || value.includes(term);\n}\n\nfunction getSelectedOptions<T>(values: T[], options: Option<T>[]): Option<T>[] {\n\tconst results: Option<T>[] = [];\n\n\tfor (const option of options) {\n\t\tif (values.includes(option.value)) {\n\t\t\tresults.push(option);\n\t\t}\n\t}\n\n\treturn results;\n}\n\ninterface AutocompleteSharedOptions<Value> extends CommonOptions {\n\t/**\n\t * The message to display to the user.\n\t */\n\tmessage: string;\n\t/**\n\t * Available options for the autocomplete prompt.\n\t */\n\toptions: Option<Value>[] | ((this: AutocompletePrompt<Option<Value>>) => Option<Value>[]);\n\t/**\n\t * Maximum number of items to display at once.\n\t */\n\tmaxItems?: number;\n\t/**\n\t * Placeholder text to display when no input is provided.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Validates the value\n\t */\n\tvalidate?: (value: Value | Value[] | undefined) => string | Error | undefined;\n\t/**\n\t * Custom filter function to match options against search input.\n\t * If not provided, a default filter that matches label, hint, and value is used.\n\t */\n\tfilter?: (search: string, option: Option<Value>) => boolean;\n}\n\nexport interface AutocompleteOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected value.\n\t */\n\tinitialValue?: Value;\n\t/**\n\t * The initial user input\n\t */\n\tinitialUserInput?: string;\n}\n\nexport const autocomplete = <Value>(opts: AutocompleteOptions<Value>) => {\n\tconst prompt = new AutocompletePrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue ? [opts.initialValue] : undefined,\n\t\tinitialUserInput: opts.initialUserInput,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search: string, opt: Option<Value>) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tvalidate: opts.validate,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and message display\n\t\t\tconst headings = hasGuide\n\t\t\t\t? [`${styleText('gray', S_BAR)}`, `${symbol(this.state)} ${opts.message}`]\n\t\t\t\t: [`${symbol(this.state)} ${opts.message}`];\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst options = this.options;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\t\t\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'disabled') => {\n\t\t\t\tconst label = getLabel(option);\n\t\t\t\tconst hint =\n\t\t\t\t\toption.hint && option.value === this.focusedValue\n\t\t\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t\t\t: '';\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'active':\n\t\t\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${hint}`;\n\t\t\t\t\tcase 'inactive':\n\t\t\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', label)}`;\n\t\t\t\t\tcase 'disabled':\n\t\t\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Handle different states\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\t// Show selected value\n\t\t\t\t\tconst selected = getSelectedOptions(this.selectedValues, options);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\tselected.length > 0 ? ` ${styleText('dim', selected.map(getLabel).join(', '))}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${submitPrefix}${label}`;\n\t\t\t\t}\n\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst userInputText = userInput\n\t\t\t\t\t\t? ` ${styleText(['strikethrough', 'dim'], userInput)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${cancelPrefix}${userInputText}`;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Display cursor position - show plain text in navigation mode\n\t\t\t\t\tlet searchText = '';\n\t\t\t\t\tif (this.isNavigating || showPlaceholder) {\n\t\t\t\t\t\tconst searchTextValue = showPlaceholder ? placeholder : userInput;\n\t\t\t\t\t\tsearchText = searchTextValue !== '' ? ` ${styleText('dim', searchTextValue)}` : '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchText = ` ${this.userInputWithCursor}`;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show match count if filtered\n\t\t\t\t\tconst matches =\n\t\t\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: '';\n\n\t\t\t\t\t// No matches message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst validationError =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\tif (hasGuide) {\n\t\t\t\t\t\theadings.push(`${guidePrefix.trimEnd()}`);\n\t\t\t\t\t}\n\t\t\t\t\theadings.push(\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')}${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...validationError\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\tconst footers = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Render options with selection\n\t\t\t\t\tconst displayOptions =\n\t\t\t\t\t\tthis.filteredOptions.length === 0\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: limitOptions({\n\t\t\t\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\t\t\t\tcolumnPadding: hasGuide ? 3 : 0, // for `| ` when guide is shown\n\t\t\t\t\t\t\t\t\trowPadding: headings.length + footers.length,\n\t\t\t\t\t\t\t\t\tstyle: (option, active) => {\n\t\t\t\t\t\t\t\t\t\treturn opt(\n\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\toption.disabled ? 'disabled' : active ? 'active' : 'inactive'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t// Return the formatted prompt\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headings,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footers,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value | symbol>;\n};\n\n// Type definition for the autocompleteMultiselect component\nexport interface AutocompleteMultiSelectOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected values\n\t */\n\tinitialValues?: Value[];\n\t/**\n\t * If true, at least one option must be selected\n\t */\n\trequired?: boolean;\n}\n\n/**\n * Integrated autocomplete multiselect - combines type-ahead filtering with multiselect in one UI\n */\nexport const autocompleteMultiselect = <Value>(opts: AutocompleteMultiSelectOptions<Value>) => {\n\tconst formatOption = (\n\t\toption: Option<Value>,\n\t\tactive: boolean,\n\t\tselectedValues: Value[],\n\t\tfocusedValue: Value | undefined\n\t) => {\n\t\tconst isSelected = selectedValues.includes(option.value);\n\t\tconst label = option.label ?? String(option.value ?? '');\n\t\tconst hint =\n\t\t\toption.hint && focusedValue !== undefined && option.value === focusedValue\n\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t: '';\n\t\tconst checkbox = isSelected\n\t\t\t? styleText('green', S_CHECKBOX_SELECTED)\n\t\t\t: styleText('dim', S_CHECKBOX_INACTIVE);\n\n\t\tif (option.disabled) {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t}\n\t\tif (active) {\n\t\t\treturn `${checkbox} ${label}${hint}`;\n\t\t}\n\t\treturn `${checkbox} ${styleText('dim', label)}`;\n\t};\n\n\t// Create text prompt which we'll use as foundation\n\tconst prompt = new AutocompletePrompt<Option<Value>>({\n\t\toptions: opts.options,\n\t\tmultiple: true,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search, opt) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tvalidate: () => {\n\t\t\tif (opts.required && prompt.selectedValues.length === 0) {\n\t\t\t\treturn 'Please select at least one item';\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tinitialValue: opts.initialValues,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and symbol\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${\n\t\t\t\topts.message\n\t\t\t}\\n`;\n\n\t\t\t// Selection counter\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\n\t\t\t// Search input display\n\t\t\tconst searchText =\n\t\t\t\tthis.isNavigating || showPlaceholder\n\t\t\t\t\t? styleText('dim', showPlaceholder ? placeholder : userInput) // Just show plain text when in navigation mode\n\t\t\t\t\t: this.userInputWithCursor;\n\n\t\t\tconst options = this.options;\n\n\t\t\tconst matches =\n\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t)\n\t\t\t\t\t: '';\n\n\t\t\t// Render prompt state\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`${this.selectedValues.length} items selected`\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t['strikethrough', 'dim'],\n\t\t\t\t\t\tuserInput\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to navigate`,\n\t\t\t\t\t\t`${styleText('dim', this.isNavigating ? 'Space/Tab:' : 'Tab:')} select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\t// No results message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst errorMessage =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\t// Calculate header and footer line counts for rowPadding\n\t\t\t\t\tconst headerLines = [\n\t\t\t\t\t\t...`${title}${hasGuide ? styleText(barStyle, S_BAR) : ''}`.split('\\n'),\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')} ${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...errorMessage,\n\t\t\t\t\t];\n\t\t\t\t\tconst footerLines = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Get limited options for display\n\t\t\t\t\tconst displayOptions = limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\tstyle: (option, active) =>\n\t\t\t\t\t\t\tformatOption(option, active, this.selectedValues, this.focusedValue),\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\trowPadding: headerLines.length + footerLines.length,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Build the prompt display\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headerLines,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footerLines,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value[] | symbol>;\n};\n","import type { Writable } from 'node:stream';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_BAR_END_RIGHT,\n\tS_BAR_H,\n\tS_BAR_START,\n\tS_BAR_START_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n} from './common.js';\n\nexport type BoxAlignment = 'left' | 'center' | 'right';\n\ntype BoxSymbols = [topLeft: string, topRight: string, bottomLeft: string, bottomRight: string];\n\nconst roundedSymbols: BoxSymbols = [\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n];\nconst squareSymbols: BoxSymbols = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\n\nexport interface BoxOptions extends CommonOptions {\n\tcontentAlign?: BoxAlignment;\n\ttitleAlign?: BoxAlignment;\n\twidth?: number | 'auto';\n\ttitlePadding?: number;\n\tcontentPadding?: number;\n\trounded?: boolean;\n\tformatBorder?: (text: string) => string;\n}\n\nfunction getPaddingForLine(\n\tlineLength: number,\n\tinnerWidth: number,\n\tpadding: number,\n\tcontentAlign: BoxAlignment | undefined\n): [number, number] {\n\tlet leftPadding = padding;\n\tlet rightPadding = padding;\n\tif (contentAlign === 'center') {\n\t\tleftPadding = Math.floor((innerWidth - lineLength) / 2);\n\t} else if (contentAlign === 'right') {\n\t\tleftPadding = innerWidth - lineLength - padding;\n\t}\n\n\trightPadding = innerWidth - leftPadding - lineLength;\n\n\treturn [leftPadding, rightPadding];\n}\n\nconst defaultFormatBorder = (text: string) => text;\n\nexport const box = (message = '', title = '', opts?: BoxOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst borderWidth = 1;\n\tconst borderTotalWidth = borderWidth * 2;\n\tconst titlePadding = opts?.titlePadding ?? 1;\n\tconst contentPadding = opts?.contentPadding ?? 2;\n\tconst width = opts?.width === undefined || opts.width === 'auto' ? 1 : Math.min(1, opts.width);\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst linePrefix = !hasGuide ? '' : `${S_BAR} `;\n\tconst formatBorder = opts?.formatBorder ?? defaultFormatBorder;\n\tconst symbols = (opts?.rounded ? roundedSymbols : squareSymbols).map(formatBorder);\n\tconst hSymbol = formatBorder(S_BAR_H);\n\tconst vSymbol = formatBorder(S_BAR);\n\tconst linePrefixWidth = stringWidth(linePrefix);\n\tconst titleWidth = stringWidth(title);\n\tconst maxBoxWidth = columns - linePrefixWidth;\n\tlet boxWidth = Math.floor(columns * width) - linePrefixWidth;\n\tif (opts?.width === 'auto') {\n\t\tconst lines = message.split('\\n');\n\t\tlet longestLine = titleWidth + titlePadding * 2;\n\t\tfor (const line of lines) {\n\t\t\tconst lineWithPadding = stringWidth(line) + contentPadding * 2;\n\t\t\tif (lineWithPadding > longestLine) {\n\t\t\t\tlongestLine = lineWithPadding;\n\t\t\t}\n\t\t}\n\t\tconst longestLineWidth = longestLine + borderTotalWidth;\n\t\tif (longestLineWidth < boxWidth) {\n\t\t\tboxWidth = longestLineWidth;\n\t\t}\n\t}\n\tif (boxWidth % 2 !== 0) {\n\t\tif (boxWidth < maxBoxWidth) {\n\t\t\tboxWidth++;\n\t\t} else {\n\t\t\tboxWidth--;\n\t\t}\n\t}\n\tconst innerWidth = boxWidth - borderTotalWidth;\n\tconst maxTitleLength = innerWidth - titlePadding * 2;\n\tconst truncatedTitle =\n\t\ttitleWidth > maxTitleLength ? `${title.slice(0, maxTitleLength - 3)}...` : title;\n\tconst [titlePaddingLeft, titlePaddingRight] = getPaddingForLine(\n\t\tstringWidth(truncatedTitle),\n\t\tinnerWidth,\n\t\ttitlePadding,\n\t\topts?.titleAlign\n\t);\n\tconst wrappedMessage = wrapAnsi(message, innerWidth - contentPadding * 2, {\n\t\thard: true,\n\t\ttrim: false,\n\t});\n\toutput.write(\n\t\t`${linePrefix}${symbols[0]}${hSymbol.repeat(titlePaddingLeft)}${truncatedTitle}${hSymbol.repeat(titlePaddingRight)}${symbols[1]}\\n`\n\t);\n\tconst wrappedLines = wrappedMessage.split('\\n');\n\tfor (const line of wrappedLines) {\n\t\tconst [leftLinePadding, rightLinePadding] = getPaddingForLine(\n\t\t\tstringWidth(line),\n\t\t\tinnerWidth,\n\t\t\tcontentPadding,\n\t\t\topts?.contentAlign\n\t\t);\n\t\toutput.write(\n\t\t\t`${linePrefix}${vSymbol}${' '.repeat(leftLinePadding)}${line}${' '.repeat(rightLinePadding)}${vSymbol}\\n`\n\t\t);\n\t}\n\toutput.write(`${linePrefix}${symbols[2]}${hSymbol.repeat(innerWidth)}${symbols[3]}\\n`);\n};\n","import { styleText } from 'node:util';\nimport type { DateFormat, State } from '@clack/core';\nimport { DatePrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport type { DateFormat };\n\nexport interface DateOptions extends CommonOptions {\n\tmessage: string;\n\tformat?: DateFormat;\n\tlocale?: string;\n\tdefaultValue?: Date;\n\tinitialValue?: Date;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tvalidate?: (value: Date | undefined) => string | Error | undefined;\n}\n\nexport const date = (opts: DateOptions) => {\n\tconst validate = opts.validate;\n\treturn new DatePrompt({\n\t\t...opts,\n\t\tvalidate(value: Date | undefined) {\n\t\t\tif (value === undefined) {\n\t\t\t\tif (opts.defaultValue !== undefined) return undefined;\n\t\t\t\tif (validate) return validate(value);\n\t\t\t\treturn settings.date.messages.required;\n\t\t\t}\n\t\t\tconst iso = (d: Date) => d.toISOString().slice(0, 10);\n\t\t\tif (opts.minDate && iso(value) < iso(opts.minDate)) {\n\t\t\t\treturn settings.date.messages.afterMin(opts.minDate);\n\t\t\t}\n\t\t\tif (opts.maxDate && iso(value) > iso(opts.maxDate)) {\n\t\t\t\treturn settings.date.messages.beforeMax(opts.maxDate);\n\t\t\t}\n\t\t\tif (validate) return validate(value);\n\t\t\treturn undefined;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = (opts?.withGuide ?? settings.withGuide) !== false;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\n\t\t\tconst state = this.state !== 'initial' ? this.state : 'active';\n\n\t\t\tconst userInput = renderDate(this, state);\n\t\t\tconst value = this.value instanceof Date ? this.formattedValue : '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${bar}${userInput}\\n${barEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}${value.trim() ? `\\n${bar}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst inlineBar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst inlineError = this.inlineError\n\t\t\t\t\t\t? `\\n${inlineBar}${styleText('yellow', this.inlineError)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\treturn `${title}${bar}${userInput}${inlineError}\\n${barEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Date | symbol>;\n};\n\nfunction renderDate(prompt: Omit<InstanceType<typeof DatePrompt>, 'prompt'>, state: State): string {\n\tconst parts = prompt.segmentValues;\n\tconst cursor = prompt.segmentCursor;\n\n\tif (state === 'submit' || state === 'cancel') {\n\t\treturn prompt.formattedValue;\n\t}\n\n\tconst sep = styleText('gray', prompt.separator);\n\treturn prompt.segments\n\t\t.map((seg, i) => {\n\t\t\tconst isActive = i === cursor.segmentIndex && !['submit', 'cancel'].includes(state);\n\t\t\tconst label = DEFAULT_LABELS[seg.type];\n\t\t\treturn renderSegment(parts[seg.type], { isActive, label });\n\t\t})\n\t\t.join(sep);\n}\n\ninterface SegmentOptions {\n\tisActive: boolean;\n\tlabel: string;\n}\nfunction renderSegment(value: string, opts: SegmentOptions): string {\n\tconst isBlank = !value || value.replace(/_/g, '') === '';\n\tif (opts.isActive) return styleText('inverse', isBlank ? opts.label : value.replace(/_/g, ' '));\n\tif (isBlank) return styleText('dim', opts.label);\n\treturn value.replace(/_/g, styleText('dim', ' '));\n}\n\nconst DEFAULT_LABELS: Record<'year' | 'month' | 'day', string> = {\n\tyear: 'yyyy',\n\tmonth: 'mm',\n\tday: 'dd',\n};\n","import { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport { unicodeOr } from './common.js';\nimport { type SpinnerOptions, type SpinnerResult, spinner } from './spinner.js';\n\nconst S_PROGRESS_CHAR: Record<NonNullable<ProgressOptions['style']>, string> = {\n\tlight: unicodeOr('─', '-'),\n\theavy: unicodeOr('━', '='),\n\tblock: unicodeOr('█', '#'),\n};\n\nexport interface ProgressOptions extends SpinnerOptions {\n\tstyle?: 'light' | 'heavy' | 'block';\n\tmax?: number;\n\tsize?: number;\n}\n\nexport interface ProgressResult extends SpinnerResult {\n\tadvance(step?: number, msg?: string): void;\n}\n\nexport function progress({\n\tstyle = 'heavy',\n\tmax: userMax = 100,\n\tsize: userSize = 40,\n\t...spinnerOptions\n}: ProgressOptions = {}): ProgressResult {\n\tconst spin = spinner(spinnerOptions);\n\tlet value = 0;\n\tlet previousMessage = '';\n\n\tconst max = Math.max(1, userMax);\n\tconst size = Math.max(1, userSize);\n\n\tconst activeStyle = (state: State) => {\n\t\tswitch (state) {\n\t\t\tcase 'initial':\n\t\t\tcase 'active':\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t\tcase 'error':\n\t\t\tcase 'cancel':\n\t\t\t\treturn (text: string) => styleText('red', text);\n\t\t\tcase 'submit':\n\t\t\t\treturn (text: string) => styleText('green', text);\n\t\t\tdefault:\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t}\n\t};\n\tconst drawProgress = (state: State, msg: string) => {\n\t\tconst active = Math.floor((value / max) * size);\n\t\treturn `${activeStyle(state)(S_PROGRESS_CHAR[style].repeat(active))}${styleText('dim', S_PROGRESS_CHAR[style].repeat(size - active))} ${msg}`;\n\t};\n\n\tconst start = (msg = '') => {\n\t\tpreviousMessage = msg;\n\t\tspin.start(drawProgress('initial', msg));\n\t};\n\tconst advance = (step = 1, msg?: string): void => {\n\t\tvalue = Math.min(max, step + value);\n\t\tspin.message(drawProgress('active', msg ?? previousMessage));\n\t\tpreviousMessage = msg ?? previousMessage;\n\t};\n\treturn {\n\t\tstart,\n\t\tstop: spin.stop,\n\t\tcancel: spin.cancel,\n\t\terror: spin.error,\n\t\tclear: spin.clear,\n\t\tadvance,\n\t\tisCancelled: spin.isCancelled,\n\t\tmessage: (msg: string) => advance(0, msg),\n\t};\n}\n","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","/* MAIN */\n//URL: https://github.com/sindresorhus/get-east-asian-width/blob/main/lookup.js\n//LICENSE: https://github.com/sindresorhus/get-east-asian-width/blob/main/license\n//TODO: Replace these with some unicode property classes, if the ones we need exist\nconst isAmbiguous = (x) => {\n return x === 0xA1 || x === 0xA4 || x === 0xA7 || x === 0xA8 || x === 0xAA || x === 0xAD || x === 0xAE || x >= 0xB0 && x <= 0xB4 || x >= 0xB6 && x <= 0xBA || x >= 0xBC && x <= 0xBF || x === 0xC6 || x === 0xD0 || x === 0xD7 || x === 0xD8 || x >= 0xDE && x <= 0xE1 || x === 0xE6 || x >= 0xE8 && x <= 0xEA || x === 0xEC || x === 0xED || x === 0xF0 || x === 0xF2 || x === 0xF3 || x >= 0xF7 && x <= 0xFA || x === 0xFC || x === 0xFE || x === 0x101 || x === 0x111 || x === 0x113 || x === 0x11B || x === 0x126 || x === 0x127 || x === 0x12B || x >= 0x131 && x <= 0x133 || x === 0x138 || x >= 0x13F && x <= 0x142 || x === 0x144 || x >= 0x148 && x <= 0x14B || x === 0x14D || x === 0x152 || x === 0x153 || x === 0x166 || x === 0x167 || x === 0x16B || x === 0x1CE || x === 0x1D0 || x === 0x1D2 || x === 0x1D4 || x === 0x1D6 || x === 0x1D8 || x === 0x1DA || x === 0x1DC || x === 0x251 || x === 0x261 || x === 0x2C4 || x === 0x2C7 || x >= 0x2C9 && x <= 0x2CB || x === 0x2CD || x === 0x2D0 || x >= 0x2D8 && x <= 0x2DB || x === 0x2DD || x === 0x2DF || x >= 0x300 && x <= 0x36F || x >= 0x391 && x <= 0x3A1 || x >= 0x3A3 && x <= 0x3A9 || x >= 0x3B1 && x <= 0x3C1 || x >= 0x3C3 && x <= 0x3C9 || x === 0x401 || x >= 0x410 && x <= 0x44F || x === 0x451 || x === 0x2010 || x >= 0x2013 && x <= 0x2016 || x === 0x2018 || x === 0x2019 || x === 0x201C || x === 0x201D || x >= 0x2020 && x <= 0x2022 || x >= 0x2024 && x <= 0x2027 || x === 0x2030 || x === 0x2032 || x === 0x2033 || x === 0x2035 || x === 0x203B || x === 0x203E || x === 0x2074 || x === 0x207F || x >= 0x2081 && x <= 0x2084 || x === 0x20AC || x === 0x2103 || x === 0x2105 || x === 0x2109 || x === 0x2113 || x === 0x2116 || x === 0x2121 || x === 0x2122 || x === 0x2126 || x === 0x212B || x === 0x2153 || x === 0x2154 || x >= 0x215B && x <= 0x215E || x >= 0x2160 && x <= 0x216B || x >= 0x2170 && x <= 0x2179 || x === 0x2189 || x >= 0x2190 && x <= 0x2199 || x === 0x21B8 || x === 0x21B9 || x === 0x21D2 || x === 0x21D4 || x === 0x21E7 || x === 0x2200 || x === 0x2202 || x === 0x2203 || x === 0x2207 || x === 0x2208 || x === 0x220B || x === 0x220F || x === 0x2211 || x === 0x2215 || x === 0x221A || x >= 0x221D && x <= 0x2220 || x === 0x2223 || x === 0x2225 || x >= 0x2227 && x <= 0x222C || x === 0x222E || x >= 0x2234 && x <= 0x2237 || x === 0x223C || x === 0x223D || x === 0x2248 || x === 0x224C || x === 0x2252 || x === 0x2260 || x === 0x2261 || x >= 0x2264 && x <= 0x2267 || x === 0x226A || x === 0x226B || x === 0x226E || x === 0x226F || x === 0x2282 || x === 0x2283 || x === 0x2286 || x === 0x2287 || x === 0x2295 || x === 0x2299 || x === 0x22A5 || x === 0x22BF || x === 0x2312 || x >= 0x2460 && x <= 0x24E9 || x >= 0x24EB && x <= 0x254B || x >= 0x2550 && x <= 0x2573 || x >= 0x2580 && x <= 0x258F || x >= 0x2592 && x <= 0x2595 || x === 0x25A0 || x === 0x25A1 || x >= 0x25A3 && x <= 0x25A9 || x === 0x25B2 || x === 0x25B3 || x === 0x25B6 || x === 0x25B7 || x === 0x25BC || x === 0x25BD || x === 0x25C0 || x === 0x25C1 || x >= 0x25C6 && x <= 0x25C8 || x === 0x25CB || x >= 0x25CE && x <= 0x25D1 || x >= 0x25E2 && x <= 0x25E5 || x === 0x25EF || x === 0x2605 || x === 0x2606 || x === 0x2609 || x === 0x260E || x === 0x260F || x === 0x261C || x === 0x261E || x === 0x2640 || x === 0x2642 || x === 0x2660 || x === 0x2661 || x >= 0x2663 && x <= 0x2665 || x >= 0x2667 && x <= 0x266A || x === 0x266C || x === 0x266D || x === 0x266F || x === 0x269E || x === 0x269F || x === 0x26BF || x >= 0x26C6 && x <= 0x26CD || x >= 0x26CF && x <= 0x26D3 || x >= 0x26D5 && x <= 0x26E1 || x === 0x26E3 || x === 0x26E8 || x === 0x26E9 || x >= 0x26EB && x <= 0x26F1 || x === 0x26F4 || x >= 0x26F6 && x <= 0x26F9 || x === 0x26FB || x === 0x26FC || x === 0x26FE || x === 0x26FF || x === 0x273D || x >= 0x2776 && x <= 0x277F || x >= 0x2B56 && x <= 0x2B59 || x >= 0x3248 && x <= 0x324F || x >= 0xE000 && x <= 0xF8FF || x >= 0xFE00 && x <= 0xFE0F || x === 0xFFFD || x >= 0x1F100 && x <= 0x1F10A || x >= 0x1F110 && x <= 0x1F12D || x >= 0x1F130 && x <= 0x1F169 || x >= 0x1F170 && x <= 0x1F18D || x === 0x1F18F || x === 0x1F190 || x >= 0x1F19B && x <= 0x1F1AC || x >= 0xE0100 && x <= 0xE01EF || x >= 0xF0000 && x <= 0xFFFFD || x >= 0x100000 && x <= 0x10FFFD;\n};\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWide = (x) => {\n return x >= 0x1100 && x <= 0x115F || x === 0x231A || x === 0x231B || x === 0x2329 || x === 0x232A || x >= 0x23E9 && x <= 0x23EC || x === 0x23F0 || x === 0x23F3 || x === 0x25FD || x === 0x25FE || x === 0x2614 || x === 0x2615 || x >= 0x2648 && x <= 0x2653 || x === 0x267F || x === 0x2693 || x === 0x26A1 || x === 0x26AA || x === 0x26AB || x === 0x26BD || x === 0x26BE || x === 0x26C4 || x === 0x26C5 || x === 0x26CE || x === 0x26D4 || x === 0x26EA || x === 0x26F2 || x === 0x26F3 || x === 0x26F5 || x === 0x26FA || x === 0x26FD || x === 0x2705 || x === 0x270A || x === 0x270B || x === 0x2728 || x === 0x274C || x === 0x274E || x >= 0x2753 && x <= 0x2755 || x === 0x2757 || x >= 0x2795 && x <= 0x2797 || x === 0x27B0 || x === 0x27BF || x === 0x2B1B || x === 0x2B1C || x === 0x2B50 || x === 0x2B55 || x >= 0x2E80 && x <= 0x2E99 || x >= 0x2E9B && x <= 0x2EF3 || x >= 0x2F00 && x <= 0x2FD5 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3041 && x <= 0x3096 || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0x4E00 && x <= 0xA48C || x >= 0xA490 && x <= 0xA4C6 || x >= 0xA960 && x <= 0xA97C || x >= 0xAC00 && x <= 0xD7A3 || x >= 0xF900 && x <= 0xFAFF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x16FE0 && x <= 0x16FE4 || x === 0x16FF0 || x === 0x16FF1 || x >= 0x17000 && x <= 0x187F7 || x >= 0x18800 && x <= 0x18CD5 || x >= 0x18D00 && x <= 0x18D08 || x >= 0x1AFF0 && x <= 0x1AFF3 || x >= 0x1AFF5 && x <= 0x1AFFB || x === 0x1AFFD || x === 0x1AFFE || x >= 0x1B000 && x <= 0x1B122 || x === 0x1B132 || x >= 0x1B150 && x <= 0x1B152 || x === 0x1B155 || x >= 0x1B164 && x <= 0x1B167 || x >= 0x1B170 && x <= 0x1B2FB || x === 0x1F004 || x === 0x1F0CF || x === 0x1F18E || x >= 0x1F191 && x <= 0x1F19A || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x === 0x1F250 || x === 0x1F251 || x >= 0x1F260 && x <= 0x1F265 || x >= 0x1F300 && x <= 0x1F320 || x >= 0x1F32D && x <= 0x1F335 || x >= 0x1F337 && x <= 0x1F37C || x >= 0x1F37E && x <= 0x1F393 || x >= 0x1F3A0 && x <= 0x1F3CA || x >= 0x1F3CF && x <= 0x1F3D3 || x >= 0x1F3E0 && x <= 0x1F3F0 || x === 0x1F3F4 || x >= 0x1F3F8 && x <= 0x1F43E || x === 0x1F440 || x >= 0x1F442 && x <= 0x1F4FC || x >= 0x1F4FF && x <= 0x1F53D || x >= 0x1F54B && x <= 0x1F54E || x >= 0x1F550 && x <= 0x1F567 || x === 0x1F57A || x === 0x1F595 || x === 0x1F596 || x === 0x1F5A4 || x >= 0x1F5FB && x <= 0x1F64F || x >= 0x1F680 && x <= 0x1F6C5 || x === 0x1F6CC || x >= 0x1F6D0 && x <= 0x1F6D2 || x >= 0x1F6D5 && x <= 0x1F6D7 || x >= 0x1F6DC && x <= 0x1F6DF || x === 0x1F6EB || x === 0x1F6EC || x >= 0x1F6F4 && x <= 0x1F6FC || x >= 0x1F7E0 && x <= 0x1F7EB || x === 0x1F7F0 || x >= 0x1F90C && x <= 0x1F93A || x >= 0x1F93C && x <= 0x1F945 || x >= 0x1F947 && x <= 0x1F9FF || x >= 0x1FA70 && x <= 0x1FA7C || x >= 0x1FA80 && x <= 0x1FA88 || x >= 0x1FA90 && x <= 0x1FABD || x >= 0x1FABF && x <= 0x1FAC5 || x >= 0x1FACE && x <= 0x1FADB || x >= 0x1FAE0 && x <= 0x1FAE8 || x >= 0x1FAF0 && x <= 0x1FAF8 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { isAmbiguous, isFullWidth, isWide };\n","/* IMPORT */\nimport { isAmbiguous, isFullWidth, isWide } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\n//TODO: Optimize matching non-latin letters\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = widthOptions.ansiWidth ?? 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const AMBIGUOUS_WIDTH = widthOptions.ambiguousWidth ?? 1;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = widthOptions.fullWidthWidth ?? 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? 2;\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWide(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else if (AMBIGUOUS_WIDTH !== REGULAR_WIDTH && isAmbiguous(codePoint)) {\n widthExtra = AMBIGUOUS_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length)\n break;\n /* LATIN */\n LATIN_RE.lastIndex = index;\n if (LATIN_RE.test(input)) {\n lengthExtra = LATIN_RE.lastIndex - index;\n widthExtra = lengthExtra * REGULAR_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / REGULAR_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = LATIN_RE.lastIndex;\n continue;\n }\n /* ANSI */\n ANSI_RE.lastIndex = index;\n if (ANSI_RE.test(input)) {\n if ((width + ANSI_WIDTH) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index);\n }\n if ((width + ANSI_WIDTH) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += ANSI_WIDTH;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = ANSI_RE.lastIndex;\n continue;\n }\n /* CONTROL */\n CONTROL_RE.lastIndex = index;\n if (CONTROL_RE.test(input)) {\n lengthExtra = CONTROL_RE.lastIndex - index;\n widthExtra = lengthExtra * CONTROL_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / CONTROL_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = CONTROL_RE.lastIndex;\n continue;\n }\n /* TAB */\n TAB_RE.lastIndex = index;\n if (TAB_RE.test(input)) {\n lengthExtra = TAB_RE.lastIndex - index;\n widthExtra = lengthExtra * TAB_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / TAB_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = TAB_RE.lastIndex;\n continue;\n }\n /* EMOJI */\n EMOJI_RE.lastIndex = index;\n if (EMOJI_RE.test(input)) {\n if ((width + EMOJI_WIDTH) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index);\n }\n if ((width + EMOJI_WIDTH) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += EMOJI_WIDTH;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = EMOJI_RE.lastIndex;\n continue;\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable, Writable } from 'node:stream';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport type { ClackEvents, ClackState } from '../types.js';\nimport type { Action } from '../utils/index.js';\nimport {\n\tCANCEL_SYMBOL,\n\tdiffLines,\n\tgetRows,\n\tisActionKey,\n\tsetRawMode,\n\tsettings,\n} from '../utils/index.js';\n\nexport interface PromptOptions<TValue, Self extends Prompt<TValue>> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tinitialValue?: any;\n\tinitialUserInput?: string;\n\tvalidate?: ((value: TValue | undefined) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt<TValue> {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<TValue, Prompt<TValue>>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt<TValue>, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: TValue | undefined;\n\tpublic userInput = '';\n\n\tconstructor(options: PromptOptions<TValue, Prompt<TValue>>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents<TValue>>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents<TValue>[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents<TValue>>(event: T, cb: ClackEvents<TValue>[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents<TValue>>(event: T, cb: ClackEvents<TValue>[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents<TValue>>(\n\t\tevent: T,\n\t\t...data: Parameters<ClackEvents<TValue>[T]>\n\t) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<TValue | symbol | undefined>((resolve) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\tthis.rl.prompt();\n\n\t\t\tif (this.opts.initialUserInput !== undefined) {\n\t\t\t\tthis._setUserInput(this.opts.initialUserInput, true);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprotected _isActionKey(char: string | undefined, _key: Key): boolean {\n\t\treturn char === '\\t';\n\t}\n\n\tprotected _setValue(value: TValue | undefined): void {\n\t\tthis.value = value;\n\t\tthis.emit('value', this.value);\n\t}\n\n\tprotected _setUserInput(value: string | undefined, write?: boolean): void {\n\t\tthis.userInput = value ?? '';\n\t\tthis.emit('userInput', this.userInput);\n\t\tif (write && this._track && this.rl) {\n\t\t\tthis.rl.write(this.userInput);\n\t\t\tthis._cursor = this.rl.cursor;\n\t\t}\n\t}\n\n\tprotected _clearUserInput(): void {\n\t\tthis.rl?.write(null, { ctrl: true, name: 'u' });\n\t\tthis._setUserInput('');\n\t}\n\n\tprivate onKeypress(char: string | undefined, key: Key) {\n\t\tif (this._track && key.name !== 'return') {\n\t\t\tif (key.name && this._isActionKey(char, key)) {\n\t\t\t\tthis.rl?.write(null, { ctrl: true, name: 'h' });\n\t\t\t}\n\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\tthis._setUserInput(this.rl?.line);\n\t\t}\n\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\n\t\t// Call the key event handler and emit the key event\n\t\tthis.emit('key', char?.toLowerCase(), key);\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.userInput);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrapAnsi(this._prevFrame, process.stdout.columns, { hard: true, trim: false }).split('\\n')\n\t\t\t\t.length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrapAnsi(this._render(this) ?? '', process.stdout.columns, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t});\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tconst rows = getRows(this.output);\n\t\t\tthis.restoreCursor();\n\t\t\tif (diff) {\n\t\t\t\tconst diffOffsetAfter = Math.max(0, diff.numLinesAfter - rows);\n\t\t\t\tconst diffOffsetBefore = Math.max(0, diff.numLinesBefore - rows);\n\t\t\t\tlet diffLine = diff.lines.find((line) => line >= diffOffsetAfter);\n\n\t\t\t\tif (diffLine === undefined) {\n\t\t\t\t\tthis._prevFrame = frame;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If a single line has changed, only update that line\n\t\t\t\tif (diff.lines.length === 1) {\n\t\t\t\t\tthis.output.write(cursor.move(0, diffLine - diffOffsetBefore));\n\t\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\t\tthis._prevFrame = frame;\n\t\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\t\treturn;\n\t\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t\t} else if (diff.lines.length > 1) {\n\t\t\t\t\tif (diffOffsetAfter < diffOffsetBefore) {\n\t\t\t\t\t\tdiffLine = diffOffsetAfter;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst adjustedDiffLine = diffLine - diffOffsetBefore;\n\t\t\t\t\t\tif (adjustedDiffLine > 0) {\n\t\t\t\t\t\t\tthis.output.write(cursor.move(0, adjustedDiffLine));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.output.write(erase.down());\n\t\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\t\tthis._prevFrame = frame;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface ConfirmOptions extends PromptOptions<boolean, ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\n\nexport default class ConfirmPrompt extends Prompt<boolean> {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('userInput', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<T['value'][], GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt<T['value'][]> {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\tconst value = this.value;\n\t\tif (value === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\treturn items.every((i) => value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (this.value === undefined) {\n\t\t\tthis.value = [];\n\t\t}\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { styleText } from 'node:util';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface PasswordOptions extends PromptOptions<string, PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt<string> {\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.userInput.replaceAll(/./g, this._mask);\n\t}\n\tget userInputWithCursor() {\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\treturn this.masked;\n\t\t}\n\t\tconst userInput = this.userInput;\n\t\tif (this.cursor >= userInput.length) {\n\t\t\treturn `${this.masked}${styleText(['inverse', 'hidden'], '_')}`;\n\t\t}\n\t\tconst masked = this.masked;\n\t\tconst s1 = masked.slice(0, this.cursor);\n\t\tconst s2 = masked.slice(this.cursor);\n\t\treturn `${s1}${styleText('inverse', s2[0])}${s2.slice(1)}`;\n\t}\n\tclear() {\n\t\tthis._clearUserInput();\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\t\tthis.on('userInput', (input) => {\n\t\t\tthis._setValue(input);\n\t\t});\n\t}\n}\n","import { findCursor } from '../utils/cursor.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface SelectOptions<T extends { value: any; disabled?: boolean }>\n\textends PromptOptions<T['value'], SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any; disabled?: boolean }> extends Prompt<\n\tT['value']\n> {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _selectedValue() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._selectedValue.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\n\t\tconst initialCursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tconst cursor = initialCursor === -1 ? 0 : initialCursor;\n\t\tthis.cursor = this.options[cursor].disabled ? findCursor<T>(cursor, 1, this.options) : cursor;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, -1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, 1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface SelectKeyOptions<T extends { value: string }>\n\textends PromptOptions<T['value'], SelectKeyPrompt<T>> {\n\toptions: T[];\n\tcaseSensitive?: boolean;\n}\nexport default class SelectKeyPrompt<T extends { value: string }> extends Prompt<T['value']> {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst caseSensitive = opts.caseSensitive === true;\n\t\tconst keys = this.options.map(({ value: [initial] }) => {\n\t\t\treturn caseSensitive ? initial : initial?.toLowerCase();\n\t\t});\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key, keyInfo) => {\n\t\t\tif (!key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst casedKey = caseSensitive && keyInfo.shift ? key.toUpperCase() : key;\n\t\t\tif (!keys.includes(casedKey)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = this.options.find(({ value: [initial] }) => {\n\t\t\t\treturn caseSensitive ? initial === casedKey : initial?.toLowerCase() === key;\n\t\t\t});\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { styleText } from 'node:util';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface TextOptions extends PromptOptions<string, TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt<string> {\n\tget userInputWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.userInput;\n\t\t}\n\t\tconst userInput = this.userInput;\n\t\tif (this.cursor >= userInput.length) {\n\t\t\treturn `${this.userInput}█`;\n\t\t}\n\t\tconst s1 = userInput.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = userInput.slice(this.cursor);\n\t\treturn `${s1}${styleText('inverse', s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper({\n\t\t\t...opts,\n\t\t\tinitialUserInput: opts.initialUserInput ?? opts.initialValue,\n\t\t});\n\n\t\tthis.on('userInput', (input) => {\n\t\t\tthis._setValue(input);\n\t\t});\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t\tif (this.value === undefined) {\n\t\t\t\tthis.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import type { Readable, Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nexport const unicode = isUnicodeSupported();\nexport const isCI = (): boolean => process.env.CI === 'true';\nexport const isTTY = (output: Writable): boolean => {\n\treturn (output as Writable & { isTTY?: boolean }).isTTY === true;\n};\nexport const unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);\nexport const S_STEP_ACTIVE = unicodeOr('◆', '*');\nexport const S_STEP_CANCEL = unicodeOr('■', 'x');\nexport const S_STEP_ERROR = unicodeOr('▲', 'x');\nexport const S_STEP_SUBMIT = unicodeOr('◇', 'o');\n\nexport const S_BAR_START = unicodeOr('┌', 'T');\nexport const S_BAR = unicodeOr('│', '|');\nexport const S_BAR_END = unicodeOr('└', '—');\nexport const S_BAR_START_RIGHT = unicodeOr('┐', 'T');\nexport const S_BAR_END_RIGHT = unicodeOr('┘', '—');\n\nexport const S_RADIO_ACTIVE = unicodeOr('●', '>');\nexport const S_RADIO_INACTIVE = unicodeOr('○', ' ');\nexport const S_CHECKBOX_ACTIVE = unicodeOr('◻', '[•]');\nexport const S_CHECKBOX_SELECTED = unicodeOr('◼', '[+]');\nexport const S_CHECKBOX_INACTIVE = unicodeOr('◻', '[ ]');\nexport const S_PASSWORD_MASK = unicodeOr('▪', '•');\n\nexport const S_BAR_H = unicodeOr('─', '-');\nexport const S_CORNER_TOP_RIGHT = unicodeOr('╮', '+');\nexport const S_CONNECT_LEFT = unicodeOr('├', '+');\nexport const S_CORNER_BOTTOM_RIGHT = unicodeOr('╯', '+');\nexport const S_CORNER_BOTTOM_LEFT = unicodeOr('╰', '+');\nexport const S_CORNER_TOP_LEFT = unicodeOr('╭', '+');\n\nexport const S_INFO = unicodeOr('●', '•');\nexport const S_SUCCESS = unicodeOr('◆', '*');\nexport const S_WARN = unicodeOr('▲', '!');\nexport const S_ERROR = unicodeOr('■', 'x');\n\nexport const symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_STEP_SUBMIT);\n\t}\n};\n\nexport const symbolBar = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_BAR);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_BAR);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_BAR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_BAR);\n\t}\n};\n\nexport interface CommonOptions {\n\tinput?: Readable;\n\toutput?: Writable;\n\tsignal?: AbortSignal;\n\twithGuide?: boolean;\n}\n","import { styleText } from 'node:util';\nimport { getColumns, getRows } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport type { CommonOptions } from './common.js';\n\nexport interface LimitOptionsParams<TOption> extends CommonOptions {\n\toptions: TOption[];\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n\tmaxItems?: number;\n\tcolumnPadding?: number;\n\trowPadding?: number;\n}\n\nconst trimLines = (\n\tgroups: Array<string[]>,\n\tinitialLineCount: number,\n\tstartIndex: number,\n\tendIndex: number,\n\tmaxLines: number\n) => {\n\tlet lineCount = initialLineCount;\n\tlet removals = 0;\n\tfor (let i = startIndex; i < endIndex; i++) {\n\t\tconst group = groups[i];\n\t\tlineCount = lineCount - group.length;\n\t\tremovals++;\n\t\tif (lineCount <= maxLines) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn { lineCount, removals };\n};\n\nexport const limitOptions = <TOption>({\n\tcursor,\n\toptions,\n\tstyle,\n\toutput = process.stdout,\n\tmaxItems = Number.POSITIVE_INFINITY,\n\tcolumnPadding = 0,\n\trowPadding = 4,\n}: LimitOptionsParams<TOption>): string[] => {\n\tconst columns = getColumns(output);\n\tconst maxWidth = columns - columnPadding;\n\tconst rows = getRows(output);\n\tconst overflowFormat = styleText('dim', '...');\n\n\tconst outputMaxItems = Math.max(rows - rowPadding, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst computedMaxItems = Math.max(Math.min(maxItems, outputMaxItems), 5);\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= computedMaxItems - 3) {\n\t\tslidingWindowLocation = Math.max(\n\t\t\tMath.min(cursor - computedMaxItems + 3, options.length - computedMaxItems),\n\t\t\t0\n\t\t);\n\t}\n\n\tlet shouldRenderTopEllipsis = computedMaxItems < options.length && slidingWindowLocation > 0;\n\tlet shouldRenderBottomEllipsis =\n\t\tcomputedMaxItems < options.length && slidingWindowLocation + computedMaxItems < options.length;\n\n\tconst slidingWindowLocationEnd = Math.min(\n\t\tslidingWindowLocation + computedMaxItems,\n\t\toptions.length\n\t);\n\tconst lineGroups: Array<string[]> = [];\n\tlet lineCount = 0;\n\tif (shouldRenderTopEllipsis) {\n\t\tlineCount++;\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tlineCount++;\n\t}\n\n\tconst slidingWindowLocationWithEllipsis =\n\t\tslidingWindowLocation + (shouldRenderTopEllipsis ? 1 : 0);\n\tconst slidingWindowLocationEndWithEllipsis =\n\t\tslidingWindowLocationEnd - (shouldRenderBottomEllipsis ? 1 : 0);\n\n\tfor (let i = slidingWindowLocationWithEllipsis; i < slidingWindowLocationEndWithEllipsis; i++) {\n\t\tconst wrappedLines = wrapAnsi(style(options[i], i === cursor), maxWidth, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t}).split('\\n');\n\t\tlineGroups.push(wrappedLines);\n\t\tlineCount += wrappedLines.length;\n\t}\n\n\tif (lineCount > outputMaxItems) {\n\t\tlet precedingRemovals = 0;\n\t\tlet followingRemovals = 0;\n\t\tlet newLineCount = lineCount;\n\t\tconst cursorGroupIndex = cursor - slidingWindowLocationWithEllipsis;\n\t\tconst trimLinesLocal = (startIndex: number, endIndex: number) =>\n\t\t\ttrimLines(lineGroups, newLineCount, startIndex, endIndex, outputMaxItems);\n\n\t\tif (shouldRenderTopEllipsis) {\n\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t0,\n\t\t\t\tcursorGroupIndex\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\t\tlineGroups.length\n\t\t\t\t));\n\t\t\t}\n\t\t} else {\n\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\tlineGroups.length\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t\t0,\n\t\t\t\t\tcursorGroupIndex\n\t\t\t\t));\n\t\t\t}\n\t\t}\n\n\t\tif (precedingRemovals > 0) {\n\t\t\tshouldRenderTopEllipsis = true;\n\t\t\tlineGroups.splice(0, precedingRemovals);\n\t\t}\n\t\tif (followingRemovals > 0) {\n\t\t\tshouldRenderBottomEllipsis = true;\n\t\t\tlineGroups.splice(lineGroups.length - followingRemovals, followingRemovals);\n\t\t}\n\t}\n\n\tconst result: string[] = [];\n\tif (shouldRenderTopEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\tfor (const lineGroup of lineGroups) {\n\t\tfor (const line of lineGroup) {\n\t\t\tresult.push(line);\n\t\t}\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\n\treturn result;\n};\n","import { styleText } from 'node:util';\nimport { ConfirmPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\n\nexport interface ConfirmOptions extends CommonOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n\tvertical?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${styleText('dim', value)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${styleText(['strikethrough', 'dim'], value)}${\n\t\t\t\t\t\thasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', active)}`\n\t\t\t\t\t}${opts.vertical ? (hasGuide ? `\\n${styleText('cyan', S_BAR)} ` : '\\n') : ` ${styleText('dim', '/')} `}${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', inactive)}`\n\t\t\t\t\t}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n","import { isCancel } from '@clack/core';\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n","import { styleText } from 'node:util';\nimport { GroupMultiSelectPrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n} from './common.js';\nimport type { Option } from './select.js';\n\nexport interface GroupMultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n\tgroupSpacing?: number;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true, groupSpacing = 0 } = opts;\n\tconst opt = (\n\t\toption: Option<Value> & { group: string | boolean },\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: (Option<Value> & { group: string | boolean })[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof option.group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && next && next.group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\t\tlet spacingPrefix = '';\n\t\tif (groupSpacing > 0 && !isItem) {\n\t\t\tconst spacingPrefixText = `\\n${styleText('cyan', S_BAR)}`;\n\t\t\tspacingPrefix = `${spacingPrefixText.repeat(groupSpacing - 1)}${spacingPrefixText} `;\n\t\t}\n\n\t\tif (state === 'active') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('green', S_CHECKBOX_SELECTED)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox =\n\t\t\t\tisItem || selectableGroups ? styleText('green', S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${selectedCheckbox} ${styleText('dim', label)}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tconst unselectedCheckbox =\n\t\t\tisItem || selectableGroups ? styleText('dim', S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${unselectedCheckbox} ${styleText('dim', label)}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText(['bgWhite', 'inverse'], ' enter ')\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst selectedOptions = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'));\n\t\t\t\t\tconst optionsText =\n\t\t\t\t\t\tselectedOptions.length === 0 ? '' : ` ${selectedOptions.join(styleText('dim', ', '))}`;\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('gray', S_BAR) : ''}${optionsText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${\n\t\t\t\t\t\tlabel.trim() ? `${label}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst optionsText = this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tlet optionText = '';\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\toptionText = opt(\n\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\tselected ? 'group-active-selected' : 'group-active',\n\t\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (active && selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t} else if (selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'selected', options);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptionText = opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst prefix = i !== 0 && !optionText.startsWith('\\n') ? ' ' : '';\n\t\t\t\t\t\t\treturn `${prefix}${optionText}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? styleText('cyan', S_BAR) : ''}`);\n\t\t\t\t\tconst optionsPrefix = optionsText.startsWith('\\n') ? '' : ' ';\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('cyan', S_BAR) : ''}${optionsPrefix}${optionsText}\\n${\n\t\t\t\t\t\thasGuide ? styleText('cyan', S_BAR_END) : ''\n\t\t\t\t\t}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_ERROR,\n\tS_INFO,\n\tS_STEP_SUBMIT,\n\tS_SUCCESS,\n\tS_WARN,\n} from './common.js';\n\nexport interface LogMessageOptions extends CommonOptions {\n\tsymbol?: string;\n\tspacing?: number;\n\tsecondarySymbol?: string;\n}\n\nexport const log = {\n\tmessage: (\n\t\tmessage: string | string[] = [],\n\t\t{\n\t\t\tsymbol = styleText('gray', S_BAR),\n\t\t\tsecondarySymbol = styleText('gray', S_BAR),\n\t\t\toutput = process.stdout,\n\t\t\tspacing = 1,\n\t\t\twithGuide,\n\t\t}: LogMessageOptions = {}\n\t) => {\n\t\tconst parts: string[] = [];\n\t\tconst hasGuide = withGuide ?? settings.withGuide;\n\t\tconst spacingString = !hasGuide ? '' : secondarySymbol;\n\t\tconst prefix = !hasGuide ? '' : `${symbol} `;\n\t\tconst secondaryPrefix = !hasGuide ? '' : `${secondarySymbol} `;\n\n\t\tfor (let i = 0; i < spacing; i++) {\n\t\t\tparts.push(spacingString);\n\t\t}\n\n\t\tconst messageParts = Array.isArray(message) ? message : message.split('\\n');\n\t\tif (messageParts.length > 0) {\n\t\t\tconst [firstLine, ...lines] = messageParts;\n\t\t\tif (firstLine.length > 0) {\n\t\t\t\tparts.push(`${prefix}${firstLine}`);\n\t\t\t} else {\n\t\t\t\tparts.push(hasGuide ? symbol : '');\n\t\t\t}\n\t\t\tfor (const ln of lines) {\n\t\t\t\tif (ln.length > 0) {\n\t\t\t\t\tparts.push(`${secondaryPrefix}${ln}`);\n\t\t\t\t} else {\n\t\t\t\t\tparts.push(hasGuide ? secondarySymbol : '');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\toutput.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.warn(message, opts);\n\t},\n\terror: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('red', S_ERROR) });\n\t},\n};\n","import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_BAR_START } from './common.js';\n\nexport const cancel = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${styleText('red', message)}\\n\\n`);\n};\n\nexport const intro = (title = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_START)} ` : '';\n\toutput.write(`${prefix}${title}\\n`);\n};\n\nexport const outro = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR)}\\n${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${message}\\n\\n`);\n};\n","import { styleText } from 'node:util';\nimport { MultiSelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nexport interface MultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled'\n\t\t\t| 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'disabled') {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (str) => styleText(['strikethrough', 'gray'], str))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${computeLabel(label, (text) => styleText('dim', text))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${computeLabel(label, (text) => styleText(['strikethrough', 'dim'], text))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t\treturn `${styleText('dim', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText('bgWhite', styleText('inverse', ' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst wrappedMessage = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\thasGuide ? `${symbolBar(this.state)} ` : '',\n\t\t\t\t`${symbol(this.state)} `\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${wrappedMessage}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tif (option.disabled) {\n\t\t\t\t\treturn opt(option, 'disabled');\n\t\t\t\t}\n\t\t\t\tconst selected = value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitText =\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(styleText('dim', ', ')) || styleText('dim', 'none');\n\t\t\t\t\tconst wrappedSubmitText = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tsubmitText,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedSubmitText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\tif (label.trim() === '') {\n\t\t\t\t\t\treturn `${title}${styleText('gray', S_BAR)}`;\n\t\t\t\t\t}\n\t\t\t\t\tconst wrappedLabel = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLabel}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (error message + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = footer.split('\\n').length + 1; // footer + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${hasGuide ? styleText('cyan', S_BAR_END) : ''}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n","import process from 'node:process';\nimport type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { type Options as WrapAnsiOptions, wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_H,\n\tS_CONNECT_LEFT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_RIGHT,\n\tS_STEP_SUBMIT,\n} from './common.js';\n\ntype FormatFn = (line: string) => string;\nexport interface NoteOptions extends CommonOptions {\n\tformat?: FormatFn;\n}\n\nconst defaultNoteFormatter = (line: string): string => styleText('dim', line);\n\nconst wrapWithFormat = (message: string, width: number, format: FormatFn): string => {\n\tconst opts: WrapAnsiOptions = {\n\t\thard: true,\n\t\ttrim: false,\n\t};\n\tconst wrapMsg = wrapAnsi(message, width, opts).split('\\n');\n\tconst maxWidthNormal = wrapMsg.reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst maxWidthFormat = wrapMsg.map(format).reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst wrapWidth = width - (maxWidthFormat - maxWidthNormal);\n\treturn wrapAnsi(message, wrapWidth, opts);\n};\n\nexport const note = (message = '', title = '', opts?: NoteOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst format = opts?.format ?? defaultNoteFormatter;\n\tconst wrapMsg = wrapWithFormat(message, getColumns(output) - 6, format);\n\tconst lines = ['', ...wrapMsg.split('\\n').map(format), ''];\n\tconst titleLen = stringWidth(title);\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst width = stringWidth(ln);\n\t\t\t\treturn width > sum ? width : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${styleText('gray', S_BAR)} ${ln}${' '.repeat(len - stringWidth(ln))}${styleText('gray', S_BAR)}`\n\t\t)\n\t\t.join('\\n');\n\tconst leadingBorder = hasGuide ? `${styleText('gray', S_BAR)}\\n` : '';\n\tconst bottomLeft = hasGuide ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n\toutput.write(\n\t\t`${leadingBorder}${styleText('green', S_STEP_SUBMIT)} ${styleText('reset', title)} ${styleText(\n\t\t\t'gray',\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${styleText('gray', bottomLeft + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n","import { styleText } from 'node:util';\nimport { PasswordPrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_PASSWORD_MASK, symbol } from './common.js';\n\nexport interface PasswordOptions extends CommonOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n\tclearOnError?: boolean;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst userInput = this.userInputWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? `${styleText('yellow', S_BAR_END)} ` : '';\n\t\t\t\t\tconst maskedText = masked ?? '';\n\t\t\t\t\tif (opts.clearOnError) {\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t}\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${maskedText}\\n${errorPrefixEnd}${styleText('yellow', this.error)}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText('dim', masked) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${maskedText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText(['strikethrough', 'dim'], masked) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${maskedText}${\n\t\t\t\t\t\tmasked && hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n","import { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { autocomplete } from './autocomplete.js';\nimport type { CommonOptions } from './common.js';\n\nexport interface PathOptions extends CommonOptions {\n\troot?: string;\n\tdirectory?: boolean;\n\tinitialValue?: string;\n\tmessage: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const path = (opts: PathOptions) => {\n\tconst validate = opts.validate;\n\n\treturn autocomplete({\n\t\t...opts,\n\t\tinitialUserInput: opts.initialValue ?? opts.root ?? process.cwd(),\n\t\tmaxItems: 5,\n\t\tvalidate(value) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\t// Shouldn't ever happen since we don't enable `multiple: true`\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (!value) {\n\t\t\t\treturn 'Please select a path';\n\t\t\t}\n\t\t\tif (validate) {\n\t\t\t\treturn validate(value);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\toptions() {\n\t\t\tconst userInput = this.userInput;\n\t\t\tif (userInput === '') {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tlet searchPath: string;\n\n\t\t\t\tif (!existsSync(userInput)) {\n\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t} else {\n\t\t\t\t\tconst stat = lstatSync(userInput);\n\t\t\t\t\tif (stat.isDirectory() && (!opts.directory || userInput.endsWith('/'))) {\n\t\t\t\t\t\tsearchPath = userInput;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Strip trailing slash so startsWith matches the directory itself among its siblings\n\t\t\t\tconst prefix =\n\t\t\t\t\tuserInput.length > 1 && userInput.endsWith('/') ? userInput.slice(0, -1) : userInput;\n\n\t\t\t\tconst items = readdirSync(searchPath)\n\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\tconst path = join(searchPath, item);\n\t\t\t\t\t\tconst stats = lstatSync(path);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: item,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tisDirectory: stats.isDirectory(),\n\t\t\t\t\t\t};\n\t\t\t\t\t})\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ path, isDirectory }) => path.startsWith(prefix) && (isDirectory || !opts.directory)\n\t\t\t\t\t);\n\n\t\t\t\treturn items.map((item) => ({\n\t\t\t\t\tvalue: item.path,\n\t\t\t\t}));\n\t\t\t} catch (_e) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t});\n};\n","import { styleText } from 'node:util';\nimport { block, getColumns, settings } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tS_BAR,\n\tS_STEP_CANCEL,\n\tS_STEP_ERROR,\n\tS_STEP_SUBMIT,\n\tunicode,\n} from './common.js';\n\nexport interface SpinnerOptions extends CommonOptions {\n\tindicator?: 'dots' | 'timer';\n\tonCancel?: () => void;\n\tcancelMessage?: string;\n\terrorMessage?: string;\n\tframes?: string[];\n\tdelay?: number;\n\tstyleFrame?: (frame: string) => string;\n}\n\nexport interface SpinnerResult {\n\tstart(msg?: string): void;\n\tstop(msg?: string): void;\n\tcancel(msg?: string): void;\n\terror(msg?: string): void;\n\tmessage(msg?: string): void;\n\tclear(): void;\n\treadonly isCancelled: boolean;\n}\n\nconst defaultStyleFn: SpinnerOptions['styleFrame'] = (frame) => styleText('magenta', frame);\n\nexport const spinner = ({\n\tindicator = 'dots',\n\tonCancel,\n\toutput = process.stdout,\n\tcancelMessage,\n\terrorMessage,\n\tframes = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'],\n\tdelay = unicode ? 80 : 120,\n\tsignal,\n\t...opts\n}: SpinnerOptions = {}): SpinnerResult => {\n\tconst isCI = isCIFn();\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet isCancelled = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined;\n\tlet _origin: number = performance.now();\n\tconst columns = getColumns(output);\n\tconst styleFn = opts?.styleFrame ?? defaultStyleFn;\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg =\n\t\t\tcode > 1\n\t\t\t\t? (errorMessage ?? settings.messages.error)\n\t\t\t\t: (cancelMessage ?? settings.messages.cancel);\n\t\tisCancelled = code === 1;\n\t\tif (isSpinnerActive) {\n\t\t\t_stop(msg, code);\n\t\t\tif (isCancelled && typeof onCancel === 'function') {\n\t\t\t\tonCancel();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.removeEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) output.write('\\n');\n\t\tconst wrapped = wrapAnsi(_prevMessage, columns, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t});\n\t\tconst prevLines = wrapped.split('\\n');\n\t\tif (prevLines.length > 1) {\n\t\t\toutput.write(cursor.up(prevLines.length - 1));\n\t\t}\n\t\toutput.write(cursor.to(0));\n\t\toutput.write(erase.down());\n\t};\n\n\tconst removeTrailingDots = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block({ output });\n\t\t_message = removeTrailingDots(msg);\n\t\t_origin = performance.now();\n\t\tif (hasGuide) {\n\t\t\toutput.write(`${styleText('gray', S_BAR)}\\n`);\n\t\t}\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = styleFn(frames[frameIndex]);\n\t\t\tlet outputMessage: string;\n\n\t\t\tif (isCI) {\n\t\t\t\toutputMessage = `${frame} ${_message}...`;\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\toutputMessage = `${frame} ${_message} ${formatTimer(_origin)}`;\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\toutputMessage = `${frame} ${_message}${loadingDots}`;\n\t\t\t}\n\n\t\t\tconst wrapped = wrapAnsi(outputMessage, columns, {\n\t\t\t\thard: true,\n\t\t\t\ttrim: false,\n\t\t\t});\n\t\t\toutput.write(wrapped);\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\t// indicator increase by 1 every 8 frames\n\t\t\tindicatorTimer = indicatorTimer < 4 ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst _stop = (msg = '', code = 0, silent: boolean = false): void => {\n\t\tif (!isSpinnerActive) return;\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? styleText('green', S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? styleText('red', S_STEP_CANCEL)\n\t\t\t\t\t: styleText('red', S_STEP_ERROR);\n\t\t_message = msg ?? _message;\n\t\tif (!silent) {\n\t\t\tif (indicator === 'timer') {\n\t\t\t\toutput.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t\t} else {\n\t\t\t\toutput.write(`${step} ${_message}\\n`);\n\t\t\t}\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst stop = (msg = ''): void => _stop(msg, 0);\n\tconst cancel = (msg = ''): void => _stop(msg, 1);\n\tconst error = (msg = ''): void => _stop(msg, 2);\n\t// TODO (43081j): this will leave the initial S_BAR since we purposely\n\t// don't erase that in `clearPrevMessage`. In future, we may want to treat\n\t// `clear` as a special case and remove the bar too.\n\tconst clear = (): void => _stop('', 0, true);\n\n\tconst message = (msg = ''): void => {\n\t\t_message = removeTrailingDots(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t\tcancel,\n\t\terror,\n\t\tclear,\n\t\tget isCancelled() {\n\t\t\treturn isCancelled;\n\t\t},\n\t};\n};\n","import { styleText } from 'node:util';\nimport { SelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t};\n\nexport interface SelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\tif (!label.includes('\\n')) {\n\t\treturn format(label);\n\t}\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' | 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'disabled':\n\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('gray', text))}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'selected':\n\t\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${computeLabel(label, (str) => styleText(['strikethrough', 'dim'], str))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = `${symbolBar(this.state)} `;\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst prefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline (or just trailing newline)\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: (item, active) =>\n\t\t\t\t\t\t\topt(item, item.disabled ? 'disabled' : active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${prefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { SelectKeyPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\nimport type { Option } from './select.js';\n\nexport interface SelectKeyOptions<Value extends string> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tcaseSensitive?: boolean;\n}\n\nexport const selectKey = <Value extends string>(opts: SelectKeyOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText(['bgCyan', 'gray'], ` ${option.value} `)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${styleText(['gray', 'bgWhite', 'inverse'], ` ${option.value} `)} ${label}${\n\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\tcaseSensitive: opts.caseSensitive,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst selectedOption =\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0];\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(selectedOption, 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[0], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst wrapped = this.options\n\t\t\t\t\t\t.map((option, i) =>\n\t\t\t\t\t\t\twrapTextWithPrefix(\n\t\t\t\t\t\t\t\topts.output,\n\t\t\t\t\t\t\t\topt(option, i === this.cursor ? 'active' : 'inactive'),\n\t\t\t\t\t\t\t\tdefaultPrefix\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${wrapped}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n","import { stripVTControlCharacters as strip, styleText } from 'node:util';\nimport { S_BAR, S_ERROR, S_INFO, S_STEP_SUBMIT, S_SUCCESS, S_WARN } from './common.js';\nimport type { LogMessageOptions } from './log.js';\n\nconst prefix = `${styleText('gray', S_BAR)} `;\n\n// TODO (43081j): this currently doesn't support custom `output` writables\n// because we rely on `columns` existing (i.e. `process.stdout.columns).\n//\n// If we want to support `output` being passed in, we will need to use\n// a condition like `if (output insance Writable)` to check if it has columns\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = styleText('gray', S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${styleText('gray', S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('red', S_ERROR) });\n\t},\n};\n","import type { CommonOptions } from './common.js';\nimport { spinner } from './spinner.js';\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[], opts?: CommonOptions) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner(opts);\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns } from '@clack/core';\nimport { erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tisTTY as isTTYFn,\n\tS_BAR,\n\tS_STEP_SUBMIT,\n} from './common.js';\nimport { log } from './log.js';\n\nexport interface TaskLogOptions extends CommonOptions {\n\ttitle: string;\n\tlimit?: number;\n\tspacing?: number;\n\tretainLog?: boolean;\n}\n\nexport interface TaskLogMessageOptions {\n\traw?: boolean;\n}\n\nexport interface TaskLogCompletionOptions {\n\tshowLog?: boolean;\n}\n\ninterface BufferEntry {\n\theader?: string;\n\tvalue: string;\n\tfull: string;\n\tresult?: {\n\t\tstatus: 'success' | 'error';\n\t\tmessage: string;\n\t};\n}\n\nconst stripDestructiveANSI = (input: string): string => {\n\t// biome-ignore lint/suspicious/noControlCharactersInRegex: intentional\n\treturn input.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, '');\n};\n\n/**\n * Renders a log which clears on success and remains on failure\n */\nexport const taskLog = (opts: TaskLogOptions) => {\n\tconst output: Writable = opts.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst secondarySymbol = styleText('gray', S_BAR);\n\tconst spacing = opts.spacing ?? 1;\n\tconst barSize = 3;\n\tconst retainLog = opts.retainLog === true;\n\tconst isTTY = !isCIFn() && isTTYFn(output);\n\n\toutput.write(`${secondarySymbol}\\n`);\n\toutput.write(`${styleText('green', S_STEP_SUBMIT)} ${opts.title}\\n`);\n\tfor (let i = 0; i < spacing; i++) {\n\t\toutput.write(`${secondarySymbol}\\n`);\n\t}\n\n\tconst buffers: BufferEntry[] = [\n\t\t{\n\t\t\tvalue: '',\n\t\t\tfull: '',\n\t\t},\n\t];\n\tlet lastMessageWasRaw = false;\n\n\tconst clear = (clearTitle: boolean): void => {\n\t\tif (buffers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet lines = 0;\n\n\t\tif (clearTitle) {\n\t\t\tlines += spacing + 2;\n\t\t}\n\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { value, result } = buffer;\n\t\t\tlet text = result?.message ?? value;\n\n\t\t\tif (text.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (result === undefined && buffer.header !== undefined && buffer.header !== '') {\n\t\t\t\ttext += `\\n${buffer.header}`;\n\t\t\t}\n\n\t\t\tconst bufferHeight = text.split('\\n').reduce((count, line) => {\n\t\t\t\tif (line === '') {\n\t\t\t\t\treturn count + 1;\n\t\t\t\t}\n\t\t\t\treturn count + Math.ceil((line.length + barSize) / columns);\n\t\t\t}, 0);\n\n\t\t\tlines += bufferHeight;\n\t\t}\n\n\t\tif (lines > 0) {\n\t\t\tlines += 1;\n\t\t\toutput.write(erase.lines(lines));\n\t\t}\n\t};\n\tconst printBuffer = (buffer: BufferEntry, messageSpacing?: number, full?: boolean): void => {\n\t\tconst messages = full ? `${buffer.full}\\n${buffer.value}` : buffer.value;\n\t\tif (buffer.header !== undefined && buffer.header !== '') {\n\t\t\tlog.message(\n\t\t\t\tbuffer.header.split('\\n').map((line) => styleText('bold', line)),\n\t\t\t\t{\n\t\t\t\t\toutput,\n\t\t\t\t\tsecondarySymbol,\n\t\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\t\tspacing: 0,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tlog.message(\n\t\t\tmessages.split('\\n').map((line) => styleText('dim', line)),\n\t\t\t{\n\t\t\t\toutput,\n\t\t\t\tsecondarySymbol,\n\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\tspacing: messageSpacing ?? spacing,\n\t\t\t}\n\t\t);\n\t};\n\tconst renderBuffer = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { header, value, full } = buffer;\n\t\t\tif ((header === undefined || header.length === 0) && value.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprintBuffer(buffer, undefined, retainLog === true && full.length > 0);\n\t\t}\n\t};\n\tconst message = (buffer: BufferEntry, msg: string, mopts?: TaskLogMessageOptions) => {\n\t\tclear(false);\n\t\tif ((mopts?.raw !== true || !lastMessageWasRaw) && buffer.value !== '') {\n\t\t\tbuffer.value += '\\n';\n\t\t}\n\t\tbuffer.value += stripDestructiveANSI(msg);\n\t\tlastMessageWasRaw = mopts?.raw === true;\n\t\tif (opts.limit !== undefined) {\n\t\t\tconst lines = buffer.value.split('\\n');\n\t\t\tconst linesToRemove = lines.length - opts.limit;\n\t\t\tif (linesToRemove > 0) {\n\t\t\t\tconst removedLines = lines.splice(0, linesToRemove);\n\t\t\t\tif (retainLog) {\n\t\t\t\t\tbuffer.full += (buffer.full === '' ? '' : '\\n') + removedLines.join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer.value = lines.join('\\n');\n\t\t}\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\tconst printBuffers = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tif (buffer.result) {\n\t\t\t\tif (buffer.result.status === 'error') {\n\t\t\t\t\tlog.error(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t} else {\n\t\t\t\t\tlog.success(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t}\n\t\t\t} else if (buffer.value !== '') {\n\t\t\t\tprintBuffer(buffer, 0);\n\t\t\t}\n\t\t}\n\t};\n\tconst completeBuffer = (buffer: BufferEntry, result: BufferEntry['result']): void => {\n\t\tclear(false);\n\n\t\tbuffer.result = result;\n\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\n\treturn {\n\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\tmessage(buffers[0], msg, mopts);\n\t\t},\n\t\tgroup(name: string) {\n\t\t\tconst buffer: BufferEntry = {\n\t\t\t\theader: name,\n\t\t\t\tvalue: '',\n\t\t\t\tfull: '',\n\t\t\t};\n\t\t\tbuffers.push(buffer);\n\t\t\treturn {\n\t\t\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\t\t\tmessage(buffer, msg, mopts);\n\t\t\t\t},\n\t\t\t\terror(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsuccess(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'success',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\terror(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.error(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog !== false) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since error is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t\tsuccess(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.success(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog === true) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since success is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t};\n};\n","import { styleText } from 'node:util';\nimport { settings, TextPrompt } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport interface TextOptions extends CommonOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\toutput: opts.output,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\trender() {\n\t\t\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? styleText('inverse', opts.placeholder[0]) + styleText('dim', opts.placeholder.slice(1))\n\t\t\t\t: styleText(['inverse', 'hidden'], '_');\n\t\t\tconst userInput = !this.userInput ? placeholder : this.userInputWithCursor;\n\t\t\tconst value = this.value ?? '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${userInput}\\n${errorPrefixEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${valueText}${value.trim() ? `\\n${cancelPrefix}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n","import { findCursor } from '../utils/cursor.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\ninterface OptionLike {\n\tvalue: any;\n\tdisabled?: boolean;\n}\n\nexport interface MultiSelectOptions<T extends OptionLike>\n\textends PromptOptions<T['value'][], MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends OptionLike> extends Prompt<T['value'][]> {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value(): T['value'] {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate get _enabledOptions(): T[] {\n\t\treturn this.options.filter((option) => option.disabled !== true);\n\t}\n\n\tprivate toggleAll() {\n\t\tconst enabledOptions = this._enabledOptions;\n\t\tconst allSelected = this.value !== undefined && this.value.length === enabledOptions.length;\n\t\tthis.value = allSelected ? [] : enabledOptions.map((v) => v.value);\n\t}\n\n\tprivate toggleInvert() {\n\t\tconst value = this.value;\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\t\tconst notSelected = this._enabledOptions.filter((v) => !value.includes(v.value));\n\t\tthis.value = notSelected.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tif (this.value === undefined) {\n\t\t\tthis.value = [];\n\t\t}\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tconst cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.cursor = this.options[cursor].disabled ? findCursor<T>(cursor, 1, this.options) : cursor;\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t\tif (char === 'i') {\n\t\t\t\tthis.toggleInvert();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, -1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, 1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","export function keysOf(value) {\n return Object.keys(value);\n}\n","import { keysOf } from './utilities.js';\nconst typedArrayTypeNames = [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array',\n];\nfunction isTypedArrayName(name) {\n return typedArrayTypeNames.includes(name);\n}\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Blob',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'WeakRef',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'FormData',\n 'URLSearchParams',\n 'HTMLElement',\n 'NaN',\n ...typedArrayTypeNames,\n];\nfunction isObjectTypeName(name) {\n return objectTypeNames.includes(name);\n}\nconst primitiveTypeNames = [\n 'null',\n 'undefined',\n 'string',\n 'number',\n 'bigint',\n 'boolean',\n 'symbol',\n];\nfunction isPrimitiveTypeName(name) {\n return primitiveTypeNames.includes(name);\n}\nconst assertionTypeDescriptions = [\n 'positive number',\n 'negative number',\n 'Class',\n 'string with a number',\n 'null or undefined',\n 'Iterable',\n 'AsyncIterable',\n 'native Promise',\n 'EnumCase',\n 'string with a URL',\n 'truthy',\n 'falsy',\n 'primitive',\n 'integer',\n 'plain object',\n 'TypedArray',\n 'array-like',\n 'tuple-like',\n 'Node.js Stream',\n 'infinite number',\n 'empty array',\n 'non-empty array',\n 'empty string',\n 'empty string or whitespace',\n 'non-empty string',\n 'non-empty string and not whitespace',\n 'empty object',\n 'non-empty object',\n 'empty set',\n 'non-empty set',\n 'empty map',\n 'non-empty map',\n 'PropertyKey',\n 'even integer',\n 'odd integer',\n 'T',\n 'in range',\n 'predicate returns truthy for any value',\n 'predicate returns truthy for all values',\n 'valid Date',\n 'valid length',\n 'whitespace string',\n ...objectTypeNames,\n ...primitiveTypeNames,\n];\nconst getObjectType = (value) => {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n if (/HTML\\w+Element/.test(objectTypeName) && isHtmlElement(value)) {\n return 'HTMLElement';\n }\n if (isObjectTypeName(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n};\nfunction detect(value) {\n if (value === null) {\n return 'null';\n }\n switch (typeof value) {\n case 'undefined': {\n return 'undefined';\n }\n case 'string': {\n return 'string';\n }\n case 'number': {\n return Number.isNaN(value) ? 'NaN' : 'number';\n }\n case 'boolean': {\n return 'boolean';\n }\n case 'function': {\n return 'Function';\n }\n case 'bigint': {\n return 'bigint';\n }\n case 'symbol': {\n return 'symbol';\n }\n default:\n }\n if (isObservable(value)) {\n return 'Observable';\n }\n if (isArray(value)) {\n return 'Array';\n }\n if (isBuffer(value)) {\n return 'Buffer';\n }\n const tagType = getObjectType(value);\n if (tagType && tagType !== 'Object') {\n return tagType;\n }\n if (hasPromiseApi(value)) {\n return 'Promise';\n }\n if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n throw new TypeError('Please don\\'t use object wrappers for primitive types');\n }\n return 'Object';\n}\nfunction hasPromiseApi(value) {\n return isFunction(value?.then) && isFunction(value?.catch);\n}\nconst is = Object.assign(detect, {\n all: isAll,\n any: isAny,\n array: isArray,\n arrayBuffer: isArrayBuffer,\n arrayLike: isArrayLike,\n asyncFunction: isAsyncFunction,\n asyncGenerator: isAsyncGenerator,\n asyncGeneratorFunction: isAsyncGeneratorFunction,\n asyncIterable: isAsyncIterable,\n bigint: isBigint,\n bigInt64Array: isBigInt64Array,\n bigUint64Array: isBigUint64Array,\n blob: isBlob,\n boolean: isBoolean,\n boundFunction: isBoundFunction,\n buffer: isBuffer,\n class: isClass,\n dataView: isDataView,\n date: isDate,\n detect,\n directInstanceOf: isDirectInstanceOf,\n emptyArray: isEmptyArray,\n emptyMap: isEmptyMap,\n emptyObject: isEmptyObject,\n emptySet: isEmptySet,\n emptyString: isEmptyString,\n emptyStringOrWhitespace: isEmptyStringOrWhitespace,\n enumCase: isEnumCase,\n error: isError,\n evenInteger: isEvenInteger,\n falsy: isFalsy,\n float32Array: isFloat32Array,\n float64Array: isFloat64Array,\n formData: isFormData,\n function: isFunction,\n generator: isGenerator,\n generatorFunction: isGeneratorFunction,\n htmlElement: isHtmlElement,\n infinite: isInfinite,\n inRange: isInRange,\n int16Array: isInt16Array,\n int32Array: isInt32Array,\n int8Array: isInt8Array,\n integer: isInteger,\n iterable: isIterable,\n map: isMap,\n nan: isNan,\n nativePromise: isNativePromise,\n negativeNumber: isNegativeNumber,\n nodeStream: isNodeStream,\n nonEmptyArray: isNonEmptyArray,\n nonEmptyMap: isNonEmptyMap,\n nonEmptyObject: isNonEmptyObject,\n nonEmptySet: isNonEmptySet,\n nonEmptyString: isNonEmptyString,\n nonEmptyStringAndNotWhitespace: isNonEmptyStringAndNotWhitespace,\n null: isNull,\n nullOrUndefined: isNullOrUndefined,\n number: isNumber,\n numericString: isNumericString,\n object: isObject,\n observable: isObservable,\n oddInteger: isOddInteger,\n plainObject: isPlainObject,\n positiveNumber: isPositiveNumber,\n primitive: isPrimitive,\n promise: isPromise,\n propertyKey: isPropertyKey,\n regExp: isRegExp,\n safeInteger: isSafeInteger,\n set: isSet,\n sharedArrayBuffer: isSharedArrayBuffer,\n string: isString,\n symbol: isSymbol,\n truthy: isTruthy,\n tupleLike: isTupleLike,\n typedArray: isTypedArray,\n uint16Array: isUint16Array,\n uint32Array: isUint32Array,\n uint8Array: isUint8Array,\n uint8ClampedArray: isUint8ClampedArray,\n undefined: isUndefined,\n urlInstance: isUrlInstance,\n urlSearchParams: isUrlSearchParams,\n urlString: isUrlString,\n optional: isOptional,\n validDate: isValidDate,\n validLength: isValidLength,\n weakMap: isWeakMap,\n weakRef: isWeakRef,\n weakSet: isWeakSet,\n whitespaceString: isWhitespaceString,\n});\nfunction isAbsoluteModule2(remainder) {\n return (value) => isInteger(value) && Math.abs(value % 2) === remainder;\n}\nfunction validatePredicateArray(predicateArray, allowEmpty) {\n if (predicateArray.length === 0) {\n if (allowEmpty) {\n // Next major release: throw for empty predicate arrays to avoid vacuous results.\n // throw new TypeError('Invalid predicate array');\n }\n else {\n throw new TypeError('Invalid predicate array');\n }\n return;\n }\n for (const predicate of predicateArray) {\n if (!isFunction(predicate)) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n }\n}\nexport function isAll(predicate, ...values) {\n if (Array.isArray(predicate)) {\n const predicateArray = predicate;\n validatePredicateArray(predicateArray, values.length === 0);\n const combinedPredicate = (value) => predicateArray.every(singlePredicate => singlePredicate(value));\n if (values.length === 0) {\n return combinedPredicate;\n }\n return predicateOnArray(Array.prototype.every, combinedPredicate, values);\n }\n return predicateOnArray(Array.prototype.every, predicate, values);\n}\nexport function isAny(predicate, ...values) {\n if (Array.isArray(predicate)) {\n const predicateArray = predicate;\n validatePredicateArray(predicateArray, values.length === 0);\n const combinedPredicate = (value) => predicateArray.some(singlePredicate => singlePredicate(value));\n if (values.length === 0) {\n return combinedPredicate;\n }\n return predicateOnArray(Array.prototype.some, combinedPredicate, values);\n }\n return predicateOnArray(Array.prototype.some, predicate, values);\n}\nexport function isOptional(value, predicate) {\n return isUndefined(value) || predicate(value);\n}\nexport function isArray(value, assertion) {\n if (!Array.isArray(value)) {\n return false;\n }\n if (!isFunction(assertion)) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return value.every(element => assertion(element));\n}\nexport function isArrayBuffer(value) {\n return getObjectType(value) === 'ArrayBuffer';\n}\nexport function isArrayLike(value) {\n return !isNullOrUndefined(value) && !isFunction(value) && isValidLength(value.length);\n}\nexport function isAsyncFunction(value) {\n return getObjectType(value) === 'AsyncFunction';\n}\nexport function isAsyncGenerator(value) {\n return isAsyncIterable(value) && isFunction(value.next) && isFunction(value.throw);\n}\nexport function isAsyncGeneratorFunction(value) {\n return getObjectType(value) === 'AsyncGeneratorFunction';\n}\nexport function isAsyncIterable(value) {\n return isFunction(value?.[Symbol.asyncIterator]);\n}\nexport function isBigint(value) {\n return typeof value === 'bigint';\n}\nexport function isBigInt64Array(value) {\n return getObjectType(value) === 'BigInt64Array';\n}\nexport function isBigUint64Array(value) {\n return getObjectType(value) === 'BigUint64Array';\n}\nexport function isBlob(value) {\n return getObjectType(value) === 'Blob';\n}\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isBoundFunction(value) {\n return isFunction(value) && !Object.hasOwn(value, 'prototype');\n}\n/**\nNote: [Prefer using `Uint8Array` instead of `Buffer`.](https://sindresorhus.com/blog/goodbye-nodejs-buffer)\n*/\nexport function isBuffer(value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return value?.constructor?.isBuffer?.(value) ?? false;\n}\nexport function isClass(value) {\n return isFunction(value) && /^class(\\s+|{)/.test(value.toString());\n}\nexport function isDataView(value) {\n return getObjectType(value) === 'DataView';\n}\nexport function isDate(value) {\n return getObjectType(value) === 'Date';\n}\nexport function isDirectInstanceOf(instance, class_) {\n if (instance === undefined || instance === null) {\n return false;\n }\n return Object.getPrototypeOf(instance) === class_.prototype;\n}\nexport function isEmptyArray(value) {\n return isArray(value) && value.length === 0;\n}\nexport function isEmptyMap(value) {\n return isMap(value) && value.size === 0;\n}\nexport function isEmptyObject(value) {\n return isObject(value) && !isMap(value) && !isSet(value) && Object.keys(value).length === 0;\n}\nexport function isEmptySet(value) {\n return isSet(value) && value.size === 0;\n}\nexport function isEmptyString(value) {\n return isString(value) && value.length === 0;\n}\nexport function isEmptyStringOrWhitespace(value) {\n return isEmptyString(value) || isWhitespaceString(value);\n}\nexport function isEnumCase(value, targetEnum) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return Object.values(targetEnum).includes(value);\n}\nexport function isError(value) {\n // TODO: Use `Error.isError` when targeting Node.js 24.`\n return getObjectType(value) === 'Error';\n}\nexport function isEvenInteger(value) {\n return isAbsoluteModule2(0)(value);\n}\n// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`\nexport function isFalsy(value) {\n return !value;\n}\n// TODO: Support detecting Float16Array when targeting Node.js 24.\nexport function isFloat32Array(value) {\n return getObjectType(value) === 'Float32Array';\n}\nexport function isFloat64Array(value) {\n return getObjectType(value) === 'Float64Array';\n}\nexport function isFormData(value) {\n return getObjectType(value) === 'FormData';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isGenerator(value) {\n return isIterable(value) && isFunction(value?.next) && isFunction(value?.throw);\n}\nexport function isGeneratorFunction(value) {\n return getObjectType(value) === 'GeneratorFunction';\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst NODE_TYPE_ELEMENT = 1;\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst DOM_PROPERTIES_TO_CHECK = [\n 'innerHTML',\n 'ownerDocument',\n 'style',\n 'attributes',\n 'nodeValue',\n];\nexport function isHtmlElement(value) {\n return isObject(value)\n && value.nodeType === NODE_TYPE_ELEMENT\n && isString(value.nodeName)\n && !isPlainObject(value)\n && DOM_PROPERTIES_TO_CHECK.every(property => property in value);\n}\nexport function isInfinite(value) {\n return value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;\n}\nexport function isInRange(value, range) {\n if (isNumber(range)) {\n return value >= Math.min(0, range) && value <= Math.max(range, 0);\n }\n if (isArray(range) && range.length === 2) {\n return value >= Math.min(...range) && value <= Math.max(...range);\n }\n throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);\n}\nexport function isInt16Array(value) {\n return getObjectType(value) === 'Int16Array';\n}\nexport function isInt32Array(value) {\n return getObjectType(value) === 'Int32Array';\n}\nexport function isInt8Array(value) {\n return getObjectType(value) === 'Int8Array';\n}\nexport function isInteger(value) {\n return Number.isInteger(value);\n}\nexport function isIterable(value) {\n return isFunction(value?.[Symbol.iterator]);\n}\nexport function isMap(value) {\n return getObjectType(value) === 'Map';\n}\nexport function isNan(value) {\n return Number.isNaN(value);\n}\nexport function isNativePromise(value) {\n return getObjectType(value) === 'Promise';\n}\nexport function isNegativeNumber(value) {\n return isNumber(value) && value < 0;\n}\nexport function isNodeStream(value) {\n return isObject(value) && isFunction(value.pipe) && !isObservable(value);\n}\nexport function isNonEmptyArray(value) {\n return isArray(value) && value.length > 0;\n}\nexport function isNonEmptyMap(value) {\n return isMap(value) && value.size > 0;\n}\n// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:\n// - https://github.com/Microsoft/TypeScript/pull/29317\nexport function isNonEmptyObject(value) {\n return isObject(value) && !isMap(value) && !isSet(value) && Object.keys(value).length > 0;\n}\nexport function isNonEmptySet(value) {\n return isSet(value) && value.size > 0;\n}\n// TODO: Use `not ''` when the `not` operator is available.\nexport function isNonEmptyString(value) {\n return isString(value) && value.length > 0;\n}\n// TODO: Use `not ''` when the `not` operator is available.\nexport function isNonEmptyStringAndNotWhitespace(value) {\n return isString(value) && !isEmptyStringOrWhitespace(value);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNull(value) {\n return value === null;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNullOrUndefined(value) {\n return isNull(value) || isUndefined(value);\n}\nexport function isNumber(value) {\n return typeof value === 'number' && !Number.isNaN(value);\n}\nexport function isNumericString(value) {\n return isString(value) && !isEmptyStringOrWhitespace(value) && !Number.isNaN(Number(value));\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isObject(value) {\n return !isNull(value) && (typeof value === 'object' || isFunction(value));\n}\nexport function isObservable(value) {\n if (!value) {\n return false;\n }\n // eslint-disable-next-line no-use-extend-native/no-use-extend-native, @typescript-eslint/no-unsafe-call\n if (Symbol.observable !== undefined && value === value[Symbol.observable]?.()) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (value === value['@@observable']?.()) {\n return true;\n }\n return false;\n}\nexport function isOddInteger(value) {\n return isAbsoluteModule2(1)(value);\n}\nexport function isPlainObject(value) {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\nexport function isPositiveNumber(value) {\n return isNumber(value) && value > 0;\n}\nexport function isPrimitive(value) {\n return isNull(value) || isPrimitiveTypeName(typeof value);\n}\nexport function isPromise(value) {\n return isNativePromise(value) || hasPromiseApi(value);\n}\n// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)\nexport function isPropertyKey(value) {\n return isAny([isString, isNumber, isSymbol], value);\n}\nexport function isRegExp(value) {\n return getObjectType(value) === 'RegExp';\n}\nexport function isSafeInteger(value) {\n return Number.isSafeInteger(value);\n}\nexport function isSet(value) {\n return getObjectType(value) === 'Set';\n}\nexport function isSharedArrayBuffer(value) {\n return getObjectType(value) === 'SharedArrayBuffer';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isSymbol(value) {\n return typeof value === 'symbol';\n}\n// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`\n// eslint-disable-next-line unicorn/prefer-native-coercion-functions\nexport function isTruthy(value) {\n return Boolean(value);\n}\nexport function isTupleLike(value, guards) {\n if (isArray(guards) && isArray(value) && guards.length === value.length) {\n return guards.every((guard, index) => guard(value[index]));\n }\n return false;\n}\nexport function isTypedArray(value) {\n return isTypedArrayName(getObjectType(value));\n}\nexport function isUint16Array(value) {\n return getObjectType(value) === 'Uint16Array';\n}\nexport function isUint32Array(value) {\n return getObjectType(value) === 'Uint32Array';\n}\nexport function isUint8Array(value) {\n return getObjectType(value) === 'Uint8Array';\n}\nexport function isUint8ClampedArray(value) {\n return getObjectType(value) === 'Uint8ClampedArray';\n}\nexport function isUndefined(value) {\n return value === undefined;\n}\nexport function isUrlInstance(value) {\n return getObjectType(value) === 'URL';\n}\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport function isUrlSearchParams(value) {\n return getObjectType(value) === 'URLSearchParams';\n}\nexport function isUrlString(value) {\n if (!isString(value)) {\n return false;\n }\n try {\n new URL(value); // eslint-disable-line no-new\n return true;\n }\n catch {\n return false;\n }\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNan(Number(value));\n}\nexport function isValidLength(value) {\n return isSafeInteger(value) && value >= 0;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isWeakMap(value) {\n return getObjectType(value) === 'WeakMap';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations\nexport function isWeakRef(value) {\n return getObjectType(value) === 'WeakRef';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isWeakSet(value) {\n return getObjectType(value) === 'WeakSet';\n}\nexport function isWhitespaceString(value) {\n return isString(value) && /^\\s+$/.test(value);\n}\nfunction predicateOnArray(method, predicate, values) {\n if (!isFunction(predicate)) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n return method.call(values, predicate);\n}\nfunction typeErrorMessage(description, value) {\n return `Expected value which is \\`${description}\\`, received value of type \\`${is(value)}\\`.`;\n}\nfunction unique(values) {\n // eslint-disable-next-line unicorn/prefer-spread\n return Array.from(new Set(values));\n}\nconst andFormatter = new Intl.ListFormat('en', { style: 'long', type: 'conjunction' });\nconst orFormatter = new Intl.ListFormat('en', { style: 'long', type: 'disjunction' });\nfunction typeErrorMessageMultipleValues(expectedType, values) {\n const uniqueExpectedTypes = unique((isArray(expectedType) ? expectedType : [expectedType]).map(value => `\\`${value}\\``));\n const uniqueValueTypes = unique(values.map(value => `\\`${is(value)}\\``));\n return `Expected values which are ${orFormatter.format(uniqueExpectedTypes)}. Received values of type${uniqueValueTypes.length > 1 ? 's' : ''} ${andFormatter.format(uniqueValueTypes)}.`;\n}\nexport const assert = {\n all: assertAll,\n any: assertAny,\n optional: assertOptional,\n array: assertArray,\n arrayBuffer: assertArrayBuffer,\n arrayLike: assertArrayLike,\n asyncFunction: assertAsyncFunction,\n asyncGenerator: assertAsyncGenerator,\n asyncGeneratorFunction: assertAsyncGeneratorFunction,\n asyncIterable: assertAsyncIterable,\n bigint: assertBigint,\n bigInt64Array: assertBigInt64Array,\n bigUint64Array: assertBigUint64Array,\n blob: assertBlob,\n boolean: assertBoolean,\n boundFunction: assertBoundFunction,\n buffer: assertBuffer,\n class: assertClass,\n dataView: assertDataView,\n date: assertDate,\n directInstanceOf: assertDirectInstanceOf,\n emptyArray: assertEmptyArray,\n emptyMap: assertEmptyMap,\n emptyObject: assertEmptyObject,\n emptySet: assertEmptySet,\n emptyString: assertEmptyString,\n emptyStringOrWhitespace: assertEmptyStringOrWhitespace,\n enumCase: assertEnumCase,\n error: assertError,\n evenInteger: assertEvenInteger,\n falsy: assertFalsy,\n float32Array: assertFloat32Array,\n float64Array: assertFloat64Array,\n formData: assertFormData,\n function: assertFunction,\n generator: assertGenerator,\n generatorFunction: assertGeneratorFunction,\n htmlElement: assertHtmlElement,\n infinite: assertInfinite,\n inRange: assertInRange,\n int16Array: assertInt16Array,\n int32Array: assertInt32Array,\n int8Array: assertInt8Array,\n integer: assertInteger,\n iterable: assertIterable,\n map: assertMap,\n nan: assertNan,\n nativePromise: assertNativePromise,\n negativeNumber: assertNegativeNumber,\n nodeStream: assertNodeStream,\n nonEmptyArray: assertNonEmptyArray,\n nonEmptyMap: assertNonEmptyMap,\n nonEmptyObject: assertNonEmptyObject,\n nonEmptySet: assertNonEmptySet,\n nonEmptyString: assertNonEmptyString,\n nonEmptyStringAndNotWhitespace: assertNonEmptyStringAndNotWhitespace,\n null: assertNull,\n nullOrUndefined: assertNullOrUndefined,\n number: assertNumber,\n numericString: assertNumericString,\n object: assertObject,\n observable: assertObservable,\n oddInteger: assertOddInteger,\n plainObject: assertPlainObject,\n positiveNumber: assertPositiveNumber,\n primitive: assertPrimitive,\n promise: assertPromise,\n propertyKey: assertPropertyKey,\n regExp: assertRegExp,\n safeInteger: assertSafeInteger,\n set: assertSet,\n sharedArrayBuffer: assertSharedArrayBuffer,\n string: assertString,\n symbol: assertSymbol,\n truthy: assertTruthy,\n tupleLike: assertTupleLike,\n typedArray: assertTypedArray,\n uint16Array: assertUint16Array,\n uint32Array: assertUint32Array,\n uint8Array: assertUint8Array,\n uint8ClampedArray: assertUint8ClampedArray,\n undefined: assertUndefined,\n urlInstance: assertUrlInstance,\n urlSearchParams: assertUrlSearchParams,\n urlString: assertUrlString,\n validDate: assertValidDate,\n validLength: assertValidLength,\n weakMap: assertWeakMap,\n weakRef: assertWeakRef,\n weakSet: assertWeakSet,\n whitespaceString: assertWhitespaceString,\n};\nconst methodTypeMap = {\n isArray: 'Array',\n isArrayBuffer: 'ArrayBuffer',\n isArrayLike: 'array-like',\n isAsyncFunction: 'AsyncFunction',\n isAsyncGenerator: 'AsyncGenerator',\n isAsyncGeneratorFunction: 'AsyncGeneratorFunction',\n isAsyncIterable: 'AsyncIterable',\n isBigint: 'bigint',\n isBigInt64Array: 'BigInt64Array',\n isBigUint64Array: 'BigUint64Array',\n isBlob: 'Blob',\n isBoolean: 'boolean',\n isBoundFunction: 'Function',\n isBuffer: 'Buffer',\n isClass: 'Class',\n isDataView: 'DataView',\n isDate: 'Date',\n isDirectInstanceOf: 'T',\n isEmptyArray: 'empty array',\n isEmptyMap: 'empty map',\n isEmptyObject: 'empty object',\n isEmptySet: 'empty set',\n isEmptyString: 'empty string',\n isEmptyStringOrWhitespace: 'empty string or whitespace',\n isEnumCase: 'EnumCase',\n isError: 'Error',\n isEvenInteger: 'even integer',\n isFalsy: 'falsy',\n isFloat32Array: 'Float32Array',\n isFloat64Array: 'Float64Array',\n isFormData: 'FormData',\n isFunction: 'Function',\n isGenerator: 'Generator',\n isGeneratorFunction: 'GeneratorFunction',\n isHtmlElement: 'HTMLElement',\n isInfinite: 'infinite number',\n isInRange: 'in range',\n isInt16Array: 'Int16Array',\n isInt32Array: 'Int32Array',\n isInt8Array: 'Int8Array',\n isInteger: 'integer',\n isIterable: 'Iterable',\n isMap: 'Map',\n isNan: 'NaN',\n isNativePromise: 'native Promise',\n isNegativeNumber: 'negative number',\n isNodeStream: 'Node.js Stream',\n isNonEmptyArray: 'non-empty array',\n isNonEmptyMap: 'non-empty map',\n isNonEmptyObject: 'non-empty object',\n isNonEmptySet: 'non-empty set',\n isNonEmptyString: 'non-empty string',\n isNonEmptyStringAndNotWhitespace: 'non-empty string and not whitespace',\n isNull: 'null',\n isNullOrUndefined: 'null or undefined',\n isNumber: 'number',\n isNumericString: 'string with a number',\n isObject: 'Object',\n isObservable: 'Observable',\n isOddInteger: 'odd integer',\n isPlainObject: 'plain object',\n isPositiveNumber: 'positive number',\n isPrimitive: 'primitive',\n isPromise: 'Promise',\n isPropertyKey: 'PropertyKey',\n isRegExp: 'RegExp',\n isSafeInteger: 'integer',\n isSet: 'Set',\n isSharedArrayBuffer: 'SharedArrayBuffer',\n isString: 'string',\n isSymbol: 'symbol',\n isTruthy: 'truthy',\n isTupleLike: 'tuple-like',\n isTypedArray: 'TypedArray',\n isUint16Array: 'Uint16Array',\n isUint32Array: 'Uint32Array',\n isUint8Array: 'Uint8Array',\n isUint8ClampedArray: 'Uint8ClampedArray',\n isUndefined: 'undefined',\n isUrlInstance: 'URL',\n isUrlSearchParams: 'URLSearchParams',\n isUrlString: 'string with a URL',\n isValidDate: 'valid Date',\n isValidLength: 'valid length',\n isWeakMap: 'WeakMap',\n isWeakRef: 'WeakRef',\n isWeakSet: 'WeakSet',\n isWhitespaceString: 'whitespace string',\n};\nconst isMethodNames = keysOf(methodTypeMap);\nfunction isIsMethodName(value) {\n return isMethodNames.includes(value);\n}\nexport function assertAll(predicate, ...values) {\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n if (!isAll(predicate, ...values)) {\n const predicateFunction = predicate;\n const expectedType = !Array.isArray(predicate) && isIsMethodName(predicateFunction.name) ? methodTypeMap[predicateFunction.name] : 'predicate returns truthy for all values';\n throw new TypeError(typeErrorMessageMultipleValues(expectedType, values));\n }\n}\nexport function assertAny(predicate, ...values) {\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n if (!isAny(predicate, ...values)) {\n const predicates = Array.isArray(predicate) ? predicate : [predicate];\n const expectedTypes = predicates.map(singlePredicate => isIsMethodName(singlePredicate.name) ? methodTypeMap[singlePredicate.name] : 'predicate returns truthy for any value');\n throw new TypeError(typeErrorMessageMultipleValues(expectedTypes, values));\n }\n}\nexport function assertOptional(value, assertion, message) {\n if (!isUndefined(value)) {\n assertion(value, message);\n }\n}\nexport function assertArray(value, assertion, message) {\n if (!isArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('Array', value));\n }\n if (assertion) {\n for (const element of value) {\n // @ts-expect-error: \"Assertions require every name in the call target to be declared with an explicit type annotation.\"\n assertion(element, message);\n }\n }\n}\nexport function assertArrayBuffer(value, message) {\n if (!isArrayBuffer(value)) {\n throw new TypeError(message ?? typeErrorMessage('ArrayBuffer', value));\n }\n}\nexport function assertArrayLike(value, message) {\n if (!isArrayLike(value)) {\n throw new TypeError(message ?? typeErrorMessage('array-like', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertAsyncFunction(value, message) {\n if (!isAsyncFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncFunction', value));\n }\n}\nexport function assertAsyncGenerator(value, message) {\n if (!isAsyncGenerator(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncGenerator', value));\n }\n}\nexport function assertAsyncGeneratorFunction(value, message) {\n if (!isAsyncGeneratorFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncGeneratorFunction', value));\n }\n}\nexport function assertAsyncIterable(value, message) {\n if (!isAsyncIterable(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncIterable', value));\n }\n}\nexport function assertBigint(value, message) {\n if (!isBigint(value)) {\n throw new TypeError(message ?? typeErrorMessage('bigint', value));\n }\n}\nexport function assertBigInt64Array(value, message) {\n if (!isBigInt64Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('BigInt64Array', value));\n }\n}\nexport function assertBigUint64Array(value, message) {\n if (!isBigUint64Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('BigUint64Array', value));\n }\n}\nexport function assertBlob(value, message) {\n if (!isBlob(value)) {\n throw new TypeError(message ?? typeErrorMessage('Blob', value));\n }\n}\nexport function assertBoolean(value, message) {\n if (!isBoolean(value)) {\n throw new TypeError(message ?? typeErrorMessage('boolean', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertBoundFunction(value, message) {\n if (!isBoundFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('Function', value));\n }\n}\n/**\nNote: [Prefer using `Uint8Array` instead of `Buffer`.](https://sindresorhus.com/blog/goodbye-nodejs-buffer)\n*/\nexport function assertBuffer(value, message) {\n if (!isBuffer(value)) {\n throw new TypeError(message ?? typeErrorMessage('Buffer', value));\n }\n}\nexport function assertClass(value, message) {\n if (!isClass(value)) {\n throw new TypeError(message ?? typeErrorMessage('Class', value));\n }\n}\nexport function assertDataView(value, message) {\n if (!isDataView(value)) {\n throw new TypeError(message ?? typeErrorMessage('DataView', value));\n }\n}\nexport function assertDate(value, message) {\n if (!isDate(value)) {\n throw new TypeError(message ?? typeErrorMessage('Date', value));\n }\n}\nexport function assertDirectInstanceOf(instance, class_, message) {\n if (!isDirectInstanceOf(instance, class_)) {\n throw new TypeError(message ?? typeErrorMessage('T', instance));\n }\n}\nexport function assertEmptyArray(value, message) {\n if (!isEmptyArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty array', value));\n }\n}\nexport function assertEmptyMap(value, message) {\n if (!isEmptyMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty map', value));\n }\n}\nexport function assertEmptyObject(value, message) {\n if (!isEmptyObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty object', value));\n }\n}\nexport function assertEmptySet(value, message) {\n if (!isEmptySet(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty set', value));\n }\n}\nexport function assertEmptyString(value, message) {\n if (!isEmptyString(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty string', value));\n }\n}\nexport function assertEmptyStringOrWhitespace(value, message) {\n if (!isEmptyStringOrWhitespace(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty string or whitespace', value));\n }\n}\nexport function assertEnumCase(value, targetEnum, message) {\n if (!isEnumCase(value, targetEnum)) {\n throw new TypeError(message ?? typeErrorMessage('EnumCase', value));\n }\n}\nexport function assertError(value, message) {\n if (!isError(value)) {\n throw new TypeError(message ?? typeErrorMessage('Error', value));\n }\n}\nexport function assertEvenInteger(value, message) {\n if (!isEvenInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('even integer', value));\n }\n}\nexport function assertFalsy(value, message) {\n if (!isFalsy(value)) {\n throw new TypeError(message ?? typeErrorMessage('falsy', value));\n }\n}\nexport function assertFloat32Array(value, message) {\n if (!isFloat32Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Float32Array', value));\n }\n}\nexport function assertFloat64Array(value, message) {\n if (!isFloat64Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Float64Array', value));\n }\n}\nexport function assertFormData(value, message) {\n if (!isFormData(value)) {\n throw new TypeError(message ?? typeErrorMessage('FormData', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertFunction(value, message) {\n if (!isFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('Function', value));\n }\n}\nexport function assertGenerator(value, message) {\n if (!isGenerator(value)) {\n throw new TypeError(message ?? typeErrorMessage('Generator', value));\n }\n}\nexport function assertGeneratorFunction(value, message) {\n if (!isGeneratorFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('GeneratorFunction', value));\n }\n}\nexport function assertHtmlElement(value, message) {\n if (!isHtmlElement(value)) {\n throw new TypeError(message ?? typeErrorMessage('HTMLElement', value));\n }\n}\nexport function assertInfinite(value, message) {\n if (!isInfinite(value)) {\n throw new TypeError(message ?? typeErrorMessage('infinite number', value));\n }\n}\nexport function assertInRange(value, range, message) {\n if (!isInRange(value, range)) {\n throw new TypeError(message ?? typeErrorMessage('in range', value));\n }\n}\nexport function assertInt16Array(value, message) {\n if (!isInt16Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Int16Array', value));\n }\n}\nexport function assertInt32Array(value, message) {\n if (!isInt32Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Int32Array', value));\n }\n}\nexport function assertInt8Array(value, message) {\n if (!isInt8Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Int8Array', value));\n }\n}\nexport function assertInteger(value, message) {\n if (!isInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('integer', value));\n }\n}\nexport function assertIterable(value, message) {\n if (!isIterable(value)) {\n throw new TypeError(message ?? typeErrorMessage('Iterable', value));\n }\n}\nexport function assertMap(value, message) {\n if (!isMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('Map', value));\n }\n}\nexport function assertNan(value, message) {\n if (!isNan(value)) {\n throw new TypeError(message ?? typeErrorMessage('NaN', value));\n }\n}\nexport function assertNativePromise(value, message) {\n if (!isNativePromise(value)) {\n throw new TypeError(message ?? typeErrorMessage('native Promise', value));\n }\n}\nexport function assertNegativeNumber(value, message) {\n if (!isNegativeNumber(value)) {\n throw new TypeError(message ?? typeErrorMessage('negative number', value));\n }\n}\nexport function assertNodeStream(value, message) {\n if (!isNodeStream(value)) {\n throw new TypeError(message ?? typeErrorMessage('Node.js Stream', value));\n }\n}\nexport function assertNonEmptyArray(value, message) {\n if (!isNonEmptyArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty array', value));\n }\n}\nexport function assertNonEmptyMap(value, message) {\n if (!isNonEmptyMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty map', value));\n }\n}\nexport function assertNonEmptyObject(value, message) {\n if (!isNonEmptyObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty object', value));\n }\n}\nexport function assertNonEmptySet(value, message) {\n if (!isNonEmptySet(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty set', value));\n }\n}\nexport function assertNonEmptyString(value, message) {\n if (!isNonEmptyString(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty string', value));\n }\n}\nexport function assertNonEmptyStringAndNotWhitespace(value, message) {\n if (!isNonEmptyStringAndNotWhitespace(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty string and not whitespace', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertNull(value, message) {\n if (!isNull(value)) {\n throw new TypeError(message ?? typeErrorMessage('null', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertNullOrUndefined(value, message) {\n if (!isNullOrUndefined(value)) {\n throw new TypeError(message ?? typeErrorMessage('null or undefined', value));\n }\n}\nexport function assertNumber(value, message) {\n if (!isNumber(value)) {\n throw new TypeError(message ?? typeErrorMessage('number', value));\n }\n}\nexport function assertNumericString(value, message) {\n if (!isNumericString(value)) {\n throw new TypeError(message ?? typeErrorMessage('string with a number', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertObject(value, message) {\n if (!isObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('Object', value));\n }\n}\nexport function assertObservable(value, message) {\n if (!isObservable(value)) {\n throw new TypeError(message ?? typeErrorMessage('Observable', value));\n }\n}\nexport function assertOddInteger(value, message) {\n if (!isOddInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('odd integer', value));\n }\n}\nexport function assertPlainObject(value, message) {\n if (!isPlainObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('plain object', value));\n }\n}\nexport function assertPositiveNumber(value, message) {\n if (!isPositiveNumber(value)) {\n throw new TypeError(message ?? typeErrorMessage('positive number', value));\n }\n}\nexport function assertPrimitive(value, message) {\n if (!isPrimitive(value)) {\n throw new TypeError(message ?? typeErrorMessage('primitive', value));\n }\n}\nexport function assertPromise(value, message) {\n if (!isPromise(value)) {\n throw new TypeError(message ?? typeErrorMessage('Promise', value));\n }\n}\nexport function assertPropertyKey(value, message) {\n if (!isPropertyKey(value)) {\n throw new TypeError(message ?? typeErrorMessage('PropertyKey', value));\n }\n}\nexport function assertRegExp(value, message) {\n if (!isRegExp(value)) {\n throw new TypeError(message ?? typeErrorMessage('RegExp', value));\n }\n}\nexport function assertSafeInteger(value, message) {\n if (!isSafeInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('integer', value));\n }\n}\nexport function assertSet(value, message) {\n if (!isSet(value)) {\n throw new TypeError(message ?? typeErrorMessage('Set', value));\n }\n}\nexport function assertSharedArrayBuffer(value, message) {\n if (!isSharedArrayBuffer(value)) {\n throw new TypeError(message ?? typeErrorMessage('SharedArrayBuffer', value));\n }\n}\nexport function assertString(value, message) {\n if (!isString(value)) {\n throw new TypeError(message ?? typeErrorMessage('string', value));\n }\n}\nexport function assertSymbol(value, message) {\n if (!isSymbol(value)) {\n throw new TypeError(message ?? typeErrorMessage('symbol', value));\n }\n}\nexport function assertTruthy(value, message) {\n if (!isTruthy(value)) {\n throw new TypeError(message ?? typeErrorMessage('truthy', value));\n }\n}\nexport function assertTupleLike(value, guards, message) {\n if (!isTupleLike(value, guards)) {\n throw new TypeError(message ?? typeErrorMessage('tuple-like', value));\n }\n}\nexport function assertTypedArray(value, message) {\n if (!isTypedArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('TypedArray', value));\n }\n}\nexport function assertUint16Array(value, message) {\n if (!isUint16Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint16Array', value));\n }\n}\nexport function assertUint32Array(value, message) {\n if (!isUint32Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint32Array', value));\n }\n}\nexport function assertUint8Array(value, message) {\n if (!isUint8Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint8Array', value));\n }\n}\nexport function assertUint8ClampedArray(value, message) {\n if (!isUint8ClampedArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint8ClampedArray', value));\n }\n}\nexport function assertUndefined(value, message) {\n if (!isUndefined(value)) {\n throw new TypeError(message ?? typeErrorMessage('undefined', value));\n }\n}\nexport function assertUrlInstance(value, message) {\n if (!isUrlInstance(value)) {\n throw new TypeError(message ?? typeErrorMessage('URL', value));\n }\n}\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport function assertUrlSearchParams(value, message) {\n if (!isUrlSearchParams(value)) {\n throw new TypeError(message ?? typeErrorMessage('URLSearchParams', value));\n }\n}\nexport function assertUrlString(value, message) {\n if (!isUrlString(value)) {\n throw new TypeError(message ?? typeErrorMessage('string with a URL', value));\n }\n}\nexport function assertValidDate(value, message) {\n if (!isValidDate(value)) {\n throw new TypeError(message ?? typeErrorMessage('valid Date', value));\n }\n}\nexport function assertValidLength(value, message) {\n if (!isValidLength(value)) {\n throw new TypeError(message ?? typeErrorMessage('valid length', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertWeakMap(value, message) {\n if (!isWeakMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('WeakMap', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations\nexport function assertWeakRef(value, message) {\n if (!isWeakRef(value)) {\n throw new TypeError(message ?? typeErrorMessage('WeakRef', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertWeakSet(value, message) {\n if (!isWeakSet(value)) {\n throw new TypeError(message ?? typeErrorMessage('WeakSet', value));\n }\n}\nexport function assertWhitespaceString(value, message) {\n if (!isWhitespaceString(value)) {\n throw new TypeError(message ?? typeErrorMessage('whitespace string', value));\n }\n}\nexport default is;\n","/**\n * Small utility library instead of using lodash\n * but still providing the convenience of a single `_.XXX` style import\n */\n\n\n// we'll rely on sindresorhus/is for type checking, but we'll build it into the final bundle\nimport {\n isBoolean, isError, isString, isPromise, isFunction,\n isNumber, isPlainObject, isArray, isInteger, isNan,\n} from '@sindresorhus/is';\n\nfunction keyBy<T>(array: Array<T>, key: keyof T) {\n return (array || []).reduce((r, x) => ({ ...r, [String(x[key])]: x }), {});\n}\n\n/**\n * Simple sortBy utility\n * Returns a new array sorted by the given key or function\n */\nfunction sortBy<T>(\n array: Array<T>,\n compareBy: keyof T | ((item: T) => number),\n) {\n // handle comparison using function that returns a number\n if (typeof compareBy === 'function') {\n const compareMap = new Map();\n array.forEach((item) => {\n compareMap.set(item, compareBy(item));\n });\n return array.concat().sort(\n (a, b) => compareMap.get(a)! - compareMap.get(b)!,\n );\n // handle comparison by key\n } else {\n return array.concat().sort(\n (a, b) => {\n if (a[compareBy] > b[compareBy]) return 1;\n return (b[compareBy] > a[compareBy]) ? -1 : 0;\n },\n );\n }\n}\n\nfunction compact<T>(array: Array<T | undefined | false | null>) {\n return array.filter((item) => item !== undefined && item !== false && item !== null) as Array<T>;\n}\n\nfunction filter<T>(array: Array<T>, fn: (item: T) => boolean) {\n return array.filter(fn);\n}\n\nfunction each<T>(\n array: Array<T> | Record<string, T>,\n fn: (\n ((item: T, key: string) => void)\n | ((item: T) => void)\n ),\n) {\n if (Array.isArray(array)) {\n array.forEach((item, index) => fn(item, String(index)));\n } else {\n Object.entries(array).forEach(([key, value]) => fn(value, key));\n }\n}\n\nfunction castArray<T>(value: T | Array<T>) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction mapValues<T, U>(obj: Record<string, T>, fn: (value: T) => U) {\n return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, fn(value)]));\n}\n\nfunction times<T>(count: number, fn: (index: number) => T): Array<T> {\n return Array.from({ length: count }, (_, i) => fn(i));\n}\n\nfunction map<T, U>(array: Array<T>, fn: (item: T) => U): Array<U> {\n return array.map(fn);\n}\nfunction flatMap<T, U>(array: Array<T>, fn: (item: T) => Array<U>): Array<U> {\n return array.flatMap(fn);\n}\nfunction intersection<T>(...arrays: Array<Array<T>>): Array<T> {\n return arrays.reduce((a, b) => a.filter((value) => b.includes(value)));\n}\nfunction pick<T>(obj: Record<string, T>, keys: Array<string>) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));\n}\nfunction uniq<T>(array: Array<T>): Array<T> {\n return Array.from(new Set(array));\n}\nfunction fromPairs<T>(pairs: Array<[string, T]>): Record<string, T> {\n return Object.fromEntries(pairs);\n}\n\n\nconst _ = {\n keyBy,\n sortBy,\n compact,\n keys: Object.keys,\n values: Object.values,\n some: (a: Array<any>, fn: (item: any) => boolean) => a.some(fn),\n filter,\n each,\n castArray,\n mapValues,\n times,\n map,\n flatMap,\n intersection,\n pick,\n uniq,\n fromPairs,\n // type checks\n isString,\n isBoolean,\n isError,\n isPromise,\n isFunction,\n isNan,\n isNumber,\n isPlainObject,\n isArray,\n isInteger,\n};\n\nexport default _;\n","/* eslint-disable no-console */\n\nimport { format } from 'node:util';\n\n/**\n * Debug logger with colors, timing, and format string support\n * Enable by setting DEBUG env var with namespaces (e.g., DEBUG=varlock:*)\n */\n\ntype DebugFn = (...args: Array<any>) => void;\n\n// Track last call time per namespace for diff timing\nconst prevTime = new Map<string, number>();\n\n// ANSI color codes\nconst colors = [\n '\\x1b[36m', // cyan\n '\\x1b[35m', // magenta\n '\\x1b[34m', // blue\n '\\x1b[33m', // yellow\n '\\x1b[32m', // green\n '\\x1b[31m', // red\n '\\x1b[96m', // bright cyan\n '\\x1b[95m', // bright magenta\n '\\x1b[94m', // bright blue\n '\\x1b[93m', // bright yellow\n '\\x1b[92m', // bright green\n '\\x1b[91m', // bright red\n];\nconst resetCode = '\\x1b[0m';\nconst grayCode = '\\x1b[90m';\n\n// Simple hash function to deterministically assign colors\nconst selectColor = (namespace: string): string => {\n let hash = 0;\n for (let i = 0; i < namespace.length; i++) {\n // eslint-disable-next-line no-bitwise\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash |= 0; // Convert to 32bit integer\n }\n return colors[Math.abs(hash) % colors.length];\n};\n\n// Format milliseconds in human-readable form\nconst humanizeMs = (ms: number): string => {\n if (ms >= 1000) {\n return `${(ms / 1000).toFixed(1)}s`;\n }\n return `${Math.round(ms)}ms`;\n};\n\nconst isEnabled = (namespace: string): boolean => {\n const debugEnv = process.env.DEBUG || '';\n if (!debugEnv) return false;\n\n const patterns = debugEnv.split(',').map((p) => p.trim());\n let enabled = false;\n\n for (const pattern of patterns) {\n // Negative pattern (exclude)\n if (pattern.startsWith('-')) {\n const excludePattern = pattern.slice(1);\n if (excludePattern === namespace) return false;\n if (excludePattern.endsWith('*')) {\n const prefix = excludePattern.slice(0, -1);\n if (namespace.startsWith(prefix)) return false;\n }\n continue;\n }\n\n // Positive pattern (include)\n if (pattern === '*') {\n enabled = true;\n } else if (pattern === namespace) {\n enabled = true;\n } else if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n if (namespace.startsWith(prefix)) {\n enabled = true;\n }\n }\n }\n\n return enabled;\n};\n\nexport function createDebug(namespace: string): DebugFn {\n const enabled = isEnabled(namespace);\n\n if (!enabled) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return () => {};\n }\n\n const colorCode = selectColor(namespace);\n\n return (...args: Array<any>) => {\n const now = Date.now();\n const prev = prevTime.get(namespace);\n const diff = prev ? now - prev : 0;\n prevTime.set(namespace, now);\n\n // Format the message with util.format for printf-style formatting\n const msg = format(...args);\n\n // Build the output with colored namespace and diff timing\n const diffStr = diff > 0 ? `${grayCode} +${humanizeMs(diff)}${resetCode}` : '';\n const output = `${colorCode}${namespace}${resetCode} ${msg}${diffStr}`;\n\n console.error(output);\n };\n}\n\nexport type Debugger = ReturnType<typeof createDebug>;\n","/**\n * Shared mutable plugin context used during plugin module execution.\n *\n * Kept in its own file to avoid a circular dependency between plugins.ts\n * (which sets the active plugin) and plugin-lib.ts (which exposes it to\n * plugin authors) — both of which would otherwise need to import each other.\n *\n * plugins.ts calls activatePlugin / deactivatePlugin around each load.\n * plugin-lib.ts re-exports `plugin` as a Proxy that delegates to whatever\n * is currently active.\n */\n\n\nconst ctx: { active: any } = { active: undefined };\n\nexport function activatePlugin(p: unknown): void {\n ctx.active = p;\n}\n\nexport function deactivatePlugin(): void {\n ctx.active = undefined;\n}\n\n/**\n * A proxy that always delegates to the currently-loading plugin instance.\n * Plugin code can import this and use it as if it were the plugin directly.\n *\n * Valid only between activatePlugin() and deactivatePlugin() calls.\n */\n\nexport const pluginProxy: any = new Proxy({} as any, {\n get(_, key) {\n if (!ctx.active) throw new Error('[varlock] No active plugin context — are you importing plugin-lib outside of a plugin module?');\n const val = ctx.active[key];\n return typeof val === 'function' ? val.bind(ctx.active) : val;\n },\n set(_, key, value) {\n if (!ctx.active) throw new Error('[varlock] No active plugin context');\n ctx.active[key] = value;\n return true;\n },\n});\n","import _ from '@env-spec/utils/my-dash';\n// copied these error types from Astro\n// and we will try to keep it compatible so we can interact with their error overlay\n\nexport type ErrorLocation = {\n file?: string;\n line?: number;\n column?: number;\n};\n\n/**\n * Generic object representing an error with all possible data\n * Compatible with both Astro's and Vite's errors\n */\nexport type ErrorWithMetadata = {\n [name: string]: any;\n name: string;\n title?: string;\n // type?: ErrorTypes; // these are astro's error types\n message: string;\n stack: string;\n hint?: string;\n id?: string;\n frame?: string;\n plugin?: string;\n pluginCode?: string;\n fullCode?: string;\n loc?: ErrorLocation;\n cause?: any;\n};\n\n\nexport type VarlockErrorLocationDetails = {\n /** file path or url */\n id: string;\n /** 1-based line number */\n lineNumber: number;\n /** 1-based column number */\n colNumber: number;\n /** full line string */\n lineStr: string;\n};\n\n\nexport class VarlockError extends Error {\n originalError?: Error;\n get isUnexpected() { return !!this.originalError; }\n\n get type() { return this.name; }\n\n\n static defaultIcon = '❌';\n icon: string;\n\n _isWarning = false;\n\n constructor(errOrMessage: string | Error, readonly more?: {\n tip?: string | Array<string>,\n err?: Error,\n isWarning?: boolean,\n /** machine-friendly error code if needed for anything else */\n code?: string,\n location?: VarlockErrorLocationDetails,\n /** free-form additional metadata */\n extraMetadata?: Record<string, any>,\n }) {\n // super must be root level statement\n super(_.isError(errOrMessage) ? errOrMessage.message : errOrMessage);\n if (_.isError(errOrMessage)) {\n this.originalError = errOrMessage;\n this.icon = '💥';\n } else { // string\n this.originalError = more?.err;\n }\n if (_.isArray(more?.tip)) more.tip = more.tip.join('\\n');\n this.name = this.constructor.name;\n if (more?.isWarning) this.isWarning = true;\n\n this.icon ||= (this.constructor as any).defaultIcon;\n }\n\n get tip() {\n if (!this.more?.tip) return undefined;\n if (_.isArray(this.more.tip)) return this.more.tip.join('\\n');\n return this.more.tip;\n }\n\n get location() {\n return this.more?.location;\n }\n\n get code() {\n return this.more?.code;\n }\n get extraMetadata() {\n return this.more?.extraMetadata;\n }\n\n set isWarning(w: boolean) {\n this._isWarning = w;\n if (this._isWarning) {\n this.icon = '🧐';\n }\n }\n get isWarning() { return this._isWarning; }\n\n toJSON() {\n return {\n icon: this.icon,\n type: this.type,\n name: this.name,\n message: this.message,\n isUnexpected: this.isUnexpected,\n ...this.tip && { tip: this.tip },\n ...this.isWarning && { isWarning: this.isWarning },\n };\n }\n}\n\nexport class ConfigLoadError extends VarlockError {\n readonly cleanedStack: Array<string>;\n constructor(err: Error) {\n super(err);\n\n // remove first line since its the error message\n let stackLines = (err.stack?.split('\\n') || []).slice(1);\n stackLines = stackLines.filter((l) => {\n // filter out unimportant lines related to just running/loading\n // we could filter out more of dmno/core code once things stabilize\n //! these are probably not relevant anymore, or needs to move to a plugin layer?\n if (l.includes(' at ViteNodeRunner.')) return false;\n if (l.includes('core/src/config-loader/config-loader.ts')) return false;\n return true;\n });\n\n\n this.message = `${err.name}: ${err.message}`;\n\n\n\n this.cleanedStack = stackLines || [];\n }\n toJSON() {\n return {\n ...super.toJSON(),\n cleanedStack: this.cleanedStack,\n };\n }\n}\n\nexport class ParseError extends VarlockError {\n static defaultIcon = '😵‍💫';\n}\nexport class SchemaError extends VarlockError {\n static defaultIcon = '🧰';\n}\nexport class ValidationError extends VarlockError {\n static defaultIcon = '❌';\n}\nexport class CoercionError extends VarlockError {\n static defaultIcon = '🛑';\n}\nexport class ResolutionError extends VarlockError {\n static defaultIcon = '⛔';\n protected _retryable?: boolean = false;\n set retryable(val: boolean) { this._retryable = val; }\n get retryable() {\n if (this._retryable) return true;\n if (this.originalError instanceof ResolutionError) return this.originalError.retryable;\n return false;\n }\n}\n\nexport class EmptyRequiredValueError extends ValidationError {\n icon = '❓';\n constructor(_val: undefined | null | '') {\n super('Value is required but is currently empty');\n }\n}\n","export { d as S_BAR, E as S_BAR_END, Ee as S_BAR_END_RIGHT, se as S_BAR_H, le as S_BAR_START, Ie as S_BAR_START_RIGHT, te as S_CHECKBOX_ACTIVE, J as S_CHECKBOX_INACTIVE, U as S_CHECKBOX_SELECTED, Ge as S_CONNECT_LEFT, de as S_CORNER_BOTTOM_LEFT, $e as S_CORNER_BOTTOM_RIGHT, Oe as S_CORNER_TOP_LEFT, ce as S_CORNER_TOP_RIGHT, ge as S_ERROR, he as S_INFO, xe as S_PASSWORD_MASK, z as S_RADIO_ACTIVE, H as S_RADIO_INACTIVE, _e as S_STEP_ACTIVE, oe as S_STEP_CANCEL, ue as S_STEP_ERROR, F as S_STEP_SUBMIT, pe as S_SUCCESS, me as S_WARN, Ae as autocomplete, st as autocompleteMultiselect, at as box, pt as cancel, ot as confirm, ut as date, dt as group, ht as groupMultiselect, mt as intro, ae as isCI, q as isCancel, Te as isTTY, Y as limitOptions, O as log, yt as multiselect, wt as note, gt as outro, bt as password, St as path, Tt as progress, _t as select, It as selectKey, u as settings, fe as spinner, K2 as stream, V as symbol, ye as symbolBar, Gt as taskLog, Et as tasks, Ot as text, ee as unicode, w as unicodeOr, K as updateSettings } from './chunk-HDKXXS2X.js';\nimport './chunk-6PEHRAEP.js';\n//# sourceMappingURL=dist-WGIHRGBZ.js.map\n//# sourceMappingURL=dist-WGIHRGBZ.js.map","export { ConfigItem } from './chunk-U7RQPX5K.js';\nimport './chunk-7WB7HK5Z.js';\nimport './chunk-HDKXXS2X.js';\nimport './chunk-2PFIYNFA.js';\nimport './chunk-6PEHRAEP.js';\n//# sourceMappingURL=config-item-2FQ6I6PO.js.map\n//# sourceMappingURL=config-item-2FQ6I6PO.js.map","// this regex helps avoid any weird numbers\n// - leading zeros\n// - scientific notation\n// - multiple decimal points\nconst VALID_NUMBER_REGEX = /^-?(0|([1-9][0-9]*))?(\\.[0-9]+)?$/;\n\nexport function autoCoerce(valStr: string): string | number | boolean | undefined {\n if (valStr === 'true') return true;\n if (valStr === 'false') return false;\n if (valStr === 'undefined') return undefined;\n // not handling `null` because its a JS specific thing... we'll try to avoid it altogether\n\n // the regex check filters out a lot of ambiguous/weird cases\n if (VALID_NUMBER_REGEX.test(valStr)) {\n const num = Number(valStr);\n\n // Check if we can convert back to a string without any changes\n // this could be loss in precision or just formatting (extra zeros)\n const backToString = String(num);\n if (backToString !== valStr) return valStr;\n\n // if numbers are too large, we'll leave them as strings\n if (Number.isInteger(num) && !Number.isSafeInteger(num)) return valStr;\n if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) return valStr;\n\n // otherwise we can return the number\n return num;\n }\n return valStr;\n}\n","import { expand } from './expand';\nimport { autoCoerce } from './helpers';\n\nexport class ParsedEnvSpecDivider {\n constructor(public data: {\n contents: string;\n leadingSpace?: string;\n _location?: any;\n }) {}\n\n toString() {\n return `#${this.data.leadingSpace || ''}${this.data.contents}`;\n }\n}\n\nexport class ParsedEnvSpecStaticValue {\n value: any;\n\n constructor(public data: {\n rawValue: any;\n quote?: '\"' | \"'\" | '`' | undefined;\n isImplicit?: boolean;\n _location?: any;\n }) {\n if (!data.quote) {\n // unquoted strings will get trimmed (leading/trailing spaces)\n if (typeof data.rawValue === 'string') {\n const trimmed = data.rawValue.trim();\n // trimmed empty string without quotes gets treated as undefined\n if (trimmed === '') this.value = undefined;\n else this.value = autoCoerce(trimmed);\n } else {\n this.value = autoCoerce(data.rawValue);\n }\n } else {\n const quoteChar = data.quote.substring(0, 1);\n this.value = data.rawValue\n .slice(data.quote.length, -1 * data.quote.length)\n .replaceAll(`\\\\${quoteChar}`, quoteChar);\n }\n }\n\n get unescapedValue() {\n if (typeof this.value !== 'string') return this.value;\n let unescaped = this.value;\n // replace escaped \"$\" (if not in single quotes)\n if (this.data.quote !== \"'\") {\n unescaped = unescaped.replaceAll('\\\\$', '$');\n }\n // replace escaped newlines (if not double quotes or backticks)\n if (this.data.quote === '\"' || this.data.quote === '`') {\n unescaped = unescaped.replaceAll('\\\\n', '\\n');\n }\n return unescaped;\n }\n\n toString() {\n // TODO: smarter logic to preserve the original value\n // for example with this logic, we may see 123.0 -> 123\n let strVal = String(this.value);\n if (this.data.quote) {\n strVal = strVal.replaceAll(this.data.quote, `\\\\${this.data.quote}`);\n }\n return `${this.data.quote || ''}${strVal}${this.data.quote || ''}`;\n }\n}\n\nexport class ParsedEnvSpecKeyValuePair {\n constructor(public data: {\n key: string;\n val: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall,\n }) {}\n\n get key() {\n return this.data.key;\n }\n\n get value() {\n return this.data.val;\n }\n\n toString() {\n return `${this.key}=${this.data.val.toString()}`;\n }\n}\nexport class ParsedEnvSpecFunctionArgs {\n constructor(public data: {\n values: Array<\n ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall\n | ParsedEnvSpecKeyValuePair\n >;\n _location?: any;\n }) {}\n\n get values() {\n return this.data.values;\n }\n\n get simplifiedValues(): Array<any> | Record<string, any> {\n if (this.data.values.length === 0) return [];\n const vals = this.data.values;\n if (vals.every((i) => i instanceof ParsedEnvSpecStaticValue)) {\n return vals.map((val) => val.value);\n } else if (vals.every((i) => i instanceof ParsedEnvSpecKeyValuePair)) {\n const obj = {} as Record<string, any>;\n vals.forEach((val) => {\n if (val.value instanceof ParsedEnvSpecStaticValue) {\n obj[val.key] = val.value.value;\n // eslint-disable-next-line no-use-before-define\n } else if (val.value instanceof ParsedEnvSpecFunctionCall && val.value.name === 'regex') {\n // Convert regex(\"pattern\") to a RegExp instance (deprecated)\n const args = val.value.simplifiedArgs as Array<any>;\n if (typeof args[0] === 'string') {\n obj[val.key] = new RegExp(args[0]);\n }\n }\n });\n return obj;\n } else {\n throw new Error('Invalid function args');\n }\n }\n\n toString() {\n let s = '(';\n s += this.data.values.map((val) => val.toString()).join(', ');\n s += ')';\n return s;\n }\n}\n\nexport class ParsedEnvSpecFunctionCall {\n constructor(public data: {\n name: string;\n args: ParsedEnvSpecFunctionArgs;\n _location?: any;\n }) {}\n\n get name() {\n return this.data.name;\n }\n get simplifiedArgs() {\n return this.data.args.simplifiedValues;\n }\n\n toString() {\n // args will include the `()`\n return this.data.name + this.data.args.toString();\n }\n}\n\n\nexport class ParsedEnvSpecDecorator {\n value?: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall\n | ParsedEnvSpecFunctionArgs;\n\n constructor(public data: {\n name: string;\n value: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall\n | ParsedEnvSpecFunctionArgs | undefined;\n isBareFnCall?: boolean; // true if decorator is a bare fn call (eg: @import(...))\n _location?: any;\n }) {\n // bare decorator is equivalent to `@decorator=true`\n // `@required` === `@required=true`\n if (!this.data.value) {\n this.value = new ParsedEnvSpecStaticValue({ rawValue: true, isImplicit: true });\n } else {\n // process expansion -- triggers $ expansion (eg: \"${VAR}\" => `ref(VAR)`)/\n const expanded = expand(this.data.value);\n if (expanded instanceof ParsedEnvSpecKeyValuePair) {\n throw new Error('Unexpected key-value pair found in config item');\n }\n this.value = expanded;\n }\n }\n\n get name() {\n return this.data.name;\n }\n get isBareFnCall() {\n return !!this.data.isBareFnCall;\n }\n get bareFnArgs() {\n if (this.isBareFnCall && this.value instanceof ParsedEnvSpecFunctionArgs) {\n return this.value;\n }\n }\n\n get simplifiedValue() {\n if (this.value instanceof ParsedEnvSpecStaticValue) {\n return this.value.value;\n }\n }\n toString() {\n let s = `@${this.name}`;\n if (!this.data.value) return s; // bare decorator, ex: `@required`\n // bare fn call looks like `@import(asdf)` so no `=`\n if (!this.isBareFnCall) s += '=';\n // let the value stringify itself\n s += this.data.value.toString();\n return s;\n }\n}\n\n\nexport class ParsedEnvSpecComment {\n constructor(public data: {\n contents: string;\n leadingSpace?: string;\n _location?: any;\n }) {}\n\n get contents() {\n return this.data.contents;\n }\n\n toString() {\n return `#${this.data.leadingSpace || ''}${this.data.contents}`;\n }\n}\nexport class ParsedEnvSpecDecoratorComment {\n constructor(public data: {\n decorators: Array<ParsedEnvSpecDecorator>;\n leadingSpace?: string;\n postComment?: any;\n _location?: any;\n }) {}\n\n get decorators() {\n return this.data.decorators;\n }\n\n get postComment() {\n return this.data.postComment;\n }\n\n toString() {\n let s = '#';\n s += this.data.leadingSpace || '';\n s += this.data.decorators.map((d) => d.toString()).join(' ');\n if (this.data.postComment) s += ` ${this.data.postComment.toString()}`;\n return s;\n }\n}\n\nfunction getDecoratorsObject(\n comments: Array<ParsedEnvSpecDecoratorComment | ParsedEnvSpecComment | undefined>,\n) {\n const decObj = {} as Record<string, ParsedEnvSpecDecorator>;\n comments.forEach((comment) => {\n if (comment instanceof ParsedEnvSpecDecoratorComment) {\n comment.decorators.forEach((decorator) => {\n decObj[decorator.name] = decorator;\n });\n }\n });\n return decObj;\n}\n\nfunction getDecoratorsArray(\n comments: Array<ParsedEnvSpecDecoratorComment | ParsedEnvSpecComment | undefined>,\n) {\n const decArr = [] as Array<ParsedEnvSpecDecorator>;\n comments.forEach((comment) => {\n if (comment instanceof ParsedEnvSpecDecoratorComment) {\n decArr.push(...comment.decorators);\n }\n });\n return decArr;\n}\n\nexport class ParsedEnvSpecCommentBlock {\n constructor(public data: {\n comments: Array<ParsedEnvSpecDecoratorComment | ParsedEnvSpecComment>;\n divider: ParsedEnvSpecDivider | null;\n _location?: any;\n }) {}\n\n get comments() {\n return this.data.comments;\n }\n\n get divider() {\n return this.data.divider || undefined;\n }\n\n get decoratorsObject() {\n return getDecoratorsObject(this.data.comments);\n }\n get decoratorsArray() {\n return getDecoratorsArray(this.data.comments);\n }\n\n toString() {\n return [\n ...this.data.comments.map((comment) => comment.toString()),\n ...this.data.divider ? [this.data.divider.toString()] : [],\n ].join('\\n');\n }\n}\n\nexport class ParsedEnvSpecBlankLine {\n constructor(public data: {\n _location?: any;\n }) {}\n\n toString() {\n return '';\n }\n}\n\n\nexport class ParsedEnvSpecConfigItem {\n value: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall | undefined;\n\n constructor(public data: {\n key: string;\n value: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall | undefined;\n preComments: Array<ParsedEnvSpecDecoratorComment | ParsedEnvSpecComment>;\n postComment: ParsedEnvSpecDecoratorComment | ParsedEnvSpecComment | undefined;\n _location?: any;\n }) {\n if (this.data.value) {\n const expanded = expand(this.data.value!);\n if (expanded instanceof ParsedEnvSpecKeyValuePair) {\n throw new Error('Nested key-value pair found in config item');\n } else if (expanded instanceof ParsedEnvSpecFunctionArgs) {\n throw new Error('Top-level config item cannot be a bare function args');\n }\n this.value = expanded;\n }\n }\n\n get key() {\n return this.data.key;\n }\n\n get decoratorsArray() {\n return getDecoratorsArray([...this.data.preComments, this.data.postComment]);\n }\n\n get decoratorsObject() {\n return getDecoratorsObject([...this.data.preComments, this.data.postComment]);\n }\n\n get description() {\n const regularComments = this.data.preComments.filter((comment) => (comment instanceof ParsedEnvSpecComment));\n return regularComments.map((comment) => comment.contents).join('\\n');\n }\n\n toString() {\n let s = '';\n for (const comment of this.data.preComments) s += `${comment.toString()}\\n`;\n s += `${this.key}=`;\n if (this.data.value) s += `${this.data.value.toString()}`;\n if (this.data.postComment) s += ` ${this.data.postComment.toString()}`;\n return s;\n }\n}\n\n// these are the 4 types that can be at the root level\ntype ParsedEnvSpecFileNode = ParsedEnvSpecCommentBlock\n | ParsedEnvSpecDivider\n | ParsedEnvSpecConfigItem\n | ParsedEnvSpecBlankLine;\n\n\nexport class ParsedEnvSpecFile {\n contents: Array<ParsedEnvSpecFileNode>;\n constructor(_contents: Array<ParsedEnvSpecFileNode>) {\n this.contents = _contents;\n }\n\n get configItems() {\n return this.contents.filter((item) => item instanceof ParsedEnvSpecConfigItem);\n }\n /** all comment blocks before the first config item (the \"header\" area) */\n get headerBlocks() {\n const blocks: Array<ParsedEnvSpecCommentBlock> = [];\n for (const item of this.contents) {\n if (item instanceof ParsedEnvSpecCommentBlock) {\n blocks.push(item);\n } else if (item instanceof ParsedEnvSpecBlankLine || item instanceof ParsedEnvSpecDivider) {\n continue;\n } else {\n break; // hit a config item\n }\n }\n return blocks;\n }\n /** primary header block - the last comment block before the first config item */\n get header() {\n const blocks = this.headerBlocks;\n return blocks.length > 0 ? blocks[blocks.length - 1] : undefined;\n }\n get decoratorsObject() {\n const decObj = {} as Record<string, ParsedEnvSpecDecorator>;\n for (const block of this.headerBlocks) {\n Object.assign(decObj, block.decoratorsObject);\n }\n return decObj;\n }\n get decoratorsArray() {\n const decArr: Array<ParsedEnvSpecDecorator> = [];\n for (const block of this.headerBlocks) {\n decArr.push(...block.decoratorsArray);\n }\n return decArr;\n }\n\n /**\n * Comment blocks that are NOT part of the header and NOT attached to a config item.\n * Any decorators in these blocks are misplaced.\n */\n get orphanCommentBlocks() {\n const headerBlockSet = new Set(this.headerBlocks);\n return this.contents.filter(\n (item): item is ParsedEnvSpecCommentBlock => (\n item instanceof ParsedEnvSpecCommentBlock && !headerBlockSet.has(item)\n ),\n );\n }\n\n toString() {\n return this.contents.map((item) => item.toString()).join('\\n');\n }\n /**\n * simple helper to convert an object in a basic case\n * mostly useful for comparison with other env parsers\n * */\n toSimpleObj() {\n const obj = {} as Record<string, any>;\n for (const item of this.contents) {\n if (item instanceof ParsedEnvSpecConfigItem) {\n if (item.value instanceof ParsedEnvSpecStaticValue) {\n obj[item.key] = item.value.value ?? '';\n }\n }\n }\n return obj;\n }\n}\n","import {\n ParsedEnvSpecFunctionArgs, ParsedEnvSpecFunctionCall, ParsedEnvSpecKeyValuePair,\n ParsedEnvSpecStaticValue,\n} from './classes';\n\n// const EXPAND_VAR_REGEX_WITH_SIMPLE = /\\$({([a-zA-Z_][a-zA-Z0-9_.]*)}|([a-zA-Z_][a-zA-Z0-9_]*))/g;\nconst EXPAND_VAR_BRACKETED_REGEX = /(?<!\\\\)\\${([a-zA-Z_][a-zA-Z0-9_.]*)((:?-)([^}]+))?}/g;\nconst EXPAND_VAR_SIMPLE_REGEX = /(?<!\\\\)\\$([a-zA-Z_][a-zA-Z0-9_]*)/g;\nconst EXPAND_EXEC_REGEX = /\\$\\(([^)]+)\\)/g;\n\n\nfunction expandExecs(staticVal: ParsedEnvSpecStaticValue, _opts?: {}) {\n if (typeof staticVal.value !== 'string') return staticVal;\n const quote = staticVal.data.quote;\n const quoteStr = quote ?? '';\n // single quoted strings are not expanded!\n if (quote === \"'\") return staticVal;\n\n const execMatches = Array.from(staticVal.value.matchAll(EXPAND_EXEC_REGEX));\n\n // if no matches - we just return the original value\n if (execMatches.length === 0) return staticVal;\n\n // otherwise, we expand the transform each match into `exec` fn calls\n // and return a concat with everything together\n let lastIndex = 0;\n const parts = [] as Array<ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall>;\n for (const match of execMatches) {\n // extract text before exec -- ex: `pretext-$(exec command)`\n if (lastIndex < match.index) {\n const preText = staticVal.value.slice(lastIndex, match.index);\n parts.push(new ParsedEnvSpecStaticValue({ rawValue: `${quoteStr}${preText}${quoteStr}`, quote }));\n }\n\n // extract exec command\n const shellCmd = match[1];\n parts.push(new ParsedEnvSpecFunctionCall({\n name: 'exec',\n args: new ParsedEnvSpecFunctionArgs({\n values: [new ParsedEnvSpecStaticValue({ rawValue: `${quoteStr}${shellCmd}${quoteStr}`, quote })],\n }),\n }));\n lastIndex = match.index + match[0].length;\n }\n // extract any remaining text after the last exec\n if (lastIndex < staticVal.value.length) {\n const postText = staticVal.value.slice(lastIndex);\n parts.push(new ParsedEnvSpecStaticValue({ rawValue: `${quoteStr}${postText}${quoteStr}`, quote }));\n }\n\n // if there's only one part, we can just return it (ex: `VAR=$(whoami)`)\n if (parts.length === 1) return parts[0];\n // otherwise we concat all the parts together\n return new ParsedEnvSpecFunctionCall({\n name: 'concat',\n args: new ParsedEnvSpecFunctionArgs({\n values: parts,\n }),\n });\n}\n\nfunction expandRefs(staticVal: ParsedEnvSpecStaticValue, mode: 'simple' | 'bracketed') {\n if (typeof staticVal.value !== 'string') return staticVal;\n const quote = staticVal.data.quote;\n const quoteStr = quote ?? '';\n if (quote === \"'\") return staticVal;\n\n const varMatches = Array.from(staticVal.value.matchAll(mode === 'simple' ? EXPAND_VAR_SIMPLE_REGEX : EXPAND_VAR_BRACKETED_REGEX));\n if (varMatches.length === 0) return staticVal;\n\n let lastIndex = 0;\n const parts = [] as Array<any>;\n for (const match of varMatches) {\n // extract text before exec\n if (lastIndex < match.index) {\n const preText = staticVal.value.slice(lastIndex, match.index);\n parts.push(new ParsedEnvSpecStaticValue({ rawValue: `${quoteStr}${preText}${quoteStr}`, quote }));\n }\n\n // extract var\n const varName = match[1];\n let defaultOperator: string | undefined; // ex: \":-\" or \"-\"\n let defaultVal: string | undefined; // currently not doing any fancy parsing on this, will just be a string\n if (mode === 'bracketed') {\n // TODO: do we want to support different behaviour based on the operator?\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n defaultOperator = match[3];\n defaultVal = match[4];\n }\n const refFnCall = new ParsedEnvSpecFunctionCall({\n name: 'ref',\n args: new ParsedEnvSpecFunctionArgs({\n values: [new ParsedEnvSpecStaticValue({ rawValue: varName })],\n }),\n });\n if (defaultVal) {\n parts.push(new ParsedEnvSpecFunctionCall({\n name: 'fallback',\n args: new ParsedEnvSpecFunctionArgs({\n values: [refFnCall, new ParsedEnvSpecStaticValue({ rawValue: `${quoteStr}${defaultVal}${quoteStr}`, quote })],\n }),\n }));\n } else {\n parts.push(refFnCall);\n }\n lastIndex = match.index + match[0].length;\n }\n if (lastIndex < staticVal.value.length) {\n const postText = staticVal.value.slice(lastIndex);\n parts.push(new ParsedEnvSpecStaticValue({ rawValue: `${quoteStr}${postText}${quoteStr}`, quote }));\n }\n\n // if only a single part, just return it (ex: `VAR=${OTHERVAR}`)\n if (parts.length === 1) return parts[0];\n // otherwise, concat all the parts together\n return new ParsedEnvSpecFunctionCall({\n name: 'concat',\n args: new ParsedEnvSpecFunctionArgs({\n values: parts,\n }),\n });\n}\n\n\ntype ParsedEnvSpecValueNode = ParsedEnvSpecStaticValue\n| ParsedEnvSpecFunctionCall | ParsedEnvSpecFunctionArgs | ParsedEnvSpecKeyValuePair;\n\n/**\n * helper used by expansion to recursively expand values\n * */\nfunction expandHelper(\n val: ParsedEnvSpecValueNode,\n expandStaticFn: (staticVal: ParsedEnvSpecStaticValue) => ParsedEnvSpecValueNode,\n): ParsedEnvSpecValueNode {\n // if function call, expand each arg\n if (val instanceof ParsedEnvSpecFunctionCall) {\n const fnName = val.name;\n // expand each arg, and then flatten unnecessery nested concat fns\n const newConcatArgs = [] as Array<ParsedEnvSpecValueNode>;\n val.data.args.values.forEach((v) => {\n const expandedArg = expandHelper(v, expandStaticFn);\n // special case for concat so we flatten unnecessery nested concat fns\n if (\n fnName === 'concat'\n && expandedArg instanceof ParsedEnvSpecFunctionCall\n && expandedArg.name === 'concat'\n ) {\n newConcatArgs.push(...expandedArg.data.args.values);\n } else {\n newConcatArgs.push(expandedArg);\n }\n });\n\n return new ParsedEnvSpecFunctionCall({\n name: fnName,\n args: new ParsedEnvSpecFunctionArgs({\n values: newConcatArgs as any,\n _location: val.data.args.data._location,\n }),\n _location: val.data._location,\n });\n } else if (val instanceof ParsedEnvSpecFunctionArgs) {\n // expand each arg\n const newArgs = val.data.values.map((v) => expandHelper(v, expandStaticFn));\n return new ParsedEnvSpecFunctionArgs({\n values: newArgs as any,\n _location: val.data._location,\n });\n // if key-value pair, expand value\n } else if (val instanceof ParsedEnvSpecKeyValuePair) {\n const expandedVal = expandHelper(val.value, expandStaticFn);\n if (expandedVal instanceof ParsedEnvSpecKeyValuePair) throw new Error('Nested key-value pair found in concat');\n return new ParsedEnvSpecKeyValuePair({\n key: val.key,\n val: expandedVal as any,\n });\n } else if (val instanceof ParsedEnvSpecStaticValue) {\n // here we actually do the expansion on string values\n\n // skip expansion if value is number/boolean/etc\n if (typeof val.value !== 'string') return val;\n // skip expansion on single-quoted strings\n if (val.data.quote === \"'\") return val;\n\n return expandStaticFn(val);\n }\n throw new Error('Unknown value type');\n}\n\n/**\n * takes in a value node and runs expansion (execs, refs) according to options\n * returns a new value node with all expansions applied\n * */\nexport function expand(\n val: ParsedEnvSpecValueNode,\n // TODO: add options to enable/disable specific expansion types and handling\n _opts?: {},\n): ParsedEnvSpecValueNode {\n // TODO: add options\n let expandedVal = val;\n expandedVal = expandHelper(expandedVal, (v) => expandExecs(v));\n expandedVal = expandHelper(expandedVal, (v) => expandRefs(v, 'simple'));\n expandedVal = expandHelper(expandedVal, (v) => expandRefs(v, 'bracketed'));\n return expandedVal;\n}\n","import { parseEnvSpecDotEnvFile } from './index';\nimport {\n ParsedEnvSpecBlankLine,\n ParsedEnvSpecComment, ParsedEnvSpecCommentBlock, ParsedEnvSpecConfigItem, ParsedEnvSpecDecoratorComment,\n ParsedEnvSpecDivider, ParsedEnvSpecFile,\n} from './classes';\n\nfunction ensureHeader(file: ParsedEnvSpecFile, newHeaderContents?: string) {\n // update utils\n if (!file.header) {\n newHeaderContents ||= 'This env file uses @env-spec - see https://varlock.dev/env-spec for more info\\n';\n file.contents.unshift(\n // header is any comment block(s) before the first config item; we add a divider for clarity\n new ParsedEnvSpecCommentBlock({\n // we'll break up the passed in content and add a comment line for each\n comments: newHeaderContents.split('\\n').map((line) => (\n new ParsedEnvSpecComment({ contents: line, leadingSpace: ' ' })\n )),\n divider: new ParsedEnvSpecDivider({ contents: '----------', leadingSpace: ' ' }),\n }),\n new ParsedEnvSpecBlankLine({}), // add extra blank line after header\n );\n }\n}\n\n// internal helper to create a new decorator node rather than constructing manually\nfunction createDummyDecoratorNode(\n decoratorName: string,\n valueStr: string,\n opts?: {\n bareFnArgs?: boolean,\n explicitTrue?: boolean,\n },\n) {\n // we'll use the parser to generate a new decorator value node correctly\n // rather than trying to do it ourselves\n let decStr = `@${decoratorName}`;\n if (opts?.bareFnArgs) decStr += `(${valueStr})`;\n else if (valueStr !== 'true' || opts?.explicitTrue) {\n decStr += `=${valueStr}`;\n }\n const parsed = parseEnvSpecDotEnvFile(`# ${decStr}\\n# ---`);\n const newDecNode = parsed.decoratorsObject[decoratorName];\n if (!newDecNode) throw new Error('Creating new decorator failed');\n return newDecNode;\n}\n\nfunction setRootDecorator(\n file: ParsedEnvSpecFile,\n decoratorName: string,\n valueStr: string,\n opts?: Parameters<typeof createDummyDecoratorNode>[2] & { comment?: string },\n) {\n ensureHeader(file);\n\n const newDecNode = createDummyDecoratorNode(decoratorName, valueStr, opts);\n\n const existingDecorator = file.decoratorsObject[decoratorName];\n if (existingDecorator) {\n existingDecorator.data.value = newDecNode.data.value;\n } else {\n if (!file.header) throw new Error('No header found');\n const lastComment = file.header.data.comments[file.header.data.comments.length - 1];\n let decCommentLine: ParsedEnvSpecDecoratorComment;\n if (lastComment instanceof ParsedEnvSpecDecoratorComment && lastComment.toString().length < 40) {\n decCommentLine = lastComment;\n } else {\n decCommentLine = new ParsedEnvSpecDecoratorComment({\n decorators: [],\n leadingSpace: ' ',\n ...opts?.comment && { postComment: `# ${opts.comment}` },\n });\n file.header.data.comments.push(decCommentLine);\n }\n decCommentLine.decorators.push(newDecNode);\n }\n}\n\nfunction setItemDecorator(\n file: ParsedEnvSpecFile,\n key: string,\n decoratorName: string,\n valueStr: string,\n opts?: Parameters<typeof createDummyDecoratorNode>[2],\n) {\n let item = file.configItems.find((i) => i.key === key);\n if (!item) {\n item = new ParsedEnvSpecConfigItem({\n key, value: undefined, preComments: [], postComment: undefined,\n });\n file.contents.push(item);\n }\n\n const newDecNode = createDummyDecoratorNode(decoratorName, valueStr, opts);\n\n const existingDecorator = item.decoratorsObject[decoratorName];\n if (existingDecorator) {\n existingDecorator.data.value = newDecNode.data.value;\n } else {\n const lastComment = item.data.preComments[item.data.preComments.length - 1];\n let decCommentLine: ParsedEnvSpecDecoratorComment;\n if (lastComment instanceof ParsedEnvSpecDecoratorComment && lastComment.toString().length < 40) {\n decCommentLine = lastComment;\n } else {\n decCommentLine = new ParsedEnvSpecDecoratorComment({\n decorators: [],\n leadingSpace: ' ',\n });\n item.data.preComments.push(decCommentLine);\n }\n decCommentLine.decorators.push(newDecNode);\n }\n}\n\nfunction injectFromStr(\n file: ParsedEnvSpecFile,\n content: string,\n opts?: {\n location: 'start' | 'after_header' | 'end' | 'items',\n key?: string,\n },\n) {\n const parsed = parseEnvSpecDotEnvFile(content);\n let injectIndex = file.contents.length; // default to end\n if (opts?.location === 'start') {\n injectIndex = 0;\n } else if (opts?.location === 'after_header') {\n if (file.header) {\n injectIndex = file.contents.indexOf(file.header) + 1;\n } else {\n injectIndex = 0;\n }\n } else if (opts?.location === 'items') {\n if (file.configItems[0]) {\n injectIndex = file.contents.indexOf(file.configItems[0]);\n } else if (file.header) {\n injectIndex = file.contents.indexOf(file.header) + 1;\n }\n }\n // splice in new items\n file.contents.splice(injectIndex, 0, ...parsed.contents);\n}\n\nfunction deleteItem(file: ParsedEnvSpecFile, key: string) {\n const item = file.configItems.find((i) => i.key === key);\n if (item) {\n file.contents.splice(file.contents.indexOf(item), 1);\n }\n}\n\nexport const envSpecUpdater = {\n ensureHeader,\n setRootDecorator,\n setItemDecorator,\n injectFromStr,\n deleteItem,\n};\n","// @generated by Peggy 5.1.0.\n//\n// https://peggyjs.org/\n\n\n\n// 🚨 🚨 🚨 THIS FILE IS AUTOGENERATED - DO NOT EDIT DIRECTLY 🚨 🚨 🚨\nimport {\n ParsedEnvSpecFile, ParsedEnvSpecConfigItem, ParsedEnvSpecCommentBlock,\n ParsedEnvSpecDivider, ParsedEnvSpecDecoratorComment, ParsedEnvSpecComment,\n ParsedEnvSpecDecorator, ParsedEnvSpecStaticValue, ParsedEnvSpecFunctionCall,\n ParsedEnvSpecBlankLine, ParsedEnvSpecFunctionArgs, ParsedEnvSpecKeyValuePair,\n} from './classes';\n\nclass peg$SyntaxError extends SyntaxError {\n constructor(message, expected, found, location) {\n super(message);\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n }\n\n format(sources) {\n let str = \"Error: \" + this.message;\n if (this.location) {\n let src = null;\n const st = sources.find(s => s.source === this.location.source);\n if (st) {\n src = st.text.split(/\\r\\n|\\n|\\r/g);\n }\n const s = this.location.start;\n const offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n const e = this.location.end;\n const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n const line = src[s.line - 1];\n const last = s.line === e.line ? e.column : line.length + 1;\n const hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + \"\".padEnd(s.column - 1, \" \")\n + \"\".padEnd(hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n }\n\n static buildMessage(expected, found) {\n function hex(ch) {\n return ch.codePointAt(0).toString(16).toUpperCase();\n }\n\n const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\")\n ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\")\n : null;\n function unicodeEscape(s) {\n if (nonPrintable) {\n return s.replace(nonPrintable, ch => \"\\\\u{\" + hex(ch) + \"}\");\n }\n return s;\n }\n\n function literalEscape(s) {\n return unicodeEscape(s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, ch => \"\\\\x0\" + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\" + hex(ch)));\n }\n\n function classEscape(s) {\n return unicodeEscape(s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, ch => \"\\\\x0\" + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\" + hex(ch)));\n }\n\n const DESCRIBE_EXPECTATION_FNS = {\n literal(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class(expectation) {\n const escapedParts = expectation.parts.map(\n part => (Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part))\n );\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n },\n\n any() {\n return \"any character\";\n },\n\n end() {\n return \"end of input\";\n },\n\n other(expectation) {\n return expectation.description;\n },\n };\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n const descriptions = expected.map(describeExpectation);\n descriptions.sort();\n\n if (descriptions.length > 0) {\n let j = 1;\n for (let i = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n }\n}\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n const peg$FAILED = {};\n const peg$source = options.grammarSource;\n\n const peg$startRuleFunctions = {\n EnvSpecFile: peg$parseEnvSpecFile,\n };\n let peg$startRuleFunction = peg$parseEnvSpecFile;\n\n const peg$c0 = \"\\n\";\n const peg$c1 = \"export \";\n const peg$c2 = \"=\";\n const peg$c3 = \"#\";\n const peg$c4 = \"@\";\n const peg$c5 = \":\";\n const peg$c6 = \"(\";\n const peg$c7 = \",\";\n const peg$c8 = \")\";\n const peg$c9 = \"\\\\\\\"\";\n const peg$c10 = \"\\\\'\";\n const peg$c11 = \"\\\\`\";\n const peg$c12 = \"\\\"\\\"\\\"\";\n const peg$c13 = \"\\\\\\\"\\\"\\\"\";\n const peg$c14 = \"```\";\n const peg$c15 = \"\\\\```\";\n\n const peg$r0 = /^[a-zA-Z_]/;\n const peg$r1 = /^[a-zA-Z0-9_.\\-]/;\n const peg$r2 = /^[^\\n]/;\n const peg$r3 = /^[a-zA-Z]/;\n const peg$r4 = /^[@#]/;\n const peg$r5 = /^[a-zA-Z0-9_]/;\n const peg$r6 = /^[^ \\n,)]/;\n const peg$r7 = /^[ \\t]/;\n const peg$r8 = /^[ \\t\\n]/;\n const peg$r9 = /^[\\-=*#]/;\n const peg$r10 = /^['\"`]/;\n const peg$r11 = /^[^#\\n]/;\n const peg$r12 = /^[^# \\n]/;\n const peg$r13 = /^[\"]/;\n const peg$r14 = /^[^\"\\n]/;\n const peg$r15 = /^[']/;\n const peg$r16 = /^[^'\\n]/;\n const peg$r17 = /^[`]/;\n const peg$r18 = /^[^`\\n]/;\n\n const peg$e0 = peg$literalExpectation(\"\\n\", false);\n const peg$e1 = peg$literalExpectation(\"export \", false);\n const peg$e2 = peg$literalExpectation(\"=\", false);\n const peg$e3 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"_\"], false, false, false);\n const peg$e4 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \".\", \"-\"], false, false, false);\n const peg$e5 = peg$literalExpectation(\"#\", false);\n const peg$e6 = peg$literalExpectation(\"@\", false);\n const peg$e7 = peg$classExpectation([\"\\n\"], true, false, false);\n const peg$e8 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false, false);\n const peg$e9 = peg$literalExpectation(\":\", false);\n const peg$e10 = peg$classExpectation([\"@\", \"#\"], false, false, false);\n const peg$e11 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\"], false, false, false);\n const peg$e12 = peg$literalExpectation(\"(\", false);\n const peg$e13 = peg$literalExpectation(\",\", false);\n const peg$e14 = peg$literalExpectation(\")\", false);\n const peg$e15 = peg$classExpectation([\" \", \"\\n\", \",\", \")\"], true, false, false);\n const peg$e16 = peg$classExpectation([\" \", \"\\t\"], false, false, false);\n const peg$e17 = peg$classExpectation([\" \", \"\\t\", \"\\n\"], false, false, false);\n const peg$e18 = peg$classExpectation([\"-\", \"=\", \"*\", \"#\"], false, false, false);\n const peg$e19 = peg$classExpectation([\"'\", \"\\\"\", \"`\"], false, false, false);\n const peg$e20 = peg$classExpectation([\"#\", \"\\n\"], true, false, false);\n const peg$e21 = peg$classExpectation([\"#\", \" \", \"\\n\"], true, false, false);\n const peg$e22 = peg$classExpectation([\"\\\"\"], false, false, false);\n const peg$e23 = peg$literalExpectation(\"\\\\\\\"\", false);\n const peg$e24 = peg$classExpectation([\"\\\"\", \"\\n\"], true, false, false);\n const peg$e25 = peg$classExpectation([\"'\"], false, false, false);\n const peg$e26 = peg$literalExpectation(\"\\\\'\", false);\n const peg$e27 = peg$classExpectation([\"'\", \"\\n\"], true, false, false);\n const peg$e28 = peg$classExpectation([\"`\"], false, false, false);\n const peg$e29 = peg$literalExpectation(\"\\\\`\", false);\n const peg$e30 = peg$classExpectation([\"`\", \"\\n\"], true, false, false);\n const peg$e31 = peg$literalExpectation(\"\\\"\\\"\\\"\", false);\n const peg$e32 = peg$literalExpectation(\"\\\\\\\"\\\"\\\"\", false);\n const peg$e33 = peg$literalExpectation(\"```\", false);\n const peg$e34 = peg$literalExpectation(\"\\\\```\", false);\n const peg$e35 = peg$anyExpectation();\n\n function peg$f0() { return new ParsedEnvSpecBlankLine({ _location: location() }); }\n function peg$f1(contents) {\n return new ParsedEnvSpecFile(contents)\n }\n function peg$f2(preComments, key, value, postComment) {\n return new ParsedEnvSpecConfigItem({\n key,\n preComments,\n postComment,\n value,\n _location: location(),\n });\n }\n function peg$f3(comments, end) {\n return new ParsedEnvSpecCommentBlock({\n comments,\n divider: end instanceof ParsedEnvSpecDivider ? end : undefined,\n _location: location(),\n })\n }\n function peg$f4(leadingSpace, contents) {\n return new ParsedEnvSpecComment({\n contents,\n leadingSpace,\n _location: location(),\n })\n }\n function peg$f5(leadingSpace, contents) {\n return new ParsedEnvSpecComment({ contents, leadingSpace, _location: location() })\n }\n function peg$f6(leadingSpace, first, rest, postComment) {\n return new ParsedEnvSpecDecoratorComment({\n decorators: [first, ...rest],\n leadingSpace,\n postComment,\n _location: location(),\n })\n }\n function peg$f7(name, val) {\n return new ParsedEnvSpecDecorator({\n name,\n value: Array.isArray(val) ? val[1] : val,\n isBareFnCall: val && !Array.isArray(val),\n _location: location(),\n })\n }\n function peg$f8(name, args) {\n return new ParsedEnvSpecFunctionCall({\n name,\n args,\n _location: location(),\n });\n }\n function peg$f9(key, val) { return new ParsedEnvSpecKeyValuePair({ key, val }) }\n function peg$f10(values) {\n return new ParsedEnvSpecFunctionArgs({\n values: values || [],\n _location: location(),\n });\n }\n function peg$f11() { return new ParsedEnvSpecStaticValue({ rawValue: text(), _location: location() }) }\n function peg$f12(name, args) {\n return new ParsedEnvSpecFunctionCall({\n name,\n args,\n _location: location(),\n });\n }\n function peg$f13(key, val) { return new ParsedEnvSpecKeyValuePair({ key, val }) }\n function peg$f14(values) {\n return new ParsedEnvSpecFunctionArgs({\n values: values || [],\n _location: location(),\n });\n }\n function peg$f15() { return new ParsedEnvSpecStaticValue({ rawValue: text(), _location: location() }) }\n function peg$f16(leadingSpace, contents) {\n return new ParsedEnvSpecDivider({\n contents,\n leadingSpace,\n _location: location(),\n });\n }\n function peg$f17() { return new ParsedEnvSpecStaticValue({ rawValue: text(), _location: location() }) }\n function peg$f18() { return new ParsedEnvSpecStaticValue({ rawValue: text(), _location: location() }) }\n function peg$f19(quote) { return new ParsedEnvSpecStaticValue({ quote, rawValue: text(), _location: location() }) }\n function peg$f20(quote) { return new ParsedEnvSpecStaticValue({ quote, rawValue: text(), _location: location() }) }\n function peg$f21(quote) { return new ParsedEnvSpecStaticValue({ quote, rawValue: text(), _location: location() }) }\n function peg$f22(quote) { return new ParsedEnvSpecStaticValue({ quote, isMultiLine: true, rawValue: text(), _location: location() }) }\n function peg$f23(quote) { return new ParsedEnvSpecStaticValue({ quote, isMultiLine: true, rawValue: text(), _location: location() }) }\n function peg$f24(quote) { return new ParsedEnvSpecStaticValue({ quote, isMultiLine: true, rawValue: text(), _location: location() }) }\n function peg$f25(quote) { return new ParsedEnvSpecStaticValue({ quote, isMultiLine: true, rawValue: text(), _location: location() }) }\n let peg$currPos = options.peg$currPos | 0;\n let peg$savedPos = peg$currPos;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = peg$currPos;\n let peg$maxFailExpected = options.peg$maxFailExpected || [];\n let peg$silentFails = options.peg$silentFails | 0;\n\n let peg$result;\n\n if (options.startRule) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos,\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$getUnicode(pos = peg$currPos) {\n const cp = input.codePointAt(pos);\n if (cp === undefined) {\n return \"\";\n }\n return String.fromCodePoint(cp);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text, ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n return { type: \"class\", parts, inverted, ignoreCase, unicode };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description };\n }\n\n function peg$computePosDetails(pos) {\n let details = peg$posDetailsCache[pos];\n let p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n\n const res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column,\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column,\n },\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseEnvSpecFile() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseConfigItem();\n if (s2 === peg$FAILED) {\n s2 = peg$parseDivider();\n if (s2 === peg$FAILED) {\n s2 = peg$parseCommentBlock();\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 10) {\n s3 = peg$c0;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$f0();\n }\n s2 = s3;\n }\n }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseConfigItem();\n if (s2 === peg$FAILED) {\n s2 = peg$parseDivider();\n if (s2 === peg$FAILED) {\n s2 = peg$parseCommentBlock();\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 10) {\n s3 = peg$c0;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$f0();\n }\n s2 = s3;\n }\n }\n }\n }\n peg$savedPos = s0;\n s1 = peg$f1(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseConfigItem() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parseIgnoredDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseComment();\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s4 = peg$c0;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s4 !== peg$FAILED) {\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parseIgnoredDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseComment();\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s4 = peg$c0;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s4 !== peg$FAILED) {\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (input.substr(peg$currPos, 7) === peg$c1) {\n s4 = peg$c1;\n peg$currPos += 7;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parse_();\n s4 = peg$parseConfigItemKey();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s6 = peg$c2;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseConfigItemValue();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n s8 = peg$parse_();\n s9 = peg$currPos;\n s10 = peg$parseIgnoredDecoratorComment();\n if (s10 === peg$FAILED) {\n s10 = peg$parseDecoratorComment();\n if (s10 === peg$FAILED) {\n s10 = peg$parseComment();\n }\n }\n if (s10 !== peg$FAILED) {\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n s10 = peg$parse_n();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s1, s4, s7, s9);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseConfigItemKey() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r1.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r1.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n }\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseConfigItemValue() {\n let s0;\n\n s0 = peg$parseFunctionCall();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemultiLineString();\n if (s0 === peg$FAILED) {\n s0 = peg$parsequotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunquotedString();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseCommentBlock() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parseIgnoredDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseComment();\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_n();\n if (s4 !== peg$FAILED) {\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parseIgnoredDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseDecoratorComment();\n if (s3 === peg$FAILED) {\n s3 = peg$parseComment();\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_n();\n if (s4 !== peg$FAILED) {\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseDivider();\n if (s2 === peg$FAILED) {\n s2 = peg$parse_n();\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseComment() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseDivider();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 35) {\n s2 = peg$c3;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parse_();\n s3 = input.substring(s3, peg$currPos);\n s4 = peg$currPos;\n s5 = peg$currPos;\n s6 = peg$currPos;\n s7 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 64) {\n s8 = peg$c4;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n peg$silentFails--;\n if (s8 === peg$FAILED) {\n s7 = undefined;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = [];\n s9 = input.charAt(peg$currPos);\n if (peg$r2.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = input.charAt(peg$currPos);\n if (peg$r2.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n s7 = [s7, s8];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s5 = input.substring(s5, peg$currPos);\n s4 = input.substring(s4, peg$currPos);\n peg$savedPos = s0;\n s0 = peg$f4(s3, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseIgnoredDecoratorComment() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse_();\n s2 = input.substring(s2, peg$currPos);\n s3 = peg$currPos;\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s5 = peg$c4;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r3.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s7 !== peg$FAILED) {\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = input.charAt(peg$currPos);\n if (peg$r3.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n }\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s7 = peg$c5;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n if (s7 !== peg$FAILED) {\n s8 = [];\n s9 = input.charAt(peg$currPos);\n if (peg$r2.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = input.charAt(peg$currPos);\n if (peg$r2.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n s5 = [s5, s6, s7, s8];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s5 = peg$c4;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r3.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s7 !== peg$FAILED) {\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = input.charAt(peg$currPos);\n if (peg$r3.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n }\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n peg$silentFails++;\n s9 = input.charAt(peg$currPos);\n if (peg$r4.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n peg$silentFails--;\n if (s9 === peg$FAILED) {\n s8 = undefined;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n s9 = [];\n s10 = input.charAt(peg$currPos);\n if (peg$r2.test(s10)) {\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = input.charAt(peg$currPos);\n if (peg$r2.test(s10)) {\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n s5 = [s5, s6, s7, s8, s9];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseDecoratorComment() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse_();\n s2 = input.substring(s2, peg$currPos);\n s3 = peg$parseDecorator();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseDecorator();\n if (s7 !== peg$FAILED) {\n s5 = s7;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseDecorator();\n if (s7 !== peg$FAILED) {\n s5 = s7;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n s5 = peg$parse_();\n s6 = peg$currPos;\n s7 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s8 = peg$c3;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s8 !== peg$FAILED) {\n s9 = [];\n s10 = input.charAt(peg$currPos);\n if (peg$r2.test(s10)) {\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = input.charAt(peg$currPos);\n if (peg$r2.test(s10)) {\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n s8 = [s8, s9];\n s7 = s8;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n s6 = input.substring(s6, peg$currPos);\n peg$savedPos = s0;\n s0 = peg$f6(s2, s3, s4, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseDecorator() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseDecoratorName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDecoratorFunctionArgs();\n if (s3 === peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c2;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDecoratorValue();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f7(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseDecoratorName() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = input.charAt(peg$currPos);\n if (peg$r3.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r5.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r5.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n }\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseDecoratorValue() {\n let s0;\n\n s0 = peg$parseDecoratorFunctionCall();\n if (s0 === peg$FAILED) {\n s0 = peg$parsequotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunquotedStringWithoutSpaces();\n }\n }\n\n return s0;\n }\n\n function peg$parseDecoratorFunctionCall() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseFunctionName();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseDecoratorFunctionArgs();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f8(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseDecoratorFunctionArgs() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_decWs();\n s3 = peg$currPos;\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parseFunctionArgKeyName();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDecoratorFunctionArgValue();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s5;\n s5 = peg$f9(s6, s8);\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$parseDecoratorFunctionArgValue();\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$currPos;\n s7 = peg$parse_decWs();\n if (input.charCodeAt(peg$currPos) === 44) {\n s8 = peg$c7;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_decWs();\n s7 = [s7, s8, s9];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s6 = peg$currPos;\n s7 = peg$parseFunctionArgKeyName();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parseDecoratorFunctionArgValue();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s6;\n s6 = peg$f9(s7, s9);\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 === peg$FAILED) {\n s6 = peg$parseDecoratorFunctionArgValue();\n }\n if (s6 === peg$FAILED) {\n peg$currPos = s5;\n s5 = peg$FAILED;\n } else {\n s5 = s6;\n }\n } else {\n s5 = s6;\n }\n }\n if (s4.length < 1) {\n peg$currPos = s3;\n s3 = peg$FAILED;\n } else {\n s3 = s4;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = peg$currPos;\n s5 = peg$parse_decWs();\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c7;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n s5 = peg$parse_decWs();\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c8;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f10(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseDecoratorFunctionArgValue() {\n let s0, s1, s2, s3;\n\n s0 = peg$parseDecoratorFunctionCall();\n if (s0 === peg$FAILED) {\n s0 = peg$parsequotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r6.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r6.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f11();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parse_decWs() {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r7.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 10) {\n s2 = peg$c0;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r7.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r7.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n if (input.charCodeAt(peg$currPos) === 35) {\n s4 = peg$c3;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = input.charAt(peg$currPos);\n if (peg$r7.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = input.charAt(peg$currPos);\n if (peg$r7.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n s2 = [s2, s3, s4, s5];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r7.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 10) {\n s2 = peg$c0;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r7.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r7.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n if (input.charCodeAt(peg$currPos) === 35) {\n s4 = peg$c3;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = input.charAt(peg$currPos);\n if (peg$r7.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = input.charAt(peg$currPos);\n if (peg$r7.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n s2 = [s2, s3, s4, s5];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseFunctionCall() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseFunctionName();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseFunctionArgs();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f12(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFunctionName() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = input.charAt(peg$currPos);\n if (peg$r3.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r5.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r5.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n }\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseFunctionArgs() {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_valWs();\n s3 = peg$currPos;\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parseFunctionArgKeyName();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseFunctionArgValue();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s5;\n s5 = peg$f13(s6, s8);\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$parseFunctionArgValue();\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$currPos;\n s7 = peg$parse_valWs();\n if (input.charCodeAt(peg$currPos) === 44) {\n s8 = peg$c7;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_valWs();\n s7 = [s7, s8, s9];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s6 = peg$currPos;\n s7 = peg$parseFunctionArgKeyName();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parseFunctionArgValue();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s6;\n s6 = peg$f13(s7, s9);\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 === peg$FAILED) {\n s6 = peg$parseFunctionArgValue();\n }\n if (s6 === peg$FAILED) {\n peg$currPos = s5;\n s5 = peg$FAILED;\n } else {\n s5 = s6;\n }\n } else {\n s5 = s6;\n }\n }\n if (s4.length < 1) {\n peg$currPos = s3;\n s3 = peg$FAILED;\n } else {\n s3 = s4;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = peg$currPos;\n s5 = peg$parse_valWs();\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c7;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n s5 = peg$parse_valWs();\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c8;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f14(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFunctionArgKeyName() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = input.charAt(peg$currPos);\n if (peg$r3.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r5.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r5.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n }\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseFunctionArgValue() {\n let s0, s1, s2, s3;\n\n s0 = peg$parseFunctionCall();\n if (s0 === peg$FAILED) {\n s0 = peg$parsequotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r6.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r6.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f15();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parse_valWs() {\n let s0, s1;\n\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r8.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r8.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n }\n\n return s0;\n }\n\n function peg$parseDivider() {\n let s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse_();\n s2 = input.substring(s2, peg$currPos);\n s3 = peg$currPos;\n s4 = peg$currPos;\n s5 = peg$currPos;\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r9.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = input.charAt(peg$currPos);\n if (peg$r9.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n }\n if (s6.length < 3) {\n peg$currPos = s5;\n s5 = peg$FAILED;\n } else {\n s5 = s6;\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_n();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f16(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseunquotedString() {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n s3 = peg$parse_();\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = input.charAt(peg$currPos);\n if (peg$r10.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = input.charAt(peg$currPos);\n if (peg$r11.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = input.charAt(peg$currPos);\n if (peg$r11.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f17();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseunquotedStringWithoutSpaces() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = input.charAt(peg$currPos);\n if (peg$r10.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = input.charAt(peg$currPos);\n if (peg$r12.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = input.charAt(peg$currPos);\n if (peg$r12.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f18();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsequotedString() {\n let s0;\n\n s0 = peg$parseDQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseSQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseBQuotedString();\n }\n }\n\n return s0;\n }\n\n function peg$parseDQuotedString() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r13.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s3 = peg$c9;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s3 === peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r14.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s3 = peg$c9;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s3 === peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r14.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n s3 = input.charAt(peg$currPos);\n if (peg$r13.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f19(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseSQuotedString() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r15.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s3 = peg$c10;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s3 === peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r16.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s3 = peg$c10;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s3 === peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r16.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n }\n s3 = input.charAt(peg$currPos);\n if (peg$r15.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f20(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseBQuotedString() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r17.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (input.substr(peg$currPos, 2) === peg$c11) {\n s3 = peg$c11;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s3 === peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r18.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (input.substr(peg$currPos, 2) === peg$c11) {\n s3 = peg$c11;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s3 === peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r18.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n }\n }\n s3 = input.charAt(peg$currPos);\n if (peg$r17.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f21(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsemultiLineString() {\n let s0;\n\n s0 = peg$parsesingleSQuotedMultiLineString();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesingleDQuotedMultiLineString();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetripleDQuotedMultiLineString();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetripleBQuotedMultiLineString();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesingleSQuotedMultiLineString() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r15.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s5 = peg$c10;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r16.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s5 = peg$c10;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r16.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s5 = peg$c10;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r16.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s5 = peg$c10;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r16.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s4 = peg$c10;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s4 === peg$FAILED) {\n s4 = input.charAt(peg$currPos);\n if (peg$r16.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s4 = peg$c10;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s4 === peg$FAILED) {\n s4 = input.charAt(peg$currPos);\n if (peg$r16.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n }\n }\n s4 = input.charAt(peg$currPos);\n if (peg$r15.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f22(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsesingleDQuotedMultiLineString() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r13.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s5 = peg$c9;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r14.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s5 = peg$c9;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r14.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s5 = peg$c9;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r14.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s5 = peg$c9;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s5 === peg$FAILED) {\n s5 = input.charAt(peg$currPos);\n if (peg$r14.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s4 = peg$c9;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s4 === peg$FAILED) {\n s4 = input.charAt(peg$currPos);\n if (peg$r14.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s4 = peg$c9;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s4 === peg$FAILED) {\n s4 = input.charAt(peg$currPos);\n if (peg$r14.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n s4 = input.charAt(peg$currPos);\n if (peg$r13.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f23(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetripleDQuotedMultiLineString() {\n let s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 4) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s7 = peg$c12;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 4) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s7 = peg$c12;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 4) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s7 = peg$c12;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 4) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s7 = peg$c12;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (input.substr(peg$currPos, 4) === peg$c13) {\n s4 = peg$c13;\n peg$currPos += 4;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s4 === peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s6 = peg$c12;\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = input.charAt(peg$currPos);\n if (peg$r2.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (input.substr(peg$currPos, 4) === peg$c13) {\n s4 = peg$c13;\n peg$currPos += 4;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s4 === peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s6 = peg$c12;\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = input.charAt(peg$currPos);\n if (peg$r2.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n }\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s4 = peg$c12;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f24(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetripleBQuotedMultiLineString() {\n let s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 4) === peg$c15) {\n s5 = peg$c15;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s7 = peg$c14;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 4) === peg$c15) {\n s5 = peg$c15;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s7 = peg$c14;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 4) === peg$c15) {\n s5 = peg$c15;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s7 = peg$c14;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 4) === peg$c15) {\n s5 = peg$c15;\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s7 = peg$c14;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = undefined;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = input.charAt(peg$currPos);\n if (peg$r2.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 10) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (input.substr(peg$currPos, 4) === peg$c15) {\n s4 = peg$c15;\n peg$currPos += 4;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s4 === peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s6 = peg$c14;\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = input.charAt(peg$currPos);\n if (peg$r2.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (input.substr(peg$currPos, 4) === peg$c15) {\n s4 = peg$c15;\n peg$currPos += 4;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s4 === peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s6 = peg$c14;\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = undefined;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = input.charAt(peg$currPos);\n if (peg$r2.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n }\n if (input.substr(peg$currPos, 3) === peg$c14) {\n s4 = peg$c14;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f25(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parse_n() {\n let s0, s1;\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c0;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$silentFails++;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e35); }\n }\n peg$silentFails--;\n if (s1 === peg$FAILED) {\n s0 = undefined;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n let s0, s1;\n\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r7.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r7.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n\n return s0;\n }\n\n function peg$parse__() {\n let s0, s1;\n\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r7.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r7.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);\n function peg$throw() {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos,\n peg$success,\n peg$throw: peg$success ? undefined : peg$throw,\n });\n }\n if (peg$success) {\n return peg$result;\n } else {\n peg$throw();\n }\n}\n\nconst peg$allowedStartRules = [\n \"EnvSpecFile\"\n];\n\nexport {\n peg$allowedStartRules as StartRules,\n peg$SyntaxError as SyntaxError,\n peg$parse as parse\n};\n","import { ParsedEnvSpecFile } from './classes.js';\nexport * from './classes.js';\nexport * from './updater';\nexport * from './expand';\n\n// @ts-ignore\nimport * as peggyParser from './grammar.js';\n\nexport function parseEnvSpecDotEnvFile(source: string): ParsedEnvSpecFile {\n return peggyParser.parse(source.replaceAll('\\r\\n', '\\n'));\n}\n","// see https://www.npmjs.com/package/no-try for inspiration\n// although their focus was not on the typing...\n// this is more about avoiding an explicitly typed `let thing: TypeOfThingFromInsideTry;` above the try/catch scope\n\n\nfunction isPromise(obj: any) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n\n/** try-catch alternative that exposes a _typed response_ rather than having it stuck in the try's scope */\nexport async function tryCatch<T>(\n tryFn: () => T | Promise<T>,\n catchFn: (e: any) => void | Promise<void>,\n): Promise<T | undefined> {\n try {\n return await tryFn();\n } catch (err) {\n const catchResult = catchFn(err);\n if (isPromise(catchResult)) {\n await catchResult;\n }\n }\n}\n","type GraphNodeId = string;\nexport type GraphAdjacencyList = Record<GraphNodeId, Array<GraphNodeId>>;\n\n/** Returns all transitive dependencies of a given node (not including the node itself) */\nexport function getTransitiveDeps(key: GraphNodeId, adjacencyList: GraphAdjacencyList): Array<GraphNodeId> {\n const visited = new Set<GraphNodeId>();\n const stack = [...(adjacencyList[key] || [])];\n while (stack.length > 0) {\n const current = stack.pop()!;\n if (!visited.has(current)) {\n visited.add(current);\n for (const dep of adjacencyList[current] || []) {\n stack.push(dep);\n }\n }\n }\n return Array.from(visited);\n}\n\nexport function findGraphCycles(graph: GraphAdjacencyList): Array<Array<GraphNodeId>> {\n const visited = new Set<GraphNodeId>();\n const recursionStack = new Set<GraphNodeId>();\n const cycles: Array<Array<GraphNodeId>> = [];\n const currentPath: Array<GraphNodeId> = [];\n\n function dfs(node: GraphNodeId) {\n // If node is in recursion stack, we found a cycle\n if (recursionStack.has(node)) {\n // Find the start of the cycle in the current path\n const cycleStart = currentPath.indexOf(node);\n // Extract the cycle from the current path\n const cycle = currentPath.slice(cycleStart);\n cycles.push(cycle);\n // cycles.push([...cycle, node]); // Add the node again to complete the cycle\n return;\n }\n\n // If node is visited and not in recursion stack, no cycle\n if (visited.has(node)) {\n return;\n }\n\n // Mark node as visited and add to recursion stack\n visited.add(node);\n recursionStack.add(node);\n currentPath.push(node);\n\n // Visit all neighbors\n for (const neighbor of graph[node] || []) {\n dfs(neighbor);\n }\n\n // Remove node from recursion stack and current path\n recursionStack.delete(node);\n currentPath.pop();\n }\n\n // Check all nodes in case graph is disconnected\n for (const node of Object.keys(graph)) {\n if (!visited.has(node)) {\n dfs(node);\n }\n }\n\n return cycles;\n}\n\n\n","import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport _ from '@env-spec/utils/my-dash';\nimport type { EnvGraph } from './env-graph';\nimport type { TypeGenItemInfo } from './config-item';\n\n\nconst AUTOGENERATED_FILE_BANNER = `\n// 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑\n// 🛑 THIS IS AN AUTOGENERATED FILE - DO NOT EDIT DIRECTLY 🛑\n// 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑\n`;\n\n\nconst ICON_SIZE = 20;\n\nlet iconCacheFolderInit = false;\nconst iconInMemoryCache: Record<string, string> = {};\n\nasync function fetchIconSvg(\n iconifyName: string,\n color = '808080', // neutral gray that should appear on black or white bg\n iconCacheFolder = '/tmp/varlock-icon-cache', // TODO: maybe move icon cache to ~/.varlock dir?\n) {\n // some notes about icons\n // - using a URL that points to an svg doesn't work (but png/jpg do work)\n // - but embedding data url with an svg works fine\n // - we are fetching them on demand and caching them\n // - and then applying a color if one is set or falling back to a neutral gray that should show up on either black or white\n\n if (!iconCacheFolderInit) {\n fs.mkdirSync(iconCacheFolder, { recursive: true });\n iconCacheFolderInit = true;\n }\n\n const iconPath = `${iconCacheFolder}/${iconifyName}-${ICON_SIZE}.svg`;\n\n let svgSrc: string | undefined;\n if (iconInMemoryCache[iconPath]) {\n svgSrc = iconInMemoryCache[iconPath];\n } else if (fs.existsSync(iconPath)) {\n const svgFileBuffer = await fs.promises.readFile(iconPath, 'utf-8');\n svgSrc = svgFileBuffer.toString();\n iconInMemoryCache[iconPath] = svgSrc;\n } else {\n try {\n const iconSvg = await fetch(`https://api.iconify.design/${iconifyName.replace(':', '/')}.svg?height=${ICON_SIZE}`);\n svgSrc = await iconSvg.text();\n } catch (err) {\n return;\n }\n if (!svgSrc) return;\n\n\n // TODO: optionally re-enable svgo - but only as a peer dependency?\n // // run it through svgo to try to shrink it down a little\n // const optimizedSvgResult = optimize(svgSrc, {\n // multipass: true,\n // });\n // if (!optimizedSvgResult.data) throw new Error(`Failed to optimize SVG icon - ${iconifyName}`);\n // svgSrc = optimizedSvgResult.data as string;\n\n if (svgSrc) {\n await fs.promises.writeFile(iconPath, svgSrc, 'utf-8');\n iconInMemoryCache[iconPath] = svgSrc;\n }\n }\n\n\n const hexColor = color.startsWith('#') ? color : `#${color}`;\n const colorizedSvg = svgSrc.replaceAll('currentColor', hexColor);\n return colorizedSvg;\n}\n\n\n/** Compute the TS type string for an item (extracted for reuse in augmentation blocks) */\nfunction getItemTsType(info: TypeGenItemInfo): string {\n const dataType = info.dataType;\n const dataTypeName = dataType?.name;\n\n if (dataType) {\n if (dataTypeName === 'number' || dataTypeName === 'port') return 'number';\n if (dataTypeName === 'boolean') return 'boolean';\n if (dataTypeName === 'simple-object') return 'Record<string, any>';\n if (dataTypeName === 'enum') {\n const rawEnumOptions = (dataType._rawDef as any)._rawEnumOptions;\n if (!rawEnumOptions?.length) return 'never';\n return _.map(rawEnumOptions, JSON.stringify).join(' | ');\n }\n }\n return 'string';\n}\n\nexport async function getTsDefinitionForItem(info: TypeGenItemInfo, indentLevel = 0) {\n const i = _.times(indentLevel, () => ' ').join('');\n const itemSrc = [];\n\n // TODO: also will need to figure out how we deal with null values\n // since we might need something like `key: string | null` rather than `key?: string`\n\n const jsDocLines = [];\n\n jsDocLines.push(`**${info.key}**${info.isSensitive ? ' 🔐 _sensitive_' : ''}`);\n\n if (info.description) jsDocLines.push(...info.description.split('\\n'));\n // type-description?\n\n const iconName = info.icon;\n if (iconName) {\n // TODO: pass through custom icon color? (already exists on fetchIconSvg)\n const iconSvg = await fetchIconSvg(iconName);\n if (iconSvg) jsDocLines.push(`![icon](data:image/svg+xml;utf-8,${encodeURIComponent(iconSvg)}) `);\n }\n\n const docsLinks = info.docsLinks;\n if (docsLinks.length) {\n jsDocLines.push('');\n docsLinks.forEach((docsEntry) => {\n // see https://jsdoc.app/tags-see for format info\n const docsLink = _.compact([docsEntry.url, docsEntry.description]).join(' | ');\n jsDocLines.push(`📚 {@link ${docsLink}}`);\n });\n }\n\n // more ideas:\n // - we have an `exampleValue` property we could include\n // - there's also a `@example` jsdoc directive which is meant to show a code example\n // - could add info about the original source of an item if it has been picked / imported\n // - could include additional text about type settings / validations\n\n if (jsDocLines.length === 1) {\n itemSrc.push(`/** ${jsDocLines[0]} */`);\n } else if (jsDocLines.length > 1) {\n itemSrc.push(...[\n '/**',\n // extra 2 trailing spaces are needed to make line breaks visible\n // escape `*/` sequences to prevent premature comment closure\n ..._.flatMap(jsDocLines, (line) => [` * ${line.replace(/\\*\\//g, '* /')} `]),\n ' */',\n ]);\n }\n\n const itemTsType = getItemTsType(info);\n const isRequired = info.isRequired && !info.isRequiredDynamic;\n itemSrc.push(`${info.key}${isRequired ? '' : '?'}: ${itemTsType};`);\n itemSrc.push('');\n return _.map(itemSrc, (line) => `${i}${line}`);\n}\n\nexport async function generateTsTypesSrc(items: Array<TypeGenItemInfo>) {\n // TODO: first check if schema is valid - we dont care if values are invalid\n\n const tsSrc = [\n AUTOGENERATED_FILE_BANNER,\n '// @ts-nocheck',\n // might want to add some options to let users inject this, or somehow detect eslint, but fine for now\n '/* eslint-disable */',\n 'export type CoercedEnvSchema = {',\n ];\n\n for (const info of items) {\n // generate the TS type for the item in the full schema\n tsSrc.push(...await getTsDefinitionForItem(info, 1));\n }\n\n tsSrc.push('};\\n');\n\n // Generate a unique type alias so that `declare module` and `declare global` blocks\n // reference a file-scoped name that won't collide across packages in a monorepo.\n // Without this, multiple env.d.ts files exporting the same `CoercedEnvSchema` /\n // `EnvSchemaAsStrings` names can confuse TS when both are in the same compilation.\n const schemaHash = crypto.createHash('md5')\n .update(items.map((i) => i.key).sort().join(','))\n .digest('hex')\n .slice(0, 8);\n const schemaAlias = `_CoercedEnvSchema_${schemaHash}`;\n const stringsAlias = `_EnvSchemaAsStrings_${schemaHash}`;\n\n tsSrc.push(`type ${schemaAlias} = CoercedEnvSchema;`);\n\n const exposedNonSensitiveKeys: Array<string> = [];\n for (const info of items) {\n if (!info.isSensitive) exposedNonSensitiveKeys.push(info.key);\n }\n\n tsSrc.push(`\ndeclare module 'varlock/env' {\n export interface TypedEnvSchema extends Readonly<${schemaAlias}> {}\n export interface PublicTypedEnvSchema extends Readonly<Pick<${schemaAlias}, '${exposedNonSensitiveKeys.join(\"' | '\")}'>> {}\n}\n`);\n\n // add types for process.env too\n // remap types for process.env\n // - enums - stay string unions if all options are strings\n // - boolean -> 'true' | 'false'\n // - everything else -> string\n tsSrc.push(`\nexport type EnvSchemaAsStrings = {\n [Property in keyof CoercedEnvSchema]:\n CoercedEnvSchema[Property] extends string ? CoercedEnvSchema[Property]\n : (CoercedEnvSchema[Property] extends boolean ? ('true' | 'false') : string)\n};\n`);\n\n tsSrc.push(`type ${stringsAlias} = EnvSchemaAsStrings;`);\n\n // TODO: allow user to pass in options to control this?\n // although because we add the @generateTypes decorator an init time\n // we may need our integrations to specify what settings they prefer\n const importMetaEnvTypes = true;\n const processEnvTypes = true;\n\n const IMPORT_META_AUGMENTATION = `\n // add types for global import.meta.env\n interface ImportMetaEnv extends ${stringsAlias} {}\n interface ImportMeta {\n readonly env: ImportMetaEnv;\n }`;\n const PROCESS_ENV_AUGMENTATION = `\n // add types for global process.env\n namespace NodeJS {\n interface ProcessEnv extends ${stringsAlias} {}\n }`;\n\n // TODO: should add an option to enable/disable\n tsSrc.push(...[\n 'declare global {',\n importMetaEnvTypes && IMPORT_META_AUGMENTATION,\n processEnvTypes && PROCESS_ENV_AUGMENTATION,\n '}',\n ].filter(Boolean));\n\n return tsSrc.join('\\n');\n}\n\nexport async function generateTypes(graph: EnvGraph, lang: string, typesPath: string) {\n if (lang !== 'ts') throw new Error(`Unsupported @generateTypes lang: ${lang}`);\n\n // Compute type gen info from non-env-specific definitions only\n // Skip items that exist only in env-specific sources\n const items: Array<TypeGenItemInfo> = [];\n for (const itemKey of graph.sortedConfigKeys) {\n const configItem = graph.configSchema[itemKey];\n if (!configItem.defsForTypeGeneration.length) continue;\n items.push(await configItem.getTypeGenInfo());\n }\n\n const tsSrc = await generateTsTypesSrc(items);\n await fs.promises.writeFile(typesPath, tsSrc, 'utf-8');\n}\n","import _ from '@env-spec/utils/my-dash';\n\nimport { FileBasedDataSource, type EnvGraphDataSource } from './data-source';\nimport type { VarlockErrorLocationDetails } from './errors';\n\nexport function getErrorLocation(source: EnvGraphDataSource, parserNode: any): VarlockErrorLocationDetails | undefined {\n if (!(source instanceof FileBasedDataSource)) return;\n if (!parserNode.data || !parserNode.data._location || !_.isNumber(parserNode.data._location.start.line)) return;\n const lineNumber = parserNode.data._location?.start.line as number;\n const colNumber = parserNode.data._location?.start.column as number;\n return {\n id: source.fullPath,\n lineNumber,\n colNumber,\n lineStr: source.rawContents?.split('\\n')[lineNumber - 1]?.trim() || '',\n };\n}\n","/**\n * Shared parsers for CI env values: ref → branch, repo string → { owner, name }, env value → deployment enum.\n */\n\nexport type DeploymentEnvironment = (\n 'development'\n | 'preview'\n | 'staging'\n | 'production'\n | 'test'\n);\n\nexport interface RepoParts {\n owner: string;\n name: string;\n}\n\n/**\n * Parse a git ref (e.g. GITHUB_REF) into a short branch name.\n * - refs/heads/feat/foo → feat/foo\n * - refs/pull/123/merge → undefined (PR merge ref; not a branch name)\n */\nexport function refToBranch(ref: string | undefined): string | undefined {\n if (!ref || typeof ref !== 'string') return undefined;\n const s = ref.trim();\n if (s.startsWith('refs/heads/')) return s.slice('refs/heads/'.length);\n if (s.startsWith('refs/head/')) return s.slice('refs/head/'.length);\n if (s.startsWith('refs/pull/')) return undefined;\n return s;\n}\n\n/**\n * Parse a \"owner/repo\" string into { owner, name }.\n * Handles URLs that end with owner/repo or .git.\n */\nexport function parseRepoSlug(s: string | undefined): RepoParts | undefined {\n if (!s || typeof s !== 'string') return undefined;\n const trimmed = s.trim();\n if (!trimmed) return undefined;\n // URL like https://github.com/owner/repo or https://github.com/owner/repo.git\n let slug = trimmed;\n try {\n if (trimmed.includes('://') || trimmed.startsWith('git@')) {\n const url = new URL(trimmed.replace(/^git@([^:]+):/, 'https://$1/'));\n const path = url.pathname.replace(/^\\/+/, '').replace(/\\.git$/, '');\n const parts = path.split('/');\n if (parts.length >= 2) {\n slug = `${parts[0]}/${parts[1]}`;\n }\n }\n } catch {\n // not a URL, use as-is\n }\n const idx = slug.indexOf('/');\n if (idx <= 0 || idx === slug.length - 1) return undefined;\n const owner = slug.slice(0, idx);\n const name = slug.slice(idx + 1).replace(/\\.git$/, '');\n if (!owner || !name) return undefined;\n return { owner, name };\n}\n\n/**\n * Parse PR number from env (string or number). For URLs (e.g. CircleCI CIRCLE_PULL_REQUEST),\n * extract the number from the path.\n */\nexport function parsePrNumber(value: string | number | undefined): number | undefined {\n if (value === undefined || value === '') return undefined;\n if (typeof value === 'number' && Number.isInteger(value) && value > 0) return value;\n const s = String(value).trim();\n if (!s) return undefined;\n const n = parseInt(s, 10);\n if (!Number.isNaN(n) && n > 0) return n;\n // URL like https://github.com/owner/repo/pull/123\n const match = s.match(/\\/pull\\/(\\d+)(?:\\/|$)/) ?? s.match(/(\\d+)$/);\n if (match) {\n const num = parseInt(match[1], 10);\n if (!Number.isNaN(num) && num > 0) return num;\n }\n return undefined;\n}\n\n/**\n * Shorten commit SHA to 7 chars (or keep as-is if already short).\n */\nexport function shortSha(sha: string | undefined): string | undefined {\n if (!sha || typeof sha !== 'string') return undefined;\n const s = sha.trim();\n if (s.length >= 7) return s.slice(0, 7);\n return s || undefined;\n}\n\n/**\n * Map a platform-specific string to our normalized deployment environment.\n * Uses the given map (platform value -> enum); lookup is case-insensitive, then falls back to raw value.\n */\nexport function mapToDeploymentEnvironment(\n value: string | undefined,\n map: Record<string, DeploymentEnvironment>,\n): DeploymentEnvironment | undefined {\n if (!value || typeof value !== 'string') return undefined;\n const trimmed = value.trim();\n const key = trimmed.toLowerCase();\n return map[key] ?? map[trimmed];\n}\n","import type { EnvRecord, PlatformDefinition } from './types';\nimport {\n parsePrNumber,\n parseRepoSlug,\n refToBranch,\n} from './normalize';\n\n/** Helper: detect when env key has one of the values */\nfunction envEq(name: string, value: string): (env: EnvRecord) => boolean {\n return (env) => env[name] === value;\n}\n\n/** Helper: detect when all of the env vars are set */\nfunction envAll(...names: Array<string>): (env: EnvRecord) => boolean {\n return (env) => names.every((n) => !!env[n]);\n}\n\n/** Helper: detect when any of the env vars are set */\nfunction envAny(...names: Array<string>): (env: EnvRecord) => boolean {\n return (env) => names.some((n) => !!env[n]);\n}\n\nexport const PLATFORMS: Array<PlatformDefinition> = [\n // Very common (alpha) ---\n {\n name: 'Cloudflare Pages',\n docsUrl: 'https://developers.cloudflare.com/pages/configuration/build-configuration/#environment-variables',\n detect: 'CF_PAGES',\n branch: 'CF_PAGES_BRANCH',\n commitSha: 'CF_PAGES_COMMIT_SHA',\n buildUrl: 'CF_PAGES_URL',\n },\n {\n name: 'Cloudflare Workers',\n docsUrl: 'https://developers.cloudflare.com/workers/ci-cd/builds/configuration/#default-variables',\n detect: 'WORKERS_CI',\n branch: 'WORKERS_CI_BRANCH',\n commitSha: 'WORKERS_CI_COMMIT_SHA',\n runId: 'WORKERS_CI_BUILD_UUID',\n },\n {\n name: 'GitHub Actions',\n docsUrl: 'https://docs.github.com/en/actions/learn-github-actions/variables',\n detect: 'GITHUB_ACTIONS',\n isPR: (env) => env.GITHUB_EVENT_NAME === 'pull_request',\n prNumber: (env) => parsePrNumber(env.GITHUB_EVENT_NUMBER),\n repo: (env) => parseRepoSlug(env.GITHUB_REPOSITORY),\n branch: (env) => env.GITHUB_HEAD_REF || refToBranch(env.GITHUB_REF),\n commitSha: 'GITHUB_SHA',\n runId: 'GITHUB_RUN_ID',\n buildUrl: (env) => {\n const server = env.GITHUB_SERVER_URL;\n const repo = env.GITHUB_REPOSITORY;\n const runId = env.GITHUB_RUN_ID;\n if (server && repo && runId) return `${server}/${repo}/actions/runs/${runId}`;\n return undefined;\n },\n workflowName: 'GITHUB_WORKFLOW',\n actor: 'GITHUB_ACTOR',\n eventName: 'GITHUB_EVENT_NAME',\n },\n {\n name: 'GitLab CI',\n docsUrl: 'https://docs.gitlab.com/ee/ci/variables/predefined_variables.html',\n detect: 'GITLAB_CI',\n isPR: 'CI_MERGE_REQUEST_ID',\n prNumber: 'CI_MERGE_REQUEST_ID',\n repo: (env) => {\n const path = env.CI_PROJECT_PATH;\n if (!path) return undefined;\n const parts = path.split('/').filter(Boolean);\n if (parts.length >= 2) {\n return { owner: parts.slice(0, -1).join('/'), name: parts[parts.length - 1]! };\n }\n if (parts.length === 1) return { owner: parts[0]!, name: parts[0]! };\n return undefined;\n },\n branch: 'CI_COMMIT_REF_NAME',\n commitSha: 'CI_COMMIT_SHA',\n runId: 'CI_PIPELINE_ID',\n buildUrl: 'CI_PIPELINE_URL',\n },\n {\n name: 'Netlify CI',\n docsUrl: 'https://docs.netlify.com/configure-builds/environment-variables',\n detect: 'NETLIFY',\n isPR: (env) => env.PULL_REQUEST !== undefined && env.PULL_REQUEST !== 'false',\n repo: (env) => parseRepoSlug(env.REPOSITORY_URL),\n branch: (env) => env.HEAD ?? env.BRANCH,\n commitSha: 'COMMIT_REF',\n runId: 'BUILD_ID',\n buildUrl: (env) => (env.DEPLOY_URL ? `https://${env.DEPLOY_URL}` : undefined),\n environment: {\n var: 'CONTEXT',\n map: {\n production: 'production',\n 'deploy-preview': 'preview',\n 'branch-deploy': 'preview',\n dev: 'development',\n },\n },\n },\n {\n name: 'Vercel',\n docsUrl: 'https://vercel.com/docs/environment-variables/system-environment-variables',\n detect: envAny('NOW_BUILDER', 'VERCEL'),\n isPR: 'VERCEL_GIT_PULL_REQUEST_ID',\n prNumber: 'VERCEL_GIT_PULL_REQUEST_ID',\n repo: (env) => {\n const owner = env.VERCEL_GIT_REPO_OWNER;\n const name = env.VERCEL_GIT_REPO_SLUG;\n if (owner && name) return { owner, name };\n return parseRepoSlug(env.VERCEL_GIT_REPO_SLUG);\n },\n branch: 'VERCEL_GIT_COMMIT_REF',\n commitSha: 'VERCEL_GIT_COMMIT_SHA',\n buildUrl: (env) => (env.VERCEL_URL ? `https://${env.VERCEL_URL}` : undefined),\n environment: 'VERCEL_ENV',\n runId: 'VERCEL_DEPLOYMENT_ID',\n },\n\n // Somewhat common (alpha) ---\n {\n name: 'AWS CodeBuild',\n docsUrl: 'https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html',\n detect: 'CODEBUILD_BUILD_ARN',\n isPR: (env) => ['PULL_REQUEST_CREATED', 'PULL_REQUEST_UPDATED', 'PULL_REQUEST_REOPENED'].includes(\n env.CODEBUILD_WEBHOOK_EVENT ?? '',\n ),\n repo: (env) => parseRepoSlug(env.CODEBUILD_SOURCE_REPO_URL),\n branch: (env) => {\n const ref = env.CODEBUILD_WEBHOOK_HEAD_REF;\n return ref ? ref.replace(/^refs\\/heads\\//, '') : undefined;\n },\n commitSha: 'CODEBUILD_RESOLVED_SOURCE_VERSION',\n },\n {\n name: 'Azure Pipelines',\n docsUrl:\n 'https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml',\n detect: 'TF_BUILD',\n isPR: (env) => env.BUILD_REASON === 'PullRequest',\n prNumber: (env) => parsePrNumber(env.SYSTEM_PULLREQUEST_PULLREQUESTID),\n branch: 'BUILD_SOURCEBRANCHNAME',\n commitSha: 'BUILD_SOURCEVERSION',\n },\n {\n name: 'Bitbucket Pipelines',\n docsUrl: 'https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets',\n detect: 'BITBUCKET_COMMIT',\n isPR: 'BITBUCKET_PR_ID',\n prNumber: 'BITBUCKET_PR_ID',\n repo: (env) => {\n const owner = env.BITBUCKET_REPO_OWNER;\n const name = env.BITBUCKET_REPO_FULL_NAME?.split('/').pop() ?? env.BITBUCKET_REPO_SLUG;\n if (owner && name) return { owner, name };\n return parseRepoSlug(env.BITBUCKET_REPO_FULL_NAME);\n },\n branch: 'BITBUCKET_BRANCH',\n commitSha: 'BITBUCKET_COMMIT',\n },\n {\n name: 'Buildkite',\n docsUrl: 'https://buildkite.com/docs/pipelines/environment-variables',\n detect: 'BUILDKITE',\n isPR: (env) => env.BUILDKITE_PULL_REQUEST !== undefined && env.BUILDKITE_PULL_REQUEST !== 'false',\n prNumber: 'BUILDKITE_PULL_REQUEST',\n repo: (env) => parseRepoSlug(env.BUILDKITE_REPO),\n branch: 'BUILDKITE_BRANCH',\n commitSha: 'BUILDKITE_COMMIT',\n runId: 'BUILDKITE_BUILD_ID',\n buildUrl: 'BUILDKITE_BUILD_URL',\n },\n {\n name: 'CircleCI',\n docsUrl: 'https://circleci.com/docs/env-vars',\n detect: 'CIRCLECI',\n isPR: 'CIRCLE_PULL_REQUEST',\n prNumber: 'CIRCLE_PULL_REQUEST',\n repo: (env) => parseRepoSlug(env.CIRCLE_REPOSITORY_URL),\n branch: 'CIRCLE_BRANCH',\n commitSha: 'CIRCLE_SHA1',\n runId: 'CIRCLE_BUILD_NUM',\n buildUrl: 'CIRCLE_BUILD_URL',\n },\n {\n name: 'Jenkins',\n docsUrl: 'https://www.jenkins.io/doc/book/security/environment-variables',\n detect: envAll('JENKINS_URL', 'BUILD_ID'),\n isPR: (env) => !!(env.ghprbPullId ?? env.CHANGE_ID),\n prNumber: (env) => parsePrNumber(env.ghprbPullId ?? env.CHANGE_ID),\n },\n {\n name: 'Render',\n docsUrl: 'https://render.com/docs/environment-variables',\n detect: 'RENDER',\n isPR: (env) => env.IS_PULL_REQUEST === 'true',\n repo: (env) => parseRepoSlug(env.RENDER_GIT_REPO_SLUG),\n branch: 'RENDER_GIT_BRANCH',\n commitSha: 'RENDER_GIT_COMMIT',\n },\n {\n name: 'Travis CI',\n docsUrl: 'https://docs.travis-ci.com/user/environment-variables',\n detect: 'TRAVIS',\n isPR: (env) => env.TRAVIS_PULL_REQUEST !== undefined && env.TRAVIS_PULL_REQUEST !== 'false',\n prNumber: 'TRAVIS_PULL_REQUEST',\n repo: (env) => parseRepoSlug(env.TRAVIS_REPO_SLUG),\n branch: (env) => env.TRAVIS_BRANCH,\n commitSha: 'TRAVIS_COMMIT',\n },\n\n // Less common (alpha) ---\n {\n name: 'Agola CI',\n docsUrl: 'https://agola.io/doc/concepts/secrets_variables.html',\n detect: 'AGOLA_GIT_REF',\n isPR: 'AGOLA_PULL_REQUEST_ID',\n prNumber: 'AGOLA_PULL_REQUEST_ID',\n },\n { name: 'Alpic', detect: 'ALPIC_HOST' },\n {\n name: 'Appcircle',\n detect: 'AC_APPCIRCLE',\n isPR: (env) => env.AC_GIT_PR !== undefined && env.AC_GIT_PR !== 'false',\n prNumber: 'AC_GIT_PR',\n },\n {\n name: 'AppVeyor',\n docsUrl: 'https://www.appveyor.com/docs/environment-variables',\n detect: 'APPVEYOR',\n isPR: 'APPVEYOR_PULL_REQUEST_NUMBER',\n prNumber: 'APPVEYOR_PULL_REQUEST_NUMBER',\n repo: (env) => parseRepoSlug(env.APPVEYOR_REPO_NAME),\n branch: 'APPVEYOR_REPO_BRANCH',\n commitSha: 'APPVEYOR_REPO_COMMIT',\n },\n { name: 'Bamboo', detect: 'bamboo_planKey' },\n {\n name: 'Bitrise',\n docsUrl: 'https://docs.bitrise.io/en/bitrise-ci/references/available-environment-variables.html',\n detect: 'BITRISE_IO',\n isPR: 'BITRISE_PULL_REQUEST',\n prNumber: 'BITRISE_PULL_REQUEST',\n branch: 'BITRISE_GIT_BRANCH',\n commitSha: 'BITRISE_GIT_COMMIT',\n },\n {\n name: 'Buddy',\n detect: 'BUDDY_WORKSPACE_ID',\n isPR: 'BUDDY_EXECUTION_PULL_REQUEST_ID',\n prNumber: 'BUDDY_EXECUTION_PULL_REQUEST_ID',\n },\n {\n name: 'Cirrus CI',\n docsUrl: 'https://cirrus-ci.org/guide/writing-tasks',\n detect: 'CIRRUS_CI',\n isPR: 'CIRRUS_PR',\n prNumber: 'CIRRUS_PR',\n repo: (env) => parseRepoSlug(env.CIRRUS_REPO_FULL_NAME),\n branch: 'CIRRUS_BRANCH',\n commitSha: 'CIRRUS_CHANGE_IN_REPO',\n },\n {\n name: 'Codefresh',\n docsUrl: 'https://codefresh.io/docs/docs/pipelines/variables',\n detect: 'CF_BUILD_ID',\n isPR: (env) => !!(env.CF_PULL_REQUEST_NUMBER ?? env.CF_PULL_REQUEST_ID),\n prNumber: (env) => parsePrNumber(env.CF_PULL_REQUEST_NUMBER ?? env.CF_PULL_REQUEST_ID),\n branch: 'CF_BRANCH',\n commitSha: 'CF_REVISION',\n },\n { name: 'Codemagic', detect: 'CM_BUILD_ID', prNumber: 'CM_PULL_REQUEST' },\n { name: 'Codeship', detect: (env) => env.CI_NAME === 'codeship' },\n {\n name: 'Drone',\n docsUrl: 'https://docs.drone.io/pipeline/environment/reference',\n detect: 'DRONE',\n isPR: (env) => env.DRONE_BUILD_EVENT === 'pull_request',\n prNumber: 'DRONE_PULL_REQUEST',\n repo: (env) => {\n const full = env.DRONE_REPO;\n if (full) return parseRepoSlug(full);\n const owner = env.DRONE_REPO_OWNER;\n const name = env.DRONE_REPO_NAME;\n if (owner && name) return { owner, name };\n return undefined;\n },\n branch: 'DRONE_COMMIT_BRANCH',\n commitSha: 'DRONE_COMMIT_SHA',\n },\n { name: 'dsari', detect: 'DSARI' },\n { name: 'Earthly', detect: 'EARTHLY_CI' },\n {\n name: 'Expo Application Services',\n docsUrl: 'https://docs.expo.dev/build-reference/variables',\n detect: 'EAS_BUILD',\n commitSha: 'EAS_BUILD_GIT_COMMIT_HASH',\n },\n { name: 'Gerrit', detect: 'GERRIT_PROJECT' },\n { name: 'Gitea Actions', detect: 'GITEA_ACTIONS' },\n { name: 'GoCD', detect: 'GO_PIPELINE_LABEL' },\n { name: 'Google Cloud Build', detect: 'BUILDER_OUTPUT' }, // not actually set by default, user has to set it within their yaml config\n { name: 'Heroku', detect: (env) => (env.NODE ?? '').includes('/app/.heroku/node/bin/node') },\n { name: 'Hudson', detect: 'HUDSON_URL' },\n {\n name: 'LayerCI',\n detect: 'LAYERCI',\n isPR: 'LAYERCI_PULL_REQUEST',\n prNumber: 'LAYERCI_PULL_REQUEST',\n },\n { name: 'Magnum CI', detect: 'MAGNUM' },\n {\n name: 'Nevercode',\n detect: 'NEVERCODE',\n isPR: (env) => env.NEVERCODE_PULL_REQUEST !== undefined && env.NEVERCODE_PULL_REQUEST !== 'false',\n prNumber: 'NEVERCODE_PULL_REQUEST',\n },\n { name: 'Prow', detect: 'PROW_JOB_ID' },\n { name: 'ReleaseHub', detect: 'RELEASE_BUILD_ID' },\n {\n name: 'Sail CI',\n detect: 'SAILCI',\n isPR: 'SAIL_PULL_REQUEST_NUMBER',\n prNumber: 'SAIL_PULL_REQUEST_NUMBER',\n },\n {\n name: 'Screwdriver',\n detect: 'SCREWDRIVER',\n isPR: (env) => env.SD_PULL_REQUEST !== undefined && env.SD_PULL_REQUEST !== 'false',\n prNumber: 'SD_PULL_REQUEST',\n },\n {\n name: 'Semaphore',\n docsUrl: 'https://docs.semaphoreci.com/reference/env-vars',\n detect: 'SEMAPHORE',\n isPR: 'PULL_REQUEST_NUMBER',\n prNumber: 'PULL_REQUEST_NUMBER',\n repo: (env) => parseRepoSlug(env.SEMAPHORE_GIT_REPO_SLUG),\n branch: 'SEMAPHORE_GIT_BRANCH',\n commitSha: 'SEMAPHORE_GIT_SHA',\n },\n { name: 'Sourcehut', detect: (env) => env.CI_NAME === 'sourcehut' },\n { name: 'Strider CD', detect: 'STRIDER' },\n { name: 'TaskCluster', detect: envAny('TASK_ID', 'RUN_ID') },\n {\n name: 'TeamCity',\n docsUrl: 'https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html',\n detect: 'TEAMCITY_VERSION',\n },\n {\n name: 'Vela',\n detect: 'VELA',\n isPR: (env) => env.VELA_PULL_REQUEST === '1',\n prNumber: 'VELA_PULL_REQUEST',\n },\n { name: 'Visual Studio App Center', detect: 'APPCENTER_BUILD_ID' },\n {\n name: 'Woodpecker',\n docsUrl: 'https://woodpecker-ci.org/docs/usage/environment',\n detect: envEq('CI', 'woodpecker'),\n isPR: (env) => env.CI_BUILD_EVENT === 'pull_request',\n repo: (env) => parseRepoSlug(env.CI_REPO),\n branch: 'CI_COMMIT_BRANCH',\n prNumber: (env) => parsePrNumber(env.CI_COMMIT_PULL_REQUEST),\n commitSha: 'CI_COMMIT_SHA',\n },\n { name: 'Xcode Cloud', detect: 'CI_XCODE_PROJECT', prNumber: 'CI_PULL_REQUEST_NUMBER' },\n { name: 'Xcode Server', detect: 'XCS' },\n];\n","import type { CiEnvInfo, EnvRecord, PlatformDefinition } from './types';\nimport {\n type DeploymentEnvironment, type RepoParts,\n mapToDeploymentEnvironment,\n parsePrNumber,\n parseRepoSlug,\n refToBranch,\n shortSha,\n} from './normalize';\nimport { PLATFORMS } from './platforms';\n\nconst VALID_ENVIRONMENTS: Set<string> = new Set(\n ['development', 'preview', 'staging', 'production', 'test'],\n);\n\nfunction runDetect(platform: PlatformDefinition, env: EnvRecord): boolean {\n const d = platform.detect;\n if (typeof d === 'string') return !!env[d];\n return d(env);\n}\n\nfunction runExtractor<T>(\n platform: PlatformDefinition,\n key: keyof PlatformDefinition,\n env: EnvRecord,\n): T | undefined {\n const ext = platform[key];\n if (ext === undefined) return undefined;\n if (typeof ext === 'function') return (ext as (env: EnvRecord) => T | undefined)(env);\n if (key === 'environment' && typeof ext === 'object' && ext !== null && 'var' in ext && 'map' in ext) {\n return mapToDeploymentEnvironment(env[ext.var], ext.map) as T;\n }\n const raw = env[ext as string];\n if (raw === undefined || raw === '') return undefined;\n switch (key) {\n case 'repo':\n return parseRepoSlug(raw) as T;\n case 'branch': {\n const branch = refToBranch(raw);\n return (branch ?? raw) as T;\n }\n case 'prNumber':\n return parsePrNumber(raw) as T;\n case 'commitSha':\n return raw as T;\n case 'environment':\n return VALID_ENVIRONMENTS.has(raw) ? raw as T : undefined;\n default:\n return raw as T;\n }\n}\n\nfunction buildRaw(\n platform: PlatformDefinition,\n env: EnvRecord,\n): Record<string, string> | undefined {\n const keys = [\n 'repo',\n 'branch',\n 'prNumber',\n 'commitSha',\n 'environment',\n 'runId',\n 'buildUrl',\n 'workflowName',\n 'actor',\n 'eventName',\n ] as const;\n const raw: Record<string, string> = {};\n let hasAny = false;\n for (const k of keys) {\n const ext = platform[k];\n if (typeof ext === 'string' && env[ext]) {\n raw[ext] = env[ext]!;\n hasAny = true;\n }\n if (k === 'environment' && typeof ext === 'object' && ext !== null && 'var' in ext && env[ext.var]) {\n raw[ext.var] = env[ext.var]!;\n hasAny = true;\n }\n }\n return hasAny ? raw : undefined;\n}\n\n/**\n * Compute CiEnvInfo from the given env record. Uses in-package platform definitions.\n * If env.CI === 'false', returns isCI: false (escape hatch).\n */\nexport function getCiEnv(env: EnvRecord): CiEnvInfo {\n const e = env;\n\n if (e.CI === 'false') {\n return { isCI: false };\n }\n\n for (const platform of PLATFORMS) {\n if (!runDetect(platform, e)) continue;\n\n const repo = runExtractor<RepoParts>(platform, 'repo', e);\n const commitSha = runExtractor<string>(platform, 'commitSha', e);\n let isPR: boolean | undefined;\n if (platform.isPR !== undefined) {\n isPR = typeof platform.isPR === 'string' ? !!e[platform.isPR] : platform.isPR(e);\n } else {\n isPR = runExtractor<number>(platform, 'prNumber', e) !== undefined;\n }\n const info: CiEnvInfo = {\n isCI: true,\n name: platform.name,\n docsUrl: platform.docsUrl,\n isPR,\n repo,\n fullRepoName: repo ? `${repo.owner}/${repo.name}` : undefined,\n branch: runExtractor<string>(platform, 'branch', e),\n prNumber: runExtractor<number>(platform, 'prNumber', e),\n commitSha,\n commitShaShort: shortSha(commitSha),\n environment: runExtractor<DeploymentEnvironment>(platform, 'environment', e),\n runId: runExtractor<string>(platform, 'runId', e),\n buildUrl: runExtractor<string>(platform, 'buildUrl', e),\n workflowName: runExtractor<string>(platform, 'workflowName', e),\n actor: runExtractor<string>(platform, 'actor', e),\n eventName: runExtractor<string>(platform, 'eventName', e),\n raw: buildRaw(platform, e),\n };\n return info;\n }\n\n // Generic CI (e.g. CI=true but no vendor matched)\n const isCI = e.CI === 'true'\n || !!e.BUILD_ID\n || !!e.BUILD_NUMBER\n || !!e.CI_APP_ID\n || !!e.CI_BUILD_ID\n || !!e.CI_BUILD_NUMBER\n || !!e.CI_NAME\n || !!e.CONTINUOUS_INTEGRATION\n || !!e.RUN_ID;\n\n return {\n isCI: !!isCI,\n };\n}\n\n/**\n * Convenience: compute CiEnvInfo from the current process.env.\n * Equivalent to getCiEnv(process.env).\n */\nexport function getCiEnvFromProcess(): CiEnvInfo {\n return getCiEnv(process.env);\n}\n","import { spawn, exec, type SpawnOptions } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nexport class ExecError extends Error {\n constructor(\n readonly exitCode: number,\n readonly signal: NodeJS.Signals | null,\n readonly data: string = 'command gave no output',\n ) {\n super(data);\n }\n}\n\nexport function spawnAsyncHelper(\n command: string,\n args: Array<string>,\n spawnOptions?: SpawnOptions,\n) {\n const childProcess = spawn(command, args, spawnOptions || {});\n\n const deferred = new Promise<string>((resolve, reject) => {\n let stdoutData: string = '';\n let stderrData: string = '';\n childProcess.stdout?.on('data', (data) => {\n stdoutData += data.toString();\n });\n childProcess.stderr?.on('data', (data) => {\n stderrData += data.toString();\n });\n childProcess.stdout?.on('error', (err) => {\n reject(err);\n });\n childProcess.stderr?.on('error', (err) => {\n reject(err);\n });\n childProcess.on('error', (err) => {\n reject(err);\n });\n childProcess.on('exit', (exitCode, signal) => {\n if (!exitCode) {\n resolve(stdoutData);\n } else {\n reject(\n new ExecError(exitCode, signal, stderrData),\n );\n }\n });\n });\n\n return { childProcess, execResult: deferred };\n}\n\nexport async function spawnAsync(\n command: string,\n args: Array<string>,\n opts?: SpawnOptions & { input?: string },\n) {\n const { input, ...spawnOpts } = opts ?? {};\n const { childProcess, execResult } = spawnAsyncHelper(command, args, spawnOpts);\n if (input !== undefined && childProcess.stdin) {\n childProcess.stdin.write(input);\n childProcess.stdin.end();\n }\n return execResult;\n}\n\nexport const asyncExec = promisify(exec);\n","import { asyncExec } from '@env-spec/utils/exec-helpers';\nimport { type CiEnvInfo, type DeploymentEnvironment } from '@varlock/ci-env-info';\n\nexport type BuiltinVarDef = {\n name: string;\n description: string;\n /** Data type name for this builtin var (defaults to 'string') */\n type?: string;\n resolver: (\n ciEnv: CiEnvInfo, processEnv: Record<string, string | undefined>,\n ) => string | boolean | undefined | Promise<string | undefined>;\n};\n\n/**\n * Detect if we're running in a test environment.\n * This check runs first, even before CI detection.\n */\nfunction detectTestEnvironment(env: Record<string, string | undefined>): boolean {\n return !!(\n env.NODE_ENV === 'test'\n || env.JEST_WORKER_ID\n || env.VITEST\n || env.VITEST_POOL_ID\n );\n}\n\n/**\n * Infer deployment environment from branch name.\n * Used when CI is detected but platform doesn't provide explicit environment.\n */\nfunction inferFromBranch(branch: string): DeploymentEnvironment {\n const lower = branch.toLowerCase();\n if (['main', 'master', 'production', 'prod'].includes(lower)) return 'production';\n if (['staging', 'stage', 'develop', 'dev'].includes(lower)) return 'staging';\n if (['qa', 'test'].includes(lower)) return 'test';\n return 'preview';\n}\n\n/**\n * Attempt to get the current git branch via `git branch --show-current`.\n * Returns undefined if git is unavailable, not in a git repo, or in a detached HEAD state.\n */\nasync function getGitBranch(): Promise<string | undefined> {\n try {\n const { stdout } = await asyncExec('git branch --show-current', { timeout: 3000 });\n const branch = stdout.trim();\n return branch || undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Multi-tier environment detection strategy:\n * 1. Test environment detection (NODE_ENV=test, JEST_WORKER_ID, VITEST, etc.)\n * 2. Platform-provided environment (Vercel VERCEL_ENV, Netlify CONTEXT)\n * 3. Branch name inference (main/master→production, staging/develop→staging, others→preview)\n * 4. deployed in CI → preview\n * 5. not CI, default to development\n */\nfunction inferVarlockEnv(ciEnv: CiEnvInfo, processEnv: Record<string, string | undefined>): DeploymentEnvironment {\n // Tier 1: Test detection (runs first, even in CI)\n if (detectTestEnvironment(processEnv)) return 'test';\n\n // Tier 2: Platform-provided (Vercel, Netlify, etc.)\n if (ciEnv.environment) return ciEnv.environment;\n\n // Tier 3: Branch inference (when in CI with branch info)\n if (ciEnv.isCI && ciEnv.branch) return inferFromBranch(ciEnv.branch);\n\n // Tier 4: deployed in CI = preview\n if (ciEnv.isCI) return 'preview';\n\n // Tier 5: not CI, default to development\n return 'development';\n}\n\nexport const BUILTIN_VARS: Record<string, BuiltinVarDef> = {\n VARLOCK_ENV: {\n name: 'VARLOCK_ENV',\n description: 'Auto-detected deployment environment (development, preview, staging, production, test)',\n resolver: (ciEnv, processEnv) => inferVarlockEnv(ciEnv, processEnv),\n },\n VARLOCK_IS_CI: {\n name: 'VARLOCK_IS_CI',\n description: 'Whether running in a CI environment',\n type: 'boolean',\n resolver: (ciEnv) => ciEnv.isCI,\n },\n VARLOCK_BRANCH: {\n name: 'VARLOCK_BRANCH',\n description: 'Current git branch name. In CI, sourced from platform environment variables. Locally (non-CI), auto-detected via `git branch --show-current`.',\n resolver: (ciEnv) => ciEnv.branch ?? (!ciEnv.isCI ? getGitBranch() : undefined),\n },\n VARLOCK_PR_NUMBER: {\n name: 'VARLOCK_PR_NUMBER',\n description: 'Pull request number if in PR context',\n resolver: (ciEnv) => ciEnv.prNumber?.toString(),\n },\n VARLOCK_COMMIT_SHA: {\n name: 'VARLOCK_COMMIT_SHA',\n description: 'Full commit SHA',\n resolver: (ciEnv) => ciEnv.commitSha,\n },\n VARLOCK_COMMIT_SHA_SHORT: {\n name: 'VARLOCK_COMMIT_SHA_SHORT',\n description: 'Short (7-char) commit SHA',\n resolver: (ciEnv) => ciEnv.commitShaShort,\n },\n VARLOCK_PLATFORM: {\n name: 'VARLOCK_PLATFORM',\n description: 'CI platform name (e.g., \"GitHub Actions\", \"Vercel\")',\n resolver: (ciEnv) => ciEnv.name,\n },\n VARLOCK_BUILD_URL: {\n name: 'VARLOCK_BUILD_URL',\n description: 'Link to the CI build/deploy',\n type: 'url',\n resolver: (ciEnv) => ciEnv.buildUrl,\n },\n VARLOCK_REPO: {\n name: 'VARLOCK_REPO',\n description: 'Repository name in owner/repo format',\n resolver: (ciEnv) => ciEnv.fullRepoName,\n },\n};\n\n/**\n * Check if a key is a builtin VARLOCK_* variable.\n */\nexport function isBuiltinVar(key: string): boolean {\n return key in BUILTIN_VARS;\n}\n","import { accessSync } from 'node:fs';\nimport { access } from 'node:fs/promises';\n\nexport async function pathExists(p: string) {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function pathExistsSync(p:string) {\n try {\n accessSync(p);\n return true;\n } catch {\n return false;\n }\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\n// this is a slightly modified version of @clack/prompts\n// mostly to remove the additional left border\n\nimport type { Readable, Writable } from 'node:stream';\nimport { WriteStream } from 'node:tty';\nimport {\n ConfirmPrompt, SelectPrompt, MultiSelectPrompt, PasswordPrompt, type State,\n} from '@clack/core';\nimport color from 'ansis';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst unicode = isUnicodeSupported();\nconst isCI = (): boolean => process.env.CI === 'true';\nconst unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = unicodeOr('◆', '*');\nconst S_STEP_CANCEL = unicodeOr('■', 'x');\nconst S_STEP_ERROR = unicodeOr('▲', 'x');\nconst S_STEP_SUBMIT = unicodeOr('◇', 'o');\n\nconst S_BAR_START = unicodeOr('┌', 'T');\nconst S_BAR = unicodeOr('│', '|');\nconst S_BAR_END = unicodeOr('└', '—');\n\nconst S_RADIO_ACTIVE = unicodeOr('●', '>');\nconst S_RADIO_INACTIVE = unicodeOr('○', ' ');\nconst S_CHECKBOX_ACTIVE = unicodeOr('◻', '[•]');\nconst S_CHECKBOX_SELECTED = unicodeOr('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = unicodeOr('◻', '[ ]');\nconst S_PASSWORD_MASK = unicodeOr('▪', '•');\n\nconst S_BAR_H = unicodeOr('─', '-');\nconst S_CORNER_TOP_RIGHT = unicodeOr('╮', '+');\nconst S_CONNECT_LEFT = unicodeOr('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = unicodeOr('╯', '+');\n\nconst S_INFO = unicodeOr('●', '•');\nconst S_SUCCESS = unicodeOr('◆', '*');\nconst S_WARN = unicodeOr('▲', '!');\nconst S_ERROR = unicodeOr('■', 'x');\n\nconst symbol = (state: State) => {\n // eslint-disable-next-line default-case\n switch (state) {\n case 'initial':\n case 'active':\n return color.cyan(S_STEP_ACTIVE);\n case 'cancel':\n return color.red(S_STEP_CANCEL);\n case 'error':\n return color.yellow(S_STEP_ERROR);\n case 'submit':\n return color.green(S_STEP_SUBMIT);\n }\n};\n\nexport interface CommonOptions {\n input?: Readable;\n output?: Writable;\n}\n\n\n\n\n/// /\nexport interface LimitOptionsParams<TOption> extends CommonOptions {\n options: Array<TOption>;\n maxItems: number | undefined;\n cursor: number;\n style: (option: TOption, active: boolean) => string;\n}\n\nexport const limitOptions = <TOption>(params: LimitOptionsParams<TOption>): Array<string> => {\n const { cursor, options, style } = params;\n const output: Writable = params.output ?? process.stdout;\n const rows = output instanceof WriteStream && output.rows !== undefined ? output.rows : 10;\n\n const paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n const outputMaxItems = Math.max(rows - 4, 0);\n // We clamp to minimum 5 because anything less doesn't make sense UX wise\n const maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n let slidingWindowLocation = 0;\n\n if (cursor >= slidingWindowLocation + maxItems - 3) {\n slidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n } else if (cursor < slidingWindowLocation + 2) {\n slidingWindowLocation = Math.max(cursor - 2, 0);\n }\n\n const shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n const shouldRenderBottomEllipsis = maxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n return options\n .slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n .map((option, i, arr) => {\n const isTopLimit = i === 0 && shouldRenderTopEllipsis;\n const isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n return isTopLimit || isBottomLimit\n ? color.dim('...')\n : style(option, i + slidingWindowLocation === cursor);\n });\n};\n\n\n///\n\nexport interface ConfirmOptions extends CommonOptions {\n message: string;\n active?: string;\n inactive?: string;\n initialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n const active = opts.active ?? 'Yes';\n const inactive = opts.inactive ?? 'No';\n return new ConfirmPrompt({\n active,\n inactive,\n input: opts.input,\n output: opts.output,\n initialValue: opts.initialValue ?? true,\n render() {\n const title = `\\n${symbol(this.state)} ${opts.message}\\n`;\n const value = this.value ? active : inactive;\n\n // NOTE it's trimming leading spaces, so we use an invisible character at the beginnign of the line to add some spacing\n switch (this.state) {\n case 'submit':\n return `${title}‎ ${color.dim(value)}`;\n case 'cancel':\n return `${title}‎ ${color.strikethrough(\n color.dim(value),\n )}\\n`;\n default: {\n return `${title}‎ ${\n this.value\n ? `${color.green(S_RADIO_ACTIVE)} ${active}`\n : `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n } ${color.dim('/')} ${\n !this.value\n ? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n : `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n }\\n`;\n }\n }\n },\n }).prompt() as Promise<boolean | symbol>;\n};\n\n\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n ? {\n /**\n * Internal data for this option.\n */\n value: Value;\n /**\n * The optional, user-facing text for this option.\n *\n * By default, the `value` is converted to a string.\n */\n label?: string;\n /**\n * An optional hint to display to the user when\n * this option might be selected.\n *\n * By default, no `hint` is displayed.\n */\n hint?: string;\n }\n : {\n /**\n * Internal data for this option.\n */\n value: Value;\n /**\n * Required. The user-facing text for this option.\n */\n label: string;\n /**\n * An optional hint to display to the user when\n * this option might be selected.\n *\n * By default, no `hint` is displayed.\n */\n hint?: string;\n };\n\nexport interface SelectOptions<Value> extends CommonOptions {\n message: string;\n options: Array<Option<Value>>;\n initialValue?: Value;\n maxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n const opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n const label = option.label ?? String(option.value);\n switch (state) {\n case 'selected':\n return `${color.dim(label)}`;\n case 'active':\n return `${color.green(S_RADIO_ACTIVE)} ${label} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n case 'cancelled':\n return `${color.strikethrough(color.dim(label))}`;\n default:\n return `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n }\n };\n\n return new SelectPrompt({\n options: opts.options,\n input: opts.input,\n output: opts.output,\n initialValue: opts.initialValue,\n render() {\n const title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n switch (this.state) {\n case 'submit':\n return `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n case 'cancel':\n return `${title}${color.gray(S_BAR)} ${opt(\n this.options[this.cursor],\n 'cancelled',\n )}\\n${color.gray(S_BAR)}`;\n default: {\n return `${title}${color.cyan(S_BAR)} ${limitOptions({\n output: opts.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: opts.maxItems,\n style: (item, active) => opt(item, active ? 'active' : 'inactive'),\n }).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n }\n }\n },\n }).prompt() as Promise<Value | symbol>;\n};\n\n\nexport interface MultiSelectOptions<Value> extends CommonOptions {\n message: string;\n details?: string;\n options: Array<Option<Value>>;\n initialValues?: Array<Value>;\n maxItems?: number;\n required?: boolean;\n cursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n const opt = (\n option: Option<Value>,\n state: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled',\n ) => {\n const label = option.label ?? String(option.value);\n if (state === 'active') {\n return `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n }\n if (state === 'selected') {\n return `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n }\n if (state === 'cancelled') {\n return `${color.strikethrough(color.dim(label))}`;\n }\n if (state === 'active-selected') {\n return `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n }\n if (state === 'submitted') {\n return `${color.dim(label)}`;\n }\n return `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n };\n\n return new MultiSelectPrompt({\n options: opts.options,\n input: opts.input,\n output: opts.output,\n initialValues: opts.initialValues,\n required: opts.required ?? true,\n cursorAt: opts.cursorAt,\n validate(selected: Array<Value> | undefined) {\n if (this.required && (!selected || selected.length === 0)) {\n return `Please select at least one option.\\n${color.reset(\n color.dim(\n `Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n color.bgWhite(color.inverse(' enter ')),\n )} to submit`,\n ),\n )}`;\n }\n },\n render() {\n let title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n if (opts.details) title += `${color.gray(S_BAR)} ${opts.details}\\n`;\n\n const styleOption = (option: Option<Value>, active: boolean) => {\n const selected = this.value?.includes(option.value);\n if (active && selected) {\n return opt(option, 'active-selected');\n }\n if (selected) {\n return opt(option, 'selected');\n }\n return opt(option, active ? 'active' : 'inactive');\n };\n\n switch (this.state) {\n case 'submit': {\n return `${title}${color.gray(S_BAR)} ${\n this.options\n .filter(({ value }) => this.value?.includes(value))\n .map((option) => opt(option, 'submitted'))\n .join(color.dim(', ')) || color.dim('none')\n }`;\n }\n case 'cancel': {\n const label = this.options\n .filter(({ value }) => this.value?.includes(value))\n .map((option) => opt(option, 'cancelled'))\n .join(color.dim(', '));\n return `${title}${color.gray(S_BAR)} ${\n label.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n }`;\n }\n case 'error': {\n const footer = this.error\n .split('\\n')\n .map((ln, i) => (i === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`))\n .join('\\n');\n return `${title + color.yellow(S_BAR)} ${limitOptions({\n output: opts.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: opts.maxItems,\n style: styleOption,\n }).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n }\n default: {\n return `${title}${color.cyan(S_BAR)} ${limitOptions({\n output: opts.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: opts.maxItems,\n style: styleOption,\n }).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n }\n }\n },\n }).prompt() as Promise<Array<Value> | symbol>;\n};\n\nexport interface PasswordOptions extends CommonOptions {\n message: string;\n mask?: string;\n hint?: string;\n}\n\nfunction getPasswordPromptChain() {\n const globalKey = '__varlockPasswordPromptChain__';\n const globalState = globalThis as typeof globalThis & {\n [globalKey]?: Promise<void>;\n };\n globalState[globalKey] ??= Promise.resolve();\n return {\n get: () => globalState[globalKey]!,\n set: (nextChain: Promise<void>) => {\n globalState[globalKey] = nextChain;\n },\n };\n}\n\nfunction enqueuePasswordPrompt<T>(task: () => Promise<T>): Promise<T> {\n const promptChain = getPasswordPromptChain();\n const run = promptChain.get().then(task, task);\n promptChain.set(run.then(() => undefined, () => undefined));\n return run;\n}\n\nexport const password = async (opts: PasswordOptions) => {\n return enqueuePasswordPrompt(async () => {\n const mask = opts.mask ?? S_PASSWORD_MASK;\n\n // Native cmd.exe can mishandle repeated @clack/core password prompts in a\n // single process; use upstream clack's Windows handling for reliability.\n if (process.platform === 'win32') {\n const { password: clackPassword, isCancel } = await import('@clack/prompts');\n const result = await clackPassword({ message: opts.message, mask });\n return isCancel(result) ? Symbol('cancel') : result;\n }\n\n return new PasswordPrompt({\n mask,\n input: opts.input,\n output: opts.output,\n render() {\n const hintLine = opts.hint ? `${color.gray(S_BAR)} ${color.dim(opts.hint)}\\n` : '';\n const title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n${hintLine}`;\n const value = this.value ? String(this.value) : '';\n const masked = value ? mask.repeat(value.length) : '';\n\n switch (this.state) {\n case 'submit':\n return `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n case 'cancel':\n return `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked))}\\n${color.gray(S_BAR)}`;\n case 'error':\n return `${title}${color.yellow(S_BAR)} ${masked}\\n${color.yellow(S_BAR_END)} ${color.yellow(this.error)}`;\n default:\n return `${title}${color.cyan(S_BAR)} ${masked}\\n${color.cyan(S_BAR_END)}\\n`;\n }\n },\n }).prompt() as Promise<string | symbol>;\n });\n};\n\n\n\n/// ////\n\nconst prompts = {\n confirm,\n select,\n multiselect,\n password,\n};\n\nexport default prompts;\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport { pathExistsSync } from '@env-spec/utils/fs-utils';\nimport { createDebug } from './debug';\n\nconst debug = createDebug('varlock:workspace-utils');\n\nexport type JsPackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun' | 'deno';\n\nexport type JsPackageManagerMeta = {\n name: JsPackageManager;\n lockfiles: Array<string>;\n add: string;\n exec: string;\n dlx: string;\n};\n\nexport const JS_PACKAGE_MANAGERS: Record<JsPackageManager, JsPackageManagerMeta> = Object.freeze({\n npm: {\n name: 'npm',\n lockfiles: ['package-lock.json'],\n add: 'npm install', // add also works\n exec: 'npm exec --',\n dlx: 'npx',\n },\n pnpm: {\n name: 'pnpm',\n lockfiles: ['pnpm-lock.yaml'],\n add: 'pnpm add',\n exec: 'pnpm exec',\n dlx: 'pnpm dlx',\n },\n yarn: {\n name: 'yarn',\n lockfiles: ['yarn.lock'],\n add: 'yarn add',\n exec: 'yarn exec --',\n dlx: 'yarn dlx',\n },\n bun: {\n name: 'bun',\n lockfiles: ['bun.lock', 'bun.lockb'],\n add: 'bun add',\n exec: 'bun run',\n dlx: 'bunx',\n },\n deno: { //! deno not fully supported yet\n name: 'deno',\n lockfiles: ['deno.lock'],\n add: 'deno add',\n // TODO: don't think these are quite right...\n exec: 'deno run',\n dlx: 'deno run',\n },\n});\n\nexport type MonorepoTool = 'turborepo' | 'nx' | 'lerna';\n\nexport type WorkspaceInfo = {\n /** detected JS package manager */\n packageManager: JsPackageManagerMeta;\n /** path to the workspace/monorepo root (where lockfile was found) */\n rootPath: string;\n /** whether this appears to be a monorepo workspace */\n isMonorepo: boolean;\n /** monorepo orchestration tool, if detected */\n monorepoTool?: MonorepoTool;\n};\n\n/**\n * Detects workspace info by walking up the directory tree looking for lockfiles.\n * Returns package manager, root path, and monorepo details.\n */\nexport function detectWorkspaceInfo(opts?: {\n cwd?: string,\n}): WorkspaceInfo | undefined {\n debug('Detecting workspace info');\n let cwd = opts?.cwd || process.cwd();\n let multipleLockfilesDetected: Array<JsPackageManager> | undefined;\n let foundRootPath: string | undefined;\n let foundPm: JsPackageManager | undefined;\n\n do {\n debug(`> scanning ${cwd}`);\n const scanDir = cwd;\n let detectedPm: JsPackageManager | undefined;\n let pm: JsPackageManager;\n\n for (pm in JS_PACKAGE_MANAGERS) {\n const foundLockfile = JS_PACKAGE_MANAGERS[pm].lockfiles.find(\n (lockfile) => pathExistsSync(path.join(scanDir, lockfile)),\n );\n\n if (foundLockfile) {\n // if we find 2 lockfiles at the same level, store them and continue\n // this can happen in monorepos or when switching package managers\n if (detectedPm) {\n debug(`> found multiple lockfiles: ${foundLockfile} and ${JS_PACKAGE_MANAGERS[detectedPm].lockfiles[0]}`);\n multipleLockfilesDetected = [detectedPm, pm];\n break;\n }\n debug(`> found ${foundLockfile}`);\n detectedPm = pm;\n }\n }\n\n if (detectedPm && !multipleLockfilesDetected) {\n foundRootPath = scanDir;\n foundPm = detectedPm;\n break;\n }\n if (multipleLockfilesDetected) break;\n\n // stop at git root as a fallback boundary after scanning the current directory\n // NOTE: check before moving to parent so the directory containing .git is always scanned\n // (the standard monorepo layout has .git and the lockfile in the same root directory)\n if (pathExistsSync(path.join(cwd, '.git'))) break;\n\n // will break when we reach the filesystem root\n const parentDir = path.dirname(cwd);\n if (parentDir === cwd) break;\n cwd = parentDir;\n } while (cwd);\n\n // if we did not find a lockfile, check env vars for hints (rootPath will be cwd in this case)\n if (!foundPm) {\n if (process.env.npm_config_user_agent) {\n const pmFromAgent = process.env.npm_config_user_agent.split('/')[0];\n if (Object.keys(JS_PACKAGE_MANAGERS).includes(pmFromAgent)) {\n debug(`> found ${pmFromAgent} using npm_config_user_agent`);\n foundPm = pmFromAgent as JsPackageManager;\n foundRootPath = opts?.cwd || process.cwd();\n }\n }\n\n // if we found multiple lockfiles and env var detection failed, use the first detected one\n // we choose the first one because the order is deterministic (based on the order in JS_PACKAGE_MANAGERS)\n // and this provides a reasonable fallback when we can't determine the active package manager\n if (!foundPm && multipleLockfilesDetected) {\n debug(`> using ${multipleLockfilesDetected[0]} from multiple detected lockfiles`);\n foundPm = multipleLockfilesDetected[0];\n foundRootPath = cwd;\n }\n }\n\n if (!foundPm || !foundRootPath) {\n return undefined;\n }\n\n const packageManager = JS_PACKAGE_MANAGERS[foundPm];\n\n // detect monorepo indicators at the root path\n let isMonorepo = false;\n let monorepoTool: MonorepoTool | undefined;\n\n // check for workspaces field in package.json (npm/yarn/bun workspaces)\n const rootPackageJsonPath = path.join(foundRootPath, 'package.json');\n if (pathExistsSync(rootPackageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(rootPackageJsonPath, 'utf-8'));\n if (packageJson.workspaces) isMonorepo = true;\n } catch { /* ignore parse errors */ }\n }\n\n // pnpm workspaces use a separate config file\n if (!isMonorepo && pathExistsSync(path.join(foundRootPath, 'pnpm-workspace.yaml'))) {\n isMonorepo = true;\n }\n\n // detect monorepo orchestration tools\n if (pathExistsSync(path.join(foundRootPath, 'turbo.json'))) {\n monorepoTool = 'turborepo';\n } else if (pathExistsSync(path.join(foundRootPath, 'nx.json'))) {\n monorepoTool = 'nx';\n } else if (pathExistsSync(path.join(foundRootPath, 'lerna.json'))) {\n monorepoTool = 'lerna';\n }\n\n // a monorepo tool strongly implies this is a monorepo\n if (monorepoTool) isMonorepo = true;\n\n return {\n packageManager,\n rootPath: foundRootPath,\n isMonorepo,\n monorepoTool,\n };\n}\n\n/**\n * AsyncLocalStorage holding a memoized getter for WorkspaceInfo.\n * The getter is registered eagerly but detection only runs on first access.\n */\nconst workspaceInfoStorage = new AsyncLocalStorage<() => WorkspaceInfo | undefined>();\n\n/**\n * Run a function with workspace detection available via getWorkspaceInfo().\n * Detection is deferred until the first call to getWorkspaceInfo().\n * Accepts an explicit WorkspaceInfo to use instead of auto-detecting.\n */\nexport function runWithWorkspaceInfo<T>(fn: () => T, explicitInfo?: WorkspaceInfo): T {\n let cached: WorkspaceInfo | undefined;\n let detected = false;\n const getter = () => {\n if (!detected) {\n cached = explicitInfo ?? detectWorkspaceInfo();\n detected = true;\n }\n return cached;\n };\n return workspaceInfoStorage.run(getter, fn);\n}\n\n/**\n * Get the WorkspaceInfo for the current async context.\n * Falls back to detecting from process.cwd() if called outside runWithWorkspaceInfo.\n */\nexport function getWorkspaceInfo(): WorkspaceInfo | undefined {\n return workspaceInfoStorage.getStore()?.() ?? detectWorkspaceInfo();\n}\n","/// <reference path=\"../../globals.d.ts\" />\nimport path from 'node:path';\nimport { exec as execCb } from 'node:child_process';\nimport fsSync from 'node:fs';\nimport fs from 'node:fs/promises';\nimport { promisify } from 'node:util';\nimport { createRequire } from 'node:module';\nimport { pathToFileURL } from 'node:url';\nimport crypto from 'node:crypto';\nimport https from 'node:https';\nimport ansis from 'ansis';\nimport semver from 'semver';\nimport { isCancel } from '@clack/prompts';\nimport _ from '@env-spec/utils/my-dash';\nimport { pathExists } from '@env-spec/utils/fs-utils';\nimport { getUserVarlockDir } from '../../lib/user-config-dir';\nimport { confirm } from '../../cli/helpers/prompts';\n\n\nimport { FileBasedDataSource, type EnvGraphDataSource } from './data-source';\nimport {\n CoercionError, ResolutionError, SchemaError, ValidationError,\n} from './errors';\nimport { getErrorLocation } from './error-location';\nimport { createResolver, type ResolverDef } from './resolver';\nimport type {\n DecoratorInstance, ItemDecoratorDef, RootDecoratorDef, RootDecoratorInstance,\n} from './decorators';\nimport { createEnvGraphDataType } from './data-types';\n\nimport { createDebug, type Debugger } from '../../lib/debug';\nimport { getWorkspaceInfo } from '../../lib/workspace-utils';\nimport { activatePlugin, deactivatePlugin, pluginProxy } from '../../plugin-context';\nimport type { EnvGraph } from './env-graph';\n\n// module caching means the file will not be executed multiple times\n// so we track just to ensure we don't attempt to do load it multiple times\nconst importedPluginModulePaths = new Set<string>();\n\n// One-time Bun compat patch applied before any plugin loads.\n// In Bun, globalThis.crypto IS the Web Crypto API (no .webcrypto sub-property).\n// CJS bundles (e.g. bitwarden) use `crypto.webcrypto.subtle`, so we patch it once.\nlet _cryptoShimApplied = false;\nfunction applyBunCryptoShim() {\n if (_cryptoShimApplied) return;\n _cryptoShimApplied = true;\n const globalCrypto = (globalThis as any).crypto;\n if (globalCrypto && !globalCrypto.webcrypto) {\n try {\n Object.defineProperty(globalCrypto, 'webcrypto', {\n get() { return globalCrypto; },\n configurable: true,\n enumerable: false,\n });\n } catch {\n // ignore if crypto object is not extensible\n }\n }\n}\n\nconst isBunRuntime = !!process.versions.bun || __VARLOCK_SEA_BUILD__;\n\n// In SEA (compiled binary) builds, `varlock` does not exist in the user's\n// node_modules so `import { plugin } from 'varlock/plugin-lib'` inside an\n// external plugin file would fail with MODULE_NOT_FOUND.\n//\n// We handle this by transforming the plugin source at load time — replacing\n// the `varlock/plugin-lib` import with a globalThis accessor. Single-file\n// plugins are restricted from having other imports, so this is the only\n// substitution needed.\n// In SEA builds, varlock isn't in node_modules so we must always provide these.\n// In non-SEA CJS, we still intercept require('varlock/plugin-lib') to guarantee\n// the same module instance (dist/plugin-lib.js would be a separate copy from the\n// source modules loaded by vitest/ts-node, causing the plugin proxy to diverge).\nconst varlockPluginLibExports = {\n plugin: pluginProxy,\n ValidationError,\n CoercionError,\n SchemaError,\n ResolutionError,\n createDebug,\n};\n\n\n/**\n * Loads and executes a CJS plugin module.\n *\n * Plugins are built as CJS. We use `new Function` to create a CJS module scope\n * (exports, require, module, __filename, __dirname) — this runs in the main\n * Node.js/Bun context so all built-in globals (DOMException, fetch, etc.) work\n * correctly. `require('varlock/plugin-lib')` is intercepted to return the\n * plugin context, so plugin code accesses it via a standard require call.\n *\n * We intentionally avoid vm.createContext with a Proxy sandbox because Node.js\n * C++ lazy property initializers (e.g. for DOMException) assert IsolateData\n * exists on the context, which is not set up for Proxy-based vm contexts.\n */\nfunction loadPluginModuleCJS(filePath: string): void {\n applyBunCryptoShim();\n\n const code = fsSync.readFileSync(filePath, 'utf-8');\n const pluginDir = path.dirname(filePath);\n const moduleObj = { exports: {} as any };\n const baseRequire = createRequire(filePath);\n const requireFn = (id: string) => {\n if (id === 'varlock/plugin-lib') return varlockPluginLibExports;\n return baseRequire(id);\n };\n requireFn.resolve = baseRequire.resolve.bind(baseRequire);\n requireFn.main = baseRequire.main;\n requireFn.cache = baseRequire.cache;\n\n // eslint-disable-next-line no-new-func\n const moduleFn = new Function('exports', 'require', 'module', '__filename', '__dirname', code);\n moduleFn(moduleObj.exports, requireFn, moduleObj, filePath, pluginDir);\n}\n\n/**\n * Loads and executes an ESM or TypeScript plugin module via dynamic import().\n *\n * In SEA builds, `import { plugin } from 'varlock/plugin-lib'` is replaced\n * at load time with a globalThis accessor (varlock isn't in the user's\n * node_modules). Single-file plugins are restricted from other imports so\n * this substitution is sufficient. In non-SEA environments varlock resolves\n * naturally via node_modules.\n *\n * TypeScript (.ts) files are supported natively under Bun's runtime.\n *\n * A cache-busting query param (non-SEA) or unique temp filename (SEA) ensures\n * the module re-executes on each load, which matters for test fixtures.\n */\nasync function loadPluginModuleESM(filePath: string): Promise<void> {\n if (__VARLOCK_SEA_BUILD__) {\n (globalThis as any).__varlockPluginLib = varlockPluginLibExports;\n\n let source = (await fs.readFile(filePath, 'utf-8')).replace(\n /import\\s*\\{([^}]+)\\}\\s*from\\s*['\"]varlock\\/plugin-lib['\"]/g,\n (_match: string, imports: string) => `const {${imports}} = globalThis.__varlockPluginLib;`,\n );\n\n if (path.extname(filePath) === '.ts') {\n // @ts-ignore - Bun global only available in Bun runtime\n source = new Bun.Transpiler({ loader: 'ts' }).transformSync(source);\n }\n\n await import(`data:text/javascript,${encodeURIComponent(source)}`);\n } else {\n const fileUrl = pathToFileURL(filePath).href;\n await import(`${fileUrl}?t=${Date.now()}`);\n }\n}\n\n\nexport class VarlockPlugin {\n // helper so end user code can get same error classes\n readonly ERRORS = {\n ValidationError,\n CoercionError,\n SchemaError,\n ResolutionError,\n };\n\n private _packageJson?: Record<string, any>;\n\n private _name?: string;\n get name() { return this._packageJson?.name || this._name || 'unnamed plugin'; }\n set name(val: string) { this._name = val; }\n\n private _version?: string;\n get version() { return this._packageJson?.version || this._version || '0.0.0'; }\n set version(val: string) { this._version = val; }\n\n private _icon?: string;\n get icon() { return this._icon || 'mdi:puzzle'; }\n set icon(val: string) { this._icon = val; }\n\n loadingError?: Error;\n warnings: Array<SchemaError> = [];\n\n readonly localPath?: string;\n\n /** reference to the `@plugin()` decorator instance(s) that installed the plugin */\n installDecoratorInstances: Array<DecoratorInstance> = [];\n\n type: 'single-file' | 'package';\n\n constructor(opts: {\n type: 'single-file' | 'package',\n localPath: string,\n loadingError?: Error,\n packageJson?: { name: string; version?: string; description?: string };\n }) {\n this.type = opts.type;\n this.localPath = opts?.localPath;\n this._packageJson = opts?.packageJson;\n }\n\n // awkwardly using get here to make sure we bind the debug function to this\n // which lets us destructure it in plugin code\n private debugger: Debugger | undefined;\n get debug() {\n return (...args: Parameters<Debugger>) => {\n if (!this.debugger) {\n if (!this.name) throw new Error('expected plugin name to be set before using debug');\n this.debugger = createDebug(`varlock:plugin:${this.name}`);\n }\n return this.debugger(...args);\n };\n }\n\n\n readonly dataTypes?: Array<Parameters<typeof createEnvGraphDataType>[0]> = [];\n registerDataType(dataTypeDef: Parameters<typeof createEnvGraphDataType>[0]) {\n this.debug('registerDataType', dataTypeDef.name);\n this.dataTypes!.push(dataTypeDef);\n }\n\n readonly rootDecorators?: Array<RootDecoratorDef<any>> = [];\n registerRootDecorator<T>(decoratorDef: RootDecoratorDef<T>) {\n this.debug('registerRootDecorator', decoratorDef.name);\n this.rootDecorators!.push(decoratorDef);\n }\n\n readonly itemDecorators?: Array<ItemDecoratorDef<any>> = [];\n registerItemDecorator<T>(decoratorDef: ItemDecoratorDef<T>) {\n this.debug('registerItemDecorator', decoratorDef.name);\n this.itemDecorators!.push(decoratorDef);\n }\n\n readonly resolverFunctions?: Array<ResolverDef<any>> = [];\n registerResolverFunction<T>(resolverDef: ResolverDef<T>) {\n this.debug('registerResolverFunction', resolverDef.name);\n this.resolverFunctions!.push(resolverDef);\n }\n\n /**\n * Declare standard env vars this plugin uses.\n * Set during plugin init — the loading infrastructure will automatically\n * check for these vars and generate warnings if they are detected but not wired up.\n *\n * `key` accepts a single env var name or an array of alternatives — the first match is used.\n * `dataType` is used to generate `# @type=...` schema lines for vars not in the schema.\n */\n standardVars?: {\n initDecorator: string,\n params: Record<string, { key: string | Array<string>, dataType?: string }>,\n };\n\n /** called by the loading infrastructure — checks declared standardVars against the graph */\n _checkStandardVars(graph: {\n overrideValues: Record<string, string | undefined>,\n configSchema: Record<string, any>,\n sortedDataSources: Iterable<{\n rootDecorators: Array<{\n name: string, isFunctionCall: boolean, decValueResolver?: { deps: Array<string> },\n }>,\n }>,\n }) {\n if (!this.standardVars) return;\n const { initDecorator, params } = this.standardVars;\n\n // resolve each param to the first matching env key\n const resolved = Object.entries(params).map(([paramName, { key, dataType }]) => {\n const keys = Array.isArray(key) ? key : [key];\n const matchedKey = keys.find((k) => graph.overrideValues[k]);\n return {\n paramName, matchedKey, resolvedKey: matchedKey || keys[0], dataType,\n };\n });\n\n // collect config item keys already wired via init decorator instances\n const initDecName = initDecorator.replace(/^@/, '');\n const wiredVarNames = new Set<string>();\n for (const source of graph.sortedDataSources) {\n for (const rootDec of source.rootDecorators) {\n if (rootDec.name === initDecName && rootDec.isFunctionCall && rootDec.decValueResolver) {\n for (const dep of rootDec.decValueResolver.deps) wiredVarNames.add(dep);\n }\n }\n }\n\n // filter: only warn about vars detected in environment but NOT wired to the init decorator\n const detected = resolved.filter((v) => v.matchedKey && !wiredVarNames.has(v.matchedKey));\n if (detected.length === 0) return;\n\n const detectedKeys = detected.map((v) => v.matchedKey!);\n const needsSchemaSet = new Set(\n detected.filter((v) => !(v.resolvedKey in graph.configSchema)).map((v) => v.resolvedKey),\n );\n\n const wiringParams = detected\n .map((v) => ansis.green(`${v.paramName}=$${v.resolvedKey}`))\n .join(', ');\n\n const tip: Array<string> = [\n '',\n 'Include in your schema and use in plugin initialization:',\n '',\n ` # ${initDecorator}(..., ${wiringParams})`,\n ' # ---',\n ];\n\n for (const v of detected) {\n const inSchema = !needsSchemaSet.has(v.resolvedKey);\n if (v.dataType) {\n const typeLine = ` # @type=${v.dataType}`;\n tip.push(inSchema ? typeLine : ansis.green(typeLine));\n }\n const itemLine = ` ${v.resolvedKey}=`;\n tip.push(inSchema ? itemLine : ansis.green(itemLine));\n }\n\n tip.push('');\n\n this.warnings.push(new SchemaError(\n `${detectedKeys.join(', ')} found in environment but not connected to plugin`,\n { isWarning: true, tip },\n ));\n }\n\n get pluginFilePath() {\n if (this.type === 'single-file') return this.localPath!;\n const pluginExport = this._packageJson?.exports?.['./plugin'] || '';\n if (!pluginExport) throw new Error('Plugin package.json is missing ./plugin export');\n return path.join(this.localPath!, pluginExport);\n }\n\n async executePluginModule() {\n activatePlugin(this);\n\n // Install a trap on globalThis.plugin so that old plugins which relied on\n // the implicit `plugin` global get a clear migration error instead of a\n // confusing \"Cannot set properties of undefined\" TypeError.\n const hadGlobalPlugin = 'plugin' in globalThis;\n const prevGlobalPlugin = (globalThis as any).plugin;\n const pluginGlobalRemovedMsg = `[varlock] Plugin \"${this.name}\" is incompatible with this version of varlock.`\n + ' Please upgrade the plugin to the latest version.';\n Object.defineProperty(globalThis, 'plugin', {\n get() { throw new Error(pluginGlobalRemovedMsg); },\n set() { throw new Error(pluginGlobalRemovedMsg); },\n configurable: true,\n });\n\n try {\n // slightly nicer error than the default MODULE_NOT_FOUND\n if (!await pathExists(this.pluginFilePath)) throw new Error(`Plugin file not found: ${this.pluginFilePath}`);\n\n importedPluginModulePaths.add(this.pluginFilePath);\n\n const ext = path.extname(this.pluginFilePath).toLowerCase();\n if (ext === '.mjs' || ext === '.ts') {\n await loadPluginModuleESM(this.pluginFilePath);\n } else {\n loadPluginModuleCJS(this.pluginFilePath);\n }\n } catch (err) {\n this.loadingError = err as Error;\n } finally {\n // Restore globalThis.plugin to its previous state\n if (hadGlobalPlugin) {\n Object.defineProperty(globalThis, 'plugin', {\n value: prevGlobalPlugin,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n } else {\n delete (globalThis as any).plugin;\n }\n deactivatePlugin();\n }\n }\n}\n\n\n\nasync function initPluginFromLocalPath(localPath: string) {\n const stats = await fs.stat(localPath);\n\n // If it's a file, load the plugin directly\n if (stats.isFile()) {\n const ext = path.extname(localPath).toLowerCase();\n if (ext === '.ts' && !isBunRuntime) {\n throw new SchemaError(`TypeScript plugins (.ts) require Bun — try renaming to .mjs or compiling to .js first: ${localPath}`);\n }\n if (!['.js', '.cjs', '.mjs', '.ts'].includes(ext)) {\n throw new SchemaError(`Single-file plugin must be a .js, .cjs, .mjs, or .ts file: ${localPath}`);\n }\n\n return new VarlockPlugin({\n type: 'single-file',\n localPath,\n });\n\n // If it's a directory, load package.json and use exports field\n } else if (stats.isDirectory()) {\n const pkgJsonPath = path.join(localPath, 'package.json');\n if (!(await pathExists(pkgJsonPath))) {\n throw new SchemaError('Plugin is missing package.json file');\n }\n\n const packageJsonContents = JSON.parse(await fs.readFile(pkgJsonPath, 'utf-8'));\n if (!packageJsonContents.exports?.['./plugin']) {\n throw new SchemaError('Plugin is missing \"./plugin\" export in package.json');\n }\n\n return new VarlockPlugin({\n type: 'package',\n localPath,\n packageJson: packageJsonContents,\n });\n } else {\n throw new Error(`Invalid plugin path (not a file or directory): ${localPath}`);\n }\n}\n\n\nasync function registerPluginInGraph(graph: EnvGraph, plugin: VarlockPlugin, pluginDecorator: RootDecoratorInstance) {\n let existingPlugin: VarlockPlugin | undefined;\n for (const possibleMatchingPlugin of graph.plugins) {\n if (plugin.type === 'single-file') {\n if (possibleMatchingPlugin.type === 'single-file' && possibleMatchingPlugin.localPath === plugin.localPath) {\n existingPlugin = possibleMatchingPlugin;\n }\n } else if (plugin.type === 'package') {\n if (possibleMatchingPlugin.name === plugin.name) {\n if (possibleMatchingPlugin.version === plugin.version) {\n const installedInSources = possibleMatchingPlugin.installDecoratorInstances.map((dec) => dec.dataSource);\n if (installedInSources.includes(pluginDecorator.dataSource)) {\n pluginDecorator._schemaErrors.push(new SchemaError(`Plugin ${plugin.name} already installed in this data source`));\n return;\n }\n\n existingPlugin = possibleMatchingPlugin;\n } else {\n pluginDecorator._schemaErrors.push(new SchemaError(`Plugin ${plugin.name} version conflict: tried to install version ${plugin.version} but version ${possibleMatchingPlugin.version} is already installed`));\n return;\n }\n }\n }\n }\n if (existingPlugin) {\n existingPlugin.installDecoratorInstances.push(pluginDecorator);\n return;\n }\n\n plugin.installDecoratorInstances.push(pluginDecorator);\n graph.plugins.push(plugin);\n\n // this finally executes the plugin code\n await plugin.executePluginModule();\n\n // if plugin failed to load, don't try to register its exports\n if (plugin.loadingError) {\n return;\n }\n\n // register decorators, resolvers, data types from this plugin\n for (const rootDec of plugin.rootDecorators || []) {\n graph.registerRootDecorator(rootDec);\n }\n for (const itemDec of plugin.itemDecorators || []) {\n graph.registerItemDecorator(itemDec);\n }\n for (const dataType of plugin.dataTypes || []) {\n graph.registerDataType(createEnvGraphDataType(dataType));\n }\n for (const resolverDef of plugin.resolverFunctions || []) {\n // might want to move into plugin load process\n graph.registerResolver(createResolver(resolverDef));\n }\n}\n\nasync function isPluginCached(url: string): Promise<boolean> {\n const cacheDir = path.join(getUserVarlockDir(), 'plugins-cache');\n const indexPath = path.join(cacheDir, 'index.json');\n try {\n const indexRaw = await fs.readFile(indexPath, 'utf-8');\n const index = JSON.parse(indexRaw) as Record<string, string>;\n if (index[url]) {\n const pluginDir = path.join(cacheDir, index[url]);\n return fs.stat(pluginDir).then(() => true, () => false);\n }\n } catch {\n // ignore\n }\n return false;\n}\n\nasync function downloadPlugin(url: string) {\n const exec = promisify(execCb);\n const cacheDir = path.join(getUserVarlockDir(), 'plugins-cache');\n const indexPath = path.join(cacheDir, 'index.json');\n await fs.mkdir(cacheDir, { recursive: true });\n\n // Load or create index.json\n let index: Record<string, string> = {};\n try {\n const indexRaw = await fs.readFile(indexPath, 'utf-8');\n index = JSON.parse(indexRaw);\n } catch {\n // ignore, treat as empty\n }\n\n if (index[url]) {\n const pluginDir = path.join(cacheDir, index[url]);\n if (await fs.stat(pluginDir).then(() => true, () => false)) {\n return pluginDir;\n }\n // If mapping exists but folder is missing, fall through to re-download\n }\n\n // Download the file\n const tmpTgz = path.join(cacheDir, `tmp-${crypto.randomBytes(8).toString('hex')}.tgz`);\n await new Promise<void>((resolve, reject) => {\n const file = fsSync.createWriteStream(tmpTgz);\n https.get(url, (res) => {\n if (res.statusCode !== 200) {\n reject(new Error(`Failed to download plugin: ${res.statusCode}`));\n return;\n }\n res.pipe(file);\n file.on('finish', () => file.close(() => resolve()));\n file.on('error', reject);\n }).on('error', reject);\n });\n\n // Extract tgz to a temp folder\n const tmpExtractDir = path.join(cacheDir, `tmp-extract-${crypto.randomBytes(8).toString('hex')}`);\n await fs.mkdir(tmpExtractDir);\n await exec(`tar -xzf ${tmpTgz} -C ${tmpExtractDir}`);\n\n // Find package.json (assume in package/ or root)\n let pkgJsonPath = path.join(tmpExtractDir, 'package', 'package.json');\n let pluginRoot = path.join(tmpExtractDir, 'package');\n if (!(await fs.stat(pkgJsonPath).then(() => true, () => false))) {\n pkgJsonPath = path.join(tmpExtractDir, 'package.json');\n pluginRoot = tmpExtractDir;\n if (!(await fs.stat(pkgJsonPath).then(() => true, () => false))) {\n throw new Error('package.json not found in plugin tgz');\n }\n }\n const pkgJson = JSON.parse(await fs.readFile(pkgJsonPath, 'utf-8'));\n\n // Generate unique hash for folder name\n const safePackageName = (pkgJson.name || '').replaceAll('/', '-').replaceAll('@', '');\n const dirName = `${safePackageName}_${(pkgJson.version || '')}_${crypto.randomBytes(4).toString('hex')}`;\n const finalDir = path.join(cacheDir, dirName);\n\n // Move extracted folder to finalDir\n await fs.rm(finalDir, { recursive: true, force: true });\n await fs.rename(pluginRoot, finalDir);\n await fs.rm(tmpTgz, { force: true });\n await fs.rm(tmpExtractDir, { recursive: true, force: true });\n\n // Update index.json file with mapping b/w url and new folder\n index[url] = dirName;\n await fs.writeFile(indexPath, JSON.stringify(index, null, 2));\n\n return finalDir;\n}\n\n/**\n * Fetches plugin metadata from npm and downloads the tarball into the local cache.\n * The caller is responsible for any user confirmation — this function downloads unconditionally.\n *\n * @param moduleName e.g. `@varlock/1password-plugin` or `my-plugin`\n * @param versionDescriptor must be a fixed semver version e.g. `1.2.3`\n * @returns the local cache directory the plugin was extracted into\n */\nexport async function downloadPluginToCache(moduleName: string, versionDescriptor: string): Promise<string> {\n if (!semver.valid(versionDescriptor)) {\n throw new Error(`\"${versionDescriptor}\" is not a fixed version — use an exact version like 1.2.3`);\n }\n\n const npmInfoUrl = `https://registry.npmjs.org/${moduleName}/${versionDescriptor}`;\n const npmInfoReq = await fetch(npmInfoUrl);\n if (!npmInfoReq.ok) {\n throw new Error(`Failed to fetch plugin \"${moduleName}@${versionDescriptor}\" from npm: ${npmInfoReq.status} ${npmInfoReq.statusText}`);\n }\n const npmInfo = await npmInfoReq.json() as { dist?: { tarball?: string } };\n const tarballUrl = npmInfo?.dist?.tarball;\n if (!tarballUrl) {\n throw new Error(`Failed to find tarball URL for plugin \"${moduleName}@${versionDescriptor}\" from npm`);\n }\n\n return downloadPlugin(tarballUrl);\n}\n\n\nexport async function processPluginInstallDecorators(dataSource: EnvGraphDataSource) {\n const graph = dataSource.graph;\n if (!graph) throw new Error('Data source not attached to graph');\n\n // handle plugin decorators\n const installPluginDecorators = dataSource.getRootDecFns('plugin');\n if (installPluginDecorators.length) {\n if (!(dataSource instanceof FileBasedDataSource)) {\n dataSource._loadingError = new Error('@plugin can only be used from a file-based data source');\n return;\n }\n const dataSourceDir = path.dirname(dataSource.fullPath);\n for (const pluginDecorator of installPluginDecorators) {\n let pluginSrcPath: string | undefined;\n try {\n const installPluginArgs = await pluginDecorator.resolve();\n const pluginSourceDescriptor = installPluginArgs.arr[0];\n if (!_.isString(pluginSourceDescriptor)) {\n throw new SchemaError('Bad @plugin - must provide a string source location');\n }\n // install from local file path\n if (pluginSourceDescriptor.startsWith('./') || pluginSourceDescriptor.startsWith('../') || pluginSourceDescriptor.startsWith('/')) {\n pluginSrcPath = pluginSourceDescriptor.startsWith('/') ? pluginSourceDescriptor : path.resolve(dataSourceDir, pluginSourceDescriptor);\n if (!(await pathExists(pluginSrcPath))) {\n // in this case, the bad path is the user's fault\n throw new SchemaError(`Bad @plugin path: ${pluginSourceDescriptor}`);\n }\n } else if (pluginSourceDescriptor.includes(':')) {\n const protocol = pluginSourceDescriptor.split(':')[0];\n // protocols that we will likely support in future\n if (['https', 'npm', 'jsr', 'git'].includes(protocol)) {\n throw new SchemaError(`@plugin source protocol \"${protocol}\" is not yet supported`);\n } else {\n throw new SchemaError(`Bad @plugin source protocol: ${protocol}`);\n }\n\n // we will assume its a npm module name - `packageName` / `packageName@version`\n } else {\n const atLocation = pluginSourceDescriptor.indexOf('@', 1);\n let versionDescriptor: string | undefined;\n let moduleName: string | undefined;\n if (atLocation === -1) {\n moduleName = pluginSourceDescriptor;\n } else {\n moduleName = pluginSourceDescriptor.slice(0, atLocation);\n versionDescriptor = pluginSourceDescriptor.slice(atLocation + 1);\n }\n\n const semverRange = semver.validRange(versionDescriptor);\n if (versionDescriptor && !semverRange) {\n throw new SchemaError(`Bad @plugin version descriptor: ${versionDescriptor}`);\n } else if (semverRange === '*') {\n throw new SchemaError(`Version descriptor \"${versionDescriptor}\" is too broad`);\n } else if (versionDescriptor === '') {\n throw new SchemaError('Bad @plugin version descriptor - remove \"@\" or specify a valid version');\n }\n\n // Walk up the directory tree checking each node_modules for the plugin.\n // This supports monorepos where npm/yarn/pnpm may hoist packages to the\n // root node_modules rather than the workspace's own node_modules.\n const workspaceRootPath = getWorkspaceInfo()?.rootPath;\n\n let currentDir = dataSourceDir;\n let nodeModulesPath: string | undefined;\n while (currentDir) {\n if (!nodeModulesPath && await pathExists(path.join(currentDir, 'package.json'))) {\n // Track the nearest package.json's node_modules for error messages\n nodeModulesPath = path.join(currentDir, 'node_modules');\n }\n\n const candidatePluginPath = path.join(currentDir, 'node_modules', moduleName);\n if (await pathExists(candidatePluginPath)) {\n // TODO: cache the package.json since we will read it again later\n const pluginPackageJsonPath = path.join(candidatePluginPath, 'package.json');\n const packageJsonString = await fs.readFile(pluginPackageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonString);\n const packageVersion = packageJson.version;\n if (versionDescriptor && !semver.satisfies(packageVersion, versionDescriptor)) {\n throw new SchemaError(`Installed plugin \"${moduleName}\" version \"${packageVersion}\" does not satisfy requested version \"${versionDescriptor}\"`, {\n location: getErrorLocation(dataSource, pluginDecorator),\n });\n }\n pluginSrcPath = candidatePluginPath;\n break;\n }\n\n // stop at the workspace root - no need to search beyond it\n if (workspaceRootPath && currentDir === workspaceRootPath) break;\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) break; // will stop when we reach the filesystem root\n currentDir = parentDir;\n }\n\n // attempt to fetch from npm if we did not succeed getting a local path above\n if (!pluginSrcPath) {\n if (!versionDescriptor) {\n // this tells us if the user is using package.json, so we can make the error message more helpful\n if (nodeModulesPath) {\n throw new SchemaError(`Plugin \"${moduleName}\" unable to resolve - install locally via your package.json file`);\n } else {\n throw new SchemaError(`Plugin \"${moduleName}\" unable to resolve - set a fixed version (e.g., \\`@plugin(${moduleName}@1.2.3)\\`)`);\n }\n } else if (!semver.valid(versionDescriptor)) {\n throw new SchemaError(`Plugin \"${moduleName}\" must use a fixed version when not installing via package.json (e.g., \\`@plugin(${moduleName}@1.2.3)\\`)`, {\n location: getErrorLocation(dataSource, pluginDecorator),\n });\n }\n\n // ex: https://registry.npmjs.org/@varlock/plugin-name/1.2.3\n const npmInfoUrl = `https://registry.npmjs.org/${moduleName}/${versionDescriptor}`;\n const npmInfoReq = await fetch(npmInfoUrl);\n if (!npmInfoReq.ok) {\n // TODO: new error type? check for 404 vs others and give better message\n throw new Error(`Failed to fetch plugin \"${moduleName}@${versionDescriptor}\" from npm: ${npmInfoReq.status} ${npmInfoReq.statusText}`);\n }\n const npmInfo = await npmInfoReq.json() as { dist?: { tarball?: string } };\n const tarballUrl = npmInfo?.dist?.tarball;\n if (!tarballUrl) {\n throw new Error(`Failed to find tarball URL for plugin \"${moduleName}@${versionDescriptor}\" from npm`);\n }\n\n // Third-party plugins (non-@varlock) require user confirmation before downloading.\n // Official @varlock plugins are always trusted. If already cached (previously confirmed),\n // skip the prompt — the user has already blessed this specific version.\n if (!moduleName.startsWith('@varlock/') && !(await isPluginCached(tarballUrl))) {\n if (!process.stdout.isTTY || !process.stdin.isTTY) {\n throw new SchemaError(\n `Third-party plugin \"${moduleName}@${versionDescriptor}\" must be confirmed before downloading, `\n + 'but no interactive terminal (TTY) is available. '\n + 'Run `varlock install-plugin` to pre-cache the plugin, or install it via your package.json.',\n );\n }\n\n process.stdout.write(\n `\\n${ansis.yellow('⚠')} Third-party plugin download requested\\n`\n + ` Package: ${ansis.bold(`${moduleName}@${versionDescriptor}`)}\\n`\n + ' Source: npm registry (https://registry.npmjs.org)\\n\\n'\n + ` ${ansis.italic('Only install plugins from sources you trust.')}\\n\\n`,\n );\n\n const confirmed = await confirm({\n message: `Allow downloading \"${moduleName}@${versionDescriptor}\" from npm?`,\n active: 'Yes, download it',\n inactive: 'No, cancel',\n initialValue: false,\n });\n\n if (isCancel(confirmed) || !confirmed) {\n throw new SchemaError(`Third-party plugin \"${moduleName}\" download cancelled`);\n }\n }\n\n // downloads into local cache folder (user varlock config dir / plugins-cache/)\n const downloadedPluginPath = await downloadPlugin(tarballUrl);\n pluginSrcPath = downloadedPluginPath;\n }\n }\n\n const plugin = await initPluginFromLocalPath(pluginSrcPath);\n // might return an existing plugin if matches one in the graph\n await registerPluginInGraph(graph, plugin, pluginDecorator);\n } catch (err) {\n pluginDecorator._schemaErrors.push(err as any);\n continue;\n }\n }\n }\n}\n\nexport type VarlockPluginCtx = {\n debug: Debugger,\n errors: {\n ValidationError: typeof ValidationError,\n CoercionError: typeof CoercionError,\n SchemaError: typeof SchemaError,\n ResolutionError: typeof ResolutionError,\n }\n};\n\nexport type definePluginFn = (p: VarlockPlugin) => void;\n\n","/// <reference path=\"../../globals.d.ts\" />\nimport _ from '@env-spec/utils/my-dash';\nimport {\n ParsedEnvSpecFunctionCall, ParsedEnvSpecStaticValue,\n parseEnvSpecDotEnvFile,\n type ParsedEnvSpecDecorator,\n} from '@env-spec/parser';\nimport { EnvGraphDataSource } from './data-source';\nimport type { ConfigItem } from './config-item';\nimport { StaticValueResolver, type Resolver, convertParsedValueToResolvers } from './resolver';\nimport { SchemaError } from './errors';\nimport type { EnvGraph } from './env-graph';\n\n\nexport abstract class DecoratorInstance {\n get name() { return this.parsedDecorator.name; }\n get isFunctionCall() { return !!this.parsedDecorator.isBareFnCall; }\n\n // decorator value/args are translated into a resolver when we process the decorator\n _decValueResolver?: Resolver;\n get decValueResolver() {\n return this._decValueResolver;\n }\n\n abstract readonly isRootDecorator: boolean;\n abstract readonly dataSource: EnvGraphDataSource;\n abstract readonly parsedDecorator: ParsedEnvSpecDecorator;\n\n abstract graph: EnvGraph;\n\n _schemaErrors: Array<SchemaError> = [];\n get schemaErrors() {\n return [\n ...this._schemaErrors,\n ...this._decValueResolver?.schemaErrors || [],\n ];\n }\n\n // error encountered during `execute` function\n _executionError?: Error;\n\n private decoratorDef?: ItemDecoratorDef | RootDecoratorDef;\n get incompatibleWith() {\n return this.decoratorDef?.incompatibleWith;\n }\n\n private processed = false;\n private processedData: any;\n async process() {\n if (this.processed) return;\n this.processed = true;\n\n if (!this.graph) throw new Error('expected graph to be set');\n\n try {\n const decRegistry = this.isRootDecorator\n ? this.graph.rootDecoratorsRegistry\n : this.graph.itemDecoratorsRegistry;\n this.decoratorDef = decRegistry[this.name];\n if (!this.decoratorDef) {\n // check if the decorator exists in the other registry (misplaced)\n const otherRegistry = this.isRootDecorator\n ? this.graph.itemDecoratorsRegistry\n : this.graph.rootDecoratorsRegistry;\n if (otherRegistry[this.name]) {\n if (this.isRootDecorator) {\n throw new SchemaError(`@${this.name} is an item decorator and cannot be used in the file header - it must be attached to a config item`);\n } else {\n throw new SchemaError(`@${this.name} is a root decorator and cannot be attached to a config item - it must be in the file header (before the first config item)`);\n }\n }\n throw new Error(`Unknown decorator: @${this.name}`);\n }\n\n // validate function-call vs value syntax\n if (this.decoratorDef.isFunction && !this.isFunctionCall) {\n throw new SchemaError(\n `@${this.name} must be used as a function call - use @${this.name}(...) instead of @${this.name}=value`,\n );\n }\n if (!this.decoratorDef.isFunction && this.isFunctionCall) {\n throw new SchemaError(\n `@${this.name} cannot be used as a function call - use @${this.name}=value instead of @${this.name}(...)`,\n );\n }\n\n // this is so we can deal with @type, where each data type is not a real resolver\n // so instead we just make a new dummy resolver holding the args\n if (\n this.decoratorDef.useFnArgsResolver\n && this.parsedDecorator.value instanceof ParsedEnvSpecFunctionCall\n ) {\n this._decValueResolver = convertParsedValueToResolvers(\n this.parsedDecorator.value.data.args,\n this.dataSource,\n this.graph.registeredResolverFunctions,\n );\n } else {\n this._decValueResolver = convertParsedValueToResolvers(\n this.parsedDecorator.value,\n this.dataSource,\n this.graph.registeredResolverFunctions,\n );\n }\n\n if (this.decValueResolver) {\n // process value resolver\n await this.decValueResolver.process(this);\n\n // process decorator according to definition\n // which can return another function, to be called later\n this.processedData = await this.decoratorDef.process?.(this.decValueResolver);\n }\n } catch (e) {\n this._schemaErrors.push(e instanceof SchemaError ? e : new SchemaError(e as Error));\n }\n }\n async execute() {\n await this.decoratorDef!.execute?.(this.processedData);\n }\n\n resolvedValue?: any;\n isResolved = false;\n\n async resolve() {\n if (this.isResolved) return this.resolvedValue;\n\n await this.process();\n if (!this.decValueResolver) {\n // process() already recorded schema errors, don't throw again (warnings don't block)\n if (this._schemaErrors.some((e) => !e.isWarning)) return;\n throw new Error('expected decorator to have a value resolver');\n }\n try {\n this.resolvedValue = await this.decValueResolver.resolve();\n } catch (err) {\n this._schemaErrors.push(err as any);\n return;\n }\n\n this.isResolved = true;\n return this.resolvedValue;\n }\n}\n\nexport class ItemDecoratorInstance extends DecoratorInstance {\n isRootDecorator = false;\n\n constructor(\n readonly configItem: ConfigItem,\n readonly dataSource: EnvGraphDataSource,\n readonly parsedDecorator: ParsedEnvSpecDecorator,\n ) {\n super();\n }\n get graph() { return this.dataSource.graph!; }\n}\n\nexport class RootDecoratorInstance extends DecoratorInstance {\n isRootDecorator = true;\n constructor(\n readonly dataSource: EnvGraphDataSource,\n readonly parsedDecorator: ParsedEnvSpecDecorator,\n ) {\n super();\n }\n get graph() { return this.dataSource.graph!; }\n}\n\n\n\n// ~ setValuesBulk helpers ----------------------------------------\n\nfunction detectBulkFormat(data: string): 'json' | 'env' {\n return data.trimStart().startsWith('{') ? 'json' : 'env';\n}\n\nfunction parseJsonBulkValues(data: string): Record<string, { value: string | number | boolean }> {\n let parsed: any;\n try {\n parsed = JSON.parse(data);\n } catch (err) {\n throw new SchemaError(`@setValuesBulk: invalid JSON data - ${(err as Error).message}`);\n }\n if (!_.isPlainObject(parsed)) {\n throw new SchemaError('@setValuesBulk: JSON data must be a flat object');\n }\n const result: Record<string, { value: string | number | boolean }> = {};\n for (const [key, val] of Object.entries(parsed)) {\n if (val === null || val === undefined) continue; // skip nulls\n if (_.isPlainObject(val) || _.isArray(val)) {\n throw new SchemaError(`@setValuesBulk: JSON value for \"${key}\" must be a scalar, not an object or array`);\n }\n result[key] = { value: val as string | number | boolean };\n }\n return result;\n}\n\nfunction parseEnvBulkValues(\n data: string,\n): Record<string, { value: string, description?: string }> {\n let parsedFile;\n try {\n parsedFile = parseEnvSpecDotEnvFile(data);\n } catch (err) {\n throw new SchemaError(`@setValuesBulk: failed to parse env data - ${(err as Error).message}`);\n }\n const result: Record<string, { value: string, description?: string }> = {};\n for (const item of parsedFile.configItems) {\n if (item.value instanceof ParsedEnvSpecFunctionCall) {\n throw new SchemaError(\n `@setValuesBulk: env format does not support function calls for \"${item.key}\".`\n + ' Use single quotes for literal values or use format=json instead.',\n );\n }\n if (item.value instanceof ParsedEnvSpecStaticValue) {\n result[item.key] = {\n value: String(item.value.unescapedValue ?? ''),\n description: item.description || undefined,\n };\n } else {\n // undefined value (empty assignment like `KEY=`)\n result[item.key] = { value: '', description: item.description || undefined };\n }\n }\n return result;\n}\n\n// ~ Root decorators ----------------------------------------\nexport type RootDecoratorDef<Processed = any> = {\n name: string,\n description?: string;\n isFunction?: boolean;\n deprecated?: boolean | string;\n incompatibleWith?: Array<string>;\n process?: (decoratorValue: Resolver) => (Processed | Promise<Processed>);\n execute?: (executeInput: Processed) => void | Promise<void>;\n useFnArgsResolver?: boolean,\n};\n\n// root decorators\nexport const builtInRootDecorators: Array<RootDecoratorDef<any>> = [\n {\n name: 'envFlag',\n deprecated: 'use @currentEnv instead',\n },\n {\n name: 'currentEnv',\n incompatibleWith: ['envFlag'],\n },\n {\n name: 'defaultRequired',\n process: (decVal) => {\n if (\n !decVal.isStatic\n || ![true, false, 'infer'].includes(decVal.staticValue as any)\n ) {\n throw new Error('@defaultRequired decorator value must be set to a static value of true, false, or \"infer\"');\n }\n },\n },\n {\n name: 'defaultSensitive',\n process: (decVal) => {\n if (\n (decVal.isStatic && !_.isBoolean(decVal.staticValue))\n || (!decVal.isStatic && decVal.fnName && decVal.fnName !== 'inferFromPrefix')\n ) {\n throw new Error('only true, false, or `inferFromPrefix()` is allowed for @defaultSensitive decorator');\n }\n },\n },\n {\n name: 'disable',\n },\n {\n name: 'generateTypes',\n isFunction: true,\n },\n {\n name: 'import',\n isFunction: true,\n process: (decVal) => {\n if (!decVal.arrArgs || decVal.arrArgs.length === 0) {\n throw new Error('@import decorator must have at least one argument - the path to import');\n }\n if (decVal.arrArgs.some((a) => !a.isStatic)) {\n throw new Error('@import decorator cannot use any dynamic values - all args must be static');\n }\n // The 'enabled' named parameter is allowed and can be dynamic\n },\n },\n {\n name: 'plugin',\n isFunction: true,\n },\n {\n name: 'redactLogs',\n },\n {\n name: 'preventLeaks',\n },\n {\n name: 'setValuesBulk',\n isFunction: true,\n process(argsVal) {\n if (!argsVal.arrArgs || argsVal.arrArgs.length === 0) {\n throw new SchemaError('@setValuesBulk requires at least one argument - the data resolver');\n }\n if (argsVal.arrArgs.length > 1) {\n throw new SchemaError('@setValuesBulk expects only one positional argument - the data resolver');\n }\n if (argsVal.objArgs) {\n const validOptions = new Set(['format', 'createMissing', 'enabled']);\n for (const key of Object.keys(argsVal.objArgs)) {\n if (!validOptions.has(key)) {\n throw new SchemaError(`@setValuesBulk: unknown option \"${key}\". Valid options: format, createMissing, enabled`);\n }\n }\n // validate format option if static\n const formatResolver = argsVal.objArgs.format;\n if (formatResolver?.isStatic) {\n const formatVal = formatResolver.staticValue;\n if (formatVal !== 'json' && formatVal !== 'env') {\n throw new SchemaError('@setValuesBulk: format must be \"json\" or \"env\"');\n }\n }\n // validate createMissing option if static\n const createMissingResolver = argsVal.objArgs.createMissing;\n if (createMissingResolver?.isStatic) {\n const cmVal = createMissingResolver.staticValue;\n if (cmVal !== true && cmVal !== false) {\n throw new SchemaError('@setValuesBulk: createMissing must be true or false');\n }\n }\n }\n\n return {\n graph: argsVal.dataSource!.graph!,\n dataSource: argsVal.dataSource!,\n argsResolver: argsVal,\n };\n },\n async execute(processedData) {\n const { graph, dataSource, argsResolver } = processedData as {\n graph: EnvGraph;\n dataSource: EnvGraphDataSource;\n argsResolver: Resolver;\n };\n\n // check enabled before resolving data - important so disabled sources don't trigger data fetching\n const enabledResolver = argsResolver.objArgs?.enabled;\n if (enabledResolver !== undefined) {\n const enabledValue = await enabledResolver.resolve();\n if (!_.isBoolean(enabledValue)) {\n dataSource._loadingError = new SchemaError('@setValuesBulk: enabled must be a boolean');\n return;\n }\n if (!enabledValue) return; // disabled - skip data resolution entirely\n }\n\n // resolve the args\n const resolved = await argsResolver.resolve() as { arr: Array<any>, obj: Record<string, any> };\n const dataString = resolved.arr[0];\n const format = resolved.obj?.format as string | undefined;\n const createMissing = resolved.obj?.createMissing ?? false;\n\n if (dataString === undefined || dataString === null || dataString === '') {\n return; // empty data is a no-op\n }\n\n if (typeof dataString !== 'string') {\n dataSource._loadingError = new SchemaError('@setValuesBulk: data resolver must return a string');\n return;\n }\n\n // detect or use explicit format\n const effectiveFormat = format || detectBulkFormat(dataString);\n\n // parse the data\n let entries: Record<string, { value: string | number | boolean, description?: string }>;\n try {\n if (effectiveFormat === 'json') {\n entries = parseJsonBulkValues(dataString);\n } else {\n entries = parseEnvBulkValues(dataString);\n }\n } catch (err) {\n // surface parse errors as loading errors on the data source\n dataSource._loadingError = err instanceof SchemaError ? err : new SchemaError(err as Error);\n return;\n }\n\n // dynamic import to avoid circular dependency\n const { ConfigItem } = await import('./config-item');\n\n for (const [key, entry] of Object.entries(entries)) {\n const existsInSchema = key in graph.configSchema;\n\n if (!existsInSchema && !createMissing) {\n continue; // skip unknown keys when createMissing is false\n }\n\n // update or create the configItemDef on this data source\n if (dataSource.configItemDefs[key]) {\n // update existing def's resolver\n dataSource.configItemDefs[key].resolver = new StaticValueResolver(entry.value);\n } else {\n // create a new configItemDef entry\n dataSource.configItemDefs[key] = {\n description: entry.description,\n parsedValue: undefined,\n resolver: new StaticValueResolver(entry.value),\n };\n }\n\n // if key doesn't exist in configSchema and createMissing is true, create a new ConfigItem\n if (!existsInSchema && createMissing) {\n const newItem = new ConfigItem(graph, key);\n graph.configSchema[key] = newItem;\n await newItem.process();\n }\n }\n },\n },\n];\n\n// ~ Item decorators ----------------------------------------\nexport type ItemDecoratorDef<T = any> = {\n name: string,\n incompatibleWith?: Array<string>;\n isFunction?: boolean;\n deprecated?: boolean | string;\n process?: (decoratorValue: Resolver) => T | Promise<T>;\n execute?: (executeInput: T) => void | Promise<void>;\n useFnArgsResolver?: boolean,\n};\n\nexport const builtInItemDecorators: Array<ItemDecoratorDef<any>> = [\n {\n name: 'required',\n },\n {\n name: 'optional',\n incompatibleWith: ['required'],\n },\n {\n name: 'sensitive',\n },\n {\n name: 'public',\n incompatibleWith: ['sensitive'],\n },\n {\n name: 'type',\n useFnArgsResolver: true,\n },\n {\n name: 'example',\n },\n {\n name: 'docsUrl',\n deprecated: 'use `docs()` instead',\n },\n {\n name: 'docs',\n isFunction: true,\n },\n {\n name: 'icon',\n },\n\n // test-only decorators — dropped in release builds\n ...__VARLOCK_BUILD_TYPE__ === 'test' ? [\n {\n name: 'warn',\n process() {\n throw new SchemaError('test warning', { isWarning: true });\n },\n },\n ] as Array<ItemDecoratorDef<any>> : [],\n];\n","import { exec } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nimport _ from '@env-spec/utils/my-dash';\nimport {\n ParsedEnvSpecFunctionArgs, ParsedEnvSpecFunctionCall, ParsedEnvSpecKeyValuePair,\n ParsedEnvSpecStaticValue,\n} from '@env-spec/parser';\n\nimport { ConfigItem } from './config-item';\nimport { SimpleQueue } from './simple-queue';\nimport { ResolutionError, SchemaError, VarlockError } from './errors';\nimport type { EnvGraphDataSource } from './data-source';\nimport { DecoratorInstance } from './decorators';\nimport { getErrorLocation } from './error-location';\nimport { isBuiltinVar } from './builtin-vars';\n\nconst execAsync = promisify(exec);\n\nconst REGEX_LIKE_STRING = /^\\/(.+)\\/([gimsuy]*)$/;\n/** Try to parse an unquoted string like `/pattern/flags` into a RegExp. Returns null if not regex-like. */\nexport function parseRegexLikeString(str: string): RegExp | null {\n if (typeof str !== 'string') return null;\n const match = str.match(REGEX_LIKE_STRING);\n if (!match) return null;\n try {\n return new RegExp(match[1], match[2]);\n } catch {\n return null;\n }\n}\n\nexport type ResolvedValue = undefined\n | string | number | boolean\n | RegExp // regex is only used internally as function args, not as a final resolved value\n // TODO: will probably want to re-enable object/array values\n | { [key: string]: ResolvedValue }\n | Array<ResolvedValue>;\n// Array<ConfigValue>;\n\nexport class Resolver {\n static def: ResolverDef;\n\n constructor(\n readonly arrArgs?: Array<Resolver>,\n readonly objArgs?: Record<string, Resolver>,\n readonly dataSource?: EnvGraphDataSource,\n ) {\n if (this.def.inferredType) this.inferredType = this.def.inferredType;\n }\n\n static get fnName() { return this.def.name; }\n\n get def() { return (this.constructor as typeof Resolver).def; }\n get fnName() { return this.def.name; }\n get label() { return this.def.label; }\n get icon() { return this.def.icon; }\n\n get isStatic() { return false; }\n get staticValue(): ResolvedValue { return undefined; }\n\n inferredType?: string;\n /** reference to the parsed node that created this resolver, used for error location tracking */\n _parsedNode?: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall\n | ParsedEnvSpecFunctionArgs;\n _schemaErrors: Array<SchemaError> = [];\n private _depsObj: Record<string, boolean> = {};\n\n get childResolvers(): Array<Resolver> {\n return [\n ...this.arrArgs ?? [],\n ...Object.values(this.objArgs ?? {}),\n ];\n }\n\n get schemaErrors(): Array<SchemaError> {\n return [\n ...this._schemaErrors,\n ...this.childResolvers.flatMap((r) => r.schemaErrors),\n ];\n }\n set schemaErrors(v: Array<SchemaError>) { throw new Error('set _schemaErrors instead'); }\n\n get depsObj(): Record<string, boolean> {\n const mergedDepsObj = { ...this._depsObj };\n this.childResolvers.forEach((r) => Object.assign(mergedDepsObj, r.depsObj));\n return mergedDepsObj;\n }\n get deps() {\n return Object.keys(this.depsObj);\n }\n\n private parent?: ConfigItem | DecoratorInstance;\n\n private meta: any;\n process(parent?: ConfigItem | DecoratorInstance) {\n this.parent = parent;\n\n const { argsSchema } = this.def;\n if (argsSchema?.type === 'array' && this.objArgs !== undefined) {\n this._schemaErrors.push(new SchemaError('Resolver does not support key-value args'));\n } else if (argsSchema?.type === 'object' && this.arrArgs !== undefined) {\n this._schemaErrors.push(new SchemaError('Resolver expects only key-value args'));\n }\n\n if (argsSchema?.arrayExactLength !== undefined) {\n if (this.arrArgs?.length !== argsSchema.arrayExactLength) {\n this._schemaErrors.push(\n new SchemaError(\n `expects exactly ${argsSchema.arrayExactLength} argument${argsSchema.arrayExactLength > 1 ? 's' : ''}`,\n ),\n );\n }\n }\n if (argsSchema?.arrayMinLength !== undefined) {\n if ((this.arrArgs?.length ?? 0) < argsSchema.arrayMinLength) {\n this._schemaErrors.push(\n new SchemaError(\n `expects at least ${argsSchema.arrayMinLength} argument${argsSchema.arrayMinLength > 1 ? 's' : ''}`,\n ),\n );\n }\n }\n if (argsSchema?.arrayMaxLength !== undefined) {\n if ((this.arrArgs?.length ?? 0) > argsSchema.arrayMaxLength) {\n this._schemaErrors.push(\n new SchemaError(`expects at most ${argsSchema.arrayMaxLength} argument${argsSchema.arrayMaxLength > 1 ? 's' : ''}`),\n );\n }\n }\n\n if (argsSchema?.objKeyMinLength !== undefined) {\n const objKeyLengths = Object.keys(this.objArgs || {}).length;\n if (objKeyLengths < argsSchema.objKeyMinLength) {\n this._schemaErrors.push(\n new SchemaError(\n `expects at least ${argsSchema.objKeyMinLength} key value arg${argsSchema.objKeyMinLength > 1 ? 's' : ''}`,\n ),\n );\n }\n }\n\n // call specific resolve fn for the resolver\n if (this._schemaErrors.length === 0) {\n try {\n this.meta = this.def.process?.call(this);\n } catch (error) {\n if (error instanceof SchemaError) {\n this._schemaErrors.push(error);\n } else if (error instanceof Error) {\n this._schemaErrors.push(new SchemaError(error));\n } else {\n throw new Error(`Non-error thrown while processing resolver - ${error}`);\n }\n }\n }\n\n // adding fn name to resolver schema errors\n if (!this.def.name.startsWith('\\0')) {\n for (const e of this._schemaErrors) {\n e.message = `${this.def.name}(): ${e.message}`;\n }\n }\n\n this.childResolvers.forEach((r) => {\n r.process(parent);\n });\n }\n\n // meant to be used by subclass _process methods\n protected addDep(key: string) {\n if (!this.envGraph!.configSchema[key]) {\n throw new Error(`invalid dependency: ${key}`);\n }\n this._depsObj[key] = true;\n }\n\n protected async getCurrentEnv() {\n if (!this.dataSource) throw new Error('expected dataSource to be set');\n await this.dataSource.resolveCurrentEnv();\n return this.dataSource.envFlagValue ? String(this.dataSource.envFlagValue) : undefined;\n }\n\n async resolve() {\n try {\n const resolvedValue = await this.def.resolve.call(this, this.meta);\n return resolvedValue;\n } catch (err) {\n if (err instanceof VarlockError) {\n // prefix error message with resolver function name (matching schema error behavior)\n // only prefix if the error wasn't already prefixed by a child resolver\n if (!this.def.name.startsWith('\\0') && !(err as any)._resolverPrefixed) {\n err.message = `${this.def.name}(): ${err.message}`;\n (err as any)._resolverPrefixed = true;\n }\n // enrich errors with location info from the parsed node if available\n if (!err.more?.location && this._parsedNode && this.dataSource) {\n const location = getErrorLocation(this.dataSource, this._parsedNode);\n if (location) {\n (err as any).more ??= {};\n (err as any).more.location = location;\n }\n }\n }\n throw err;\n }\n }\n\n get envGraph() {\n if (this.parent instanceof ConfigItem) {\n return this.parent.envGraph;\n } else if (this.parent instanceof DecoratorInstance) {\n return this.parent.graph;\n }\n }\n\n // meant to be used by subclass _resolve methods\n protected getDepValue(key: string) {\n // NOTE - this should not be called if the dependency is invalid\n // because we only try to resolve the item if all deps are valid\n const depItem = this.envGraph?.configSchema[key];\n if (!depItem) throw new Error(`Referenced item \"${key}\" not found`);\n if (!depItem.isValid) throw new Error(`Referenced item \"${key}\" is not valid`);\n return depItem.resolvedValue;\n }\n}\n\n// Built-in resolver fns ---------------------------------------------------------\n\nexport type ResolverDef<T = any> = {\n name: string;\n description?: string;\n label?: string;\n icon?: string;\n inferredType?: string;\n /** If true, using this resolver implies the item is sensitive (unless explicitly overridden) */\n impliesSensitive?: boolean;\n argsSchema?: {\n type: 'array' | 'object' | 'mixed';\n arrayExactLength?: number;\n arrayMinLength?: number;\n arrayMaxLength?: number;\n\n objKeyMinLength?: number;\n },\n process?: (this: Resolver) => T;\n resolve: (this: Resolver, state: T) => ResolvedValue | Promise<ResolvedValue>;\n};\n\n// special resolver class that just holds a static value - used internally only\nexport class StaticValueResolver extends Resolver {\n static def = {\n name: '\\0static', // used internally, so we add the extra \\0\n icon: 'bi:dash',\n async resolve(this: Resolver) {\n return (this as StaticValueResolver).staticValue;\n },\n };\n // helper so plugins dont need to import and use instanceof\n get isStatic() { return true; }\n get staticValue() { return this._staticValue; }\n constructor(readonly _staticValue: ResolvedValue) {\n super([]);\n if (_staticValue !== undefined && !(_staticValue instanceof RegExp)) {\n this.inferredType = typeof _staticValue;\n }\n }\n}\n\n// special resolver class for bare decorator function calls `@fn(arr1, arr2, k1=v1)`\n// because the _decorator_ may need to resolve each arg individually to use them\n// rather than there being a single resolver that resolves to a single value\nexport class FunctionArgsResolver extends Resolver {\n // we might want to just have a resolve function which resolves all children\n // but it might be useful to let the decorator do it individually\n // so that some can be skipped depending on the other args\n static def = {\n name: '\\0fnArgs', // used internally, so we add the extra \\0\n label: 'function args',\n icon: 'bi:dash',\n // not actualyl used\n resolve() { return undefined; },\n };\n // special helper to resolve all child args\n async resolve() {\n const resolvedArrayArgs = [] as Array<any>;\n const resolvedObjArgs = {} as Record<string, any>;\n for (const arg of this.arrArgs || []) {\n resolvedArrayArgs.push(await arg.resolve());\n }\n for (const key in this.objArgs) {\n resolvedObjArgs[key] = await this.objArgs[key].resolve();\n }\n return {\n arr: resolvedArrayArgs,\n obj: resolvedObjArgs,\n };\n }\n}\n\n// special resolver class that represents an error when an unknown resolver is used - used internally only\nexport class ErrorResolver extends Resolver {\n static def: ResolverDef = {\n name: '\\0error', // used internally, so we add the extra \\0\n icon: 'bi:dash',\n async resolve() { return undefined; },\n };\n constructor(readonly err: SchemaError) {\n super([]);\n this._schemaErrors.push(err);\n }\n}\n\nexport function createResolver<T>(def: ResolverDef<T>) {\n const ResolverClass = class extends Resolver {};\n ResolverClass.def = def;\n return ResolverClass as typeof Resolver;\n}\n\n\nexport const ConcatResolver: typeof Resolver = createResolver({\n name: 'concat',\n icon: 'material-symbols:join',\n inferredType: 'string',\n argsSchema: {\n type: 'array',\n arrayMinLength: 2,\n },\n async resolve() {\n const resolvedValues: Array<string> = [];\n for (const arg of this.arrArgs ?? []) {\n // TODO: handle child resolver failure?\n const resolvedChildValue = await arg.resolve();\n // do we need to worry about non-string-ish things here?\n resolvedValues.push(String(resolvedChildValue ?? ''));\n }\n return resolvedValues.join('');\n },\n});\n\nexport const FallbackResolver: typeof Resolver = createResolver({\n name: 'fallback',\n icon: 'memory:table-top-stairs-up',\n argsSchema: {\n type: 'array',\n arrayMinLength: 2,\n },\n async resolve() {\n for (const arg of this.arrArgs ?? []) {\n // TODO: handle child resolver failure?\n const resolvedChildValue = await arg.resolve();\n if (resolvedChildValue !== undefined && resolvedChildValue !== '') {\n return resolvedChildValue;\n }\n }\n },\n});\n\nconst execQueue = new SimpleQueue();\nexport const ExecResolver: typeof Resolver = createResolver({\n name: 'exec',\n icon: 'iconoir:terminal',\n argsSchema: {\n type: 'array',\n arrayExactLength: 1,\n },\n async resolve() {\n const commandStr = await this.arrArgs?.[0].resolve();\n if (typeof commandStr !== 'string') {\n throw new ResolutionError('exec() expects a string arg');\n }\n\n try {\n // ? NOTE - putting these calls through a simple queue for now\n // this avoids multiple 1password auth popups, but it also makes multiple 1p calls very slow\n // we likely want to remove this once we have the specific 1Password plugin re-implemented\n const { stdout } = await execQueue.enqueue(() => execAsync(commandStr));\n // trim trailing newline by default\n // we could allow options here?\n return stdout.replace(/\\n$/, '');\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('exec() failed', err);\n throw new ResolutionError(`exec() command failed: ${commandStr}`);\n }\n },\n});\n\nexport const RefResolver: typeof Resolver = createResolver({\n name: 'ref',\n icon: 'mdi-light:content-duplicate',\n argsSchema: {\n type: 'array',\n arrayExactLength: 1,\n },\n process() {\n // TODO: should this be handled by the argsSchema?\n if (!(this.arrArgs?.[0] instanceof StaticValueResolver)) {\n throw new SchemaError('expects a single static value passed in');\n }\n const refKey = this.arrArgs[0].staticValue;\n if (typeof refKey !== 'string') {\n throw new SchemaError('expects a string keyname passed in');\n }\n\n // Auto-register builtin vars when referenced\n if (isBuiltinVar(refKey) && !this.envGraph!.configSchema[refKey]) {\n this.envGraph!.registerBuiltinVar(refKey);\n }\n\n this.addDep(refKey);\n return refKey;\n },\n async resolve(refKey) {\n return this.getDepValue(refKey);\n },\n});\n\n// regex() is only used internally as function args to be used by other functions\n// we will check final resoled values to make sure they are not regexes\nexport const RegexResolver: typeof Resolver = createResolver({\n name: 'regex',\n icon: 'mdi:regex',\n argsSchema: {\n type: 'array',\n arrayExactLength: 1,\n },\n process() {\n if (!(this.arrArgs?.[0] instanceof StaticValueResolver)) {\n throw new SchemaError('expects a single static value passed in');\n }\n const regexStr = this.arrArgs[0].staticValue;\n if (typeof regexStr !== 'string') {\n throw new SchemaError('expects a string');\n }\n try {\n return new RegExp(regexStr);\n } catch (err) {\n throw new SchemaError((err as Error).message);\n }\n },\n async resolve(regex) {\n return regex;\n },\n});\n\nexport const RemapResolver: typeof Resolver = createResolver({\n name: 'remap',\n icon: 'codicon:replace',\n argsSchema: {\n // supports both old key=value syntax and new positional syntax\n // old: remap($VAR, result1=match1, result2=match2) -- arrArgs has 1 item, objArgs has the mappings\n // new: remap($VAR, match1, result1, match2, result2, default?) -- arrArgs has 3+ items\n type: 'mixed',\n },\n process() {\n const isLegacyKeyValMode = this.objArgs !== undefined && Object.keys(this.objArgs).length > 0;\n if (isLegacyKeyValMode) {\n // legacy mode: 1 positional arg + key=value pairs\n if ((this.arrArgs?.length ?? 0) !== 1) {\n throw new SchemaError('expects exactly 1 positional argument followed by key=value remapping pairs');\n }\n if (Object.keys(this.objArgs!).length === 0) {\n throw new SchemaError('expects at least 1 key=value remapping pair');\n }\n // add a deprecation warning - will show in `varlock load` pretty output below the item\n this._schemaErrors.push(new SchemaError('key=value syntax is deprecated', {\n isWarning: true,\n tip: 'Use positional pairs instead: remap($VAR, match1, result1, match2, result2, ...)',\n }));\n } else {\n // new positional mode: 3+ args (value, match1, result1, ...)\n if ((this.arrArgs?.length ?? 0) < 3) {\n throw new SchemaError('expects at least 3 arguments: (value, match1, result1, ...)');\n }\n }\n return { isLegacyKeyValMode };\n },\n async resolve({ isLegacyKeyValMode }) {\n const originalValue = await this.arrArgs![0].resolve();\n\n if (isLegacyKeyValMode) {\n // legacy key=value mode: key is the result, value is what to match against\n for (const [remappedVal, matchValResolver] of Object.entries(this.objArgs!)) {\n const matchVal = await matchValResolver.resolve();\n // support regex-like unquoted strings (e.g., /pattern/flags) and regex() fn\n if (matchVal instanceof RegExp) {\n if (originalValue !== undefined && matchVal.test(String(originalValue))) return remappedVal;\n continue;\n }\n if (typeof matchVal === 'string') {\n const regex = parseRegexLikeString(matchVal);\n if (regex) {\n if (originalValue !== undefined && regex.test(String(originalValue))) return remappedVal;\n continue;\n }\n }\n if (matchVal === originalValue) return remappedVal;\n }\n return originalValue;\n }\n\n const remainingArgs = this.arrArgs!.slice(1);\n // iterate in pairs of (match, result); `i + 1 < length` ensures we\n // process only complete pairs, leaving a potential trailing default unprocessed\n for (let i = 0; i + 1 < remainingArgs.length; i += 2) {\n const matchVal = await remainingArgs[i].resolve();\n // support regex-like unquoted strings (e.g., /pattern/flags) and regex() fn\n if (matchVal instanceof RegExp) {\n if (originalValue !== undefined && matchVal.test(String(originalValue))) return remainingArgs[i + 1].resolve();\n continue;\n }\n if (typeof matchVal === 'string') {\n const regex = parseRegexLikeString(matchVal);\n if (regex) {\n if (originalValue !== undefined && regex.test(String(originalValue))) return remainingArgs[i + 1].resolve();\n continue;\n }\n }\n if (matchVal === originalValue) return remainingArgs[i + 1].resolve();\n }\n // if odd number of remaining args, the last arg is a default value\n if (remainingArgs.length % 2 === 1) {\n return remainingArgs[remainingArgs.length - 1].resolve();\n }\n // no match found, return original value\n return originalValue;\n },\n});\n\n\nexport const ForEnvResolver: typeof Resolver = createResolver({\n name: 'forEnv',\n icon: 'tabler:flag-question',\n inferredType: 'boolean',\n argsSchema: {\n type: 'array',\n arrayMinLength: 1,\n },\n process() {\n // TODO: check if all options are static\n // TODO: check against envFlag enum options?\n const matchEnvs = this.arrArgs!.map((r) => String(r.staticValue));\n return matchEnvs;\n },\n async resolve(matchEnvs) {\n // this will trigger resolution of the current env if not already done\n const currentEnv = await this.getCurrentEnv();\n if (!currentEnv) throw new SchemaError('current environment is not set');\n return currentEnv && matchEnvs.includes(currentEnv || '');\n },\n});\n\nexport const EqResolver: typeof Resolver = createResolver({\n name: 'eq',\n icon: 'material-symbols:equal',\n inferredType: 'boolean',\n argsSchema: {\n type: 'array',\n arrayExactLength: 2,\n },\n process() {\n return { left: this.arrArgs![0], right: this.arrArgs![1] };\n },\n async resolve({ left, right }) {\n const leftVal = await left.resolve();\n const rightVal = await right.resolve();\n return leftVal === rightVal;\n },\n});\n\nexport const IfResolver: typeof Resolver = createResolver({\n name: 'if',\n icon: 'material-symbols:help-center', // question mark\n argsSchema: {\n type: 'array',\n arrayMinLength: 1,\n },\n process() {\n const condition = this.arrArgs![0];\n const trueVal = this.arrArgs![1];\n const falseVal = this.arrArgs![2];\n\n // no args mean we'll true or undefined\n if (!trueVal) {\n this.inferredType = 'boolean';\n // we can infer a type if both true and false cases have a matching inferred type\n } else if (!falseVal || trueVal.inferredType === falseVal.inferredType) {\n this.inferredType = trueVal.inferredType;\n }\n return { condition, trueVal, falseVal };\n },\n async resolve({ condition, trueVal, falseVal }) {\n const conditionVal = await condition.resolve();\n if (conditionVal) {\n // if no trueVal passed in, we return true\n return trueVal ? trueVal.resolve() : true;\n } else {\n if (falseVal) return falseVal.resolve();\n // if only trueVal passed in, we return trueval OR undefined\n if (trueVal) return undefined;\n // if no trueVal or falseVal passed in, we coerce to boolean\n return false;\n }\n },\n});\n\nexport const IfsResolver: typeof Resolver = createResolver({\n name: 'ifs',\n icon: 'material-symbols:rule',\n argsSchema: {\n type: 'array',\n arrayMinLength: 1,\n },\n async resolve() {\n const args = this.arrArgs!;\n // iterate in pairs of (condition, value); `i + 1 < length` ensures we\n // process only complete pairs, leaving a potential trailing default unprocessed\n for (let i = 0; i + 1 < args.length; i += 2) {\n const condition = await args[i].resolve();\n if (condition) {\n return args[i + 1].resolve();\n }\n }\n // if odd total number of args, last is the default value\n if (args.length % 2 === 1) {\n return args[args.length - 1].resolve();\n }\n return undefined;\n },\n});\n\nexport const NotResolver: typeof Resolver = createResolver({\n name: 'not',\n icon: 'material-symbols:not-equal',\n inferredType: 'boolean',\n argsSchema: {\n type: 'array',\n arrayExactLength: 1,\n },\n async resolve() {\n const value = await this.arrArgs![0].resolve();\n return !value;\n },\n});\n\nexport const IsEmptyResolver: typeof Resolver = createResolver({\n name: 'isEmpty',\n icon: 'material-symbols:empty',\n inferredType: 'boolean',\n argsSchema: {\n type: 'array',\n arrayExactLength: 1,\n },\n async resolve() {\n const value = await this.arrArgs![0].resolve();\n return value === undefined || value === '';\n },\n});\n\n\n// Special function for `@defaultSensitive=inferFromPrefix(PUBLIC_)`\n// we may want to formalize this pattern of a resolver function used in a root decorator\n// but resolved within the context of a specific item\nexport const InferFromPrefixResolver: typeof Resolver = createResolver({\n name: 'inferFromPrefix',\n icon: 'material-symbols:help-center', // question mark\n argsSchema: {\n type: 'array',\n arrayExactLength: 1,\n },\n process() {\n // TODO: we should validate that this is only used within @defaultSensitive root decorator\n return this.arrArgs![0].staticValue;\n },\n async resolve(_prefix) {\n // this is not actually meant to be resolved to a value\n // instead our code will just use the args directly\n return undefined;\n },\n});\n\n\n\nexport type ResolverChildClass<ChildClass extends Resolver = Resolver> = (\n { new (...args: Array<any>): ChildClass } & typeof Resolver\n);\n\n// these are the resolvers which are accessible to end-users as fn calls\nexport const BaseResolvers: Array<ResolverChildClass> = [\n ConcatResolver,\n FallbackResolver,\n RefResolver,\n ExecResolver,\n RemapResolver,\n IfsResolver,\n ForEnvResolver,\n EqResolver,\n IfResolver,\n NotResolver,\n IsEmptyResolver,\n RegexResolver,\n InferFromPrefixResolver,\n];\n\n/// /\n\nexport function convertParsedValueToResolvers(\n value: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall\n | ParsedEnvSpecFunctionArgs | undefined,\n dataSource: EnvGraphDataSource | undefined,\n registeredResolvers: Record<string, ResolverChildClass>,\n): Resolver | undefined {\n if (value === undefined) {\n return undefined;\n } else if (value instanceof ParsedEnvSpecStaticValue) {\n return new StaticValueResolver(value.unescapedValue);\n } else if (\n value instanceof ParsedEnvSpecFunctionCall\n // this is used only for bare decorator fn calls `@fn(arr1, arr2, k1=v1)`\n || value instanceof ParsedEnvSpecFunctionArgs\n ) {\n let ResolverFnClass: ResolverChildClass | undefined;\n let argsFromParser: Array<\n ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall\n | ParsedEnvSpecKeyValuePair\n >;\n if (value instanceof ParsedEnvSpecFunctionCall) {\n // we look up the resolver by function name\n ResolverFnClass = registeredResolvers[value.name];\n if (!ResolverFnClass) {\n return new ErrorResolver(new SchemaError(`Unknown resolver function: ${value.name}()`));\n }\n argsFromParser = value.data.args.values;\n } else {\n // special no-op resolver which just holds all the args resolvers\n // our decorator functions can then access and resolve those children as necessary\n ResolverFnClass = FunctionArgsResolver;\n argsFromParser = value.values;\n }\n\n let arrArgsAsResolvers: Array<Resolver> | undefined;\n let objArgsAsResolvers: Record<string, Resolver> | undefined;\n for (const arg of argsFromParser) {\n if (arg instanceof ParsedEnvSpecKeyValuePair) {\n objArgsAsResolvers ??= {};\n const valResolver = convertParsedValueToResolvers(arg.value, dataSource, registeredResolvers);\n if (!valResolver) throw new Error('Did not expect to find undefined resolver in key-value arg');\n objArgsAsResolvers[arg.key] = valResolver;\n } else {\n if (objArgsAsResolvers) {\n return new ErrorResolver(new SchemaError('After switching to key-value function args, cannot switch back'));\n }\n const argResolver = convertParsedValueToResolvers(arg, dataSource, registeredResolvers);\n if (!argResolver) throw new Error('Did not expect to find undefined resolver in array arg');\n arrArgsAsResolvers ??= [];\n arrArgsAsResolvers.push(argResolver);\n }\n }\n const resolver = new ResolverFnClass(arrArgsAsResolvers, objArgsAsResolvers, dataSource);\n resolver._parsedNode = value;\n return resolver;\n } else {\n throw new Error('Unknown value type');\n }\n}\n","import _ from '@env-spec/utils/my-dash';\nimport { type FallbackIfUnknown } from '@env-spec/utils/type-utils';\nimport { CoercionError, ValidationError } from './errors';\nimport { parseRegexLikeString } from './resolver';\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype EnvGraphDataTypeDef<CoerceReturnType, ValidateInputType = FallbackIfUnknown<CoerceReturnType, string>> = {\n /** this will be the name of the type, used to reference it when using it in a schema */\n name: string;\n // we might automatically prefix with a package/module name when installing plugins?\n\n /** optional description of the type itself */\n typeDescription?: string;\n\n // alias names? (ex: allow `@type=bool` and `@type=boolean` to both resolve to the same type)\n\n /** icon see https://icones.js.org for available options\n * @example mdi:aws\n * */\n icon?: string;\n /** coerce function - should take in any value and return a value of the correct type if possible */\n coerce?: (value: any) => CoerceReturnType | CoercionError | undefined;\n /**\n * validate function - we can assume that coercion has already succeded, or this will not be called\n * - if validation passes, should return true\n * - if validation fails, should return a ValidationError or array of errors - or throw an error\n * */\n validate?: (value: ValidateInputType) => MaybePromise<(true | undefined | void | Error | Array<Error>)>;\n\n // asyncValidate? - async validation function, meant to be called more sparingly\n // for example, when could validate an API key is currently valid\n\n // add function to validate instance settings are ok (no conflicts, missing required, etc)\n\n /** will make items of this type sensitive, unless overridden specifically on that item */\n sensitive?: boolean,\n\n /** adds docs info for these */\n docs?: Array<string | { url: string, description: string }>;\n // do we want to allow adding settings that usually come from other decorators?\n // specific items - docs, sensitive, example, etc\n // or just a way to add arbitrary other decorators?\n};\n\n\n/**\n * holds a specific instance of a data type, along with specific settings which affect validation/coercion etc\n */\nexport class EnvGraphDataType {\n constructor(\n private def: EnvGraphDataTypeDef<any, any>,\n /** reference back to the factory function, which we can use like a constructor to check the type of the instance */\n private factory: any,\n ) {}\n\n get name() { return this.def.name; }\n get icon() { return this.def.icon; }\n get isSensitive() { return this.def.sensitive; }\n get docsEntries() { return this.def.docs; }\n\n /** @internal */\n get _rawDef() { return this.def; }\n\n coerce(val: any) {\n if (this.def.coerce) return this.def.coerce(val);\n // if no coerce function is defined, we'll default to converting to a string\n if (val === undefined) return undefined;\n return typeof val === 'string' ? val : String(val);\n }\n\n validate(val: any) {\n return this.def.validate ? this.def.validate(val) : true;\n }\n}\n// but we can pass in a function if the data type accepts additional usage options\n\nexport function createEnvGraphDataType<TsType, InstanceSettingsArgs extends Array<any>>(\n dataTypeDef:\n EnvGraphDataTypeDef<TsType>\n | ((...args: InstanceSettingsArgs) => EnvGraphDataTypeDef<TsType>),\n) {\n const typeFactoryFn = (...usageOpts: InstanceSettingsArgs) => {\n return new EnvGraphDataType(\n _.isFunction(dataTypeDef) ? dataTypeDef(...usageOpts) : dataTypeDef,\n typeFactoryFn,\n );\n };\n typeFactoryFn._isEnvGraphDataTypeFactory = true;\n // create a dummy instance just so we can get the name\n const exampleInstance = typeFactoryFn(...[] as any);\n typeFactoryFn.dataTypeName = exampleInstance.name;\n\n return typeFactoryFn;\n}\n\nexport type EnvGraphDataTypeFactory = ReturnType<typeof createEnvGraphDataType>;\n\n/// BASE DATA TYPES //////////////////////////////////////////////////////////////////////\n\nfunction coerceToString(rawVal: any) {\n if (rawVal === undefined || rawVal === null) return '';\n return _.isString(rawVal) ? rawVal : String(rawVal);\n}\n\nfunction coerceToNumber(rawVal: any) {\n let numVal!: number;\n if (_.isString(rawVal)) {\n const parsed = parseFloat(rawVal);\n if (_.isNan(parsed) || parsed === Infinity || parsed === -Infinity) {\n throw new CoercionError('Unable to coerce string to number');\n }\n numVal = parsed;\n } else if (_.isNumber(rawVal)) {\n if (numVal === Infinity || numVal === -Infinity) {\n throw new CoercionError('Inifinity is not a valid number');\n }\n numVal = rawVal;\n } else {\n throw new CoercionError(`Cannot convert ${rawVal} to number`);\n }\n return numVal;\n}\n\nconst StringDataType = createEnvGraphDataType(\n (settings?: {\n /** The minimum length of the string. */\n minLength?: number;\n /** The maximum length of the string. */\n maxLength?: number;\n /** The exact length of the string. */\n isLength?: number;\n /** The required starting substring of the string. */\n startsWith?: string;\n /** The required ending substring of the string. */\n endsWith?: string;\n\n /** The regular expression or string pattern that the string must match. */\n matches?: RegExp | string;\n\n // could add some shorthands for matching common patterns (isAlphaNumeric, etc...)\n // could add allow/deny character lists?\n\n // more stuff?\n /** converts to upper case */\n toUpperCase?: boolean;\n /** converts to lower case */\n toLowerCase?: boolean;\n\n /** allow empty string as a valid string (default is to NOT allow it) */\n allowEmpty?: boolean;\n }) => ({\n name: 'string',\n icon: 'carbon:string-text',\n coerce: (rawVal) => {\n // coerceToString will convert undefined to '', but this code should not even get called when that is the case\n let val = coerceToString(rawVal);\n // should we JSON.stringify objects?\n if (settings?.toUpperCase) val = val.toUpperCase();\n if (settings?.toLowerCase) val = val.toLowerCase();\n return val;\n },\n validate: (val) => {\n // we support returning multiple errors and our base types use this pattern\n // but many user defined types should just throw the first error they encounter\n const errors = [] as Array<ValidationError>;\n\n // TODO: not sure if we want this?\n // // special handling to not allow empty strings (unless explicitly allowed)\n // if (val === '' && !settings?.allowEmpty) {\n // return [new ValidationError('If set, string must not be empty')];\n // }\n\n if (settings?.minLength !== undefined && val.length < settings.minLength) {\n errors.push(new ValidationError(`Length must be more than ${settings.minLength}`));\n }\n if (settings?.maxLength !== undefined && val.length > settings.maxLength) {\n errors.push(new ValidationError(`Length must be less than ${settings.maxLength}`));\n }\n if (settings?.isLength !== undefined && val.length !== settings.isLength) {\n errors.push(new ValidationError(`Length must be exactly ${settings.isLength}`));\n }\n\n if (settings?.startsWith && !val.startsWith(settings.startsWith)) {\n errors.push(new ValidationError(`Value must start with \"${settings.startsWith}\"`));\n }\n if (settings?.endsWith && !val.endsWith(settings.endsWith)) {\n errors.push(new ValidationError(`Value must end with \"${settings.endsWith}\"`));\n }\n\n if (settings?.matches) {\n let regex: RegExp;\n if (_.isString(settings.matches)) {\n regex = parseRegexLikeString(settings.matches) ?? new RegExp(settings.matches);\n } else {\n regex = settings.matches;\n }\n const matches = val.match(regex);\n if (!matches) {\n errors.push(new ValidationError(`Value must match regex \"${settings.matches}\"`));\n }\n }\n return errors.length ? errors : true;\n },\n }),\n);\n\n\n\n/**\n * Represents a generic number data type.\n * @category Base Types\n */\nconst NumberDataType = createEnvGraphDataType(\n (settings?: {\n /** minimum value allowed for the number */\n min?: number;\n /** maximum value allowed for the number */\n max?: number;\n /** enables coercion of the value to be within the min/max range */\n coerceToMinMaxRange?: boolean;\n /** checks if value is divisible by this number */\n isDivisibleBy?: number;\n } & (\n {\n /** checks if it's an integer */\n isInt: true;\n } | {\n isInt?: never;\n /** The number of decimal places allowed (for non-integers) */\n precision?: number\n }\n )) => ({\n name: 'number',\n icon: 'carbon:string-integer',\n coerce(rawVal) {\n let numVal = coerceToNumber(rawVal);\n if (settings?.coerceToMinMaxRange) {\n if (settings?.min !== undefined) numVal = Math.max(settings?.min, numVal);\n if (settings?.max !== undefined) numVal = Math.min(settings?.max, numVal);\n }\n\n // not sure if we want to coerce to integer by default, versus just checking\n if (settings?.isInt === true || settings?.precision === 0) {\n numVal = Math.round(numVal);\n } else if (settings?.precision) {\n const p = 10 ** settings.precision;\n numVal = Math.round(numVal * p) / p;\n }\n return numVal;\n },\n validate(val) {\n const errors = [] as Array<ValidationError>;\n if (settings?.min !== undefined && val < settings?.min) {\n errors.push(new ValidationError(`Min value is ${settings?.min}`));\n }\n if (settings?.max !== undefined && val > settings?.max) {\n errors.push(new ValidationError(`Max value is ${settings?.max}`));\n }\n if (settings?.isDivisibleBy !== undefined && val % settings.isDivisibleBy !== 0) {\n errors.push(new ValidationError(`Value must be divisible by ${settings?.isDivisibleBy}`));\n }\n return errors.length ? errors : true;\n },\n\n }),\n);\n\n\nconst BooleanDataType = createEnvGraphDataType({\n name: 'boolean',\n icon: 'carbon:boolean',\n // probably want allow some settings\n // - more strict about coercion or adding additional true/false values\n // - coercing to other values - like 0,1\n coerce(val) {\n if (_.isBoolean(val)) {\n return val;\n } else if (_.isString(val)) {\n const cleanVal = val.toLowerCase().trim();\n if (['t', 'true', 'yes', 'on', '1'].includes(cleanVal)) return true;\n if (['f', 'false', 'no', 'off', '0'].includes(cleanVal)) return false;\n throw new CoercionError('Unable to coerce string value to boolean');\n } else if (_.isNumber(val)) {\n if (val === 0) return false;\n if (val === 1) return true;\n throw new CoercionError('Unable to coerce number value to boolean (only 0 or 1 is valid)');\n } else {\n throw new CoercionError('Unable to coerce value to boolean');\n }\n },\n // TODO: add settings to be more strict, or to allow other values to coerce to true/false\n validate(val) {\n if (_.isBoolean(val)) return true;\n return new ValidationError('Value must be `true` or `false`');\n },\n});\n\n\n// Common non-primitive types ///////////////////////////////////////////////////////////////\nconst UrlDataType = createEnvGraphDataType(\n (settings?: {\n prependHttps?: boolean\n allowedDomains?: Array<string>\n /** Disallow a trailing slash on the URL path. */\n noTrailingSlash?: boolean\n /** A regular expression or string pattern that the full URL must match. */\n matches?: RegExp | string\n }) => ({\n name: 'url',\n icon: 'carbon:url',\n coerce(rawVal) {\n const val = coerceToString(rawVal);\n if (settings?.prependHttps && !val.startsWith('https://')) return `https://${val}`;\n return val;\n },\n validate(val) {\n let url: URL;\n try {\n url = new URL(val); // if invalid, this will throw\n } catch (err) {\n throw new ValidationError('Invalid URL');\n }\n const errors = [] as Array<ValidationError>;\n if (\n settings?.allowedDomains && !settings.allowedDomains.includes(url.host.toLowerCase())\n ) {\n errors.push(new ValidationError(`Domain (${url.host}) is not in allowed list: ${settings.allowedDomains.join(',')}`));\n }\n if (settings?.noTrailingSlash && val.endsWith('/')) {\n errors.push(new ValidationError('URL must not have a trailing slash'));\n }\n if (settings?.matches) {\n let regex: RegExp;\n if (_.isString(settings.matches)) {\n regex = parseRegexLikeString(settings.matches) ?? new RegExp(settings.matches);\n } else {\n regex = settings.matches;\n }\n if (!regex.test(val)) {\n errors.push(new ValidationError(`URL must match regex \"${settings.matches}\"`));\n }\n }\n return errors.length ? errors : true;\n },\n }),\n);\n\n\nconst SimpleObjectDataType = createEnvGraphDataType({\n name: 'simple-object',\n icon: 'tabler:code-dots', // curly brackets with nothing inside\n coerce(val) {\n if (_.isPlainObject(val)) return val;\n // if value is a string, we'll try to JSON.parse and see if that is an object\n if (_.isString(val)) {\n try {\n const parsedObj = JSON.parse(val);\n if (_.isPlainObject(parsedObj)) return parsedObj;\n return new CoercionError('Unable to coerce JSON parsed string to object');\n } catch (err) {\n return new CoercionError('Error parsing JSON string while coercing string to object');\n }\n }\n return new CoercionError('Cannot coerce value to object');\n },\n validate(val) {\n if (_.isPlainObject(val)) return true;\n return new ValidationError('Value must be an object');\n },\n});\n\n\n\ntype PossibleEnumValues = string | number | boolean; // do we need explicitly allow null/undefined?\n\n// might want extended enum types that include more metadata\n// also might want 1st class support for an \"array of enum\" type\n\nconst EnumDataType = createEnvGraphDataType(\n (...enumOptions: Array<PossibleEnumValues>) => ({\n name: 'enum',\n icon: 'material-symbols-light:category', // a few shapes... not sure about this one\n coerce(val) {\n if (_.isString(val) || _.isNumber(val) || _.isBoolean(val)) return val;\n return new CoercionError('Value must be a string, number, or boolean');\n },\n validate(val) {\n const possibleValues: Array<any> = enumOptions || [];\n if (!possibleValues.includes(val)) {\n throw new ValidationError('Current value is not in list of possible values', {\n tip: `Possible values are: \"${possibleValues.join('\", \"')}\"`,\n });\n }\n },\n _rawEnumOptions: enumOptions,\n }),\n);\n\nconst EMAIL_REGEX = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nconst EmailDataType = createEnvGraphDataType(\n (settings?: {\n normalize?: boolean\n }) => ({\n name: 'email',\n icon: 'iconoir:at-sign',\n typeDescription: 'standard email address',\n coerce(rawVal) {\n let val = coerceToString(rawVal);\n if (settings?.normalize) val = val.toLowerCase();\n return val;\n },\n validate(val) {\n // check if it's a valid email - which could def have some edge case issues\n const result = EMAIL_REGEX.test(val);\n if (result) return true;\n return new ValidationError('Value must be a valid email address');\n },\n }),\n);\n\nconst IP_V4_ADDRESS_REGEX = /^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$/;\nconst IP_V6_ADDRESS_REGEX = /^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$/;\nconst IpAddressDataType = createEnvGraphDataType(\n (settings?: {\n version?: 4 | 6,\n normalize?: boolean,\n }) => ({\n name: 'ip',\n icon: 'iconoir:ip-address-tag',\n typeDescription: 'ip v4 or v6 address',\n coerce(rawVal) {\n let val = coerceToString(rawVal);\n if (settings?.normalize) val = val.toLowerCase();\n return val;\n },\n validate(val) {\n // default to v4\n const regex = settings?.version === 6 ? IP_V6_ADDRESS_REGEX : IP_V4_ADDRESS_REGEX;\n const result = regex.test(val);\n if (result) return true;\n return new ValidationError('Value must be a valid IP address');\n },\n }),\n);\n\nconst PortDataType = createEnvGraphDataType(\n (settings?: {\n min?: number;\n max?: number;\n }) => ({\n name: 'port',\n icon: 'material-symbols:captive-portal', //! globe with arrow - not sure about this one\n typeDescription: 'valid port number between 0 and 65535',\n coerce(rawVal) {\n if (_.isString(rawVal)) {\n if (rawVal.includes('.')) throw new CoercionError('Port number must be an integer');\n if (rawVal.includes('e')) throw new CoercionError('Port number should be an integer, not in exponential notation');\n }\n return coerceToNumber(rawVal);\n },\n validate(val) {\n if (settings?.min !== undefined && val < settings?.min) {\n return new ValidationError(`Min value is ${settings?.min}`);\n }\n if (settings?.max !== undefined && val > settings?.max) {\n return new ValidationError(`Max value is ${settings?.max}`);\n }\n if (val < 0 || val > 65535) {\n return new ValidationError('Value must be a valid port number (0-65535)');\n }\n return true;\n },\n }),\n);\n\nconst SEMVER_REGEX = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst SemverDataType = createEnvGraphDataType(\n (_settings?: {}) => ({\n name: 'semver',\n icon: 'simple-icons:semver',\n typeDescription: 'semantic version string',\n validate(val) {\n const result = SEMVER_REGEX.test(val);\n if (result) return true;\n return new ValidationError('Value must be a valid semantic version string');\n },\n }),\n);\n\n// https://rgxdb.com/r/526K7G5W\nconst ISO_DATE_REGEX = /^(?:[+-]?\\d{4}(?!\\d{2}\\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\\1(?:[12]\\d|0[1-9]|3[01]))?|W(?:[0-4]\\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))(?:[T\\s](?:(?:(?:[01]\\d|2[0-3])(?:(:?)[0-5]\\d)?|24:?00)(?:[.,]\\d+(?!:))?)?(?:\\2[0-5]\\d(?:[.,]\\d+)?)?(?:[zZ]|(?:[+-])(?:[01]\\d|2[0-3]):?(?:[0-5]\\d)?)?)?)?$/;\nconst IsoDateDataType = createEnvGraphDataType({\n name: 'isoDate',\n icon: 'formkit:datetime',\n typeDescription: 'ISO 8601 date string with optional time and milliseconds',\n validate(val) {\n // could add options for dateonly, time only, etc...\n const result = ISO_DATE_REGEX.test(val);\n if (result) return true;\n return new ValidationError('Value must be a valid ISO 8601 date string');\n },\n});\n\n\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nconst UuidDataType = createEnvGraphDataType({\n name: 'uuid',\n icon: 'mdi:identifier',\n typeDescription: 'UUID string V1-V5 per RFC4122, including NIL',\n validate(val) {\n const result = UUID_REGEX.test(val);\n if (result) return true;\n return new ValidationError('Value must be a valid UUID string');\n },\n});\n\nconst MD5_REGEX = /^[a-f0-9]{32}$/;\nconst Md5DataType = createEnvGraphDataType({\n name: 'md5',\n typeDescription: 'MD5 hash string',\n validate(val) {\n const result = MD5_REGEX.test(val);\n if (result) return true;\n return new ValidationError('Value must be a valid MD5 hash string');\n },\n});\n\n\nexport const BaseDataTypes: Array<EnvGraphDataTypeFactory> = [\n StringDataType,\n NumberDataType,\n BooleanDataType,\n SimpleObjectDataType,\n EnumDataType,\n EmailDataType,\n UrlDataType,\n IpAddressDataType,\n PortDataType,\n SemverDataType,\n IsoDateDataType,\n UuidDataType,\n Md5DataType,\n];\n","let e,t,r,{defineProperty:l,setPrototypeOf:n,create:o,keys:s}=Object,i=\"\",{round:c,max:a}=Math,p=e=>{let t=/([a-f\\d]{3,6})/i.exec(e)?.[1],r=t?.length,l=parseInt(6^r?3^r?\"0\":t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t,16);return[l>>16&255,l>>8&255,255&l]},u=(e,t,r)=>e^t||t^r?16+36*c(e/51)+6*c(t/51)+c(r/51):8>e?16:e>248?231:c(24*(e-8)/247)+232,d=e=>{let t,r,l,n,o;return 8>e?30+e:16>e?e-8+90:(232>e?(o=(e-=16)%36,t=(e/36|0)/5,r=(o/6|0)/5,l=o%6/5):t=r=l=(10*(e-232)+8)/255,n=2*a(t,r,l),n?30+(c(l)<<2|c(r)<<1|c(t))+(2^n?0:60):30)},f=(()=>{let r=e=>o.some((t=>e.test(t))),l=globalThis,n=l.process??{},o=n.argv??[],i=n.env??{},c=-1;try{e=\",\"+s(i).join(\",\")}catch(e){i={},c=0}let a=\"FORCE_COLOR\",p={false:0,0:0,1:1,2:2,3:3}[i[a]]??-1,u=a in i&&p||r(/^--color=?(true|always)?$/);return u&&(c=p),~c||(c=((r,l,n)=>(t=r.TERM,{\"24bit\":3,truecolor:3,ansi256:2,ansi:1}[r.COLORTERM]||(r.CI?/,GITHUB/.test(e)?3:1:l&&\"dumb\"!==t?n?3:/-256/.test(t)?2:1:0)))(i,!!i.PM2_HOME||i.NEXT_RUNTIME?.includes(\"edge\")||!!n.stdout?.isTTY,\"win32\"===n.platform)),!p||i.NO_COLOR||r(/^--(no-color|color=(false|never))$/)?0:l.window?.chrome||u&&!c?3:c})(),g={open:i,close:i},h=39,b=49,O={},m=({p:e},{open:t,close:l})=>{let o=(e,...r)=>{if(!e){if(t&&t===l)return t;if((e??i)===i)return i}let n,s=e.raw?String.raw({raw:e},...r):i+e,c=o.p,a=c.o,p=c.c;if(s.includes(\"\u001b\"))for(;c;c=c.p){let{open:e,close:t}=c,r=t.length,l=i,o=0;if(r)for(;~(n=s.indexOf(t,o));o=n+r)l+=s.slice(o,n)+e;s=l+s.slice(o)}return a+(s.includes(\"\\n\")?s.replace(/(\\r?\\n)/g,p+\"$1\"+a):s)+p},s=t,c=l;return e&&(s=e.o+t,c=l+e.c),n(o,r),o.p={open:t,close:l,o:s,c,p:e},o.open=s,o.close=c,o};const w=new function e(t=f){let s={Ansis:e,level:t,isSupported:()=>a,strip:e=>e.replace(/[\u001b›][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,i),extend(e){for(let t in e){let r=e[t],l=(typeof r)[0];\"s\"===l?(c(t,T(...p(r))),c(_(t),v(...p(r)))):c(t,r,\"f\"===l)}return r=o({},O),n(s,r),s}},c=(e,t,r)=>{O[e]={get(){let n=r?(...e)=>m(this,t(...e)):m(this,t);return l(this,e,{value:n}),n}}},a=t>0,w=(e,t)=>a?{open:`\u001b[${e}m`,close:`\u001b[${t}m`}:g,y=e=>t=>e(...p(t)),R=(e,t)=>(r,l,n)=>w(`${e}8;2;${r};${l};${n}`,t),$=(e,t)=>(r,l,n)=>w(((e,t,r)=>d(u(e,t,r)))(r,l,n)+e,t),x=e=>(t,r,l)=>e(u(t,r,l)),T=R(3,h),v=R(4,b),C=e=>w(\"38;5;\"+e,h),E=e=>w(\"48;5;\"+e,b);2===t?(T=x(C),v=x(E)):1===t&&(T=$(0,h),v=$(10,b),C=e=>w(d(e),h),E=e=>w(d(e)+10,b));let M,I={fg:C,bg:E,rgb:T,bgRgb:v,hex:y(T),bgHex:y(v),visible:g,reset:w(0,0),bold:w(1,22),dim:w(2,22),italic:w(3,23),underline:w(4,24),inverse:w(7,27),hidden:w(8,28),strikethrough:w(9,29)},_=e=>\"bg\"+e[0].toUpperCase()+e.slice(1),k=\"Bright\";return\"black,red,green,yellow,blue,magenta,cyan,white,gray\".split(\",\").map(((e,t)=>{M=_(e),8>t?(I[e+k]=w(90+t,h),I[M+k]=w(100+t,b)):t=60,I[e]=w(30+t,h),I[M]=w(40+t,b)})),s.extend(I)};module.exports=w,w.default=w;\n","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","/** A simple queue implementation for sequential execution of async operations */\nexport class SimpleQueue {\n private queue: Array<() => Promise<any>> = [];\n private processing = false;\n\n /** Add a task to the queue and return a promise that resolves when the task is complete */\n async enqueue<T>(task: () => Promise<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n this.queue.push(async () => {\n try {\n const result = await task();\n resolve(result);\n } catch (err) {\n reject(err);\n }\n });\n\n this.processQueue();\n });\n }\n\n private async processQueue() {\n if (this.processing || this.queue.length === 0) {\n return;\n }\n\n this.processing = true;\n const task = this.queue.shift();\n\n if (task) {\n try {\n await task();\n } finally {\n this.processing = false;\n this.processQueue();\n }\n }\n }\n}\n","import _ from '@env-spec/utils/my-dash';\nimport path from 'node:path';\nimport { ConfigItem } from './config-item';\nimport { EnvGraphDataSource, FileBasedDataSource, ImportAliasSource } from './data-source';\n\nimport { BaseResolvers, createResolver, type ResolverChildClass } from './resolver';\nimport { BaseDataTypes, type EnvGraphDataTypeFactory } from './data-types';\nimport { findGraphCycles, getTransitiveDeps, type GraphAdjacencyList } from './graph-utils';\nimport { ResolutionError, SchemaError } from './errors';\nimport { generateTypes } from './type-generation';\n\nimport {\n builtInItemDecorators, builtInRootDecorators, RootDecoratorInstance, type ItemDecoratorDef, type RootDecoratorDef,\n} from './decorators';\nimport { getErrorLocation } from './error-location';\nimport type { VarlockPlugin } from './plugins';\nimport { getCiEnv, type CiEnvInfo } from '@varlock/ci-env-info';\nimport { BUILTIN_VARS, isBuiltinVar } from './builtin-vars';\n\nconst processExists = !!globalThis.process;\nconst originalProcessEnv = { ...processExists && process.env };\n\nexport type SerializedEnvGraphErrors = {\n /** Per-item validation errors, keyed by config item key */\n configItems?: Record<string, string>;\n /** Root-level errors not tied to a specific config item (loading errors, schema errors, plugin errors, etc.) */\n root?: Array<string>;\n};\n\n/** Entry in the sorted definition sources list — pairs a data source with the importKeys\n * filter that applies at that specific position in the precedence chain */\nexport type DefinitionSourceEntry = {\n source: EnvGraphDataSource;\n /** importKeys filter for this position (undefined = all keys visible) */\n importKeys?: Array<string>;\n};\n\nexport type SerializedEnvGraph = {\n basePath?: string;\n sources: Array<{\n type: string;\n label: string;\n enabled: boolean;\n path?: string;\n }>,\n settings: {\n redactLogs?: boolean;\n preventLeaks?: boolean;\n },\n config: Record<string, {\n value: any;\n isSensitive: boolean;\n }>;\n /** Present only when config has errors — consumers can check `if (data.errors)` */\n errors?: SerializedEnvGraphErrors;\n};\n\n/** container of the overall graph and current resolution attempt / values */\nexport class EnvGraph {\n // TODO: not sure if this should be the graph of _everything_ in a workspace/project\n // or just the files that are relevant to the current resolution attempt\n // (which would mean it's always through the lens of the current directory/package)\n\n basePath?: string;\n\n /** root data source (.env.schema) */\n rootDataSource?: EnvGraphDataSource;\n\n /** place to store process.env overrides */\n overrideValues: Record<string, string | undefined> = {};\n\n /** config item key of env flag (toggles env-specific data sources enabled) */\n envFlagKey?: string;\n /** graph-level fallback value for environment flag */\n envFlagFallback?: string;\n\n configSchema: Record<string, ConfigItem> = {};\n\n\n /**\n * Tracks directory/file paths that have already been loaded as imports.\n * Maps each import path to the data source that was created for it.\n * Used to prevent diamond-dependency re-imports (same schema imported via multiple paths),\n * which would otherwise cause plugin init decorators to run multiple times.\n */\n private _loadedImportPaths = new Map<string, EnvGraphDataSource>();\n\n /** Returns the existing source for a path if already loaded, or undefined */\n getLoadedImportSource(importPath: string): EnvGraphDataSource | undefined {\n return this._loadedImportPaths.get(importPath);\n }\n\n /** Records the data source that was created for an import path */\n recordLoadedImportPath(importPath: string, dataSource: EnvGraphDataSource) {\n this._loadedImportPaths.set(importPath, dataSource);\n }\n\n /**\n * Register ConfigItems for keys visible through an import\n * that may not have been registered during the original source's finishInit.\n */\n registerItemsForImport(\n source: EnvGraphDataSource,\n importSite: EnvGraphDataSource,\n importKeys?: Array<string>,\n ) {\n // Compute effective importKeys: intersection of import filter and importSite's parent chain\n const siteKeys = importSite.importKeys;\n let effectiveKeys: Array<string> | undefined;\n const hasFilter = importKeys && importKeys.length > 0;\n if (hasFilter && siteKeys?.length) {\n effectiveKeys = importKeys.filter((k) => siteKeys.includes(k));\n } else if (hasFilter) {\n effectiveKeys = importKeys;\n } else {\n effectiveKeys = siteKeys;\n }\n\n for (const s of this._getDescendants(source)) {\n const keys = effectiveKeys || _.keys(s.configItemDefs);\n for (const itemKey of keys) {\n if (!s.configItemDefs[itemKey]) continue;\n this.configSchema[itemKey] ??= new ConfigItem(this, itemKey);\n }\n }\n }\n\n /** Get a data source and all its descendants (DFS) */\n private _getDescendants(source: EnvGraphDataSource): Array<EnvGraphDataSource> {\n const result: Array<EnvGraphDataSource> = [source];\n for (const child of source.children) {\n result.push(...this._getDescendants(child));\n }\n return result;\n }\n\n /** virtual imports for testing */\n virtualImports?: Record<string, string>;\n setVirtualImports(basePath: string, files: Record<string, string>) {\n this.virtualImports = {};\n for (const [fileName, fileContents] of Object.entries(files)) {\n this.virtualImports[path.join(basePath, fileName)] = fileContents;\n }\n }\n\n\n get sortedDataSources() {\n function getSourceAndChildren(s: EnvGraphDataSource): Array<EnvGraphDataSource> {\n return [s, ...s.children ? s.children.flatMap(getSourceAndChildren) : []];\n }\n return this.rootDataSource ? getSourceAndChildren(this.rootDataSource) : [];\n }\n\n /**\n * Precedence-ordered list of definition sources, used by ConfigItem.defs.\n *\n * Unlike `sortedDataSources` (which contains each real source exactly once),\n * this list can contain the same source multiple times at different positions\n * when it's imported from multiple locations (diamond dependency). Each entry\n * carries its own `importKeys` filter for that specific import context.\n *\n * Built from `sortedDataSources` by expanding `ImportAliasSource` nodes into\n * the original source's full subtree at the alias's precedence position.\n */\n get sortedDefinitionSources(): Array<DefinitionSourceEntry> {\n const result: Array<DefinitionSourceEntry> = [];\n\n for (const source of this.sortedDataSources) {\n if (source instanceof ImportAliasSource) {\n // Alias: expand to the original source's subtree at this position,\n // using the alias's importKeys (derived from its own parent chain)\n const importKeys = source.importKeys;\n for (const descendant of this._getDescendants(source.original)) {\n result.push({ source: descendant, importKeys });\n }\n } else {\n result.push({ source, importKeys: source.importKeys });\n }\n }\n\n return result;\n }\n\n registeredResolverFunctions: Record<string, ResolverChildClass> = {};\n registerResolver(resolverClass: ResolverChildClass) {\n // because its a class, we can't use `name`\n const fnName = resolverClass.fnName;\n if (fnName in this.registeredResolverFunctions) {\n throw new Error(`Resolver ${fnName} already registered`);\n }\n this.registeredResolverFunctions[fnName] = resolverClass;\n }\n\n dataTypesRegistry: Record<string, EnvGraphDataTypeFactory> = {};\n registerDataType(factory: EnvGraphDataTypeFactory) {\n const name = factory.dataTypeName;\n if (name in this.dataTypesRegistry) {\n throw new Error(`Data type \"${name}\" already registered`);\n }\n this.dataTypesRegistry[factory.dataTypeName] = factory;\n }\n\n itemDecoratorsRegistry: Record<string, ItemDecoratorDef> = {};\n registerItemDecorator(decoratorDef: ItemDecoratorDef) {\n const name = decoratorDef.name;\n if (name in this.itemDecoratorsRegistry) {\n throw new Error(`Item decorator \"${name}\" already registered`);\n }\n this.itemDecoratorsRegistry[decoratorDef.name] = decoratorDef;\n }\n\n rootDecoratorsRegistry: Record<string, RootDecoratorDef> = {};\n registerRootDecorator(decoratorDef: RootDecoratorDef) {\n const name = decoratorDef.name;\n if (name in this.itemDecoratorsRegistry) {\n throw new Error(`Root decorator \"${name}\" already registered`);\n }\n this.rootDecoratorsRegistry[decoratorDef.name] = decoratorDef;\n }\n\n constructor() {\n // register base data types (string, number, boolean, etc)\n for (const dataType of BaseDataTypes) {\n this.registerDataType(dataType);\n }\n // register base resolvers (concat, ref, exec, etc)\n for (const resolverClass of BaseResolvers) {\n this.registerResolver(resolverClass);\n }\n // base root decorators (envFlag, generateTypes, import, etc)\n for (const rootDec of builtInRootDecorators) {\n this.registerRootDecorator(rootDec);\n }\n // base item decorators (required, sensitive, docs, etc)\n for (const itemDec of builtInItemDecorators) {\n this.registerItemDecorator(itemDec);\n }\n\n this.overrideValues = originalProcessEnv;\n }\n\n /**\n * Override for process.env used by builtin var detection.\n * When set, builtin vars use this instead of the real process.env.\n * Primarily useful for testing.\n */\n processEnvOverride?: Record<string, string | undefined>;\n\n /** Cached CI env info, computed lazily from processEnvOverride or real process.env */\n private _cachedCiEnv?: CiEnvInfo;\n get ciEnvInfo(): CiEnvInfo {\n this._cachedCiEnv ??= getCiEnv(this.processEnvOverride ?? process.env);\n return this._cachedCiEnv;\n }\n\n /** The process env record used for builtin var detection */\n get processEnvForBuiltins(): Record<string, string | undefined> {\n return this.processEnvOverride ?? process.env;\n }\n\n /**\n * Register a builtin VARLOCK_* variable.\n * Attaches an internal def with the builtin resolver so it flows through the normal pipeline.\n * If the item already exists (user-defined), the internal def is added as a fallback.\n */\n registerBuiltinVar(key: string) {\n const builtinDef = BUILTIN_VARS[key];\n if (!builtinDef) throw new Error(`Unknown builtin var: ${key}`);\n\n let item = this.configSchema[key];\n\n // Already has builtin def attached — nothing to do\n if (item?._internalDefs.length) return;\n\n // Need to capture `this` (the graph) for the resolver closure\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const graph = this;\n\n // Create the resolver for this builtin var\n const builtinType = builtinDef.type || 'string';\n const BuiltinVarResolver = createResolver({\n name: `\\0builtin:${key}`,\n description: builtinDef.description,\n async resolve() {\n return builtinDef.resolver(graph.ciEnvInfo, graph.processEnvForBuiltins);\n },\n });\n\n if (!item) {\n // No user definition — create the item from scratch\n item = new ConfigItem(this, key);\n // Pre-set defaults — builtins are optional and public.\n // processRequired/processSensitive will not override these since the\n // internal def has no decorators and no source with root-level defaults.\n item._isRequired = false;\n item._isSensitive = false;\n // Set dataType directly since registerBuiltinVar is called synchronously\n // during resolver processing, and the item may not get a process() call\n // from the finishLoad loop (for...in doesn't reliably visit new keys).\n const dataTypeFactory = this.dataTypesRegistry[builtinType] ?? this.dataTypesRegistry.string;\n item.dataType = dataTypeFactory();\n this.configSchema[key] = item;\n }\n\n item.isBuiltin = true;\n\n // Attach an internal def with description and resolver.\n // For user-defined items, this sits at lowest priority in defs —\n // the builtin resolver acts as a fallback when no explicit value is set.\n item._internalDefs.push({\n itemDef: {\n description: builtinDef.description,\n parsedValue: undefined,\n resolver: new BuiltinVarResolver([], undefined, undefined),\n },\n });\n }\n\n async setRootDataSource(source: EnvGraphDataSource) {\n if (this.rootDataSource) throw new Error('root data source already set');\n this.rootDataSource = source;\n source.graph = this;\n await source.finishInit();\n // Process imports on the root source itself.\n // For DirectoryDataSource this is a no-op (containers have no import decorators);\n // its children's imports are handled internally in _finishInit().\n // For standalone file sources, this processes their imports now.\n await source._processImports();\n }\n\n async finishLoad() {\n // bail early if we already have issues\n for (const source of this.sortedDataSources) {\n if (!source.isValid) return;\n }\n for (const plugin of this.plugins) {\n if (plugin.loadingError) return;\n }\n\n // Attach builtin defs to any user-defined VARLOCK_* items\n // (they may have been defined directly without a $VARLOCK_* reference)\n for (const key in this.configSchema) {\n if (isBuiltinVar(key)) this.registerBuiltinVar(key);\n }\n\n // process root decorators\n let processingError = false;\n for (const source of this.sortedDataSources) {\n if (source.disabled) continue;\n for (const decInstance of source.rootDecorators) {\n await decInstance.process();\n if (decInstance.schemaErrors.some((e) => !e.isWarning)) processingError = true;\n }\n }\n\n // check declared standardVars against the environment\n // (runs after root decorator processing so decValueResolver.deps is available)\n for (const plugin of this.plugins) {\n plugin._checkStandardVars(this);\n }\n\n // process config items\n // checks decorators, sets data type, checks resolver args, adds deps\n for (const itemKey in this.configSchema) {\n const item = this.configSchema[itemKey];\n await item.process();\n if (item.errors.some((e) => !e.isWarning)) processingError = true;\n }\n\n if (processingError) return;\n\n // check for cycles in resolver dependencies\n const cycles = findGraphCycles(this.graphAdjacencyList);\n for (const cycleItemKeys of cycles) {\n for (const itemKey of cycleItemKeys) {\n const item = this.configSchema[itemKey];\n item._schemaErrors.push(\n new SchemaError(\n cycleItemKeys.length === 1\n ? 'Item cannot have dependency on itself'\n : `Dependency cycle detected: (${cycleItemKeys.join(', ')})`,\n ),\n );\n }\n }\n\n // now execute all root decorators\n for (const source of this.sortedDataSources) {\n if (source.disabled) continue;\n for (const decInstance of source.rootDecorators) {\n if (!decInstance.decValueResolver) throw new Error('expected decorator value resolver');\n await this.resolveEnvValues(decInstance.decValueResolver.deps);\n try {\n await decInstance.execute();\n } catch (err) {\n // prefer the error's own location (e.g. from a nested resolver) over the decorator's\n const errLocation = (err as any).more?.location\n || getErrorLocation(source, decInstance.parsedDecorator);\n decInstance._executionError = new SchemaError(\n err as Error,\n {\n location: errLocation,\n ...((err as any).tip && { tip: (err as any).tip }),\n },\n );\n }\n }\n }\n\n // maybe should be part of a _resolve all root decorators_ step?\n await this.getRootDec('redactLogs')?.resolve();\n await this.getRootDec('preventLeaks')?.resolve();\n }\n\n get graphAdjacencyList() {\n const adjList: GraphAdjacencyList = {};\n for (const itemKey in this.configSchema) {\n const item = this.configSchema[itemKey];\n adjList[itemKey] = item.dependencyKeys;\n }\n return adjList;\n }\n\n async resolveEnvValues(keys?: Array<string>): Promise<void> {\n const keysToResolve = keys ?? _.keys(this.configSchema);\n if (!keysToResolve.length) return;\n\n const adjList = _.pick(this.graphAdjacencyList, keysToResolve);\n const reverseAdjList: Record<string, Array<string>> = {};\n for (const itemKey in adjList) {\n const itemDeps = adjList[itemKey];\n for (const dep of itemDeps) {\n reverseAdjList[dep] ??= [];\n reverseAdjList[dep].push(itemKey);\n }\n }\n\n // obj tracking items left to resolve and if we've started resolving them\n // - true = in progress\n // - false = not yet started\n // - items are removed when completed\n const itemsToResolveStatus = _.fromPairs(keysToResolve.map((key) => [key, false]));\n\n // code is a bit awkward here because we are resolving items in parallel\n // and need to continue resolving dependent items as each finishes\n\n const deferred = new Promise<void>((resolve, _reject) => {\n const markItemCompleted = (itemKey: string) => {\n delete itemsToResolveStatus[itemKey];\n if (reverseAdjList[itemKey]) {\n // eslint-disable-next-line no-use-before-define\n reverseAdjList[itemKey].forEach(resolveItem);\n }\n if (_.keys(itemsToResolveStatus).length === 0) resolve();\n };\n\n const resolveItem = async (itemKey: string) => {\n // due to cycles and how we attempt items when each of their deps finishes\n // we may arrive hit this multiple times for an item, so we need to bail in some cases\n\n // true means items is already in progress, not present means it has been resolved\n if (itemsToResolveStatus[itemKey] !== false) return;\n\n const item = this.configSchema[itemKey];\n\n // if item has real errors (not just warnings), we are done - skip resolution\n if (item.errors.some((e) => !e.isWarning)) {\n markItemCompleted(itemKey);\n return;\n }\n\n for (const depKey of adjList[itemKey] || []) {\n const depItem = this.configSchema[depKey];\n // if a dependency is invalid, we mark the item as invalid too\n if (depItem.validationState === 'error') {\n item.resolutionError = new ResolutionError(`Dependency ${depKey} is invalid`);\n markItemCompleted(itemKey);\n return;\n // if any dependency is not yet resolved, we need to wait for it\n } else if (depKey in itemsToResolveStatus) {\n return;\n }\n }\n\n // mark item as beginning to actually resolve\n itemsToResolveStatus[itemKey] = true; // true means in progress\n await item.resolve();\n markItemCompleted(itemKey);\n };\n\n for (const itemKey in this.configSchema) {\n resolveItem(itemKey);\n }\n });\n return deferred;\n }\n\n async resolveItemWithDeps(key: string): Promise<void> {\n // The graphAdjacencyList includes deps from both value resolvers and item decorator\n // resolvers (e.g. @required($APP_ENV == \"prod\")), so getTransitiveDeps captures\n // everything needed at value-resolution time.\n //\n // Note: currentEnv/envFlagKey and conditional @import(enabled=...) deps are already\n // resolved via earlyResolve() during loadEnvGraph(), so they have isResolved=true\n // by the time this method is called. Items that were earlyResolve()d will simply\n // skip re-resolution in ConfigItem.resolve() (early-return when isResolved=true).\n const transitiveDeps = getTransitiveDeps(key, this.graphAdjacencyList);\n await this.resolveEnvValues([...transitiveDeps, key]);\n }\n\n /** config keys with builtin vars first, then user-defined in schema order */\n get sortedConfigKeys() {\n const builtinKeys: Array<string> = [];\n const userKeys: Array<string> = [];\n for (const key in this.configSchema) {\n if (this.configSchema[key].isBuiltin) builtinKeys.push(key);\n else userKeys.push(key);\n }\n return [...builtinKeys, ...userKeys];\n }\n\n getResolvedEnvObject() {\n const envObject: Record<string, any> = {};\n for (const itemKey of this.sortedConfigKeys) {\n const item = this.configSchema[itemKey];\n envObject[itemKey] = item.resolvedValue;\n }\n return envObject;\n }\n\n getSerializedGraph(): SerializedEnvGraph {\n const serializedGraph: SerializedEnvGraph = {\n basePath: this.basePath,\n sources: [],\n config: {},\n settings: {},\n };\n for (const source of this.sortedDataSources) {\n serializedGraph.sources.push({\n type: source.type,\n label: source.label,\n enabled: !source.disabled,\n path: source instanceof FileBasedDataSource ? path.relative(this.basePath ?? '', source.fullPath) : undefined,\n });\n }\n for (const itemKey of this.sortedConfigKeys) {\n const item = this.configSchema[itemKey];\n serializedGraph.config[itemKey] = {\n value: item.resolvedValue,\n isSensitive: item.isSensitive,\n };\n }\n\n // expose a few root level settings\n serializedGraph.settings.redactLogs = this.getRootDec('redactLogs')?.resolvedValue ?? true;\n serializedGraph.settings.preventLeaks = this.getRootDec('preventLeaks')?.resolvedValue ?? true;\n\n // collect all errors into a single nested object\n const errors: SerializedEnvGraphErrors = {};\n\n // root-level errors (loading, schema, resolution errors from data sources)\n const rootErrors: Array<string> = [];\n for (const source of this.sortedDataSources) {\n if (source.loadingError) {\n rootErrors.push(`${source.label}: ${source.loadingError.message}`);\n }\n for (const err of source.schemaErrors) {\n rootErrors.push(`${source.label}: ${err.message}`);\n }\n for (const err of source.resolutionErrors) {\n rootErrors.push(`${source.label}: ${err.message}`);\n }\n }\n if (rootErrors.length > 0) {\n errors.root = rootErrors;\n }\n\n // per-item validation errors keyed by item key\n const configItemErrors: Record<string, string> = {};\n for (const itemKey of this.sortedConfigKeys) {\n const item = this.configSchema[itemKey];\n if (item.validationState === 'error') {\n configItemErrors[itemKey] = item.errors.map((e) => e.message).join('; ');\n }\n }\n if (Object.keys(configItemErrors).length > 0) {\n errors.configItems = configItemErrors;\n }\n\n // only include errors key if there are any\n if (errors.root || errors.configItems) {\n serializedGraph.errors = errors;\n }\n\n return serializedGraph;\n }\n\n get isInvalid() {\n return _.some(_.values(this.configSchema), (i) => !i.isValid);\n }\n\n async generateTypes(lang: string, outputPath: string) {\n await generateTypes(this, lang, outputPath);\n }\n\n /**\n * Resolve @generateTypes decorators and generate type files.\n * This should be called after finishLoad() but before resolveEnvValues().\n * The @generateTypes decorator args (lang, path) are static, so we can resolve them\n * without needing full env resolution. Type info is computed from non-env-specific\n * definitions only, so the output is deterministic regardless of environment.\n *\n * @param opts.ignoreAutoFalse - if true, generate types even if `auto=false` is set.\n * Used by the `varlock typegen` command to force generation.\n */\n async generateTypesIfNeeded(opts?: { ignoreAutoFalse?: boolean }) {\n const generateTypesDecs = this.getRootDecFns('generateTypes');\n let generatedCount = 0;\n for (const generateTypesDec of generateTypesDecs) {\n const typeGenSettings = await generateTypesDec.resolve();\n\n // we skip generating types if `@generateTypes` was not in the main file\n // unless the `executeWhenImported` flag is set\n if (generateTypesDec.dataSource.isImport && !typeGenSettings.obj.executeWhenImported) continue;\n\n // skip if auto=false unless explicitly overridden (e.g., `varlock typegen`)\n if (typeGenSettings.obj.auto === false && !opts?.ignoreAutoFalse) continue;\n\n if (!typeGenSettings.obj.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.obj.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.obj.lang}`);\n if (!typeGenSettings.obj.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.obj.path)) throw new Error('@generateTypes - `path` arg must be a string');\n\n const outputPath = generateTypesDec.dataSource instanceof FileBasedDataSource\n ? path.resolve(generateTypesDec.dataSource.fullPath, '..', typeGenSettings.obj.path)\n : typeGenSettings.obj.path;\n\n await this.generateTypes(typeGenSettings.obj.lang, outputPath);\n generatedCount++;\n }\n return generatedCount;\n }\n\n getRootDec(decoratorName: string) {\n // currently this is just used above, but may want to rework\n // to track values once as we process sources\n const sources = Array.from(this.sortedDataSources).reverse();\n for (const s of sources) {\n if (s.disabled) continue;\n const dec = s.getRootDec(decoratorName);\n if (dec) return dec;\n }\n return undefined;\n }\n getRootDecFns(decoratorName: string) {\n const allDecs: Array<RootDecoratorInstance> = [];\n const sources = Array.from(this.sortedDataSources).reverse();\n for (const source of sources) {\n if (source.disabled) continue;\n const decs = source.getRootDecFns(decoratorName);\n allDecs.push(...decs);\n }\n return allDecs;\n }\n\n\n /** plugins installed globally in the graph */\n plugins: Array<VarlockPlugin> = [];\n}\n","import a from\"./index.cjs\";export default a;export const{Ansis,fg,bg,rgb,bgRgb,hex,bgHex,reset,inverse,hidden,visible,bold,dim,italic,underline,strikethrough,black,red,green,yellow,blue,magenta,cyan,white,gray,redBright,greenBright,yellowBright,blueBright,magentaBright,cyanBright,whiteBright,bgBlack,bgRed,bgGreen,bgYellow,bgBlue,bgMagenta,bgCyan,bgWhite,bgGray,bgRedBright,bgGreenBright,bgYellowBright,bgBlueBright,bgMagentaBright,bgCyanBright,bgWhiteBright}=a;","import fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport _ from '@env-spec/utils/my-dash';\nimport { tryCatch } from '@env-spec/utils/try-catch';\nimport {\n ParsedEnvSpecDecorator, ParsedEnvSpecDecoratorComment, ParsedEnvSpecFile,\n ParsedEnvSpecFunctionCall, ParsedEnvSpecStaticValue, parseEnvSpecDotEnvFile,\n} from '@env-spec/parser';\n\nimport { ConfigItem, type ConfigItemDef } from './config-item';\nimport { EnvGraph } from './env-graph';\n\nimport { ParseError, SchemaError } from './errors';\nimport { pathExists } from '@env-spec/utils/fs-utils';\nimport { processPluginInstallDecorators } from './plugins';\nimport { RootDecoratorInstance } from './decorators';\nimport { isBuiltinVar } from './builtin-vars';\n\nconst DATA_SOURCE_TYPES = Object.freeze({\n schema: {\n fileSuffixes: ['schema'],\n },\n example: {\n fileSuffixes: ['sample', 'example'],\n },\n defaults: {\n fileSuffixes: ['default', 'defaults'],\n },\n values: {\n fileSuffixes: [] as Array<string>,\n },\n overrides: {\n fileSuffixes: ['local', 'override'],\n },\n container: {\n },\n 'import-alias': {\n },\n});\ntype DataSourceType = keyof typeof DATA_SOURCE_TYPES;\n\nexport abstract class EnvGraphDataSource {\n static DATA_SOURCE_TYPES = DATA_SOURCE_TYPES;\n\n /** reference back to the graph */\n graph?: EnvGraph;\n /** parent data source - everything except the root will have a parent */\n parent?: EnvGraphDataSource;\n /** child data sources */\n children: Array<EnvGraphDataSource> = [];\n\n /**\n * tracks if this data source was imported, and additional settings about the import (restricting keys)\n * */\n importMeta?: {\n isImport?: boolean,\n importKeys?: Array<string>,\n /** true when the @import had a non-static `enabled` parameter (e.g. `enabled=forEnv(\"dev\")`) */\n isConditionallyEnabled?: boolean,\n };\n get isImport(): boolean {\n return !!this.importMeta?.isImport || !!this.parent?.isImport;\n }\n get isPartialImport() {\n return (this.importKeys || []).length > 0;\n }\n get importKeys(): Array<string> | undefined {\n const importKeysArrays = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let currentSource: EnvGraphDataSource | undefined = this;\n while (currentSource) {\n if (currentSource.importMeta?.importKeys && currentSource.importMeta.importKeys.length) {\n importKeysArrays.push(currentSource.importMeta.importKeys);\n }\n currentSource = currentSource.parent;\n }\n\n // in most cases we import all keys, but if there have been specific keys imported we walk up the chain\n if (importKeysArrays.length) {\n const keysToImport = _.intersection(...importKeysArrays);\n return keysToImport;\n }\n }\n\n /** shared child-setup logic: wire up parent/graph refs, finishInit (but no import processing) */\n protected async _initChild(child: EnvGraphDataSource, importMeta?: EnvGraphDataSource['importMeta']) {\n if (!this.graph) throw new Error('expected graph to be set');\n this.children.unshift(child);\n child.parent = this;\n child.graph = this.graph;\n if (importMeta) child.importMeta = importMeta;\n await child.finishInit();\n }\n\n /** adds a child data source, running both finishInit and import processing */\n async addChild(child: EnvGraphDataSource, importMeta?: EnvGraphDataSource['importMeta']) {\n await this._initChild(child, importMeta);\n await child._processImports();\n }\n\n /**\n * When true, direct children of this data source are treated as top-level entry points:\n * they inherit the \"no parent\" semantics and are never classified as env-specific\n * solely because of their filename (e.g. `.env.production` used as an explicit entry\n * point would not be env-specific, but one auto-loaded inside a directory would be).\n * Only `MultiplePathsContainerDataSource` sets this to true.\n */\n childrenAreRoots?: boolean;\n\n /**\n * Whether this data source is environment-specific.\n * A source is env-specific if:\n * - it was auto-loaded for a specific env (e.g., `.env.production` loaded by a DirectoryDataSource)\n * - it has a conditional `@disable` decorator (e.g., `@disable=forEnv(test)`)\n * - it was conditionally imported (e.g., `@import(..., enabled=forEnv(\"dev\"))`)\n * - any of its ancestors are env-specific\n * Used by type generation to filter out env-dependent definitions.\n *\n * Note: `applyForEnv` from filename parsing is only relevant for auto-loaded files.\n * Explicitly imported files (via `@import`) are controlled by the import mechanism,\n * not the auto-load-by-env logic, so their `applyForEnv` is ignored here.\n * Similarly, a file that is the explicit root entry point (no parent, or whose parent\n * has `childrenAreRoots` set) is never treated as env-specific even if its filename\n * contains an env qualifier.\n */\n get isEnvSpecific(): boolean {\n if (this.applyForEnv && !this.isImport && this.parent && !this.parent?.childrenAreRoots) return true;\n if (this.type === 'overrides') return true;\n if (this._hasConditionalDisable) return true;\n if (this.importMeta?.isConditionallyEnabled) return true;\n if (this.parent?.isEnvSpecific) return true;\n return false;\n }\n\n /** true when the source has a `@disable` decorator whose value is not static */\n _hasConditionalDisable?: boolean;\n\n /** environment flag key (as set by @envFlag decorator) - only if set within this source */\n _envFlagKey?: string;\n /** environment flag key getter that will follow up the parent chain */\n get envFlagKey(): string | undefined {\n return this._envFlagKey || this.parent?.envFlagKey;\n }\n\n /** helper to set the current envFlag key, also propogating upwards */\n setEnvFlag(key: string) {\n this._envFlagKey = key;\n if (this.parent && !this.isPartialImport && !this.parent._envFlagKey) {\n this.parent.setEnvFlag(key);\n }\n }\n\n\n /** environment flag config item getter (follows up the parent chain) */\n get envFlagConfigItem(): ConfigItem | undefined {\n const envFlagKey = this.envFlagKey;\n return envFlagKey ? this.graph?.configSchema[envFlagKey] : undefined;\n }\n /** environment flag value getter (follows up the parent chain), and checks the graph-level fallback */\n get envFlagValue() {\n const envFlagItem = this.envFlagConfigItem;\n if (envFlagItem) return envFlagItem.resolvedValue;\n return this.graph!.envFlagFallback;\n }\n /** helper to resolve the envFlag value */\n async resolveCurrentEnv() {\n const envFlagItem = this.envFlagConfigItem;\n if (envFlagItem) {\n if (envFlagItem.resolvedValue) return envFlagItem.resolvedValue;\n await envFlagItem.earlyResolve();\n return envFlagItem.resolvedValue;\n }\n // fallback to the graph-level env flag - which can be set using a CLI flag\n // this is currently only used by Next.js integration to match the default behaviour\n // of setting dev/prod based on the current command (next dev/next build)\n return this.graph!.envFlagFallback;\n }\n\n /** finish init process for this data source */\n async finishInit() {\n if (!this.graph) throw new Error('expected graph to be set');\n\n // each child class can redefine this method to handle additional init code\n await this._finishInit();\n\n // we dont necessarily always want any loading error to fail the entire load\n // but for example if the main schema is failing and we dont know the envFlag\n // we don't know which env-specific sources to enable\n if (this.loadingError) {\n return;\n }\n\n // first we check @disable because we'll bail early\n // note that when using `forEnv` it will rely on the what has been set so far, not anything from _this_ source\n const disabledDec = this.getRootDec('disable');\n if (disabledDec) {\n // early resolve any dependencies needed by @disable condition (e.g. $AUTH_MODE in `not(eq($AUTH_MODE, \"azure\"))`)\n await disabledDec.process();\n if (disabledDec.decValueResolver) {\n for (const depKey of disabledDec.decValueResolver.deps) {\n const depItem = this.graph.configSchema[depKey];\n if (depItem) await depItem.earlyResolve();\n }\n }\n\n const disabledVal = await disabledDec.resolve();\n if (!_.isBoolean(disabledVal)) {\n this._loadingError = new Error('expected @disable to be boolean value');\n return;\n }\n this._disabled = disabledVal;\n // track if @disable is conditional (non-static value like forEnv) for type generation\n if (disabledDec.decValueResolver && !disabledDec.decValueResolver.isStatic) {\n this._hasConditionalDisable = true;\n }\n }\n\n // this will also respect if the parent is disabled\n if (this.disabled) return;\n\n // create config items, or add additional definitions if they already exist\n for (const itemKey of this.importKeys || _.keys(this.configItemDefs)) {\n const itemDef = this.configItemDefs[itemKey];\n if (!itemDef) continue;\n\n // check if this item was already early-resolved (used by @currentEnv, @import enabled, or @disable)\n // a later file setting a conflicting value would silently contradict the decision already made\n const existingItem = this.graph.configSchema[itemKey];\n if (existingItem?.isResolved && itemDef.parsedValue !== undefined) {\n // no value (just decorators or empty assignment) is fine — it won't override\n // a static value matching the early-resolved value is also fine\n const isMatchingStatic = itemDef.parsedValue instanceof ParsedEnvSpecStaticValue\n && itemDef.parsedValue.unescapedValue === existingItem.resolvedValue;\n if (!isMatchingStatic) {\n this._schemaErrors.push(new SchemaError(\n `\"${itemKey}\" was already resolved during early initialization (used by @currentEnv, @import, or @disable) `\n + `and cannot be redefined by ${this.label}`,\n ));\n continue;\n }\n }\n\n // register the existence of the item in the graph\n this.graph.configSchema[itemKey] ??= new ConfigItem(this.graph, itemKey);\n }\n\n // process @currentEnv decorator if present in this source\n // this requires a bit of special handling compared to other decorators\n // (note we also support @envFlag for backwards compatibility)\n const currentEnvDec = this.getRootDec('currentEnv');\n const envFlagDec = this.getRootDec('envFlag');\n if (currentEnvDec && envFlagDec) {\n // TODO can we set this in the decorator definition?\n this._loadingError = new Error('Cannot use both @currentEnv and @envFlag decorators');\n }\n let envFlagItemKey: string | undefined;\n let skipCurrentEnvProcessing = false;\n if (currentEnvDec) {\n // Peek at the ref target before processing to check if it's in the import keys\n // This avoids a schema error when a file import has @currentEnv pointing to an un-imported key\n // (for directories, we still want to error - that's handled in DirectoryDataSource._finishInit)\n const parsedValue = currentEnvDec.parsedDecorator.value;\n if (parsedValue instanceof ParsedEnvSpecFunctionCall && parsedValue.name === 'ref') {\n const args = parsedValue.simplifiedArgs;\n if (Array.isArray(args) && args.length > 0 && typeof args[0] === 'string') {\n envFlagItemKey = args[0];\n // If this is a partial import and the ref target is not importable, skip processing\n // but still set the envFlagKey so directories can check it\n // For files, @currentEnv won't take effect and forEnv will fall back to parent's env setting\n if (this.isPartialImport && !this.importKeys?.includes(envFlagItemKey)) {\n skipCurrentEnvProcessing = true;\n }\n }\n }\n\n // Only process the decorator if we're actually using this currentEnv\n if (!skipCurrentEnvProcessing) {\n await currentEnvDec.process();\n if (!currentEnvDec.decValueResolver) {\n throw new Error('No resolver found for @currentEnv decorator');\n }\n if (currentEnvDec.decValueResolver.fnName !== 'ref') {\n throw new Error('Expected @currentEnv decorator to be set to direct reference - ie `$APP_ENV`');\n }\n }\n } else if (envFlagDec) {\n await envFlagDec.process();\n if (!envFlagDec.decValueResolver) throw new Error('@envFlag resolver not set');\n\n if (!envFlagDec.decValueResolver.staticValue) {\n throw new Error('Expected @envFlag decorator to be static value');\n }\n envFlagItemKey = String(envFlagDec.decValueResolver.staticValue);\n }\n\n if (envFlagItemKey) {\n if (!this.configItemDefs[envFlagItemKey] && !isBuiltinVar(envFlagItemKey)) {\n this._loadingError = new Error(`environment flag \"${envFlagItemKey}\" must be defined within this schema`);\n return;\n }\n\n // If it's a builtin var, register it now\n if (isBuiltinVar(envFlagItemKey)) {\n this.graph.registerBuiltinVar(envFlagItemKey);\n }\n\n // Always set the envFlagKey so parent directories can check it\n // (even if we're skipping processing for a file partial import)\n this.setEnvFlag(envFlagItemKey);\n }\n\n // defaultSensitive and defaultRequired are needed to do any early resolution of items\n const defaultSensitiveDec = this.getRootDec('defaultSensitive');\n await defaultSensitiveDec?.process();\n const defaultRequiredDec = this.getRootDec('defaultRequired');\n await defaultRequiredDec?.process();\n\n await processPluginInstallDecorators(this);\n }\n\n /**\n * Process @import decorators for this data source.\n * Separated from finishInit() so that DirectoryDataSource can load all\n * auto-loaded files first, then process imports once values from\n * .env, .env.local, etc. are available for import conditions.\n */\n async _processImports() {\n if (!this.graph) throw new Error('expected graph to be set');\n if (!this.isValid || this.disabled) return;\n\n const importDecs = this.getRootDecFns('import');\n if (importDecs.length) {\n for (const importDec of importDecs) {\n try {\n // Process the import decorator to identify dependencies\n await importDec.process();\n\n // Early resolve any dependencies in the enabled parameter\n if (importDec.decValueResolver?.objArgs?.enabled) {\n const enabledResolver = importDec.decValueResolver.objArgs.enabled;\n const enabledDeps = enabledResolver.deps;\n\n // Early resolve all dependencies\n for (const depKey of enabledDeps) {\n const depItem = this.graph.configSchema[depKey];\n if (!depItem) {\n throw new Error(`@import enabled parameter depends on non-existent item: ${depKey}`);\n }\n await depItem.earlyResolve();\n }\n }\n\n const importArgs = await importDec.resolve();\n const importPath = importArgs.arr[0];\n const importKeys = importArgs.arr.slice(1);\n if (!importKeys.every(_.isString)) {\n throw new Error('expected @import keys to all be strings');\n }\n\n // determine the full import path based on path type\n let fullImportPath: string | undefined;\n if (importPath.startsWith('./') || importPath.startsWith('../')) {\n // eslint-disable-next-line no-use-before-define\n if (!(this instanceof FileBasedDataSource)) {\n throw new Error('@import of files can only be used from a file-based data source');\n }\n fullImportPath = path.resolve(this.fullPath, '..', importPath);\n } else if (importPath.startsWith('~/') || importPath === '~') {\n // expand ~ to home directory (treat like absolute path)\n fullImportPath = path.join(os.homedir(), importPath.slice(1));\n } else if (importPath.startsWith('/')) {\n // absolute path\n fullImportPath = importPath;\n }\n\n // Check if the import is enabled/disabled using key-val option (defaults to true if not specified)\n const enabledValue = importArgs.obj.enabled ?? true;\n if (!_.isBoolean(enabledValue)) {\n throw new Error('expected @import enabled parameter to be a boolean');\n }\n\n // Skip this import if it's not enabled\n if (!enabledValue) continue;\n\n // Track if this import was conditionally enabled (non-static enabled resolver)\n // Used by type generation to identify env-dependent sources\n const enabledResolver = importDec.decValueResolver?.objArgs?.enabled;\n const isConditionallyEnabled = !!enabledResolver && !enabledResolver.isStatic;\n\n // Check if missing imports should be allowed (defaults to false if not specified)\n const allowMissing = importArgs.obj.allowMissing ?? false;\n if (!_.isBoolean(allowMissing)) {\n throw new Error('expected @import allowMissing parameter to be a boolean');\n }\n\n if (fullImportPath) {\n const fileName = path.basename(fullImportPath);\n\n // TODO: might be nice to move this logic somewhere else\n // Check for diamond dependency: if this path was already loaded,\n // add an alias instead of re-loading (prevents double plugin init)\n const existingSource = this.graph.getLoadedImportSource(fullImportPath);\n if (existingSource) {\n // eslint-disable-next-line no-use-before-define\n await this.addChild(new ImportAliasSource(existingSource), {\n isImport: true, importKeys, isConditionallyEnabled,\n });\n this.graph.registerItemsForImport(existingSource, this, importKeys);\n continue;\n }\n\n if (this.graph.virtualImports) {\n if (importPath.endsWith('/')) {\n const dirExists = Object.keys(this.graph.virtualImports).some((p) => p.startsWith(fullImportPath));\n if (!dirExists && allowMissing) continue;\n if (!dirExists) {\n this._loadingError = new Error(`Virtual directory import ${fullImportPath} not found`);\n return;\n }\n // eslint-disable-next-line no-use-before-define\n const dirChild = new DirectoryDataSource(fullImportPath);\n await this.addChild(dirChild, {\n isImport: true, importKeys, isConditionallyEnabled,\n });\n this.graph.recordLoadedImportPath(fullImportPath, dirChild);\n } else {\n const fileExists = this.graph.virtualImports[fullImportPath];\n if (!fileExists && allowMissing) continue;\n if (!fileExists) {\n this._loadingError = new Error(`Virtual import ${fullImportPath} not found`);\n return;\n }\n // eslint-disable-next-line no-use-before-define\n const fileChild = new DotEnvFileDataSource(fullImportPath, {\n overrideContents: this.graph.virtualImports[fullImportPath],\n });\n await this.addChild(fileChild, { isImport: true, importKeys, isConditionallyEnabled });\n this.graph.recordLoadedImportPath(fullImportPath, fileChild);\n }\n } else {\n const fsStat = await tryCatch(async () => fs.stat(fullImportPath), (_err) => {\n // TODO: work through possible error types here\n });\n\n if (!fsStat && allowMissing) continue;\n if (!fsStat) {\n this._loadingError = new Error(`Import path does not exist: ${fullImportPath}`);\n return;\n }\n\n // directory import -- must end with a \"/\" to make the intent clearer\n if (importPath.endsWith('/')) {\n if (fsStat.isDirectory()) {\n // eslint-disable-next-line no-use-before-define\n const dirChild = new DirectoryDataSource(fullImportPath);\n await this.addChild(dirChild, {\n isImport: true, importKeys, isConditionallyEnabled,\n });\n this.graph.recordLoadedImportPath(fullImportPath, dirChild);\n } else {\n this._loadingError = new Error(`Imported path ending with \"/\" is not a directory: ${fullImportPath}`);\n return;\n }\n // File import\n } else {\n if (fsStat.isDirectory()) {\n this._loadingError = new Error('Imported path is a directory, add trailing \"/\" to import');\n return;\n } else if (!fileName.startsWith('.env.')) {\n this._loadingError = new Error('imported file must be a .env.* file');\n return;\n }\n // TODO: once we have more file types, here we would detect the type and import it correctly\n // eslint-disable-next-line no-use-before-define\n const fileChild = new DotEnvFileDataSource(fullImportPath);\n await this.addChild(fileChild, {\n isImport: true, importKeys, isConditionallyEnabled,\n });\n this.graph.recordLoadedImportPath(fullImportPath, fileChild);\n }\n }\n } else if (importPath.startsWith('http://') || importPath.startsWith('https://')) {\n this._loadingError = new Error('http imports not supported yet');\n return;\n } else if (importPath.startsWith('npm:')) {\n this._loadingError = new Error('npm imports not supported yet');\n return;\n } else {\n this._loadingError = new Error('unsupported import type');\n return;\n }\n } catch (err) {\n this._loadingError = err as Error;\n return;\n }\n }\n }\n }\n\n /**\n * called by the finishInit - meant to be overridden by subclasses\n * to add specific behaviour for that data source type\n * @internal\n * */\n async _finishInit() {\n // override me!\n }\n\n abstract typeLabel: string;\n abstract get label(): string;\n\n type = 'values' as DataSourceType;\n applyForEnv?: string;\n\n _disabled?: boolean = false;\n get disabled() {\n return this._disabled || this.parent?._disabled;\n }\n\n /** an error encountered while loading/parsing the data source */\n _loadingError?: Error;\n get loadingError() {\n if (this._loadingError) return this._loadingError;\n\n // Check if any plugins loaded by this data source have errors\n if (this.graph) {\n for (const plugin of this.graph.plugins) {\n if (plugin.loadingError) {\n // Check if this plugin was installed by this data source\n for (const installDecorator of plugin.installDecoratorInstances) {\n if (installDecorator.dataSource === this) {\n return plugin.loadingError;\n }\n }\n }\n }\n }\n\n return undefined;\n }\n _schemaErrors: Array<SchemaError> = [];\n get schemaErrors() {\n return _.compact([\n ...this._schemaErrors,\n ...this.rootDecorators.flatMap((d) => d.schemaErrors),\n ]);\n }\n\n get resolutionErrors() {\n return _.compact([...this.rootDecorators.flatMap((d) => d._executionError)]);\n }\n\n get isValid() {\n return !this.loadingError && !this.schemaErrors.some((e) => !e.isWarning) && !this.resolutionErrors.length;\n }\n\n configItemDefs: Record<string, ConfigItemDef> = {};\n decorators: Array<ParsedEnvSpecDecorator> = [];\n getRootDecorators(decName: string) {\n return this.decorators.filter((d) => d.name === decName);\n }\n getRootDecoratorSimpleValue(decName: string) {\n const decorators = this.getRootDecorators(decName);\n if (decorators.length === 0) return undefined;\n if (decorators.length > 1) throw new Error(`Multiple ${decName} decorators found`);\n return decorators[0].simplifiedValue;\n }\n\n\n rootDecorators: Array<RootDecoratorInstance> = [];\n getRootDec(decName: string) {\n return this.rootDecorators.find((d) => d.name === decName && !d.isFunctionCall);\n }\n getRootDecFns(decName: string) {\n return this.rootDecorators.filter((d) => d.name === decName && d.isFunctionCall);\n }\n}\n\n/**\n * Lightweight alias created when the same path is imported from multiple locations.\n * Lives in the tree like any other child (has its own importMeta/parent) but delegates\n * definitions to the original source. Has no rootDecorators or configItemDefs of its own,\n * so sortedDataSources consumers (plugin init, error collection, etc.) naturally skip it.\n */\nexport class ImportAliasSource extends EnvGraphDataSource {\n type = 'import-alias' as const;\n typeLabel = 'import-alias';\n\n constructor(\n /** the real data source this alias points to */\n readonly original: EnvGraphDataSource,\n ) {\n super();\n }\n\n get label() { return `re-import of ${this.original.label}`; }\n\n // no-op — the original was already fully initialized\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n async _finishInit() {}\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n async _processImports() {}\n}\n\nexport abstract class FileBasedDataSource extends EnvGraphDataSource {\n fullPath: string;\n fileName: string;\n rawContents?: string;\n\n get typeLabel() {\n return (this.constructor as typeof FileBasedDataSource).format;\n }\n\n private relativePath: string;\n get label() { return this.relativePath; }\n\n static format = 'unknown'; // no abstract static\n\n static validFileExtensions: Array<string> = [];\n get validFileExtensions() {\n return (this.constructor as typeof FileBasedDataSource).validFileExtensions;\n }\n\n constructor(\n fullPath: string,\n opts?: {\n overrideContents?: string;\n },\n ) {\n super();\n\n this.fullPath = fullPath;\n this.fileName = path.basename(fullPath);\n this.relativePath = path.relative(process.cwd(), fullPath);\n\n // easy way to allow tests to override contents or other non-standard ways of loading content\n if (opts?.overrideContents) {\n this.rawContents = opts.overrideContents;\n }\n\n // may may infer some properties from the file name\n if (this.fileName.startsWith('.env')) {\n // we'll break up the filename into parts to detect some info\n // note that a file can have several parts - for example `.env.production.local`\n const fileNameParts = this.fileName.substring(1).split('.');\n const maybeExtension = fileNameParts[fileNameParts.length - 1];\n if (this.validFileExtensions.includes(maybeExtension)) {\n fileNameParts.pop(); // remove the extension\n }\n\n const maybeFileType = fileNameParts[fileNameParts.length - 1];\n for (const [possibleSourceType, possibleSourceSpec] of Object.entries(DATA_SOURCE_TYPES)) {\n if (!('fileSuffixes' in possibleSourceSpec)) continue;\n if (possibleSourceSpec.fileSuffixes.includes(maybeFileType)) {\n this.type = possibleSourceType as DataSourceType;\n break;\n }\n }\n // default is already set to 'values', so we pop the last part if sometihng different\n if (this.type !== 'values') fileNameParts.pop(); // remove the type suffix\n\n // check for a specific env (ex: .env[.production])\n // ? do we want to disallow env qualifier for certain file types?\n // ? ex: .env.production.defaults\n if (fileNameParts.length > 2) {\n throw Error(`Unsure how to interpret filename - ${this.fileName}`);\n } else if (fileNameParts.length === 2) {\n this.applyForEnv = fileNameParts[1];\n }\n }\n }\n\n // no async constructors... :(\n async _finishInit() {\n if (!this.rawContents) {\n if (!await pathExists(this.fullPath)) {\n this._loadingError = new Error(`File does not exist: ${this.fullPath}`);\n return;\n }\n this.rawContents = await fs.readFile(this.fullPath, 'utf8');\n }\n if (this.rawContents) await this._parseContents();\n }\n abstract _parseContents(): Promise<void>;\n}\n\nexport class DotEnvFileDataSource extends FileBasedDataSource {\n static format = '.env';\n static validFileExtensions = []; // no extension for dotenv files!\n\n parsedFile?: ParsedEnvSpecFile;\n\n async _parseContents() {\n const rawContents = this.rawContents!;\n\n this.parsedFile = await tryCatch(\n () => parseEnvSpecDotEnvFile(rawContents),\n (error) => {\n this._loadingError = new ParseError(`Parse error: ${error.message}`, {\n location: {\n id: this.fullPath,\n lineNumber: error.location.start.line,\n colNumber: error.location.start.column,\n lineStr: rawContents.split('\\n')[error.location.start.line - 1],\n },\n });\n // TODO: figure out cause vs passing in as `err` param\n this._loadingError.cause = error;\n },\n );\n\n if (this.loadingError) return;\n if (!this.parsedFile) throw new Error('Failed to parse .env file');\n\n if (!this.graph) throw new Error('expected graph to be set');\n\n this.rootDecorators = this.parsedFile.decoratorsArray.map((d) => new RootDecoratorInstance(this, d));\n\n // validate decorator placement\n this._validateDecoratorPlacement(this.parsedFile);\n\n for (const item of this.parsedFile.configItems) {\n this.configItemDefs[item.key] = {\n description: item.description,\n parsedValue: item.value,\n parsedDecorators: item.decoratorsArray,\n };\n }\n }\n\n private _validateDecoratorPlacement(parsedFile: ParsedEnvSpecFile) {\n // check for item decorators in the header, and duplicate non-fn root decorators\n const seenRootDecs = new Set<string>();\n for (const dec of parsedFile.decoratorsArray) {\n if (dec.name in this.graph!.itemDecoratorsRegistry) {\n this._schemaErrors.push(new SchemaError(\n `Item decorator @${dec.name} cannot be used in the file header - it must be attached to a config item`,\n { location: this._locationFromParsed(dec) },\n ));\n } else if (!dec.isBareFnCall) {\n if (seenRootDecs.has(dec.name)) {\n this._schemaErrors.push(new SchemaError(\n `Root decorator @${dec.name} cannot be used more than once in the same file`,\n { location: this._locationFromParsed(dec) },\n ));\n }\n seenRootDecs.add(dec.name);\n }\n }\n\n // NOTE: root decorators attached to config items are caught during\n // DecoratorInstance.process() which gives a clear error on the individual item\n\n // check for any decorators in orphan comment blocks (not header, not attached to items)\n for (const block of parsedFile.orphanCommentBlocks) {\n for (const comment of block.comments) {\n if (comment instanceof ParsedEnvSpecDecoratorComment) {\n for (const dec of comment.decorators) {\n this._schemaErrors.push(new SchemaError(\n `Decorator @${dec.name} is in a detached comment block - decorators must be in the file header or attached directly to a config item (no blank lines between the decorator and the item)`,\n { location: this._locationFromParsed(dec) },\n ));\n }\n }\n }\n }\n }\n\n private _locationFromParsed(dec: ParsedEnvSpecDecorator) {\n const loc = dec.data._location;\n if (!loc || !this.rawContents) return undefined;\n return {\n id: this.fullPath,\n lineNumber: loc.start.line,\n colNumber: loc.start.column,\n lineStr: this.rawContents.split('\\n')[loc.start.line - 1] || '',\n };\n }\n}\n\n/**\n * Handles a directory as a source, automatically importing .env files from that directory\n * This is usually the root in most cases, but additional directories can also be imported\n *\n * This will load the following files (if they exist), in precedence order\n * - .env.schema\n * - .env\n * - .env.local\n * - .env.ENV\n * - .env.ENV.local\n *\n * where ENV represents the current value of the environment flag (e.g. development,staging,etc)\n */\nexport class DirectoryDataSource extends EnvGraphDataSource {\n type = 'container' as const;\n typeLabel = 'directory';\n get label() { return `directory - ${this.basePath}`; }\n\n schemaDataSource?: DotEnvFileDataSource;\n\n constructor(\n readonly basePath: string,\n ) {\n super();\n }\n\n /** load a file as a child, running finishInit but NOT processing imports yet */\n private async addAutoLoadedFile(fileName: string) {\n if (!this.graph) throw new Error('expected graph to be set');\n const filePath = path.join(this.basePath, fileName);\n\n if (this.graph.virtualImports) {\n if (this.graph.virtualImports[filePath]) {\n const source = new DotEnvFileDataSource(filePath, { overrideContents: this.graph.virtualImports[filePath] });\n await this._addChildWithoutImports(source);\n return source;\n }\n return;\n }\n\n if (!await pathExists(filePath)) return;\n const source = new DotEnvFileDataSource(filePath);\n await this._addChildWithoutImports(source);\n return source;\n }\n\n /** like addChild but skips import processing — used so all files can be loaded before imports run */\n private async _addChildWithoutImports(child: EnvGraphDataSource) {\n await this._initChild(child);\n }\n\n /** resolve currentEnv from schema's envFlagKey or parent chain */\n private async _resolveCurrentEnv(): Promise<string | undefined> {\n if (!this.graph) throw new Error('expected graph to be set');\n\n // First check if our schema has its own envFlagKey (for partial imports with their own currentEnv)\n // since for partial imports the schema's envFlag doesn't propagate to this directory\n if (this.schemaDataSource?._envFlagKey) {\n const envFlagKey = this.schemaDataSource._envFlagKey;\n // Check if this is a partial import that forgot to include the env flag key\n // (only for directories - files can fall back to parent's env setting for forEnv)\n if (this.isPartialImport && !this.importKeys?.includes(envFlagKey)) {\n this._loadingError = new Error(\n `Imported directory has @currentEnv set to $${envFlagKey}, `\n + `but \"${envFlagKey}\" is not included in the import list. `\n + `Add \"${envFlagKey}\" to the @import() arguments.`,\n );\n return undefined;\n }\n const envFlagItem = this.graph.configSchema[envFlagKey];\n if (envFlagItem) {\n if (!envFlagItem.resolvedValue) await envFlagItem.earlyResolve();\n return envFlagItem.resolvedValue?.toString();\n }\n }\n // Fall back to parent chain or fallback value\n return (await this.resolveCurrentEnv())?.toString() || this.envFlagValue?.toString();\n }\n\n /** load env-specific files (.env.ENV and .env.ENV.local) for the given environment */\n private async _loadEnvSpecificFiles(currentEnv: string) {\n const sources: Array<DotEnvFileDataSource> = [];\n const s1 = await this.addAutoLoadedFile(`.env.${currentEnv}`);\n if (s1) sources.push(s1);\n const s2 = await this.addAutoLoadedFile(`.env.${currentEnv}.local`);\n if (s2) sources.push(s2);\n return sources;\n }\n\n async _finishInit() {\n if (!this.graph) throw new Error('expected graph to be set');\n\n // Load all auto-loaded files WITHOUT processing imports yet.\n // This ensures values from .env, .env.local, etc. are registered before\n // import conditions (enabled=...) and imported file @disable are evaluated.\n await this.addAutoLoadedFile('.env.schema');\n await this.addAutoLoadedFile('.env');\n\n // .env.schema is usually the \"schema data source\" but this allows for a single .env file being the main source\n if (this.children.length) {\n this.schemaDataSource = this.children[this.children.length - 1] as DotEnvFileDataSource;\n }\n\n await this.addAutoLoadedFile('.env.local');\n\n // Resolve currentEnv from schema's own @currentEnv (set during finishInit, not during imports)\n let currentEnv = await this._resolveCurrentEnv();\n if (this._loadingError) return;\n\n if (currentEnv) {\n await this._loadEnvSpecificFiles(currentEnv);\n }\n\n // Now that all auto-loaded files are registered, process imports.\n // Reverse order = oldest child first (add order), so earlier files' imports run first.\n for (const child of [...this.children].reverse()) {\n await child._processImports();\n }\n\n // An import may have set @currentEnv (e.g. an imported file with @currentEnv=$VAR).\n // If we didn't load env-specific files above, check again now and process their imports too.\n if (!currentEnv) {\n currentEnv = await this._resolveCurrentEnv();\n if (this._loadingError) return;\n if (currentEnv) {\n const envSources = await this._loadEnvSpecificFiles(currentEnv);\n for (const source of envSources) {\n await source._processImports();\n }\n }\n }\n }\n}\n\n/**\n * A virtual root container that holds multiple top-level data sources.\n * Used when `loadPath` in package.json is set to an array of paths.\n * Each path is loaded as an independent DirectoryDataSource or DotEnvFileDataSource,\n * combined in the order they are specified (later paths have higher precedence).\n */\nexport class MultiplePathsContainerDataSource extends EnvGraphDataSource {\n type = 'container' as const;\n typeLabel = 'multi-path-container';\n get label() { return `multi-path container (${this.paths.length} paths)`; }\n\n /**\n * Direct children of this container are treated as top-level entry points,\n * inheriting root semantics (never classified as env-specific due to filename).\n */\n childrenAreRoots = true;\n\n constructor(\n /** Pre-resolved absolute paths (directories ending with path.sep, or file paths) */\n readonly paths: Array<string>,\n ) {\n super();\n }\n\n async _finishInit() {\n if (!this.graph) throw new Error('expected graph to be set');\n\n for (const entryPath of this.paths) {\n const isDirectory = entryPath.endsWith('/') || entryPath.endsWith(path.sep)\n || (!this.graph.virtualImports && await fs.stat(entryPath).then((s) => s.isDirectory()).catch(() => false));\n\n let child: EnvGraphDataSource;\n if (isDirectory) {\n child = new DirectoryDataSource(entryPath);\n } else {\n // For file sources, pass through virtual contents when available\n const virtualContents = this.graph.virtualImports?.[entryPath];\n child = new DotEnvFileDataSource(\n entryPath,\n virtualContents ? { overrideContents: virtualContents } : undefined,\n );\n }\n\n await this._initChild(child);\n // For DirectoryDataSource, imports are handled internally in its own _finishInit.\n // For DotEnvFileDataSource, we must process imports explicitly here.\n await child._processImports();\n }\n }\n}\n","import _ from '@env-spec/utils/my-dash';\nimport {\n ParsedEnvSpecDecorator, ParsedEnvSpecFunctionCall, ParsedEnvSpecStaticValue,\n} from '@env-spec/parser';\n\nimport { EnvGraphDataType } from './data-types';\nimport { EnvGraph } from './env-graph';\nimport {\n CoercionError, EmptyRequiredValueError, ResolutionError, SchemaError,\n ValidationError,\n} from './errors';\n\nimport { EnvGraphDataSource } from './data-source';\nimport {\n convertParsedValueToResolvers, type ResolvedValue, type Resolver, StaticValueResolver,\n} from './resolver';\nimport { ItemDecoratorInstance } from './decorators';\n\nexport type ConfigItemDef = {\n description?: string;\n // TODO: translate parser decorator class into our own generic version\n parsedDecorators?: Array<ParsedEnvSpecDecorator>;\n parsedValue: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall | undefined;\n\n resolver?: Resolver;\n decorators?: Array<ItemDecoratorInstance>;\n};\nexport type ConfigItemDefAndSource = {\n itemDef: ConfigItemDef;\n source?: EnvGraphDataSource;\n};\n\n\nexport class ConfigItem {\n /** Whether this is a builtin VARLOCK_* variable */\n isBuiltin?: boolean;\n\n /** Programmatic definitions not tied to a data source (e.g. builtin vars) */\n _internalDefs: Array<ConfigItemDefAndSource> = [];\n\n constructor(\n readonly envGraph: EnvGraph,\n readonly key: string,\n ) {\n }\n\n /**\n * fetch ordered list of definitions for this item, by following the sorted definition sources list\n * internal defs (builtins) are appended last (lowest priority)\n */\n get defs() {\n // TODO: this is somewhat inneficient, because some of the checks on the data source follow up the parent chain\n // we may want to cache the definition list at some point when loading is complete\n // although we need it to be dynamic during the loading process when doing any early resolution of the envFlag\n const defs: Array<ConfigItemDefAndSource> = [];\n for (const { source, importKeys } of this.envGraph.sortedDefinitionSources) {\n if (!source.configItemDefs[this.key]) continue;\n if (source.disabled) continue;\n if (importKeys && !importKeys.includes(this.key)) continue;\n defs.push({ itemDef: source.configItemDefs[this.key], source });\n }\n defs.push(...this._internalDefs);\n return defs;\n }\n\n /**\n * Like `defs` but filtered to exclude environment-specific data sources.\n * Used by type generation so that generated types are deterministic\n * regardless of which environment is being loaded.\n */\n get defsForTypeGeneration() {\n return this.defs.filter((def) => !def.source || !def.source.isEnvSpecific);\n }\n\n get description() {\n for (const def of this.defs) {\n if (def.itemDef.description) return def.itemDef.description;\n }\n }\n\n get icon() {\n const explicitIconDec = this.getDec('icon');\n if (explicitIconDec) return explicitIconDec.resolvedValue;\n return this.dataType?.icon;\n }\n get docsLinks() {\n // matching { url, description } from OpenAPI\n const links: Array<{ url: string, description?: string }> = [];\n\n // add docs info from the data type\n if (this.dataType?.docsEntries) {\n for (const entry of this.dataType.docsEntries) {\n if (_.isPlainObject(entry)) links.push(entry);\n else links.push({ url: entry });\n }\n }\n\n const docsUrlDec = this.getDec('docsUrl');\n if (docsUrlDec) {\n links.push({ url: docsUrlDec.resolvedValue });\n }\n\n const docsDecs = this.getDecFns('docs');\n for (const docsDec of docsDecs) {\n const decVal = docsDec.resolvedValue;\n if (!decVal.arr || !_.isArray(decVal.arr)) throw new Error('expected an array of docs() args');\n if (decVal.arr.length === 1) {\n links.push({ url: decVal.arr[0] });\n } else if (decVal.arr.length === 2) {\n links.push({ url: decVal.arr[1], description: decVal.arr[0] });\n }\n }\n return links;\n }\n\n /** Whether the resolved value came from a process.env override rather than file definitions */\n get isOverridden() {\n return this.key in this.envGraph.overrideValues;\n }\n\n /**\n * Returns the definition+source that would provide the value resolver\n * (i.e. the \"winning\" definition), or undefined if no definition has a resolver.\n * This is useful for explaining where a value comes from regardless of overrides.\n */\n get activeValueDef(): ConfigItemDefAndSource | undefined {\n const hasInternalResolver = this._internalDefs.some((d) => d.itemDef.resolver);\n for (const def of this.defs) {\n if (def.itemDef.resolver) {\n if (\n hasInternalResolver\n && def.itemDef.resolver instanceof StaticValueResolver\n && !def.itemDef.resolver.staticValue\n ) {\n continue;\n }\n return def;\n }\n }\n }\n\n get valueResolver() {\n // special case for process.env overrides - always return the static value\n if (this.isOverridden) {\n return new StaticValueResolver(this.envGraph.overrideValues[this.key]);\n }\n\n const hasInternalResolver = this._internalDefs.some((d) => d.itemDef.resolver);\n for (const def of this.defs) {\n if (def.itemDef.resolver) {\n // Skip empty static values when an internal fallback resolver exists\n // (e.g., user defines VARLOCK_ENV= to add decorators — the builtin resolver still applies)\n if (\n hasInternalResolver\n && def.itemDef.resolver instanceof StaticValueResolver\n && !def.itemDef.resolver.staticValue\n ) {\n continue;\n }\n return def.itemDef.resolver;\n }\n }\n }\n\n allDecorators: Array<ItemDecoratorInstance> = [];\n effectiveDecorators: Record<string, ItemDecoratorInstance> = {};\n effectiveDecoratorFns: Record<string, Array<ItemDecoratorInstance>> = {};\n\n getDec(decoratorName: string) {\n return this.effectiveDecorators[decoratorName];\n }\n getDecFns(decoratorName: string) {\n return this.effectiveDecoratorFns[decoratorName] || [];\n }\n async resolveDecorators() {\n // ensures all decorator values have been resolved\n for (const dec of Object.values(this.effectiveDecorators)) {\n await dec.resolve();\n }\n for (const decs of Object.values(this.effectiveDecoratorFns)) {\n for (const dec of decs) {\n await dec.resolve();\n }\n }\n }\n\n\n dataType?: EnvGraphDataType;\n _schemaErrors: Array<SchemaError> = [];\n get resolverSchemaErrors() {\n return this.valueResolver?.schemaErrors || [];\n }\n get decoratorSchemaErrors() {\n return _.values(this.allDecorators).flatMap((d) => d.schemaErrors);\n }\n\n private isProcessed = false;\n async process() {\n if (this.isProcessed) return;\n this.isProcessed = true;\n\n // process value resolver\n for (const def of this.defs) {\n if (def.itemDef.parsedValue && !def.itemDef.resolver) {\n def.itemDef.resolver = convertParsedValueToResolvers(\n def.itemDef.parsedValue,\n def.source!, // parsedValue is only set for source-backed defs\n this.envGraph.registeredResolverFunctions,\n );\n }\n await def.itemDef.resolver?.process(this);\n }\n\n // process decorators and decorator value resolvers\n for (const def of this.defs) {\n def.itemDef.decorators = def.itemDef.parsedDecorators?.map(\n (d) => new ItemDecoratorInstance(this, def.source!, d),\n );\n // track all non fn call decs used in this definition - so we can error if used twice\n const decKeysInThisDef = new Set<string>();\n const allDecsInThisDef = def.itemDef.decorators?.map((d) => d.name);\n for (const dec of def.itemDef.decorators || []) {\n await dec.process();\n this.allDecorators?.push(dec);\n // roll up active decorators\n if (dec.isFunctionCall) {\n // collects all function calls into an array\n this.effectiveDecoratorFns[dec.name] ||= [];\n this.effectiveDecoratorFns[dec.name].push(dec);\n } else {\n if (decKeysInThisDef.has(dec.name)) {\n dec._schemaErrors.push(new SchemaError(`decorator @${dec.name} cannot be used twice in same definition`));\n continue;\n }\n if (dec.incompatibleWith) {\n for (const otherDecName of dec.incompatibleWith) {\n if (allDecsInThisDef?.includes(otherDecName)) {\n dec._schemaErrors.push(new SchemaError(`decorator @${dec.name} is incompatible with @${otherDecName} in the same definition`));\n continue;\n }\n }\n }\n\n // takes a single decorator as the one with most precedence\n this.effectiveDecorators[dec.name] ||= dec;\n }\n decKeysInThisDef.add(dec.name);\n }\n }\n\n const typeDec = this.getDec('type');\n let dataTypeName: string | undefined;\n let dataTypeArgs: any;\n // TODO: this will not currently support any resolver functions within type settings\n const typeDecParsedValue = typeDec?.parsedDecorator.value;\n if (typeDecParsedValue instanceof ParsedEnvSpecStaticValue) {\n dataTypeName = typeDecParsedValue.value;\n } else if (typeDecParsedValue instanceof ParsedEnvSpecFunctionCall) {\n dataTypeName = typeDecParsedValue.name;\n dataTypeArgs = typeDecParsedValue.simplifiedArgs;\n }\n // if no type is set explicitly, we can try to use inferred type from the resolver\n // currently only static value resolver does this - but you can imagine another resolver knowing the type ahead of time\n // (maybe we only want to do this if the value is set in a schema file? or if all inferred types match?)\n if (!dataTypeName && this.valueResolver?.inferredType) {\n dataTypeName = this.valueResolver.inferredType;\n }\n dataTypeName ||= 'string';\n dataTypeArgs ||= [];\n\n if (!(dataTypeName in this.envGraph.dataTypesRegistry)) {\n this._schemaErrors.push(new SchemaError(`unknown data type: ${dataTypeName}`));\n } else {\n const dataTypeFactory = this.envGraph.dataTypesRegistry[dataTypeName];\n this.dataType = dataTypeFactory(..._.isPlainObject(dataTypeArgs) ? [dataTypeArgs] : dataTypeArgs);\n }\n }\n\n get dependencyKeys() {\n return _.uniq([\n ...this.valueResolver?.deps || [],\n ..._.values(this.effectiveDecorators).flatMap(\n (dec) => dec.decValueResolver?.deps || [],\n ),\n ..._.values(this.effectiveDecoratorFns).flatMap(\n (decArr) => decArr.flatMap(\n (d) => d.decValueResolver?.deps || [],\n ),\n ),\n ]);\n }\n\n /**\n * special early resolution helper\n * currently used to resolve the envFlag before everything else has been loaded\n * */\n async earlyResolve() {\n await this.process();\n\n // process and resolve any other items our env flag depends on\n for (const depKey of this.dependencyKeys) {\n const depItem = this.envGraph.configSchema[depKey];\n if (!depItem) {\n throw new Error(`eager resolution eror - non-existant dependency: ${depKey}`);\n }\n await depItem.earlyResolve();\n }\n await this.resolve();\n }\n\n _isRequired: boolean = true;\n /**\n * need to track if required-ness is dynamic, e.g. based on current env\n * because that will affect type generation (only _always_ required items are never undefined)\n * */\n _isRequiredDynamic: boolean = false;\n\n private async processRequired() {\n try {\n // Pass 1: explicit per-item @required / @optional decorators take highest priority\n for (const def of this.defs) {\n const requiredDecs = def.itemDef.decorators?.filter((d) => d.name === 'required' || d.name === 'optional') || [];\n const requiredDec = requiredDecs[0];\n if (!requiredDec) continue;\n\n const usingOptional = requiredDec.name === 'optional';\n\n // need to track if required-ness is dynamic\n // NOTE - if any other resolver ever has a static value, we'll need to change this\n if (requiredDec.decValueResolver?.fnName !== '\\0static') {\n this._isRequiredDynamic = true;\n }\n\n const requiredDecoratorVal = await requiredDec.resolve();\n // if we got an error, we'll bail and the error will be checked later\n if (requiredDec.schemaErrors.length) {\n // but we mark as not required so we don't _also_ get required error\n this._isRequired = false;\n return;\n }\n if (![true, false, undefined].includes(requiredDecoratorVal)) {\n throw new SchemaError('@required/@optional must resolve to a boolean or undefined');\n }\n if (requiredDecoratorVal !== undefined) {\n this._isRequired = usingOptional ? !requiredDecoratorVal : requiredDecoratorVal;\n return;\n }\n }\n\n // Pass 2: @defaultRequired from source files\n for (const def of this.defs) {\n const defaultRequiredDec = def.source?.getRootDec('defaultRequired');\n if (!defaultRequiredDec) continue;\n\n const defaultRequiredVal = await defaultRequiredDec.resolve();\n // @defaultRequired = true/false\n if (_.isBoolean(defaultRequiredVal)) {\n this._isRequired = defaultRequiredVal;\n return;\n\n // @defaultRequired = infer\n // we infer based on if a value is set in this source\n } else if (defaultRequiredVal === 'infer') {\n if (def.itemDef.resolver) {\n if (def.itemDef.resolver instanceof StaticValueResolver) {\n this._isRequired = def.itemDef.resolver.staticValue !== undefined && def.itemDef.resolver.staticValue !== '';\n } else {\n this._isRequired = true;\n }\n } else {\n this._isRequired = false;\n }\n return;\n } else {\n throw new SchemaError('@defaultRequired must resolve to a boolean or \"infer\"');\n }\n }\n } catch (err) {\n this._schemaErrors.push(err instanceof SchemaError ? err : new SchemaError(err as Error));\n }\n }\n get isRequired() { return this._isRequired; }\n get isRequiredDynamic() { return this._isRequiredDynamic; }\n\n\n _isSensitive: boolean = true;\n _sensitiveExplicitlySet = false;\n get isSensitive(): boolean {\n return this._isSensitive;\n }\n private async processSensitive() {\n const sensitiveFromDataType = this.dataType?.isSensitive;\n\n // Pass 1: explicit per-item @sensitive / @public decorators take highest priority\n for (const def of this.defs) {\n const sensitiveDecs = def.itemDef.decorators?.filter((d) => d.name === 'sensitive' || d.name === 'public') || [];\n const sensitiveDec = sensitiveDecs[0];\n if (!sensitiveDec) continue;\n\n const usingPublic = sensitiveDec.name === 'public';\n const sensitiveDecValue = await sensitiveDec.resolve();\n if (sensitiveDec.schemaErrors.length) return;\n if (![true, false, undefined].includes(sensitiveDecValue)) {\n throw new SchemaError('@sensitive/@public must resolve to a boolean or undefined');\n }\n if (sensitiveDecValue !== undefined) {\n this._isSensitive = usingPublic ? !sensitiveDecValue : sensitiveDecValue;\n this._sensitiveExplicitlySet = true;\n return;\n }\n }\n\n // Pass 2: @defaultSensitive from source files (skipped if data type specifies sensitivity)\n if (sensitiveFromDataType === undefined) {\n for (const def of this.defs) {\n const defaultSensitiveDec = def.source?.getRootDec('defaultSensitive');\n if (!defaultSensitiveDec) continue;\n if (!defaultSensitiveDec.decValueResolver) throw new Error('expected defaultSensitive to have a value resolver');\n\n if (defaultSensitiveDec.decValueResolver.fnName === 'inferFromPrefix') {\n const prefix = defaultSensitiveDec.decValueResolver.arrArgs![0].staticValue;\n if (!_.isString(prefix)) {\n this._schemaErrors.push(new SchemaError('@defaultSensitive inferFromPrefix() requires a single string argument'));\n return;\n }\n this._isSensitive = !this.key.startsWith(prefix);\n return;\n } else {\n const defaultSensitiveVal = await defaultSensitiveDec.resolve();\n if (!_.isBoolean(defaultSensitiveVal)) {\n this._schemaErrors.push(new SchemaError('@defaultSensitive must resolve to a boolean value'));\n } else {\n this._isSensitive = defaultSensitiveVal;\n return;\n }\n }\n }\n }\n\n if (sensitiveFromDataType !== undefined) this._isSensitive = sensitiveFromDataType;\n }\n\n\n get errors() {\n return _.compact([\n ...this._schemaErrors || [],\n ...this.resolverSchemaErrors || [],\n ...this.decoratorSchemaErrors || [],\n this.resolutionError,\n this.coercionError,\n ...this.validationErrors || [],\n ]);\n }\n\n get validationState(): 'warn' | 'error' | 'valid' {\n const errors = this.errors;\n if (!errors.length) return 'valid';\n return _.some(errors, (e) => !e.isWarning) ? 'error' : 'warn';\n }\n\n /** resolved value _before coercion_ */\n resolvedRawValue?: ResolvedValue;\n isResolved = false;\n /** resolved value after coercion */\n resolvedValue?: ResolvedValue;\n isValidated = false;\n\n resolutionError?: ResolutionError;\n coercionError?: CoercionError;\n validationErrors?: Array<ValidationError>;\n\n get isCoerced() {\n return this.resolvedRawValue !== this.resolvedValue;\n }\n\n async resolve(reset = false) {\n // bail early if we have real schema errors (warnings do not block resolution)\n if (this._schemaErrors.some((e) => !e.isWarning)) return;\n if (this.resolverSchemaErrors.some((e) => !e.isWarning)) return;\n\n if (reset) {\n this.isResolved = false;\n this.isValidated = false;\n this.resolutionError = undefined;\n this.coercionError = undefined;\n this.validationErrors = undefined;\n this.resolvedRawValue = undefined;\n this.resolvedValue = undefined;\n }\n if (this.isResolved) {\n // previously we would throw an error, now we resolve the envFlag early, so we can just return\n // but we may want further checks, as this could help us identify buggy logic calling resolve multiple times\n return;\n }\n\n await this.resolveDecorators();\n await this.processRequired();\n await this.processSensitive();\n\n // Resolver functions like varlock() and keychain() imply sensitivity —\n // override defaults but respect explicit per-item @sensitive=false / @public\n if (this.valueResolver?.def?.impliesSensitive && !this._sensitiveExplicitlySet) {\n const wasSensitive = this._isSensitive;\n this._isSensitive = true;\n if (!wasSensitive) {\n const hasSchemaSource = this.defs.some((d) => d.source && d.source.type !== 'overrides');\n if (hasSchemaSource) {\n this._schemaErrors.push(new SchemaError(\n 'implicitly treated as @sensitive — add @sensitive to schema',\n { isWarning: true },\n ));\n }\n }\n }\n\n if (!this.valueResolver) {\n this.isResolved = true;\n this.resolvedRawValue = undefined;\n } else {\n try {\n this.resolvedRawValue = await this.valueResolver.resolve();\n } catch (err) {\n if (err instanceof ResolutionError) {\n this.resolutionError = err;\n } else {\n this.resolutionError = new ResolutionError(`error resolving value: ${err}`);\n this.resolutionError.cause = err;\n }\n }\n }\n\n if (this.resolvedRawValue instanceof RegExp) {\n this.resolutionError = new ResolutionError('Regex values are meant to be used within function args (e.g., remap()), not as a final resolved value');\n }\n\n // bail if we have an resolution error\n if (this.resolutionError) return;\n\n this.isResolved = true;\n\n\n // first deal with empty values and checking required\n if (this.resolvedRawValue === undefined || this.resolvedRawValue === '') {\n // we preserve undefined vs empty string - might want to change this?\n this.resolvedValue = this.resolvedRawValue;\n if (this.isRequired) {\n this.validationErrors = [new EmptyRequiredValueError(undefined)];\n }\n return;\n }\n\n if (!this.dataType) throw new Error('expected dataType to be set');\n\n // COERCE VALUE - often will do nothing, but gives us a chance to convert strings to numbers, etc\n try {\n const coerceResult = this.dataType.coerce(this.resolvedRawValue);\n if (coerceResult instanceof Error) throw coerceResult;\n this.resolvedValue = coerceResult;\n } catch (err) {\n if (err instanceof CoercionError) {\n this.coercionError = err;\n return;\n } else if (err instanceof Error) {\n this.coercionError = new CoercionError('Unexpected error coercing value');\n this.coercionError.cause = err;\n } else {\n this.coercionError = new CoercionError(`Unexpected non-error throw during coerce - ${err}`);\n }\n return;\n }\n\n // VALIDATE\n try {\n const validateResult = await this.dataType.validate(this.resolvedValue);\n if (\n validateResult instanceof Error\n || (_.isArray(validateResult) && validateResult[0] instanceof Error)\n ) throw validateResult;\n // validation result is supposed to be `true` or error(s), but we'll check for `false` just in case\n if ((validateResult as any) === false) {\n throw new ValidationError('validation failed with `false` return value');\n }\n this.isValidated = true;\n } catch (err) {\n if (_.isArray(err)) {\n // could do more checking...\n this.validationErrors = err as Array<ValidationError>;\n } else if (err instanceof ValidationError) {\n this.validationErrors = [err];\n } else if (err instanceof Error) {\n const validationError = new ValidationError('Unexpected error during validation');\n validationError.cause = err;\n this.validationErrors = [validationError];\n } else {\n const validationError = new ValidationError(`Unexpected non-error thrown during validation - ${err}`);\n validationError.cause = err;\n this.validationErrors = [validationError];\n }\n return;\n }\n }\n\n get isValid() {\n return this.validationState === 'valid';\n }\n\n /**\n * Compute schema-level info for type generation using only non-env-specific definitions.\n * This mirrors the logic of processRequired/processSensitive but:\n * - Uses defsForTypeGeneration (excludes env-specific sources)\n * - Returns a result object instead of mutating item state\n * - Resolves only static decorators from non-env-specific sources\n */\n async getTypeGenInfo(): Promise<TypeGenItemInfo> {\n const defs = this.defsForTypeGeneration;\n\n // description - first non-empty from filtered defs\n let description: string | undefined;\n for (const def of defs) {\n if (def.itemDef.description) {\n description = def.itemDef.description;\n break;\n }\n }\n\n // isRequired / isRequiredDynamic - mirrors processRequired() logic\n let isRequired = true;\n let isRequiredDynamic = false;\n try {\n for (const def of defs) {\n const requiredDecs = def.itemDef.decorators?.filter((d) => d.name === 'required' || d.name === 'optional') || [];\n const requiredDec = requiredDecs[0];\n\n if (requiredDec) {\n const usingOptional = requiredDec.name === 'optional';\n if (requiredDec.decValueResolver?.fnName !== '\\0static') {\n isRequiredDynamic = true;\n // Dynamic decorators depend on runtime values not yet resolved here.\n // Skip resolve() to avoid caching a stale result that would corrupt\n // the later processRequired() call during resolveEnvValues().\n break;\n }\n\n const requiredDecoratorVal = await requiredDec.resolve();\n if (requiredDec.schemaErrors.length) {\n isRequired = false;\n break;\n }\n if (![true, false, undefined].includes(requiredDecoratorVal)) break;\n if (requiredDecoratorVal !== undefined) {\n isRequired = usingOptional ? !requiredDecoratorVal : requiredDecoratorVal;\n break;\n }\n }\n\n const defaultRequiredDec = def.source?.getRootDec('defaultRequired');\n if (defaultRequiredDec) {\n const defaultRequiredVal = await defaultRequiredDec.resolve();\n if (_.isBoolean(defaultRequiredVal)) {\n isRequired = defaultRequiredVal;\n break;\n } else if (defaultRequiredVal === 'infer') {\n if (def.itemDef.resolver) {\n if (def.itemDef.resolver instanceof StaticValueResolver) {\n isRequired = def.itemDef.resolver.staticValue !== undefined && def.itemDef.resolver.staticValue !== '';\n } else {\n isRequired = true;\n }\n } else {\n isRequired = false;\n }\n break;\n }\n }\n }\n } catch {\n // on error, fall back to defaults (required=true, not dynamic)\n }\n\n // isSensitive - mirrors processSensitive() logic\n let isSensitive = true;\n const sensitiveFromDataType = this.dataType?.isSensitive;\n try {\n let foundSensitive = false;\n for (const def of defs) {\n const sensitiveDecs = def.itemDef.decorators?.filter((d) => d.name === 'sensitive' || d.name === 'public') || [];\n const sensitiveDec = sensitiveDecs[0];\n\n if (sensitiveDec) {\n const usingPublic = sensitiveDec.name === 'public';\n // Skip dynamic decorators to avoid caching a stale result (same as @required fix above)\n if (sensitiveDec.decValueResolver?.fnName !== '\\0static') break;\n const sensitiveDecValue = await sensitiveDec.resolve();\n if (sensitiveDec.schemaErrors.length) break;\n if (![true, false, undefined].includes(sensitiveDecValue)) break;\n if (sensitiveDecValue !== undefined) {\n isSensitive = usingPublic ? !sensitiveDecValue : sensitiveDecValue;\n foundSensitive = true;\n break;\n }\n }\n\n if (sensitiveFromDataType !== undefined) continue;\n\n const defaultSensitiveDec = def.source?.getRootDec('defaultSensitive');\n if (defaultSensitiveDec) {\n if (!defaultSensitiveDec.decValueResolver) break;\n if (defaultSensitiveDec.decValueResolver.fnName === 'inferFromPrefix') {\n const prefix = defaultSensitiveDec.decValueResolver.arrArgs![0].staticValue;\n if (_.isString(prefix)) {\n isSensitive = !this.key.startsWith(prefix);\n foundSensitive = true;\n break;\n }\n } else {\n const defaultSensitiveVal = await defaultSensitiveDec.resolve();\n if (_.isBoolean(defaultSensitiveVal)) {\n isSensitive = defaultSensitiveVal;\n foundSensitive = true;\n break;\n }\n }\n }\n }\n if (!foundSensitive && sensitiveFromDataType !== undefined) {\n isSensitive = sensitiveFromDataType;\n }\n } catch {\n // on error, fall back to default (sensitive=true, safe default)\n }\n\n // icon - resolve from filtered defs' decorators\n let icon: string | undefined;\n for (const def of defs) {\n const iconDec = def.itemDef.decorators?.find((d) => d.name === 'icon');\n if (iconDec) {\n try {\n icon = await iconDec.resolve();\n } catch {\n // skip icon on error\n }\n break;\n }\n }\n icon ??= this.dataType?.icon;\n\n // docsLinks - resolve from filtered defs' decorators\n const docsLinks: Array<{ url: string, description?: string }> = [];\n if (this.dataType?.docsEntries) {\n for (const entry of this.dataType.docsEntries) {\n if (_.isPlainObject(entry)) docsLinks.push(entry);\n else docsLinks.push({ url: entry });\n }\n }\n for (const def of defs) {\n // @docsUrl (deprecated)\n const docsUrlDec = def.itemDef.decorators?.find((d) => d.name === 'docsUrl');\n if (docsUrlDec) {\n try {\n const val = await docsUrlDec.resolve();\n if (val) docsLinks.push({ url: val });\n } catch { /* skip */ }\n }\n // @docs() function calls\n const docsFnDecs = def.itemDef.decorators?.filter((d) => d.name === 'docs' && d.isFunctionCall) || [];\n for (const docsDec of docsFnDecs) {\n try {\n const decVal = await docsDec.resolve();\n if (decVal?.arr && _.isArray(decVal.arr)) {\n if (decVal.arr.length === 1) {\n docsLinks.push({ url: decVal.arr[0] });\n } else if (decVal.arr.length === 2) {\n docsLinks.push({ url: decVal.arr[1], description: decVal.arr[0] });\n }\n }\n } catch { /* skip */ }\n }\n }\n\n return {\n key: this.key,\n description,\n dataType: this.dataType,\n isRequired,\n isRequiredDynamic,\n isSensitive,\n icon,\n docsLinks,\n };\n }\n}\n\n/** Schema-level info for a config item, computed from non-env-specific definitions only */\nexport type TypeGenItemInfo = {\n key: string;\n description?: string;\n dataType?: EnvGraphDataType;\n isRequired: boolean;\n isRequiredDynamic: boolean;\n isSensitive: boolean;\n icon?: string;\n docsLinks: Array<{ url: string, description?: string }>;\n};\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, opts?: {\n mode?: RedactMode,\n hideLength?: boolean,\n /** replace entire string with same-length mask (useful for sourcemap scrubbing) */\n preserveLength?: boolean,\n}): string | undefined;\n/** @deprecated use opts object instead */\nexport function redactString(valStr: string | undefined, mode?: RedactMode, hideLength?: boolean): string | undefined;\nexport function redactString(\n valStr: string | undefined,\n modeOrOpts?: RedactMode | { mode?: RedactMode, hideLength?: boolean, preserveLength?: boolean },\n hideLength = true,\n) {\n if (!valStr) return valStr;\n\n let mode: RedactMode | undefined;\n let preserveLength = false;\n\n if (typeof modeOrOpts === 'object') {\n mode = modeOrOpts.mode;\n hideLength = modeOrOpts.hideLength ?? true;\n preserveLength = modeOrOpts.preserveLength ?? false;\n } else {\n mode = modeOrOpts;\n }\n\n if (preserveLength) {\n return '*'.repeat(valStr.length);\n }\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","declare const Deno: any;\ndeclare const navigator: any;\ndeclare const window: any;\ndeclare const self: any;\n// declare const process: any;\n\n\nlet versionsStr = 'versions'; // eslint-disable-line\n// we use a string here so nextjs static analysis doesnt get angry\nconst processVersions = typeof process !== 'undefined' && (process as any)[versionsStr as any]; // @ts-ignore\n\nexport const isNode: boolean = processVersions && processVersions.node != null;\n\nexport const isWebWorker: boolean = typeof self === 'object'\n && self.constructor\n && self.constructor.name === 'DedicatedWorkerGlobalScope';\n\n// https://github.com/jsdom/jsdom/issues/1537#issuecomment-229405327\nexport const isJsDom: boolean = (typeof window !== 'undefined' && window.name === 'nodejs')\n || (typeof navigator !== 'undefined'\n && 'userAgent' in navigator\n && typeof navigator.userAgent === 'string'\n && (navigator.userAgent.includes('Node.js')\n || navigator.userAgent.includes('jsdom')));\n\nexport const isDeno: boolean = typeof Deno !== 'undefined'\n && typeof Deno.version !== 'undefined'\n && typeof Deno.version.deno !== 'undefined';\n\n/** @see {@link https://bun.sh/guides/util/detect-bun} */\nexport const isBun = processVersions && processVersions.bun != null;\n\n\n\nexport const isBrowser = typeof window !== 'undefined'\n && typeof window.document !== 'undefined'\n && typeof window.document.createElement === 'function'\n && typeof navigator !== 'undefined'\n && typeof navigator.userAgent === 'string';\n","/* eslint-disable no-console */\nexport function debug(...args: Array<any>) {\n if (!globalThis.process?.env.DEBUG_VARLOCK) return;\n console.log(...args);\n}\n","import { redactString } from './lib/redaction';\n\nimport type { SerializedEnvGraph } from '../env-graph';\nimport { isBrowser } from '../lib/detect-runtime';\nimport { debug } from './lib/debug';\n\n// TODO: would like to move all of the redaction utils out of this file\n// but its complicated since it is imported by code that may be run in the backend and frontend\n// but the patching code (which only runs in the backend) use these helper functions\n\n// this does not cover all cases, but serves our needs so far for Next.js\nfunction isString(s: any) {\n return Object.prototype.toString.call(s) === '[object String]';\n}\n\nconst UNMASK_STR = '👁';\n\n\n// Store redaction state on globalThis so all module instances (e.g., multiple CJS bundles\n// in Turbopack's middleware context) share the same redaction map.\n// Without this, the module instance that patches console.log may have an empty map\n// while a different instance has the populated one.\ntype RedactionState = {\n sensitiveSecretsMap: Record<string, { key: string, redacted: string }>,\n redactorFindReplace: undefined | { find: RegExp, replace: ReplaceFn },\n};\ntype ReplaceFn = (match: string, pre: string, val: string, post: string) => string;\n\nconst REDACTION_STATE_KEY = '__varlockRedactionState';\nfunction getRedactionState(): RedactionState {\n if (!(globalThis as any)[REDACTION_STATE_KEY]) {\n (globalThis as any)[REDACTION_STATE_KEY] = {\n sensitiveSecretsMap: {},\n redactorFindReplace: undefined,\n };\n }\n return (globalThis as any)[REDACTION_STATE_KEY];\n}\n\nexport function resetRedactionMap(graph: SerializedEnvGraph) {\n const state = getRedactionState();\n // reset map of { [sensitive] => redacted }\n state.sensitiveSecretsMap = {};\n for (const itemKey in graph.config) {\n const item = graph.config[itemKey];\n if (item.isSensitive && item.value && isString(item.value)) {\n // TODO: we want to respect masking settings from the schema (once added)\n const redacted = redactString(item.value);\n if (redacted) state.sensitiveSecretsMap[item.value] = { key: itemKey, redacted };\n }\n }\n // if no sensitive items exist, we dont need to do any redaction, but the redact fn is checking for undefined\n if (!Object.keys(state.sensitiveSecretsMap).length) {\n state.redactorFindReplace = undefined;\n return;\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(state.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 state.sensitiveSecretsMap[val].redacted;\n };\n state.redactorFindReplace = { find: findRegex, replace: replaceFn };\n}\n\n/** Returns diagnostic info about the current redaction state (safe to expose — no secrets) */\nexport function getRedactionMapInfo() {\n const state = getRedactionState();\n return {\n sensitiveItemCount: Object.keys(state.sensitiveSecretsMap).length,\n hasRedactorRegex: !!state.redactorFindReplace,\n };\n}\n\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\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 * */\nexport function redactSensitiveConfig(o: any): any {\n const { redactorFindReplace } = getRedactionState();\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(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(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 * */\nexport function revealSensitiveConfig(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\n\n\n// reusable leak scanning helper function, used by various integrations\nexport function scanForLeaks(\n toScan: string | ReadableStream | null,\n // optional additional information about what is being scanned to be used in error messages\n meta?: {\n method?: string,\n file?: string,\n },\n) {\n debug('⚡️ varlock scanning for leaks');\n if (!toScan) return toScan;\n\n function scanStrForLeaks(strToScan: string) {\n const { sensitiveSecretsMap } = getRedactionState();\n\n // TODO: probably should use a single regex\n for (const sensitiveValue in sensitiveSecretsMap) {\n if (strToScan.includes(sensitiveValue)) {\n const itemKey = sensitiveSecretsMap[sensitiveValue].key;\n\n // error stack can gets awkwardly buried since we're so deep in the internals\n // so we'll write a nicer error message to help the user debug\n // eslint-disable-next-line no-console\n console.error([\n '',\n `🚨 ${'DETECTED LEAKED SENSITIVE CONFIG'} 🚨`,\n `> Config item key: ${itemKey}`,\n ...meta?.method ? [`> Scan method: ${meta.method}`] : [],\n ...meta?.file ? [`> File: ${meta.file}`] : [],\n '',\n ].join('\\n'));\n\n throw new Error(`🚨 DETECTED LEAKED SENSITIVE CONFIG - ${itemKey}`);\n }\n }\n }\n\n // scan a string\n if (isString(toScan)) {\n scanStrForLeaks(toScan as string);\n return toScan;\n // typeof guard needed: in edge runtime, this code runs as raw injected JS outside webpack's\n // module resolution, so bare `Buffer` is a ReferenceError even though edge supports it via\n // the sandbox's node:buffer module. This branch is unreachable in edge anyway (only strings/streams).\n } else if (typeof Buffer !== 'undefined' && toScan instanceof Buffer) {\n scanStrForLeaks(toScan.toString());\n return toScan;\n // scan a Uint8Array / ArrayBufferView / ArrayBuffer (common in Cloudflare Workers)\n } else if (ArrayBuffer.isView(toScan) || toScan instanceof ArrayBuffer) {\n const decoder = new TextDecoder();\n scanStrForLeaks(decoder.decode(toScan as any));\n return toScan;\n // scan a ReadableStream by piping it through a scanner\n } else if (toScan instanceof ReadableStream) {\n if (toScan.locked) {\n return toScan;\n }\n const chunkDecoder = new TextDecoder();\n return toScan.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n const chunkStr = chunkDecoder.decode(chunk);\n scanStrForLeaks(chunkStr);\n controller.enqueue(chunk);\n },\n }),\n );\n }\n // other things may be passed in like Buffer... but we'll ignore for now\n return toScan;\n}\n\n// -----------\n\n\n\n\n// --------------\n\nlet initializedEnv = false;\nconst envValues = {} as Record<string, any>;\nexport const varlockSettings = {} as Record<string, any>;\n\nconst processExists = !!globalThis.process;\nconst originalProcessEnv = { ...processExists && process.env };\nlet varlockInjectedProcessEnvKeys: Array<string> | undefined;\n\nexport function initVarlockEnv(opts?: {\n allowFail?: boolean,\n}) {\n debug('⚡️ INIT VARLOCK ENV!', initializedEnv, !!(globalThis as any).__varlockLoadedEnv, !!globalThis.process?.env.__VARLOCK_ENV);\n\n // normally we can just bail if we detect we are in the browser\n // however when front-end related tests, it may appear that we are in the browser but it is not\n // also some frameworks inject a process polyfill, others do not\n if (isBrowser && !globalThis.process?.env.__VARLOCK_ENV) {\n initializedEnv = true;\n return;\n }\n\n\n let serializedEnvData: SerializedEnvGraph;\n // when we inject resolved config at build time, we store it here\n if ((globalThis as any).__varlockLoadedEnv) {\n serializedEnvData = (globalThis as any).__varlockLoadedEnv;\n\n // otherwise if we inject via `varlock run` or have already loaded, it will be in process.env\n } else if (processExists && process.env.__VARLOCK_ENV) {\n serializedEnvData = JSON.parse(process.env.__VARLOCK_ENV);\n } else {\n if (opts?.allowFail) return;\n // eslint-disable-next-line no-console\n console.error([\n '',\n '🚨 initVarlockEnv failed 🚨',\n 'try rerunning your command via `varlock run`',\n '',\n ].join('\\n'));\n throw new Error('initVarlockEnv failed');\n }\n Object.assign(varlockSettings, serializedEnvData.settings);\n resetRedactionMap(serializedEnvData);\n\n const setProcessEnv = processExists;\n\n // if we've already injected process.env vars in the past, we'll reset those now\n if (setProcessEnv) {\n if (varlockInjectedProcessEnvKeys) {\n for (const key of varlockInjectedProcessEnvKeys) delete process.env[key];\n for (const key of Object.keys(originalProcessEnv)) process.env[key] = originalProcessEnv[key];\n }\n varlockInjectedProcessEnvKeys = [];\n }\n\n for (const itemKey in serializedEnvData.config) {\n const itemValue = serializedEnvData.config[itemKey].value;\n envValues[itemKey] = itemValue;\n if (setProcessEnv) {\n varlockInjectedProcessEnvKeys?.push(itemKey);\n // when re-injecting into process.env, we treat undefined as empty string\n // this more closely matches expected behaviour from other .env loaders\n process.env[itemKey] = itemValue === undefined ? '' : String(itemValue);\n }\n }\n initializedEnv = true;\n}\n\n// we will attempt to call initVarlockEnv automatically, but in most cases it should be called explicitly\n// note that if this is being imported in the browser, process.env may not exist, so we do this in a try/catch\ntry {\n if (!initializedEnv) {\n // if we are automatically loading because __VARLOCK_ENV is already set\n // then we assume process.env vars have also already been set (although might not harm anything?)\n initVarlockEnv({ allowFail: true });\n }\n} catch (err) {\n // expected that this will fail when process.env does not exist\n // but we may want to look for specific errors\n}\n\n\n\n// some object keys are checked by various tools when handling arbitrary data, especially in templates\n// because our proxy objects throw errors when unknown keys are accessed, this causes problems\n// for now we can just filter out a these keys and it should be fairly harmless\n// TODO: ideally this could be customized by the user, and not specific to vue\nconst IGNORED_PROXY_KEYS = [\n // vue - see https://github.com/vuejs/core/blob/70773d00985135a50556c61fb9855ed6b930cb82/packages/reactivity/src/ref.ts#L101\n '__v_isRef',\n];\n\n\n// this gets exported and then augmented by our type generation\n// ideally we'd start with a loose type `Record<string,any>` and then override it with the actual schema\n// so that if type generation was disabled, a user could still use `ENV`\n// but TS wont let us, so instead we start with it being empty, which will cause type errors\n// unless type generation is enabled\nexport interface TypedEnvSchema {}\n\nconst EnvProxy = new Proxy<TypedEnvSchema>({}, {\n get(target, prop) {\n // ignore symbols, as it likely an external tool checking something\n if (typeof prop === 'symbol') return;\n // special cases to avoid throwing on invalid keys\n if (IGNORED_PROXY_KEYS.includes(prop)) return;\n\n if (!initializedEnv) {\n throw new Error('varlock ENV not initialized');\n }\n\n if (prop in envValues) return envValues[prop];\n if ((globalThis as any).__varlockThrowOnMissingKeys) {\n // during development, we can feed in extra metadata and show more helpful errors\n if ((globalThis as any).__varlockValidKeys && (globalThis as any).__varlockValidKeys.includes(prop)) {\n throw new Error(`\\`ENV.${prop}\\` exists, but is not available in this environment`);\n } else {\n throw new Error(`\\`ENV.${prop}\\` does not exist`);\n }\n }\n return undefined;\n },\n});\n\nexport const ENV = EnvProxy;\n","import { scanForLeaks, varlockSettings } from './env';\nimport { debug } from './lib/debug';\n\nexport function patchGlobalResponse() {\n debug('⚡️ PATCHING global Response');\n if ((globalThis.Response as any)._patchedByVarlock) {\n debug('> already patched');\n return;\n }\n if (varlockSettings.preventLeaks === false) {\n debug('> disabled by settings');\n return;\n }\n\n const _UnpatchedResponse = globalThis.Response;\n globalThis.Response = class VarlockPatchedResponse extends _UnpatchedResponse {\n static _patchedByVarlock = true;\n // Make native fetch() responses (which are instances of the original Response)\n // pass instanceof checks against the patched globalThis.Response.\n static [Symbol.hasInstance](instance: unknown) {\n return instance instanceof _UnpatchedResponse;\n }\n constructor(body: any, init: any) {\n debug('⚡️ patched Response constructor');\n super(scanForLeaks(body, { method: 'patched Response constructor' }) as any, init);\n }\n static json(data: any, init: any) {\n debug('⚡️ patched Response.json');\n scanForLeaks(JSON.stringify(data), { method: 'patched Response.json' });\n const r = _UnpatchedResponse.json(data, init);\n Object.setPrototypeOf(r, Response.prototype);\n return r;\n }\n };\n}\n","/*\n This patches the global ServerResponse object to scan for secret leaks - currently used for next.js and remix\n*/\n\nimport zlib from 'node:zlib';\nimport { ServerResponse } from 'node:http';\nimport { redactSensitiveConfig, scanForLeaks, varlockSettings } from './env';\nimport { debug } from './lib/debug';\n\n// NOTE - previously was using a symbol but got weird because of multiple builds and contexts...\nconst patchedKey = '_patchedByVarlock';\nexport function patchGlobalServerResponse(opts?: {\n ignoreUrlPatterns?: Array<RegExp>,\n redactInsteadOfThrow?: boolean,\n}) {\n debug('⚡️ PATCHING global ServerResponse');\n if (Object.getOwnPropertyDescriptor(ServerResponse.prototype, patchedKey)) {\n debug('> already patched');\n return;\n }\n if (varlockSettings.preventLeaks === false) {\n debug('> disabled by settings');\n return;\n }\n\n Object.defineProperty(ServerResponse.prototype, patchedKey, { value: true });\n\n const serverResponseWrite = ServerResponse.prototype.write;\n\n // @ts-ignore\n ServerResponse.prototype.write = function varlockPatchedServerResponseWrite(...args) {\n // TODO: do we want to filter out some requests here? maybe based on the file type?\n\n const rawChunk = args[0];\n // console.log('⚡️ patched ServerResponse.write', rawChunk);\n\n // for now, we only scan rendered html... may need to change this though for server components?\n // so we bail if it looks like this response does not contain html\n const contentType = this.getHeader('content-type')?.toString() || '';\n // console.log('patched ServerResponse.write', contentType);\n let runScan = (\n contentType.startsWith('text/')\n || contentType.startsWith('application/json')\n || (!contentType && typeof rawChunk === 'string')\n // || contentType.startsWith('application/javascript')\n );\n\n const reqUrl = (this as any).req.url;\n // console.log('> scan ServerResponse.write', contentType, reqUrl);\n if (runScan && reqUrl && opts?.ignoreUrlPatterns?.some((pattern) => pattern.test(reqUrl))) {\n runScan = false;\n }\n\n // we want to run the scanner on text/html and text/x-component (server actions)\n // TODO: anything else?\n if (!runScan) {\n // @ts-ignore\n return serverResponseWrite.apply(this, args);\n }\n\n // have to deal with compressed data, which is awkward but possible\n const compressionType = this.getHeader('Content-Encoding');\n let chunkStr;\n let chunkType: 'string' | 'encoded' | 'gzip' | null = null;\n if (typeof rawChunk === 'string') {\n chunkType = 'string';\n chunkStr = rawChunk;\n } else if (!compressionType) {\n chunkType = 'encoded';\n const decoder = new TextDecoder();\n chunkStr = decoder.decode(rawChunk);\n } else if (compressionType === 'gzip') {\n chunkType = 'gzip';\n // first chunk of data contains only compression headers\n if (!(this as any)._zlibChunks) {\n // (this as any)._zlibHeadersChunk = rawChunk;\n (this as any)._zlibChunks = [rawChunk];\n } else {\n // TODO: figure out how we can unzip one chunk at a time instead of storing everything\n (this as any)._zlibChunks?.push(rawChunk);\n try {\n const unzippedChunk = zlib.unzipSync(Buffer.concat((this as any)._zlibChunks || []), {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n const fullUnzippedData = unzippedChunk.toString('utf-8');\n chunkStr = fullUnzippedData.substring((this as any)._lastChunkEndIndex || 0);\n (this as any)._lastChunkEndIndex = fullUnzippedData.length;\n } catch (err) {\n // console.log('error unzipping chunk', err);\n }\n }\n }\n // TODO: we may want to support other compression schemes? but currently only used in nextjs which is using gzip\n if (chunkStr) {\n // console.log('scanning!', chunkStr.substring(0, 1000));\n\n\n try {\n scanForLeaks(chunkStr, { method: 'patched ServerResponse.write', file: (this as any).req.url });\n } catch (err) {\n // console.log('found secret in chunk', chunkType, chunkStr);\n // console.log(this)\n if (opts?.redactInsteadOfThrow) {\n chunkStr = redactSensitiveConfig(chunkStr);\n if (chunkType === 'string') {\n args[0] = chunkStr;\n } else if (chunkType === 'encoded') {\n const encoder = new TextEncoder();\n args[0] = encoder.encode(chunkStr);\n } else if (chunkType === 'gzip') {\n // currently unable to scrub gzip chunks\n // this works sometimes, but othertimes causes decoding error\n // we'll need to pass through chunks from a new gzip stream, because we don't have access to the underlying one\n // args[0] = zlib.gzipSync(chunkStr, {\n // flush: zlib.constants.Z_SYNC_FLUSH,\n // finishFlush: zlib.constants.Z_SYNC_FLUSH,\n // });\n } else {\n throw new Error(`unable to scrub - unknown chunk type ${chunkType}`);\n }\n } else {\n throw err;\n }\n }\n }\n\n // @ts-ignore\n return serverResponseWrite.apply(this, args);\n };\n\n // calling `res.json()` in the api routes on pages router calls `res.end` without called `res.write`\n const serverResponseEnd = ServerResponse.prototype.end;\n // @ts-ignore\n ServerResponse.prototype.end = function patchedServerResponseEnd(...args) {\n // console.log('⚡️ patched ServerResponse.end');\n const endChunk = args[0];\n // this just needs to work (so far) for nextjs sending json bodies, so does not need to handle all cases...\n if (endChunk && typeof endChunk === 'string') {\n // TODO: currently this throws the error and then things just hang... do we want to try to return an error type response instead?\n scanForLeaks(endChunk, { method: 'patched ServerResponse.end' });\n }\n // @ts-ignore\n return serverResponseEnd.apply(this, args);\n };\n}\n\n","import semver from 'semver';\n\n/**\n * Minimum Bun version required for varlock to work correctly.\n * Bun v1.3.3 introduced the ability to disable built-in .env file loading\n * via `--no-env-file` flag or `env = false` in bunfig.toml, which is necessary\n * to prevent conflicts with varlock's own .env loading.\n */\nexport const MIN_BUN_VERSION = '1.3.3';\n\n/**\n * Checks if the current Bun version meets the minimum requirement.\n * Throws an error if running on an unsupported Bun version.\n */\nexport function checkBunVersion() {\n const bunVersion = process.versions.bun;\n if (!bunVersion) return;\n\n if (!semver.gte(bunVersion, MIN_BUN_VERSION)) {\n throw new Error(\n `Varlock requires Bun >= ${MIN_BUN_VERSION}, but you are using Bun ${bunVersion}.\\n`\n + 'Please upgrade Bun by running: `bun upgrade`\\n'\n + `Bun ${MIN_BUN_VERSION} introduced the \\`--no-env-file\\` flag which is required to prevent `\n + 'conflicts with varlock\\'s own .env loading.',\n );\n }\n}\n","import process from 'node:process';\n\nconst asyncCallbacks = new Set();\nconst callbacks = new Set();\n\nlet isCalled = false;\nlet isRegistered = false;\n\nasync function flushStdio() {\n\tconst flush = stream => new Promise(resolve => {\n\t\tif (!stream || !stream.writable || stream.writableEnded || stream.destroyed) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\n\t\tconst onError = () => {\n\t\t\tstream.off('error', onError);\n\t\t\tresolve();\n\t\t};\n\n\t\tstream.once('error', onError);\n\n\t\ttry {\n\t\t\tstream.write('', () => {\n\t\t\t\tstream.off('error', onError);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t} catch {\n\t\t\tstream.off('error', onError);\n\t\t\tresolve();\n\t\t}\n\t});\n\n\tconst timeout = new Promise(resolve => {\n\t\tsetTimeout(resolve, 1000);\n\t});\n\n\tawait Promise.race([\n\t\tPromise.all([flush(process.stdout), flush(process.stderr)]),\n\t\ttimeout,\n\t]);\n}\n\nasync function exit(shouldManuallyExit, isSynchronous, signal) {\n\tif (isCalled) {\n\t\treturn;\n\t}\n\n\tisCalled = true;\n\n\tif (asyncCallbacks.size > 0 && isSynchronous) {\n\t\tconsole.error([\n\t\t\t'SYNCHRONOUS TERMINATION NOTICE:',\n\t\t\t'When explicitly exiting the process via process.exit or via a parent process,',\n\t\t\t'asynchronous tasks in your exitHooks will not run. Either remove these tasks,',\n\t\t\t'use gracefulExit() instead of process.exit(), or ensure your parent process',\n\t\t\t'sends a SIGINT to the process running this code.',\n\t\t].join(' '));\n\t}\n\n\tlet exitCode = 0;\n\n\t// A non-graceful signal should be preserved over process.exitCode\n\tif (signal > 0) {\n\t\texitCode = 128 + signal;\n\t// Respect process.exitCode for graceful exits\n\t} else if (typeof process.exitCode === 'number' || typeof process.exitCode === 'string') {\n\t\texitCode = process.exitCode;\n\t}\n\n\tconst done = (force = false) => {\n\t\tif (force === true || shouldManuallyExit === true) {\n\t\t\tprocess.exit(exitCode); // eslint-disable-line unicorn/no-process-exit\n\t\t}\n\t};\n\n\tfor (const callback of callbacks) {\n\t\tcallback(exitCode);\n\t}\n\n\tif (isSynchronous) {\n\t\tdone();\n\t\treturn;\n\t}\n\n\tconst promises = [];\n\tlet forceAfter = 0;\n\tfor (const [callback, wait] of asyncCallbacks) {\n\t\tforceAfter = Math.max(forceAfter, wait);\n\t\tpromises.push(Promise.resolve(callback(exitCode)));\n\t}\n\n\t// Force exit if we exceeded our wait value\n\tconst asyncTimer = forceAfter > 0\n\t\t? setTimeout(() => {\n\t\t\tdone(true);\n\t\t}, forceAfter)\n\t\t: undefined;\n\n\tawait Promise.all(promises);\n\t// Let flushStdio handle its own timeout without the force-exit timer.\n\tclearTimeout(asyncTimer);\n\tawait flushStdio();\n\tdone();\n}\n\nfunction addHook(options) {\n\tconst {onExit, wait, isSynchronous} = options;\n\tconst asyncCallbackConfig = [onExit, wait];\n\n\tif (isSynchronous) {\n\t\tcallbacks.add(onExit);\n\t} else {\n\t\tasyncCallbacks.add(asyncCallbackConfig);\n\t}\n\n\tif (!isRegistered) {\n\t\tisRegistered = true;\n\n\t\t// Exit cases that support asynchronous handling\n\t\tprocess.once('beforeExit', exit.bind(undefined, true, false, -128));\n\t\tprocess.once('SIGINT', exit.bind(undefined, true, false, 2));\n\t\tprocess.once('SIGTERM', exit.bind(undefined, true, false, 15));\n\n\t\t// Explicit exit events. Calling will force an immediate exit and run all\n\t\t// synchronous hooks. Explicit exits must not extend the node process\n\t\t// artificially. Will log errors if asynchronous calls exist.\n\t\tprocess.once('exit', exit.bind(undefined, false, true, 0));\n\n\t\t// PM2 Cluster shutdown message. Caught to support async handlers with pm2,\n\t\t// needed because explicitly calling process.exit() doesn't trigger the\n\t\t// beforeExit event, and the exit event cannot support async handlers,\n\t\t// since the event loop is never called after it.\n\t\tprocess.on('message', message => {\n\t\t\tif (message === 'shutdown') {\n\t\t\t\texit(true, true, -128);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn () => {\n\t\tif (isSynchronous) {\n\t\t\tcallbacks.delete(onExit);\n\t\t} else {\n\t\t\tasyncCallbacks.delete(asyncCallbackConfig);\n\t\t}\n\t};\n}\n\nexport default function exitHook(onExit) {\n\tif (typeof onExit !== 'function') {\n\t\tthrow new TypeError('onExit must be a function');\n\t}\n\n\treturn addHook({\n\t\tonExit,\n\t\tisSynchronous: true,\n\t});\n}\n\nexport function asyncExitHook(onExit, options = {}) {\n\tif (typeof onExit !== 'function') {\n\t\tthrow new TypeError('onExit must be a function');\n\t}\n\n\tif (!(typeof options.wait === 'number' && options.wait > 0)) {\n\t\tthrow new TypeError('wait must be set to a positive numeric value');\n\t}\n\n\treturn addHook({\n\t\tonExit,\n\t\twait: options.wait,\n\t\tisSynchronous: false,\n\t});\n}\n\nexport function gracefulExit(signal) {\n\tif (signal !== undefined) {\n\t\tprocess.exitCode = signal;\n\t}\n\n\texit(true, false, -128);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport _ from '@env-spec/utils/my-dash';\nimport { EnvGraph } from './env-graph';\nimport { DirectoryDataSource, DotEnvFileDataSource, MultiplePathsContainerDataSource } from './data-source';\n\nexport async function loadEnvGraph(opts?: {\n basePath?: string,\n /** Entry file path(s) — accepts a single path or array of paths */\n entryFilePaths?: string | Array<string>,\n relativePaths?: Array<string>,\n checkGitIgnored?: boolean,\n excludeDirs?: Array<string>,\n currentEnvFallback?: string,\n afterInit?: (graph: EnvGraph) => Promise<void>,\n}) {\n const graph = new EnvGraph();\n\n let rawPaths: Array<string> | undefined;\n if (opts?.entryFilePaths) {\n rawPaths = Array.isArray(opts.entryFilePaths) ? opts.entryFilePaths : [opts.entryFilePaths];\n }\n\n if (rawPaths && rawPaths.length > 1) {\n graph.basePath = opts?.basePath ?? process.cwd();\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n const resolvedPaths = rawPaths.map((p) => path.resolve(p));\n await graph.setRootDataSource(new MultiplePathsContainerDataSource(resolvedPaths));\n } else if (rawPaths?.length === 1) {\n const entryFilePath = rawPaths[0];\n const resolvedPath = path.resolve(entryFilePath);\n const isDirectory = entryFilePath.endsWith('/') || entryFilePath.endsWith(path.sep)\n || (fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isDirectory());\n if (isDirectory) {\n graph.basePath = resolvedPath;\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n await graph.setRootDataSource(new DirectoryDataSource(resolvedPath));\n } else {\n graph.basePath = path.dirname(resolvedPath);\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n await graph.setRootDataSource(new DotEnvFileDataSource(resolvedPath));\n }\n } else {\n graph.basePath = opts?.basePath ?? process.cwd();\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n await graph.setRootDataSource(new DirectoryDataSource(graph.basePath));\n }\n\n await graph.finishLoad();\n\n return graph;\n}\n\n","import ansis, { type AnsiColors, type AnsiStyles } from 'ansis';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { ConfigItem, VarlockError } from '../env-graph';\nimport { redactString } from '../runtime/lib/redaction';\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.isOverridden) {\n summary.push(` 🟡 ${ansis.yellow.italic('set via process.env override')}`);\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 ansis from 'ansis';\nimport _ from '@env-spec/utils/my-dash';\nimport { joinAndCompact } from '../../lib/formatting';\n\nexport class CliExitError extends Error {\n constructor(\n message: string,\n private more?: {\n details?: string | Array<string>,\n suggestion?: string | Array<string>,\n /** always triggers a full exit, even in watch mode - useful if problem is irrecoverable */\n forceExit?: boolean,\n },\n ) {\n super(message);\n }\n\n get forceExit() { return !!this.more?.forceExit; }\n\n getFormattedOutput() {\n let msg = `\\n💥 ${ansis.red(this.message)} 💥\\n`;\n\n if (this.more?.details) {\n msg += joinAndCompact(_.castArray(this.more?.details), '\\n');\n }\n\n if (this.more?.suggestion) {\n msg += joinAndCompact(_.castArray(this.more?.suggestion), '\\n');\n }\n\n msg += '\\n';\n return msg;\n }\n}\n","import ansis from 'ansis';\nimport { gracefulExit } from 'exit-hook';\nimport _ from '@env-spec/utils/my-dash';\nimport { EnvGraph, ConfigItem, FileBasedDataSource } from '../../env-graph';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport { VarlockError } from '../../env-graph/lib/errors';\n\n\nfunction showErrorLocationDetails(err: Error) {\n if (!(err instanceof VarlockError) || !err.location) return;\n const errLoc = err.location;\n const errPreview = [\n errLoc.lineStr,\n `${ansis.gray('-'.repeat(errLoc.colNumber - 1))}${ansis.red('^')}`,\n ].join('\\n');\n\n console.error('');\n console.error(`📂 ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.error(errPreview);\n}\n\nexport function checkForNoEnvFiles(envGraph: EnvGraph) {\n if (Object.keys(envGraph.configSchema).length === 0) {\n const displayPath = envGraph.basePath ?? process.cwd();\n const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);\n if (!hasLoadedFiles) {\n console.error(`🚨 No .env files found in ${displayPath}\\n`);\n console.error('Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.');\n } else {\n console.error(`🚨 No config items defined in ${displayPath}\\n`);\n console.error('Add items to your .env.schema file to get started.');\n }\n return gracefulExit(1);\n }\n}\n\nexport function checkForSchemaErrors(envGraph: EnvGraph) {\n // first we check for loading/parse errors - some cases we may want to let it fail silently?\n for (const source of envGraph.sortedDataSources) {\n // do we care about loading errors from disabled sources?\n // if (source.disabled) continue;\n\n if (source.loadingError) {\n console.error(`🚨 Error encountered while loading ${source.label}\\n`);\n\n console.error(source.loadingError.message);\n showErrorLocationDetails(source.loadingError);\n\n // For plugin loading errors, show the full stack trace since it's usually\n // a runtime error from executing the plugin code\n if (source.loadingError.stack && !(source.loadingError instanceof VarlockError)) {\n console.error(`\\n${ansis.dim('Stack trace:')}`);\n console.error(ansis.dim(source.loadingError.stack));\n }\n\n return gracefulExit(1);\n }\n // TODO: unify this with the above!\n if (source.schemaErrors.length) {\n console.error(`🚨 Error(s) encountered in ${source.label}`);\n\n for (const schemaErr of source.schemaErrors) {\n console.error(`- ${schemaErr.message}`);\n showErrorLocationDetails(schemaErr);\n }\n return gracefulExit(1);\n }\n }\n\n // now we check for any schema errors - where something about how things are wired up is invalid\n // NOTE - we should not have run any resolution yet\n // TODO: make sure we are calling this before attempting to resolve values\n // const failingItems = _.filter(_.values(envGraph.configSchema), (item) => item.validationState === 'error');\n // if (failingItems.length > 0) {\n // throw new CliExitError('Schema is currently invalid');\n // }\n}\n\n\nexport function showPluginWarnings(envGraph: EnvGraph) {\n for (const plugin of envGraph.plugins) {\n if (!plugin.warnings.length) continue;\n for (const warning of plugin.warnings) {\n console.error(ansis.yellow(`[WARNING] ${warning.message}`));\n if (warning.tip) {\n for (const line of warning.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n }\n }\n }\n}\n\nexport class InvalidEnvError extends Error {\n constructor() {\n super('Resolved config/env did not pass validation');\n }\n getFormattedOutput() {\n return `\\n💥 ${ansis.red(this.message)} 💥\\n`;\n }\n}\n\nexport function checkForConfigErrors(envGraph: EnvGraph, opts?: {\n showAll?: boolean;\n /** Log errors to stderr but don't throw — used when the caller will handle errors itself (e.g. json-full output) */\n noThrow?: boolean;\n}) {\n // check for root decorator \"execution\"\n for (const source of envGraph.sortedDataSources) {\n if (source.resolutionErrors.length) {\n console.error(`🚨 Root decorator error(s) in ${source.label}`);\n\n for (const err of source.resolutionErrors) {\n console.error(`- ${err.message}`);\n if (err instanceof VarlockError && err.tip) {\n for (const line of err.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n }\n showErrorLocationDetails(err);\n }\n }\n }\n\n\n\n const failingItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((item) => item.validationState === 'error');\n\n // TODO: use service.isValid?\n if (failingItems.length > 0) {\n console.error(`\\n🚨 🚨 🚨 ${ansis.bold.underline('Configuration is currently invalid ')} 🚨 🚨 🚨\\n`);\n console.error('Invalid items:\\n');\n\n _.each(failingItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n console.error();\n });\n if (opts?.showAll) {\n console.error();\n console.error(joinAndCompact([\n 'Valid items:',\n ansis.italic.gray('(remove `--show-all` flag to hide)'),\n ]));\n console.error();\n const validItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((i) => !!i.isValid);\n _.each(validItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n });\n }\n\n showPluginWarnings(envGraph);\n if (!opts?.noThrow) {\n throw new InvalidEnvError();\n }\n }\n}\n","/**\n * WSL detection utility.\n *\n * When running inside WSL, we use the Windows encryption binary (.exe)\n * to get DPAPI key protection and Windows Hello biometric support.\n */\n\nimport fs from 'node:fs';\n\nlet _isWSL: boolean | undefined;\n\n/** Detect whether we're running inside WSL (1 or 2). Cached after first call. */\nexport function isWSL(): boolean {\n if (_isWSL !== undefined) return _isWSL;\n\n // Fast path: WSL always sets this env var\n if (process.env.WSL_DISTRO_NAME) {\n _isWSL = true;\n return true;\n }\n\n // Fallback: check /proc/version for Microsoft/WSL signature\n try {\n const version = fs.readFileSync('/proc/version', 'utf-8');\n _isWSL = /microsoft|wsl/i.test(version);\n } catch {\n _isWSL = false;\n }\n\n return _isWSL;\n}\n","/**\n * Resolves the path to the platform-specific native helper binary.\n *\n * Resolution order:\n * 1. SEA sibling: same directory as the running varlock binary (install.sh, standalone)\n * 1b. SEA libexec: ../libexec/ relative to the binary (homebrew convention)\n * 2. Bundled in npm package: native-bins/<platform>[-<arch>]/ within the varlock package\n * 3. Dev fallback: walk up from __dirname to find build output\n *\n * Returns undefined if no binary is found (file-based fallback will be used instead).\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { isWSL } from './wsl-detect';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n/** Debug logger — prints to stderr when VARLOCK_DEBUG is set */\nfunction debug(msg: string) {\n if (process.env.VARLOCK_DEBUG) {\n process.stderr.write(`[varlock:binary-resolver] ${msg}\\n`);\n }\n}\n\nconst BINARY_NAME = 'varlock-local-encrypt';\nconst MACOS_APP_BUNDLE = 'VarlockEnclave.app';\n\n/**\n * Resolve the varlock package root by walking up from this module until we\n * find package.json with name=varlock. This is robust across src/dist layouts.\n */\nfunction resolvePackageRoot(): string {\n let dir = __dirname;\n for (let i = 0; i < 10; i++) {\n const pkgJsonPath = path.join(dir, 'package.json');\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8')) as { name?: string };\n if (pkgJson.name === 'varlock') return dir;\n } catch {\n // Ignore invalid/unreadable package.json and continue walking upward\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n // Last-resort fallback for unexpected layouts.\n return path.resolve(__dirname, '..', '..', '..');\n}\n\n/** Get the binary name for the current platform */\nfunction getPlatformBinaryName(): string {\n if (process.platform === 'win32' || isWSL()) return `${BINARY_NAME}.exe`;\n return BINARY_NAME;\n}\n\n/** Get the subdirectory name within native-bins/ for the current platform */\nfunction getNativeBinSubdir(): string {\n if (process.platform === 'darwin') return 'darwin';\n if (process.platform === 'win32') return `win32-${process.arch}`;\n // WSL2: use the Windows binary for DPAPI + Windows Hello support\n if (isWSL()) return 'win32-x64';\n return `${process.platform}-${process.arch}`;\n}\n\n/**\n * Resolve the macOS .app bundle binary path, or fall back to bare binary.\n */\nfunction resolveMacOSBinary(dir: string): string | undefined {\n // Try .app bundle first (needed for custom Touch ID icon)\n const appBundlePath = path.join(dir, MACOS_APP_BUNDLE, 'Contents', 'MacOS', BINARY_NAME);\n if (fs.existsSync(appBundlePath)) return appBundlePath;\n\n // Fall back to bare binary\n const barePath = path.join(dir, BINARY_NAME);\n if (fs.existsSync(barePath)) return barePath;\n\n return undefined;\n}\n\n/**\n * Resolve the binary path for Linux/Windows.\n */\nfunction resolveStandardBinary(dir: string): string | undefined {\n const binaryPath = path.join(dir, getPlatformBinaryName());\n if (fs.existsSync(binaryPath)) return binaryPath;\n return undefined;\n}\n\n/**\n * Resolve binary from a directory, handling macOS .app bundle vs standard binary.\n */\nfunction resolveBinaryFromDir(dir: string): string | undefined {\n if (process.platform === 'darwin') return resolveMacOSBinary(dir);\n return resolveStandardBinary(dir);\n}\n\n/**\n * Strategy 1: Look for the binary next to the running varlock binary,\n * then check ../libexec/ (homebrew convention for internal helpers).\n * This is the primary path for binary/SEA distribution.\n */\nfunction resolveSeaSibling(): string | undefined {\n const execDir = path.dirname(fs.realpathSync(process.execPath));\n\n // 1a. Same directory as the binary (install.sh, standalone archives)\n const sibling = resolveBinaryFromDir(execDir);\n if (sibling) return sibling;\n\n // 1b. ../libexec/ relative to the binary (homebrew layout)\n const libexecDir = path.join(execDir, '..', 'libexec');\n return resolveBinaryFromDir(libexecDir);\n}\n\n/**\n * Strategy 2: Look for the binary bundled in the varlock npm package.\n * native-bins/<platform-subdir>/\n */\nfunction resolveNpmBundled(): string | undefined {\n const packageRoot = resolvePackageRoot();\n const nativeBinsDir = path.join(packageRoot, 'native-bins', getNativeBinSubdir());\n if (fs.existsSync(nativeBinsDir)) return resolveBinaryFromDir(nativeBinsDir);\n\n // Legacy/alternate layout: native-bins as a sibling of the package root.\n const adjacentNativeBinsDir = path.join(path.dirname(packageRoot), 'native-bins', getNativeBinSubdir());\n if (fs.existsSync(adjacentNativeBinsDir)) return resolveBinaryFromDir(adjacentNativeBinsDir);\n\n return undefined;\n}\n\n/**\n * Strategy 3: Development fallback — look for build output in the monorepo.\n * Walks up from __dirname looking for native binary build output\n */\nfunction resolveDevFallback(): string | undefined {\n let dir = __dirname;\n for (let i = 0; i < 10; i++) {\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n\n // Check for Swift build output (macOS)\n if (process.platform === 'darwin') {\n const swiftBuild = path.join(dir, 'packages', 'encryption-binary-swift', 'swift', '.build', 'release', 'VarlockEnclave');\n if (fs.existsSync(swiftBuild)) return swiftBuild;\n }\n\n // Check for Rust build output (Linux/Windows)\n const rustBuild = path.join(dir, 'packages', 'encryption-binary-rust', 'target', 'release', getPlatformBinaryName());\n if (fs.existsSync(rustBuild)) return rustBuild;\n }\n\n return undefined;\n}\n\n/**\n * Ensure the binary at the given path is executable.\n * GitHub Actions artifact upload/download strips execute permissions,\n * and some extraction tools may do the same.\n */\nfunction ensureExecutable(binaryPath: string): string {\n try {\n fs.accessSync(binaryPath, fs.constants.X_OK);\n } catch {\n // Not executable — try to fix it\n if (process.platform !== 'win32') {\n fs.chmodSync(binaryPath, 0o755);\n }\n }\n return binaryPath;\n}\n\n/**\n * Resolve the native helper binary path.\n * Returns undefined if no binary is found — caller should fall back to pure JS.\n */\nlet _cachedBinaryPath: string | undefined | null = null; // null = not yet resolved\n\nexport function resolveNativeBinary(): string | undefined {\n if (_cachedBinaryPath !== null) return _cachedBinaryPath;\n\n if (process.env._VARLOCK_FORCE_FILE_ENCRYPTION_FALLBACK) {\n debug('_VARLOCK_FORCE_FILE_ENCRYPTION_FALLBACK is set — skipping native binary resolution');\n _cachedBinaryPath = undefined;\n return undefined;\n }\n\n debug(`resolving: platform=${process.platform}, isWSL=${isWSL()}, binaryName=${getPlatformBinaryName()}, subdir=${getNativeBinSubdir()}`);\n\n const seaSibling = resolveSeaSibling();\n if (seaSibling) {\n debug(`resolved via SEA sibling: ${seaSibling}`);\n _cachedBinaryPath = ensureExecutable(seaSibling);\n return _cachedBinaryPath;\n }\n\n const npmBundled = resolveNpmBundled();\n if (npmBundled) {\n debug(`resolved via npm bundled: ${npmBundled}`);\n _cachedBinaryPath = ensureExecutable(npmBundled);\n return _cachedBinaryPath;\n }\n\n const devFallback = resolveDevFallback();\n if (devFallback) {\n debug(`resolved via dev fallback: ${devFallback}`);\n _cachedBinaryPath = ensureExecutable(devFallback);\n return _cachedBinaryPath;\n }\n\n debug('NOT FOUND: no binary resolved from any strategy');\n debug(` SEA sibling dir: ${path.dirname(process.execPath)}`);\n const packageRoot = resolvePackageRoot();\n debug(` npm bundled dir: ${path.join(packageRoot, 'native-bins', getNativeBinSubdir())}`);\n _cachedBinaryPath = undefined;\n return undefined;\n}\n","/**\n * Daemon client for communicating with the native encryption helper binary.\n *\n * Handles daemon lifecycle (spawn, connect, reconnect) and IPC messaging\n * using the 4-byte LE length-prefixed JSON protocol.\n *\n * - macOS/Linux: Unix domain socket\n * - Windows: named pipe (TODO)\n *\n * Generalized from the secure-enclave plugin's EnclaveDaemonClient.\n */\n\nimport net from 'node:net';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport crypto from 'node:crypto';\nimport { spawn } from 'node:child_process';\n\nimport { getUserVarlockDir } from '../user-config-dir';\nimport { resolveNativeBinary } from './binary-resolver';\nimport type { KeychainItemMeta, KeychainItemRef } from './types';\n\nfunction debug(msg: string) {\n if (process.env.VARLOCK_DEBUG) {\n process.stderr.write(`[varlock:daemon-client] ${msg}\\n`);\n }\n}\n\nfunction getSocketDir(): string {\n return path.join(getUserVarlockDir(), 'local-encrypt');\n}\n\nfunction getSocketPath(): string {\n if (process.platform === 'win32') {\n // Windows named pipe — fixed name shared by all varlock processes\n return '\\\\\\\\.\\\\pipe\\\\varlock-local-encrypt';\n }\n return path.join(getSocketDir(), 'daemon.sock');\n}\n\nfunction getPidPath(): string {\n return path.join(getSocketDir(), 'daemon.pid');\n}\n\nfunction getDaemonInfoPath(): string {\n return path.join(getSocketDir(), 'daemon.info');\n}\n\n/**\n * Check whether the currently running daemon was spawned from the same binary\n * we would spawn now. Compares the resolved binary path and its mtime against\n * the values recorded in daemon.info when the daemon was last started.\n *\n * Returns the stale PID (to kill) if there's a mismatch or no info file\n * exists (daemon predates version tracking), or undefined if daemon is current.\n */\nfunction checkDaemonBinaryStale(): number | undefined {\n const infoPath = getDaemonInfoPath();\n const pidPath = getPidPath();\n\n let info: { binaryPath: string; binaryMtimeMs: number } | undefined;\n try {\n info = JSON.parse(fs.readFileSync(infoPath, 'utf-8'));\n } catch {\n // No info file — daemon predates version tracking, treat as stale\n }\n\n const currentBinaryPath = resolveNativeBinary();\n if (!currentBinaryPath) return undefined; // no binary available at all\n\n if (info) {\n // Path changed (e.g. new npm install, different resolution strategy)\n if (currentBinaryPath !== info.binaryPath) {\n debug(`daemon binary path changed: ${info.binaryPath} → ${currentBinaryPath}`);\n } else {\n // Same path — check if the file was updated in place\n try {\n const stat = fs.statSync(currentBinaryPath);\n if (stat.mtimeMs === info.binaryMtimeMs) {\n debug('daemon binary is current — no restart needed');\n return undefined; // same binary, daemon is current\n }\n debug(`daemon binary mtime changed: ${info.binaryMtimeMs} → ${stat.mtimeMs}`);\n } catch {\n return undefined; // can't stat, assume OK\n }\n }\n } else {\n debug('no daemon.info file — treating running daemon as stale');\n }\n\n // Binary changed — read PID so caller can kill the stale daemon\n try {\n const pid = parseInt(fs.readFileSync(pidPath, 'utf-8').trim(), 10);\n process.kill(pid, 0); // verify process is alive\n return pid;\n } catch {\n return undefined; // stale PID or process already gone\n }\n}\n\n/** Write daemon.info recording which binary was used to spawn the daemon */\nfunction writeDaemonInfo(binaryPath: string): void {\n try {\n const stat = fs.statSync(binaryPath);\n fs.writeFileSync(getDaemonInfoPath(), JSON.stringify({\n binaryPath,\n binaryMtimeMs: stat.mtimeMs,\n }));\n } catch {\n // Non-fatal — version checking just won't work this time\n }\n}\n\nexport class DaemonClient {\n private socket: net.Socket | null = null;\n private messageQueue = new Map<string, {\n resolve: (value: any) => void;\n reject: (error: Error) => void;\n }>();\n private isConnected = false;\n private buffer = Buffer.alloc(0);\n private connectingPromise: Promise<void> | null = null;\n /** Set after we spawn a daemon in this process — skip stale check to avoid restart loops */\n private spawnedInThisProcess = false;\n\n async ensureConnected(): Promise<void> {\n if (this.isConnected && this.socket) return;\n\n // Deduplicate concurrent ensureConnected calls — multiple varlock() items\n // may resolve concurrently and all call decrypt → ensureConnected\n if (this.connectingPromise) return this.connectingPromise;\n\n this.connectingPromise = this.doConnect();\n try {\n await this.connectingPromise;\n } finally {\n this.connectingPromise = null;\n }\n }\n\n /**\n * Try to connect to an existing daemon without spawning a new one.\n * Returns true if connected, false if no daemon is running.\n */\n async tryConnect(): Promise<boolean> {\n if (this.isConnected && this.socket) return true;\n const socketPath = getSocketPath();\n try {\n await this.connectToSocket(socketPath);\n return true;\n } catch {\n return false;\n }\n }\n\n private async doConnect(): Promise<void> {\n const socketPath = getSocketPath();\n\n // Check if a running daemon was spawned from a stale binary\n const stalePid = this.spawnedInThisProcess ? undefined : checkDaemonBinaryStale();\n if (stalePid) {\n debug(`killing stale daemon (pid ${stalePid}) — binary has been updated`);\n try {\n process.kill(stalePid, 'SIGTERM');\n } catch {\n // already gone\n }\n // Clean up so spawnDaemon doesn't think a daemon is still running\n for (const file of [getPidPath(), getDaemonInfoPath()]) {\n try {\n fs.unlinkSync(file);\n } catch { /* ignore */ }\n }\n if (process.platform !== 'win32') {\n try {\n fs.unlinkSync(socketPath);\n } catch { /* ignore */ }\n }\n } else {\n try {\n await this.connectToSocket(socketPath);\n return;\n } catch {\n // Daemon not running, spawn it\n }\n }\n\n try {\n await this.spawnDaemon();\n } catch {\n // Another process may have won the race to spawn the daemon.\n // Wait briefly for it to be ready, then try connecting.\n await new Promise<void>((r) => {\n setTimeout(r, 1000);\n });\n }\n await this.connectToSocket(socketPath);\n }\n\n async decrypt(ciphertext: string, keyId = 'varlock-default'): Promise<string> {\n await this.ensureConnected();\n const result = await this.sendMessage({\n action: 'decrypt',\n payload: { ciphertext, keyId },\n });\n if (typeof result === 'string') return result;\n if (result && typeof result === 'object' && 'error' in result) {\n throw new Error(String(result.error));\n }\n return String(result);\n }\n\n async promptSecret(opts?: {\n itemKey?: string;\n message?: string;\n keyId?: string;\n }): Promise<string | undefined> {\n await this.ensureConnected();\n try {\n const result = await this.sendMessage({\n action: 'prompt-secret',\n payload: {\n itemKey: opts?.itemKey,\n message: opts?.message,\n keyId: opts?.keyId,\n },\n });\n if (result && typeof result === 'object' && 'ciphertext' in result) {\n return result.ciphertext as string;\n }\n return undefined;\n } catch (err) {\n if (err instanceof Error && err.message === 'cancelled') return undefined;\n throw err;\n }\n }\n\n async invalidateSession(): Promise<void> {\n await this.ensureConnected();\n await this.sendMessage({ action: 'invalidate-session' });\n }\n\n async keychainGet(opts: { service?: string; account?: string; keychain?: string; field?: string }): Promise<string> {\n await this.ensureConnected();\n const result = await this.sendMessage({\n action: 'keychain-get',\n payload: opts,\n });\n if (typeof result === 'string') return result;\n if (result && typeof result === 'object' && 'error' in result) {\n throw new Error(String(result.error));\n }\n return String(result);\n }\n\n async keychainSearch(opts?: { query?: string; keychain?: string }): Promise<Array<KeychainItemMeta>> {\n await this.ensureConnected();\n const result = await this.sendMessage({\n action: 'keychain-search',\n payload: opts ?? {},\n });\n return (result ?? []) as Array<KeychainItemMeta>;\n }\n\n async keychainPick(opts?: { itemKey?: string }): Promise<KeychainItemRef | undefined> {\n await this.ensureConnected();\n try {\n const result = await this.sendMessage({\n action: 'keychain-pick',\n payload: { itemKey: opts?.itemKey },\n });\n if (result && typeof result === 'object' && 'service' in result) {\n return result as KeychainItemRef;\n }\n return undefined;\n } catch (err) {\n if (err instanceof Error && err.message === 'cancelled') return undefined;\n throw err;\n }\n }\n\n cleanup(): void {\n for (const { reject } of this.messageQueue.values()) {\n reject(new Error('Connection closed'));\n }\n this.messageQueue.clear();\n this.socket?.end();\n this.socket = null;\n this.isConnected = false;\n this.buffer = Buffer.alloc(0);\n }\n\n // -- Private --\n\n private connectToSocket(socketPath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const socket = new net.Socket();\n const timeout = setTimeout(() => {\n socket.destroy();\n reject(new Error('Connection timeout'));\n }, 5000);\n\n socket.on('connect', () => {\n clearTimeout(timeout);\n this.socket = socket;\n this.isConnected = true;\n this.buffer = Buffer.alloc(0);\n resolve();\n });\n\n socket.on('data', (data: Buffer) => {\n this.handleData(data);\n });\n\n socket.on('error', (err) => {\n clearTimeout(timeout);\n this.isConnected = false;\n reject(err);\n });\n\n socket.on('close', () => {\n this.isConnected = false;\n this.socket = null;\n });\n\n socket.connect(socketPath);\n });\n }\n\n private handleData(data: Buffer): void {\n this.buffer = Buffer.concat([this.buffer, data]);\n\n while (this.buffer.length >= 4) {\n const messageLength = this.buffer.readUInt32LE(0);\n if (this.buffer.length < 4 + messageLength) break;\n\n const messageData = this.buffer.subarray(4, 4 + messageLength);\n this.buffer = this.buffer.subarray(4 + messageLength);\n\n try {\n const message = JSON.parse(messageData.toString());\n if (message.id && this.messageQueue.has(message.id)) {\n const { resolve: res, reject: rej } = this.messageQueue.get(message.id)!;\n this.messageQueue.delete(message.id);\n if (message.error) {\n rej(new Error(message.error));\n } else {\n res(message.result);\n }\n }\n } catch {\n // Ignore malformed messages\n }\n }\n }\n\n private sendMessage(message: Record<string, any>): Promise<any> {\n return new Promise((resolve, reject) => {\n if (!this.isConnected || !this.socket) {\n reject(new Error('Not connected to daemon'));\n return;\n }\n\n const messageId = `${Date.now().toString(36)}-${crypto.randomBytes(4).toString('hex')}`;\n const messageWithId = { ...message, id: messageId };\n const jsonData = JSON.stringify(messageWithId);\n const messageBytes = Buffer.from(jsonData, 'utf-8');\n\n const lengthBuf = Buffer.alloc(4);\n lengthBuf.writeUInt32LE(messageBytes.length, 0);\n\n this.messageQueue.set(messageId, { resolve, reject });\n this.socket.write(Buffer.concat([lengthBuf, messageBytes]));\n });\n }\n\n private async spawnDaemon(): Promise<void> {\n const binaryPath = resolveNativeBinary();\n if (!binaryPath) {\n throw new Error('Native encryption binary not found — cannot start daemon');\n }\n\n const socketPath = getSocketPath();\n const pidPath = getPidPath();\n const isWindows = process.platform === 'win32';\n\n // Ensure PID directory exists (don't mkdir for Windows pipe paths)\n if (!isWindows) {\n fs.mkdirSync(path.dirname(socketPath), { recursive: true });\n }\n fs.mkdirSync(path.dirname(pidPath), { recursive: true });\n\n // Check for existing daemon via PID\n if (fs.existsSync(pidPath)) {\n try {\n const pid = parseInt(fs.readFileSync(pidPath, 'utf-8').trim(), 10);\n process.kill(pid, 0); // Throws if process doesn't exist\n // Process is alive — wait briefly and let ensureConnected retry\n await new Promise<void>((r) => {\n setTimeout(r, 500);\n });\n return;\n } catch {\n // Stale PID file — clean up both PID and socket\n }\n }\n\n // Clean up stale files before spawning\n // On Windows, named pipes don't leave files — only clean PID and Unix sockets\n if (!isWindows) {\n for (const file of [socketPath, pidPath, getDaemonInfoPath()]) {\n if (fs.existsSync(file)) {\n fs.unlinkSync(file);\n }\n }\n // Verify socket file is actually gone\n if (fs.existsSync(socketPath)) {\n throw new Error(`Failed to clean up stale socket file: ${socketPath}`);\n }\n } else {\n // Clean PID + info files on Windows (named pipes don't leave socket files)\n for (const file of [pidPath, getDaemonInfoPath()]) {\n if (fs.existsSync(file)) {\n fs.unlinkSync(file);\n }\n }\n }\n\n return new Promise((resolve, reject) => {\n const child = spawn(binaryPath, [\n 'daemon',\n '--socket-path',\n socketPath,\n '--pid-path',\n pidPath,\n ], {\n detached: true,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n const timeout = setTimeout(() => {\n reject(new Error('Daemon failed to start within timeout'));\n }, 10000);\n\n let stdoutData = '';\n let stderrData = '';\n\n child.stdout!.on('data', (data: Buffer) => {\n stdoutData += data.toString();\n try {\n const parsed = JSON.parse(stdoutData);\n if (parsed.ready) {\n clearTimeout(timeout);\n writeDaemonInfo(binaryPath);\n this.spawnedInThisProcess = true;\n child.unref();\n child.stdout!.destroy();\n child.stderr!.destroy();\n resolve();\n }\n } catch {\n // Incomplete JSON, keep buffering\n }\n });\n\n child.stderr!.on('data', (data: Buffer) => {\n stderrData += data.toString();\n });\n\n child.on('error', (err) => {\n clearTimeout(timeout);\n reject(new Error(`Failed to spawn daemon: ${err.message}`));\n });\n\n child.on('exit', (code) => {\n clearTimeout(timeout);\n if (code !== 0) {\n const details = [\n stderrData.trim() && `stderr: ${stderrData.trim()}`,\n stdoutData.trim() && `stdout: ${stdoutData.trim()}`,\n `binary: ${binaryPath}`,\n `socket: ${socketPath}`,\n ].filter(Boolean).join('\\n');\n reject(new Error(`Daemon exited with code ${code}\\n${details}`));\n }\n });\n });\n }\n}\n","/**\n * Pure JS ECIES implementation using Node.js Web Crypto API.\n *\n * Wire-compatible with the Swift Secure Enclave implementation:\n * - P-256 ECDH key agreement\n * - HKDF-SHA256 (salt: \"varlock-ecies-v1\", info: ephemeralPub || recipientPub)\n * - AES-256-GCM with random 12-byte nonce\n * - Payload: version(1) | ephemeralPubKey(65) | nonce(12) | ciphertext(N) | tag(16)\n *\n * Adapted from PR #19's apple-crypto.ts, modified to match the custom ECIES scheme\n * used by the Swift SecureEnclaveManager rather than Apple's built-in variant.\n */\n\nimport { webcrypto } from 'node:crypto';\n\nconst subtle = webcrypto.subtle;\n\nconst PAYLOAD_VERSION = 0x01;\nconst HKDF_SALT = new TextEncoder().encode('varlock-ecies-v1');\nconst EC_ALGORITHM = { name: 'ECDH', namedCurve: 'P-256' };\n\n/** Uncompressed P-256 public key is 65 bytes (0x04 || x(32) || y(32)) */\nconst PUBLIC_KEY_LENGTH = 65;\nconst NONCE_LENGTH = 12;\nconst TAG_LENGTH = 16;\nconst HEADER_LENGTH = 1 + PUBLIC_KEY_LENGTH + NONCE_LENGTH; // version + pubkey + nonce\n\n// Bun's types are stricter about BufferSource (requires ArrayBuffer, not ArrayBufferLike).\n// This type assertion is safe — we always work with standard ArrayBuffers.\n\nconst bs = (data: Uint8Array | ArrayBuffer) => data as any;\n\n// ── Key types ──────────────────────────────────────────────────────────\n\nexport interface EcKeyPair {\n /** Base64-encoded uncompressed P-256 public key (65 bytes raw) */\n publicKey: string;\n /** Base64-encoded PKCS8 private key */\n privateKey: string;\n}\n\n// ── Utilities ──────────────────────────────────────────────────────────\n\nfunction concatBuffers(...buffers: Array<Uint8Array>): Uint8Array {\n const totalLength = buffers.reduce((sum, b) => sum + b.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const buf of buffers) {\n result.set(buf, offset);\n offset += buf.length;\n }\n return result;\n}\n\nfunction bufferToBase64(buffer: ArrayBuffer | Uint8Array): string {\n if (buffer instanceof Uint8Array) {\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength).toString('base64');\n }\n return Buffer.from(buffer).toString('base64');\n}\n\nfunction base64ToUint8(base64: string): Uint8Array {\n const buf = Buffer.from(base64, 'base64');\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n}\n\n// ── HKDF-SHA256 ────────────────────────────────────────────────────────\n\n/**\n * HKDF-SHA256 (RFC 5869) — matches the Swift SecureEnclaveManager.deriveKey implementation.\n *\n * We implement this manually rather than using Web Crypto's built-in HKDF because\n * the Web Crypto HKDF requires importing the input key material as a CryptoKey,\n * which adds complexity. This manual implementation is a direct port of the Swift code.\n */\nasync function hkdfSha256(\n ikm: Uint8Array,\n salt: Uint8Array,\n info: Uint8Array,\n outputByteCount: number,\n): Promise<Uint8Array> {\n // HKDF-Extract: PRK = HMAC-SHA256(salt, IKM)\n const saltKey = await subtle.importKey('raw', bs(salt), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);\n const prk = new Uint8Array(await subtle.sign('HMAC', saltKey, bs(ikm)));\n\n // HKDF-Expand: OKM = T(1) || T(2) || ...\n const prkKey = await subtle.importKey('raw', bs(prk), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);\n const okm = new Uint8Array(outputByteCount);\n let t = new Uint8Array(0);\n let offset = 0;\n let counter = 1;\n\n while (offset < outputByteCount) {\n const input = concatBuffers(t, info, new Uint8Array([counter]));\n t = new Uint8Array(await subtle.sign('HMAC', prkKey, bs(input)));\n okm.set(t.slice(0, Math.min(t.length, outputByteCount - offset)), offset);\n offset += t.length;\n counter++;\n }\n\n return okm;\n}\n\n// ── Key management ─────────────────────────────────────────────────────\n\n/** Import a public key from its base64-encoded uncompressed representation. */\nasync function importPublicKey(base64: string): Promise<CryptoKey> {\n return subtle.importKey('raw', bs(base64ToUint8(base64)), EC_ALGORITHM, true, []);\n}\n\n/** Import a private key from its base64-encoded PKCS8 representation. */\nasync function importPrivateKey(base64: string): Promise<CryptoKey> {\n return subtle.importKey('pkcs8', bs(base64ToUint8(base64)), EC_ALGORITHM, true, ['deriveBits']);\n}\n\n/** Generate a new P-256 ECDH key pair. */\nexport async function createKeyPair(): Promise<EcKeyPair> {\n const keyPair = await subtle.generateKey(EC_ALGORITHM, true, ['deriveBits']);\n\n const publicKeyRaw = await subtle.exportKey('raw', keyPair.publicKey);\n const privateKeyPkcs8 = await subtle.exportKey('pkcs8', keyPair.privateKey);\n\n return {\n publicKey: bufferToBase64(publicKeyRaw),\n privateKey: bufferToBase64(privateKeyPkcs8),\n };\n}\n\n// ── ECIES encrypt ──────────────────────────────────────────────────────\n\n/**\n * Encrypt plaintext using ECIES with the recipient's public key.\n *\n * @param publicKeyBase64 - Base64-encoded uncompressed P-256 public key (65 bytes raw)\n * @param plaintext - UTF-8 string to encrypt\n * @returns Base64-encoded ciphertext payload\n */\nexport async function encrypt(publicKeyBase64: string, plaintext: string): Promise<string> {\n const recipientPublicKey = await importPublicKey(publicKeyBase64);\n const recipientPubKeyRaw = base64ToUint8(publicKeyBase64);\n\n // Generate ephemeral key pair\n const ephemeralKeyPair = await subtle.generateKey(EC_ALGORITHM, true, ['deriveBits']);\n const ephemeralPubKeyRaw = new Uint8Array(await subtle.exportKey('raw', ephemeralKeyPair.publicKey));\n\n // ECDH: ephemeral private × recipient public → shared secret (32 bytes for P-256)\n const sharedSecretBits = await subtle.deriveBits(\n { name: 'ECDH', public: recipientPublicKey },\n ephemeralKeyPair.privateKey,\n 256,\n );\n const sharedSecret = new Uint8Array(sharedSecretBits);\n\n // HKDF-SHA256 → AES-256 key\n const info = concatBuffers(ephemeralPubKeyRaw, recipientPubKeyRaw);\n const aesKey = await hkdfSha256(sharedSecret, HKDF_SALT, info, 32);\n\n // AES-256-GCM encrypt\n const nonce = webcrypto.getRandomValues(new Uint8Array(NONCE_LENGTH));\n const plaintextBytes = new TextEncoder().encode(plaintext);\n\n const cryptoKey = await subtle.importKey('raw', bs(aesKey), 'AES-GCM', false, ['encrypt']);\n const encrypted = new Uint8Array(\n await subtle.encrypt({ name: 'AES-GCM', iv: bs(nonce), tagLength: TAG_LENGTH * 8 }, cryptoKey, bs(plaintextBytes)),\n );\n\n // Web Crypto appends the tag to ciphertext — split them to match Swift format\n const ciphertext = encrypted.slice(0, encrypted.length - TAG_LENGTH);\n const tag = encrypted.slice(encrypted.length - TAG_LENGTH);\n\n // Assemble payload: version(1) | ephemeralPub(65) | nonce(12) | ciphertext(N) | tag(16)\n const payload = concatBuffers(\n new Uint8Array([PAYLOAD_VERSION]),\n ephemeralPubKeyRaw,\n nonce,\n ciphertext,\n tag,\n );\n\n return bufferToBase64(payload);\n}\n\n// ── ECIES decrypt ──────────────────────────────────────────────────────\n\n/**\n * Decrypt ciphertext using ECIES with the recipient's private key.\n *\n * @param privateKeyBase64 - Base64-encoded PKCS8 private key\n * @param publicKeyBase64 - Base64-encoded uncompressed P-256 public key of the recipient\n * @param ciphertextBase64 - Base64-encoded ciphertext payload\n * @returns Decrypted UTF-8 string\n */\nexport async function decrypt(\n privateKeyBase64: string,\n publicKeyBase64: string,\n ciphertextBase64: string,\n): Promise<string> {\n const payloadBytes = base64ToUint8(ciphertextBase64);\n\n if (payloadBytes.byteLength < HEADER_LENGTH + TAG_LENGTH) {\n throw new Error('Payload too short');\n }\n\n // Parse payload\n const version = payloadBytes[0];\n if (version !== PAYLOAD_VERSION) {\n throw new Error(`Unsupported payload version: ${version}`);\n }\n\n const ephemeralPubKeyRaw = payloadBytes.slice(1, 1 + PUBLIC_KEY_LENGTH);\n const nonce = payloadBytes.slice(1 + PUBLIC_KEY_LENGTH, HEADER_LENGTH);\n const ciphertextAndTag = payloadBytes.slice(HEADER_LENGTH);\n\n if (ciphertextAndTag.length < TAG_LENGTH) {\n throw new Error('Payload too short for tag');\n }\n\n // Import keys\n const privateKey = await importPrivateKey(privateKeyBase64);\n const ephemeralPublicKey = await subtle.importKey('raw', bs(ephemeralPubKeyRaw), EC_ALGORITHM, true, []);\n\n // Recipient public key bytes for HKDF info\n const recipientPubKeyRaw = base64ToUint8(publicKeyBase64);\n\n // ECDH: recipient private × ephemeral public → shared secret\n const sharedSecretBits = await subtle.deriveBits(\n { name: 'ECDH', public: ephemeralPublicKey },\n privateKey,\n 256,\n );\n const sharedSecret = new Uint8Array(sharedSecretBits);\n\n // HKDF-SHA256 → AES-256 key (must match encrypt side)\n const info = concatBuffers(ephemeralPubKeyRaw, recipientPubKeyRaw);\n const aesKey = await hkdfSha256(sharedSecret, HKDF_SALT, info, 32);\n\n // AES-256-GCM decrypt\n // Web Crypto expects ciphertext + tag concatenated\n const cryptoKey = await subtle.importKey('raw', bs(aesKey), 'AES-GCM', false, ['decrypt']);\n try {\n const decrypted = await subtle.decrypt(\n { name: 'AES-GCM', iv: bs(nonce), tagLength: TAG_LENGTH * 8 },\n cryptoKey,\n bs(ciphertextAndTag), // already ciphertext || tag\n );\n return new TextDecoder().decode(decrypted);\n } catch (err) {\n throw new Error(\n 'Unable to decrypt value',\n { cause: err },\n );\n }\n}\n","/**\n * File-based local encryption backend.\n *\n * Stores P-256 ECDH key pairs as JSON files on disk with restricted permissions.\n * Uses the pure JS ECIES implementation for all crypto operations.\n * Works on all platforms — no native binary required.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { getUserVarlockDir } from '../user-config-dir';\nimport { createKeyPair, encrypt, decrypt } from './crypto';\n\nconst KEY_STORE_SUBDIR = 'local-encrypt/keys';\nconst DEFAULT_KEY_ID = 'varlock-default';\n\ninterface StoredKeyPair {\n keyId: string;\n publicKey: string;\n privateKey: string;\n protectedPrivateKey?: string;\n protection?: 'none' | string;\n createdAt: string;\n}\n\nfunction getKeyStorePath(): string {\n return path.join(getUserVarlockDir(), KEY_STORE_SUBDIR);\n}\n\nfunction getKeyFilePath(keyId: string): string {\n return path.join(getKeyStorePath(), `${keyId}.json`);\n}\n\n// ── Key management ─────────────────────────────────────────────────────\n\nexport function keyExists(keyId: string = DEFAULT_KEY_ID): boolean {\n return fs.existsSync(getKeyFilePath(keyId));\n}\n\nexport async function generateKey(keyId: string = DEFAULT_KEY_ID): Promise<{ keyId: string; publicKey: string }> {\n const keyPair = await createKeyPair();\n\n const stored: StoredKeyPair = {\n keyId,\n publicKey: keyPair.publicKey,\n privateKey: keyPair.privateKey,\n createdAt: new Date().toISOString(),\n };\n\n const keyStorePath = getKeyStorePath();\n fs.mkdirSync(keyStorePath, { recursive: true });\n\n const filePath = getKeyFilePath(keyId);\n fs.writeFileSync(filePath, JSON.stringify(stored, null, 2), { mode: 0o600 });\n\n return { keyId, publicKey: keyPair.publicKey };\n}\n\nexport function deleteKey(keyId: string = DEFAULT_KEY_ID): boolean {\n const filePath = getKeyFilePath(keyId);\n try {\n fs.unlinkSync(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function listKeys(): Array<string> {\n const keyStorePath = getKeyStorePath();\n try {\n return fs.readdirSync(keyStorePath)\n .filter((f) => f.endsWith('.json'))\n .map((f) => f.slice(0, -5));\n } catch {\n return [];\n }\n}\n\n// ── Internal key loading ───────────────────────────────────────────────\n\nfunction loadKeyPair(keyId: string): StoredKeyPair {\n const filePath = getKeyFilePath(keyId);\n if (!fs.existsSync(filePath)) {\n throw new Error(`Key not found: ${keyId}`);\n }\n const data = fs.readFileSync(filePath, 'utf-8');\n const parsed = JSON.parse(data) as Partial<StoredKeyPair>;\n\n // Back-compat: older key files store private material under\n // `protectedPrivateKey` with `protection: \"none\"`.\n const privateKey = parsed.privateKey\n ?? (parsed.protection === 'none' ? parsed.protectedPrivateKey : undefined)\n ?? parsed.protectedPrivateKey;\n\n if (!parsed.publicKey || !privateKey) {\n throw new Error(`Invalid key file format for key: ${keyId}`);\n }\n\n return {\n keyId: parsed.keyId || keyId,\n publicKey: parsed.publicKey,\n privateKey,\n createdAt: parsed.createdAt || new Date().toISOString(),\n protection: parsed.protection,\n protectedPrivateKey: parsed.protectedPrivateKey,\n };\n}\n\nfunction getPublicKey(keyId: string): string {\n return loadKeyPair(keyId).publicKey;\n}\n\n// ── Encrypt / Decrypt ──────────────────────────────────────────────────\n\nexport async function encryptValue(plaintext: string, keyId: string = DEFAULT_KEY_ID): Promise<string> {\n const publicKey = getPublicKey(keyId);\n return encrypt(publicKey, plaintext);\n}\n\nexport async function decryptValue(ciphertext: string, keyId: string = DEFAULT_KEY_ID): Promise<string> {\n const stored = loadKeyPair(keyId);\n return decrypt(stored.privateKey, stored.publicKey, ciphertext);\n}\n","/**\n * Cross-platform local encryption for varlock.\n *\n * Provides a unified API for encrypting/decrypting secrets using the best\n * available backend on the current platform:\n *\n * 1. macOS Secure Enclave (Swift binary) — hardware-backed, Touch ID\n * 2. Windows TPM/Hello (Rust binary) — hardware-backed, Windows Hello (TODO)\n * 3. Linux TPM2 (Rust binary) — hardware-backed (TODO)\n * 4. File-based (pure JS) — universal fallback, no native binary needed\n */\n\nimport { execFileSync, spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport { resolveNativeBinary } from './binary-resolver';\nimport { DaemonClient } from './daemon-client';\nimport * as fileBackend from './file-backend';\nimport { isWSL } from './wsl-detect';\nimport type { BackendInfo, BackendType, NativeStatusResult } from './types';\n\nexport type { BackendInfo, BackendType } from './types';\n\nconst DEFAULT_KEY_ID = 'varlock-default';\n\n/** Debug logger — prints to stderr when VARLOCK_DEBUG is set */\nfunction debug(msg: string) {\n if (process.env.VARLOCK_DEBUG) {\n process.stderr.write(`[varlock:local-encrypt] ${msg}\\n`);\n }\n}\n\n/**\n * Get a TTY identifier for session scoping.\n * Reads the controlling terminal from /proc/self/fd/0 or falls back to PID.\n */\nlet _cachedTtyId: string | undefined;\nfunction getSelfTtyId(): string {\n if (_cachedTtyId) return _cachedTtyId;\n try {\n const ttyPath = fs.readlinkSync('/proc/self/fd/0');\n if (ttyPath && ttyPath.startsWith('/dev/')) {\n _cachedTtyId = ttyPath;\n return ttyPath;\n }\n } catch {\n // Not available\n }\n _cachedTtyId = `pid:${process.pid}`;\n return _cachedTtyId;\n}\n\nlet _wslDaemonPrestartAttempted = false;\n\nfunction toWindowsPathFromWsl(pathInWsl: string): string | undefined {\n if (!isWSL()) return undefined;\n try {\n return execFileSync('wslpath', ['-w', pathInWsl], {\n encoding: 'utf-8',\n timeout: 10_000,\n }).trim();\n } catch (err) {\n debug(`toWindowsPathFromWsl failed: ${err instanceof Error ? err.message : err}`);\n return undefined;\n }\n}\n\nfunction tryPrestartWindowsDaemonFromWsl(binaryPath: string): boolean {\n if (_wslDaemonPrestartAttempted) {\n return true;\n }\n\n const windowsPath = toWindowsPathFromWsl(binaryPath);\n if (!windowsPath) {\n return false;\n }\n\n // Ask native PowerShell to seed the daemon in the interactive desktop\n // session. This returns quickly; the follow-up decrypt call has a longer\n // timeout and the helper's own daemon retry path to absorb startup latency.\n const escapedPath = windowsPath.replaceAll(\"'\", \"''\");\n const psScript = `Start-Process -WindowStyle Hidden -FilePath '${escapedPath}' -ArgumentList 'start-daemon'`;\n const proc = spawnSync('powershell.exe', [\n '-NoProfile',\n '-NonInteractive',\n '-ExecutionPolicy',\n 'Bypass',\n '-Command',\n psScript,\n ], {\n encoding: 'utf-8',\n timeout: 20_000,\n });\n\n if (proc.error) {\n debug(`tryPrestartWindowsDaemonFromWsl: powershell error: ${proc.error.message}`);\n return false;\n }\n if (proc.status !== 0) {\n debug(`tryPrestartWindowsDaemonFromWsl: powershell exit ${proc.status}: ${(proc.stderr || proc.stdout || '').trim()}`);\n return false;\n }\n\n debug('tryPrestartWindowsDaemonFromWsl: start-daemon invoked via PowerShell');\n _wslDaemonPrestartAttempted = true;\n return true;\n}\n\nfunction pingWindowsDaemonFromWsl(binaryPath: string, timeoutMs: number = 2_000): boolean {\n const proc = spawnSync(binaryPath, ['ping-daemon'], {\n encoding: 'utf-8',\n timeout: timeoutMs,\n });\n\n if (proc.error || proc.status !== 0) {\n return false;\n }\n\n try {\n const parsed = JSON.parse((proc.stdout || '').trim()) as { ready?: boolean };\n return parsed.ready === true;\n } catch {\n return false;\n }\n}\n\nfunction waitForWindowsDaemonFromWsl(binaryPath: string, timeoutMs: number = 12_000): boolean {\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() < deadline) {\n if (pingWindowsDaemonFromWsl(binaryPath)) {\n debug('waitForWindowsDaemonFromWsl: daemon is ready');\n return true;\n }\n\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 150);\n }\n\n debug('waitForWindowsDaemonFromWsl: timed out waiting for daemon readiness');\n return false;\n}\n\n// ── Native binary one-shot commands ────────────────────────────────────\n\nfunction runNativeBinary(args: Array<string>, opts?: { timeout?: number }): string {\n const binaryPath = resolveNativeBinary();\n if (!binaryPath) {\n debug('runNativeBinary: no binary found');\n throw new Error('Native binary not found');\n }\n debug(`runNativeBinary: ${binaryPath} ${args.join(' ')}`);\n const output = execFileSync(binaryPath, args, {\n encoding: 'utf-8',\n timeout: opts?.timeout ?? 30_000,\n }).trim();\n debug(`runNativeBinary result: ${output.slice(0, 200)}`);\n return output;\n}\n\nfunction runNativeBinaryJson<T = Record<string, unknown>>(args: Array<string>, opts?: { timeout?: number }): T {\n const output = runNativeBinary(args, opts);\n const parsed = JSON.parse(output);\n if (parsed.error) {\n throw new Error(parsed.error);\n }\n return parsed as T;\n}\n\n// ── Backend detection ──────────────────────────────────────────────────\n\nlet cachedBackendInfo: BackendInfo | undefined;\n/** Keys reported by the status command — avoids a separate key-exists .exe spawn on WSL2 */\nlet cachedStatusKeys: Array<string> | undefined;\n\nfunction detectBackendType(): { type: BackendType; isFileFallback: boolean } {\n const binaryPath = resolveNativeBinary();\n debug(`detectBackendType: binaryPath=${binaryPath ?? 'NOT FOUND'}, isWSL=${isWSL()}, platform=${process.platform}`);\n if (!binaryPath) {\n // All supported platforms (macOS, Windows, Linux, WSL2) should have a native binary\n const isFileFallback = ['darwin', 'win32', 'linux'].includes(process.platform);\n return { type: 'file', isFileFallback };\n }\n\n // WSL2 uses the Windows binary for DPAPI + Windows Hello\n if (isWSL()) return { type: 'windows-tpm', isFileFallback: false };\n\n switch (process.platform) {\n case 'darwin': return { type: 'secure-enclave', isFileFallback: false };\n case 'win32': return { type: 'windows-tpm', isFileFallback: false };\n case 'linux': return { type: 'linux-tpm', isFileFallback: false };\n default: return { type: 'file', isFileFallback: false };\n }\n}\n\n/** Get information about the active encryption backend. */\nexport function getBackendInfo(): BackendInfo {\n if (cachedBackendInfo) return cachedBackendInfo;\n\n const { type, isFileFallback } = detectBackendType();\n const binaryPath = type !== 'file' ? resolveNativeBinary() : undefined;\n\n if (type !== 'file' && binaryPath) {\n // Query the native binary for its actual capabilities\n try {\n const status = runNativeBinaryJson<NativeStatusResult>(['status']);\n debug(`getBackendInfo: status result: hardwareBacked=${status.hardwareBacked}, biometricAvailable=${status.biometricAvailable}, backend=${status.backend}, keys=${status.keys?.join(',')}`);\n cachedStatusKeys = status.keys;\n cachedBackendInfo = {\n type,\n platform: process.platform,\n hardwareBacked: status.hardwareBacked,\n biometricAvailable: status.biometricAvailable,\n binaryPath,\n };\n } catch (err) {\n // Binary failed — fall back to reasonable defaults\n debug(`getBackendInfo: status command failed: ${err instanceof Error ? err.message : err}`);\n cachedBackendInfo = {\n type,\n platform: process.platform,\n hardwareBacked: type === 'secure-enclave',\n biometricAvailable: type === 'secure-enclave',\n binaryPath,\n };\n }\n } else {\n debug(`getBackendInfo: using file backend (type=${type}, binaryPath=${binaryPath ?? 'none'}, isFileFallback=${isFileFallback})`);\n if (isFileFallback && !process.env._VARLOCK_FORCE_FILE_ENCRYPTION_FALLBACK) {\n process.stderr.write(\n '[varlock] Warning: native encryption binary not found, falling back to file-based encryption (not hardware-backed)\\n',\n );\n }\n cachedBackendInfo = {\n type,\n platform: process.platform,\n hardwareBacked: false,\n biometricAvailable: false,\n binaryPath: undefined,\n isFileFallback,\n };\n }\n\n debug(`getBackendInfo: final result: type=${cachedBackendInfo!.type}, biometric=${cachedBackendInfo!.biometricAvailable}, hwBacked=${cachedBackendInfo!.hardwareBacked}`);\n return cachedBackendInfo!;\n}\n\n// ── Daemon client (singleton for biometric-enabled backends) ───────────\n\nlet daemonClient: DaemonClient | undefined;\n\nexport function getDaemonClient(): DaemonClient {\n daemonClient ||= new DaemonClient();\n return daemonClient;\n}\n\n// ── Key management ─────────────────────────────────────────────────────\n\n/** Check if a key exists. */\nexport function keyExists(keyId: string = DEFAULT_KEY_ID): boolean {\n const backend = getBackendInfo();\n if (backend.type === 'file') {\n return fileBackend.keyExists(keyId);\n }\n // Use cached keys from status command to avoid an extra .exe spawn (significant on WSL2)\n if (cachedStatusKeys) {\n debug(`keyExists: using cached status keys for ${keyId}`);\n return cachedStatusKeys.includes(keyId);\n }\n const result = runNativeBinaryJson<{ exists: boolean }>(['key-exists', '--key-id', keyId]);\n return result.exists;\n}\n\n/** Generate a new encryption key. */\nexport async function generateKey(keyId: string = DEFAULT_KEY_ID): Promise<{ keyId: string; publicKey: string }> {\n const backend = getBackendInfo();\n if (backend.type === 'file') {\n return fileBackend.generateKey(keyId);\n }\n return runNativeBinaryJson<{ keyId: string; publicKey: string }>(['generate-key', '--key-id', keyId]);\n}\n\n/** Ensure a key exists, generating one if necessary. */\nexport async function ensureKey(keyId: string = DEFAULT_KEY_ID): Promise<void> {\n if (!keyExists(keyId)) {\n await generateKey(keyId);\n }\n}\n\n// ── Encrypt / Decrypt ──────────────────────────────────────────────────\n\n/**\n * Encrypt a plaintext value.\n *\n * For hardware-backed backends, encryption uses the public key only (no biometric needed).\n * For file-based backend, uses the pure JS ECIES implementation.\n */\nexport async function encryptValue(plaintext: string, keyId: string = DEFAULT_KEY_ID): Promise<string> {\n const backend = getBackendInfo();\n if (backend.type === 'file') {\n return fileBackend.encryptValue(plaintext, keyId);\n }\n // Native binary encrypt (one-shot, no biometric needed for encrypt)\n const b64Input = Buffer.from(plaintext, 'utf-8').toString('base64');\n if (isWSL()) {\n // On WSL2, pass data via stdin to avoid arg mangling across the WSL/Windows boundary\n const binaryPath = resolveNativeBinary();\n if (!binaryPath) throw new Error('Native binary not found');\n const proc = spawnSync(binaryPath, ['encrypt', '--key-id', keyId, '--data-stdin'], {\n input: b64Input,\n encoding: 'utf-8',\n timeout: 30_000,\n });\n if (proc.error) throw proc.error;\n const result = JSON.parse(proc.stdout.trim());\n if (result.error) throw new Error(result.error);\n return result.ciphertext;\n }\n const result = runNativeBinaryJson<{ ciphertext: string }>(['encrypt', '--key-id', keyId, '--data', b64Input]);\n return result.ciphertext;\n}\n\n/**\n * Decrypt a ciphertext value.\n *\n * For biometric-enabled backends (macOS Secure Enclave, Windows Hello),\n * uses the daemon client for session caching (avoids repeated biometric prompts).\n * For file-based backend, uses the pure JS ECIES implementation.\n */\nexport async function decryptValue(ciphertext: string, keyId: string = DEFAULT_KEY_ID): Promise<string> {\n const backend = getBackendInfo();\n if (backend.type === 'file') {\n debug('decryptValue: using file backend');\n return fileBackend.decryptValue(ciphertext, keyId);\n }\n\n // Use daemon client for biometric backends (session caching)\n // In WSL2, the .exe handles daemon management internally via --via-daemon\n if (backend.biometricAvailable) {\n if (isWSL()) {\n debug('decryptValue: WSL2 biometric decrypt via --via-daemon');\n const binaryPath = resolveNativeBinary();\n if (!binaryPath) throw new Error('Native binary not found');\n const daemonAlreadyReady = pingWindowsDaemonFromWsl(binaryPath, 1_500);\n const daemonPrestarted = daemonAlreadyReady || tryPrestartWindowsDaemonFromWsl(binaryPath);\n if (!daemonAlreadyReady && daemonPrestarted) {\n waitForWindowsDaemonFromWsl(binaryPath);\n }\n // Use spawnSync with stdin to avoid exposing ciphertext or session\n // identity in process listings (visible via tasklist/procfs).\n // Stdin JSON includes both the data and the TTY ID for session scoping.\n const stdinPayload = JSON.stringify({\n data: ciphertext,\n ttyId: getSelfTtyId(),\n });\n const runViaDaemon = (timeout: number) => spawnSync(binaryPath, ['decrypt', '--key-id', keyId, '--data-stdin', '--via-daemon'], {\n input: stdinPayload,\n encoding: 'utf-8',\n timeout,\n });\n\n let proc = runViaDaemon(daemonPrestarted ? 120_000 : 60_000);\n\n const output = (proc.stdout || proc.stderr || '').trim();\n const timedOut = proc.error && (proc.error as NodeJS.ErrnoException).code === 'ETIMEDOUT';\n const needsRetry = Boolean(proc.error) || proc.status !== 0;\n const likelyDaemonStartupIssue = timedOut\n || /daemon is not running|daemon did not become ready within timeout|schtasks|windows hello daemon/i.test(output);\n\n if (needsRetry && likelyDaemonStartupIssue) {\n debug(`decryptValue: via-daemon startup issue detected; attempting native start-daemon bridge. output=${output.slice(0, 180)}`);\n if (tryPrestartWindowsDaemonFromWsl(binaryPath)) {\n // Give the daemon a little more room on first auth after bridge start.\n proc = runViaDaemon(120_000);\n }\n }\n\n if (proc.error) throw proc.error;\n if (proc.status !== 0) {\n const finalOutput = (proc.stdout || proc.stderr || '').trim();\n try {\n const parsed = JSON.parse(finalOutput);\n if (parsed.error) throw new Error(parsed.error);\n } catch { /* not JSON */ }\n\n const windowsPath = toWindowsPathFromWsl(binaryPath);\n const setupHint = windowsPath\n ? `\\nHint: In native Windows PowerShell run:\\n Start-Process -WindowStyle Hidden \"${windowsPath}\" start-daemon`\n : '';\n throw new Error(`Decrypt failed (exit ${proc.status}): ${finalOutput}${setupHint}`);\n }\n\n const result = JSON.parse(proc.stdout.trim());\n if (result.error) throw new Error(result.error);\n debug(`decryptValue: WSL2 result: ${proc.stdout.trim().slice(0, 100)}`);\n return result.plaintext;\n }\n debug('decryptValue: biometric decrypt via daemon client');\n const client = getDaemonClient();\n return client.decrypt(ciphertext, keyId);\n }\n\n // Non-biometric native backend (e.g., Linux TPM without polkit) — one-shot\n debug('decryptValue: non-biometric one-shot decrypt');\n const result = runNativeBinaryJson<{ plaintext: string }>(['decrypt', '--key-id', keyId, '--data', ciphertext]);\n return result.plaintext;\n}\n\n/**\n * Invalidate the biometric session, requiring re-authentication for next decrypt.\n * Connects to the running daemon without spawning one (varlock lock runs in a separate process).\n */\nexport async function lockSession(): Promise<void> {\n const backend = getBackendInfo();\n if (!backend.biometricAvailable) return;\n const client = getDaemonClient();\n const connected = await client.tryConnect();\n if (!connected) {\n throw new Error('No encryption daemon is running');\n }\n await client.invalidateSession();\n}\n","/**\n * Shared utilities for writing back encrypted/resolved values to .env files.\n *\n * Uses the env-spec AST parser to safely update values.\n */\n\nimport fs from 'node:fs';\nimport { parseEnvSpecDotEnvFile } from '@env-spec/parser';\n\ntype WriteBackResult = { updated: boolean; reason?: 'missing-source-file' | 'item-not-found' };\n\n/**\n * Update a config item's value in a .env file using AST-based replacement.\n */\nexport function writeBackValue(\n itemKey: string,\n newValueStr: string,\n sourceFilePath: string | undefined,\n): WriteBackResult {\n if (!sourceFilePath) {\n return { updated: false, reason: 'missing-source-file' };\n }\n\n const currentContents = fs.readFileSync(sourceFilePath, 'utf-8');\n const file = parseEnvSpecDotEnvFile(currentContents);\n\n const item = file.configItems.find((i) => i.key === itemKey);\n if (!item) {\n return { updated: false, reason: 'item-not-found' };\n }\n\n // Parse a dummy line to get the correct AST value node\n const dummyFile = parseEnvSpecDotEnvFile(`_=${newValueStr}`);\n const dummyItem = dummyFile.configItems[0];\n if (!dummyItem?.value) {\n return { updated: false, reason: 'item-not-found' };\n }\n\n // Replace the value\n item.data.value = dummyItem.value;\n item.value = dummyItem.value;\n\n fs.writeFileSync(sourceFilePath, file.toString());\n return { updated: true };\n}\n\n","/**\n * Built-in varlock() resolver function.\n *\n * Replaces the plugin-based resolver from @varlock/secure-enclave-plugin.\n * Works cross-platform using the local-encrypt abstraction layer.\n */\n\nimport { createResolver, Resolver } from '../../env-graph/lib/resolver';\nimport { ResolutionError, SchemaError } from '../../env-graph/lib/errors';\nimport prompts from '../../cli/helpers/prompts';\nimport * as localEncrypt from './index';\nimport { writeBackValue } from './write-back';\n\nconst LOCAL_PREFIX = 'local:';\nconst PLUGIN_ICON = 'mdi:fingerprint';\n\n// ── Unified varlock() batch queue ──────────────────────────────\n// Collects all concurrent varlock() calls (both prompt and decrypt) into a\n// single batch using setImmediate, then processes them sequentially.\n// Prompts are sorted first so the user enters values before biometric decrypts.\n// If the user cancels a prompt or biometric auth, all remaining items in the\n// batch are rejected immediately.\n\ntype VarlockBatchEntry = {\n kind: 'prompt' | 'decrypt';\n resolve: (value: string) => void;\n reject: (reason: unknown) => void;\n} & (\n | { kind: 'decrypt'; ciphertext: string }\n | { kind: 'prompt'; execute: () => Promise<string> }\n);\n\nlet pendingBatch: Array<VarlockBatchEntry> | undefined;\n\nfunction enqueueBatchEntry(entry: VarlockBatchEntry) {\n let triggerBatch = false;\n if (!pendingBatch) {\n pendingBatch = [];\n triggerBatch = true;\n }\n pendingBatch.push(entry);\n\n if (triggerBatch) {\n // eslint-disable-next-line no-use-before-define\n setImmediate(() => executeBatch());\n }\n}\n\nfunction enqueueDecrypt(ciphertext: string): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n enqueueBatchEntry({\n kind: 'decrypt', ciphertext, resolve, reject,\n });\n });\n}\n\nfunction enqueuePrompt(execute: () => Promise<string>): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n enqueueBatchEntry({\n kind: 'prompt', execute, resolve, reject,\n });\n });\n}\n\nfunction bailRemaining(batch: Array<VarlockBatchEntry>, startIndex: number, error: Error) {\n for (let j = startIndex; j < batch.length; j++) {\n batch[j].reject(error);\n }\n}\n\nasync function executeBatch() {\n const batch = pendingBatch;\n pendingBatch = undefined;\n if (!batch?.length) return;\n\n // Sort prompts before decrypts so the user enters values first\n batch.sort((a, b) => {\n if (a.kind === b.kind) return 0;\n return a.kind === 'prompt' ? -1 : 1;\n });\n\n // Ensure encryption key exists before processing any items\n await localEncrypt.ensureKey();\n\n for (let i = 0; i < batch.length; i++) {\n const entry = batch[i];\n try {\n if (entry.kind === 'decrypt') {\n const plaintext = await localEncrypt.decryptValue(entry.ciphertext);\n entry.resolve(plaintext);\n } else {\n const result = await entry.execute();\n entry.resolve(result);\n }\n } catch (err) {\n entry.reject(err);\n\n // If this looks like a user cancellation or auth failure, bail on remaining items\n const msg = err instanceof Error ? err.message : String(err);\n if (\n msg.includes('cancelled') || msg.includes('canceled')\n || msg.includes('verification failed')\n ) {\n bailRemaining(batch, i + 1, new ResolutionError('Skipped — user cancelled'));\n return;\n }\n }\n }\n}\n\ntype VarlockResolverState = {\n mode: 'decrypt';\n payload: string;\n} | {\n mode: 'prompt';\n itemKey: string;\n sourceFilePath: string | undefined;\n};\n\nfunction writeBackEncryptedValue(\n itemKey: string,\n ciphertext: string,\n sourceFilePath: string | undefined,\n) {\n const prefixedCiphertext = `${LOCAL_PREFIX}${ciphertext}`;\n return writeBackValue(itemKey, `varlock(\"${prefixedCiphertext}\")`, sourceFilePath);\n}\n\n\nexport const VarlockResolver: typeof Resolver = createResolver<VarlockResolverState>({\n name: 'varlock',\n label: 'Decrypt locally encrypted value',\n icon: PLUGIN_ICON,\n impliesSensitive: true,\n argsSchema: {\n type: 'mixed',\n arrayMinLength: 0,\n },\n process(): VarlockResolverState {\n // Check for prompt mode: varlock(prompt=1) or varlock(prompt)\n const promptArg = this.objArgs?.prompt;\n const isPromptPositional = this.arrArgs?.length === 1\n && this.arrArgs[0]?.isStatic\n && this.arrArgs[0].staticValue === 'prompt';\n if (promptArg || isPromptPositional) {\n // Resolver doesn't expose parent item in its type, but it's available at runtime\n const parent = (this as any).parent;\n const itemKey = parent?.key || 'unknown';\n const dataSource = this.dataSource as any;\n const sourceFilePath = dataSource?.fullPath as string | undefined;\n return { mode: 'prompt', itemKey, sourceFilePath };\n }\n\n // Normal mode: varlock(\"encrypted-payload\")\n if (!this.arrArgs || this.arrArgs.length !== 1) {\n throw new SchemaError('varlock() expects a single encrypted payload string, or prompt to enter a new value');\n }\n if (!this.arrArgs[0]?.isStatic) {\n throw new SchemaError('varlock() expects a single static encrypted payload string');\n }\n const payload = this.arrArgs[0].staticValue;\n if (typeof payload !== 'string') {\n throw new SchemaError('varlock() expects a string argument');\n }\n return { mode: 'decrypt', payload };\n },\n async resolve(state: VarlockResolverState) {\n if (state.mode === 'decrypt') {\n let ciphertext = state.payload;\n if (ciphertext.startsWith(LOCAL_PREFIX)) {\n ciphertext = ciphertext.slice(LOCAL_PREFIX.length);\n }\n try {\n return await enqueueDecrypt(ciphertext);\n } catch (err) {\n // Re-throw ResolutionErrors (e.g. batch cancellation) as-is\n if (err instanceof ResolutionError) throw err;\n\n const backend = localEncrypt.getBackendInfo();\n throw new ResolutionError(\n `Decryption failed: ${err instanceof Error ? err.message : err}`,\n {\n tip: [\n `Backend: ${backend.type} (${backend.hardwareBacked ? 'hardware-backed' : 'file-based'})`,\n 'This usually means the value was encrypted with a different key or backend.',\n 'Set a new value using `varlock encrypt` or `KEY=varlock(prompt)`.',\n ].join('\\n'),\n },\n );\n }\n }\n\n // Prompt mode: enqueued into the unified batch so prompts run before decrypts\n // and cancellation propagates to all remaining items.\n const { itemKey, sourceFilePath } = state;\n return enqueuePrompt(async () => {\n const backend = localEncrypt.getBackendInfo();\n\n // Use daemon's native dialog on macOS Secure Enclave\n if (backend.type === 'secure-enclave' && backend.biometricAvailable) {\n const client = localEncrypt.getDaemonClient();\n const ciphertext = await client.promptSecret({\n itemKey,\n message: `Enter the secret value for ${itemKey}:`,\n });\n\n if (!ciphertext) {\n throw new ResolutionError('Secret input was cancelled', {\n tip: 'Run varlock again and enter a value, or replace prompt=1 with an encrypted value',\n });\n }\n\n const writeBackResult = writeBackEncryptedValue(itemKey, ciphertext, sourceFilePath);\n if (!writeBackResult.updated) {\n if (writeBackResult.reason === 'missing-source-file') {\n throw new ResolutionError(`Unable to persist encrypted value for ${itemKey}`, {\n tip: 'varlock(prompt=1) can only persist values from file-backed sources. Use `varlock encrypt` to generate an encrypted value manually.',\n });\n }\n\n throw new ResolutionError(`Unable to persist encrypted value for ${itemKey}`, {\n tip: `Could not find a writable \\`${itemKey}=varlock(...)\\` entry to update in ${sourceFilePath}.`,\n });\n }\n\n return localEncrypt.decryptValue(ciphertext);\n }\n\n // Terminal prompt for file-based backend\n if (!process.stdout.isTTY || !process.stdin.isTTY) {\n throw new ResolutionError(\n `No encrypted value found for ${itemKey}`,\n {\n tip: `Run \\`varlock encrypt --file ${sourceFilePath || '<your-env-file>'}\\` to encrypt this value interactively.`,\n },\n );\n }\n\n const rawValue = await prompts.password({ message: `Enter the secret value for ${itemKey}:`, hint: 'for multi-line values, use `varlock encrypt`' });\n const isCanceled = typeof rawValue !== 'string';\n if (isCanceled || !rawValue) {\n throw new ResolutionError('Secret input was cancelled', {\n tip: 'Run varlock again and enter a value, or replace prompt=1 with an encrypted value',\n });\n }\n\n const ciphertext = await localEncrypt.encryptValue(rawValue);\n const writeBackResult = writeBackEncryptedValue(itemKey, ciphertext, sourceFilePath);\n\n if (!writeBackResult.updated) {\n if (writeBackResult.reason === 'missing-source-file') {\n throw new ResolutionError(`Unable to persist encrypted value for ${itemKey}`, {\n tip: 'varlock(prompt=1) can only persist values from file-backed sources. Use `varlock encrypt` to generate an encrypted value manually.',\n });\n }\n\n throw new ResolutionError(`Unable to persist encrypted value for ${itemKey}`, {\n tip: `Could not find a writable \\`${itemKey}=varlock(...)\\` entry to update in ${sourceFilePath}.`,\n });\n }\n\n return rawValue;\n });\n },\n});\n","/**\n * Built-in keychain() resolver function.\n *\n * Reads secrets from the macOS Keychain via the Swift daemon binary.\n * Always goes through the daemon to enforce biometric gating (per-TTY sessions)\n * and to make VarlockEnclave the authorized keychain accessor.\n *\n * Syntax:\n * keychain(service=\"com.company.db\")\n * keychain(service=\"com.company.db\", account=\"admin\")\n * keychain(service=\"com.company.db\", keychain=\"System\")\n * keychain(\"com.company.db\") — shorthand for service\n * keychain(prompt) — interactive picker, writes back reference\n */\n\nimport { createResolver, Resolver } from '../../env-graph/lib/resolver';\nimport { ResolutionError, SchemaError } from '../../env-graph/lib/errors';\nimport { getDaemonClient } from './index';\nimport { writeBackValue } from './write-back';\n\ntype KeychainResolverState = {\n mode: 'get';\n service?: string;\n account?: string;\n keychain?: string;\n field?: string;\n} | {\n mode: 'prompt';\n itemKey: string;\n sourceFilePath: string | undefined;\n};\n\nfunction writeBackKeychainRef(\n itemKey: string,\n ref: { service: string; account?: string; keychain?: string },\n sourceFilePath: string | undefined,\n) {\n // Use positional shorthand when only service is needed, named args when disambiguating\n let argsStr: string;\n if (!ref.account && !ref.keychain) {\n argsStr = `\"${ref.service}\"`;\n } else {\n const parts: Array<string> = [`service=\"${ref.service}\"`];\n if (ref.account) parts.push(`account=\"${ref.account}\"`);\n if (ref.keychain) parts.push(`keychain=\"${ref.keychain}\"`);\n argsStr = parts.join(', ');\n }\n\n writeBackValue(itemKey, `keychain(${argsStr})`, sourceFilePath);\n}\n\nexport const KeychainResolver: typeof Resolver = createResolver<KeychainResolverState>({\n name: 'keychain',\n label: 'Read from macOS Keychain',\n icon: 'mdi:key-chain',\n impliesSensitive: true,\n argsSchema: {\n type: 'mixed',\n arrayMinLength: 0,\n },\n process(): KeychainResolverState {\n if (process.platform !== 'darwin') {\n throw new SchemaError('keychain() is only supported on macOS');\n }\n\n // Check for prompt mode: keychain(prompt) or keychain(prompt=1)\n const promptArg = this.objArgs?.prompt;\n const isPromptPositional = this.arrArgs?.length === 1\n && this.arrArgs[0]?.isStatic\n && this.arrArgs[0].staticValue === 'prompt';\n\n if (promptArg || isPromptPositional) {\n const parent = (this as any).parent;\n const itemKey = parent?.key || 'unknown';\n const dataSource = this.dataSource as any;\n const sourceFilePath = dataSource?.fullPath as string | undefined;\n return { mode: 'prompt', itemKey, sourceFilePath };\n }\n\n // Named args mode: keychain(service=\"...\", account=\"...\", keychain=\"...\", field=\"...\")\n const serviceArg = this.objArgs?.service;\n const accountArg = this.objArgs?.account;\n const keychainArg = this.objArgs?.keychain;\n const fieldArg = this.objArgs?.field;\n\n const account = accountArg?.isStatic ? accountArg.staticValue as string : undefined;\n const keychain = keychainArg?.isStatic ? keychainArg.staticValue as string : undefined;\n const field = fieldArg?.isStatic ? fieldArg.staticValue as string : undefined;\n\n if (serviceArg) {\n if (!serviceArg.isStatic || typeof serviceArg.staticValue !== 'string') {\n throw new SchemaError('keychain() service must be a static string');\n }\n return {\n mode: 'get', service: serviceArg.staticValue, account, keychain, field,\n };\n }\n\n // account-only lookup: keychain(account=\"admin@corp.com\", field=\"account\")\n if (accountArg) {\n return {\n mode: 'get', account, keychain, field,\n };\n }\n\n // Positional shorthand: keychain(\"com.company.service\")\n if (this.arrArgs?.length === 1 && this.arrArgs[0]?.isStatic) {\n const value = this.arrArgs[0].staticValue;\n if (typeof value !== 'string') {\n throw new SchemaError('keychain() expects a string service name');\n }\n return { mode: 'get', service: value, field };\n }\n\n throw new SchemaError(\n 'keychain() requires service name, account, or prompt mode. '\n + 'Usage: keychain(service=\"com.example\"), keychain(\"com.example\"), or keychain(prompt)',\n );\n },\n async resolve(state: KeychainResolverState) {\n const client = getDaemonClient();\n\n if (state.mode === 'get') {\n try {\n return await client.keychainGet({\n service: state.service,\n account: state.account,\n keychain: state.keychain,\n field: state.field,\n });\n } catch (err) {\n throw new ResolutionError(\n `Failed to read keychain item: ${err instanceof Error ? err.message : err}`,\n {\n tip: [\n state.service ? `Service: ${state.service}` : null,\n state.account ? `Account: ${state.account}` : null,\n state.keychain ? `Keychain: ${state.keychain}` : null,\n state.field ? `Field: ${state.field}` : null,\n 'Make sure the item exists in your Keychain and VarlockEnclave has access.',\n 'You can grant access via: keychain(prompt)',\n ].filter(Boolean).join('\\n'),\n },\n );\n }\n }\n\n // Prompt mode: show native picker, write back reference\n const { itemKey, sourceFilePath } = state;\n\n const selected = await client.keychainPick({ itemKey });\n if (!selected) {\n throw new ResolutionError('Keychain item selection was cancelled', {\n tip: 'Run varlock again and select an item, or use keychain(service=\"...\") with an explicit service name',\n });\n }\n\n writeBackKeychainRef(itemKey, selected, sourceFilePath);\n\n // Now fetch the actual value\n try {\n return await client.keychainGet({\n service: selected.service,\n account: selected.account,\n keychain: selected.keychain,\n });\n } catch (err) {\n throw new ResolutionError(\n `Selected keychain item but failed to read value: ${err instanceof Error ? err.message : err}`,\n {\n tip: 'The item reference has been written to your config. Try running varlock again.',\n },\n );\n }\n },\n});\n","import path from 'node:path';\nimport fs from 'node:fs';\n\nexport type VarlockPackageJsonConfig = {\n /** Path (or array of paths) to a specific .env file or directory to use as the entry point for loading */\n loadPath?: string | Array<string>;\n};\n\n/**\n * Reads varlock configuration from the `package.json` in `cwd`.\n * Returns undefined if no `package.json` exists or it has no `varlock` key.\n */\nexport function readVarlockPackageJsonConfig(opts?: { cwd?: string }): VarlockPackageJsonConfig | undefined {\n const cwd = opts?.cwd ?? process.cwd();\n const pkgPath = path.join(cwd, 'package.json');\n if (!fs.existsSync(pkgPath)) return undefined;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n if (pkg.varlock && typeof pkg.varlock === 'object') {\n return pkg.varlock as VarlockPackageJsonConfig;\n }\n } catch { /* ignore parse errors */ }\n return undefined;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadEnvGraph } from '../env-graph';\nimport { VarlockResolver } from './local-encrypt/builtin-resolver';\nimport { KeychainResolver } from './local-encrypt/keychain-resolver';\nimport { CliExitError } from '../cli/helpers/exit-error';\nimport { runWithWorkspaceInfo } from './workspace-utils';\nimport { readVarlockPackageJsonConfig } from './package-json-config';\nimport { createDebug } from './debug';\n\nconst debug = createDebug('varlock:load');\n\nfunction normalizePkgLoadPath(pkgLoadPath: string | Array<string>): Array<string> {\n if (Array.isArray(pkgLoadPath)) return pkgLoadPath;\n return [pkgLoadPath];\n}\n\nfunction loadFromPaths(\n rawPaths: Array<string>,\n config: {\n source: string,\n errorPrefix: string,\n errorSuggestion: string,\n currentEnvFallback?: string,\n },\n) {\n const resolvedPaths = rawPaths.map((p) => path.resolve(p));\n\n if (resolvedPaths.length === 1) {\n debug('using path from %s: %s', config.source, resolvedPaths[0]);\n } else {\n debug('using %d paths from %s: %s', resolvedPaths.length, config.source, resolvedPaths.join(', '));\n }\n\n for (const resolvedPath of resolvedPaths) {\n if (!fs.existsSync(resolvedPath)) {\n throw new CliExitError(`${config.errorPrefix}: ${resolvedPath}`, {\n suggestion: config.errorSuggestion,\n });\n }\n }\n\n return runWithWorkspaceInfo(() => loadEnvGraph({\n currentEnvFallback: config.currentEnvFallback,\n entryFilePaths: resolvedPaths,\n afterInit: async (g) => {\n g.registerResolver(VarlockResolver);\n g.registerResolver(KeychainResolver);\n },\n }));\n}\n\nexport function loadVarlockEnvGraph(opts?: {\n currentEnvFallback?: string,\n /** Explicit entry file paths from --path flag(s) - overrides package.json config */\n entryFilePaths?: Array<string>,\n}) {\n const cliPaths = opts?.entryFilePaths?.filter(Boolean);\n\n // If --path flag(s) provided, they take precedence over package.json config\n if (cliPaths && cliPaths.length > 0) {\n // Return early and ignore pkgLoadPaths\n return loadFromPaths(cliPaths, {\n source: '--path flag',\n errorPrefix: 'The --path value does not exist',\n errorSuggestion: 'Use `--path` to specify a valid file or directory.',\n currentEnvFallback: opts?.currentEnvFallback,\n });\n }\n\n // Fall back to package.json varlock.loadPath\n const pkgLoadPath = readVarlockPackageJsonConfig()?.loadPath;\n const pkgLoadPaths = pkgLoadPath ? normalizePkgLoadPath(pkgLoadPath) : undefined;\n\n if (pkgLoadPaths) {\n return loadFromPaths(pkgLoadPaths, {\n source: 'package.json varlock.loadPath',\n errorPrefix: 'A path in `varlock.loadPath` configured in package.json does not exist',\n errorSuggestion: 'Update `varlock.loadPath` in your package.json to point to valid files or directories.',\n currentEnvFallback: opts?.currentEnvFallback,\n });\n }\n\n debug('no path configured, using cwd: %s', process.cwd());\n\n return runWithWorkspaceInfo(() => loadEnvGraph({\n currentEnvFallback: opts?.currentEnvFallback,\n afterInit: async (g) => {\n g.registerResolver(VarlockResolver);\n g.registerResolver(KeychainResolver);\n },\n }));\n}\n","/* eslint-disable func-names, no-console, prefer-rest-params */\n\nimport { redactSensitiveConfig, varlockSettings } from './env';\nimport { debug } from './lib/debug';\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 * */\nexport function patchGlobalConsole() {\n debug('⚡️ PATCHING global console methods');\n if ((console.log as any)._varlockPatchedFn) {\n debug('> already patched');\n return;\n }\n if (varlockSettings.redactLogs === false) {\n debug('> disabled by settings');\n return;\n }\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 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\n for (const logMethodName of ['trace', 'debug', 'info', 'log', 'info', 'warn', 'error']) {\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(redactSensitiveConfig));\n };\n patchedFn._varlockPatchedFn = true;\n\n // @ts-ignore\n globalThis.console[logMethodName] = patchedFn;\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 * */\nexport function unpatchGlobalConsole() {\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","import { checkForConfigErrors } from './cli/helpers/error-checks';\nimport { loadVarlockEnvGraph } from './lib/load-graph';\nimport { initVarlockEnv } from './runtime/env';\nimport { checkBunVersion } from './lib/check-bun-version';\n\n// Import env-graph components for internal API\nimport {\n EnvGraph,\n loadEnvGraph,\n DotEnvFileDataSource,\n ConfigLoadError,\n SchemaError,\n ValidationError,\n CoercionError,\n ResolutionError,\n type SerializedEnvGraph,\n} from './env-graph';\n\nexport async function load() {\n checkBunVersion();\n // TODO: add some options\n const envGraph = await loadVarlockEnvGraph();\n await envGraph.resolveEnvValues();\n checkForConfigErrors(envGraph);\n\n // loadFromSerializedGraph(envGraph.getSerializedGraph());\n process.env.__VARLOCK_ENV = JSON.stringify(envGraph.getSerializedGraph());\n initVarlockEnv();\n // TODO: return resolved env and schema / meta info\n}\n\n\nexport function getBuildTimeReplacements(opts?: {\n objectKey?: string,\n includeSensitive?: boolean,\n}) {\n if (!process.env.__VARLOCK_ENV) return {};\n const envInfo = JSON.parse(process.env.__VARLOCK_ENV) as SerializedEnvGraph;\n const replacements = {} as Record<string, string>;\n for (const key in envInfo.config) {\n const itemInfo = envInfo.config[key];\n const replaceItem = !itemInfo.isSensitive || opts?.includeSensitive;\n if (!replaceItem) continue;\n replacements[`${opts?.objectKey || 'ENV'}.${key}`] = JSON.stringify(envInfo.config[key].value);\n }\n return replacements;\n}\n\n// Internal API for direct env graph manipulation\nexport const internal = {\n // Core classes\n EnvGraph,\n DotEnvFileDataSource,\n\n // Loader function\n loadEnvGraph,\n\n // Error classes\n ConfigLoadError,\n SchemaError,\n ValidationError,\n CoercionError,\n ResolutionError,\n\n // Varlock-specific utilities\n loadVarlockEnvGraph,\n checkForConfigErrors,\n initVarlockEnv,\n};\n\nexport { patchGlobalConsole } from './runtime/patch-console';\nexport { patchGlobalServerResponse } from './runtime/patch-server-response';\nexport { patchGlobalResponse } from './runtime/patch-response';\nexport { ENV } from './runtime/env';\nexport { createDebug, type Debugger } from './lib/debug';\nexport type { SerializedEnvGraph };\n","export { ENV, getRedactionMapInfo, initVarlockEnv, redactSensitiveConfig, resetRedactionMap, revealSensitiveConfig, scanForLeaks, varlockSettings } from '../chunk-MGWUDHT5.js';\nimport '../chunk-XLYSNOR3.js';\nimport '../chunk-6PEHRAEP.js';\n//# sourceMappingURL=env.js.map\n//# sourceMappingURL=env.js.map","export { patchGlobalConsole, unpatchGlobalConsole } from '../chunk-R73FENLU.js';\nimport '../chunk-MGWUDHT5.js';\nimport '../chunk-XLYSNOR3.js';\nimport '../chunk-6PEHRAEP.js';\n//# sourceMappingURL=patch-console.js.map\n//# sourceMappingURL=patch-console.js.map","import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport { execFileSync, execSync } from 'node:child_process';\n\n// weird tsup issue using `typeof execSync` from node:child_process\n// see https://github.com/egoist/tsup/issues/1367\nimport type { execSync as execSyncType } from 'child_process';\n\nconst platform = os.platform();\nconst isWindows = platform.match(/^win/i);\n\n\n/**\n * Walk up the directory tree from startDir looking for a node_modules/.bin/varlock binary.\n * Returns the full path to the binary if found, or null if not found.\n */\nfunction findVarlockBin(startDir: string): string | null {\n // On Windows, npm creates varlock.exe while pnpm only creates varlock.cmd\n // (and a shell script). Check .exe first, then fall back to .cmd.\n const binNames = isWindows ? ['varlock.exe', 'varlock.cmd'] : ['varlock'];\n\n let currentDir = startDir;\n while (currentDir) {\n const possibleBinPath = path.join(currentDir, 'node_modules', '.bin');\n if (fs.existsSync(possibleBinPath)) {\n for (const binName of binNames) {\n const possibleVarlockPath = path.join(possibleBinPath, binName);\n if (fs.existsSync(possibleVarlockPath)) {\n return possibleVarlockPath;\n }\n }\n // Found a .bin directory but varlock is not in it - keep walking up.\n // In a monorepo the root node_modules/.bin may exist without varlock,\n // which is installed only in a sub-package.\n }\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) break;\n currentDir = parentDir;\n }\n return null;\n}\n\n/**\n * small helper to call execSync and call the varlock cli\n *\n * when end user runs via a package manager, it will inject node_modules/.bin into PATH\n * but otherwise we may need to try to find that path ourselves\n */\nexport function execSyncVarlock(\n command: string,\n opts?: (Parameters<typeof execSyncType>[1] & {\n exitOnError?: boolean,\n showLogsOnError?: boolean,\n /**\n * Additional directory to start searching for the varlock binary from.\n * Searched before process.cwd(). Pass `import.meta.dirname` from the\n * call-site so that in monorepos the binary installed next to the\n * importing package is found even when cwd is an unrelated workspace root.\n */\n callerDir?: string,\n }),\n) {\n try {\n // in most cases, user will be running via their package manager\n // and a package.json script (ie `pnpm run start`)\n // which will inject node_modules/.bin into PATH\n try {\n const result = execSync(`varlock ${command}`, {\n ...opts?.env && { env: opts.env },\n ...opts?.cwd && { cwd: opts.cwd },\n stdio: 'pipe',\n });\n return result.toString();\n } catch (err) {\n // code 127 means not found (on linux only)\n // ENOENT from execSync means that a shell was not found\n if (!isWindows && (err as any).status !== 127 && (err as any).code !== 'ENOENT') throw err;\n // on windows, we'll just do the extra checks anyway\n }\n\n // if varlock was not found, it either means it is not installed\n // or we must find the path to node_modules/.bin ourselves.\n // Search from cwd (if provided), callerDir, then process.cwd().\n // This handles monorepo setups where cwd may be an unrelated workspace\n // root while varlock is only installed in a sub-package - the callerDir\n // supplied by auto-load.ts points inside that sub-package's node_modules.\n const cwdStr = opts?.cwd ? String(opts.cwd) : undefined;\n const searchDirs = [\n ...(cwdStr ? [cwdStr] : []),\n ...(opts?.callerDir ? [opts.callerDir] : []),\n process.cwd(),\n ];\n\n for (const startDir of searchDirs) {\n const varlockPath = findVarlockBin(startDir);\n if (varlockPath) {\n // .cmd files are batch scripts that must be run through cmd.exe\n const needsShell = varlockPath.endsWith('.cmd');\n const result = execFileSync(varlockPath, command.split(' '), {\n ...opts,\n stdio: 'pipe',\n ...(needsShell && { shell: true }),\n });\n return result.toString();\n }\n }\n throw new Error('Unable to find varlock executable');\n } catch (err) {\n const errAny = err as any;\n if (opts?.showLogsOnError) {\n /* eslint-disable no-console */\n if (errAny.stdout) console.log(errAny.stdout.toString());\n if (errAny.stderr) console.error(errAny.stderr.toString());\n\n if (!errAny.stdout && !errAny.stderr) {\n console.error(errAny);\n }\n }\n if (opts?.exitOnError) {\n process.exit((err as any).status ?? 1);\n }\n throw err;\n }\n}\n","export { execSyncVarlock } from '../chunk-YHOWSHVH.js';\nimport '../chunk-6PEHRAEP.js';\n//# sourceMappingURL=exec-sync-varlock.js.map\n//# sourceMappingURL=exec-sync-varlock.js.map","/**\n * Drop-in replacement for @next/env that uses varlock instead of dotenv\n *\n * This must be the default export of the module, and it must stay compatible with @next/env\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { type SerializedEnvGraph } from 'varlock';\nimport { initVarlockEnv, resetRedactionMap } from 'varlock/env';\nimport { patchGlobalConsole } from 'varlock/patch-console';\nimport { execSyncVarlock } from 'varlock/exec-sync-varlock';\n\nexport type Env = { [key: string]: string | undefined };\nexport type LoadedEnvFiles = Array<{\n path: string\n contents: string\n env: Env\n}>;\n\n/** will store the original values of process.env */\nexport let initialEnv: Env | undefined;\n\nlet lastReloadAt: Date | undefined;\n\nlet varlockLoadedEnv: SerializedEnvGraph;\nlet combinedEnv: Env | undefined;\nlet parsedEnv: Env | undefined;\n// this is used by next just to display the list of .env files in a startup log\nlet loadedEnvFiles: LoadedEnvFiles = [];\nlet rootDir: string | undefined;\n\n// @next/env exports this info and currently it is only used to display\n// a list of filenames loaded, for example: `Environments: .env, .env.development`\nfunction getVarlockSourcesAsLoadedEnvFiles(): LoadedEnvFiles {\n const envFilesLabels = varlockLoadedEnv.sources\n .filter((s) => s.enabled && s.type !== 'container' && s.type !== 'import-alias')\n .map((s) => s.label);\n if (envFilesLabels.length) {\n // this adds an additional line, below the list of files\n envFilesLabels.push('\\n ✨ loaded by varlock ✨');\n }\n // files can be imported multiple times, so we deduplicate the labels here\n const uniqueLabels = [...new Set(envFilesLabels)];\n // Next.js expects an array of objects, even though it is not used for anything\n return uniqueLabels.map((label) => ({\n path: label,\n contents: '',\n env: {},\n }));\n}\n\nconst IS_WORKER = !!process.env.NEXT_PRIVATE_WORKER;\nfunction debug(...args: Array<any>) {\n if (!process.env.DEBUG_VARLOCK_NEXT_INTEGRATION) return;\n // eslint-disable-next-line no-console\n console.log(\n IS_WORKER ? 'worker -- ' : 'server -- ',\n ...args,\n );\n}\ndebug('✨ LOADED @next/env module!');\n\n\n// Next.js only watches a fixed set of .env files for changes. Varlock may load\n// additional files (e.g. .env.schema, .env.staging, custom sources). We watch\n// those extra files and trigger a reload by touching one of Next's watched files.\nconst NEXT_WATCHED_ENV_FILES = ['.env', '.env.local', '.env.development', '.env.development.local'];\nconst watchedExtraFiles = new Set<string>();\n\nfunction enableExtraFileWatchers(sources: SerializedEnvGraph['sources'], basePath?: string) {\n if (IS_WORKER || !rootDir) return;\n\n // Collect absolute paths of source files that Next.js does NOT already watch\n const nextWatchedAbsolute = new Set(NEXT_WATCHED_ENV_FILES.map((f) => path.join(rootDir!, f)));\n const extraFilePaths: Array<string> = [];\n for (const source of sources) {\n if (!source.enabled || !source.path) continue;\n const absPath = basePath ? path.resolve(basePath, source.path) : path.resolve(rootDir!, source.path);\n if (!nextWatchedAbsolute.has(absPath) && !watchedExtraFiles.has(absPath)) {\n extraFilePaths.push(absPath);\n }\n }\n // Also always watch .env.schema even if it wasn't in sources (it may not exist yet)\n const envSchemaPath = path.join(rootDir!, '.env.schema');\n if (!nextWatchedAbsolute.has(envSchemaPath) && !watchedExtraFiles.has(envSchemaPath)) {\n extraFilePaths.push(envSchemaPath);\n }\n\n if (!extraFilePaths.length) return;\n\n // Find a Next-watched file to touch as the reload trigger.\n // Prefer an existing file (cheaper), otherwise we'll create+destroy .env\n let triggerFilePath: string | null = null;\n for (const envFileName of NEXT_WATCHED_ENV_FILES) {\n const filePath = path.join(rootDir!, envFileName);\n if (fs.existsSync(filePath)) {\n triggerFilePath = filePath;\n break;\n }\n }\n const mustDestroyTriggerFile = !triggerFilePath;\n triggerFilePath ||= path.join(rootDir!, '.env');\n\n function triggerNextReload(changedPath: string) {\n debug('extra file changed, triggering reload:', changedPath);\n if (mustDestroyTriggerFile) {\n fs.writeFileSync(triggerFilePath!, [\n '# This file was created by @varlock/nextjs-integration',\n '# It is used to trigger Next.js to reload when non-standard .env files change',\n '# You can safely ignore and delete it',\n '# @disable',\n '# ---',\n ].join('\\n'), 'utf-8');\n setTimeout(() => {\n // eslint-disable-next-line\n try { fs.unlinkSync(triggerFilePath!); } catch { /* may already be gone */ }\n }, 1000);\n } else {\n const currentContents = fs.readFileSync(triggerFilePath!, 'utf-8');\n fs.writeFileSync(triggerFilePath!, currentContents, 'utf-8');\n }\n }\n\n debug('setting up extra file watchers for:', extraFilePaths);\n for (const filePath of extraFilePaths) {\n watchedExtraFiles.add(filePath);\n fs.watchFile(filePath, { interval: 500 }, () => {\n triggerNextReload(filePath);\n });\n }\n}\n\nfunction detectOpenNextCloudflareBuild() {\n try {\n // the above works if the build is happening within CI, but we may need to do this for local builds or other CI platforms\n // so we can try to detect if we are within an open-next build by looking at the process info\n\n // we will look at the process tree to try to determine if we are in a opennext build\n // process tree looks like:\n // - opennext-cloudflare build > npm run build > next build\n\n // get grandparent process id\n const pppid = parseInt(execSync(`ps -o ppid= -p ${process.ppid}`).toString().trim());\n // const processInfo = execSync('ps -p '+grandparentPid+' -o command');\n // output looks like\n // ---\n // COMMAND\n // node /.../node_modules/.bin/opennextjs-cloudflare build\n //\n // ---\n const commandName = execSync(`ps -p ${pppid} -o command`).toString().split('\\n')[1];\n if (commandName.endsWith('.bin/opennextjs-cloudflare build')) {\n return true;\n }\n } catch (err) {\n // do nothing\n }\n return false;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction writeResolvedEnvFile() {\n // things get complicated on platforms like vercel/cloudflare, they do some of their own magic to load env vars\n // our loader (this file) will run during the _build_ process, but not when the platform is handling server rendered requests\n // also opennext is needed to run outside of vercel, so that adds other changes\n // so we export an additional .env file which the platform itself will automatically load\n\n const dotEnvStrLines = [];\n for (const [itemKey, itemInfo] of Object.entries(varlockLoadedEnv.config)) {\n if (itemInfo.value !== undefined) dotEnvStrLines.push(`${itemKey}=${JSON.stringify(itemInfo.value)}`);\n }\n\n if (\n detectOpenNextCloudflareBuild()\n || process.env.VERCEL || process.env.WORKERS_CI || process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE\n ) {\n dotEnvStrLines.unshift(`\n# 🛑 DO NOT CHECK THIS FILE INTO VERSION CONTROL 🛑\n# This file was automatically generated by @varlock/nextjs-integration\n# It contains a _fully resolved env_ to pass to platforms (ex: vercel, cloudflare, etc)\n# that are doing their own magic when booting up nextjs in certain scenarios\n#\n# It likely contains sensitive config data and should be deleted after use\n#\n# @disable # tells varlock to ignore this file\n# ---\n `);\n // this is the fully resolved env, which includes additional metadata about each item\n // our runtime code uses this to provide coerced values, redact sensitive values, etc\n dotEnvStrLines.push(`__VARLOCK_ENV=${JSON.stringify(varlockLoadedEnv)}`);\n\n let resolvedEnvFileName = '.env.production.local';\n if (process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE && !(['true', '1'].includes(process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE))) {\n resolvedEnvFileName = process.env._VARLOCK_EXPORT_RESOLVED_ENV_FILE;\n }\n if (!rootDir) throw new Error('expected rootDir to be set');\n const resolvedEnvFilePath = path.resolve(rootDir, resolvedEnvFileName);\n fs.writeFileSync(resolvedEnvFilePath, dotEnvStrLines.join('\\n'), 'utf-8');\n debug('wrote resolved env file:', resolvedEnvFilePath);\n }\n}\n\n// - these methods are the same as the original module -----------------\n\nexport function updateInitialEnv(newEnv: Env) {\n if (Object.keys(newEnv).length) {\n debug('updateInitialEnv', newEnv);\n Object.assign(initialEnv || {}, newEnv);\n }\n}\n\ntype Log = {\n info: (...args: Array<any>) => void\n error: (...args: Array<any>) => void\n};\n\nfunction replaceProcessEnv(sourceEnv: Env) {\n Object.keys(process.env).forEach((key) => {\n // Allow mutating internal Next.js env variables after the server has initiated.\n // This is necessary for dynamic things like the IPC server port.\n if (!key.startsWith('__NEXT_PRIVATE')) {\n if (sourceEnv[key] === undefined || sourceEnv[key] === '') {\n delete process.env[key];\n }\n }\n });\n\n Object.entries(sourceEnv).forEach(([key, value]) => {\n process.env[key] = value;\n });\n}\n\n// in original module, but does not appear to be used\nexport function processEnv(\n _loadedEnvFiles: LoadedEnvFiles,\n _dir?: string,\n _log: Log = console,\n _forceReload = false,\n _onReload?: (envFilePath: string) => void,\n) {\n return [process.env];\n}\n\nexport function resetEnv() {\n if (initialEnv) {\n replaceProcessEnv(initialEnv);\n }\n}\n\ntype LoadedEnvConfig = {\n combinedEnv: Env\n parsedEnv: Env | undefined\n loadedEnvFiles: LoadedEnvFiles\n};\n\nlet loadCount = 0;\n\nexport function loadEnvConfig(\n dir: string,\n dev?: boolean,\n _log: Log = console,\n forceReload = false,\n _onReload?: (envFilePath: string) => void,\n): LoadedEnvConfig {\n // store actual process.env so we can restore it later\n initialEnv ||= { ...process.env };\n\n loadCount++;\n debug('loadEnvConfig!', 'forceReload = ', forceReload);\n\n // onReload is used to show a log of which .env file changed\n // TODO: add similar log to show which env file changed\n\n rootDir ||= dir;\n if (rootDir !== dir) throw new Error('root directory changed');\n\n // Always watch .env.schema early — even before the first successful load —\n // so that if the load fails (e.g. validation error), the user can fix the\n // schema and have the dev server automatically retry without a restart.\n if (dev) enableExtraFileWatchers([], undefined);\n\n let useCachedEnv = !!process.env.__VARLOCK_ENV;\n if (forceReload) {\n // Throttle reloads to at most once per second to avoid spinning during\n // rapid file-change bursts (Next.js may fire multiple events per edit)\n if (!lastReloadAt || lastReloadAt.getTime() < Date.now() - 1000) {\n lastReloadAt = new Date();\n useCachedEnv = false;\n }\n }\n\n if (useCachedEnv) {\n if (!varlockLoadedEnv) {\n varlockLoadedEnv = JSON.parse(process.env.__VARLOCK_ENV || '{}');\n parsedEnv = Object.fromEntries(\n Object.entries(varlockLoadedEnv.config).map(([key, value]) => [key, value.value]),\n );\n\n resetRedactionMap(varlockLoadedEnv);\n debug('patching console with varlock redactor');\n patchGlobalConsole();\n }\n\n combinedEnv = { ...initialEnv, ...parsedEnv };\n\n if (dev) enableExtraFileWatchers(varlockLoadedEnv.sources, varlockLoadedEnv.basePath);\n\n debug('>> USING CACHED ENV');\n\n return { combinedEnv, parsedEnv, loadedEnvFiles };\n }\n\n lastReloadAt = new Date();\n\n debug('>> RELOADING ENV');\n replaceProcessEnv(initialEnv);\n\n // we must match @next/env default behaviour for which .env.XXX files to load\n // which is based on the current command (`next dev` vs `next build`) and `NODE_ENV=test`\n // however we will pass it through and let the user ignore it by setting their own `@currentEnv`\n let envFromNextCommand = dev ? 'development' : 'production';\n if (process.env.NODE_ENV === 'test') envFromNextCommand = 'test';\n debug('Inferred env mode (to match @next/env):', envFromNextCommand);\n\n try {\n // strip DEBUG_VARLOCK from env to prevent debug output from contaminating JSON stdout\n const cleanEnv = { ...initialEnv };\n delete cleanEnv.DEBUG_VARLOCK;\n const varlockLoadedEnvStr = execSyncVarlock(`load --format json-full --env ${envFromNextCommand}`, {\n // We handle all error display and exit logic ourselves in the catch block\n // so we can silently defer on serverless platforms where the binary is missing.\n showLogsOnError: false,\n exitOnError: false,\n env: cleanEnv as any,\n });\n if (loadCount >= 2) {\n // eslint-disable-next-line no-console\n console.log('✅ env reloaded and validated');\n }\n varlockLoadedEnv = JSON.parse(varlockLoadedEnvStr);\n } catch (err) {\n if ((err as any).message.includes('Unable to find varlock executable')) {\n // In production the binary may not exist — e.g., on serverless platforms\n // where only traced files are included. The init bundle injected into the\n // webpack/turbopack runtime will set process.env.__VARLOCK_ENV with inlined\n // env data when the bundled server loads.\n // See: https://github.com/dmno-dev/varlock/issues/584\n if (!dev) {\n debug('varlock binary not found — deferring to init bundle');\n return { combinedEnv: { ...initialEnv }, parsedEnv: {}, loadedEnvFiles: [] };\n }\n // eslint-disable-next-line no-console\n console.error([\n '',\n '❌ ERROR: varlock not found',\n 'varlock is a required peer dependency of @varlock/nextjs-integration',\n '',\n 'Please add varlock as a dependency to your project (e.g., `npm install varlock`)',\n ].join('\\n'));\n process.exit(1);\n }\n\n // For real errors (validation failures, etc.) show the CLI output\n /* eslint-disable no-console */\n const errAny = err as any;\n if (errAny.stdout) console.log(errAny.stdout.toString());\n if (errAny.stderr) console.error(errAny.stderr.toString());\n console.error('[varlock] ⚠️ failed to load env — see error above');\n /* eslint-enable no-console */\n\n // In a build, we want to fail hard so broken env doesn't get deployed\n if (!dev) {\n process.exit((err as any).status ?? 1);\n }\n\n // if we dont do this, we'll see an error that looks like `process.env.__VARLOCK_ENV is not set` which is misleading.\n // Ideally we would pass through an error of some kind and trigger the webpack runtime error popup\n process.env.__VARLOCK_ENV = JSON.stringify({\n sources: [],\n config: {},\n settings: {},\n });\n\n return { combinedEnv: {}, parsedEnv: {}, loadedEnvFiles: [] };\n }\n\n parsedEnv = {};\n for (const [itemKey, itemInfo] of Object.entries(varlockLoadedEnv.config)) {\n parsedEnv[itemKey] = itemInfo.value;\n }\n debug('LOADED ENV:', parsedEnv);\n process.env.__VARLOCK_ENV = JSON.stringify(varlockLoadedEnv);\n initVarlockEnv(); // calling this will set process.env vars\n\n resetRedactionMap(varlockLoadedEnv);\n debug('patching console with varlock redactor');\n patchGlobalConsole();\n\n combinedEnv = { ...initialEnv, ...parsedEnv };\n loadedEnvFiles = getVarlockSourcesAsLoadedEnvFiles();\n\n // Set up watchers for source files that Next.js doesn't natively watch.\n // Called after every reload so newly-added sources get watched too.\n if (dev) enableExtraFileWatchers(varlockLoadedEnv.sources, varlockLoadedEnv.basePath);\n\n // write a resolved .env file for platforms like Vercel/Cloudflare that need\n // pre-resolved env values at runtime (they don't re-run @next/env on boot)\n // TODO: re-enable once we verify instrumentation approach works for prod\n // if (!dev) writeResolvedEnvFile();\n\n return { combinedEnv, parsedEnv, loadedEnvFiles };\n}\n"]}