varlock 0.1.1 → 0.1.3

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 (54) hide show
  1. package/dist/auto-load.js +6 -6
  2. package/dist/{chunk-RWBSXJV6.js → chunk-5IMCRQTM.js} +3 -3
  3. package/dist/{chunk-RWBSXJV6.js.map → chunk-5IMCRQTM.js.map} +1 -1
  4. package/dist/{chunk-R66KFGSX.js → chunk-7NW6BFR4.js} +7 -7
  5. package/dist/chunk-7NW6BFR4.js.map +1 -0
  6. package/dist/chunk-7SH6C6WJ.js +18 -0
  7. package/dist/{chunk-5NNVZXCM.js.map → chunk-7SH6C6WJ.js.map} +1 -1
  8. package/dist/{chunk-D7YI7IQX.js → chunk-BL44E664.js} +4 -4
  9. package/dist/{chunk-D7YI7IQX.js.map → chunk-BL44E664.js.map} +1 -1
  10. package/dist/{chunk-H3R4W3XK.js → chunk-F6JOK3GB.js} +3 -3
  11. package/dist/{chunk-H3R4W3XK.js.map → chunk-F6JOK3GB.js.map} +1 -1
  12. package/dist/{chunk-QT5E2RY6.js → chunk-FUDH2TTI.js} +6 -3
  13. package/dist/chunk-FUDH2TTI.js.map +1 -0
  14. package/dist/{chunk-7UWLKQXP.js → chunk-G7ZBO2TN.js} +68 -19
  15. package/dist/chunk-G7ZBO2TN.js.map +1 -0
  16. package/dist/{chunk-7FI2PPMC.js → chunk-HPNRKYVF.js} +3 -3
  17. package/dist/{chunk-7FI2PPMC.js.map → chunk-HPNRKYVF.js.map} +1 -1
  18. package/dist/{chunk-2VZORH2Y.js → chunk-JXRYPLCG.js} +4 -4
  19. package/dist/{chunk-2VZORH2Y.js.map → chunk-JXRYPLCG.js.map} +1 -1
  20. package/dist/{chunk-2JGPOSVQ.js → chunk-MSRPV5WH.js} +7 -6
  21. package/dist/chunk-MSRPV5WH.js.map +1 -0
  22. package/dist/{chunk-WDC67GVB.js → chunk-NSY7JMFV.js} +3 -3
  23. package/dist/{chunk-WDC67GVB.js.map → chunk-NSY7JMFV.js.map} +1 -1
  24. package/dist/{chunk-VYAOZFZB.js → chunk-UIMI2QPX.js} +4 -4
  25. package/dist/{chunk-VYAOZFZB.js.map → chunk-UIMI2QPX.js.map} +1 -1
  26. package/dist/{chunk-IBAUYNXV.js → chunk-YYQ2MFVT.js} +3 -3
  27. package/dist/{chunk-IBAUYNXV.js.map → chunk-YYQ2MFVT.js.map} +1 -1
  28. package/dist/cli/cli-executable.js +12 -12
  29. package/dist/cli/cli-executable.js.map +1 -1
  30. package/dist/dotenv-compat.js +6 -6
  31. package/dist/index.js +7 -7
  32. package/dist/init.command-UNUBEC3G.js +8 -0
  33. package/dist/{init.command-A52ZWKL2.js.map → init.command-UNUBEC3G.js.map} +1 -1
  34. package/dist/lib/exec-sync-varlock.js +1 -1
  35. package/dist/load.command-RBKBJTF5.js +8 -0
  36. package/dist/{load.command-C75DTSKP.js.map → load.command-RBKBJTF5.js.map} +1 -1
  37. package/dist/run.command-6RN6ROVR.js +8 -0
  38. package/dist/{run.command-YSQDB4GE.js.map → run.command-6RN6ROVR.js.map} +1 -1
  39. package/dist/runtime/env.js +1 -1
  40. package/dist/runtime/patch-console.js +2 -2
  41. package/dist/runtime/patch-response.js +2 -2
  42. package/dist/runtime/patch-server-response.js +2 -2
  43. package/dist/telemetry.command-SRZE3UNE.js +8 -0
  44. package/dist/{telemetry.command-JIHKG3ZH.js.map → telemetry.command-SRZE3UNE.js.map} +1 -1
  45. package/package.json +2 -2
  46. package/dist/chunk-2JGPOSVQ.js.map +0 -1
  47. package/dist/chunk-5NNVZXCM.js +0 -18
  48. package/dist/chunk-7UWLKQXP.js.map +0 -1
  49. package/dist/chunk-QT5E2RY6.js.map +0 -1
  50. package/dist/chunk-R66KFGSX.js.map +0 -1
  51. package/dist/init.command-A52ZWKL2.js +0 -8
  52. package/dist/load.command-C75DTSKP.js +0 -8
  53. package/dist/run.command-YSQDB4GE.js +0 -8
  54. package/dist/telemetry.command-JIHKG3ZH.js +0 -8
