varlock 0.0.14 → 0.1.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 (55) hide show
  1. package/README.md +1 -1
  2. package/dist/auto-load.js +3 -2
  3. package/dist/{chunk-QCKADJNV.js → chunk-7L3IF2MK.js} +15 -22
  4. package/dist/chunk-7L3IF2MK.js.map +1 -0
  5. package/dist/{chunk-OJFTFBQG.js → chunk-DTNPJJH4.js} +7 -5
  6. package/dist/chunk-DTNPJJH4.js.map +1 -0
  7. package/dist/{chunk-EQQCW3OI.js → chunk-GY623P3W.js} +4 -4
  8. package/dist/{chunk-EQQCW3OI.js.map → chunk-GY623P3W.js.map} +1 -1
  9. package/dist/{chunk-UPOIK25P.js → chunk-LIIRL4NK.js} +4 -4
  10. package/dist/{chunk-UPOIK25P.js.map → chunk-LIIRL4NK.js.map} +1 -1
  11. package/dist/{chunk-HGJF2DUO.js → chunk-MITVWKKH.js} +4 -4
  12. package/dist/{chunk-HGJF2DUO.js.map → chunk-MITVWKKH.js.map} +1 -1
  13. package/dist/{chunk-FCVBOYES.js → chunk-MLIGQWID.js} +1499 -578
  14. package/dist/chunk-MLIGQWID.js.map +1 -0
  15. package/dist/{chunk-4QTFFYV6.js → chunk-NGDIT6C3.js} +42 -22
  16. package/dist/chunk-NGDIT6C3.js.map +1 -0
  17. package/dist/{chunk-ZYL5D2UA.js → chunk-NMJ5YL5I.js} +10 -6
  18. package/dist/chunk-NMJ5YL5I.js.map +1 -0
  19. package/dist/chunk-QT5E2RY6.js +56 -0
  20. package/dist/chunk-QT5E2RY6.js.map +1 -0
  21. package/dist/cli/cli-executable.js +82 -51
  22. package/dist/cli/cli-executable.js.map +1 -1
  23. package/dist/dotenv-compat.js +3 -2
  24. package/dist/{env-DLUhFCnC.d.ts → env-graph-eF0B8G0j.d.ts} +210 -55
  25. package/dist/index.d.ts +5 -2
  26. package/dist/index.js +3 -3
  27. package/dist/init.command-ASK74XBV.js +8 -0
  28. package/dist/{init.command-VK4OGIYP.js.map → init.command-ASK74XBV.js.map} +1 -1
  29. package/dist/lib/exec-sync-varlock.d.ts +14 -0
  30. package/dist/lib/exec-sync-varlock.js +4 -0
  31. package/dist/lib/exec-sync-varlock.js.map +1 -0
  32. package/dist/load.command-VUKBSBEV.js +8 -0
  33. package/dist/{load.command-N7FMBREX.js.map → load.command-VUKBSBEV.js.map} +1 -1
  34. package/dist/plugin-lib.d.ts +9 -0
  35. package/dist/plugin-lib.js +3 -0
  36. package/dist/plugin-lib.js.map +1 -0
  37. package/dist/run.command-XQ64Z2TN.js +8 -0
  38. package/dist/{run.command-LYY2M5AP.js.map → run.command-XQ64Z2TN.js.map} +1 -1
  39. package/dist/runtime/env.d.ts +28 -1
  40. package/dist/telemetry.command-HHZVBFC7.js +8 -0
  41. package/dist/{telemetry.command-QTEDXKIG.js.map → telemetry.command-HHZVBFC7.js.map} +1 -1
  42. package/package.json +22 -10
  43. package/dist/chunk-4QTFFYV6.js.map +0 -1
  44. package/dist/chunk-FCVBOYES.js.map +0 -1
  45. package/dist/chunk-J5SIYSJV.js +0 -146
  46. package/dist/chunk-J5SIYSJV.js.map +0 -1
  47. package/dist/chunk-OJFTFBQG.js.map +0 -1
  48. package/dist/chunk-QCKADJNV.js.map +0 -1
  49. package/dist/chunk-ZYL5D2UA.js.map +0 -1
  50. package/dist/init.command-VK4OGIYP.js +0 -8
  51. package/dist/load.command-N7FMBREX.js +0 -8
  52. package/dist/login.command-GQCJY4NK.js +0 -8
  53. package/dist/login.command-GQCJY4NK.js.map +0 -1
  54. package/dist/run.command-LYY2M5AP.js +0 -8
  55. package/dist/telemetry.command-QTEDXKIG.js +0 -8
