varlock 0.2.1 → 0.2.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 (85) hide show
  1. package/README.md +2 -0
  2. package/dist/auto-load.js +8 -8
  3. package/dist/chunk-2YPKUF3A.js +18 -0
  4. package/dist/{chunk-7SH6C6WJ.js.map → chunk-2YPKUF3A.js.map} +1 -1
  5. package/dist/{chunk-RZT65DRA.js → chunk-35SAMS66.js} +4 -4
  6. package/dist/{chunk-RZT65DRA.js.map → chunk-35SAMS66.js.map} +1 -1
  7. package/dist/{chunk-XN24GZXQ.js → chunk-6PEHRAEP.js} +3 -8
  8. package/dist/{chunk-XN24GZXQ.js.map → chunk-6PEHRAEP.js.map} +1 -1
  9. package/dist/{chunk-ZLM3MCYF.js → chunk-BXR2RIO6.js} +6 -6
  10. package/dist/{chunk-ZLM3MCYF.js.map → chunk-BXR2RIO6.js.map} +1 -1
  11. package/dist/{chunk-NA4YDM42.js → chunk-HTF7NU5C.js} +10 -9
  12. package/dist/chunk-HTF7NU5C.js.map +1 -0
  13. package/dist/{chunk-NDWB3TT5.js → chunk-ISSW6NKZ.js} +9 -4
  14. package/dist/chunk-ISSW6NKZ.js.map +1 -0
  15. package/dist/{chunk-FGMXIEFA.js → chunk-MIBOBKI4.js} +3 -3
  16. package/dist/{chunk-FGMXIEFA.js.map → chunk-MIBOBKI4.js.map} +1 -1
  17. package/dist/chunk-OY5U5WTF.js +10829 -0
  18. package/dist/chunk-OY5U5WTF.js.map +1 -0
  19. package/dist/chunk-PESTWPBG.js +307 -0
  20. package/dist/chunk-PESTWPBG.js.map +1 -0
  21. package/dist/{chunk-H5IG4ZVM.js → chunk-Q3C4VKFT.js} +6 -6
  22. package/dist/chunk-Q3C4VKFT.js.map +1 -0
  23. package/dist/chunk-QZ6HBRJC.js +97 -0
  24. package/dist/chunk-QZ6HBRJC.js.map +1 -0
  25. package/dist/{chunk-FUDH2TTI.js → chunk-TVFOIGJP.js} +3 -3
  26. package/dist/{chunk-FUDH2TTI.js.map → chunk-TVFOIGJP.js.map} +1 -1
  27. package/dist/{chunk-5IMCRQTM.js → chunk-TYIS6T2T.js} +4 -4
  28. package/dist/{chunk-5IMCRQTM.js.map → chunk-TYIS6T2T.js.map} +1 -1
  29. package/dist/chunk-UDXNNRWI.js +1386 -0
  30. package/dist/chunk-UDXNNRWI.js.map +1 -0
  31. package/dist/{chunk-HPNRKYVF.js → chunk-UIOEEWG5.js} +4 -4
  32. package/dist/{chunk-HPNRKYVF.js.map → chunk-UIOEEWG5.js.map} +1 -1
  33. package/dist/{chunk-MSRPV5WH.js → chunk-WAMBVZL2.js} +4 -4
  34. package/dist/{chunk-MSRPV5WH.js.map → chunk-WAMBVZL2.js.map} +1 -1
  35. package/dist/chunk-YIXN7TC7.js +1532 -0
  36. package/dist/chunk-YIXN7TC7.js.map +1 -0
  37. package/dist/{chunk-NSY7JMFV.js → chunk-ZXJ4CEDK.js} +4 -4
  38. package/dist/{chunk-NSY7JMFV.js.map → chunk-ZXJ4CEDK.js.map} +1 -1
  39. package/dist/cli/cli-executable.js +20 -21
  40. package/dist/cli/cli-executable.js.map +1 -1
  41. package/dist/dotenv-compat.js +8 -8
  42. package/dist/{env-graph-BZwrHQbb.d.ts → env-graph-DIcuAiYh.d.ts} +9 -2
  43. package/dist/help.command-MLH2WA5Y.js +5 -0
  44. package/dist/{help.command-B7VWA53B.js.map → help.command-MLH2WA5Y.js.map} +1 -1
  45. package/dist/index.d.ts +2 -3
  46. package/dist/index.js +10 -9
  47. package/dist/index.js.map +1 -1
  48. package/dist/init.command-RAYBZ66R.js +9 -0
  49. package/dist/{init.command-GNLFBWYF.js.map → init.command-RAYBZ66R.js.map} +1 -1
  50. package/dist/lib/exec-sync-varlock.js +2 -2
  51. package/dist/load.command-KOSPGLV6.js +9 -0
  52. package/dist/{load.command-WR5QCE6M.js.map → load.command-KOSPGLV6.js.map} +1 -1
  53. package/dist/plugin-lib.d.ts +2 -3
  54. package/dist/plugin-lib.js +2 -1
  55. package/dist/run.command-BOBQIELJ.js +10 -0
  56. package/dist/{run.command-GXQTDDDP.js.map → run.command-BOBQIELJ.js.map} +1 -1
  57. package/dist/runtime/env.d.ts +1 -2
  58. package/dist/runtime/env.js +3 -3
  59. package/dist/runtime/patch-console.js +4 -4
  60. package/dist/runtime/patch-response.js +4 -4
  61. package/dist/runtime/patch-server-response.js +4 -4
  62. package/dist/telemetry.command-SFEMMU3U.js +9 -0
  63. package/dist/{telemetry.command-ZFW55RLH.js.map → telemetry.command-SFEMMU3U.js.map} +1 -1
  64. package/package.json +35 -22
  65. package/dist/chunk-33ROL4J5.js +0 -1013
  66. package/dist/chunk-33ROL4J5.js.map +0 -1
  67. package/dist/chunk-4CRDKWAU.js +0 -1281
  68. package/dist/chunk-4CRDKWAU.js.map +0 -1
  69. package/dist/chunk-7SH6C6WJ.js +0 -18
  70. package/dist/chunk-H5IG4ZVM.js.map +0 -1
  71. package/dist/chunk-NA4YDM42.js.map +0 -1
  72. package/dist/chunk-NDWB3TT5.js.map +0 -1
  73. package/dist/chunk-NHA2P5AV.js +0 -135
  74. package/dist/chunk-NHA2P5AV.js.map +0 -1
  75. package/dist/chunk-OKNWYS57.js +0 -4061
  76. package/dist/chunk-OKNWYS57.js.map +0 -1
  77. package/dist/en-US-TSGNDI2P.js +0 -22
  78. package/dist/en-US-TSGNDI2P.js.map +0 -1
  79. package/dist/help.command-B7VWA53B.js +0 -5
  80. package/dist/init.command-GNLFBWYF.js +0 -8
  81. package/dist/ja-JP-UBPCQAAD.js +0 -22
  82. package/dist/ja-JP-UBPCQAAD.js.map +0 -1
  83. package/dist/load.command-WR5QCE6M.js +0 -8
  84. package/dist/run.command-GXQTDDDP.js +0 -9
  85. package/dist/telemetry.command-ZFW55RLH.js +0 -8
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Varlock
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/varlock.svg)](https://www.npmjs.com/package/varlock) [![npm downloads](https://img.shields.io/npm/dm/varlock.svg)](https://www.npmjs.com/package/varlock) [![GitHub stars](https://img.shields.io/github/stars/dmno-dev/varlock.svg?style=social&label=Star)](https://github.com/dmno-dev/varlock) [![license](https://img.shields.io/npm/l/varlock.svg)](https://github.com/dmno-dev/varlock/blob/main/LICENSE)
4
+
3
5
  > See https://varlock.dev for docs and examples.
4
6
 
5
7
  _A sample `.env.schema`_:
package/dist/auto-load.js CHANGED
@@ -1,10 +1,10 @@
1
- import './chunk-7SH6C6WJ.js';
2
- import './chunk-HPNRKYVF.js';
3
- import './chunk-NSY7JMFV.js';
4
- import './chunk-FUDH2TTI.js';
5
- import './chunk-5IMCRQTM.js';
6
- import './chunk-MSRPV5WH.js';
7
- import './chunk-FGMXIEFA.js';
8
- import './chunk-XN24GZXQ.js';
1
+ import './chunk-2YPKUF3A.js';
2
+ import './chunk-UIOEEWG5.js';
3
+ import './chunk-ZXJ4CEDK.js';
4
+ import './chunk-TVFOIGJP.js';
5
+ import './chunk-TYIS6T2T.js';
6
+ import './chunk-WAMBVZL2.js';
7
+ import './chunk-MIBOBKI4.js';
8
+ import './chunk-6PEHRAEP.js';
9
9
  //# sourceMappingURL=auto-load.js.map
10
10
  //# sourceMappingURL=auto-load.js.map
@@ -0,0 +1,18 @@
1
+ import { patchGlobalResponse } from './chunk-UIOEEWG5.js';
2
+ import { patchGlobalServerResponse } from './chunk-ZXJ4CEDK.js';
3
+ import { execSyncVarlock } from './chunk-TVFOIGJP.js';
4
+ import { patchGlobalConsole } from './chunk-TYIS6T2T.js';
5
+ import { initVarlockEnv } from './chunk-WAMBVZL2.js';
6
+
7
+ // src/auto-load.ts
8
+ var execResult = execSyncVarlock("load --format json-full --compact", {
9
+ exitOnError: true,
10
+ showLogsOnError: true
11
+ });
12
+ process.env.__VARLOCK_ENV = execResult;
13
+ initVarlockEnv();
14
+ patchGlobalConsole();
15
+ patchGlobalServerResponse();
16
+ patchGlobalResponse();
17
+ //# sourceMappingURL=chunk-2YPKUF3A.js.map
18
+ //# sourceMappingURL=chunk-2YPKUF3A.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/auto-load.ts"],"names":[],"mappings":";;;;;;;AAaA,IAAM,UAAA,GAAa,gBAAgB,iCAAA,EAAmC;AAAA,EACpE,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-7SH6C6WJ.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-compact', {\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"]}
1
+ {"version":3,"sources":["../src/auto-load.ts"],"names":[],"mappings":";;;;;;;AAaA,IAAM,UAAA,GAAa,gBAAgB,mCAAA,EAAqC;AAAA,EACtE,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-2YPKUF3A.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 --compact', {\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"]}
@@ -1,5 +1,5 @@
1
- import { define } from './chunk-33ROL4J5.js';
2
- import { __name } from './chunk-XN24GZXQ.js';
1
+ import { define } from './chunk-UDXNNRWI.js';
2
+ import { __name } from './chunk-6PEHRAEP.js';
3
3
 
