varlock 0.5.0 → 0.6.1
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/README.md +1 -1
- package/dist/auto-load.js +6 -6
- package/dist/{chunk-FR2ITGSD.js → chunk-2AGKN64R.js} +562 -248
- package/dist/chunk-2AGKN64R.js.map +1 -0
- package/dist/{chunk-I4RF33CD.js → chunk-3J7BFRB4.js} +372 -446
- package/dist/chunk-3J7BFRB4.js.map +1 -0
- package/dist/{chunk-NJ4ZGNLG.js → chunk-4JMFWK65.js} +5 -5
- package/dist/{chunk-NJ4ZGNLG.js.map → chunk-4JMFWK65.js.map} +1 -1
- package/dist/{chunk-TYIS6T2T.js → chunk-BC7LU4LG.js} +3 -3
- package/dist/{chunk-TYIS6T2T.js.map → chunk-BC7LU4LG.js.map} +1 -1
- package/dist/chunk-EXG5VPNZ.js +17 -0
- package/dist/chunk-EXG5VPNZ.js.map +1 -0
- package/dist/{chunk-PESGXOZ7.js → chunk-FYZ7LKLX.js} +27 -7
- package/dist/chunk-FYZ7LKLX.js.map +1 -0
- package/dist/{chunk-BMTZBDMN.js → chunk-G7FDCTNA.js} +8 -8
- package/dist/{chunk-BMTZBDMN.js.map → chunk-G7FDCTNA.js.map} +1 -1
- package/dist/{chunk-WAMBVZL2.js → chunk-IMB5QAZS.js} +38 -16
- package/dist/chunk-IMB5QAZS.js.map +1 -0
- package/dist/{chunk-2VSWBSVA.js → chunk-J7PA7B2U.js} +6 -81
- package/dist/chunk-J7PA7B2U.js.map +1 -0
- package/dist/{chunk-5XPR4NFR.js → chunk-JCJISIY6.js} +6 -6
- package/dist/{chunk-5XPR4NFR.js.map → chunk-JCJISIY6.js.map} +1 -1
- package/dist/{chunk-RTP55TZC.js → chunk-KKNNZWYD.js} +3 -3
- package/dist/{chunk-RTP55TZC.js.map → chunk-KKNNZWYD.js.map} +1 -1
- package/dist/{chunk-YWFNGAPT.js → chunk-KZNJYMRJ.js} +6 -6
- package/dist/{chunk-YWFNGAPT.js.map → chunk-KZNJYMRJ.js.map} +1 -1
- package/dist/{chunk-QQDWRXNU.js → chunk-LVZSZAKN.js} +3 -3
- package/dist/{chunk-QQDWRXNU.js.map → chunk-LVZSZAKN.js.map} +1 -1
- package/dist/{chunk-ZXJ4CEDK.js → chunk-MYHVSJ3X.js} +3 -3
- package/dist/{chunk-ZXJ4CEDK.js.map → chunk-MYHVSJ3X.js.map} +1 -1
- package/dist/{chunk-PZ7V7FPH.js → chunk-NPPZVF24.js} +4 -4
- package/dist/{chunk-PZ7V7FPH.js.map → chunk-NPPZVF24.js.map} +1 -1
- package/dist/{chunk-YO6TXNLA.js → chunk-PMBDCWD5.js} +6 -5
- package/dist/chunk-PMBDCWD5.js.map +1 -0
- package/dist/chunk-TLEEAUD7.js +68 -0
- package/dist/chunk-TLEEAUD7.js.map +1 -0
- package/dist/{chunk-Z4WJ7TLU.js → chunk-UVWLW5KD.js} +6 -6
- package/dist/{chunk-Z4WJ7TLU.js.map → chunk-UVWLW5KD.js.map} +1 -1
- package/dist/{chunk-MIBOBKI4.js → chunk-XLYSNOR3.js} +15 -3
- package/dist/chunk-XLYSNOR3.js.map +1 -0
- package/dist/{chunk-QC5HUCNV.js → chunk-ZLAUDWOL.js} +6 -6
- package/dist/{chunk-QC5HUCNV.js.map → chunk-ZLAUDWOL.js.map} +1 -1
- package/dist/cli/cli-executable.js +24 -24
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/config-item-NO5PKZRH.js +5 -0
- package/dist/{config-item-HIXQLW6F.js.map → config-item-NO5PKZRH.js.map} +1 -1
- package/dist/dotenv-compat.js +6 -6
- package/dist/{env-graph-BhsVU8Ff.d.ts → env-graph-Cz_c5P6Y.d.ts} +22 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +11 -11
- package/dist/init.command-AV4EWYIT.js +12 -0
- package/dist/{init.command-RB2RCZ55.js.map → init.command-AV4EWYIT.js.map} +1 -1
- package/dist/load.command-5JQUW3H7.js +11 -0
- package/dist/{load.command-JQTHKY6V.js.map → load.command-5JQUW3H7.js.map} +1 -1
- package/dist/plugin-lib.d.ts +2 -2
- package/dist/printenv.command-SBB6GVC2.js +12 -0
- package/dist/{printenv.command-OVRM4WEM.js.map → printenv.command-SBB6GVC2.js.map} +1 -1
- package/dist/run.command-HTGTG6ER.js +12 -0
- package/dist/{run.command-NOA2YFUR.js.map → run.command-HTGTG6ER.js.map} +1 -1
- package/dist/runtime/env.d.ts +7 -2
- package/dist/runtime/env.js +2 -2
- package/dist/runtime/init-edge.cjs +297 -0
- package/dist/runtime/init-edge.d.cts +1 -0
- package/dist/runtime/init-server.cjs +370 -0
- package/dist/runtime/init-server.d.cts +20 -0
- package/dist/runtime/patch-console.js +3 -3
- package/dist/runtime/patch-response.js +3 -3
- package/dist/runtime/patch-server-response.js +3 -3
- package/dist/scan.command-ADKVWN5T.js +13 -0
- package/dist/{scan.command-64YQENRC.js.map → scan.command-ADKVWN5T.js.map} +1 -1
- package/dist/telemetry.command-CQFTGXPF.js +11 -0
- package/dist/{telemetry.command-VSKBB3B6.js.map → telemetry.command-CQFTGXPF.js.map} +1 -1
- package/dist/typegen.command-A544SFYM.js +12 -0
- package/dist/{typegen.command-TQ35B6WK.js.map → typegen.command-A544SFYM.js.map} +1 -1
- package/package.json +11 -1
- package/dist/chunk-2VSWBSVA.js.map +0 -1
- package/dist/chunk-4SXLKBVL.js +0 -17
- package/dist/chunk-4SXLKBVL.js.map +0 -1
- package/dist/chunk-FR2ITGSD.js.map +0 -1
- package/dist/chunk-I4RF33CD.js.map +0 -1
- package/dist/chunk-MIBOBKI4.js.map +0 -1
- package/dist/chunk-PESGXOZ7.js.map +0 -1
- package/dist/chunk-UHUZMCOL.js +0 -156
- package/dist/chunk-UHUZMCOL.js.map +0 -1
- package/dist/chunk-WAMBVZL2.js.map +0 -1
- package/dist/chunk-YO6TXNLA.js.map +0 -1
- package/dist/config-item-HIXQLW6F.js +0 -5
- package/dist/init.command-RB2RCZ55.js +0 -12
- package/dist/load.command-JQTHKY6V.js +0 -11
- package/dist/printenv.command-OVRM4WEM.js +0 -12
- package/dist/run.command-NOA2YFUR.js +0 -12
- package/dist/scan.command-64YQENRC.js +0 -13
- package/dist/telemetry.command-VSKBB3B6.js +0 -11
- package/dist/typegen.command-TQ35B6WK.js +0 -12
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var zlib = require('zlib');
|
|
4
|
+
var http = require('http');
|
|
5
|
+
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var zlib__default = /*#__PURE__*/_interopDefault(zlib);
|
|
9
|
+
|
|
10
|
+
// src/runtime/lib/redaction.ts
|
|
11
|
+
function redactString(valStr, modeOrOpts, hideLength = true) {
|
|
12
|
+
if (!valStr) return valStr;
|
|
13
|
+
let mode;
|
|
14
|
+
{
|
|
15
|
+
mode = modeOrOpts;
|
|
16
|
+
}
|
|
17
|
+
const hiddenLength = hideLength ? 5 : valStr.length - 2;
|
|
18
|
+
const hiddenStr = "\u2592".repeat(hiddenLength);
|
|
19
|
+
if (mode === "show_last_2") {
|
|
20
|
+
return `${hiddenStr}${valStr.substring(valStr.length - 2, valStr.length)}`;
|
|
21
|
+
} else if (mode === "show_first_last") {
|
|
22
|
+
return `${valStr.substring(0, 1)}${hiddenStr}${valStr.substring(valStr.length - 1, valStr.length)}`;
|
|
23
|
+
} else {
|
|
24
|
+
return `${valStr.substring(0, 2)}${hiddenStr}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// src/lib/detect-runtime.ts
|
|
29
|
+
var versionsStr = "versions";
|
|
30
|
+
var processVersions = typeof process !== "undefined" && process[versionsStr];
|
|
31
|
+
processVersions && processVersions.node != null;
|
|
32
|
+
typeof window !== "undefined" && window.name === "nodejs" || typeof navigator !== "undefined" && "userAgent" in navigator && typeof navigator.userAgent === "string" && (navigator.userAgent.includes("Node.js") || navigator.userAgent.includes("jsdom"));
|
|
33
|
+
typeof Deno !== "undefined" && typeof Deno.version !== "undefined" && typeof Deno.version.deno !== "undefined";
|
|
34
|
+
processVersions && processVersions.bun != null;
|
|
35
|
+
var isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement === "function" && typeof navigator !== "undefined" && typeof navigator.userAgent === "string";
|
|
36
|
+
|
|
37
|
+
// src/runtime/lib/debug.ts
|
|
38
|
+
function debug(...args) {
|
|
39
|
+
if (!globalThis.process?.env.DEBUG_VARLOCK) return;
|
|
40
|
+
console.log(...args);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/runtime/env.ts
|
|
44
|
+
function isString(s) {
|
|
45
|
+
return Object.prototype.toString.call(s) === "[object String]";
|
|
46
|
+
}
|
|
47
|
+
var UNMASK_STR = "\u{1F441}";
|
|
48
|
+
var REDACTION_STATE_KEY = "__varlockRedactionState";
|
|
49
|
+
function getRedactionState() {
|
|
50
|
+
if (!globalThis[REDACTION_STATE_KEY]) {
|
|
51
|
+
globalThis[REDACTION_STATE_KEY] = {
|
|
52
|
+
sensitiveSecretsMap: {},
|
|
53
|
+
redactorFindReplace: void 0
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return globalThis[REDACTION_STATE_KEY];
|
|
57
|
+
}
|
|
58
|
+
function resetRedactionMap(graph) {
|
|
59
|
+
const state = getRedactionState();
|
|
60
|
+
state.sensitiveSecretsMap = {};
|
|
61
|
+
for (const itemKey in graph.config) {
|
|
62
|
+
const item = graph.config[itemKey];
|
|
63
|
+
if (item.isSensitive && item.value && isString(item.value)) {
|
|
64
|
+
const redacted = redactString(item.value);
|
|
65
|
+
if (redacted) state.sensitiveSecretsMap[item.value] = { key: itemKey, redacted };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (!Object.keys(state.sensitiveSecretsMap).length) {
|
|
69
|
+
state.redactorFindReplace = void 0;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const findRegex = new RegExp(
|
|
73
|
+
[
|
|
74
|
+
`(${UNMASK_STR} )?`,
|
|
75
|
+
"(",
|
|
76
|
+
Object.keys(state.sensitiveSecretsMap).map((s) => s.replace(/[()[\]{}*+?^$|#.,/\\\s-]/g, "\\$&")).sort((a, b) => b.length - a.length).join("|"),
|
|
77
|
+
")",
|
|
78
|
+
`( ${UNMASK_STR})?`
|
|
79
|
+
].join(""),
|
|
80
|
+
"g"
|
|
81
|
+
);
|
|
82
|
+
const replaceFn = (match, pre, val, post) => {
|
|
83
|
+
if (pre && post) return match;
|
|
84
|
+
return state.sensitiveSecretsMap[val].redacted;
|
|
85
|
+
};
|
|
86
|
+
state.redactorFindReplace = { find: findRegex, replace: replaceFn };
|
|
87
|
+
}
|
|
88
|
+
function redactSensitiveConfig(o) {
|
|
89
|
+
const { redactorFindReplace } = getRedactionState();
|
|
90
|
+
if (!redactorFindReplace) return o;
|
|
91
|
+
if (!o) return o;
|
|
92
|
+
if (Array.isArray(o)) {
|
|
93
|
+
return o.map(redactSensitiveConfig);
|
|
94
|
+
}
|
|
95
|
+
if (o && typeof o === "object" && Object.getPrototypeOf(o) === Object.prototype) {
|
|
96
|
+
try {
|
|
97
|
+
return JSON.parse(redactSensitiveConfig(JSON.stringify(o)));
|
|
98
|
+
} catch (err) {
|
|
99
|
+
return o;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const type = typeof o;
|
|
103
|
+
if (type === "string" || type === "object" && Object.prototype.toString.call(o) === "[object String]") {
|
|
104
|
+
return o.replaceAll(redactorFindReplace.find, redactorFindReplace.replace);
|
|
105
|
+
}
|
|
106
|
+
return o;
|
|
107
|
+
}
|
|
108
|
+
function revealSensitiveConfig(secretStr) {
|
|
109
|
+
if (!globalThis._varlockOrigWriteToConsoleFn) return secretStr;
|
|
110
|
+
return `${UNMASK_STR} ${secretStr} ${UNMASK_STR}`;
|
|
111
|
+
}
|
|
112
|
+
function scanForLeaks(toScan, meta) {
|
|
113
|
+
debug("\u26A1\uFE0F varlock scanning for leaks");
|
|
114
|
+
if (!toScan) return toScan;
|
|
115
|
+
function scanStrForLeaks(strToScan) {
|
|
116
|
+
const { sensitiveSecretsMap } = getRedactionState();
|
|
117
|
+
for (const sensitiveValue in sensitiveSecretsMap) {
|
|
118
|
+
if (strToScan.includes(sensitiveValue)) {
|
|
119
|
+
const itemKey = sensitiveSecretsMap[sensitiveValue].key;
|
|
120
|
+
console.error([
|
|
121
|
+
"",
|
|
122
|
+
`\u{1F6A8} ${"DETECTED LEAKED SENSITIVE CONFIG"} \u{1F6A8}`,
|
|
123
|
+
`> Config item key: ${itemKey}`,
|
|
124
|
+
...meta?.method ? [`> Scan method: ${meta.method}`] : [],
|
|
125
|
+
...meta?.file ? [`> File: ${meta.file}`] : [],
|
|
126
|
+
""
|
|
127
|
+
].join("\n"));
|
|
128
|
+
throw new Error(`\u{1F6A8} DETECTED LEAKED SENSITIVE CONFIG - ${itemKey}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (isString(toScan)) {
|
|
133
|
+
scanStrForLeaks(toScan);
|
|
134
|
+
return toScan;
|
|
135
|
+
} else if (typeof Buffer !== "undefined" && toScan instanceof Buffer) {
|
|
136
|
+
scanStrForLeaks(toScan.toString());
|
|
137
|
+
return toScan;
|
|
138
|
+
} else if (toScan instanceof ReadableStream) {
|
|
139
|
+
if (toScan.locked) {
|
|
140
|
+
return toScan;
|
|
141
|
+
}
|
|
142
|
+
const chunkDecoder = new TextDecoder();
|
|
143
|
+
return toScan.pipeThrough(
|
|
144
|
+
new TransformStream({
|
|
145
|
+
transform(chunk, controller) {
|
|
146
|
+
const chunkStr = chunkDecoder.decode(chunk);
|
|
147
|
+
scanStrForLeaks(chunkStr);
|
|
148
|
+
controller.enqueue(chunk);
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
return toScan;
|
|
154
|
+
}
|
|
155
|
+
var initializedEnv = false;
|
|
156
|
+
var envValues = {};
|
|
157
|
+
var varlockSettings = {};
|
|
158
|
+
var processExists = !!globalThis.process;
|
|
159
|
+
var originalProcessEnv = { ...processExists && process.env };
|
|
160
|
+
var varlockInjectedProcessEnvKeys;
|
|
161
|
+
function initVarlockEnv(opts) {
|
|
162
|
+
debug("\u26A1\uFE0F INIT VARLOCK ENV!", initializedEnv, !!globalThis.__varlockLoadedEnv, !!globalThis.process?.env.__VARLOCK_ENV);
|
|
163
|
+
if (isBrowser && !globalThis.process?.env.__VARLOCK_ENV) {
|
|
164
|
+
initializedEnv = true;
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
let serializedEnvData;
|
|
168
|
+
if (globalThis.__varlockLoadedEnv) {
|
|
169
|
+
serializedEnvData = globalThis.__varlockLoadedEnv;
|
|
170
|
+
} else if (processExists && process.env.__VARLOCK_ENV) {
|
|
171
|
+
serializedEnvData = JSON.parse(process.env.__VARLOCK_ENV);
|
|
172
|
+
} else {
|
|
173
|
+
if (opts?.allowFail) return;
|
|
174
|
+
console.error([
|
|
175
|
+
"",
|
|
176
|
+
"\u{1F6A8} initVarlockEnv failed \u{1F6A8}",
|
|
177
|
+
"try rerunning your command via `varlock run`",
|
|
178
|
+
""
|
|
179
|
+
].join("\n"));
|
|
180
|
+
throw new Error("initVarlockEnv failed");
|
|
181
|
+
}
|
|
182
|
+
Object.assign(varlockSettings, serializedEnvData.settings);
|
|
183
|
+
resetRedactionMap(serializedEnvData);
|
|
184
|
+
const setProcessEnv = processExists;
|
|
185
|
+
if (setProcessEnv) {
|
|
186
|
+
if (varlockInjectedProcessEnvKeys) {
|
|
187
|
+
for (const key of varlockInjectedProcessEnvKeys) delete process.env[key];
|
|
188
|
+
for (const key of Object.keys(originalProcessEnv)) process.env[key] = originalProcessEnv[key];
|
|
189
|
+
}
|
|
190
|
+
varlockInjectedProcessEnvKeys = [];
|
|
191
|
+
}
|
|
192
|
+
for (const itemKey in serializedEnvData.config) {
|
|
193
|
+
const itemValue = serializedEnvData.config[itemKey].value;
|
|
194
|
+
envValues[itemKey] = itemValue;
|
|
195
|
+
if (setProcessEnv) {
|
|
196
|
+
varlockInjectedProcessEnvKeys?.push(itemKey);
|
|
197
|
+
process.env[itemKey] = itemValue === void 0 ? "" : String(itemValue);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
initializedEnv = true;
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
if (!initializedEnv) {
|
|
204
|
+
initVarlockEnv({ allowFail: true });
|
|
205
|
+
}
|
|
206
|
+
} catch (err) {
|
|
207
|
+
}
|
|
208
|
+
var IGNORED_PROXY_KEYS = [
|
|
209
|
+
// vue - see https://github.com/vuejs/core/blob/70773d00985135a50556c61fb9855ed6b930cb82/packages/reactivity/src/ref.ts#L101
|
|
210
|
+
"__v_isRef"
|
|
211
|
+
];
|
|
212
|
+
var EnvProxy = new Proxy({}, {
|
|
213
|
+
get(target, prop) {
|
|
214
|
+
if (typeof prop === "symbol") return;
|
|
215
|
+
if (IGNORED_PROXY_KEYS.includes(prop)) return;
|
|
216
|
+
if (!initializedEnv) {
|
|
217
|
+
throw new Error("varlock ENV not initialized");
|
|
218
|
+
}
|
|
219
|
+
if (prop in envValues) return envValues[prop];
|
|
220
|
+
if (globalThis.__varlockThrowOnMissingKeys) {
|
|
221
|
+
if (globalThis.__varlockValidKeys && globalThis.__varlockValidKeys.includes(prop)) {
|
|
222
|
+
throw new Error(`\`ENV.${prop}\` exists, but is not available in this environment`);
|
|
223
|
+
} else {
|
|
224
|
+
throw new Error(`\`ENV.${prop}\` does not exist`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return void 0;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
var ENV = EnvProxy;
|
|
231
|
+
|
|
232
|
+
// src/runtime/patch-console.ts
|
|
233
|
+
function patchGlobalConsole() {
|
|
234
|
+
debug("\u26A1\uFE0F PATCHING global console methods");
|
|
235
|
+
if (console.log._varlockPatchedFn) {
|
|
236
|
+
debug("> already patched");
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (varlockSettings.redactLogs === false) {
|
|
240
|
+
debug("> disabled by settings");
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const kWriteToConsoleSymbol = Object.getOwnPropertySymbols(globalThis.console).find((s) => s.description === "kWriteToConsole");
|
|
244
|
+
globalThis._varlockOrigWriteToConsoleFn ||= globalThis.console[kWriteToConsoleSymbol];
|
|
245
|
+
globalThis.console[kWriteToConsoleSymbol] = function() {
|
|
246
|
+
globalThis._varlockOrigWriteToConsoleFn.apply(this, [
|
|
247
|
+
arguments[0],
|
|
248
|
+
redactSensitiveConfig(arguments[1]),
|
|
249
|
+
arguments[2]
|
|
250
|
+
]);
|
|
251
|
+
};
|
|
252
|
+
for (const logMethodName of ["trace", "debug", "info", "log", "info", "warn", "error"]) {
|
|
253
|
+
const originalLogMethod = globalThis.console[logMethodName];
|
|
254
|
+
const patchedFn = function() {
|
|
255
|
+
originalLogMethod.apply(this, Array.from(arguments).map(redactSensitiveConfig));
|
|
256
|
+
};
|
|
257
|
+
patchedFn._varlockPatchedFn = true;
|
|
258
|
+
globalThis.console[logMethodName] = patchedFn;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
var patchedKey = "_patchedByVarlock";
|
|
262
|
+
function patchGlobalServerResponse(opts) {
|
|
263
|
+
debug("\u26A1\uFE0F PATCHING global ServerResponse");
|
|
264
|
+
if (Object.getOwnPropertyDescriptor(http.ServerResponse.prototype, patchedKey)) {
|
|
265
|
+
debug("> already patched");
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (varlockSettings.preventLeaks === false) {
|
|
269
|
+
debug("> disabled by settings");
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
Object.defineProperty(http.ServerResponse.prototype, patchedKey, { value: true });
|
|
273
|
+
const serverResponseWrite = http.ServerResponse.prototype.write;
|
|
274
|
+
http.ServerResponse.prototype.write = function varlockPatchedServerResponseWrite(...args) {
|
|
275
|
+
const rawChunk = args[0];
|
|
276
|
+
const contentType = this.getHeader("content-type")?.toString() || "";
|
|
277
|
+
let runScan = contentType.startsWith("text/") || contentType.startsWith("application/json") || !contentType && typeof rawChunk === "string";
|
|
278
|
+
this.req.url;
|
|
279
|
+
if (!runScan) {
|
|
280
|
+
return serverResponseWrite.apply(this, args);
|
|
281
|
+
}
|
|
282
|
+
const compressionType = this.getHeader("Content-Encoding");
|
|
283
|
+
let chunkStr;
|
|
284
|
+
if (typeof rawChunk === "string") {
|
|
285
|
+
chunkStr = rawChunk;
|
|
286
|
+
} else if (!compressionType) {
|
|
287
|
+
const decoder = new TextDecoder();
|
|
288
|
+
chunkStr = decoder.decode(rawChunk);
|
|
289
|
+
} else if (compressionType === "gzip") {
|
|
290
|
+
if (!this._zlibChunks) {
|
|
291
|
+
this._zlibChunks = [rawChunk];
|
|
292
|
+
} else {
|
|
293
|
+
this._zlibChunks?.push(rawChunk);
|
|
294
|
+
try {
|
|
295
|
+
const unzippedChunk = zlib__default.default.unzipSync(Buffer.concat(this._zlibChunks || []), {
|
|
296
|
+
flush: zlib__default.default.constants.Z_SYNC_FLUSH,
|
|
297
|
+
finishFlush: zlib__default.default.constants.Z_SYNC_FLUSH
|
|
298
|
+
});
|
|
299
|
+
const fullUnzippedData = unzippedChunk.toString("utf-8");
|
|
300
|
+
chunkStr = fullUnzippedData.substring(this._lastChunkEndIndex || 0);
|
|
301
|
+
this._lastChunkEndIndex = fullUnzippedData.length;
|
|
302
|
+
} catch (err) {
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (chunkStr) {
|
|
307
|
+
try {
|
|
308
|
+
scanForLeaks(chunkStr, { method: "patched ServerResponse.write", file: this.req.url });
|
|
309
|
+
} catch (err) {
|
|
310
|
+
{
|
|
311
|
+
throw err;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return serverResponseWrite.apply(this, args);
|
|
316
|
+
};
|
|
317
|
+
const serverResponseEnd = http.ServerResponse.prototype.end;
|
|
318
|
+
http.ServerResponse.prototype.end = function patchedServerResponseEnd(...args) {
|
|
319
|
+
const endChunk = args[0];
|
|
320
|
+
if (endChunk && typeof endChunk === "string") {
|
|
321
|
+
scanForLeaks(endChunk, { method: "patched ServerResponse.end" });
|
|
322
|
+
}
|
|
323
|
+
return serverResponseEnd.apply(this, args);
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// src/runtime/patch-response.ts
|
|
328
|
+
function patchGlobalResponse() {
|
|
329
|
+
debug("\u26A1\uFE0F PATCHING global Response");
|
|
330
|
+
if (globalThis.Response._patchedByVarlock) {
|
|
331
|
+
debug("> already patched");
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
if (varlockSettings.preventLeaks === false) {
|
|
335
|
+
debug("> disabled by settings");
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
const _UnpatchedResponse = globalThis.Response;
|
|
339
|
+
globalThis.Response = class VarlockPatchedResponse extends _UnpatchedResponse {
|
|
340
|
+
static _patchedByVarlock = true;
|
|
341
|
+
// Make native fetch() responses (which are instances of the original Response)
|
|
342
|
+
// pass instanceof checks against the patched globalThis.Response.
|
|
343
|
+
static [Symbol.hasInstance](instance) {
|
|
344
|
+
return instance instanceof _UnpatchedResponse;
|
|
345
|
+
}
|
|
346
|
+
constructor(body, init) {
|
|
347
|
+
debug("\u26A1\uFE0F patched Response constructor");
|
|
348
|
+
super(scanForLeaks(body, { method: "patched Response constructor" }), init);
|
|
349
|
+
}
|
|
350
|
+
static json(data, init) {
|
|
351
|
+
debug("\u26A1\uFE0F patched Response.json");
|
|
352
|
+
scanForLeaks(JSON.stringify(data), { method: "patched Response.json" });
|
|
353
|
+
const r = _UnpatchedResponse.json(data, init);
|
|
354
|
+
Object.setPrototypeOf(r, Response.prototype);
|
|
355
|
+
return r;
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// src/runtime/init-server.ts
|
|
361
|
+
initVarlockEnv();
|
|
362
|
+
patchGlobalConsole();
|
|
363
|
+
patchGlobalServerResponse();
|
|
364
|
+
patchGlobalResponse();
|
|
365
|
+
globalThis.__varlockPatchConsole = patchGlobalConsole;
|
|
366
|
+
|
|
367
|
+
exports.ENV = ENV;
|
|
368
|
+
exports.redactSensitiveConfig = redactSensitiveConfig;
|
|
369
|
+
exports.revealSensitiveConfig = revealSensitiveConfig;
|
|
370
|
+
exports.scanForLeaks = scanForLeaks;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redacts senstive config values from any string/array/object/etc
|
|
3
|
+
*
|
|
4
|
+
* NOTE - must be used only after varlock has loaded config
|
|
5
|
+
* */
|
|
6
|
+
declare function redactSensitiveConfig(o: any): any;
|
|
7
|
+
/**
|
|
8
|
+
* utility to unmask a secret/sensitive value when logging to the console
|
|
9
|
+
* currently this only works on a single secret, not objects or aggregated strings
|
|
10
|
+
* */
|
|
11
|
+
declare function revealSensitiveConfig(secretStr: string): string;
|
|
12
|
+
declare function scanForLeaks(toScan: string | ReadableStream | null, meta?: {
|
|
13
|
+
method?: string;
|
|
14
|
+
file?: string;
|
|
15
|
+
}): string | ReadableStream<any> | null;
|
|
16
|
+
interface TypedEnvSchema {
|
|
17
|
+
}
|
|
18
|
+
declare const ENV: TypedEnvSchema;
|
|
19
|
+
|
|
20
|
+
export { ENV, redactSensitiveConfig, revealSensitiveConfig, scanForLeaks };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { patchGlobalConsole, unpatchGlobalConsole } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { patchGlobalConsole, unpatchGlobalConsole } from '../chunk-BC7LU4LG.js';
|
|
2
|
+
import '../chunk-IMB5QAZS.js';
|
|
3
|
+
import '../chunk-XLYSNOR3.js';
|
|
4
4
|
import '../chunk-6PEHRAEP.js';
|
|
5
5
|
//# sourceMappingURL=patch-console.js.map
|
|
6
6
|
//# sourceMappingURL=patch-console.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { patchGlobalResponse } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { patchGlobalResponse } from '../chunk-LVZSZAKN.js';
|
|
2
|
+
import '../chunk-IMB5QAZS.js';
|
|
3
|
+
import '../chunk-XLYSNOR3.js';
|
|
4
4
|
import '../chunk-6PEHRAEP.js';
|
|
5
5
|
//# sourceMappingURL=patch-response.js.map
|
|
6
6
|
//# sourceMappingURL=patch-response.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { patchGlobalServerResponse } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { patchGlobalServerResponse } from '../chunk-MYHVSJ3X.js';
|
|
2
|
+
import '../chunk-IMB5QAZS.js';
|
|
3
|
+
import '../chunk-XLYSNOR3.js';
|
|
4
4
|
import '../chunk-6PEHRAEP.js';
|
|
5
5
|
//# sourceMappingURL=patch-server-response.js.map
|
|
6
6
|
//# sourceMappingURL=patch-server-response.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { commandFn, commandSpec, getGitFiles, scanFileForValues, walkDirectory } from './chunk-G7FDCTNA.js';
|
|
2
|
+
import './chunk-Y3ITSQA4.js';
|
|
3
|
+
import './chunk-TLEEAUD7.js';
|
|
4
|
+
import './chunk-NPPZVF24.js';
|
|
5
|
+
import './chunk-4A54P4EM.js';
|
|
6
|
+
import './chunk-EXG5VPNZ.js';
|
|
7
|
+
import './chunk-J7PA7B2U.js';
|
|
8
|
+
import './chunk-2AGKN64R.js';
|
|
9
|
+
import './chunk-QZ6HBRJC.js';
|
|
10
|
+
import './chunk-XLYSNOR3.js';
|
|
11
|
+
import './chunk-6PEHRAEP.js';
|
|
12
|
+
//# sourceMappingURL=scan.command-ADKVWN5T.js.map
|
|
13
|
+
//# sourceMappingURL=scan.command-ADKVWN5T.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"scan.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"scan.command-ADKVWN5T.js"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-UVWLW5KD.js';
|
|
2
|
+
import './chunk-TLEEAUD7.js';
|
|
3
|
+
import './chunk-NPPZVF24.js';
|
|
4
|
+
import './chunk-4A54P4EM.js';
|
|
5
|
+
import './chunk-J7PA7B2U.js';
|
|
6
|
+
import './chunk-2AGKN64R.js';
|
|
7
|
+
import './chunk-QZ6HBRJC.js';
|
|
8
|
+
import './chunk-XLYSNOR3.js';
|
|
9
|
+
import './chunk-6PEHRAEP.js';
|
|
10
|
+
//# sourceMappingURL=telemetry.command-CQFTGXPF.js.map
|
|
11
|
+
//# sourceMappingURL=telemetry.command-CQFTGXPF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-CQFTGXPF.js"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-4JMFWK65.js';
|
|
2
|
+
import './chunk-NPPZVF24.js';
|
|
3
|
+
import './chunk-4A54P4EM.js';
|
|
4
|
+
import './chunk-FYZ7LKLX.js';
|
|
5
|
+
import './chunk-EXG5VPNZ.js';
|
|
6
|
+
import './chunk-J7PA7B2U.js';
|
|
7
|
+
import './chunk-2AGKN64R.js';
|
|
8
|
+
import './chunk-QZ6HBRJC.js';
|
|
9
|
+
import './chunk-XLYSNOR3.js';
|
|
10
|
+
import './chunk-6PEHRAEP.js';
|
|
11
|
+
//# sourceMappingURL=typegen.command-A544SFYM.js.map
|
|
12
|
+
//# sourceMappingURL=typegen.command-A544SFYM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"typegen.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"typegen.command-A544SFYM.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "varlock",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "AI-safe .env files: Schemas for agents, Secrets for humans.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -84,6 +84,16 @@
|
|
|
84
84
|
"types": "./dist/runtime/patch-server-response.d.ts",
|
|
85
85
|
"default": "./dist/runtime/patch-server-response.js"
|
|
86
86
|
},
|
|
87
|
+
"./init-server": {
|
|
88
|
+
"ts-src": "./src/runtime/init-server.ts",
|
|
89
|
+
"types": "./dist/runtime/init-server.d.cts",
|
|
90
|
+
"default": "./dist/runtime/init-server.cjs"
|
|
91
|
+
},
|
|
92
|
+
"./init-edge": {
|
|
93
|
+
"ts-src": "./src/runtime/init-edge.ts",
|
|
94
|
+
"types": "./dist/runtime/init-edge.d.cts",
|
|
95
|
+
"default": "./dist/runtime/init-edge.cjs"
|
|
96
|
+
},
|
|
87
97
|
"./exec-sync-varlock": {
|
|
88
98
|
"ts-src": "./src/lib/exec-sync-varlock.ts",
|
|
89
99
|
"types": "./dist/lib/exec-sync-varlock.d.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.cjs","../../../node_modules/.bun/ansis@4.2.0/node_modules/ansis/index.mjs","../../../node_modules/.bun/exit-hook@5.1.0/node_modules/exit-hook/index.js","../src/env-graph/lib/loader.ts","../src/lib/formatting.ts"],"names":["exports","a","e","t","r","l","n","o","i","c","p","u","s","_","w","process"],"mappings":"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","file":"chunk-2VSWBSVA.js","sourcesContent":["let e,t,r,{defineProperty:l,setPrototypeOf:n,create:o,keys:s}=Object,i=\"\",{round:c,max:a}=Math,p=e=>{let t=/([a-f\\d]{3,6})/i.exec(e)?.[1],r=t?.length,l=parseInt(6^r?3^r?\"0\":t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t,16);return[l>>16&255,l>>8&255,255&l]},u=(e,t,r)=>e^t||t^r?16+36*c(e/51)+6*c(t/51)+c(r/51):8>e?16:e>248?231:c(24*(e-8)/247)+232,d=e=>{let t,r,l,n,o;return 8>e?30+e:16>e?e-8+90:(232>e?(o=(e-=16)%36,t=(e/36|0)/5,r=(o/6|0)/5,l=o%6/5):t=r=l=(10*(e-232)+8)/255,n=2*a(t,r,l),n?30+(c(l)<<2|c(r)<<1|c(t))+(2^n?0:60):30)},f=(()=>{let r=e=>o.some((t=>e.test(t))),l=globalThis,n=l.process??{},o=n.argv??[],i=n.env??{},c=-1;try{e=\",\"+s(i).join(\",\")}catch(e){i={},c=0}let a=\"FORCE_COLOR\",p={false:0,0:0,1:1,2:2,3:3}[i[a]]??-1,u=a in i&&p||r(/^--color=?(true|always)?$/);return u&&(c=p),~c||(c=((r,l,n)=>(t=r.TERM,{\"24bit\":3,truecolor:3,ansi256:2,ansi:1}[r.COLORTERM]||(r.CI?/,GITHUB/.test(e)?3:1:l&&\"dumb\"!==t?n?3:/-256/.test(t)?2:1:0)))(i,!!i.PM2_HOME||i.NEXT_RUNTIME?.includes(\"edge\")||!!n.stdout?.isTTY,\"win32\"===n.platform)),!p||i.NO_COLOR||r(/^--(no-color|color=(false|never))$/)?0:l.window?.chrome||u&&!c?3:c})(),g={open:i,close:i},h=39,b=49,O={},m=({p:e},{open:t,close:l})=>{let o=(e,...r)=>{if(!e){if(t&&t===l)return t;if((e??i)===i)return i}let n,s=e.raw?String.raw({raw:e},...r):i+e,c=o.p,a=c.o,p=c.c;if(s.includes(\"\u001b\"))for(;c;c=c.p){let{open:e,close:t}=c,r=t.length,l=i,o=0;if(r)for(;~(n=s.indexOf(t,o));o=n+r)l+=s.slice(o,n)+e;s=l+s.slice(o)}return a+(s.includes(\"\\n\")?s.replace(/(\\r?\\n)/g,p+\"$1\"+a):s)+p},s=t,c=l;return e&&(s=e.o+t,c=l+e.c),n(o,r),o.p={open:t,close:l,o:s,c,p:e},o.open=s,o.close=c,o};const w=new function e(t=f){let s={Ansis:e,level:t,isSupported:()=>a,strip:e=>e.replace(/[\u001b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,i),extend(e){for(let t in e){let r=e[t],l=(typeof r)[0];\"s\"===l?(c(t,T(...p(r))),c(_(t),v(...p(r)))):c(t,r,\"f\"===l)}return r=o({},O),n(s,r),s}},c=(e,t,r)=>{O[e]={get(){let n=r?(...e)=>m(this,t(...e)):m(this,t);return l(this,e,{value:n}),n}}},a=t>0,w=(e,t)=>a?{open:`\u001b[${e}m`,close:`\u001b[${t}m`}:g,y=e=>t=>e(...p(t)),R=(e,t)=>(r,l,n)=>w(`${e}8;2;${r};${l};${n}`,t),$=(e,t)=>(r,l,n)=>w(((e,t,r)=>d(u(e,t,r)))(r,l,n)+e,t),x=e=>(t,r,l)=>e(u(t,r,l)),T=R(3,h),v=R(4,b),C=e=>w(\"38;5;\"+e,h),E=e=>w(\"48;5;\"+e,b);2===t?(T=x(C),v=x(E)):1===t&&(T=$(0,h),v=$(10,b),C=e=>w(d(e),h),E=e=>w(d(e)+10,b));let M,I={fg:C,bg:E,rgb:T,bgRgb:v,hex:y(T),bgHex:y(v),visible:g,reset:w(0,0),bold:w(1,22),dim:w(2,22),italic:w(3,23),underline:w(4,24),inverse:w(7,27),hidden:w(8,28),strikethrough:w(9,29)},_=e=>\"bg\"+e[0].toUpperCase()+e.slice(1),k=\"Bright\";return\"black,red,green,yellow,blue,magenta,cyan,white,gray\".split(\",\").map(((e,t)=>{M=_(e),8>t?(I[e+k]=w(90+t,h),I[M+k]=w(100+t,b)):t=60,I[e]=w(30+t,h),I[M]=w(40+t,b)})),s.extend(I)};module.exports=w,w.default=w;\n","import a from\"./index.cjs\";export default a;export const{Ansis,fg,bg,rgb,bgRgb,hex,bgHex,reset,inverse,hidden,visible,bold,dim,italic,underline,strikethrough,black,red,green,yellow,blue,magenta,cyan,white,gray,redBright,greenBright,yellowBright,blueBright,magentaBright,cyanBright,whiteBright,bgBlack,bgRed,bgGreen,bgYellow,bgBlue,bgMagenta,bgCyan,bgWhite,bgGray,bgRedBright,bgGreenBright,bgYellowBright,bgBlueBright,bgMagentaBright,bgCyanBright,bgWhiteBright}=a;","import process from 'node:process';\n\nconst asyncCallbacks = new Set();\nconst callbacks = new Set();\n\nlet isCalled = false;\nlet isRegistered = false;\n\nasync function flushStdio() {\n\tconst flush = stream => new Promise(resolve => {\n\t\tif (!stream || !stream.writable || stream.writableEnded || stream.destroyed) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\n\t\tconst onError = () => {\n\t\t\tstream.off('error', onError);\n\t\t\tresolve();\n\t\t};\n\n\t\tstream.once('error', onError);\n\n\t\ttry {\n\t\t\tstream.write('', () => {\n\t\t\t\tstream.off('error', onError);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t} catch {\n\t\t\tstream.off('error', onError);\n\t\t\tresolve();\n\t\t}\n\t});\n\n\tconst timeout = new Promise(resolve => {\n\t\tsetTimeout(resolve, 1000);\n\t});\n\n\tawait Promise.race([\n\t\tPromise.all([flush(process.stdout), flush(process.stderr)]),\n\t\ttimeout,\n\t]);\n}\n\nasync function exit(shouldManuallyExit, isSynchronous, signal) {\n\tif (isCalled) {\n\t\treturn;\n\t}\n\n\tisCalled = true;\n\n\tif (asyncCallbacks.size > 0 && isSynchronous) {\n\t\tconsole.error([\n\t\t\t'SYNCHRONOUS TERMINATION NOTICE:',\n\t\t\t'When explicitly exiting the process via process.exit or via a parent process,',\n\t\t\t'asynchronous tasks in your exitHooks will not run. Either remove these tasks,',\n\t\t\t'use gracefulExit() instead of process.exit(), or ensure your parent process',\n\t\t\t'sends a SIGINT to the process running this code.',\n\t\t].join(' '));\n\t}\n\n\tlet exitCode = 0;\n\n\t// A non-graceful signal should be preserved over process.exitCode\n\tif (signal > 0) {\n\t\texitCode = 128 + signal;\n\t// Respect process.exitCode for graceful exits\n\t} else if (typeof process.exitCode === 'number' || typeof process.exitCode === 'string') {\n\t\texitCode = process.exitCode;\n\t}\n\n\tconst done = (force = false) => {\n\t\tif (force === true || shouldManuallyExit === true) {\n\t\t\tprocess.exit(exitCode); // eslint-disable-line unicorn/no-process-exit\n\t\t}\n\t};\n\n\tfor (const callback of callbacks) {\n\t\tcallback(exitCode);\n\t}\n\n\tif (isSynchronous) {\n\t\tdone();\n\t\treturn;\n\t}\n\n\tconst promises = [];\n\tlet forceAfter = 0;\n\tfor (const [callback, wait] of asyncCallbacks) {\n\t\tforceAfter = Math.max(forceAfter, wait);\n\t\tpromises.push(Promise.resolve(callback(exitCode)));\n\t}\n\n\t// Force exit if we exceeded our wait value\n\tconst asyncTimer = forceAfter > 0\n\t\t? setTimeout(() => {\n\t\t\tdone(true);\n\t\t}, forceAfter)\n\t\t: undefined;\n\n\tawait Promise.all(promises);\n\t// Let flushStdio handle its own timeout without the force-exit timer.\n\tclearTimeout(asyncTimer);\n\tawait flushStdio();\n\tdone();\n}\n\nfunction addHook(options) {\n\tconst {onExit, wait, isSynchronous} = options;\n\tconst asyncCallbackConfig = [onExit, wait];\n\n\tif (isSynchronous) {\n\t\tcallbacks.add(onExit);\n\t} else {\n\t\tasyncCallbacks.add(asyncCallbackConfig);\n\t}\n\n\tif (!isRegistered) {\n\t\tisRegistered = true;\n\n\t\t// Exit cases that support asynchronous handling\n\t\tprocess.once('beforeExit', exit.bind(undefined, true, false, -128));\n\t\tprocess.once('SIGINT', exit.bind(undefined, true, false, 2));\n\t\tprocess.once('SIGTERM', exit.bind(undefined, true, false, 15));\n\n\t\t// Explicit exit events. Calling will force an immediate exit and run all\n\t\t// synchronous hooks. Explicit exits must not extend the node process\n\t\t// artificially. Will log errors if asynchronous calls exist.\n\t\tprocess.once('exit', exit.bind(undefined, false, true, 0));\n\n\t\t// PM2 Cluster shutdown message. Caught to support async handlers with pm2,\n\t\t// needed because explicitly calling process.exit() doesn't trigger the\n\t\t// beforeExit event, and the exit event cannot support async handlers,\n\t\t// since the event loop is never called after it.\n\t\tprocess.on('message', message => {\n\t\t\tif (message === 'shutdown') {\n\t\t\t\texit(true, true, -128);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn () => {\n\t\tif (isSynchronous) {\n\t\t\tcallbacks.delete(onExit);\n\t\t} else {\n\t\t\tasyncCallbacks.delete(asyncCallbackConfig);\n\t\t}\n\t};\n}\n\nexport default function exitHook(onExit) {\n\tif (typeof onExit !== 'function') {\n\t\tthrow new TypeError('onExit must be a function');\n\t}\n\n\treturn addHook({\n\t\tonExit,\n\t\tisSynchronous: true,\n\t});\n}\n\nexport function asyncExitHook(onExit, options = {}) {\n\tif (typeof onExit !== 'function') {\n\t\tthrow new TypeError('onExit must be a function');\n\t}\n\n\tif (!(typeof options.wait === 'number' && options.wait > 0)) {\n\t\tthrow new TypeError('wait must be set to a positive numeric value');\n\t}\n\n\treturn addHook({\n\t\tonExit,\n\t\twait: options.wait,\n\t\tisSynchronous: false,\n\t});\n}\n\nexport function gracefulExit(signal) {\n\tif (signal !== undefined) {\n\t\tprocess.exitCode = signal;\n\t}\n\n\texit(true, false, -128);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport _ from '@env-spec/utils/my-dash';\nimport { EnvGraph } from './env-graph';\nimport { DirectoryDataSource, DotEnvFileDataSource } from './data-source';\n\nexport async function loadEnvGraph(opts?: {\n basePath?: string,\n entryFilePath?: string,\n relativePaths?: Array<string>,\n checkGitIgnored?: boolean,\n excludeDirs?: Array<string>,\n currentEnvFallback?: string,\n afterInit?: (graph: EnvGraph) => Promise<void>,\n}) {\n const graph = new EnvGraph();\n\n if (opts?.entryFilePath) {\n const resolvedPath = path.resolve(opts.entryFilePath);\n const isDirectory = opts.entryFilePath.endsWith('/') || opts.entryFilePath.endsWith(path.sep)\n || (fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isDirectory());\n if (isDirectory) {\n graph.basePath = resolvedPath;\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n await graph.setRootDataSource(new DirectoryDataSource(resolvedPath));\n } else {\n graph.basePath = path.dirname(resolvedPath);\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n await graph.setRootDataSource(new DotEnvFileDataSource(resolvedPath));\n }\n } else {\n graph.basePath = opts?.basePath ?? process.cwd();\n if (opts?.afterInit) await opts.afterInit(graph);\n if (opts?.currentEnvFallback) graph.envFlagFallback = opts.currentEnvFallback;\n await graph.setRootDataSource(new DirectoryDataSource(graph.basePath));\n }\n\n await graph.finishLoad();\n\n return graph;\n}\n\n","import ansis, { type AnsiColors, type AnsiStyles } from 'ansis';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { ConfigItem, VarlockError } from '../env-graph';\nimport { redactString } from '../runtime/lib/redaction';\n\ntype ColorMod = AnsiStyles | AnsiColors;\ntype ColorMods = ColorMod | Array<ColorMod>;\n\nfunction applyMods(str: string, mods?: ColorMods) {\n if (!mods) return str;\n if (_.isArray(mods)) {\n let modStr = str;\n mods.forEach((mod) => {\n modStr = ansis[mod](modStr);\n });\n return modStr;\n }\n return ansis[mods](str);\n}\n\nexport function formattedValue(val: any, showType = false) {\n let strVal: string = '';\n let strType: string = '';\n let mods: ColorMods | undefined;\n if (_.isBoolean(val)) {\n strVal = val.toString();\n mods = ['yellow', 'italic'];\n strType = 'boolean';\n } else if (_.isNumber(val)) {\n strVal = val.toString();\n mods = 'yellow';\n strType = 'number';\n } else if (_.isString(val)) {\n strVal = `\"${val}\"`;\n strType = 'string';\n } else if (_.isPlainObject(val)) {\n // TODO: can definitely make this better...\n strVal = JSON.stringify(val);\n strType = 'object';\n } else if (val === null) {\n strVal = 'null';\n mods = 'gray';\n } else if (val === undefined) {\n strVal = 'undefined';\n mods = 'gray';\n }\n return [\n applyMods(strVal, mods),\n showType && strType ? ansis.gray(` (${strType})`) : '',\n ].join('');\n}\n\n\nexport function formatError(err: VarlockError) {\n let whenStr = '';\n if (err.type === 'SchemaError') {\n whenStr += 'during schema initialization';\n }\n if (err.type === 'ValidationError') {\n whenStr += 'during validation';\n }\n if (err.type === 'CoercionError') {\n whenStr += 'during coercion';\n }\n if (err.type === 'ResolutionError') {\n whenStr += 'during resolution';\n }\n\n let errStr = `${err.icon} ${err.message}`;\n if (err.isUnexpected) {\n errStr += ansis.gray.italic(`\\n (unexpected error${whenStr ? ` ${whenStr}` : ''})`);\n if ('stack' in err) errStr += err.stack;\n }\n return errStr;\n}\n\nexport function joinAndCompact(strings: Array<string | number | boolean | undefined | null | false>, joinChar = ' ') {\n return strings.filter((s) => (\n // we'll not filter out empty strings - because it's useful to just add newlines\n s !== undefined && s !== null && s !== false\n )).join(joinChar);\n}\n\nconst VALIDATION_STATE_COLORS = {\n error: 'red',\n warn: 'yellow',\n valid: 'cyan',\n} as const;\n\nexport function getItemSummary(item: ConfigItem) {\n const summary: Array<string> = [];\n const itemErrors = item.errors;\n const icon = itemErrors.length ? itemErrors[0].icon : '✅';\n const isSensitive = item.isSensitive;\n const isRequired = item.isRequired;\n summary.push(joinAndCompact([\n icon,\n ansis[VALIDATION_STATE_COLORS[item.validationState]](item.key) + (isRequired ? ansis.magenta('*') : ''),\n\n // ansis.gray(`[type = ${item.type.typeLabel}]`),\n isSensitive && ` 🔐${ansis.gray.italic('sensitive')}`,\n\n // item.useAt ? ansis.gray.italic(`(${item.useAt?.join(', ')})`) : undefined,\n ]));\n\n let valAsStr = formattedValue(item.resolvedValue, false);\n if (isSensitive && item.resolvedValue && _.isString(item.resolvedValue)) {\n valAsStr = redactString(item.resolvedValue)!;\n }\n\n summary.push(joinAndCompact([\n ansis.gray(' └'),\n valAsStr,\n item.isCoerced && (\n ansis.gray.italic('< coerced from ')\n + (isSensitive ? formattedValue(item.resolvedRawValue) : formattedValue(item.resolvedRawValue, false))\n ),\n ]));\n\n // if (item.overrides?.length) {\n // const activeOverride = item.overrides[0];\n // let overrideNote = ansis.gray.italic('value set via override: ');\n // overrideNote += ansis.gray(activeOverride.sourceType);\n // if (activeOverride.sourceLabel) overrideNote += ansis.gray(` - ${activeOverride.sourceLabel}`);\n // summary.push(` ${overrideNote}`);\n // }\n\n itemErrors?.forEach((err) => {\n summary.push(ansis[err.isWarning ? 'yellow' : 'red'](` - ${err.isWarning ? '[WARNING] ' : ''}${err.message}`));\n\n // TODO: standardize here how we show parse error locations and stack info?\n\n // summary.push(...err.cleanedStack || '');\n if (err.tip) {\n summary.push(...err.tip.split('\\n').map((line) => ` ${line}`));\n }\n });\n\n // NO OBJECT/CHILDREN FOR NOW\n // for (const childItem of _.values(item.children)) {\n // const childSummary = getItemSummary(childItem);\n // summary.push(childSummary.split('\\n').map((l) => ` ${l}`).join('\\n'));\n // }\n\n return summary.join('\\n');\n}\n"]}
|
package/dist/chunk-4SXLKBVL.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { loadEnvGraph } from './chunk-2VSWBSVA.js';
|
|
2
|
-
import { __name } from './chunk-6PEHRAEP.js';
|
|
3
|
-
|
|
4
|
-
// src/lib/load-graph.ts
|
|
5
|
-
async function loadVarlockEnvGraph(opts) {
|
|
6
|
-
const envGraph = await loadEnvGraph({
|
|
7
|
-
...opts,
|
|
8
|
-
afterInit: /* @__PURE__ */ __name(async (_g) => {
|
|
9
|
-
}, "afterInit")
|
|
10
|
-
});
|
|
11
|
-
return envGraph;
|
|
12
|
-
}
|
|
13
|
-
__name(loadVarlockEnvGraph, "loadVarlockEnvGraph");
|
|
14
|
-
|
|
15
|
-
export { loadVarlockEnvGraph };
|
|
16
|
-
//# sourceMappingURL=chunk-4SXLKBVL.js.map
|
|
17
|
-
//# sourceMappingURL=chunk-4SXLKBVL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/load-graph.ts"],"names":[],"mappings":";;;;AAEA,eAAsB,oBAAoB,IAAA,EAGvC;AACD,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa;AAAA,IAClC,GAAG,IAAA;AAAA,IACH,SAAA,gCAAkB,EAAA,KAAO;AAAA,IAEzB,CAAA,EAFW,WAAA;AAAA,GAGZ,CAAA;AAED,EAAA,OAAO,QAAA;AACT;AAZsB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA","file":"chunk-4SXLKBVL.js","sourcesContent":["import { loadEnvGraph } from '../env-graph';\n\nexport async function loadVarlockEnvGraph(opts?: {\n currentEnvFallback?: string,\n entryFilePath?: string,\n}) {\n const envGraph = await loadEnvGraph({\n ...opts,\n afterInit: async (_g) => {\n // TODO: register varlock resolver\n },\n });\n\n return envGraph;\n}\n"]}
|