varlock 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/{chunk-BXR2RIO6.js → chunk-26ICEAKS.js} +6 -5
  2. package/dist/chunk-26ICEAKS.js.map +1 -0
  3. package/dist/{chunk-UDXNNRWI.js → chunk-4A54P4EM.js} +10 -10
  4. package/dist/chunk-4A54P4EM.js.map +1 -0
  5. package/dist/chunk-GEJNYKR4.js +17 -0
  6. package/dist/chunk-GEJNYKR4.js.map +1 -0
  7. package/dist/{chunk-35SAMS66.js → chunk-GJ7PTJM4.js} +3 -3
  8. package/dist/{chunk-35SAMS66.js.map → chunk-GJ7PTJM4.js.map} +1 -1
  9. package/dist/{chunk-YIXN7TC7.js → chunk-IG5PPVD7.js} +40 -64
  10. package/dist/chunk-IG5PPVD7.js.map +1 -0
  11. package/dist/chunk-JDMZWNQA.js +68 -0
  12. package/dist/chunk-JDMZWNQA.js.map +1 -0
  13. package/dist/chunk-KKPD7AYU.js +34 -0
  14. package/dist/chunk-KKPD7AYU.js.map +1 -0
  15. package/dist/{chunk-HTF7NU5C.js → chunk-LZ52O5WU.js} +10 -7
  16. package/dist/chunk-LZ52O5WU.js.map +1 -0
  17. package/dist/chunk-MHIFZAPA.js +405 -0
  18. package/dist/chunk-MHIFZAPA.js.map +1 -0
  19. package/dist/{chunk-Q3C4VKFT.js → chunk-MXZI2FC6.js} +17 -41
  20. package/dist/chunk-MXZI2FC6.js.map +1 -0
  21. package/dist/{chunk-ISSW6NKZ.js → chunk-TLXFVH7P.js} +20 -17
  22. package/dist/chunk-TLXFVH7P.js.map +1 -0
  23. package/dist/chunk-VQ5I7WMP.js +331 -0
  24. package/dist/chunk-VQ5I7WMP.js.map +1 -0
  25. package/dist/{chunk-PESTWPBG.js → chunk-WDC5CEKD.js} +8 -6
  26. package/dist/chunk-WDC5CEKD.js.map +1 -0
  27. package/dist/{chunk-OY5U5WTF.js → chunk-WZW7QS6M.js} +2700 -2158
  28. package/dist/chunk-WZW7QS6M.js.map +1 -0
  29. package/dist/chunk-Y3ITSQA4.js +58 -0
  30. package/dist/chunk-Y3ITSQA4.js.map +1 -0
  31. package/dist/cli/cli-executable.js +54 -38
  32. package/dist/cli/cli-executable.js.map +1 -1
  33. package/dist/config-item-2AL7WF23.js +5 -0
  34. package/dist/config-item-2AL7WF23.js.map +1 -0
  35. package/dist/{env-graph-DIcuAiYh.d.ts → env-graph-C8s2oqOJ.d.ts} +62 -2
  36. package/dist/help.command-7E52XAOO.js +5 -0
  37. package/dist/{help.command-MLH2WA5Y.js.map → help.command-7E52XAOO.js.map} +1 -1
  38. package/dist/index.d.ts +2 -2
  39. package/dist/index.js +4 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/init.command-J4HZL3PB.js +12 -0
  42. package/dist/{init.command-RAYBZ66R.js.map → init.command-J4HZL3PB.js.map} +1 -1
  43. package/dist/load.command-6DAP7LEX.js +11 -0
  44. package/dist/{load.command-KOSPGLV6.js.map → load.command-6DAP7LEX.js.map} +1 -1
  45. package/dist/plugin-lib.d.ts +2 -2
  46. package/dist/printenv.command-7B7SZ2EF.js +12 -0
  47. package/dist/printenv.command-7B7SZ2EF.js.map +1 -0
  48. package/dist/run.command-HVV6XXDR.js +12 -0
  49. package/dist/{run.command-BOBQIELJ.js.map → run.command-HVV6XXDR.js.map} +1 -1
  50. package/dist/runtime/env.d.ts +1 -1
  51. package/dist/scan.command-Q33VJOPD.js +13 -0
  52. package/dist/scan.command-Q33VJOPD.js.map +1 -0
  53. package/dist/telemetry.command-HOJDUCKG.js +11 -0
  54. package/dist/{telemetry.command-SFEMMU3U.js.map → telemetry.command-HOJDUCKG.js.map} +1 -1
  55. package/package.json +21 -20
  56. package/LICENSE +0 -21
  57. package/dist/chunk-BXR2RIO6.js.map +0 -1
  58. package/dist/chunk-HTF7NU5C.js.map +0 -1
  59. package/dist/chunk-ISSW6NKZ.js.map +0 -1
  60. package/dist/chunk-OY5U5WTF.js.map +0 -1
  61. package/dist/chunk-PESTWPBG.js.map +0 -1
  62. package/dist/chunk-Q3C4VKFT.js.map +0 -1
  63. package/dist/chunk-UDXNNRWI.js.map +0 -1
  64. package/dist/chunk-YIXN7TC7.js.map +0 -1
  65. package/dist/help.command-MLH2WA5Y.js +0 -5
  66. package/dist/init.command-RAYBZ66R.js +0 -9
  67. package/dist/load.command-KOSPGLV6.js +0 -9
  68. package/dist/run.command-BOBQIELJ.js +0 -10
  69. package/dist/telemetry.command-SFEMMU3U.js +0 -9
@@ -1,41 +1,17 @@
1
- import { ansis_default, joinAndCompact, my_dash_default, pathExistsSync } from './chunk-OY5U5WTF.js';
1
+ import { CliExitError } from './chunk-KKPD7AYU.js';
2
+ import { ansis_default } from './chunk-VQ5I7WMP.js';
3
+ import { pathExistsSync } from './chunk-WZW7QS6M.js';
2
4
  import { createDebug } from './chunk-QZ6HBRJC.js';
3
5
  import { __name } from './chunk-6PEHRAEP.js';
4
6
  import path from 'path';
5
7
  import fs, { existsSync } from 'fs';
6
8
  import { execSync } from 'child_process';
7
9
 