4
4
  // src/cli/commands/help.command.ts
5
5
  var commandSpec = define({
@@ -11,5 +11,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
11
11
  }, "commandFn");
12
12
 
13
13
  export { commandFn, commandSpec };
14
- //# sourceMappingURL=chunk-RZT65DRA.js.map
15
- //# sourceMappingURL=chunk-RZT65DRA.js.map
14
+ //# sourceMappingURL=chunk-35SAMS66.js.map
15
+ //# sourceMappingURL=chunk-35SAMS66.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/commands/help.command.ts"],"names":[],"mappings":";;;;AAGO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,MAAA;AAAA,EACN,WAAA,EAAa,4BAAA;AAAA,EACb,MAAM;AACR,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAElF,CAAA,EAFmE,WAAA","file":"chunk-RZT65DRA.js","sourcesContent":["import { define } from 'gunshi';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\nexport const commandSpec = define({\n name: 'help',\n description: 'Show help info for varlock',\n args: {},\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // no-op - we'll trigger help from main entry point\n};\n"]}
1
+ {"version":3,"sources":["../src/cli/commands/help.command.ts"],"names":[],"mappings":";;;;AAGO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,MAAA;AAAA,EACN,WAAA,EAAa,4BAAA;AAAA,EACb,MAAM;AACR,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAElF,CAAA,EAFmE,WAAA","file":"chunk-35SAMS66.js","sourcesContent":["import { define } from 'gunshi';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\nexport const commandSpec = define({\n name: 'help',\n description: 'Show help info for varlock',\n args: {},\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // no-op - we'll trigger help from main entry point\n};\n"]}
@@ -5,11 +5,6 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
- var __glob = (map) => (path) => {
9
- var fn = map[path];
10
- if (fn) return fn();
11
- throw new Error("Module not found in bundle: " + path);
12
- };
13
8
  var __commonJS = (cb, mod) => function __require() {
14
9
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15
10
  };
