varlock 0.8.1 → 0.9.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 (89) hide show
  1. package/dist/auto-load.js +5 -5
  2. package/dist/{chunk-R2HBGT75.js → chunk-27CA3M4N.js} +5 -5
  3. package/dist/{chunk-R2HBGT75.js.map → chunk-27CA3M4N.js.map} +1 -1
  4. package/dist/{chunk-UD2MEMET.js → chunk-2R7CWGVL.js} +6 -6
  5. package/dist/{chunk-UD2MEMET.js.map → chunk-2R7CWGVL.js.map} +1 -1
  6. package/dist/{chunk-MYHVSJ3X.js → chunk-5DUWGI2N.js} +3 -3
  7. package/dist/{chunk-MYHVSJ3X.js.map → chunk-5DUWGI2N.js.map} +1 -1
  8. package/dist/{chunk-KG6Y2XNO.js → chunk-C4ITUXON.js} +4681 -4814
  9. package/dist/chunk-C4ITUXON.js.map +1 -0
  10. package/dist/{chunk-Y2RDOQTW.js → chunk-DGXO2UN7.js} +6 -6
  11. package/dist/{chunk-Y2RDOQTW.js.map → chunk-DGXO2UN7.js.map} +1 -1
  12. package/dist/{chunk-LVZSZAKN.js → chunk-F6RTQ5QX.js} +3 -3
  13. package/dist/{chunk-LVZSZAKN.js.map → chunk-F6RTQ5QX.js.map} +1 -1
  14. package/dist/{chunk-2VEY75X6.js → chunk-GWQJHKYT.js} +5 -5
  15. package/dist/{chunk-2VEY75X6.js.map → chunk-GWQJHKYT.js.map} +1 -1
  16. package/dist/{chunk-I3TJGA4C.js → chunk-K5536FEN.js} +5 -5
  17. package/dist/{chunk-I3TJGA4C.js.map → chunk-K5536FEN.js.map} +1 -1
  18. package/dist/{chunk-MF6XFXBM.js → chunk-LAI7XVJU.js} +24 -9
  19. package/dist/chunk-LAI7XVJU.js.map +1 -0
  20. package/dist/{chunk-YYMEVUB6.js → chunk-LRT2CHDN.js} +4 -4
  21. package/dist/{chunk-YYMEVUB6.js.map → chunk-LRT2CHDN.js.map} +1 -1
  22. package/dist/{chunk-IMB5QAZS.js → chunk-MGWUDHT5.js} +6 -2
  23. package/dist/chunk-MGWUDHT5.js.map +1 -0
  24. package/dist/{chunk-5224KHFW.js → chunk-N2E6DRSH.js} +6 -6
  25. package/dist/{chunk-5224KHFW.js.map → chunk-N2E6DRSH.js.map} +1 -1
  26. package/dist/{chunk-KF6GH4EB.js → chunk-P5H6JZZR.js} +4 -4
  27. package/dist/{chunk-KF6GH4EB.js.map → chunk-P5H6JZZR.js.map} +1 -1
  28. package/dist/{chunk-YEHNBSMI.js → chunk-Q2XA45LC.js} +4 -4
  29. package/dist/{chunk-YEHNBSMI.js.map → chunk-Q2XA45LC.js.map} +1 -1
  30. package/dist/{chunk-2XBRI7XK.js → chunk-QYICMUCP.js} +5 -5
  31. package/dist/{chunk-2XBRI7XK.js.map → chunk-QYICMUCP.js.map} +1 -1
  32. package/dist/{chunk-BC7LU4LG.js → chunk-R73FENLU.js} +3 -3
  33. package/dist/{chunk-BC7LU4LG.js.map → chunk-R73FENLU.js.map} +1 -1
  34. package/dist/{chunk-EZKZ7DTJ.js → chunk-S5EU3LTR.js} +4 -4
  35. package/dist/{chunk-EZKZ7DTJ.js.map → chunk-S5EU3LTR.js.map} +1 -1
  36. package/dist/{chunk-HPZ6RHKX.js → chunk-WLPAS4VQ.js} +3 -3
  37. package/dist/{chunk-HPZ6RHKX.js.map → chunk-WLPAS4VQ.js.map} +1 -1
  38. package/dist/{chunk-FAYBUX7A.js → chunk-YBV5OJW6.js} +3 -3
  39. package/dist/{chunk-FAYBUX7A.js.map → chunk-YBV5OJW6.js.map} +1 -1
  40. package/dist/{chunk-NNX7MUL4.js → chunk-ZZCDYV63.js} +5 -5
  41. package/dist/{chunk-NNX7MUL4.js.map → chunk-ZZCDYV63.js.map} +1 -1
  42. package/dist/cli/cli-executable.js +26 -26
  43. package/dist/cli/cli-executable.js.map +1 -1
  44. package/dist/config-item-5WIOGFHA.js +5 -0
  45. package/dist/{config-item-PBUWXK73.js.map → config-item-5WIOGFHA.js.map} +1 -1
  46. package/dist/dotenv-compat.js +5 -5
  47. package/dist/{env-graph-BnquQhm-.d.ts → env-graph-DaF8Aebq.d.ts} +3 -3
  48. package/dist/explain.command-NST64XIO.js +12 -0
  49. package/dist/{explain.command-L32BQ7MB.js.map → explain.command-NST64XIO.js.map} +1 -1
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.js +10 -10
  52. package/dist/init.command-4Z3VRGOV.js +11 -0
  53. package/dist/{init.command-COWS3UCC.js.map → init.command-4Z3VRGOV.js.map} +1 -1
  54. package/dist/install-plugin.command-F244Y3RI.js +11 -0
  55. package/dist/{install-plugin.command-UADLHWVP.js.map → install-plugin.command-F244Y3RI.js.map} +1 -1
  56. package/dist/load.command-JTUAYW2W.js +12 -0
  57. package/dist/{load.command-LOE3UVYT.js.map → load.command-JTUAYW2W.js.map} +1 -1
  58. package/dist/plugin-lib.d.ts +2 -2
  59. package/dist/printenv.command-NAHG4T76.js +12 -0
  60. package/dist/{printenv.command-SA7E2DJW.js.map → printenv.command-NAHG4T76.js.map} +1 -1
  61. package/dist/run.command-2IUKOZHD.js +13 -0
  62. package/dist/{run.command-HOW5XU2R.js.map → run.command-2IUKOZHD.js.map} +1 -1
  63. package/dist/runtime/env.d.ts +1 -1
  64. package/dist/runtime/env.js +1 -1
  65. package/dist/runtime/init-edge.cjs +4 -0
  66. package/dist/runtime/init-server.cjs +4 -0
  67. package/dist/runtime/patch-console.js +2 -2
  68. package/dist/runtime/patch-response.js +2 -2
  69. package/dist/runtime/patch-server-response.js +2 -2
  70. package/dist/scan.command-BEPDT3YQ.js +13 -0
  71. package/dist/{scan.command-K27R7LVS.js.map → scan.command-BEPDT3YQ.js.map} +1 -1
  72. package/dist/telemetry.command-E6GIZKTJ.js +11 -0
  73. package/dist/{telemetry.command-DQY3TLPG.js.map → telemetry.command-E6GIZKTJ.js.map} +1 -1
  74. package/dist/typegen.command-JGJUSFGG.js +12 -0
  75. package/dist/{typegen.command-BT6BXTLO.js.map → typegen.command-JGJUSFGG.js.map} +1 -1
  76. package/package.json +2 -2
  77. package/dist/chunk-IMB5QAZS.js.map +0 -1
  78. package/dist/chunk-KG6Y2XNO.js.map +0 -1
  79. package/dist/chunk-MF6XFXBM.js.map +0 -1
  80. package/dist/config-item-PBUWXK73.js +0 -5
  81. package/dist/explain.command-L32BQ7MB.js +0 -12
  82. package/dist/init.command-COWS3UCC.js +0 -11
  83. package/dist/install-plugin.command-UADLHWVP.js +0 -11
  84. package/dist/load.command-LOE3UVYT.js +0 -12
  85. package/dist/printenv.command-SA7E2DJW.js +0 -12
  86. package/dist/run.command-HOW5XU2R.js +0 -13
  87. package/dist/scan.command-K27R7LVS.js +0 -13
  88. package/dist/telemetry.command-DQY3TLPG.js +0 -11
  89. package/dist/typegen.command-BT6BXTLO.js +0 -12