@@ -1,22 +1,33 @@
1
- import { ansis_default, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-FCVBOYES.js';
1
+ import { ansis_default, VarlockError, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-MLIGQWID.js';
2
2
  import { __name } from './chunk-XN24GZXQ.js';
3
3
 
4
4
  // src/cli/helpers/error-checks.ts
5
+ function showErrorLocationDetails(err) {
6
+ if (!(err instanceof VarlockError) || !err.location) return;
7
+ const errLoc = err.location;
8
+ const errPreview = [
9
+ errLoc.lineStr,
10
+ `${ansis_default.gray("-".repeat(errLoc.colNumber - 1))}${ansis_default.red("^")}`
11
+ ].join("\n");
12
+ console.log("");
13
+ console.log(`\u{1F4C2} ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);
14
+ console.log(errPreview);
15
+ }
16
+ __name(showErrorLocationDetails, "showErrorLocationDetails");
5
17
  function checkForSchemaErrors(envGraph) {
6
18
  for (const source of envGraph.sortedDataSources) {
7
19
  if (source.loadingError) {
8
- console.log(`\u{1F6A8} Error encountered while loading ${source.label}`);
20
+ console.log(`\u{1F6A8} Error encountered while loading ${source.label}
21
+ `);
9
22
  console.log(source.loadingError.message);
10
- if ("location" in source.loadingError) {
11
- console.log(source.loadingError.location);
12
- const errLoc = source.loadingError.location;
13
- const errPreview = [
14
- errLoc.lineStr,
15
- `${ansis_default.gray("-".repeat(errLoc.colNumber - 1))}${ansis_default.red("^")}`
16
- ].join("\n");
17
- console.log("Error parsing .env file");
18
- console.log(` ${errLoc.path}:${errLoc.lineNumber}:${errLoc.colNumber}`);
19
- console.log(errPreview);
23
+ showErrorLocationDetails(source.loadingError);
24
+ return gracefulExit(1);
25
+ }
26
+ if (source.schemaErrors.length) {
27
+ console.log(`\u{1F6A8} Error(s) encountered in ${source.label}`);
28
+ for (const schemaErr of source.schemaErrors) {
29
+ console.log(`- ${schemaErr.message}`);
30
+ showErrorLocationDetails(schemaErr);
20
31
  }
21
32
  return gracefulExit(1);
22
33
  }
@@ -37,26 +48,35 @@ var InvalidEnvError = class extends Error {
37
48
  }
38
49
  };
39
50
  function checkForConfigErrors(envGraph, opts) {
51
+ for (const source of envGraph.sortedDataSources) {
52
+ if (source.resolutionErrors.length) {
53
+ console.log(`\u{1F6A8} Root decorator error(s) in ${source.label}`);
54
+ for (const err of source.resolutionErrors) {
55
+ console.log(`- ${err.message}`);
56
+ showErrorLocationDetails(err);
57
+ }
58
+ }
59
+ }
40
60
  const failingItems = my_dash_default.filter(my_dash_default.values(envGraph.configSchema), (item) => item.validationState === "error");
41
61
  if (failingItems.length > 0) {
42
- console.log(`
62
+ console.error(`
43
63
  \u{1F6A8} \u{1F6A8} \u{1F6A8} ${ansis_default.bold.underline("Configuration is currently invalid ")} \u{1F6A8} \u{1F6A8} \u{1F6A8}
44
64
  `);
45
- console.log("Invalid items:\n");
65
+ console.error("Invalid items:\n");
46
66
  my_dash_default.each(failingItems, (item) => {
47
- console.log(getItemSummary(item));
48
- console.log();
67
+ console.error(getItemSummary(item));
68
+ console.error();
49
69
  });
50
70
  if (opts?.showAll) {
51
- console.log();
52
- console.log(joinAndCompact([
71
+ console.error();
72
+ console.error(joinAndCompact([
53
73
  "Valid items:",
54
74
  ansis_default.italic.gray("(remove `--show-all` flag to hide)")
55
75
  ]));
56
- console.log();
76
+ console.error();
57
77
  const validItems = my_dash_default.filter(my_dash_default.values(envGraph.configSchema), (i) => !!i.isValid);
58
78
  my_dash_default.each(validItems, (item) => {
59
- console.log(getItemSummary(item));
79
+ console.error(getItemSummary(item));
60
80
  });
61
81
  }
62
82
  throw new InvalidEnvError();
@@ -76,5 +96,5 @@ async function loadVarlockEnvGraph(opts) {
76
96
  __name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
77
97
 
78
98
  export { InvalidEnvError, checkForConfigErrors, checkForSchemaErrors, loadVarlockEnvGraph };
79
- //# sourceMappingURL=chunk-4QTFFYV6.js.map
80
- //# sourceMappingURL=chunk-4QTFFYV6.js.map
99
+ //# sourceMappingURL=chunk-NGDIT6C3.js.map
100
+ //# sourceMappingURL=chunk-NGDIT6C3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/helpers/error-checks.ts","../src/lib/load-graph.ts"],"names":[],"mappings":"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","file":"chunk-NGDIT6C3.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 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 // 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`);\n\n console.log(source.loadingError.message);\n showErrorLocationDetails(source.loadingError);\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 showErrorLocationDetails(err);\n }\n }\n }\n\n\n\n const failingItems = _.filter(_.values(envGraph.configSchema), (item: ConfigItem) => 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 = _.filter(_.values(envGraph.configSchema), (i: ConfigItem) => !!i.isValid);\n _.each(validItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n });\n }\n\n throw new InvalidEnvError();\n }\n}\n","import { loadEnvGraph } from '../../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,14 +1,18 @@
1
- import { patchGlobalConsole } from './chunk-C5BEZMSO.js';
2
1
  import { patchGlobalResponse } from './chunk-OM3JCP4E.js';
3
2
  import { patchGlobalServerResponse } from './chunk-7JMYT62X.js';
3
+ import { execSyncVarlock } from './chunk-QT5E2RY6.js';
4
+ import { patchGlobalConsole } from './chunk-C5BEZMSO.js';
4
5
  import { initVarlockEnv } from './chunk-2SPIWTVE.js';
5
- import { execSync } from 'child_process';
6
6
 
7
- var execResult = execSync("varlock load --format json-full");
8
- process.env.__VARLOCK_ENV = execResult.toString();
7
+ // src/auto-load.ts
8
+ var execResult = execSyncVarlock("load --format json-full", {
9
+ exitOnError: true,
10
+ showLogsOnError: true
11
+ });
12
+ process.env.__VARLOCK_ENV = execResult;
9
13
  initVarlockEnv();
10
14
  patchGlobalConsole();
11
15
  patchGlobalServerResponse();
12
16
  patchGlobalResponse();
13
- //# sourceMappingURL=chunk-ZYL5D2UA.js.map
14
- //# sourceMappingURL=chunk-ZYL5D2UA.js.map
17
+ //# sourceMappingURL=chunk-NMJ5YL5I.js.map
18
+ //# sourceMappingURL=chunk-NMJ5YL5I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/auto-load.ts"],"names":[],"mappings":";;;;;;;AAaA,IAAM,UAAA,GAAa,gBAAgB,yBAAA,EAA2B;AAAA,EAC5D,WAAA,EAAa,IAAA;AAAA,EACb,eAAA,EAAiB;AACnB,CAAC,CAAA;AACD,OAAA,CAAQ,IAAI,aAAA,GAAgB,UAAA;AAG5B,cAAA,EAAe;AAEf,kBAAA,EAAmB;AACnB,yBAAA,EAA0B;AAC1B,mBAAA,EAAoB","file":"chunk-NMJ5YL5I.js","sourcesContent":["import { execSyncVarlock } from './lib/exec-sync-varlock';\n\nimport { initVarlockEnv } from './runtime/env';\nimport { patchGlobalConsole } from './runtime/patch-console';\nimport { patchGlobalServerResponse } from './runtime/patch-server-response';\nimport { patchGlobalResponse } from './runtime/patch-response';\n\n// The varlock loading process uses async calls, but we need this to run synchronously.\n// because even with top level await, we run into hoisting issues where things happen out of order\n// so we call out to the CLI using execSync\n// this also isolates the varlock loading process from the end user process\n\n\nconst execResult = execSyncVarlock('load --format json-full', {\n exitOnError: true,\n showLogsOnError: true,\n});\nprocess.env.__VARLOCK_ENV = execResult;\n\n// initialize varlock and patch globals as necessary\ninitVarlockEnv();\n// these will be no-ops if these are disabled by settings\npatchGlobalConsole();\npatchGlobalServerResponse();\npatchGlobalResponse();\n\n"]}
@@ -0,0 +1,56 @@
1
+ import { __name } from './chunk-XN24GZXQ.js';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ import { execSync } from 'child_process';
5
+
6
+ function execSyncVarlock(command, opts) {
7
+ try {
8
+ try {
9
+ const result = execSync(`varlock ${command}`, {
10
+ ...opts?.env && { env: opts.env },
11
+ stdio: "pipe"
12
+ });
13
+ return result.toString();
14
+ } catch (err) {
15
+ if (err.status !== 127) throw err;
16
+ }
17
+ let currentDir = process.cwd();
18
+ while (currentDir) {
19
+ const possibleBinPath = path.join(currentDir, "node_modules", ".bin");
20
+ if (fs.existsSync(possibleBinPath)) {
21
+ const possibleVarlockPath = path.join(possibleBinPath, "varlock");
22
+ if (fs.existsSync(possibleVarlockPath)) {
23
+ const result = execSync(`${possibleVarlockPath} ${command}`, {
24
+ ...opts,
25
+ stdio: "pipe"
26
+ });
27
+ return result.toString();
28
+ } else {
29
+ throw new Error("Unable to find varlock executable");
30
+ }
31
+ }
32
+ const parentDir = path.dirname(currentDir);
33
+ if (parentDir === currentDir) break;
34
+ currentDir = path.dirname(currentDir);
35
+ }
36
+ throw new Error("Unable to find varlock executable");
37
+ } catch (err) {
38
+ const errAny = err;
39
+ if (opts?.showLogsOnError) {
40
+ if (errAny.stdout) console.log(errAny.stdout.toString());
41
+ if (errAny.stderr) console.error(errAny.stderr.toString());
42
+ if (!errAny.stdout && !errAny.stderr) {
43
+ console.error(errAny);
44
+ }
45
+ }
46
+ if (opts?.exitOnError) {
47
+ process.exit(err.status ?? 1);
48
+ }
49
+ throw err;
50
+ }
51
+ }
52
+ __name(execSyncVarlock, "execSyncVarlock");
53
+
54
+ export { execSyncVarlock };
55
+ //# sourceMappingURL=chunk-QT5E2RY6.js.map
56
+ //# sourceMappingURL=chunk-QT5E2RY6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/exec-sync-varlock.ts"],"names":[],"mappings":";;;;;AAcO,SAAS,eAAA,CACd,SACA,IAAA,EAIA;AACA,EAAA,IAAI;AAIF,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI;AAAA,QAC5C,GAAG,IAAA,EAAM,GAAA,IAAO,EAAE,GAAA,EAAK,KAAK,GAAA,EAAI;AAAA,QAChC,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,OAAO,OAAO,QAAA,EAAS;AAAA,IACzB,SAAS,GAAA,EAAK;AAEZ,MAAA,IAAK,GAAA,CAAY,MAAA,KAAW,GAAA,EAAK,MAAM,GAAA;AAAA,IACzC;AAKA,IAAA,IAAI,UAAA,GAAa,QAAQ,GAAA,EAAI;AAC7B,IAAA,OAAO,UAAA,EAAY;AACjB,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY,gBAAgB,MAAM,CAAA;AACpE,MAAA,IAAI,EAAA,CAAG,UAAA,CAAW,eAAe,CAAA,EAAG;AAClC,QAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,IAAA,CAAK,eAAA,EAAiB,SAAS,CAAA;AAChE,QAAA,IAAI,EAAA,CAAG,UAAA,CAAW,mBAAmB,CAAA,EAAG;AACtC,UAAA,MAAM,SAAS,QAAA,CAAS,CAAA,EAAG,mBAAmB,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI;AAAA,YAC3D,GAAG,IAAA;AAAA,YACH,KAAA,EAAO;AAAA,WACR,CAAA;AAGD,UAAA,OAAO,OAAO,QAAA,EAAS;AAAA,QACzB,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,QACrD;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AACzC,MAAA,IAAI,cAAc,UAAA,EAAY;AAC9B,MAAA,UAAA,GAAa,IAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,IACtC;AACA,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACrD,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,MAAA,GAAS,GAAA;AACf,IAAA,IAAI,MAAM,eAAA,EAAiB;AAEzB,MAAA,IAAI,OAAO,MAAA,EAAQ,OAAA,CAAQ,IAAI,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AACvD,MAAA,IAAI,OAAO,MAAA,EAAQ,OAAA,CAAQ,MAAM,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAEzD,MAAA,IAAI,CAAC,MAAA,CAAO,MAAA,IAAU,CAAC,OAAO,MAAA,EAAQ;AACpC,QAAA,OAAA,CAAQ,MAAM,MAAM,CAAA;AAAA,MACtB;AAAA,IACF;AACA,IAAA,IAAI,MAAM,WAAA,EAAa;AACrB,MAAA,OAAA,CAAQ,IAAA,CAAM,GAAA,CAAY,MAAA,IAAU,CAAC,CAAA;AAAA,IACvC;AACA,IAAA,MAAM,GAAA;AAAA,EACR;AACF;AAhEgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"chunk-QT5E2RY6.js","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport { 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\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) {\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 stdio: 'pipe',\n });\n return result.toString();\n } catch (err) {\n // code 127 means not found\n if ((err as any).status !== 127) throw err;\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 // so we'll walk up the directory tree looking for it\n let currentDir = process.cwd();\n while (currentDir) {\n const possibleBinPath = path.join(currentDir, 'node_modules', '.bin');\n if (fs.existsSync(possibleBinPath)) {\n const possibleVarlockPath = path.join(possibleBinPath, 'varlock');\n if (fs.existsSync(possibleVarlockPath)) {\n const result = execSync(`${possibleVarlockPath} ${command}`, {\n ...opts,\n stdio: 'pipe',\n });\n // const commandArgs = command.split(' ').filter(Boolean);\n // const result = execFileSync(possibleVarlockPath, commandArgs, opts);\n return result.toString();\n } else {\n throw new Error('Unable to find varlock executable');\n }\n }\n // when we reach the root, it will stop\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) break;\n currentDir = path.dirname(currentDir);\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"]}
@@ -1,25 +1,24 @@
1
- import { commandSpec } from '../chunk-EQQCW3OI.js';
2
- import { commandSpec as commandSpec$1 } from '../chunk-QCKADJNV.js';
3
- import { commandSpec as commandSpec$2 } from '../chunk-HGJF2DUO.js';
1
+ import { commandSpec as commandSpec$4 } from '../chunk-LIIRL4NK.js';
2
+ import { commandSpec } from '../chunk-GY623P3W.js';
3
+ import { CliExitError, fmt } from '../chunk-DTNPJJH4.js';
4
+ import { commandSpec as commandSpec$1 } from '../chunk-7L3IF2MK.js';
5
+ import { commandSpec as commandSpec$2 } from '../chunk-MITVWKKH.js';
4
6
  import { commandSpec as commandSpec$3 } from '../chunk-RZT65DRA.js';
5
- import { commandSpec as commandSpec$4 } from '../chunk-UPOIK25P.js';
6
- import { CONFIG, commandSpec as commandSpec$5 } from '../chunk-J5SIYSJV.js';
7
- import { CliExitError, fmt } from '../chunk-OJFTFBQG.js';
8
7
  import { cli } from '../chunk-33ROL4J5.js';
9
- import { InvalidEnvError } from '../chunk-4QTFFYV6.js';
10
- import { ansis_default, gracefulExit, EnvSourceParseError, asyncExitHook } from '../chunk-FCVBOYES.js';
8
+ import { InvalidEnvError } from '../chunk-NGDIT6C3.js';
9
+ import { ansis_default, gracefulExit, asyncExitHook } from '../chunk-MLIGQWID.js';
11
10
  import '../chunk-FGMXIEFA.js';
12
11
  import { __commonJS, __name, __toESM } from '../chunk-XN24GZXQ.js';
13
12
  import os2 from 'os';
14
13
  import crypto, { createHash } from 'crypto';
15
- import { join } from 'path';
14
+ import { join, dirname } from 'path';
16
15
  import fs, { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
17
16
  import Debug from 'debug';
18
17
  import process2 from 'process';
19
18
 
20
- // ../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/vendors.json
19
+ // ../../node_modules/.pnpm/ci-info@4.3.1/node_modules/ci-info/vendors.json
21
20
  var require_vendors = __commonJS({
22
- "../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/vendors.json"(exports, module) {
21
+ "../../node_modules/.pnpm/ci-info@4.3.1/node_modules/ci-info/vendors.json"(exports, module) {
23
22
  module.exports = [
24
23
  {
25
24
  name: "Agola CI",
@@ -381,9 +380,9 @@ var require_vendors = __commonJS({
381
380
  }
382
381
  });
383
382
 
384
- // ../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.js
383
+ // ../../node_modules/.pnpm/ci-info@4.3.1/node_modules/ci-info/index.js
385
384
  var require_ci_info = __commonJS({
386
- "../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.js"(exports) {
385
+ "../../node_modules/.pnpm/ci-info@4.3.1/node_modules/ci-info/index.js"(exports) {
387
386
  var vendors = require_vendors();
388
387
  var env = process.env;
389
388
  Object.defineProperty(exports, "_vendors", {
@@ -394,19 +393,21 @@ var require_ci_info = __commonJS({
394
393
  exports.name = null;
395
394
  exports.isPR = null;
396
395
  exports.id = null;
397
- vendors.forEach(function(vendor) {
398
- const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env];
399
- const isCI2 = envs.every(function(obj) {
400
- return checkEnv(obj);
396
+ if (env.CI !== "false") {
397
+ vendors.forEach(function(vendor) {
398
+ const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env];
399
+ const isCI2 = envs.every(function(obj) {
400
+ return checkEnv(obj);
401
+ });
402
+ exports[vendor.constant] = isCI2;
403
+ if (!isCI2) {
404
+ return;
405
+ }
406
+ exports.name = vendor.name;
407
+ exports.isPR = checkPR(vendor);
408
+ exports.id = vendor.constant;
401
409
  });
402
- exports[vendor.constant] = isCI2;
403
- if (!isCI2) {
404
- return;
405
- }
406
- exports.name = vendor.name;
407
- exports.isPR = checkPR(vendor);
408
- exports.id = vendor.constant;
409
- });
410
+ }
410
411
  exports.isCI = !!(env.CI !== "false" && // Bypass all checks if CI env is explicitly set to 'false'
411
412
  (env.BUILD_ID || // Jenkins, Cloudbees
412
413
  env.BUILD_NUMBER || // Jenkins, TeamCity
@@ -493,13 +494,46 @@ function hasDockerCGroup() {
493
494
  }
494
495
  }
495
496
  __name(hasDockerCGroup, "hasDockerCGroup");
496
- function isDocker() {
497
- if (isDockerCached === void 0) {
498
- isDockerCached = hasDockerEnv() || hasDockerCGroup();
497
+ function hasDockerMountInfo() {
498
+ try {
499
+ return fs.readFileSync("/proc/self/mountinfo", "utf8").includes("/docker/containers/");
500
+ } catch {
501
+ return false;
499
502
  }
503
+ }
504
+ __name(hasDockerMountInfo, "hasDockerMountInfo");
505
+ function isDocker() {
506
+ isDockerCached ??= hasDockerEnv() || hasDockerCGroup() || hasDockerMountInfo();
500
507
  return isDockerCached;
501
508
  }
502
509
  __name(isDocker, "isDocker");
510
+ var isDockerCached2;
511
+ function hasDockerEnv2() {
512
+ try {
513
+ fs.statSync("/.dockerenv");
514
+ return true;
515
+ } catch {
516
+ return false;
517
+ }
518
+ }
519
+ __name(hasDockerEnv2, "hasDockerEnv");
520
+ function hasDockerCGroup2() {
521
+ try {
522
+ return fs.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
523
+ } catch {
524
+ return false;
525
+ }
526
+ }
527
+ __name(hasDockerCGroup2, "hasDockerCGroup");
528
+ function isDocker2() {
529
+ if (isDockerCached2 === void 0) {
530
+ isDockerCached2 = hasDockerEnv2() || hasDockerCGroup2();
531
+ }
532
+ return isDockerCached2;
533
+ }
534
+ __name(isDocker2, "isDocker");
535
+
536
+ // ../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js
503
537
  var cachedResult;
504
538
  var hasContainerEnv = /* @__PURE__ */ __name(() => {
505
539
  try {
@@ -511,7 +545,7 @@ var hasContainerEnv = /* @__PURE__ */ __name(() => {
511
545
  }, "hasContainerEnv");
512
546
  function isInsideContainer() {
513
547
  if (cachedResult === void 0) {
514
- cachedResult = hasContainerEnv() || isDocker();
548
+ cachedResult = hasContainerEnv() || isDocker2();
515
549
  }
516
550
  return cachedResult;
517
551
  }
@@ -538,7 +572,14 @@ var is_wsl_default = process2.env.__IS_WSL_TEST__ ? isWsl : isWsl();
538
572
 
539
573
  // package.json
540
574
  var package_default = {
541
- version: "0.0.14"};
575
+ version: "0.1.0"};
576
+
577
+ // src/config.ts
578
+ var CONFIG = {
579
+ // varlock.dev app
580
+ POSTHOG_API_KEY: "phc_bfzH97VIta8yQa8HrsgmitqS6rTydjMISs0m8aqJTnq",
581
+ POSTHOG_HOST: "https://ph.varlock.dev"
582
+ };
542
583
 
543
584
  // src/cli/helpers/telemetry.ts
544
585
  var debug = Debug("varlock:telemetry");
@@ -608,13 +649,15 @@ function getProjectGitRemoteUrl() {
608
649
  try {
609
650
  let gitDirPath;
610
651
  let currentDir = process.cwd();
611
- while (currentDir && currentDir !== "/") {
652
+ while (currentDir) {
612
653
  const possibleGitDirPath = join(currentDir, ".git");
613
654
  if (existsSync(possibleGitDirPath)) {
614
655
  gitDirPath = possibleGitDirPath;
615
656
  break;
616
657
  }
617
- currentDir = join(currentDir, "..");
658
+ const parentDir = dirname(currentDir);
659
+ if (parentDir === currentDir) break;
660
+ currentDir = parentDir;
618
661
  }
619
662
  if (!gitDirPath) return void 0;
620
663
  const gitConfigContents = readFileSync(join(gitDirPath, "config"), "utf-8");
@@ -710,10 +753,10 @@ __name(trackCommand, "trackCommand");
710
753
 
711
754
  // src/cli/cli-executable.ts
712
755
  var versionId = package_default.version;
713
- function buildLazyCommand(commandSpec7, loadCommandFn) {
714
- const commandName = commandSpec7.name;
756
+ function buildLazyCommand(commandSpec6, loadCommandFn) {
757
+ const commandName = commandSpec6.name;
715
758
  return {
716
- ...commandSpec7,
759
+ ...commandSpec6,
717
760
  run: /* @__PURE__ */ __name(async (...args) => {
718
761
  await trackCommand(commandName, { command: commandName });
719
762
  const commandSpecAndFn = await loadCommandFn();
@@ -723,12 +766,11 @@ function buildLazyCommand(commandSpec7, loadCommandFn) {
723
766
  }
724
767
  __name(buildLazyCommand, "buildLazyCommand");
725
768
  var subCommands = /* @__PURE__ */ new Map();
726
- subCommands.set("init", buildLazyCommand(commandSpec, async () => await import('../init.command-VK4OGIYP.js')));
727
- subCommands.set("load", buildLazyCommand(commandSpec$1, async () => await import('../load.command-N7FMBREX.js')));
728
- subCommands.set("run", buildLazyCommand(commandSpec$2, async () => await import('../run.command-LYY2M5AP.js')));
769
+ subCommands.set("init", buildLazyCommand(commandSpec, async () => await import('../init.command-ASK74XBV.js')));
770
+ subCommands.set("load", buildLazyCommand(commandSpec$1, async () => await import('../load.command-VUKBSBEV.js')));
771
+ subCommands.set("run", buildLazyCommand(commandSpec$2, async () => await import('../run.command-XQ64Z2TN.js')));
729
772
  subCommands.set("help", buildLazyCommand(commandSpec$3, async () => await import('../help.command-B7VWA53B.js')));
730
- subCommands.set("telemetry", buildLazyCommand(commandSpec$4, async () => await import('../telemetry.command-QTEDXKIG.js')));
731
- subCommands.set("login", buildLazyCommand(commandSpec$5, async () => await import('../login.command-GQCJY4NK.js')));
773
+ subCommands.set("telemetry", buildLazyCommand(commandSpec$4, async () => await import('../telemetry.command-HHZVBFC7.js')));
732
774
  (/* @__PURE__ */ __name(async function go() {
733
775
  try {
734
776
  let args = process.argv.slice(2);
@@ -763,17 +805,6 @@ subCommands.set("login", buildLazyCommand(commandSpec$5, async () => await impor
763
805
  gracefulExit(1);
764
806
  } else if (error instanceof CliExitError || error instanceof InvalidEnvError) {
765
807
  console.error(error.getFormattedOutput());
766
- } else if (error instanceof EnvSourceParseError) {
767
- console.error(`\u{1F6A8} Error encountered while loading ${error.location.path}`);
768
- console.error(error.message);
769
- const errLoc = error.location;
770
- const errPreview = [
771
- errLoc.lineStr,
772
- `${ansis_default.gray("-".repeat(errLoc.colNumber - 1))}${ansis_default.red("^")}`
773
- ].join("\n");
774
- console.error("Error parsing .env file");
775
- console.error(fmt.filePath(`${errLoc.path}:${errLoc.lineNumber}:${errLoc.colNumber}`));
776
- console.error(errPreview);
777
808
  gracefulExit(1);
778
809
  } else {
779
810
  throw error;