@@ -30,6 +25,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
25
  mod
31
26
  ));
32
27
 
33
- export { __commonJS, __glob, __name, __toESM };
34
- //# sourceMappingURL=chunk-XN24GZXQ.js.map
35
- //# sourceMappingURL=chunk-XN24GZXQ.js.map
28
+ export { __commonJS, __name, __toESM };
29
+ //# sourceMappingURL=chunk-6PEHRAEP.js.map
30
+ //# sourceMappingURL=chunk-6PEHRAEP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-XN24GZXQ.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-6PEHRAEP.js"}
@@ -1,7 +1,7 @@
1
- import { CliExitError, fmt } from './chunk-H5IG4ZVM.js';
2
- import { define } from './chunk-33ROL4J5.js';
3
- import { gracefulExit } from './chunk-OKNWYS57.js';
4
- import { __name } from './chunk-XN24GZXQ.js';
1
+ import { CliExitError, fmt } from './chunk-Q3C4VKFT.js';
2
+ import { define } from './chunk-UDXNNRWI.js';
3
+ import { gracefulExit } from './chunk-OY5U5WTF.js';
4
+ import { __name } from './chunk-6PEHRAEP.js';
5
5
  import { homedir } from 'os';
6
6
  import { join } from 'path';
7
7
  import { mkdir, readFile, writeFile } from 'fs/promises';