@@ -0,0 +1,12 @@
1
+ export { commandFn, commandSpec, formatShellValue } from './chunk-ZZCDYV63.js';
2
+ import './chunk-4A54P4EM.js';
3
+ import './chunk-Q2XA45LC.js';
4
+ import './chunk-S5EU3LTR.js';
5
+ import './chunk-CHQDS2PI.js';
6
+ import './chunk-YBV5OJW6.js';
7
+ import './chunk-C4ITUXON.js';
8
+ import './chunk-6CCHLM3U.js';
9
+ import './chunk-XLYSNOR3.js';
10
+ import './chunk-6PEHRAEP.js';
11
+ //# sourceMappingURL=load.command-JTUAYW2W.js.map
12
+ //# sourceMappingURL=load.command-JTUAYW2W.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"load.command-LOE3UVYT.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"load.command-JTUAYW2W.js"}
@@ -1,5 +1,5 @@
1
- import { V as VarlockPlugin } from './env-graph-BnquQhm-.js';
2
- export { C as CoercionError, D as Debugger, R as ResolutionError, a as Resolver, S as SchemaError, b as ValidationError, c as createDebug } from './env-graph-BnquQhm-.js';
1
+ import { V as VarlockPlugin } from './env-graph-DaF8Aebq.js';
2
+ export { C as CoercionError, D as Debugger, R as ResolutionError, a as Resolver, S as SchemaError, b as ValidationError, c as createDebug } from './env-graph-DaF8Aebq.js';
3
3
  import '@env-spec/parser';
