@teambit/aspect-loader 0.0.1037 → 0.0.1038

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.
@@ -24,6 +24,20 @@ export declare type ResolvedAspect = {
24
24
  runtimePath: string | null;
25
25
  aspectFilePath: string | null;
26
26
  };
27
+ export declare type LoadExtByManifestContext = {
28
+ seeders?: string[];
29
+ neededFor?: string;
30
+ };
31
+ export declare type LoadExtByManifestOptions = {
32
+ throwOnError?: boolean;
33
+ hideMissingModuleError?: boolean;
34
+ ignoreErrors?: boolean;
35
+ /**
36
+ * If this is enabled then we will show loading error only once for a given extension
37
+ * (even if it was actually try to load it few times by different components for example)
38
+ */
39
+ unifyErrorsByExtId?: boolean;
40
+ };
27
41
  declare type OnAspectLoadError = (err: Error, id: ComponentID) => Promise<boolean>;
28
42
  export declare type OnAspectLoadErrorSlot = SlotRegistry<OnAspectLoadError>;
29
43
  export declare type OnAspectLoadErrorHandler = (err: Error, component: Component) => Promise<boolean>;
@@ -66,6 +80,7 @@ export declare class AspectLoaderMain {
66
80
  private onLoadRequireableExtensionSlot;
67
81
  private pluginSlot;
68
82
  private inMemoryConfiguredAspects;
83
+ private failedToLoadExt;
69
84
  constructor(logger: Logger, envs: EnvsMain, harmony: Harmony, onAspectLoadErrorSlot: OnAspectLoadErrorSlot, onLoadRequireableExtensionSlot: OnLoadRequireableExtensionSlot, pluginSlot: PluginDefinitionSlot);
70
85
  private getCompiler;
71
86
  registerOnAspectLoadErrorSlot(onAspectLoadError: OnAspectLoadError): void;
@@ -162,7 +177,7 @@ export declare class AspectLoaderMain {
162
177
  * register a plugin.
163
178
  */
164
179
  registerPlugins(pluginDefs: PluginDefinition[]): void;
165
- loadExtensionsByManifests(extensionsManifests: Array<ExtensionManifest | Aspect>, throwOnError?: boolean, seeders?: string[]): Promise<void>;
180
+ loadExtensionsByManifests(extensionsManifests: Array<ExtensionManifest | Aspect>, context?: LoadExtByManifestContext, options?: LoadExtByManifestOptions): Promise<void>;
166
181
  private generateManifestGraph;
167
182
  static runtime: import("@teambit/harmony").RuntimeDefinition;
168
183
  static dependencies: Aspect[];
@@ -66,6 +66,13 @@ function _harmony() {
66
66
  };
67
67
  return data;
68
68
  }
69
+ function _bitError() {
70
+ const data = require("@teambit/bit-error");
71
+ _bitError = function () {
72
+ return data;
73
+ };
74
+ return data;
75
+ }
69
76
  function _component() {
70
77
  const data = require("@teambit/component");
71
78
  _component = function () {
@@ -164,6 +171,8 @@ function _plugins() {
164
171
  };
165
172
  return data;
166
173
  }
174
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
175
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
167
176
  class AspectLoaderMain {
168
177
  constructor(logger, envs, harmony, onAspectLoadErrorSlot, onLoadRequireableExtensionSlot, pluginSlot) {
169
178
  this.logger = logger;
@@ -173,6 +182,7 @@ class AspectLoaderMain {
173
182
  this.onLoadRequireableExtensionSlot = onLoadRequireableExtensionSlot;
174
183
  this.pluginSlot = pluginSlot;
175
184
  (0, _defineProperty2().default)(this, "inMemoryConfiguredAspects", []);
185
+ (0, _defineProperty2().default)(this, "failedToLoadExt", new Set());
176
186
  (0, _defineProperty2().default)(this, "_coreAspects", []);
177
187
  (0, _defineProperty2().default)(this, "_reserved", ['teambit.harmony/bit', 'teambit.harmony/config']);
178
188
  (0, _defineProperty2().default)(this, "_mainAspect", void 0);
@@ -416,7 +426,9 @@ class AspectLoaderMain {
416
426
  */
417
427
  async loadRequireableExtensions(requireableExtensions, throwOnError = false) {
418
428
  const manifests = await this.getManifestsFromRequireableExtensions(requireableExtensions, throwOnError);
419
- return this.loadExtensionsByManifests(manifests, throwOnError);
429
+ return this.loadExtensionsByManifests(manifests, undefined, {
430
+ throwOnError
431
+ });
420
432
  }
421
433
  async getManifestsFromRequireableExtensions(requireableExtensions, throwOnError = false) {
422
434
  const manifestsP = (0, _pMapSeries().default)(requireableExtensions, async requireableExtension => {
@@ -581,7 +593,23 @@ class AspectLoaderMain {
581
593
  registerPlugins(pluginDefs) {
582
594
  this.pluginSlot.register(pluginDefs);
583
595
  }
584
- async loadExtensionsByManifests(extensionsManifests, throwOnError = true, seeders = []) {
596
+ async loadExtensionsByManifests(extensionsManifests, context = {
597
+ seeders: []
598
+ }, options = {
599
+ throwOnError: true,
600
+ hideMissingModuleError: false,
601
+ ignoreErrors: false,
602
+ unifyErrorsByExtId: true
603
+ }) {
604
+ const neededFor = context.neededFor;
605
+ const seeders = context.seeders || [];
606
+ const defaultLoadExtByManifestOptions = {
607
+ throwOnError: true,
608
+ hideMissingModuleError: false,
609
+ ignoreErrors: false,
610
+ unifyErrorsByExtId: true
611
+ };
612
+ const mergedOptions = _objectSpread(_objectSpread({}, defaultLoadExtByManifestOptions), options);
585
613
  try {
586
614
  const manifests = extensionsManifests.filter(manifest => {
587
615
  const isValid = this.isValidAspect(manifest);
@@ -609,15 +637,31 @@ class AspectLoaderMain {
609
637
  const ids = extensionsManifests.map(manifest => manifest.id || 'unknown');
610
638
  // TODO: improve texts
611
639
  const errorMsg = e.message.split('\n')[0];
612
- const warning = (0, _constants2().UNABLE_TO_LOAD_EXTENSION_FROM_LIST)(ids, errorMsg);
640
+ const warning = (0, _constants2().UNABLE_TO_LOAD_EXTENSION_FROM_LIST)(ids, errorMsg, neededFor);
613
641
  this.logger.error(warning, e);
642
+ if (mergedOptions.ignoreErrors) return;
643
+ if (e.code === 'MODULE_NOT_FOUND' && mergedOptions.hideMissingModuleError) return;
644
+ if (mergedOptions.unifyErrorsByExtId) {
645
+ const needToPrint = (0, _lodash().some)(ids, id => !this.failedToLoadExt.has(id));
646
+ if (!needToPrint) return;
647
+ ids.forEach(id => {
648
+ this.failedToLoadExt.add(id);
649
+ this.envs.addFailedToLoadExtension(id);
650
+ const parsedId = _component().ComponentID.tryFromString(id);
651
+ if (parsedId) {
652
+ this.failedToLoadExt.add(parsedId.fullName);
653
+ this.envs.addFailedToLoadExtension(parsedId.fullName);
654
+ }
655
+ });
656
+ }
614
657
  if (this.logger.isLoaderStarted) {
658
+ if (mergedOptions.throwOnError) throw new (_bitError().BitError)(warning);
615
659
  this.logger.consoleFailure(warning);
616
660
  } else {
617
661
  this.logger.consoleWarning(warning);
618
662
  this.logger.consoleWarning(e);
619
663
  }
620
- if (throwOnError) {
664
+ if (mergedOptions.throwOnError) {
621
665
  throw e;
622
666
  }
623
667
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AspectLoaderMain","constructor","logger","envs","harmony","onAspectLoadErrorSlot","onLoadRequireableExtensionSlot","pluginSlot","getCompiler","component","env","getEnv","registerOnAspectLoadErrorSlot","onAspectLoadError","register","registerOnLoadRequireableExtensionSlot","onLoadRequireableExtension","triggerOnAspectLoadError","err","entries","toArray","isFixed","mapSeries","onAspectFailFunc","result","id","getRuntimePath","modulePath","runtime","runtimeFile","filesystem","files","find","file","relative","includes","compiler","join","dist","getDistPathBySrcPath","e","info","distPath","DEFAULT_DIST_DIRNAME","replaceFileExtToJs","getAspectFilePath","aspectFile","isAspectLoaded","failedAspects","get","getDescriptor","instance","iconFn","icon","apply","undefined","addInMemoryConfiguredAspect","aspectId","inMemoryConfiguredAspects","push","getConfiguredAspects","configuredAspects","Array","from","config","raw","keys","iMemoryConfiguredAspects","concat","getNotLoadedConfiguredExtensions","harmonyExtensions","extensionsIds","loadedExtensions","filter","extId","extensions","loaded","extensionsToLoad","difference","loadDefinition","props","AspectDefinition","coreAspects","_coreAspects","isCoreAspect","ids","getCoreAspectIds","setCoreAspects","aspects","map","aspect","_reserved","getCoreEnvsIds","envsIds","allIds","intersection","isCoreEnv","getUserAspects","coreAspectIds","getCoreAspectDefs","runtimeName","defs","Promise","all","rawDef","getAspectDef","def","runtimePath","resolveAspects","components","resolver","promises","resolvedAspect","aspectPath","aspectFilePath","aspectDefs","compact","mainAspect","_mainAspect","setMainAspect","failedLoadAspect","resetFailedLoadAspects","addFailure","cloneManifest","manifest","cloned","Object","assign","create","getPrototypeOf","provider","addRuntime","getRuntime","doRequire","requireableExtension","idStr","toString","require","default","newManifest","runOnLoadRequireableExtensionSubscribers","loadRequireableExtensions","requireableExtensions","throwOnError","manifests","getManifestsFromRequireableExtensions","loadExtensionsByManifests","manifestsP","firstErr","warn","errAfterReLoad","error","handleExtensionLoadingError","errorMsg","message","split","msg","UNABLE_TO_LOAD_EXTENSION","console","CannotLoadExtension","isLoaderStarted","consoleFailure","consoleWarning","updatedManifest","onLoadRequireableExtensionFunc","getPluginDefs","flatten","values","getPlugins","componentPath","Plugins","bind","relativePath","isAspect","isValidAspect","isAspectComponent","isUsingAspectEnv","loadAspectsFromGlobalScope","aspectIds","globalScope","LegacyScope","ensure","GLOBAL_SCOPE","ensureDir","globalScopeHarmony","loadBit","path","scope","ScopeAspect","aspectLoader","AspectLoaderAspect","ComponentID","fromLegacy","BitId","parse","hasVersions","every","hasVersion","useCache","import","throwIfNotExist","preferDependencyGraph","resolvedAspects","getResolvedAspects","code","resolvedAspectsAgain","skipIfExists","filterAspectDefs","allDefs","componentIds","filterOpts","coreIds","stringIds","toStringWithoutVersion","afterExclusion","excludeCore","isCore","getId","fromString","isTarget","uniqDefs","uniqBy","filterByRuntime","length","requestedOnly","componentIdsString","prepareManifests","MainRuntime","Error","Aspect","registerPlugins","pluginDefs","extensionsManifests","seeders","isValid","preparedManifests","getOnlyDeclaredDependenciesManifests","manifestGraph","generateManifestGraph","nodes","seeder","successors","flat","seederNodes","node","allNodes","nodesUniq","n","attr","relevantManifests","load","warning","UNABLE_TO_LOAD_EXTENSION_FROM_LIST","graph","Graph","forEach","setNode","Node","deps","dependencies","dep","setEdge","Edge","loggerExt","createLogger","getEnvPlugin","LoggerAspect","EnvsAspect","Slot","withType"],"sources":["aspect-loader.main.runtime.ts"],"sourcesContent":["import { join } from 'path';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport { GLOBAL_SCOPE, DEFAULT_DIST_DIRNAME } from '@teambit/legacy/dist/constants';\nimport { MainRuntime } from '@teambit/cli';\nimport { ExtensionManifest, Harmony, Aspect, SlotRegistry, Slot } from '@teambit/harmony';\nimport type { LoggerMain } from '@teambit/logger';\nimport { ComponentID, Component, FilterAspectsOptions } from '@teambit/component';\nimport { Logger, LoggerAspect } from '@teambit/logger';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport { replaceFileExtToJs } from '@teambit/compilation.modules.babel-compiler';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { loadBit } from '@teambit/bit';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport mapSeries from 'p-map-series';\nimport { difference, compact, flatten, intersection, uniqBy } from 'lodash';\nimport { AspectDefinition, AspectDefinitionProps } from './aspect-definition';\nimport { PluginDefinition } from './plugin-definition';\nimport { AspectLoaderAspect } from './aspect-loader.aspect';\nimport { UNABLE_TO_LOAD_EXTENSION, UNABLE_TO_LOAD_EXTENSION_FROM_LIST } from './constants';\nimport { CannotLoadExtension } from './exceptions';\nimport { getAspectDef } from './core-aspects';\nimport { Plugins } from './plugins';\n\nexport type PluginDefinitionSlot = SlotRegistry<PluginDefinition[]>;\n\nexport type AspectDescriptor = {\n /**\n * name of the extension.\n */\n id: string;\n\n /**\n * icon of the extension.\n */\n icon?: string;\n};\n\nexport type AspectResolver = (component: Component) => Promise<ResolvedAspect | undefined>;\n\nexport type ResolvedAspect = {\n aspectPath: string;\n runtimePath: string | null;\n aspectFilePath: string | null;\n};\n\ntype OnAspectLoadError = (err: Error, id: ComponentID) => Promise<boolean>;\nexport type OnAspectLoadErrorSlot = SlotRegistry<OnAspectLoadError>;\n\nexport type OnAspectLoadErrorHandler = (err: Error, component: Component) => Promise<boolean>;\n\nexport type OnLoadRequireableExtension = (\n requireableExtension: RequireableComponent,\n manifest: ExtensionManifest | Aspect\n) => Promise<ExtensionManifest | Aspect>;\n/**\n * A slot which run during loading the requirable extension (after first manifest calculation)\n */\nexport type OnLoadRequireableExtensionSlot = SlotRegistry<OnLoadRequireableExtension>;\n\nexport type MainAspect = {\n /**\n * path to the main aspect.\n */\n path: string;\n\n /**\n * version of the aspect.\n */\n version: string | undefined;\n\n /**\n * package name of the aspect\n */\n packageName: string | undefined;\n\n /**\n * reference to aspect manifest.\n */\n aspect: Aspect;\n\n /**\n * The name of the aspect (without the scope prefix)\n */\n name: string;\n\n /**\n * The name of the aspect\n */\n id: string;\n};\n\nexport class AspectLoaderMain {\n private inMemoryConfiguredAspects: string[] = [];\n\n constructor(\n private logger: Logger,\n private envs: EnvsMain,\n private harmony: Harmony,\n private onAspectLoadErrorSlot: OnAspectLoadErrorSlot,\n private onLoadRequireableExtensionSlot: OnLoadRequireableExtensionSlot,\n private pluginSlot: PluginDefinitionSlot\n ) {}\n\n private getCompiler(component: Component) {\n const env = this.envs.getEnv(component)?.env;\n return env?.getCompiler();\n }\n\n registerOnAspectLoadErrorSlot(onAspectLoadError: OnAspectLoadError) {\n this.onAspectLoadErrorSlot.register(onAspectLoadError);\n }\n\n registerOnLoadRequireableExtensionSlot(onLoadRequireableExtension: OnLoadRequireableExtension) {\n this.onLoadRequireableExtensionSlot.register(onLoadRequireableExtension);\n }\n\n /**\n * returns whether the aspect-load issue has been fixed.\n */\n async triggerOnAspectLoadError(err: Error, component: Component): Promise<boolean> {\n const entries = this.onAspectLoadErrorSlot.toArray(); // e.g. [ [ 'teambit.bit/compiler', [Function: bound onAspectLoadError] ] ]\n let isFixed = false;\n await mapSeries(entries, async ([, onAspectFailFunc]) => {\n const result = await onAspectFailFunc(err, component.id);\n if (result) isFixed = true;\n });\n\n return isFixed;\n }\n\n async getRuntimePath(component: Component, modulePath: string, runtime: string): Promise<string | null> {\n const runtimeFile = component.filesystem.files.find((file: any) => {\n return file.relative.includes(`.${runtime}.runtime`);\n });\n\n // @david we should add a compiler api for this.\n if (!runtimeFile) return null;\n try {\n const compiler = this.getCompiler(component);\n\n if (!compiler) {\n return join(modulePath, runtimeFile.relative);\n }\n\n const dist = compiler.getDistPathBySrcPath(runtimeFile.relative);\n return join(modulePath, dist);\n } catch (e) {\n this.logger.info(`got an error during get runtime path, probably the env is not loaded yet ${e}`);\n // TODO: we are manually adding the dist here and replace the file name to handle case when\n // we load aspects from scope, and their env in the same iteration, but we get into the aspect before its\n // env, so it's env doesn't exist yet\n // we should make sure to first load the env correctly before loading the aspect\n const distPath = join(modulePath, DEFAULT_DIST_DIRNAME, replaceFileExtToJs(runtimeFile.relative));\n return distPath;\n }\n }\n\n async getAspectFilePath(component: Component, modulePath: string): Promise<string | null> {\n const aspectFile = component.filesystem.files.find((file: any) => {\n return file.relative.includes(`.aspect.ts`) || file.relative.includes(`.aspect.js`);\n });\n\n // @david we should add a compiler api for this.\n if (!aspectFile) return null;\n try {\n const compiler = this.getCompiler(component);\n\n if (!compiler) {\n return join(modulePath, aspectFile.relative);\n }\n\n const dist = compiler.getDistPathBySrcPath(aspectFile.relative);\n return join(modulePath, dist);\n } catch (e) {\n this.logger.info(`got an error during get runtime path, probably the env is not loaded yet ${e}`);\n // TODO: we are manually adding the dist here and replace the file name to handle case when\n // we load aspects from scope, and their env in the same iteration, but we get into the aspect before its\n // env, so it's env doesn't exist yet\n // we should make sure to first load the env correctly before loading the aspect\n const distPath = join(modulePath, DEFAULT_DIST_DIRNAME, replaceFileExtToJs(aspectFile.relative));\n return distPath;\n }\n }\n\n isAspectLoaded(id: string) {\n if (this.failedAspects.includes(id)) return true;\n try {\n return this.harmony.get(id);\n } catch (err: any) {\n return false;\n }\n }\n\n getDescriptor(id: string): AspectDescriptor | undefined {\n try {\n const instance = this.harmony.get<any>(id);\n const iconFn = instance.icon;\n\n const icon = iconFn ? iconFn.apply(instance) : undefined;\n\n return {\n id,\n icon,\n };\n } catch (err) {\n return undefined;\n }\n }\n\n /**\n * This is used when adding aspects to workspace.jsonc during the process (like in bit use command)\n * and we want to make sure that follow operation (like bit install) will recognize those aspects\n * but the harmony config is already in memory.\n * Probably a better to do it is to make sure we can re-load the config somehow\n * ideally by adding the config class in harmony a reload API\n * @param aspectId\n */\n addInMemoryConfiguredAspect(aspectId: string): void {\n this.inMemoryConfiguredAspects.push(aspectId);\n }\n\n /**\n * get all the configured aspects in the config file (workspace.jsonc / bit.jsonc)\n */\n getConfiguredAspects(): string[] {\n const configuredAspects = Array.from(this.harmony.config.raw.keys());\n const iMemoryConfiguredAspects = this.inMemoryConfiguredAspects;\n return configuredAspects.concat(iMemoryConfiguredAspects);\n }\n getNotLoadedConfiguredExtensions() {\n const configuredAspects = this.getConfiguredAspects();\n const harmonyExtensions = this.harmony.extensionsIds;\n const loadedExtensions = harmonyExtensions.filter((extId) => {\n return this.harmony.extensions.get(extId)?.loaded;\n });\n const extensionsToLoad = difference(configuredAspects, loadedExtensions);\n return extensionsToLoad;\n }\n\n loadDefinition(props: AspectDefinitionProps): AspectDefinition {\n return AspectDefinition.from(props);\n }\n\n private _coreAspects: Aspect[] = [];\n\n get coreAspects() {\n return this._coreAspects;\n }\n\n isCoreAspect(id: string) {\n const ids = this.getCoreAspectIds();\n return ids.includes(id);\n }\n\n setCoreAspects(aspects: Aspect[]) {\n this._coreAspects = aspects;\n return this;\n }\n\n getCoreAspectIds() {\n const ids = this.coreAspects.map((aspect) => aspect.id);\n return ids.concat(this._reserved);\n }\n\n /**\n * Get all the core envs ids which is still register in the bit manifest as core aspect\n */\n getCoreEnvsIds(): string[] {\n const envsIds = this.envs.getCoreEnvsIds();\n const allIds = this.getCoreAspectIds();\n return intersection(allIds, envsIds);\n }\n\n isCoreEnv(id: string): boolean {\n const ids = this.getCoreEnvsIds();\n return ids.includes(id);\n }\n\n private _reserved = ['teambit.harmony/bit', 'teambit.harmony/config'];\n\n getUserAspects(): string[] {\n const coreAspectIds = this.getCoreAspectIds();\n return difference(this.harmony.extensionsIds, coreAspectIds);\n }\n\n async getCoreAspectDefs(runtimeName?: string) {\n const defs = await Promise.all(\n this.coreAspects.map(async (aspect) => {\n const id = aspect.id;\n const rawDef = await getAspectDef(id, runtimeName);\n return this.loadDefinition(rawDef);\n })\n );\n\n return defs.filter((def) => def.runtimePath);\n }\n\n async resolveAspects(components: Component[], resolver: AspectResolver): Promise<AspectDefinition[]> {\n const promises = components.map(async (component) => {\n const resolvedAspect = await resolver(component);\n if (!resolvedAspect) return undefined;\n return new AspectDefinition(\n resolvedAspect.aspectPath,\n resolvedAspect.aspectFilePath,\n resolvedAspect.runtimePath,\n component\n );\n });\n\n const aspectDefs = await Promise.all(promises);\n // return aspectDefs.filter((def) => def.runtimePath);\n return compact(aspectDefs);\n }\n\n private _mainAspect: MainAspect;\n\n get mainAspect() {\n return this._mainAspect;\n }\n\n setMainAspect(mainAspect: MainAspect) {\n this._mainAspect = mainAspect;\n return this;\n }\n\n private failedLoadAspect: string[] = [];\n\n get failedAspects() {\n return this.failedLoadAspect;\n }\n\n public resetFailedLoadAspects() {\n this.failedLoadAspect = [];\n }\n\n private addFailure(id: string): void {\n if (this.failedAspects.includes(id)) return;\n this.failedLoadAspect.push(id);\n }\n\n cloneManifest(manifest: any) {\n const cloned = Object.assign(Object.create(Object.getPrototypeOf(manifest)), manifest);\n cloned.provider = manifest.provider;\n cloned.addRuntime = manifest.addRuntime;\n cloned.getRuntime = manifest.getRuntime;\n return cloned;\n }\n\n /**\n * run \"require\" of the component code to get the manifest\n */\n async doRequire(requireableExtension: RequireableComponent): Promise<ExtensionManifest | Aspect> {\n const idStr = requireableExtension.component.id.toString();\n const aspect = await requireableExtension.require();\n const manifest = aspect.default || aspect;\n manifest.id = idStr;\n // It's important to clone deep the manifest here to prevent mutate dependencies of other manifests as they point to the same location in memory\n const cloned = this.cloneManifest(manifest);\n const newManifest = await this.runOnLoadRequireableExtensionSubscribers(requireableExtension, cloned);\n return newManifest;\n }\n\n /**\n * in case the extension failed to load, prefer to throw an error, unless `throwOnError` param\n * passed as `false`.\n * there are cases when throwing an error blocks the user from doing anything else. for example,\n * when a user develops an extension and deletes the node-modules, the extension on the workspace\n * cannot be loaded anymore until \"bit compile\" is running. however, if this function throws an\n * error, it'll throw for \"bit compile\" as well, which blocks the user.\n * for the CI, it is important to throw an error because errors on console can be ignored.\n * for now, when loading the extension from the workspace the throwOnError is passed as false.\n * when loading from the scope (CI) it should be true.\n *\n * the console printing here is done directly by \"console.error\" and not by the logger. the reason\n * is that the logger.console only prints when the loader started (which, btw, happens after\n * entering this function, so it can't work) and here we want it to be printed regardless of the\n * rules of starting the loader. e.g. if by mistake the CI got it as throwOnError=false, it's ok\n * to break the output by the console.error.\n *\n * @todo: this is not the final word however about throwing/non throwing errors here.\n * in some cases, such as \"bit tag\", it's better not to tag if an extension changes the model.\n */\n async loadRequireableExtensions(requireableExtensions: RequireableComponent[], throwOnError = false): Promise<void> {\n const manifests = await this.getManifestsFromRequireableExtensions(requireableExtensions, throwOnError);\n return this.loadExtensionsByManifests(manifests, throwOnError);\n }\n\n async getManifestsFromRequireableExtensions(\n requireableExtensions: RequireableComponent[],\n throwOnError = false\n ): Promise<Array<ExtensionManifest | Aspect>> {\n const manifestsP = mapSeries(requireableExtensions, async (requireableExtension) => {\n if (!requireableExtensions) return undefined;\n const idStr = requireableExtension.component.id.toString();\n try {\n return await this.doRequire(requireableExtension);\n } catch (firstErr: any) {\n this.addFailure(idStr);\n this.logger.warn(`failed loading an aspect \"${idStr}\", will try to fix and reload`, firstErr);\n const isFixed = await this.triggerOnAspectLoadError(firstErr, requireableExtension.component);\n let errAfterReLoad;\n if (isFixed) {\n this.logger.info(`the loading issue might be fixed now, re-loading ${idStr}`);\n try {\n return await this.doRequire(requireableExtension);\n } catch (err: any) {\n this.logger.warn(`re-load of the aspect \"${idStr}\" failed as well`, err);\n errAfterReLoad = err;\n }\n }\n const error = errAfterReLoad || firstErr;\n this.handleExtensionLoadingError(error, idStr, throwOnError);\n }\n return undefined;\n });\n const manifests = await manifestsP;\n\n // Remove empty manifests as a result of loading issue\n return compact(manifests);\n }\n\n handleExtensionLoadingError(error: Error, idStr: string, throwOnError: boolean) {\n const errorMsg = error.message.split('\\n')[0]; // show only the first line if the error is long (e.g. happens with MODULE_NOT_FOUND errors)\n const msg = UNABLE_TO_LOAD_EXTENSION(idStr, errorMsg);\n if (throwOnError) {\n // @ts-ignore\n this.logger.console(error);\n throw new CannotLoadExtension(idStr, error);\n }\n this.logger.error(msg, error);\n if (this.logger.isLoaderStarted) {\n this.logger.consoleFailure(msg);\n } else {\n this.logger.consoleWarning(msg);\n }\n }\n\n async runOnLoadRequireableExtensionSubscribers(\n requireableExtension: RequireableComponent,\n manifest: ExtensionManifest | Aspect\n ): Promise<ExtensionManifest | Aspect> {\n let updatedManifest = manifest;\n const entries = this.onLoadRequireableExtensionSlot.toArray();\n await mapSeries(entries, async ([, onLoadRequireableExtensionFunc]) => {\n updatedManifest = await onLoadRequireableExtensionFunc(requireableExtension, updatedManifest);\n });\n return updatedManifest;\n }\n\n getPluginDefs() {\n return flatten(this.pluginSlot.values());\n }\n\n getPlugins(component: Component, componentPath: string): Plugins {\n const defs = this.getPluginDefs();\n return Plugins.from(component, defs, this.triggerOnAspectLoadError.bind(this), this.logger, (relativePath) => {\n const compiler = this.getCompiler(component);\n if (!compiler) {\n return join(componentPath, relativePath);\n }\n\n const dist = compiler.getDistPathBySrcPath(relativePath);\n return join(componentPath, dist);\n });\n }\n\n isAspect(manifest: any) {\n return !!(manifest.addRuntime && manifest.getRuntime);\n }\n\n isValidAspect(manifest: any): boolean {\n return this.isAspect(manifest) || manifest.provider;\n }\n\n isAspectComponent(component: Component): boolean {\n return this.envs.isUsingAspectEnv(component);\n }\n\n /**\n * get or create a global scope, import the non-core aspects, load bit from that scope, create\n * capsules for the aspects and load them from the capsules.\n */\n async loadAspectsFromGlobalScope(\n aspectIds: string[]\n ): Promise<{ components: Component[]; globalScopeHarmony: Harmony }> {\n const globalScope = await LegacyScope.ensure(GLOBAL_SCOPE, 'global-scope');\n await globalScope.ensureDir();\n const globalScopeHarmony = await loadBit(globalScope.path);\n const scope = globalScopeHarmony.get<ScopeMain>(ScopeAspect.id);\n const aspectLoader = globalScopeHarmony.get<AspectLoaderMain>(AspectLoaderAspect.id);\n // @todo: Gilad make this work\n // const ids = await scope.resolveMultipleComponentIds(aspectIds);\n const ids = aspectIds.map((id) => ComponentID.fromLegacy(BitId.parse(id, true)));\n const hasVersions = ids.every((id) => id.hasVersion());\n const useCache = hasVersions; // if all components has versions, try to use the cached aspects\n const components = await scope.import(ids, { useCache, throwIfNotExist: true, preferDependencyGraph: true });\n\n // don't use `await scope.loadAspectsFromCapsules(components, true);`\n // it won't work for globalScope because `this !== scope.aspectLoader` (this instance\n // is not the same as the aspectLoader instance Scope has)\n const resolvedAspects = await scope.getResolvedAspects(components);\n try {\n await aspectLoader.loadRequireableExtensions(resolvedAspects, true);\n } catch (err: any) {\n if (err?.error?.code === 'MODULE_NOT_FOUND') {\n const resolvedAspectsAgain = await scope.getResolvedAspects(components, { skipIfExists: false });\n await aspectLoader.loadRequireableExtensions(resolvedAspectsAgain, true);\n } else {\n throw err;\n }\n }\n\n return { components, globalScopeHarmony };\n }\n\n filterAspectDefs(\n allDefs: AspectDefinition[],\n componentIds: ComponentID[],\n runtimeName: string | undefined,\n filterOpts: FilterAspectsOptions = {}\n ) {\n const coreIds = this.getCoreAspectIds();\n const stringIds = componentIds.map((id) => id.toStringWithoutVersion());\n const afterExclusion = filterOpts.excludeCore\n ? allDefs.filter((def) => {\n const isCore = coreIds.includes(def.getId || '');\n const id = ComponentID.fromString(def.getId || '');\n const isTarget = stringIds.includes(id.toStringWithoutVersion());\n if (isTarget) return true;\n return !isCore;\n })\n : allDefs;\n\n const uniqDefs = uniqBy(afterExclusion, (def) => `${def.aspectPath}-${def.runtimePath}`);\n let defs = uniqDefs;\n if (runtimeName && filterOpts.filterByRuntime) {\n defs = defs.filter((def) => def.runtimePath);\n }\n\n if (componentIds && componentIds.length && filterOpts.requestedOnly) {\n const componentIdsString = componentIds.map((id) => id.toString());\n defs = defs.filter((def) => {\n return (\n (def.id && componentIdsString.includes(def.id)) ||\n (def.component && componentIdsString.includes(def.component?.id.toString()))\n );\n });\n }\n\n return defs;\n }\n\n private prepareManifests(manifests: Array<ExtensionManifest | Aspect>): Aspect[] {\n return manifests.map((manifest: any) => {\n if (this.isAspect(manifest)) return manifest as Aspect;\n manifest.runtime = MainRuntime;\n if (!manifest.id) throw new Error('manifest must have static id');\n const aspect = Aspect.create({\n id: manifest.id,\n });\n aspect.addRuntime(manifest);\n return aspect;\n });\n }\n\n /**\n * register a plugin.\n */\n registerPlugins(pluginDefs: PluginDefinition[]) {\n this.pluginSlot.register(pluginDefs);\n }\n\n async loadExtensionsByManifests(\n extensionsManifests: Array<ExtensionManifest | Aspect>,\n throwOnError = true,\n seeders: string[] = []\n ) {\n try {\n const manifests = extensionsManifests.filter((manifest) => {\n const isValid = this.isValidAspect(manifest);\n if (!isValid) this.logger.warn(`${manifest.id} is invalid. please make sure the extension is valid.`);\n return isValid;\n });\n const preparedManifests = this.prepareManifests(manifests);\n // don't let harmony load all aspects. if seeders were sent, find their manifests, check for their static\n // dependencies, and load only them.\n const getOnlyDeclaredDependenciesManifests = () => {\n if (!seeders.length || seeders.length === preparedManifests.length) {\n return preparedManifests;\n }\n const manifestGraph = this.generateManifestGraph(preparedManifests);\n const nodes = seeders.map((seeder) => manifestGraph.successors(seeder)).flat();\n const seederNodes = compact(seeders.map((seeder) => manifestGraph.node(seeder)));\n const allNodes = [...nodes, ...seederNodes];\n const nodesUniq = uniqBy(allNodes, 'id');\n return nodesUniq.map((n) => n.attr);\n };\n const relevantManifests = getOnlyDeclaredDependenciesManifests();\n // @ts-ignore TODO: fix this\n await this.harmony.load(relevantManifests);\n } catch (e: any) {\n const ids = extensionsManifests.map((manifest) => manifest.id || 'unknown');\n // TODO: improve texts\n const errorMsg = e.message.split('\\n')[0];\n const warning = UNABLE_TO_LOAD_EXTENSION_FROM_LIST(ids, errorMsg);\n this.logger.error(warning, e);\n if (this.logger.isLoaderStarted) {\n this.logger.consoleFailure(warning);\n } else {\n this.logger.consoleWarning(warning);\n this.logger.consoleWarning(e);\n }\n if (throwOnError) {\n throw e;\n }\n }\n }\n\n private generateManifestGraph(manifests: Aspect[]) {\n const graph = new Graph<Aspect, string>();\n manifests.forEach((manifest) => graph.setNode(new Node(manifest.id, manifest)));\n manifests.forEach((manifest) => {\n const deps = manifest.getRuntime(MainRuntime)?.dependencies?.map((dep) => dep.id);\n deps?.forEach((dep) => {\n if (graph.node(dep)) {\n graph.setEdge(new Edge(manifest.id, dep, 'dep'));\n }\n });\n });\n return graph;\n }\n\n static runtime = MainRuntime;\n static dependencies = [LoggerAspect, EnvsAspect];\n static slots = [\n Slot.withType<OnAspectLoadError>(),\n Slot.withType<OnLoadRequireableExtension>(),\n Slot.withType<PluginDefinition[]>(),\n ];\n\n static async provider(\n [loggerExt, envs]: [LoggerMain, EnvsMain],\n config,\n [onAspectLoadErrorSlot, onLoadRequireableExtensionSlot, pluginSlot]: [\n OnAspectLoadErrorSlot,\n OnLoadRequireableExtensionSlot,\n PluginDefinitionSlot\n ],\n harmony: Harmony\n ) {\n const logger = loggerExt.createLogger(AspectLoaderAspect.id);\n const aspectLoader = new AspectLoaderMain(\n logger,\n envs,\n harmony,\n onAspectLoadErrorSlot,\n onLoadRequireableExtensionSlot,\n pluginSlot\n );\n\n aspectLoader.registerPlugins([envs.getEnvPlugin()]);\n\n return aspectLoader;\n }\n}\n\nAspectLoaderAspect.addRuntime(AspectLoaderMain);\n\nexport default AspectLoaderMain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["AspectLoaderMain","constructor","logger","envs","harmony","onAspectLoadErrorSlot","onLoadRequireableExtensionSlot","pluginSlot","Set","getCompiler","component","env","getEnv","registerOnAspectLoadErrorSlot","onAspectLoadError","register","registerOnLoadRequireableExtensionSlot","onLoadRequireableExtension","triggerOnAspectLoadError","err","entries","toArray","isFixed","mapSeries","onAspectFailFunc","result","id","getRuntimePath","modulePath","runtime","runtimeFile","filesystem","files","find","file","relative","includes","compiler","join","dist","getDistPathBySrcPath","e","info","distPath","DEFAULT_DIST_DIRNAME","replaceFileExtToJs","getAspectFilePath","aspectFile","isAspectLoaded","failedAspects","get","getDescriptor","instance","iconFn","icon","apply","undefined","addInMemoryConfiguredAspect","aspectId","inMemoryConfiguredAspects","push","getConfiguredAspects","configuredAspects","Array","from","config","raw","keys","iMemoryConfiguredAspects","concat","getNotLoadedConfiguredExtensions","harmonyExtensions","extensionsIds","loadedExtensions","filter","extId","extensions","loaded","extensionsToLoad","difference","loadDefinition","props","AspectDefinition","coreAspects","_coreAspects","isCoreAspect","ids","getCoreAspectIds","setCoreAspects","aspects","map","aspect","_reserved","getCoreEnvsIds","envsIds","allIds","intersection","isCoreEnv","getUserAspects","coreAspectIds","getCoreAspectDefs","runtimeName","defs","Promise","all","rawDef","getAspectDef","def","runtimePath","resolveAspects","components","resolver","promises","resolvedAspect","aspectPath","aspectFilePath","aspectDefs","compact","mainAspect","_mainAspect","setMainAspect","failedLoadAspect","resetFailedLoadAspects","addFailure","cloneManifest","manifest","cloned","Object","assign","create","getPrototypeOf","provider","addRuntime","getRuntime","doRequire","requireableExtension","idStr","toString","require","default","newManifest","runOnLoadRequireableExtensionSubscribers","loadRequireableExtensions","requireableExtensions","throwOnError","manifests","getManifestsFromRequireableExtensions","loadExtensionsByManifests","manifestsP","firstErr","warn","errAfterReLoad","error","handleExtensionLoadingError","errorMsg","message","split","msg","UNABLE_TO_LOAD_EXTENSION","console","CannotLoadExtension","isLoaderStarted","consoleFailure","consoleWarning","updatedManifest","onLoadRequireableExtensionFunc","getPluginDefs","flatten","values","getPlugins","componentPath","Plugins","bind","relativePath","isAspect","isValidAspect","isAspectComponent","isUsingAspectEnv","loadAspectsFromGlobalScope","aspectIds","globalScope","LegacyScope","ensure","GLOBAL_SCOPE","ensureDir","globalScopeHarmony","loadBit","path","scope","ScopeAspect","aspectLoader","AspectLoaderAspect","ComponentID","fromLegacy","BitId","parse","hasVersions","every","hasVersion","useCache","import","throwIfNotExist","preferDependencyGraph","resolvedAspects","getResolvedAspects","code","resolvedAspectsAgain","skipIfExists","filterAspectDefs","allDefs","componentIds","filterOpts","coreIds","stringIds","toStringWithoutVersion","afterExclusion","excludeCore","isCore","getId","fromString","isTarget","uniqDefs","uniqBy","filterByRuntime","length","requestedOnly","componentIdsString","prepareManifests","MainRuntime","Error","Aspect","registerPlugins","pluginDefs","extensionsManifests","context","seeders","options","hideMissingModuleError","ignoreErrors","unifyErrorsByExtId","neededFor","defaultLoadExtByManifestOptions","mergedOptions","isValid","preparedManifests","getOnlyDeclaredDependenciesManifests","manifestGraph","generateManifestGraph","nodes","seeder","successors","flat","seederNodes","node","allNodes","nodesUniq","n","attr","relevantManifests","load","warning","UNABLE_TO_LOAD_EXTENSION_FROM_LIST","needToPrint","some","failedToLoadExt","has","forEach","add","addFailedToLoadExtension","parsedId","tryFromString","fullName","BitError","graph","Graph","setNode","Node","deps","dependencies","dep","setEdge","Edge","loggerExt","createLogger","getEnvPlugin","LoggerAspect","EnvsAspect","Slot","withType"],"sources":["aspect-loader.main.runtime.ts"],"sourcesContent":["import { join } from 'path';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport { GLOBAL_SCOPE, DEFAULT_DIST_DIRNAME } from '@teambit/legacy/dist/constants';\nimport { MainRuntime } from '@teambit/cli';\nimport { ExtensionManifest, Harmony, Aspect, SlotRegistry, Slot } from '@teambit/harmony';\nimport { BitError } from '@teambit/bit-error';\nimport type { LoggerMain } from '@teambit/logger';\nimport { ComponentID, Component, FilterAspectsOptions } from '@teambit/component';\nimport { Logger, LoggerAspect } from '@teambit/logger';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport { replaceFileExtToJs } from '@teambit/compilation.modules.babel-compiler';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { loadBit } from '@teambit/bit';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport mapSeries from 'p-map-series';\nimport { difference, compact, flatten, intersection, uniqBy, some } from 'lodash';\nimport { AspectDefinition, AspectDefinitionProps } from './aspect-definition';\nimport { PluginDefinition } from './plugin-definition';\nimport { AspectLoaderAspect } from './aspect-loader.aspect';\nimport { UNABLE_TO_LOAD_EXTENSION, UNABLE_TO_LOAD_EXTENSION_FROM_LIST } from './constants';\nimport { CannotLoadExtension } from './exceptions';\nimport { getAspectDef } from './core-aspects';\nimport { Plugins } from './plugins';\n\nexport type PluginDefinitionSlot = SlotRegistry<PluginDefinition[]>;\n\nexport type AspectDescriptor = {\n /**\n * name of the extension.\n */\n id: string;\n\n /**\n * icon of the extension.\n */\n icon?: string;\n};\n\nexport type AspectResolver = (component: Component) => Promise<ResolvedAspect | undefined>;\n\nexport type ResolvedAspect = {\n aspectPath: string;\n runtimePath: string | null;\n aspectFilePath: string | null;\n};\n\nexport type LoadExtByManifestContext = {\n seeders?: string[];\n neededFor?: string;\n};\n\nexport type LoadExtByManifestOptions = {\n throwOnError?: boolean;\n hideMissingModuleError?: boolean;\n ignoreErrors?: boolean;\n /**\n * If this is enabled then we will show loading error only once for a given extension\n * (even if it was actually try to load it few times by different components for example)\n */\n unifyErrorsByExtId?: boolean;\n};\n\ntype OnAspectLoadError = (err: Error, id: ComponentID) => Promise<boolean>;\nexport type OnAspectLoadErrorSlot = SlotRegistry<OnAspectLoadError>;\n\nexport type OnAspectLoadErrorHandler = (err: Error, component: Component) => Promise<boolean>;\n\nexport type OnLoadRequireableExtension = (\n requireableExtension: RequireableComponent,\n manifest: ExtensionManifest | Aspect\n) => Promise<ExtensionManifest | Aspect>;\n/**\n * A slot which run during loading the requirable extension (after first manifest calculation)\n */\nexport type OnLoadRequireableExtensionSlot = SlotRegistry<OnLoadRequireableExtension>;\n\nexport type MainAspect = {\n /**\n * path to the main aspect.\n */\n path: string;\n\n /**\n * version of the aspect.\n */\n version: string | undefined;\n\n /**\n * package name of the aspect\n */\n packageName: string | undefined;\n\n /**\n * reference to aspect manifest.\n */\n aspect: Aspect;\n\n /**\n * The name of the aspect (without the scope prefix)\n */\n name: string;\n\n /**\n * The name of the aspect\n */\n id: string;\n};\n\nexport class AspectLoaderMain {\n private inMemoryConfiguredAspects: string[] = [];\n private failedToLoadExt = new Set<string>();\n\n constructor(\n private logger: Logger,\n private envs: EnvsMain,\n private harmony: Harmony,\n private onAspectLoadErrorSlot: OnAspectLoadErrorSlot,\n private onLoadRequireableExtensionSlot: OnLoadRequireableExtensionSlot,\n private pluginSlot: PluginDefinitionSlot\n ) {}\n\n private getCompiler(component: Component) {\n const env = this.envs.getEnv(component)?.env;\n return env?.getCompiler();\n }\n\n registerOnAspectLoadErrorSlot(onAspectLoadError: OnAspectLoadError) {\n this.onAspectLoadErrorSlot.register(onAspectLoadError);\n }\n\n registerOnLoadRequireableExtensionSlot(onLoadRequireableExtension: OnLoadRequireableExtension) {\n this.onLoadRequireableExtensionSlot.register(onLoadRequireableExtension);\n }\n\n /**\n * returns whether the aspect-load issue has been fixed.\n */\n async triggerOnAspectLoadError(err: Error, component: Component): Promise<boolean> {\n const entries = this.onAspectLoadErrorSlot.toArray(); // e.g. [ [ 'teambit.bit/compiler', [Function: bound onAspectLoadError] ] ]\n let isFixed = false;\n await mapSeries(entries, async ([, onAspectFailFunc]) => {\n const result = await onAspectFailFunc(err, component.id);\n if (result) isFixed = true;\n });\n\n return isFixed;\n }\n\n async getRuntimePath(component: Component, modulePath: string, runtime: string): Promise<string | null> {\n const runtimeFile = component.filesystem.files.find((file: any) => {\n return file.relative.includes(`.${runtime}.runtime`);\n });\n\n // @david we should add a compiler api for this.\n if (!runtimeFile) return null;\n try {\n const compiler = this.getCompiler(component);\n\n if (!compiler) {\n return join(modulePath, runtimeFile.relative);\n }\n\n const dist = compiler.getDistPathBySrcPath(runtimeFile.relative);\n return join(modulePath, dist);\n } catch (e) {\n this.logger.info(`got an error during get runtime path, probably the env is not loaded yet ${e}`);\n // TODO: we are manually adding the dist here and replace the file name to handle case when\n // we load aspects from scope, and their env in the same iteration, but we get into the aspect before its\n // env, so it's env doesn't exist yet\n // we should make sure to first load the env correctly before loading the aspect\n const distPath = join(modulePath, DEFAULT_DIST_DIRNAME, replaceFileExtToJs(runtimeFile.relative));\n return distPath;\n }\n }\n\n async getAspectFilePath(component: Component, modulePath: string): Promise<string | null> {\n const aspectFile = component.filesystem.files.find((file: any) => {\n return file.relative.includes(`.aspect.ts`) || file.relative.includes(`.aspect.js`);\n });\n\n // @david we should add a compiler api for this.\n if (!aspectFile) return null;\n try {\n const compiler = this.getCompiler(component);\n\n if (!compiler) {\n return join(modulePath, aspectFile.relative);\n }\n\n const dist = compiler.getDistPathBySrcPath(aspectFile.relative);\n return join(modulePath, dist);\n } catch (e) {\n this.logger.info(`got an error during get runtime path, probably the env is not loaded yet ${e}`);\n // TODO: we are manually adding the dist here and replace the file name to handle case when\n // we load aspects from scope, and their env in the same iteration, but we get into the aspect before its\n // env, so it's env doesn't exist yet\n // we should make sure to first load the env correctly before loading the aspect\n const distPath = join(modulePath, DEFAULT_DIST_DIRNAME, replaceFileExtToJs(aspectFile.relative));\n return distPath;\n }\n }\n\n isAspectLoaded(id: string) {\n if (this.failedAspects.includes(id)) return true;\n try {\n return this.harmony.get(id);\n } catch (err: any) {\n return false;\n }\n }\n\n getDescriptor(id: string): AspectDescriptor | undefined {\n try {\n const instance = this.harmony.get<any>(id);\n const iconFn = instance.icon;\n\n const icon = iconFn ? iconFn.apply(instance) : undefined;\n\n return {\n id,\n icon,\n };\n } catch (err) {\n return undefined;\n }\n }\n\n /**\n * This is used when adding aspects to workspace.jsonc during the process (like in bit use command)\n * and we want to make sure that follow operation (like bit install) will recognize those aspects\n * but the harmony config is already in memory.\n * Probably a better to do it is to make sure we can re-load the config somehow\n * ideally by adding the config class in harmony a reload API\n * @param aspectId\n */\n addInMemoryConfiguredAspect(aspectId: string): void {\n this.inMemoryConfiguredAspects.push(aspectId);\n }\n\n /**\n * get all the configured aspects in the config file (workspace.jsonc / bit.jsonc)\n */\n getConfiguredAspects(): string[] {\n const configuredAspects = Array.from(this.harmony.config.raw.keys());\n const iMemoryConfiguredAspects = this.inMemoryConfiguredAspects;\n return configuredAspects.concat(iMemoryConfiguredAspects);\n }\n getNotLoadedConfiguredExtensions() {\n const configuredAspects = this.getConfiguredAspects();\n const harmonyExtensions = this.harmony.extensionsIds;\n const loadedExtensions = harmonyExtensions.filter((extId) => {\n return this.harmony.extensions.get(extId)?.loaded;\n });\n const extensionsToLoad = difference(configuredAspects, loadedExtensions);\n return extensionsToLoad;\n }\n\n loadDefinition(props: AspectDefinitionProps): AspectDefinition {\n return AspectDefinition.from(props);\n }\n\n private _coreAspects: Aspect[] = [];\n\n get coreAspects() {\n return this._coreAspects;\n }\n\n isCoreAspect(id: string) {\n const ids = this.getCoreAspectIds();\n return ids.includes(id);\n }\n\n setCoreAspects(aspects: Aspect[]) {\n this._coreAspects = aspects;\n return this;\n }\n\n getCoreAspectIds() {\n const ids = this.coreAspects.map((aspect) => aspect.id);\n return ids.concat(this._reserved);\n }\n\n /**\n * Get all the core envs ids which is still register in the bit manifest as core aspect\n */\n getCoreEnvsIds(): string[] {\n const envsIds = this.envs.getCoreEnvsIds();\n const allIds = this.getCoreAspectIds();\n return intersection(allIds, envsIds);\n }\n\n isCoreEnv(id: string): boolean {\n const ids = this.getCoreEnvsIds();\n return ids.includes(id);\n }\n\n private _reserved = ['teambit.harmony/bit', 'teambit.harmony/config'];\n\n getUserAspects(): string[] {\n const coreAspectIds = this.getCoreAspectIds();\n return difference(this.harmony.extensionsIds, coreAspectIds);\n }\n\n async getCoreAspectDefs(runtimeName?: string) {\n const defs = await Promise.all(\n this.coreAspects.map(async (aspect) => {\n const id = aspect.id;\n const rawDef = await getAspectDef(id, runtimeName);\n return this.loadDefinition(rawDef);\n })\n );\n\n return defs.filter((def) => def.runtimePath);\n }\n\n async resolveAspects(components: Component[], resolver: AspectResolver): Promise<AspectDefinition[]> {\n const promises = components.map(async (component) => {\n const resolvedAspect = await resolver(component);\n if (!resolvedAspect) return undefined;\n return new AspectDefinition(\n resolvedAspect.aspectPath,\n resolvedAspect.aspectFilePath,\n resolvedAspect.runtimePath,\n component\n );\n });\n\n const aspectDefs = await Promise.all(promises);\n // return aspectDefs.filter((def) => def.runtimePath);\n return compact(aspectDefs);\n }\n\n private _mainAspect: MainAspect;\n\n get mainAspect() {\n return this._mainAspect;\n }\n\n setMainAspect(mainAspect: MainAspect) {\n this._mainAspect = mainAspect;\n return this;\n }\n\n private failedLoadAspect: string[] = [];\n\n get failedAspects() {\n return this.failedLoadAspect;\n }\n\n public resetFailedLoadAspects() {\n this.failedLoadAspect = [];\n }\n\n private addFailure(id: string): void {\n if (this.failedAspects.includes(id)) return;\n this.failedLoadAspect.push(id);\n }\n\n cloneManifest(manifest: any) {\n const cloned = Object.assign(Object.create(Object.getPrototypeOf(manifest)), manifest);\n cloned.provider = manifest.provider;\n cloned.addRuntime = manifest.addRuntime;\n cloned.getRuntime = manifest.getRuntime;\n return cloned;\n }\n\n /**\n * run \"require\" of the component code to get the manifest\n */\n async doRequire(requireableExtension: RequireableComponent): Promise<ExtensionManifest | Aspect> {\n const idStr = requireableExtension.component.id.toString();\n const aspect = await requireableExtension.require();\n const manifest = aspect.default || aspect;\n manifest.id = idStr;\n // It's important to clone deep the manifest here to prevent mutate dependencies of other manifests as they point to the same location in memory\n const cloned = this.cloneManifest(manifest);\n const newManifest = await this.runOnLoadRequireableExtensionSubscribers(requireableExtension, cloned);\n return newManifest;\n }\n\n /**\n * in case the extension failed to load, prefer to throw an error, unless `throwOnError` param\n * passed as `false`.\n * there are cases when throwing an error blocks the user from doing anything else. for example,\n * when a user develops an extension and deletes the node-modules, the extension on the workspace\n * cannot be loaded anymore until \"bit compile\" is running. however, if this function throws an\n * error, it'll throw for \"bit compile\" as well, which blocks the user.\n * for the CI, it is important to throw an error because errors on console can be ignored.\n * for now, when loading the extension from the workspace the throwOnError is passed as false.\n * when loading from the scope (CI) it should be true.\n *\n * the console printing here is done directly by \"console.error\" and not by the logger. the reason\n * is that the logger.console only prints when the loader started (which, btw, happens after\n * entering this function, so it can't work) and here we want it to be printed regardless of the\n * rules of starting the loader. e.g. if by mistake the CI got it as throwOnError=false, it's ok\n * to break the output by the console.error.\n *\n * @todo: this is not the final word however about throwing/non throwing errors here.\n * in some cases, such as \"bit tag\", it's better not to tag if an extension changes the model.\n */\n async loadRequireableExtensions(requireableExtensions: RequireableComponent[], throwOnError = false): Promise<void> {\n const manifests = await this.getManifestsFromRequireableExtensions(requireableExtensions, throwOnError);\n return this.loadExtensionsByManifests(manifests, undefined, { throwOnError });\n }\n\n async getManifestsFromRequireableExtensions(\n requireableExtensions: RequireableComponent[],\n throwOnError = false\n ): Promise<Array<ExtensionManifest | Aspect>> {\n const manifestsP = mapSeries(requireableExtensions, async (requireableExtension) => {\n if (!requireableExtensions) return undefined;\n const idStr = requireableExtension.component.id.toString();\n try {\n return await this.doRequire(requireableExtension);\n } catch (firstErr: any) {\n this.addFailure(idStr);\n this.logger.warn(`failed loading an aspect \"${idStr}\", will try to fix and reload`, firstErr);\n const isFixed = await this.triggerOnAspectLoadError(firstErr, requireableExtension.component);\n let errAfterReLoad;\n if (isFixed) {\n this.logger.info(`the loading issue might be fixed now, re-loading ${idStr}`);\n try {\n return await this.doRequire(requireableExtension);\n } catch (err: any) {\n this.logger.warn(`re-load of the aspect \"${idStr}\" failed as well`, err);\n errAfterReLoad = err;\n }\n }\n const error = errAfterReLoad || firstErr;\n this.handleExtensionLoadingError(error, idStr, throwOnError);\n }\n return undefined;\n });\n const manifests = await manifestsP;\n\n // Remove empty manifests as a result of loading issue\n return compact(manifests);\n }\n\n handleExtensionLoadingError(error: Error, idStr: string, throwOnError: boolean) {\n const errorMsg = error.message.split('\\n')[0]; // show only the first line if the error is long (e.g. happens with MODULE_NOT_FOUND errors)\n const msg = UNABLE_TO_LOAD_EXTENSION(idStr, errorMsg);\n if (throwOnError) {\n // @ts-ignore\n this.logger.console(error);\n throw new CannotLoadExtension(idStr, error);\n }\n this.logger.error(msg, error);\n if (this.logger.isLoaderStarted) {\n this.logger.consoleFailure(msg);\n } else {\n this.logger.consoleWarning(msg);\n }\n }\n\n async runOnLoadRequireableExtensionSubscribers(\n requireableExtension: RequireableComponent,\n manifest: ExtensionManifest | Aspect\n ): Promise<ExtensionManifest | Aspect> {\n let updatedManifest = manifest;\n const entries = this.onLoadRequireableExtensionSlot.toArray();\n await mapSeries(entries, async ([, onLoadRequireableExtensionFunc]) => {\n updatedManifest = await onLoadRequireableExtensionFunc(requireableExtension, updatedManifest);\n });\n return updatedManifest;\n }\n\n getPluginDefs() {\n return flatten(this.pluginSlot.values());\n }\n\n getPlugins(component: Component, componentPath: string): Plugins {\n const defs = this.getPluginDefs();\n return Plugins.from(component, defs, this.triggerOnAspectLoadError.bind(this), this.logger, (relativePath) => {\n const compiler = this.getCompiler(component);\n if (!compiler) {\n return join(componentPath, relativePath);\n }\n\n const dist = compiler.getDistPathBySrcPath(relativePath);\n return join(componentPath, dist);\n });\n }\n\n isAspect(manifest: any) {\n return !!(manifest.addRuntime && manifest.getRuntime);\n }\n\n isValidAspect(manifest: any): boolean {\n return this.isAspect(manifest) || manifest.provider;\n }\n\n isAspectComponent(component: Component): boolean {\n return this.envs.isUsingAspectEnv(component);\n }\n\n /**\n * get or create a global scope, import the non-core aspects, load bit from that scope, create\n * capsules for the aspects and load them from the capsules.\n */\n async loadAspectsFromGlobalScope(\n aspectIds: string[]\n ): Promise<{ components: Component[]; globalScopeHarmony: Harmony }> {\n const globalScope = await LegacyScope.ensure(GLOBAL_SCOPE, 'global-scope');\n await globalScope.ensureDir();\n const globalScopeHarmony = await loadBit(globalScope.path);\n const scope = globalScopeHarmony.get<ScopeMain>(ScopeAspect.id);\n const aspectLoader = globalScopeHarmony.get<AspectLoaderMain>(AspectLoaderAspect.id);\n // @todo: Gilad make this work\n // const ids = await scope.resolveMultipleComponentIds(aspectIds);\n const ids = aspectIds.map((id) => ComponentID.fromLegacy(BitId.parse(id, true)));\n const hasVersions = ids.every((id) => id.hasVersion());\n const useCache = hasVersions; // if all components has versions, try to use the cached aspects\n const components = await scope.import(ids, { useCache, throwIfNotExist: true, preferDependencyGraph: true });\n\n // don't use `await scope.loadAspectsFromCapsules(components, true);`\n // it won't work for globalScope because `this !== scope.aspectLoader` (this instance\n // is not the same as the aspectLoader instance Scope has)\n const resolvedAspects = await scope.getResolvedAspects(components);\n try {\n await aspectLoader.loadRequireableExtensions(resolvedAspects, true);\n } catch (err: any) {\n if (err?.error?.code === 'MODULE_NOT_FOUND') {\n const resolvedAspectsAgain = await scope.getResolvedAspects(components, { skipIfExists: false });\n await aspectLoader.loadRequireableExtensions(resolvedAspectsAgain, true);\n } else {\n throw err;\n }\n }\n\n return { components, globalScopeHarmony };\n }\n\n filterAspectDefs(\n allDefs: AspectDefinition[],\n componentIds: ComponentID[],\n runtimeName: string | undefined,\n filterOpts: FilterAspectsOptions = {}\n ) {\n const coreIds = this.getCoreAspectIds();\n const stringIds = componentIds.map((id) => id.toStringWithoutVersion());\n const afterExclusion = filterOpts.excludeCore\n ? allDefs.filter((def) => {\n const isCore = coreIds.includes(def.getId || '');\n const id = ComponentID.fromString(def.getId || '');\n const isTarget = stringIds.includes(id.toStringWithoutVersion());\n if (isTarget) return true;\n return !isCore;\n })\n : allDefs;\n\n const uniqDefs = uniqBy(afterExclusion, (def) => `${def.aspectPath}-${def.runtimePath}`);\n let defs = uniqDefs;\n if (runtimeName && filterOpts.filterByRuntime) {\n defs = defs.filter((def) => def.runtimePath);\n }\n\n if (componentIds && componentIds.length && filterOpts.requestedOnly) {\n const componentIdsString = componentIds.map((id) => id.toString());\n defs = defs.filter((def) => {\n return (\n (def.id && componentIdsString.includes(def.id)) ||\n (def.component && componentIdsString.includes(def.component?.id.toString()))\n );\n });\n }\n\n return defs;\n }\n\n private prepareManifests(manifests: Array<ExtensionManifest | Aspect>): Aspect[] {\n return manifests.map((manifest: any) => {\n if (this.isAspect(manifest)) return manifest as Aspect;\n manifest.runtime = MainRuntime;\n if (!manifest.id) throw new Error('manifest must have static id');\n const aspect = Aspect.create({\n id: manifest.id,\n });\n aspect.addRuntime(manifest);\n return aspect;\n });\n }\n\n /**\n * register a plugin.\n */\n registerPlugins(pluginDefs: PluginDefinition[]) {\n this.pluginSlot.register(pluginDefs);\n }\n\n async loadExtensionsByManifests(\n extensionsManifests: Array<ExtensionManifest | Aspect>,\n context: LoadExtByManifestContext = {\n seeders: [],\n },\n options: LoadExtByManifestOptions = {\n throwOnError: true,\n hideMissingModuleError: false,\n ignoreErrors: false,\n unifyErrorsByExtId: true,\n }\n ) {\n const neededFor = context.neededFor;\n const seeders = context.seeders || [];\n const defaultLoadExtByManifestOptions = {\n throwOnError: true,\n hideMissingModuleError: false,\n ignoreErrors: false,\n unifyErrorsByExtId: true,\n };\n const mergedOptions = { ...defaultLoadExtByManifestOptions, ...options };\n try {\n const manifests = extensionsManifests.filter((manifest) => {\n const isValid = this.isValidAspect(manifest);\n if (!isValid) this.logger.warn(`${manifest.id} is invalid. please make sure the extension is valid.`);\n return isValid;\n });\n const preparedManifests = this.prepareManifests(manifests);\n // don't let harmony load all aspects. if seeders were sent, find their manifests, check for their static\n // dependencies, and load only them.\n const getOnlyDeclaredDependenciesManifests = () => {\n if (!seeders.length || seeders.length === preparedManifests.length) {\n return preparedManifests;\n }\n const manifestGraph = this.generateManifestGraph(preparedManifests);\n const nodes = seeders.map((seeder) => manifestGraph.successors(seeder)).flat();\n const seederNodes = compact(seeders.map((seeder) => manifestGraph.node(seeder)));\n const allNodes = [...nodes, ...seederNodes];\n const nodesUniq = uniqBy(allNodes, 'id');\n return nodesUniq.map((n) => n.attr);\n };\n const relevantManifests = getOnlyDeclaredDependenciesManifests();\n // @ts-ignore TODO: fix this\n await this.harmony.load(relevantManifests);\n } catch (e: any) {\n const ids = extensionsManifests.map((manifest) => manifest.id || 'unknown');\n // TODO: improve texts\n const errorMsg = e.message.split('\\n')[0];\n const warning = UNABLE_TO_LOAD_EXTENSION_FROM_LIST(ids, errorMsg, neededFor);\n this.logger.error(warning, e);\n if (mergedOptions.ignoreErrors) return;\n if (e.code === 'MODULE_NOT_FOUND' && mergedOptions.hideMissingModuleError) return;\n if (mergedOptions.unifyErrorsByExtId) {\n const needToPrint = some(ids, (id) => !this.failedToLoadExt.has(id));\n if (!needToPrint) return;\n ids.forEach((id) => {\n this.failedToLoadExt.add(id);\n this.envs.addFailedToLoadExtension(id);\n const parsedId = ComponentID.tryFromString(id);\n if (parsedId) {\n this.failedToLoadExt.add(parsedId.fullName);\n this.envs.addFailedToLoadExtension(parsedId.fullName);\n }\n });\n }\n if (this.logger.isLoaderStarted) {\n if (mergedOptions.throwOnError) throw new BitError(warning);\n this.logger.consoleFailure(warning);\n } else {\n this.logger.consoleWarning(warning);\n this.logger.consoleWarning(e);\n }\n if (mergedOptions.throwOnError) {\n throw e;\n }\n }\n }\n\n private generateManifestGraph(manifests: Aspect[]) {\n const graph = new Graph<Aspect, string>();\n manifests.forEach((manifest) => graph.setNode(new Node(manifest.id, manifest)));\n manifests.forEach((manifest) => {\n const deps = manifest.getRuntime(MainRuntime)?.dependencies?.map((dep) => dep.id);\n deps?.forEach((dep) => {\n if (graph.node(dep)) {\n graph.setEdge(new Edge(manifest.id, dep, 'dep'));\n }\n });\n });\n return graph;\n }\n\n static runtime = MainRuntime;\n static dependencies = [LoggerAspect, EnvsAspect];\n static slots = [\n Slot.withType<OnAspectLoadError>(),\n Slot.withType<OnLoadRequireableExtension>(),\n Slot.withType<PluginDefinition[]>(),\n ];\n\n static async provider(\n [loggerExt, envs]: [LoggerMain, EnvsMain],\n config,\n [onAspectLoadErrorSlot, onLoadRequireableExtensionSlot, pluginSlot]: [\n OnAspectLoadErrorSlot,\n OnLoadRequireableExtensionSlot,\n PluginDefinitionSlot\n ],\n harmony: Harmony\n ) {\n const logger = loggerExt.createLogger(AspectLoaderAspect.id);\n const aspectLoader = new AspectLoaderMain(\n logger,\n envs,\n harmony,\n onAspectLoadErrorSlot,\n onLoadRequireableExtensionSlot,\n pluginSlot\n );\n\n aspectLoader.registerPlugins([envs.getEnvPlugin()]);\n\n return aspectLoader;\n }\n}\n\nAspectLoaderAspect.addRuntime(AspectLoaderMain);\n\nexport default AspectLoaderMain;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  export declare const UNABLE_TO_LOAD_EXTENSION: (id: string, errMsg?: string) => string;
2
- export declare const UNABLE_TO_LOAD_EXTENSION_FROM_LIST: (ids: string[], errMsg?: string) => string;
2
+ export declare const UNABLE_TO_LOAD_EXTENSION_FROM_LIST: (ids: string[], errMsg?: string, neededFor?: string) => string;
package/dist/constants.js CHANGED
@@ -1,12 +1,29 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.UNABLE_TO_LOAD_EXTENSION_FROM_LIST = exports.UNABLE_TO_LOAD_EXTENSION = void 0;
7
- const UNABLE_TO_LOAD_EXTENSION = (id, errMsg) => `error: unable to load the extension "${id}", due to an error "${errMsg || '<unknown-error>'}", please use the '--log=error' flag for the full error.`;
8
+ function _chalk() {
9
+ const data = _interopRequireDefault(require("chalk"));
10
+ _chalk = function () {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
15
+ const UNABLE_TO_LOAD_EXTENSION = (id, errMsg) => `error: Bit received an error loading "${id}", due to the error "${errMsg || '<unknown-error>'}", please use the '--log=error' flag for the full error.`;
8
16
  exports.UNABLE_TO_LOAD_EXTENSION = UNABLE_TO_LOAD_EXTENSION;
9
- const UNABLE_TO_LOAD_EXTENSION_FROM_LIST = (ids, errMsg) => `couldn't load one of the following extensions ${ids.join(', ')}, due to an error "${errMsg || '<unknown-error>'}", please use the '--log=error' flag for the full error.`;
17
+ const UNABLE_TO_LOAD_EXTENSION_FROM_LIST = (ids, errMsg, neededFor) => {
18
+ // const installOutput = err?.code === 'MODULE_NOT_FOUND' ? `try running "bit install" to install the missing dependencies` : '';
19
+ const installOutput = `try running ${_chalk().default.cyan('"bit install"')} to fix this issue`;
20
+ return `Bit received an error loading ${_chalk().default.cyan(ids.join(', '))}, due to the error:
21
+ "${errMsg || '<unknown-error>'}".
22
+ This is required for the component: ${_chalk().default.cyan(neededFor || 'unknown')}
23
+ Please use the ${_chalk().default.cyan("'--log=error'")} flag for the full error.
24
+ ${installOutput}
25
+ `;
26
+ };
10
27
  exports.UNABLE_TO_LOAD_EXTENSION_FROM_LIST = UNABLE_TO_LOAD_EXTENSION_FROM_LIST;
11
28
 
12
29
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UNABLE_TO_LOAD_EXTENSION","id","errMsg","UNABLE_TO_LOAD_EXTENSION_FROM_LIST","ids","join"],"sources":["constants.ts"],"sourcesContent":["export const UNABLE_TO_LOAD_EXTENSION = (id: string, errMsg?: string) =>\n `error: unable to load the extension \"${id}\", due to an error \"${\n errMsg || '<unknown-error>'\n }\", please use the '--log=error' flag for the full error.`;\nexport const UNABLE_TO_LOAD_EXTENSION_FROM_LIST = (ids: string[], errMsg?: string) =>\n `couldn't load one of the following extensions ${ids.join(', ')}, due to an error \"${\n errMsg || '<unknown-error>'\n }\", please use the '--log=error' flag for the full error.`;\n"],"mappings":";;;;;;AAAO,MAAMA,wBAAwB,GAAG,CAACC,EAAU,EAAEC,MAAe,KACjE,wCAAuCD,EAAG,uBACzCC,MAAM,IAAI,iBACX,0DAAyD;AAAC;AACtD,MAAMC,kCAAkC,GAAG,CAACC,GAAa,EAAEF,MAAe,KAC9E,iDAAgDE,GAAG,CAACC,IAAI,CAAC,IAAI,CAAE,sBAC9DH,MAAM,IAAI,iBACX,0DAAyD;AAAC"}
1
+ {"version":3,"names":["UNABLE_TO_LOAD_EXTENSION","id","errMsg","UNABLE_TO_LOAD_EXTENSION_FROM_LIST","ids","neededFor","installOutput","chalk","cyan","join"],"sources":["constants.ts"],"sourcesContent":["import chalk from 'chalk';\n\nexport const UNABLE_TO_LOAD_EXTENSION = (id: string, errMsg?: string) =>\n `error: Bit received an error loading \"${id}\", due to the error \"${\n errMsg || '<unknown-error>'\n }\", please use the '--log=error' flag for the full error.`;\nexport const UNABLE_TO_LOAD_EXTENSION_FROM_LIST = (ids: string[], errMsg?: string, neededFor?: string) => {\n // const installOutput = err?.code === 'MODULE_NOT_FOUND' ? `try running \"bit install\" to install the missing dependencies` : '';\n const installOutput = `try running ${chalk.cyan('\"bit install\"')} to fix this issue`;\n return `Bit received an error loading ${chalk.cyan(ids.join(', '))}, due to the error:\n\"${errMsg || '<unknown-error>'}\".\nThis is required for the component: ${chalk.cyan(neededFor || 'unknown')}\nPlease use the ${chalk.cyan(\"'--log=error'\")} flag for the full error.\n${installOutput}\n`;\n};\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,wBAAwB,GAAG,CAACC,EAAU,EAAEC,MAAe,KACjE,yCAAwCD,EAAG,wBAC1CC,MAAM,IAAI,iBACX,0DAAyD;AAAC;AACtD,MAAMC,kCAAkC,GAAG,CAACC,GAAa,EAAEF,MAAe,EAAEG,SAAkB,KAAK;EACxG;EACA,MAAMC,aAAa,GAAI,eAAcC,gBAAK,CAACC,IAAI,CAAC,eAAe,CAAE,oBAAmB;EACpF,OAAQ,iCAAgCD,gBAAK,CAACC,IAAI,CAACJ,GAAG,CAACK,IAAI,CAAC,IAAI,CAAC,CAAE;AACrE,GAAGP,MAAM,IAAI,iBAAkB;AAC/B,sCAAsCK,gBAAK,CAACC,IAAI,CAACH,SAAS,IAAI,SAAS,CAAE;AACzE,iBAAiBE,gBAAK,CAACC,IAAI,CAAC,eAAe,CAAE;AAC7C,EAAEF,aAAc;AAChB,CAAC;AACD,CAAC;AAAC"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_aspect-loader@0.0.1037/dist/aspect-loader.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_aspect-loader@0.0.1037/dist/aspect-loader.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_aspect-loader@0.0.1038/dist/aspect-loader.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_aspect-loader@0.0.1038/dist/aspect-loader.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@teambit/aspect-loader",
3
- "version": "0.0.1037",
3
+ "version": "0.0.1038",
4
4
  "homepage": "https://bit.cloud/teambit/harmony/aspect-loader",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "aspect-loader",
9
- "version": "0.0.1037"
9
+ "version": "0.0.1038"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
13
13
  "p-map-series": "2.1.0",
14
+ "chalk": "2.4.2",
14
15
  "fs-extra": "10.0.0",
15
16
  "core-js": "^3.0.0",
16
17
  "@babel/runtime": "7.20.0",
@@ -18,15 +19,15 @@
18
19
  "@teambit/graph.cleargraph": "0.0.1",
19
20
  "@teambit/legacy-bit-id": "0.0.423",
20
21
  "@teambit/bvm.config": "0.2.2",
21
- "@teambit/component": "0.0.1037",
22
- "@teambit/bit": "0.1.24",
23
- "@teambit/cli": "0.0.698",
22
+ "@teambit/component": "0.0.1038",
23
+ "@teambit/bit-error": "0.0.402",
24
+ "@teambit/bit": "0.1.25",
25
+ "@teambit/cli": "0.0.699",
24
26
  "@teambit/compilation.modules.babel-compiler": "0.0.133",
25
- "@teambit/envs": "0.0.1037",
27
+ "@teambit/envs": "0.0.1038",
26
28
  "@teambit/harmony.modules.requireable-component": "0.0.491",
27
- "@teambit/logger": "0.0.791",
28
- "@teambit/scope": "0.0.1037",
29
- "@teambit/bit-error": "0.0.402"
29
+ "@teambit/logger": "0.0.792",
30
+ "@teambit/scope": "0.0.1038"
30
31
  },
31
32
  "devDependencies": {
32
33
  "@types/react": "^17.0.8",
@@ -39,7 +40,7 @@
39
40
  "@types/testing-library__jest-dom": "5.9.5"
40
41
  },
41
42
  "peerDependencies": {
42
- "@teambit/legacy": "1.0.478",
43
+ "@teambit/legacy": "1.0.479",
43
44
  "react": "^16.8.0 || ^17.0.0",
44
45
  "react-dom": "^16.8.0 || ^17.0.0"
45
46
  },