@teambit/envs 1.0.1171 → 1.0.1172
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/environments.main.runtime.d.ts +19 -0
- package/dist/environments.main.runtime.js +36 -1
- package/dist/environments.main.runtime.js.map +1 -1
- package/dist/environments.main.runtime.spec.d.ts +1 -0
- package/dist/environments.main.runtime.spec.js +112 -0
- package/dist/environments.main.runtime.spec.js.map +1 -0
- package/dist/{preview-1789739547673.js → preview-1789750804230.js} +2 -2
- package/package.json +24 -21
|
@@ -105,6 +105,8 @@ export declare class EnvsMain {
|
|
|
105
105
|
* Ids of envs (not neccesrraly loaded successfully)
|
|
106
106
|
*/
|
|
107
107
|
envIds: Set<string>;
|
|
108
|
+
/** set inside a `skipNotLoadedWarnings` scope. see that method. */
|
|
109
|
+
private notLoadedWarningsMuted;
|
|
108
110
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
109
111
|
private alreadyShownWarning;
|
|
110
112
|
private coreAspectIds;
|
|
@@ -144,6 +146,23 @@ export declare class EnvsMain {
|
|
|
144
146
|
addFailedToLoadEnvs(id: string): void;
|
|
145
147
|
addFailedToLoadExt(id: string): void;
|
|
146
148
|
resetFailedToLoadEnvs(): void;
|
|
149
|
+
/**
|
|
150
|
+
* run `fn` with the "env was not loaded" warnings muted.
|
|
151
|
+
*
|
|
152
|
+
* the workspace loads components in groups, and one of those groups holds components that are
|
|
153
|
+
* loaded only so they can be registered as the env of another component. the env of *those*
|
|
154
|
+
* components (the env-of-env) is scheduled only when the env component itself is one of the
|
|
155
|
+
* requested ids, so during that pass an unregistered env says nothing about whether it's
|
|
156
|
+
* installed - warning about it is a false positive. e.g. "bit show <comp>" used to report that
|
|
157
|
+
* the env of <comp>'s env "was not loaded (run bit install)" on a perfectly healthy workspace.
|
|
158
|
+
*
|
|
159
|
+
* this is a scope rather than a param because the warning is reached from many aspects that
|
|
160
|
+
* calculate the env during the load slot (tester, docs, pkg, compositions, dev-files), so muting
|
|
161
|
+
* a single call site only moves the warning to the next one. it is execution-local rather than a
|
|
162
|
+
* field because loads run concurrently (the graphql resolver fans ids out with Promise.all), and
|
|
163
|
+
* a shared flag would let one load mute an unrelated one and hide a genuinely missing env.
|
|
164
|
+
*/
|
|
165
|
+
skipNotLoadedWarnings<T>(fn: () => Promise<T>): Promise<T>;
|
|
147
166
|
getFailedToLoadEnvs(): string[];
|
|
148
167
|
/**
|
|
149
168
|
* get the configured default env.
|
|
@@ -109,6 +109,13 @@ function _componentId() {
|
|
|
109
109
|
};
|
|
110
110
|
return data;
|
|
111
111
|
}
|
|
112
|
+
function _async_hooks() {
|
|
113
|
+
const data = require("async_hooks");
|
|
114
|
+
_async_hooks = function () {
|
|
115
|
+
return data;
|
|
116
|
+
};
|
|
117
|
+
return data;
|
|
118
|
+
}
|
|
112
119
|
function _environments() {
|
|
113
120
|
const data = require("./environments.aspect");
|
|
114
121
|
_environments = function () {
|
|
@@ -236,6 +243,8 @@ class EnvsMain {
|
|
|
236
243
|
* Ids of envs (not neccesrraly loaded successfully)
|
|
237
244
|
*/
|
|
238
245
|
_defineProperty(this, "envIds", new Set());
|
|
246
|
+
/** set inside a `skipNotLoadedWarnings` scope. see that method. */
|
|
247
|
+
_defineProperty(this, "notLoadedWarningsMuted", new (_async_hooks().AsyncLocalStorage)());
|
|
239
248
|
_defineProperty(this, "alreadyShownWarning", {});
|
|
240
249
|
_defineProperty(this, "coreAspectIds", []);
|
|
241
250
|
}
|
|
@@ -277,6 +286,32 @@ class EnvsMain {
|
|
|
277
286
|
this.failedToLoadEnvs.clear();
|
|
278
287
|
this.failedToLoadExt.clear();
|
|
279
288
|
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* run `fn` with the "env was not loaded" warnings muted.
|
|
292
|
+
*
|
|
293
|
+
* the workspace loads components in groups, and one of those groups holds components that are
|
|
294
|
+
* loaded only so they can be registered as the env of another component. the env of *those*
|
|
295
|
+
* components (the env-of-env) is scheduled only when the env component itself is one of the
|
|
296
|
+
* requested ids, so during that pass an unregistered env says nothing about whether it's
|
|
297
|
+
* installed - warning about it is a false positive. e.g. "bit show <comp>" used to report that
|
|
298
|
+
* the env of <comp>'s env "was not loaded (run bit install)" on a perfectly healthy workspace.
|
|
299
|
+
*
|
|
300
|
+
* this is a scope rather than a param because the warning is reached from many aspects that
|
|
301
|
+
* calculate the env during the load slot (tester, docs, pkg, compositions, dev-files), so muting
|
|
302
|
+
* a single call site only moves the warning to the next one. it is execution-local rather than a
|
|
303
|
+
* field because loads run concurrently (the graphql resolver fans ids out with Promise.all), and
|
|
304
|
+
* a shared flag would let one load mute an unrelated one and hide a genuinely missing env.
|
|
305
|
+
*/
|
|
306
|
+
async skipNotLoadedWarnings(fn) {
|
|
307
|
+
// the promise is created inside run() so the whole execution of `fn` is within the scope.
|
|
308
|
+
// (assigned via `let` because some @types/node versions type `run` as returning void)
|
|
309
|
+
let promise;
|
|
310
|
+
this.notLoadedWarningsMuted.run(true, () => {
|
|
311
|
+
promise = fn();
|
|
312
|
+
});
|
|
313
|
+
return promise;
|
|
314
|
+
}
|
|
280
315
|
getFailedToLoadEnvs() {
|
|
281
316
|
const failedToLoadEnvs = Array.from(this.failedToLoadEnvs);
|
|
282
317
|
// Add all extensions which are also envs
|
|
@@ -713,7 +748,7 @@ class EnvsMain {
|
|
|
713
748
|
this.envIds.add(envDef.id);
|
|
714
749
|
return envDef;
|
|
715
750
|
}
|
|
716
|
-
if (!opts.skipWarnings) {
|
|
751
|
+
if (!opts.skipWarnings && !this.notLoadedWarningsMuted.getStore()) {
|
|
717
752
|
// Do not allow a non existing env
|
|
718
753
|
this.printWarningIfFirstTime(matchedEntry.id.toString(), `environment with ID: ${matchedEntry.id.toString()} configured on component ${component.id.toString()} was not loaded (run "bit install")`);
|
|
719
754
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pLocate","data","_interopRequireDefault","require","_commentJson","_cli","_component","_graphql","_issues","_pMapSeries","_componentIssues","_harmony","_logger","_bitError","_toolboxArray","_lodash","_worker","_componentId","_environments","_environments2","_runtime","_envDefinition","_envServiceList","_envs","_env","_exceptions","_env2","_envJsonc","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","envJsoncResolverSlot","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","hasEnvPluginFile","component","byGlob","BIT_ENV_PATTERN","getEnvManifest","getEnvData","resolvedEnvJsonc","getOrCalculateEnvManifest","envExtendsDeps","calculateEnvManifest","object","parse","contents","toString","err","envName","filePath","path","location","BitError","message","extends","resolvedObject","recursivelyMergeWithParentManifest","parentEnvId","resolver","getAllRegisteredEnvJsoncResolvers","parentObject","mergedObject","mergeEnvManifests","parent","child","merged","mergeCustomizer","getAllRegisteredEnvJsoncCustomizers","customizer","oneMerged","hasEnvManifestById","envId","requesting","getEnvComponentByEnvId","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","getOrCalculateEnv","calculateEnv","getOrCalculateEnvId","idStr","Promise","resolve","calculateEnvId","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","envIdFromEnvsConfig","getEnvIdFromEnvsConfig","envIdFromEnvsConfigWithoutVersion","findFirstEnv","finalId","getEnvDefinitionById","skipWarnings","printWarningIfFirstTime","envDefFromList","getAllEnvsConfiguredOnComponent","getEnvFromEnvsConfig","getEnvsNotFromEnvsConfig","hasEnvConfigured","Boolean","getAllRegisteredEnvsIds","map","envData","getAllRegisteredEnvs","customizerEntry","getEnvPlugin","EnvPlugin","getEnvIdFromEnvsLegacyExtensions","extensions","envsAspect","findCoreExtension","calculateEnvIdFromExtensions","extension","extensionId","stringId","validateEnvId","ext","errorMsg","minBitVersion","calculateEnvFromExtensions","getEnvDefinitionByLegacyExtension","isFoundWithoutVersion","pLocate","idWithoutVersion","envDefWithoutVersion","hasManifest","isUsingEnvEnv","warn","finalEnvId","getEnvDefinition","allVersions","all","first","head","getEnvsEnvDefinition","alreadyShownWarning","consoleWarning","isUsingAspectEnv","isEnv","registerService","envServices","register","allServices","currentServices","service","implements","EnvServiceList","registerEnv","registerEnvJsoncMergeCustomizer","registerEnvJsoncResolver","getEnvJsoncDetector","EnvJsoncDetector","addNonLoadedEnvAsComponentIssues","pMapSeries","envIdStr","foundComp","c","issues","getOrCreate","IssuesClasses","ExternalEnvWithoutVersion","componentId","NonLoadedEnv","Runtime","aggregateByDefs","throwForDuplicateComponents","envsMap","envAspectDef","getEnvAspectDef","EnvRuntime","resolvedAspects","resolveAspects","MainRuntime","requestedOnly","filterByRuntime","useScopeAspectsCapsule","def","idsStr","duplications","findDuplications","join","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 type { Dependency as LegacyDependency } from '@teambit/legacy.consumer-component';\nimport pLocate from 'p-locate';\nimport { parse } from 'comment-json';\nimport type { SourceFile } from '@teambit/component.sources';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { EnvPolicyConfigObject } from '@teambit/dependency-resolver';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { IssuesMain } from '@teambit/issues';\nimport { IssuesAspect } from '@teambit/issues';\nimport type { EnvJsoncPatterns } from '@teambit/dev-files';\nimport pMapSeries from 'p-map-series';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport type { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { AspectDefinition } from '@teambit/aspect-loader';\nimport type { 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 type { WorkerMain } from '@teambit/worker';\nimport { WorkerAspect } from '@teambit/worker';\nimport { ComponentID } from '@teambit/component-id';\nimport type { EnvService } from './services';\nimport type { 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, BIT_ENV_PATTERN } from './env.plugin';\nimport { EnvJsoncDetector } from './env-jsonc.detector';\n\nexport type EnvJsonc = {\n extends?: string;\n policy?: EnvPolicyConfigObject;\n patterns?: EnvJsoncPatterns;\n};\n\n/**\n * The resolved env jsonc is the env jsonc after it was resolved from all the parent envs\n */\nexport type ResolvedEnvJsonc = Omit<EnvJsonc, 'extends'>;\n\nexport type EnvJsoncMergeCustomizer = (parentObj: EnvJsonc, childObj: EnvJsonc) => Partial<EnvJsonc>;\nexport type EnvJsoncResolver = (parentId: string, envExtendsDeps?: LegacyDependency[]) => Promise<ResolvedEnvJsonc>;\n\nexport type EnvsRegistry = SlotRegistry<Environment>;\nexport type EnvJsoncMergeCustomizerRegistry = SlotRegistry<EnvJsoncMergeCustomizer>;\nexport type EnvJsoncResolverRegistry = SlotRegistry<EnvJsoncResolver>;\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 resolvedEnvJsonc?: ResolvedEnvJsonc;\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 private envJsoncResolverSlot: EnvJsoncResolverRegistry\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 // empty-env ships with bit like the envs above. leaving it out makes every isCoreEnv() guard\n // treat it as an external env: `bit install` then adds its npm package to the env root and\n // pulls the entire bit core into the workspace, and env-policy/dev-files lookups fetch the\n // env component from the remote instead of using the loaded aspect.\n // listing it was once reverted because, in the bit repo itself, loading the empty-env\n // component alone (e.g. `bit show teambit.harmony/empty-env`) reports its own env\n // (core-aspect-env) as not loaded. that is how the load-groups treat every core env here\n // (react/node/aspect report the same) and the component still compiles and builds.\n 'teambit.harmony/empty-env',\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 /**\n * whether the component has an env plugin file (`*.bit-env.*`). this file is what defines the\n * env instance (the EnvPlugin loads it when the component is loaded as an aspect), so its\n * presence identifies the component as an env even before it was ever loaded - symmetric to\n * how apps are detected by their `*.bit-app.*` files.\n */\n hasEnvPluginFile(component: Component): boolean {\n return component.filesystem.byGlob([BIT_ENV_PATTERN]).length > 0;\n }\n\n getEnvManifest(envComponent: Component): ResolvedEnvJsonc | undefined {\n const data = this.getEnvData(envComponent) as EnvCompDescriptor;\n if (!data) return undefined;\n return data.resolvedEnvJsonc;\n }\n\n async getOrCalculateEnvManifest(\n component: Component,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<ResolvedEnvJsonc | undefined> {\n try {\n return (\n this.getEnvManifest(component) || (await this.calculateEnvManifest(component, legacyFiles, envExtendsDeps))\n );\n } catch {\n return this.calculateEnvManifest(component);\n }\n }\n\n async calculateEnvManifest(\n envComponent?: Component,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<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 let object: EnvJsonc;\n try {\n object = parse(envJson.contents.toString('utf8'), undefined, true) as EnvJsonc;\n } catch (err: any) {\n const envName = envComponent?.id?.toString();\n const filePath = envJson.path || envJson.relative;\n const location = envName ? `\"${envName}\" (${filePath})` : filePath;\n throw new BitError(\n `Syntax error in env.jsonc for ${location}: ${err.message}. Please check the file for invalid JSONC syntax.`\n );\n }\n if (!object.extends) return object;\n const resolvedObject = await this.recursivelyMergeWithParentManifest(object, envExtendsDeps);\n\n return resolvedObject;\n }\n\n async recursivelyMergeWithParentManifest(object: EnvJsonc, envExtendsDeps?: LegacyDependency[]): Promise<EnvJsonc> {\n if (!object.extends) return object;\n const parentEnvId = object.extends;\n const resolver = this.getAllRegisteredEnvJsoncResolvers()[0];\n\n const parentObject: EnvJsonc = await resolver(parentEnvId, envExtendsDeps);\n const mergedObject = this.mergeEnvManifests(parentObject, object);\n if (mergedObject.extends) {\n return this.recursivelyMergeWithParentManifest(mergedObject);\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 // This is important to make sure we won't keep the extends from the child\n delete merged.extends;\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 getOrCalculateEnvId(component: Component): Promise<ComponentID> {\n try {\n const idStr = this.getEnvId(component);\n return Promise.resolve(ComponentID.fromString(idStr));\n } catch {\n return this.calculateEnvId(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 resolvedEnvJsonc = await this.calculateEnvManifest(component);\n const result = componentDescriptor;\n if (envComponentSelfDescriptor) {\n // @ts-ignore\n result.self = envComponentSelfDescriptor;\n }\n // if (resolvedEnvJsonc) {\n // // @ts-ignore\n // result.resolvedEnvJsonc = resolvedEnvJsonc;\n // }\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 = await this.getServices(envDef);\n const services = await 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 getAllRegisteredEnvJsoncResolvers(): EnvJsoncResolver[] {\n return this.envJsoncResolverSlot.toArray().map((resolver) => resolver[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 if (envDef) {\n return envDef;\n }\n // the env may be registered to the slot with a version, e.g. when it's loaded from the scope\n // and not from the workspace. in such cases the version-less lookup above misses it. search the\n // component aspect list for a matching entry and look it up by its full id. (same fallback as\n // calculateEnv does).\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 return this.getEnvDefinitionById(matchedEntry.id);\n }\n return undefined;\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 validateEnvId(ext: ExtensionDataEntry) {\n if (!ext.config?.env || !ext.data?.id || ext.config.env === ext.data.id) return;\n let errorMsg: string;\n if (ext.data.id === DEFAULT_ENV) {\n errorMsg = `the env id \"${ext.data.id}\" is set to the default env (${DEFAULT_ENV}) in the aspect data, but it is set to \"${ext.config.env}\" in the aspect config.\nthis may indicate that the env was not loaded properly. try running \"bit install\" to ensure the env is correctly loaded.\nto explicitly set the default env, use \"bit env set\" command.`;\n } else {\n errorMsg = `env id \"${ext.data.id}\" is different from the id in the envs aspect config \"${ext.config.env}\".\nif needed, use \"bit env set\" command to align the env id`;\n }\n return { errorMsg, minBitVersion: '1.9.82' };\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 // pLocate runs predicates concurrently; once it settles, a predicate that rejects later has\n // no handler and crashes the process as an unhandled rejection (observed with a remote\n // scope-fetch 500 inside getEnvComponentByEnvId during `bit ci pr`). this is a discovery\n // heuristic — an id whose component cannot be loaded simply cannot be identified as an env\n // here, so log and move on rather than racing an uncatchable rejection.\n try {\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 } catch (err: any) {\n this.logger.warn(`findFirstEnv: failed loading env-component \"${id}\", skipping it. error: ${err.message}`);\n return false;\n }\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 // the env plugin file defines the env instance - the component is an env by definition.\n // this is also the only reliable signal when the env was not loaded yet (e.g. \"bit env-set\"\n // to a just-created env whose own env is not installed, so its env data has no 'env' type).\n this.hasEnvPluginFile(component)\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 async getServices(env: EnvDefinition): Promise<EnvServiceList> {\n const allServices = this.servicesRegistry.toArray();\n const services: [string, EnvService<any>][] = [];\n await Promise.all(\n allServices.map(async ([id, currentServices]) => {\n await Promise.all(\n currentServices.map(async (service) => {\n try {\n if (await 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 })\n );\n return new EnvServiceList(env, services);\n }\n\n async 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 !!(await 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 registerEnvJsoncResolver(resolver: EnvJsoncResolver) {\n return this.envJsoncResolverSlot.register(resolver);\n }\n\n getEnvJsoncDetector() {\n return new EnvJsoncDetector();\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 Slot.withType<EnvJsoncResolverRegistry>(),\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, envJsoncResolverSlot]: [\n EnvsRegistry,\n ServicesRegistry,\n EnvJsoncMergeCustomizerRegistry,\n EnvJsoncResolverRegistry,\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 envJsoncResolverSlot\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":["_pLocate","data","_interopRequireDefault","require","_commentJson","_cli","_component","_graphql","_issues","_pMapSeries","_componentIssues","_harmony","_logger","_bitError","_toolboxArray","_lodash","_worker","_componentId","_async_hooks","_environments","_environments2","_runtime","_envDefinition","_envServiceList","_envs","_env","_exceptions","_env2","_envJsonc","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","envJsoncResolverSlot","Set","AsyncLocalStorage","createEnvironment","components","createRuntime","setCoreAspectIds","ids","coreAspectIds","isCoreAspect","id","includes","addFailedToLoadEnvs","failedToLoadEnvs","add","envIds","addFailedToLoadExt","failedToLoadExt","has","resetFailedToLoadEnvs","clear","skipNotLoadedWarnings","fn","promise","notLoadedWarningsMuted","run","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","bind","hasEnvManifest","envComponent","legacyFiles","undefined","files","filesystem","envJson","find","file","relative","hasEnvPluginFile","component","byGlob","BIT_ENV_PATTERN","getEnvManifest","getEnvData","resolvedEnvJsonc","getOrCalculateEnvManifest","envExtendsDeps","calculateEnvManifest","object","parse","contents","toString","err","envName","filePath","path","location","BitError","message","extends","resolvedObject","recursivelyMergeWithParentManifest","parentEnvId","resolver","getAllRegisteredEnvJsoncResolvers","parentObject","mergedObject","mergeEnvManifests","parent","child","merged","mergeCustomizer","getAllRegisteredEnvJsoncCustomizers","customizer","oneMerged","hasEnvManifestById","envId","requesting","getEnvComponentByEnvId","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","getOrCalculateEnv","calculateEnv","getOrCalculateEnvId","idStr","Promise","resolve","calculateEnvId","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","envIdFromEnvsConfig","getEnvIdFromEnvsConfig","envIdFromEnvsConfigWithoutVersion","findFirstEnv","finalId","getEnvDefinitionById","skipWarnings","getStore","printWarningIfFirstTime","envDefFromList","getAllEnvsConfiguredOnComponent","getEnvFromEnvsConfig","getEnvsNotFromEnvsConfig","hasEnvConfigured","Boolean","getAllRegisteredEnvsIds","map","envData","getAllRegisteredEnvs","customizerEntry","getEnvPlugin","EnvPlugin","getEnvIdFromEnvsLegacyExtensions","extensions","envsAspect","findCoreExtension","calculateEnvIdFromExtensions","extension","extensionId","stringId","validateEnvId","ext","errorMsg","minBitVersion","calculateEnvFromExtensions","getEnvDefinitionByLegacyExtension","isFoundWithoutVersion","pLocate","idWithoutVersion","envDefWithoutVersion","hasManifest","isUsingEnvEnv","warn","finalEnvId","getEnvDefinition","allVersions","all","first","head","getEnvsEnvDefinition","alreadyShownWarning","consoleWarning","isUsingAspectEnv","isEnv","registerService","envServices","register","allServices","currentServices","service","implements","EnvServiceList","registerEnv","registerEnvJsoncMergeCustomizer","registerEnvJsoncResolver","getEnvJsoncDetector","EnvJsoncDetector","addNonLoadedEnvAsComponentIssues","pMapSeries","envIdStr","foundComp","c","issues","getOrCreate","IssuesClasses","ExternalEnvWithoutVersion","componentId","NonLoadedEnv","Runtime","aggregateByDefs","throwForDuplicateComponents","envsMap","envAspectDef","getEnvAspectDef","EnvRuntime","resolvedAspects","resolveAspects","MainRuntime","requestedOnly","filterByRuntime","useScopeAspectsCapsule","def","idsStr","duplications","findDuplications","join","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 type { Dependency as LegacyDependency } from '@teambit/legacy.consumer-component';\nimport pLocate from 'p-locate';\nimport { parse } from 'comment-json';\nimport type { SourceFile } from '@teambit/component.sources';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { EnvPolicyConfigObject } from '@teambit/dependency-resolver';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { IssuesMain } from '@teambit/issues';\nimport { IssuesAspect } from '@teambit/issues';\nimport type { EnvJsoncPatterns } from '@teambit/dev-files';\nimport pMapSeries from 'p-map-series';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport type { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { AspectDefinition } from '@teambit/aspect-loader';\nimport type { 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 type { WorkerMain } from '@teambit/worker';\nimport { WorkerAspect } from '@teambit/worker';\nimport { ComponentID } from '@teambit/component-id';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport type { EnvService } from './services';\nimport type { 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, BIT_ENV_PATTERN } from './env.plugin';\nimport { EnvJsoncDetector } from './env-jsonc.detector';\n\nexport type EnvJsonc = {\n extends?: string;\n policy?: EnvPolicyConfigObject;\n patterns?: EnvJsoncPatterns;\n};\n\n/**\n * The resolved env jsonc is the env jsonc after it was resolved from all the parent envs\n */\nexport type ResolvedEnvJsonc = Omit<EnvJsonc, 'extends'>;\n\nexport type EnvJsoncMergeCustomizer = (parentObj: EnvJsonc, childObj: EnvJsonc) => Partial<EnvJsonc>;\nexport type EnvJsoncResolver = (parentId: string, envExtendsDeps?: LegacyDependency[]) => Promise<ResolvedEnvJsonc>;\n\nexport type EnvsRegistry = SlotRegistry<Environment>;\nexport type EnvJsoncMergeCustomizerRegistry = SlotRegistry<EnvJsoncMergeCustomizer>;\nexport type EnvJsoncResolverRegistry = SlotRegistry<EnvJsoncResolver>;\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 resolvedEnvJsonc?: ResolvedEnvJsonc;\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 /** set inside a `skipNotLoadedWarnings` scope. see that method. */\n private notLoadedWarningsMuted = new AsyncLocalStorage<true>();\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 private envJsoncResolverSlot: EnvJsoncResolverRegistry\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 /**\n * run `fn` with the \"env was not loaded\" warnings muted.\n *\n * the workspace loads components in groups, and one of those groups holds components that are\n * loaded only so they can be registered as the env of another component. the env of *those*\n * components (the env-of-env) is scheduled only when the env component itself is one of the\n * requested ids, so during that pass an unregistered env says nothing about whether it's\n * installed - warning about it is a false positive. e.g. \"bit show <comp>\" used to report that\n * the env of <comp>'s env \"was not loaded (run bit install)\" on a perfectly healthy workspace.\n *\n * this is a scope rather than a param because the warning is reached from many aspects that\n * calculate the env during the load slot (tester, docs, pkg, compositions, dev-files), so muting\n * a single call site only moves the warning to the next one. it is execution-local rather than a\n * field because loads run concurrently (the graphql resolver fans ids out with Promise.all), and\n * a shared flag would let one load mute an unrelated one and hide a genuinely missing env.\n */\n async skipNotLoadedWarnings<T>(fn: () => Promise<T>): Promise<T> {\n // the promise is created inside run() so the whole execution of `fn` is within the scope.\n // (assigned via `let` because some @types/node versions type `run` as returning void)\n let promise!: Promise<T>;\n this.notLoadedWarningsMuted.run(true, () => {\n promise = fn();\n });\n return promise;\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 // empty-env ships with bit like the envs above. leaving it out makes every isCoreEnv() guard\n // treat it as an external env: `bit install` then adds its npm package to the env root and\n // pulls the entire bit core into the workspace, and env-policy/dev-files lookups fetch the\n // env component from the remote instead of using the loaded aspect.\n // listing it was once reverted because, in the bit repo itself, loading the empty-env\n // component alone (e.g. `bit show teambit.harmony/empty-env`) reports its own env\n // (core-aspect-env) as not loaded. that is how the load-groups treat every core env here\n // (react/node/aspect report the same) and the component still compiles and builds.\n 'teambit.harmony/empty-env',\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 /**\n * whether the component has an env plugin file (`*.bit-env.*`). this file is what defines the\n * env instance (the EnvPlugin loads it when the component is loaded as an aspect), so its\n * presence identifies the component as an env even before it was ever loaded - symmetric to\n * how apps are detected by their `*.bit-app.*` files.\n */\n hasEnvPluginFile(component: Component): boolean {\n return component.filesystem.byGlob([BIT_ENV_PATTERN]).length > 0;\n }\n\n getEnvManifest(envComponent: Component): ResolvedEnvJsonc | undefined {\n const data = this.getEnvData(envComponent) as EnvCompDescriptor;\n if (!data) return undefined;\n return data.resolvedEnvJsonc;\n }\n\n async getOrCalculateEnvManifest(\n component: Component,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<ResolvedEnvJsonc | undefined> {\n try {\n return (\n this.getEnvManifest(component) || (await this.calculateEnvManifest(component, legacyFiles, envExtendsDeps))\n );\n } catch {\n return this.calculateEnvManifest(component);\n }\n }\n\n async calculateEnvManifest(\n envComponent?: Component,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<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 let object: EnvJsonc;\n try {\n object = parse(envJson.contents.toString('utf8'), undefined, true) as EnvJsonc;\n } catch (err: any) {\n const envName = envComponent?.id?.toString();\n const filePath = envJson.path || envJson.relative;\n const location = envName ? `\"${envName}\" (${filePath})` : filePath;\n throw new BitError(\n `Syntax error in env.jsonc for ${location}: ${err.message}. Please check the file for invalid JSONC syntax.`\n );\n }\n if (!object.extends) return object;\n const resolvedObject = await this.recursivelyMergeWithParentManifest(object, envExtendsDeps);\n\n return resolvedObject;\n }\n\n async recursivelyMergeWithParentManifest(object: EnvJsonc, envExtendsDeps?: LegacyDependency[]): Promise<EnvJsonc> {\n if (!object.extends) return object;\n const parentEnvId = object.extends;\n const resolver = this.getAllRegisteredEnvJsoncResolvers()[0];\n\n const parentObject: EnvJsonc = await resolver(parentEnvId, envExtendsDeps);\n const mergedObject = this.mergeEnvManifests(parentObject, object);\n if (mergedObject.extends) {\n return this.recursivelyMergeWithParentManifest(mergedObject);\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 // This is important to make sure we won't keep the extends from the child\n delete merged.extends;\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 getOrCalculateEnvId(component: Component): Promise<ComponentID> {\n try {\n const idStr = this.getEnvId(component);\n return Promise.resolve(ComponentID.fromString(idStr));\n } catch {\n return this.calculateEnvId(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 resolvedEnvJsonc = await this.calculateEnvManifest(component);\n const result = componentDescriptor;\n if (envComponentSelfDescriptor) {\n // @ts-ignore\n result.self = envComponentSelfDescriptor;\n }\n // if (resolvedEnvJsonc) {\n // // @ts-ignore\n // result.resolvedEnvJsonc = resolvedEnvJsonc;\n // }\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 = await this.getServices(envDef);\n const services = await 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 && !this.notLoadedWarningsMuted.getStore()) {\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 getAllRegisteredEnvJsoncResolvers(): EnvJsoncResolver[] {\n return this.envJsoncResolverSlot.toArray().map((resolver) => resolver[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 if (envDef) {\n return envDef;\n }\n // the env may be registered to the slot with a version, e.g. when it's loaded from the scope\n // and not from the workspace. in such cases the version-less lookup above misses it. search the\n // component aspect list for a matching entry and look it up by its full id. (same fallback as\n // calculateEnv does).\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 return this.getEnvDefinitionById(matchedEntry.id);\n }\n return undefined;\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 validateEnvId(ext: ExtensionDataEntry) {\n if (!ext.config?.env || !ext.data?.id || ext.config.env === ext.data.id) return;\n let errorMsg: string;\n if (ext.data.id === DEFAULT_ENV) {\n errorMsg = `the env id \"${ext.data.id}\" is set to the default env (${DEFAULT_ENV}) in the aspect data, but it is set to \"${ext.config.env}\" in the aspect config.\nthis may indicate that the env was not loaded properly. try running \"bit install\" to ensure the env is correctly loaded.\nto explicitly set the default env, use \"bit env set\" command.`;\n } else {\n errorMsg = `env id \"${ext.data.id}\" is different from the id in the envs aspect config \"${ext.config.env}\".\nif needed, use \"bit env set\" command to align the env id`;\n }\n return { errorMsg, minBitVersion: '1.9.82' };\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 // pLocate runs predicates concurrently; once it settles, a predicate that rejects later has\n // no handler and crashes the process as an unhandled rejection (observed with a remote\n // scope-fetch 500 inside getEnvComponentByEnvId during `bit ci pr`). this is a discovery\n // heuristic — an id whose component cannot be loaded simply cannot be identified as an env\n // here, so log and move on rather than racing an uncatchable rejection.\n try {\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 } catch (err: any) {\n this.logger.warn(`findFirstEnv: failed loading env-component \"${id}\", skipping it. error: ${err.message}`);\n return false;\n }\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 // the env plugin file defines the env instance - the component is an env by definition.\n // this is also the only reliable signal when the env was not loaded yet (e.g. \"bit env-set\"\n // to a just-created env whose own env is not installed, so its env data has no 'env' type).\n this.hasEnvPluginFile(component)\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 async getServices(env: EnvDefinition): Promise<EnvServiceList> {\n const allServices = this.servicesRegistry.toArray();\n const services: [string, EnvService<any>][] = [];\n await Promise.all(\n allServices.map(async ([id, currentServices]) => {\n await Promise.all(\n currentServices.map(async (service) => {\n try {\n if (await 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 })\n );\n return new EnvServiceList(env, services);\n }\n\n async 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 !!(await 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 registerEnvJsoncResolver(resolver: EnvJsoncResolver) {\n return this.envJsoncResolverSlot.register(resolver);\n }\n\n getEnvJsoncDetector() {\n return new EnvJsoncDetector();\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 Slot.withType<EnvJsoncResolverRegistry>(),\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, envJsoncResolverSlot]: [\n EnvsRegistry,\n ServicesRegistry,\n EnvJsoncMergeCustomizerRegistry,\n EnvJsoncResolverRegistry,\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 envJsoncResolverSlot\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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _chai() {
|
|
4
|
+
const data = require("chai");
|
|
5
|
+
_chai = function () {
|
|
6
|
+
return data;
|
|
7
|
+
};
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
function _harmonyTesting() {
|
|
11
|
+
const data = require("@teambit/harmony.testing.load-aspect");
|
|
12
|
+
_harmonyTesting = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
function _workspaceTesting() {
|
|
18
|
+
const data = require("@teambit/workspace.testing.mock-workspace");
|
|
19
|
+
_workspaceTesting = function () {
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
function _componentId() {
|
|
25
|
+
const data = require("@teambit/component-id");
|
|
26
|
+
_componentId = function () {
|
|
27
|
+
return data;
|
|
28
|
+
};
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
function _environments() {
|
|
32
|
+
const data = require("./environments.aspect");
|
|
33
|
+
_environments = function () {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* a component configured with an env that is not registered in the envs slot. that's the state
|
|
40
|
+
* that makes `calculateEnv` consider warning "env was not loaded (run bit install)".
|
|
41
|
+
*/
|
|
42
|
+
function mockComponentWithUnregisteredEnv(componentId, envId) {
|
|
43
|
+
return {
|
|
44
|
+
id: _componentId().ComponentID.fromString(componentId),
|
|
45
|
+
state: {
|
|
46
|
+
aspects: {
|
|
47
|
+
get: aspectId => aspectId === _environments().EnvsAspect.id ? {
|
|
48
|
+
config: {
|
|
49
|
+
env: envId
|
|
50
|
+
}
|
|
51
|
+
} : undefined,
|
|
52
|
+
entries: [{
|
|
53
|
+
id: _componentId().ComponentID.fromString(envId)
|
|
54
|
+
}]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
describe('EnvsMain', function () {
|
|
60
|
+
this.timeout(0);
|
|
61
|
+
let workspaceData;
|
|
62
|
+
let envs;
|
|
63
|
+
before(async () => {
|
|
64
|
+
workspaceData = (0, _workspaceTesting().mockWorkspace)();
|
|
65
|
+
envs = await (0, _harmonyTesting().loadAspect)(_environments().EnvsAspect, workspaceData.workspacePath);
|
|
66
|
+
});
|
|
67
|
+
after(async () => {
|
|
68
|
+
await (0, _workspaceTesting().destroyWorkspace)(workspaceData);
|
|
69
|
+
});
|
|
70
|
+
describe('skipNotLoadedWarnings', () => {
|
|
71
|
+
// the env landing in "failed to load envs" is the observable side effect of the warning.
|
|
72
|
+
it('should not report the env as failed-to-load when muted', async () => {
|
|
73
|
+
const envId = 'some-scope/envs/muted-env@1.0.0';
|
|
74
|
+
const component = mockComponentWithUnregisteredEnv('some-scope/comps/muted-comp@1.0.0', envId);
|
|
75
|
+
await envs.skipNotLoadedWarnings(async () => {
|
|
76
|
+
envs.calculateEnv(component);
|
|
77
|
+
});
|
|
78
|
+
(0, _chai().expect)(envs.getFailedToLoadEnvs()).to.not.include(envId);
|
|
79
|
+
});
|
|
80
|
+
it('should report the env as failed-to-load when not muted', async () => {
|
|
81
|
+
const envId = 'some-scope/envs/reported-env@1.0.0';
|
|
82
|
+
const component = mockComponentWithUnregisteredEnv('some-scope/comps/reported-comp@1.0.0', envId);
|
|
83
|
+
envs.calculateEnv(component);
|
|
84
|
+
(0, _chai().expect)(envs.getFailedToLoadEnvs()).to.include(envId);
|
|
85
|
+
});
|
|
86
|
+
it('should not mute a calculation running outside the scope while a scope is open', async () => {
|
|
87
|
+
const envId = 'some-scope/envs/concurrent-env@1.0.0';
|
|
88
|
+
const component = mockComponentWithUnregisteredEnv('some-scope/comps/concurrent-comp@1.0.0', envId);
|
|
89
|
+
// the scope stays open until the next macrotask, so calculateEnv below runs while it's open
|
|
90
|
+
const openScope = envs.skipNotLoadedWarnings(() => new Promise(resolve => setImmediate(resolve)));
|
|
91
|
+
envs.calculateEnv(component);
|
|
92
|
+
await openScope;
|
|
93
|
+
(0, _chai().expect)(envs.getFailedToLoadEnvs()).to.include(envId);
|
|
94
|
+
});
|
|
95
|
+
it('should stop muting once the scope ends, including when it throws', async () => {
|
|
96
|
+
const envId = 'some-scope/envs/after-throw-env@1.0.0';
|
|
97
|
+
const component = mockComponentWithUnregisteredEnv('some-scope/comps/after-throw-comp@1.0.0', envId);
|
|
98
|
+
try {
|
|
99
|
+
await envs.skipNotLoadedWarnings(async () => {
|
|
100
|
+
throw new Error('some error');
|
|
101
|
+
});
|
|
102
|
+
_chai().expect.fail('should have thrown');
|
|
103
|
+
} catch (err) {
|
|
104
|
+
(0, _chai().expect)(err.message).to.equal('some error');
|
|
105
|
+
}
|
|
106
|
+
envs.calculateEnv(component);
|
|
107
|
+
(0, _chai().expect)(envs.getFailedToLoadEnvs()).to.include(envId);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=environments.main.runtime.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_harmonyTesting","_workspaceTesting","_componentId","_environments","mockComponentWithUnregisteredEnv","componentId","envId","id","ComponentID","fromString","state","aspects","get","aspectId","EnvsAspect","config","env","undefined","entries","describe","timeout","workspaceData","envs","before","mockWorkspace","loadAspect","workspacePath","after","destroyWorkspace","it","component","skipNotLoadedWarnings","calculateEnv","expect","getFailedToLoadEnvs","to","not","include","openScope","Promise","resolve","setImmediate","Error","fail","err","message","equal"],"sources":["environments.main.runtime.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } from '@teambit/workspace.testing.mock-workspace';\nimport { ComponentID } from '@teambit/component-id';\nimport type { Component } from '@teambit/component';\nimport type { EnvsMain } from './environments.main.runtime';\nimport { EnvsAspect } from './environments.aspect';\n\n/**\n * a component configured with an env that is not registered in the envs slot. that's the state\n * that makes `calculateEnv` consider warning \"env was not loaded (run bit install)\".\n */\nfunction mockComponentWithUnregisteredEnv(componentId: string, envId: string): Component {\n return {\n id: ComponentID.fromString(componentId),\n state: {\n aspects: {\n get: (aspectId: string) => (aspectId === EnvsAspect.id ? { config: { env: envId } } : undefined),\n entries: [{ id: ComponentID.fromString(envId) }],\n },\n },\n } as unknown as Component;\n}\n\ndescribe('EnvsMain', function () {\n this.timeout(0);\n let workspaceData: WorkspaceData;\n let envs: EnvsMain;\n before(async () => {\n workspaceData = mockWorkspace();\n envs = await loadAspect(EnvsAspect, workspaceData.workspacePath);\n });\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n describe('skipNotLoadedWarnings', () => {\n // the env landing in \"failed to load envs\" is the observable side effect of the warning.\n it('should not report the env as failed-to-load when muted', async () => {\n const envId = 'some-scope/envs/muted-env@1.0.0';\n const component = mockComponentWithUnregisteredEnv('some-scope/comps/muted-comp@1.0.0', envId);\n await envs.skipNotLoadedWarnings(async () => {\n envs.calculateEnv(component);\n });\n expect(envs.getFailedToLoadEnvs()).to.not.include(envId);\n });\n\n it('should report the env as failed-to-load when not muted', async () => {\n const envId = 'some-scope/envs/reported-env@1.0.0';\n const component = mockComponentWithUnregisteredEnv('some-scope/comps/reported-comp@1.0.0', envId);\n envs.calculateEnv(component);\n expect(envs.getFailedToLoadEnvs()).to.include(envId);\n });\n\n it('should not mute a calculation running outside the scope while a scope is open', async () => {\n const envId = 'some-scope/envs/concurrent-env@1.0.0';\n const component = mockComponentWithUnregisteredEnv('some-scope/comps/concurrent-comp@1.0.0', envId);\n // the scope stays open until the next macrotask, so calculateEnv below runs while it's open\n const openScope = envs.skipNotLoadedWarnings(() => new Promise<void>((resolve) => setImmediate(resolve)));\n envs.calculateEnv(component);\n await openScope;\n expect(envs.getFailedToLoadEnvs()).to.include(envId);\n });\n\n it('should stop muting once the scope ends, including when it throws', async () => {\n const envId = 'some-scope/envs/after-throw-env@1.0.0';\n const component = mockComponentWithUnregisteredEnv('some-scope/comps/after-throw-comp@1.0.0', envId);\n try {\n await envs.skipNotLoadedWarnings(async () => {\n throw new Error('some error');\n });\n expect.fail('should have thrown');\n } catch (err: any) {\n expect(err.message).to.equal('some error');\n }\n envs.calculateEnv(component);\n expect(envs.getFailedToLoadEnvs()).to.include(envId);\n });\n });\n});\n"],"mappings":";;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,gBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,eAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,kBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,iBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,aAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,YAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAK,cAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,aAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA;AACA;AACA;AACA,SAASM,gCAAgCA,CAACC,WAAmB,EAAEC,KAAa,EAAa;EACvF,OAAO;IACLC,EAAE,EAAEC,0BAAW,CAACC,UAAU,CAACJ,WAAW,CAAC;IACvCK,KAAK,EAAE;MACLC,OAAO,EAAE;QACPC,GAAG,EAAGC,QAAgB,IAAMA,QAAQ,KAAKC,0BAAU,CAACP,EAAE,GAAG;UAAEQ,MAAM,EAAE;YAAEC,GAAG,EAAEV;UAAM;QAAE,CAAC,GAAGW,SAAU;QAChGC,OAAO,EAAE,CAAC;UAAEX,EAAE,EAAEC,0BAAW,CAACC,UAAU,CAACH,KAAK;QAAE,CAAC;MACjD;IACF;EACF,CAAC;AACH;AAEAa,QAAQ,CAAC,UAAU,EAAE,YAAY;EAC/B,IAAI,CAACC,OAAO,CAAC,CAAC,CAAC;EACf,IAAIC,aAA4B;EAChC,IAAIC,IAAc;EAClBC,MAAM,CAAC,YAAY;IACjBF,aAAa,GAAG,IAAAG,iCAAa,EAAC,CAAC;IAC/BF,IAAI,GAAG,MAAM,IAAAG,4BAAU,EAACX,0BAAU,EAAEO,aAAa,CAACK,aAAa,CAAC;EAClE,CAAC,CAAC;EACFC,KAAK,CAAC,YAAY;IAChB,MAAM,IAAAC,oCAAgB,EAACP,aAAa,CAAC;EACvC,CAAC,CAAC;EAEFF,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACtC;IACAU,EAAE,CAAC,wDAAwD,EAAE,YAAY;MACvE,MAAMvB,KAAK,GAAG,iCAAiC;MAC/C,MAAMwB,SAAS,GAAG1B,gCAAgC,CAAC,mCAAmC,EAAEE,KAAK,CAAC;MAC9F,MAAMgB,IAAI,CAACS,qBAAqB,CAAC,YAAY;QAC3CT,IAAI,CAACU,YAAY,CAACF,SAAS,CAAC;MAC9B,CAAC,CAAC;MACF,IAAAG,cAAM,EAACX,IAAI,CAACY,mBAAmB,CAAC,CAAC,CAAC,CAACC,EAAE,CAACC,GAAG,CAACC,OAAO,CAAC/B,KAAK,CAAC;IAC1D,CAAC,CAAC;IAEFuB,EAAE,CAAC,wDAAwD,EAAE,YAAY;MACvE,MAAMvB,KAAK,GAAG,oCAAoC;MAClD,MAAMwB,SAAS,GAAG1B,gCAAgC,CAAC,sCAAsC,EAAEE,KAAK,CAAC;MACjGgB,IAAI,CAACU,YAAY,CAACF,SAAS,CAAC;MAC5B,IAAAG,cAAM,EAACX,IAAI,CAACY,mBAAmB,CAAC,CAAC,CAAC,CAACC,EAAE,CAACE,OAAO,CAAC/B,KAAK,CAAC;IACtD,CAAC,CAAC;IAEFuB,EAAE,CAAC,+EAA+E,EAAE,YAAY;MAC9F,MAAMvB,KAAK,GAAG,sCAAsC;MACpD,MAAMwB,SAAS,GAAG1B,gCAAgC,CAAC,wCAAwC,EAAEE,KAAK,CAAC;MACnG;MACA,MAAMgC,SAAS,GAAGhB,IAAI,CAACS,qBAAqB,CAAC,MAAM,IAAIQ,OAAO,CAAQC,OAAO,IAAKC,YAAY,CAACD,OAAO,CAAC,CAAC,CAAC;MACzGlB,IAAI,CAACU,YAAY,CAACF,SAAS,CAAC;MAC5B,MAAMQ,SAAS;MACf,IAAAL,cAAM,EAACX,IAAI,CAACY,mBAAmB,CAAC,CAAC,CAAC,CAACC,EAAE,CAACE,OAAO,CAAC/B,KAAK,CAAC;IACtD,CAAC,CAAC;IAEFuB,EAAE,CAAC,kEAAkE,EAAE,YAAY;MACjF,MAAMvB,KAAK,GAAG,uCAAuC;MACrD,MAAMwB,SAAS,GAAG1B,gCAAgC,CAAC,yCAAyC,EAAEE,KAAK,CAAC;MACpG,IAAI;QACF,MAAMgB,IAAI,CAACS,qBAAqB,CAAC,YAAY;UAC3C,MAAM,IAAIW,KAAK,CAAC,YAAY,CAAC;QAC/B,CAAC,CAAC;QACFT,cAAM,CAACU,IAAI,CAAC,oBAAoB,CAAC;MACnC,CAAC,CAAC,OAAOC,GAAQ,EAAE;QACjB,IAAAX,cAAM,EAACW,GAAG,CAACC,OAAO,CAAC,CAACV,EAAE,CAACW,KAAK,CAAC,YAAY,CAAC;MAC5C;MACAxB,IAAI,CAACU,YAAY,CAACF,SAAS,CAAC;MAC5B,IAAAG,cAAM,EAACX,IAAI,CAACY,mBAAmB,CAAC,CAAC,CAAC,CAACC,EAAE,CAACE,OAAO,CAAC/B,KAAK,CAAC;IACtD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","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.1172/dist/env.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.envs_envs@1.0.1172/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.1172",
|
|
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.1172"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"comment-json": "4.2.5",
|
|
@@ -27,33 +27,36 @@
|
|
|
27
27
|
"@teambit/legacy.extension-data": "0.0.166",
|
|
28
28
|
"@teambit/toolbox.array.duplications-finder": "0.0.16",
|
|
29
29
|
"@teambit/cli-table": "0.0.64",
|
|
30
|
-
"@teambit/dependency-resolver": "1.0.
|
|
31
|
-
"@teambit/component": "1.0.
|
|
32
|
-
"@teambit/aspect-loader": "1.0.
|
|
33
|
-
"@teambit/builder": "1.0.
|
|
34
|
-
"@teambit/bundler": "1.0.
|
|
35
|
-
"@teambit/compiler": "1.0.
|
|
36
|
-
"@teambit/formatter": "1.0.
|
|
37
|
-
"@teambit/isolator": "1.0.
|
|
38
|
-
"@teambit/linter": "1.0.
|
|
39
|
-
"@teambit/pkg": "1.0.
|
|
40
|
-
"@teambit/preview": "1.0.
|
|
41
|
-
"@teambit/schema": "1.0.
|
|
42
|
-
"@teambit/tester": "1.0.
|
|
43
|
-
"@teambit/typescript": "1.0.
|
|
44
|
-
"@teambit/webpack": "1.0.
|
|
45
|
-
"@teambit/graphql": "1.0.
|
|
46
|
-
"@teambit/dev-files": "1.0.
|
|
47
|
-
"@teambit/issues": "1.0.
|
|
30
|
+
"@teambit/dependency-resolver": "1.0.1172",
|
|
31
|
+
"@teambit/component": "1.0.1172",
|
|
32
|
+
"@teambit/aspect-loader": "1.0.1172",
|
|
33
|
+
"@teambit/builder": "1.0.1172",
|
|
34
|
+
"@teambit/bundler": "1.0.1172",
|
|
35
|
+
"@teambit/compiler": "1.0.1172",
|
|
36
|
+
"@teambit/formatter": "1.0.1172",
|
|
37
|
+
"@teambit/isolator": "1.0.1172",
|
|
38
|
+
"@teambit/linter": "1.0.1172",
|
|
39
|
+
"@teambit/pkg": "1.0.1172",
|
|
40
|
+
"@teambit/preview": "1.0.1172",
|
|
41
|
+
"@teambit/schema": "1.0.1172",
|
|
42
|
+
"@teambit/tester": "1.0.1172",
|
|
43
|
+
"@teambit/typescript": "1.0.1172",
|
|
44
|
+
"@teambit/webpack": "1.0.1172",
|
|
45
|
+
"@teambit/graphql": "1.0.1172",
|
|
46
|
+
"@teambit/dev-files": "1.0.1172",
|
|
47
|
+
"@teambit/issues": "1.0.1172"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/lodash": "4.14.165",
|
|
51
51
|
"@types/mocha": "9.1.0",
|
|
52
|
+
"@teambit/harmony.testing.load-aspect": "0.0.432",
|
|
53
|
+
"@teambit/workspace.testing.mock-workspace": "0.0.246",
|
|
52
54
|
"@teambit/envs.aspect-docs.envs": "0.0.183",
|
|
53
55
|
"@teambit/harmony.envs.core-aspect-env": "2.1.1"
|
|
54
56
|
},
|
|
55
57
|
"peerDependencies": {
|
|
56
|
-
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
58
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
59
|
+
"chai": "5.2.1"
|
|
57
60
|
},
|
|
58
61
|
"license": "Apache-2.0",
|
|
59
62
|
"optionalDependencies": {},
|