4
4
  import '@env-spec/utils/type-utils';
5
5
 
@@ -0,0 +1,12 @@
1
+ export { commandFn, commandSpec } from './chunk-QYICMUCP.js';
2
+ import './chunk-4A54P4EM.js';
3
+ import './chunk-Q2XA45LC.js';
4
+ import './chunk-S5EU3LTR.js';
5
+ import './chunk-CHQDS2PI.js';
6
+ import './chunk-YBV5OJW6.js';
7
+ import './chunk-C4ITUXON.js';
8
+ import './chunk-6CCHLM3U.js';
9
+ import './chunk-XLYSNOR3.js';
10
+ import './chunk-6PEHRAEP.js';
11
+ //# sourceMappingURL=printenv.command-NAHG4T76.js.map
12
+ //# sourceMappingURL=printenv.command-NAHG4T76.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"printenv.command-SA7E2DJW.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"printenv.command-NAHG4T76.js"}
@@ -0,0 +1,13 @@
1
+ export { commandFn, commandSpec } from './chunk-LAI7XVJU.js';
2
+ import './chunk-4A54P4EM.js';
3
+ import './chunk-Q2XA45LC.js';
4
+ import './chunk-S5EU3LTR.js';
5
+ import './chunk-CHQDS2PI.js';
6
+ import './chunk-YBV5OJW6.js';
7
+ import './chunk-C4ITUXON.js';
8
+ import './chunk-6CCHLM3U.js';
9
+ import './chunk-MGWUDHT5.js';
10
+ import './chunk-XLYSNOR3.js';
11
+ import './chunk-6PEHRAEP.js';
12
+ //# sourceMappingURL=run.command-2IUKOZHD.js.map
13
+ //# sourceMappingURL=run.command-2IUKOZHD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"run.command-HOW5XU2R.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"run.command-2IUKOZHD.js"}
@@ -1,4 +1,4 @@
1
- import { d as SerializedEnvGraph } from '../env-graph-BnquQhm-.js';
1
+ import { d as SerializedEnvGraph } from '../env-graph-DaF8Aebq.js';
2
2
  import '@env-spec/parser';
3
3
  import '@env-spec/utils/type-utils';
4
4
 
@@ -1,4 +1,4 @@
1
- export { ENV, getRedactionMapInfo, initVarlockEnv, redactSensitiveConfig, resetRedactionMap, revealSensitiveConfig, scanForLeaks, varlockSettings } from '../chunk-IMB5QAZS.js';
1
+ export { ENV, getRedactionMapInfo, initVarlockEnv, redactSensitiveConfig, resetRedactionMap, revealSensitiveConfig, scanForLeaks, varlockSettings } from '../chunk-MGWUDHT5.js';
2
2
  import '../chunk-XLYSNOR3.js';