@@ -61,5 +61,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
61
61
  }, "commandFn");
62
62
 
63
63
  export { commandFn, commandSpec };
64
- //# sourceMappingURL=chunk-ZLM3MCYF.js.map
65
- //# sourceMappingURL=chunk-ZLM3MCYF.js.map
64
+ //# sourceMappingURL=chunk-BXR2RIO6.js.map
65
+ //# sourceMappingURL=chunk-BXR2RIO6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/commands/telemetry.command.ts"],"names":[],"mappings":";;;;;;;;;AAWO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,WAAA;AAAA,EACN,WAAA,EAAa,0CAAA;AAAA,EACb,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,EAAA,CAAA,CAUR,IAAA;AACJ,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAEhF,EAAA,IAAI,CAAC,CAAC,QAAA,EAAU,SAAS,EAAE,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,EAAG;AACpD,IAAA,MAAM,IAAI,aAAa,8CAAA,EAAgD;AAAA,MACrE,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,EAAQ,EAAG,UAAU,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,EAAW,aAAa,CAAA;AAEhD,EAAA,IAAI;AAEF,IAAA,IAAI,CAAC,UAAA,CAAW,SAAS,CAAA,EAAG;AAC1B,MAAA,MAAM,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,IAC5C;AAGA,IAAA,IAAI,SAA8B,EAAC;AACnC,IAAA,IAAI,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1B,MAAA,MAAM,aAAA,GAAgB,MAAM,QAAA,CAAS,UAAA,EAAY,OAAO,CAAA;AACxD,MAAA,MAAA,GAAS,IAAA,CAAK,MAAM,aAAa,CAAA;AAAA,IACnC;AAGA,IAAA,IAAI,GAAA,CAAI,MAAA,CAAO,IAAA,KAAS,SAAA,SAAkB,iBAAA,GAAoB,IAAA;AAAA,gBAClD,MAAA,CAAO,iBAAA;AACnB,IAAA,MAAM,UAAU,UAAA,EAAY,IAAA,CAAK,UAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAE3D,IAAA,IAAI,GAAA,CAAI,OAAO,IAAA,EAAM;AACnB,MAAA,OAAA,CAAQ,IAAI,uDAAkD,CAAA;AAAA,IAChE,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,IAAI,wDAAmD,CAAA;AAAA,IACjE;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,aAAA,EAAe,GAAA,CAAI,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,EACrD,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,aAAa,CAAC,CAAA;AAAA,EACvB;AACF,CAAA,EAvCmE,WAAA","file":"chunk-ZLM3MCYF.js","sourcesContent":["import { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { mkdir, writeFile, readFile } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { define } from 'gunshi';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { gracefulExit } from 'exit-hook';\nimport { fmt } from '../helpers/pretty-format';\nimport { CliExitError } from '../helpers/exit-error';\n\n\nexport const commandSpec = define({\n name: 'telemetry',\n description: 'Enable/disable anonymous usage analytics',\n args: {\n mode: {\n type: 'positional',\n description: '\"enable\" or \"disable\"',\n },\n },\n examples: `\nOpts in/out of anonymous usage analytics. This command creates/updates a configuration\nfile at ~/.varlock/config.json saving your preference.\n\nExamples:\n varlock telemetry disable # Opt out of telemetry\n varlock telemetry enable # Opt in to telemetry\n\n💡 Tip: You can also temporarily opt out by setting VARLOCK_TELEMETRY_DISABLED=1\nFor more information, visit https://varlock.dev/guides/telemetry/\n `.trim(),\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // TODO: remove this when gunshi supports types/validation for positional args\n if (!['enable', 'disable'].includes(ctx.values.mode)) {\n throw new CliExitError('additional arg must be \"enable\" or \"disable\"', {\n forceExit: true,\n });\n }\n\n const configDir = join(homedir(), '.varlock');\n const configPath = join(configDir, 'config.json');\n\n try {\n // Create .varlock directory if it doesn't exist\n if (!existsSync(configDir)) {\n await mkdir(configDir, { recursive: true });\n }\n\n // Read existing config if it exists\n let config: Record<string, any> = {};\n if (existsSync(configPath)) {\n const configContent = await readFile(configPath, 'utf-8');\n config = JSON.parse(configContent);\n }\n\n // update config `telemetryDisabled` setting\n if (ctx.values.mode === 'disable') config.telemetryDisabled = true;\n else delete config.telemetryDisabled;\n await writeFile(configPath, JSON.stringify(config, null, 2));\n\n if (ctx.values.mode) {\n console.log('✅ Successfully enabled anonymous usage analytics');\n } else {\n console.log('✅ Successfully disabled anonymous usage analytics');\n }\n console.log('> saved in:', fmt.filePath(configPath));\n } catch (error) {\n console.error('Failed to opt out of analytics:', error);\n return gracefulExit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/cli/commands/telemetry.command.ts"],"names":[],"mappings":";;;;;;;;;AAWO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,WAAA;AAAA,EACN,WAAA,EAAa,0CAAA;AAAA,EACb,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,EAAA,CAAA,CAUR,IAAA;AACJ,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAEhF,EAAA,IAAI,CAAC,CAAC,QAAA,EAAU,SAAS,EAAE,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,EAAG;AACpD,IAAA,MAAM,IAAI,aAAa,8CAAA,EAAgD;AAAA,MACrE,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,EAAQ,EAAG,UAAU,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,EAAW,aAAa,CAAA;AAEhD,EAAA,IAAI;AAEF,IAAA,IAAI,CAAC,UAAA,CAAW,SAAS,CAAA,EAAG;AAC1B,MAAA,MAAM,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,IAC5C;AAGA,IAAA,IAAI,SAA8B,EAAC;AACnC,IAAA,IAAI,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1B,MAAA,MAAM,aAAA,GAAgB,MAAM,QAAA,CAAS,UAAA,EAAY,OAAO,CAAA;AACxD,MAAA,MAAA,GAAS,IAAA,CAAK,MAAM,aAAa,CAAA;AAAA,IACnC;AAGA,IAAA,IAAI,GAAA,CAAI,MAAA,CAAO,IAAA,KAAS,SAAA,SAAkB,iBAAA,GAAoB,IAAA;AAAA,gBAClD,MAAA,CAAO,iBAAA;AACnB,IAAA,MAAM,UAAU,UAAA,EAAY,IAAA,CAAK,UAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAE3D,IAAA,IAAI,GAAA,CAAI,OAAO,IAAA,EAAM;AACnB,MAAA,OAAA,CAAQ,IAAI,uDAAkD,CAAA;AAAA,IAChE,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,IAAI,wDAAmD,CAAA;AAAA,IACjE;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,aAAA,EAAe,GAAA,CAAI,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,EACrD,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,aAAa,CAAC,CAAA;AAAA,EACvB;AACF,CAAA,EAvCmE,WAAA","file":"chunk-BXR2RIO6.js","sourcesContent":["import { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { mkdir, writeFile, readFile } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { define } from 'gunshi';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { gracefulExit } from 'exit-hook';\nimport { fmt } from '../helpers/pretty-format';\nimport { CliExitError } from '../helpers/exit-error';\n\n\nexport const commandSpec = define({\n name: 'telemetry',\n description: 'Enable/disable anonymous usage analytics',\n args: {\n mode: {\n type: 'positional',\n description: '\"enable\" or \"disable\"',\n },\n },\n examples: `\nOpts in/out of anonymous usage analytics. This command creates/updates a configuration\nfile at ~/.varlock/config.json saving your preference.\n\nExamples:\n varlock telemetry disable # Opt out of telemetry\n varlock telemetry enable # Opt in to telemetry\n\n💡 Tip: You can also temporarily opt out by setting VARLOCK_TELEMETRY_DISABLED=1\nFor more information, visit https://varlock.dev/guides/telemetry/\n `.trim(),\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // TODO: remove this when gunshi supports types/validation for positional args\n if (!['enable', 'disable'].includes(ctx.values.mode)) {\n throw new CliExitError('additional arg must be \"enable\" or \"disable\"', {\n forceExit: true,\n });\n }\n\n const configDir = join(homedir(), '.varlock');\n const configPath = join(configDir, 'config.json');\n\n try {\n // Create .varlock directory if it doesn't exist\n if (!existsSync(configDir)) {\n await mkdir(configDir, { recursive: true });\n }\n\n // Read existing config if it exists\n let config: Record<string, any> = {};\n if (existsSync(configPath)) {\n const configContent = await readFile(configPath, 'utf-8');\n config = JSON.parse(configContent);\n }\n\n // update config `telemetryDisabled` setting\n if (ctx.values.mode === 'disable') config.telemetryDisabled = true;\n else delete config.telemetryDisabled;\n await writeFile(configPath, JSON.stringify(config, null, 2));\n\n if (ctx.values.mode) {\n console.log('✅ Successfully enabled anonymous usage analytics');\n } else {\n console.log('✅ Successfully disabled anonymous usage analytics');\n }\n console.log('> saved in:', fmt.filePath(configPath));\n } catch (error) {\n console.error('Failed to opt out of analytics:', error);\n return gracefulExit(1);\n }\n};\n"]}
@@ -1,7 +1,7 @@
1
- import { define } from './chunk-33ROL4J5.js';
2
- import { loadVarlockEnvGraph, checkForSchemaErrors, checkForConfigErrors } from './chunk-NDWB3TT5.js';
3
- import { my_dash_default, FileBasedDataSource, getItemSummary } from './chunk-OKNWYS57.js';
4
- import { __name } from './chunk-XN24GZXQ.js';
1
+ import { define } from './chunk-UDXNNRWI.js';
2
+ import { loadVarlockEnvGraph, checkForSchemaErrors, checkForConfigErrors } from './chunk-ISSW6NKZ.js';
3
+ import { my_dash_default, FileBasedDataSource, getItemSummary } from './chunk-OY5U5WTF.js';
4
+ import { __name } from './chunk-6PEHRAEP.js';
5
5
  import path from 'path';
