@teambit/envs 1.0.491 → 1.0.493
Sign up to get free protection for your applications and to get access to all the features.
- package/artifacts/__bit_junit.xml +1 -1
- package/artifacts/preview/teambit_envs_envs-preview.js +1 -1
- package/artifacts/schema.json +1056 -872
- package/dist/environments.main.runtime.d.ts +5 -2
- package/dist/environments.main.runtime.js +10 -10
- package/dist/environments.main.runtime.js.map +1 -1
- package/dist/{preview-1733887202407.js → preview-1734020193676.js} +2 -2
- package/package.json +25 -26
@@ -95,8 +95,9 @@ export declare class EnvsMain {
|
|
95
95
|
* Ids of envs (not neccesrraly loaded successfully)
|
96
96
|
*/
|
97
97
|
envIds: Set<string>;
|
98
|
-
static runtime: import("@teambit/
|
98
|
+
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
99
99
|
private alreadyShownWarning;
|
100
|
+
private coreAspectIds;
|
100
101
|
/**
|
101
102
|
* icon of the extension.
|
102
103
|
*/
|
@@ -118,6 +119,8 @@ export declare class EnvsMain {
|
|
118
119
|
* creates a new runtime environments for a set of components.
|
119
120
|
*/
|
120
121
|
createEnvironment(components: Component[]): Promise<Runtime>;
|
122
|
+
setCoreAspectIds(ids: string[]): void;
|
123
|
+
isCoreAspect(id: string): boolean;
|
121
124
|
/**
|
122
125
|
*
|
123
126
|
* @param id
|
@@ -325,7 +328,7 @@ export declare class EnvsMain {
|
|
325
328
|
private getEnvAspectDef;
|
326
329
|
private throwForDuplicateComponents;
|
327
330
|
static slots: (((registerFn: () => string) => SlotRegistry<Environment>) | ((registerFn: () => string) => SlotRegistry<EnvService<any, {}, {}>>) | ((registerFn: () => string) => SlotRegistry<EnvJsoncMergeCustomizerRegistry>))[];
|
328
|
-
static dependencies: import("@teambit/
|
331
|
+
static dependencies: import("@teambit/harmony").Aspect[];
|
329
332
|
static provider([graphql, loggerAspect, component, cli, worker, issues]: [
|
330
333
|
GraphqlMain,
|
331
334
|
LoggerMain,
|
@@ -25,13 +25,6 @@ function _toolboxModules() {
|
|
25
25
|
};
|
26
26
|
return data;
|
27
27
|
}
|
28
|
-
function _bit() {
|
29
|
-
const data = require("@teambit/bit");
|
30
|
-
_bit = function () {
|
31
|
-
return data;
|
32
|
-
};
|
33
|
-
return data;
|
34
|
-
}
|
35
28
|
function _fsExtra() {
|
36
29
|
const data = require("fs-extra");
|
37
30
|
_fsExtra = function () {
|
@@ -260,6 +253,7 @@ class EnvsMain {
|
|
260
253
|
*/
|
261
254
|
_defineProperty(this, "envIds", new Set());
|
262
255
|
_defineProperty(this, "alreadyShownWarning", {});
|
256
|
+
_defineProperty(this, "coreAspectIds", []);
|
263
257
|
}
|
264
258
|
|
265
259
|
/**
|
@@ -268,6 +262,12 @@ class EnvsMain {
|
|
268
262
|
async createEnvironment(components) {
|
269
263
|
return this.createRuntime(components);
|
270
264
|
}
|
265
|
+
setCoreAspectIds(ids) {
|
266
|
+
this.coreAspectIds = ids;
|
267
|
+
}
|
268
|
+
isCoreAspect(id) {
|
269
|
+
return this.coreAspectIds.includes(id);
|
270
|
+
}
|
271
271
|
|
272
272
|
/**
|
273
273
|
*
|
@@ -536,7 +536,7 @@ class EnvsMain {
|
|
536
536
|
getOrCalculateEnv(component) {
|
537
537
|
try {
|
538
538
|
return this.getEnv(component);
|
539
|
-
} catch
|
539
|
+
} catch {
|
540
540
|
return this.calculateEnv(component);
|
541
541
|
}
|
542
542
|
}
|
@@ -901,7 +901,7 @@ class EnvsMain {
|
|
901
901
|
const envId = await (0, _pLocate().default)(ids, async id => {
|
902
902
|
const idWithoutVersion = id.split('@')[0];
|
903
903
|
if (this.isCoreEnv(idWithoutVersion)) return true;
|
904
|
-
if (
|
904
|
+
if (this.isCoreAspect(idWithoutVersion)) return false;
|
905
905
|
const envDef = this.getEnvDefinitionByStringId(id);
|
906
906
|
if (envDef) return true;
|
907
907
|
const envDefWithoutVersion = this.getEnvDefinitionByStringId(idWithoutVersion);
|
@@ -1017,7 +1017,7 @@ class EnvsMain {
|
|
1017
1017
|
if (this.implements(env, service)) {
|
1018
1018
|
services.push([id, service]);
|
1019
1019
|
}
|
1020
|
-
} catch
|
1020
|
+
} catch {
|
1021
1021
|
this.logger.warn(`failed loading service ${id} for env ${env.id}`);
|
1022
1022
|
}
|
1023
1023
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_path","data","require","_findRoot","_interopRequireDefault","_toolboxModules","_bit","_fsExtra","_pLocate","_commentJson","_cli","_component","_graphql","_issues","_pMapSeries","_componentIssues","_harmony","_logger","_bitError","_toolboxArray","_lodash","_worker","_componentId","_environments","_environments2","_runtime","_envDefinition","_envServiceList","_envs","_env","_exceptions","_env2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_ENV","exports","EnvsMain","icon","constructor","config","harmony","envSlot","logger","servicesRegistry","componentMain","loggerMain","workerMain","envJsoncMergeCustomizerSlot","Set","createEnvironment","components","createRuntime","addFailedToLoadEnvs","id","failedToLoadEnvs","add","envIds","addFailedToLoadExt","failedToLoadExt","has","resetFailedToLoadEnvs","clear","getFailedToLoadEnvs","Array","from","extId","uniq","getDefaultEnv","defaultEnv","get","Error","EnvDefinition","getCoreEnvsIds","compose","targetEnv","envTransformers","a","reduce","acc","transformer","override","propsToOverride","env","merge","sourceEnv","allNames","prototype","getPrototypeOf","name","getOwnPropertyNames","key","fn","includes","bind","hasEnvManifest","envComponent","legacyFiles","undefined","files","filesystem","envJson","find","file","relative","getEnvManifest","object","parse","contents","toString","resolvedObject","recursivelyMergeWithParentManifest","path","originPath","extends","parentPackageName","parentPath","resolveFrom","parentResolvedPath","findRoot","existsSync","info","parentEnvJsoncPath","map","fileName","join","filePath","consoleWarning","parentStr","readFileSync","parentObject","mergedObject","mergeEnvManifests","parent","child","merged","mergeCustomizer","getAllRegisteredEnvJsoncCustomizers","customizer","oneMerged","hasEnvManifestById","envId","requesting","component","getEnvComponentByEnvId","getEnvData","envsData","state","aspects","EnvsAspect","getEnvIdFromEnvsData","ignoreVersion","rawEnvId","envIdWithoutVersion","ComponentID","fromString","toStringWithoutVersion","getEnvId","envIdFromEnvData","withVersion","resolveEnv","withVersionMatch","toArray","withVersionMatchId","exactMatch","exactMatchId","EnvNotConfiguredForComponent","isUsingCoreEnv","isCoreEnv","getEnv","envDef","getEnvDefinitionByStringId","EnvNotFound","getEnvComponent","host","getHost","newId","resolveComponentId","BitError","getOrCalculateEnv","err","calculateEnv","getDescriptor","calcDescriptor","opts","componentDescriptor","getComponentEnvDescriptor","envComponentSelfDescriptor","getEnvSelfDescriptor","result","self","isEnvRegistered","getEnvFromComponent","rawServices","getServices","services","toObject","selfDescriptor","getEnvDescriptorFromEnvDef","__getDescriptor","systemDescriptor","type","split","description","matchedEntry","entries","aspectEntry","calculateEnvId","envIdFromEnvsConfig","getEnvIdFromEnvsConfig","envIdFromEnvsConfigWithoutVersion","ids","findFirstEnv","finalId","getEnvDefinitionById","skipWarnings","printWarningIfFirstTime","envDefFromList","getAllEnvsConfiguredOnComponent","getEnvFromEnvsConfig","getEnvsNotFromEnvsConfig","hasEnvConfigured","Boolean","getAllRegisteredEnvsIds","envData","getAllRegisteredEnvs","customizerEntry","getEnvPlugin","EnvPlugin","getEnvIdFromEnvsLegacyExtensions","extensions","envsAspect","findCoreExtension","calculateEnvIdFromExtensions","extension","extensionId","stringId","calculateEnvFromExtensions","getEnvDefinitionByLegacyExtension","isFoundWithoutVersion","pLocate","idWithoutVersion","isCoreAspect","envDefWithoutVersion","hasManifest","isUsingEnvEnv","finalEnvId","getEnvDefinition","allVersions","all","first","head","getEnvsEnvDefinition","message","alreadyShownWarning","isUsingAspectEnv","isEnv","registerService","envServices","register","allServices","currentServices","service","implements","warn","EnvServiceList","registerEnv","registerEnvJsoncMergeCustomizer","addNonLoadedEnvAsComponentIssues","pMapSeries","envIdStr","foundComp","c","issues","getOrCreate","IssuesClasses","ExternalEnvWithoutVersion","componentId","NonLoadedEnv","Runtime","aggregateByDefs","throwForDuplicateComponents","envsMap","Promise","envAspectDef","getEnvAspectDef","EnvRuntime","resolvedAspects","resolveAspects","MainRuntime","requestedOnly","filterByRuntime","useScopeAspectsCapsule","def","idsStr","duplications","findDuplications","provider","graphql","loggerAspect","cli","worker","context","createLogger","envs","registerShowFragments","EnvFragment","registerAddComponentsIssues","envsCmd","EnvsCmd","commands","ListEnvsCmd","GetEnvCmd","environmentsSchema","Slot","withType","GraphqlAspect","LoggerAspect","ComponentAspect","CLIAspect","WorkerAspect","IssuesAspect","addRuntime"],"sources":["environments.main.runtime.ts"],"sourcesContent":["import { join } from 'path';\nimport findRoot from 'find-root';\nimport { resolveFrom } from '@teambit/toolbox.modules.module-resolver';\nimport { isCoreAspect } from '@teambit/bit';\nimport { existsSync, readFileSync } from 'fs-extra';\nimport pLocate from 'p-locate';\nimport { parse } from 'comment-json';\nimport { SourceFile } from '@teambit/component.sources';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain } from '@teambit/component';\nimport type { EnvPolicyConfigObject } from '@teambit/dependency-resolver';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { IssuesAspect, IssuesMain } from '@teambit/issues';\nimport type { EnvJsoncPatterns } from '@teambit/dev-files';\nimport pMapSeries from 'p-map-series';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { Harmony, Slot, SlotRegistry } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport type { AspectDefinition } from '@teambit/aspect-loader';\nimport { ExtensionDataList, ExtensionDataEntry } from '@teambit/legacy.extension-data';\nimport { BitError } from '@teambit/bit-error';\nimport { findDuplications } from '@teambit/toolbox.array.duplications-finder';\nimport { head, uniq } from 'lodash';\nimport { WorkerAspect, WorkerMain } from '@teambit/worker';\nimport { ComponentID } from '@teambit/component-id';\nimport { EnvService } from './services';\nimport { Environment } from './environment';\nimport { EnvsAspect } from './environments.aspect';\nimport { environmentsSchema } from './environments.graphql';\nimport { EnvRuntime, Runtime } from './runtime';\nimport { EnvDefinition } from './env-definition';\nimport { EnvServiceList } from './env-service-list';\nimport { EnvsCmd, GetEnvCmd, ListEnvsCmd } from './envs.cmd';\nimport { EnvFragment } from './env.fragment';\nimport { EnvNotFound, EnvNotConfiguredForComponent } from './exceptions';\nimport { EnvPlugin } from './env.plugin';\n\nexport type EnvJsonc = {\n extends?: string;\n policy?: EnvPolicyConfigObject;\n patterns?: EnvJsoncPatterns;\n};\n\nexport type EnvJsoncMergeCustomizer = (parentObj: EnvJsonc, childObj: EnvJsonc) => Partial<EnvJsonc>;\n\nexport type EnvsRegistry = SlotRegistry<Environment>;\nexport type EnvJsoncMergeCustomizerRegistry = SlotRegistry<EnvJsoncMergeCustomizer>;\n\nexport type EnvsConfig = {\n env: string;\n options: EnvOptions;\n};\n\ntype GetCalcEnvOptions = {\n skipWarnings?: boolean;\n};\n\nexport type EnvOptions = {};\n\nexport type EnvTransformer = (env: Environment) => Environment;\n\nexport type ServicesRegistry = SlotRegistry<Array<EnvService<any>>>;\n\nexport type RegularCompDescriptor = {\n id: string;\n icon?: string;\n type?: string;\n name?: string;\n description?: string;\n};\nexport type EnvCompDescriptorProps = RegularCompDescriptor & {\n services?: {\n env: {\n id: string;\n icon: string;\n name?: string;\n description?: string;\n };\n services: Array<{\n id: string;\n name?: string;\n description?: string;\n data: any;\n }>;\n };\n};\n\nexport type EnvCompDescriptor = EnvCompDescriptorProps & {\n self?: EnvCompDescriptorProps;\n};\n\nexport type Descriptor = RegularCompDescriptor | EnvCompDescriptor;\n\nexport const DEFAULT_ENV = 'teambit.harmony/node';\n\nexport class EnvsMain {\n /**\n * Envs that are failed to load\n */\n private failedToLoadEnvs = new Set<string>();\n /**\n * Extensions that are failed to load\n * We use this as sometime when we couldn't load an extension we don't know if it's an env or not\n * We should ideally take it from the aspect loader aspect, but right now the aspect loader is using envs\n */\n private failedToLoadExt = new Set<string>();\n /**\n * Ids of envs (not neccesrraly loaded successfully)\n */\n public envIds = new Set<string>();\n\n static runtime = MainRuntime;\n\n private alreadyShownWarning = {};\n\n /**\n * icon of the extension.\n */\n icon() {\n return `<svg width=\"50\" height=\"50\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"25\" cy=\"25\" r=\"20\"/>\n </svg>`;\n }\n\n constructor(\n /**\n * environments extension configuration.\n */\n readonly config: EnvsConfig,\n\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for allowing extensions to register new environment.\n */\n private envSlot: EnvsRegistry,\n\n private logger: Logger,\n\n private servicesRegistry: ServicesRegistry,\n\n private componentMain: ComponentMain,\n\n private loggerMain: LoggerMain,\n\n private workerMain: WorkerMain,\n\n private envJsoncMergeCustomizerSlot: EnvJsoncMergeCustomizerRegistry\n ) {}\n\n /**\n * creates a new runtime environments for a set of components.\n */\n async createEnvironment(components: Component[]): Promise<Runtime> {\n return this.createRuntime(components);\n }\n\n /**\n *\n * @param id\n */\n /**\n * This function adds an extension ID to a set of failed to load extensions.\n * This mostly used by the aspect loader to add such issues\n * Then it is used to hide different errors that are caused by the same issue.\n * @param {string} id - string - represents the unique identifier of an extension that failed to load.\n */\n addFailedToLoadEnvs(id: string) {\n this.failedToLoadEnvs.add(id);\n this.envIds.add(id);\n }\n\n addFailedToLoadExt(id: string) {\n this.failedToLoadExt.add(id);\n if (this.envIds.has(id)) {\n this.addFailedToLoadEnvs(id);\n }\n }\n\n resetFailedToLoadEnvs() {\n this.failedToLoadEnvs.clear();\n this.failedToLoadExt.clear();\n }\n\n getFailedToLoadEnvs() {\n const failedToLoadEnvs = Array.from(this.failedToLoadEnvs);\n // Add all extensions which are also envs\n for (const extId of this.failedToLoadExt) {\n if (this.envIds.has(extId)) {\n failedToLoadEnvs.push(extId);\n }\n }\n return uniq(failedToLoadEnvs);\n }\n\n /**\n * get the configured default env.\n */\n getDefaultEnv(): EnvDefinition {\n const defaultEnv = this.envSlot.get(DEFAULT_ENV);\n if (!defaultEnv) throw new Error('default env must be set.');\n\n return new EnvDefinition(DEFAULT_ENV, defaultEnv);\n }\n\n getCoreEnvsIds(): string[] {\n return [\n 'teambit.harmony/aspect',\n 'teambit.react/react',\n 'teambit.harmony/node',\n 'teambit.react/react-native',\n 'teambit.html/html',\n 'teambit.mdx/mdx',\n 'teambit.envs/env',\n 'teambit.mdx/readme',\n 'teambit.harmony/bit-custom-aspect',\n ];\n }\n\n /**\n * compose a new environment from a list of environment transformers.\n */\n compose(targetEnv: Environment, envTransformers: EnvTransformer[]) {\n const a = envTransformers.reduce((acc, transformer) => {\n acc = transformer(acc);\n return acc;\n }, targetEnv);\n\n return a;\n }\n\n /**\n * create an env transformer which overrides specific env properties.\n */\n override(propsToOverride: Environment): EnvTransformer {\n return (env: Environment) => {\n return this.merge(propsToOverride, env);\n };\n }\n\n /**\n * compose two environments into one.\n */\n merge<T extends Environment, S extends Environment>(targetEnv: Environment, sourceEnv: Environment): T & S {\n const allNames = new Set<string>();\n const keys = ['icon', 'name', 'description'];\n for (let o = sourceEnv; o !== Object.prototype; o = Object.getPrototypeOf(o)) {\n for (const name of Object.getOwnPropertyNames(o)) {\n allNames.add(name);\n }\n }\n\n allNames.forEach((key: string) => {\n const fn = sourceEnv[key];\n if (targetEnv[key]) return;\n if (keys.includes(key)) targetEnv[key] = fn;\n if (!fn || !fn.bind) {\n return;\n }\n targetEnv[key] = fn.bind(sourceEnv);\n });\n\n return targetEnv as T & S;\n }\n\n /**\n * This function checks if an environment manifest file exists in a given component or set of legacy files.\n * @param {Component} [envComponent] - A component object that represents an environment. It contains information about\n * the files and directories that make up the environment.\n * @param {SourceFile[]} [legacyFiles] - An optional array of SourceFile objects representing the files in the legacy\n * file system. If this parameter is not provided, the function will attempt to retrieve the files from the envComponent\n * parameter.\n * @returns a boolean value indicating whether an `env.jsonc` or `env.json` file exists in the `files` array of either\n * the `envComponent` object or the `legacyFiles` array. If neither `envComponent` nor `legacyFiles` are provided, the\n * function returns `undefined`.\n */\n hasEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): boolean | undefined {\n if (!envComponent && !legacyFiles) return undefined;\n // @ts-ignore\n const files = legacyFiles || envComponent.filesystem.files;\n const envJson = files.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n\n if (!envJson) return false;\n return true;\n }\n\n getEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): EnvJsonc | undefined {\n // TODO: maybe throw an error here?\n if (!envComponent && !legacyFiles) return undefined;\n // @ts-ignore\n const files = legacyFiles || envComponent.filesystem.files;\n const envJson = files.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n\n if (!envJson) return undefined;\n\n const object: EnvJsonc = parse(envJson.contents.toString('utf8'), undefined, true);\n const resolvedObject = this.recursivelyMergeWithParentManifest(object, envJson.path);\n return resolvedObject;\n }\n\n recursivelyMergeWithParentManifest(object: EnvJsonc, originPath: string): EnvJsonc {\n if (!object.extends) return object;\n const parentPackageName = object.extends;\n const parentPath = resolveFrom(originPath, [parentPackageName]);\n const parentResolvedPath = findRoot(parentPath);\n if (!parentResolvedPath || !existsSync(parentResolvedPath)) {\n this.logger.info(`failed finding parent manifest for ${parentPackageName} at ${parentResolvedPath}`);\n }\n const parentEnvJsoncPath = ['env.jsonc', 'env.json']\n .map((fileName) => join(parentResolvedPath, fileName))\n .find((filePath) => {\n return existsSync(filePath);\n });\n if (!parentEnvJsoncPath) {\n this.logger.consoleWarning(\n `failed finding parent manifest for ${parentPackageName} at ${parentResolvedPath} referred from ${originPath}`\n );\n return object;\n }\n const parentStr = readFileSync(parentEnvJsoncPath).toString('utf8');\n const parentObject: EnvJsonc = parse(parentStr, undefined, true);\n const mergedObject = this.mergeEnvManifests(parentObject, object);\n if (mergedObject.extends) {\n return this.recursivelyMergeWithParentManifest(mergedObject, parentEnvJsoncPath);\n }\n return mergedObject;\n }\n\n mergeEnvManifests(parent: EnvJsonc, child: EnvJsonc): EnvJsonc {\n let merged: EnvJsonc = {};\n const mergeCustomizer = this.getAllRegisteredEnvJsoncCustomizers();\n for (const customizer of mergeCustomizer) {\n const oneMerged = customizer(parent, child);\n merged = { ...merged, ...oneMerged };\n }\n // Take extends specifically from the parent so we can propagate it to the next parent\n if (parent.extends) {\n merged.extends = parent.extends;\n }\n return merged;\n }\n\n async hasEnvManifestById(envId: string, requesting: string): Promise<boolean | undefined> {\n const component = await this.getEnvComponentByEnvId(envId, requesting);\n return this.hasEnvManifest(component);\n }\n\n getEnvData(component: Component): Descriptor {\n let envsData = component.state.aspects.get(EnvsAspect.id);\n if (!envsData) {\n // TODO: remove this once we re-export old components used to store the data here\n envsData = component.state.aspects.get('teambit.workspace/workspace');\n }\n if (!envsData) throw new Error(`env was not configured on component ${component.id.toString()}`);\n return envsData.data as Descriptor;\n }\n\n /**\n * Return the id of the env as configured in the envs data (without version by default)\n * The reason it's not contain version by default is that we want to take the version from the aspect defined on the component itself\n * As this version is stay up to date during tagging the env along with the component\n * @param component\n * @param ignoreVersion\n */\n private getEnvIdFromEnvsData(component: Component, ignoreVersion = true): string | undefined {\n const envsData = this.getEnvData(component);\n if (!envsData) return undefined;\n const rawEnvId = envsData.id;\n if (!rawEnvId) return undefined;\n if (!ignoreVersion) return rawEnvId;\n const envIdWithoutVersion = ComponentID.fromString(rawEnvId).toStringWithoutVersion();\n return envIdWithoutVersion;\n }\n\n /**\n * get the env id of the given component.\n */\n getEnvId(component: Component): string {\n const envIdFromEnvData = this.getEnvIdFromEnvsData(component);\n if (!envIdFromEnvData) {\n // This should never happen\n throw new Error(`no env found for ${component.id.toString()}`);\n }\n const withVersion = this.resolveEnv(component, envIdFromEnvData);\n const withVersionMatch = this.envSlot.toArray().find(([envId]) => {\n return withVersion?.toString() === envId;\n });\n const withVersionMatchId = withVersionMatch?.[0];\n if (withVersionMatchId) return withVersionMatchId;\n\n // Handle core envs\n const exactMatch = this.envSlot.toArray().find(([envId]) => {\n return envIdFromEnvData === envId;\n });\n\n const exactMatchId = exactMatch?.[0];\n if (exactMatchId) return exactMatchId;\n\n if (!withVersion) throw new EnvNotConfiguredForComponent(envIdFromEnvData, component.id.toString());\n return withVersion.toString();\n }\n\n isUsingCoreEnv(component: Component): boolean {\n const envId = this.getEnvId(component);\n return this.isCoreEnv(envId);\n }\n\n isCoreEnv(envId: string): boolean {\n return this.getCoreEnvsIds().includes(envId);\n }\n\n /**\n * get the env of the given component.\n * In case you are asking for the env during on load you should use calculateEnv instead\n */\n getEnv(component: Component): EnvDefinition {\n const id = this.getEnvId(component);\n const envDef = this.getEnvDefinitionByStringId(id);\n if (envDef) {\n return envDef;\n }\n // Do not allow a non existing env\n throw new EnvNotFound(id, component.id.toString());\n }\n\n /**\n * get the env component of the given component.\n */\n async getEnvComponent(component: Component): Promise<Component> {\n const envId = this.getEnvId(component);\n return this.getEnvComponentByEnvId(envId, component.id.toString());\n }\n\n /**\n * get the env component by the env id.\n */\n async getEnvComponentByEnvId(envId: string, requesting?: string): Promise<Component> {\n const host = this.componentMain.getHost();\n const newId = await host.resolveComponentId(envId);\n const envComponent = await host.get(newId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId} used by component ${requesting || 'unknown'}`);\n }\n return envComponent;\n }\n\n /**\n * get the env of the given component.\n * This will try to use the regular getEnv but fallback to the calculate env (in case you are using it during on load)\n * This is safe to be used on onLoad as well\n */\n getOrCalculateEnv(component: Component): EnvDefinition {\n try {\n return this.getEnv(component);\n } catch (err) {\n return this.calculateEnv(component);\n }\n }\n\n /**\n * get an environment Descriptor.\n */\n getDescriptor(component: Component): Descriptor | undefined {\n const envsData = this.getEnvData(component);\n envsData.id = this.resolveEnv(component, envsData.id)?.toString() || envsData.id;\n return envsData;\n }\n\n async calcDescriptor(component: Component, opts: GetCalcEnvOptions = {}): Promise<Descriptor | undefined> {\n const componentDescriptor = await this.getComponentEnvDescriptor(component, opts);\n if (!componentDescriptor) return undefined;\n const envComponentSelfDescriptor = await this.getEnvSelfDescriptor(component);\n const result = envComponentSelfDescriptor\n ? { ...componentDescriptor, self: envComponentSelfDescriptor }\n : componentDescriptor;\n return result;\n }\n\n /**\n * Get env descriptor from the env itself if the component is an env\n * This will be empty for regular component, and will only contain data for env themself\n */\n private async getEnvSelfDescriptor(envComponent: Component): Promise<EnvCompDescriptorProps | undefined> {\n // !important calculate only on the env itself.\n if (!this.isEnvRegistered(envComponent.id.toString())) {\n return undefined;\n }\n\n const envDef = this.getEnvFromComponent(envComponent);\n if (!envDef) return undefined;\n\n const rawServices = this.getServices(envDef);\n const services = rawServices.toObject();\n // const selfDescriptor = (await this.getEnvDescriptorFromEnvDef(envDef)) || {};\n const selfDescriptor = await this.getEnvDescriptorFromEnvDef(envDef);\n\n if (!selfDescriptor) return undefined;\n return {\n ...selfDescriptor,\n services,\n };\n }\n\n /**\n * Get env descriptor from the env that a given component is using\n */\n private async getComponentEnvDescriptor(\n component: Component,\n opts: GetCalcEnvOptions = {}\n ): Promise<RegularCompDescriptor | undefined> {\n const envDef = this.calculateEnv(component, opts);\n return this.getEnvDescriptorFromEnvDef(envDef);\n }\n\n private async getEnvDescriptorFromEnvDef(envDef: EnvDefinition): Promise<RegularCompDescriptor | undefined> {\n if (!envDef.env.__getDescriptor || typeof envDef.env.__getDescriptor !== 'function') {\n return undefined;\n }\n const systemDescriptor = await envDef.env.__getDescriptor();\n\n return {\n type: systemDescriptor.type,\n // Make sure to store the env id in the data without the version\n // The version should always come from the aspect id configured on the component\n id: envDef.id.split('@')[0],\n name: envDef.name,\n icon: envDef.env.icon,\n description: envDef.description,\n };\n }\n\n resolveEnv(component: Component, id: string) {\n const matchedEntry = component.state.aspects.entries.find((aspectEntry) => {\n return id === aspectEntry.id.toString() || id === aspectEntry.id.toString({ ignoreVersion: true });\n });\n\n return matchedEntry?.id;\n }\n\n /**\n * This used to calculate the actual env during the component load.\n * Do not use it to get the env (use getEnv instead)\n * This should be used only during on load\n */\n async calculateEnvId(component: Component): Promise<ComponentID> {\n // Search first for env configured via envs aspect itself\n const envIdFromEnvsConfig = this.getEnvIdFromEnvsConfig(component);\n // if (!envIdFromEnvsConfig) return this.getDefaultEnv();\n const envIdFromEnvsConfigWithoutVersion = envIdFromEnvsConfig\n ? ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion()\n : undefined;\n\n if (envIdFromEnvsConfig && this.isCoreEnv(envIdFromEnvsConfig)) {\n return ComponentID.fromString(envIdFromEnvsConfig);\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = component.state.aspects.entries.find((aspectEntry) => {\n return (\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString() ||\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString({ ignoreVersion: true })\n );\n });\n\n if (matchedEntry?.id) return matchedEntry?.id;\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n let ids: string[] = [];\n component.state.aspects.entries.forEach((aspectEntry) => {\n ids.push(aspectEntry.id.toString());\n // ids.push(aspectEntry.id.toString({ ignoreVersion: true }));\n });\n ids = uniq(ids);\n const envId = await this.findFirstEnv(ids);\n const finalId = envId || this.getDefaultEnv().id;\n return ComponentID.fromString(finalId);\n }\n\n /**\n * This used to calculate the actual env during the component load.\n * Do not use it to get the env (use getEnv instead)\n * This should be used only during on load\n */\n calculateEnv(component: Component, opts: GetCalcEnvOptions = {}): EnvDefinition {\n // Search first for env configured via envs aspect itself\n const envIdFromEnvsConfig = this.getEnvIdFromEnvsConfig(component);\n let envIdFromEnvsConfigWithoutVersion;\n if (envIdFromEnvsConfig) {\n envIdFromEnvsConfigWithoutVersion = ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion();\n const envDef = this.getEnvDefinitionByStringId(envIdFromEnvsConfigWithoutVersion);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = component.state.aspects.entries.find((aspectEntry) => {\n return (\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString() ||\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString({ ignoreVersion: true })\n );\n });\n if (matchedEntry) {\n // during the tag process, the version in the aspect-entry-id is changed and is not the\n // same as it was when it registered to the slot.\n const envDef = this.getEnvDefinitionById(matchedEntry.id);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n if (!opts.skipWarnings) {\n // Do not allow a non existing env\n this.printWarningIfFirstTime(\n matchedEntry.id.toString(),\n `environment with ID: ${matchedEntry.id.toString()} configured on component ${component.id.toString()} was not loaded (run \"bit install\")`\n );\n }\n }\n // Do not allow configure teambit.envs/envs on the component without configure the env aspect itself\n // const errMsg = new EnvNotConfiguredForComponent(envIdFromEnvsConfig as string, component.id.toString()).message;\n // this.printWarningIfFirstTime(envIdFromEnvsConfig as string, errMsg);\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n let envDefFromList;\n component.state.aspects.entries.find((aspectEntry) => {\n const envDef = this.getEnvDefinitionById(aspectEntry.id);\n if (envDef) {\n envDefFromList = envDef;\n }\n return !!envDef;\n });\n\n if (envDefFromList) {\n this.envIds.add(envDefFromList.id);\n return envDefFromList;\n }\n return this.getDefaultEnv();\n }\n\n /**\n * an env can be configured on a component in two ways:\n * 1) explicitly inside \"teambit.envs/envs\". `{ \"teambit.envs/envs\": { \"env\": \"my-env\" } }`\n * 2) the env aspect is set on the variant as any other aspect, e.g. `{ \"my-env\": {} }`\n *\n * this method returns #1 if exists, otherwise, #2.\n */\n getAllEnvsConfiguredOnComponent(component: Component): EnvDefinition[] {\n // if a component has \"envs\" config, use it and ignore other components that are set up\n // in this components which happen to be envs.\n const envDef = this.getEnvFromEnvsConfig(component);\n if (envDef) {\n return [envDef];\n }\n\n return this.getEnvsNotFromEnvsConfig(component);\n }\n\n /**\n * whether a component has an env configured (either by variant or .bitmap).\n */\n hasEnvConfigured(component: Component): boolean {\n return Boolean(this.getAllEnvsConfiguredOnComponent(component).length);\n }\n\n getAllRegisteredEnvsIds(): string[] {\n return this.envSlot.toArray().map((envData) => envData[0]);\n }\n\n getAllRegisteredEnvs(): Environment[] {\n return this.envSlot.toArray().map((envData) => envData[1]);\n }\n\n getAllRegisteredEnvJsoncCustomizers(): EnvJsoncMergeCustomizer[] {\n return this.envJsoncMergeCustomizerSlot.toArray().map((customizerEntry) => customizerEntry[1]);\n }\n\n getEnvPlugin() {\n return new EnvPlugin(this.envSlot, this.servicesRegistry, this.loggerMain, this.workerMain, this.harmony);\n }\n\n /**\n * an env can be configured on a component in two ways:\n * 1) explicitly inside \"teambit.envs/envs\". `{ \"teambit.envs/envs\": { \"env\": \"my-env\" } }`\n * 2) the env aspect is set on the variant as any other aspect, e.g. `{ \"my-env\": {} }`\n *\n * this method returns only #1\n */\n getEnvFromEnvsConfig(component: Component): EnvDefinition | undefined {\n const envIdFromEnvsConfig = this.getEnvIdFromEnvsConfig(component);\n if (!envIdFromEnvsConfig) {\n return undefined;\n }\n const envIdFromEnvsConfigWithoutVersion = ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion();\n const envDef = this.getEnvDefinitionByStringId(envIdFromEnvsConfigWithoutVersion);\n return envDef;\n }\n\n /**\n * an env can be configured on a component in two ways:\n * 1) explicitly inside \"teambit.envs/envs\". `{ \"teambit.envs/envs\": { \"env\": \"my-env\" } }`\n * 2) the env aspect is set on the variant as any other aspect, e.g. `{ \"my-env\": {} }`\n *\n * this method returns only #2\n */\n getEnvsNotFromEnvsConfig(component: Component): EnvDefinition[] {\n return component.state.aspects.entries.reduce((acc: EnvDefinition[], aspectEntry) => {\n const envDef = this.getEnvDefinitionById(aspectEntry.id);\n if (envDef) acc.push(envDef);\n return acc;\n }, []);\n }\n\n getEnvIdFromEnvsLegacyExtensions(extensions: ExtensionDataList): string | undefined {\n const envsAspect = extensions.findCoreExtension(EnvsAspect.id);\n const envIdFromEnvsConfig = envsAspect?.data.id;\n return envIdFromEnvsConfig;\n }\n\n /**\n * @deprecated DO NOT USE THIS METHOD ANYMORE!!! (PLEASE USE .calculateEnvId() instead!)\n */\n async calculateEnvIdFromExtensions(extensions: ExtensionDataList): Promise<string> {\n // Search first for env configured via envs aspect itself\n const envsAspect = extensions.findCoreExtension(EnvsAspect.id);\n const envIdFromEnvsConfig = envsAspect?.config.env;\n\n const envIdFromEnvsConfigWithoutVersion = envIdFromEnvsConfig\n ? ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion()\n : undefined;\n\n if (envIdFromEnvsConfig && this.isCoreEnv(envIdFromEnvsConfig)) {\n return envIdFromEnvsConfig;\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = extensions.find((extension) => {\n if (extension.extensionId) {\n return (\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString() ||\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString({ ignoreVersion: true })\n );\n }\n return envIdFromEnvsConfigWithoutVersion === extension.stringId;\n });\n if (matchedEntry?.id) return matchedEntry?.stringId;\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n const ids: string[] = [];\n extensions.forEach((extension) => {\n if (extension.extensionId) {\n ids.push(extension.extensionId.toString());\n } else {\n ids.push(extension.stringId);\n }\n });\n const envId = await this.findFirstEnv(ids);\n const finalId = envId || this.getDefaultEnv().id;\n return finalId;\n }\n\n /**\n * @deprecated DO NOT USE THIS METHOD ANYMORE!!! (PLEASE USE .calculateEnv() instead!)\n */\n async calculateEnvFromExtensions(extensions: ExtensionDataList): Promise<EnvDefinition> {\n // Search first for env configured via envs aspect itself\n const envsAspect = extensions.findCoreExtension(EnvsAspect.id);\n const envIdFromEnvsConfig = envsAspect?.config.env;\n let envIdFromEnvsConfigWithoutVersion;\n\n if (envIdFromEnvsConfig) {\n envIdFromEnvsConfigWithoutVersion = ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion();\n const envDef = this.getEnvDefinitionByStringId(envIdFromEnvsConfigWithoutVersion);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = extensions.find((extension) => {\n if (extension.extensionId) {\n return (\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString() ||\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString({ ignoreVersion: true })\n );\n }\n return envIdFromEnvsConfigWithoutVersion === extension.stringId;\n });\n if (matchedEntry) {\n // during the tag process, the version in the aspect-entry-id is changed and is not the\n // same as it was when it registered to the slot.\n const envDef = this.getEnvDefinitionByLegacyExtension(matchedEntry);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n // Do not allow a non existing env\n // this.printWarningIfFirstTime(\n // matchedEntry.id.toString(),\n // `environment with ID: ${matchedEntry.id.toString()} was not found`\n // );\n }\n // Do not allow configure teambit.envs/envs on the component without configure the env aspect itself\n // const errMsg = new EnvNotConfiguredForComponent(envIdFromEnvsConfig).message;\n // this.printWarningIfFirstTime(envIdFromEnvsConfig, errMsg);\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n const ids: string[] = [];\n extensions.forEach((extension) => {\n if (extension.extensionId) {\n ids.push(extension.extensionId.toString());\n } else {\n ids.push(extension.stringId);\n }\n });\n const envId = await this.findFirstEnv(ids);\n const envDef = envId ? this.getEnvDefinitionByStringId(envId) : undefined;\n\n return envDef || this.getDefaultEnv();\n }\n\n /**\n * This function finds the first environment ID from a list of IDs by checking if it is register as env (to the slot).\n * or contains env.jsonc file\n * @param {string[]} ids - `ids` is an array of string values representing environment IDs. The function `findFirstEnv`\n * takes this array as input and returns a Promise that resolves to a string value representing the first environment ID\n * that matches certain conditions.\n * @returns The `findFirstEnv` function returns a Promise that resolves to a string or undefined. The string represents\n * the ID of the first environment that matches the conditions specified in the function, or undefined if no environment\n * is found.\n */\n private async findFirstEnv(ids: string[]): Promise<string | undefined> {\n let isFoundWithoutVersion = false;\n const envId = await pLocate(ids, async (id) => {\n const idWithoutVersion = id.split('@')[0];\n if (this.isCoreEnv(idWithoutVersion)) return true;\n if (isCoreAspect(idWithoutVersion)) return false;\n const envDef = this.getEnvDefinitionByStringId(id);\n if (envDef) return true;\n const envDefWithoutVersion = this.getEnvDefinitionByStringId(idWithoutVersion);\n if (envDefWithoutVersion) {\n isFoundWithoutVersion = true;\n return true;\n }\n const envComponent = await this.getEnvComponentByEnvId(id);\n const hasManifest = this.hasEnvManifest(envComponent);\n if (hasManifest) return true;\n const isUsingEnvEnv = this.isUsingEnvEnv(envComponent);\n return !!isUsingEnvEnv;\n });\n let finalEnvId;\n if (envId) {\n finalEnvId = isFoundWithoutVersion ? envId?.split('@')[0] : envId;\n this.envIds.add(envId);\n }\n return finalEnvId;\n }\n\n private getEnvDefinitionByLegacyExtension(extension: ExtensionDataEntry): EnvDefinition | undefined {\n const envDef = extension.extensionId\n ? this.getEnvDefinitionById(extension.extensionId)\n : this.getEnvDefinitionByStringId(extension.stringId);\n return envDef;\n }\n\n getEnvIdFromEnvsConfig(component: Component): string | undefined {\n const envsAspect = component.state.aspects.get(EnvsAspect.id);\n return envsAspect?.config.env;\n }\n\n getEnvDefinition(id: ComponentID) {\n const allVersions = this.envSlot.toArray();\n const all = allVersions.filter(([envId]) => envId.includes(id.toStringWithoutVersion()));\n const first = head(all);\n if (!first) return undefined;\n const [envId, env] = first;\n return new EnvDefinition(envId, env);\n }\n\n getEnvDefinitionById(id: ComponentID): EnvDefinition | undefined {\n const envDef =\n this.getEnvDefinitionByStringId(id.toString()) ||\n this.getEnvDefinitionByStringId(id.toString({ ignoreVersion: true }));\n return envDef;\n }\n\n public getEnvDefinitionByStringId(envId: string): EnvDefinition | undefined {\n const env = this.envSlot.get(envId);\n if (env) {\n return new EnvDefinition(envId, env as Environment);\n }\n return undefined;\n }\n\n getEnvFromComponent(envComponent: Component): EnvDefinition | undefined {\n const env = this.getEnvDefinitionById(envComponent.id);\n return env;\n }\n\n /**\n * Return the env definition of teambit.envs/env\n */\n getEnvsEnvDefinition(): EnvDefinition {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getEnvDefinitionByStringId('teambit.envs/env')!;\n }\n\n private printWarningIfFirstTime(envId: string, message: string) {\n if (!this.alreadyShownWarning[envId] && !this.failedToLoadEnvs.has(envId)) {\n this.alreadyShownWarning[envId] = true;\n this.logger.consoleWarning(message);\n this.addFailedToLoadEnvs(envId);\n }\n }\n\n /**\n * determines whether an env is registered.\n */\n public isEnvRegistered(id: string) {\n return Boolean(this.envSlot.get(id));\n }\n\n isUsingAspectEnv(component: Component): boolean {\n const data = this.getEnvData(component);\n if (!data) return false;\n return data.type === 'aspect';\n }\n\n isUsingEnvEnv(component: Component): boolean {\n const data = this.getEnvData(component);\n if (!data) return false;\n return data.type === 'env';\n }\n\n /**\n * Check if the given component is an env component.\n * @param component\n * @returns\n */\n isEnv(component: Component): boolean {\n return (\n this.isUsingEnvEnv(component) ||\n this.isEnvRegistered(component.id.toString()) ||\n this.isEnvRegistered(component.id.toStringWithoutVersion())\n );\n }\n\n /**\n * register a new environment service.\n */\n registerService(...envServices: EnvService<any>[]) {\n this.servicesRegistry.register(envServices);\n return this;\n }\n\n /**\n * get list of services enabled on an env.\n */\n getServices(env: EnvDefinition): EnvServiceList {\n const allServices = this.servicesRegistry.toArray();\n const services: [string, EnvService<any>][] = [];\n allServices.forEach(([id, currentServices]) => {\n currentServices.forEach((service) => {\n try {\n if (this.implements(env, service)) {\n services.push([id, service]);\n }\n } catch (err) {\n this.logger.warn(`failed loading service ${id} for env ${env.id}`);\n }\n });\n });\n return new EnvServiceList(env, services);\n }\n\n implements(env: EnvDefinition, service: EnvService<any>) {\n // TODO: remove this after refactoring everything and remove getDescriptor from being optional.\n if (!service.getDescriptor) return false;\n return !!service.getDescriptor(env);\n }\n\n /**\n * register an environment.\n */\n registerEnv(env: Environment) {\n return this.envSlot.register(env);\n }\n\n /**\n * register an env.jsonc merge customizer.\n */\n registerEnvJsoncMergeCustomizer(customizer: EnvJsoncMergeCustomizer) {\n return this.envJsoncMergeCustomizerSlot.register(customizer);\n }\n\n async addNonLoadedEnvAsComponentIssues(components: Component[]) {\n await pMapSeries(components, async (component) => {\n const envId = await this.calculateEnvId(component);\n const envIdStr = envId.toString();\n if (!this.isEnvRegistered(envIdStr)) {\n this.addFailedToLoadEnvs(envIdStr);\n // If there is no version and the env is not in the workspace this is not valid\n // you can't set external env without version\n if (!envIdStr.includes('@')) {\n const foundComp = components.find((c) => c.id.toStringWithoutVersion() === envIdStr);\n if (!foundComp) {\n component.state.issues.getOrCreate(IssuesClasses.ExternalEnvWithoutVersion).data = {\n envId: envIdStr,\n componentId: component.id.toString(),\n };\n } else {\n component.state.issues.getOrCreate(IssuesClasses.NonLoadedEnv).data = envIdStr;\n }\n } else {\n component.state.issues.getOrCreate(IssuesClasses.NonLoadedEnv).data = envIdStr;\n }\n }\n });\n }\n\n // refactor here\n private async createRuntime(components: Component[]): Promise<Runtime> {\n return new Runtime(await this.aggregateByDefs(components), this.logger);\n }\n\n // :TODO can be refactored to few utilities who will make repeating this very easy.\n private async aggregateByDefs(components: Component[]): Promise<EnvRuntime[]> {\n this.throwForDuplicateComponents(components);\n const envsMap = {};\n components.forEach((component: Component) => {\n const envDef = this.getEnv(component);\n const envId = envDef.id;\n const env = envDef.env;\n // handle config as well when aggregating envs.\n if (envsMap[envId]) envsMap[envId].components.push(component);\n else\n envsMap[envId] = {\n components: [component],\n env,\n };\n });\n\n return Promise.all(\n Object.keys(envsMap).map(async (key) => {\n const envAspectDef = await this.getEnvAspectDef(key);\n return new EnvRuntime(key, envsMap[key].env, envsMap[key].components, envAspectDef);\n })\n );\n }\n\n private async getEnvAspectDef(envId: string): Promise<AspectDefinition> {\n const host = this.componentMain.getHost();\n const id = await host.resolveComponentId(envId);\n // We don't want to filter by runtime here as we want to also get envs that configured as plugins. so they don't\n // contain the runtime path.\n const resolvedAspects = await host.resolveAspects(MainRuntime.name, [id], {\n requestedOnly: true,\n filterByRuntime: false,\n useScopeAspectsCapsule: true,\n });\n const def = resolvedAspects[0];\n\n return def;\n }\n\n private throwForDuplicateComponents(components: Component[]) {\n const idsStr = components.map((c) => c.id.toString());\n const duplications = findDuplications(idsStr);\n if (duplications.length) {\n throw new Error(`found duplicated components: ${duplications.join(', ')}`);\n }\n }\n\n static slots = [\n Slot.withType<Environment>(),\n Slot.withType<EnvService<any>>(),\n Slot.withType<EnvJsoncMergeCustomizerRegistry>(),\n ];\n\n static dependencies = [GraphqlAspect, LoggerAspect, ComponentAspect, CLIAspect, WorkerAspect, IssuesAspect];\n\n static async provider(\n [graphql, loggerAspect, component, cli, worker, issues]: [\n GraphqlMain,\n LoggerMain,\n ComponentMain,\n CLIMain,\n WorkerMain,\n IssuesMain,\n ],\n config: EnvsConfig,\n [envSlot, servicesRegistry, envJsoncMergeCustomizerSlot]: [\n EnvsRegistry,\n ServicesRegistry,\n EnvJsoncMergeCustomizerRegistry,\n ],\n context: Harmony\n ) {\n const logger = loggerAspect.createLogger(EnvsAspect.id);\n const envs = new EnvsMain(\n config,\n context,\n envSlot,\n logger,\n servicesRegistry,\n component,\n loggerAspect,\n worker,\n envJsoncMergeCustomizerSlot\n );\n component.registerShowFragments([new EnvFragment(envs)]);\n if (issues) issues.registerAddComponentsIssues(envs.addNonLoadedEnvAsComponentIssues.bind(envs));\n\n const envsCmd = new EnvsCmd(envs, component);\n envsCmd.commands = [new ListEnvsCmd(envs, component), new GetEnvCmd(envs, component)];\n cli.register(envsCmd);\n graphql.register(environmentsSchema(envs));\n return envs;\n }\n}\n\nEnvsAspect.addRuntime(EnvsMain);\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_path","data","require","_findRoot","_interopRequireDefault","_toolboxModules","_fsExtra","_pLocate","_commentJson","_cli","_component","_graphql","_issues","_pMapSeries","_componentIssues","_harmony","_logger","_bitError","_toolboxArray","_lodash","_worker","_componentId","_environments","_environments2","_runtime","_envDefinition","_envServiceList","_envs","_env","_exceptions","_env2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_ENV","exports","EnvsMain","icon","constructor","config","harmony","envSlot","logger","servicesRegistry","componentMain","loggerMain","workerMain","envJsoncMergeCustomizerSlot","Set","createEnvironment","components","createRuntime","setCoreAspectIds","ids","coreAspectIds","isCoreAspect","id","includes","addFailedToLoadEnvs","failedToLoadEnvs","add","envIds","addFailedToLoadExt","failedToLoadExt","has","resetFailedToLoadEnvs","clear","getFailedToLoadEnvs","Array","from","extId","uniq","getDefaultEnv","defaultEnv","get","Error","EnvDefinition","getCoreEnvsIds","compose","targetEnv","envTransformers","a","reduce","acc","transformer","override","propsToOverride","env","merge","sourceEnv","allNames","prototype","getPrototypeOf","name","getOwnPropertyNames","key","fn","bind","hasEnvManifest","envComponent","legacyFiles","undefined","files","filesystem","envJson","find","file","relative","getEnvManifest","object","parse","contents","toString","resolvedObject","recursivelyMergeWithParentManifest","path","originPath","extends","parentPackageName","parentPath","resolveFrom","parentResolvedPath","findRoot","existsSync","info","parentEnvJsoncPath","map","fileName","join","filePath","consoleWarning","parentStr","readFileSync","parentObject","mergedObject","mergeEnvManifests","parent","child","merged","mergeCustomizer","getAllRegisteredEnvJsoncCustomizers","customizer","oneMerged","hasEnvManifestById","envId","requesting","component","getEnvComponentByEnvId","getEnvData","envsData","state","aspects","EnvsAspect","getEnvIdFromEnvsData","ignoreVersion","rawEnvId","envIdWithoutVersion","ComponentID","fromString","toStringWithoutVersion","getEnvId","envIdFromEnvData","withVersion","resolveEnv","withVersionMatch","toArray","withVersionMatchId","exactMatch","exactMatchId","EnvNotConfiguredForComponent","isUsingCoreEnv","isCoreEnv","getEnv","envDef","getEnvDefinitionByStringId","EnvNotFound","getEnvComponent","host","getHost","newId","resolveComponentId","BitError","getOrCalculateEnv","calculateEnv","getDescriptor","calcDescriptor","opts","componentDescriptor","getComponentEnvDescriptor","envComponentSelfDescriptor","getEnvSelfDescriptor","result","self","isEnvRegistered","getEnvFromComponent","rawServices","getServices","services","toObject","selfDescriptor","getEnvDescriptorFromEnvDef","__getDescriptor","systemDescriptor","type","split","description","matchedEntry","entries","aspectEntry","calculateEnvId","envIdFromEnvsConfig","getEnvIdFromEnvsConfig","envIdFromEnvsConfigWithoutVersion","findFirstEnv","finalId","getEnvDefinitionById","skipWarnings","printWarningIfFirstTime","envDefFromList","getAllEnvsConfiguredOnComponent","getEnvFromEnvsConfig","getEnvsNotFromEnvsConfig","hasEnvConfigured","Boolean","getAllRegisteredEnvsIds","envData","getAllRegisteredEnvs","customizerEntry","getEnvPlugin","EnvPlugin","getEnvIdFromEnvsLegacyExtensions","extensions","envsAspect","findCoreExtension","calculateEnvIdFromExtensions","extension","extensionId","stringId","calculateEnvFromExtensions","getEnvDefinitionByLegacyExtension","isFoundWithoutVersion","pLocate","idWithoutVersion","envDefWithoutVersion","hasManifest","isUsingEnvEnv","finalEnvId","getEnvDefinition","allVersions","all","first","head","getEnvsEnvDefinition","message","alreadyShownWarning","isUsingAspectEnv","isEnv","registerService","envServices","register","allServices","currentServices","service","implements","warn","EnvServiceList","registerEnv","registerEnvJsoncMergeCustomizer","addNonLoadedEnvAsComponentIssues","pMapSeries","envIdStr","foundComp","c","issues","getOrCreate","IssuesClasses","ExternalEnvWithoutVersion","componentId","NonLoadedEnv","Runtime","aggregateByDefs","throwForDuplicateComponents","envsMap","Promise","envAspectDef","getEnvAspectDef","EnvRuntime","resolvedAspects","resolveAspects","MainRuntime","requestedOnly","filterByRuntime","useScopeAspectsCapsule","def","idsStr","duplications","findDuplications","provider","graphql","loggerAspect","cli","worker","context","createLogger","envs","registerShowFragments","EnvFragment","registerAddComponentsIssues","envsCmd","EnvsCmd","commands","ListEnvsCmd","GetEnvCmd","environmentsSchema","Slot","withType","GraphqlAspect","LoggerAspect","ComponentAspect","CLIAspect","WorkerAspect","IssuesAspect","addRuntime"],"sources":["environments.main.runtime.ts"],"sourcesContent":["import { join } from 'path';\nimport findRoot from 'find-root';\nimport { resolveFrom } from '@teambit/toolbox.modules.module-resolver';\nimport { existsSync, readFileSync } from 'fs-extra';\nimport pLocate from 'p-locate';\nimport { parse } from 'comment-json';\nimport { SourceFile } from '@teambit/component.sources';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain } from '@teambit/component';\nimport type { EnvPolicyConfigObject } from '@teambit/dependency-resolver';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { IssuesAspect, IssuesMain } from '@teambit/issues';\nimport type { EnvJsoncPatterns } from '@teambit/dev-files';\nimport pMapSeries from 'p-map-series';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { Harmony, Slot, SlotRegistry } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport type { AspectDefinition } from '@teambit/aspect-loader';\nimport { ExtensionDataList, ExtensionDataEntry } from '@teambit/legacy.extension-data';\nimport { BitError } from '@teambit/bit-error';\nimport { findDuplications } from '@teambit/toolbox.array.duplications-finder';\nimport { head, uniq } from 'lodash';\nimport { WorkerAspect, WorkerMain } from '@teambit/worker';\nimport { ComponentID } from '@teambit/component-id';\nimport { EnvService } from './services';\nimport { Environment } from './environment';\nimport { EnvsAspect } from './environments.aspect';\nimport { environmentsSchema } from './environments.graphql';\nimport { EnvRuntime, Runtime } from './runtime';\nimport { EnvDefinition } from './env-definition';\nimport { EnvServiceList } from './env-service-list';\nimport { EnvsCmd, GetEnvCmd, ListEnvsCmd } from './envs.cmd';\nimport { EnvFragment } from './env.fragment';\nimport { EnvNotFound, EnvNotConfiguredForComponent } from './exceptions';\nimport { EnvPlugin } from './env.plugin';\n\nexport type EnvJsonc = {\n extends?: string;\n policy?: EnvPolicyConfigObject;\n patterns?: EnvJsoncPatterns;\n};\n\nexport type EnvJsoncMergeCustomizer = (parentObj: EnvJsonc, childObj: EnvJsonc) => Partial<EnvJsonc>;\n\nexport type EnvsRegistry = SlotRegistry<Environment>;\nexport type EnvJsoncMergeCustomizerRegistry = SlotRegistry<EnvJsoncMergeCustomizer>;\n\nexport type EnvsConfig = {\n env: string;\n options: EnvOptions;\n};\n\ntype GetCalcEnvOptions = {\n skipWarnings?: boolean;\n};\n\nexport type EnvOptions = {};\n\nexport type EnvTransformer = (env: Environment) => Environment;\n\nexport type ServicesRegistry = SlotRegistry<Array<EnvService<any>>>;\n\nexport type RegularCompDescriptor = {\n id: string;\n icon?: string;\n type?: string;\n name?: string;\n description?: string;\n};\nexport type EnvCompDescriptorProps = RegularCompDescriptor & {\n services?: {\n env: {\n id: string;\n icon: string;\n name?: string;\n description?: string;\n };\n services: Array<{\n id: string;\n name?: string;\n description?: string;\n data: any;\n }>;\n };\n};\n\nexport type EnvCompDescriptor = EnvCompDescriptorProps & {\n self?: EnvCompDescriptorProps;\n};\n\nexport type Descriptor = RegularCompDescriptor | EnvCompDescriptor;\n\nexport const DEFAULT_ENV = 'teambit.harmony/node';\n\nexport class EnvsMain {\n /**\n * Envs that are failed to load\n */\n private failedToLoadEnvs = new Set<string>();\n /**\n * Extensions that are failed to load\n * We use this as sometime when we couldn't load an extension we don't know if it's an env or not\n * We should ideally take it from the aspect loader aspect, but right now the aspect loader is using envs\n */\n private failedToLoadExt = new Set<string>();\n /**\n * Ids of envs (not neccesrraly loaded successfully)\n */\n public envIds = new Set<string>();\n\n static runtime = MainRuntime;\n\n private alreadyShownWarning = {};\n\n private coreAspectIds: string[] = [];\n\n /**\n * icon of the extension.\n */\n icon() {\n return `<svg width=\"50\" height=\"50\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"25\" cy=\"25\" r=\"20\"/>\n </svg>`;\n }\n\n constructor(\n /**\n * environments extension configuration.\n */\n readonly config: EnvsConfig,\n\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for allowing extensions to register new environment.\n */\n private envSlot: EnvsRegistry,\n\n private logger: Logger,\n\n private servicesRegistry: ServicesRegistry,\n\n private componentMain: ComponentMain,\n\n private loggerMain: LoggerMain,\n\n private workerMain: WorkerMain,\n\n private envJsoncMergeCustomizerSlot: EnvJsoncMergeCustomizerRegistry\n ) {}\n\n /**\n * creates a new runtime environments for a set of components.\n */\n async createEnvironment(components: Component[]): Promise<Runtime> {\n return this.createRuntime(components);\n }\n\n setCoreAspectIds(ids: string[]) {\n this.coreAspectIds = ids;\n }\n isCoreAspect(id: string) {\n return this.coreAspectIds.includes(id);\n }\n\n /**\n *\n * @param id\n */\n /**\n * This function adds an extension ID to a set of failed to load extensions.\n * This mostly used by the aspect loader to add such issues\n * Then it is used to hide different errors that are caused by the same issue.\n * @param {string} id - string - represents the unique identifier of an extension that failed to load.\n */\n addFailedToLoadEnvs(id: string) {\n this.failedToLoadEnvs.add(id);\n this.envIds.add(id);\n }\n\n addFailedToLoadExt(id: string) {\n this.failedToLoadExt.add(id);\n if (this.envIds.has(id)) {\n this.addFailedToLoadEnvs(id);\n }\n }\n\n resetFailedToLoadEnvs() {\n this.failedToLoadEnvs.clear();\n this.failedToLoadExt.clear();\n }\n\n getFailedToLoadEnvs() {\n const failedToLoadEnvs = Array.from(this.failedToLoadEnvs);\n // Add all extensions which are also envs\n for (const extId of this.failedToLoadExt) {\n if (this.envIds.has(extId)) {\n failedToLoadEnvs.push(extId);\n }\n }\n return uniq(failedToLoadEnvs);\n }\n\n /**\n * get the configured default env.\n */\n getDefaultEnv(): EnvDefinition {\n const defaultEnv = this.envSlot.get(DEFAULT_ENV);\n if (!defaultEnv) throw new Error('default env must be set.');\n\n return new EnvDefinition(DEFAULT_ENV, defaultEnv);\n }\n\n getCoreEnvsIds(): string[] {\n return [\n 'teambit.harmony/aspect',\n 'teambit.react/react',\n 'teambit.harmony/node',\n 'teambit.react/react-native',\n 'teambit.html/html',\n 'teambit.mdx/mdx',\n 'teambit.envs/env',\n 'teambit.mdx/readme',\n 'teambit.harmony/bit-custom-aspect',\n ];\n }\n\n /**\n * compose a new environment from a list of environment transformers.\n */\n compose(targetEnv: Environment, envTransformers: EnvTransformer[]) {\n const a = envTransformers.reduce((acc, transformer) => {\n acc = transformer(acc);\n return acc;\n }, targetEnv);\n\n return a;\n }\n\n /**\n * create an env transformer which overrides specific env properties.\n */\n override(propsToOverride: Environment): EnvTransformer {\n return (env: Environment) => {\n return this.merge(propsToOverride, env);\n };\n }\n\n /**\n * compose two environments into one.\n */\n merge<T extends Environment, S extends Environment>(targetEnv: Environment, sourceEnv: Environment): T & S {\n const allNames = new Set<string>();\n const keys = ['icon', 'name', 'description'];\n for (let o = sourceEnv; o !== Object.prototype; o = Object.getPrototypeOf(o)) {\n for (const name of Object.getOwnPropertyNames(o)) {\n allNames.add(name);\n }\n }\n\n allNames.forEach((key: string) => {\n const fn = sourceEnv[key];\n if (targetEnv[key]) return;\n if (keys.includes(key)) targetEnv[key] = fn;\n if (!fn || !fn.bind) {\n return;\n }\n targetEnv[key] = fn.bind(sourceEnv);\n });\n\n return targetEnv as T & S;\n }\n\n /**\n * This function checks if an environment manifest file exists in a given component or set of legacy files.\n * @param {Component} [envComponent] - A component object that represents an environment. It contains information about\n * the files and directories that make up the environment.\n * @param {SourceFile[]} [legacyFiles] - An optional array of SourceFile objects representing the files in the legacy\n * file system. If this parameter is not provided, the function will attempt to retrieve the files from the envComponent\n * parameter.\n * @returns a boolean value indicating whether an `env.jsonc` or `env.json` file exists in the `files` array of either\n * the `envComponent` object or the `legacyFiles` array. If neither `envComponent` nor `legacyFiles` are provided, the\n * function returns `undefined`.\n */\n hasEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): boolean | undefined {\n if (!envComponent && !legacyFiles) return undefined;\n // @ts-ignore\n const files = legacyFiles || envComponent.filesystem.files;\n const envJson = files.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n\n if (!envJson) return false;\n return true;\n }\n\n getEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): EnvJsonc | undefined {\n // TODO: maybe throw an error here?\n if (!envComponent && !legacyFiles) return undefined;\n // @ts-ignore\n const files = legacyFiles || envComponent.filesystem.files;\n const envJson = files.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n\n if (!envJson) return undefined;\n\n const object: EnvJsonc = parse(envJson.contents.toString('utf8'), undefined, true);\n const resolvedObject = this.recursivelyMergeWithParentManifest(object, envJson.path);\n return resolvedObject;\n }\n\n recursivelyMergeWithParentManifest(object: EnvJsonc, originPath: string): EnvJsonc {\n if (!object.extends) return object;\n const parentPackageName = object.extends;\n const parentPath = resolveFrom(originPath, [parentPackageName]);\n const parentResolvedPath = findRoot(parentPath);\n if (!parentResolvedPath || !existsSync(parentResolvedPath)) {\n this.logger.info(`failed finding parent manifest for ${parentPackageName} at ${parentResolvedPath}`);\n }\n const parentEnvJsoncPath = ['env.jsonc', 'env.json']\n .map((fileName) => join(parentResolvedPath, fileName))\n .find((filePath) => {\n return existsSync(filePath);\n });\n if (!parentEnvJsoncPath) {\n this.logger.consoleWarning(\n `failed finding parent manifest for ${parentPackageName} at ${parentResolvedPath} referred from ${originPath}`\n );\n return object;\n }\n const parentStr = readFileSync(parentEnvJsoncPath).toString('utf8');\n const parentObject: EnvJsonc = parse(parentStr, undefined, true);\n const mergedObject = this.mergeEnvManifests(parentObject, object);\n if (mergedObject.extends) {\n return this.recursivelyMergeWithParentManifest(mergedObject, parentEnvJsoncPath);\n }\n return mergedObject;\n }\n\n mergeEnvManifests(parent: EnvJsonc, child: EnvJsonc): EnvJsonc {\n let merged: EnvJsonc = {};\n const mergeCustomizer = this.getAllRegisteredEnvJsoncCustomizers();\n for (const customizer of mergeCustomizer) {\n const oneMerged = customizer(parent, child);\n merged = { ...merged, ...oneMerged };\n }\n // Take extends specifically from the parent so we can propagate it to the next parent\n if (parent.extends) {\n merged.extends = parent.extends;\n }\n return merged;\n }\n\n async hasEnvManifestById(envId: string, requesting: string): Promise<boolean | undefined> {\n const component = await this.getEnvComponentByEnvId(envId, requesting);\n return this.hasEnvManifest(component);\n }\n\n getEnvData(component: Component): Descriptor {\n let envsData = component.state.aspects.get(EnvsAspect.id);\n if (!envsData) {\n // TODO: remove this once we re-export old components used to store the data here\n envsData = component.state.aspects.get('teambit.workspace/workspace');\n }\n if (!envsData) throw new Error(`env was not configured on component ${component.id.toString()}`);\n return envsData.data as Descriptor;\n }\n\n /**\n * Return the id of the env as configured in the envs data (without version by default)\n * The reason it's not contain version by default is that we want to take the version from the aspect defined on the component itself\n * As this version is stay up to date during tagging the env along with the component\n * @param component\n * @param ignoreVersion\n */\n private getEnvIdFromEnvsData(component: Component, ignoreVersion = true): string | undefined {\n const envsData = this.getEnvData(component);\n if (!envsData) return undefined;\n const rawEnvId = envsData.id;\n if (!rawEnvId) return undefined;\n if (!ignoreVersion) return rawEnvId;\n const envIdWithoutVersion = ComponentID.fromString(rawEnvId).toStringWithoutVersion();\n return envIdWithoutVersion;\n }\n\n /**\n * get the env id of the given component.\n */\n getEnvId(component: Component): string {\n const envIdFromEnvData = this.getEnvIdFromEnvsData(component);\n if (!envIdFromEnvData) {\n // This should never happen\n throw new Error(`no env found for ${component.id.toString()}`);\n }\n const withVersion = this.resolveEnv(component, envIdFromEnvData);\n const withVersionMatch = this.envSlot.toArray().find(([envId]) => {\n return withVersion?.toString() === envId;\n });\n const withVersionMatchId = withVersionMatch?.[0];\n if (withVersionMatchId) return withVersionMatchId;\n\n // Handle core envs\n const exactMatch = this.envSlot.toArray().find(([envId]) => {\n return envIdFromEnvData === envId;\n });\n\n const exactMatchId = exactMatch?.[0];\n if (exactMatchId) return exactMatchId;\n\n if (!withVersion) throw new EnvNotConfiguredForComponent(envIdFromEnvData, component.id.toString());\n return withVersion.toString();\n }\n\n isUsingCoreEnv(component: Component): boolean {\n const envId = this.getEnvId(component);\n return this.isCoreEnv(envId);\n }\n\n isCoreEnv(envId: string): boolean {\n return this.getCoreEnvsIds().includes(envId);\n }\n\n /**\n * get the env of the given component.\n * In case you are asking for the env during on load you should use calculateEnv instead\n */\n getEnv(component: Component): EnvDefinition {\n const id = this.getEnvId(component);\n const envDef = this.getEnvDefinitionByStringId(id);\n if (envDef) {\n return envDef;\n }\n // Do not allow a non existing env\n throw new EnvNotFound(id, component.id.toString());\n }\n\n /**\n * get the env component of the given component.\n */\n async getEnvComponent(component: Component): Promise<Component> {\n const envId = this.getEnvId(component);\n return this.getEnvComponentByEnvId(envId, component.id.toString());\n }\n\n /**\n * get the env component by the env id.\n */\n async getEnvComponentByEnvId(envId: string, requesting?: string): Promise<Component> {\n const host = this.componentMain.getHost();\n const newId = await host.resolveComponentId(envId);\n const envComponent = await host.get(newId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId} used by component ${requesting || 'unknown'}`);\n }\n return envComponent;\n }\n\n /**\n * get the env of the given component.\n * This will try to use the regular getEnv but fallback to the calculate env (in case you are using it during on load)\n * This is safe to be used on onLoad as well\n */\n getOrCalculateEnv(component: Component): EnvDefinition {\n try {\n return this.getEnv(component);\n } catch {\n return this.calculateEnv(component);\n }\n }\n\n /**\n * get an environment Descriptor.\n */\n getDescriptor(component: Component): Descriptor | undefined {\n const envsData = this.getEnvData(component);\n envsData.id = this.resolveEnv(component, envsData.id)?.toString() || envsData.id;\n return envsData;\n }\n\n async calcDescriptor(component: Component, opts: GetCalcEnvOptions = {}): Promise<Descriptor | undefined> {\n const componentDescriptor = await this.getComponentEnvDescriptor(component, opts);\n if (!componentDescriptor) return undefined;\n const envComponentSelfDescriptor = await this.getEnvSelfDescriptor(component);\n const result = envComponentSelfDescriptor\n ? { ...componentDescriptor, self: envComponentSelfDescriptor }\n : componentDescriptor;\n return result;\n }\n\n /**\n * Get env descriptor from the env itself if the component is an env\n * This will be empty for regular component, and will only contain data for env themself\n */\n private async getEnvSelfDescriptor(envComponent: Component): Promise<EnvCompDescriptorProps | undefined> {\n // !important calculate only on the env itself.\n if (!this.isEnvRegistered(envComponent.id.toString())) {\n return undefined;\n }\n\n const envDef = this.getEnvFromComponent(envComponent);\n if (!envDef) return undefined;\n\n const rawServices = this.getServices(envDef);\n const services = rawServices.toObject();\n // const selfDescriptor = (await this.getEnvDescriptorFromEnvDef(envDef)) || {};\n const selfDescriptor = await this.getEnvDescriptorFromEnvDef(envDef);\n\n if (!selfDescriptor) return undefined;\n return {\n ...selfDescriptor,\n services,\n };\n }\n\n /**\n * Get env descriptor from the env that a given component is using\n */\n private async getComponentEnvDescriptor(\n component: Component,\n opts: GetCalcEnvOptions = {}\n ): Promise<RegularCompDescriptor | undefined> {\n const envDef = this.calculateEnv(component, opts);\n return this.getEnvDescriptorFromEnvDef(envDef);\n }\n\n private async getEnvDescriptorFromEnvDef(envDef: EnvDefinition): Promise<RegularCompDescriptor | undefined> {\n if (!envDef.env.__getDescriptor || typeof envDef.env.__getDescriptor !== 'function') {\n return undefined;\n }\n const systemDescriptor = await envDef.env.__getDescriptor();\n\n return {\n type: systemDescriptor.type,\n // Make sure to store the env id in the data without the version\n // The version should always come from the aspect id configured on the component\n id: envDef.id.split('@')[0],\n name: envDef.name,\n icon: envDef.env.icon,\n description: envDef.description,\n };\n }\n\n resolveEnv(component: Component, id: string) {\n const matchedEntry = component.state.aspects.entries.find((aspectEntry) => {\n return id === aspectEntry.id.toString() || id === aspectEntry.id.toString({ ignoreVersion: true });\n });\n\n return matchedEntry?.id;\n }\n\n /**\n * This used to calculate the actual env during the component load.\n * Do not use it to get the env (use getEnv instead)\n * This should be used only during on load\n */\n async calculateEnvId(component: Component): Promise<ComponentID> {\n // Search first for env configured via envs aspect itself\n const envIdFromEnvsConfig = this.getEnvIdFromEnvsConfig(component);\n // if (!envIdFromEnvsConfig) return this.getDefaultEnv();\n const envIdFromEnvsConfigWithoutVersion = envIdFromEnvsConfig\n ? ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion()\n : undefined;\n\n if (envIdFromEnvsConfig && this.isCoreEnv(envIdFromEnvsConfig)) {\n return ComponentID.fromString(envIdFromEnvsConfig);\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = component.state.aspects.entries.find((aspectEntry) => {\n return (\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString() ||\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString({ ignoreVersion: true })\n );\n });\n\n if (matchedEntry?.id) return matchedEntry?.id;\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n let ids: string[] = [];\n component.state.aspects.entries.forEach((aspectEntry) => {\n ids.push(aspectEntry.id.toString());\n // ids.push(aspectEntry.id.toString({ ignoreVersion: true }));\n });\n ids = uniq(ids);\n const envId = await this.findFirstEnv(ids);\n const finalId = envId || this.getDefaultEnv().id;\n return ComponentID.fromString(finalId);\n }\n\n /**\n * This used to calculate the actual env during the component load.\n * Do not use it to get the env (use getEnv instead)\n * This should be used only during on load\n */\n calculateEnv(component: Component, opts: GetCalcEnvOptions = {}): EnvDefinition {\n // Search first for env configured via envs aspect itself\n const envIdFromEnvsConfig = this.getEnvIdFromEnvsConfig(component);\n let envIdFromEnvsConfigWithoutVersion;\n if (envIdFromEnvsConfig) {\n envIdFromEnvsConfigWithoutVersion = ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion();\n const envDef = this.getEnvDefinitionByStringId(envIdFromEnvsConfigWithoutVersion);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = component.state.aspects.entries.find((aspectEntry) => {\n return (\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString() ||\n envIdFromEnvsConfigWithoutVersion === aspectEntry.id.toString({ ignoreVersion: true })\n );\n });\n if (matchedEntry) {\n // during the tag process, the version in the aspect-entry-id is changed and is not the\n // same as it was when it registered to the slot.\n const envDef = this.getEnvDefinitionById(matchedEntry.id);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n if (!opts.skipWarnings) {\n // Do not allow a non existing env\n this.printWarningIfFirstTime(\n matchedEntry.id.toString(),\n `environment with ID: ${matchedEntry.id.toString()} configured on component ${component.id.toString()} was not loaded (run \"bit install\")`\n );\n }\n }\n // Do not allow configure teambit.envs/envs on the component without configure the env aspect itself\n // const errMsg = new EnvNotConfiguredForComponent(envIdFromEnvsConfig as string, component.id.toString()).message;\n // this.printWarningIfFirstTime(envIdFromEnvsConfig as string, errMsg);\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n let envDefFromList;\n component.state.aspects.entries.find((aspectEntry) => {\n const envDef = this.getEnvDefinitionById(aspectEntry.id);\n if (envDef) {\n envDefFromList = envDef;\n }\n return !!envDef;\n });\n\n if (envDefFromList) {\n this.envIds.add(envDefFromList.id);\n return envDefFromList;\n }\n return this.getDefaultEnv();\n }\n\n /**\n * an env can be configured on a component in two ways:\n * 1) explicitly inside \"teambit.envs/envs\". `{ \"teambit.envs/envs\": { \"env\": \"my-env\" } }`\n * 2) the env aspect is set on the variant as any other aspect, e.g. `{ \"my-env\": {} }`\n *\n * this method returns #1 if exists, otherwise, #2.\n */\n getAllEnvsConfiguredOnComponent(component: Component): EnvDefinition[] {\n // if a component has \"envs\" config, use it and ignore other components that are set up\n // in this components which happen to be envs.\n const envDef = this.getEnvFromEnvsConfig(component);\n if (envDef) {\n return [envDef];\n }\n\n return this.getEnvsNotFromEnvsConfig(component);\n }\n\n /**\n * whether a component has an env configured (either by variant or .bitmap).\n */\n hasEnvConfigured(component: Component): boolean {\n return Boolean(this.getAllEnvsConfiguredOnComponent(component).length);\n }\n\n getAllRegisteredEnvsIds(): string[] {\n return this.envSlot.toArray().map((envData) => envData[0]);\n }\n\n getAllRegisteredEnvs(): Environment[] {\n return this.envSlot.toArray().map((envData) => envData[1]);\n }\n\n getAllRegisteredEnvJsoncCustomizers(): EnvJsoncMergeCustomizer[] {\n return this.envJsoncMergeCustomizerSlot.toArray().map((customizerEntry) => customizerEntry[1]);\n }\n\n getEnvPlugin() {\n return new EnvPlugin(this.envSlot, this.servicesRegistry, this.loggerMain, this.workerMain, this.harmony);\n }\n\n /**\n * an env can be configured on a component in two ways:\n * 1) explicitly inside \"teambit.envs/envs\". `{ \"teambit.envs/envs\": { \"env\": \"my-env\" } }`\n * 2) the env aspect is set on the variant as any other aspect, e.g. `{ \"my-env\": {} }`\n *\n * this method returns only #1\n */\n getEnvFromEnvsConfig(component: Component): EnvDefinition | undefined {\n const envIdFromEnvsConfig = this.getEnvIdFromEnvsConfig(component);\n if (!envIdFromEnvsConfig) {\n return undefined;\n }\n const envIdFromEnvsConfigWithoutVersion = ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion();\n const envDef = this.getEnvDefinitionByStringId(envIdFromEnvsConfigWithoutVersion);\n return envDef;\n }\n\n /**\n * an env can be configured on a component in two ways:\n * 1) explicitly inside \"teambit.envs/envs\". `{ \"teambit.envs/envs\": { \"env\": \"my-env\" } }`\n * 2) the env aspect is set on the variant as any other aspect, e.g. `{ \"my-env\": {} }`\n *\n * this method returns only #2\n */\n getEnvsNotFromEnvsConfig(component: Component): EnvDefinition[] {\n return component.state.aspects.entries.reduce((acc: EnvDefinition[], aspectEntry) => {\n const envDef = this.getEnvDefinitionById(aspectEntry.id);\n if (envDef) acc.push(envDef);\n return acc;\n }, []);\n }\n\n getEnvIdFromEnvsLegacyExtensions(extensions: ExtensionDataList): string | undefined {\n const envsAspect = extensions.findCoreExtension(EnvsAspect.id);\n const envIdFromEnvsConfig = envsAspect?.data.id;\n return envIdFromEnvsConfig;\n }\n\n /**\n * @deprecated DO NOT USE THIS METHOD ANYMORE!!! (PLEASE USE .calculateEnvId() instead!)\n */\n async calculateEnvIdFromExtensions(extensions: ExtensionDataList): Promise<string> {\n // Search first for env configured via envs aspect itself\n const envsAspect = extensions.findCoreExtension(EnvsAspect.id);\n const envIdFromEnvsConfig = envsAspect?.config.env;\n\n const envIdFromEnvsConfigWithoutVersion = envIdFromEnvsConfig\n ? ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion()\n : undefined;\n\n if (envIdFromEnvsConfig && this.isCoreEnv(envIdFromEnvsConfig)) {\n return envIdFromEnvsConfig;\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = extensions.find((extension) => {\n if (extension.extensionId) {\n return (\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString() ||\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString({ ignoreVersion: true })\n );\n }\n return envIdFromEnvsConfigWithoutVersion === extension.stringId;\n });\n if (matchedEntry?.id) return matchedEntry?.stringId;\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n const ids: string[] = [];\n extensions.forEach((extension) => {\n if (extension.extensionId) {\n ids.push(extension.extensionId.toString());\n } else {\n ids.push(extension.stringId);\n }\n });\n const envId = await this.findFirstEnv(ids);\n const finalId = envId || this.getDefaultEnv().id;\n return finalId;\n }\n\n /**\n * @deprecated DO NOT USE THIS METHOD ANYMORE!!! (PLEASE USE .calculateEnv() instead!)\n */\n async calculateEnvFromExtensions(extensions: ExtensionDataList): Promise<EnvDefinition> {\n // Search first for env configured via envs aspect itself\n const envsAspect = extensions.findCoreExtension(EnvsAspect.id);\n const envIdFromEnvsConfig = envsAspect?.config.env;\n let envIdFromEnvsConfigWithoutVersion;\n\n if (envIdFromEnvsConfig) {\n envIdFromEnvsConfigWithoutVersion = ComponentID.fromString(envIdFromEnvsConfig).toStringWithoutVersion();\n const envDef = this.getEnvDefinitionByStringId(envIdFromEnvsConfigWithoutVersion);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n }\n\n // in some cases we have the id configured in the teambit.envs/envs but without the version\n // in such cases we won't find it in the slot\n // we search in the component aspect list a matching aspect which is match the id from the teambit.envs/envs\n if (envIdFromEnvsConfigWithoutVersion) {\n const matchedEntry = extensions.find((extension) => {\n if (extension.extensionId) {\n return (\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString() ||\n envIdFromEnvsConfigWithoutVersion === extension.extensionId.toString({ ignoreVersion: true })\n );\n }\n return envIdFromEnvsConfigWithoutVersion === extension.stringId;\n });\n if (matchedEntry) {\n // during the tag process, the version in the aspect-entry-id is changed and is not the\n // same as it was when it registered to the slot.\n const envDef = this.getEnvDefinitionByLegacyExtension(matchedEntry);\n if (envDef) {\n this.envIds.add(envDef.id);\n return envDef;\n }\n // Do not allow a non existing env\n // this.printWarningIfFirstTime(\n // matchedEntry.id.toString(),\n // `environment with ID: ${matchedEntry.id.toString()} was not found`\n // );\n }\n // Do not allow configure teambit.envs/envs on the component without configure the env aspect itself\n // const errMsg = new EnvNotConfiguredForComponent(envIdFromEnvsConfig).message;\n // this.printWarningIfFirstTime(envIdFromEnvsConfig, errMsg);\n }\n\n // in case there is no config in teambit.envs/envs search the aspects for the first env that registered as env\n const ids: string[] = [];\n extensions.forEach((extension) => {\n if (extension.extensionId) {\n ids.push(extension.extensionId.toString());\n } else {\n ids.push(extension.stringId);\n }\n });\n const envId = await this.findFirstEnv(ids);\n const envDef = envId ? this.getEnvDefinitionByStringId(envId) : undefined;\n\n return envDef || this.getDefaultEnv();\n }\n\n /**\n * This function finds the first environment ID from a list of IDs by checking if it is register as env (to the slot).\n * or contains env.jsonc file\n * @param {string[]} ids - `ids` is an array of string values representing environment IDs. The function `findFirstEnv`\n * takes this array as input and returns a Promise that resolves to a string value representing the first environment ID\n * that matches certain conditions.\n * @returns The `findFirstEnv` function returns a Promise that resolves to a string or undefined. The string represents\n * the ID of the first environment that matches the conditions specified in the function, or undefined if no environment\n * is found.\n */\n private async findFirstEnv(ids: string[]): Promise<string | undefined> {\n let isFoundWithoutVersion = false;\n const envId = await pLocate(ids, async (id) => {\n const idWithoutVersion = id.split('@')[0];\n if (this.isCoreEnv(idWithoutVersion)) return true;\n if (this.isCoreAspect(idWithoutVersion)) return false;\n const envDef = this.getEnvDefinitionByStringId(id);\n if (envDef) return true;\n const envDefWithoutVersion = this.getEnvDefinitionByStringId(idWithoutVersion);\n if (envDefWithoutVersion) {\n isFoundWithoutVersion = true;\n return true;\n }\n const envComponent = await this.getEnvComponentByEnvId(id);\n const hasManifest = this.hasEnvManifest(envComponent);\n if (hasManifest) return true;\n const isUsingEnvEnv = this.isUsingEnvEnv(envComponent);\n return !!isUsingEnvEnv;\n });\n let finalEnvId;\n if (envId) {\n finalEnvId = isFoundWithoutVersion ? envId?.split('@')[0] : envId;\n this.envIds.add(envId);\n }\n return finalEnvId;\n }\n\n private getEnvDefinitionByLegacyExtension(extension: ExtensionDataEntry): EnvDefinition | undefined {\n const envDef = extension.extensionId\n ? this.getEnvDefinitionById(extension.extensionId)\n : this.getEnvDefinitionByStringId(extension.stringId);\n return envDef;\n }\n\n getEnvIdFromEnvsConfig(component: Component): string | undefined {\n const envsAspect = component.state.aspects.get(EnvsAspect.id);\n return envsAspect?.config.env;\n }\n\n getEnvDefinition(id: ComponentID) {\n const allVersions = this.envSlot.toArray();\n const all = allVersions.filter(([envId]) => envId.includes(id.toStringWithoutVersion()));\n const first = head(all);\n if (!first) return undefined;\n const [envId, env] = first;\n return new EnvDefinition(envId, env);\n }\n\n getEnvDefinitionById(id: ComponentID): EnvDefinition | undefined {\n const envDef =\n this.getEnvDefinitionByStringId(id.toString()) ||\n this.getEnvDefinitionByStringId(id.toString({ ignoreVersion: true }));\n return envDef;\n }\n\n public getEnvDefinitionByStringId(envId: string): EnvDefinition | undefined {\n const env = this.envSlot.get(envId);\n if (env) {\n return new EnvDefinition(envId, env as Environment);\n }\n return undefined;\n }\n\n getEnvFromComponent(envComponent: Component): EnvDefinition | undefined {\n const env = this.getEnvDefinitionById(envComponent.id);\n return env;\n }\n\n /**\n * Return the env definition of teambit.envs/env\n */\n getEnvsEnvDefinition(): EnvDefinition {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getEnvDefinitionByStringId('teambit.envs/env')!;\n }\n\n private printWarningIfFirstTime(envId: string, message: string) {\n if (!this.alreadyShownWarning[envId] && !this.failedToLoadEnvs.has(envId)) {\n this.alreadyShownWarning[envId] = true;\n this.logger.consoleWarning(message);\n this.addFailedToLoadEnvs(envId);\n }\n }\n\n /**\n * determines whether an env is registered.\n */\n public isEnvRegistered(id: string) {\n return Boolean(this.envSlot.get(id));\n }\n\n isUsingAspectEnv(component: Component): boolean {\n const data = this.getEnvData(component);\n if (!data) return false;\n return data.type === 'aspect';\n }\n\n isUsingEnvEnv(component: Component): boolean {\n const data = this.getEnvData(component);\n if (!data) return false;\n return data.type === 'env';\n }\n\n /**\n * Check if the given component is an env component.\n * @param component\n * @returns\n */\n isEnv(component: Component): boolean {\n return (\n this.isUsingEnvEnv(component) ||\n this.isEnvRegistered(component.id.toString()) ||\n this.isEnvRegistered(component.id.toStringWithoutVersion())\n );\n }\n\n /**\n * register a new environment service.\n */\n registerService(...envServices: EnvService<any>[]) {\n this.servicesRegistry.register(envServices);\n return this;\n }\n\n /**\n * get list of services enabled on an env.\n */\n getServices(env: EnvDefinition): EnvServiceList {\n const allServices = this.servicesRegistry.toArray();\n const services: [string, EnvService<any>][] = [];\n allServices.forEach(([id, currentServices]) => {\n currentServices.forEach((service) => {\n try {\n if (this.implements(env, service)) {\n services.push([id, service]);\n }\n } catch {\n this.logger.warn(`failed loading service ${id} for env ${env.id}`);\n }\n });\n });\n return new EnvServiceList(env, services);\n }\n\n implements(env: EnvDefinition, service: EnvService<any>) {\n // TODO: remove this after refactoring everything and remove getDescriptor from being optional.\n if (!service.getDescriptor) return false;\n return !!service.getDescriptor(env);\n }\n\n /**\n * register an environment.\n */\n registerEnv(env: Environment) {\n return this.envSlot.register(env);\n }\n\n /**\n * register an env.jsonc merge customizer.\n */\n registerEnvJsoncMergeCustomizer(customizer: EnvJsoncMergeCustomizer) {\n return this.envJsoncMergeCustomizerSlot.register(customizer);\n }\n\n async addNonLoadedEnvAsComponentIssues(components: Component[]) {\n await pMapSeries(components, async (component) => {\n const envId = await this.calculateEnvId(component);\n const envIdStr = envId.toString();\n if (!this.isEnvRegistered(envIdStr)) {\n this.addFailedToLoadEnvs(envIdStr);\n // If there is no version and the env is not in the workspace this is not valid\n // you can't set external env without version\n if (!envIdStr.includes('@')) {\n const foundComp = components.find((c) => c.id.toStringWithoutVersion() === envIdStr);\n if (!foundComp) {\n component.state.issues.getOrCreate(IssuesClasses.ExternalEnvWithoutVersion).data = {\n envId: envIdStr,\n componentId: component.id.toString(),\n };\n } else {\n component.state.issues.getOrCreate(IssuesClasses.NonLoadedEnv).data = envIdStr;\n }\n } else {\n component.state.issues.getOrCreate(IssuesClasses.NonLoadedEnv).data = envIdStr;\n }\n }\n });\n }\n\n // refactor here\n private async createRuntime(components: Component[]): Promise<Runtime> {\n return new Runtime(await this.aggregateByDefs(components), this.logger);\n }\n\n // :TODO can be refactored to few utilities who will make repeating this very easy.\n private async aggregateByDefs(components: Component[]): Promise<EnvRuntime[]> {\n this.throwForDuplicateComponents(components);\n const envsMap = {};\n components.forEach((component: Component) => {\n const envDef = this.getEnv(component);\n const envId = envDef.id;\n const env = envDef.env;\n // handle config as well when aggregating envs.\n if (envsMap[envId]) envsMap[envId].components.push(component);\n else\n envsMap[envId] = {\n components: [component],\n env,\n };\n });\n\n return Promise.all(\n Object.keys(envsMap).map(async (key) => {\n const envAspectDef = await this.getEnvAspectDef(key);\n return new EnvRuntime(key, envsMap[key].env, envsMap[key].components, envAspectDef);\n })\n );\n }\n\n private async getEnvAspectDef(envId: string): Promise<AspectDefinition> {\n const host = this.componentMain.getHost();\n const id = await host.resolveComponentId(envId);\n // We don't want to filter by runtime here as we want to also get envs that configured as plugins. so they don't\n // contain the runtime path.\n const resolvedAspects = await host.resolveAspects(MainRuntime.name, [id], {\n requestedOnly: true,\n filterByRuntime: false,\n useScopeAspectsCapsule: true,\n });\n const def = resolvedAspects[0];\n\n return def;\n }\n\n private throwForDuplicateComponents(components: Component[]) {\n const idsStr = components.map((c) => c.id.toString());\n const duplications = findDuplications(idsStr);\n if (duplications.length) {\n throw new Error(`found duplicated components: ${duplications.join(', ')}`);\n }\n }\n\n static slots = [\n Slot.withType<Environment>(),\n Slot.withType<EnvService<any>>(),\n Slot.withType<EnvJsoncMergeCustomizerRegistry>(),\n ];\n\n static dependencies = [GraphqlAspect, LoggerAspect, ComponentAspect, CLIAspect, WorkerAspect, IssuesAspect];\n\n static async provider(\n [graphql, loggerAspect, component, cli, worker, issues]: [\n GraphqlMain,\n LoggerMain,\n ComponentMain,\n CLIMain,\n WorkerMain,\n IssuesMain,\n ],\n config: EnvsConfig,\n [envSlot, servicesRegistry, envJsoncMergeCustomizerSlot]: [\n EnvsRegistry,\n ServicesRegistry,\n EnvJsoncMergeCustomizerRegistry,\n ],\n context: Harmony\n ) {\n const logger = loggerAspect.createLogger(EnvsAspect.id);\n const envs = new EnvsMain(\n config,\n context,\n envSlot,\n logger,\n servicesRegistry,\n component,\n loggerAspect,\n worker,\n envJsoncMergeCustomizerSlot\n );\n component.registerShowFragments([new EnvFragment(envs)]);\n if (issues) issues.registerAddComponentsIssues(envs.addNonLoadedEnvAsComponentIssues.bind(envs));\n\n const envsCmd = new EnvsCmd(envs, component);\n envsCmd.commands = [new ListEnvsCmd(envs, component), new GetEnvCmd(envs, component)];\n cli.register(envsCmd);\n graphql.register(environmentsSchema(envs));\n return envs;\n }\n}\n\nEnvsAspect.addRuntime(EnvsMain);\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.envs_envs@1.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.envs_envs@1.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.envs_envs@1.0.493/dist/env.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.envs_envs@1.0.493/dist/envs.docs.mdx';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/envs",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.493",
|
4
4
|
"homepage": "https://bit.cloud/teambit/envs/envs",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.envs",
|
8
8
|
"name": "envs",
|
9
|
-
"version": "1.0.
|
9
|
+
"version": "1.0.493"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"chalk": "2.4.2",
|
@@ -20,31 +20,30 @@
|
|
20
20
|
"@teambit/harmony": "0.4.6",
|
21
21
|
"@teambit/bit-error": "0.0.404",
|
22
22
|
"@teambit/component-id": "1.2.2",
|
23
|
-
"@teambit/component": "1.0.
|
24
|
-
"@teambit/aspect-loader": "1.0.
|
25
|
-
"@teambit/cli": "0.0.
|
26
|
-
"@teambit/logger": "0.0.
|
27
|
-
"@teambit/worker": "0.0.
|
28
|
-
"@teambit/builder": "1.0.
|
29
|
-
"@teambit/bundler": "1.0.
|
30
|
-
"@teambit/compiler": "1.0.
|
31
|
-
"@teambit/dependency-resolver": "1.0.
|
32
|
-
"@teambit/formatter": "1.0.
|
33
|
-
"@teambit/isolator": "1.0.
|
34
|
-
"@teambit/linter": "1.0.
|
35
|
-
"@teambit/pkg": "1.0.
|
36
|
-
"@teambit/preview": "1.0.
|
37
|
-
"@teambit/schema": "1.0.
|
38
|
-
"@teambit/tester": "1.0.
|
39
|
-
"@teambit/typescript": "1.0.
|
40
|
-
"@teambit/webpack": "1.0.
|
41
|
-
"@teambit/graphql": "1.0.
|
42
|
-
"@teambit/bit": "1.9.9",
|
23
|
+
"@teambit/component": "1.0.493",
|
24
|
+
"@teambit/aspect-loader": "1.0.493",
|
25
|
+
"@teambit/cli": "0.0.1070",
|
26
|
+
"@teambit/logger": "0.0.1163",
|
27
|
+
"@teambit/worker": "0.0.1374",
|
28
|
+
"@teambit/builder": "1.0.493",
|
29
|
+
"@teambit/bundler": "1.0.493",
|
30
|
+
"@teambit/compiler": "1.0.493",
|
31
|
+
"@teambit/dependency-resolver": "1.0.493",
|
32
|
+
"@teambit/formatter": "1.0.493",
|
33
|
+
"@teambit/isolator": "1.0.493",
|
34
|
+
"@teambit/linter": "1.0.493",
|
35
|
+
"@teambit/pkg": "1.0.493",
|
36
|
+
"@teambit/preview": "1.0.493",
|
37
|
+
"@teambit/schema": "1.0.493",
|
38
|
+
"@teambit/tester": "1.0.493",
|
39
|
+
"@teambit/typescript": "1.0.493",
|
40
|
+
"@teambit/webpack": "1.0.493",
|
41
|
+
"@teambit/graphql": "1.0.493",
|
43
42
|
"@teambit/component-issues": "0.0.152",
|
44
|
-
"@teambit/component.sources": "0.0.
|
45
|
-
"@teambit/dev-files": "1.0.
|
46
|
-
"@teambit/issues": "1.0.
|
47
|
-
"@teambit/legacy.extension-data": "0.0.
|
43
|
+
"@teambit/component.sources": "0.0.57",
|
44
|
+
"@teambit/dev-files": "1.0.493",
|
45
|
+
"@teambit/issues": "1.0.493",
|
46
|
+
"@teambit/legacy.extension-data": "0.0.7",
|
48
47
|
"@teambit/toolbox.array.duplications-finder": "0.0.2",
|
49
48
|
"@teambit/toolbox.modules.module-resolver": "0.0.8",
|
50
49
|
"@teambit/cli-table": "0.0.49"
|