@teambit/workspace 0.0.814 → 0.0.817

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.
@@ -3,7 +3,7 @@ import LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';
3
3
  import { BitId } from '@teambit/legacy-bit-id';
4
4
  import { Logger } from '@teambit/logger';
5
5
  import { Workspace } from './workspace';
6
- export declare type ShouldIgnoreFunc = (bitId: BitId) => Promise<boolean>;
6
+ export declare type ShouldLoadFunc = (bitId: BitId) => Promise<boolean>;
7
7
  export declare class GraphFromFsBuilder {
8
8
  private workspace;
9
9
  private logger;
@@ -14,7 +14,7 @@ export declare class GraphFromFsBuilder {
14
14
  private depth;
15
15
  private shouldThrowOnMissingDep;
16
16
  private consumer;
17
- constructor(workspace: Workspace, logger: Logger, ignoreIds?: BitIds, shouldLoadItsDeps?: ShouldIgnoreFunc | undefined);
17
+ constructor(workspace: Workspace, logger: Logger, ignoreIds?: BitIds, shouldLoadItsDeps?: ShouldLoadFunc | undefined);
18
18
  /**
19
19
  * create a graph with all dependencies and flattened dependencies of the given components.
20
20
  * the nodes are components and the edges has a label of the dependency type.
@@ -1 +1 @@
1
- {"version":3,"names":["GraphFromFsBuilder","constructor","workspace","logger","ignoreIds","BitIds","shouldLoadItsDeps","LegacyGraph","consumer","buildGraph","ids","debug","length","start","Date","now","components","loadManyComponents","processManyComponents","graph","getAllDepsUnfiltered","component","getAllDependenciesIds","difference","getAllDepsFiltered","depsWithoutIgnore","shouldLoadFunc","deps","mapSeries","depId","shouldLoad","push","fromArray","compact","depth","importObjects","allDependencies","processOneComponent","allDependenciesFlattened","flatten","allDeps","map","c","flat","allDepsWithScope","filter","dep","hasScope","scopeComponentsImporter","ScopeComponentsImporter","scope","importMany","uniqFromArray","throwForDependencyNotFound","shouldThrowOnMissingDep","idStr","id","toString","completed","includes","allIds","Object","entries","depsIdsGroupedByType","forEach","depType","depsIds","has","hasNode","Error","setEdge","componentsIds","dependenciesOf","comp","fromGraph","node","loadComponent","setNode","err","ComponentNotFound","BitError","error","componentId","componentMap","bitMap","getComponentIfExist","isOnWorkspace","Boolean","loadComponentForCapsule","componentFromModel","loadComponentFromModel","clone"],"sources":["build-graph-from-fs.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { flatten } from 'lodash';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport BitIds from '@teambit/legacy/dist/bit-id/bit-ids';\nimport Component from '@teambit/legacy/dist/consumer/component/consumer-component';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport ScopeComponentsImporter from '@teambit/legacy/dist/scope/component-ops/scope-components-importer';\nimport compact from 'lodash.compact';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { Logger } from '@teambit/logger';\nimport { ComponentNotFound } from '@teambit/scope';\nimport { BitError } from '@teambit/bit-error';\nimport { Workspace } from './workspace';\n\nexport type ShouldIgnoreFunc = (bitId: BitId) => Promise<boolean>;\n\nexport class GraphFromFsBuilder {\n private graph = new LegacyGraph();\n private completed: string[] = [];\n private depth = 1;\n private shouldThrowOnMissingDep = true;\n private consumer: Consumer;\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ignoreIds = new BitIds(),\n private shouldLoadItsDeps?: ShouldIgnoreFunc\n ) {\n this.consumer = this.workspace.consumer;\n }\n\n /**\n * create a graph with all dependencies and flattened dependencies of the given components.\n * the nodes are components and the edges has a label of the dependency type.\n *\n * the way how it is done is iterations by depths. each depth we gather all the dependencies of\n * that depths, make sure all objects exist and then check their dependencies for the next depth.\n * once there is no dependency left, we're on the last depth level and the graph is ready.\n *\n * for example, imagine the following graph:\n * A1 -> A2 -> A3\n * B1 -> B2 -> B3\n * C1 -> C2 -> C3\n *\n * where the buildGraph is given [A1, B1, C1].\n * first, it saves all these components as nodes in the graph. then, it finds the dependencies of\n * the next level, in this case they're [A2, B2, C2]. it runs `importMany` in case some objects\n * are missing. then, it loads them all (some from FS, some from the model) and sets the edges\n * between the component and the dependencies.\n * once done, it finds all their dependencies, which are [A3, B3, C3] and repeat the process\n * above. since there are no more dependencies, the graph is completed.\n * in this case, the total depth levels are 3.\n *\n * even with a huge project, there are not many depth levels. by iterating through depth levels\n * we keep performance sane as the importMany doesn't run multiple time and therefore the round\n * trips to the remotes are minimal.\n *\n * normally, one importMany of the seeders is enough as importMany knows to fetch all flattened.\n * however, since this buildGraph is performed on the workspace, a dependency may be new or\n * modified and as such, we don't know its flattened yet.\n */\n async buildGraph(ids: BitId[]): Promise<LegacyGraph> {\n this.logger.debug(`GraphFromFsBuilder, buildGraph with ${ids.length} seeders`);\n const start = Date.now();\n const components = await this.loadManyComponents(ids, '<none>');\n await this.processManyComponents(components);\n this.logger.debug(\n `GraphFromFsBuilder, buildGraph with ${ids.length} seeders completed (${(Date.now() - start) / 1000} sec)`\n );\n return this.graph;\n }\n\n private getAllDepsUnfiltered(component: Component) {\n return component.getAllDependenciesIds().difference(this.ignoreIds);\n }\n\n private async getAllDepsFiltered(component: Component): Promise<BitIds> {\n const depsWithoutIgnore = this.getAllDepsUnfiltered(component);\n const shouldLoadFunc = this.shouldLoadItsDeps;\n if (!shouldLoadFunc) return depsWithoutIgnore;\n const deps = await mapSeries(depsWithoutIgnore, async (depId) => {\n const shouldLoad = await shouldLoadFunc(depId);\n if (!shouldLoad) this.ignoreIds.push(depId);\n return shouldLoad ? depId : null;\n });\n return BitIds.fromArray(compact(deps));\n }\n\n private async processManyComponents(components: Component[]) {\n this.logger.debug(`GraphFromFsBuilder.processManyComponents depth ${this.depth}, ${components.length} components`);\n this.depth += 1;\n await this.importObjects(components);\n const allDependencies = await mapSeries(components, (component) => this.processOneComponent(component));\n const allDependenciesFlattened = flatten(allDependencies);\n if (allDependenciesFlattened.length) await this.processManyComponents(allDependenciesFlattened);\n }\n\n private async importObjects(components: Component[]) {\n const allDeps = components.map((c) => this.getAllDepsUnfiltered(c)).flat();\n const allDepsWithScope = allDeps.filter((dep) => dep.hasScope());\n const scopeComponentsImporter = new ScopeComponentsImporter(this.consumer.scope);\n await scopeComponentsImporter.importMany({\n ids: BitIds.uniqFromArray(allDepsWithScope),\n throwForDependencyNotFound: this.shouldThrowOnMissingDep,\n });\n }\n\n private async processOneComponent(component: Component) {\n const idStr = component.id.toString();\n if (this.completed.includes(idStr)) return [];\n const allIds = await this.getAllDepsFiltered(component);\n\n const allDependencies = await this.loadManyComponents(allIds, idStr);\n Object.entries(component.depsIdsGroupedByType).forEach(([depType, depsIds]) => {\n depsIds.forEach((depId) => {\n if (this.ignoreIds.has(depId)) return;\n if (!this.graph.hasNode(depId.toString())) {\n throw new Error(`buildOneComponent: missing node of ${depId.toString()}`);\n }\n this.graph.setEdge(idStr, depId.toString(), depType);\n });\n });\n this.completed.push(idStr);\n return allDependencies;\n }\n\n private async loadManyComponents(componentsIds: BitId[], dependenciesOf: string): Promise<Component[]> {\n const components = await mapSeries(componentsIds, async (comp: BitId) => {\n const idStr = comp.toString();\n const fromGraph = this.graph.node(idStr);\n if (fromGraph) return fromGraph;\n try {\n const component = await this.loadComponent(comp);\n this.graph.setNode(idStr, component);\n return component;\n } catch (err: any) {\n if (err instanceof ComponentNotFound) {\n throw new BitError(\n `error: component \"${idStr}\" was not found.\\nthis component is a dependency of \"${dependenciesOf}\" and is needed as part of the graph generation`\n );\n }\n this.logger.error(`failed loading dependencies of ${dependenciesOf}`);\n throw err;\n }\n });\n return components;\n }\n private async loadComponent(componentId: BitId): Promise<Component> {\n const componentMap = this.consumer.bitMap.getComponentIfExist(componentId);\n const isOnWorkspace = Boolean(componentMap);\n if (isOnWorkspace) {\n return this.consumer.loadComponentForCapsule(componentId);\n }\n // a dependency might have been installed as a package in the workspace, and as such doesn't\n // have a componentMap.\n const componentFromModel = await this.consumer.loadComponentFromModel(componentId);\n return componentFromModel.clone();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["GraphFromFsBuilder","constructor","workspace","logger","ignoreIds","BitIds","shouldLoadItsDeps","LegacyGraph","consumer","buildGraph","ids","debug","length","start","Date","now","components","loadManyComponents","processManyComponents","graph","getAllDepsUnfiltered","component","getAllDependenciesIds","difference","getAllDepsFiltered","depsWithoutIgnore","shouldLoadFunc","deps","mapSeries","depId","shouldLoad","push","fromArray","compact","depth","importObjects","allDependencies","processOneComponent","allDependenciesFlattened","flatten","allDeps","map","c","flat","allDepsWithScope","filter","dep","hasScope","scopeComponentsImporter","ScopeComponentsImporter","scope","importMany","uniqFromArray","throwForDependencyNotFound","shouldThrowOnMissingDep","idStr","id","toString","completed","includes","allIds","Object","entries","depsIdsGroupedByType","forEach","depType","depsIds","has","hasNode","Error","setEdge","componentsIds","dependenciesOf","comp","fromGraph","node","loadComponent","setNode","err","ComponentNotFound","BitError","error","componentId","componentMap","bitMap","getComponentIfExist","isOnWorkspace","Boolean","loadComponentForCapsule","componentFromModel","loadComponentFromModel","clone"],"sources":["build-graph-from-fs.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { flatten } from 'lodash';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport BitIds from '@teambit/legacy/dist/bit-id/bit-ids';\nimport Component from '@teambit/legacy/dist/consumer/component/consumer-component';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport ScopeComponentsImporter from '@teambit/legacy/dist/scope/component-ops/scope-components-importer';\nimport compact from 'lodash.compact';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { Logger } from '@teambit/logger';\nimport { ComponentNotFound } from '@teambit/scope';\nimport { BitError } from '@teambit/bit-error';\nimport { Workspace } from './workspace';\n\nexport type ShouldLoadFunc = (bitId: BitId) => Promise<boolean>;\n\nexport class GraphFromFsBuilder {\n private graph = new LegacyGraph();\n private completed: string[] = [];\n private depth = 1;\n private shouldThrowOnMissingDep = true;\n private consumer: Consumer;\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ignoreIds = new BitIds(),\n private shouldLoadItsDeps?: ShouldLoadFunc\n ) {\n this.consumer = this.workspace.consumer;\n }\n\n /**\n * create a graph with all dependencies and flattened dependencies of the given components.\n * the nodes are components and the edges has a label of the dependency type.\n *\n * the way how it is done is iterations by depths. each depth we gather all the dependencies of\n * that depths, make sure all objects exist and then check their dependencies for the next depth.\n * once there is no dependency left, we're on the last depth level and the graph is ready.\n *\n * for example, imagine the following graph:\n * A1 -> A2 -> A3\n * B1 -> B2 -> B3\n * C1 -> C2 -> C3\n *\n * where the buildGraph is given [A1, B1, C1].\n * first, it saves all these components as nodes in the graph. then, it finds the dependencies of\n * the next level, in this case they're [A2, B2, C2]. it runs `importMany` in case some objects\n * are missing. then, it loads them all (some from FS, some from the model) and sets the edges\n * between the component and the dependencies.\n * once done, it finds all their dependencies, which are [A3, B3, C3] and repeat the process\n * above. since there are no more dependencies, the graph is completed.\n * in this case, the total depth levels are 3.\n *\n * even with a huge project, there are not many depth levels. by iterating through depth levels\n * we keep performance sane as the importMany doesn't run multiple time and therefore the round\n * trips to the remotes are minimal.\n *\n * normally, one importMany of the seeders is enough as importMany knows to fetch all flattened.\n * however, since this buildGraph is performed on the workspace, a dependency may be new or\n * modified and as such, we don't know its flattened yet.\n */\n async buildGraph(ids: BitId[]): Promise<LegacyGraph> {\n this.logger.debug(`GraphFromFsBuilder, buildGraph with ${ids.length} seeders`);\n const start = Date.now();\n const components = await this.loadManyComponents(ids, '<none>');\n await this.processManyComponents(components);\n this.logger.debug(\n `GraphFromFsBuilder, buildGraph with ${ids.length} seeders completed (${(Date.now() - start) / 1000} sec)`\n );\n return this.graph;\n }\n\n private getAllDepsUnfiltered(component: Component) {\n return component.getAllDependenciesIds().difference(this.ignoreIds);\n }\n\n private async getAllDepsFiltered(component: Component): Promise<BitIds> {\n const depsWithoutIgnore = this.getAllDepsUnfiltered(component);\n const shouldLoadFunc = this.shouldLoadItsDeps;\n if (!shouldLoadFunc) return depsWithoutIgnore;\n const deps = await mapSeries(depsWithoutIgnore, async (depId) => {\n const shouldLoad = await shouldLoadFunc(depId);\n if (!shouldLoad) this.ignoreIds.push(depId);\n return shouldLoad ? depId : null;\n });\n return BitIds.fromArray(compact(deps));\n }\n\n private async processManyComponents(components: Component[]) {\n this.logger.debug(`GraphFromFsBuilder.processManyComponents depth ${this.depth}, ${components.length} components`);\n this.depth += 1;\n await this.importObjects(components);\n const allDependencies = await mapSeries(components, (component) => this.processOneComponent(component));\n const allDependenciesFlattened = flatten(allDependencies);\n if (allDependenciesFlattened.length) await this.processManyComponents(allDependenciesFlattened);\n }\n\n private async importObjects(components: Component[]) {\n const allDeps = components.map((c) => this.getAllDepsUnfiltered(c)).flat();\n const allDepsWithScope = allDeps.filter((dep) => dep.hasScope());\n const scopeComponentsImporter = new ScopeComponentsImporter(this.consumer.scope);\n await scopeComponentsImporter.importMany({\n ids: BitIds.uniqFromArray(allDepsWithScope),\n throwForDependencyNotFound: this.shouldThrowOnMissingDep,\n });\n }\n\n private async processOneComponent(component: Component) {\n const idStr = component.id.toString();\n if (this.completed.includes(idStr)) return [];\n const allIds = await this.getAllDepsFiltered(component);\n\n const allDependencies = await this.loadManyComponents(allIds, idStr);\n Object.entries(component.depsIdsGroupedByType).forEach(([depType, depsIds]) => {\n depsIds.forEach((depId) => {\n if (this.ignoreIds.has(depId)) return;\n if (!this.graph.hasNode(depId.toString())) {\n throw new Error(`buildOneComponent: missing node of ${depId.toString()}`);\n }\n this.graph.setEdge(idStr, depId.toString(), depType);\n });\n });\n this.completed.push(idStr);\n return allDependencies;\n }\n\n private async loadManyComponents(componentsIds: BitId[], dependenciesOf: string): Promise<Component[]> {\n const components = await mapSeries(componentsIds, async (comp: BitId) => {\n const idStr = comp.toString();\n const fromGraph = this.graph.node(idStr);\n if (fromGraph) return fromGraph;\n try {\n const component = await this.loadComponent(comp);\n this.graph.setNode(idStr, component);\n return component;\n } catch (err: any) {\n if (err instanceof ComponentNotFound) {\n throw new BitError(\n `error: component \"${idStr}\" was not found.\\nthis component is a dependency of \"${dependenciesOf}\" and is needed as part of the graph generation`\n );\n }\n this.logger.error(`failed loading dependencies of ${dependenciesOf}`);\n throw err;\n }\n });\n return components;\n }\n private async loadComponent(componentId: BitId): Promise<Component> {\n const componentMap = this.consumer.bitMap.getComponentIfExist(componentId);\n const isOnWorkspace = Boolean(componentMap);\n if (isOnWorkspace) {\n return this.consumer.loadComponentForCapsule(componentId);\n }\n // a dependency might have been installed as a package in the workspace, and as such doesn't\n // have a componentMap.\n const componentFromModel = await this.consumer.loadComponentFromModel(componentId);\n return componentFromModel.clone();\n }\n}\n"],"mappings":"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"}
@@ -33,7 +33,7 @@ import { Watcher, WatchOptions } from './watch/watcher';
33
33
  import { ComponentStatus } from './workspace-component/component-status';
34
34
  import { OnComponentAddSlot, OnComponentChangeSlot, OnComponentLoadSlot, OnComponentRemoveSlot, OnPreWatch, OnPreWatchSlot } from './workspace.provider';
35
35
  import { WorkspaceComponentLoader } from './workspace-component/workspace-component-loader';
36
- import { ShouldIgnoreFunc } from './build-graph-from-fs';
36
+ import { ShouldLoadFunc } from './build-graph-from-fs';
37
37
  import { BitMap } from './bit-map';
38
38
  export declare type EjectConfResult = {
39
39
  configPath: string;
@@ -408,7 +408,7 @@ export declare class Workspace implements ComponentFactory {
408
408
  */
409
409
  private componentConfigFile;
410
410
  private componentConfigFileFromComponentDirAndName;
411
- getAspectsGraphWithoutCore(components: Component[], isAspect?: ShouldIgnoreFunc): Promise<LegacyGraph>;
411
+ getAspectsGraphWithoutCore(components: Component[], isAspect?: ShouldLoadFunc): Promise<LegacyGraph>;
412
412
  /**
413
413
  * load aspects from the workspace and if not exists in the workspace, load from the scope.
414
414
  * keep in mind that the graph may have circles.
@@ -419,7 +419,7 @@ export declare class Workspace implements ComponentFactory {
419
419
  * returns one graph that includes all dependencies types. each edge has a label of the dependency
420
420
  * type. the nodes content is the Component object.
421
421
  */
422
- buildOneGraphForComponents(ids: BitId[], ignoreIds?: BitIds, shouldIgnoreFunc?: ShouldIgnoreFunc): Promise<LegacyGraph>;
422
+ buildOneGraphForComponents(ids: BitId[], ignoreIds?: BitIds, shouldLoadFunc?: ShouldLoadFunc): Promise<LegacyGraph>;
423
423
  resolveAspects(runtimeName?: string, componentIds?: ComponentID[], opts?: ResolveAspectsOptions): Promise<AspectDefinition[]>;
424
424
  private groupIdsByWorkspaceAndScope;
425
425
  private groupComponentsByWorkspaceAndScope;
package/dist/workspace.js CHANGED
@@ -1879,7 +1879,10 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
1879
1879
 
1880
1880
 
1881
1881
  async loadAspects(ids = [], throwOnError = false, neededFor) {
1882
- this.logger.info(`loadAspects, loading ${ids.length} aspects.
1882
+ // generate a random callId to be able to identify the call from the logs
1883
+ const callId = Math.floor(Math.random() * 1000);
1884
+ const loggerPrefix = `[${callId}] loadAspects,`;
1885
+ this.logger.info(`${loggerPrefix} loading ${ids.length} aspects.
1883
1886
  ids: ${ids.join(', ')}
1884
1887
  needed-for: ${neededFor || '<unknown>'}`);
1885
1888
  const notLoadedIds = ids.filter(id => !this.aspectLoader.isAspectLoaded(id));
@@ -1915,12 +1918,15 @@ needed-for: ${neededFor || '<unknown>'}`);
1915
1918
 
1916
1919
  const graph = await this.getAspectsGraphWithoutCore(components, isAspect);
1917
1920
  const idsStr = graph.nodes();
1921
+ this.logger.debug(`${loggerPrefix} found ${idsStr.length} aspects in the aspects-graph`);
1918
1922
  const compIds = await this.resolveMultipleComponentIds(idsStr);
1919
1923
  const aspects = await this.getMany(compIds);
1920
1924
  const {
1921
1925
  workspaceComps,
1922
1926
  scopeComps
1923
1927
  } = await this.groupComponentsByWorkspaceAndScope(aspects);
1928
+ this.logger.debug(`${loggerPrefix} found ${workspaceComps.length} components in the workspace:\n${workspaceComps.map(c => c.id.toString()).join('\n')}`);
1929
+ this.logger.debug(`${loggerPrefix} ${scopeComps.length} components are not in the workspace and are loaded from the scope:\n${scopeComps.map(c => c.id.toString()).join('\n')}`);
1924
1930
  const scopeIds = scopeComps.map(aspect => aspect.id.toString());
1925
1931
  const workspaceAspects = await this.requireComponents(workspaceComps);
1926
1932
  const workspaceManifests = await this.aspectLoader.getManifestsFromRequireableExtensions(workspaceAspects, throwOnError);
@@ -1947,6 +1953,7 @@ needed-for: ${neededFor || '<unknown>'}`);
1947
1953
  const pluginsWorkspaceAspects = await this.requireComponents(pluginsWorkspaceComps);
1948
1954
  const pluginsWorkspaceManifests = await this.aspectLoader.getManifestsFromRequireableExtensions(pluginsWorkspaceAspects, throwOnError);
1949
1955
  await this.aspectLoader.loadExtensionsByManifests(pluginsWorkspaceManifests, throwOnError);
1956
+ this.logger.debug(`${loggerPrefix} finish loading aspects`);
1950
1957
  return (0, _lodash().compact)(scopeEnvsManifestsIds.concat(scopeOtherManifestsIds).concat(workspaceManifestsIds));
1951
1958
  }
1952
1959
  /**
@@ -1956,8 +1963,8 @@ needed-for: ${neededFor || '<unknown>'}`);
1956
1963
  */
1957
1964
 
1958
1965
 
1959
- async buildOneGraphForComponents(ids, ignoreIds, shouldIgnoreFunc) {
1960
- const graphFromFsBuilder = new (_buildGraphFromFs().GraphFromFsBuilder)(this, this.logger, ignoreIds, shouldIgnoreFunc);
1966
+ async buildOneGraphForComponents(ids, ignoreIds, shouldLoadFunc) {
1967
+ const graphFromFsBuilder = new (_buildGraphFromFs().GraphFromFsBuilder)(this, this.logger, ignoreIds, shouldLoadFunc);
1961
1968
  return graphFromFsBuilder.buildGraph(ids);
1962
1969
  }
1963
1970
 
@@ -2070,8 +2077,6 @@ needed-for: ${neededFor || '<unknown>'}`);
2070
2077
  const existOnWorkspace = await this.hasId(component.id);
2071
2078
  existOnWorkspace ? workspaceComps.push(component) : scopeComps.push(component);
2072
2079
  }));
2073
- this.logger.debug(`loadAspects, found ${workspaceComps.length} components in the workspace:\n${workspaceComps.map(c => c.id.toString()).join('\n')}`);
2074
- this.logger.debug(`loadAspects, ${scopeComps.length} components are not in the workspace and are loaded from the scope:\n${scopeComps.map(c => c.id.toString()).join('\n')}`);
2075
2080
  return {
2076
2081
  workspaceComps,
2077
2082
  scopeComps