varlock 0.0.12 → 0.0.13
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-52FLZJCQ.js → chunk-5EBVEGDW.js} +5 -24
- package/dist/chunk-5EBVEGDW.js.map +1 -0
- package/dist/{chunk-IBMSAOL6.js → chunk-AS4LIW7A.js} +21 -15
- package/dist/chunk-AS4LIW7A.js.map +1 -0
- package/dist/{chunk-2GR4YQFJ.js → chunk-IML4QZHB.js} +4 -5
- package/dist/chunk-IML4QZHB.js.map +1 -0
- package/dist/{chunk-MHDV65DI.js → chunk-LXJMZMID.js} +98 -66
- package/dist/chunk-LXJMZMID.js.map +1 -0
- package/dist/{chunk-NXAXPMO5.js → chunk-MV5ZAKN7.js} +483 -243
- package/dist/chunk-MV5ZAKN7.js.map +1 -0
- package/dist/{chunk-AMAUWR7O.js → chunk-MVYXWTAV.js} +4 -4
- package/dist/{chunk-AMAUWR7O.js.map → chunk-MVYXWTAV.js.map} +1 -1
- package/dist/{chunk-23GW4X5J.js → chunk-T3I4UFB2.js} +16 -5
- package/dist/chunk-T3I4UFB2.js.map +1 -0
- package/dist/{chunk-LBVGWRPL.js → chunk-UA3DMAAQ.js} +4 -4
- package/dist/{chunk-LBVGWRPL.js.map → chunk-UA3DMAAQ.js.map} +1 -1
- package/dist/cli/cli-executable.js +14 -15
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/{env-DxiD5Ylz.d.ts → env-B_LAqK4w.d.ts} +94 -63
- package/dist/index.d.ts +2 -3
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/init.command-CTO64XBL.js +8 -0
- package/dist/{init.command-ZSH7NCV7.js.map → init.command-CTO64XBL.js.map} +1 -1
- package/dist/load.command-EWIJDF55.js +8 -0
- package/dist/{load.command-U2GASZRB.js.map → load.command-EWIJDF55.js.map} +1 -1
- package/dist/login.command-UZJJ4XTV.js +8 -0
- package/dist/{login.command-2WG4GZV4.js.map → login.command-UZJJ4XTV.js.map} +1 -1
- package/dist/run.command-T44BAZ7X.js +8 -0
- package/dist/{run.command-IETNJ6UU.js.map → run.command-T44BAZ7X.js.map} +1 -1
- package/dist/runtime/env.d.ts +1 -1
- package/dist/telemetry.command-2C3MQA4K.js +8 -0
- package/dist/{telemetry.command-US72HXMS.js.map → telemetry.command-2C3MQA4K.js.map} +1 -1
- package/package.json +2 -2
- package/dist/chunk-23GW4X5J.js.map +0 -1
- package/dist/chunk-2GR4YQFJ.js.map +0 -1
- package/dist/chunk-52FLZJCQ.js.map +0 -1
- package/dist/chunk-IBMSAOL6.js.map +0 -1
- package/dist/chunk-MHDV65DI.js.map +0 -1
- package/dist/chunk-NXAXPMO5.js.map +0 -1
- package/dist/chunk-Y2EGAWAH.js +0 -17
- package/dist/chunk-Y2EGAWAH.js.map +0 -1
- package/dist/init.command-ZSH7NCV7.js +0 -9
- package/dist/load.command-U2GASZRB.js +0 -9
- package/dist/login.command-2WG4GZV4.js +0 -8
- package/dist/run.command-IETNJ6UU.js +0 -9
- package/dist/telemetry.command-US72HXMS.js +0 -8
|
@@ -113,73 +113,120 @@ declare function createEnvGraphDataType<TsType, InstanceSettingsArgs extends Arr
|
|
|
113
113
|
};
|
|
114
114
|
type EnvGraphDataTypeFactory = ReturnType<typeof createEnvGraphDataType>;
|
|
115
115
|
|
|
116
|
+
type ResolvedValue = undefined | string | number | boolean | RegExp;
|
|
117
|
+
type ResolverFunctionArgs = Array<Resolver | Record<string, Resolver>>;
|
|
118
|
+
declare abstract class Resolver {
|
|
119
|
+
readonly fnArgs: ResolverFunctionArgs;
|
|
120
|
+
static fnName?: string;
|
|
121
|
+
constructor(fnArgs: ResolverFunctionArgs);
|
|
122
|
+
abstract label: string;
|
|
123
|
+
abstract icon: string;
|
|
124
|
+
inferredType?: string;
|
|
125
|
+
_schemaErrors: Array<SchemaError>;
|
|
126
|
+
private _depsObj;
|
|
127
|
+
get childResolvers(): Array<Resolver>;
|
|
128
|
+
get schemaErrors(): Array<SchemaError>;
|
|
129
|
+
get depsObj(): Record<string, boolean>;
|
|
130
|
+
get deps(): string[];
|
|
131
|
+
protected abstract _process(ctx?: any): Promise<void | (() => void)>;
|
|
132
|
+
private configItem?;
|
|
133
|
+
process(configItem: ConfigItem): Promise<void>;
|
|
134
|
+
protected addDep(key: string): void;
|
|
135
|
+
protected abstract _resolve(): Promise<ResolvedValue>;
|
|
136
|
+
resolve(): Promise<ResolvedValue>;
|
|
137
|
+
protected getDepValue(key: string): ResolvedValue;
|
|
138
|
+
}
|
|
139
|
+
type ResolverChildClass<ChildClass extends Resolver = Resolver> = ({
|
|
140
|
+
new (...args: Array<any>): ChildClass;
|
|
141
|
+
} & typeof Resolver);
|
|
142
|
+
|
|
116
143
|
declare const DATA_SOURCE_TYPES: Readonly<{
|
|
117
144
|
schema: {
|
|
118
145
|
fileSuffixes: string[];
|
|
119
|
-
precedence: number;
|
|
120
146
|
};
|
|
121
147
|
example: {
|
|
122
148
|
fileSuffixes: string[];
|
|
123
|
-
precedence: number;
|
|
124
149
|
};
|
|
125
150
|
defaults: {
|
|
126
151
|
fileSuffixes: string[];
|
|
127
|
-
precedence: number;
|
|
128
152
|
};
|
|
129
153
|
values: {
|
|
130
154
|
fileSuffixes: Array<string>;
|
|
131
|
-
precedence: number;
|
|
132
155
|
};
|
|
133
156
|
overrides: {
|
|
134
157
|
fileSuffixes: string[];
|
|
135
|
-
precedence: number;
|
|
136
158
|
};
|
|
159
|
+
container: {};
|
|
137
160
|
}>;
|
|
138
161
|
type DataSourceType = keyof typeof DATA_SOURCE_TYPES;
|
|
139
162
|
declare abstract class EnvGraphDataSource {
|
|
140
163
|
static DATA_SOURCE_TYPES: Readonly<{
|
|
141
164
|
schema: {
|
|
142
165
|
fileSuffixes: string[];
|
|
143
|
-
precedence: number;
|
|
144
166
|
};
|
|
145
167
|
example: {
|
|
146
168
|
fileSuffixes: string[];
|
|
147
|
-
precedence: number;
|
|
148
169
|
};
|
|
149
170
|
defaults: {
|
|
150
171
|
fileSuffixes: string[];
|
|
151
|
-
precedence: number;
|
|
152
172
|
};
|
|
153
173
|
values: {
|
|
154
174
|
fileSuffixes: Array<string>;
|
|
155
|
-
precedence: number;
|
|
156
175
|
};
|
|
157
176
|
overrides: {
|
|
158
177
|
fileSuffixes: string[];
|
|
159
|
-
precedence: number;
|
|
160
178
|
};
|
|
179
|
+
container: {};
|
|
161
180
|
}>;
|
|
181
|
+
/** reference back to the graph */
|
|
162
182
|
graph?: EnvGraph;
|
|
183
|
+
/** parent data source - everything except the root will have a parent */
|
|
184
|
+
parent?: EnvGraphDataSource;
|
|
185
|
+
/** child data sources */
|
|
186
|
+
children: Array<EnvGraphDataSource>;
|
|
187
|
+
/**
|
|
188
|
+
* tracks if this data source was imported, and additional settings about the import (restricting keys)
|
|
189
|
+
* */
|
|
190
|
+
importMeta?: {
|
|
191
|
+
isImport?: boolean;
|
|
192
|
+
importKeys?: Array<string>;
|
|
193
|
+
};
|
|
194
|
+
get isImport(): boolean;
|
|
195
|
+
get importKeys(): Array<string> | undefined;
|
|
196
|
+
/** adds a child data source and sets up the correct references in both directions */
|
|
197
|
+
addChild(child: EnvGraphDataSource, importMeta?: EnvGraphDataSource['importMeta']): Promise<void>;
|
|
198
|
+
/** environment flag key (as set by @envFlag decorator) - only if set within this source */
|
|
199
|
+
_envFlagKey?: string;
|
|
200
|
+
/** environment flag key getter that will follow up the parent chain */
|
|
201
|
+
get envFlagKey(): string | undefined;
|
|
202
|
+
/** environment flag config item getter (follows up the parent chain) */
|
|
203
|
+
get envFlagConfigItem(): ConfigItem | undefined;
|
|
204
|
+
/** environment flag value getter (follows up the parent chain), and checks the graph-level fallback */
|
|
205
|
+
get envFlagValue(): ResolvedValue;
|
|
206
|
+
/** helper to resolve the envFlag value */
|
|
207
|
+
resolveCurrentEnv(): Promise<ResolvedValue>;
|
|
208
|
+
/** finish init process for this data source */
|
|
209
|
+
finishInit(): Promise<void>;
|
|
210
|
+
/**
|
|
211
|
+
* called by the finishInit - meant to be overridden by subclasses
|
|
212
|
+
* to add specific behaviour for that data source type
|
|
213
|
+
* @internal
|
|
214
|
+
* */
|
|
215
|
+
_finishInit(): Promise<void>;
|
|
163
216
|
abstract typeLabel: string;
|
|
217
|
+
abstract get label(): string;
|
|
164
218
|
type: DataSourceType;
|
|
165
219
|
applyForEnv?: string;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
abstract get label(): string;
|
|
220
|
+
_disabled?: boolean;
|
|
221
|
+
get disabled(): boolean | undefined;
|
|
169
222
|
/** an error encountered while loading/parsing the data source */
|
|
170
|
-
|
|
223
|
+
_loadingError?: Error;
|
|
224
|
+
get loadingError(): Error | undefined;
|
|
171
225
|
get isValid(): boolean;
|
|
172
226
|
configItemDefs: Record<string, ConfigItemDef>;
|
|
173
|
-
decorators:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
declare class ProcessEnvDataSource extends EnvGraphDataSource {
|
|
177
|
-
type: "overrides";
|
|
178
|
-
typeLabel: string;
|
|
179
|
-
label: string;
|
|
180
|
-
ignoreNewDefs: boolean;
|
|
181
|
-
static processEnvValues: Record<string, string | undefined> | undefined;
|
|
182
|
-
constructor();
|
|
227
|
+
decorators: Array<ParsedEnvSpecDecorator>;
|
|
228
|
+
getRootDecorators(decName: string): ParsedEnvSpecDecorator[];
|
|
229
|
+
getRootDecoratorSimpleValue(decName: string): any;
|
|
183
230
|
}
|
|
184
231
|
declare abstract class FileBasedDataSource extends EnvGraphDataSource {
|
|
185
232
|
isGitIgnored?: boolean;
|
|
@@ -195,7 +242,7 @@ declare abstract class FileBasedDataSource extends EnvGraphDataSource {
|
|
|
195
242
|
overrideContents?: string;
|
|
196
243
|
overrideGitIgnored?: boolean;
|
|
197
244
|
});
|
|
198
|
-
|
|
245
|
+
_finishInit(): Promise<void>;
|
|
199
246
|
abstract _parseContents(): Promise<void>;
|
|
200
247
|
}
|
|
201
248
|
declare class DotEnvFileDataSource extends FileBasedDataSource {
|
|
@@ -206,33 +253,6 @@ declare class DotEnvFileDataSource extends FileBasedDataSource {
|
|
|
206
253
|
_parseContents(): Promise<void>;
|
|
207
254
|
}
|
|
208
255
|
|
|
209
|
-
type ResolvedValue = undefined | string | number | boolean | RegExp;
|
|
210
|
-
type ResolverFunctionArgs = Array<Resolver | Record<string, Resolver>>;
|
|
211
|
-
declare abstract class Resolver {
|
|
212
|
-
readonly fnArgs: ResolverFunctionArgs;
|
|
213
|
-
static fnName?: string;
|
|
214
|
-
constructor(fnArgs: ResolverFunctionArgs);
|
|
215
|
-
abstract label: string;
|
|
216
|
-
abstract icon: string;
|
|
217
|
-
inferredType?: string;
|
|
218
|
-
_schemaErrors: Array<SchemaError>;
|
|
219
|
-
private _depsObj;
|
|
220
|
-
get childResolvers(): Array<Resolver>;
|
|
221
|
-
get schemaErrors(): Array<SchemaError>;
|
|
222
|
-
get depsObj(): Record<string, boolean>;
|
|
223
|
-
get deps(): string[];
|
|
224
|
-
protected abstract _process(ctx?: any): Promise<void | (() => void)>;
|
|
225
|
-
private configItem?;
|
|
226
|
-
process(configItem: ConfigItem): Promise<void>;
|
|
227
|
-
protected addDep(key: string): void;
|
|
228
|
-
protected abstract _resolve(): Promise<ResolvedValue>;
|
|
229
|
-
resolve(): Promise<ResolvedValue>;
|
|
230
|
-
protected getDepValue(key: string): ResolvedValue;
|
|
231
|
-
}
|
|
232
|
-
type ResolverChildClass<ChildClass extends Resolver = Resolver> = ({
|
|
233
|
-
new (...args: Array<any>): ChildClass;
|
|
234
|
-
} & typeof Resolver);
|
|
235
|
-
|
|
236
256
|
type ConfigItemDef = {
|
|
237
257
|
description?: string;
|
|
238
258
|
resolver?: Resolver;
|
|
@@ -247,8 +267,10 @@ declare class ConfigItem {
|
|
|
247
267
|
constructor(_envGraph: EnvGraph, _key: string);
|
|
248
268
|
get envGraph(): EnvGraph;
|
|
249
269
|
get key(): string;
|
|
250
|
-
|
|
251
|
-
|
|
270
|
+
/**
|
|
271
|
+
* fetch ordered list of definitions for this item, by following up sorted data sources list
|
|
272
|
+
*/
|
|
273
|
+
get defs(): ConfigItemDefAndSource[];
|
|
252
274
|
get description(): string | undefined;
|
|
253
275
|
get icon(): string | undefined;
|
|
254
276
|
get docsLinks(): {
|
|
@@ -263,6 +285,11 @@ declare class ConfigItem {
|
|
|
263
285
|
schemaErrors: Array<SchemaError>;
|
|
264
286
|
get resolverSchemaErrors(): SchemaError[];
|
|
265
287
|
process(): Promise<void>;
|
|
288
|
+
/**
|
|
289
|
+
* special early resolution helper
|
|
290
|
+
* currently used to resolve the envFlag before everything else has been loaded
|
|
291
|
+
* */
|
|
292
|
+
earlyResolve(): Promise<void>;
|
|
266
293
|
_isRequired: boolean;
|
|
267
294
|
/**
|
|
268
295
|
* need to track if required-ness is dynamic, e.g. based on current env
|
|
@@ -285,7 +312,7 @@ declare class ConfigItem {
|
|
|
285
312
|
coercionError?: CoercionError;
|
|
286
313
|
validationErrors?: Array<ValidationError>;
|
|
287
314
|
get isCoerced(): boolean;
|
|
288
|
-
resolve(): Promise<void>;
|
|
315
|
+
resolve(reset?: boolean): Promise<void>;
|
|
289
316
|
get isValid(): boolean;
|
|
290
317
|
}
|
|
291
318
|
|
|
@@ -311,22 +338,25 @@ type SerializedEnvGraph = {
|
|
|
311
338
|
/** container of the overall graph and current resolution attempt / values */
|
|
312
339
|
declare class EnvGraph {
|
|
313
340
|
basePath?: string;
|
|
314
|
-
/**
|
|
315
|
-
|
|
316
|
-
|
|
341
|
+
/** root data source (.env.schema) */
|
|
342
|
+
rootDataSource?: EnvGraphDataSource;
|
|
343
|
+
/** place to store process.env overrides */
|
|
344
|
+
overrideValues: Record<string, string | undefined>;
|
|
317
345
|
/** config item key of env flag (toggles env-specific data sources enabled) */
|
|
318
346
|
envFlagKey?: string;
|
|
319
|
-
/**
|
|
320
|
-
|
|
347
|
+
/** graph-level fallback value for environment flag */
|
|
348
|
+
envFlagFallback?: string;
|
|
321
349
|
configSchema: Record<string, ConfigItem>;
|
|
322
|
-
|
|
323
|
-
|
|
350
|
+
/** virtual imports for testing */
|
|
351
|
+
virtualImports?: Record<string, string>;
|
|
352
|
+
setVirtualImports(basePath: string, files: Record<string, string>): void;
|
|
324
353
|
get sortedDataSources(): EnvGraphDataSource[];
|
|
325
354
|
registeredResolverFunctions: Record<string, ResolverChildClass>;
|
|
326
355
|
registerResolver(resolverClass: ResolverChildClass): void;
|
|
327
356
|
dataTypesRegistry: Record<string, EnvGraphDataTypeFactory>;
|
|
328
357
|
registerDataType(factory: EnvGraphDataTypeFactory): void;
|
|
329
358
|
constructor();
|
|
359
|
+
setRootDataSource(source: EnvGraphDataSource): Promise<void>;
|
|
330
360
|
finishLoad(): Promise<void>;
|
|
331
361
|
get graphAdjacencyList(): GraphAdjacencyList;
|
|
332
362
|
resolveEnvValues(): Promise<void>;
|
|
@@ -335,6 +365,7 @@ declare class EnvGraph {
|
|
|
335
365
|
get isInvalid(): boolean;
|
|
336
366
|
generateTypes(lang: string, outputPath: string): Promise<void>;
|
|
337
367
|
getRootDecoratorValue(decoratorName: string): any;
|
|
368
|
+
getRootDecorators(decoratorName: string): [EnvGraphDataSource, ParsedEnvSpecDecorator[]][];
|
|
338
369
|
}
|
|
339
370
|
|
|
340
371
|
declare function resetRedactionMap(graph: SerializedEnvGraph): void;
|
|
@@ -361,4 +392,4 @@ interface TypedEnvSchema {
|
|
|
361
392
|
}
|
|
362
393
|
declare const ENV: TypedEnvSchema;
|
|
363
394
|
|
|
364
|
-
export { ConfigLoadError as C, DotEnvFileDataSource as D, EnvGraph as E,
|
|
395
|
+
export { ConfigLoadError as C, DotEnvFileDataSource as D, EnvGraph as E, ResolutionError as R, SchemaError as S, type TypedEnvSchema as T, ValidationError as V, CoercionError as a, type SerializedEnvGraph as b, ENV as c, redactSensitiveConfig as d, revealSensitiveConfig as e, initVarlockEnv as i, resetRedactionMap as r, scanForLeaks as s, varlockSettings as v };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as EnvGraph, D as DotEnvFileDataSource,
|
|
2
|
-
export { c as ENV, b as SerializedEnvGraph } from './env-
|
|
1
|
+
import { E as EnvGraph, D as DotEnvFileDataSource, C as ConfigLoadError, S as SchemaError, V as ValidationError, a as CoercionError, R as ResolutionError, i as initVarlockEnv } from './env-B_LAqK4w.js';
|
|
2
|
+
export { c as ENV, b as SerializedEnvGraph } from './env-B_LAqK4w.js';
|
|
3
3
|
export { patchGlobalConsole } from './runtime/patch-console.js';
|
|
4
4
|
export { patchGlobalServerResponse } from './runtime/patch-server-response.js';
|
|
5
5
|
export { patchGlobalResponse } from './runtime/patch-response.js';
|
|
@@ -31,7 +31,6 @@ declare function getBuildTimeReplacements(opts?: {
|
|
|
31
31
|
declare const internal: {
|
|
32
32
|
EnvGraph: typeof EnvGraph;
|
|
33
33
|
DotEnvFileDataSource: typeof DotEnvFileDataSource;
|
|
34
|
-
ProcessEnvDataSource: typeof ProcessEnvDataSource;
|
|
35
34
|
loadEnvGraph: typeof loadEnvGraph;
|
|
36
35
|
ConfigLoadError: typeof ConfigLoadError;
|
|
37
36
|
SchemaError: typeof SchemaError;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { checkForConfigErrors } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
import { ResolutionError, CoercionError, ValidationError, SchemaError, ConfigLoadError, loadEnvGraph, ProcessEnvDataSource, DotEnvFileDataSource, EnvGraph } from './chunk-NXAXPMO5.js';
|
|
1
|
+
import { loadVarlockEnvGraph, checkForConfigErrors } from './chunk-T3I4UFB2.js';
|
|
2
|
+
import { ResolutionError, CoercionError, ValidationError, SchemaError, ConfigLoadError, loadEnvGraph, DotEnvFileDataSource, EnvGraph } from './chunk-MV5ZAKN7.js';
|
|
4
3
|
export { patchGlobalConsole } from './chunk-UPKIHHPE.js';
|
|
5
4
|
export { patchGlobalResponse } from './chunk-OM3JCP4E.js';
|
|
6
5
|
export { patchGlobalServerResponse } from './chunk-POJECYSY.js';
|
|
@@ -35,7 +34,6 @@ var internal = {
|
|
|
35
34
|
// Core classes
|
|
36
35
|
EnvGraph,
|
|
37
36
|
DotEnvFileDataSource,
|
|
38
|
-
ProcessEnvDataSource,
|
|
39
37
|
// Loader function
|
|
40
38
|
loadEnvGraph,
|
|
41
39
|
// Error classes
|
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 type { SerializedEnvGraph };\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-LXJMZMID.js';
|
|
2
|
+
import './chunk-5EBVEGDW.js';
|
|
3
|
+
import './chunk-33ROL4J5.js';
|
|
4
|
+
import './chunk-MV5ZAKN7.js';
|
|
5
|
+
import './chunk-FGMXIEFA.js';
|
|
6
|
+
import './chunk-XN24GZXQ.js';
|
|
7
|
+
//# sourceMappingURL=init.command-CTO64XBL.js.map
|
|
8
|
+
//# sourceMappingURL=init.command-CTO64XBL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"init.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"init.command-CTO64XBL.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-AS4LIW7A.js';
|
|
2
|
+
import './chunk-33ROL4J5.js';
|
|
3
|
+
import './chunk-T3I4UFB2.js';
|
|
4
|
+
import './chunk-MV5ZAKN7.js';
|
|
5
|
+
import './chunk-FGMXIEFA.js';
|
|
6
|
+
import './chunk-XN24GZXQ.js';
|
|
7
|
+
//# sourceMappingURL=load.command-EWIJDF55.js.map
|
|
8
|
+
//# sourceMappingURL=load.command-EWIJDF55.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"load.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"load.command-EWIJDF55.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-UA3DMAAQ.js';
|
|
2
|
+
import './chunk-5EBVEGDW.js';
|
|
3
|
+
import './chunk-33ROL4J5.js';
|
|
4
|
+
import './chunk-MV5ZAKN7.js';
|
|
5
|
+
import './chunk-FGMXIEFA.js';
|
|
6
|
+
import './chunk-XN24GZXQ.js';
|
|
7
|
+
//# sourceMappingURL=login.command-UZJJ4XTV.js.map
|
|
8
|
+
//# sourceMappingURL=login.command-UZJJ4XTV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"login.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"login.command-UZJJ4XTV.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-IML4QZHB.js';
|
|
2
|
+
import './chunk-33ROL4J5.js';
|
|
3
|
+
import './chunk-T3I4UFB2.js';
|
|
4
|
+
import './chunk-MV5ZAKN7.js';
|
|
5
|
+
import './chunk-FGMXIEFA.js';
|
|
6
|
+
import './chunk-XN24GZXQ.js';
|
|
7
|
+
//# sourceMappingURL=run.command-T44BAZ7X.js.map
|
|
8
|
+
//# sourceMappingURL=run.command-T44BAZ7X.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"run.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"run.command-T44BAZ7X.js"}
|
package/dist/runtime/env.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { c as ENV, T as TypedEnvSchema, i as initVarlockEnv, d as redactSensitiveConfig, r as resetRedactionMap, e as revealSensitiveConfig, s as scanForLeaks, v as varlockSettings } from '../env-
|
|
1
|
+
export { c as ENV, T as TypedEnvSchema, i as initVarlockEnv, d as redactSensitiveConfig, r as resetRedactionMap, e as revealSensitiveConfig, s as scanForLeaks, v as varlockSettings } from '../env-B_LAqK4w.js';
|
|
2
2
|
import '@env-spec/parser';
|
|
3
3
|
import '@env-spec/utils/type-utils';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { commandFn, commandSpec } from './chunk-MVYXWTAV.js';
|
|
2
|
+
import './chunk-5EBVEGDW.js';
|
|
3
|
+
import './chunk-33ROL4J5.js';
|
|
4
|
+
import './chunk-MV5ZAKN7.js';
|
|
5
|
+
import './chunk-FGMXIEFA.js';
|
|
6
|
+
import './chunk-XN24GZXQ.js';
|
|
7
|
+
//# sourceMappingURL=telemetry.command-2C3MQA4K.js.map
|
|
8
|
+
//# sourceMappingURL=telemetry.command-2C3MQA4K.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"telemetry.command-2C3MQA4K.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "varlock",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"debug": "^4.4.1",
|
|
69
69
|
"execa": "^9.6.0",
|
|
70
70
|
"which": "^5.0.0",
|
|
71
|
-
"@env-spec/parser": "^0.0.
|
|
71
|
+
"@env-spec/parser": "^0.0.5"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@clack/core": "^0.5.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/helpers/error-checks.ts"],"names":[],"mappings":"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","file":"chunk-23GW4X5J.js","sourcesContent":["import ansis from 'ansis';\nimport { EnvGraph, ConfigItem, EnvSourceParseError } from '../../../env-graph';\nimport _ from '@env-spec/utils/my-dash';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport { gracefulExit } from 'exit-hook';\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.dataSources) {\n // do we care about loading errors from disabled sources?\n // if (source.disabled) continue;\n\n // console.log(source);\n\n // TODO: use a formatting helper to show the error - which will include location/stack/etc appropriately\n if (source.loadingError) {\n console.log(`🚨 Error encountered while loading ${source.label}`);\n console.log(source.loadingError.message);\n\n // Check if the error has a location property (like EnvSourceParseError)\n if ('location' in source.loadingError) {\n console.log((source.loadingError as EnvSourceParseError).location);\n\n const errLoc = (source.loadingError as EnvSourceParseError).location;\n\n const errPreview = [\n errLoc.lineStr,\n `${ansis.gray('-'.repeat(errLoc.colNumber - 1))}${ansis.red('^')}`,\n ].join('\\n');\n\n console.log('Error parsing .env file');\n console.log(` ${errLoc.path}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.log(errPreview);\n }\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\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 const failingItems = _.filter(_.values(envGraph.configSchema), (item: ConfigItem) => item.validationState === 'error');\n\n // TODO: use service.isValid?\n if (failingItems.length > 0) {\n console.log(`\\n🚨 🚨 🚨 ${ansis.bold.underline('Configuration is currently invalid ')} 🚨 🚨 🚨\\n`);\n console.log('Invalid items:\\n');\n\n _.each(failingItems, (item: ConfigItem) => {\n console.log(getItemSummary(item));\n console.log();\n });\n if (opts?.showAll) {\n console.log();\n console.log(joinAndCompact([\n 'Valid items:',\n ansis.italic.gray('(remove `--show-all` flag to hide)'),\n ]));\n console.log();\n const validItems = _.filter(_.values(envGraph.configSchema), (i: ConfigItem) => !!i.isValid);\n _.each(validItems, (item: ConfigItem) => {\n console.log(getItemSummary(item));\n });\n }\n\n throw new InvalidEnvError();\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/run.command.ts"],"names":[],"mappings":"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","file":"chunk-2GR4YQFJ.js","sourcesContent":["import { execa, type ResultPromise } from 'execa';\nimport which from 'which';\nimport { define } from 'gunshi';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { checkForConfigErrors, checkForSchemaErrors } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { gracefulExit } from 'exit-hook';\n\n\nexport const commandSpec = define({\n name: 'run',\n description: 'Run a command with your environment variables injected',\n args: {\n // watch: {\n // type: 'boolean',\n // short: 'w',\n // description: 'Watch mode',\n // },\n },\n});\n\nlet commandProcess: ResultPromise | undefined;\nlet childCommandKilledFromRestart = false;\nconst isWatchModeRestart = false; // TODO: re-enable watch mode\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // if \"--\" is present, split the args into our command and the rest, which will be another external command\n const argv = process.argv.slice(2);\n let restCommandArgs: Array<string> = [];\n if (argv.includes('--')) {\n const doubleDashIndex = argv.indexOf('--');\n restCommandArgs = argv.slice(doubleDashIndex + 1);\n } else {\n throw new Error('No command to run! Your command should look like `varlock run -- <your-command>`');\n }\n const commandToRunAsArgs = restCommandArgs;\n const commandToRunStr = restCommandArgs.join(' ');\n\n const rawCommand = commandToRunAsArgs[0];\n const commandArgsOnly = commandToRunAsArgs.slice(1);\n const pathAwareCommand = which.sync(rawCommand, { nothrow: true });\n\n // const isWatchEnabled = ctx.values.watch;\n const isWatchEnabled = false;\n\n // console.log('running command', pathAwareCommand || rawCommand, commandArgsOnly);\n\n\n const envGraph = await loadVarlockEnvGraph();\n checkForSchemaErrors(envGraph);\n await envGraph.resolveEnvValues();\n checkForConfigErrors(envGraph);\n\n // will fail above if there are any errors\n\n const resolvedEnv = envGraph.getResolvedEnvObject();\n // console.log(resolvedEnv);\n\n // needs more thought here\n const fullInjectedEnv = {\n ...process.env,\n ...resolvedEnv,\n __VARLOCK_RUN: '1', // flag for a child process to detect it is runnign via `varlock run`\n __VARLOCK_ENV: JSON.stringify(envGraph.getSerializedGraph()),\n };\n\n commandProcess = execa(pathAwareCommand || rawCommand, commandArgsOnly, {\n stdio: 'inherit',\n env: fullInjectedEnv,\n });\n // console.log('PARENT PID = ', process.pid);\n // console.log('CHILD PID = ', commandProcess.pid);\n\n // if first run, we need to attach some extra exit handling\n if (!isWatchModeRestart) {\n // try to make sure we shut down cleanly and kill the child process\n process.on('exit', (_code: any, _signal: any) => {\n // if (childCommandKilledFromRestart) {\n // childCommandKilledFromRestart = false;\n // return;\n // }\n // console.log('exit!', code, signal);\n commandProcess?.kill(9);\n });\n\n ['SIGTERM', 'SIGINT'].forEach((signal) => {\n process.on(signal, () => {\n // console.log('SIGNAL = ', signal);\n commandProcess?.kill(9);\n gracefulExit(1);\n });\n });\n // TODO: handle other signals?\n }\n\n\n let exitCode: any; // TODO: fix this any\n try {\n const commandResult = await commandProcess;\n exitCode = commandResult.exitCode;\n } catch (error) {\n // console.log('child command error!', error);\n if ((error as any).signal === 'SIGINT' && childCommandKilledFromRestart) {\n // console.log('child command failed due to being killed form restart');\n childCommandKilledFromRestart = false;\n return;\n }\n\n // console.log('child command result error', error);\n if ((error as any).signal === 'SIGINT' || (error as any).signal === 'SIGKILL') {\n gracefulExit(1);\n } else {\n console.log((error as Error).message);\n console.log(`command [${commandToRunStr}] failed`);\n console.log('try running the same command without dmno');\n console.log('if you get a different result, dmno may be the problem...');\n // console.log(`Please report issue here: <${REPORT_ISSUE_LINK}>`);\n }\n exitCode = (error as any).exitCode || 1;\n }\n\n if (isWatchEnabled) {\n if (!childCommandKilledFromRestart) {\n if (exitCode === 0) {\n console.log('\\n✅ command completed successfully');\n } else {\n console.log(`\\n💥 command failed - exit code = ${exitCode}`);\n }\n }\n }\n\n if (!isWatchEnabled) {\n return gracefulExit(exitCode);\n } else {\n console.log('... watching for changes ...');\n }\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/helpers/exit-error.ts","../../utils/src/fs-utils.ts","../src/cli/helpers/js-package-manager-utils.ts","../src/cli/helpers/pretty-format.ts"],"names":[],"mappings":"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","file":"chunk-52FLZJCQ.js","sourcesContent":["import ansis from 'ansis';\nimport _ from '@env-spec/utils/my-dash';\nimport { joinAndCompact } from '../../lib/formatting';\n\nexport class CliExitError extends Error {\n constructor(\n message: string,\n private more?: {\n details?: string | Array<string>,\n suggestion?: string | Array<string>,\n /** always triggers a full exit, even in watch mode - useful if problem is irrecoverable */\n forceExit?: boolean,\n },\n ) {\n super(message);\n }\n\n get forceExit() { return !!this.more?.forceExit; }\n\n getFormattedOutput() {\n let msg = `\\n💥 ${ansis.red(this.message)} 💥\\n`;\n\n if (this.more?.details) {\n msg += joinAndCompact(_.castArray(this.more?.details), '\\n');\n }\n\n if (this.more?.suggestion) {\n msg += joinAndCompact(_.castArray(this.more?.suggestion), '\\n');\n }\n\n msg += '\\n';\n return msg;\n }\n}\n","import { accessSync } from 'node:fs';\nimport { access } from 'node:fs/promises';\n\nexport async function pathExists(p: string) {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function pathExistsSync(p:string) {\n try {\n accessSync(p);\n return true;\n } catch {\n return false;\n }\n}\n","import path from 'node:path';\nimport fs, { existsSync } from 'node:fs';\nimport { pathExistsSync } from '@env-spec/utils/fs-utils';\nimport Debug from 'debug';\n\nimport { CliExitError } from './exit-error';\nimport { execSync } from 'node:child_process';\n\nconst debug = Debug('varlock:js-package-manager-utils');\n\nexport type JsPackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun' | 'deno';\n\nexport type JsPackageManagerMeta = {\n name: JsPackageManager;\n lockfile: string;\n add: string;\n exec: string;\n dlx: string;\n};\n\nexport const JS_PACKAGE_MANAGERS: Record<JsPackageManager, JsPackageManagerMeta> = Object.freeze({\n npm: {\n name: 'npm',\n lockfile: 'package-lock.json',\n add: 'npm install', // add also works\n exec: 'npm exec --',\n dlx: 'npx',\n },\n pnpm: {\n name: 'pnpm',\n lockfile: 'pnpm-lock.yaml',\n add: 'pnpm add',\n exec: 'pnpm exec',\n dlx: 'pnpm dlx',\n },\n yarn: {\n name: 'yarn',\n lockfile: 'yarn.lock',\n add: 'yarn add',\n exec: 'yarn exec --',\n dlx: 'yarn dlx',\n },\n bun: {\n name: 'bun',\n lockfile: 'bun.lockb',\n add: 'bun add',\n exec: 'bun run',\n dlx: 'bunx',\n },\n deno: { //! deno not fully supported yet\n name: 'deno',\n lockfile: 'deno.lock',\n add: 'deno add',\n // TODO: don't think these are quite right...\n exec: 'deno run',\n dlx: 'deno run',\n },\n});\n\n/**\n * detect js package manager\n *\n * currently go up the folder tree looking for lockfiles (ex: package-lock.json, pnpm-lock.yaml)\n * if nothing found, we'll look at process.env.npm_config_user_agent\n * */\nexport function detectJsPackageManager(opts?: {\n cwd?: string,\n workspaceRootPath?: string,\n exitIfNotFound?: boolean,\n}) {\n debug('Detecting js package manager');\n let cwd = opts?.cwd || process.cwd();\n do {\n debug(`> scanning ${cwd}`);\n let pm: JsPackageManager;\n let detectedPm: JsPackageManager | undefined;\n for (pm in JS_PACKAGE_MANAGERS) {\n const lockFilePath = path.join(\n cwd,\n JS_PACKAGE_MANAGERS[pm].lockfile,\n );\n\n if (pathExistsSync(lockFilePath)) {\n // if we find 2 lockfiles at the same level, we throw an error\n if (detectedPm) {\n throw new CliExitError('Found multiple js package manager lockfiles', {\n details: `${JS_PACKAGE_MANAGERS[pm].lockfile} and ${JS_PACKAGE_MANAGERS[detectedPm].lockfile}`,\n forceExit: true,\n });\n }\n debug(`> found ${JS_PACKAGE_MANAGERS[pm].lockfile}`);\n detectedPm = pm;\n }\n }\n if (detectedPm) return JS_PACKAGE_MANAGERS[detectedPm];\n\n cwd = path.join(cwd, '..');\n if (opts?.workspaceRootPath) {\n if (opts.workspaceRootPath === cwd) {\n debug('> found workspace root');\n break;\n }\n } else {\n // if we don't have a workspace root path, we'll break if we hit the git repo root\n if (pathExistsSync(path.join(cwd, '.git'))) {\n debug('> found git root');\n break;\n }\n }\n } while (cwd && cwd !== '.' && cwd !== '/');\n\n // if we did not find a lockfile, we'll look at env vars for other hints\n if (process.env.npm_config_user_agent) {\n const pmFromAgent = process.env.npm_config_user_agent.split('/')[0];\n if (Object.keys(JS_PACKAGE_MANAGERS).includes(pmFromAgent)) {\n debug(`> found ${pmFromAgent} using npm_config_user_agent`);\n return JS_PACKAGE_MANAGERS[pmFromAgent as JsPackageManager];\n }\n }\n\n if (opts?.exitIfNotFound) {\n // show some hopefully useful error messaging if we hit the root folder without finding anything\n throw new CliExitError('Unable to find detect your JavaScript package manager!', {\n suggestion: 'We look for lock files (ex: package-lock.json) so you may just need to run a dependency install (ie `npm install`)',\n forceExit: true,\n });\n }\n}\n\n\n\n\nexport function installJsDependency(opts: {\n packageName: string,\n packageManager: JsPackageManager,\n packagePath?: string,\n isMonoRepoRoot?: boolean,\n}) {\n const packageJsonPath = path.join(opts.packagePath || process.cwd(), 'package.json');\n\n // for now, we'll just bail if we dont see a package.json\n if (!existsSync(packageJsonPath)) return false;\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n // bail if already installed\n if (packageJson.dependencies?.varlock) return false;\n\n // TODO: might want to check first if it's already installed?\n execSync([\n // move to the correct directory if needed\n opts.packagePath && `cd ${opts.packagePath} &&`,\n // `add` works in all of them\n `${opts.packageManager} add ${opts.packageName}`,\n // tells pnpm to either install in the workspace root explicitly\n // or to not check if we are the in the root\n opts.packageManager === 'pnpm' && (opts.isMonoRepoRoot ? '-w' : '--ignore-workspace-root-check'),\n ].filter(Boolean).join(' '));\n\n return true;\n}\n\n","import ansis from 'ansis';\nimport { detectJsPackageManager, JsPackageManagerMeta } from './js-package-manager-utils';\n\n\nexport const fmt = {\n decorator: (s: string) => ansis.magenta(s),\n filePath: (s: string) => `📂 ${ansis.cyan.italic(s)}`,\n fileName: (s: string) => `${ansis.cyan.italic(s)}`,\n command: (s: string, opts?: { jsPackageManager?: JsPackageManagerMeta | true }) => {\n let jsPackageManager: JsPackageManagerMeta | undefined;\n if (opts?.jsPackageManager === true) {\n jsPackageManager = detectJsPackageManager();\n } else if (opts?.jsPackageManager) {\n jsPackageManager = opts.jsPackageManager;\n }\n if (jsPackageManager) {\n s = `${jsPackageManager.exec} ${s}`;\n }\n return ansis.green.italic(s);\n },\n packageName: (s: string) => ansis.green.italic(s),\n};\n\nexport const logLines = (lines: Array<string | false | undefined>) => {\n for (const line of lines) {\n // skip false, null, undefined, but not empty strings\n if (!line && line !== '') continue;\n console.log(line);\n }\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":";;;;;;;AAQO,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,MAAA;AAAA,EACN,WAAA,EAAa,iDAAA;AAAA,EACb,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,OAAA,EAAS,CAAC,QAAA,EAAU,MAAA,EAAQ,OAAO,WAAW,CAAA;AAAA,MAC9C,WAAA,EAAa,kBAAA;AAAA,MACb,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa;AAAA,KACf;AAAA,IACA,GAAA,EAAK;AAAA,MACH,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,EAAa;AAAA;AACf;AAEJ,CAAC;AAGM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAChF,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,OAAA,KAAY,GAAA,CAAI,MAAA;AAE5C,EAAA,MAAM,QAAA,GAAW,MAAM,mBAAA,CAAoB;AAAA,IACzC,kBAAA,EAAoB,IAAI,MAAA,CAAO;AAAA,GAChC,CAAA;AACD,EAAA,oBAAA,CAAqB,QAAQ,CAAA;AAG7B,EAAA,IAAI,QAAA,CAAS,gBAAA,EAAkB,UAAA,CAAW,aAAA,EAAe;AAEvD,IAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,gBAAA,EAAkB,UAAA,CAAW,cAAc,UAAA,EAAY,gBAAA;AACxF,IAAA,IAAI,CAAC,eAAA,CAAE,aAAA,CAAc,eAAe,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,IAC1E;AACA,IAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,EAAM,MAAM,IAAI,MAAM,sCAAsC,CAAA;AACjF,IAAA,IAAI,eAAA,CAAgB,SAAS,IAAA,EAAM,MAAM,IAAI,KAAA,CAAM,CAAA,uCAAA,EAA0C,eAAA,CAAgB,IAAI,CAAA,CAAE,CAAA;AACnH,IAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,EAAM,MAAM,IAAI,MAAM,sCAAsC,CAAA;AACjF,IAAA,IAAI,CAAC,gBAAE,QAAA,CAAS,eAAA,CAAgB,IAAI,CAAA,EAAG,MAAM,IAAI,KAAA,CAAM,8CAA8C,CAAA;AACrG,IAAA,MAAM,QAAA,CAAS,aAAA,CAAc,eAAA,CAAgB,IAAA,EAAM,gBAAgB,IAAI,CAAA;AAAA,EACzE;AAEA,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,oBAAA,CAAqB,QAAA,EAAU,EAAE,OAAA,EAAS,CAAA;AAE1C,EAAA,IAAI,WAAW,QAAA,EAAU;AACvB,IAAA,KAAA,MAAW,OAAA,IAAW,SAAS,YAAA,EAAc;AAC3C,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,YAAA,CAAa,OAAO,CAAA;AAC1C,MAAA,OAAA,CAAQ,GAAA,CAAI,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,MAAA,IAAW,WAAW,MAAA,EAAQ;AAC5B,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,SAAA,CAAU,QAAA,CAAS,sBAAqB,EAAG,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,EACtE,CAAA,MAAA,IAAW,WAAW,WAAA,EAAa;AACjC,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,SAAA,CAAU,QAAA,CAAS,oBAAmB,EAAG,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,EACpE,CAAA,MAAA,IAAW,WAAW,KAAA,EAAO;AAC3B,IAAA,MAAM,WAAA,GAAc,SAAS,oBAAA,EAAqB;AAClD,IAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,MAAA,MAAM,KAAA,GAAQ,YAAY,GAAG,CAAA;AAC7B,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,QAAA,GAAW,EAAA;AAAA,MACb,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,QAAA,QAAA,GAAW,CAAA,CAAA,EAAI,MAAM,UAAA,CAAW,GAAA,EAAK,KAAK,CAAA,CAAE,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,MACrE,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,CAAA;AAAA,EAC7C;AAIF,CAAA,EAtDmE,WAAA","file":"chunk-IBMSAOL6.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';\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 '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 @envFlag in the schema if present',\n },\n },\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { format, 'show-all': showAll } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n });\n checkForSchemaErrors(envGraph);\n\n // TODO: move into a more general post-load hook system\n if (envGraph.schemaDataSource?.decorators.generateTypes) {\n // TODO: much of this logic should move to the definition of the decorator itself\n const typeGenSettings = envGraph.schemaDataSource?.decorators.generateTypes.bareFnArgs?.simplifiedValues;\n if (!_.isPlainObject(typeGenSettings)) {\n throw new Error('@generateTypes - must be a fn call with key/value args');\n }\n if (!typeGenSettings.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.lang}`);\n if (!typeGenSettings.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.path)) throw new Error('@generateTypes - `path` arg must be a string');\n await envGraph.generateTypes(typeGenSettings.lang, typeGenSettings.path);\n }\n\n await envGraph.resolveEnvValues();\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 console.log(JSON.stringify(envGraph.getSerializedGraph(), null, 2));\n } else if (format === 'env') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\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"]}
|