@teambit/workspace 0.0.1034 → 0.0.1036
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bit-map.d.ts +5 -0
- package/dist/bit-map.js +36 -0
- package/dist/bit-map.js.map +1 -1
- package/dist/{preview-1681183615792.js → preview-1681616127919.js} +2 -2
- package/dist/workspace-aspects-loader.js +2 -1
- package/dist/workspace-aspects-loader.js.map +1 -1
- package/dist/workspace.d.ts +1 -0
- package/dist/workspace.js +7 -11
- package/dist/workspace.js.map +1 -1
- package/package-tar/teambit-workspace-0.0.1036.tgz +0 -0
- package/package.json +35 -35
- package/package-tar/teambit-workspace-0.0.1034.tgz +0 -0
package/dist/bit-map.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare class BitMap {
|
|
|
18
18
|
* returns a boolean indicating whether a change has been made.
|
|
19
19
|
*/
|
|
20
20
|
addComponentConfig(id: ComponentID, aspectId: string, config?: Record<string, any>, shouldMergeConfig?: boolean): boolean;
|
|
21
|
+
markAsChanged(): void;
|
|
21
22
|
removeComponentConfig(id: ComponentID, aspectId: string, markWithMinusIfNotExist: boolean): boolean;
|
|
22
23
|
removeEntireConfig(id: ComponentID): boolean;
|
|
23
24
|
setEntireConfig(id: ComponentID, config: Record<string, any>): void;
|
|
@@ -36,6 +37,10 @@ export declare class BitMap {
|
|
|
36
37
|
* components that were not tagged yet are safe to rename them from the .bitmap file.
|
|
37
38
|
*/
|
|
38
39
|
renameNewComponent(sourceId: ComponentID, targetId: ComponentID): void;
|
|
40
|
+
/**
|
|
41
|
+
* helpful when reaming an aspect and this aspect is used in the config of other components.
|
|
42
|
+
*/
|
|
43
|
+
renameAspectInConfig(sourceId: ComponentID, targetId: ComponentID): void;
|
|
39
44
|
removeComponent(id: ComponentID): void;
|
|
40
45
|
/**
|
|
41
46
|
* this is the lane-id of the recently exported lane. in case of a new lane, which was not exported yet, this will be
|
package/dist/bit-map.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
require("core-js/modules/es.promise.js");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
@@ -26,6 +27,13 @@ function _bitError() {
|
|
|
26
27
|
};
|
|
27
28
|
return data;
|
|
28
29
|
}
|
|
30
|
+
function _envs() {
|
|
31
|
+
const data = _interopRequireDefault(require("@teambit/envs"));
|
|
32
|
+
_envs = function () {
|
|
33
|
+
return data;
|
|
34
|
+
};
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
29
37
|
/**
|
|
30
38
|
* consider extracting to a new component.
|
|
31
39
|
* (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)
|
|
@@ -70,6 +78,9 @@ class BitMap {
|
|
|
70
78
|
return true; // changes have been made
|
|
71
79
|
}
|
|
72
80
|
|
|
81
|
+
markAsChanged() {
|
|
82
|
+
this.legacyBitMap.markAsChanged();
|
|
83
|
+
}
|
|
73
84
|
removeComponentConfig(id, aspectId, markWithMinusIfNotExist) {
|
|
74
85
|
if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);
|
|
75
86
|
const bitMapEntry = this.getBitmapEntry(id, {
|
|
@@ -180,6 +191,31 @@ class BitMap {
|
|
|
180
191
|
this.setDefaultScope(targetId, targetId.scope);
|
|
181
192
|
}
|
|
182
193
|
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* helpful when reaming an aspect and this aspect is used in the config of other components.
|
|
197
|
+
*/
|
|
198
|
+
renameAspectInConfig(sourceId, targetId) {
|
|
199
|
+
this.legacyBitMap.components.forEach(componentMap => {
|
|
200
|
+
const config = componentMap.config;
|
|
201
|
+
if (!config) return;
|
|
202
|
+
Object.keys(config).forEach(aspectId => {
|
|
203
|
+
if (aspectId === sourceId.toString()) {
|
|
204
|
+
config[targetId.toString()] = config[aspectId];
|
|
205
|
+
delete config[aspectId];
|
|
206
|
+
this.markAsChanged();
|
|
207
|
+
}
|
|
208
|
+
if (aspectId === _envs().default.id) {
|
|
209
|
+
const envConfig = config[aspectId];
|
|
210
|
+
if (envConfig !== _config().REMOVE_EXTENSION_SPECIAL_SIGN && envConfig.env === sourceId.toString()) {
|
|
211
|
+
envConfig.env = targetId.toString();
|
|
212
|
+
this.markAsChanged();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
componentMap.config = config;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
183
219
|
removeComponent(id) {
|
|
184
220
|
this.legacyBitMap.removeComponent(id._legacy);
|
|
185
221
|
}
|
package/dist/bit-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BitMap","constructor","legacyBitMap","consumer","addComponentConfig","id","aspectId","config","shouldMergeConfig","Error","bitMapEntry","getBitmapEntry","ignoreScopeAndVersion","currentConfig","isEqual","getNewConfig","merge","newConfig","markAsChanged","removeComponentConfig","markWithMinusIfNotExist","REMOVE_EXTENSION_SPECIAL_SIGN","removeEntireConfig","setEntireConfig","removeDefaultScope","defaultScope","setDefaultScope","write","writeBitMap","ignoreVersion","getComponent","_legacy","getAspectIdFromConfig","componentId","ignoreAspectVersion","undefined","toString","allVersions","Object","keys","filter","startsWith","toStringWithoutVersion","length","BitError","join","renameNewComponent","sourceId","targetId","hasVersion","fullName","removeComponent","setComponent","scope","getExportedLaneId","isLaneExported","laneId","makeComponentsAvailableOnMain","ids","forEach","componentMap","onLanesOnly","isAvailableOnCurrentLane","hasChanged","takeSnapshot","components","map","comp","clone","restoreFromSnapshot","componentMaps","_invalidateCache"],"sources":["bit-map.ts"],"sourcesContent":["import { isEqual, merge } from 'lodash';\nimport { ComponentID } from '@teambit/component-id';\nimport LegacyBitMap from '@teambit/legacy/dist/consumer/bit-map';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\nimport { REMOVE_EXTENSION_SPECIAL_SIGN } from '@teambit/legacy/dist/consumer/config';\nimport { BitError } from '@teambit/bit-error';\nimport { LaneId } from '@teambit/lane-id';\n/**\n * consider extracting to a new component.\n * (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)\n */\nexport class BitMap {\n constructor(private legacyBitMap: LegacyBitMap, private consumer: Consumer) {}\n\n /**\n * adds component config to the .bitmap file.\n * later, upon `bit tag`, the data is saved in the scope.\n * returns a boolean indicating whether a change has been made.\n */\n addComponentConfig(\n id: ComponentID,\n aspectId: string,\n config: Record<string, any> = {},\n shouldMergeConfig = false\n ): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (isEqual(currentConfig, config)) {\n return false; // no changes\n }\n const getNewConfig = () => {\n if (!config) return null;\n if (!shouldMergeConfig) return config;\n // should merge\n if (!currentConfig) return config;\n if (currentConfig === '-') return config;\n // lodash merge performs a deep merge. (the native concatenation don't)\n return merge(currentConfig, config);\n };\n const newConfig = getNewConfig();\n if (newConfig) {\n bitMapEntry.config[aspectId] = newConfig;\n } else {\n delete bitMapEntry.config[aspectId];\n }\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n removeComponentConfig(id: ComponentID, aspectId: string, markWithMinusIfNotExist: boolean): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (currentConfig) {\n delete bitMapEntry.config[aspectId];\n } else {\n if (!markWithMinusIfNotExist) {\n return false; // no changes\n }\n bitMapEntry.config[aspectId] = REMOVE_EXTENSION_SPECIAL_SIGN;\n }\n\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n removeEntireConfig(id: ComponentID): boolean {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n if (!bitMapEntry.config) return false;\n delete bitMapEntry.config;\n this.legacyBitMap.markAsChanged();\n return true;\n }\n\n setEntireConfig(id: ComponentID, config: Record<string, any>) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n bitMapEntry.config = config;\n this.legacyBitMap.markAsChanged();\n }\n\n removeDefaultScope(id: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n if (bitMapEntry.defaultScope) {\n delete bitMapEntry.defaultScope;\n this.legacyBitMap.markAsChanged();\n }\n }\n\n setDefaultScope(id: ComponentID, defaultScope: string) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n bitMapEntry.defaultScope = defaultScope;\n this.legacyBitMap.markAsChanged();\n }\n\n /**\n * write .bitmap object to the filesystem\n */\n async write() {\n await this.consumer.writeBitMap();\n }\n\n /**\n * get the data saved in the .bitmap file for this component-id.\n */\n getBitmapEntry(\n id: ComponentID,\n { ignoreVersion, ignoreScopeAndVersion }: GetBitMapComponentOptions = {}\n ): ComponentMap {\n return this.legacyBitMap.getComponent(id._legacy, { ignoreVersion, ignoreScopeAndVersion });\n }\n\n getAspectIdFromConfig(\n componentId: ComponentID,\n aspectId: ComponentID,\n ignoreAspectVersion = false\n ): string | undefined {\n const bitMapEntry = this.getBitmapEntry(componentId);\n const config = bitMapEntry.config;\n if (!config) {\n return undefined;\n }\n if (config[aspectId.toString()]) {\n return aspectId.toString();\n }\n if (!ignoreAspectVersion) {\n return undefined;\n }\n const allVersions = Object.keys(config).filter((id) => id.startsWith(`${aspectId.toStringWithoutVersion()}@`));\n if (allVersions.length > 1) {\n throw new BitError(\n `error: the same aspect ${\n aspectId.toStringWithoutVersion\n } configured multiple times for \"${componentId.toString()}\"\\n${allVersions.join('\\n')}`\n );\n }\n return allVersions.length === 1 ? allVersions[0] : undefined;\n }\n\n /**\n * components that were not tagged yet are safe to rename them from the .bitmap file.\n */\n renameNewComponent(sourceId: ComponentID, targetId: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(sourceId);\n if (bitMapEntry.id.hasVersion()) {\n throw new Error(`unable to rename tagged or exported component: ${bitMapEntry.id.toString()}`);\n }\n if (sourceId.isEqual(targetId)) {\n throw new Error(`source-id and target-id are equal: \"${sourceId.toString()}\"`);\n }\n if (sourceId.fullName !== targetId.fullName) {\n this.legacyBitMap.removeComponent(bitMapEntry.id);\n bitMapEntry.id = targetId._legacy;\n this.legacyBitMap.setComponent(bitMapEntry.id, bitMapEntry);\n }\n if (sourceId.scope !== targetId.scope) {\n this.setDefaultScope(targetId, targetId.scope);\n }\n }\n\n removeComponent(id: ComponentID) {\n this.legacyBitMap.removeComponent(id._legacy);\n }\n\n /**\n * this is the lane-id of the recently exported lane. in case of a new lane, which was not exported yet, this will be\n * empty.\n */\n getExportedLaneId(): LaneId | undefined {\n return this.legacyBitMap.isLaneExported ? this.legacyBitMap.laneId : undefined;\n }\n\n makeComponentsAvailableOnMain(ids: ComponentID[]) {\n ids.forEach((id) => {\n const componentMap = this.getBitmapEntry(id);\n delete componentMap.onLanesOnly;\n delete componentMap.isAvailableOnCurrentLane;\n });\n this.legacyBitMap.markAsChanged();\n }\n\n /**\n * whether .bitmap file has changed in-memory\n */\n hasChanged(): boolean {\n return this.legacyBitMap.hasChanged;\n }\n\n takeSnapshot(): ComponentMap[] {\n return this.legacyBitMap.components.map((comp) => comp.clone());\n }\n\n restoreFromSnapshot(componentMaps: ComponentMap[]) {\n this.legacyBitMap.components = componentMaps;\n this.legacyBitMap._invalidateCache();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["BitMap","constructor","legacyBitMap","consumer","addComponentConfig","id","aspectId","config","shouldMergeConfig","Error","bitMapEntry","getBitmapEntry","ignoreScopeAndVersion","currentConfig","isEqual","getNewConfig","merge","newConfig","markAsChanged","removeComponentConfig","markWithMinusIfNotExist","REMOVE_EXTENSION_SPECIAL_SIGN","removeEntireConfig","setEntireConfig","removeDefaultScope","defaultScope","setDefaultScope","write","writeBitMap","ignoreVersion","getComponent","_legacy","getAspectIdFromConfig","componentId","ignoreAspectVersion","undefined","toString","allVersions","Object","keys","filter","startsWith","toStringWithoutVersion","length","BitError","join","renameNewComponent","sourceId","targetId","hasVersion","fullName","removeComponent","setComponent","scope","renameAspectInConfig","components","forEach","componentMap","EnvsAspect","envConfig","env","getExportedLaneId","isLaneExported","laneId","makeComponentsAvailableOnMain","ids","onLanesOnly","isAvailableOnCurrentLane","hasChanged","takeSnapshot","map","comp","clone","restoreFromSnapshot","componentMaps","_invalidateCache"],"sources":["bit-map.ts"],"sourcesContent":["import { isEqual, merge } from 'lodash';\nimport { ComponentID } from '@teambit/component-id';\nimport LegacyBitMap from '@teambit/legacy/dist/consumer/bit-map';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\nimport { REMOVE_EXTENSION_SPECIAL_SIGN } from '@teambit/legacy/dist/consumer/config';\nimport { BitError } from '@teambit/bit-error';\nimport { LaneId } from '@teambit/lane-id';\nimport EnvsAspect from '@teambit/envs';\n/**\n * consider extracting to a new component.\n * (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)\n */\nexport class BitMap {\n constructor(private legacyBitMap: LegacyBitMap, private consumer: Consumer) {}\n\n /**\n * adds component config to the .bitmap file.\n * later, upon `bit tag`, the data is saved in the scope.\n * returns a boolean indicating whether a change has been made.\n */\n addComponentConfig(\n id: ComponentID,\n aspectId: string,\n config: Record<string, any> = {},\n shouldMergeConfig = false\n ): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (isEqual(currentConfig, config)) {\n return false; // no changes\n }\n const getNewConfig = () => {\n if (!config) return null;\n if (!shouldMergeConfig) return config;\n // should merge\n if (!currentConfig) return config;\n if (currentConfig === '-') return config;\n // lodash merge performs a deep merge. (the native concatenation don't)\n return merge(currentConfig, config);\n };\n const newConfig = getNewConfig();\n if (newConfig) {\n bitMapEntry.config[aspectId] = newConfig;\n } else {\n delete bitMapEntry.config[aspectId];\n }\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n markAsChanged() {\n this.legacyBitMap.markAsChanged();\n }\n\n removeComponentConfig(id: ComponentID, aspectId: string, markWithMinusIfNotExist: boolean): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (currentConfig) {\n delete bitMapEntry.config[aspectId];\n } else {\n if (!markWithMinusIfNotExist) {\n return false; // no changes\n }\n bitMapEntry.config[aspectId] = REMOVE_EXTENSION_SPECIAL_SIGN;\n }\n\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n removeEntireConfig(id: ComponentID): boolean {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n if (!bitMapEntry.config) return false;\n delete bitMapEntry.config;\n this.legacyBitMap.markAsChanged();\n return true;\n }\n\n setEntireConfig(id: ComponentID, config: Record<string, any>) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n bitMapEntry.config = config;\n this.legacyBitMap.markAsChanged();\n }\n\n removeDefaultScope(id: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n if (bitMapEntry.defaultScope) {\n delete bitMapEntry.defaultScope;\n this.legacyBitMap.markAsChanged();\n }\n }\n\n setDefaultScope(id: ComponentID, defaultScope: string) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n bitMapEntry.defaultScope = defaultScope;\n this.legacyBitMap.markAsChanged();\n }\n\n /**\n * write .bitmap object to the filesystem\n */\n async write() {\n await this.consumer.writeBitMap();\n }\n\n /**\n * get the data saved in the .bitmap file for this component-id.\n */\n getBitmapEntry(\n id: ComponentID,\n { ignoreVersion, ignoreScopeAndVersion }: GetBitMapComponentOptions = {}\n ): ComponentMap {\n return this.legacyBitMap.getComponent(id._legacy, { ignoreVersion, ignoreScopeAndVersion });\n }\n\n getAspectIdFromConfig(\n componentId: ComponentID,\n aspectId: ComponentID,\n ignoreAspectVersion = false\n ): string | undefined {\n const bitMapEntry = this.getBitmapEntry(componentId);\n const config = bitMapEntry.config;\n if (!config) {\n return undefined;\n }\n if (config[aspectId.toString()]) {\n return aspectId.toString();\n }\n if (!ignoreAspectVersion) {\n return undefined;\n }\n const allVersions = Object.keys(config).filter((id) => id.startsWith(`${aspectId.toStringWithoutVersion()}@`));\n if (allVersions.length > 1) {\n throw new BitError(\n `error: the same aspect ${\n aspectId.toStringWithoutVersion\n } configured multiple times for \"${componentId.toString()}\"\\n${allVersions.join('\\n')}`\n );\n }\n return allVersions.length === 1 ? allVersions[0] : undefined;\n }\n\n /**\n * components that were not tagged yet are safe to rename them from the .bitmap file.\n */\n renameNewComponent(sourceId: ComponentID, targetId: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(sourceId);\n if (bitMapEntry.id.hasVersion()) {\n throw new Error(`unable to rename tagged or exported component: ${bitMapEntry.id.toString()}`);\n }\n if (sourceId.isEqual(targetId)) {\n throw new Error(`source-id and target-id are equal: \"${sourceId.toString()}\"`);\n }\n if (sourceId.fullName !== targetId.fullName) {\n this.legacyBitMap.removeComponent(bitMapEntry.id);\n bitMapEntry.id = targetId._legacy;\n this.legacyBitMap.setComponent(bitMapEntry.id, bitMapEntry);\n }\n if (sourceId.scope !== targetId.scope) {\n this.setDefaultScope(targetId, targetId.scope);\n }\n }\n\n /**\n * helpful when reaming an aspect and this aspect is used in the config of other components.\n */\n renameAspectInConfig(sourceId: ComponentID, targetId: ComponentID) {\n this.legacyBitMap.components.forEach((componentMap) => {\n const config = componentMap.config;\n if (!config) return;\n Object.keys(config).forEach((aspectId) => {\n if (aspectId === sourceId.toString()) {\n config[targetId.toString()] = config[aspectId];\n delete config[aspectId];\n this.markAsChanged();\n }\n if (aspectId === EnvsAspect.id) {\n const envConfig = config[aspectId];\n if (envConfig !== REMOVE_EXTENSION_SPECIAL_SIGN && envConfig.env === sourceId.toString()) {\n envConfig.env = targetId.toString();\n this.markAsChanged();\n }\n }\n });\n componentMap.config = config;\n });\n }\n\n removeComponent(id: ComponentID) {\n this.legacyBitMap.removeComponent(id._legacy);\n }\n\n /**\n * this is the lane-id of the recently exported lane. in case of a new lane, which was not exported yet, this will be\n * empty.\n */\n getExportedLaneId(): LaneId | undefined {\n return this.legacyBitMap.isLaneExported ? this.legacyBitMap.laneId : undefined;\n }\n\n makeComponentsAvailableOnMain(ids: ComponentID[]) {\n ids.forEach((id) => {\n const componentMap = this.getBitmapEntry(id);\n delete componentMap.onLanesOnly;\n delete componentMap.isAvailableOnCurrentLane;\n });\n this.legacyBitMap.markAsChanged();\n }\n\n /**\n * whether .bitmap file has changed in-memory\n */\n hasChanged(): boolean {\n return this.legacyBitMap.hasChanged;\n }\n\n takeSnapshot(): ComponentMap[] {\n return this.legacyBitMap.components.map((comp) => comp.clone());\n }\n\n restoreFromSnapshot(componentMaps: ComponentMap[]) {\n this.legacyBitMap.components = componentMaps;\n this.legacyBitMap._invalidateCache();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.1036/dist/workspace.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.1036/dist/workspace.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -226,7 +226,8 @@ needed-for: ${neededFor || '<unknown>'}. using opts: ${JSON.stringify(mergedOpts
|
|
|
226
226
|
excludeCore: false,
|
|
227
227
|
requestedOnly: false,
|
|
228
228
|
filterByRuntime: true,
|
|
229
|
-
useScopeAspectsCapsule: false
|
|
229
|
+
useScopeAspectsCapsule: false,
|
|
230
|
+
workspaceName: this.workspace.name
|
|
230
231
|
};
|
|
231
232
|
const mergedOpts = _objectSpread(_objectSpread({}, defaultOpts), opts);
|
|
232
233
|
const idsToResolve = componentIds ? componentIds.map(id => id.toString()) : this.harmony.extensionsIds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WorkspaceAspectsLoader","constructor","workspace","scope","aspectLoader","envs","dependencyResolver","logger","harmony","onAspectsResolveSlot","onRootAspectAddedSlot","consumer","resolvedInstalledAspects","Map","loadAspects","ids","throwOnError","neededFor","opts","defaultOpts","useScopeAspectsCapsule","mergedOpts","callId","Math","floor","random","loggerPrefix","info","length","join","JSON","stringify","notLoadedIds","filter","id","isAspectLoaded","coreAspectsStringIds","getCoreAspectIds","idsWithoutCore","difference","componentIds","resolveMultipleComponentIds","workspaceIds","nonWorkspaceIds","groupIdsByWorkspaceExistence","idsToLoadFromWs","scopeAspectIds","currentLane","getCurrentLaneObject","nonWorkspaceIdsString","map","toString","undefined","packageManagerConfigRootDir","path","err","ComponentNotFound","config","get","configStr","workspaceConfig","raw","includes","BitError","aspectsDefs","resolveAspects","excludeCore","requestedOnly","manifests","requireableComponents","loadAspectDefsByOrder","potentialPluginsIndexes","compact","manifest","index","isValidAspect","pluginsRequireableComponents","pluginsManifests","getManifestsFromRequireableExtensions","loadExtensionsByManifests","debug","manifestIds","concat","seeders","nonWorkspaceDefs","groupAspectDefsByWorkspaceExistence","scopeAspectsLoader","getScopeAspectsLoader","scopeIds","aspectDef","getId","scopeIdsGrouped","groupAspectIdsByEnvOfTheList","aspectDefsToRequireableComponents","runtimeName","filterByRuntime","idsToResolve","extensionsIds","coreAspectsIds","configuredAspects","getConfiguredAspects","userAspectsIds","rootAspectsIds","componentIdsToResolve","components","importAndGetAspects","runOnAspectsResolveFunctions","graph","getAspectsGraphWithoutCore","isAspect","bind","aspects","nodes","node","attr","workspaceComps","nonWorkspaceComps","groupComponentsByWorkspaceExistence","workspaceCompsIds","c","stringIds","wsAspectDefs","getWorkspaceAspectResolver","linkIfMissingWorkspaceAspects","componentsToResolveFromScope","componentsToResolveFromInstalled","nonWorkspaceCompsGroups","groupBy","component","isEnv","true","false","scopeAspectsDefs","installedAspectsDefs","getInstalledAspectResolver","coreAspectDefs","Promise","all","coreId","rawDef","getAspectDef","loadDefinition","coreAspect","runtimePath","allDefs","idsToFilter","idStr","ComponentID","fromString","filteredDefs","filterAspectDefs","use","aspectIdStr","aspectId","resolveComponentId","inWs","hasId","aspectIdToAdd","toStringWithoutVersion","aspectsComponent","aspectsComponents","Error","setExtension","overrideExisting","ignoreVersion","write","addInMemoryConfiguredAspect","runOnRootAspectAddedFunctions","getConfiguredUserAspectsPackages","options","componentsToGetPackages","externalsOnly","packages","aspectComponent","packageName","getPackageName","version","aspectDefs","localPath","aspectPath","requireFunc","plugins","getPlugins","has","load","MainRuntime","name","aspect","require","getRuntimePath","RequireableComponent","missingPaths","existsP","exist","fs","pathExists","bitIds","_legacy","linkToNodeModulesByIds","resolve","workspaceAspectResolver","compStringId","push","getComponentPackagePath","aspectFilePath","getAspectFilePath","funcs","getOnAspectsResolveFunctions","pMapSeries","func","error","aspectsResolveFunctions","values","aspectsId","getOnRootAspectAddedFunctions","RootAspectAddedFunctions","rootIds","installedAspectsResolver","resolveInstalledAspectRecursively","aspectStringId","resolvedPath","set","parent","predecessors","parentPath","resolveFrom","findRoot","consoleWarning","message","buildOneGraphForComponents","loadComponentsExtensions","extensions","originatedFrom","extensionsIdsP","extensionEntry","extensionId","stringId","harmonyExtensions","loadedExtensions","extId","loaded","extensionsToLoad","isUsingAspectEnv","isUsingEnvEnv","importAndGetMany","existOnWorkspace","workspaceDefs"],"sources":["workspace-aspects-loader.ts"],"sourcesContent":["import findRoot from 'find-root';\nimport { resolveFrom } from '@teambit/toolbox.modules.module-resolver';\nimport { Graph } from '@teambit/graph.cleargraph';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ExtensionManifest, Harmony, Aspect } from '@teambit/harmony';\nimport {\n AspectDefinition,\n AspectLoaderMain,\n AspectResolver,\n getAspectDef,\n ResolvedAspect,\n} from '@teambit/aspect-loader';\nimport { MainRuntime } from '@teambit/cli';\nimport fs from 'fs-extra';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport { linkToNodeModulesByIds } from '@teambit/workspace.modules.node-modules-linker';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ComponentNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport pMapSeries from 'p-map-series';\nimport { difference, compact, groupBy } from 'lodash';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { Component, ComponentID, ResolveAspectsOptions } from '@teambit/component';\nimport { ScopeMain } from '@teambit/scope';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { EnvsMain } from '@teambit/envs';\nimport { ConfigMain } from '@teambit/config';\nimport { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ShouldLoadFunc } from './build-graph-from-fs';\nimport type { Workspace } from './workspace';\nimport { OnAspectsResolve, OnAspectsResolveSlot, OnRootAspectAdded, OnRootAspectAddedSlot } from './workspace.provider';\n\nexport type GetConfiguredUserAspectsPackagesOptions = {\n externalsOnly?: boolean;\n};\n\nexport type WorkspaceLoadAspectsOptions = {\n useScopeAspectsCapsule?: boolean;\n};\n\nexport type AspectPackage = { packageName: string; version: string };\n\nexport class WorkspaceAspectsLoader {\n private consumer: Consumer;\n private resolvedInstalledAspects: Map<string, string | null>;\n\n constructor(\n private workspace: Workspace,\n private scope: ScopeMain,\n private aspectLoader: AspectLoaderMain,\n private envs: EnvsMain,\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private harmony: Harmony,\n private onAspectsResolveSlot: OnAspectsResolveSlot,\n private onRootAspectAddedSlot: OnRootAspectAddedSlot\n ) {\n this.consumer = this.workspace.consumer;\n this.resolvedInstalledAspects = new Map();\n }\n\n /**\n * load aspects from the workspace and if not exists in the workspace, load from the node_modules.\n * keep in mind that the graph may have circles.\n */\n async loadAspects(\n ids: string[] = [],\n throwOnError = false,\n neededFor?: string,\n opts: WorkspaceLoadAspectsOptions = {}\n ): Promise<string[]> {\n const defaultOpts: WorkspaceLoadAspectsOptions = {\n useScopeAspectsCapsule: false,\n };\n const mergedOpts = { ...defaultOpts, ...opts };\n\n // generate a random callId to be able to identify the call from the logs\n const callId = Math.floor(Math.random() * 1000);\n const loggerPrefix = `[${callId}] loadAspects,`;\n this.logger.info(`${loggerPrefix} loading ${ids.length} aspects.\nids: ${ids.join(', ')}\nneeded-for: ${neededFor || '<unknown>'}. using opts: ${JSON.stringify(mergedOpts, null, 2)}`);\n const notLoadedIds = ids.filter((id) => !this.aspectLoader.isAspectLoaded(id));\n if (!notLoadedIds.length) return [];\n const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();\n const idsWithoutCore: string[] = difference(notLoadedIds, coreAspectsStringIds);\n\n const componentIds = await this.workspace.resolveMultipleComponentIds(idsWithoutCore);\n const { workspaceIds, nonWorkspaceIds } = await this.groupIdsByWorkspaceExistence(componentIds);\n let idsToLoadFromWs = componentIds;\n let scopeAspectIds: string[] = [];\n\n // TODO: hard coded use the old approach and loading from the scope capsules\n // This is because right now loading from the ws node_modules causes issues in some cases\n // like for the cloud app\n // it should be removed once we fix the issues\n mergedOpts.useScopeAspectsCapsule = true;\n\n if (mergedOpts.useScopeAspectsCapsule) {\n idsToLoadFromWs = workspaceIds;\n const currentLane = await this.consumer.getCurrentLaneObject();\n\n const nonWorkspaceIdsString = nonWorkspaceIds.map((id) => id.toString());\n try {\n scopeAspectIds = await this.scope.loadAspects(\n nonWorkspaceIdsString,\n throwOnError,\n neededFor,\n currentLane || undefined,\n {\n packageManagerConfigRootDir: this.workspace.path,\n }\n );\n } catch (err: any) {\n if (err instanceof ComponentNotFound) {\n const config = this.harmony.get<ConfigMain>('teambit.harmony/config');\n const configStr = JSON.stringify(config.workspaceConfig?.raw || {});\n if (configStr.includes(err.id)) {\n throw new BitError(`error: a component \"${err.id}\" was not found\n your workspace.jsonc has this component-id set. you might want to remove/change it.`);\n }\n }\n\n throw err;\n }\n }\n\n const aspectsDefs = await this.resolveAspects(undefined, idsToLoadFromWs, {\n excludeCore: true,\n requestedOnly: false,\n throwOnError,\n ...mergedOpts,\n });\n\n const { manifests, requireableComponents } = await this.loadAspectDefsByOrder(\n aspectsDefs,\n idsWithoutCore,\n throwOnError\n );\n\n const potentialPluginsIndexes = compact(\n manifests.map((manifest, index) => {\n if (this.aspectLoader.isValidAspect(manifest)) return undefined;\n return index;\n })\n );\n\n // Try require components for potential plugins\n const pluginsRequireableComponents = potentialPluginsIndexes.map((index) => {\n return requireableComponents[index];\n });\n // Do the require again now that the plugins defs already registered\n const pluginsManifests = await this.aspectLoader.getManifestsFromRequireableExtensions(\n pluginsRequireableComponents,\n throwOnError\n );\n await this.aspectLoader.loadExtensionsByManifests(pluginsManifests, throwOnError);\n this.logger.debug(`${loggerPrefix} finish loading aspects`);\n const manifestIds = manifests.map((manifest) => manifest.id);\n return compact(manifestIds.concat(scopeAspectIds));\n }\n\n private async loadAspectDefsByOrder(\n aspectsDefs: AspectDefinition[],\n seeders: string[],\n throwOnError: boolean\n ): Promise<{ manifests: Array<Aspect | ExtensionManifest>; requireableComponents: RequireableComponent[] }> {\n const { nonWorkspaceDefs } = await this.groupAspectDefsByWorkspaceExistence(aspectsDefs);\n const scopeAspectsLoader = this.scope.getScopeAspectsLoader();\n const scopeIds: string[] = compact(nonWorkspaceDefs.map((aspectDef) => aspectDef.getId));\n const scopeIdsGrouped = await scopeAspectsLoader.groupAspectIdsByEnvOfTheList(scopeIds);\n\n // Make sure to first load envs from the list otherwise it will fail when trying to load other aspects\n // as their envs might not be loaded yet\n if (scopeIdsGrouped.envs && scopeIdsGrouped.envs.length) {\n await this.scope.loadAspects(scopeIdsGrouped.envs, throwOnError, 'workspace.loadAspects loading scope aspects');\n }\n const requireableComponents = this.aspectDefsToRequireableComponents(aspectsDefs);\n const manifests = await this.aspectLoader.getManifestsFromRequireableExtensions(\n requireableComponents,\n throwOnError\n );\n await this.aspectLoader.loadExtensionsByManifests(manifests, throwOnError, seeders);\n return { manifests, requireableComponents };\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const callId = Math.floor(Math.random() * 1000);\n const loggerPrefix = `[${callId}] workspace resolveAspects,`;\n\n this.logger.debug(\n `${loggerPrefix}, resolving aspects for - runtimeName: ${runtimeName}, componentIds: ${componentIds}`\n );\n const defaultOpts: ResolveAspectsOptions = {\n excludeCore: false,\n requestedOnly: false,\n filterByRuntime: true,\n useScopeAspectsCapsule: false,\n };\n const mergedOpts = { ...defaultOpts, ...opts };\n const idsToResolve = componentIds ? componentIds.map((id) => id.toString()) : this.harmony.extensionsIds;\n const coreAspectsIds = this.aspectLoader.getCoreAspectIds();\n const configuredAspects = this.aspectLoader.getConfiguredAspects();\n const userAspectsIds: string[] = difference(idsToResolve, coreAspectsIds);\n const rootAspectsIds: string[] = difference(configuredAspects, coreAspectsIds);\n const componentIdsToResolve = await this.workspace.resolveMultipleComponentIds(userAspectsIds);\n const components = await this.importAndGetAspects(componentIdsToResolve);\n\n // Run the on load slot\n await this.runOnAspectsResolveFunctions(components);\n\n const graph = await this.getAspectsGraphWithoutCore(components, this.isAspect.bind(this));\n const aspects = graph.nodes.map((node) => node.attr);\n this.logger.debug(`${loggerPrefix} found ${aspects.length} aspects in the aspects-graph`);\n const { workspaceComps, nonWorkspaceComps } = await this.groupComponentsByWorkspaceExistence(aspects);\n const workspaceCompsIds = workspaceComps.map((c) => c.id);\n this.logger.debug(\n `${loggerPrefix} found ${workspaceComps.length} components in the workspace:\\n${workspaceComps\n .map((c) => c.id.toString())\n .join('\\n')}`\n );\n this.logger.debug(\n `${loggerPrefix} ${\n nonWorkspaceComps.length\n } components are not in the workspace and are loaded from the scope capsules or from the node_modules:\\n${nonWorkspaceComps\n .map((c) => c.id.toString())\n .join('\\n')}`\n );\n\n const stringIds: string[] = [];\n const wsAspectDefs = await this.aspectLoader.resolveAspects(\n workspaceComps,\n this.getWorkspaceAspectResolver(stringIds, runtimeName)\n );\n\n await this.linkIfMissingWorkspaceAspects(wsAspectDefs, workspaceCompsIds);\n\n // TODO: hard coded use the old approach and loading from the scope capsules\n // This is because right now loading from the ws node_modules causes issues in some cases\n // like for the cloud app\n // it should be removed once we fix the issues\n mergedOpts.useScopeAspectsCapsule = true;\n\n let componentsToResolveFromScope = nonWorkspaceComps;\n let componentsToResolveFromInstalled: Component[] = [];\n if (!mergedOpts.useScopeAspectsCapsule) {\n const nonWorkspaceCompsGroups = groupBy(nonWorkspaceComps, (component) => this.envs.isEnv(component));\n componentsToResolveFromScope = nonWorkspaceCompsGroups.true || [];\n componentsToResolveFromInstalled = nonWorkspaceCompsGroups.false || [];\n }\n\n const scopeIds = componentsToResolveFromScope.map((c) => c.id);\n this.logger.debug(\n `${loggerPrefix} ${\n scopeIds.length\n } components are not in the workspace and are loaded from the scope capsules:\\n${scopeIds\n .map((id) => id.toString())\n .join('\\n')}`\n );\n const scopeAspectsDefs: AspectDefinition[] = scopeIds.length\n ? await this.scope.resolveAspects(runtimeName, scopeIds, mergedOpts)\n : [];\n\n this.logger.debug(\n `${loggerPrefix} ${\n componentsToResolveFromInstalled.length\n } components are not in the workspace and are loaded from the node_modules:\\n${componentsToResolveFromInstalled\n .map((c) => c.id.toString())\n .join('\\n')}`\n );\n const installedAspectsDefs: AspectDefinition[] = componentsToResolveFromInstalled.length\n ? await this.aspectLoader.resolveAspects(\n componentsToResolveFromInstalled,\n this.getInstalledAspectResolver(graph, rootAspectsIds, runtimeName, {\n throwOnError: opts?.throwOnError ?? false,\n })\n )\n : [];\n\n let coreAspectDefs = await Promise.all(\n coreAspectsIds.map(async (coreId) => {\n const rawDef = await getAspectDef(coreId, runtimeName);\n return this.aspectLoader.loadDefinition(rawDef);\n })\n );\n\n // due to lack of workspace and scope runtimes. TODO: fix after adding them.\n if (runtimeName && mergedOpts.filterByRuntime) {\n coreAspectDefs = coreAspectDefs.filter((coreAspect) => {\n return coreAspect.runtimePath;\n });\n }\n const allDefs = wsAspectDefs.concat(coreAspectDefs).concat(scopeAspectsDefs).concat(installedAspectsDefs);\n const idsToFilter = idsToResolve.map((idStr) => ComponentID.fromString(idStr));\n const filteredDefs = this.aspectLoader.filterAspectDefs(allDefs, idsToFilter, runtimeName, mergedOpts);\n return filteredDefs;\n }\n\n async use(aspectIdStr: string): Promise<string> {\n let aspectId = await this.workspace.resolveComponentId(aspectIdStr);\n const inWs = await this.workspace.hasId(aspectId);\n let aspectIdToAdd = aspectId.toStringWithoutVersion();\n\n let aspectsComponent;\n // let aspectPackage;\n if (!inWs) {\n const aspectsComponents = await this.importAndGetAspects([aspectId]);\n if (aspectsComponents[0]) {\n aspectsComponent = aspectsComponents[0];\n aspectId = aspectsComponent.id;\n aspectIdToAdd = aspectId.toString();\n }\n }\n\n const config = this.harmony.get<ConfigMain>('teambit.harmony/config').workspaceConfig;\n if (!config) {\n throw new Error(`use() unable to get the workspace config`);\n }\n config.setExtension(\n aspectIdToAdd,\n {},\n {\n overrideExisting: false,\n ignoreVersion: false,\n }\n );\n await config.write();\n this.aspectLoader.addInMemoryConfiguredAspect(aspectIdToAdd);\n await this.runOnRootAspectAddedFunctions(aspectId, inWs);\n return aspectIdToAdd;\n }\n\n async getConfiguredUserAspectsPackages(\n options: GetConfiguredUserAspectsPackagesOptions = {}\n ): Promise<AspectPackage[]> {\n const configuredAspects = this.aspectLoader.getConfiguredAspects();\n const coreAspectsIds = this.aspectLoader.getCoreAspectIds();\n const userAspectsIds: string[] = difference(configuredAspects, coreAspectsIds);\n const componentIdsToResolve = await this.workspace.resolveMultipleComponentIds(userAspectsIds);\n const aspectsComponents = await this.importAndGetAspects(componentIdsToResolve);\n let componentsToGetPackages = aspectsComponents;\n if (options.externalsOnly) {\n const { nonWorkspaceComps } = await this.groupComponentsByWorkspaceExistence(aspectsComponents);\n componentsToGetPackages = nonWorkspaceComps;\n }\n const packages = componentsToGetPackages.map((aspectComponent) => {\n const packageName = this.dependencyResolver.getPackageName(aspectComponent);\n const version = aspectComponent.id.version || '*';\n return { packageName, version };\n });\n return packages;\n }\n\n private aspectDefsToRequireableComponents(aspectDefs: AspectDefinition[]): RequireableComponent[] {\n const requireableComponents = aspectDefs.map((aspectDef) => {\n const localPath = aspectDef.aspectPath;\n const component = aspectDef.component;\n if (!component) return undefined;\n const requireFunc = async () => {\n const plugins = this.aspectLoader.getPlugins(component, localPath);\n if (plugins.has()) {\n return plugins.load(MainRuntime.name);\n }\n\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const aspect = require(localPath);\n // require aspect runtimes\n const runtimePath = await this.aspectLoader.getRuntimePath(component, localPath, MainRuntime.name);\n // eslint-disable-next-line global-require, import/no-dynamic-require\n if (runtimePath) require(runtimePath);\n return aspect;\n };\n return new RequireableComponent(component, requireFunc);\n });\n return compact(requireableComponents);\n }\n\n private async linkIfMissingWorkspaceAspects(aspects: AspectDefinition[], ids: ComponentID[]) {\n let missingPaths = false;\n const existsP = aspects.map(async (aspect) => {\n const exist = await fs.pathExists(aspect.aspectPath);\n if (!exist) {\n missingPaths = true;\n }\n });\n await Promise.all(existsP);\n // TODO: this should be done properly by the install aspect by slot\n if (missingPaths) {\n const bitIds: BitId[] = ids.map((id) => id._legacy);\n return linkToNodeModulesByIds(this.workspace, bitIds);\n }\n return Promise.resolve();\n }\n\n /**\n * This will return a resolver that knows to resolve aspects which are part of the workspace.\n * means aspects exist in the bitmap file\n * @param stringIds\n * @param runtimeName\n * @returns\n */\n private getWorkspaceAspectResolver(stringIds: string[], runtimeName?: string): AspectResolver {\n const workspaceAspectResolver = async (component: Component): Promise<ResolvedAspect> => {\n const compStringId = component.id._legacy.toString();\n stringIds.push(compStringId);\n const localPath = this.workspace.getComponentPackagePath(component);\n\n const runtimePath = runtimeName\n ? await this.aspectLoader.getRuntimePath(component, localPath, runtimeName)\n : null;\n\n const aspectFilePath = await this.aspectLoader.getAspectFilePath(component, localPath);\n\n this.logger.debug(\n `workspace resolveAspects, resolving id: ${compStringId}, localPath: ${localPath}, runtimePath: ${runtimePath}`\n );\n return {\n aspectPath: localPath,\n aspectFilePath,\n runtimePath,\n };\n };\n return workspaceAspectResolver;\n }\n\n private async runOnAspectsResolveFunctions(aspectsComponents: Component[]): Promise<void> {\n const funcs = this.getOnAspectsResolveFunctions();\n await pMapSeries(funcs, async (func) => {\n try {\n await func(aspectsComponents);\n } catch (err) {\n this.logger.error('failed running onAspectsResolve function', err);\n }\n });\n }\n\n private getOnAspectsResolveFunctions(): OnAspectsResolve[] {\n const aspectsResolveFunctions = this.onAspectsResolveSlot.values();\n return aspectsResolveFunctions;\n }\n\n private async runOnRootAspectAddedFunctions(aspectsId: ComponentID, inWs: boolean): Promise<void> {\n const funcs = this.getOnRootAspectAddedFunctions();\n await pMapSeries(funcs, async (func) => {\n try {\n await func(aspectsId, inWs);\n } catch (err) {\n this.logger.error('failed running onRootAspectAdded function', err);\n }\n });\n }\n\n private getOnRootAspectAddedFunctions(): OnRootAspectAdded[] {\n const RootAspectAddedFunctions = this.onRootAspectAddedSlot.values();\n return RootAspectAddedFunctions;\n }\n\n /**\n * This will return a resolver that knows to resolve aspects which are not part of the workspace.\n * means aspects that does not exist in the bitmap file\n * instead it will resolve them from the node_modules recursively\n * @param graph\n * @param rootIds\n * @param runtimeName\n * @returns\n */\n private getInstalledAspectResolver(\n graph: Graph<Component, string>,\n rootIds: string[],\n runtimeName?: string,\n opts: { throwOnError: boolean } = { throwOnError: false }\n ): AspectResolver {\n const installedAspectsResolver = async (component: Component): Promise<ResolvedAspect | undefined> => {\n const compStringId = component.id._legacy.toString();\n // stringIds.push(compStringId);\n const localPath = this.resolveInstalledAspectRecursively(component, rootIds, graph, opts);\n if (!localPath) return undefined;\n\n const runtimePath = runtimeName\n ? await this.aspectLoader.getRuntimePath(component, localPath, runtimeName)\n : null;\n\n const aspectFilePath = await this.aspectLoader.getAspectFilePath(component, localPath);\n\n this.logger.debug(\n `workspace resolveInstalledAspects, resolving id: ${compStringId}, localPath: ${localPath}, runtimePath: ${runtimePath}`\n );\n return {\n aspectPath: localPath,\n aspectFilePath,\n runtimePath,\n };\n };\n return installedAspectsResolver;\n }\n\n private resolveInstalledAspectRecursively(\n aspectComponent: Component,\n rootIds: string[],\n graph: Graph<Component, string>,\n opts: { throwOnError: boolean } = { throwOnError: false }\n ): string | null | undefined {\n const aspectStringId = aspectComponent.id._legacy.toString();\n if (this.resolvedInstalledAspects.has(aspectStringId)) {\n const resolvedPath = this.resolvedInstalledAspects.get(aspectStringId);\n return resolvedPath;\n }\n if (rootIds.includes(aspectStringId)) {\n const localPath = this.workspace.getComponentPackagePath(aspectComponent);\n this.resolvedInstalledAspects.set(aspectStringId, localPath);\n return localPath;\n }\n const parent = graph.predecessors(aspectStringId)[0];\n const parentPath = this.resolveInstalledAspectRecursively(parent.attr, rootIds, graph);\n if (!parentPath) {\n this.resolvedInstalledAspects.set(aspectStringId, null);\n return undefined;\n }\n const packageName = this.dependencyResolver.getPackageName(aspectComponent);\n try {\n const resolvedPath = resolveFrom(parentPath, [packageName]);\n const localPath = findRoot(resolvedPath);\n this.resolvedInstalledAspects.set(aspectStringId, localPath);\n return localPath;\n } catch (error: any) {\n this.resolvedInstalledAspects.set(aspectStringId, null);\n if (opts.throwOnError) {\n throw error;\n }\n this.logger.consoleWarning(\n `failed resolving aspect ${aspectStringId} from ${parentPath}, error: ${error.message}`\n );\n return undefined;\n }\n }\n\n /**\n * Create a graph of aspects without the core aspects.\n * @param components\n * @param isAspect\n * @returns\n */\n private async getAspectsGraphWithoutCore(\n components: Component[],\n isAspect?: ShouldLoadFunc\n ): Promise<Graph<Component, string>> {\n const ids = components.map((component) => component.id);\n const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();\n // TODO: @gilad it causes many issues we need to find a better solution. removed for now.\n // const coreAspectsComponentIds = coreAspectsStringIds.map((id) => BitId.parse(id, true));\n // const aspectsIds = components.reduce((acc, curr) => {\n // const currIds = curr.state.aspects.ids;\n // acc = acc.concat(currIds);\n // return acc;\n // }, [] as any);\n // const otherDependenciesMap = components.reduce((acc, curr) => {\n // // const currIds = curr.state.dependencies.dependencies.map(dep => dep.id.toString());\n // const currMap = curr.state.dependencies.getIdsMap();\n // Object.assign(acc, currMap);\n // return acc;\n // }, {});\n\n // const depsWhichAreNotAspects = difference(Object.keys(otherDependenciesMap), aspectsIds);\n // const depsWhichAreNotAspectsBitIds = depsWhichAreNotAspects.map((strId) => otherDependenciesMap[strId]);\n // We only want to load into the graph components which are aspects and not regular dependencies\n // This come to solve a circular loop when an env aspect use an aspect (as regular dep) and the aspect use the env aspect as its env\n return this.workspace.buildOneGraphForComponents(ids, coreAspectsStringIds, isAspect);\n }\n\n /**\n * Load all unloaded extensions from an extension list\n * this will resolve the extensions from the scope aspects capsules if they are not in the ws\n * Only use it for component extensions\n * for workspace/scope root aspect use the load aspects directly\n *\n * The reason we are loading component extensions with \"scope aspects capsules\" is becasuse for component extensions\n * we might have the same extension in multiple versions\n * (for example I might have 2 components using different versions of the same env)\n * in such case, I can't install both version into the root of the node_modules so I need to place it somewhere else (capsules)\n * @param extensions list of extensions with config to load\n */\n async loadComponentsExtensions(\n extensions: ExtensionDataList,\n originatedFrom?: ComponentID,\n throwOnError = false\n ): Promise<void> {\n const extensionsIdsP = extensions.map(async (extensionEntry) => {\n // Core extension\n if (!extensionEntry.extensionId) {\n return extensionEntry.stringId as string;\n }\n\n const id = await this.workspace.resolveComponentId(extensionEntry.extensionId);\n // return this.resolveComponentId(extensionEntry.extensionId);\n return id.toString();\n });\n const extensionsIds: string[] = await Promise.all(extensionsIdsP);\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(extensionsIds, loadedExtensions);\n if (!extensionsToLoad.length) return;\n await this.loadAspects(extensionsToLoad, throwOnError, originatedFrom?.toString(), {\n useScopeAspectsCapsule: true,\n });\n }\n\n private async isAspect(id: ComponentID) {\n const component = await this.workspace.get(id);\n const isUsingAspectEnv = this.envs.isUsingAspectEnv(component);\n const isUsingEnvEnv = this.envs.isUsingEnvEnv(component);\n const isValidAspect = isUsingAspectEnv || isUsingEnvEnv;\n return isValidAspect;\n }\n\n /**\n * same as `this.importAndGetMany()` with a specific error handling of ComponentNotFound\n */\n private async importAndGetAspects(componentIds: ComponentID[]): Promise<Component[]> {\n try {\n return await this.workspace.importAndGetMany(componentIds);\n } catch (err: any) {\n if (err instanceof ComponentNotFound) {\n const config = this.harmony.get<ConfigMain>('teambit.harmony/config');\n const configStr = JSON.stringify(config.workspaceConfig?.raw || {});\n if (configStr.includes(err.id)) {\n throw new BitError(`error: a component \"${err.id}\" was not found\nyour workspace.jsonc has this component-id set. you might want to remove/change it.`);\n }\n }\n\n throw err;\n }\n }\n\n /**\n * split the provided components into 2 groups, one which are workspace components and the other which are not.\n * @param components\n * @returns\n */\n private async groupComponentsByWorkspaceExistence(\n components: Component[]\n ): Promise<{ workspaceComps: Component[]; nonWorkspaceComps: Component[] }> {\n const workspaceComps: Component[] = [];\n const nonWorkspaceComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n const existOnWorkspace = await this.workspace.hasId(component.id);\n existOnWorkspace ? workspaceComps.push(component) : nonWorkspaceComps.push(component);\n })\n );\n return { workspaceComps, nonWorkspaceComps };\n }\n\n /**\n * split the provided components into 2 groups, one which are workspace components and the other which are not.\n * @param components\n * @returns\n */\n private async groupAspectDefsByWorkspaceExistence(\n aspectDefs: AspectDefinition[]\n ): Promise<{ workspaceDefs: AspectDefinition[]; nonWorkspaceDefs: AspectDefinition[] }> {\n const workspaceDefs: AspectDefinition[] = [];\n const nonWorkspaceDefs: AspectDefinition[] = [];\n await Promise.all(\n aspectDefs.map(async (aspectDef) => {\n const id = aspectDef.component?.id;\n const existOnWorkspace = id ? await this.workspace.hasId(id) : true;\n existOnWorkspace ? workspaceDefs.push(aspectDef) : nonWorkspaceDefs.push(aspectDef);\n })\n );\n return { workspaceDefs, nonWorkspaceDefs };\n }\n\n private async groupIdsByWorkspaceExistence(\n ids: ComponentID[]\n ): Promise<{ workspaceIds: ComponentID[]; nonWorkspaceIds: ComponentID[] }> {\n const workspaceIds: ComponentID[] = [];\n const nonWorkspaceIds: ComponentID[] = [];\n await Promise.all(\n ids.map(async (id) => {\n const existOnWorkspace = await this.workspace.hasId(id);\n existOnWorkspace ? workspaceIds.push(id) : nonWorkspaceIds.push(id);\n })\n );\n return { workspaceIds, nonWorkspaceIds };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["WorkspaceAspectsLoader","constructor","workspace","scope","aspectLoader","envs","dependencyResolver","logger","harmony","onAspectsResolveSlot","onRootAspectAddedSlot","consumer","resolvedInstalledAspects","Map","loadAspects","ids","throwOnError","neededFor","opts","defaultOpts","useScopeAspectsCapsule","mergedOpts","callId","Math","floor","random","loggerPrefix","info","length","join","JSON","stringify","notLoadedIds","filter","id","isAspectLoaded","coreAspectsStringIds","getCoreAspectIds","idsWithoutCore","difference","componentIds","resolveMultipleComponentIds","workspaceIds","nonWorkspaceIds","groupIdsByWorkspaceExistence","idsToLoadFromWs","scopeAspectIds","currentLane","getCurrentLaneObject","nonWorkspaceIdsString","map","toString","undefined","packageManagerConfigRootDir","path","err","ComponentNotFound","config","get","configStr","workspaceConfig","raw","includes","BitError","aspectsDefs","resolveAspects","excludeCore","requestedOnly","manifests","requireableComponents","loadAspectDefsByOrder","potentialPluginsIndexes","compact","manifest","index","isValidAspect","pluginsRequireableComponents","pluginsManifests","getManifestsFromRequireableExtensions","loadExtensionsByManifests","debug","manifestIds","concat","seeders","nonWorkspaceDefs","groupAspectDefsByWorkspaceExistence","scopeAspectsLoader","getScopeAspectsLoader","scopeIds","aspectDef","getId","scopeIdsGrouped","groupAspectIdsByEnvOfTheList","aspectDefsToRequireableComponents","runtimeName","filterByRuntime","workspaceName","name","idsToResolve","extensionsIds","coreAspectsIds","configuredAspects","getConfiguredAspects","userAspectsIds","rootAspectsIds","componentIdsToResolve","components","importAndGetAspects","runOnAspectsResolveFunctions","graph","getAspectsGraphWithoutCore","isAspect","bind","aspects","nodes","node","attr","workspaceComps","nonWorkspaceComps","groupComponentsByWorkspaceExistence","workspaceCompsIds","c","stringIds","wsAspectDefs","getWorkspaceAspectResolver","linkIfMissingWorkspaceAspects","componentsToResolveFromScope","componentsToResolveFromInstalled","nonWorkspaceCompsGroups","groupBy","component","isEnv","true","false","scopeAspectsDefs","installedAspectsDefs","getInstalledAspectResolver","coreAspectDefs","Promise","all","coreId","rawDef","getAspectDef","loadDefinition","coreAspect","runtimePath","allDefs","idsToFilter","idStr","ComponentID","fromString","filteredDefs","filterAspectDefs","use","aspectIdStr","aspectId","resolveComponentId","inWs","hasId","aspectIdToAdd","toStringWithoutVersion","aspectsComponent","aspectsComponents","Error","setExtension","overrideExisting","ignoreVersion","write","addInMemoryConfiguredAspect","runOnRootAspectAddedFunctions","getConfiguredUserAspectsPackages","options","componentsToGetPackages","externalsOnly","packages","aspectComponent","packageName","getPackageName","version","aspectDefs","localPath","aspectPath","requireFunc","plugins","getPlugins","has","load","MainRuntime","aspect","require","getRuntimePath","RequireableComponent","missingPaths","existsP","exist","fs","pathExists","bitIds","_legacy","linkToNodeModulesByIds","resolve","workspaceAspectResolver","compStringId","push","getComponentPackagePath","aspectFilePath","getAspectFilePath","funcs","getOnAspectsResolveFunctions","pMapSeries","func","error","aspectsResolveFunctions","values","aspectsId","getOnRootAspectAddedFunctions","RootAspectAddedFunctions","rootIds","installedAspectsResolver","resolveInstalledAspectRecursively","aspectStringId","resolvedPath","set","parent","predecessors","parentPath","resolveFrom","findRoot","consoleWarning","message","buildOneGraphForComponents","loadComponentsExtensions","extensions","originatedFrom","extensionsIdsP","extensionEntry","extensionId","stringId","harmonyExtensions","loadedExtensions","extId","loaded","extensionsToLoad","isUsingAspectEnv","isUsingEnvEnv","importAndGetMany","existOnWorkspace","workspaceDefs"],"sources":["workspace-aspects-loader.ts"],"sourcesContent":["import findRoot from 'find-root';\nimport { resolveFrom } from '@teambit/toolbox.modules.module-resolver';\nimport { Graph } from '@teambit/graph.cleargraph';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ExtensionManifest, Harmony, Aspect } from '@teambit/harmony';\nimport {\n AspectDefinition,\n AspectLoaderMain,\n AspectResolver,\n getAspectDef,\n ResolvedAspect,\n} from '@teambit/aspect-loader';\nimport { MainRuntime } from '@teambit/cli';\nimport fs from 'fs-extra';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport { linkToNodeModulesByIds } from '@teambit/workspace.modules.node-modules-linker';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ComponentNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport pMapSeries from 'p-map-series';\nimport { difference, compact, groupBy } from 'lodash';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { Component, ComponentID, ResolveAspectsOptions } from '@teambit/component';\nimport { ScopeMain } from '@teambit/scope';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { EnvsMain } from '@teambit/envs';\nimport { ConfigMain } from '@teambit/config';\nimport { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ShouldLoadFunc } from './build-graph-from-fs';\nimport type { Workspace } from './workspace';\nimport { OnAspectsResolve, OnAspectsResolveSlot, OnRootAspectAdded, OnRootAspectAddedSlot } from './workspace.provider';\n\nexport type GetConfiguredUserAspectsPackagesOptions = {\n externalsOnly?: boolean;\n};\n\nexport type WorkspaceLoadAspectsOptions = {\n useScopeAspectsCapsule?: boolean;\n};\n\nexport type AspectPackage = { packageName: string; version: string };\n\nexport class WorkspaceAspectsLoader {\n private consumer: Consumer;\n private resolvedInstalledAspects: Map<string, string | null>;\n\n constructor(\n private workspace: Workspace,\n private scope: ScopeMain,\n private aspectLoader: AspectLoaderMain,\n private envs: EnvsMain,\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private harmony: Harmony,\n private onAspectsResolveSlot: OnAspectsResolveSlot,\n private onRootAspectAddedSlot: OnRootAspectAddedSlot\n ) {\n this.consumer = this.workspace.consumer;\n this.resolvedInstalledAspects = new Map();\n }\n\n /**\n * load aspects from the workspace and if not exists in the workspace, load from the node_modules.\n * keep in mind that the graph may have circles.\n */\n async loadAspects(\n ids: string[] = [],\n throwOnError = false,\n neededFor?: string,\n opts: WorkspaceLoadAspectsOptions = {}\n ): Promise<string[]> {\n const defaultOpts: WorkspaceLoadAspectsOptions = {\n useScopeAspectsCapsule: false,\n };\n const mergedOpts = { ...defaultOpts, ...opts };\n\n // generate a random callId to be able to identify the call from the logs\n const callId = Math.floor(Math.random() * 1000);\n const loggerPrefix = `[${callId}] loadAspects,`;\n this.logger.info(`${loggerPrefix} loading ${ids.length} aspects.\nids: ${ids.join(', ')}\nneeded-for: ${neededFor || '<unknown>'}. using opts: ${JSON.stringify(mergedOpts, null, 2)}`);\n const notLoadedIds = ids.filter((id) => !this.aspectLoader.isAspectLoaded(id));\n if (!notLoadedIds.length) return [];\n const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();\n const idsWithoutCore: string[] = difference(notLoadedIds, coreAspectsStringIds);\n\n const componentIds = await this.workspace.resolveMultipleComponentIds(idsWithoutCore);\n const { workspaceIds, nonWorkspaceIds } = await this.groupIdsByWorkspaceExistence(componentIds);\n let idsToLoadFromWs = componentIds;\n let scopeAspectIds: string[] = [];\n\n // TODO: hard coded use the old approach and loading from the scope capsules\n // This is because right now loading from the ws node_modules causes issues in some cases\n // like for the cloud app\n // it should be removed once we fix the issues\n mergedOpts.useScopeAspectsCapsule = true;\n\n if (mergedOpts.useScopeAspectsCapsule) {\n idsToLoadFromWs = workspaceIds;\n const currentLane = await this.consumer.getCurrentLaneObject();\n\n const nonWorkspaceIdsString = nonWorkspaceIds.map((id) => id.toString());\n try {\n scopeAspectIds = await this.scope.loadAspects(\n nonWorkspaceIdsString,\n throwOnError,\n neededFor,\n currentLane || undefined,\n {\n packageManagerConfigRootDir: this.workspace.path,\n }\n );\n } catch (err: any) {\n if (err instanceof ComponentNotFound) {\n const config = this.harmony.get<ConfigMain>('teambit.harmony/config');\n const configStr = JSON.stringify(config.workspaceConfig?.raw || {});\n if (configStr.includes(err.id)) {\n throw new BitError(`error: a component \"${err.id}\" was not found\n your workspace.jsonc has this component-id set. you might want to remove/change it.`);\n }\n }\n\n throw err;\n }\n }\n\n const aspectsDefs = await this.resolveAspects(undefined, idsToLoadFromWs, {\n excludeCore: true,\n requestedOnly: false,\n throwOnError,\n ...mergedOpts,\n });\n\n const { manifests, requireableComponents } = await this.loadAspectDefsByOrder(\n aspectsDefs,\n idsWithoutCore,\n throwOnError\n );\n\n const potentialPluginsIndexes = compact(\n manifests.map((manifest, index) => {\n if (this.aspectLoader.isValidAspect(manifest)) return undefined;\n return index;\n })\n );\n\n // Try require components for potential plugins\n const pluginsRequireableComponents = potentialPluginsIndexes.map((index) => {\n return requireableComponents[index];\n });\n // Do the require again now that the plugins defs already registered\n const pluginsManifests = await this.aspectLoader.getManifestsFromRequireableExtensions(\n pluginsRequireableComponents,\n throwOnError\n );\n await this.aspectLoader.loadExtensionsByManifests(pluginsManifests, throwOnError);\n this.logger.debug(`${loggerPrefix} finish loading aspects`);\n const manifestIds = manifests.map((manifest) => manifest.id);\n return compact(manifestIds.concat(scopeAspectIds));\n }\n\n private async loadAspectDefsByOrder(\n aspectsDefs: AspectDefinition[],\n seeders: string[],\n throwOnError: boolean\n ): Promise<{ manifests: Array<Aspect | ExtensionManifest>; requireableComponents: RequireableComponent[] }> {\n const { nonWorkspaceDefs } = await this.groupAspectDefsByWorkspaceExistence(aspectsDefs);\n const scopeAspectsLoader = this.scope.getScopeAspectsLoader();\n const scopeIds: string[] = compact(nonWorkspaceDefs.map((aspectDef) => aspectDef.getId));\n const scopeIdsGrouped = await scopeAspectsLoader.groupAspectIdsByEnvOfTheList(scopeIds);\n\n // Make sure to first load envs from the list otherwise it will fail when trying to load other aspects\n // as their envs might not be loaded yet\n if (scopeIdsGrouped.envs && scopeIdsGrouped.envs.length) {\n await this.scope.loadAspects(scopeIdsGrouped.envs, throwOnError, 'workspace.loadAspects loading scope aspects');\n }\n const requireableComponents = this.aspectDefsToRequireableComponents(aspectsDefs);\n const manifests = await this.aspectLoader.getManifestsFromRequireableExtensions(\n requireableComponents,\n throwOnError\n );\n await this.aspectLoader.loadExtensionsByManifests(manifests, throwOnError, seeders);\n return { manifests, requireableComponents };\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const callId = Math.floor(Math.random() * 1000);\n const loggerPrefix = `[${callId}] workspace resolveAspects,`;\n\n this.logger.debug(\n `${loggerPrefix}, resolving aspects for - runtimeName: ${runtimeName}, componentIds: ${componentIds}`\n );\n const defaultOpts: ResolveAspectsOptions = {\n excludeCore: false,\n requestedOnly: false,\n filterByRuntime: true,\n useScopeAspectsCapsule: false,\n workspaceName: this.workspace.name,\n };\n const mergedOpts = { ...defaultOpts, ...opts };\n const idsToResolve = componentIds ? componentIds.map((id) => id.toString()) : this.harmony.extensionsIds;\n const coreAspectsIds = this.aspectLoader.getCoreAspectIds();\n const configuredAspects = this.aspectLoader.getConfiguredAspects();\n const userAspectsIds: string[] = difference(idsToResolve, coreAspectsIds);\n const rootAspectsIds: string[] = difference(configuredAspects, coreAspectsIds);\n const componentIdsToResolve = await this.workspace.resolveMultipleComponentIds(userAspectsIds);\n const components = await this.importAndGetAspects(componentIdsToResolve);\n\n // Run the on load slot\n await this.runOnAspectsResolveFunctions(components);\n\n const graph = await this.getAspectsGraphWithoutCore(components, this.isAspect.bind(this));\n const aspects = graph.nodes.map((node) => node.attr);\n this.logger.debug(`${loggerPrefix} found ${aspects.length} aspects in the aspects-graph`);\n const { workspaceComps, nonWorkspaceComps } = await this.groupComponentsByWorkspaceExistence(aspects);\n const workspaceCompsIds = workspaceComps.map((c) => c.id);\n this.logger.debug(\n `${loggerPrefix} found ${workspaceComps.length} components in the workspace:\\n${workspaceComps\n .map((c) => c.id.toString())\n .join('\\n')}`\n );\n this.logger.debug(\n `${loggerPrefix} ${\n nonWorkspaceComps.length\n } components are not in the workspace and are loaded from the scope capsules or from the node_modules:\\n${nonWorkspaceComps\n .map((c) => c.id.toString())\n .join('\\n')}`\n );\n\n const stringIds: string[] = [];\n const wsAspectDefs = await this.aspectLoader.resolveAspects(\n workspaceComps,\n this.getWorkspaceAspectResolver(stringIds, runtimeName)\n );\n\n await this.linkIfMissingWorkspaceAspects(wsAspectDefs, workspaceCompsIds);\n\n // TODO: hard coded use the old approach and loading from the scope capsules\n // This is because right now loading from the ws node_modules causes issues in some cases\n // like for the cloud app\n // it should be removed once we fix the issues\n mergedOpts.useScopeAspectsCapsule = true;\n\n let componentsToResolveFromScope = nonWorkspaceComps;\n let componentsToResolveFromInstalled: Component[] = [];\n if (!mergedOpts.useScopeAspectsCapsule) {\n const nonWorkspaceCompsGroups = groupBy(nonWorkspaceComps, (component) => this.envs.isEnv(component));\n componentsToResolveFromScope = nonWorkspaceCompsGroups.true || [];\n componentsToResolveFromInstalled = nonWorkspaceCompsGroups.false || [];\n }\n\n const scopeIds = componentsToResolveFromScope.map((c) => c.id);\n this.logger.debug(\n `${loggerPrefix} ${\n scopeIds.length\n } components are not in the workspace and are loaded from the scope capsules:\\n${scopeIds\n .map((id) => id.toString())\n .join('\\n')}`\n );\n const scopeAspectsDefs: AspectDefinition[] = scopeIds.length\n ? await this.scope.resolveAspects(runtimeName, scopeIds, mergedOpts)\n : [];\n\n this.logger.debug(\n `${loggerPrefix} ${\n componentsToResolveFromInstalled.length\n } components are not in the workspace and are loaded from the node_modules:\\n${componentsToResolveFromInstalled\n .map((c) => c.id.toString())\n .join('\\n')}`\n );\n const installedAspectsDefs: AspectDefinition[] = componentsToResolveFromInstalled.length\n ? await this.aspectLoader.resolveAspects(\n componentsToResolveFromInstalled,\n this.getInstalledAspectResolver(graph, rootAspectsIds, runtimeName, {\n throwOnError: opts?.throwOnError ?? false,\n })\n )\n : [];\n\n let coreAspectDefs = await Promise.all(\n coreAspectsIds.map(async (coreId) => {\n const rawDef = await getAspectDef(coreId, runtimeName);\n return this.aspectLoader.loadDefinition(rawDef);\n })\n );\n\n // due to lack of workspace and scope runtimes. TODO: fix after adding them.\n if (runtimeName && mergedOpts.filterByRuntime) {\n coreAspectDefs = coreAspectDefs.filter((coreAspect) => {\n return coreAspect.runtimePath;\n });\n }\n const allDefs = wsAspectDefs.concat(coreAspectDefs).concat(scopeAspectsDefs).concat(installedAspectsDefs);\n const idsToFilter = idsToResolve.map((idStr) => ComponentID.fromString(idStr));\n const filteredDefs = this.aspectLoader.filterAspectDefs(allDefs, idsToFilter, runtimeName, mergedOpts);\n return filteredDefs;\n }\n\n async use(aspectIdStr: string): Promise<string> {\n let aspectId = await this.workspace.resolveComponentId(aspectIdStr);\n const inWs = await this.workspace.hasId(aspectId);\n let aspectIdToAdd = aspectId.toStringWithoutVersion();\n\n let aspectsComponent;\n // let aspectPackage;\n if (!inWs) {\n const aspectsComponents = await this.importAndGetAspects([aspectId]);\n if (aspectsComponents[0]) {\n aspectsComponent = aspectsComponents[0];\n aspectId = aspectsComponent.id;\n aspectIdToAdd = aspectId.toString();\n }\n }\n\n const config = this.harmony.get<ConfigMain>('teambit.harmony/config').workspaceConfig;\n if (!config) {\n throw new Error(`use() unable to get the workspace config`);\n }\n config.setExtension(\n aspectIdToAdd,\n {},\n {\n overrideExisting: false,\n ignoreVersion: false,\n }\n );\n await config.write();\n this.aspectLoader.addInMemoryConfiguredAspect(aspectIdToAdd);\n await this.runOnRootAspectAddedFunctions(aspectId, inWs);\n return aspectIdToAdd;\n }\n\n async getConfiguredUserAspectsPackages(\n options: GetConfiguredUserAspectsPackagesOptions = {}\n ): Promise<AspectPackage[]> {\n const configuredAspects = this.aspectLoader.getConfiguredAspects();\n const coreAspectsIds = this.aspectLoader.getCoreAspectIds();\n const userAspectsIds: string[] = difference(configuredAspects, coreAspectsIds);\n const componentIdsToResolve = await this.workspace.resolveMultipleComponentIds(userAspectsIds);\n const aspectsComponents = await this.importAndGetAspects(componentIdsToResolve);\n let componentsToGetPackages = aspectsComponents;\n if (options.externalsOnly) {\n const { nonWorkspaceComps } = await this.groupComponentsByWorkspaceExistence(aspectsComponents);\n componentsToGetPackages = nonWorkspaceComps;\n }\n const packages = componentsToGetPackages.map((aspectComponent) => {\n const packageName = this.dependencyResolver.getPackageName(aspectComponent);\n const version = aspectComponent.id.version || '*';\n return { packageName, version };\n });\n return packages;\n }\n\n private aspectDefsToRequireableComponents(aspectDefs: AspectDefinition[]): RequireableComponent[] {\n const requireableComponents = aspectDefs.map((aspectDef) => {\n const localPath = aspectDef.aspectPath;\n const component = aspectDef.component;\n if (!component) return undefined;\n const requireFunc = async () => {\n const plugins = this.aspectLoader.getPlugins(component, localPath);\n if (plugins.has()) {\n return plugins.load(MainRuntime.name);\n }\n\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const aspect = require(localPath);\n // require aspect runtimes\n const runtimePath = await this.aspectLoader.getRuntimePath(component, localPath, MainRuntime.name);\n // eslint-disable-next-line global-require, import/no-dynamic-require\n if (runtimePath) require(runtimePath);\n return aspect;\n };\n return new RequireableComponent(component, requireFunc);\n });\n return compact(requireableComponents);\n }\n\n private async linkIfMissingWorkspaceAspects(aspects: AspectDefinition[], ids: ComponentID[]) {\n let missingPaths = false;\n const existsP = aspects.map(async (aspect) => {\n const exist = await fs.pathExists(aspect.aspectPath);\n if (!exist) {\n missingPaths = true;\n }\n });\n await Promise.all(existsP);\n // TODO: this should be done properly by the install aspect by slot\n if (missingPaths) {\n const bitIds: BitId[] = ids.map((id) => id._legacy);\n return linkToNodeModulesByIds(this.workspace, bitIds);\n }\n return Promise.resolve();\n }\n\n /**\n * This will return a resolver that knows to resolve aspects which are part of the workspace.\n * means aspects exist in the bitmap file\n * @param stringIds\n * @param runtimeName\n * @returns\n */\n private getWorkspaceAspectResolver(stringIds: string[], runtimeName?: string): AspectResolver {\n const workspaceAspectResolver = async (component: Component): Promise<ResolvedAspect> => {\n const compStringId = component.id._legacy.toString();\n stringIds.push(compStringId);\n const localPath = this.workspace.getComponentPackagePath(component);\n\n const runtimePath = runtimeName\n ? await this.aspectLoader.getRuntimePath(component, localPath, runtimeName)\n : null;\n\n const aspectFilePath = await this.aspectLoader.getAspectFilePath(component, localPath);\n\n this.logger.debug(\n `workspace resolveAspects, resolving id: ${compStringId}, localPath: ${localPath}, runtimePath: ${runtimePath}`\n );\n return {\n aspectPath: localPath,\n aspectFilePath,\n runtimePath,\n };\n };\n return workspaceAspectResolver;\n }\n\n private async runOnAspectsResolveFunctions(aspectsComponents: Component[]): Promise<void> {\n const funcs = this.getOnAspectsResolveFunctions();\n await pMapSeries(funcs, async (func) => {\n try {\n await func(aspectsComponents);\n } catch (err) {\n this.logger.error('failed running onAspectsResolve function', err);\n }\n });\n }\n\n private getOnAspectsResolveFunctions(): OnAspectsResolve[] {\n const aspectsResolveFunctions = this.onAspectsResolveSlot.values();\n return aspectsResolveFunctions;\n }\n\n private async runOnRootAspectAddedFunctions(aspectsId: ComponentID, inWs: boolean): Promise<void> {\n const funcs = this.getOnRootAspectAddedFunctions();\n await pMapSeries(funcs, async (func) => {\n try {\n await func(aspectsId, inWs);\n } catch (err) {\n this.logger.error('failed running onRootAspectAdded function', err);\n }\n });\n }\n\n private getOnRootAspectAddedFunctions(): OnRootAspectAdded[] {\n const RootAspectAddedFunctions = this.onRootAspectAddedSlot.values();\n return RootAspectAddedFunctions;\n }\n\n /**\n * This will return a resolver that knows to resolve aspects which are not part of the workspace.\n * means aspects that does not exist in the bitmap file\n * instead it will resolve them from the node_modules recursively\n * @param graph\n * @param rootIds\n * @param runtimeName\n * @returns\n */\n private getInstalledAspectResolver(\n graph: Graph<Component, string>,\n rootIds: string[],\n runtimeName?: string,\n opts: { throwOnError: boolean } = { throwOnError: false }\n ): AspectResolver {\n const installedAspectsResolver = async (component: Component): Promise<ResolvedAspect | undefined> => {\n const compStringId = component.id._legacy.toString();\n // stringIds.push(compStringId);\n const localPath = this.resolveInstalledAspectRecursively(component, rootIds, graph, opts);\n if (!localPath) return undefined;\n\n const runtimePath = runtimeName\n ? await this.aspectLoader.getRuntimePath(component, localPath, runtimeName)\n : null;\n\n const aspectFilePath = await this.aspectLoader.getAspectFilePath(component, localPath);\n\n this.logger.debug(\n `workspace resolveInstalledAspects, resolving id: ${compStringId}, localPath: ${localPath}, runtimePath: ${runtimePath}`\n );\n return {\n aspectPath: localPath,\n aspectFilePath,\n runtimePath,\n };\n };\n return installedAspectsResolver;\n }\n\n private resolveInstalledAspectRecursively(\n aspectComponent: Component,\n rootIds: string[],\n graph: Graph<Component, string>,\n opts: { throwOnError: boolean } = { throwOnError: false }\n ): string | null | undefined {\n const aspectStringId = aspectComponent.id._legacy.toString();\n if (this.resolvedInstalledAspects.has(aspectStringId)) {\n const resolvedPath = this.resolvedInstalledAspects.get(aspectStringId);\n return resolvedPath;\n }\n if (rootIds.includes(aspectStringId)) {\n const localPath = this.workspace.getComponentPackagePath(aspectComponent);\n this.resolvedInstalledAspects.set(aspectStringId, localPath);\n return localPath;\n }\n const parent = graph.predecessors(aspectStringId)[0];\n const parentPath = this.resolveInstalledAspectRecursively(parent.attr, rootIds, graph);\n if (!parentPath) {\n this.resolvedInstalledAspects.set(aspectStringId, null);\n return undefined;\n }\n const packageName = this.dependencyResolver.getPackageName(aspectComponent);\n try {\n const resolvedPath = resolveFrom(parentPath, [packageName]);\n const localPath = findRoot(resolvedPath);\n this.resolvedInstalledAspects.set(aspectStringId, localPath);\n return localPath;\n } catch (error: any) {\n this.resolvedInstalledAspects.set(aspectStringId, null);\n if (opts.throwOnError) {\n throw error;\n }\n this.logger.consoleWarning(\n `failed resolving aspect ${aspectStringId} from ${parentPath}, error: ${error.message}`\n );\n return undefined;\n }\n }\n\n /**\n * Create a graph of aspects without the core aspects.\n * @param components\n * @param isAspect\n * @returns\n */\n private async getAspectsGraphWithoutCore(\n components: Component[],\n isAspect?: ShouldLoadFunc\n ): Promise<Graph<Component, string>> {\n const ids = components.map((component) => component.id);\n const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();\n // TODO: @gilad it causes many issues we need to find a better solution. removed for now.\n // const coreAspectsComponentIds = coreAspectsStringIds.map((id) => BitId.parse(id, true));\n // const aspectsIds = components.reduce((acc, curr) => {\n // const currIds = curr.state.aspects.ids;\n // acc = acc.concat(currIds);\n // return acc;\n // }, [] as any);\n // const otherDependenciesMap = components.reduce((acc, curr) => {\n // // const currIds = curr.state.dependencies.dependencies.map(dep => dep.id.toString());\n // const currMap = curr.state.dependencies.getIdsMap();\n // Object.assign(acc, currMap);\n // return acc;\n // }, {});\n\n // const depsWhichAreNotAspects = difference(Object.keys(otherDependenciesMap), aspectsIds);\n // const depsWhichAreNotAspectsBitIds = depsWhichAreNotAspects.map((strId) => otherDependenciesMap[strId]);\n // We only want to load into the graph components which are aspects and not regular dependencies\n // This come to solve a circular loop when an env aspect use an aspect (as regular dep) and the aspect use the env aspect as its env\n return this.workspace.buildOneGraphForComponents(ids, coreAspectsStringIds, isAspect);\n }\n\n /**\n * Load all unloaded extensions from an extension list\n * this will resolve the extensions from the scope aspects capsules if they are not in the ws\n * Only use it for component extensions\n * for workspace/scope root aspect use the load aspects directly\n *\n * The reason we are loading component extensions with \"scope aspects capsules\" is becasuse for component extensions\n * we might have the same extension in multiple versions\n * (for example I might have 2 components using different versions of the same env)\n * in such case, I can't install both version into the root of the node_modules so I need to place it somewhere else (capsules)\n * @param extensions list of extensions with config to load\n */\n async loadComponentsExtensions(\n extensions: ExtensionDataList,\n originatedFrom?: ComponentID,\n throwOnError = false\n ): Promise<void> {\n const extensionsIdsP = extensions.map(async (extensionEntry) => {\n // Core extension\n if (!extensionEntry.extensionId) {\n return extensionEntry.stringId as string;\n }\n\n const id = await this.workspace.resolveComponentId(extensionEntry.extensionId);\n // return this.resolveComponentId(extensionEntry.extensionId);\n return id.toString();\n });\n const extensionsIds: string[] = await Promise.all(extensionsIdsP);\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(extensionsIds, loadedExtensions);\n if (!extensionsToLoad.length) return;\n await this.loadAspects(extensionsToLoad, throwOnError, originatedFrom?.toString(), {\n useScopeAspectsCapsule: true,\n });\n }\n\n private async isAspect(id: ComponentID) {\n const component = await this.workspace.get(id);\n const isUsingAspectEnv = this.envs.isUsingAspectEnv(component);\n const isUsingEnvEnv = this.envs.isUsingEnvEnv(component);\n const isValidAspect = isUsingAspectEnv || isUsingEnvEnv;\n return isValidAspect;\n }\n\n /**\n * same as `this.importAndGetMany()` with a specific error handling of ComponentNotFound\n */\n private async importAndGetAspects(componentIds: ComponentID[]): Promise<Component[]> {\n try {\n return await this.workspace.importAndGetMany(componentIds);\n } catch (err: any) {\n if (err instanceof ComponentNotFound) {\n const config = this.harmony.get<ConfigMain>('teambit.harmony/config');\n const configStr = JSON.stringify(config.workspaceConfig?.raw || {});\n if (configStr.includes(err.id)) {\n throw new BitError(`error: a component \"${err.id}\" was not found\nyour workspace.jsonc has this component-id set. you might want to remove/change it.`);\n }\n }\n\n throw err;\n }\n }\n\n /**\n * split the provided components into 2 groups, one which are workspace components and the other which are not.\n * @param components\n * @returns\n */\n private async groupComponentsByWorkspaceExistence(\n components: Component[]\n ): Promise<{ workspaceComps: Component[]; nonWorkspaceComps: Component[] }> {\n const workspaceComps: Component[] = [];\n const nonWorkspaceComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n const existOnWorkspace = await this.workspace.hasId(component.id);\n existOnWorkspace ? workspaceComps.push(component) : nonWorkspaceComps.push(component);\n })\n );\n return { workspaceComps, nonWorkspaceComps };\n }\n\n /**\n * split the provided components into 2 groups, one which are workspace components and the other which are not.\n * @param components\n * @returns\n */\n private async groupAspectDefsByWorkspaceExistence(\n aspectDefs: AspectDefinition[]\n ): Promise<{ workspaceDefs: AspectDefinition[]; nonWorkspaceDefs: AspectDefinition[] }> {\n const workspaceDefs: AspectDefinition[] = [];\n const nonWorkspaceDefs: AspectDefinition[] = [];\n await Promise.all(\n aspectDefs.map(async (aspectDef) => {\n const id = aspectDef.component?.id;\n const existOnWorkspace = id ? await this.workspace.hasId(id) : true;\n existOnWorkspace ? workspaceDefs.push(aspectDef) : nonWorkspaceDefs.push(aspectDef);\n })\n );\n return { workspaceDefs, nonWorkspaceDefs };\n }\n\n private async groupIdsByWorkspaceExistence(\n ids: ComponentID[]\n ): Promise<{ workspaceIds: ComponentID[]; nonWorkspaceIds: ComponentID[] }> {\n const workspaceIds: ComponentID[] = [];\n const nonWorkspaceIds: ComponentID[] = [];\n await Promise.all(\n ids.map(async (id) => {\n const existOnWorkspace = await this.workspace.hasId(id);\n existOnWorkspace ? workspaceIds.push(id) : nonWorkspaceIds.push(id);\n })\n );\n return { workspaceIds, nonWorkspaceIds };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAOA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA8C;AAAA;AAkBvC,MAAMA,sBAAsB,CAAC;EAIlCC,WAAW,CACDC,SAAoB,EACpBC,KAAgB,EAChBC,YAA8B,EAC9BC,IAAc,EACdC,kBAA0C,EAC1CC,MAAc,EACdC,OAAgB,EAChBC,oBAA0C,EAC1CC,qBAA4C,EACpD;IAAA,KATQR,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,KAAgB,GAAhBA,KAAgB;IAAA,KAChBC,YAA8B,GAA9BA,YAA8B;IAAA,KAC9BC,IAAc,GAAdA,IAAc;IAAA,KACdC,kBAA0C,GAA1CA,kBAA0C;IAAA,KAC1CC,MAAc,GAAdA,MAAc;IAAA,KACdC,OAAgB,GAAhBA,OAAgB;IAAA,KAChBC,oBAA0C,GAA1CA,oBAA0C;IAAA,KAC1CC,qBAA4C,GAA5CA,qBAA4C;IAAA;IAAA;IAEpD,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACT,SAAS,CAACS,QAAQ;IACvC,IAAI,CAACC,wBAAwB,GAAG,IAAIC,GAAG,EAAE;EAC3C;;EAEA;AACF;AACA;AACA;EACE,MAAMC,WAAW,CACfC,GAAa,GAAG,EAAE,EAClBC,YAAY,GAAG,KAAK,EACpBC,SAAkB,EAClBC,IAAiC,GAAG,CAAC,CAAC,EACnB;IACnB,MAAMC,WAAwC,GAAG;MAC/CC,sBAAsB,EAAE;IAC1B,CAAC;IACD,MAAMC,UAAU,mCAAQF,WAAW,GAAKD,IAAI,CAAE;;IAE9C;IACA,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAMC,YAAY,GAAI,IAAGJ,MAAO,gBAAe;IAC/C,IAAI,CAACf,MAAM,CAACoB,IAAI,CAAE,GAAED,YAAa,YAAWX,GAAG,CAACa,MAAO;AAC3D,OAAOb,GAAG,CAACc,IAAI,CAAC,IAAI,CAAE;AACtB,cAAcZ,SAAS,IAAI,WAAY,iBAAgBa,IAAI,CAACC,SAAS,CAACV,UAAU,EAAE,IAAI,EAAE,CAAC,CAAE,EAAC,CAAC;IACzF,MAAMW,YAAY,GAAGjB,GAAG,CAACkB,MAAM,CAAEC,EAAE,IAAK,CAAC,IAAI,CAAC9B,YAAY,CAAC+B,cAAc,CAACD,EAAE,CAAC,CAAC;IAC9E,IAAI,CAACF,YAAY,CAACJ,MAAM,EAAE,OAAO,EAAE;IACnC,MAAMQ,oBAAoB,GAAG,IAAI,CAAChC,YAAY,CAACiC,gBAAgB,EAAE;IACjE,MAAMC,cAAwB,GAAG,IAAAC,oBAAU,EAACP,YAAY,EAAEI,oBAAoB,CAAC;IAE/E,MAAMI,YAAY,GAAG,MAAM,IAAI,CAACtC,SAAS,CAACuC,2BAA2B,CAACH,cAAc,CAAC;IACrF,MAAM;MAAEI,YAAY;MAAEC;IAAgB,CAAC,GAAG,MAAM,IAAI,CAACC,4BAA4B,CAACJ,YAAY,CAAC;IAC/F,IAAIK,eAAe,GAAGL,YAAY;IAClC,IAAIM,cAAwB,GAAG,EAAE;;IAEjC;IACA;IACA;IACA;IACAzB,UAAU,CAACD,sBAAsB,GAAG,IAAI;IAExC,IAAIC,UAAU,CAACD,sBAAsB,EAAE;MACrCyB,eAAe,GAAGH,YAAY;MAC9B,MAAMK,WAAW,GAAG,MAAM,IAAI,CAACpC,QAAQ,CAACqC,oBAAoB,EAAE;MAE9D,MAAMC,qBAAqB,GAAGN,eAAe,CAACO,GAAG,CAAEhB,EAAE,IAAKA,EAAE,CAACiB,QAAQ,EAAE,CAAC;MACxE,IAAI;QACFL,cAAc,GAAG,MAAM,IAAI,CAAC3C,KAAK,CAACW,WAAW,CAC3CmC,qBAAqB,EACrBjC,YAAY,EACZC,SAAS,EACT8B,WAAW,IAAIK,SAAS,EACxB;UACEC,2BAA2B,EAAE,IAAI,CAACnD,SAAS,CAACoD;QAC9C,CAAC,CACF;MACH,CAAC,CAAC,OAAOC,GAAQ,EAAE;QACjB,IAAIA,GAAG,YAAYC,+BAAiB,EAAE;UAAA;UACpC,MAAMC,MAAM,GAAG,IAAI,CAACjD,OAAO,CAACkD,GAAG,CAAa,wBAAwB,CAAC;UACrE,MAAMC,SAAS,GAAG7B,IAAI,CAACC,SAAS,CAAC,0BAAA0B,MAAM,CAACG,eAAe,0DAAtB,sBAAwBC,GAAG,KAAI,CAAC,CAAC,CAAC;UACnE,IAAIF,SAAS,CAACG,QAAQ,CAACP,GAAG,CAACrB,EAAE,CAAC,EAAE;YAC9B,MAAM,KAAI6B,oBAAQ,EAAE,uBAAsBR,GAAG,CAACrB,EAAG;AAC7D,sFAAsF,CAAC;UAC7E;QACF;QAEA,MAAMqB,GAAG;MACX;IACF;IAEA,MAAMS,WAAW,GAAG,MAAM,IAAI,CAACC,cAAc,CAACb,SAAS,EAAEP,eAAe;MACtEqB,WAAW,EAAE,IAAI;MACjBC,aAAa,EAAE,KAAK;MACpBnD;IAAY,GACTK,UAAU,EACb;IAEF,MAAM;MAAE+C,SAAS;MAAEC;IAAsB,CAAC,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAC3EN,WAAW,EACX1B,cAAc,EACdtB,YAAY,CACb;IAED,MAAMuD,uBAAuB,GAAG,IAAAC,iBAAO,EACrCJ,SAAS,CAAClB,GAAG,CAAC,CAACuB,QAAQ,EAAEC,KAAK,KAAK;MACjC,IAAI,IAAI,CAACtE,YAAY,CAACuE,aAAa,CAACF,QAAQ,CAAC,EAAE,OAAOrB,SAAS;MAC/D,OAAOsB,KAAK;IACd,CAAC,CAAC,CACH;;IAED;IACA,MAAME,4BAA4B,GAAGL,uBAAuB,CAACrB,GAAG,CAAEwB,KAAK,IAAK;MAC1E,OAAOL,qBAAqB,CAACK,KAAK,CAAC;IACrC,CAAC,CAAC;IACF;IACA,MAAMG,gBAAgB,GAAG,MAAM,IAAI,CAACzE,YAAY,CAAC0E,qCAAqC,CACpFF,4BAA4B,EAC5B5D,YAAY,CACb;IACD,MAAM,IAAI,CAACZ,YAAY,CAAC2E,yBAAyB,CAACF,gBAAgB,EAAE7D,YAAY,CAAC;IACjF,IAAI,CAACT,MAAM,CAACyE,KAAK,CAAE,GAAEtD,YAAa,yBAAwB,CAAC;IAC3D,MAAMuD,WAAW,GAAGb,SAAS,CAAClB,GAAG,CAAEuB,QAAQ,IAAKA,QAAQ,CAACvC,EAAE,CAAC;IAC5D,OAAO,IAAAsC,iBAAO,EAACS,WAAW,CAACC,MAAM,CAACpC,cAAc,CAAC,CAAC;EACpD;EAEA,MAAcwB,qBAAqB,CACjCN,WAA+B,EAC/BmB,OAAiB,EACjBnE,YAAqB,EACqF;IAC1G,MAAM;MAAEoE;IAAiB,CAAC,GAAG,MAAM,IAAI,CAACC,mCAAmC,CAACrB,WAAW,CAAC;IACxF,MAAMsB,kBAAkB,GAAG,IAAI,CAACnF,KAAK,CAACoF,qBAAqB,EAAE;IAC7D,MAAMC,QAAkB,GAAG,IAAAhB,iBAAO,EAACY,gBAAgB,CAAClC,GAAG,CAAEuC,SAAS,IAAKA,SAAS,CAACC,KAAK,CAAC,CAAC;IACxF,MAAMC,eAAe,GAAG,MAAML,kBAAkB,CAACM,4BAA4B,CAACJ,QAAQ,CAAC;;IAEvF;IACA;IACA,IAAIG,eAAe,CAACtF,IAAI,IAAIsF,eAAe,CAACtF,IAAI,CAACuB,MAAM,EAAE;MACvD,MAAM,IAAI,CAACzB,KAAK,CAACW,WAAW,CAAC6E,eAAe,CAACtF,IAAI,EAAEW,YAAY,EAAE,6CAA6C,CAAC;IACjH;IACA,MAAMqD,qBAAqB,GAAG,IAAI,CAACwB,iCAAiC,CAAC7B,WAAW,CAAC;IACjF,MAAMI,SAAS,GAAG,MAAM,IAAI,CAAChE,YAAY,CAAC0E,qCAAqC,CAC7ET,qBAAqB,EACrBrD,YAAY,CACb;IACD,MAAM,IAAI,CAACZ,YAAY,CAAC2E,yBAAyB,CAACX,SAAS,EAAEpD,YAAY,EAAEmE,OAAO,CAAC;IACnF,OAAO;MAAEf,SAAS;MAAEC;IAAsB,CAAC;EAC7C;EAEA,MAAMJ,cAAc,CAClB6B,WAAoB,EACpBtD,YAA4B,EAC5BtB,IAA4B,EACC;IAAA;IAC7B,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAMC,YAAY,GAAI,IAAGJ,MAAO,6BAA4B;IAE5D,IAAI,CAACf,MAAM,CAACyE,KAAK,CACd,GAAEtD,YAAa,0CAAyCoE,WAAY,mBAAkBtD,YAAa,EAAC,CACtG;IACD,MAAMrB,WAAkC,GAAG;MACzC+C,WAAW,EAAE,KAAK;MAClBC,aAAa,EAAE,KAAK;MACpB4B,eAAe,EAAE,IAAI;MACrB3E,sBAAsB,EAAE,KAAK;MAC7B4E,aAAa,EAAE,IAAI,CAAC9F,SAAS,CAAC+F;IAChC,CAAC;IACD,MAAM5E,UAAU,mCAAQF,WAAW,GAAKD,IAAI,CAAE;IAC9C,MAAMgF,YAAY,GAAG1D,YAAY,GAAGA,YAAY,CAACU,GAAG,CAAEhB,EAAE,IAAKA,EAAE,CAACiB,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC3C,OAAO,CAAC2F,aAAa;IACxG,MAAMC,cAAc,GAAG,IAAI,CAAChG,YAAY,CAACiC,gBAAgB,EAAE;IAC3D,MAAMgE,iBAAiB,GAAG,IAAI,CAACjG,YAAY,CAACkG,oBAAoB,EAAE;IAClE,MAAMC,cAAwB,GAAG,IAAAhE,oBAAU,EAAC2D,YAAY,EAAEE,cAAc,CAAC;IACzE,MAAMI,cAAwB,GAAG,IAAAjE,oBAAU,EAAC8D,iBAAiB,EAAED,cAAc,CAAC;IAC9E,MAAMK,qBAAqB,GAAG,MAAM,IAAI,CAACvG,SAAS,CAACuC,2BAA2B,CAAC8D,cAAc,CAAC;IAC9F,MAAMG,UAAU,GAAG,MAAM,IAAI,CAACC,mBAAmB,CAACF,qBAAqB,CAAC;;IAExE;IACA,MAAM,IAAI,CAACG,4BAA4B,CAACF,UAAU,CAAC;IAEnD,MAAMG,KAAK,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAACJ,UAAU,EAAE,IAAI,CAACK,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzF,MAAMC,OAAO,GAAGJ,KAAK,CAACK,KAAK,CAAChE,GAAG,CAAEiE,IAAI,IAAKA,IAAI,CAACC,IAAI,CAAC;IACpD,IAAI,CAAC7G,MAAM,CAACyE,KAAK,CAAE,GAAEtD,YAAa,UAASuF,OAAO,CAACrF,MAAO,+BAA8B,CAAC;IACzF,MAAM;MAAEyF,cAAc;MAAEC;IAAkB,CAAC,GAAG,MAAM,IAAI,CAACC,mCAAmC,CAACN,OAAO,CAAC;IACrG,MAAMO,iBAAiB,GAAGH,cAAc,CAACnE,GAAG,CAAEuE,CAAC,IAAKA,CAAC,CAACvF,EAAE,CAAC;IACzD,IAAI,CAAC3B,MAAM,CAACyE,KAAK,CACd,GAAEtD,YAAa,UAAS2F,cAAc,CAACzF,MAAO,kCAAiCyF,cAAc,CAC3FnE,GAAG,CAAEuE,CAAC,IAAKA,CAAC,CAACvF,EAAE,CAACiB,QAAQ,EAAE,CAAC,CAC3BtB,IAAI,CAAC,IAAI,CAAE,EAAC,CAChB;IACD,IAAI,CAACtB,MAAM,CAACyE,KAAK,CACd,GAAEtD,YAAa,IACd4F,iBAAiB,CAAC1F,MACnB,0GAAyG0F,iBAAiB,CACxHpE,GAAG,CAAEuE,CAAC,IAAKA,CAAC,CAACvF,EAAE,CAACiB,QAAQ,EAAE,CAAC,CAC3BtB,IAAI,CAAC,IAAI,CAAE,EAAC,CAChB;IAED,MAAM6F,SAAmB,GAAG,EAAE;IAC9B,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACvH,YAAY,CAAC6D,cAAc,CACzDoD,cAAc,EACd,IAAI,CAACO,0BAA0B,CAACF,SAAS,EAAE5B,WAAW,CAAC,CACxD;IAED,MAAM,IAAI,CAAC+B,6BAA6B,CAACF,YAAY,EAAEH,iBAAiB,CAAC;;IAEzE;IACA;IACA;IACA;IACAnG,UAAU,CAACD,sBAAsB,GAAG,IAAI;IAExC,IAAI0G,4BAA4B,GAAGR,iBAAiB;IACpD,IAAIS,gCAA6C,GAAG,EAAE;IACtD,IAAI,CAAC1G,UAAU,CAACD,sBAAsB,EAAE;MACtC,MAAM4G,uBAAuB,GAAG,IAAAC,iBAAO,EAACX,iBAAiB,EAAGY,SAAS,IAAK,IAAI,CAAC7H,IAAI,CAAC8H,KAAK,CAACD,SAAS,CAAC,CAAC;MACrGJ,4BAA4B,GAAGE,uBAAuB,CAACI,IAAI,IAAI,EAAE;MACjEL,gCAAgC,GAAGC,uBAAuB,CAACK,KAAK,IAAI,EAAE;IACxE;IAEA,MAAM7C,QAAQ,GAAGsC,4BAA4B,CAAC5E,GAAG,CAAEuE,CAAC,IAAKA,CAAC,CAACvF,EAAE,CAAC;IAC9D,IAAI,CAAC3B,MAAM,CAACyE,KAAK,CACd,GAAEtD,YAAa,IACd8D,QAAQ,CAAC5D,MACV,iFAAgF4D,QAAQ,CACtFtC,GAAG,CAAEhB,EAAE,IAAKA,EAAE,CAACiB,QAAQ,EAAE,CAAC,CAC1BtB,IAAI,CAAC,IAAI,CAAE,EAAC,CAChB;IACD,MAAMyG,gBAAoC,GAAG9C,QAAQ,CAAC5D,MAAM,GACxD,MAAM,IAAI,CAACzB,KAAK,CAAC8D,cAAc,CAAC6B,WAAW,EAAEN,QAAQ,EAAEnE,UAAU,CAAC,GAClE,EAAE;IAEN,IAAI,CAACd,MAAM,CAACyE,KAAK,CACd,GAAEtD,YAAa,IACdqG,gCAAgC,CAACnG,MAClC,+EAA8EmG,gCAAgC,CAC5G7E,GAAG,CAAEuE,CAAC,IAAKA,CAAC,CAACvF,EAAE,CAACiB,QAAQ,EAAE,CAAC,CAC3BtB,IAAI,CAAC,IAAI,CAAE,EAAC,CAChB;IACD,MAAM0G,oBAAwC,GAAGR,gCAAgC,CAACnG,MAAM,GACpF,MAAM,IAAI,CAACxB,YAAY,CAAC6D,cAAc,CACpC8D,gCAAgC,EAChC,IAAI,CAACS,0BAA0B,CAAC3B,KAAK,EAAEL,cAAc,EAAEV,WAAW,EAAE;MAClE9E,YAAY,wBAAEE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEF,YAAY,mEAAI;IACtC,CAAC,CAAC,CACH,GACD,EAAE;IAEN,IAAIyH,cAAc,GAAG,MAAMC,OAAO,CAACC,GAAG,CACpCvC,cAAc,CAAClD,GAAG,CAAC,MAAO0F,MAAM,IAAK;MACnC,MAAMC,MAAM,GAAG,MAAM,IAAAC,4BAAY,EAACF,MAAM,EAAE9C,WAAW,CAAC;MACtD,OAAO,IAAI,CAAC1F,YAAY,CAAC2I,cAAc,CAACF,MAAM,CAAC;IACjD,CAAC,CAAC,CACH;;IAED;IACA,IAAI/C,WAAW,IAAIzE,UAAU,CAAC0E,eAAe,EAAE;MAC7C0C,cAAc,GAAGA,cAAc,CAACxG,MAAM,CAAE+G,UAAU,IAAK;QACrD,OAAOA,UAAU,CAACC,WAAW;MAC/B,CAAC,CAAC;IACJ;IACA,MAAMC,OAAO,GAAGvB,YAAY,CAACzC,MAAM,CAACuD,cAAc,CAAC,CAACvD,MAAM,CAACoD,gBAAgB,CAAC,CAACpD,MAAM,CAACqD,oBAAoB,CAAC;IACzG,MAAMY,WAAW,GAAGjD,YAAY,CAAChD,GAAG,CAAEkG,KAAK,IAAKC,wBAAW,CAACC,UAAU,CAACF,KAAK,CAAC,CAAC;IAC9E,MAAMG,YAAY,GAAG,IAAI,CAACnJ,YAAY,CAACoJ,gBAAgB,CAACN,OAAO,EAAEC,WAAW,EAAErD,WAAW,EAAEzE,UAAU,CAAC;IACtG,OAAOkI,YAAY;EACrB;EAEA,MAAME,GAAG,CAACC,WAAmB,EAAmB;IAC9C,IAAIC,QAAQ,GAAG,MAAM,IAAI,CAACzJ,SAAS,CAAC0J,kBAAkB,CAACF,WAAW,CAAC;IACnE,MAAMG,IAAI,GAAG,MAAM,IAAI,CAAC3J,SAAS,CAAC4J,KAAK,CAACH,QAAQ,CAAC;IACjD,IAAII,aAAa,GAAGJ,QAAQ,CAACK,sBAAsB,EAAE;IAErD,IAAIC,gBAAgB;IACpB;IACA,IAAI,CAACJ,IAAI,EAAE;MACT,MAAMK,iBAAiB,GAAG,MAAM,IAAI,CAACvD,mBAAmB,CAAC,CAACgD,QAAQ,CAAC,CAAC;MACpE,IAAIO,iBAAiB,CAAC,CAAC,CAAC,EAAE;QACxBD,gBAAgB,GAAGC,iBAAiB,CAAC,CAAC,CAAC;QACvCP,QAAQ,GAAGM,gBAAgB,CAAC/H,EAAE;QAC9B6H,aAAa,GAAGJ,QAAQ,CAACxG,QAAQ,EAAE;MACrC;IACF;IAEA,MAAMM,MAAM,GAAG,IAAI,CAACjD,OAAO,CAACkD,GAAG,CAAa,wBAAwB,CAAC,CAACE,eAAe;IACrF,IAAI,CAACH,MAAM,EAAE;MACX,MAAM,IAAI0G,KAAK,CAAE,0CAAyC,CAAC;IAC7D;IACA1G,MAAM,CAAC2G,YAAY,CACjBL,aAAa,EACb,CAAC,CAAC,EACF;MACEM,gBAAgB,EAAE,KAAK;MACvBC,aAAa,EAAE;IACjB,CAAC,CACF;IACD,MAAM7G,MAAM,CAAC8G,KAAK,EAAE;IACpB,IAAI,CAACnK,YAAY,CAACoK,2BAA2B,CAACT,aAAa,CAAC;IAC5D,MAAM,IAAI,CAACU,6BAA6B,CAACd,QAAQ,EAAEE,IAAI,CAAC;IACxD,OAAOE,aAAa;EACtB;EAEA,MAAMW,gCAAgC,CACpCC,OAAgD,GAAG,CAAC,CAAC,EAC3B;IAC1B,MAAMtE,iBAAiB,GAAG,IAAI,CAACjG,YAAY,CAACkG,oBAAoB,EAAE;IAClE,MAAMF,cAAc,GAAG,IAAI,CAAChG,YAAY,CAACiC,gBAAgB,EAAE;IAC3D,MAAMkE,cAAwB,GAAG,IAAAhE,oBAAU,EAAC8D,iBAAiB,EAAED,cAAc,CAAC;IAC9E,MAAMK,qBAAqB,GAAG,MAAM,IAAI,CAACvG,SAAS,CAACuC,2BAA2B,CAAC8D,cAAc,CAAC;IAC9F,MAAM2D,iBAAiB,GAAG,MAAM,IAAI,CAACvD,mBAAmB,CAACF,qBAAqB,CAAC;IAC/E,IAAImE,uBAAuB,GAAGV,iBAAiB;IAC/C,IAAIS,OAAO,CAACE,aAAa,EAAE;MACzB,MAAM;QAAEvD;MAAkB,CAAC,GAAG,MAAM,IAAI,CAACC,mCAAmC,CAAC2C,iBAAiB,CAAC;MAC/FU,uBAAuB,GAAGtD,iBAAiB;IAC7C;IACA,MAAMwD,QAAQ,GAAGF,uBAAuB,CAAC1H,GAAG,CAAE6H,eAAe,IAAK;MAChE,MAAMC,WAAW,GAAG,IAAI,CAAC1K,kBAAkB,CAAC2K,cAAc,CAACF,eAAe,CAAC;MAC3E,MAAMG,OAAO,GAAGH,eAAe,CAAC7I,EAAE,CAACgJ,OAAO,IAAI,GAAG;MACjD,OAAO;QAAEF,WAAW;QAAEE;MAAQ,CAAC;IACjC,CAAC,CAAC;IACF,OAAOJ,QAAQ;EACjB;EAEQjF,iCAAiC,CAACsF,UAA8B,EAA0B;IAChG,MAAM9G,qBAAqB,GAAG8G,UAAU,CAACjI,GAAG,CAAEuC,SAAS,IAAK;MAC1D,MAAM2F,SAAS,GAAG3F,SAAS,CAAC4F,UAAU;MACtC,MAAMnD,SAAS,GAAGzC,SAAS,CAACyC,SAAS;MACrC,IAAI,CAACA,SAAS,EAAE,OAAO9E,SAAS;MAChC,MAAMkI,WAAW,GAAG,YAAY;QAC9B,MAAMC,OAAO,GAAG,IAAI,CAACnL,YAAY,CAACoL,UAAU,CAACtD,SAAS,EAAEkD,SAAS,CAAC;QAClE,IAAIG,OAAO,CAACE,GAAG,EAAE,EAAE;UACjB,OAAOF,OAAO,CAACG,IAAI,CAACC,kBAAW,CAAC1F,IAAI,CAAC;QACvC;;QAEA;QACA,MAAM2F,MAAM,GAAGC,OAAO,CAACT,SAAS,CAAC;QACjC;QACA,MAAMnC,WAAW,GAAG,MAAM,IAAI,CAAC7I,YAAY,CAAC0L,cAAc,CAAC5D,SAAS,EAAEkD,SAAS,EAAEO,kBAAW,CAAC1F,IAAI,CAAC;QAClG;QACA,IAAIgD,WAAW,EAAE4C,OAAO,CAAC5C,WAAW,CAAC;QACrC,OAAO2C,MAAM;MACf,CAAC;MACD,OAAO,KAAIG,sCAAoB,EAAC7D,SAAS,EAAEoD,WAAW,CAAC;IACzD,CAAC,CAAC;IACF,OAAO,IAAA9G,iBAAO,EAACH,qBAAqB,CAAC;EACvC;EAEA,MAAcwD,6BAA6B,CAACZ,OAA2B,EAAElG,GAAkB,EAAE;IAC3F,IAAIiL,YAAY,GAAG,KAAK;IACxB,MAAMC,OAAO,GAAGhF,OAAO,CAAC/D,GAAG,CAAC,MAAO0I,MAAM,IAAK;MAC5C,MAAMM,KAAK,GAAG,MAAMC,kBAAE,CAACC,UAAU,CAACR,MAAM,CAACP,UAAU,CAAC;MACpD,IAAI,CAACa,KAAK,EAAE;QACVF,YAAY,GAAG,IAAI;MACrB;IACF,CAAC,CAAC;IACF,MAAMtD,OAAO,CAACC,GAAG,CAACsD,OAAO,CAAC;IAC1B;IACA,IAAID,YAAY,EAAE;MAChB,MAAMK,MAAe,GAAGtL,GAAG,CAACmC,GAAG,CAAEhB,EAAE,IAAKA,EAAE,CAACoK,OAAO,CAAC;MACnD,OAAO,IAAAC,0CAAsB,EAAC,IAAI,CAACrM,SAAS,EAAEmM,MAAM,CAAC;IACvD;IACA,OAAO3D,OAAO,CAAC8D,OAAO,EAAE;EAC1B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACU5E,0BAA0B,CAACF,SAAmB,EAAE5B,WAAoB,EAAkB;IAC5F,MAAM2G,uBAAuB,GAAG,MAAOvE,SAAoB,IAA8B;MACvF,MAAMwE,YAAY,GAAGxE,SAAS,CAAChG,EAAE,CAACoK,OAAO,CAACnJ,QAAQ,EAAE;MACpDuE,SAAS,CAACiF,IAAI,CAACD,YAAY,CAAC;MAC5B,MAAMtB,SAAS,GAAG,IAAI,CAAClL,SAAS,CAAC0M,uBAAuB,CAAC1E,SAAS,CAAC;MAEnE,MAAMe,WAAW,GAAGnD,WAAW,GAC3B,MAAM,IAAI,CAAC1F,YAAY,CAAC0L,cAAc,CAAC5D,SAAS,EAAEkD,SAAS,EAAEtF,WAAW,CAAC,GACzE,IAAI;MAER,MAAM+G,cAAc,GAAG,MAAM,IAAI,CAACzM,YAAY,CAAC0M,iBAAiB,CAAC5E,SAAS,EAAEkD,SAAS,CAAC;MAEtF,IAAI,CAAC7K,MAAM,CAACyE,KAAK,CACd,2CAA0C0H,YAAa,gBAAetB,SAAU,kBAAiBnC,WAAY,EAAC,CAChH;MACD,OAAO;QACLoC,UAAU,EAAED,SAAS;QACrByB,cAAc;QACd5D;MACF,CAAC;IACH,CAAC;IACD,OAAOwD,uBAAuB;EAChC;EAEA,MAAc7F,4BAA4B,CAACsD,iBAA8B,EAAiB;IACxF,MAAM6C,KAAK,GAAG,IAAI,CAACC,4BAA4B,EAAE;IACjD,MAAM,IAAAC,qBAAU,EAACF,KAAK,EAAE,MAAOG,IAAI,IAAK;MACtC,IAAI;QACF,MAAMA,IAAI,CAAChD,iBAAiB,CAAC;MAC/B,CAAC,CAAC,OAAO3G,GAAG,EAAE;QACZ,IAAI,CAAChD,MAAM,CAAC4M,KAAK,CAAC,0CAA0C,EAAE5J,GAAG,CAAC;MACpE;IACF,CAAC,CAAC;EACJ;EAEQyJ,4BAA4B,GAAuB;IACzD,MAAMI,uBAAuB,GAAG,IAAI,CAAC3M,oBAAoB,CAAC4M,MAAM,EAAE;IAClE,OAAOD,uBAAuB;EAChC;EAEA,MAAc3C,6BAA6B,CAAC6C,SAAsB,EAAEzD,IAAa,EAAiB;IAChG,MAAMkD,KAAK,GAAG,IAAI,CAACQ,6BAA6B,EAAE;IAClD,MAAM,IAAAN,qBAAU,EAACF,KAAK,EAAE,MAAOG,IAAI,IAAK;MACtC,IAAI;QACF,MAAMA,IAAI,CAACI,SAAS,EAAEzD,IAAI,CAAC;MAC7B,CAAC,CAAC,OAAOtG,GAAG,EAAE;QACZ,IAAI,CAAChD,MAAM,CAAC4M,KAAK,CAAC,2CAA2C,EAAE5J,GAAG,CAAC;MACrE;IACF,CAAC,CAAC;EACJ;EAEQgK,6BAA6B,GAAwB;IAC3D,MAAMC,wBAAwB,GAAG,IAAI,CAAC9M,qBAAqB,CAAC2M,MAAM,EAAE;IACpE,OAAOG,wBAAwB;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACUhF,0BAA0B,CAChC3B,KAA+B,EAC/B4G,OAAiB,EACjB3H,WAAoB,EACpB5E,IAA+B,GAAG;IAAEF,YAAY,EAAE;EAAM,CAAC,EACzC;IAChB,MAAM0M,wBAAwB,GAAG,MAAOxF,SAAoB,IAA0C;MACpG,MAAMwE,YAAY,GAAGxE,SAAS,CAAChG,EAAE,CAACoK,OAAO,CAACnJ,QAAQ,EAAE;MACpD;MACA,MAAMiI,SAAS,GAAG,IAAI,CAACuC,iCAAiC,CAACzF,SAAS,EAAEuF,OAAO,EAAE5G,KAAK,EAAE3F,IAAI,CAAC;MACzF,IAAI,CAACkK,SAAS,EAAE,OAAOhI,SAAS;MAEhC,MAAM6F,WAAW,GAAGnD,WAAW,GAC3B,MAAM,IAAI,CAAC1F,YAAY,CAAC0L,cAAc,CAAC5D,SAAS,EAAEkD,SAAS,EAAEtF,WAAW,CAAC,GACzE,IAAI;MAER,MAAM+G,cAAc,GAAG,MAAM,IAAI,CAACzM,YAAY,CAAC0M,iBAAiB,CAAC5E,SAAS,EAAEkD,SAAS,CAAC;MAEtF,IAAI,CAAC7K,MAAM,CAACyE,KAAK,CACd,oDAAmD0H,YAAa,gBAAetB,SAAU,kBAAiBnC,WAAY,EAAC,CACzH;MACD,OAAO;QACLoC,UAAU,EAAED,SAAS;QACrByB,cAAc;QACd5D;MACF,CAAC;IACH,CAAC;IACD,OAAOyE,wBAAwB;EACjC;EAEQC,iCAAiC,CACvC5C,eAA0B,EAC1B0C,OAAiB,EACjB5G,KAA+B,EAC/B3F,IAA+B,GAAG;IAAEF,YAAY,EAAE;EAAM,CAAC,EAC9B;IAC3B,MAAM4M,cAAc,GAAG7C,eAAe,CAAC7I,EAAE,CAACoK,OAAO,CAACnJ,QAAQ,EAAE;IAC5D,IAAI,IAAI,CAACvC,wBAAwB,CAAC6K,GAAG,CAACmC,cAAc,CAAC,EAAE;MACrD,MAAMC,YAAY,GAAG,IAAI,CAACjN,wBAAwB,CAAC8C,GAAG,CAACkK,cAAc,CAAC;MACtE,OAAOC,YAAY;IACrB;IACA,IAAIJ,OAAO,CAAC3J,QAAQ,CAAC8J,cAAc,CAAC,EAAE;MACpC,MAAMxC,SAAS,GAAG,IAAI,CAAClL,SAAS,CAAC0M,uBAAuB,CAAC7B,eAAe,CAAC;MACzE,IAAI,CAACnK,wBAAwB,CAACkN,GAAG,CAACF,cAAc,EAAExC,SAAS,CAAC;MAC5D,OAAOA,SAAS;IAClB;IACA,MAAM2C,MAAM,GAAGlH,KAAK,CAACmH,YAAY,CAACJ,cAAc,CAAC,CAAC,CAAC,CAAC;IACpD,MAAMK,UAAU,GAAG,IAAI,CAACN,iCAAiC,CAACI,MAAM,CAAC3G,IAAI,EAAEqG,OAAO,EAAE5G,KAAK,CAAC;IACtF,IAAI,CAACoH,UAAU,EAAE;MACf,IAAI,CAACrN,wBAAwB,CAACkN,GAAG,CAACF,cAAc,EAAE,IAAI,CAAC;MACvD,OAAOxK,SAAS;IAClB;IACA,MAAM4H,WAAW,GAAG,IAAI,CAAC1K,kBAAkB,CAAC2K,cAAc,CAACF,eAAe,CAAC;IAC3E,IAAI;MACF,MAAM8C,YAAY,GAAG,IAAAK,6BAAW,EAACD,UAAU,EAAE,CAACjD,WAAW,CAAC,CAAC;MAC3D,MAAMI,SAAS,GAAG,IAAA+C,mBAAQ,EAACN,YAAY,CAAC;MACxC,IAAI,CAACjN,wBAAwB,CAACkN,GAAG,CAACF,cAAc,EAAExC,SAAS,CAAC;MAC5D,OAAOA,SAAS;IAClB,CAAC,CAAC,OAAO+B,KAAU,EAAE;MACnB,IAAI,CAACvM,wBAAwB,CAACkN,GAAG,CAACF,cAAc,EAAE,IAAI,CAAC;MACvD,IAAI1M,IAAI,CAACF,YAAY,EAAE;QACrB,MAAMmM,KAAK;MACb;MACA,IAAI,CAAC5M,MAAM,CAAC6N,cAAc,CACvB,2BAA0BR,cAAe,SAAQK,UAAW,YAAWd,KAAK,CAACkB,OAAQ,EAAC,CACxF;MACD,OAAOjL,SAAS;IAClB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAc0D,0BAA0B,CACtCJ,UAAuB,EACvBK,QAAyB,EACU;IACnC,MAAMhG,GAAG,GAAG2F,UAAU,CAACxD,GAAG,CAAEgF,SAAS,IAAKA,SAAS,CAAChG,EAAE,CAAC;IACvD,MAAME,oBAAoB,GAAG,IAAI,CAAChC,YAAY,CAACiC,gBAAgB,EAAE;IACjE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA,OAAO,IAAI,CAACnC,SAAS,CAACoO,0BAA0B,CAACvN,GAAG,EAAEqB,oBAAoB,EAAE2E,QAAQ,CAAC;EACvF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMwH,wBAAwB,CAC5BC,UAA6B,EAC7BC,cAA4B,EAC5BzN,YAAY,GAAG,KAAK,EACL;IACf,MAAM0N,cAAc,GAAGF,UAAU,CAACtL,GAAG,CAAC,MAAOyL,cAAc,IAAK;MAC9D;MACA,IAAI,CAACA,cAAc,CAACC,WAAW,EAAE;QAC/B,OAAOD,cAAc,CAACE,QAAQ;MAChC;MAEA,MAAM3M,EAAE,GAAG,MAAM,IAAI,CAAChC,SAAS,CAAC0J,kBAAkB,CAAC+E,cAAc,CAACC,WAAW,CAAC;MAC9E;MACA,OAAO1M,EAAE,CAACiB,QAAQ,EAAE;IACtB,CAAC,CAAC;IACF,MAAMgD,aAAuB,GAAG,MAAMuC,OAAO,CAACC,GAAG,CAAC+F,cAAc,CAAC;IACjE,MAAMI,iBAAiB,GAAG,IAAI,CAACtO,OAAO,CAAC2F,aAAa;IACpD,MAAM4I,gBAAgB,GAAGD,iBAAiB,CAAC7M,MAAM,CAAE+M,KAAK,IAAK;MAAA;MAC3D,gCAAO,IAAI,CAACxO,OAAO,CAACgO,UAAU,CAAC9K,GAAG,CAACsL,KAAK,CAAC,0DAAlC,sBAAoCC,MAAM;IACnD,CAAC,CAAC;IACF,MAAMC,gBAAgB,GAAG,IAAA3M,oBAAU,EAAC4D,aAAa,EAAE4I,gBAAgB,CAAC;IACpE,IAAI,CAACG,gBAAgB,CAACtN,MAAM,EAAE;IAC9B,MAAM,IAAI,CAACd,WAAW,CAACoO,gBAAgB,EAAElO,YAAY,EAAEyN,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEtL,QAAQ,EAAE,EAAE;MACjF/B,sBAAsB,EAAE;IAC1B,CAAC,CAAC;EACJ;EAEA,MAAc2F,QAAQ,CAAC7E,EAAe,EAAE;IACtC,MAAMgG,SAAS,GAAG,MAAM,IAAI,CAAChI,SAAS,CAACwD,GAAG,CAACxB,EAAE,CAAC;IAC9C,MAAMiN,gBAAgB,GAAG,IAAI,CAAC9O,IAAI,CAAC8O,gBAAgB,CAACjH,SAAS,CAAC;IAC9D,MAAMkH,aAAa,GAAG,IAAI,CAAC/O,IAAI,CAAC+O,aAAa,CAAClH,SAAS,CAAC;IACxD,MAAMvD,aAAa,GAAGwK,gBAAgB,IAAIC,aAAa;IACvD,OAAOzK,aAAa;EACtB;;EAEA;AACF;AACA;EACE,MAAcgC,mBAAmB,CAACnE,YAA2B,EAAwB;IACnF,IAAI;MACF,OAAO,MAAM,IAAI,CAACtC,SAAS,CAACmP,gBAAgB,CAAC7M,YAAY,CAAC;IAC5D,CAAC,CAAC,OAAOe,GAAQ,EAAE;MACjB,IAAIA,GAAG,YAAYC,+BAAiB,EAAE;QAAA;QACpC,MAAMC,MAAM,GAAG,IAAI,CAACjD,OAAO,CAACkD,GAAG,CAAa,wBAAwB,CAAC;QACrE,MAAMC,SAAS,GAAG7B,IAAI,CAACC,SAAS,CAAC,2BAAA0B,MAAM,CAACG,eAAe,2DAAtB,uBAAwBC,GAAG,KAAI,CAAC,CAAC,CAAC;QACnE,IAAIF,SAAS,CAACG,QAAQ,CAACP,GAAG,CAACrB,EAAE,CAAC,EAAE;UAC9B,MAAM,KAAI6B,oBAAQ,EAAE,uBAAsBR,GAAG,CAACrB,EAAG;AAC3D,oFAAoF,CAAC;QAC7E;MACF;MAEA,MAAMqB,GAAG;IACX;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAcgE,mCAAmC,CAC/Cb,UAAuB,EACmD;IAC1E,MAAMW,cAA2B,GAAG,EAAE;IACtC,MAAMC,iBAA8B,GAAG,EAAE;IACzC,MAAMoB,OAAO,CAACC,GAAG,CACfjC,UAAU,CAACxD,GAAG,CAAC,MAAOgF,SAAS,IAAK;MAClC,MAAMoH,gBAAgB,GAAG,MAAM,IAAI,CAACpP,SAAS,CAAC4J,KAAK,CAAC5B,SAAS,CAAChG,EAAE,CAAC;MACjEoN,gBAAgB,GAAGjI,cAAc,CAACsF,IAAI,CAACzE,SAAS,CAAC,GAAGZ,iBAAiB,CAACqF,IAAI,CAACzE,SAAS,CAAC;IACvF,CAAC,CAAC,CACH;IACD,OAAO;MAAEb,cAAc;MAAEC;IAAkB,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAcjC,mCAAmC,CAC/C8F,UAA8B,EACwD;IACtF,MAAMoE,aAAiC,GAAG,EAAE;IAC5C,MAAMnK,gBAAoC,GAAG,EAAE;IAC/C,MAAMsD,OAAO,CAACC,GAAG,CACfwC,UAAU,CAACjI,GAAG,CAAC,MAAOuC,SAAS,IAAK;MAAA;MAClC,MAAMvD,EAAE,2BAAGuD,SAAS,CAACyC,SAAS,yDAAnB,qBAAqBhG,EAAE;MAClC,MAAMoN,gBAAgB,GAAGpN,EAAE,GAAG,MAAM,IAAI,CAAChC,SAAS,CAAC4J,KAAK,CAAC5H,EAAE,CAAC,GAAG,IAAI;MACnEoN,gBAAgB,GAAGC,aAAa,CAAC5C,IAAI,CAAClH,SAAS,CAAC,GAAGL,gBAAgB,CAACuH,IAAI,CAAClH,SAAS,CAAC;IACrF,CAAC,CAAC,CACH;IACD,OAAO;MAAE8J,aAAa;MAAEnK;IAAiB,CAAC;EAC5C;EAEA,MAAcxC,4BAA4B,CACxC7B,GAAkB,EACwD;IAC1E,MAAM2B,YAA2B,GAAG,EAAE;IACtC,MAAMC,eAA8B,GAAG,EAAE;IACzC,MAAM+F,OAAO,CAACC,GAAG,CACf5H,GAAG,CAACmC,GAAG,CAAC,MAAOhB,EAAE,IAAK;MACpB,MAAMoN,gBAAgB,GAAG,MAAM,IAAI,CAACpP,SAAS,CAAC4J,KAAK,CAAC5H,EAAE,CAAC;MACvDoN,gBAAgB,GAAG5M,YAAY,CAACiK,IAAI,CAACzK,EAAE,CAAC,GAAGS,eAAe,CAACgK,IAAI,CAACzK,EAAE,CAAC;IACrE,CAAC,CAAC,CACH;IACD,OAAO;MAAEQ,YAAY;MAAEC;IAAgB,CAAC;EAC1C;AACF;AAAC"}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -101,6 +101,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
101
101
|
private _cachedListIds?;
|
|
102
102
|
private componentLoadedSelfAsAspects;
|
|
103
103
|
private aspectsMerger;
|
|
104
|
+
private componentDefaultScopeFromComponentDirAndNameWithoutConfigFileMemoized;
|
|
104
105
|
constructor(
|
|
105
106
|
/**
|
|
106
107
|
* private pubsub.
|
package/dist/workspace.js
CHANGED
|
@@ -143,13 +143,6 @@ function _utils() {
|
|
|
143
143
|
};
|
|
144
144
|
return data;
|
|
145
145
|
}
|
|
146
|
-
function _componentIdToPackageName() {
|
|
147
|
-
const data = _interopRequireDefault(require("@teambit/legacy/dist/utils/bit/component-id-to-package-name"));
|
|
148
|
-
_componentIdToPackageName = function () {
|
|
149
|
-
return data;
|
|
150
|
-
};
|
|
151
|
-
return data;
|
|
152
|
-
}
|
|
153
146
|
function _path() {
|
|
154
147
|
const data = require("@teambit/legacy/dist/utils/path");
|
|
155
148
|
_path = function () {
|
|
@@ -376,6 +369,7 @@ class Workspace {
|
|
|
376
369
|
(0, _defineProperty2().default)(this, "_cachedListIds", void 0);
|
|
377
370
|
(0, _defineProperty2().default)(this, "componentLoadedSelfAsAspects", void 0);
|
|
378
371
|
(0, _defineProperty2().default)(this, "aspectsMerger", void 0);
|
|
372
|
+
(0, _defineProperty2().default)(this, "componentDefaultScopeFromComponentDirAndNameWithoutConfigFileMemoized", void 0);
|
|
379
373
|
this.componentLoadedSelfAsAspects = (0, _cacheFactory().createInMemoryCache)({
|
|
380
374
|
maxSize: (0, _inMemoryCache().getMaxSizeForComponents)()
|
|
381
375
|
});
|
|
@@ -386,7 +380,7 @@ class Workspace {
|
|
|
386
380
|
this.validateConfig();
|
|
387
381
|
this.bitMap = new (_bitMap().BitMap)(this.consumer.bitMap, this.consumer);
|
|
388
382
|
// memoize this method to improve performance.
|
|
389
|
-
this.
|
|
383
|
+
this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFileMemoized = (0, _memoizee().default)(this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFile.bind(this), {
|
|
390
384
|
primitive: true,
|
|
391
385
|
promise: true,
|
|
392
386
|
maxAge: 60 * 1000 // 1 min
|
|
@@ -723,6 +717,7 @@ class Workspace {
|
|
|
723
717
|
this.componentLoader.clearCache();
|
|
724
718
|
this.scope.clearCache();
|
|
725
719
|
this.componentList = new (_componentsList().default)(this.consumer);
|
|
720
|
+
this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFileMemoized.clear();
|
|
726
721
|
}
|
|
727
722
|
clearComponentCache(id) {
|
|
728
723
|
this.componentLoader.clearComponentCache(id);
|
|
@@ -1054,7 +1049,7 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
|
|
|
1054
1049
|
return options.relative ? packageDir : this.consumer.toAbsolutePath(packageDir);
|
|
1055
1050
|
}
|
|
1056
1051
|
componentPackageName(component) {
|
|
1057
|
-
return
|
|
1052
|
+
return this.dependencyResolver.getPackageName(component);
|
|
1058
1053
|
}
|
|
1059
1054
|
componentDirFromLegacyId(bitId, bitMapOptions, options = {
|
|
1060
1055
|
relative: false
|
|
@@ -1090,7 +1085,7 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
|
|
|
1090
1085
|
if (bitMapEntry && bitMapEntry.defaultScope) {
|
|
1091
1086
|
return bitMapEntry.defaultScope;
|
|
1092
1087
|
}
|
|
1093
|
-
return this.
|
|
1088
|
+
return this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFileMemoized(relativeComponentDir, name);
|
|
1094
1089
|
}
|
|
1095
1090
|
get defaultScope() {
|
|
1096
1091
|
return this.config.defaultScope;
|
|
@@ -1210,6 +1205,7 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
|
|
|
1210
1205
|
mergeIntoExisting: true,
|
|
1211
1206
|
ignoreVersion: true
|
|
1212
1207
|
});
|
|
1208
|
+
this.config.defaultScope = scopeName;
|
|
1213
1209
|
await ((_config$workspaceConf2 = config.workspaceConfig) === null || _config$workspaceConf2 === void 0 ? void 0 : _config$workspaceConf2.write({
|
|
1214
1210
|
dir: _path2().default.dirname(config.workspaceConfig.path)
|
|
1215
1211
|
}));
|
|
@@ -1301,7 +1297,7 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
|
|
|
1301
1297
|
let componentConfigFile;
|
|
1302
1298
|
if (relativeComponentDir) {
|
|
1303
1299
|
const absComponentDir = this.componentDirToAbsolute(relativeComponentDir);
|
|
1304
|
-
const defaultScopeFromVariantsOrWs = await this.
|
|
1300
|
+
const defaultScopeFromVariantsOrWs = await this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFileMemoized(relativeComponentDir, name);
|
|
1305
1301
|
componentConfigFile = await _componentConfigFile().ComponentConfigFile.load(absComponentDir, this.createAspectList.bind(this), defaultScopeFromVariantsOrWs);
|
|
1306
1302
|
}
|
|
1307
1303
|
return componentConfigFile;
|