varlock 1.1.0 → 1.3.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.
- package/dist/audit.command-LLD5UIAW.js +16 -0
- package/dist/audit.command-LLD5UIAW.js.map +1 -0
- package/dist/auto-load.js +6 -6
- package/dist/{chunk-QSYH5IDD.js → chunk-5DRCCFKV.js} +3 -3
- package/dist/{chunk-QSYH5IDD.js.map → chunk-5DRCCFKV.js.map} +1 -1
- package/dist/{chunk-E3F6QKDZ.js → chunk-C5LW5EET.js} +6 -6
- package/dist/{chunk-E3F6QKDZ.js.map → chunk-C5LW5EET.js.map} +1 -1
- package/dist/chunk-CESFJIM4.js +198 -0
- package/dist/chunk-CESFJIM4.js.map +1 -0
- package/dist/{chunk-5DUWGI2N.js → chunk-DIPEXEIL.js} +3 -3
- package/dist/{chunk-5DUWGI2N.js.map → chunk-DIPEXEIL.js.map} +1 -1
- package/dist/{chunk-SDN53OAC.js → chunk-F6ZYIWAR.js} +160 -72
- package/dist/chunk-F6ZYIWAR.js.map +1 -0
- package/dist/{chunk-2PFIYNFA.js → chunk-FA5SNEKN.js} +30 -13
- package/dist/chunk-FA5SNEKN.js.map +1 -0
- package/dist/{chunk-XWYFSG46.js → chunk-GKN3UJNE.js} +651 -821
- package/dist/chunk-GKN3UJNE.js.map +1 -0
- package/dist/{chunk-TQXYC3G3.js → chunk-HH647LSU.js} +5 -5
- package/dist/{chunk-TQXYC3G3.js.map → chunk-HH647LSU.js.map} +1 -1
- package/dist/{chunk-6RF54KKR.js → chunk-HMWAOBZR.js} +78 -24
- package/dist/chunk-HMWAOBZR.js.map +1 -0
- package/dist/{chunk-H6NILU2I.js → chunk-INGOLNLE.js} +4 -4
- package/dist/{chunk-H6NILU2I.js.map → chunk-INGOLNLE.js.map} +1 -1
- package/dist/{chunk-JIUWL2NT.js → chunk-IO2OGZQU.js} +9 -9
- package/dist/chunk-IO2OGZQU.js.map +1 -0
- package/dist/chunk-IRXBCLL2.js +2045 -0
- package/dist/chunk-IRXBCLL2.js.map +1 -0
- package/dist/{chunk-QP7TS4SU.js → chunk-JOGGSYT2.js} +6 -6
- package/dist/chunk-JOGGSYT2.js.map +1 -0
- package/dist/{chunk-F6RTQ5QX.js → chunk-KFALDUEO.js} +3 -3
- package/dist/{chunk-F6RTQ5QX.js.map → chunk-KFALDUEO.js.map} +1 -1
- package/dist/{chunk-VN4LKYXR.js → chunk-KI5QLKPU.js} +6 -6
- package/dist/{chunk-VN4LKYXR.js.map → chunk-KI5QLKPU.js.map} +1 -1
- package/dist/{chunk-JUPAI2X4.js → chunk-M6QE3D2O.js} +7 -7
- package/dist/{chunk-JUPAI2X4.js.map → chunk-M6QE3D2O.js.map} +1 -1
- package/dist/{chunk-CDLU5P62.js → chunk-MPHVA4WC.js} +3 -3
- package/dist/{chunk-CDLU5P62.js.map → chunk-MPHVA4WC.js.map} +1 -1
- package/dist/{chunk-U2O3AUM2.js → chunk-NW4KR67N.js} +8 -8
- package/dist/{chunk-U2O3AUM2.js.map → chunk-NW4KR67N.js.map} +1 -1
- package/dist/{chunk-S5O4AAVX.js → chunk-OGGTDFVX.js} +8 -8
- package/dist/{chunk-S5O4AAVX.js.map → chunk-OGGTDFVX.js.map} +1 -1
- package/dist/chunk-P33JXOU6.js +523 -0
- package/dist/chunk-P33JXOU6.js.map +1 -0
- package/dist/{chunk-R73FENLU.js → chunk-QDEAHBCB.js} +3 -3
- package/dist/{chunk-R73FENLU.js.map → chunk-QDEAHBCB.js.map} +1 -1
- package/dist/{chunk-RBFS2QGC.js → chunk-RQZZDYWL.js} +8 -8
- package/dist/{chunk-RBFS2QGC.js.map → chunk-RQZZDYWL.js.map} +1 -1
- package/dist/{chunk-MGWUDHT5.js → chunk-UUJK65RS.js} +11 -3
- package/dist/chunk-UUJK65RS.js.map +1 -0
- package/dist/{chunk-A6THM3IR.js → chunk-WJLMLKSG.js} +5 -5
- package/dist/{chunk-A6THM3IR.js.map → chunk-WJLMLKSG.js.map} +1 -1
- package/dist/{chunk-YO6WHPM4.js → chunk-WTBUNHUJ.js} +5 -5
- package/dist/{chunk-YO6WHPM4.js.map → chunk-WTBUNHUJ.js.map} +1 -1
- package/dist/chunk-XUY3HAO2.js +171 -0
- package/dist/chunk-XUY3HAO2.js.map +1 -0
- package/dist/{chunk-ZJNDICC4.js → chunk-XXSPHSF7.js} +6 -6
- package/dist/{chunk-ZJNDICC4.js.map → chunk-XXSPHSF7.js.map} +1 -1
- package/dist/{chunk-GURKQO4J.js → chunk-YWTIKDGU.js} +7 -2
- package/dist/chunk-YWTIKDGU.js.map +1 -0
- package/dist/{chunk-F5H5MJ6U.js → chunk-ZTFQ7ZVH.js} +2 -5
- package/dist/chunk-ZTFQ7ZVH.js.map +1 -0
- package/dist/cli/cli-executable.js +54 -51
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/config-item-SQFJ2BJ2.js +7 -0
- package/dist/{config-item-6LTV4PNH.js.map → config-item-SQFJ2BJ2.js.map} +1 -1
- package/dist/dist-ZBZ52DPW.js +4 -0
- package/dist/{dist-WGIHRGBZ.js.map → dist-ZBZ52DPW.js.map} +1 -1
- package/dist/dotenv-compat.js +6 -6
- package/dist/encrypt.command-WISNYCTG.js +14 -0
- package/dist/{encrypt.command-F2OTB6HD.js.map → encrypt.command-WISNYCTG.js.map} +1 -1
- package/dist/{env-graph-iNQyTcya.d.ts → env-graph-DImkUkjl.d.ts} +30 -19
- package/dist/explain.command-THO6CRHD.js +15 -0
- package/dist/{explain.command-TEIPRC7Q.js.map → explain.command-THO6CRHD.js.map} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +14 -15
- package/dist/index.js.map +1 -1
- package/dist/init.command-3EDACW36.js +14 -0
- package/dist/{init.command-5LP3UFKD.js.map → init.command-3EDACW36.js.map} +1 -1
- package/dist/install-plugin.command-MXBZTBTE.js +13 -0
- package/dist/{install-plugin.command-X7RSLPUJ.js.map → install-plugin.command-MXBZTBTE.js.map} +1 -1
- package/dist/lib/exec-sync-varlock.js +1 -1
- package/dist/load.command-XRABTXAE.js +15 -0
- package/dist/{load.command-7SQRDQ3E.js.map → load.command-XRABTXAE.js.map} +1 -1
- package/dist/lock.command-O5MPBQ2I.js +7 -0
- package/dist/{lock.command-4LTGMJA3.js.map → lock.command-O5MPBQ2I.js.map} +1 -1
- package/dist/plugin-lib.d.ts +2 -2
- package/dist/plugin-lib.js +2 -2
- package/dist/printenv.command-DLCI4IPZ.js +15 -0
- package/dist/{printenv.command-ON7RMFEU.js.map → printenv.command-DLCI4IPZ.js.map} +1 -1
- package/dist/reveal.command-6BTK3FJZ.js +15 -0
- package/dist/{reveal.command-BW6XYVXH.js.map → reveal.command-6BTK3FJZ.js.map} +1 -1
- package/dist/run.command-5CIHZECD.js +16 -0
- package/dist/{run.command-5QADABYL.js.map → run.command-5CIHZECD.js.map} +1 -1
- package/dist/runtime/env.d.ts +1 -1
- package/dist/runtime/env.js +1 -1
- package/dist/runtime/init-edge.cjs +9 -1
- package/dist/runtime/init-server.cjs +9 -1
- package/dist/runtime/patch-console.js +2 -2
- package/dist/runtime/patch-response.js +2 -2
- package/dist/runtime/patch-server-response.js +2 -2
- package/dist/scan.command-PW3OOLQY.js +16 -0
- package/dist/{scan.command-ZVW3XAUG.js.map → scan.command-PW3OOLQY.js.map} +1 -1
- package/dist/telemetry.command-TZDNG2WR.js +13 -0
- package/dist/{telemetry.command-PY6E4QSH.js.map → telemetry.command-TZDNG2WR.js.map} +1 -1
- package/dist/typegen.command-QD26Q3MP.js +14 -0
- package/dist/{typegen.command-KZ4O5IKQ.js.map → typegen.command-QD26Q3MP.js.map} +1 -1
- package/native-bins/darwin/VarlockEnclave.app/Contents/CodeResources +0 -0
- package/native-bins/darwin/VarlockEnclave.app/Contents/MacOS/varlock-local-encrypt +0 -0
- package/native-bins/win32-x64/varlock-local-encrypt.exe +0 -0
- package/package.json +2 -2
- package/dist/chunk-2PFIYNFA.js.map +0 -1
- package/dist/chunk-6RF54KKR.js.map +0 -1
- package/dist/chunk-7GFD2ATN.js +0 -136
- package/dist/chunk-7GFD2ATN.js.map +0 -1
- package/dist/chunk-F5H5MJ6U.js.map +0 -1
- package/dist/chunk-GURKQO4J.js.map +0 -1
- package/dist/chunk-HDKXXS2X.js +0 -1959
- package/dist/chunk-HDKXXS2X.js.map +0 -1
- package/dist/chunk-JIUWL2NT.js.map +0 -1
- package/dist/chunk-MGWUDHT5.js.map +0 -1
- package/dist/chunk-QP7TS4SU.js.map +0 -1
- package/dist/chunk-SDN53OAC.js.map +0 -1
- package/dist/chunk-XWYFSG46.js.map +0 -1
- package/dist/config-item-6LTV4PNH.js +0 -7
- package/dist/dist-WGIHRGBZ.js +0 -4
- package/dist/encrypt.command-F2OTB6HD.js +0 -14
- package/dist/explain.command-TEIPRC7Q.js +0 -15
- package/dist/init.command-5LP3UFKD.js +0 -13
- package/dist/install-plugin.command-X7RSLPUJ.js +0 -13
- package/dist/load.command-7SQRDQ3E.js +0 -15
- package/dist/lock.command-4LTGMJA3.js +0 -7
- package/dist/printenv.command-ON7RMFEU.js +0 -15
- package/dist/reveal.command-BW6XYVXH.js +0 -15
- package/dist/run.command-5QADABYL.js +0 -16
- package/dist/scan.command-ZVW3XAUG.js +0 -16
- package/dist/telemetry.command-PY6E4QSH.js +0 -13
- package/dist/typegen.command-KZ4O5IKQ.js +0 -15
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { debug, varlockSettings, redactSensitiveConfig } from './chunk-
|
|
1
|
+
import { debug, varlockSettings, redactSensitiveConfig } from './chunk-UUJK65RS.js';
|
|
2
2
|
import { __name } from './chunk-6PEHRAEP.js';
|
|
3
3
|
|
|
4
4
|
// src/runtime/patch-console.ts
|
|
@@ -40,5 +40,5 @@ function unpatchGlobalConsole() {
|
|
|
40
40
|
__name(unpatchGlobalConsole, "unpatchGlobalConsole");
|
|
41
41
|
|
|
42
42
|
export { patchGlobalConsole, unpatchGlobalConsole };
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-QDEAHBCB.js.map
|
|
44
|
+
//# sourceMappingURL=chunk-QDEAHBCB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/patch-console.ts"],"names":[],"mappings":";;;;AAWO,SAAS,kBAAA,GAAqB;AACnC,EAAA,KAAA,CAAM,8CAAoC,CAAA;AAC1C,EAAA,IAAK,OAAA,CAAQ,IAAY,iBAAA,EAAmB;AAC1C,IAAA,KAAA,CAAM,mBAAmB,CAAA;AACzB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,eAAA,CAAgB,eAAe,KAAA,EAAO;AACxC,IAAA,KAAA,CAAM,wBAAwB,CAAA;AAC9B,IAAA;AAAA,EACF;AAQA,EAAA,MAAM,qBAAA,GAAwB,MAAA,CAAO,qBAAA,CAAsB,UAAA,CAAW,OAAO,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,KAAgB,iBAAiB,CAAA;AAG9H,EAAC,UAAA,CAAmB,4BAAA,KAAiC,UAAA,CAAW,OAAA,CAAQ,qBAAqB,CAAA;AAE7F,EAAA,UAAA,CAAW,OAAA,CAAQ,qBAAqB,CAAA,GAAI,WAAY;AACtD,IAAC,UAAA,CAAmB,4BAAA,CAA6B,KAAA,CAAM,IAAA,EAAM;AAAA,MAC3D,UAAU,CAAC,CAAA;AAAA,MACX,qBAAA,CAAsB,SAAA,CAAU,CAAC,CAAC,CAAA;AAAA,MAClC,UAAU,CAAC;AAAA,KACZ,CAAA;AAAA,EACH,CAAA;AAOA,EAAA,KAAA,MAAW,aAAA,IAAiB,CAAC,OAAA,EAAS,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAA,EAAG;AAEtF,IAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,OAAA,CAAQ,aAAa,CAAA;AAE1D,IAAA,MAAM,4BAAY,MAAA,CAAA,WAAY;AAE5B,MAAA,iBAAA,CAAkB,KAAA,CAAM,MAAM,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA,CAAE,GAAA,CAAI,qBAAqB,CAAC,CAAA;AAAA,IAChF,CAAA,EAHkB,WAAA,CAAA;AAIlB,IAAA,SAAA,CAAU,iBAAA,GAAoB,IAAA;AAG9B,IAAA,UAAA,CAAW,OAAA,CAAQ,aAAa,CAAA,GAAI,SAAA;AAAA,EACtC;AACF;AAhDgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAuDT,SAAS,oBAAA,GAAuB;AAErC,EAAA,IAAI,CAAE,WAAmB,4BAAA,EAA8B;AAEvD,EAAA,MAAM,qBAAA,GAAwB,MAAA,CAAO,qBAAA,CAAsB,UAAA,CAAW,OAAO,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,KAAgB,iBAAiB,CAAA;AAE9H,EAAA,UAAA,CAAW,OAAA,CAAQ,qBAAqB,CAAA,GAAK,UAAA,CAAmB,4BAAA;AAChE,EAAA,OAAQ,UAAA,CAAmB,4BAAA;AAC7B;AARgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/runtime/patch-console.ts"],"names":[],"mappings":";;;;AAWO,SAAS,kBAAA,GAAqB;AACnC,EAAA,KAAA,CAAM,8CAAoC,CAAA;AAC1C,EAAA,IAAK,OAAA,CAAQ,IAAY,iBAAA,EAAmB;AAC1C,IAAA,KAAA,CAAM,mBAAmB,CAAA;AACzB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,eAAA,CAAgB,eAAe,KAAA,EAAO;AACxC,IAAA,KAAA,CAAM,wBAAwB,CAAA;AAC9B,IAAA;AAAA,EACF;AAQA,EAAA,MAAM,qBAAA,GAAwB,MAAA,CAAO,qBAAA,CAAsB,UAAA,CAAW,OAAO,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,KAAgB,iBAAiB,CAAA;AAG9H,EAAC,UAAA,CAAmB,4BAAA,KAAiC,UAAA,CAAW,OAAA,CAAQ,qBAAqB,CAAA;AAE7F,EAAA,UAAA,CAAW,OAAA,CAAQ,qBAAqB,CAAA,GAAI,WAAY;AACtD,IAAC,UAAA,CAAmB,4BAAA,CAA6B,KAAA,CAAM,IAAA,EAAM;AAAA,MAC3D,UAAU,CAAC,CAAA;AAAA,MACX,qBAAA,CAAsB,SAAA,CAAU,CAAC,CAAC,CAAA;AAAA,MAClC,UAAU,CAAC;AAAA,KACZ,CAAA;AAAA,EACH,CAAA;AAOA,EAAA,KAAA,MAAW,aAAA,IAAiB,CAAC,OAAA,EAAS,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAA,EAAG;AAEtF,IAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,OAAA,CAAQ,aAAa,CAAA;AAE1D,IAAA,MAAM,4BAAY,MAAA,CAAA,WAAY;AAE5B,MAAA,iBAAA,CAAkB,KAAA,CAAM,MAAM,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA,CAAE,GAAA,CAAI,qBAAqB,CAAC,CAAA;AAAA,IAChF,CAAA,EAHkB,WAAA,CAAA;AAIlB,IAAA,SAAA,CAAU,iBAAA,GAAoB,IAAA;AAG9B,IAAA,UAAA,CAAW,OAAA,CAAQ,aAAa,CAAA,GAAI,SAAA;AAAA,EACtC;AACF;AAhDgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAuDT,SAAS,oBAAA,GAAuB;AAErC,EAAA,IAAI,CAAE,WAAmB,4BAAA,EAA8B;AAEvD,EAAA,MAAM,qBAAA,GAAwB,MAAA,CAAO,qBAAA,CAAsB,UAAA,CAAW,OAAO,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,KAAgB,iBAAiB,CAAA;AAE9H,EAAA,UAAA,CAAW,OAAA,CAAQ,qBAAqB,CAAA,GAAK,UAAA,CAAmB,4BAAA;AAChE,EAAA,OAAQ,UAAA,CAAmB,4BAAA;AAC7B;AARgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA","file":"chunk-QDEAHBCB.js","sourcesContent":["/* eslint-disable func-names, no-console, prefer-rest-params */\n\nimport { redactSensitiveConfig, varlockSettings } from './env';\nimport { debug } from './lib/debug';\n\n\n/**\n * patches global console methods to redact sensitive config\n *\n * NOTE - this may not be 100% foolproof depending on the platform\n * */\nexport function patchGlobalConsole() {\n debug('⚡️ PATCHING global console methods');\n if ((console.log as any)._varlockPatchedFn) {\n debug('> already patched');\n return;\n }\n if (varlockSettings.redactLogs === false) {\n debug('> disabled by settings');\n return;\n }\n\n // our method of patching involves replacing an internal node method which may not be called if console.log itself has also been patched\n // for example AWS lambdas patches this to write the logs to a file which then is pushed to the rest of their system\n\n // so first we'll just patch the internal method do deal with normal stdout/stderr logs -------------------------------------\n\n // we need the internal symbol name to access the internal method\n const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === 'kWriteToConsole');\n\n // @ts-ignore\n (globalThis as any)._varlockOrigWriteToConsoleFn ||= globalThis.console[kWriteToConsoleSymbol];\n // @ts-ignore\n globalThis.console[kWriteToConsoleSymbol] = function () {\n (globalThis as any)._varlockOrigWriteToConsoleFn.apply(this, [\n arguments[0],\n redactSensitiveConfig(arguments[1]),\n arguments[2],\n ]);\n };\n\n // and now we'll wrap console.log (and the other methods) if it looks like they have been patched already ------------------\n // NOTE - this will not fully redact from everything since we can't safely reach deep into objects\n // ideally we would only turn this when the above method does not work, but it's not trivial to detect when it that is the case\n // so we'll turn it on all the time for now...\n\n for (const logMethodName of ['trace', 'debug', 'info', 'log', 'info', 'warn', 'error']) {\n // @ts-ignore\n const originalLogMethod = globalThis.console[logMethodName];\n\n const patchedFn = function () {\n // @ts-ignore\n originalLogMethod.apply(this, Array.from(arguments).map(redactSensitiveConfig));\n };\n patchedFn._varlockPatchedFn = true;\n\n // @ts-ignore\n globalThis.console[logMethodName] = patchedFn;\n }\n}\n\n/**\n * restore's original global console methods to stop redacting secrets\n *\n * (only needed during local development when switching settings on/off in a process that does not reload)\n * */\nexport function unpatchGlobalConsole() {\n // we'll only care about the normal case where console.log has NOT been patched by something else... (see above)\n if (!(globalThis as any)._varlockOrigWriteToConsoleFn) return;\n\n const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === 'kWriteToConsole');\n // @ts-ignore\n globalThis.console[kWriteToConsoleSymbol] = (globalThis as any)._varlockOrigWriteToConsoleFn;\n delete (globalThis as any)._varlockOrigWriteToConsoleFn;\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { define } from './chunk-4A54P4EM.js';
|
|
2
|
-
import { checkForSchemaErrors, checkForNoEnvFiles } from './chunk-7GFD2ATN.js';
|
|
3
|
-
import { loadVarlockEnvGraph } from './chunk-E3F6QKDZ.js';
|
|
4
1
|
import { gracefulExit } from './chunk-CHQDS2PI.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
2
|
+
import { define } from './chunk-4A54P4EM.js';
|
|
3
|
+
import { checkForSchemaErrors, checkForNoEnvFiles } from './chunk-XUY3HAO2.js';
|
|
4
|
+
import { loadVarlockEnvGraph } from './chunk-C5LW5EET.js';
|
|
5
|
+
import { CliExitError } from './chunk-JOGGSYT2.js';
|
|
6
|
+
import { ansis_default, select } from './chunk-GKN3UJNE.js';
|
|
7
|
+
import { q } from './chunk-IRXBCLL2.js';
|
|
8
8
|
import { redactString } from './chunk-XLYSNOR3.js';
|
|
9
9
|
import { __name } from './chunk-6PEHRAEP.js';
|
|
10
10
|
|
|
@@ -195,5 +195,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
|
|
|
195
195
|
}, "commandFn");
|
|
196
196
|
|
|
197
197
|
export { commandFn, commandSpec };
|
|
198
|
-
//# sourceMappingURL=chunk-
|
|
199
|
-
//# sourceMappingURL=chunk-
|
|
198
|
+
//# sourceMappingURL=chunk-RQZZDYWL.js.map
|
|
199
|
+
//# sourceMappingURL=chunk-RQZZDYWL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/reveal.command.ts"],"names":["item"],"mappings":"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","file":"chunk-RBFS2QGC.js","sourcesContent":["import ansis from 'ansis';\nimport { define } from 'gunshi';\nimport { isCancel } from '@clack/prompts';\nimport { gracefulExit } from 'exit-hook';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { checkForSchemaErrors, checkForNoEnvFiles } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { CliExitError } from '../helpers/exit-error';\nimport { select } from '../helpers/prompts';\nimport { ConfigItem } from '../../env-graph';\nimport { redactString } from '../../runtime/lib/redaction';\n\nexport const commandSpec = define({\n name: 'reveal',\n description: 'Securely view decrypted values of sensitive environment variables',\n args: {\n copy: {\n type: 'boolean',\n description: 'Copy the value to clipboard instead of displaying (auto-clears after 10s)',\n },\n path: {\n type: 'string',\n short: 'p',\n multiple: true,\n description: 'Path to a specific .env file or directory to use as the entry point (can be specified multiple times)',\n },\n env: {\n type: 'string',\n description: 'Set the environment (e.g., production, development, etc)',\n },\n },\n examples: `\nSecurely view the plaintext value of sensitive environment variables.\nValues are shown in an alternate screen buffer so they don't persist in\nterminal scrollback history.\n\nExamples:\n varlock reveal # Interactive picker to select and reveal values\n varlock reveal MY_SECRET # Reveal a specific variable\n varlock reveal MY_SECRET --copy # Copy value to clipboard (auto-clears after 10s)\n`.trim(),\n});\n\nconst CLIPBOARD_CLEAR_DELAY_MS = 10_000;\n\nasync function copyToClipboard(text: string): Promise<void> {\n const { execSync } = await import('node:child_process');\n const platform = process.platform;\n\n if (platform === 'darwin') {\n execSync('pbcopy', { input: text });\n } else if (platform === 'linux') {\n // try xclip first, then xsel\n try {\n execSync('xclip -selection clipboard', { input: text });\n } catch {\n execSync('xsel --clipboard --input', { input: text });\n }\n } else if (platform === 'win32') {\n execSync('clip', { input: text });\n } else {\n throw new CliExitError('Clipboard not supported on this platform');\n }\n}\n\nasync function clearClipboard(): Promise<void> {\n const { execSync } = await import('node:child_process');\n const platform = process.platform;\n\n try {\n if (platform === 'darwin') {\n execSync('pbcopy', { input: '' });\n } else if (platform === 'linux') {\n try {\n execSync('xclip -selection clipboard', { input: '' });\n } catch {\n execSync('xsel --clipboard --input', { input: '' });\n }\n } else if (platform === 'win32') {\n execSync('echo. | clip', { shell: 'cmd.exe' });\n }\n } catch {\n // best effort\n }\n}\n\nfunction enterAltScreen() {\n process.stdout.write('\\x1b[?1049h'); // switch to alternate screen buffer\n process.stdout.write('\\x1b[H'); // move cursor to top-left\n}\n\nfunction exitAltScreen() {\n process.stdout.write('\\x1b[?1049l'); // switch back to main screen buffer\n}\n\n/** Wait for a single keypress, returns the key */\nasync function waitForKeypress(): Promise<string> {\n return new Promise((resolve) => {\n const wasRaw = process.stdin.isRaw;\n if (process.stdin.isTTY) process.stdin.setRawMode(true);\n process.stdin.resume();\n process.stdin.once('data', (data) => {\n if (process.stdin.isTTY) process.stdin.setRawMode(wasRaw);\n process.stdin.pause();\n resolve(data.toString());\n });\n });\n}\n\nfunction displayRevealedValue(item: ConfigItem) {\n enterAltScreen();\n\n const value = item.resolvedValue;\n const valStr = value === undefined || value === null ? ansis.gray('(empty)') : String(value);\n\n console.log('');\n console.log(ansis.bold.cyan(` ${item.key}`));\n if (item.description) {\n console.log(ansis.gray(` ${item.description}`));\n }\n console.log('');\n console.log(` ${valStr}`);\n console.log('');\n console.log(ansis.gray(' Press any key to hide...'));\n}\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { copy: copyMode } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n entryFilePaths: ctx.values.path,\n });\n\n checkForSchemaErrors(envGraph);\n checkForNoEnvFiles(envGraph);\n\n await envGraph.resolveEnvValues();\n\n // Collect sensitive items\n const sensitiveItems: Array<ConfigItem> = [];\n for (const itemKey of envGraph.sortedConfigKeys) {\n const item = envGraph.configSchema[itemKey];\n if (item.isSensitive && item.resolvedValue !== undefined) {\n sensitiveItems.push(item);\n }\n }\n\n if (sensitiveItems.length === 0) {\n console.log('No sensitive values found to reveal.');\n return;\n }\n\n // Check if a specific variable was requested via positional arg\n const positionals = (ctx.positionals ?? []).slice(ctx.commandPath?.length ?? 0);\n const requestedVar = positionals[0];\n\n if (requestedVar) {\n // Direct reveal of a specific variable\n const item = sensitiveItems.find((i) => i.key === requestedVar);\n if (!item) {\n // Check if it exists but isn't sensitive\n if (requestedVar in envGraph.configSchema) {\n throw new CliExitError(`\"${requestedVar}\" is not marked as sensitive`, {\n suggestion: 'Use `varlock printenv` for non-sensitive values.',\n });\n }\n throw new CliExitError(`Variable \"${requestedVar}\" not found in schema`);\n }\n\n if (copyMode) {\n await copyToClipboard(String(item.resolvedValue ?? ''));\n console.log(`\\n Copied ${ansis.cyan(item.key)} to clipboard.`);\n console.log(ansis.gray(` Clipboard will be cleared in ${CLIPBOARD_CLEAR_DELAY_MS / 1000}s.\\n`));\n setTimeout(async () => {\n await clearClipboard();\n console.log(ansis.gray(' Clipboard cleared.'));\n gracefulExit();\n }, CLIPBOARD_CLEAR_DELAY_MS);\n return;\n }\n\n displayRevealedValue(item);\n await waitForKeypress();\n exitAltScreen();\n return;\n }\n\n // Interactive picker loop\n while (true) {\n const selected = await select<string>({\n message: `Select a variable to reveal ${ansis.gray('(use arrows, enter to select)')}`,\n options: sensitiveItems.map((item) => ({\n value: item.key,\n label: item.key,\n hint: redactString(String(item.resolvedValue ?? '')) ?? undefined,\n })),\n });\n\n if (isCancel(selected)) return gracefulExit();\n\n const item = sensitiveItems.find((i) => i.key === selected)!;\n\n if (copyMode) {\n await copyToClipboard(String(item.resolvedValue ?? ''));\n console.log(`\\n Copied ${ansis.cyan(item.key)} to clipboard.`);\n console.log(ansis.gray(` Clipboard will be cleared in ${CLIPBOARD_CLEAR_DELAY_MS / 1000}s.\\n`));\n setTimeout(async () => {\n await clearClipboard();\n console.log(ansis.gray(' Clipboard cleared.'));\n gracefulExit();\n }, CLIPBOARD_CLEAR_DELAY_MS);\n return;\n }\n\n displayRevealedValue(item);\n await waitForKeypress();\n exitAltScreen();\n\n // Loop back to the picker to reveal another value\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/reveal.command.ts"],"names":["item"],"mappings":"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","file":"chunk-RQZZDYWL.js","sourcesContent":["import ansis from 'ansis';\nimport { define } from 'gunshi';\nimport { isCancel } from '@clack/prompts';\nimport { gracefulExit } from 'exit-hook';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { checkForSchemaErrors, checkForNoEnvFiles } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { CliExitError } from '../helpers/exit-error';\nimport { select } from '../helpers/prompts';\nimport { ConfigItem } from '../../env-graph';\nimport { redactString } from '../../runtime/lib/redaction';\n\nexport const commandSpec = define({\n name: 'reveal',\n description: 'Securely view decrypted values of sensitive environment variables',\n args: {\n copy: {\n type: 'boolean',\n description: 'Copy the value to clipboard instead of displaying (auto-clears after 10s)',\n },\n path: {\n type: 'string',\n short: 'p',\n multiple: true,\n description: 'Path to a specific .env file or directory to use as the entry point (can be specified multiple times)',\n },\n env: {\n type: 'string',\n description: 'Set the environment (e.g., production, development, etc)',\n },\n },\n examples: `\nSecurely view the plaintext value of sensitive environment variables.\nValues are shown in an alternate screen buffer so they don't persist in\nterminal scrollback history.\n\nExamples:\n varlock reveal # Interactive picker to select and reveal values\n varlock reveal MY_SECRET # Reveal a specific variable\n varlock reveal MY_SECRET --copy # Copy value to clipboard (auto-clears after 10s)\n`.trim(),\n});\n\nconst CLIPBOARD_CLEAR_DELAY_MS = 10_000;\n\nasync function copyToClipboard(text: string): Promise<void> {\n const { execSync } = await import('node:child_process');\n const platform = process.platform;\n\n if (platform === 'darwin') {\n execSync('pbcopy', { input: text });\n } else if (platform === 'linux') {\n // try xclip first, then xsel\n try {\n execSync('xclip -selection clipboard', { input: text });\n } catch {\n execSync('xsel --clipboard --input', { input: text });\n }\n } else if (platform === 'win32') {\n execSync('clip', { input: text });\n } else {\n throw new CliExitError('Clipboard not supported on this platform');\n }\n}\n\nasync function clearClipboard(): Promise<void> {\n const { execSync } = await import('node:child_process');\n const platform = process.platform;\n\n try {\n if (platform === 'darwin') {\n execSync('pbcopy', { input: '' });\n } else if (platform === 'linux') {\n try {\n execSync('xclip -selection clipboard', { input: '' });\n } catch {\n execSync('xsel --clipboard --input', { input: '' });\n }\n } else if (platform === 'win32') {\n execSync('echo. | clip', { shell: 'cmd.exe' });\n }\n } catch {\n // best effort\n }\n}\n\nfunction enterAltScreen() {\n process.stdout.write('\\x1b[?1049h'); // switch to alternate screen buffer\n process.stdout.write('\\x1b[H'); // move cursor to top-left\n}\n\nfunction exitAltScreen() {\n process.stdout.write('\\x1b[?1049l'); // switch back to main screen buffer\n}\n\n/** Wait for a single keypress, returns the key */\nasync function waitForKeypress(): Promise<string> {\n return new Promise((resolve) => {\n const wasRaw = process.stdin.isRaw;\n if (process.stdin.isTTY) process.stdin.setRawMode(true);\n process.stdin.resume();\n process.stdin.once('data', (data) => {\n if (process.stdin.isTTY) process.stdin.setRawMode(wasRaw);\n process.stdin.pause();\n resolve(data.toString());\n });\n });\n}\n\nfunction displayRevealedValue(item: ConfigItem) {\n enterAltScreen();\n\n const value = item.resolvedValue;\n const valStr = value === undefined || value === null ? ansis.gray('(empty)') : String(value);\n\n console.log('');\n console.log(ansis.bold.cyan(` ${item.key}`));\n if (item.description) {\n console.log(ansis.gray(` ${item.description}`));\n }\n console.log('');\n console.log(` ${valStr}`);\n console.log('');\n console.log(ansis.gray(' Press any key to hide...'));\n}\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { copy: copyMode } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n entryFilePaths: ctx.values.path,\n });\n\n checkForSchemaErrors(envGraph);\n checkForNoEnvFiles(envGraph);\n\n await envGraph.resolveEnvValues();\n\n // Collect sensitive items\n const sensitiveItems: Array<ConfigItem> = [];\n for (const itemKey of envGraph.sortedConfigKeys) {\n const item = envGraph.configSchema[itemKey];\n if (item.isSensitive && item.resolvedValue !== undefined) {\n sensitiveItems.push(item);\n }\n }\n\n if (sensitiveItems.length === 0) {\n console.log('No sensitive values found to reveal.');\n return;\n }\n\n // Check if a specific variable was requested via positional arg\n const positionals = (ctx.positionals ?? []).slice(ctx.commandPath?.length ?? 0);\n const requestedVar = positionals[0];\n\n if (requestedVar) {\n // Direct reveal of a specific variable\n const item = sensitiveItems.find((i) => i.key === requestedVar);\n if (!item) {\n // Check if it exists but isn't sensitive\n if (requestedVar in envGraph.configSchema) {\n throw new CliExitError(`\"${requestedVar}\" is not marked as sensitive`, {\n suggestion: 'Use `varlock printenv` for non-sensitive values.',\n });\n }\n throw new CliExitError(`Variable \"${requestedVar}\" not found in schema`);\n }\n\n if (copyMode) {\n await copyToClipboard(String(item.resolvedValue ?? ''));\n console.log(`\\n Copied ${ansis.cyan(item.key)} to clipboard.`);\n console.log(ansis.gray(` Clipboard will be cleared in ${CLIPBOARD_CLEAR_DELAY_MS / 1000}s.\\n`));\n setTimeout(async () => {\n await clearClipboard();\n console.log(ansis.gray(' Clipboard cleared.'));\n gracefulExit();\n }, CLIPBOARD_CLEAR_DELAY_MS);\n return;\n }\n\n displayRevealedValue(item);\n await waitForKeypress();\n exitAltScreen();\n return;\n }\n\n // Interactive picker loop\n while (true) {\n const selected = await select<string>({\n message: `Select a variable to reveal ${ansis.gray('(use arrows, enter to select)')}`,\n options: sensitiveItems.map((item) => ({\n value: item.key,\n label: item.key,\n hint: redactString(String(item.resolvedValue ?? '')) ?? undefined,\n })),\n });\n\n if (isCancel(selected)) return gracefulExit();\n\n const item = sensitiveItems.find((i) => i.key === selected)!;\n\n if (copyMode) {\n await copyToClipboard(String(item.resolvedValue ?? ''));\n console.log(`\\n Copied ${ansis.cyan(item.key)} to clipboard.`);\n console.log(ansis.gray(` Clipboard will be cleared in ${CLIPBOARD_CLEAR_DELAY_MS / 1000}s.\\n`));\n setTimeout(async () => {\n await clearClipboard();\n console.log(ansis.gray(' Clipboard cleared.'));\n gracefulExit();\n }, CLIPBOARD_CLEAR_DELAY_MS);\n return;\n }\n\n displayRevealedValue(item);\n await waitForKeypress();\n exitAltScreen();\n\n // Loop back to the picker to reveal another value\n }\n};\n"]}
|
|
@@ -149,6 +149,7 @@ function scanForLeaks(toScan, meta) {
|
|
|
149
149
|
}
|
|
150
150
|
__name(scanForLeaks, "scanForLeaks");
|
|
151
151
|
var initializedEnv = false;
|
|
152
|
+
var configHasErrors = false;
|
|
152
153
|
var envValues = {};
|
|
153
154
|
var varlockSettings = {};
|
|
154
155
|
var processExists = !!globalThis.process;
|
|
@@ -176,6 +177,7 @@ function initVarlockEnv(opts) {
|
|
|
176
177
|
throw new Error("initVarlockEnv failed");
|
|
177
178
|
}
|
|
178
179
|
Object.assign(varlockSettings, serializedEnvData.settings);
|
|
180
|
+
configHasErrors = !!serializedEnvData.errors;
|
|
179
181
|
resetRedactionMap(serializedEnvData);
|
|
180
182
|
const setProcessEnv = processExists;
|
|
181
183
|
if (setProcessEnv) {
|
|
@@ -211,7 +213,13 @@ var EnvProxy = new Proxy({}, {
|
|
|
211
213
|
if (typeof prop === "symbol") return;
|
|
212
214
|
if (IGNORED_PROXY_KEYS.includes(prop)) return;
|
|
213
215
|
if (!initializedEnv) {
|
|
214
|
-
throw new Error(
|
|
216
|
+
throw new Error(
|
|
217
|
+
"varlock ENV not initialized \u2014 make sure varlock is set up correctly.\nSee https://varlock.dev/docs/get-started for setup instructions."
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
if (configHasErrors) {
|
|
221
|
+
console.error(`[varlock] \u26A0\uFE0F ENV.${prop} accessed but config has errors \u2014 values may be missing or incorrect`);
|
|
222
|
+
return void 0;
|
|
215
223
|
}
|
|
216
224
|
if (prop in envValues) return envValues[prop];
|
|
217
225
|
if (globalThis.__varlockThrowOnMissingKeys) {
|
|
@@ -227,5 +235,5 @@ var EnvProxy = new Proxy({}, {
|
|
|
227
235
|
var ENV = EnvProxy;
|
|
228
236
|
|
|
229
237
|
export { ENV, debug, getRedactionMapInfo, initVarlockEnv, redactSensitiveConfig, resetRedactionMap, revealSensitiveConfig, scanForLeaks, varlockSettings };
|
|
230
|
-
//# sourceMappingURL=chunk-
|
|
231
|
-
//# sourceMappingURL=chunk-
|
|
238
|
+
//# sourceMappingURL=chunk-UUJK65RS.js.map
|
|
239
|
+
//# sourceMappingURL=chunk-UUJK65RS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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-UUJK65RS.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 Uint8Array / ArrayBufferView / ArrayBuffer (common in Cloudflare Workers)\n } else if (ArrayBuffer.isView(toScan) || toScan instanceof ArrayBuffer) {\n const decoder = new TextDecoder();\n scanStrForLeaks(decoder.decode(toScan as any));\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;\nlet configHasErrors = 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 configHasErrors = !!(serializedEnvData as any).errors;\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(\n 'varlock ENV not initialized — make sure varlock is set up correctly.\\n'\n + 'See https://varlock.dev/docs/get-started for setup instructions.',\n );\n }\n\n if (configHasErrors) {\n // eslint-disable-next-line no-console\n console.error(`[varlock] ⚠️ ENV.${prop} accessed but config has errors — values may be missing or incorrect`);\n return undefined;\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"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isBundledSEA } from './chunk-GXNQVEXD.js';
|
|
2
|
-
import { fmt } from './chunk-
|
|
2
|
+
import { fmt } from './chunk-INGOLNLE.js';
|
|
3
3
|
import { define } from './chunk-4A54P4EM.js';
|
|
4
|
-
import { CliExitError } from './chunk-
|
|
5
|
-
import { require_semver, ansis_default, downloadPluginToCache } from './chunk-
|
|
4
|
+
import { CliExitError } from './chunk-JOGGSYT2.js';
|
|
5
|
+
import { require_semver, ansis_default, downloadPluginToCache } from './chunk-GKN3UJNE.js';
|
|
6
6
|
import { __toESM, __name } from './chunk-6PEHRAEP.js';
|
|
7
7
|
|
|
8
8
|
// src/cli/commands/install-plugin.command.ts
|
|
@@ -75,5 +75,5 @@ For example: ${fmt.command("add my-plugin", { jsPackageManager: true })}`
|
|
|
75
75
|
}, "commandFn");
|
|
76
76
|
|
|
77
77
|
export { commandFn, commandSpec };
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
78
|
+
//# sourceMappingURL=chunk-WJLMLKSG.js.map
|
|
79
|
+
//# sourceMappingURL=chunk-WJLMLKSG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/install-plugin.command.ts"],"names":["semver"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/install-plugin.command.ts"],"names":["semver"],"mappings":"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","file":"chunk-WJLMLKSG.js","sourcesContent":["import { define } from 'gunshi';\nimport ansis from 'ansis';\nimport semver from 'semver';\n\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { CliExitError } from '../helpers/exit-error';\nimport { isBundledSEA } from '../helpers/install-detection';\nimport { fmt } from '../helpers/pretty-format';\nimport { downloadPluginToCache } from '../../env-graph/lib/plugins';\n\nexport const commandSpec = define({\n name: 'install-plugin',\n description: 'Download and cache a plugin from npm for use with the standalone binary',\n args: {\n plugin: {\n type: 'positional',\n description: 'Plugin to install, in the format name@version (e.g. my-plugin@1.2.3)',\n },\n },\n examples: `\nPre-downloads a plugin into the local varlock plugin cache so it is available without\nneeding an interactive confirmation prompt. This is useful in CI environments or any\nother non-interactive workflow where the standalone binary is used.\n\nThe plugin must be specified with an exact version number.\n\nExamples:\n varlock install-plugin my-plugin@1.2.3\n varlock install-plugin @my-scope/my-plugin@2.0.0\n`.trim(),\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n if (!isBundledSEA()) {\n throw new CliExitError('This command is only available when using the standalone varlock binary', {\n suggestion: 'In a JS project, install plugins as regular dependencies using your package manager.\\n'\n + `For example: ${fmt.command('add my-plugin', { jsPackageManager: true })}`,\n });\n }\n\n const pluginDescriptor = ctx.values.plugin as string | undefined;\n\n if (!pluginDescriptor) {\n throw new CliExitError('No plugin specified', {\n suggestion: 'Usage: varlock install-plugin <name@version> (e.g. my-plugin@1.2.3)',\n });\n }\n\n // Parse module name and version from descriptor like `some-plugin@1.2.3` or `@scope/pkg@1.2.3`.\n // Use lastIndexOf to correctly handle scoped packages (e.g. @scope/pkg@1.2.3).\n const atLocation = pluginDescriptor.lastIndexOf('@');\n if (atLocation === -1) {\n throw new CliExitError(`Missing version in \"${pluginDescriptor}\"`, {\n suggestion: `Specify an exact version, e.g. \\`varlock install-plugin ${pluginDescriptor}@1.2.3\\``,\n });\n }\n\n const moduleName = pluginDescriptor.slice(0, atLocation);\n const versionDescriptor = pluginDescriptor.slice(atLocation + 1);\n\n if (!versionDescriptor) {\n throw new CliExitError(`Missing version in \"${pluginDescriptor}\"`, {\n suggestion: `Specify an exact version, e.g. \\`varlock install-plugin ${moduleName}@1.2.3\\``,\n });\n }\n\n if (!semver.valid(versionDescriptor)) {\n throw new CliExitError(`\"${versionDescriptor}\" is not an exact version`, {\n suggestion: `Use a fixed version number (e.g. 1.2.3), not a range. Example: \\`varlock install-plugin ${moduleName}@1.2.3\\``,\n });\n }\n\n console.log(`\\n📦 Installing plugin ${ansis.bold(`${moduleName}@${versionDescriptor}`)} into local cache...\\n`);\n\n try {\n const cachedPath = await downloadPluginToCache(moduleName, versionDescriptor);\n console.log(`✅ Plugin ${ansis.bold(`${moduleName}@${versionDescriptor}`)} installed successfully`);\n console.log(ansis.dim(` Cached at: ${cachedPath}\\n`));\n } catch (err) {\n throw new CliExitError(`Failed to install plugin \"${moduleName}@${versionDescriptor}\"`, {\n details: (err as Error).message,\n });\n }\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { fmt } from './chunk-
|
|
2
|
-
import { define } from './chunk-4A54P4EM.js';
|
|
1
|
+
import { fmt } from './chunk-INGOLNLE.js';
|
|
3
2
|
import { gracefulExit } from './chunk-CHQDS2PI.js';
|
|
4
|
-
import {
|
|
3
|
+
import { define } from './chunk-4A54P4EM.js';
|
|
4
|
+
import { CliExitError } from './chunk-JOGGSYT2.js';
|
|
5
5
|
import { getUserVarlockDir } from './chunk-O3WTD6L4.js';
|
|
6
6
|
import { __name } from './chunk-6PEHRAEP.js';
|
|
7
7
|
import { join } from 'path';
|
|
@@ -63,5 +63,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
|
|
|
63
63
|
}, "commandFn");
|
|
64
64
|
|
|
65
65
|
export { commandFn, commandSpec };
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-WTBUNHUJ.js.map
|
|
67
|
+
//# sourceMappingURL=chunk-WTBUNHUJ.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;AAAA,EAAA,CAAA,CAWR,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,YAAY,iBAAA,EAAkB;AACpC,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,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AAChC,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-
|
|
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;AAAA,EAAA,CAAA,CAWR,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,YAAY,iBAAA,EAAkB;AACpC,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,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AAChC,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-WTBUNHUJ.js","sourcesContent":["import { 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';\nimport { getUserVarlockDir } from '../../lib/user-config-dir';\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 $XDG_CONFIG_HOME/varlock/config.json (or ~/.config/varlock/config.json) saving\nyour 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 = getUserVarlockDir();\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 === 'enable') {\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"]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { CliExitError, getItemSummary, joinAndCompact } from './chunk-JOGGSYT2.js';
|
|
2
|
+
import { ansis_default, FileBasedDataSource } from './chunk-GKN3UJNE.js';
|
|
3
|
+
import { ParseError, LoadingError } from './chunk-FA5SNEKN.js';
|
|
4
|
+
import { __name } from './chunk-6PEHRAEP.js';
|
|
5
|
+
|
|
6
|
+
// src/cli/helpers/error-checks.ts
|
|
7
|
+
function showErrorLocationDetails(err) {
|
|
8
|
+
if (!err.location) return;
|
|
9
|
+
const errLoc = err.location;
|
|
10
|
+
const errPreview = [
|
|
11
|
+
errLoc.lineStr,
|
|
12
|
+
`${ansis_default.gray("-".repeat(errLoc.colNumber - 1))}${ansis_default.red("^")}`
|
|
13
|
+
].join("\n");
|
|
14
|
+
console.error("");
|
|
15
|
+
console.error(`\u{1F4C2} ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);
|
|
16
|
+
console.error(errPreview);
|
|
17
|
+
}
|
|
18
|
+
__name(showErrorLocationDetails, "showErrorLocationDetails");
|
|
19
|
+
function showErrorTip(err) {
|
|
20
|
+
if (!err.tip) return;
|
|
21
|
+
for (const line of err.tip.split("\n")) {
|
|
22
|
+
console.error(` ${line}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
__name(showErrorTip, "showErrorTip");
|
|
26
|
+
function checkForNoEnvFiles(envGraph, opts) {
|
|
27
|
+
if (Object.keys(envGraph.configSchema).length === 0) {
|
|
28
|
+
const hasParseErrors = envGraph.sortedDataSources.some((s) => s.loadingError instanceof ParseError);
|
|
29
|
+
if (hasParseErrors) {
|
|
30
|
+
if (opts?.noThrow) return;
|
|
31
|
+
throw new CliExitError("Parse error", { silent: true });
|
|
32
|
+
}
|
|
33
|
+
const displayPath = envGraph.basePath ?? process.cwd();
|
|
34
|
+
const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);
|
|
35
|
+
if (!hasLoadedFiles) {
|
|
36
|
+
console.error(`\u{1F6A8} No .env files found in ${displayPath}
|
|
37
|
+
`);
|
|
38
|
+
console.error("Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.");
|
|
39
|
+
} else {
|
|
40
|
+
console.error(`\u{1F6A8} No config items defined in ${displayPath}
|
|
41
|
+
`);
|
|
42
|
+
console.error("Add items to your .env.schema file to get started.");
|
|
43
|
+
}
|
|
44
|
+
if (opts?.noThrow) return;
|
|
45
|
+
throw new CliExitError("No env files", { silent: true });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
__name(checkForNoEnvFiles, "checkForNoEnvFiles");
|
|
49
|
+
function checkForSchemaErrors(envGraph, opts) {
|
|
50
|
+
let hasErrors = false;
|
|
51
|
+
let hasOutput = false;
|
|
52
|
+
for (const source of envGraph.sortedDataSources) {
|
|
53
|
+
const warnings = source.errors.filter((e) => e.isWarning);
|
|
54
|
+
const errors = source.errors.filter((e) => !e.isWarning);
|
|
55
|
+
if (!warnings.length && !errors.length) continue;
|
|
56
|
+
hasOutput = true;
|
|
57
|
+
const loadingErrors = errors.filter((e) => e instanceof LoadingError || e instanceof ParseError);
|
|
58
|
+
const otherErrors = errors.filter((e) => !(e instanceof LoadingError || e instanceof ParseError));
|
|
59
|
+
console.error(ansis_default.bold[errors.length ? "red" : "yellow"](`-- Problems encountered in ${source.label} --`));
|
|
60
|
+
if (source instanceof FileBasedDataSource) {
|
|
61
|
+
console.error("\u{1F4C1}", ansis_default.dim(`${source.fullPath}`));
|
|
62
|
+
console.log("");
|
|
63
|
+
}
|
|
64
|
+
for (const warning of warnings) {
|
|
65
|
+
console.error(ansis_default.yellow(`- \u26A0\uFE0F ${warning.message}`));
|
|
66
|
+
showErrorLocationDetails(warning);
|
|
67
|
+
}
|
|
68
|
+
for (const err of loadingErrors) {
|
|
69
|
+
console.error(ansis_default.red(`- \u274C ${err.message}`));
|
|
70
|
+
showErrorLocationDetails(err);
|
|
71
|
+
if (err.isUnexpected && err.originalError?.stack) {
|
|
72
|
+
console.error(`
|
|
73
|
+
${ansis_default.dim("Stack trace:")}`);
|
|
74
|
+
console.error(ansis_default.dim(err.originalError.stack));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
for (const err of otherErrors) {
|
|
78
|
+
console.error(ansis_default.red(`- \u274C ${err.message}`));
|
|
79
|
+
showErrorTip(err);
|
|
80
|
+
showErrorLocationDetails(err);
|
|
81
|
+
}
|
|
82
|
+
if (errors.length) {
|
|
83
|
+
hasErrors = true;
|
|
84
|
+
if (!opts?.noThrow) throw new CliExitError("Schema error", { silent: true });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { hasErrors, hasOutput };
|
|
88
|
+
}
|
|
89
|
+
__name(checkForSchemaErrors, "checkForSchemaErrors");
|
|
90
|
+
function showPluginWarnings(envGraph) {
|
|
91
|
+
for (const plugin of envGraph.plugins) {
|
|
92
|
+
if (!plugin.warnings.length) continue;
|
|
93
|
+
for (const warning of plugin.warnings) {
|
|
94
|
+
console.error(ansis_default.yellow(`[WARNING] ${warning.message}`));
|
|
95
|
+
if (warning.tip) {
|
|
96
|
+
for (const line of warning.tip.split("\n")) {
|
|
97
|
+
console.error(` ${line}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
__name(showPluginWarnings, "showPluginWarnings");
|
|
104
|
+
var InvalidEnvError = class extends Error {
|
|
105
|
+
static {
|
|
106
|
+
__name(this, "InvalidEnvError");
|
|
107
|
+
}
|
|
108
|
+
constructor() {
|
|
109
|
+
super("Resolved config/env did not pass validation");
|
|
110
|
+
}
|
|
111
|
+
getFormattedOutput() {
|
|
112
|
+
return `
|
|
113
|
+
\u{1F4A5} ${ansis_default.red(this.message)} \u{1F4A5}
|
|
114
|
+
`;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
function checkForConfigErrors(envGraph, opts) {
|
|
118
|
+
let hasRootDecoratorErrors = false;
|
|
119
|
+
for (const source of envGraph.sortedDataSources) {
|
|
120
|
+
const resErrors = source.resolutionErrors;
|
|
121
|
+
if (resErrors.length) {
|
|
122
|
+
hasRootDecoratorErrors = true;
|
|
123
|
+
console.error(`\u{1F6A8} Root decorator error(s) in ${source.label}`);
|
|
124
|
+
if (source instanceof FileBasedDataSource) {
|
|
125
|
+
console.error(ansis_default.dim(` ${source.fullPath}`));
|
|
126
|
+
}
|
|
127
|
+
for (const err of resErrors) {
|
|
128
|
+
console.error(ansis_default.red(` - \u274C ${err.message}`));
|
|
129
|
+
showErrorTip(err);
|
|
130
|
+
showErrorLocationDetails(err);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (hasRootDecoratorErrors) {
|
|
135
|
+
if (!opts?.noThrow) throw new CliExitError("Schema error", { silent: true });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const failingItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((item) => item.validationState === "error");
|
|
139
|
+
const warningItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((item) => item.validationState === "warn");
|
|
140
|
+
if (failingItems.length > 0) {
|
|
141
|
+
console.error(`
|
|
142
|
+
\u{1F6A8}\u{1F6A8}\u{1F6A8} ${ansis_default.bold.red.underline("Configuration is currently invalid")} \u{1F6A8}\u{1F6A8}\u{1F6A8}
|
|
143
|
+
`);
|
|
144
|
+
for (const item of failingItems) {
|
|
145
|
+
console.error(getItemSummary(item));
|
|
146
|
+
}
|
|
147
|
+
for (const item of warningItems) {
|
|
148
|
+
console.error(getItemSummary(item));
|
|
149
|
+
}
|
|
150
|
+
if (opts?.showAll) {
|
|
151
|
+
console.error();
|
|
152
|
+
console.error(joinAndCompact([
|
|
153
|
+
"Valid items:",
|
|
154
|
+
ansis_default.italic.gray("(remove `--show-all` flag to hide)")
|
|
155
|
+
]));
|
|
156
|
+
const validItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((i) => !!i.isValid);
|
|
157
|
+
for (const item of validItems) {
|
|
158
|
+
console.error(getItemSummary(item));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
showPluginWarnings(envGraph);
|
|
162
|
+
if (!opts?.noThrow) {
|
|
163
|
+
throw new InvalidEnvError();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
__name(checkForConfigErrors, "checkForConfigErrors");
|
|
168
|
+
|
|
169
|
+
export { InvalidEnvError, checkForConfigErrors, checkForNoEnvFiles, checkForSchemaErrors, showPluginWarnings };
|
|
170
|
+
//# sourceMappingURL=chunk-XUY3HAO2.js.map
|
|
171
|
+
//# sourceMappingURL=chunk-XUY3HAO2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/helpers/error-checks.ts"],"names":[],"mappings":"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","file":"chunk-XUY3HAO2.js","sourcesContent":["import ansis from 'ansis';\nimport { EnvGraph, FileBasedDataSource } from '../../env-graph';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport {\n LoadingError, ParseError, VarlockError,\n} from '../../env-graph/lib/errors';\nimport { CliExitError } from './exit-error';\n\nfunction showErrorLocationDetails(err: VarlockError) {\n if (!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.error('');\n console.error(`📂 ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.error(errPreview);\n}\n\nfunction showErrorTip(err: VarlockError) {\n if (!err.tip) return;\n for (const line of err.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n}\n\nexport function checkForNoEnvFiles(envGraph: EnvGraph, opts?: { noThrow?: boolean }) {\n if (Object.keys(envGraph.configSchema).length === 0) {\n // If a source has a parse error, the schema couldn't be read at all so\n // \"no config items defined\" is misleading — the parse error (already\n // reported by checkForSchemaErrors) is the real problem.\n const hasParseErrors = envGraph.sortedDataSources.some((s) => s.loadingError instanceof ParseError);\n if (hasParseErrors) {\n if (opts?.noThrow) return;\n throw new CliExitError('Parse error', { silent: true });\n }\n\n const displayPath = envGraph.basePath ?? process.cwd();\n const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);\n if (!hasLoadedFiles) {\n console.error(`🚨 No .env files found in ${displayPath}\\n`);\n console.error('Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.');\n } else {\n console.error(`🚨 No config items defined in ${displayPath}\\n`);\n console.error('Add items to your .env.schema file to get started.');\n }\n if (opts?.noThrow) return;\n throw new CliExitError('No env files', { silent: true });\n }\n}\n\nexport function checkForSchemaErrors(envGraph: EnvGraph, opts?: { noThrow?: boolean }) {\n let hasErrors = false;\n let hasOutput = false;\n for (const source of envGraph.sortedDataSources) {\n const warnings = source.errors.filter((e) => e.isWarning);\n const errors = source.errors.filter((e) => !e.isWarning);\n\n if (!warnings.length && !errors.length) continue;\n hasOutput = true;\n\n // group by error type for clearer output\n const loadingErrors = errors.filter((e) => e instanceof LoadingError || e instanceof ParseError);\n const otherErrors = errors.filter((e) => !(e instanceof LoadingError || e instanceof ParseError));\n\n // single header per file\n console.error(ansis.bold[errors.length ? 'red' : 'yellow'](`-- Problems encountered in ${source.label} --`));\n\n if (source instanceof FileBasedDataSource) {\n console.error('📁', ansis.dim(`${source.fullPath}`));\n console.log('');\n }\n\n for (const warning of warnings) {\n console.error(ansis.yellow(`- ⚠️ ${warning.message}`));\n showErrorLocationDetails(warning);\n }\n\n for (const err of loadingErrors) {\n console.error(ansis.red(`- ❌ ${err.message}`));\n showErrorLocationDetails(err);\n if (err.isUnexpected && err.originalError?.stack) {\n console.error(`\\n${ansis.dim('Stack trace:')}`);\n console.error(ansis.dim(err.originalError.stack));\n }\n }\n\n for (const err of otherErrors) {\n console.error(ansis.red(`- ❌ ${err.message}`));\n showErrorTip(err);\n showErrorLocationDetails(err);\n }\n\n if (errors.length) {\n hasErrors = true;\n if (!opts?.noThrow) throw new CliExitError('Schema error', { silent: true });\n }\n }\n return { hasErrors, hasOutput };\n}\n\n\nexport function showPluginWarnings(envGraph: EnvGraph) {\n for (const plugin of envGraph.plugins) {\n if (!plugin.warnings.length) continue;\n for (const warning of plugin.warnings) {\n console.error(ansis.yellow(`[WARNING] ${warning.message}`));\n if (warning.tip) {\n for (const line of warning.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n }\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 /** Log errors to stderr but don't throw — used when the caller will handle errors itself (e.g. json-full output) */\n noThrow?: boolean;\n}) {\n // check for root decorator execution errors (fatal — stop before showing items)\n let hasRootDecoratorErrors = false;\n for (const source of envGraph.sortedDataSources) {\n const resErrors = source.resolutionErrors;\n if (resErrors.length) {\n hasRootDecoratorErrors = true;\n console.error(`🚨 Root decorator error(s) in ${source.label}`);\n if (source instanceof FileBasedDataSource) {\n console.error(ansis.dim(` ${source.fullPath}`));\n }\n\n for (const err of resErrors) {\n console.error(ansis.red(` - ❌ ${err.message}`));\n showErrorTip(err);\n showErrorLocationDetails(err);\n }\n }\n }\n\n if (hasRootDecoratorErrors) {\n if (!opts?.noThrow) throw new CliExitError('Schema error', { silent: true });\n return;\n }\n\n const failingItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((item) => item.validationState === 'error');\n const warningItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((item) => item.validationState === 'warn');\n\n if (failingItems.length > 0) {\n console.error(`\\n🚨🚨🚨 ${ansis.bold.red.underline('Configuration is currently invalid')} 🚨🚨🚨\\n`);\n\n for (const item of failingItems) {\n console.error(getItemSummary(item));\n }\n for (const item of warningItems) {\n console.error(getItemSummary(item));\n }\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 const validItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((i) => !!i.isValid);\n for (const item of validItems) {\n console.error(getItemSummary(item));\n }\n }\n\n showPluginWarnings(envGraph);\n if (!opts?.noThrow) {\n throw new InvalidEnvError();\n }\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { define } from './chunk-4A54P4EM.js';
|
|
2
|
-
import { checkForSchemaErrors } from './chunk-7GFD2ATN.js';
|
|
3
|
-
import { loadVarlockEnvGraph } from './chunk-E3F6QKDZ.js';
|
|
4
1
|
import { gracefulExit } from './chunk-CHQDS2PI.js';
|
|
5
|
-
import {
|
|
2
|
+
import { define } from './chunk-4A54P4EM.js';
|
|
3
|
+
import { checkForSchemaErrors } from './chunk-XUY3HAO2.js';
|
|
4
|
+
import { loadVarlockEnvGraph } from './chunk-C5LW5EET.js';
|
|
5
|
+
import { CliExitError } from './chunk-JOGGSYT2.js';
|
|
6
6
|
import { __name } from './chunk-6PEHRAEP.js';
|
|
7
7
|
|
|
8
8
|
// src/cli/commands/printenv.command.ts
|
|
@@ -66,5 +66,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
|
|
|
66
66
|
}, "commandFn");
|
|
67
67
|
|
|
68
68
|
export { commandFn, commandSpec };
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
70
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-XXSPHSF7.js.map
|
|
70
|
+
//# sourceMappingURL=chunk-XXSPHSF7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/printenv.command.ts"],"names":[],"mappings":";;;;;;;;AAQO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,UAAA;AAAA,EACN,WAAA,EAAa,2DAAA;AAAA,EACb,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,EAAA,CAAA,CAeR,IAAA;AACJ,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAGhF,EAAA,MAAM,WAAA,GAAA,CAAe,IAAI,WAAA,IAAe,IAAI,KAAA,CAAM,GAAA,CAAI,WAAA,EAAa,MAAA,IAAU,CAAC,CAAA;AAC9E,EAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AACvB,IAAA,MAAM,IAAI,aAAa,0CAAA,EAA4C;AAAA,MACjE,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AACA,EAAA,MAAM,OAAA,GAAU,YAAY,CAAC,CAAA;AAE7B,EAAA,MAAM,QAAA,GAAW,MAAM,mBAAA,CAAoB;AAAA,IACzC,cAAA,EAAgB,IAAI,MAAA,CAAO;AAAA,GAC5B,CAAA;AACD,EAAA,oBAAA,CAAqB,QAAQ,CAAA;AAE7B,EAAA,IAAI,EAAE,OAAA,IAAW,QAAA,CAAS,YAAA,CAAA,EAAe;AACvC,IAAA,MAAM,IAAI,YAAA,CAAa,CAAA,UAAA,EAAa,OAAO,CAAA,qBAAA,CAAuB,CAAA;AAAA,EACpE;AAGA,EAAA,MAAM,QAAA,CAAS,oBAAoB,OAAO,CAAA;AAE1C,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,YAAA,CAAa,OAAO,CAAA;AAC1C,EAAA,IAAI,IAAA,CAAK,oBAAoB,OAAA,EAAS;AACpC,IAAA,KAAA,MAAW,GAAA,IAAO,KAAK,MAAA,EAAQ;AAC7B,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,UAAA,EAAM,GAAA,CAAI,OAAO,CAAA,CAAE,CAAA;AAAA,IACnC;AACA,IAAA,OAAO,aAAa,CAAC,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,QAAQ,IAAA,CAAK,aAAA;AACnB,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AAAA,EAChB,CAAA,MAAO;AACL,IAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAC3B;AACF,CAAA,EArCmE,WAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/printenv.command.ts"],"names":[],"mappings":";;;;;;;;AAQO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,UAAA;AAAA,EACN,WAAA,EAAa,2DAAA;AAAA,EACb,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,EAAA,CAAA,CAeR,IAAA;AACJ,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAGhF,EAAA,MAAM,WAAA,GAAA,CAAe,IAAI,WAAA,IAAe,IAAI,KAAA,CAAM,GAAA,CAAI,WAAA,EAAa,MAAA,IAAU,CAAC,CAAA;AAC9E,EAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AACvB,IAAA,MAAM,IAAI,aAAa,0CAAA,EAA4C;AAAA,MACjE,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AACA,EAAA,MAAM,OAAA,GAAU,YAAY,CAAC,CAAA;AAE7B,EAAA,MAAM,QAAA,GAAW,MAAM,mBAAA,CAAoB;AAAA,IACzC,cAAA,EAAgB,IAAI,MAAA,CAAO;AAAA,GAC5B,CAAA;AACD,EAAA,oBAAA,CAAqB,QAAQ,CAAA;AAE7B,EAAA,IAAI,EAAE,OAAA,IAAW,QAAA,CAAS,YAAA,CAAA,EAAe;AACvC,IAAA,MAAM,IAAI,YAAA,CAAa,CAAA,UAAA,EAAa,OAAO,CAAA,qBAAA,CAAuB,CAAA;AAAA,EACpE;AAGA,EAAA,MAAM,QAAA,CAAS,oBAAoB,OAAO,CAAA;AAE1C,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,YAAA,CAAa,OAAO,CAAA;AAC1C,EAAA,IAAI,IAAA,CAAK,oBAAoB,OAAA,EAAS;AACpC,IAAA,KAAA,MAAW,GAAA,IAAO,KAAK,MAAA,EAAQ;AAC7B,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,UAAA,EAAM,GAAA,CAAI,OAAO,CAAA,CAAE,CAAA;AAAA,IACnC;AACA,IAAA,OAAO,aAAa,CAAC,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,QAAQ,IAAA,CAAK,aAAA;AACnB,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AAAA,EAChB,CAAA,MAAO;AACL,IAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAC3B;AACF,CAAA,EArCmE,WAAA","file":"chunk-XXSPHSF7.js","sourcesContent":["import { define } from 'gunshi';\nimport { gracefulExit } from 'exit-hook';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { checkForSchemaErrors } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { CliExitError } from '../helpers/exit-error';\n\nexport const commandSpec = define({\n name: 'printenv',\n description: 'Print the resolved value of a single environment variable',\n args: {\n path: {\n type: 'string',\n short: 'p',\n multiple: true,\n description: 'Path to a specific .env file or directory (with trailing slash) to use as the entry point (can be specified multiple times)',\n },\n },\n examples: `\nPrints the resolved value of a single environment variable.\nUseful within larger shell commands where you need a single env var value.\n\nExamples:\n varlock printenv MY_VAR # Print the value of MY_VAR\n varlock printenv --path .env.prod MY_VAR # Use a specific .env file\n varlock printenv --path ./config/ MY_VAR # Use a specific directory\n varlock printenv -p ./envs -p ./overrides MY_VAR # Use multiple directories\n\n📍 Note: Use sh -c to embed this in shell commands, e.g.:\n sh -c 'do-something --token $(varlock printenv MY_TOKEN)'\n\n💡 Tip: Unlike \\`varlock run -- echo $MY_VAR\\`, this works because the shell\n expansion happens after varlock has printed the value.\n `.trim(),\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // ctx.positionals includes the subcommand name(s) themselves, so we skip them\n // by slicing off ctx.commandPath.length entries (e.g. skips 'printenv' at index 0)\n const positionals = (ctx.positionals ?? []).slice(ctx.commandPath?.length ?? 0);\n if (!positionals.length) {\n throw new CliExitError('Missing required argument: variable name', {\n suggestion: 'Run `varlock printenv MY_VAR` to print the value of MY_VAR',\n });\n }\n const varName = positionals[0];\n\n const envGraph = await loadVarlockEnvGraph({\n entryFilePaths: ctx.values.path,\n });\n checkForSchemaErrors(envGraph);\n\n if (!(varName in envGraph.configSchema)) {\n throw new CliExitError(`Variable \"${varName}\" not found in schema`);\n }\n\n // Resolve only the requested item and its transitive dependencies\n await envGraph.resolveItemWithDeps(varName);\n\n const item = envGraph.configSchema[varName];\n if (item.validationState === 'error') {\n for (const err of item.errors) {\n console.error(`🚨 ${err.message}`);\n }\n return gracefulExit(1);\n }\n\n const value = item.resolvedValue;\n if (value === undefined || value === null) {\n console.log('');\n } else {\n console.log(String(value));\n }\n};\n"]}
|
|
@@ -551,6 +551,11 @@ var DaemonClient = class {
|
|
|
551
551
|
});
|
|
552
552
|
}
|
|
553
553
|
async spawnDaemon() {
|
|
554
|
+
if (isWSL()) {
|
|
555
|
+
throw new Error(
|
|
556
|
+
"DaemonClient is not supported on WSL2. The Windows encryption daemon uses a Windows named pipe that Linux socket APIs cannot connect to. Use the Windows binary directly instead."
|
|
557
|
+
);
|
|
558
|
+
}
|
|
554
559
|
const binaryPath = resolveNativeBinary();
|
|
555
560
|
if (!binaryPath) {
|
|
556
561
|
throw new Error("Native encryption binary not found \u2014 cannot start daemon");
|
|
@@ -1198,5 +1203,5 @@ async function lockSession() {
|
|
|
1198
1203
|
__name(lockSession, "lockSession");
|
|
1199
1204
|
|
|
1200
1205
|
export { decryptValue2 as decryptValue, encryptValue2 as encryptValue, ensureKey, getBackendInfo, getDaemonClient, lockSession };
|
|
1201
|
-
//# sourceMappingURL=chunk-
|
|
1202
|
-
//# sourceMappingURL=chunk-
|
|
1206
|
+
//# sourceMappingURL=chunk-YWTIKDGU.js.map
|
|
1207
|
+
//# sourceMappingURL=chunk-YWTIKDGU.js.map
|