@teambit/envs 1.0.494 → 1.0.495
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/artifacts/__bit_junit.xml +1 -1
- package/artifacts/preview/teambit_envs_envs-preview.js +1 -1
- package/artifacts/schema.json +2137 -1026
- package/dist/env-jsonc.detector.d.ts +5 -0
- package/dist/env-jsonc.detector.js +26 -0
- package/dist/env-jsonc.detector.js.map +1 -0
- package/dist/environments.main.runtime.d.ts +23 -6
- package/dist/environments.main.runtime.js +65 -54
- package/dist/environments.main.runtime.js.map +1 -1
- package/dist/{preview-1734260112091.js → preview-1734279612846.js} +2 -2
- package/package.json +27 -31
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EnvJsoncDetector = void 0;
|
|
7
|
+
function _commentJson() {
|
|
8
|
+
const data = require("comment-json");
|
|
9
|
+
_commentJson = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
class EnvJsoncDetector {
|
|
15
|
+
isSupported(context) {
|
|
16
|
+
return context.filename.endsWith('env.jsonc');
|
|
17
|
+
}
|
|
18
|
+
detect(source) {
|
|
19
|
+
const parsed = (0, _commentJson().parse)(source);
|
|
20
|
+
if (!parsed.extends) return [];
|
|
21
|
+
return [parsed.extends];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.EnvJsoncDetector = EnvJsoncDetector;
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=env-jsonc.detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_commentJson","data","require","EnvJsoncDetector","isSupported","context","filename","endsWith","detect","source","parsed","parse","extends","exports"],"sources":["env-jsonc.detector.ts"],"sourcesContent":["import { parse } from 'comment-json';\nimport { DependencyDetector, FileContext } from '@teambit/dependency-resolver';\n\nexport class EnvJsoncDetector implements DependencyDetector {\n isSupported(context: FileContext): boolean {\n return context.filename.endsWith('env.jsonc');\n }\n\n detect(source: string): string[] {\n const parsed = parse(source);\n if (!parsed.extends) return [];\n return [parsed.extends];\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,aAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,YAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAME,gBAAgB,CAA+B;EAC1DC,WAAWA,CAACC,OAAoB,EAAW;IACzC,OAAOA,OAAO,CAACC,QAAQ,CAACC,QAAQ,CAAC,WAAW,CAAC;EAC/C;EAEAC,MAAMA,CAACC,MAAc,EAAY;IAC/B,MAAMC,MAAM,GAAG,IAAAC,oBAAK,EAACF,MAAM,CAAC;IAC5B,IAAI,CAACC,MAAM,CAACE,OAAO,EAAE,OAAO,EAAE;IAC9B,OAAO,CAACF,MAAM,CAACE,OAAO,CAAC;EACzB;AACF;AAACC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Dependency as LegacyDependency } from '@teambit/legacy.consumer-component';
|
|
1
2
|
import { SourceFile } from '@teambit/component.sources';
|
|
2
3
|
import { CLIMain } from '@teambit/cli';
|
|
3
4
|
import { Component, ComponentMain } from '@teambit/component';
|
|
@@ -16,14 +17,21 @@ import { Runtime } from './runtime';
|
|
|
16
17
|
import { EnvDefinition } from './env-definition';
|
|
17
18
|
import { EnvServiceList } from './env-service-list';
|
|
18
19
|
import { EnvPlugin } from './env.plugin';
|
|
20
|
+
import { EnvJsoncDetector } from './env-jsonc.detector';
|
|
19
21
|
export type EnvJsonc = {
|
|
20
22
|
extends?: string;
|
|
21
23
|
policy?: EnvPolicyConfigObject;
|
|
22
24
|
patterns?: EnvJsoncPatterns;
|
|
23
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* The resolved env jsonc is the env jsonc after it was resolved from all the parent envs
|
|
28
|
+
*/
|
|
29
|
+
export type ResolvedEnvJsonc = Omit<EnvJsonc, 'extends'>;
|
|
24
30
|
export type EnvJsoncMergeCustomizer = (parentObj: EnvJsonc, childObj: EnvJsonc) => Partial<EnvJsonc>;
|
|
31
|
+
export type EnvJsoncResolver = (parentId: string, envExtendsDeps?: LegacyDependency[]) => Promise<ResolvedEnvJsonc>;
|
|
25
32
|
export type EnvsRegistry = SlotRegistry<Environment>;
|
|
26
33
|
export type EnvJsoncMergeCustomizerRegistry = SlotRegistry<EnvJsoncMergeCustomizer>;
|
|
34
|
+
export type EnvJsoncResolverRegistry = SlotRegistry<EnvJsoncResolver>;
|
|
27
35
|
export type EnvsConfig = {
|
|
28
36
|
env: string;
|
|
29
37
|
options: EnvOptions;
|
|
@@ -42,6 +50,7 @@ export type RegularCompDescriptor = {
|
|
|
42
50
|
description?: string;
|
|
43
51
|
};
|
|
44
52
|
export type EnvCompDescriptorProps = RegularCompDescriptor & {
|
|
53
|
+
resolvedEnvJsonc?: ResolvedEnvJsonc;
|
|
45
54
|
services?: {
|
|
46
55
|
env: {
|
|
47
56
|
id: string;
|
|
@@ -81,6 +90,7 @@ export declare class EnvsMain {
|
|
|
81
90
|
private loggerMain;
|
|
82
91
|
private workerMain;
|
|
83
92
|
private envJsoncMergeCustomizerSlot;
|
|
93
|
+
private envJsoncResolverSlot;
|
|
84
94
|
/**
|
|
85
95
|
* Envs that are failed to load
|
|
86
96
|
*/
|
|
@@ -114,7 +124,7 @@ export declare class EnvsMain {
|
|
|
114
124
|
/**
|
|
115
125
|
* slot for allowing extensions to register new environment.
|
|
116
126
|
*/
|
|
117
|
-
envSlot: EnvsRegistry, logger: Logger, servicesRegistry: ServicesRegistry, componentMain: ComponentMain, loggerMain: LoggerMain, workerMain: WorkerMain, envJsoncMergeCustomizerSlot: EnvJsoncMergeCustomizerRegistry);
|
|
127
|
+
envSlot: EnvsRegistry, logger: Logger, servicesRegistry: ServicesRegistry, componentMain: ComponentMain, loggerMain: LoggerMain, workerMain: WorkerMain, envJsoncMergeCustomizerSlot: EnvJsoncMergeCustomizerRegistry, envJsoncResolverSlot: EnvJsoncResolverRegistry);
|
|
118
128
|
/**
|
|
119
129
|
* creates a new runtime environments for a set of components.
|
|
120
130
|
*/
|
|
@@ -164,8 +174,10 @@ export declare class EnvsMain {
|
|
|
164
174
|
* function returns `undefined`.
|
|
165
175
|
*/
|
|
166
176
|
hasEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): boolean | undefined;
|
|
167
|
-
getEnvManifest(envComponent
|
|
168
|
-
|
|
177
|
+
getEnvManifest(envComponent: Component): ResolvedEnvJsonc | undefined;
|
|
178
|
+
getOrCalculateEnvManifest(component: Component, legacyFiles?: SourceFile[], envExtendsDeps?: LegacyDependency[]): Promise<ResolvedEnvJsonc | undefined>;
|
|
179
|
+
calculateEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[], envExtendsDeps?: LegacyDependency[]): Promise<EnvJsonc | undefined>;
|
|
180
|
+
recursivelyMergeWithParentManifest(object: EnvJsonc, envExtendsDeps?: LegacyDependency[]): Promise<EnvJsonc>;
|
|
169
181
|
mergeEnvManifests(parent: EnvJsonc, child: EnvJsonc): EnvJsonc;
|
|
170
182
|
hasEnvManifestById(envId: string, requesting: string): Promise<boolean | undefined>;
|
|
171
183
|
getEnvData(component: Component): Descriptor;
|
|
@@ -202,6 +214,7 @@ export declare class EnvsMain {
|
|
|
202
214
|
* This is safe to be used on onLoad as well
|
|
203
215
|
*/
|
|
204
216
|
getOrCalculateEnv(component: Component): EnvDefinition;
|
|
217
|
+
getOrCalculateEnvId(component: Component): Promise<ComponentID>;
|
|
205
218
|
/**
|
|
206
219
|
* get an environment Descriptor.
|
|
207
220
|
*/
|
|
@@ -245,6 +258,7 @@ export declare class EnvsMain {
|
|
|
245
258
|
getAllRegisteredEnvsIds(): string[];
|
|
246
259
|
getAllRegisteredEnvs(): Environment[];
|
|
247
260
|
getAllRegisteredEnvJsoncCustomizers(): EnvJsoncMergeCustomizer[];
|
|
261
|
+
getAllRegisteredEnvJsoncResolvers(): EnvJsoncResolver[];
|
|
248
262
|
getEnvPlugin(): EnvPlugin;
|
|
249
263
|
/**
|
|
250
264
|
* an env can be configured on a component in two ways:
|
|
@@ -322,12 +336,14 @@ export declare class EnvsMain {
|
|
|
322
336
|
* register an env.jsonc merge customizer.
|
|
323
337
|
*/
|
|
324
338
|
registerEnvJsoncMergeCustomizer(customizer: EnvJsoncMergeCustomizer): void;
|
|
339
|
+
registerEnvJsoncResolver(resolver: EnvJsoncResolver): void;
|
|
340
|
+
getEnvJsoncDetector(): EnvJsoncDetector;
|
|
325
341
|
addNonLoadedEnvAsComponentIssues(components: Component[]): Promise<void>;
|
|
326
342
|
private createRuntime;
|
|
327
343
|
private aggregateByDefs;
|
|
328
344
|
private getEnvAspectDef;
|
|
329
345
|
private throwForDuplicateComponents;
|
|
330
|
-
static slots: (((registerFn: () => string) => SlotRegistry<Environment>) | ((registerFn: () => string) => SlotRegistry<EnvService<any, {}, {}>>) | ((registerFn: () => string) => SlotRegistry<EnvJsoncMergeCustomizerRegistry>))[];
|
|
346
|
+
static slots: (((registerFn: () => string) => SlotRegistry<Environment>) | ((registerFn: () => string) => SlotRegistry<EnvService<any, {}, {}>>) | ((registerFn: () => string) => SlotRegistry<EnvJsoncMergeCustomizerRegistry>) | ((registerFn: () => string) => SlotRegistry<EnvJsoncResolverRegistry>))[];
|
|
331
347
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
332
348
|
static provider([graphql, loggerAspect, component, cli, worker, issues]: [
|
|
333
349
|
GraphqlMain,
|
|
@@ -336,10 +352,11 @@ export declare class EnvsMain {
|
|
|
336
352
|
CLIMain,
|
|
337
353
|
WorkerMain,
|
|
338
354
|
IssuesMain
|
|
339
|
-
], config: EnvsConfig, [envSlot, servicesRegistry, envJsoncMergeCustomizerSlot]: [
|
|
355
|
+
], config: EnvsConfig, [envSlot, servicesRegistry, envJsoncMergeCustomizerSlot, envJsoncResolverSlot]: [
|
|
340
356
|
EnvsRegistry,
|
|
341
357
|
ServicesRegistry,
|
|
342
|
-
EnvJsoncMergeCustomizerRegistry
|
|
358
|
+
EnvJsoncMergeCustomizerRegistry,
|
|
359
|
+
EnvJsoncResolverRegistry
|
|
343
360
|
], context: Harmony): Promise<EnvsMain>;
|
|
344
361
|
}
|
|
345
362
|
export {};
|
|
@@ -4,34 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.EnvsMain = exports.DEFAULT_ENV = void 0;
|
|
7
|
-
function _path() {
|
|
8
|
-
const data = require("path");
|
|
9
|
-
_path = function () {
|
|
10
|
-
return data;
|
|
11
|
-
};
|
|
12
|
-
return data;
|
|
13
|
-
}
|
|
14
|
-
function _findRoot() {
|
|
15
|
-
const data = _interopRequireDefault(require("find-root"));
|
|
16
|
-
_findRoot = function () {
|
|
17
|
-
return data;
|
|
18
|
-
};
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
function _toolboxModules() {
|
|
22
|
-
const data = require("@teambit/toolbox.modules.module-resolver");
|
|
23
|
-
_toolboxModules = function () {
|
|
24
|
-
return data;
|
|
25
|
-
};
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
28
|
-
function _fsExtra() {
|
|
29
|
-
const data = require("fs-extra");
|
|
30
|
-
_fsExtra = function () {
|
|
31
|
-
return data;
|
|
32
|
-
};
|
|
33
|
-
return data;
|
|
34
|
-
}
|
|
35
7
|
function _pLocate() {
|
|
36
8
|
const data = _interopRequireDefault(require("p-locate"));
|
|
37
9
|
_pLocate = function () {
|
|
@@ -200,12 +172,23 @@ function _env2() {
|
|
|
200
172
|
};
|
|
201
173
|
return data;
|
|
202
174
|
}
|
|
175
|
+
function _envJsonc() {
|
|
176
|
+
const data = require("./env-jsonc.detector");
|
|
177
|
+
_envJsonc = function () {
|
|
178
|
+
return data;
|
|
179
|
+
};
|
|
180
|
+
return data;
|
|
181
|
+
}
|
|
203
182
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
204
183
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
205
184
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
206
185
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
207
186
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
208
187
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
188
|
+
/**
|
|
189
|
+
* The resolved env jsonc is the env jsonc after it was resolved from all the parent envs
|
|
190
|
+
*/
|
|
191
|
+
|
|
209
192
|
const DEFAULT_ENV = exports.DEFAULT_ENV = 'teambit.harmony/node';
|
|
210
193
|
class EnvsMain {
|
|
211
194
|
/**
|
|
@@ -228,7 +211,7 @@ class EnvsMain {
|
|
|
228
211
|
/**
|
|
229
212
|
* slot for allowing extensions to register new environment.
|
|
230
213
|
*/
|
|
231
|
-
envSlot, logger, servicesRegistry, componentMain, loggerMain, workerMain, envJsoncMergeCustomizerSlot) {
|
|
214
|
+
envSlot, logger, servicesRegistry, componentMain, loggerMain, workerMain, envJsoncMergeCustomizerSlot, envJsoncResolverSlot) {
|
|
232
215
|
this.config = config;
|
|
233
216
|
this.harmony = harmony;
|
|
234
217
|
this.envSlot = envSlot;
|
|
@@ -238,6 +221,7 @@ class EnvsMain {
|
|
|
238
221
|
this.loggerMain = loggerMain;
|
|
239
222
|
this.workerMain = workerMain;
|
|
240
223
|
this.envJsoncMergeCustomizerSlot = envJsoncMergeCustomizerSlot;
|
|
224
|
+
this.envJsoncResolverSlot = envJsoncResolverSlot;
|
|
241
225
|
/**
|
|
242
226
|
* Envs that are failed to load
|
|
243
227
|
*/
|
|
@@ -380,7 +364,19 @@ class EnvsMain {
|
|
|
380
364
|
if (!envJson) return false;
|
|
381
365
|
return true;
|
|
382
366
|
}
|
|
383
|
-
getEnvManifest(envComponent
|
|
367
|
+
getEnvManifest(envComponent) {
|
|
368
|
+
const data = this.getEnvData(envComponent);
|
|
369
|
+
if (!data) return undefined;
|
|
370
|
+
return data.resolvedEnvJsonc;
|
|
371
|
+
}
|
|
372
|
+
async getOrCalculateEnvManifest(component, legacyFiles, envExtendsDeps) {
|
|
373
|
+
try {
|
|
374
|
+
return this.getEnvManifest(component) || (await this.calculateEnvManifest(component, legacyFiles, envExtendsDeps));
|
|
375
|
+
} catch {
|
|
376
|
+
return this.calculateEnvManifest(component);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
async calculateEnvManifest(envComponent, legacyFiles, envExtendsDeps) {
|
|
384
380
|
// TODO: maybe throw an error here?
|
|
385
381
|
if (!envComponent && !legacyFiles) return undefined;
|
|
386
382
|
// @ts-ignore
|
|
@@ -390,29 +386,18 @@ class EnvsMain {
|
|
|
390
386
|
});
|
|
391
387
|
if (!envJson) return undefined;
|
|
392
388
|
const object = (0, _commentJson().parse)(envJson.contents.toString('utf8'), undefined, true);
|
|
393
|
-
|
|
389
|
+
if (!object.extends) return object;
|
|
390
|
+
const resolvedObject = await this.recursivelyMergeWithParentManifest(object, envExtendsDeps);
|
|
394
391
|
return resolvedObject;
|
|
395
392
|
}
|
|
396
|
-
recursivelyMergeWithParentManifest(object,
|
|
393
|
+
async recursivelyMergeWithParentManifest(object, envExtendsDeps) {
|
|
397
394
|
if (!object.extends) return object;
|
|
398
|
-
const
|
|
399
|
-
const
|
|
400
|
-
const
|
|
401
|
-
if (!parentResolvedPath || !(0, _fsExtra().existsSync)(parentResolvedPath)) {
|
|
402
|
-
this.logger.info(`failed finding parent manifest for ${parentPackageName} at ${parentResolvedPath}`);
|
|
403
|
-
}
|
|
404
|
-
const parentEnvJsoncPath = ['env.jsonc', 'env.json'].map(fileName => (0, _path().join)(parentResolvedPath, fileName)).find(filePath => {
|
|
405
|
-
return (0, _fsExtra().existsSync)(filePath);
|
|
406
|
-
});
|
|
407
|
-
if (!parentEnvJsoncPath) {
|
|
408
|
-
this.logger.consoleWarning(`failed finding parent manifest for ${parentPackageName} at ${parentResolvedPath} referred from ${originPath}`);
|
|
409
|
-
return object;
|
|
410
|
-
}
|
|
411
|
-
const parentStr = (0, _fsExtra().readFileSync)(parentEnvJsoncPath).toString('utf8');
|
|
412
|
-
const parentObject = (0, _commentJson().parse)(parentStr, undefined, true);
|
|
395
|
+
const parentEnvId = object.extends;
|
|
396
|
+
const resolver = this.getAllRegisteredEnvJsoncResolvers()[0];
|
|
397
|
+
const parentObject = await resolver(parentEnvId, envExtendsDeps);
|
|
413
398
|
const mergedObject = this.mergeEnvManifests(parentObject, object);
|
|
414
399
|
if (mergedObject.extends) {
|
|
415
|
-
return this.recursivelyMergeWithParentManifest(mergedObject
|
|
400
|
+
return this.recursivelyMergeWithParentManifest(mergedObject);
|
|
416
401
|
}
|
|
417
402
|
return mergedObject;
|
|
418
403
|
}
|
|
@@ -423,6 +408,8 @@ class EnvsMain {
|
|
|
423
408
|
const oneMerged = customizer(parent, child);
|
|
424
409
|
merged = _objectSpread(_objectSpread({}, merged), oneMerged);
|
|
425
410
|
}
|
|
411
|
+
// This is important to make sure we won't keep the extends from the child
|
|
412
|
+
delete child.extends;
|
|
426
413
|
// Take extends specifically from the parent so we can propagate it to the next parent
|
|
427
414
|
if (parent.extends) {
|
|
428
415
|
merged.extends = parent.extends;
|
|
@@ -540,6 +527,14 @@ class EnvsMain {
|
|
|
540
527
|
return this.calculateEnv(component);
|
|
541
528
|
}
|
|
542
529
|
}
|
|
530
|
+
getOrCalculateEnvId(component) {
|
|
531
|
+
try {
|
|
532
|
+
const idStr = this.getEnvId(component);
|
|
533
|
+
return Promise.resolve(_componentId().ComponentID.fromString(idStr));
|
|
534
|
+
} catch {
|
|
535
|
+
return this.calculateEnvId(component);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
543
538
|
|
|
544
539
|
/**
|
|
545
540
|
* get an environment Descriptor.
|
|
@@ -553,9 +548,16 @@ class EnvsMain {
|
|
|
553
548
|
const componentDescriptor = await this.getComponentEnvDescriptor(component, opts);
|
|
554
549
|
if (!componentDescriptor) return undefined;
|
|
555
550
|
const envComponentSelfDescriptor = await this.getEnvSelfDescriptor(component);
|
|
556
|
-
const
|
|
557
|
-
|
|
558
|
-
|
|
551
|
+
// const resolvedEnvJsonc = await this.calculateEnvManifest(component);
|
|
552
|
+
const result = componentDescriptor;
|
|
553
|
+
if (envComponentSelfDescriptor) {
|
|
554
|
+
// @ts-ignore
|
|
555
|
+
result.self = envComponentSelfDescriptor;
|
|
556
|
+
}
|
|
557
|
+
// if (resolvedEnvJsonc) {
|
|
558
|
+
// // @ts-ignore
|
|
559
|
+
// result.resolvedEnvJsonc = resolvedEnvJsonc;
|
|
560
|
+
// }
|
|
559
561
|
return result;
|
|
560
562
|
}
|
|
561
563
|
|
|
@@ -742,6 +744,9 @@ class EnvsMain {
|
|
|
742
744
|
getAllRegisteredEnvJsoncCustomizers() {
|
|
743
745
|
return this.envJsoncMergeCustomizerSlot.toArray().map(customizerEntry => customizerEntry[1]);
|
|
744
746
|
}
|
|
747
|
+
getAllRegisteredEnvJsoncResolvers() {
|
|
748
|
+
return this.envJsoncResolverSlot.toArray().map(resolver => resolver[1]);
|
|
749
|
+
}
|
|
745
750
|
getEnvPlugin() {
|
|
746
751
|
return new (_env2().EnvPlugin)(this.envSlot, this.servicesRegistry, this.loggerMain, this.workerMain, this.harmony);
|
|
747
752
|
}
|
|
@@ -1043,6 +1048,12 @@ class EnvsMain {
|
|
|
1043
1048
|
registerEnvJsoncMergeCustomizer(customizer) {
|
|
1044
1049
|
return this.envJsoncMergeCustomizerSlot.register(customizer);
|
|
1045
1050
|
}
|
|
1051
|
+
registerEnvJsoncResolver(resolver) {
|
|
1052
|
+
return this.envJsoncResolverSlot.register(resolver);
|
|
1053
|
+
}
|
|
1054
|
+
getEnvJsoncDetector() {
|
|
1055
|
+
return new (_envJsonc().EnvJsoncDetector)();
|
|
1056
|
+
}
|
|
1046
1057
|
async addNonLoadedEnvAsComponentIssues(components) {
|
|
1047
1058
|
await (0, _pMapSeries().default)(components, async component => {
|
|
1048
1059
|
const envId = await this.calculateEnvId(component);
|
|
@@ -1112,9 +1123,9 @@ class EnvsMain {
|
|
|
1112
1123
|
throw new Error(`found duplicated components: ${duplications.join(', ')}`);
|
|
1113
1124
|
}
|
|
1114
1125
|
}
|
|
1115
|
-
static async provider([graphql, loggerAspect, component, cli, worker, issues], config, [envSlot, servicesRegistry, envJsoncMergeCustomizerSlot], context) {
|
|
1126
|
+
static async provider([graphql, loggerAspect, component, cli, worker, issues], config, [envSlot, servicesRegistry, envJsoncMergeCustomizerSlot, envJsoncResolverSlot], context) {
|
|
1116
1127
|
const logger = loggerAspect.createLogger(_environments().EnvsAspect.id);
|
|
1117
|
-
const envs = new EnvsMain(config, context, envSlot, logger, servicesRegistry, component, loggerAspect, worker, envJsoncMergeCustomizerSlot);
|
|
1128
|
+
const envs = new EnvsMain(config, context, envSlot, logger, servicesRegistry, component, loggerAspect, worker, envJsoncMergeCustomizerSlot, envJsoncResolverSlot);
|
|
1118
1129
|
component.registerShowFragments([new (_env().EnvFragment)(envs)]);
|
|
1119
1130
|
if (issues) issues.registerAddComponentsIssues(envs.addNonLoadedEnvAsComponentIssues.bind(envs));
|
|
1120
1131
|
const envsCmd = new (_envs().EnvsCmd)(envs, component);
|
|
@@ -1126,7 +1137,7 @@ class EnvsMain {
|
|
|
1126
1137
|
}
|
|
1127
1138
|
exports.EnvsMain = EnvsMain;
|
|
1128
1139
|
_defineProperty(EnvsMain, "runtime", _cli().MainRuntime);
|
|
1129
|
-
_defineProperty(EnvsMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
1140
|
+
_defineProperty(EnvsMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
1130
1141
|
_defineProperty(EnvsMain, "dependencies", [_graphql().GraphqlAspect, _logger().LoggerAspect, _component().ComponentAspect, _cli().CLIAspect, _worker().WorkerAspect, _issues().IssuesAspect]);
|
|
1131
1142
|
_environments().EnvsAspect.addRuntime(EnvsMain);
|
|
1132
1143
|
|