@teambit/workspace 0.0.802 → 0.0.805
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/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/on-component-events.d.ts +2 -1
- package/dist/on-component-events.js.map +1 -1
- package/dist/workspace-component/workspace-component-loader.d.ts +2 -1
- package/dist/workspace-component/workspace-component-loader.js +39 -16
- package/dist/workspace-component/workspace-component-loader.js.map +1 -1
- package/dist/workspace.d.ts +6 -5
- package/dist/workspace.js +51 -30
- package/dist/workspace.js.map +1 -1
- package/dist/workspace.provider.js +2 -2
- package/dist/workspace.provider.js.map +1 -1
- package/dist/workspace.ui-root.d.ts +2 -2
- package/dist/workspace.ui-root.js +2 -2
- package/dist/workspace.ui-root.js.map +1 -1
- package/package-tar/teambit-workspace-0.0.805.tgz +0 -0
- package/package.json +30 -30
- package/{preview-1659151732866.js → preview-1659456045857.js} +2 -2
- package/workspace-component/workspace-component-loader.ts +37 -19
- package/package-tar/teambit-workspace-0.0.802.tgz +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type { WatchOptions } from './watch/watcher';
|
|
|
7
7
|
export { CheckTypes } from './watch/check-types';
|
|
8
8
|
export * from './events';
|
|
9
9
|
export type { WorkspaceUI } from './workspace.ui.runtime';
|
|
10
|
-
export type { SerializableResults, OnComponentEventResult } from './on-component-events';
|
|
10
|
+
export type { SerializableResults, OnComponentLoad, OnComponentEventResult } from './on-component-events';
|
|
11
11
|
export { ComponentStatus } from './workspace-component';
|
|
12
12
|
export { WorkspaceModelComponent } from './ui/workspace/workspace-model';
|
|
13
13
|
export { WorkspaceContext } from './ui/workspace/workspace-context';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WorkspaceAspect"],"sources":["index.ts"],"sourcesContent":["import { WorkspaceAspect } from './workspace.aspect';\n// eslint-disable-next-line import/prefer-default-export\nexport type { default as Workspace, ExtensionsOrigin } from './workspace';\n// TODO: change to module path once track the utils folder\nexport type { ResolvedComponent } from '@teambit/harmony.modules.resolved-component';\nexport type { AlreadyExistsError as ComponentConfigFileAlreadyExistsError } from './component-config-file';\nexport type { WorkspaceMain } from './workspace.main.runtime';\nexport type { WatchOptions } from './watch/watcher';\nexport { CheckTypes } from './watch/check-types';\nexport * from './events';\nexport type { WorkspaceUI } from './workspace.ui.runtime';\nexport type { SerializableResults, OnComponentEventResult } from './on-component-events';\nexport { ComponentStatus } from './workspace-component';\nexport { WorkspaceModelComponent } from './ui/workspace/workspace-model';\nexport { WorkspaceContext } from './ui/workspace/workspace-context';\nexport type { WorkspaceComponent } from './workspace-component';\n\nexport { WorkspaceAspect };\nexport default WorkspaceAspect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;eAIeA,4B"}
|
|
1
|
+
{"version":3,"names":["WorkspaceAspect"],"sources":["index.ts"],"sourcesContent":["import { WorkspaceAspect } from './workspace.aspect';\n// eslint-disable-next-line import/prefer-default-export\nexport type { default as Workspace, ExtensionsOrigin } from './workspace';\n// TODO: change to module path once track the utils folder\nexport type { ResolvedComponent } from '@teambit/harmony.modules.resolved-component';\nexport type { AlreadyExistsError as ComponentConfigFileAlreadyExistsError } from './component-config-file';\nexport type { WorkspaceMain } from './workspace.main.runtime';\nexport type { WatchOptions } from './watch/watcher';\nexport { CheckTypes } from './watch/check-types';\nexport * from './events';\nexport type { WorkspaceUI } from './workspace.ui.runtime';\nexport type { SerializableResults, OnComponentLoad, OnComponentEventResult } from './on-component-events';\nexport { ComponentStatus } from './workspace-component';\nexport { WorkspaceModelComponent } from './ui/workspace/workspace-model';\nexport { WorkspaceContext } from './ui/workspace/workspace-context';\nexport type { WorkspaceComponent } from './workspace-component';\n\nexport { WorkspaceAspect };\nexport default WorkspaceAspect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;eAIeA,4B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, ComponentID, AspectData } from '@teambit/component';
|
|
2
2
|
import { CompilationInitiator } from '@teambit/compiler';
|
|
3
|
+
import { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';
|
|
3
4
|
export declare type SerializableResults = {
|
|
4
5
|
results: any;
|
|
5
6
|
toString: () => string;
|
|
@@ -11,4 +12,4 @@ export declare type OnComponentEventResult = {
|
|
|
11
12
|
extensionId: string;
|
|
12
13
|
results: SerializableResults;
|
|
13
14
|
};
|
|
14
|
-
export declare type OnComponentLoad = (component: Component) => Promise<AspectData | undefined>;
|
|
15
|
+
export declare type OnComponentLoad = (component: Component, loadOpts?: ComponentLoadOptions) => Promise<AspectData | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["on-component-events.ts"],"sourcesContent":["import { Component, ComponentID, AspectData } from '@teambit/component';\nimport { CompilationInitiator } from '@teambit/compiler';\n\nexport type SerializableResults = { results: any; toString: () => string };\nexport type OnComponentChange = (\n component: Component,\n files: string[],\n initiator?: CompilationInitiator\n) => Promise<SerializableResults>;\nexport type OnComponentAdd = (component: Component, files: string[]) => Promise<SerializableResults>;\nexport type OnComponentRemove = (componentId: ComponentID) => Promise<SerializableResults>;\nexport type OnComponentEventResult = { extensionId: string; results: SerializableResults };\n\nexport type OnComponentLoad = (component: Component) => Promise<AspectData | undefined>;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["on-component-events.ts"],"sourcesContent":["import { Component, ComponentID, AspectData } from '@teambit/component';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\n\nexport type SerializableResults = { results: any; toString: () => string };\nexport type OnComponentChange = (\n component: Component,\n files: string[],\n initiator?: CompilationInitiator\n) => Promise<SerializableResults>;\nexport type OnComponentAdd = (component: Component, files: string[]) => Promise<SerializableResults>;\nexport type OnComponentRemove = (componentId: ComponentID) => Promise<SerializableResults>;\nexport type OnComponentEventResult = { extensionId: string; results: SerializableResults };\n\nexport type OnComponentLoad = (\n component: Component,\n loadOpts?: ComponentLoadOptions\n) => Promise<AspectData | undefined>;\n"],"mappings":""}
|
|
@@ -3,6 +3,7 @@ import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
|
|
|
3
3
|
import { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
4
4
|
import { Logger } from '@teambit/logger';
|
|
5
5
|
import { EnvsMain } from '@teambit/envs';
|
|
6
|
+
import { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';
|
|
6
7
|
import { Workspace } from '../workspace';
|
|
7
8
|
export declare class WorkspaceComponentLoader {
|
|
8
9
|
private workspace;
|
|
@@ -14,7 +15,7 @@ export declare class WorkspaceComponentLoader {
|
|
|
14
15
|
constructor(workspace: Workspace, logger: Logger, dependencyResolver: DependencyResolverMain, envs: EnvsMain);
|
|
15
16
|
getMany(ids: Array<ComponentID>, forCapsule?: boolean): Promise<Component[]>;
|
|
16
17
|
getInvalid(ids: Array<ComponentID>): Promise<InvalidComponent[]>;
|
|
17
|
-
get(componentId: ComponentID, forCapsule?: boolean, legacyComponent?: ConsumerComponent, useCache?: boolean, storeInCache?: boolean): Promise<Component>;
|
|
18
|
+
get(componentId: ComponentID, forCapsule?: boolean, legacyComponent?: ConsumerComponent, useCache?: boolean, storeInCache?: boolean, loadOpts?: ComponentLoadOptions): Promise<Component>;
|
|
18
19
|
getIfExist(componentId: ComponentID): Promise<Component | undefined>;
|
|
19
20
|
private addMultipleEnvsIssueIfNeeded;
|
|
20
21
|
clearCache(): void;
|
|
@@ -4,6 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
|
|
5
5
|
require("core-js/modules/es.array.iterator.js");
|
|
6
6
|
|
|
7
|
+
require("core-js/modules/es.array.sort.js");
|
|
8
|
+
|
|
7
9
|
require("core-js/modules/es.promise.js");
|
|
8
10
|
|
|
9
11
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -252,10 +254,10 @@ class WorkspaceComponentLoader {
|
|
|
252
254
|
return errors;
|
|
253
255
|
}
|
|
254
256
|
|
|
255
|
-
async get(componentId, forCapsule = false, legacyComponent, useCache = true, storeInCache = true) {
|
|
257
|
+
async get(componentId, forCapsule = false, legacyComponent, useCache = true, storeInCache = true, loadOpts) {
|
|
256
258
|
const bitIdWithVersion = (0, _utils().getLatestVersionNumber)(this.workspace.consumer.bitmapIdsFromCurrentLane, componentId._legacy);
|
|
257
259
|
const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;
|
|
258
|
-
const fromCache = this.getFromCache(id, forCapsule);
|
|
260
|
+
const fromCache = this.getFromCache(id, forCapsule, loadOpts);
|
|
259
261
|
|
|
260
262
|
if (fromCache && useCache) {
|
|
261
263
|
return fromCache;
|
|
@@ -264,12 +266,12 @@ class WorkspaceComponentLoader {
|
|
|
264
266
|
const consumerComponent = legacyComponent || (await this.getConsumerComponent(id, forCapsule)); // in case of out-of-sync, the id may changed during the load process
|
|
265
267
|
|
|
266
268
|
const updatedId = consumerComponent ? _component().ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;
|
|
267
|
-
const component = await this.loadOne(updatedId, consumerComponent);
|
|
269
|
+
const component = await this.loadOne(updatedId, consumerComponent, loadOpts);
|
|
268
270
|
|
|
269
271
|
if (storeInCache) {
|
|
270
272
|
this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded
|
|
271
273
|
|
|
272
|
-
this.saveInCache(component, forCapsule);
|
|
274
|
+
this.saveInCache(component, forCapsule, loadOpts);
|
|
273
275
|
}
|
|
274
276
|
|
|
275
277
|
return component;
|
|
@@ -305,11 +307,21 @@ class WorkspaceComponentLoader {
|
|
|
305
307
|
|
|
306
308
|
clearComponentCache(id) {
|
|
307
309
|
const idStr = id.toString();
|
|
308
|
-
|
|
309
|
-
this.
|
|
310
|
+
|
|
311
|
+
for (const cacheKey of this.componentsCache.keys()) {
|
|
312
|
+
if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {
|
|
313
|
+
this.componentsCache.delete(cacheKey);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
for (const cacheKey of this.componentsCacheForCapsule.keys()) {
|
|
318
|
+
if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {
|
|
319
|
+
this.componentsCacheForCapsule.delete(cacheKey);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
310
322
|
}
|
|
311
323
|
|
|
312
|
-
async loadOne(id, consumerComponent) {
|
|
324
|
+
async loadOne(id, consumerComponent, loadOpts) {
|
|
313
325
|
const componentFromScope = await this.workspace.scope.get(id);
|
|
314
326
|
|
|
315
327
|
if (!consumerComponent) {
|
|
@@ -334,17 +346,19 @@ class WorkspaceComponentLoader {
|
|
|
334
346
|
// componentFromScope.state = state;
|
|
335
347
|
// const workspaceComponent = WorkspaceComponent.fromComponent(componentFromScope, this.workspace);
|
|
336
348
|
const workspaceComponent = new (_workspaceComponent().WorkspaceComponent)(componentFromScope.id, componentFromScope.head, state, componentFromScope.tags, this.workspace);
|
|
337
|
-
return this.executeLoadSlot(workspaceComponent);
|
|
349
|
+
return this.executeLoadSlot(workspaceComponent, loadOpts);
|
|
338
350
|
}
|
|
339
351
|
|
|
340
|
-
return this.executeLoadSlot(this.newComponentFromState(id, state));
|
|
352
|
+
return this.executeLoadSlot(this.newComponentFromState(id, state), loadOpts);
|
|
341
353
|
}
|
|
342
354
|
|
|
343
|
-
saveInCache(component, forCapsule) {
|
|
355
|
+
saveInCache(component, forCapsule, loadOpts) {
|
|
356
|
+
const cacheKey = createComponentCacheKey(component.id, loadOpts);
|
|
357
|
+
|
|
344
358
|
if (forCapsule) {
|
|
345
|
-
this.componentsCacheForCapsule.set(
|
|
359
|
+
this.componentsCacheForCapsule.set(cacheKey, component);
|
|
346
360
|
} else {
|
|
347
|
-
this.componentsCache.set(
|
|
361
|
+
this.componentsCache.set(cacheKey, component);
|
|
348
362
|
}
|
|
349
363
|
}
|
|
350
364
|
/**
|
|
@@ -356,8 +370,9 @@ class WorkspaceComponentLoader {
|
|
|
356
370
|
*/
|
|
357
371
|
|
|
358
372
|
|
|
359
|
-
getFromCache(id, forCapsule) {
|
|
360
|
-
const
|
|
373
|
+
getFromCache(id, forCapsule, loadOpts) {
|
|
374
|
+
const cacheKey = createComponentCacheKey(id, loadOpts);
|
|
375
|
+
const fromCache = forCapsule ? this.componentsCacheForCapsule.get(cacheKey) : this.componentsCache.get(cacheKey);
|
|
361
376
|
|
|
362
377
|
if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {
|
|
363
378
|
return fromCache;
|
|
@@ -388,10 +403,10 @@ class WorkspaceComponentLoader {
|
|
|
388
403
|
return err instanceof _exceptions2().ComponentNotFound || err instanceof _exceptions().MissingBitMapComponent || err instanceof _componentNotFoundInPath().default;
|
|
389
404
|
}
|
|
390
405
|
|
|
391
|
-
async executeLoadSlot(component) {
|
|
406
|
+
async executeLoadSlot(component, loadOpts) {
|
|
392
407
|
const entries = this.workspace.onComponentLoadSlot.toArray();
|
|
393
408
|
const promises = entries.map(async ([extension, onLoad]) => {
|
|
394
|
-
const data = await onLoad(component);
|
|
409
|
+
const data = await onLoad(component, loadOpts);
|
|
395
410
|
return this.upsertExtensionData(component, extension, data);
|
|
396
411
|
}); // Special load events which runs from the workspace but should run from the correct aspect
|
|
397
412
|
// TODO: remove this once those extensions dependent on workspace
|
|
@@ -438,4 +453,12 @@ class WorkspaceComponentLoader {
|
|
|
438
453
|
|
|
439
454
|
exports.WorkspaceComponentLoader = WorkspaceComponentLoader;
|
|
440
455
|
|
|
456
|
+
function createComponentCacheKey(id, loadOpts) {
|
|
457
|
+
return `${id.toString()}:${JSON.stringify(sortKeys(loadOpts !== null && loadOpts !== void 0 ? loadOpts : {}))}`;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
function sortKeys(obj) {
|
|
461
|
+
return (0, _lodash().fromPairs)(Object.entries(obj).sort(([k1], [k2]) => k1.localeCompare(k2)));
|
|
462
|
+
}
|
|
463
|
+
|
|
441
464
|
//# sourceMappingURL=workspace-component-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WorkspaceComponentLoader","constructor","workspace","logger","dependencyResolver","envs","componentsCache","createInMemoryCache","maxSize","getMaxSizeForComponents","componentsCacheForCapsule","getMany","ids","forCapsule","idsWithoutEmpty","compact","errors","longProcessLogger","createLongProcessLogger","length","componentsP","mapSeries","id","logProgress","toString","get","catch","err","isComponentNotExistsError","push","undefined","components","forEach","console","warn","filteredComponents","end","getInvalid","consumer","loadComponent","_legacy","ConsumerComponent","isComponentInvalidByErrorType","componentId","legacyComponent","useCache","storeInCache","bitIdWithVersion","getLatestVersionNumber","bitmapIdsFromCurrentLane","version","changeVersion","fromCache","getFromCache","consumerComponent","getConsumerComponent","updatedId","ComponentID","fromLegacy","scope","component","loadOne","addMultipleEnvsIssueIfNeeded","saveInCache","getIfExist","getAllEnvsConfiguredOnComponent","envIds","uniq","map","env","state","issues","getOrCreate","IssuesClasses","MultipleEnvs","data","clearCache","deleteAll","clearComponentCache","idStr","delete","componentFromScope","MissingBitMapComponent","extensions","componentExtensions","extensionsFromConsumerComponent","ExtensionDataList","extensionDataList","mergeConfigs","filterRemovedExtensions","State","Config","mainFile","createAspectList","ComponentFS","fromVinyls","files","dependencies","workspaceComponent","WorkspaceComponent","head","tags","executeLoadSlot","newComponentFromState","set","isEqual","loadComponentForCapsule","debug","name","message","ComponentNotFound","ComponentNotFoundInPath","entries","onComponentLoadSlot","toArray","promises","extension","onLoad","upsertExtensionData","envsData","getEnvSystemDescriptor","policy","mergeVariantPolicies","config","extractDepsFromLegacy","depResolverData","serialize","EnvsAspect","DependencyResolverAspect","Promise","all","updatedAspectList","aspects","TagMap","existingExtension","findExtension","Object","assign","getDataEntry","ExtensionDataEntry"],"sources":["workspace-component-loader.ts"],"sourcesContent":["import { Component, ComponentFS, ComponentID, Config, InvalidComponent, State, TagMap } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport mapSeries from 'p-map-series';\nimport { compact, uniq } from 'lodash';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';\nimport { getLatestVersionNumber } from '@teambit/legacy/dist/utils';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { ComponentNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';\nimport { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';\nimport { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';\nimport ComponentNotFoundInPath from '@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path';\nimport { Workspace } from '../workspace';\nimport { WorkspaceComponent } from './workspace-component';\n\nexport class WorkspaceComponentLoader {\n private componentsCache: InMemoryCache<Component>; // cache loaded components\n private componentsCacheForCapsule: InMemoryCache<Component>; // cache loaded components for capsule, must not use the cache for the workspace\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private dependencyResolver: DependencyResolverMain,\n private envs: EnvsMain\n ) {\n this.componentsCache = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n this.componentsCacheForCapsule = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n }\n\n async getMany(ids: Array<ComponentID>, forCapsule = false): Promise<Component[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: { id: ComponentID; err: Error }[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n const componentsP = mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n return this.get(id, forCapsule).catch((err) => {\n if (this.isComponentNotExistsError(err)) {\n errors.push({\n id,\n err,\n });\n return undefined;\n }\n throw err;\n });\n });\n const components = await componentsP;\n errors.forEach((err) => {\n this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);\n this.logger.warn(`failed loading component ${err.id.toString()}`, err.err);\n });\n // remove errored components\n const filteredComponents: Component[] = compact(components);\n longProcessLogger.end();\n return filteredComponents;\n }\n\n async getInvalid(ids: Array<ComponentID>): Promise<InvalidComponent[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: InvalidComponent[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n await mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n try {\n await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n if (ConsumerComponent.isComponentInvalidByErrorType(err)) {\n errors.push({\n id,\n err,\n });\n return;\n }\n throw err;\n }\n });\n return errors;\n }\n\n async get(\n componentId: ComponentID,\n forCapsule = false,\n legacyComponent?: ConsumerComponent,\n useCache = true,\n storeInCache = true\n ): Promise<Component> {\n const bitIdWithVersion: BitId = getLatestVersionNumber(\n this.workspace.consumer.bitmapIdsFromCurrentLane,\n componentId._legacy\n );\n const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;\n const fromCache = this.getFromCache(id, forCapsule);\n if (fromCache && useCache) {\n return fromCache;\n }\n const consumerComponent = legacyComponent || (await this.getConsumerComponent(id, forCapsule));\n // in case of out-of-sync, the id may changed during the load process\n const updatedId = consumerComponent ? ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;\n const component = await this.loadOne(updatedId, consumerComponent);\n if (storeInCache) {\n this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded\n this.saveInCache(component, forCapsule);\n }\n return component;\n }\n\n async getIfExist(componentId: ComponentID) {\n try {\n return await this.get(componentId);\n } catch (err: any) {\n if (this.isComponentNotExistsError(err)) {\n return undefined;\n }\n throw err;\n }\n }\n\n private addMultipleEnvsIssueIfNeeded(component: Component) {\n const envs = this.envs.getAllEnvsConfiguredOnComponent(component);\n const envIds = uniq(envs.map((env) => env.id));\n if (envIds.length < 2) {\n return;\n }\n component.state.issues.getOrCreate(IssuesClasses.MultipleEnvs).data = envIds;\n }\n\n clearCache() {\n this.componentsCache.deleteAll();\n this.componentsCacheForCapsule.deleteAll();\n }\n clearComponentCache(id: ComponentID) {\n const idStr = id.toString();\n this.componentsCache.delete(idStr);\n this.componentsCacheForCapsule.delete(idStr);\n }\n\n private async loadOne(id: ComponentID, consumerComponent?: ConsumerComponent) {\n const componentFromScope = await this.workspace.scope.get(id);\n if (!consumerComponent) {\n if (!componentFromScope) throw new MissingBitMapComponent(id.toString());\n return componentFromScope;\n }\n const { extensions } = await this.workspace.componentExtensions(id, componentFromScope);\n const extensionsFromConsumerComponent = consumerComponent.extensions || new ExtensionDataList();\n // Merge extensions added by the legacy code in memory (for example data of dependency resolver)\n const extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConsumerComponent,\n extensions,\n ]).filterRemovedExtensions();\n\n // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data\n // TODO: remove this once we remove all direct access from legacy code to extensions data\n consumerComponent.extensions = extensionDataList;\n\n const state = new State(\n new Config(consumerComponent.mainFile, extensionDataList),\n await this.workspace.createAspectList(extensionDataList),\n ComponentFS.fromVinyls(consumerComponent.files),\n consumerComponent.dependencies,\n consumerComponent\n );\n if (componentFromScope) {\n // Removed by @gilad. do not mutate the component from the scope\n // componentFromScope.state = state;\n // const workspaceComponent = WorkspaceComponent.fromComponent(componentFromScope, this.workspace);\n const workspaceComponent = new WorkspaceComponent(\n componentFromScope.id,\n componentFromScope.head,\n state,\n componentFromScope.tags,\n this.workspace\n );\n return this.executeLoadSlot(workspaceComponent);\n }\n return this.executeLoadSlot(this.newComponentFromState(id, state));\n }\n\n private saveInCache(component: Component, forCapsule: boolean): void {\n if (forCapsule) {\n this.componentsCacheForCapsule.set(component.id.toString(), component);\n } else {\n this.componentsCache.set(component.id.toString(), component);\n }\n }\n\n /**\n * make sure that not only the id-str match, but also the legacy-id.\n * this is needed because the ComponentID.toString() is the same whether or not the legacy-id has\n * scope-name, as it includes the defaultScope if the scope is empty.\n * as a result, when out-of-sync is happening and the id is changed to include scope-name in the\n * legacy-id, the component is the cache has the old id.\n */\n private getFromCache(id: ComponentID, forCapsule: boolean): Component | undefined {\n const fromCache = forCapsule\n ? this.componentsCacheForCapsule.get(id.toString())\n : this.componentsCache.get(id.toString());\n if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {\n return fromCache;\n }\n return undefined;\n }\n\n private async getConsumerComponent(id: ComponentID, forCapsule = false): Promise<ConsumerComponent | undefined> {\n try {\n return forCapsule\n ? // eslint-disable-next-line @typescript-eslint/return-await\n await this.workspace.consumer.loadComponentForCapsule(id._legacy)\n : // eslint-disable-next-line @typescript-eslint/return-await\n await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n // don't return undefined for any error. otherwise, if the component is invalid (e.g. main\n // file is missing) it returns the model component later unexpectedly, or if it's new, it\n // shows MissingBitMapComponent error incorrectly.\n if (this.isComponentNotExistsError(err)) {\n this.logger.debug(\n `failed loading component \"${id.toString()}\" from the workspace due to \"${err.name}\" error\\n${err.message}`\n );\n return undefined;\n }\n throw err;\n }\n }\n\n private isComponentNotExistsError(err: Error): boolean {\n return (\n err instanceof ComponentNotFound ||\n err instanceof MissingBitMapComponent ||\n err instanceof ComponentNotFoundInPath\n );\n }\n\n private async executeLoadSlot(component: Component) {\n const entries = this.workspace.onComponentLoadSlot.toArray();\n const promises = entries.map(async ([extension, onLoad]) => {\n const data = await onLoad(component);\n return this.upsertExtensionData(component, extension, data);\n });\n\n // Special load events which runs from the workspace but should run from the correct aspect\n // TODO: remove this once those extensions dependent on workspace\n const envsData = await this.workspace.getEnvSystemDescriptor(component);\n\n // Move to deps resolver main runtime once we switch ws<> deps resolver direction\n const policy = await this.dependencyResolver.mergeVariantPolicies(component.config.extensions);\n const dependencies = await this.dependencyResolver.extractDepsFromLegacy(component, policy);\n\n const depResolverData = {\n dependencies,\n policy: policy.serialize(),\n };\n\n promises.push(this.upsertExtensionData(component, EnvsAspect.id, envsData));\n promises.push(this.upsertExtensionData(component, DependencyResolverAspect.id, depResolverData));\n\n await Promise.all(promises);\n\n // Update the aspect list to have changes happened during the on load slot (new data added above)\n const updatedAspectList = await this.workspace.createAspectList(component.state.config.extensions);\n component.state.aspects = updatedAspectList;\n return component;\n }\n\n private newComponentFromState(id: ComponentID, state: State): Component {\n return new WorkspaceComponent(id, null, state, new TagMap(), this.workspace);\n }\n\n private async upsertExtensionData(component: Component, extension: string, data: any) {\n const existingExtension = component.state.config.extensions.findExtension(extension);\n if (existingExtension && data) {\n // Only merge top level of extension data\n Object.assign(existingExtension.data, data);\n return;\n }\n component.state.config.extensions.push(await this.getDataEntry(extension, data));\n }\n\n private async getDataEntry(extension: string, data: { [key: string]: any }): Promise<ExtensionDataEntry> {\n // TODO: @gilad we need to refactor the extension data entry api.\n return new ExtensionDataEntry(undefined, undefined, extension, undefined, data);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["WorkspaceComponentLoader","constructor","workspace","logger","dependencyResolver","envs","componentsCache","createInMemoryCache","maxSize","getMaxSizeForComponents","componentsCacheForCapsule","getMany","ids","forCapsule","idsWithoutEmpty","compact","errors","longProcessLogger","createLongProcessLogger","length","componentsP","mapSeries","id","logProgress","toString","get","catch","err","isComponentNotExistsError","push","undefined","components","forEach","console","warn","filteredComponents","end","getInvalid","consumer","loadComponent","_legacy","ConsumerComponent","isComponentInvalidByErrorType","componentId","legacyComponent","useCache","storeInCache","loadOpts","bitIdWithVersion","getLatestVersionNumber","bitmapIdsFromCurrentLane","version","changeVersion","fromCache","getFromCache","consumerComponent","getConsumerComponent","updatedId","ComponentID","fromLegacy","scope","component","loadOne","addMultipleEnvsIssueIfNeeded","saveInCache","getIfExist","getAllEnvsConfiguredOnComponent","envIds","uniq","map","env","state","issues","getOrCreate","IssuesClasses","MultipleEnvs","data","clearCache","deleteAll","clearComponentCache","idStr","cacheKey","keys","startsWith","delete","componentFromScope","MissingBitMapComponent","extensions","componentExtensions","extensionsFromConsumerComponent","ExtensionDataList","extensionDataList","mergeConfigs","filterRemovedExtensions","State","Config","mainFile","createAspectList","ComponentFS","fromVinyls","files","dependencies","workspaceComponent","WorkspaceComponent","head","tags","executeLoadSlot","newComponentFromState","createComponentCacheKey","set","isEqual","loadComponentForCapsule","debug","name","message","ComponentNotFound","ComponentNotFoundInPath","entries","onComponentLoadSlot","toArray","promises","extension","onLoad","upsertExtensionData","envsData","getEnvSystemDescriptor","policy","mergeVariantPolicies","config","extractDepsFromLegacy","depResolverData","serialize","EnvsAspect","DependencyResolverAspect","Promise","all","updatedAspectList","aspects","TagMap","existingExtension","findExtension","Object","assign","getDataEntry","ExtensionDataEntry","JSON","stringify","sortKeys","obj","fromPairs","sort","k1","k2","localeCompare"],"sources":["workspace-component-loader.ts"],"sourcesContent":["import { Component, ComponentFS, ComponentID, Config, InvalidComponent, State, TagMap } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport mapSeries from 'p-map-series';\nimport { compact, fromPairs, uniq } from 'lodash';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';\nimport { getLatestVersionNumber } from '@teambit/legacy/dist/utils';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { ComponentNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';\nimport { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';\nimport { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';\nimport ComponentNotFoundInPath from '@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path';\nimport { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { Workspace } from '../workspace';\nimport { WorkspaceComponent } from './workspace-component';\n\nexport class WorkspaceComponentLoader {\n private componentsCache: InMemoryCache<Component>; // cache loaded components\n private componentsCacheForCapsule: InMemoryCache<Component>; // cache loaded components for capsule, must not use the cache for the workspace\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private dependencyResolver: DependencyResolverMain,\n private envs: EnvsMain\n ) {\n this.componentsCache = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n this.componentsCacheForCapsule = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n }\n\n async getMany(ids: Array<ComponentID>, forCapsule = false): Promise<Component[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: { id: ComponentID; err: Error }[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n const componentsP = mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n return this.get(id, forCapsule).catch((err) => {\n if (this.isComponentNotExistsError(err)) {\n errors.push({\n id,\n err,\n });\n return undefined;\n }\n throw err;\n });\n });\n const components = await componentsP;\n errors.forEach((err) => {\n this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);\n this.logger.warn(`failed loading component ${err.id.toString()}`, err.err);\n });\n // remove errored components\n const filteredComponents: Component[] = compact(components);\n longProcessLogger.end();\n return filteredComponents;\n }\n\n async getInvalid(ids: Array<ComponentID>): Promise<InvalidComponent[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: InvalidComponent[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n await mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n try {\n await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n if (ConsumerComponent.isComponentInvalidByErrorType(err)) {\n errors.push({\n id,\n err,\n });\n return;\n }\n throw err;\n }\n });\n return errors;\n }\n\n async get(\n componentId: ComponentID,\n forCapsule = false,\n legacyComponent?: ConsumerComponent,\n useCache = true,\n storeInCache = true,\n loadOpts?: ComponentLoadOptions\n ): Promise<Component> {\n const bitIdWithVersion: BitId = getLatestVersionNumber(\n this.workspace.consumer.bitmapIdsFromCurrentLane,\n componentId._legacy\n );\n const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;\n const fromCache = this.getFromCache(id, forCapsule, loadOpts);\n if (fromCache && useCache) {\n return fromCache;\n }\n const consumerComponent = legacyComponent || (await this.getConsumerComponent(id, forCapsule));\n // in case of out-of-sync, the id may changed during the load process\n const updatedId = consumerComponent ? ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;\n const component = await this.loadOne(updatedId, consumerComponent, loadOpts);\n if (storeInCache) {\n this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded\n this.saveInCache(component, forCapsule, loadOpts);\n }\n return component;\n }\n\n async getIfExist(componentId: ComponentID) {\n try {\n return await this.get(componentId);\n } catch (err: any) {\n if (this.isComponentNotExistsError(err)) {\n return undefined;\n }\n throw err;\n }\n }\n\n private addMultipleEnvsIssueIfNeeded(component: Component) {\n const envs = this.envs.getAllEnvsConfiguredOnComponent(component);\n const envIds = uniq(envs.map((env) => env.id));\n if (envIds.length < 2) {\n return;\n }\n component.state.issues.getOrCreate(IssuesClasses.MultipleEnvs).data = envIds;\n }\n\n clearCache() {\n this.componentsCache.deleteAll();\n this.componentsCacheForCapsule.deleteAll();\n }\n clearComponentCache(id: ComponentID) {\n const idStr = id.toString();\n for (const cacheKey of this.componentsCache.keys()) {\n if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {\n this.componentsCache.delete(cacheKey);\n }\n }\n for (const cacheKey of this.componentsCacheForCapsule.keys()) {\n if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {\n this.componentsCacheForCapsule.delete(cacheKey);\n }\n }\n }\n\n private async loadOne(id: ComponentID, consumerComponent?: ConsumerComponent, loadOpts?: ComponentLoadOptions) {\n const componentFromScope = await this.workspace.scope.get(id);\n if (!consumerComponent) {\n if (!componentFromScope) throw new MissingBitMapComponent(id.toString());\n return componentFromScope;\n }\n const { extensions } = await this.workspace.componentExtensions(id, componentFromScope);\n const extensionsFromConsumerComponent = consumerComponent.extensions || new ExtensionDataList();\n // Merge extensions added by the legacy code in memory (for example data of dependency resolver)\n const extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConsumerComponent,\n extensions,\n ]).filterRemovedExtensions();\n\n // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data\n // TODO: remove this once we remove all direct access from legacy code to extensions data\n consumerComponent.extensions = extensionDataList;\n\n const state = new State(\n new Config(consumerComponent.mainFile, extensionDataList),\n await this.workspace.createAspectList(extensionDataList),\n ComponentFS.fromVinyls(consumerComponent.files),\n consumerComponent.dependencies,\n consumerComponent\n );\n if (componentFromScope) {\n // Removed by @gilad. do not mutate the component from the scope\n // componentFromScope.state = state;\n // const workspaceComponent = WorkspaceComponent.fromComponent(componentFromScope, this.workspace);\n const workspaceComponent = new WorkspaceComponent(\n componentFromScope.id,\n componentFromScope.head,\n state,\n componentFromScope.tags,\n this.workspace\n );\n return this.executeLoadSlot(workspaceComponent, loadOpts);\n }\n return this.executeLoadSlot(this.newComponentFromState(id, state), loadOpts);\n }\n\n private saveInCache(component: Component, forCapsule: boolean, loadOpts?: ComponentLoadOptions): void {\n const cacheKey = createComponentCacheKey(component.id, loadOpts);\n if (forCapsule) {\n this.componentsCacheForCapsule.set(cacheKey, component);\n } else {\n this.componentsCache.set(cacheKey, component);\n }\n }\n\n /**\n * make sure that not only the id-str match, but also the legacy-id.\n * this is needed because the ComponentID.toString() is the same whether or not the legacy-id has\n * scope-name, as it includes the defaultScope if the scope is empty.\n * as a result, when out-of-sync is happening and the id is changed to include scope-name in the\n * legacy-id, the component is the cache has the old id.\n */\n private getFromCache(id: ComponentID, forCapsule: boolean, loadOpts?: ComponentLoadOptions): Component | undefined {\n const cacheKey = createComponentCacheKey(id, loadOpts);\n const fromCache = forCapsule ? this.componentsCacheForCapsule.get(cacheKey) : this.componentsCache.get(cacheKey);\n if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {\n return fromCache;\n }\n return undefined;\n }\n\n private async getConsumerComponent(id: ComponentID, forCapsule = false): Promise<ConsumerComponent | undefined> {\n try {\n return forCapsule\n ? // eslint-disable-next-line @typescript-eslint/return-await\n await this.workspace.consumer.loadComponentForCapsule(id._legacy)\n : // eslint-disable-next-line @typescript-eslint/return-await\n await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n // don't return undefined for any error. otherwise, if the component is invalid (e.g. main\n // file is missing) it returns the model component later unexpectedly, or if it's new, it\n // shows MissingBitMapComponent error incorrectly.\n if (this.isComponentNotExistsError(err)) {\n this.logger.debug(\n `failed loading component \"${id.toString()}\" from the workspace due to \"${err.name}\" error\\n${err.message}`\n );\n return undefined;\n }\n throw err;\n }\n }\n\n private isComponentNotExistsError(err: Error): boolean {\n return (\n err instanceof ComponentNotFound ||\n err instanceof MissingBitMapComponent ||\n err instanceof ComponentNotFoundInPath\n );\n }\n\n private async executeLoadSlot(component: Component, loadOpts?: ComponentLoadOptions) {\n const entries = this.workspace.onComponentLoadSlot.toArray();\n const promises = entries.map(async ([extension, onLoad]) => {\n const data = await onLoad(component, loadOpts);\n return this.upsertExtensionData(component, extension, data);\n });\n\n // Special load events which runs from the workspace but should run from the correct aspect\n // TODO: remove this once those extensions dependent on workspace\n const envsData = await this.workspace.getEnvSystemDescriptor(component);\n\n // Move to deps resolver main runtime once we switch ws<> deps resolver direction\n const policy = await this.dependencyResolver.mergeVariantPolicies(component.config.extensions);\n const dependencies = await this.dependencyResolver.extractDepsFromLegacy(component, policy);\n\n const depResolverData = {\n dependencies,\n policy: policy.serialize(),\n };\n\n promises.push(this.upsertExtensionData(component, EnvsAspect.id, envsData));\n promises.push(this.upsertExtensionData(component, DependencyResolverAspect.id, depResolverData));\n\n await Promise.all(promises);\n\n // Update the aspect list to have changes happened during the on load slot (new data added above)\n const updatedAspectList = await this.workspace.createAspectList(component.state.config.extensions);\n component.state.aspects = updatedAspectList;\n return component;\n }\n\n private newComponentFromState(id: ComponentID, state: State): Component {\n return new WorkspaceComponent(id, null, state, new TagMap(), this.workspace);\n }\n\n private async upsertExtensionData(component: Component, extension: string, data: any) {\n const existingExtension = component.state.config.extensions.findExtension(extension);\n if (existingExtension && data) {\n // Only merge top level of extension data\n Object.assign(existingExtension.data, data);\n return;\n }\n component.state.config.extensions.push(await this.getDataEntry(extension, data));\n }\n\n private async getDataEntry(extension: string, data: { [key: string]: any }): Promise<ExtensionDataEntry> {\n // TODO: @gilad we need to refactor the extension data entry api.\n return new ExtensionDataEntry(undefined, undefined, extension, undefined, data);\n }\n}\n\nfunction createComponentCacheKey(id: ComponentID, loadOpts?: ComponentLoadOptions): string {\n return `${id.toString()}:${JSON.stringify(sortKeys(loadOpts ?? {}))}`;\n}\n\nfunction sortKeys(obj: Object) {\n return fromPairs(Object.entries(obj).sort(([k1], [k2]) => k1.localeCompare(k2)));\n}\n"],"mappings":"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"}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PubsubMain } from '@teambit/pubsub';
|
|
2
2
|
import { IssuesList } from '@teambit/component-issues';
|
|
3
3
|
import type { AspectLoaderMain, AspectDefinition } from '@teambit/aspect-loader';
|
|
4
|
-
import { ComponentMain, Component, ComponentFactory, ComponentID, ComponentMap, AspectList, AspectData, InvalidComponent } from '@teambit/component';
|
|
4
|
+
import { ComponentMain, Component, ComponentFactory, ComponentID, ComponentMap, AspectList, AspectData, InvalidComponent, ResolveAspectsOptions } from '@teambit/component';
|
|
5
5
|
import { ComponentScopeDirMap } from '@teambit/config';
|
|
6
6
|
import { WorkspaceDependencyLifecycleType, DependencyResolverMain, LinkingOptions, LinkResults } from '@teambit/dependency-resolver';
|
|
7
7
|
import { EnvsMain } from '@teambit/envs';
|
|
@@ -26,6 +26,7 @@ import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
|
|
|
26
26
|
import type { ComponentLog } from '@teambit/legacy/dist/scope/models/model-component';
|
|
27
27
|
import { CompilationInitiator } from '@teambit/compiler';
|
|
28
28
|
import { Lane } from '@teambit/legacy/dist/scope/models';
|
|
29
|
+
import { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';
|
|
29
30
|
import { OnComponentAdd, OnComponentChange, OnComponentEventResult, OnComponentLoad, OnComponentRemove } from './on-component-events';
|
|
30
31
|
import { WorkspaceExtConfig } from './types';
|
|
31
32
|
import { Watcher, WatchOptions } from './watch/watcher';
|
|
@@ -250,7 +251,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
250
251
|
* get a component from workspace
|
|
251
252
|
* @param id component ID
|
|
252
253
|
*/
|
|
253
|
-
get(componentId: ComponentID, forCapsule?: boolean, legacyComponent?: ConsumerComponent, useCache?: boolean, storeInCache?: boolean): Promise<Component>;
|
|
254
|
+
get(componentId: ComponentID, forCapsule?: boolean, legacyComponent?: ConsumerComponent, useCache?: boolean, storeInCache?: boolean, loadOpts?: ComponentLoadOptions): Promise<Component>;
|
|
254
255
|
getEnvSystemDescriptor(component: Component): Promise<AspectData>;
|
|
255
256
|
clearCache(): void;
|
|
256
257
|
clearComponentCache(id: ComponentID): void;
|
|
@@ -294,7 +295,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
294
295
|
getComponentsByUserInput(all?: boolean, pattern?: string, includeDependents?: boolean): Promise<Component[]>;
|
|
295
296
|
getComponentsUsingEnv(env: string, ignoreVersion?: boolean, throwIfNotFound?: boolean): Promise<Component[]>;
|
|
296
297
|
getMany(ids: Array<ComponentID>, forCapsule?: boolean): Promise<Component[]>;
|
|
297
|
-
getManyByLegacy(components: ConsumerComponent[]): Promise<Component[]>;
|
|
298
|
+
getManyByLegacy(components: ConsumerComponent[], loadOpts?: ComponentLoadOptions): Promise<Component[]>;
|
|
298
299
|
/**
|
|
299
300
|
* don't throw an error if the component was not found, simply return undefined.
|
|
300
301
|
*/
|
|
@@ -418,7 +419,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
418
419
|
* type. the nodes content is the Component object.
|
|
419
420
|
*/
|
|
420
421
|
buildOneGraphForComponents(ids: BitId[], ignoreIds?: BitIds, shouldIgnoreFunc?: ShouldIgnoreFunc): Promise<LegacyGraph>;
|
|
421
|
-
resolveAspects(runtimeName?: string, componentIds?: ComponentID[],
|
|
422
|
+
resolveAspects(runtimeName?: string, componentIds?: ComponentID[], opts?: ResolveAspectsOptions): Promise<AspectDefinition[]>;
|
|
422
423
|
private groupIdsByWorkspaceAndScope;
|
|
423
424
|
private groupComponentsByWorkspaceAndScope;
|
|
424
425
|
/**
|
|
@@ -481,7 +482,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
481
482
|
* it's currently used by watch extension as a quick workaround to load .bitmap and the components
|
|
482
483
|
*/
|
|
483
484
|
_reloadConsumer(): Promise<void>;
|
|
484
|
-
getComponentPackagePath(component:
|
|
485
|
+
getComponentPackagePath(component: Component): string;
|
|
485
486
|
get defaultDirectory(): string;
|
|
486
487
|
get legacyDefaultDirectory(): string;
|
|
487
488
|
/**
|
package/dist/workspace.js
CHANGED
|
@@ -349,16 +349,6 @@ function _path2() {
|
|
|
349
349
|
return data;
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
-
function _component2() {
|
|
353
|
-
const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component"));
|
|
354
|
-
|
|
355
|
-
_component2 = function () {
|
|
356
|
-
return data;
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
return data;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
352
|
function _scopeComponentsImporter() {
|
|
363
353
|
const data = _interopRequireDefault(require("@teambit/legacy/dist/scope/component-ops/scope-components-importer"));
|
|
364
354
|
|
|
@@ -499,7 +489,10 @@ function _workspace() {
|
|
|
499
489
|
return data;
|
|
500
490
|
}
|
|
501
491
|
|
|
502
|
-
|
|
492
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
493
|
+
|
|
494
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
495
|
+
|
|
503
496
|
const AspectSpecificField = '__specific';
|
|
504
497
|
exports.AspectSpecificField = AspectSpecificField;
|
|
505
498
|
const ComponentAdded = 'componentAdded';
|
|
@@ -843,9 +836,9 @@ class Workspace {
|
|
|
843
836
|
*/
|
|
844
837
|
|
|
845
838
|
|
|
846
|
-
async get(componentId, forCapsule = false, legacyComponent, useCache = true, storeInCache = true) {
|
|
839
|
+
async get(componentId, forCapsule = false, legacyComponent, useCache = true, storeInCache = true, loadOpts) {
|
|
847
840
|
this.logger.debug(`get ${componentId.toString()}`);
|
|
848
|
-
const component = await this.componentLoader.get(componentId, forCapsule, legacyComponent, useCache, storeInCache); // When loading a component if it's an env make sure to load it as aspect as well
|
|
841
|
+
const component = await this.componentLoader.get(componentId, forCapsule, legacyComponent, useCache, storeInCache, loadOpts); // When loading a component if it's an env make sure to load it as aspect as well
|
|
849
842
|
// We only want to try load it as aspect if it's the first time we load the component
|
|
850
843
|
|
|
851
844
|
const tryLoadAsAspect = this.componentLoadedSelfAsAspects.get(component.id.toString()) === undefined; // const config = this.harmony.get<ConfigMain>('teambit.harmony/config');
|
|
@@ -1168,10 +1161,10 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
|
|
|
1168
1161
|
return this.componentLoader.getMany(ids, forCapsule);
|
|
1169
1162
|
}
|
|
1170
1163
|
|
|
1171
|
-
getManyByLegacy(components) {
|
|
1164
|
+
getManyByLegacy(components, loadOpts) {
|
|
1172
1165
|
return (0, _pMapSeries().default)(components, async component => {
|
|
1173
1166
|
const id = await this.resolveComponentId(component.id);
|
|
1174
|
-
return this.get(id, undefined, component);
|
|
1167
|
+
return this.get(id, undefined, component, true, true, loadOpts);
|
|
1175
1168
|
});
|
|
1176
1169
|
}
|
|
1177
1170
|
/**
|
|
@@ -1941,7 +1934,14 @@ needed-for: ${neededFor || '<unknown>'}`);
|
|
|
1941
1934
|
return graphFromFsBuilder.buildGraph(ids);
|
|
1942
1935
|
}
|
|
1943
1936
|
|
|
1944
|
-
async resolveAspects(runtimeName, componentIds,
|
|
1937
|
+
async resolveAspects(runtimeName, componentIds, opts) {
|
|
1938
|
+
const defaultOpts = {
|
|
1939
|
+
excludeCore: false,
|
|
1940
|
+
requestedOnly: false
|
|
1941
|
+
};
|
|
1942
|
+
|
|
1943
|
+
const mergedOpts = _objectSpread(_objectSpread({}, defaultOpts), opts);
|
|
1944
|
+
|
|
1945
1945
|
let missingPaths = false;
|
|
1946
1946
|
const stringIds = [];
|
|
1947
1947
|
const idsToResolve = componentIds ? componentIds.map(id => id.toString()) : this.harmony.extensionsIds;
|
|
@@ -1955,7 +1955,7 @@ needed-for: ${neededFor || '<unknown>'}`);
|
|
|
1955
1955
|
const wsComponents = await this.getMany(workspaceIds);
|
|
1956
1956
|
const aspectDefs = await this.aspectLoader.resolveAspects(wsComponents, async component => {
|
|
1957
1957
|
stringIds.push(component.id._legacy.toString());
|
|
1958
|
-
const localPath = this.getComponentPackagePath(component
|
|
1958
|
+
const localPath = this.getComponentPackagePath(component);
|
|
1959
1959
|
const isExist = await _fsExtra().default.pathExists(localPath);
|
|
1960
1960
|
|
|
1961
1961
|
if (!isExist) {
|
|
@@ -1990,14 +1990,14 @@ needed-for: ${neededFor || '<unknown>'}`);
|
|
|
1990
1990
|
|
|
1991
1991
|
const allDefs = aspectDefs.concat(coreAspectDefs).concat(scopeAspectDefs);
|
|
1992
1992
|
const ids = idsToResolve.map(idStr => _component().ComponentID.fromString(idStr).toStringWithoutVersion());
|
|
1993
|
-
const afterExclusion = excludeCore ? allDefs.filter(def => {
|
|
1993
|
+
const afterExclusion = mergedOpts.excludeCore ? allDefs.filter(def => {
|
|
1994
1994
|
const isCore = coreAspectDefs.find(coreId => def.getId === coreId.getId);
|
|
1995
1995
|
|
|
1996
1996
|
const id = _component().ComponentID.fromString(def.getId || '');
|
|
1997
1997
|
|
|
1998
1998
|
const isTarget = ids.includes(id.toStringWithoutVersion());
|
|
1999
1999
|
if (isTarget) return true;
|
|
2000
|
-
return isCore
|
|
2000
|
+
return !isCore;
|
|
2001
2001
|
}) : allDefs;
|
|
2002
2002
|
const uniqDefs = (0, _lodash().uniqBy)(afterExclusion, def => `${def.aspectPath}-${def.runtimePath}`);
|
|
2003
2003
|
let defs = uniqDefs;
|
|
@@ -2006,6 +2006,15 @@ needed-for: ${neededFor || '<unknown>'}`);
|
|
|
2006
2006
|
defs = defs.filter(def => def.runtimePath);
|
|
2007
2007
|
}
|
|
2008
2008
|
|
|
2009
|
+
if (componentIds && componentIds.length && mergedOpts.requestedOnly) {
|
|
2010
|
+
const componentIdsString = componentIds.map(id => id.toString());
|
|
2011
|
+
defs = defs.filter(def => {
|
|
2012
|
+
var _def$component;
|
|
2013
|
+
|
|
2014
|
+
return def.id && componentIdsString.includes(def.id) || def.component && componentIdsString.includes((_def$component = def.component) === null || _def$component === void 0 ? void 0 : _def$component.id.toString());
|
|
2015
|
+
});
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2009
2018
|
return defs;
|
|
2010
2019
|
}
|
|
2011
2020
|
|
|
@@ -2314,6 +2323,18 @@ needed-for: ${neededFor || '<unknown>'}`);
|
|
|
2314
2323
|
|
|
2315
2324
|
this.logger.console(`installing dependencies in workspace using ${_chalk().default.cyan(this.dependencyResolver.getPackageManagerName())}`);
|
|
2316
2325
|
this.logger.debug(`installing dependencies in workspace with options`, options);
|
|
2326
|
+
const hasRootComponents = this.dependencyResolver.hasRootComponents(); // TODO: this make duplicate
|
|
2327
|
+
// this.logger.consoleSuccess();
|
|
2328
|
+
// TODO: add the links results to the output
|
|
2329
|
+
|
|
2330
|
+
await this.link({
|
|
2331
|
+
linkTeambitBit: true,
|
|
2332
|
+
legacyLink: true,
|
|
2333
|
+
linkCoreAspects: false,
|
|
2334
|
+
linkDepsResolvedFromEnv: !hasRootComponents,
|
|
2335
|
+
linkNestedDepsInNM: false
|
|
2336
|
+
});
|
|
2337
|
+
this.consumer.componentLoader.clearComponentsCache();
|
|
2317
2338
|
this.clearCache(); // TODO: pass get install options
|
|
2318
2339
|
|
|
2319
2340
|
const installer = this.dependencyResolver.getInstaller({});
|
|
@@ -2321,23 +2342,23 @@ needed-for: ${neededFor || '<unknown>'}`);
|
|
|
2321
2342
|
const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();
|
|
2322
2343
|
const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();
|
|
2323
2344
|
const pmInstallOptions = {
|
|
2324
|
-
dedupe: options === null || options === void 0 ? void 0 : options.dedupe,
|
|
2345
|
+
dedupe: !hasRootComponents && (options === null || options === void 0 ? void 0 : options.dedupe),
|
|
2325
2346
|
copyPeerToRuntimeOnRoot: (_options$copyPeerToRu3 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnRoot) !== null && _options$copyPeerToRu3 !== void 0 ? _options$copyPeerToRu3 : true,
|
|
2326
2347
|
copyPeerToRuntimeOnComponents: (_options$copyPeerToRu4 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnComponents) !== null && _options$copyPeerToRu4 !== void 0 ? _options$copyPeerToRu4 : false,
|
|
2327
2348
|
dependencyFilterFn: depsFilterFn,
|
|
2328
|
-
overrides: this.dependencyResolver.config.overrides
|
|
2349
|
+
overrides: this.dependencyResolver.config.overrides,
|
|
2350
|
+
packageImportMethod: this.dependencyResolver.config.packageImportMethod,
|
|
2351
|
+
rootComponents: hasRootComponents
|
|
2329
2352
|
};
|
|
2330
2353
|
await installer.install(this.path, mergedRootPolicy, compDirMap, {
|
|
2331
2354
|
installTeambitBit: false
|
|
2332
|
-
}, pmInstallOptions);
|
|
2333
|
-
// this.logger.consoleSuccess();
|
|
2334
|
-
// TODO: add the links results to the output
|
|
2335
|
-
|
|
2355
|
+
}, pmInstallOptions);
|
|
2336
2356
|
await this.link({
|
|
2337
|
-
linkTeambitBit:
|
|
2357
|
+
linkTeambitBit: false,
|
|
2338
2358
|
legacyLink: true,
|
|
2339
|
-
linkCoreAspects:
|
|
2340
|
-
|
|
2359
|
+
linkCoreAspects: this.dependencyResolver.linkCoreAspects(),
|
|
2360
|
+
linkDepsResolvedFromEnv: !hasRootComponents,
|
|
2361
|
+
linkNestedDepsInNM: !this.isLegacy && !hasRootComponents
|
|
2341
2362
|
});
|
|
2342
2363
|
await this.consumer.componentFsCache.deleteAllDependenciesDataCache();
|
|
2343
2364
|
return compDirMap;
|
|
@@ -2483,8 +2504,8 @@ your workspace.jsonc has this component-id set. you might want to remove/change
|
|
|
2483
2504
|
}
|
|
2484
2505
|
|
|
2485
2506
|
getComponentPackagePath(component) {
|
|
2486
|
-
const
|
|
2487
|
-
return _path2().default.join(this.
|
|
2507
|
+
const relativePath = this.dependencyResolver.getRuntimeModulePath(component);
|
|
2508
|
+
return _path2().default.join(this.path, relativePath);
|
|
2488
2509
|
} // TODO: should we return here the dir as it defined (aka components) or with /{name} prefix (as it used in legacy)
|
|
2489
2510
|
|
|
2490
2511
|
|