varlock 0.0.4 → 0.0.5

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 (101) hide show
  1. package/dist/auto-load.js +5 -6
  2. package/dist/{chunk-7UQXFWKN.js → chunk-365YVT72.js} +93 -3
  3. package/dist/chunk-365YVT72.js.map +1 -0
  4. package/dist/{chunk-ZIN4KXR6.js → chunk-7SCZ3YWG.js} +10 -9
  5. package/dist/chunk-7SCZ3YWG.js.map +1 -0
  6. package/dist/{chunk-SVDXBE6D.js → chunk-C2ZQAQUU.js} +3 -4
  7. package/dist/chunk-C2ZQAQUU.js.map +1 -0
  8. package/dist/chunk-EVHLEWHL.js +59 -0
  9. package/dist/chunk-EVHLEWHL.js.map +1 -0
  10. package/dist/{chunk-XPHGSDAF.js → chunk-GAQWSZCY.js} +3 -4
  11. package/dist/chunk-GAQWSZCY.js.map +1 -0
  12. package/dist/{chunk-DHFEY3C4.js → chunk-GCUCCUG5.js} +25 -7
  13. package/dist/chunk-GCUCCUG5.js.map +1 -0
  14. package/dist/{chunk-A4AHZSZB.js → chunk-GVAD672U.js} +15 -27
  15. package/dist/chunk-GVAD672U.js.map +1 -0
  16. package/dist/{chunk-NN3XFBPE.js → chunk-HMRN5QZL.js} +3 -3
  17. package/dist/{chunk-NN3XFBPE.js.map → chunk-HMRN5QZL.js.map} +1 -1
  18. package/dist/{chunk-DROJWTCD.js → chunk-K2N2TG4M.js} +1396 -1432
  19. package/dist/chunk-K2N2TG4M.js.map +1 -0
  20. package/dist/chunk-LHTLO65N.js +99 -0
  21. package/dist/chunk-LHTLO65N.js.map +1 -0
  22. package/dist/{chunk-VN64D2EQ.js → chunk-LU2R63B4.js} +3 -4
  23. package/dist/chunk-LU2R63B4.js.map +1 -0
  24. package/dist/{chunk-B4UBSMSZ.js → chunk-PUGFIZE3.js} +4 -3
  25. package/dist/chunk-PUGFIZE3.js.map +1 -0
  26. package/dist/chunk-PZE4KJJW.js +14 -0
  27. package/dist/{chunk-RUB5A7IC.js.map → chunk-PZE4KJJW.js.map} +1 -1
  28. package/dist/{chunk-RCHPHIHX.js → chunk-RZT65DRA.js} +2 -2
  29. package/dist/chunk-RZT65DRA.js.map +1 -0
  30. package/dist/chunk-UFAGBKYG.js +54 -0
  31. package/dist/chunk-UFAGBKYG.js.map +1 -0
  32. package/dist/{chunk-H2TT4DP5.js → chunk-VVJO4FC3.js} +17 -161
  33. package/dist/chunk-VVJO4FC3.js.map +1 -0
  34. package/dist/chunk-VVKXMIKQ.js +180 -0
  35. package/dist/chunk-VVKXMIKQ.js.map +1 -0
  36. package/dist/{chunk-DOIKZ3NG.js → chunk-WFN3ZXGS.js} +6 -6
  37. package/dist/chunk-WFN3ZXGS.js.map +1 -0
  38. package/dist/chunk-Y7WD33L3.js +17 -0
  39. package/dist/chunk-Y7WD33L3.js.map +1 -0
  40. package/dist/{chunk-C273RDM5.js → chunk-Z5KNSSLC.js} +10 -8
  41. package/dist/chunk-Z5KNSSLC.js.map +1 -0
  42. package/dist/cli/cli-executable.js +702 -158
  43. package/dist/cli/cli-executable.js.map +1 -1
  44. package/dist/doctor.command-NUG3BYDQ.js +7 -0
  45. package/dist/{doctor.command-7BQSOQWW.js.map → doctor.command-NUG3BYDQ.js.map} +1 -1
  46. package/dist/dotenv-compat.js +5 -6
  47. package/dist/encrypt.command-AGHQ4KTI.js +7 -0
  48. package/dist/{encrypt.command-VGJABHNK.js.map → encrypt.command-AGHQ4KTI.js.map} +1 -1
  49. package/dist/env-B8lQt2sl.d.ts +42 -0
  50. package/dist/help.command-B7VWA53B.js +5 -0
  51. package/dist/{help.command-YZDL2VEQ.js.map → help.command-B7VWA53B.js.map} +1 -1
  52. package/dist/index.d.ts +1 -2
  53. package/dist/index.js +11 -10
  54. package/dist/index.js.map +1 -1
  55. package/dist/init.command-DHE2Q6FX.js +13 -0
  56. package/dist/{init.command-CY3ZOIGP.js.map → init.command-DHE2Q6FX.js.map} +1 -1
  57. package/dist/load.command-GGE4OANH.js +12 -0
  58. package/dist/{load.command-ZFNTAAJE.js.map → load.command-GGE4OANH.js.map} +1 -1
  59. package/dist/login.command-25PKQUGR.js +10 -0
  60. package/dist/{login.command-KYZ4FXS5.js.map → login.command-25PKQUGR.js.map} +1 -1
  61. package/dist/run.command-BLL6AL52.js +12 -0
  62. package/dist/{run.command-VRKI6ZVN.js.map → run.command-BLL6AL52.js.map} +1 -1
  63. package/dist/runtime/env.d.ts +1 -27
  64. package/dist/runtime/env.js +1 -1
  65. package/dist/runtime/patch-console.js +2 -3
  66. package/dist/runtime/patch-response.js +2 -3
  67. package/dist/runtime/patch-server-response.js +2 -3
  68. package/dist/telemetry.command-MVL3E366.js +10 -0
  69. package/dist/telemetry.command-MVL3E366.js.map +1 -0
  70. package/package.json +7 -3
  71. package/dist/chunk-7UQXFWKN.js.map +0 -1
  72. package/dist/chunk-A4AHZSZB.js.map +0 -1
  73. package/dist/chunk-B4UBSMSZ.js.map +0 -1
  74. package/dist/chunk-C273RDM5.js.map +0 -1
  75. package/dist/chunk-CLVBJA4G.js +0 -107
  76. package/dist/chunk-CLVBJA4G.js.map +0 -1
  77. package/dist/chunk-DHFEY3C4.js.map +0 -1
  78. package/dist/chunk-DOIKZ3NG.js.map +0 -1
  79. package/dist/chunk-DROJWTCD.js.map +0 -1
  80. package/dist/chunk-GSRDZVQI.js +0 -26
  81. package/dist/chunk-GSRDZVQI.js.map +0 -1
  82. package/dist/chunk-H2TT4DP5.js.map +0 -1
  83. package/dist/chunk-QCC3P7BT.js +0 -39
  84. package/dist/chunk-QCC3P7BT.js.map +0 -1
  85. package/dist/chunk-RCHPHIHX.js.map +0 -1
  86. package/dist/chunk-RUB5A7IC.js +0 -14
  87. package/dist/chunk-SVDXBE6D.js.map +0 -1
  88. package/dist/chunk-VN64D2EQ.js.map +0 -1
  89. package/dist/chunk-XHOJF7U7.js +0 -12
  90. package/dist/chunk-XHOJF7U7.js.map +0 -1
  91. package/dist/chunk-XPHGSDAF.js.map +0 -1
  92. package/dist/chunk-ZIN4KXR6.js.map +0 -1
  93. package/dist/doctor.command-7BQSOQWW.js +0 -6
  94. package/dist/encrypt.command-VGJABHNK.js +0 -6
  95. package/dist/help.command-YZDL2VEQ.js +0 -5
  96. package/dist/init.command-CY3ZOIGP.js +0 -11
  97. package/dist/load.command-ZFNTAAJE.js +0 -10
  98. package/dist/login.command-KYZ4FXS5.js +0 -7
  99. package/dist/opt-out.command-Y4KUQ6PQ.js +0 -5
  100. package/dist/opt-out.command-Y4KUQ6PQ.js.map +0 -1
  101. package/dist/run.command-VRKI6ZVN.js +0 -10