8
- // src/cli/helpers/exit-error.ts
9
- var CliExitError = class extends Error {
10
- constructor(message, more) {
11
- super(message);
12
- this.more = more;
13
- }
14
- static {
15
- __name(this, "CliExitError");
16
- }
17
- get forceExit() {
18
- return !!this.more?.forceExit;
19
- }
20
- getFormattedOutput() {
21
- let msg = `
22
- \u{1F4A5} ${ansis_default.red(this.message)} \u{1F4A5}
23
- `;
24
- if (this.more?.details) {
25
- msg += joinAndCompact(my_dash_default.castArray(this.more?.details), "\n");
26
- }
27
- if (this.more?.suggestion) {
28
- msg += joinAndCompact(my_dash_default.castArray(this.more?.suggestion), "\n");
29
- }
30
- msg += "\n";
31
- return msg;
32
- }
33
- };
34
10
  var debug = createDebug("varlock:js-package-manager-utils");
35
11
  var JS_PACKAGE_MANAGERS = Object.freeze({
36
12
  npm: {
37
13
  name: "npm",
38
- lockfile: "package-lock.json",
14
+ lockfiles: ["package-lock.json"],
39
15
  add: "npm install",
40
16
  // add also works
41
17
  exec: "npm exec --",
@@ -43,21 +19,21 @@ var JS_PACKAGE_MANAGERS = Object.freeze({
43
19
  },
44
20
  pnpm: {
45
21
  name: "pnpm",
46
- lockfile: "pnpm-lock.yaml",
22
+ lockfiles: ["pnpm-lock.yaml"],
47
23
  add: "pnpm add",
48
24
  exec: "pnpm exec",
49
25
  dlx: "pnpm dlx"
50
26
  },
51
27
  yarn: {
52
28
  name: "yarn",
53
- lockfile: "yarn.lock",
29
+ lockfiles: ["yarn.lock"],
54
30
  add: "yarn add",
55
31
  exec: "yarn exec --",
56
32
  dlx: "yarn dlx"
57
33
  },
58
34
  bun: {
59
35
  name: "bun",
60
- lockfile: "bun.lockb",
36
+ lockfiles: ["bun.lock", "bun.lockb"],
61
37
  add: "bun add",
62
38
  exec: "bun run",
63
39
  dlx: "bunx"
@@ -65,7 +41,7 @@ var JS_PACKAGE_MANAGERS = Object.freeze({
65
41
  deno: {
66
42
  //! deno not fully supported yet
67
43
  name: "deno",
68
- lockfile: "deno.lock",
44
+ lockfiles: ["deno.lock"],
69
45
  add: "deno add",
70
46
  // TODO: don't think these are quite right...
71
47
  exec: "deno run",
@@ -78,20 +54,20 @@ function detectJsPackageManager(opts) {
78
54
  let multipleLockfilesDetected;
79
55
  do {
80
56
  debug(`> scanning ${cwd}`);
57
+ const scanDir = cwd;
81
58
  let pm;
82
59
  let detectedPm;
83
60
  for (pm in JS_PACKAGE_MANAGERS) {
84
- const lockFilePath = path.join(
85
- cwd,
86
- JS_PACKAGE_MANAGERS[pm].lockfile
61
+ const foundLockfile = JS_PACKAGE_MANAGERS[pm].lockfiles.find(
62
+ (lockfile) => pathExistsSync(path.join(scanDir, lockfile))
87
63
  );
88
- if (pathExistsSync(lockFilePath)) {
64
+ if (foundLockfile) {
89
65
  if (detectedPm) {
90
- debug(`> found multiple lockfiles: ${JS_PACKAGE_MANAGERS[pm].lockfile} and ${JS_PACKAGE_MANAGERS[detectedPm].lockfile}`);
66
+ debug(`> found multiple lockfiles: ${foundLockfile} and ${JS_PACKAGE_MANAGERS[detectedPm].lockfiles[0]}`);
91
67
  multipleLockfilesDetected = [detectedPm, pm];
92
68
  break;
93
69
  }
94
- debug(`> found ${JS_PACKAGE_MANAGERS[pm].lockfile}`);
70
+ debug(`> found ${foundLockfile}`);
95
71
  detectedPm = pm;
96
72
  }
97
73
  }
@@ -175,6 +151,6 @@ var logLines = /* @__PURE__ */ __name((lines) => {
175
151
  }
176
152
  }, "logLines");
177
153
 
178
- export { CliExitError, detectJsPackageManager, fmt, installJsDependency, logLines };
179
- //# sourceMappingURL=chunk-Q3C4VKFT.js.map
180
- //# sourceMappingURL=chunk-Q3C4VKFT.js.map
154
+ export { detectJsPackageManager, fmt, installJsDependency, logLines };
155
+ //# sourceMappingURL=chunk-MXZI2FC6.js.map
156
+ //# sourceMappingURL=chunk-MXZI2FC6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/helpers/js-package-manager-utils.ts","../src/cli/helpers/pretty-format.ts"],"names":[],"mappings":"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","file":"chunk-MXZI2FC6.js","sourcesContent":["import path from 'node:path';\nimport fs, { existsSync } from 'node:fs';\nimport { pathExistsSync } from '@env-spec/utils/fs-utils';\nimport { createDebug } from '../../lib/debug';\n\nimport { CliExitError } from './exit-error';\nimport { execSync } from 'node:child_process';\n\nconst debug = createDebug('varlock:js-package-manager-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\n/**\n * detect js package manager\n *\n * currently go up the folder tree looking for lockfiles (ex: package-lock.json, pnpm-lock.yaml)\n * if nothing found, we'll look at process.env.npm_config_user_agent\n * */\nexport function detectJsPackageManager(opts?: {\n cwd?: string,\n workspaceRootPath?: string,\n exitIfNotFound?: boolean,\n}) {\n debug('Detecting js package manager');\n let cwd = opts?.cwd || process.cwd();\n let multipleLockfilesDetected: Array<JsPackageManager> | undefined;\n do {\n debug(`> scanning ${cwd}`);\n const scanDir = cwd;\n let pm: JsPackageManager;\n let detectedPm: JsPackageManager | undefined;\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 if (detectedPm && !multipleLockfilesDetected) return JS_PACKAGE_MANAGERS[detectedPm];\n if (multipleLockfilesDetected) break;\n\n // will break when we reach the root\n const parentDir = path.dirname(cwd);\n if (parentDir === cwd) break;\n cwd = parentDir;\n\n if (opts?.workspaceRootPath) {\n if (opts.workspaceRootPath === cwd) {\n debug('> found workspace root');\n break;\n }\n } else {\n // if we don't have a workspace root path, we'll break if we hit the git repo root\n if (pathExistsSync(path.join(cwd, '.git'))) {\n debug('> found git root');\n break;\n }\n }\n } while (cwd);\n\n // if we did not find a lockfile, we'll look at env vars for other hints\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 return JS_PACKAGE_MANAGERS[pmFromAgent as JsPackageManager];\n }\n }\n\n // if we found multiple lockfiles and env var detection failed, return 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 (multipleLockfilesDetected) {\n debug(`> using ${multipleLockfilesDetected[0]} from multiple detected lockfiles`);\n return JS_PACKAGE_MANAGERS[multipleLockfilesDetected[0]];\n }\n\n if (opts?.exitIfNotFound) {\n // show some hopefully useful error messaging if we hit the root folder without finding anything\n throw new CliExitError('Unable to find detect your JavaScript package manager!', {\n suggestion: 'We look for lock files (ex: package-lock.json) so you may just need to run a dependency install (ie `npm install`)',\n forceExit: true,\n });\n }\n}\n\n\n\n\nexport function installJsDependency(opts: {\n packageName: string,\n packageManager: JsPackageManager,\n packagePath?: string,\n isMonoRepoRoot?: boolean,\n}) {\n const packageJsonPath = path.join(opts.packagePath || process.cwd(), 'package.json');\n\n // for now, we'll just bail if we dont see a package.json\n if (!existsSync(packageJsonPath)) return false;\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n // bail if already installed\n if (packageJson.dependencies?.varlock) return false;\n\n // TODO: might want to check first if it's already installed?\n execSync([\n // move to the correct directory if needed\n opts.packagePath && `cd ${opts.packagePath} &&`,\n // `add` works in all of them\n `${opts.packageManager} add ${opts.packageName}`,\n // tells pnpm to either install in the workspace root explicitly\n // or to not check if we are the in the root\n opts.packageManager === 'pnpm' && (opts.isMonoRepoRoot ? '-w' : '--ignore-workspace-root-check'),\n ].filter(Boolean).join(' '));\n\n return true;\n}\n\n","import ansis from 'ansis';\nimport { detectJsPackageManager, JsPackageManagerMeta } from './js-package-manager-utils';\n\n\nexport const fmt = {\n decorator: (s: string) => ansis.magenta(s),\n filePath: (s: string) => `📂 ${ansis.cyan.italic(s)}`,\n fileName: (s: string) => `${ansis.cyan.italic(s)}`,\n command: (s: string, opts?: { jsPackageManager?: JsPackageManagerMeta | true }) => {\n let jsPackageManager: JsPackageManagerMeta | undefined;\n if (opts?.jsPackageManager === true) {\n jsPackageManager = detectJsPackageManager();\n } else if (opts?.jsPackageManager) {\n jsPackageManager = opts.jsPackageManager;\n }\n if (jsPackageManager) {\n s = `${jsPackageManager.exec} ${s}`;\n }\n return ansis.green.italic(s);\n },\n packageName: (s: string) => ansis.green.italic(s),\n};\n\nexport const logLines = (lines: Array<string | false | undefined>) => {\n for (const line of lines) {\n // skip false, null, undefined, but not empty strings\n if (!line && line !== '') continue;\n console.log(line);\n }\n};\n"]}
@@ -1,4 +1,5 @@
1
- import { ansis_default, VarlockError, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-OY5U5WTF.js';
1
+ import { ansis_default, gracefulExit, getItemSummary, joinAndCompact } from './chunk-VQ5I7WMP.js';
2
+ import { VarlockError, my_dash_default } from './chunk-WZW7QS6M.js';
2
3
  import { __name } from './chunk-6PEHRAEP.js';
3
4
 
4
5
  // src/cli/helpers/error-checks.ts
@@ -14,6 +15,14 @@ function showErrorLocationDetails(err) {
14
15
  console.log(errPreview);
15
16
  }
16
17
  __name(showErrorLocationDetails, "showErrorLocationDetails");
18
+ function checkForNoEnvFiles(envGraph) {
19
+ if (Object.keys(envGraph.configSchema).length === 0) {
20
+ console.error("\u{1F6A8} No .env or .env.schema files found\n");
21
+ console.error("Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.");
22
+ return gracefulExit(1);
23
+ }
24
+ }
25
+ __name(checkForNoEnvFiles, "checkForNoEnvFiles");
17
26
  function checkForSchemaErrors(envGraph) {
18
27
  for (const source of envGraph.sortedDataSources) {
19
28
  if (source.loadingError) {
@@ -58,11 +67,16 @@ function checkForConfigErrors(envGraph, opts) {
58
67
  console.log(`\u{1F6A8} Root decorator error(s) in ${source.label}`);
59
68
  for (const err of source.resolutionErrors) {
60
69
  console.log(`- ${err.message}`);
70
+ if (err instanceof VarlockError && err.tip) {
71
+ for (const line of err.tip.split("\n")) {
72
+ console.log(` ${line}`);
73
+ }
74
+ }
61
75
  showErrorLocationDetails(err);
62
76
  }
63
77
  }
64
78
  }
65
- const failingItems = my_dash_default.filter(my_dash_default.values(envGraph.configSchema), (item) => item.validationState === "error");
79
+ const failingItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((item) => item.validationState === "error");
66
80
  if (failingItems.length > 0) {
67
81
  console.error(`
68
82
  \u{1F6A8} \u{1F6A8} \u{1F6A8} ${ansis_default.bold.underline("Configuration is currently invalid ")} \u{1F6A8} \u{1F6A8} \u{1F6A8}
@@ -79,7 +93,7 @@ function checkForConfigErrors(envGraph, opts) {
79
93
  ansis_default.italic.gray("(remove `--show-all` flag to hide)")
80
94
  ]));
81
95
  console.error();
82
- const validItems = my_dash_default.filter(my_dash_default.values(envGraph.configSchema), (i) => !!i.isValid);
96
+ const validItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((i) => !!i.isValid);
83
97
  my_dash_default.each(validItems, (item) => {
84
98
  console.error(getItemSummary(item));
85
99
  });
@@ -89,17 +103,6 @@ function checkForConfigErrors(envGraph, opts) {
89
103
  }
90
104
  __name(checkForConfigErrors, "checkForConfigErrors");
91
105
 
92
- // src/lib/load-graph.ts
93
- async function loadVarlockEnvGraph(opts) {
94
- const envGraph = await loadEnvGraph({
95
- ...opts,
96
- afterInit: /* @__PURE__ */ __name(async (_g) => {
97
- }, "afterInit")
98
- });
99
- return envGraph;
100
- }
101
- __name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
102
-
103
- export { InvalidEnvError, checkForConfigErrors, checkForSchemaErrors, loadVarlockEnvGraph };
104
- //# sourceMappingURL=chunk-ISSW6NKZ.js.map
105
- //# sourceMappingURL=chunk-ISSW6NKZ.js.map
106
+ export { InvalidEnvError, checkForConfigErrors, checkForNoEnvFiles, checkForSchemaErrors };
107
+ //# sourceMappingURL=chunk-TLXFVH7P.js.map
108
+ //# sourceMappingURL=chunk-TLXFVH7P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/helpers/error-checks.ts"],"names":[],"mappings":";;;;;AAQA,SAAS,yBAAyB,GAAA,EAAY;AAC5C,EAAA,IAAI,EAAE,GAAA,YAAe,YAAA,CAAA,IAAiB,CAAC,IAAI,QAAA,EAAU;AACrD,EAAA,MAAM,SAAS,GAAA,CAAI,QAAA;AACnB,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,MAAA,CAAO,OAAA;AAAA,IACP,CAAA,EAAG,aAAA,CAAM,IAAA,CAAK,GAAA,CAAI,OAAO,MAAA,CAAO,SAAA,GAAY,CAAC,CAAC,CAAC,CAAA,EAAG,aAAA,CAAM,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,GAClE,CAAE,KAAK,IAAI,CAAA;AAEX,EAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AACd,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,UAAA,EAAM,MAAA,CAAO,EAAE,CAAA,CAAA,EAAI,OAAO,UAAU,CAAA,CAAA,EAAI,MAAA,CAAO,SAAS,CAAA,CAAE,CAAA;AACtE,EAAA,OAAA,CAAQ,IAAI,UAAU,CAAA;AACxB;AAXS,MAAA,CAAA,wBAAA,EAAA,0BAAA,CAAA;AAaF,SAAS,mBAAmB,QAAA,EAAoB;AACrD,EAAA,IAAI,OAAO,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,CAAE,WAAW,CAAA,EAAG;AACnD,IAAA,OAAA,CAAQ,MAAM,gDAAyC,CAAA;AACvD,IAAA,OAAA,CAAQ,MAAM,kGAAkG,CAAA;AAChH,IAAA,OAAO,aAAa,CAAC,CAAA;AAAA,EACvB;AACF;AANgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAQT,SAAS,qBAAqB,QAAA,EAAoB;AAEvD,EAAA,KAAA,MAAW,MAAA,IAAU,SAAS,iBAAA,EAAmB;AAI/C,IAAA,IAAI,OAAO,YAAA,EAAc;AACvB,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,0CAAA,EAAsC,MAAA,CAAO,KAAK;AAAA,CAAI,CAAA;AAElE,MAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,YAAA,CAAa,OAAO,CAAA;AACvC,MAAA,wBAAA,CAAyB,OAAO,YAAY,CAAA;AAI5C,MAAA,IAAI,OAAO,YAAA,CAAa,KAAA,IAAS,EAAE,MAAA,CAAO,wBAAwB,YAAA,CAAA,EAAe;AAC/E,QAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAK,aAAA,CAAM,GAAA,CAAI,cAAc,CAAC,CAAA,CAAE,CAAA;AAC5C,QAAA,OAAA,CAAQ,IAAI,aAAA,CAAM,GAAA,CAAI,MAAA,CAAO,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MAClD;AAEA,MAAA,OAAO,aAAa,CAAC,CAAA;AAAA,IACvB;AAEA,IAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAQ;AAC9B,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,kCAAA,EAA8B,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAExD,MAAA,KAAA,MAAW,SAAA,IAAa,OAAO,YAAA,EAAc;AAC3C,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAA,EAAK,SAAA,CAAU,OAAO,CAAA,CAAE,CAAA;AACpC,QAAA,wBAAA,CAAyB,SAAS,CAAA;AAAA,MACpC;AACA,MAAA,OAAO,aAAa,CAAC,CAAA;AAAA,IACvB;AAAA,EACF;AASF;AAxCgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA;AA2CT,IAAM,eAAA,GAAN,cAA8B,KAAA,CAAM;AAAA,EAxE3C;AAwE2C,IAAA,MAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAAA,EACzC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,6CAA6C,CAAA;AAAA,EACrD;AAAA,EACA,kBAAA,GAAqB;AACnB,IAAA,OAAO;AAAA,UAAA,EAAQ,aAAA,CAAM,GAAA,CAAI,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,CAAA;AAAA,EACxC;AACF;AAEO,SAAS,oBAAA,CAAqB,UAAoB,IAAA,EAEtD;AAED,EAAA,KAAA,MAAW,MAAA,IAAU,SAAS,iBAAA,EAAmB;AAC/C,IAAA,IAAI,MAAA,CAAO,iBAAiB,MAAA,EAAQ;AAClC,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qCAAA,EAAiC,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAE3D,MAAA,KAAA,MAAW,GAAA,IAAO,OAAO,gBAAA,EAAkB;AACzC,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAA,EAAK,GAAA,CAAI,OAAO,CAAA,CAAE,CAAA;AAC9B,QAAA,IAAI,GAAA,YAAe,YAAA,IAAgB,GAAA,CAAI,GAAA,EAAK;AAC1C,UAAA,KAAA,MAAW,IAAA,IAAQ,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACtC,YAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAAA,UACzB;AAAA,QACF;AACA,QAAA,wBAAA,CAAyB,GAAG,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAIA,EAAA,MAAM,eAAe,QAAA,CAAS,gBAAA,CAC3B,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,YAAA,CAAa,CAAC,CAAC,EACnC,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,oBAAoB,OAAO,CAAA;AAGpD,EAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,KAAA,CAAM;AAAA,+BAAA,EAAe,aAAA,CAAM,IAAA,CAAK,SAAA,CAAU,qCAAqC,CAAC,CAAA;AAAA,CAAc,CAAA;AACtG,IAAA,OAAA,CAAQ,MAAM,kBAAkB,CAAA;AAEhC,IAAA,eAAA,CAAE,IAAA,CAAK,YAAA,EAAc,CAAC,IAAA,KAAqB;AACzC,MAAA,OAAA,CAAQ,KAAA,CAAM,cAAA,CAAe,IAAI,CAAC,CAAA;AAClC,MAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,IAChB,CAAC,CAAA;AACD,IAAA,IAAI,MAAM,OAAA,EAAS;AACjB,MAAA,OAAA,CAAQ,KAAA,EAAM;AACd,MAAA,OAAA,CAAQ,MAAM,cAAA,CAAe;AAAA,QAC3B,cAAA;AAAA,QACA,aAAA,CAAM,MAAA,CAAO,IAAA,CAAK,oCAAoC;AAAA,OACvD,CAAC,CAAA;AACF,MAAA,OAAA,CAAQ,KAAA,EAAM;AACd,MAAA,MAAM,aAAa,QAAA,CAAS,gBAAA,CACzB,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,YAAA,CAAa,CAAC,CAAC,EACnC,MAAA,CAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAA;AAC5B,MAAA,eAAA,CAAE,IAAA,CAAK,UAAA,EAAY,CAAC,IAAA,KAAqB;AACvC,QAAA,OAAA,CAAQ,KAAA,CAAM,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,MACpC,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,IAAI,eAAA,EAAgB;AAAA,EAC5B;AACF;AApDgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA","file":"chunk-TLXFVH7P.js","sourcesContent":["import ansis from 'ansis';\nimport { gracefulExit } from 'exit-hook';\nimport _ from '@env-spec/utils/my-dash';\nimport { EnvGraph, ConfigItem } 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.log('');\n console.log(`📂 ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.log(errPreview);\n}\n\nexport function checkForNoEnvFiles(envGraph: EnvGraph) {\n if (Object.keys(envGraph.configSchema).length === 0) {\n console.error('🚨 No .env or .env.schema files found\\n');\n console.error('Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.');\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.log(`🚨 Error encountered while loading ${source.label}\\n`);\n\n console.log(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.log(`\\n${ansis.dim('Stack trace:')}`);\n console.log(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.log(`🚨 Error(s) encountered in ${source.label}`);\n\n for (const schemaErr of source.schemaErrors) {\n console.log(`- ${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 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}) {\n // check for root decorator \"execution\"\n for (const source of envGraph.sortedDataSources) {\n if (source.resolutionErrors.length) {\n console.log(`🚨 Root decorator error(s) in ${source.label}`);\n\n for (const err of source.resolutionErrors) {\n console.log(`- ${err.message}`);\n if (err instanceof VarlockError && err.tip) {\n for (const line of err.tip.split('\\n')) {\n console.log(` ${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 throw new InvalidEnvError();\n }\n}\n"]}
@@ -0,0 +1,331 @@
1
+ import { EnvGraph, DirectoryDataSource, DotEnvFileDataSource, my_dash_default } from './chunk-WZW7QS6M.js';
2
+ import { redactString } from './chunk-MIBOBKI4.js';
3
+ import { __commonJS, __name, __toESM } from './chunk-6PEHRAEP.js';
4
+ import process2 from 'process';
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+
8
+ // ../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.cjs
9
+ var require_ansis = __commonJS({
10
+ "../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.cjs"(exports$1, module) {
11
+ var e;
12
+ var t;
13
+ var r;
14
+ var { defineProperty: l, setPrototypeOf: n, create: o, keys: s } = Object;
15
+ var i = "";
16
+ var { round: c, max: a2 } = Math;
17
+ var p = /* @__PURE__ */ __name((e2) => {
18
+ let t2 = /([a-f\d]{3,6})/i.exec(e2)?.[1], r2 = t2?.length, l2 = parseInt(6 ^ r2 ? 3 ^ r2 ? "0" : t2[0] + t2[0] + t2[1] + t2[1] + t2[2] + t2[2] : t2, 16);
19
+ return [l2 >> 16 & 255, l2 >> 8 & 255, 255 & l2];
20
+ }, "p");
21
+ var u = /* @__PURE__ */ __name((e2, t2, r2) => e2 ^ t2 || t2 ^ r2 ? 16 + 36 * c(e2 / 51) + 6 * c(t2 / 51) + c(r2 / 51) : 8 > e2 ? 16 : e2 > 248 ? 231 : c(24 * (e2 - 8) / 247) + 232, "u");
22
+ var d = /* @__PURE__ */ __name((e2) => {
23
+ let t2, r2, l2, n2, o2;
24
+ return 8 > e2 ? 30 + e2 : 16 > e2 ? e2 - 8 + 90 : (232 > e2 ? (o2 = (e2 -= 16) % 36, t2 = (e2 / 36 | 0) / 5, r2 = (o2 / 6 | 0) / 5, l2 = o2 % 6 / 5) : t2 = r2 = l2 = (10 * (e2 - 232) + 8) / 255, n2 = 2 * a2(t2, r2, l2), n2 ? 30 + (c(l2) << 2 | c(r2) << 1 | c(t2)) + (2 ^ n2 ? 0 : 60) : 30);
25
+ }, "d");
26
+ var f = (() => {
27
+ let r2 = /* @__PURE__ */ __name((e2) => o2.some(((t2) => e2.test(t2))), "r"), l2 = globalThis, n2 = l2.process ?? {}, o2 = n2.argv ?? [], i2 = n2.env ?? {}, c2 = -1;
28
+ try {
29
+ e = "," + s(i2).join(",");
30
+ } catch (e2) {
31
+ i2 = {}, c2 = 0;
32
+ }
33
+ let a3 = "FORCE_COLOR", p2 = { false: 0, 0: 0, 1: 1, 2: 2, 3: 3 }[i2[a3]] ?? -1, u2 = a3 in i2 && p2 || r2(/^--color=?(true|always)?$/);
34
+ return u2 && (c2 = p2), ~c2 || (c2 = ((r3, l3, n3) => (t = r3.TERM, { "24bit": 3, truecolor: 3, ansi256: 2, ansi: 1 }[r3.COLORTERM] || (r3.CI ? /,GITHUB/.test(e) ? 3 : 1 : l3 && "dumb" !== t ? n3 ? 3 : /-256/.test(t) ? 2 : 1 : 0)))(i2, !!i2.PM2_HOME || i2.NEXT_RUNTIME?.includes("edge") || !!n2.stdout?.isTTY, "win32" === n2.platform)), !p2 || i2.NO_COLOR || r2(/^--(no-color|color=(false|never))$/) ? 0 : l2.window?.chrome || u2 && !c2 ? 3 : c2;
35
+ })();
36
+ var g = { open: i, close: i };
37
+ var h = 39;
38
+ var b = 49;
39
+ var O = {};
40
+ var m = /* @__PURE__ */ __name(({ p: e2 }, { open: t2, close: l2 }) => {
41
+ let o2 = /* @__PURE__ */ __name((e3, ...r2) => {
42
+ if (!e3) {
43
+ if (t2 && t2 === l2) return t2;
44
+ if ((e3 ?? i) === i) return i;
45
+ }
46
+ let n2, s3 = e3.raw ? String.raw({ raw: e3 }, ...r2) : i + e3, c3 = o2.p, a3 = c3.o, p2 = c3.c;
47
+ if (s3.includes("\x1B")) for (; c3; c3 = c3.p) {
48
+ let { open: e4, close: t3 } = c3, r3 = t3.length, l3 = i, o3 = 0;
49
+ if (r3) for (; ~(n2 = s3.indexOf(t3, o3)); o3 = n2 + r3) l3 += s3.slice(o3, n2) + e4;
50
+ s3 = l3 + s3.slice(o3);
51
+ }
52
+ return a3 + (s3.includes("\n") ? s3.replace(/(\r?\n)/g, p2 + "$1" + a3) : s3) + p2;
53
+ }, "o"), s2 = t2, c2 = l2;
54
+ return e2 && (s2 = e2.o + t2, c2 = l2 + e2.c), n(o2, r), o2.p = { open: t2, close: l2, o: s2, c: c2, p: e2 }, o2.open = s2, o2.close = c2, o2;
55
+ }, "m");
56
+ var w = new (/* @__PURE__ */ __name(function e2(t2 = f) {
57
+ let s2 = { Ansis: e2, level: t2, isSupported: /* @__PURE__ */ __name(() => a3, "isSupported"), strip: /* @__PURE__ */ __name((e3) => e3.replace(/[›][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, i), "strip"), extend(e3) {
58
+ for (let t3 in e3) {
59
+ let r2 = e3[t3], l2 = (typeof r2)[0];
60
+ "s" === l2 ? (c2(t3, T(...p(r2))), c2(_2(t3), v(...p(r2)))) : c2(t3, r2, "f" === l2);
61
+ }
62
+ return r = o({}, O), n(s2, r), s2;
63
+ } }, c2 = /* @__PURE__ */ __name((e3, t3, r2) => {
64
+ O[e3] = { get() {
65
+ let n2 = r2 ? (...e4) => m(this, t3(...e4)) : m(this, t3);
66
+ return l(this, e3, { value: n2 }), n2;
67
+ } };
68
+ }, "c"), a3 = t2 > 0, w2 = /* @__PURE__ */ __name((e3, t3) => a3 ? { open: `\x1B[${e3}m`, close: `\x1B[${t3}m` } : g, "w"), y = /* @__PURE__ */ __name((e3) => (t3) => e3(...p(t3)), "y"), R = /* @__PURE__ */ __name((e3, t3) => (r2, l2, n2) => w2(`${e3}8;2;${r2};${l2};${n2}`, t3), "R"), $ = /* @__PURE__ */ __name((e3, t3) => (r2, l2, n2) => w2(((e4, t4, r3) => d(u(e4, t4, r3)))(r2, l2, n2) + e3, t3), "$"), x = /* @__PURE__ */ __name((e3) => (t3, r2, l2) => e3(u(t3, r2, l2)), "x"), T = R(3, h), v = R(4, b), C = /* @__PURE__ */ __name((e3) => w2("38;5;" + e3, h), "C"), E = /* @__PURE__ */ __name((e3) => w2("48;5;" + e3, b), "E");
69
+ 2 === t2 ? (T = x(C), v = x(E)) : 1 === t2 && (T = $(0, h), v = $(10, b), C = /* @__PURE__ */ __name((e3) => w2(d(e3), h), "C"), E = /* @__PURE__ */ __name((e3) => w2(d(e3) + 10, b), "E"));
70
+ let M, I = { fg: C, bg: E, rgb: T, bgRgb: v, hex: y(T), bgHex: y(v), visible: g, reset: w2(0, 0), bold: w2(1, 22), dim: w2(2, 22), italic: w2(3, 23), underline: w2(4, 24), inverse: w2(7, 27), hidden: w2(8, 28), strikethrough: w2(9, 29) }, _2 = /* @__PURE__ */ __name((e3) => "bg" + e3[0].toUpperCase() + e3.slice(1), "_"), k = "Bright";
71
+ return "black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map(((e3, t3) => {
72
+ M = _2(e3), 8 > t3 ? (I[e3 + k] = w2(90 + t3, h), I[M + k] = w2(100 + t3, b)) : t3 = 60, I[e3] = w2(30 + t3, h), I[M] = w2(40 + t3, b);
73
+ })), s2.extend(I);
74
+ }, "e"))();
75
+ module.exports = w, w.default = w;
76
+ }
77
+ });
78
+
79
+ // ../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.mjs
80
+ var import_index = __toESM(require_ansis(), 1);
81
+ var ansis_default = import_index.default;
82
+ var { 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 } = import_index.default;
83
+ var asyncCallbacks = /* @__PURE__ */ new Set();
84
+ var callbacks = /* @__PURE__ */ new Set();
85
+ var isCalled = false;
86
+ var isRegistered = false;
87
+ async function flushStdio() {
88
+ const flush = /* @__PURE__ */ __name((stream) => new Promise((resolve) => {
89
+ if (!stream || !stream.writable || stream.writableEnded || stream.destroyed) {
90
+ resolve();
91
+ return;
92
+ }
93
+ const onError = /* @__PURE__ */ __name(() => {
94
+ stream.off("error", onError);
95
+ resolve();
96
+ }, "onError");
97
+ stream.once("error", onError);
98
+ try {
99
+ stream.write("", () => {
100
+ stream.off("error", onError);
101
+ resolve();
102
+ });
103
+ } catch {
104
+ stream.off("error", onError);
105
+ resolve();
106
+ }
107
+ }), "flush");
108
+ const timeout = new Promise((resolve) => {
109
+ setTimeout(resolve, 1e3);
110
+ });
111
+ await Promise.race([
112
+ Promise.all([flush(process2.stdout), flush(process2.stderr)]),
113
+ timeout
114
+ ]);
115
+ }
116
+ __name(flushStdio, "flushStdio");
117
+ async function exit(shouldManuallyExit, isSynchronous, signal) {
118
+ if (isCalled) {
119
+ return;
120
+ }
121
+ isCalled = true;
122
+ if (asyncCallbacks.size > 0 && isSynchronous) {
123
+ console.error([
124
+ "SYNCHRONOUS TERMINATION NOTICE:",
125
+ "When explicitly exiting the process via process.exit or via a parent process,",
126
+ "asynchronous tasks in your exitHooks will not run. Either remove these tasks,",
127
+ "use gracefulExit() instead of process.exit(), or ensure your parent process",
128
+ "sends a SIGINT to the process running this code."
129
+ ].join(" "));
130
+ }
131
+ let exitCode = 0;
132
+ if (signal > 0) {
133
+ exitCode = 128 + signal;
134
+ } else if (typeof process2.exitCode === "number" || typeof process2.exitCode === "string") {
135
+ exitCode = process2.exitCode;
136
+ }
137
+ const done = /* @__PURE__ */ __name((force = false) => {
138
+ if (force === true || shouldManuallyExit === true) {
139
+ process2.exit(exitCode);
140
+ }
141
+ }, "done");
142
+ for (const callback of callbacks) {
143
+ callback(exitCode);
144
+ }
145
+ if (isSynchronous) {
146
+ done();
147
+ return;
148
+ }
149
+ const promises = [];
150
+ let forceAfter = 0;
151
+ for (const [callback, wait] of asyncCallbacks) {
152
+ forceAfter = Math.max(forceAfter, wait);
153
+ promises.push(Promise.resolve(callback(exitCode)));
154
+ }
155
+ const asyncTimer = forceAfter > 0 ? setTimeout(() => {
156
+ done(true);
157
+ }, forceAfter) : void 0;
158
+ await Promise.all(promises);
159
+ clearTimeout(asyncTimer);
160
+ await flushStdio();
161
+ done();
162
+ }
163
+ __name(exit, "exit");
164
+ function addHook(options) {
165
+ const { onExit, wait, isSynchronous } = options;
166
+ const asyncCallbackConfig = [onExit, wait];
167
+ if (isSynchronous) {
168
+ callbacks.add(onExit);
169
+ } else {
170
+ asyncCallbacks.add(asyncCallbackConfig);
171
+ }
172
+ if (!isRegistered) {
173
+ isRegistered = true;
174
+ process2.once("beforeExit", exit.bind(void 0, true, false, -128));
175
+ process2.once("SIGINT", exit.bind(void 0, true, false, 2));
176
+ process2.once("SIGTERM", exit.bind(void 0, true, false, 15));
177
+ process2.once("exit", exit.bind(void 0, false, true, 0));
178
+ process2.on("message", (message) => {
179
+ if (message === "shutdown") {
180
+ exit(true, true, -128);
181
+ }
182
+ });
183
+ }
184
+ return () => {
185
+ if (isSynchronous) {
186
+ callbacks.delete(onExit);
187
+ } else {
188
+ asyncCallbacks.delete(asyncCallbackConfig);
189
+ }
190
+ };
191
+ }
192
+ __name(addHook, "addHook");
193
+ function asyncExitHook(onExit, options = {}) {
194
+ if (typeof onExit !== "function") {
195
+ throw new TypeError("onExit must be a function");
196
+ }
197
+ if (!(typeof options.wait === "number" && options.wait > 0)) {
198
+ throw new TypeError("wait must be set to a positive numeric value");
199
+ }
200
+ return addHook({
201
+ onExit,
202
+ wait: options.wait,
203
+ isSynchronous: false
204
+ });
205
+ }
206
+ __name(asyncExitHook, "asyncExitHook");
207
+ function gracefulExit(signal) {
208
+ if (signal !== void 0) {
209
+ process2.exitCode = signal;
210
+ }
211
+ exit(true, false, -128);
212
+ }
213
+ __name(gracefulExit, "gracefulExit");
214
+ async function loadEnvGraph(opts) {
215
+ const graph = new EnvGraph();
216
+ if (opts?.entryFilePath) {
217
+ const resolvedPath = path.resolve(opts.entryFilePath);
218
+ const isDirectory = opts.entryFilePath.endsWith("/") || opts.entryFilePath.endsWith(path.sep) || fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isDirectory();
219
+ if (isDirectory) {
220
+ graph.basePath = resolvedPath;
221
+ if (opts?.afterInit) await opts.afterInit(graph);
222
+ if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;
223
+ await graph.setRootDataSource(new DirectoryDataSource(resolvedPath));
224
+ } else {
225
+ graph.basePath = path.dirname(resolvedPath);
226
+ if (opts?.afterInit) await opts.afterInit(graph);
227
+ if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;
228
+ await graph.setRootDataSource(new DotEnvFileDataSource(resolvedPath));
229
+ }
230
+ } else {
231
+ graph.basePath = opts?.basePath ?? process.cwd();
232
+ if (opts?.afterInit) await opts.afterInit(graph);
233
+ if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;
234
+ await graph.setRootDataSource(new DirectoryDataSource(graph.basePath));
235
+ }
236
+ await graph.finishLoad();
237
+ return graph;
238
+ }
239
+ __name(loadEnvGraph, "loadEnvGraph");
240
+
241
+ // src/lib/formatting.ts
242
+ function applyMods(str, mods) {
243
+ if (!mods) return str;
244
+ if (my_dash_default.isArray(mods)) {
245
+ let modStr = str;
246
+ mods.forEach((mod) => {
247
+ modStr = ansis_default[mod](modStr);
248
+ });
249
+ return modStr;
250
+ }
251
+ return ansis_default[mods](str);
252
+ }
253
+ __name(applyMods, "applyMods");
254
+ function formattedValue(val, showType = false) {
255
+ let strVal = "";
256
+ let strType = "";
257
+ let mods;
258
+ if (my_dash_default.isBoolean(val)) {
259
+ strVal = val.toString();
260
+ mods = ["yellow", "italic"];
261
+ strType = "boolean";
262
+ } else if (my_dash_default.isNumber(val)) {
263
+ strVal = val.toString();
264
+ mods = "yellow";
265
+ strType = "number";
266
+ } else if (my_dash_default.isString(val)) {
267
+ strVal = `"${val}"`;
268
+ strType = "string";
269
+ } else if (my_dash_default.isPlainObject(val)) {
270
+ strVal = JSON.stringify(val);
271
+ strType = "object";
272
+ } else if (val === null) {
273
+ strVal = "null";
274
+ mods = "gray";
275
+ } else if (val === void 0) {
276
+ strVal = "undefined";
277
+ mods = "gray";
278
+ }
279
+ return [
280
+ applyMods(strVal, mods),
281
+ showType && strType ? ansis_default.gray(` (${strType})`) : ""
282
+ ].join("");
283
+ }
284
+ __name(formattedValue, "formattedValue");
285
+ function joinAndCompact(strings, joinChar = " ") {
286
+ return strings.filter((s) => (
287
+ // we'll not filter out empty strings - because it's useful to just add newlines
288
+ s !== void 0 && s !== null && s !== false
289
+ )).join(joinChar);
290
+ }
291
+ __name(joinAndCompact, "joinAndCompact");
292
+ var VALIDATION_STATE_COLORS = {
293
+ error: "red",
294
+ warn: "yellow",
295
+ valid: "cyan"
296
+ };
297
+ function getItemSummary(item) {
298
+ const summary = [];
299
+ const itemErrors = item.errors;
300
+ const icon = itemErrors.length ? itemErrors[0].icon : "\u2705";
301
+ const isSensitive = item.isSensitive;
302
+ const isRequired = item.isRequired;
303
+ summary.push(joinAndCompact([
304
+ icon,
305
+ ansis_default[VALIDATION_STATE_COLORS[item.validationState]](item.key) + (isRequired ? ansis_default.magenta("*") : ""),
306
+ // ansis.gray(`[type = ${item.type.typeLabel}]`),
307
+ isSensitive && ` \u{1F510}${ansis_default.gray.italic("sensitive")}`
308
+ // item.useAt ? ansis.gray.italic(`(${item.useAt?.join(', ')})`) : undefined,
309
+ ]));
310
+ let valAsStr = formattedValue(item.resolvedValue, false);
311
+ if (isSensitive && item.resolvedValue && my_dash_default.isString(item.resolvedValue)) {
312
+ valAsStr = redactString(item.resolvedValue);
313
+ }
314
+ summary.push(joinAndCompact([
315
+ ansis_default.gray(" \u2514"),
316
+ valAsStr,
317
+ item.isCoerced && ansis_default.gray.italic("< coerced from ") + (isSensitive ? formattedValue(item.resolvedRawValue) : formattedValue(item.resolvedRawValue, false))
318
+ ]));
319
+ itemErrors?.forEach((err) => {
320
+ summary.push(ansis_default[err.isWarning ? "yellow" : "red"](` - ${err.isWarning ? "[WARNING] " : ""}${err.message}`));
321
+ if (err.tip) {
322
+ summary.push(...err.tip.split("\n").map((line) => ` ${line}`));
323
+ }
324
+ });
325
+ return summary.join("\n");
326
+ }
327
+ __name(getItemSummary, "getItemSummary");
328
+
329
+ export { ansis_default, asyncExitHook, getItemSummary, gracefulExit, joinAndCompact, loadEnvGraph };
330
+ //# sourceMappingURL=chunk-VQ5I7WMP.js.map
331
+ //# sourceMappingURL=chunk-VQ5I7WMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.cjs","../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.mjs","../../../node_modules/.bun/exit-hook@5.1.0/node_modules/exit-hook/index.js","../src/env-graph/lib/loader.ts","../src/lib/formatting.ts"],"names":["exports","a","e","t","r","l","n","o","i","c","p","u","s","_","w","process"],"mappings":"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","file":"chunk-VQ5I7WMP.js","sourcesContent":["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","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 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 } from './data-source';\n\nexport async function loadEnvGraph(opts?: {\n basePath?: string,\n entryFilePath?: 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 if (opts?.entryFilePath) {\n const resolvedPath = path.resolve(opts.entryFilePath);\n const isDirectory = opts.entryFilePath.endsWith('/') || opts.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.overrides?.length) {\n // const activeOverride = item.overrides[0];\n // let overrideNote = ansis.gray.italic('value set via override: ');\n // overrideNote += ansis.gray(activeOverride.sourceType);\n // if (activeOverride.sourceLabel) overrideNote += ansis.gray(` - ${activeOverride.sourceLabel}`);\n // summary.push(` ${overrideNote}`);\n // }\n\n itemErrors?.forEach((err) => {\n summary.push(ansis[err.isWarning ? 'yellow' : 'red'](` - ${err.isWarning ? '[WARNING] ' : ''}${err.message}`));\n\n // TODO: standardize here how we show parse error locations and stack info?\n\n // summary.push(...err.cleanedStack || '');\n if (err.tip) {\n summary.push(...err.tip.split('\\n').map((line) => ` ${line}`));\n }\n });\n\n // NO OBJECT/CHILDREN FOR NOW\n // for (const childItem of _.values(item.children)) {\n // const childSummary = getItemSummary(childItem);\n // summary.push(childSummary.split('\\n').map((l) => ` ${l}`).join('\\n'));\n // }\n\n return summary.join('\\n');\n}\n"]}