varlock 0.2.3 → 0.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/{chunk-BXR2RIO6.js → chunk-26ICEAKS.js} +6 -5
- package/dist/chunk-26ICEAKS.js.map +1 -0
- package/dist/{chunk-UDXNNRWI.js → chunk-4A54P4EM.js} +10 -10
- package/dist/chunk-4A54P4EM.js.map +1 -0
- package/dist/chunk-GEJNYKR4.js +17 -0
- package/dist/chunk-GEJNYKR4.js.map +1 -0
- package/dist/{chunk-35SAMS66.js → chunk-GJ7PTJM4.js} +3 -3
- package/dist/{chunk-35SAMS66.js.map → chunk-GJ7PTJM4.js.map} +1 -1
- package/dist/{chunk-YIXN7TC7.js → chunk-IG5PPVD7.js} +40 -64
- package/dist/chunk-IG5PPVD7.js.map +1 -0
- package/dist/chunk-JDMZWNQA.js +68 -0
- package/dist/chunk-JDMZWNQA.js.map +1 -0
- package/dist/chunk-KKPD7AYU.js +34 -0
- package/dist/chunk-KKPD7AYU.js.map +1 -0
- package/dist/{chunk-HTF7NU5C.js → chunk-LZ52O5WU.js} +10 -7
- package/dist/chunk-LZ52O5WU.js.map +1 -0
- package/dist/chunk-MHIFZAPA.js +405 -0
- package/dist/chunk-MHIFZAPA.js.map +1 -0
- package/dist/{chunk-Q3C4VKFT.js → chunk-MXZI2FC6.js} +17 -41
- package/dist/chunk-MXZI2FC6.js.map +1 -0
- package/dist/{chunk-ISSW6NKZ.js → chunk-TLXFVH7P.js} +20 -17
- package/dist/chunk-TLXFVH7P.js.map +1 -0
- package/dist/chunk-VQ5I7WMP.js +331 -0
- package/dist/chunk-VQ5I7WMP.js.map +1 -0
- package/dist/{chunk-PESTWPBG.js → chunk-WDC5CEKD.js} +8 -6
- package/dist/chunk-WDC5CEKD.js.map +1 -0
- package/dist/{chunk-OY5U5WTF.js → chunk-WZW7QS6M.js} +2700 -2158
- package/dist/chunk-WZW7QS6M.js.map +1 -0
- package/dist/chunk-Y3ITSQA4.js +58 -0
- package/dist/chunk-Y3ITSQA4.js.map +1 -0
- package/dist/cli/cli-executable.js +54 -38
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/config-item-2AL7WF23.js +5 -0
- package/dist/config-item-2AL7WF23.js.map +1 -0
- package/dist/{env-graph-DIcuAiYh.d.ts → env-graph-C8s2oqOJ.d.ts} +62 -2
- package/dist/help.command-7E52XAOO.js +5 -0
- package/dist/{help.command-MLH2WA5Y.js.map → help.command-7E52XAOO.js.map} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/init.command-J4HZL3PB.js +12 -0
- package/dist/{init.command-RAYBZ66R.js.map → init.command-J4HZL3PB.js.map} +1 -1
- package/dist/load.command-6DAP7LEX.js +11 -0
- package/dist/{load.command-KOSPGLV6.js.map → load.command-6DAP7LEX.js.map} +1 -1
- package/dist/plugin-lib.d.ts +2 -2
- package/dist/printenv.command-7B7SZ2EF.js +12 -0
- package/dist/printenv.command-7B7SZ2EF.js.map +1 -0
- package/dist/run.command-HVV6XXDR.js +12 -0
- package/dist/{run.command-BOBQIELJ.js.map → run.command-HVV6XXDR.js.map} +1 -1
- package/dist/runtime/env.d.ts +1 -1
- package/dist/scan.command-Q33VJOPD.js +13 -0
- package/dist/scan.command-Q33VJOPD.js.map +1 -0
- package/dist/telemetry.command-HOJDUCKG.js +11 -0
- package/dist/{telemetry.command-SFEMMU3U.js.map → telemetry.command-HOJDUCKG.js.map} +1 -1
- package/package.json +21 -20
- package/LICENSE +0 -21
- package/dist/chunk-BXR2RIO6.js.map +0 -1
- package/dist/chunk-HTF7NU5C.js.map +0 -1
- package/dist/chunk-ISSW6NKZ.js.map +0 -1
- package/dist/chunk-OY5U5WTF.js.map +0 -1
- package/dist/chunk-PESTWPBG.js.map +0 -1
- package/dist/chunk-Q3C4VKFT.js.map +0 -1
- package/dist/chunk-UDXNNRWI.js.map +0 -1
- package/dist/chunk-YIXN7TC7.js.map +0 -1
- package/dist/help.command-MLH2WA5Y.js +0 -5
- package/dist/init.command-RAYBZ66R.js +0 -9
- package/dist/load.command-KOSPGLV6.js +0 -9
- package/dist/run.command-BOBQIELJ.js +0 -10
- package/dist/telemetry.command-SFEMMU3U.js +0 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ParsedEnvSpecDecorator,
|
|
1
|
+
import { ParsedEnvSpecDecorator, ParsedEnvSpecStaticValue, ParsedEnvSpecFunctionCall, ParsedEnvSpecFunctionArgs, ParsedEnvSpecFile } from '@env-spec/parser';
|
|
2
2
|
import { FallbackIfUnknown } from '@env-spec/utils/type-utils';
|
|
3
3
|
|
|
4
4
|
type VarlockErrorLocationDetails = {
|
|
@@ -213,6 +213,8 @@ declare class Resolver {
|
|
|
213
213
|
get isStatic(): boolean;
|
|
214
214
|
get staticValue(): ResolvedValue;
|
|
215
215
|
inferredType?: string;
|
|
216
|
+
/** reference to the parsed node that created this resolver, used for error location tracking */
|
|
217
|
+
_parsedNode?: ParsedEnvSpecStaticValue | ParsedEnvSpecFunctionCall | ParsedEnvSpecFunctionArgs;
|
|
216
218
|
_schemaErrors: Array<SchemaError>;
|
|
217
219
|
private _depsObj;
|
|
218
220
|
get childResolvers(): Array<Resolver>;
|
|
@@ -380,14 +382,19 @@ type ConfigItemDef = {
|
|
|
380
382
|
};
|
|
381
383
|
type ConfigItemDefAndSource = {
|
|
382
384
|
itemDef: ConfigItemDef;
|
|
383
|
-
source
|
|
385
|
+
source?: EnvGraphDataSource;
|
|
384
386
|
};
|
|
385
387
|
declare class ConfigItem {
|
|
386
388
|
readonly envGraph: EnvGraph;
|
|
387
389
|
readonly key: string;
|
|
390
|
+
/** Whether this is a builtin VARLOCK_* variable */
|
|
391
|
+
isBuiltin?: boolean;
|
|
392
|
+
/** Programmatic definitions not tied to a data source (e.g. builtin vars) */
|
|
393
|
+
_internalDefs: Array<ConfigItemDefAndSource>;
|
|
388
394
|
constructor(envGraph: EnvGraph, key: string);
|
|
389
395
|
/**
|
|
390
396
|
* fetch ordered list of definitions for this item, by following up sorted data sources list
|
|
397
|
+
* internal defs (builtins) are appended last (lowest priority)
|
|
391
398
|
*/
|
|
392
399
|
get defs(): ConfigItemDefAndSource[];
|
|
393
400
|
get description(): string | undefined;
|
|
@@ -500,6 +507,39 @@ declare class VarlockPlugin {
|
|
|
500
507
|
executePluginModule(): Promise<void>;
|
|
501
508
|
}
|
|
502
509
|
|
|
510
|
+
/**
|
|
511
|
+
* Shared parsers for CI env values: ref → branch, repo string → { owner, name }, env value → deployment enum.
|
|
512
|
+
*/
|
|
513
|
+
type DeploymentEnvironment = ('development' | 'preview' | 'staging' | 'production' | 'test');
|
|
514
|
+
interface RepoParts {
|
|
515
|
+
owner: string;
|
|
516
|
+
name: string;
|
|
517
|
+
}
|
|
518
|
+
interface CiEnvInfo {
|
|
519
|
+
isCI: boolean;
|
|
520
|
+
name?: string;
|
|
521
|
+
docsUrl?: string;
|
|
522
|
+
isPR?: boolean;
|
|
523
|
+
repo?: RepoParts;
|
|
524
|
+
fullRepoName?: string;
|
|
525
|
+
branch?: string;
|
|
526
|
+
prNumber?: number;
|
|
527
|
+
commitSha?: string;
|
|
528
|
+
commitShaShort?: string;
|
|
529
|
+
environment?: DeploymentEnvironment;
|
|
530
|
+
/** Unique run/build id (e.g. GITHUB_RUN_ID, BUILD_ID) */
|
|
531
|
+
runId?: string;
|
|
532
|
+
/** URL to the run or deploy in the CI/deploy UI */
|
|
533
|
+
buildUrl?: string;
|
|
534
|
+
/** Workflow or pipeline name */
|
|
535
|
+
workflowName?: string;
|
|
536
|
+
/** User or app that triggered the run (e.g. GITHUB_ACTOR) */
|
|
537
|
+
actor?: string;
|
|
538
|
+
/** Event type (e.g. push, pull_request, workflow_dispatch) */
|
|
539
|
+
eventName?: string;
|
|
540
|
+
raw?: Record<string, string>;
|
|
541
|
+
}
|
|
542
|
+
|
|
503
543
|
type SerializedEnvGraph = {
|
|
504
544
|
basePath?: string;
|
|
505
545
|
sources: Array<{
|
|
@@ -541,10 +581,30 @@ declare class EnvGraph {
|
|
|
541
581
|
rootDecoratorsRegistry: Record<string, RootDecoratorDef>;
|
|
542
582
|
registerRootDecorator(decoratorDef: RootDecoratorDef): void;
|
|
543
583
|
constructor();
|
|
584
|
+
/**
|
|
585
|
+
* Override for process.env used by builtin var detection.
|
|
586
|
+
* When set, builtin vars use this instead of the real process.env.
|
|
587
|
+
* Primarily useful for testing.
|
|
588
|
+
*/
|
|
589
|
+
processEnvOverride?: Record<string, string | undefined>;
|
|
590
|
+
/** Cached CI env info, computed lazily from processEnvOverride or real process.env */
|
|
591
|
+
private _cachedCiEnv?;
|
|
592
|
+
get ciEnvInfo(): CiEnvInfo;
|
|
593
|
+
/** The process env record used for builtin var detection */
|
|
594
|
+
get processEnvForBuiltins(): Record<string, string | undefined>;
|
|
595
|
+
/**
|
|
596
|
+
* Register a builtin VARLOCK_* variable.
|
|
597
|
+
* Attaches an internal def with the builtin resolver so it flows through the normal pipeline.
|
|
598
|
+
* If the item already exists (user-defined), the internal def is added as a fallback.
|
|
599
|
+
*/
|
|
600
|
+
registerBuiltinVar(key: string): void;
|
|
544
601
|
setRootDataSource(source: EnvGraphDataSource): Promise<void>;
|
|
545
602
|
finishLoad(): Promise<void>;
|
|
546
603
|
get graphAdjacencyList(): GraphAdjacencyList;
|
|
547
604
|
resolveEnvValues(keys?: Array<string>): Promise<void>;
|
|
605
|
+
resolveItemWithDeps(key: string): Promise<void>;
|
|
606
|
+
/** config keys with builtin vars first, then user-defined in schema order */
|
|
607
|
+
get sortedConfigKeys(): string[];
|
|
548
608
|
getResolvedEnvObject(): Record<string, any>;
|
|
549
609
|
getSerializedGraph(): SerializedEnvGraph;
|
|
550
610
|
get isInvalid(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"help.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"help.command-7E52XAOO.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as EnvGraph, a as DotEnvFileDataSource, C as ConfigLoadError, b as SchemaError, d as ValidationError, e as CoercionError, f as ResolutionError } from './env-graph-
|
|
2
|
-
export { D as Debugger, S as SerializedEnvGraph, c as createDebug } from './env-graph-
|
|
1
|
+
import { E as EnvGraph, a as DotEnvFileDataSource, C as ConfigLoadError, b as SchemaError, d as ValidationError, e as CoercionError, f as ResolutionError } from './env-graph-C8s2oqOJ.js';
|
|
2
|
+
export { D as Debugger, S as SerializedEnvGraph, c as createDebug } from './env-graph-C8s2oqOJ.js';
|
|
3
3
|
import { initVarlockEnv } from './runtime/env.js';
|
|
4
4
|
export { ENV } from './runtime/env.js';
|
|
5
5
|
export { patchGlobalConsole } from './runtime/patch-console.js';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { patchGlobalResponse } from './chunk-UIOEEWG5.js';
|
|
2
2
|
export { patchGlobalServerResponse } from './chunk-ZXJ4CEDK.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { checkForConfigErrors } from './chunk-TLXFVH7P.js';
|
|
4
|
+
import { loadVarlockEnvGraph } from './chunk-GEJNYKR4.js';
|
|
5
|
+
import { loadEnvGraph } from './chunk-VQ5I7WMP.js';
|
|
6
|
+
import { ResolutionError, CoercionError, ValidationError, SchemaError, ConfigLoadError, DotEnvFileDataSource, EnvGraph } from './chunk-WZW7QS6M.js';
|
|
5
7
|
export { createDebug } from './chunk-QZ6HBRJC.js';
|
|
6
8
|
export { patchGlobalConsole } from './chunk-TYIS6T2T.js';
|
|
7
9
|
import { initVarlockEnv } from './chunk-WAMBVZL2.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAiBA,eAAsB,IAAA,GAAO;AAE3B,EAAA,MAAM,QAAA,GAAW,MAAM,mBAAA,EAAoB;AAC3C,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,oBAAA,CAAqB,QAAQ,CAAA;AAG7B,EAAA,OAAA,CAAQ,IAAI,aAAA,GAAgB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,oBAAoB,CAAA;AACxE,EAAA,cAAA,EAAe;AAEjB;AAVsB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAaf,SAAS,yBAAyB,IAAA,EAGtC;AACD,EAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,aAAA,SAAsB,EAAC;AACxC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,IAAI,aAAa,CAAA;AACpD,EAAA,MAAM,eAAe,EAAC;AACtB,EAAA,KAAA,MAAW,GAAA,IAAO,QAAQ,MAAA,EAAQ;AAChC,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA;AACnC,IAAA,MAAM,WAAA,GAAc,CAAC,QAAA,CAAS,WAAA,IAAe,IAAA,EAAM,gBAAA;AACnD,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,YAAA,CAAa,CAAA,EAAG,IAAA,EAAM,SAAA,IAAa,KAAK,IAAI,GAAG,CAAA,CAAE,CAAA,GAAI,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,GAAG,EAAE,KAAK,CAAA;AAAA,EAC/F;AACA,EAAA,OAAO,YAAA;AACT;AAdgB,MAAA,CAAA,wBAAA,EAAA,0BAAA,CAAA;AAiBT,IAAM,QAAA,GAAW;AAAA;AAAA,EAEtB,QAAA;AAAA,EACA,oBAAA;AAAA;AAAA,EAGA,YAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA;AAAA,EAGA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF","file":"index.js","sourcesContent":["import { checkForConfigErrors } from './cli/helpers/error-checks';\nimport { loadVarlockEnvGraph } from './lib/load-graph';\nimport { initVarlockEnv } from './runtime/env';\n\n// Import env-graph components for internal API\nimport {\n EnvGraph,\n loadEnvGraph,\n DotEnvFileDataSource,\n ConfigLoadError,\n SchemaError,\n ValidationError,\n CoercionError,\n ResolutionError,\n type SerializedEnvGraph,\n} from './env-graph';\n\nexport async function load() {\n // TODO: add some options\n const envGraph = await loadVarlockEnvGraph();\n await envGraph.resolveEnvValues();\n checkForConfigErrors(envGraph);\n\n // loadFromSerializedGraph(envGraph.getSerializedGraph());\n process.env.__VARLOCK_ENV = JSON.stringify(envGraph.getSerializedGraph());\n initVarlockEnv();\n // TODO: return resolved env and schema / meta info\n}\n\n\nexport function getBuildTimeReplacements(opts?: {\n objectKey?: string,\n includeSensitive?: boolean,\n}) {\n if (!process.env.__VARLOCK_ENV) return {};\n const envInfo = JSON.parse(process.env.__VARLOCK_ENV) as SerializedEnvGraph;\n const replacements = {} as Record<string, string>;\n for (const key in envInfo.config) {\n const itemInfo = envInfo.config[key];\n const replaceItem = !itemInfo.isSensitive || opts?.includeSensitive;\n if (!replaceItem) continue;\n replacements[`${opts?.objectKey || 'ENV'}.${key}`] = JSON.stringify(envInfo.config[key].value);\n }\n return replacements;\n}\n\n// Internal API for direct env graph manipulation\nexport const internal = {\n // Core classes\n EnvGraph,\n DotEnvFileDataSource,\n\n // Loader function\n loadEnvGraph,\n\n // Error classes\n ConfigLoadError,\n SchemaError,\n ValidationError,\n CoercionError,\n ResolutionError,\n\n // Varlock-specific utilities\n loadVarlockEnvGraph,\n checkForConfigErrors,\n initVarlockEnv,\n};\n\nexport { patchGlobalConsole } from './runtime/patch-console';\nexport { patchGlobalServerResponse } from './runtime/patch-server-response';\nexport { patchGlobalResponse } from './runtime/patch-response';\nexport { ENV } from './runtime/env';\nexport { createDebug, type Debugger } from './lib/debug';\nexport type { SerializedEnvGraph };\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-IG5PPVD7.js';
|
|
2
|
+
import './chunk-Y3ITSQA4.js';
|
|
3
|
+
import './chunk-MXZI2FC6.js';
|
|
4
|
+
import './chunk-KKPD7AYU.js';
|
|
5
|
+
import './chunk-4A54P4EM.js';
|
|
6
|
+
import './chunk-VQ5I7WMP.js';
|
|
7
|
+
import './chunk-WZW7QS6M.js';
|
|
8
|
+
import './chunk-QZ6HBRJC.js';
|
|
9
|
+
import './chunk-MIBOBKI4.js';
|
|
10
|
+
import './chunk-6PEHRAEP.js';
|
|
11
|
+
//# sourceMappingURL=init.command-J4HZL3PB.js.map
|
|
12
|
+
//# sourceMappingURL=init.command-J4HZL3PB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"init.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"init.command-J4HZL3PB.js"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-LZ52O5WU.js';
|
|
2
|
+
import './chunk-4A54P4EM.js';
|
|
3
|
+
import './chunk-TLXFVH7P.js';
|
|
4
|
+
import './chunk-GEJNYKR4.js';
|
|
5
|
+
import './chunk-VQ5I7WMP.js';
|
|
6
|
+
import './chunk-WZW7QS6M.js';
|
|
7
|
+
import './chunk-QZ6HBRJC.js';
|
|
8
|
+
import './chunk-MIBOBKI4.js';
|
|
9
|
+
import './chunk-6PEHRAEP.js';
|
|
10
|
+
//# sourceMappingURL=load.command-6DAP7LEX.js.map
|
|
11
|
+
//# sourceMappingURL=load.command-6DAP7LEX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"load.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"load.command-6DAP7LEX.js"}
|
package/dist/plugin-lib.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { V as VarlockPlugin } from './env-graph-
|
|
2
|
-
export { D as Debugger, R as Resolver, c as createDebug } from './env-graph-
|
|
1
|
+
import { V as VarlockPlugin } from './env-graph-C8s2oqOJ.js';
|
|
2
|
+
export { D as Debugger, R as Resolver, c as createDebug } from './env-graph-C8s2oqOJ.js';
|
|
3
3
|
import '@env-spec/parser';
|
|
4
4
|
import '@env-spec/utils/type-utils';
|
|
5
5
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-JDMZWNQA.js';
|
|
2
|
+
import './chunk-KKPD7AYU.js';
|
|
3
|
+
import './chunk-4A54P4EM.js';
|
|
4
|
+
import './chunk-TLXFVH7P.js';
|
|
5
|
+
import './chunk-GEJNYKR4.js';
|
|
6
|
+
import './chunk-VQ5I7WMP.js';
|
|
7
|
+
import './chunk-WZW7QS6M.js';
|
|
8
|
+
import './chunk-QZ6HBRJC.js';
|
|
9
|
+
import './chunk-MIBOBKI4.js';
|
|
10
|
+
import './chunk-6PEHRAEP.js';
|
|
11
|
+
//# sourceMappingURL=printenv.command-7B7SZ2EF.js.map
|
|
12
|
+
//# sourceMappingURL=printenv.command-7B7SZ2EF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"printenv.command-7B7SZ2EF.js"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-WDC5CEKD.js';
|
|
2
|
+
import './chunk-4A54P4EM.js';
|
|
3
|
+
import './chunk-TLXFVH7P.js';
|
|
4
|
+
import './chunk-GEJNYKR4.js';
|
|
5
|
+
import './chunk-VQ5I7WMP.js';
|
|
6
|
+
import './chunk-WZW7QS6M.js';
|
|
7
|
+
import './chunk-QZ6HBRJC.js';
|
|
8
|
+
import './chunk-WAMBVZL2.js';
|
|
9
|
+
import './chunk-MIBOBKI4.js';
|
|
10
|
+
import './chunk-6PEHRAEP.js';
|
|
11
|
+
//# sourceMappingURL=run.command-HVV6XXDR.js.map
|
|
12
|
+
//# sourceMappingURL=run.command-HVV6XXDR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"run.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"run.command-HVV6XXDR.js"}
|
package/dist/runtime/env.d.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { commandFn, commandSpec, getGitFiles, scanFileForValues, walkDirectory } from './chunk-MHIFZAPA.js';
|
|
2
|
+
import './chunk-Y3ITSQA4.js';
|
|
3
|
+
import './chunk-MXZI2FC6.js';
|
|
4
|
+
import './chunk-KKPD7AYU.js';
|
|
5
|
+
import './chunk-4A54P4EM.js';
|
|
6
|
+
import './chunk-GEJNYKR4.js';
|
|
7
|
+
import './chunk-VQ5I7WMP.js';
|
|
8
|
+
import './chunk-WZW7QS6M.js';
|
|
9
|
+
import './chunk-QZ6HBRJC.js';
|
|
10
|
+
import './chunk-MIBOBKI4.js';
|
|
11
|
+
import './chunk-6PEHRAEP.js';
|
|
12
|
+
//# sourceMappingURL=scan.command-Q33VJOPD.js.map
|
|
13
|
+
//# sourceMappingURL=scan.command-Q33VJOPD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"scan.command-Q33VJOPD.js"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-26ICEAKS.js';
|
|
2
|
+
import './chunk-MXZI2FC6.js';
|
|
3
|
+
import './chunk-KKPD7AYU.js';
|
|
4
|
+
import './chunk-4A54P4EM.js';
|
|
5
|
+
import './chunk-VQ5I7WMP.js';
|
|
6
|
+
import './chunk-WZW7QS6M.js';
|
|
7
|
+
import './chunk-QZ6HBRJC.js';
|
|
8
|
+
import './chunk-MIBOBKI4.js';
|
|
9
|
+
import './chunk-6PEHRAEP.js';
|
|
10
|
+
//# sourceMappingURL=telemetry.command-HOJDUCKG.js.map
|
|
11
|
+
//# sourceMappingURL=telemetry.command-HOJDUCKG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-HOJDUCKG.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "varlock",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "The unified env var toolkit - load, validate, and secure your environment variables",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -13,6 +13,16 @@
|
|
|
13
13
|
"url": "https://github.com/dmno-dev/varlock.git",
|
|
14
14
|
"directory": "packages/varlock"
|
|
15
15
|
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"build:binary": "bun run scripts/build-binaries.ts --dev",
|
|
19
|
+
"build:binaries": "bun run scripts/build-binaries.ts",
|
|
20
|
+
"dev": "tsup",
|
|
21
|
+
"test": "vitest",
|
|
22
|
+
"test:ci": "vitest --run",
|
|
23
|
+
"lint": "eslint .",
|
|
24
|
+
"lint:fix": "bun run lint --fix"
|
|
25
|
+
},
|
|
16
26
|
"keywords": [
|
|
17
27
|
"varlock",
|
|
18
28
|
"secrets",
|
|
@@ -97,11 +107,13 @@
|
|
|
97
107
|
"devDependencies": {
|
|
98
108
|
"@clack/core": "^1.0.0",
|
|
99
109
|
"@clack/prompts": "^1.0.0",
|
|
100
|
-
"@
|
|
101
|
-
"@
|
|
110
|
+
"@env-spec/parser": "workspace:*",
|
|
111
|
+
"@env-spec/utils": "workspace:*",
|
|
112
|
+
"@sindresorhus/is": "catalog:",
|
|
113
|
+
"@types/node": "catalog:",
|
|
102
114
|
"@types/semver": "^7.7.1",
|
|
103
|
-
"@
|
|
104
|
-
"ansis": "
|
|
115
|
+
"@varlock/ci-env-info": "workspace:^",
|
|
116
|
+
"ansis": "catalog:",
|
|
105
117
|
"browser-or-node": "^3.0.0",
|
|
106
118
|
"ci-info": "^4.3.1",
|
|
107
119
|
"exit-hook": "^5.1.0",
|
|
@@ -109,20 +121,9 @@
|
|
|
109
121
|
"is-docker": "^4.0.0",
|
|
110
122
|
"is-unicode-supported": "^2.1.0",
|
|
111
123
|
"is-wsl": "^3.1.0",
|
|
112
|
-
"outdent": "
|
|
124
|
+
"outdent": "catalog:",
|
|
113
125
|
"semver": "^7.7.4",
|
|
114
|
-
"tsup": "
|
|
115
|
-
"vitest": "
|
|
116
|
-
"@env-spec/utils": "0.0.0",
|
|
117
|
-
"@env-spec/parser": "0.1.0"
|
|
118
|
-
},
|
|
119
|
-
"scripts": {
|
|
120
|
-
"build": "tsup",
|
|
121
|
-
"build:sea": "tsup --config tsup-sea.config.ts",
|
|
122
|
-
"dev": "tsup",
|
|
123
|
-
"test": "vitest",
|
|
124
|
-
"test:ci": "vitest --run",
|
|
125
|
-
"lint": "eslint .",
|
|
126
|
-
"lint:fix": "pnpm run lint --fix"
|
|
126
|
+
"tsup": "catalog:",
|
|
127
|
+
"vitest": "catalog:"
|
|
127
128
|
}
|
|
128
|
-
}
|
|
129
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 DMNO Inc.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/telemetry.command.ts"],"names":[],"mappings":";;;;;;;;;AAWO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,WAAA;AAAA,EACN,WAAA,EAAa,0CAAA;AAAA,EACb,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,EAAA,CAAA,CAUR,IAAA;AACJ,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAEhF,EAAA,IAAI,CAAC,CAAC,QAAA,EAAU,SAAS,EAAE,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,EAAG;AACpD,IAAA,MAAM,IAAI,aAAa,8CAAA,EAAgD;AAAA,MACrE,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,EAAQ,EAAG,UAAU,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,EAAW,aAAa,CAAA;AAEhD,EAAA,IAAI;AAEF,IAAA,IAAI,CAAC,UAAA,CAAW,SAAS,CAAA,EAAG;AAC1B,MAAA,MAAM,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,IAC5C;AAGA,IAAA,IAAI,SAA8B,EAAC;AACnC,IAAA,IAAI,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1B,MAAA,MAAM,aAAA,GAAgB,MAAM,QAAA,CAAS,UAAA,EAAY,OAAO,CAAA;AACxD,MAAA,MAAA,GAAS,IAAA,CAAK,MAAM,aAAa,CAAA;AAAA,IACnC;AAGA,IAAA,IAAI,GAAA,CAAI,MAAA,CAAO,IAAA,KAAS,SAAA,SAAkB,iBAAA,GAAoB,IAAA;AAAA,gBAClD,MAAA,CAAO,iBAAA;AACnB,IAAA,MAAM,UAAU,UAAA,EAAY,IAAA,CAAK,UAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAE3D,IAAA,IAAI,GAAA,CAAI,OAAO,IAAA,EAAM;AACnB,MAAA,OAAA,CAAQ,IAAI,uDAAkD,CAAA;AAAA,IAChE,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,IAAI,wDAAmD,CAAA;AAAA,IACjE;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,aAAA,EAAe,GAAA,CAAI,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,EACrD,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,aAAa,CAAC,CAAA;AAAA,EACvB;AACF,CAAA,EAvCmE,WAAA","file":"chunk-BXR2RIO6.js","sourcesContent":["import { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { mkdir, writeFile, readFile } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { define } from 'gunshi';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { gracefulExit } from 'exit-hook';\nimport { fmt } from '../helpers/pretty-format';\nimport { CliExitError } from '../helpers/exit-error';\n\n\nexport const commandSpec = define({\n name: 'telemetry',\n description: 'Enable/disable anonymous usage analytics',\n args: {\n mode: {\n type: 'positional',\n description: '\"enable\" or \"disable\"',\n },\n },\n examples: `\nOpts in/out of anonymous usage analytics. This command creates/updates a configuration\nfile at ~/.varlock/config.json saving your preference.\n\nExamples:\n varlock telemetry disable # Opt out of telemetry\n varlock telemetry enable # Opt in to telemetry\n\n💡 Tip: You can also temporarily opt out by setting VARLOCK_TELEMETRY_DISABLED=1\nFor more information, visit https://varlock.dev/guides/telemetry/\n `.trim(),\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // TODO: remove this when gunshi supports types/validation for positional args\n if (!['enable', 'disable'].includes(ctx.values.mode)) {\n throw new CliExitError('additional arg must be \"enable\" or \"disable\"', {\n forceExit: true,\n });\n }\n\n const configDir = join(homedir(), '.varlock');\n const configPath = join(configDir, 'config.json');\n\n try {\n // Create .varlock directory if it doesn't exist\n if (!existsSync(configDir)) {\n await mkdir(configDir, { recursive: true });\n }\n\n // Read existing config if it exists\n let config: Record<string, any> = {};\n if (existsSync(configPath)) {\n const configContent = await readFile(configPath, 'utf-8');\n config = JSON.parse(configContent);\n }\n\n // update config `telemetryDisabled` setting\n if (ctx.values.mode === 'disable') config.telemetryDisabled = true;\n else delete config.telemetryDisabled;\n await writeFile(configPath, JSON.stringify(config, null, 2));\n\n if (ctx.values.mode) {\n console.log('✅ Successfully enabled anonymous usage analytics');\n } else {\n console.log('✅ Successfully disabled anonymous usage analytics');\n }\n console.log('> saved in:', fmt.filePath(configPath));\n } catch (error) {\n console.error('Failed to opt out of analytics:', error);\n return gracefulExit(1);\n }\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":"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","file":"chunk-HTF7NU5C.js","sourcesContent":["import { define } from 'gunshi';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { getItemSummary } from '../../lib/formatting';\nimport { checkForConfigErrors, checkForSchemaErrors } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport path from 'node:path';\nimport { FileBasedDataSource } from '../../env-graph';\n\nexport const commandSpec = define({\n name: 'load',\n description: 'Load env according to schema and resolve values',\n args: {\n format: {\n type: 'enum',\n short: 'f',\n choices: ['pretty', 'json', 'env', 'json-full'],\n description: 'Format of output',\n default: 'pretty',\n },\n compact: {\n type: 'boolean',\n description: 'Use compact format (for json-full: no indentation, for env: skip undefined values)',\n },\n 'show-all': {\n type: 'boolean',\n description: 'When load is failing, show all items rather than only failing items',\n },\n env: {\n type: 'string',\n description: 'Set the environment (e.g., production, development, etc) - will be overridden by @currentEnv in the schema if present',\n },\n path: {\n type: 'string',\n short: 'p',\n description: 'Path to a specific .env file or directory (with trailing slash) to use as the entry point',\n },\n },\n examples: `\nLoads and validates environment variables according to your .env files, and prints the results.\nUseful for debugging locally, and in CI to print out a summary of env vars.\n\nExamples:\n varlock load # Load and validate with pretty output\n varlock load --format json # Output in JSON format\n varlock load --show-all # Show all items when validation fails\n varlock load --path .env.prod # Load from a specific .env file\n varlock looad --compact # Use compact format - skips undefined values, no indentation for json-full\n varlock load --env production # Load for a specific environment (⚠️ ignored if using @currentEnv!)\n`.trim(),\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { format, compact, 'show-all': showAll } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n entryFilePath: ctx.values.path,\n });\n checkForSchemaErrors(envGraph);\n\n if (!envGraph.rootDataSource) throw new Error('expected root data source to be set');\n\n await envGraph.resolveEnvValues();\n\n // ideally we could be smarter about generating types without needing to resolve values\n // but for now the decorators are all resolved as part of the general resolution process\n const generateTypesDecs = envGraph.getRootDecFns('generateTypes');\n for (const generateTypesDec of generateTypesDecs) {\n const typeGenSettings = await generateTypesDec.resolve();\n\n // we skip generating types if `@generateTypes` was not in the main file\n // unless the `executeWhenImported` flag is set\n if (generateTypesDec.dataSource.isImport && !typeGenSettings.obj.executeWhenImported) continue;\n\n if (!typeGenSettings.obj.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.obj.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.obj.lang}`);\n if (!typeGenSettings.obj.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.obj.path)) throw new Error('@generateTypes - `path` arg must be a string');\n\n const outputPath = generateTypesDec.dataSource instanceof FileBasedDataSource\n ? path.resolve(generateTypesDec.dataSource.fullPath, '..', typeGenSettings.obj.path)\n : typeGenSettings.obj.path;\n\n await envGraph.generateTypes(typeGenSettings.obj.lang, outputPath);\n }\n\n checkForConfigErrors(envGraph, { showAll });\n\n if (format === 'pretty') {\n for (const itemKey in envGraph.configSchema) {\n const item = envGraph.configSchema[itemKey];\n console.log(getItemSummary(item));\n }\n } else if (format === 'json') {\n console.log(JSON.stringify(envGraph.getResolvedEnvObject(), null, 2));\n } else if (format === 'json-full') {\n const indent = compact ? 0 : 2;\n console.log(JSON.stringify(envGraph.getSerializedGraph(), null, indent));\n } else if (format === 'env') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n const skipUndefined = compact === true;\n\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\n\n if (value === undefined && skipUndefined) {\n continue;\n }\n\n let strValue: string;\n if (value === undefined) {\n strValue = '';\n } else if (typeof value === 'string') {\n strValue = `\"${value.replaceAll('\"', '\\\\\"').replaceAll('\\n', '\\\\n')}\"`;\n } else {\n strValue = JSON.stringify(value);\n }\n console.log(`${key}=${strValue}`);\n }\n } else {\n throw new Error(`Unknown format: ${format}`);\n }\n\n // const resolvedEnv = envGraph.getResolvedEnvObject();\n // console.log(resolvedEnv);\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/helpers/error-checks.ts","../src/lib/load-graph.ts"],"names":[],"mappings":"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","file":"chunk-ISSW6NKZ.js","sourcesContent":["import ansis from 'ansis';\nimport { gracefulExit } from 'exit-hook';\nimport _ from '@env-spec/utils/my-dash';\nimport { EnvGraph, ConfigItem } from '../../env-graph';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport { VarlockError } from '../../env-graph/lib/errors';\n\n\nfunction showErrorLocationDetails(err: Error) {\n if (!(err instanceof VarlockError) || !err.location) return;\n const errLoc = err.location;\n const errPreview = [\n errLoc.lineStr,\n `${ansis.gray('-'.repeat(errLoc.colNumber - 1))}${ansis.red('^')}`,\n ].join('\\n');\n\n console.log('');\n console.log(`📂 ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.log(errPreview);\n}\n\nexport function checkForSchemaErrors(envGraph: EnvGraph) {\n // first we check for loading/parse errors - some cases we may want to let it fail silently?\n for (const source of envGraph.sortedDataSources) {\n // do we care about loading errors from disabled sources?\n // if (source.disabled) continue;\n\n if (source.loadingError) {\n console.log(`🚨 Error encountered while loading ${source.label}\\n`);\n\n console.log(source.loadingError.message);\n showErrorLocationDetails(source.loadingError);\n\n // For plugin loading errors, show the full stack trace since it's usually\n // a runtime error from executing the plugin code\n if (source.loadingError.stack && !(source.loadingError instanceof VarlockError)) {\n console.log(`\\n${ansis.dim('Stack trace:')}`);\n console.log(ansis.dim(source.loadingError.stack));\n }\n\n return gracefulExit(1);\n }\n // TODO: unify this with the above!\n if (source.schemaErrors.length) {\n console.log(`🚨 Error(s) encountered in ${source.label}`);\n\n for (const schemaErr of source.schemaErrors) {\n console.log(`- ${schemaErr.message}`);\n showErrorLocationDetails(schemaErr);\n }\n return gracefulExit(1);\n }\n }\n\n // now we check for any schema errors - where something about how things are wired up is invalid\n // NOTE - we should not have run any resolution yet\n // TODO: make sure we are calling this before attempting to resolve values\n // const failingItems = _.filter(_.values(envGraph.configSchema), (item) => item.validationState === 'error');\n // if (failingItems.length > 0) {\n // throw new CliExitError('Schema is currently invalid');\n // }\n}\n\n\nexport class InvalidEnvError extends Error {\n constructor() {\n super('Resolved config/env did not pass validation');\n }\n getFormattedOutput() {\n return `\\n💥 ${ansis.red(this.message)} 💥\\n`;\n }\n}\n\nexport function checkForConfigErrors(envGraph: EnvGraph, opts?: {\n showAll?: boolean\n}) {\n // check for root decorator \"execution\"\n for (const source of envGraph.sortedDataSources) {\n if (source.resolutionErrors.length) {\n console.log(`🚨 Root decorator error(s) in ${source.label}`);\n\n for (const err of source.resolutionErrors) {\n console.log(`- ${err.message}`);\n showErrorLocationDetails(err);\n }\n }\n }\n\n\n\n const failingItems = _.filter(_.values(envGraph.configSchema), (item: ConfigItem) => item.validationState === 'error');\n\n // TODO: use service.isValid?\n if (failingItems.length > 0) {\n console.error(`\\n🚨 🚨 🚨 ${ansis.bold.underline('Configuration is currently invalid ')} 🚨 🚨 🚨\\n`);\n console.error('Invalid items:\\n');\n\n _.each(failingItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n console.error();\n });\n if (opts?.showAll) {\n console.error();\n console.error(joinAndCompact([\n 'Valid items:',\n ansis.italic.gray('(remove `--show-all` flag to hide)'),\n ]));\n console.error();\n const validItems = _.filter(_.values(envGraph.configSchema), (i: ConfigItem) => !!i.isValid);\n _.each(validItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n });\n }\n\n throw new InvalidEnvError();\n }\n}\n","import { loadEnvGraph } from '../env-graph';\n\nexport async function loadVarlockEnvGraph(opts?: {\n currentEnvFallback?: string,\n entryFilePath?: string,\n}) {\n const envGraph = await loadEnvGraph({\n ...opts,\n afterInit: async (_g) => {\n // TODO: register varlock resolver\n },\n });\n\n return envGraph;\n}\n"]}
|