@@ -1,4 +1,4 @@
1
- import { ansis_default, VarlockError, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-7UWLKQXP.js';
1
+ import { ansis_default, VarlockError, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-G7ZBO2TN.js';
2
2
  import { __name } from './chunk-XN24GZXQ.js';
3
3
 
4
4
  // src/cli/helpers/error-checks.ts
@@ -96,5 +96,5 @@ async function loadVarlockEnvGraph(opts) {
96
96
  __name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
97
97
 
98
98
  export { InvalidEnvError, checkForConfigErrors, checkForSchemaErrors, loadVarlockEnvGraph };
99
- //# sourceMappingURL=chunk-H3R4W3XK.js.map
100
- //# sourceMappingURL=chunk-H3R4W3XK.js.map
99
+ //# sourceMappingURL=chunk-F6JOK3GB.js.map
100
+ //# sourceMappingURL=chunk-F6JOK3GB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/helpers/error-checks.ts","../src/lib/load-graph.ts"],"names":[],"mappings":"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","file":"chunk-H3R4W3XK.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
+ {"version":3,"sources":["../src/cli/helpers/error-checks.ts","../src/lib/load-graph.ts"],"names":[],"mappings":"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","file":"chunk-F6JOK3GB.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,8 +1,11 @@
1
1
  import { __name } from './chunk-XN24GZXQ.js';
2
2
  import path from 'path';
3
3
  import fs from 'fs';
4
+ import os from 'os';
4
5
  import { execSync } from 'child_process';
5
6
 
7
+ var platform = os.platform();
8
+ var isWindows = platform.match(/^win/i);
6
9
  function execSyncVarlock(command, opts) {
7
10
  try {
8
11
  try {
@@ -12,7 +15,7 @@ function execSyncVarlock(command, opts) {
12
15
  });
13
16
  return result.toString();
14
17
  } catch (err) {
15
- if (err.status !== 127) throw err;
18
+ if (!isWindows && err.status !== 127) throw err;
16
19
  }
17
20
  let currentDir = process.cwd();
18
21
  while (currentDir) {
@@ -52,5 +55,5 @@ function execSyncVarlock(command, opts) {
52
55
  __name(execSyncVarlock, "execSyncVarlock");
53
56
 
54
57
  export { execSyncVarlock };
55
- //# sourceMappingURL=chunk-QT5E2RY6.js.map
56
- //# sourceMappingURL=chunk-QT5E2RY6.js.map
58
+ //# sourceMappingURL=chunk-FUDH2TTI.js.map
59
+ //# sourceMappingURL=chunk-FUDH2TTI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/exec-sync-varlock.ts"],"names":[],"mappings":";;;;;;AASA,IAAM,QAAA,GAAW,GAAG,QAAA,EAAS;AAC7B,IAAM,SAAA,GAAY,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA;AASjC,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,IAAI,CAAC,SAAA,IAAc,GAAA,CAAY,MAAA,KAAW,KAAK,MAAM,GAAA;AAAA,IAEvD;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;AACD,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;AA/DgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA","file":"chunk-FUDH2TTI.js","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\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\nconst platform = os.platform();\nconst isWindows = platform.match(/^win/i);\n\n\n/**\n * small helper to call execSync and call the varlock cli\n *\n * when end user runs via a package manager, it will inject node_modules/.bin into PATH\n * but otherwise we may need to try to find that path ourselves\n */\nexport function execSyncVarlock(\n command: string,\n opts?: (Parameters<typeof execSyncType>[1] & {\n exitOnError?: boolean,\n showLogsOnError?: boolean,\n }),\n) {\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 (on linux only)\n if (!isWindows && (err as any).status !== 127) throw err;\n // on windows, we'll just do the extra checks anyway\n }\n\n // if varlock was not found, it either means it is not installed\n // or we must find the path to node_modules/.bin ourselves\n // 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 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"]}
@@ -32,7 +32,7 @@ var require_ansis = __commonJS({
32
32
  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);
33
33
  }, "d");
34
34
  var f = (() => {
35
- 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;
35
+ 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;
36
36
  try {
37
37
  e = "," + s(i2).join(",");
38
38
  } catch (e2) {
@@ -76,9 +76,9 @@ var require_ansis = __commonJS({
76
76
  }, "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");
77
77
  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"));
78
78
  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) }, _4 = /* @__PURE__ */ __name((e3) => "bg" + e3[0].toUpperCase() + e3.slice(1), "_"), k = "Bright";
79
- return "black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map((e3, t3) => {
79
+ return "black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map(((e3, t3) => {
80
80
  M = _4(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);
81
- }), s2.extend(I);
81
+ })), s2.extend(I);
82
82
  }, "e"))();