@@ -0,0 +1,180 @@
1
+ import { ansis_default, joinAndCompact } from './chunk-365YVT72.js';
2
+ import { my_dash_default } from './chunk-K2N2TG4M.js';
3
+ import { __name } from './chunk-XN24GZXQ.js';
4
+ import fs, { accessSync, existsSync } from 'node:fs';
5
+ import { access } from 'node:fs/promises';
6
+ import path from 'node:path';
7
+ import { execSync } from 'node:child_process';
8
+
9
+ // src/cli/helpers/exit-error.ts
10
+ var CliExitError = class extends Error {
11
+ constructor(message, more) {
12
+ super(message);
13
+ this.more = more;
14
+ }
15
+ static {
16
+ __name(this, "CliExitError");
17
+ }
18
+ get forceExit() {
19
+ return !!this.more?.forceExit;
20
+ }
21
+ getFormattedOutput() {
22
+ let msg = `
23
+ \u{1F4A5} ${ansis_default.red(this.message)} \u{1F4A5}
24
+ `;
25
+ if (this.more?.details) {
26
+ msg += joinAndCompact(my_dash_default.castArray(this.more?.details), "\n");
27
+ }
28
+ if (this.more?.suggestion) {
29
+ msg += joinAndCompact(my_dash_default.castArray(this.more?.suggestion), "\n");
30
+ }
31
+ msg += "\n";
32
+ return msg;
33
+ }
34
+ };
35
+ async function pathExists(p) {
36
+ try {
37
+ await access(p);
38
+ return true;
39
+ } catch {
40
+ return false;
41
+ }
42
+ }
43
+ __name(pathExists, "pathExists");
44
+ function pathExistsSync(p) {
45
+ try {
46
+ accessSync(p);
47
+ return true;
48
+ } catch {
49
+ return false;
50
+ }
51
+ }
52
+ __name(pathExistsSync, "pathExistsSync");
53
+ var JS_PACKAGE_MANAGERS = Object.freeze({
54
+ npm: {
55
+ name: "npm",
56
+ lockfile: "package-lock.json",
57
+ add: "npm install",
58
+ // add also works
59
+ exec: "npm exec --",
60
+ dlx: "npx"
61
+ },
62
+ pnpm: {
63
+ name: "pnpm",
64
+ lockfile: "pnpm-lock.yaml",
65
+ add: "pnpm add",
66
+ exec: "pnpm exec",
67
+ dlx: "pnpm dlx"
68
+ },
69
+ yarn: {
70
+ name: "yarn",
71
+ lockfile: "yarn.lock",
72
+ add: "yarn add",
73
+ exec: "yarn exec --",
74
+ dlx: "yarn dlx"
75
+ },
76
+ bun: {
77
+ name: "bun",
78
+ lockfile: "bun.lockb",
79
+ add: "bun add",
80
+ exec: "bun run",
81
+ dlx: "bunx"
82
+ },
83
+ deno: {
84
+ //! deno not fully supported yet
85
+ name: "deno",
86
+ lockfile: "deno.lock",
87
+ add: "deno add",
88
+ // TODO: don't think these are quite right...
89
+ exec: "deno run",
90
+ dlx: "deno run"
91
+ }
92
+ });
93
+ function detectJsPackageManager(opts) {
94
+ let cwd = opts?.cwd || process.cwd();
95
+ const cwdParts = cwd.split(path.sep);
96
+ do {
97
+ let pm;
98
+ let detectedPm;
99
+ for (pm in JS_PACKAGE_MANAGERS) {
100
+ const lockFilePath = path.join(
101
+ cwd,
102
+ JS_PACKAGE_MANAGERS[pm].lockfile
103
+ );
104
+ if (pathExistsSync(lockFilePath)) {
105
+ if (detectedPm) {
106
+ throw new CliExitError("Found multiple js package manager lockfiles", {
107
+ details: `${JS_PACKAGE_MANAGERS[pm].lockfile} and ${JS_PACKAGE_MANAGERS[detectedPm].lockfile}`,
108
+ forceExit: true
109
+ });
110
+ }
111
+ detectedPm = pm;
112
+ }
113
+ }
114
+ if (detectedPm) return JS_PACKAGE_MANAGERS[detectedPm];
115
+ cwdParts.pop();
116
+ cwd = path.join(...cwdParts);
117
+ if (opts?.workspaceRootPath) {
118
+ if (opts.workspaceRootPath === cwd) break;
119
+ } else {
120
+ if (pathExistsSync(path.join(cwd, ".git"))) break;
121
+ }
122
+ } while (cwd);
123
+ if (process.env.npm_config_user_agent) {
124
+ const pmFromAgent = process.env.npm_config_user_agent.split("/")[0];
125
+ if (Object.keys(JS_PACKAGE_MANAGERS).includes(pmFromAgent)) {
126
+ return JS_PACKAGE_MANAGERS[pmFromAgent];
127
+ }
128
+ }
129
+ if (opts?.exitIfNotFound) {
130
+ throw new CliExitError("Unable to find detect your JavaScript package manager!", {
131
+ suggestion: "We look for lock files (ex: package-lock.json) so you may just need to run a dependency install (ie `npm install`)",
132
+ forceExit: true
133
+ });
134
+ }
135
+ }
136
+ __name(detectJsPackageManager, "detectJsPackageManager");
137
+ function installJsDependency(opts) {
138
+ const packageJsonPath = path.join(opts.packagePath || process.cwd(), "package.json");
139
+ if (!existsSync(packageJsonPath)) return false;
140
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
141
+ if (packageJson.dependencies?.varlock) return false;
142
+ execSync([
143
+ opts.packagePath ? `cd ${opts.packagePath} &&` : "",
144
+ // `add` works in all of them
145
+ `${opts.packageManager} add ${opts.packageName}`,
146
+ opts.isMonoRepoRoot && opts.packageManager === "pnpm" ? "-w" : ""
147
+ ].join(" "));
148
+ return true;
149
+ }
150
+ __name(installJsDependency, "installJsDependency");
151
+
152
+ // src/cli/helpers/pretty-format.ts
153
+ var fmt = {
154
+ decorator: /* @__PURE__ */ __name((s) => ansis_default.magenta(s), "decorator"),
155
+ filePath: /* @__PURE__ */ __name((s) => `\u{1F4C2} ${ansis_default.cyan.italic(s)}`, "filePath"),
156
+ fileName: /* @__PURE__ */ __name((s) => `${ansis_default.cyan.italic(s)}`, "fileName"),
157
+ command: /* @__PURE__ */ __name((s, opts) => {
158
+ let jsPackageManager;
159
+ if (opts?.jsPackageManager === true) {
160
+ jsPackageManager = detectJsPackageManager();
161
+ } else if (opts?.jsPackageManager) {
162
+ jsPackageManager = opts.jsPackageManager;
163
+ }
164
+ if (jsPackageManager) {
165
+ s = `${jsPackageManager.exec} ${s}`;
166
+ }
167
+ return ansis_default.green.italic(s);
168
+ }, "command"),
169
+ packageName: /* @__PURE__ */ __name((s) => ansis_default.green.italic(s), "packageName")
170
+ };
171
+ var logLines = /* @__PURE__ */ __name((lines) => {
172
+ for (const line of lines) {
173
+ if (!line && line !== "") continue;
174
+ console.log(line);
175
+ }
176
+ }, "logLines");
177
+
178
+ export { CliExitError, detectJsPackageManager, fmt, installJsDependency, logLines, pathExists };
179
+ //# sourceMappingURL=chunk-VVKXMIKQ.js.map
180
+ //# sourceMappingURL=chunk-VVKXMIKQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/helpers/exit-error.ts","../../utils/src/fs-utils.ts","../src/cli/helpers/js-package-manager-utils.ts","../src/cli/helpers/pretty-format.ts"],"names":[],"mappings":"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","file":"chunk-VVKXMIKQ.js","sourcesContent":["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 { 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 path from 'node:path';\nimport fs, { existsSync } from 'node:fs';\nimport { pathExistsSync } from '@env-spec/utils/fs-utils';\n\nimport { CliExitError } from './exit-error';\nimport { execSync } from 'node:child_process';\n\nexport type JsPackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun' | 'deno';\n\nexport type JsPackageManagerMeta = {\n name: JsPackageManager;\n lockfile: 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 lockfile: 'package-lock.json',\n add: 'npm install', // add also works\n exec: 'npm exec --',\n dlx: 'npx',\n },\n pnpm: {\n name: 'pnpm',\n lockfile: 'pnpm-lock.yaml',\n add: 'pnpm add',\n exec: 'pnpm exec',\n dlx: 'pnpm dlx',\n },\n yarn: {\n name: 'yarn',\n lockfile: 'yarn.lock',\n add: 'yarn add',\n exec: 'yarn exec --',\n dlx: 'yarn dlx',\n },\n bun: {\n name: 'bun',\n lockfile: '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 lockfile: '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 let cwd = opts?.cwd || process.cwd();\n const cwdParts = cwd.split(path.sep);\n do {\n let pm: JsPackageManager;\n let detectedPm: JsPackageManager | undefined;\n for (pm in JS_PACKAGE_MANAGERS) {\n const lockFilePath = path.join(\n cwd,\n JS_PACKAGE_MANAGERS[pm].lockfile,\n );\n\n if (pathExistsSync(lockFilePath)) {\n // if we find 2 lockfiles at the same level, we throw an error\n if (detectedPm) {\n throw new CliExitError('Found multiple js package manager lockfiles', {\n details: `${JS_PACKAGE_MANAGERS[pm].lockfile} and ${JS_PACKAGE_MANAGERS[detectedPm].lockfile}`,\n forceExit: true,\n });\n }\n detectedPm = pm;\n }\n }\n if (detectedPm) return JS_PACKAGE_MANAGERS[detectedPm];\n\n cwdParts.pop();\n cwd = path.join(...cwdParts);\n if (opts?.workspaceRootPath) {\n if (opts.workspaceRootPath === cwd) break;\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'))) break;\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 return JS_PACKAGE_MANAGERS[pmFromAgent as JsPackageManager];\n }\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 opts.packagePath ? `cd ${opts.packagePath} &&` : '',\n // `add` works in all of them\n `${opts.packageManager} add ${opts.packageName}`,\n (opts.isMonoRepoRoot && opts.packageManager === 'pnpm') ? '-w' : '',\n ].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,6 +1,6 @@
1
- import { getItemSummary, joinAndCompact } from './chunk-CLVBJA4G.js';
2
- import { ansis_default } from './chunk-7UQXFWKN.js';
3
- import { my_dash_default } from './chunk-DROJWTCD.js';
1
+ import { ansis_default, getItemSummary, joinAndCompact } from './chunk-365YVT72.js';
2
+ import { gracefulExit } from './chunk-LHTLO65N.js';
3
+ import { my_dash_default } from './chunk-K2N2TG4M.js';
4
4
  import { __name } from './chunk-XN24GZXQ.js';