6
6
 
7
7
  var commandSpec = define({
@@ -11,7 +11,7 @@ var commandSpec = define({
11
11
  format: {
12
12
  type: "enum",
13
13
  short: "f",
14
- choices: ["pretty", "json", "env", "json-full", "json-full-compact"],
14
+ choices: ["pretty", "json", "env", "json-full"],
15
15
  description: "Format of output",
16
16
  default: "pretty"
17
17
  },
@@ -42,6 +42,7 @@ Examples:
42
42
  varlock load --format json # Output in JSON format
43
43
  varlock load --show-all # Show all items when validation fails
44
44
  varlock load --path .env.prod # Load from a specific .env file
45
+ varlock looad --compact # Use compact format - skips undefined values, no indentation for json-full
45
46
  varlock load --env production # Load for a specific environment (\u26A0\uFE0F ignored if using @currentEnv!)
46
47
  `.trim()
47
48
  });
@@ -73,8 +74,8 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
73
74
  }
74
75
  } else if (format === "json") {
75
76
  console.log(JSON.stringify(envGraph.getResolvedEnvObject(), null, 2));
76
- } else if (format === "json-full" || format === "json-full-compact") {
77
- const indent = format === "json-full-compact" || compact ? 0 : 2;
77
+ } else if (format === "json-full") {
78
+ const indent = compact ? 0 : 2;
78
79
  console.log(JSON.stringify(envGraph.getSerializedGraph(), null, indent));
79
80
  } else if (format === "env") {
80
81
  const resolvedEnv = envGraph.getResolvedEnvObject();
@@ -100,5 +101,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
100
101
  }, "commandFn");
101
102
 
102
103
  export { commandFn, commandSpec };
103
- //# sourceMappingURL=chunk-NA4YDM42.js.map
104
- //# sourceMappingURL=chunk-NA4YDM42.js.map
104
+ //# sourceMappingURL=chunk-HTF7NU5C.js.map
105
+ //# sourceMappingURL=chunk-HTF7NU5C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":"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","file":"chunk-HTF7NU5C.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';\nimport path from 'node:path';\nimport { FileBasedDataSource } from '../../env-graph';\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 compact: {\n type: 'boolean',\n description: 'Use compact format (for json-full: no indentation, for env: skip undefined values)',\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 @currentEnv in the schema if present',\n },\n path: {\n type: 'string',\n short: 'p',\n description: 'Path to a specific .env file or directory (with trailing slash) to use as the entry point',\n },\n },\n examples: `\nLoads and validates environment variables according to your .env files, and prints the results.\nUseful for debugging locally, and in CI to print out a summary of env vars.\n\nExamples:\n varlock load # Load and validate with pretty output\n varlock load --format json # Output in JSON format\n varlock load --show-all # Show all items when validation fails\n varlock load --path .env.prod # Load from a specific .env file\n varlock looad --compact # Use compact format - skips undefined values, no indentation for json-full\n varlock load --env production # Load for a specific environment (⚠️ ignored if using @currentEnv!)\n`.trim(),\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { format, compact, 'show-all': showAll } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n entryFilePath: ctx.values.path,\n });\n checkForSchemaErrors(envGraph);\n\n if (!envGraph.rootDataSource) throw new Error('expected root data source to be set');\n\n await envGraph.resolveEnvValues();\n\n // ideally we could be smarter about generating types without needing to resolve values\n // but for now the decorators are all resolved as part of the general resolution process\n const generateTypesDecs = envGraph.getRootDecFns('generateTypes');\n for (const generateTypesDec of generateTypesDecs) {\n const typeGenSettings = await generateTypesDec.resolve();\n\n // we skip generating types if `@generateTypes` was not in the main file\n // unless the `executeWhenImported` flag is set\n if (generateTypesDec.dataSource.isImport && !typeGenSettings.obj.executeWhenImported) continue;\n\n if (!typeGenSettings.obj.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.obj.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.obj.lang}`);\n if (!typeGenSettings.obj.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.obj.path)) throw new Error('@generateTypes - `path` arg must be a string');\n\n const outputPath = generateTypesDec.dataSource instanceof FileBasedDataSource\n ? path.resolve(generateTypesDec.dataSource.fullPath, '..', typeGenSettings.obj.path)\n : typeGenSettings.obj.path;\n\n await envGraph.generateTypes(typeGenSettings.obj.lang, outputPath);\n }\n\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 const indent = compact ? 0 : 2;\n console.log(JSON.stringify(envGraph.getSerializedGraph(), null, indent));\n } else if (format === 'env') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n const skipUndefined = compact === true;\n\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\n\n if (value === undefined && skipUndefined) {\n continue;\n }\n\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"]}
@@ -1,5 +1,5 @@
1
- import { ansis_default, VarlockError, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-OKNWYS57.js';
2
- import { __name } from './chunk-XN24GZXQ.js';
1
+ import { ansis_default, VarlockError, gracefulExit, my_dash_default, getItemSummary, joinAndCompact, loadEnvGraph } from './chunk-OY5U5WTF.js';
2
+ import { __name } from './chunk-6PEHRAEP.js';
3
3
 
4
4
  // src/cli/helpers/error-checks.ts
5
5
  function showErrorLocationDetails(err) {
@@ -21,6 +21,11 @@ function checkForSchemaErrors(envGraph) {
21
21
  `);
22
22
  console.log(source.loadingError.message);
23
23
  showErrorLocationDetails(source.loadingError);
24
+ if (source.loadingError.stack && !(source.loadingError instanceof VarlockError)) {
25
+ console.log(`
26
+ ${ansis_default.dim("Stack trace:")}`);
27
+ console.log(ansis_default.dim(source.loadingError.stack));
28
+ }
24
29
  return gracefulExit(1);
25
30
  }
26
31
  if (source.schemaErrors.length) {
@@ -96,5 +101,5 @@ async function loadVarlockEnvGraph(opts) {
96
101
  __name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
97
102
 
98
103
  export { InvalidEnvError, checkForConfigErrors, checkForSchemaErrors, loadVarlockEnvGraph };
99
- //# sourceMappingURL=chunk-NDWB3TT5.js.map
100
- //# sourceMappingURL=chunk-NDWB3TT5.js.map
104
+ //# sourceMappingURL=chunk-ISSW6NKZ.js.map
105
+ //# sourceMappingURL=chunk-ISSW6NKZ.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-ISSW6NKZ.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 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 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 entryFilePath?: 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,4 +1,4 @@
1
- import { __name } from './chunk-XN24GZXQ.js';
1
+ import { __name } from './chunk-6PEHRAEP.js';
2
2
 
3
3
  // src/runtime/lib/redaction.ts
4
4
  function redactString(valStr, mode, hideLength = true) {
@@ -16,5 +16,5 @@ function redactString(valStr, mode, hideLength = true) {
16
16
  __name(redactString, "redactString");
17
17
 
18
18
  export { redactString };
19
- //# sourceMappingURL=chunk-FGMXIEFA.js.map
20
- //# sourceMappingURL=chunk-FGMXIEFA.js.map
19
+ //# sourceMappingURL=chunk-MIBOBKI4.js.map
20
+ //# sourceMappingURL=chunk-MIBOBKI4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/runtime/lib/redaction.ts"],"names":[],"mappings":";;;AASO,SAAS,YAAA,CAAa,MAAA,EAA4B,IAAA,EAAmB,UAAA,GAAa,IAAA,EAAM;AAC7F,EAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AAEpB,EAAA,MAAM,YAAA,GAAe,UAAA,GAAa,CAAA,GAAI,MAAA,CAAO,MAAA,GAAS,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,QAAA,CAAI,MAAA,CAAO,YAAY,CAAA;AAEzC,EAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,IAAA,OAAO,CAAA,EAAG,SAAS,CAAA,EAAG,MAAA,CAAO,SAAA,CAAU,OAAO,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,EAC1E,CAAA,MAAA,IAAW,SAAS,iBAAA,EAAmB;AACrC,IAAA,OAAO,GAAG,MAAA,CAAO,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,EAAG,SAAS,CAAA,EAAG,MAAA,CAAO,UAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,EACnG,CAAA,MAAO;AACL,IAAA,OAAO,GAAG,MAAA,CAAO,SAAA,CAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA,CAAA;AAAA,EAC9C;AACF;AAbgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA","file":"chunk-FGMXIEFA.js","sourcesContent":["\nexport type RedactMode = 'show_first_2' | 'show_last_2' | 'show_first_last';\n\n/**\n * utility to mask/redact a string, for example transforming \"hello\" into \"he▒▒▒\"\n * this function just redacts _any_ string passed in\n *\n * To redact sensitive parts of a larger object/string, use redactSensitiveConfig\n * */\nexport function redactString(valStr: string | undefined, mode?: RedactMode, hideLength = true) {\n if (!valStr) return valStr;\n\n const hiddenLength = hideLength ? 5 : valStr.length - 2;\n const hiddenStr = '▒'.repeat(hiddenLength);\n\n if (mode === 'show_last_2') {\n return `${hiddenStr}${valStr.substring(valStr.length - 2, valStr.length)}`;\n } else if (mode === 'show_first_last') {\n return `${valStr.substring(0, 1)}${hiddenStr}${valStr.substring(valStr.length - 1, valStr.length)}`;\n } else { // 'show_first_2' - also default\n return `${valStr.substring(0, 2)}${hiddenStr}`;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/runtime/lib/redaction.ts"],"names":[],"mappings":";;;AASO,SAAS,YAAA,CAAa,MAAA,EAA4B,IAAA,EAAmB,UAAA,GAAa,IAAA,EAAM;AAC7F,EAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AAEpB,EAAA,MAAM,YAAA,GAAe,UAAA,GAAa,CAAA,GAAI,MAAA,CAAO,MAAA,GAAS,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,QAAA,CAAI,MAAA,CAAO,YAAY,CAAA;AAEzC,EAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,IAAA,OAAO,CAAA,EAAG,SAAS,CAAA,EAAG,MAAA,CAAO,SAAA,CAAU,OAAO,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,EAC1E,CAAA,MAAA,IAAW,SAAS,iBAAA,EAAmB;AACrC,IAAA,OAAO,GAAG,MAAA,CAAO,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,EAAG,SAAS,CAAA,EAAG,MAAA,CAAO,UAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,EACnG,CAAA,MAAO;AACL,IAAA,OAAO,GAAG,MAAA,CAAO,SAAA,CAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA,CAAA;AAAA,EAC9C;AACF;AAbgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA","file":"chunk-MIBOBKI4.js","sourcesContent":["\nexport type RedactMode = 'show_first_2' | 'show_last_2' | 'show_first_last';\n\n/**\n * utility to mask/redact a string, for example transforming \"hello\" into \"he▒▒▒\"\n * this function just redacts _any_ string passed in\n *\n * To redact sensitive parts of a larger object/string, use redactSensitiveConfig\n * */\nexport function redactString(valStr: string | undefined, mode?: RedactMode, hideLength = true) {\n if (!valStr) return valStr;\n\n const hiddenLength = hideLength ? 5 : valStr.length - 2;\n const hiddenStr = '▒'.repeat(hiddenLength);\n\n if (mode === 'show_last_2') {\n return `${hiddenStr}${valStr.substring(valStr.length - 2, valStr.length)}`;\n } else if (mode === 'show_first_last') {\n return `${valStr.substring(0, 1)}${hiddenStr}${valStr.substring(valStr.length - 1, valStr.length)}`;\n } else { // 'show_first_2' - also default\n return `${valStr.substring(0, 2)}${hiddenStr}`;\n }\n}\n"]}