@teambit/workspace 0.0.632 → 0.0.636

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.
@@ -4,6 +4,7 @@ import { ComponentTreeSlot } from '@teambit/component-tree';
4
4
  export declare class WorkspaceComponentsDrawer implements DrawerType {
5
5
  private treeNodeSlot;
6
6
  constructor(treeNodeSlot: ComponentTreeSlot);
7
+ id: string;
7
8
  name: string;
8
9
  widget: JSX.Element;
9
10
  Context: ({ children }: {
@@ -121,6 +121,7 @@ const WorkspaceTreeContext = /*#__PURE__*/(0, _react().createContext)({
121
121
  class WorkspaceComponentsDrawer {
122
122
  constructor(treeNodeSlot) {
123
123
  this.treeNodeSlot = treeNodeSlot;
124
+ (0, _defineProperty2().default)(this, "id", 'workspace-components');
124
125
  (0, _defineProperty2().default)(this, "name", 'COMPONENTS');
125
126
  (0, _defineProperty2().default)(this, "widget", /*#__PURE__*/_react().default.createElement(Widget, null));
126
127
  (0, _defineProperty2().default)(this, "Context", ({
@@ -1 +1 @@
1
- {"version":3,"sources":["workspace-components.drawer.tsx"],"names":["WorkspaceTreeContext","collapsed","setCollapsed","WorkspaceComponentsDrawer","constructor","treeNodeSlot","children","workspace","WorkspaceContext","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","components","length","mutedItalic","ellipsis","styles","emptyWorkspace","Widget","icon","collapseIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AASA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAEA,MAAMA,oBAAoB,gBAAG,4BAA0E;AACrGC,EAAAA,SAAS,EAAE,IAD0F;AAErGC,EAAAA,YAAY,EAAE,MAAM,CAAE;AAF+E,CAA1E,CAA7B;;AAKO,MAAMC,yBAAN,CAAsD;AAC3DC,EAAAA,WAAW,CAASC,YAAT,EAA0C;AAAA,SAAjCA,YAAiC,GAAjCA,YAAiC;AAAA,kDAE9C,YAF8C;AAAA,iEAI3C,+BAAC,MAAD,OAJ2C;AAAA,qDAM3C,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAkB;AAC1B,YAAM,CAACL,SAAD,EAAYC,YAAZ,IAA4B,uBAAS,IAAT,CAAlC;AACA,0BACE,+BAAC,oBAAD,CAAsB,QAAtB;AAA+B,QAAA,KAAK,EAAE;AAAED,UAAAA,SAAF;AAAaC,UAAAA;AAAb;AAAtC,SAAoEI,QAApE,CADF;AAGD,KAXoD;AAAA,oDAa5C,MAAM;AACb,YAAMC,SAAS,GAAG,yBAAWC,oCAAX,CAAlB;AACA,YAAM;AAAEP,QAAAA;AAAF,UAAgB,yBAAWD,oBAAX,CAAtB;AACA,YAAM;AAAEK,QAAAA;AAAF,UAAmB,IAAzB;AAEA,YAAMI,gBAAgB,GAAG,0BACvB,SAASC,QAAT,CAAkBC,KAAlB,EAAqD;AACnD,cAAML,QAAQ,GAAGK,KAAK,CAACC,IAAN,CAAWN,QAA5B;AAEA,YAAI,CAACA,QAAL,EAAe,oBAAO,+BAAC,gCAAD,+BAAmBK,KAAnB;AAA0B,UAAA,YAAY,EAAEN;AAAxC,WAAP,CAHoC,CAG6B;;AAEhF,YAAIM,KAAK,CAACC,IAAN,CAAWC,OAAX,YAA8BC,+BAAlC,EAAgD,oBAAO,+BAAC,gCAAD,EAAmBH,KAAnB,CAAP;AAEhD,4BAAO,+BAAC,oCAAD,EAAuBA,KAAvB,CAAP;AACD,OATsB,EAUvB,CAACN,YAAD,CAVuB,CAAzB;AAaA,UAAI,CAACE,SAAL,EAAgB,oBAAO,+BAAC,4BAAD,OAAP;;AAChB,UAAIA,SAAS,CAACQ,UAAV,CAAqBC,MAArB,KAAgC,CAApC,EAAuC;AACrC,4BAAO;AAAM,UAAA,SAAS,EAAE,2BAAWC,6BAAX,EAAwBC,2BAAxB,EAAkCC,2CAAOC,cAAzC;AAAjB,gCAAP;AACD;;AAED,0BAAO,+BAAC,gCAAD;AAAe,QAAA,UAAU,EAAEb,SAAS,CAACQ,UAArC;AAAiD,QAAA,WAAW,EAAEd,SAA9D;AAAyE,QAAA,QAAQ,EAAEQ;AAAnF,QAAP;AACD,KArCoD;AAAE;;AADI;;;;AAyC7D,SAASY,MAAT,GAAkB;AAChB,QAAM;AAAEpB,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAA8B,yBAAWF,oBAAX,CAApC;AACA,QAAMsB,IAAI,GAAGrB,SAAS,GAClB,6CADkB,GAElB,+CAFJ;AAGA,sBAAO;AAAK,IAAA,GAAG,EAAEqB,IAAV;AAAgB,IAAA,SAAS,EAAEH,2CAAOI,YAAlC;AAAgD,IAAA,OAAO,EAAE,MAAMrB,YAAY,CAAC,CAACD,SAAF;AAA3E,IAAP;AACD","sourcesContent":["import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport {\n ComponentTree,\n PayloadType,\n ComponentView,\n ScopeTreeNode,\n NamespaceTreeNode,\n ScopePayload,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/design.ui.tree';\nimport React, { useCallback, useContext, useState, createContext } from 'react';\nimport classNames from 'classnames';\nimport { ComponentTreeSlot } from '@teambit/component-tree';\nimport { mutedItalic } from '@teambit/design.ui.styles.muted-italic';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport { WorkspaceContext } from '../workspace/workspace-context';\nimport styles from './workspace-components-drawer.module.scss';\n\nconst WorkspaceTreeContext = createContext<{ collapsed: boolean; setCollapsed: (x: boolean) => void }>({\n collapsed: true,\n setCollapsed: () => {},\n});\n\nexport class WorkspaceComponentsDrawer implements DrawerType {\n constructor(private treeNodeSlot: ComponentTreeSlot) {}\n\n name = 'COMPONENTS';\n\n widget = (<Widget />);\n\n Context = ({ children }) => {\n const [collapsed, setCollapsed] = useState(true);\n return (\n <WorkspaceTreeContext.Provider value={{ collapsed, setCollapsed }}>{children}</WorkspaceTreeContext.Provider>\n );\n };\n\n render = () => {\n const workspace = useContext(WorkspaceContext);\n const { collapsed } = useContext(WorkspaceTreeContext);\n const { treeNodeSlot } = this;\n\n const TreeNodeRenderer = useCallback(\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />; // non collapse\n\n if (props.node.payload instanceof ScopePayload) return <ScopeTreeNode {...props} />;\n\n return <NamespaceTreeNode {...props} />;\n },\n [treeNodeSlot]\n );\n\n if (!workspace) return <FullLoader />;\n if (workspace.components.length === 0) {\n return <span className={classNames(mutedItalic, ellipsis, styles.emptyWorkspace)}>Workspace is empty</span>;\n }\n\n return <ComponentTree components={workspace.components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;\n };\n}\n\nfunction Widget() {\n const { collapsed, setCollapsed } = useContext(WorkspaceTreeContext);\n const icon = collapsed\n ? 'https://static.bit.dev/bit-icons/expand.svg'\n : 'https://static.bit.dev/bit-icons/collapse.svg';\n return <img src={icon} className={styles.collapseIcon} onClick={() => setCollapsed(!collapsed)} />;\n}\n"]}
1
+ {"version":3,"sources":["workspace-components.drawer.tsx"],"names":["WorkspaceTreeContext","collapsed","setCollapsed","WorkspaceComponentsDrawer","constructor","treeNodeSlot","children","workspace","WorkspaceContext","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","components","length","mutedItalic","ellipsis","styles","emptyWorkspace","Widget","icon","collapseIcon"],"mappings":"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","sourcesContent":["import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport {\n ComponentTree,\n PayloadType,\n ComponentView,\n ScopeTreeNode,\n NamespaceTreeNode,\n ScopePayload,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/design.ui.tree';\nimport React, { useCallback, useContext, useState, createContext } from 'react';\nimport classNames from 'classnames';\nimport { ComponentTreeSlot } from '@teambit/component-tree';\nimport { mutedItalic } from '@teambit/design.ui.styles.muted-italic';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport { WorkspaceContext } from '../workspace/workspace-context';\nimport styles from './workspace-components-drawer.module.scss';\n\nconst WorkspaceTreeContext = createContext<{ collapsed: boolean; setCollapsed: (x: boolean) => void }>({\n collapsed: true,\n setCollapsed: () => {},\n});\n\nexport class WorkspaceComponentsDrawer implements DrawerType {\n constructor(private treeNodeSlot: ComponentTreeSlot) {}\n\n id = 'workspace-components';\n name = 'COMPONENTS';\n\n widget = (<Widget />);\n\n Context = ({ children }) => {\n const [collapsed, setCollapsed] = useState(true);\n return (\n <WorkspaceTreeContext.Provider value={{ collapsed, setCollapsed }}>{children}</WorkspaceTreeContext.Provider>\n );\n };\n\n render = () => {\n const workspace = useContext(WorkspaceContext);\n const { collapsed } = useContext(WorkspaceTreeContext);\n const { treeNodeSlot } = this;\n\n const TreeNodeRenderer = useCallback(\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />; // non collapse\n\n if (props.node.payload instanceof ScopePayload) return <ScopeTreeNode {...props} />;\n\n return <NamespaceTreeNode {...props} />;\n },\n [treeNodeSlot]\n );\n\n if (!workspace) return <FullLoader />;\n if (workspace.components.length === 0) {\n return <span className={classNames(mutedItalic, ellipsis, styles.emptyWorkspace)}>Workspace is empty</span>;\n }\n\n return <ComponentTree components={workspace.components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;\n };\n}\n\nfunction Widget() {\n const { collapsed, setCollapsed } = useContext(WorkspaceTreeContext);\n const icon = collapsed\n ? 'https://static.bit.dev/bit-icons/expand.svg'\n : 'https://static.bit.dev/bit-icons/collapse.svg';\n return <img src={icon} className={styles.collapseIcon} onClick={() => setCollapsed(!collapsed)} />;\n}\n"]}
@@ -320,12 +320,15 @@ class WorkspaceComponentLoader {
320
320
  return componentFromScope;
321
321
  }
322
322
 
323
- let extensionDataList = await this.workspace.componentExtensions(id, componentFromScope);
323
+ const {
324
+ extensions
325
+ } = await this.workspace.componentExtensions(id, componentFromScope);
324
326
  const extensionsFromConsumerComponent = consumerComponent.extensions || new (_extensionData().ExtensionDataList)(); // Merge extensions added by the legacy code in memory (for example data of dependency resolver)
325
327
 
326
- extensionDataList = _extensionData().ExtensionDataList.mergeConfigs([extensionsFromConsumerComponent, extensionDataList]).filterRemovedExtensions(); // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data
328
+ const extensionDataList = _extensionData().ExtensionDataList.mergeConfigs([extensionsFromConsumerComponent, extensions]).filterRemovedExtensions(); // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data
327
329
  // TODO: remove this once we remove all direct access from legacy code to extensions data
328
330
 
331
+
329
332
  consumerComponent.extensions = extensionDataList;
330
333
  const state = new (_component().State)(new (_component().Config)(consumerComponent.mainFile, extensionDataList), await this.workspace.createAspectList(extensionDataList), _component().ComponentFS.fromVinyls(consumerComponent.files), consumerComponent.dependencies, consumerComponent);
331
334
 
@@ -1 +1 @@
1
- {"version":3,"sources":["workspace-component-loader.ts"],"names":["WorkspaceComponentLoader","constructor","workspace","logger","dependencyResolver","envs","componentsCache","maxSize","componentsCacheForCapsule","getMany","ids","forCapsule","idsWithoutEmpty","errors","longProcessLogger","createLongProcessLogger","length","componentsP","id","logProgress","toString","get","catch","err","isComponentNotExistsError","push","undefined","components","forEach","consumer","isLegacy","console","warn","filteredComponents","end","getInvalid","loadComponent","_legacy","ConsumerComponent","isComponentInvalidByErrorType","componentId","legacyComponent","useCache","storeInCache","bitIdWithVersion","bitmapIdsFromCurrentLane","version","changeVersion","fromCache","getFromCache","consumerComponent","getConsumerComponent","updatedId","ComponentID","fromLegacy","scope","component","loadOne","addMultipleEnvsIssueIfNeeded","saveInCache","getIfExist","getAllEnvsConfiguredOnComponent","envIds","map","env","state","issues","getOrCreate","IssuesClasses","MultipleEnvs","data","clearCache","deleteAll","clearComponentCache","idStr","delete","componentFromScope","MissingBitMapComponent","extensionDataList","componentExtensions","extensionsFromConsumerComponent","extensions","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"],"mappings":"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","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 if (!this.workspace.consumer.isLegacy) {\n this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);\n }\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\n let extensionDataList = 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 extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConsumerComponent,\n extensionDataList,\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) {\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"]}
1
+ {"version":3,"sources":["workspace-component-loader.ts"],"names":["WorkspaceComponentLoader","constructor","workspace","logger","dependencyResolver","envs","componentsCache","maxSize","componentsCacheForCapsule","getMany","ids","forCapsule","idsWithoutEmpty","errors","longProcessLogger","createLongProcessLogger","length","componentsP","id","logProgress","toString","get","catch","err","isComponentNotExistsError","push","undefined","components","forEach","consumer","isLegacy","console","warn","filteredComponents","end","getInvalid","loadComponent","_legacy","ConsumerComponent","isComponentInvalidByErrorType","componentId","legacyComponent","useCache","storeInCache","bitIdWithVersion","bitmapIdsFromCurrentLane","version","changeVersion","fromCache","getFromCache","consumerComponent","getConsumerComponent","updatedId","ComponentID","fromLegacy","scope","component","loadOne","addMultipleEnvsIssueIfNeeded","saveInCache","getIfExist","getAllEnvsConfiguredOnComponent","envIds","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"],"mappings":"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","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 if (!this.workspace.consumer.isLegacy) {\n this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);\n }\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) {\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"]}
@@ -67,6 +67,7 @@ export declare type TrackData = {
67
67
  [aspectName: string]: any;
68
68
  };
69
69
  };
70
+ export declare type ExtensionsOrigin = 'BitmapFile' | 'Model' | 'WorkspaceVariants' | 'ComponentJsonFile' | 'WorkspaceDefault' | 'FinalAfterMerge';
70
71
  export declare type TrackResult = {
71
72
  componentName: string;
72
73
  files: string[];
@@ -362,7 +363,14 @@ export declare class Workspace implements ComponentFactory {
362
363
  * defaults extensions from workspace config
363
364
  * extensions from the model.
364
365
  */
365
- componentExtensions(componentId: ComponentID, componentFromScope?: Component): Promise<ExtensionDataList>;
366
+ componentExtensions(componentId: ComponentID, componentFromScope?: Component): Promise<{
367
+ extensions: ExtensionDataList;
368
+ beforeMerge: Array<{
369
+ extensions: ExtensionDataList;
370
+ origin: ExtensionsOrigin;
371
+ extraData: any;
372
+ }>;
373
+ }>;
366
374
  private filterEnvsFromExtensionsIfNeeded;
367
375
  triggerOnPreWatch(componentIds: ComponentID[], watchOpts: WatchOptions): Promise<void>;
368
376
  /**
package/dist/workspace.js CHANGED
@@ -1389,7 +1389,11 @@ class Workspace {
1389
1389
  const extensionsToMerge = [];
1390
1390
  let envWasFoundPreviously = false;
1391
1391
 
1392
- const addAndLoadExtensions = async extensions => {
1392
+ const addAndLoadExtensions = async (extensions, origin, extraData) => {
1393
+ if (!extensions.length) {
1394
+ return;
1395
+ }
1396
+
1393
1397
  const extsWithoutRemoved = extensions.filterRemovedExtensions();
1394
1398
  const selfInMergedExtensions = extsWithoutRemoved.findExtension(componentId._legacy.toStringWithoutScopeAndVersion(), true, true);
1395
1399
  const extsWithoutSelf = selfInMergedExtensions !== null && selfInMergedExtensions !== void 0 && selfInMergedExtensions.extensionId ? extsWithoutRemoved.remove(selfInMergedExtensions.extensionId) : extsWithoutRemoved;
@@ -1399,24 +1403,37 @@ class Workspace {
1399
1403
  envIsCurrentlySet
1400
1404
  } = this.filterEnvsFromExtensionsIfNeeded(extsWithoutSelf, envWasFoundPreviously);
1401
1405
  if (envIsCurrentlySet) envWasFoundPreviously = true;
1402
- extensionsToMerge.push(extensionDataListFiltered);
1406
+ extensionsToMerge.push({
1407
+ origin,
1408
+ extensions: extensionDataListFiltered,
1409
+ extraData
1410
+ });
1403
1411
  };
1404
1412
 
1405
1413
  if (bitMapExtensions) {
1406
1414
  const extensionsDataEntries = Object.keys(bitMapExtensions).map(aspectId => new (_extensionData().ExtensionDataEntry)(aspectId, undefined, aspectId, bitMapExtensions[aspectId]));
1407
1415
  const extensionDataList = new (_extensionData().ExtensionDataList)(...extensionsDataEntries);
1408
- await addAndLoadExtensions(extensionDataList);
1416
+ await addAndLoadExtensions(extensionDataList, 'BitmapFile');
1409
1417
  }
1410
1418
 
1411
1419
  if (configFileExtensions) {
1412
- await addAndLoadExtensions(configFileExtensions);
1420
+ await addAndLoadExtensions(configFileExtensions, 'ComponentJsonFile');
1413
1421
  }
1414
1422
 
1415
1423
  let continuePropagating = (_componentConfigFile$ = componentConfigFile === null || componentConfigFile === void 0 ? void 0 : componentConfigFile.propagate) !== null && _componentConfigFile$ !== void 0 ? _componentConfigFile$ : true;
1416
1424
 
1417
1425
  if (variantsExtensions && continuePropagating) {
1418
1426
  // Put it in the start to make sure the config file is stronger
1419
- await addAndLoadExtensions(variantsExtensions);
1427
+ const appliedRules = variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.sortedMatches.map(({
1428
+ pattern,
1429
+ specificity
1430
+ }) => ({
1431
+ pattern,
1432
+ specificity
1433
+ }));
1434
+ await addAndLoadExtensions(variantsExtensions, 'WorkspaceVariants', {
1435
+ appliedRules
1436
+ });
1420
1437
  }
1421
1438
 
1422
1439
  continuePropagating = continuePropagating && ((_variantConfig$propag = variantConfig === null || variantConfig === void 0 ? void 0 : variantConfig.propagate) !== null && _variantConfig$propag !== void 0 ? _variantConfig$propag : true); // Do not apply default extensions on the default extensions (it will create infinite loop when loading them)
@@ -1425,19 +1442,22 @@ class Workspace {
1425
1442
 
1426
1443
  if (wsDefaultExtensions && continuePropagating && !isDefaultExtension) {
1427
1444
  // Put it in the start to make sure the config file is stronger
1428
- await addAndLoadExtensions(wsDefaultExtensions);
1445
+ await addAndLoadExtensions(wsDefaultExtensions, 'WorkspaceDefault');
1429
1446
  } // It's before the scope extensions, since there is no need to resolve extensions from scope they are already resolved
1430
1447
  // await Promise.all(extensionsToMerge.map((extensions) => this.resolveExtensionsList(extensions)));
1431
1448
 
1432
1449
 
1433
1450
  if (mergeFromScope && continuePropagating) {
1434
- await addAndLoadExtensions(scopeExtensions);
1451
+ await addAndLoadExtensions(scopeExtensions, 'Model');
1435
1452
  } // It's important to do this resolution before the merge, otherwise we have issues with extensions
1436
1453
  // coming from scope with local scope name, as opposed to the same extension comes from the workspace with default scope name
1437
1454
 
1438
1455
 
1439
- await Promise.all(extensionsToMerge.map(list => this.resolveExtensionListIds(list)));
1440
- return _extensionData().ExtensionDataList.mergeConfigs(extensionsToMerge);
1456
+ await Promise.all(extensionsToMerge.map(list => this.resolveExtensionListIds(list.extensions)));
1457
+ return {
1458
+ extensions: _extensionData().ExtensionDataList.mergeConfigs(extensionsToMerge.map(ext => ext.extensions)),
1459
+ beforeMerge: extensionsToMerge
1460
+ };
1441
1461
  }
1442
1462
 
1443
1463
  filterEnvsFromExtensionsIfNeeded(extensionDataList, envWasFoundPreviously) {