83
83
  module.exports = w, w.default = w;
84
84
  }
@@ -1106,7 +1106,9 @@ async function checkIsFileGitIgnored(path4, warnIfNotGitRepo = false) {
1106
1106
  return true;
1107
1107
  } catch (err) {
1108
1108
  const stderr = err.stderr;
1109
- if (err.status === 127 || stderr.includes("not found")) return void 0;
1109
+ if (err.status === 127 || stderr.includes("not found") || stderr.includes("not recognized")) {
1110
+ return void 0;
1111
+ }
1110
1112
  if (err.code === "ENOENT") return void 0;
1111
1113
  if (stderr === "") return false;
1112
1114
  if (stderr.includes("not a git repository")) {
@@ -1610,6 +1612,7 @@ var DecoratorInstance = class {
1610
1612
  this.resolvedValue = await this.decValueResolver.resolve();
1611
1613
  } catch (err) {
1612
1614
  this._schemaErrors.push(err);
1615
+ return;
1613
1616
  }
1614
1617
  this.isResolved = true;
1615
1618
  return this.resolvedValue;
@@ -2116,7 +2119,7 @@ var ForEnvResolver = createResolver({
2116
2119
  },
2117
2120
  async resolve(matchEnvs) {
2118
2121
  const currentEnv = await this.getCurrentEnv();
2119
- if (!currentEnv) throw new Error("current environment is not set");
2122
+ if (!currentEnv) throw new SchemaError("current environment is not set");
2120
2123
  return currentEnv && matchEnvs.includes(currentEnv || "");
2121
2124
  }
2122
2125
  });
@@ -2143,13 +2146,15 @@ var IfResolver = createResolver({
2143
2146
  // question mark
2144
2147
  argsSchema: {
2145
2148
  type: "array",
2146
- arrayMinLength: 2
2149
+ arrayMinLength: 1
2147
2150
  },
2148
2151
  process() {
2149
2152
  const condition = this.arrArgs[0];
2150
2153
  const trueVal = this.arrArgs[1];
2151
2154
  const falseVal = this.arrArgs[2];
2152
- if (!falseVal || trueVal.inferredType === falseVal.inferredType) {
2155
+ if (!trueVal) {
2156
+ this.inferredType = "boolean";
2157
+ } else if (!falseVal || trueVal.inferredType === falseVal.inferredType) {
2153
2158
  this.inferredType = trueVal.inferredType;
2154
2159
  }
2155
2160
  return { condition, trueVal, falseVal };
@@ -2157,12 +2162,40 @@ var IfResolver = createResolver({
2157
2162
  async resolve({ condition, trueVal, falseVal }) {
2158
2163
  const conditionVal = await condition.resolve();
2159
2164
  if (conditionVal) {
2160
- return trueVal.resolve();
2165
+ return trueVal ? trueVal.resolve() : true;
2161
2166
  } else {
2162
- return falseVal?.resolve();
2167
+ if (falseVal) return falseVal.resolve();
2168
+ if (trueVal) return void 0;
2169
+ return false;
2163
2170
  }
2164
2171
  }
2165
2172
  });
2173
+ var NotResolver = createResolver({
2174
+ name: "not",
2175
+ icon: "material-symbols:not-equal",
2176
+ inferredType: "boolean",
2177
+ argsSchema: {
2178
+ type: "array",
2179
+ arrayExactLength: 1
2180
+ },
2181
+ async resolve() {
2182
+ const value = await this.arrArgs[0].resolve();
2183
+ return !value;
2184
+ }
2185
+ });
2186
+ var IsEmptyResolver = createResolver({
2187
+ name: "isEmpty",
2188
+ icon: "material-symbols:empty",
2189
+ inferredType: "boolean",
2190
+ argsSchema: {
2191
+ type: "array",
2192
+ arrayExactLength: 1
2193
+ },
2194
+ async resolve() {
2195
+ const value = await this.arrArgs[0].resolve();
2196
+ return value === void 0 || value === "";
2197
+ }
2198
+ });
2166
2199
  var InferFromPrefixResolver = createResolver({
2167
2200
  name: "inferFromPrefix",
2168
2201
  icon: "material-symbols:help-center",
@@ -2187,6 +2220,8 @@ var BaseResolvers = [
2187
2220
  ForEnvResolver,
2188
2221
  EqResolver,
2189
2222
  IfResolver,
2223
+ NotResolver,
2224
+ IsEmptyResolver,
2190
2225
  RegexResolver,
2191
2226
  InferFromPrefixResolver
2192
2227
  ];
@@ -2357,7 +2392,7 @@ async function getTsDefinitionForItem(item, indentLevel = 0) {
2357
2392
  }
2358
2393
  }
2359
2394
  const isRequired = item.isRequired && !item.isRequiredDynamic;
2360
- itemSrc.push(`readonly ${item.key}${isRequired ? "" : "?"}: ${itemTsType};`);
2395
+ itemSrc.push(`${item.key}${isRequired ? "" : "?"}: ${itemTsType};`);
2361
2396
  itemSrc.push("");
2362
2397
  return my_dash_default.map(itemSrc, (line) => `${i}${line}`);
2363
2398
  }
@@ -2378,8 +2413,8 @@ async function generateTsTypesSrc(graph) {
2378
2413
  tsSrc.push("};\n");
2379
2414
  tsSrc.push(`
2380
2415
  declare module 'varlock/env' {
2381
- export interface TypedEnvSchema extends CoercedEnvSchema {}
2382
- export interface PublicTypedEnvSchema extends Pick<CoercedEnvSchema, '${exposedNonSensitiveKeys.join("' | '")}'> {}
2416
+ export interface TypedEnvSchema extends Readonly<CoercedEnvSchema> {}
2417
+ export interface PublicTypedEnvSchema extends Readonly<Pick<CoercedEnvSchema, '${exposedNonSensitiveKeys.join("' | '")}'>> {}
2383
2418
  }
2384
2419
  `);
2385
2420
  tsSrc.push(`
@@ -2888,13 +2923,21 @@ var ConfigItem = class {
2888
2923
  const requiredDec = requiredDecs[0];
2889
2924
  if (requiredDec) {
2890
2925
  const usingOptional = requiredDec.name === "optional";
2891
- this._isRequiredDynamic = requiredDec.decValueResolver ? requiredDec.decValueResolver.staticValue === void 0 : false;
2926
+ if (requiredDec.decValueResolver?.fnName !== "\0static") {
2927
+ this._isRequiredDynamic = true;
2928
+ }
2892
2929
  const requiredDecoratorVal = await requiredDec.resolve();
2893
- if (!my_dash_default.isBoolean(requiredDecoratorVal)) {
2894
- throw new SchemaError("@required/@optional must resolve to a boolean");
2930
+ if (requiredDec.schemaErrors.length) {
2931
+ this._isRequired = false;
2932
+ return;
2933
+ }
2934
+ if (![true, false, void 0].includes(requiredDecoratorVal)) {
2935
+ throw new SchemaError("@required/@optional must resolve to a boolean or undefined");
2936
+ }
2937
+ if (requiredDecoratorVal !== void 0) {
2938
+ this._isRequired = usingOptional ? !requiredDecoratorVal : requiredDecoratorVal;
2939
+ return;
2895
2940
  }
2896
- this._isRequired = usingOptional ? !requiredDecoratorVal : requiredDecoratorVal;
2897
- return;
2898
2941
  }
2899
2942
  const defaultRequiredDec = def.source.getRootDec("defaultRequired");
2900
2943
  if (defaultRequiredDec) {
@@ -2938,6 +2981,12 @@ var ConfigItem = class {
2938
2981
  const sensitiveDec = def.itemDef.decorators?.find((d) => d.name === "sensitive");
2939
2982
  if (sensitiveDec) {
2940
2983
  const sensitiveDecValue = await sensitiveDec.resolve();
2984
+ if (sensitiveDec.schemaErrors.length) {
2985
+ return;
2986
+ }
2987
+ if (![true, false, void 0].includes(sensitiveDecValue)) {
2988
+ throw new SchemaError("@sensitive must resolve to a boolean or undefined");
2989
+ }
2941
2990
  if (sensitiveDecValue !== void 0) {
2942
2991
  this._isSensitive = sensitiveDecValue;
2943
2992
  return;
@@ -3961,5 +4010,5 @@ __name(getItemSummary, "getItemSummary");
3961
4010
  //! these are probably not relevant anymore, or needs to move to a plugin layer?
3962
4011
 
3963
4012
  export { CoercionError, ConfigLoadError, DotEnvFileDataSource, EnvGraph2 as EnvGraph, FileBasedDataSource, ResolutionError, SchemaError, ValidationError, VarlockError, ansis_default, asyncExitHook, checkIsFileGitIgnored, getItemSummary, gracefulExit, joinAndCompact, loadEnvGraph, my_dash_default, pathExists, pathExistsSync, tryCatch };
3964
- //# sourceMappingURL=chunk-7UWLKQXP.js.map
3965
- //# sourceMappingURL=chunk-7UWLKQXP.js.map
4013
+ //# sourceMappingURL=chunk-G7ZBO2TN.js.map
4014
+ //# sourceMappingURL=chunk-G7ZBO2TN.js.map