5
5
 
6
6
  // src/cli/helpers/error-checks.ts
@@ -18,7 +18,7 @@ function checkForSchemaErrors(envGraph) {
18
18
  console.log("Error parsing .env file");
19
19
  console.log(` ${errLoc.path}:${errLoc.lineNumber}:${errLoc.colNumber}`);
20
20
  console.log(errPreview);
21
- process.exit(1);
21
+ return gracefulExit(1);
22
22
  }
23
23
  }
24
24
  }
@@ -65,5 +65,5 @@ function checkForConfigErrors(envGraph, opts) {
65
65
  __name(checkForConfigErrors, "checkForConfigErrors");
66
66
 
67
67
  export { InvalidEnvError, checkForConfigErrors, checkForSchemaErrors };
68
- //# sourceMappingURL=chunk-DOIKZ3NG.js.map
69
- //# sourceMappingURL=chunk-DOIKZ3NG.js.map
68
+ //# sourceMappingURL=chunk-WFN3ZXGS.js.map
69
+ //# sourceMappingURL=chunk-WFN3ZXGS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/helpers/error-checks.ts"],"names":[],"mappings":"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","file":"chunk-WFN3ZXGS.js","sourcesContent":["import ansis from 'ansis';\nimport { EnvGraph } from '@env-spec/env-graph';\nimport _ from '@env-spec/utils/my-dash';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport { gracefulExit } from 'exit-hook';\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.dataSources) {\n // do we care about loading errors from disabled sources?\n // if (source.disabled) continue;\n\n // console.log(source);\n\n // TODO: use a formatting helper to show the error - which will include location/stack/etc appropriately\n if (source.loadingError) {\n console.log(`🚨 Error encountered while loading ${source.label}`);\n console.log(source.loadingError.message);\n console.log(source.loadingError.location);\n\n const errLoc = source.loadingError.location as any;\n\n const errPreview = [\n errLoc.lineStr,\n `${ansis.gray('-'.repeat(errLoc.colNumber - 1))}${ansis.red('^')}`,\n ].join('\\n');\n\n console.log('Error parsing .env file');\n console.log(` ${errLoc.path}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.log(errPreview);\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\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 const failingItems = _.filter(_.values(envGraph.configSchema), (item) => item.validationState === 'error');\n\n // TODO: use service.isValid?\n if (failingItems.length > 0) {\n console.log(`\\n🚨 🚨 🚨 ${ansis.bold.underline('Configuration is currently invalid ')} 🚨 🚨 🚨\\n`);\n console.log('Invalid items:\\n');\n\n _.each(failingItems, (item) => {\n console.log(getItemSummary(item));\n console.log();\n });\n if (opts?.showAll) {\n console.log();\n console.log(joinAndCompact([\n 'Valid items:',\n ansis.italic.gray('(remove `--show-all` flag to hide)'),\n ]));\n console.log();\n const validItems = _.filter(_.values(envGraph.configSchema), (i) => !!i.isValid);\n _.each(validItems, (item) => {\n console.log(getItemSummary(item));\n });\n }\n\n throw new InvalidEnvError();\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { loadEnvGraph } from './chunk-EVHLEWHL.js';
2
+ import { __name } from './chunk-XN24GZXQ.js';
3
+
4
+ // src/lib/load-graph.ts
5
+ async function loadVarlockEnvGraph(opts) {
6
+ const envGraph = await loadEnvGraph({
7
+ ...opts,
8
+ afterInit: /* @__PURE__ */ __name(async (g) => {
9
+ }, "afterInit")
10
+ });
11
+ return envGraph;
12
+ }
13
+ __name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
14
+
15
+ export { loadVarlockEnvGraph };
16
+ //# sourceMappingURL=chunk-Y7WD33L3.js.map
17
+ //# sourceMappingURL=chunk-Y7WD33L3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/load-graph.ts"],"names":[],"mappings":";;;;AAEA,eAAsB,oBAAoB,IAEvC,EAAA;AACD,EAAM,MAAA,QAAA,GAAW,MAAM,YAAa,CAAA;AAAA,IAClC,GAAG,IAAA;AAAA,IACH,SAAA,gCAAkB,CAAM,KAAA;AAAA,KAAb,EAAA,WAAA;AAAA,GAGZ,CAAA;AAED,EAAO,OAAA,QAAA;AACT;AAXsB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA","file":"chunk-Y7WD33L3.js","sourcesContent":["import { loadEnvGraph } from '@env-spec/env-graph';\n\nexport async function loadVarlockEnvGraph(opts?: {\n currentEnvFallback?: string,\n}) {\n const envGraph = await loadEnvGraph({\n ...opts,\n afterInit: async (g) => {\n // TODO: register varlock resolver\n },\n });\n\n return envGraph;\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  import { define } from './chunk-33ROL4J5.js';
2
- import { checkForSchemaErrors, checkForConfigErrors } from './chunk-DOIKZ3NG.js';
3
- import { loadVarlockEnvGraph, getItemSummary } from './chunk-CLVBJA4G.js';
4
- import { my_dash_default } from './chunk-DROJWTCD.js';
2
+ import { checkForSchemaErrors, checkForConfigErrors } from './chunk-WFN3ZXGS.js';
3
+ import { loadVarlockEnvGraph } from './chunk-Y7WD33L3.js';
4
+ import { getItemSummary } from './chunk-365YVT72.js';
5
+ import { my_dash_default } from './chunk-K2N2TG4M.js';
5
6
  import { __name } from './chunk-XN24GZXQ.js';
6
7
 
7
8
  // src/cli/commands/load.command.ts
@@ -10,14 +11,15 @@ var commandSpec = define({
10
11
  description: "Load env according to schema and resolve values",
11
12
  args: {
12
13
  format: {
13
- type: "string",
14
+ type: "enum",
14
15
  short: "f",
15
- description: "Format of output (if not pretty printed to console)",
16
+ choices: ["pretty", "json", "env", "json-full"],
17
+ description: "Format of output",
16
18
  default: "pretty"
17
19
  },
18
20
  "show-all": {
19
21
  type: "boolean",
20
- description: "When load is fialing, show all items rather than only failing items"
22
+ description: "When load is failing, show all items rather than only failing items"
21
23
  },
22
24
  env: {
23
25
  type: "string",
@@ -73,5 +75,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
73
75
  }, "commandFn");
74
76
 
75
77
  export { commandFn, commandSpec };
76
- //# sourceMappingURL=chunk-C273RDM5.js.map
77
- //# sourceMappingURL=chunk-C273RDM5.js.map
78
+ //# sourceMappingURL=chunk-Z5KNSSLC.js.map
79
+ //# sourceMappingURL=chunk-Z5KNSSLC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":"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","file":"chunk-Z5KNSSLC.js","sourcesContent":["import { define } from 'gunshi';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { getItemSummary } from '../../lib/formatting';\nimport { checkForConfigErrors, checkForSchemaErrors } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\nexport const commandSpec = define({\n name: 'load',\n description: 'Load env according to schema and resolve values',\n args: {\n format: {\n type: 'enum',\n short: 'f',\n choices: ['pretty', 'json', 'env', 'json-full'],\n description: 'Format of output',\n default: 'pretty',\n },\n 'show-all': {\n type: 'boolean',\n description: 'When load is failing, show all items rather than only failing items',\n },\n env: {\n type: 'string',\n description: 'Set the environment (e.g., production, development, etc) - will be overridden by @envFlag in the schema if present',\n },\n },\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { format, 'show-all': showAll } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n });\n checkForSchemaErrors(envGraph);\n\n // TODO: move into a more general post-load hook system\n if (envGraph.schemaDataSource?.decorators.generateTypes) {\n // TODO: much of this logic should move to the definition of the decorator itself\n const typeGenSettings = envGraph.schemaDataSource?.decorators.generateTypes.bareFnArgs?.simplifiedValues;\n if (!_.isPlainObject(typeGenSettings)) {\n throw new Error('@generateTypes - must be a fn call with key/value args');\n }\n if (!typeGenSettings.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.lang}`);\n if (!typeGenSettings.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.path)) throw new Error('@generateTypes - `path` arg must be a string');\n await envGraph.generateTypes(typeGenSettings.lang, typeGenSettings.path);\n }\n\n await envGraph.resolveEnvValues();\n checkForConfigErrors(envGraph, { showAll });\n\n if (format === 'pretty') {\n for (const itemKey in envGraph.configSchema) {\n const item = envGraph.configSchema[itemKey];\n console.log(getItemSummary(item));\n }\n } else if (format === 'json') {\n console.log(JSON.stringify(envGraph.getResolvedEnvObject(), null, 2));\n } else if (format === 'json-full') {\n console.log(JSON.stringify(envGraph.getSerializedGraph(), null, 2));\n } else if (format === 'env') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\n let strValue: string;\n if (value === undefined) {\n strValue = '';\n } else if (typeof value === 'string') {\n strValue = `\"${value.replaceAll('\"', '\\\\\"').replaceAll('\\n', '\\\\n')}\"`;\n } else {\n strValue = JSON.stringify(value);\n }\n console.log(`${key}=${strValue}`);\n }\n } else {\n throw new Error(`Unknown format: ${format}`);\n }\n\n // const resolvedEnv = envGraph.getResolvedEnvObject();\n // console.log(resolvedEnv);\n};\n"]}