3
3
  import '../chunk-6PEHRAEP.js';
4
4
  //# sourceMappingURL=env.js.map
@@ -128,6 +128,10 @@ function scanForLeaks(toScan, meta) {
128
128
  } else if (typeof Buffer !== "undefined" && toScan instanceof Buffer) {
129
129
  scanStrForLeaks(toScan.toString());
130
130
  return toScan;
131
+ } else if (ArrayBuffer.isView(toScan) || toScan instanceof ArrayBuffer) {
132
+ const decoder = new TextDecoder();
133
+ scanStrForLeaks(decoder.decode(toScan));
134
+ return toScan;
131
135
  } else if (toScan instanceof ReadableStream) {
132
136
  if (toScan.locked) {
133
137
  return toScan;
@@ -135,6 +135,10 @@ function scanForLeaks(toScan, meta) {
135
135
  } else if (typeof Buffer !== "undefined" && toScan instanceof Buffer) {
136
136
  scanStrForLeaks(toScan.toString());
137
137
  return toScan;
138
+ } else if (ArrayBuffer.isView(toScan) || toScan instanceof ArrayBuffer) {
139
+ const decoder = new TextDecoder();
140
+ scanStrForLeaks(decoder.decode(toScan));
141
+ return toScan;
138
142
  } else if (toScan instanceof ReadableStream) {
139
143
  if (toScan.locked) {
140
144
  return toScan;
@@ -1,5 +1,5 @@
1
- export { patchGlobalConsole, unpatchGlobalConsole } from '../chunk-BC7LU4LG.js';
2
- import '../chunk-IMB5QAZS.js';
1
+ export { patchGlobalConsole, unpatchGlobalConsole } from '../chunk-R73FENLU.js';
2
+ import '../chunk-MGWUDHT5.js';
3
3
  import '../chunk-XLYSNOR3.js';
4
4
  import '../chunk-6PEHRAEP.js';
5
5
  //# sourceMappingURL=patch-console.js.map
@@ -1,5 +1,5 @@
1
- export { patchGlobalResponse } from '../chunk-LVZSZAKN.js';
2
- import '../chunk-IMB5QAZS.js';
1
+ export { patchGlobalResponse } from '../chunk-F6RTQ5QX.js';
2
+ import '../chunk-MGWUDHT5.js';
3
3
  import '../chunk-XLYSNOR3.js';
4
4
  import '../chunk-6PEHRAEP.js';
5
5
  //# sourceMappingURL=patch-response.js.map
@@ -1,5 +1,5 @@
1
- export { patchGlobalServerResponse } from '../chunk-MYHVSJ3X.js';
2
- import '../chunk-IMB5QAZS.js';
1
+ export { patchGlobalServerResponse } from '../chunk-5DUWGI2N.js';
2
+ import '../chunk-MGWUDHT5.js';
3
3
  import '../chunk-XLYSNOR3.js';
4
4
  import '../chunk-6PEHRAEP.js';
5
5
  //# sourceMappingURL=patch-server-response.js.map
@@ -0,0 +1,13 @@
1
+ export { commandFn, commandSpec, getGitFiles, scanFileForValues, walkDirectory } from './chunk-DGXO2UN7.js';
2
+ import './chunk-GXNQVEXD.js';
3
+ import './chunk-LRT2CHDN.js';
4
+ import './chunk-4A54P4EM.js';
5
+ import './chunk-S5EU3LTR.js';
6
+ import './chunk-CHQDS2PI.js';
7
+ import './chunk-YBV5OJW6.js';
8
+ import './chunk-C4ITUXON.js';
9
+ import './chunk-6CCHLM3U.js';
10
+ import './chunk-XLYSNOR3.js';
11
+ import './chunk-6PEHRAEP.js';
12
+ //# sourceMappingURL=scan.command-BEPDT3YQ.js.map
13
+ //# sourceMappingURL=scan.command-BEPDT3YQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"scan.command-K27R7LVS.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"scan.command-BEPDT3YQ.js"}
@@ -0,0 +1,11 @@
1
+ export { commandFn, commandSpec } from './chunk-GWQJHKYT.js';
2
+ import './chunk-LRT2CHDN.js';
3
+ import './chunk-4A54P4EM.js';
4
+ import './chunk-CHQDS2PI.js';
5
+ import './chunk-YBV5OJW6.js';
6
+ import './chunk-C4ITUXON.js';
7
+ import './chunk-6CCHLM3U.js';
8
+ import './chunk-XLYSNOR3.js';
9
+ import './chunk-6PEHRAEP.js';
10
+ //# sourceMappingURL=telemetry.command-E6GIZKTJ.js.map
11
+ //# sourceMappingURL=telemetry.command-E6GIZKTJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-DQY3TLPG.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-E6GIZKTJ.js"}
@@ -0,0 +1,12 @@
1
+ export { commandFn, commandSpec } from './chunk-K5536FEN.js';
2
+ import './chunk-4A54P4EM.js';
3
+ import './chunk-Q2XA45LC.js';
4
+ import './chunk-S5EU3LTR.js';
5
+ import './chunk-CHQDS2PI.js';
6
+ import './chunk-YBV5OJW6.js';
7
+ import './chunk-C4ITUXON.js';
8
+ import './chunk-6CCHLM3U.js';
9
+ import './chunk-XLYSNOR3.js';
10
+ import './chunk-6PEHRAEP.js';
11
+ //# sourceMappingURL=typegen.command-JGJUSFGG.js.map
12
+ //# sourceMappingURL=typegen.command-JGJUSFGG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"typegen.command-BT6BXTLO.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"typegen.command-JGJUSFGG.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "varlock",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "AI-safe .env files: Schemas for agents, Secrets for humans.",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -123,7 +123,7 @@
123
123
  "devDependencies": {
124
124
  "@clack/core": "^1.0.0",
125
125
  "@clack/prompts": "^1.0.0",
126
- "@env-spec/parser": "0.3.0",
126
+ "@env-spec/parser": "0.3.1",
127
127
  "@env-spec/utils": "0.0.0",
128
128
  "@sindresorhus/is": "^7.2.0",
129
129
  "@types/bun": "^1.3.11",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/detect-runtime.ts","../src/runtime/lib/debug.ts","../src/runtime/env.ts"],"names":[],"mappings":"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","file":"chunk-IMB5QAZS.js","sourcesContent":["declare const Deno: any;\ndeclare const navigator: any;\ndeclare const window: any;\ndeclare const self: any;\n// declare const process: any;\n\n\nlet versionsStr = 'versions'; // eslint-disable-line\n// we use a string here so nextjs static analysis doesnt get angry\nconst processVersions = typeof process !== 'undefined' && (process as any)[versionsStr as any]; // @ts-ignore\n\nexport const isNode: boolean = processVersions && processVersions.node != null;\n\nexport const isWebWorker: boolean = typeof self === 'object'\n && self.constructor\n && self.constructor.name === 'DedicatedWorkerGlobalScope';\n\n// https://github.com/jsdom/jsdom/issues/1537#issuecomment-229405327\nexport const isJsDom: boolean = (typeof window !== 'undefined' && window.name === 'nodejs')\n || (typeof navigator !== 'undefined'\n && 'userAgent' in navigator\n && typeof navigator.userAgent === 'string'\n && (navigator.userAgent.includes('Node.js')\n || navigator.userAgent.includes('jsdom')));\n\nexport const isDeno: boolean = typeof Deno !== 'undefined'\n && typeof Deno.version !== 'undefined'\n && typeof Deno.version.deno !== 'undefined';\n\n/** @see {@link https://bun.sh/guides/util/detect-bun} */\nexport const isBun = processVersions && processVersions.bun != null;\n\n\n\nexport const isBrowser = typeof window !== 'undefined'\n && typeof window.document !== 'undefined'\n && typeof window.document.createElement === 'function'\n && typeof navigator !== 'undefined'\n && typeof navigator.userAgent === 'string';\n","/* eslint-disable no-console */\nexport function debug(...args: Array<any>) {\n if (!globalThis.process?.env.DEBUG_VARLOCK) return;\n console.log(...args);\n}\n","import { redactString } from './lib/redaction';\n\nimport type { SerializedEnvGraph } from '../env-graph';\nimport { isBrowser } from '../lib/detect-runtime';\nimport { debug } from './lib/debug';\n\n// TODO: would like to move all of the redaction utils out of this file\n// but its complicated since it is imported by code that may be run in the backend and frontend\n// but the patching code (which only runs in the backend) use these helper functions\n\n// this does not cover all cases, but serves our needs so far for Next.js\nfunction isString(s: any) {\n return Object.prototype.toString.call(s) === '[object String]';\n}\n\nconst UNMASK_STR = '👁';\n\n\n// Store redaction state on globalThis so all module instances (e.g., multiple CJS bundles\n// in Turbopack's middleware context) share the same redaction map.\n// Without this, the module instance that patches console.log may have an empty map\n// while a different instance has the populated one.\ntype RedactionState = {\n sensitiveSecretsMap: Record<string, { key: string, redacted: string }>,\n redactorFindReplace: undefined | { find: RegExp, replace: ReplaceFn },\n};\ntype ReplaceFn = (match: string, pre: string, val: string, post: string) => string;\n\nconst REDACTION_STATE_KEY = '__varlockRedactionState';\nfunction getRedactionState(): RedactionState {\n if (!(globalThis as any)[REDACTION_STATE_KEY]) {\n (globalThis as any)[REDACTION_STATE_KEY] = {\n sensitiveSecretsMap: {},\n redactorFindReplace: undefined,\n };\n }\n return (globalThis as any)[REDACTION_STATE_KEY];\n}\n\nexport function resetRedactionMap(graph: SerializedEnvGraph) {\n const state = getRedactionState();\n // reset map of { [sensitive] => redacted }\n state.sensitiveSecretsMap = {};\n for (const itemKey in graph.config) {\n const item = graph.config[itemKey];\n if (item.isSensitive && item.value && isString(item.value)) {\n // TODO: we want to respect masking settings from the schema (once added)\n const redacted = redactString(item.value);\n if (redacted) state.sensitiveSecretsMap[item.value] = { key: itemKey, redacted };\n }\n }\n // if no sensitive items exist, we dont need to do any redaction, but the redact fn is checking for undefined\n if (!Object.keys(state.sensitiveSecretsMap).length) {\n state.redactorFindReplace = undefined;\n return;\n }\n\n // reset find/replace regex+fn used for redacting secrets in strings\n const findRegex = new RegExp(\n [\n `(${UNMASK_STR} )?`,\n '(',\n Object.keys(state.sensitiveSecretsMap)\n // Escape special characters\n .map((s) => s.replace(/[()[\\]{}*+?^$|#.,/\\\\\\s-]/g, '\\\\$&'))\n // Sort for maximal munch\n .sort((a, b) => b.length - a.length)\n .join('|'),\n ')',\n `( ${UNMASK_STR})?`,\n ].join(''),\n 'g',\n );\n\n const replaceFn: ReplaceFn = (match, pre, val, post) => {\n // the pre and post matches only will be populated if they were present\n // and they are used to unmask the secret - so we do not want to replace in this case\n if (pre && post) return match;\n return state.sensitiveSecretsMap[val].redacted;\n };\n state.redactorFindReplace = { find: findRegex, replace: replaceFn };\n}\n\n/** Returns diagnostic info about the current redaction state (safe to expose — no secrets) */\nexport function getRedactionMapInfo() {\n const state = getRedactionState();\n return {\n sensitiveItemCount: Object.keys(state.sensitiveSecretsMap).length,\n hasRedactorRegex: !!state.redactorFindReplace,\n };\n}\n\n\n// While the module itself acts as a singleton to hold the current map of redacted values\n// we expose only the below const to end users\n\n\n/**\n * Redacts senstive config values from any string/array/object/etc\n *\n * NOTE - must be used only after varlock has loaded config\n * */\nexport function redactSensitiveConfig(o: any): any {\n const { redactorFindReplace } = getRedactionState();\n if (!redactorFindReplace) return o;\n if (!o) return o;\n\n // TODO: handle more cases?\n // we can probably redact safely from a few other datatypes - like set,map,etc?\n // objects are a bit tougher\n if (Array.isArray(o)) {\n return o.map(redactSensitiveConfig);\n }\n // try to redact if it's a plain object - not necessarily great for perf...\n if (o && typeof (o) === 'object' && Object.getPrototypeOf(o) === Object.prototype) {\n try {\n return JSON.parse(redactSensitiveConfig(JSON.stringify(o)));\n } catch (err) {\n return o;\n }\n }\n\n const type = typeof o;\n if (type === 'string' || (type === 'object' && Object.prototype.toString.call(o) === '[object String]')) {\n return (o as string).replaceAll(redactorFindReplace.find, redactorFindReplace.replace);\n }\n\n return o;\n}\n\n/**\n * utility to unmask a secret/sensitive value when logging to the console\n * currently this only works on a single secret, not objects or aggregated strings\n * */\nexport function revealSensitiveConfig(secretStr: string) {\n // if redaction not enabled, we just return the secret itself\n if (!(globalThis as any)._varlockOrigWriteToConsoleFn) return secretStr;\n // otherwise we add some wrapper characters which will be removed by the patched console behaviour\n return `${UNMASK_STR} ${secretStr} ${UNMASK_STR}`;\n}\n\n\n\n\n\n// reusable leak scanning helper function, used by various integrations\nexport function scanForLeaks(\n toScan: string | ReadableStream | null,\n // optional additional information about what is being scanned to be used in error messages\n meta?: {\n method?: string,\n file?: string,\n },\n) {\n debug('⚡️ varlock scanning for leaks');\n if (!toScan) return toScan;\n\n function scanStrForLeaks(strToScan: string) {\n const { sensitiveSecretsMap } = getRedactionState();\n\n // TODO: probably should use a single regex\n for (const sensitiveValue in sensitiveSecretsMap) {\n if (strToScan.includes(sensitiveValue)) {\n const itemKey = sensitiveSecretsMap[sensitiveValue].key;\n\n // error stack can gets awkwardly buried since we're so deep in the internals\n // so we'll write a nicer error message to help the user debug\n // eslint-disable-next-line no-console\n console.error([\n '',\n `🚨 ${'DETECTED LEAKED SENSITIVE CONFIG'} 🚨`,\n `> Config item key: ${itemKey}`,\n ...meta?.method ? [`> Scan method: ${meta.method}`] : [],\n ...meta?.file ? [`> File: ${meta.file}`] : [],\n '',\n ].join('\\n'));\n\n throw new Error(`🚨 DETECTED LEAKED SENSITIVE CONFIG - ${itemKey}`);\n }\n }\n }\n\n // scan a string\n if (isString(toScan)) {\n scanStrForLeaks(toScan as string);\n return toScan;\n // typeof guard needed: in edge runtime, this code runs as raw injected JS outside webpack's\n // module resolution, so bare `Buffer` is a ReferenceError even though edge supports it via\n // the sandbox's node:buffer module. This branch is unreachable in edge anyway (only strings/streams).\n } else if (typeof Buffer !== 'undefined' && toScan instanceof Buffer) {\n scanStrForLeaks(toScan.toString());\n return toScan;\n // scan a ReadableStream by piping it through a scanner\n } else if (toScan instanceof ReadableStream) {\n if (toScan.locked) {\n return toScan;\n }\n const chunkDecoder = new TextDecoder();\n return toScan.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n const chunkStr = chunkDecoder.decode(chunk);\n scanStrForLeaks(chunkStr);\n controller.enqueue(chunk);\n },\n }),\n );\n }\n // other things may be passed in like Buffer... but we'll ignore for now\n return toScan;\n}\n\n// -----------\n\n\n\n\n// --------------\n\nlet initializedEnv = false;\nconst envValues = {} as Record<string, any>;\nexport const varlockSettings = {} as Record<string, any>;\n\nconst processExists = !!globalThis.process;\nconst originalProcessEnv = { ...processExists && process.env };\nlet varlockInjectedProcessEnvKeys: Array<string> | undefined;\n\nexport function initVarlockEnv(opts?: {\n allowFail?: boolean,\n}) {\n debug('⚡️ INIT VARLOCK ENV!', initializedEnv, !!(globalThis as any).__varlockLoadedEnv, !!globalThis.process?.env.__VARLOCK_ENV);\n\n // normally we can just bail if we detect we are in the browser\n // however when front-end related tests, it may appear that we are in the browser but it is not\n // also some frameworks inject a process polyfill, others do not\n if (isBrowser && !globalThis.process?.env.__VARLOCK_ENV) {\n initializedEnv = true;\n return;\n }\n\n\n let serializedEnvData: SerializedEnvGraph;\n // when we inject resolved config at build time, we store it here\n if ((globalThis as any).__varlockLoadedEnv) {\n serializedEnvData = (globalThis as any).__varlockLoadedEnv;\n\n // otherwise if we inject via `varlock run` or have already loaded, it will be in process.env\n } else if (processExists && process.env.__VARLOCK_ENV) {\n serializedEnvData = JSON.parse(process.env.__VARLOCK_ENV);\n } else {\n if (opts?.allowFail) return;\n // eslint-disable-next-line no-console\n console.error([\n '',\n '🚨 initVarlockEnv failed 🚨',\n 'try rerunning your command via `varlock run`',\n '',\n ].join('\\n'));\n throw new Error('initVarlockEnv failed');\n }\n Object.assign(varlockSettings, serializedEnvData.settings);\n resetRedactionMap(serializedEnvData);\n\n const setProcessEnv = processExists;\n\n // if we've already injected process.env vars in the past, we'll reset those now\n if (setProcessEnv) {\n if (varlockInjectedProcessEnvKeys) {\n for (const key of varlockInjectedProcessEnvKeys) delete process.env[key];\n for (const key of Object.keys(originalProcessEnv)) process.env[key] = originalProcessEnv[key];\n }\n varlockInjectedProcessEnvKeys = [];\n }\n\n for (const itemKey in serializedEnvData.config) {\n const itemValue = serializedEnvData.config[itemKey].value;\n envValues[itemKey] = itemValue;\n if (setProcessEnv) {\n varlockInjectedProcessEnvKeys?.push(itemKey);\n // when re-injecting into process.env, we treat undefined as empty string\n // this more closely matches expected behaviour from other .env loaders\n process.env[itemKey] = itemValue === undefined ? '' : String(itemValue);\n }\n }\n initializedEnv = true;\n}\n\n// we will attempt to call initVarlockEnv automatically, but in most cases it should be called explicitly\n// note that if this is being imported in the browser, process.env may not exist, so we do this in a try/catch\ntry {\n if (!initializedEnv) {\n // if we are automatically loading because __VARLOCK_ENV is already set\n // then we assume process.env vars have also already been set (although might not harm anything?)\n initVarlockEnv({ allowFail: true });\n }\n} catch (err) {\n // expected that this will fail when process.env does not exist\n // but we may want to look for specific errors\n}\n\n\n\n// some object keys are checked by various tools when handling arbitrary data, especially in templates\n// because our proxy objects throw errors when unknown keys are accessed, this causes problems\n// for now we can just filter out a these keys and it should be fairly harmless\n// TODO: ideally this could be customized by the user, and not specific to vue\nconst IGNORED_PROXY_KEYS = [\n // vue - see https://github.com/vuejs/core/blob/70773d00985135a50556c61fb9855ed6b930cb82/packages/reactivity/src/ref.ts#L101\n '__v_isRef',\n];\n\n\n// this gets exported and then augmented by our type generation\n// ideally we'd start with a loose type `Record<string,any>` and then override it with the actual schema\n// so that if type generation was disabled, a user could still use `ENV`\n// but TS wont let us, so instead we start with it being empty, which will cause type errors\n// unless type generation is enabled\nexport interface TypedEnvSchema {}\n\nconst EnvProxy = new Proxy<TypedEnvSchema>({}, {\n get(target, prop) {\n // ignore symbols, as it likely an external tool checking something\n if (typeof prop === 'symbol') return;\n // special cases to avoid throwing on invalid keys\n if (IGNORED_PROXY_KEYS.includes(prop)) return;\n\n if (!initializedEnv) {\n throw new Error('varlock ENV not initialized');\n }\n\n if (prop in envValues) return envValues[prop];\n if ((globalThis as any).__varlockThrowOnMissingKeys) {\n // during development, we can feed in extra metadata and show more helpful errors\n if ((globalThis as any).__varlockValidKeys && (globalThis as any).__varlockValidKeys.includes(prop)) {\n throw new Error(`\\`ENV.${prop}\\` exists, but is not available in this environment`);\n } else {\n throw new Error(`\\`ENV.${prop}\\` does not exist`);\n }\n }\n return undefined;\n },\n});\n\nexport const ENV = EnvProxy;\n"]}