@teambit/workspace 0.0.801 → 0.0.804

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.
@@ -285,9 +285,9 @@ async function provideWorkspace([pubsub, cli, scope, component, isolator, depend
285
285
 
286
286
  consumer.onCacheClear.push(() => workspace.clearCache());
287
287
 
288
- _componentLoader().default.registerOnComponentLoadSubscriber(async legacyComponent => {
288
+ _componentLoader().default.registerOnComponentLoadSubscriber(async (legacyComponent, opts) => {
289
289
  const id = await workspace.resolveComponentId(legacyComponent.id);
290
- const newComponent = await workspace.get(id, false, legacyComponent);
290
+ const newComponent = await workspace.get(id, false, legacyComponent, true, true, opts);
291
291
  return newComponent.state._consumer;
292
292
  });
293
293
 
@@ -1 +1 @@
1
- {"version":3,"names":["provideWorkspace","pubsub","cli","scope","component","isolator","dependencyResolver","variants","loggerExt","graphql","ui","bundler","aspectLoader","envs","community","config","onComponentLoadSlot","onComponentChangeSlot","onComponentAddSlot","onComponentRemoveSlot","onPreWatchSlot","harmony","bitConfig","get","consumer","getConsumer","cwd","undefined","logger","createLogger","EXT_NAME","workspace","Workspace","getWorkspacePolicyFromPackageJson","packageJson","packageJsonObject","policyFromPackageJson","registerRootPolicy","ManyComponentsWriter","registerExternalInstaller","install","installOpts","dedupe","updateExisting","import","onCacheClear","push","clearCache","LegacyComponentLoader","registerOnComponentLoadSubscriber","legacyComponent","id","resolveComponentId","newComponent","state","_consumer","ConsumerComponent","registerOnComponentConfigLoading","componentId","componentFromScope","extensions","componentExtensions","defaultScope","componentDefaultScope","extensionsWithLegacyIdsP","map","extension","legacyEntry","clone","extensionId","compId","_legacy","newExtensionId","extensionsWithLegacyIds","Promise","all","ExtensionDataList","fromArray","registerDefaultScopeGetter","workspaceSchema","getWorkspaceSchema","registerUiRoot","WorkspaceUIRoot","register","capsuleCmd","CapsuleCmd","commands","CapsuleListCmd","CapsuleCreateCmd","CapsuleDeleteCmd","InstallCmd","UpdateCmd","UninstallCmd","EjectConfCmd","watcher","Watcher","WatchCommand","LinkCommand","getDocsDomain","UseCmd","PatternCommand","registerHost","registerOnStart","importCurrentLaneIfMissing","loadAspects","getNotLoadedConfiguredExtensions","envsCommand","getCommand","EnvsSetCmd","EnvsUnsetCmd","EnvsReplaceCmd","scopeCommand","ScopeSetCmd","path","loadConsumerIfExist"],"sources":["workspace.provider.ts"],"sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { BundlerMain } from '@teambit/bundler';\nimport { CLIMain, CommandList } from '@teambit/cli';\nimport type { ComponentMain, Component } from '@teambit/component';\nimport { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { EnvsMain } from '@teambit/envs';\nimport { GraphqlMain } from '@teambit/graphql';\nimport { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { LoggerMain } from '@teambit/logger';\nimport type { ScopeMain } from '@teambit/scope';\nimport { UiMain } from '@teambit/ui';\nimport type { VariantsMain } from '@teambit/variants';\nimport { Consumer, loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { registerDefaultScopeGetter } from '@teambit/legacy/dist/api/consumer';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport ManyComponentsWriter from '@teambit/legacy/dist/consumer/component-ops/many-components-writer';\nimport LegacyComponentLoader from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { CommunityMain } from '@teambit/community';\nimport { EXT_NAME } from './constants';\nimport EjectConfCmd from './eject-conf.cmd';\nimport InstallCmd from './install.cmd';\nimport UninstallCmd from './uninstall.cmd';\nimport UpdateCmd from './update.cmd';\nimport { OnComponentLoad, OnComponentAdd, OnComponentChange, OnComponentRemove } from './on-component-events';\nimport { WorkspaceExtConfig } from './types';\nimport { WatchCommand } from './watch/watch.cmd';\nimport { LinkCommand } from './link';\nimport { Watcher, WatchOptions } from './watch/watcher';\nimport { Workspace, WorkspaceInstallOptions } from './workspace';\nimport getWorkspaceSchema from './workspace.graphql';\nimport { WorkspaceUIRoot } from './workspace.ui-root';\nimport { CapsuleCmd, CapsuleCreateCmd, CapsuleDeleteCmd, CapsuleListCmd } from './capsule.cmd';\nimport { EnvsSetCmd } from './envs-subcommands/envs-set.cmd';\nimport { EnvsUnsetCmd } from './envs-subcommands/envs-unset.cmd';\nimport { PatternCommand } from './pattern.cmd';\nimport { EnvsReplaceCmd } from './envs-subcommands/envs-replace.cmd';\nimport { ScopeSetCmd } from './scope-subcommands/scope-set.cmd';\nimport { UseCmd } from './use.cmd';\n\nexport type WorkspaceDeps = [\n PubsubMain,\n CLIMain,\n ScopeMain,\n ComponentMain,\n IsolatorMain,\n DependencyResolverMain,\n VariantsMain,\n LoggerMain,\n GraphqlMain,\n UiMain,\n BundlerMain,\n AspectLoaderMain,\n EnvsMain,\n CommunityMain\n];\n\nexport type OnComponentLoadSlot = SlotRegistry<OnComponentLoad>;\n\nexport type OnComponentChangeSlot = SlotRegistry<OnComponentChange>;\n\nexport type OnComponentAddSlot = SlotRegistry<OnComponentAdd>;\n\nexport type OnComponentRemoveSlot = SlotRegistry<OnComponentRemove>;\n\nexport type OnPreWatch = (components: Component[], watchOpts: WatchOptions) => Promise<void>;\nexport type OnPreWatchSlot = SlotRegistry<OnPreWatch>;\n\nexport default async function provideWorkspace(\n [\n pubsub,\n cli,\n scope,\n component,\n isolator,\n dependencyResolver,\n variants,\n loggerExt,\n graphql,\n ui,\n bundler,\n aspectLoader,\n envs,\n community,\n ]: WorkspaceDeps,\n config: WorkspaceExtConfig,\n [onComponentLoadSlot, onComponentChangeSlot, onComponentAddSlot, onComponentRemoveSlot, onPreWatchSlot]: [\n OnComponentLoadSlot,\n OnComponentChangeSlot,\n OnComponentAddSlot,\n OnComponentRemoveSlot,\n OnPreWatchSlot\n ],\n harmony: Harmony\n) {\n const bitConfig: any = harmony.config.get('teambit.harmony/bit');\n const consumer = await getConsumer(bitConfig.cwd);\n if (!consumer) return undefined;\n // TODO: get the 'workspace' name in a better way\n const logger = loggerExt.createLogger(EXT_NAME);\n const workspace = new Workspace(\n pubsub,\n config,\n consumer,\n scope,\n component,\n isolator,\n dependencyResolver,\n variants,\n aspectLoader,\n logger,\n undefined,\n harmony,\n onComponentLoadSlot,\n onComponentChangeSlot,\n envs,\n onComponentAddSlot,\n onComponentRemoveSlot,\n onPreWatchSlot,\n graphql\n );\n\n const getWorkspacePolicyFromPackageJson = () => {\n const packageJson = workspace.consumer.packageJson?.packageJsonObject || {};\n const policyFromPackageJson = dependencyResolver.getWorkspacePolicyFromPackageJson(packageJson);\n return policyFromPackageJson;\n };\n\n dependencyResolver.registerRootPolicy(getWorkspacePolicyFromPackageJson());\n\n ManyComponentsWriter.registerExternalInstaller({\n install: async () => {\n // TODO: think how we should pass this options\n const installOpts: WorkspaceInstallOptions = {\n dedupe: true,\n updateExisting: false,\n import: false,\n };\n return workspace.install(undefined, installOpts);\n },\n });\n\n consumer.onCacheClear.push(() => workspace.clearCache());\n\n LegacyComponentLoader.registerOnComponentLoadSubscriber(async (legacyComponent: ConsumerComponent) => {\n const id = await workspace.resolveComponentId(legacyComponent.id);\n const newComponent = await workspace.get(id, false, legacyComponent);\n return newComponent.state._consumer;\n });\n\n ConsumerComponent.registerOnComponentConfigLoading(EXT_NAME, async (id) => {\n const componentId = await workspace.resolveComponentId(id);\n // We call here directly workspace.scope.get instead of workspace.get because part of the workspace get is loading consumer component\n // which in turn run this event, which will make an infinite loop\n // This component from scope here are only used for merging the extensions with the workspace components\n const componentFromScope = await workspace.scope.get(componentId);\n const { extensions } = await workspace.componentExtensions(componentId, componentFromScope);\n const defaultScope = await workspace.componentDefaultScope(componentId);\n\n const extensionsWithLegacyIdsP = extensions.map(async (extension) => {\n const legacyEntry = extension.clone();\n if (legacyEntry.extensionId) {\n const compId = await workspace.resolveComponentId(legacyEntry.extensionId);\n legacyEntry.extensionId = compId._legacy;\n legacyEntry.newExtensionId = compId;\n }\n\n return legacyEntry;\n });\n const extensionsWithLegacyIds = await Promise.all(extensionsWithLegacyIdsP);\n\n return {\n defaultScope,\n extensions: ExtensionDataList.fromArray(extensionsWithLegacyIds),\n };\n });\n\n /**\n * Add default scope from harmony during export.\n */\n registerDefaultScopeGetter(async (id: BitId) => {\n const componentId = await workspace.resolveComponentId(id);\n const defaultScope = await workspace.componentDefaultScope(componentId);\n return defaultScope;\n });\n\n const workspaceSchema = getWorkspaceSchema(workspace, graphql);\n ui.registerUiRoot(new WorkspaceUIRoot(workspace, bundler));\n graphql.register(workspaceSchema);\n const capsuleCmd = new CapsuleCmd();\n capsuleCmd.commands = [\n new CapsuleListCmd(isolator, workspace),\n new CapsuleCreateCmd(workspace, isolator),\n new CapsuleDeleteCmd(isolator, workspace),\n ];\n const commands: CommandList = [\n new InstallCmd(workspace, logger),\n new UpdateCmd(workspace),\n new UninstallCmd(workspace),\n new EjectConfCmd(workspace),\n capsuleCmd,\n ];\n const watcher = new Watcher(workspace, pubsub);\n if (workspace) {\n commands.push(new WatchCommand(pubsub, logger, watcher));\n commands.push(new LinkCommand(workspace, logger, community.getDocsDomain()));\n commands.push(new UseCmd(workspace));\n }\n commands.push(new PatternCommand(workspace));\n cli.register(...commands);\n component.registerHost(workspace);\n\n cli.registerOnStart(async () => {\n await workspace.importCurrentLaneIfMissing();\n await workspace.loadAspects(\n aspectLoader.getNotLoadedConfiguredExtensions(),\n undefined,\n 'workspace.cli.registerOnStart'\n );\n });\n\n // add sub-commands \"set\" and \"unset\" to envs command.\n const envsCommand = cli.getCommand('envs');\n envsCommand?.commands?.push(new EnvsSetCmd(workspace)); // bit envs set\n envsCommand?.commands?.push(new EnvsUnsetCmd(workspace)); // bit envs unset\n envsCommand?.commands?.push(new EnvsReplaceCmd(workspace)); // bit envs replace\n\n // add sub-command \"set\" to scope command.\n const scopeCommand = cli.getCommand('scope');\n scopeCommand?.commands?.push(new ScopeSetCmd(workspace));\n\n return workspace;\n}\n\n/**\n * don't use loadConsumer() here, which throws ConsumerNotFound because some commands don't require\n * the consumer to be available. such as, `bit init` or `bit list --remote`.\n * most of the commands do need the consumer. the legacy commands that need the consumer throw an\n * error when is missing. in the new/Harmony commands, such as `bis compile`, the workspace object\n * is passed to the provider, so before using it, make sure it exists.\n * keep in mind that you can't verify it in the provider itself, because the provider is running\n * always for all commands before anything else is happening.\n */\nasync function getConsumer(path?: string): Promise<Consumer | undefined> {\n return loadConsumerIfExist(path);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["provideWorkspace","pubsub","cli","scope","component","isolator","dependencyResolver","variants","loggerExt","graphql","ui","bundler","aspectLoader","envs","community","config","onComponentLoadSlot","onComponentChangeSlot","onComponentAddSlot","onComponentRemoveSlot","onPreWatchSlot","harmony","bitConfig","get","consumer","getConsumer","cwd","undefined","logger","createLogger","EXT_NAME","workspace","Workspace","getWorkspacePolicyFromPackageJson","packageJson","packageJsonObject","policyFromPackageJson","registerRootPolicy","ManyComponentsWriter","registerExternalInstaller","install","installOpts","dedupe","updateExisting","import","onCacheClear","push","clearCache","LegacyComponentLoader","registerOnComponentLoadSubscriber","legacyComponent","opts","id","resolveComponentId","newComponent","state","_consumer","ConsumerComponent","registerOnComponentConfigLoading","componentId","componentFromScope","extensions","componentExtensions","defaultScope","componentDefaultScope","extensionsWithLegacyIdsP","map","extension","legacyEntry","clone","extensionId","compId","_legacy","newExtensionId","extensionsWithLegacyIds","Promise","all","ExtensionDataList","fromArray","registerDefaultScopeGetter","workspaceSchema","getWorkspaceSchema","registerUiRoot","WorkspaceUIRoot","register","capsuleCmd","CapsuleCmd","commands","CapsuleListCmd","CapsuleCreateCmd","CapsuleDeleteCmd","InstallCmd","UpdateCmd","UninstallCmd","EjectConfCmd","watcher","Watcher","WatchCommand","LinkCommand","getDocsDomain","UseCmd","PatternCommand","registerHost","registerOnStart","importCurrentLaneIfMissing","loadAspects","getNotLoadedConfiguredExtensions","envsCommand","getCommand","EnvsSetCmd","EnvsUnsetCmd","EnvsReplaceCmd","scopeCommand","ScopeSetCmd","path","loadConsumerIfExist"],"sources":["workspace.provider.ts"],"sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { BundlerMain } from '@teambit/bundler';\nimport { CLIMain, CommandList } from '@teambit/cli';\nimport type { ComponentMain, Component } from '@teambit/component';\nimport { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { EnvsMain } from '@teambit/envs';\nimport { GraphqlMain } from '@teambit/graphql';\nimport { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { LoggerMain } from '@teambit/logger';\nimport type { ScopeMain } from '@teambit/scope';\nimport { UiMain } from '@teambit/ui';\nimport type { VariantsMain } from '@teambit/variants';\nimport { Consumer, loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { registerDefaultScopeGetter } from '@teambit/legacy/dist/api/consumer';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport ManyComponentsWriter from '@teambit/legacy/dist/consumer/component-ops/many-components-writer';\nimport LegacyComponentLoader from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { CommunityMain } from '@teambit/community';\nimport { EXT_NAME } from './constants';\nimport EjectConfCmd from './eject-conf.cmd';\nimport InstallCmd from './install.cmd';\nimport UninstallCmd from './uninstall.cmd';\nimport UpdateCmd from './update.cmd';\nimport { OnComponentLoad, OnComponentAdd, OnComponentChange, OnComponentRemove } from './on-component-events';\nimport { WorkspaceExtConfig } from './types';\nimport { WatchCommand } from './watch/watch.cmd';\nimport { LinkCommand } from './link';\nimport { Watcher, WatchOptions } from './watch/watcher';\nimport { Workspace, WorkspaceInstallOptions } from './workspace';\nimport getWorkspaceSchema from './workspace.graphql';\nimport { WorkspaceUIRoot } from './workspace.ui-root';\nimport { CapsuleCmd, CapsuleCreateCmd, CapsuleDeleteCmd, CapsuleListCmd } from './capsule.cmd';\nimport { EnvsSetCmd } from './envs-subcommands/envs-set.cmd';\nimport { EnvsUnsetCmd } from './envs-subcommands/envs-unset.cmd';\nimport { PatternCommand } from './pattern.cmd';\nimport { EnvsReplaceCmd } from './envs-subcommands/envs-replace.cmd';\nimport { ScopeSetCmd } from './scope-subcommands/scope-set.cmd';\nimport { UseCmd } from './use.cmd';\n\nexport type WorkspaceDeps = [\n PubsubMain,\n CLIMain,\n ScopeMain,\n ComponentMain,\n IsolatorMain,\n DependencyResolverMain,\n VariantsMain,\n LoggerMain,\n GraphqlMain,\n UiMain,\n BundlerMain,\n AspectLoaderMain,\n EnvsMain,\n CommunityMain\n];\n\nexport type OnComponentLoadSlot = SlotRegistry<OnComponentLoad>;\n\nexport type OnComponentChangeSlot = SlotRegistry<OnComponentChange>;\n\nexport type OnComponentAddSlot = SlotRegistry<OnComponentAdd>;\n\nexport type OnComponentRemoveSlot = SlotRegistry<OnComponentRemove>;\n\nexport type OnPreWatch = (components: Component[], watchOpts: WatchOptions) => Promise<void>;\nexport type OnPreWatchSlot = SlotRegistry<OnPreWatch>;\n\nexport default async function provideWorkspace(\n [\n pubsub,\n cli,\n scope,\n component,\n isolator,\n dependencyResolver,\n variants,\n loggerExt,\n graphql,\n ui,\n bundler,\n aspectLoader,\n envs,\n community,\n ]: WorkspaceDeps,\n config: WorkspaceExtConfig,\n [onComponentLoadSlot, onComponentChangeSlot, onComponentAddSlot, onComponentRemoveSlot, onPreWatchSlot]: [\n OnComponentLoadSlot,\n OnComponentChangeSlot,\n OnComponentAddSlot,\n OnComponentRemoveSlot,\n OnPreWatchSlot\n ],\n harmony: Harmony\n) {\n const bitConfig: any = harmony.config.get('teambit.harmony/bit');\n const consumer = await getConsumer(bitConfig.cwd);\n if (!consumer) return undefined;\n // TODO: get the 'workspace' name in a better way\n const logger = loggerExt.createLogger(EXT_NAME);\n const workspace = new Workspace(\n pubsub,\n config,\n consumer,\n scope,\n component,\n isolator,\n dependencyResolver,\n variants,\n aspectLoader,\n logger,\n undefined,\n harmony,\n onComponentLoadSlot,\n onComponentChangeSlot,\n envs,\n onComponentAddSlot,\n onComponentRemoveSlot,\n onPreWatchSlot,\n graphql\n );\n\n const getWorkspacePolicyFromPackageJson = () => {\n const packageJson = workspace.consumer.packageJson?.packageJsonObject || {};\n const policyFromPackageJson = dependencyResolver.getWorkspacePolicyFromPackageJson(packageJson);\n return policyFromPackageJson;\n };\n\n dependencyResolver.registerRootPolicy(getWorkspacePolicyFromPackageJson());\n\n ManyComponentsWriter.registerExternalInstaller({\n install: async () => {\n // TODO: think how we should pass this options\n const installOpts: WorkspaceInstallOptions = {\n dedupe: true,\n updateExisting: false,\n import: false,\n };\n return workspace.install(undefined, installOpts);\n },\n });\n\n consumer.onCacheClear.push(() => workspace.clearCache());\n\n LegacyComponentLoader.registerOnComponentLoadSubscriber(\n async (legacyComponent: ConsumerComponent, opts?: { loadDocs?: boolean }) => {\n const id = await workspace.resolveComponentId(legacyComponent.id);\n const newComponent = await workspace.get(id, false, legacyComponent, true, true, opts);\n return newComponent.state._consumer;\n }\n );\n\n ConsumerComponent.registerOnComponentConfigLoading(EXT_NAME, async (id) => {\n const componentId = await workspace.resolveComponentId(id);\n // We call here directly workspace.scope.get instead of workspace.get because part of the workspace get is loading consumer component\n // which in turn run this event, which will make an infinite loop\n // This component from scope here are only used for merging the extensions with the workspace components\n const componentFromScope = await workspace.scope.get(componentId);\n const { extensions } = await workspace.componentExtensions(componentId, componentFromScope);\n const defaultScope = await workspace.componentDefaultScope(componentId);\n\n const extensionsWithLegacyIdsP = extensions.map(async (extension) => {\n const legacyEntry = extension.clone();\n if (legacyEntry.extensionId) {\n const compId = await workspace.resolveComponentId(legacyEntry.extensionId);\n legacyEntry.extensionId = compId._legacy;\n legacyEntry.newExtensionId = compId;\n }\n\n return legacyEntry;\n });\n const extensionsWithLegacyIds = await Promise.all(extensionsWithLegacyIdsP);\n\n return {\n defaultScope,\n extensions: ExtensionDataList.fromArray(extensionsWithLegacyIds),\n };\n });\n\n /**\n * Add default scope from harmony during export.\n */\n registerDefaultScopeGetter(async (id: BitId) => {\n const componentId = await workspace.resolveComponentId(id);\n const defaultScope = await workspace.componentDefaultScope(componentId);\n return defaultScope;\n });\n\n const workspaceSchema = getWorkspaceSchema(workspace, graphql);\n ui.registerUiRoot(new WorkspaceUIRoot(workspace, bundler));\n graphql.register(workspaceSchema);\n const capsuleCmd = new CapsuleCmd();\n capsuleCmd.commands = [\n new CapsuleListCmd(isolator, workspace),\n new CapsuleCreateCmd(workspace, isolator),\n new CapsuleDeleteCmd(isolator, workspace),\n ];\n const commands: CommandList = [\n new InstallCmd(workspace, logger),\n new UpdateCmd(workspace),\n new UninstallCmd(workspace),\n new EjectConfCmd(workspace),\n capsuleCmd,\n ];\n const watcher = new Watcher(workspace, pubsub);\n if (workspace) {\n commands.push(new WatchCommand(pubsub, logger, watcher));\n commands.push(new LinkCommand(workspace, logger, community.getDocsDomain()));\n commands.push(new UseCmd(workspace));\n }\n commands.push(new PatternCommand(workspace));\n cli.register(...commands);\n component.registerHost(workspace);\n\n cli.registerOnStart(async () => {\n await workspace.importCurrentLaneIfMissing();\n await workspace.loadAspects(\n aspectLoader.getNotLoadedConfiguredExtensions(),\n undefined,\n 'workspace.cli.registerOnStart'\n );\n });\n\n // add sub-commands \"set\" and \"unset\" to envs command.\n const envsCommand = cli.getCommand('envs');\n envsCommand?.commands?.push(new EnvsSetCmd(workspace)); // bit envs set\n envsCommand?.commands?.push(new EnvsUnsetCmd(workspace)); // bit envs unset\n envsCommand?.commands?.push(new EnvsReplaceCmd(workspace)); // bit envs replace\n\n // add sub-command \"set\" to scope command.\n const scopeCommand = cli.getCommand('scope');\n scopeCommand?.commands?.push(new ScopeSetCmd(workspace));\n\n return workspace;\n}\n\n/**\n * don't use loadConsumer() here, which throws ConsumerNotFound because some commands don't require\n * the consumer to be available. such as, `bit init` or `bit list --remote`.\n * most of the commands do need the consumer. the legacy commands that need the consumer throw an\n * error when is missing. in the new/Harmony commands, such as `bis compile`, the workspace object\n * is passed to the provider, so before using it, make sure it exists.\n * keep in mind that you can't verify it in the provider itself, because the provider is running\n * always for all commands before anything else is happening.\n */\nasync function getConsumer(path?: string): Promise<Consumer | undefined> {\n return loadConsumerIfExist(path);\n}\n"],"mappings":";;;;;;;;;;;;;AAcA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AA8Be,eAAeA,gBAAf,CACb,CACEC,MADF,EAEEC,GAFF,EAGEC,KAHF,EAIEC,SAJF,EAKEC,QALF,EAMEC,kBANF,EAOEC,QAPF,EAQEC,SARF,EASEC,OATF,EAUEC,EAVF,EAWEC,OAXF,EAYEC,YAZF,EAaEC,IAbF,EAcEC,SAdF,CADa,EAiBbC,MAjBa,EAkBb,CAACC,mBAAD,EAAsBC,qBAAtB,EAA6CC,kBAA7C,EAAiEC,qBAAjE,EAAwFC,cAAxF,CAlBa,EAyBbC,OAzBa,EA0Bb;EAAA;;EACA,MAAMC,SAAc,GAAGD,OAAO,CAACN,MAAR,CAAeQ,GAAf,CAAmB,qBAAnB,CAAvB;EACA,MAAMC,QAAQ,GAAG,MAAMC,WAAW,CAACH,SAAS,CAACI,GAAX,CAAlC;EACA,IAAI,CAACF,QAAL,EAAe,OAAOG,SAAP,CAHf,CAIA;;EACA,MAAMC,MAAM,GAAGpB,SAAS,CAACqB,YAAV,CAAuBC,qBAAvB,CAAf;EACA,MAAMC,SAAS,GAAG,KAAIC,sBAAJ,EAChB/B,MADgB,EAEhBc,MAFgB,EAGhBS,QAHgB,EAIhBrB,KAJgB,EAKhBC,SALgB,EAMhBC,QANgB,EAOhBC,kBAPgB,EAQhBC,QARgB,EAShBK,YATgB,EAUhBgB,MAVgB,EAWhBD,SAXgB,EAYhBN,OAZgB,EAahBL,mBAbgB,EAchBC,qBAdgB,EAehBJ,IAfgB,EAgBhBK,kBAhBgB,EAiBhBC,qBAjBgB,EAkBhBC,cAlBgB,EAmBhBX,OAnBgB,CAAlB;;EAsBA,MAAMwB,iCAAiC,GAAG,MAAM;IAAA;;IAC9C,MAAMC,WAAW,GAAG,0BAAAH,SAAS,CAACP,QAAV,CAAmBU,WAAnB,gFAAgCC,iBAAhC,KAAqD,EAAzE;IACA,MAAMC,qBAAqB,GAAG9B,kBAAkB,CAAC2B,iCAAnB,CAAqDC,WAArD,CAA9B;IACA,OAAOE,qBAAP;EACD,CAJD;;EAMA9B,kBAAkB,CAAC+B,kBAAnB,CAAsCJ,iCAAiC,EAAvE;;EAEAK,+BAAA,CAAqBC,yBAArB,CAA+C;IAC7CC,OAAO,EAAE,YAAY;MACnB;MACA,MAAMC,WAAoC,GAAG;QAC3CC,MAAM,EAAE,IADmC;QAE3CC,cAAc,EAAE,KAF2B;QAG3CC,MAAM,EAAE;MAHmC,CAA7C;MAKA,OAAOb,SAAS,CAACS,OAAV,CAAkBb,SAAlB,EAA6Bc,WAA7B,CAAP;IACD;EAT4C,CAA/C;;EAYAjB,QAAQ,CAACqB,YAAT,CAAsBC,IAAtB,CAA2B,MAAMf,SAAS,CAACgB,UAAV,EAAjC;;EAEAC,0BAAA,CAAsBC,iCAAtB,CACE,OAAOC,eAAP,EAA2CC,IAA3C,KAA6E;IAC3E,MAAMC,EAAE,GAAG,MAAMrB,SAAS,CAACsB,kBAAV,CAA6BH,eAAe,CAACE,EAA7C,CAAjB;IACA,MAAME,YAAY,GAAG,MAAMvB,SAAS,CAACR,GAAV,CAAc6B,EAAd,EAAkB,KAAlB,EAAyBF,eAAzB,EAA0C,IAA1C,EAAgD,IAAhD,EAAsDC,IAAtD,CAA3B;IACA,OAAOG,YAAY,CAACC,KAAb,CAAmBC,SAA1B;EACD,CALH;;EAQAC,oBAAA,CAAkBC,gCAAlB,CAAmD5B,qBAAnD,EAA6D,MAAOsB,EAAP,IAAc;IACzE,MAAMO,WAAW,GAAG,MAAM5B,SAAS,CAACsB,kBAAV,CAA6BD,EAA7B,CAA1B,CADyE,CAEzE;IACA;IACA;;IACA,MAAMQ,kBAAkB,GAAG,MAAM7B,SAAS,CAAC5B,KAAV,CAAgBoB,GAAhB,CAAoBoC,WAApB,CAAjC;IACA,MAAM;MAAEE;IAAF,IAAiB,MAAM9B,SAAS,CAAC+B,mBAAV,CAA8BH,WAA9B,EAA2CC,kBAA3C,CAA7B;IACA,MAAMG,YAAY,GAAG,MAAMhC,SAAS,CAACiC,qBAAV,CAAgCL,WAAhC,CAA3B;IAEA,MAAMM,wBAAwB,GAAGJ,UAAU,CAACK,GAAX,CAAe,MAAOC,SAAP,IAAqB;MACnE,MAAMC,WAAW,GAAGD,SAAS,CAACE,KAAV,EAApB;;MACA,IAAID,WAAW,CAACE,WAAhB,EAA6B;QAC3B,MAAMC,MAAM,GAAG,MAAMxC,SAAS,CAACsB,kBAAV,CAA6Be,WAAW,CAACE,WAAzC,CAArB;QACAF,WAAW,CAACE,WAAZ,GAA0BC,MAAM,CAACC,OAAjC;QACAJ,WAAW,CAACK,cAAZ,GAA6BF,MAA7B;MACD;;MAED,OAAOH,WAAP;IACD,CATgC,CAAjC;IAUA,MAAMM,uBAAuB,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYX,wBAAZ,CAAtC;IAEA,OAAO;MACLF,YADK;MAELF,UAAU,EAAEgB,kCAAA,CAAkBC,SAAlB,CAA4BJ,uBAA5B;IAFP,CAAP;EAID,CAzBD;EA2BA;AACF;AACA;;;EACE,IAAAK,uCAAA,EAA2B,MAAO3B,EAAP,IAAqB;IAC9C,MAAMO,WAAW,GAAG,MAAM5B,SAAS,CAACsB,kBAAV,CAA6BD,EAA7B,CAA1B;IACA,MAAMW,YAAY,GAAG,MAAMhC,SAAS,CAACiC,qBAAV,CAAgCL,WAAhC,CAA3B;IACA,OAAOI,YAAP;EACD,CAJD;EAMA,MAAMiB,eAAe,GAAG,IAAAC,qBAAA,EAAmBlD,SAAnB,EAA8BtB,OAA9B,CAAxB;EACAC,EAAE,CAACwE,cAAH,CAAkB,KAAIC,6BAAJ,EAAoBpD,SAApB,EAA+BpB,OAA/B,CAAlB;EACAF,OAAO,CAAC2E,QAAR,CAAiBJ,eAAjB;EACA,MAAMK,UAAU,GAAG,KAAIC,qBAAJ,GAAnB;EACAD,UAAU,CAACE,QAAX,GAAsB,CACpB,KAAIC,yBAAJ,EAAmBnF,QAAnB,EAA6B0B,SAA7B,CADoB,EAEpB,KAAI0D,2BAAJ,EAAqB1D,SAArB,EAAgC1B,QAAhC,CAFoB,EAGpB,KAAIqF,2BAAJ,EAAqBrF,QAArB,EAA+B0B,SAA/B,CAHoB,CAAtB;EAKA,MAAMwD,QAAqB,GAAG,CAC5B,KAAII,kBAAJ,EAAe5D,SAAf,EAA0BH,MAA1B,CAD4B,EAE5B,KAAIgE,iBAAJ,EAAc7D,SAAd,CAF4B,EAG5B,KAAI8D,oBAAJ,EAAiB9D,SAAjB,CAH4B,EAI5B,KAAI+D,oBAAJ,EAAiB/D,SAAjB,CAJ4B,EAK5BsD,UAL4B,CAA9B;EAOA,MAAMU,OAAO,GAAG,KAAIC,kBAAJ,EAAYjE,SAAZ,EAAuB9B,MAAvB,CAAhB;;EACA,IAAI8B,SAAJ,EAAe;IACbwD,QAAQ,CAACzC,IAAT,CAAc,KAAImD,qBAAJ,EAAiBhG,MAAjB,EAAyB2B,MAAzB,EAAiCmE,OAAjC,CAAd;IACAR,QAAQ,CAACzC,IAAT,CAAc,KAAIoD,mBAAJ,EAAgBnE,SAAhB,EAA2BH,MAA3B,EAAmCd,SAAS,CAACqF,aAAV,EAAnC,CAAd;IACAZ,QAAQ,CAACzC,IAAT,CAAc,KAAIsD,aAAJ,EAAWrE,SAAX,CAAd;EACD;;EACDwD,QAAQ,CAACzC,IAAT,CAAc,KAAIuD,yBAAJ,EAAmBtE,SAAnB,CAAd;EACA7B,GAAG,CAACkF,QAAJ,CAAa,GAAGG,QAAhB;EACAnF,SAAS,CAACkG,YAAV,CAAuBvE,SAAvB;EAEA7B,GAAG,CAACqG,eAAJ,CAAoB,YAAY;IAC9B,MAAMxE,SAAS,CAACyE,0BAAV,EAAN;IACA,MAAMzE,SAAS,CAAC0E,WAAV,CACJ7F,YAAY,CAAC8F,gCAAb,EADI,EAEJ/E,SAFI,EAGJ,+BAHI,CAAN;EAKD,CAPD,EAxHA,CAiIA;;EACA,MAAMgF,WAAW,GAAGzG,GAAG,CAAC0G,UAAJ,CAAe,MAAf,CAApB;EACAD,WAAW,SAAX,IAAAA,WAAW,WAAX,qCAAAA,WAAW,CAAEpB,QAAb,gFAAuBzC,IAAvB,CAA4B,KAAI+D,qBAAJ,EAAe9E,SAAf,CAA5B,EAnIA,CAmIwD;;EACxD4E,WAAW,SAAX,IAAAA,WAAW,WAAX,sCAAAA,WAAW,CAAEpB,QAAb,kFAAuBzC,IAAvB,CAA4B,KAAIgE,yBAAJ,EAAiB/E,SAAjB,CAA5B,EApIA,CAoI0D;;EAC1D4E,WAAW,SAAX,IAAAA,WAAW,WAAX,sCAAAA,WAAW,CAAEpB,QAAb,kFAAuBzC,IAAvB,CAA4B,KAAIiE,6BAAJ,EAAmBhF,SAAnB,CAA5B,EArIA,CAqI4D;EAE5D;;EACA,MAAMiF,YAAY,GAAG9G,GAAG,CAAC0G,UAAJ,CAAe,OAAf,CAArB;EACAI,YAAY,SAAZ,IAAAA,YAAY,WAAZ,qCAAAA,YAAY,CAAEzB,QAAd,gFAAwBzC,IAAxB,CAA6B,KAAImE,uBAAJ,EAAgBlF,SAAhB,CAA7B;EAEA,OAAOA,SAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeN,WAAf,CAA2ByF,IAA3B,EAAyE;EACvE,OAAO,IAAAC,+BAAA,EAAoBD,IAApB,CAAP;AACD"}
@@ -1,5 +1,5 @@
1
1
  import { BundlerMain } from '@teambit/bundler';
2
- import { Component, ComponentID } from '@teambit/component';
2
+ import { Component, ComponentID, ResolveAspectsOptions } from '@teambit/component';
3
3
  import { UIRoot } from '@teambit/ui';
4
4
  import { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';
5
5
  import { PathOsBased } from '@teambit/legacy/dist/utils/path';
@@ -30,7 +30,7 @@ export declare class WorkspaceUIRoot implements UIRoot {
30
30
  ssr: boolean;
31
31
  launchBrowserOnStart: boolean;
32
32
  };
33
- resolveAspects(runtimeName: string): Promise<import("@teambit/aspect-loader").AspectDefinition[]>;
33
+ resolveAspects(runtimeName: string, componentIds?: ComponentID[], opts?: ResolveAspectsOptions): Promise<import("@teambit/aspect-loader").AspectDefinition[]>;
34
34
  resolvePattern(pattern: string): Promise<Component[]>;
35
35
  getConfig(): {};
36
36
  /**
@@ -50,8 +50,8 @@ class WorkspaceUIRoot {
50
50
  return 'workspace.json';
51
51
  }
52
52
 
53
- async resolveAspects(runtimeName) {
54
- return this.workspace.resolveAspects(runtimeName);
53
+ async resolveAspects(runtimeName, componentIds, opts) {
54
+ return this.workspace.resolveAspects(runtimeName, componentIds, opts);
55
55
  } // TODO: @gilad please implement with variants.
56
56
 
57
57
 
@@ -1 +1 @@
1
- {"version":3,"names":["WorkspaceUIRoot","constructor","workspace","bundler","ssr","launchBrowserOnStart","name","path","configFile","resolveAspects","runtimeName","resolvePattern","pattern","byPattern","getConfig","componentDir","componentId","bitMapOptions","options","relative"],"sources":["workspace.ui-root.ts"],"sourcesContent":["import { BundlerMain } from '@teambit/bundler';\nimport { Component, ComponentID } from '@teambit/component';\nimport { UIRoot } from '@teambit/ui';\nimport { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';\nimport { PathOsBased } from '@teambit/legacy/dist/utils/path';\n\nimport { Workspace } from './workspace';\n\nexport class WorkspaceUIRoot implements UIRoot {\n constructor(\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * bundler extension\n */\n private bundler: BundlerMain\n ) {}\n\n priority = true;\n\n get name() {\n return this.workspace.name;\n }\n\n get path() {\n return this.workspace.path;\n }\n\n get configFile() {\n return 'workspace.json';\n }\n\n buildOptions = {\n ssr: false,\n launchBrowserOnStart: true,\n };\n\n async resolveAspects(runtimeName: string) {\n return this.workspace.resolveAspects(runtimeName);\n }\n\n // TODO: @gilad please implement with variants.\n resolvePattern(pattern: string): Promise<Component[]> {\n return this.workspace.byPattern(pattern);\n }\n\n getConfig() {\n return {};\n }\n\n /**\n * proxy to `workspace.componentDir()`\n */\n componentDir(\n componentId: ComponentID,\n bitMapOptions?: GetBitMapComponentOptions,\n options = { relative: false }\n ): PathOsBased {\n return this.workspace.componentDir(componentId, bitMapOptions, options);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQO,MAAMA,eAAN,CAAwC;EAC7CC,WAAW;EACT;AACJ;AACA;EACYC,SAJC;EAMT;AACJ;AACA;EACYC,OATC,EAUT;IAAA,KANQD,SAMR,GANQA,SAMR;IAAA,KADQC,OACR,GADQA,OACR;IAAA,kDAES,IAFT;IAAA,sDAgBa;MACbC,GAAG,EAAE,KADQ;MAEbC,oBAAoB,EAAE;IAFT,CAhBb;EAAE;;EAII,IAAJC,IAAI,GAAG;IACT,OAAO,KAAKJ,SAAL,CAAeI,IAAtB;EACD;;EAEO,IAAJC,IAAI,GAAG;IACT,OAAO,KAAKL,SAAL,CAAeK,IAAtB;EACD;;EAEa,IAAVC,UAAU,GAAG;IACf,OAAO,gBAAP;EACD;;EAOmB,MAAdC,cAAc,CAACC,WAAD,EAAsB;IACxC,OAAO,KAAKR,SAAL,CAAeO,cAAf,CAA8BC,WAA9B,CAAP;EACD,CAlC4C,CAoC7C;;;EACAC,cAAc,CAACC,OAAD,EAAwC;IACpD,OAAO,KAAKV,SAAL,CAAeW,SAAf,CAAyBD,OAAzB,CAAP;EACD;;EAEDE,SAAS,GAAG;IACV,OAAO,EAAP;EACD;EAED;AACF;AACA;;;EACEC,YAAY,CACVC,WADU,EAEVC,aAFU,EAGVC,OAAO,GAAG;IAAEC,QAAQ,EAAE;EAAZ,CAHA,EAIG;IACb,OAAO,KAAKjB,SAAL,CAAea,YAAf,CAA4BC,WAA5B,EAAyCC,aAAzC,EAAwDC,OAAxD,CAAP;EACD;;AAtD4C"}
1
+ {"version":3,"names":["WorkspaceUIRoot","constructor","workspace","bundler","ssr","launchBrowserOnStart","name","path","configFile","resolveAspects","runtimeName","componentIds","opts","resolvePattern","pattern","byPattern","getConfig","componentDir","componentId","bitMapOptions","options","relative"],"sources":["workspace.ui-root.ts"],"sourcesContent":["import { BundlerMain } from '@teambit/bundler';\nimport { Component, ComponentID, ResolveAspectsOptions } from '@teambit/component';\nimport { UIRoot } from '@teambit/ui';\nimport { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';\nimport { PathOsBased } from '@teambit/legacy/dist/utils/path';\n\nimport { Workspace } from './workspace';\n\nexport class WorkspaceUIRoot implements UIRoot {\n constructor(\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * bundler extension\n */\n private bundler: BundlerMain\n ) {}\n\n priority = true;\n\n get name() {\n return this.workspace.name;\n }\n\n get path() {\n return this.workspace.path;\n }\n\n get configFile() {\n return 'workspace.json';\n }\n\n buildOptions = {\n ssr: false,\n launchBrowserOnStart: true,\n };\n\n async resolveAspects(runtimeName: string, componentIds?: ComponentID[], opts?: ResolveAspectsOptions) {\n return this.workspace.resolveAspects(runtimeName, componentIds, opts);\n }\n\n // TODO: @gilad please implement with variants.\n resolvePattern(pattern: string): Promise<Component[]> {\n return this.workspace.byPattern(pattern);\n }\n\n getConfig() {\n return {};\n }\n\n /**\n * proxy to `workspace.componentDir()`\n */\n componentDir(\n componentId: ComponentID,\n bitMapOptions?: GetBitMapComponentOptions,\n options = { relative: false }\n ): PathOsBased {\n return this.workspace.componentDir(componentId, bitMapOptions, options);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQO,MAAMA,eAAN,CAAwC;EAC7CC,WAAW;EACT;AACJ;AACA;EACYC,SAJC;EAMT;AACJ;AACA;EACYC,OATC,EAUT;IAAA,KANQD,SAMR,GANQA,SAMR;IAAA,KADQC,OACR,GADQA,OACR;IAAA,kDAES,IAFT;IAAA,sDAgBa;MACbC,GAAG,EAAE,KADQ;MAEbC,oBAAoB,EAAE;IAFT,CAhBb;EAAE;;EAII,IAAJC,IAAI,GAAG;IACT,OAAO,KAAKJ,SAAL,CAAeI,IAAtB;EACD;;EAEO,IAAJC,IAAI,GAAG;IACT,OAAO,KAAKL,SAAL,CAAeK,IAAtB;EACD;;EAEa,IAAVC,UAAU,GAAG;IACf,OAAO,gBAAP;EACD;;EAOmB,MAAdC,cAAc,CAACC,WAAD,EAAsBC,YAAtB,EAAoDC,IAApD,EAAkF;IACpG,OAAO,KAAKV,SAAL,CAAeO,cAAf,CAA8BC,WAA9B,EAA2CC,YAA3C,EAAyDC,IAAzD,CAAP;EACD,CAlC4C,CAoC7C;;;EACAC,cAAc,CAACC,OAAD,EAAwC;IACpD,OAAO,KAAKZ,SAAL,CAAea,SAAf,CAAyBD,OAAzB,CAAP;EACD;;EAEDE,SAAS,GAAG;IACV,OAAO,EAAP;EACD;EAED;AACF;AACA;;;EACEC,YAAY,CACVC,WADU,EAEVC,aAFU,EAGVC,OAAO,GAAG;IAAEC,QAAQ,EAAE;EAAZ,CAHA,EAIG;IACb,OAAO,KAAKnB,SAAL,CAAee,YAAf,CAA4BC,WAA5B,EAAyCC,aAAzC,EAAwDC,OAAxD,CAAP;EACD;;AAtD4C"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/workspace",
3
- "version": "0.0.801",
3
+ "version": "0.0.804",
4
4
  "homepage": "https://bit.dev/teambit/workspace/workspace",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.workspace",
8
8
  "name": "workspace",
9
- "version": "0.0.801"
9
+ "version": "0.0.804"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -38,47 +38,47 @@
38
38
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
39
39
  "@teambit/bit-error": "0.0.394",
40
40
  "@teambit/component-id": "0.0.405",
41
- "@teambit/lane-id": "0.0.52",
41
+ "@teambit/lane-id": "0.0.54",
42
42
  "@teambit/legacy-bit-id": "0.0.402",
43
- "@teambit/logger": "0.0.626",
44
- "@teambit/scope": "0.0.801",
45
- "@teambit/cli": "0.0.533",
46
- "@teambit/isolator": "0.0.801",
47
- "@teambit/component-tree": "0.0.589",
43
+ "@teambit/logger": "0.0.628",
44
+ "@teambit/scope": "0.0.804",
45
+ "@teambit/cli": "0.0.535",
46
+ "@teambit/isolator": "0.0.804",
47
+ "@teambit/component-tree": "0.0.592",
48
48
  "@teambit/component.ui.component-status-resolver": "0.0.493",
49
- "@teambit/lanes.ui.lanes": "0.0.102",
49
+ "@teambit/lanes.ui.lanes": "0.0.104",
50
50
  "@teambit/harmony.modules.resolved-component": "0.0.484",
51
- "@teambit/dependency-resolver": "0.0.801",
52
- "@teambit/compiler": "0.0.801",
53
- "@teambit/component": "0.0.801",
54
- "@teambit/graphql": "0.0.801",
55
- "@teambit/aspect-loader": "0.0.801",
56
- "@teambit/bundler": "0.0.801",
57
- "@teambit/community": "0.0.81",
58
- "@teambit/envs": "0.0.801",
59
- "@teambit/pubsub": "0.0.801",
60
- "@teambit/ui": "0.0.801",
61
- "@teambit/variants": "0.0.630",
51
+ "@teambit/dependency-resolver": "0.0.804",
52
+ "@teambit/compiler": "0.0.804",
53
+ "@teambit/component": "0.0.804",
54
+ "@teambit/graphql": "0.0.804",
55
+ "@teambit/aspect-loader": "0.0.804",
56
+ "@teambit/bundler": "0.0.804",
57
+ "@teambit/community": "0.0.83",
58
+ "@teambit/envs": "0.0.804",
59
+ "@teambit/pubsub": "0.0.804",
60
+ "@teambit/ui": "0.0.804",
61
+ "@teambit/variants": "0.0.632",
62
62
  "@teambit/component-issues": "0.0.60",
63
- "@teambit/config": "0.0.546",
63
+ "@teambit/config": "0.0.548",
64
64
  "@teambit/harmony.modules.requireable-component": "0.0.484",
65
- "@teambit/importer": "0.0.230",
65
+ "@teambit/importer": "0.0.233",
66
66
  "@teambit/workspace.modules.match-pattern": "0.0.489",
67
- "@teambit/component.ui.component-drawer": "0.0.82",
67
+ "@teambit/component.ui.component-drawer": "0.0.84",
68
68
  "@teambit/design.ui.tree": "0.0.6",
69
- "@teambit/ui-foundation.ui.side-bar": "0.0.599",
70
- "@teambit/command-bar": "0.0.801",
69
+ "@teambit/ui-foundation.ui.side-bar": "0.0.601",
70
+ "@teambit/command-bar": "0.0.804",
71
71
  "@teambit/component.ui.component-filters": "0.0.10",
72
- "@teambit/graph": "0.0.801",
73
- "@teambit/sidebar": "0.0.801",
72
+ "@teambit/graph": "0.0.804",
73
+ "@teambit/sidebar": "0.0.804",
74
74
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.487",
75
75
  "@teambit/ui-foundation.ui.menu": "0.0.487",
76
76
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.490",
77
77
  "@teambit/ui-foundation.ui.tree.drawer": "0.0.499",
78
78
  "@teambit/toolbox.time.time-format": "0.0.483",
79
79
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.488",
80
- "@teambit/component-descriptor": "0.0.96",
81
- "@teambit/deprecation": "0.0.801",
80
+ "@teambit/component-descriptor": "0.0.98",
81
+ "@teambit/deprecation": "0.0.804",
82
82
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.488",
83
83
  "@teambit/ui-foundation.ui.buttons.collapser": "0.0.195",
84
84
  "@teambit/ui-foundation.ui.corner": "0.0.498",
@@ -105,7 +105,7 @@
105
105
  "peerDependencies": {
106
106
  "react-router-dom": "^6.0.0",
107
107
  "@apollo/client": "^3.0.0",
108
- "@teambit/legacy": "1.0.315",
108
+ "@teambit/legacy": "1.0.317",
109
109
  "react-dom": "^16.8.0 || ^17.0.0",
110
110
  "react": "^16.8.0 || ^17.0.0"
111
111
  },
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.801/dist/workspace.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.801/dist/workspace.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.804/dist/workspace.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.804/dist/workspace.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -2,7 +2,7 @@ import { Component, ComponentFS, ComponentID, Config, InvalidComponent, State, T
2
2
  import { BitId } from '@teambit/legacy-bit-id';
3
3
  import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';
4
4
  import mapSeries from 'p-map-series';
5
- import { compact, uniq } from 'lodash';
5
+ import { compact, fromPairs, uniq } from 'lodash';
6
6
  import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
7
7
  import { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';
8
8
  import { getLatestVersionNumber } from '@teambit/legacy/dist/utils';
@@ -15,6 +15,7 @@ import { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';
15
15
  import { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';
16
16
  import { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';
17
17
  import ComponentNotFoundInPath from '@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path';
18
+ import { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';
18
19
  import { Workspace } from '../workspace';
19
20
  import { WorkspaceComponent } from './workspace-component';
20
21
 
@@ -86,24 +87,25 @@ export class WorkspaceComponentLoader {
86
87
  forCapsule = false,
87
88
  legacyComponent?: ConsumerComponent,
88
89
  useCache = true,
89
- storeInCache = true
90
+ storeInCache = true,
91
+ loadOpts?: ComponentLoadOptions
90
92
  ): Promise<Component> {
91
93
  const bitIdWithVersion: BitId = getLatestVersionNumber(
92
94
  this.workspace.consumer.bitmapIdsFromCurrentLane,
93
95
  componentId._legacy
94
96
  );
95
97
  const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;
96
- const fromCache = this.getFromCache(id, forCapsule);
98
+ const fromCache = this.getFromCache(id, forCapsule, loadOpts);
97
99
  if (fromCache && useCache) {
98
100
  return fromCache;
99
101
  }
100
102
  const consumerComponent = legacyComponent || (await this.getConsumerComponent(id, forCapsule));
101
103
  // in case of out-of-sync, the id may changed during the load process
102
104
  const updatedId = consumerComponent ? ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;
103
- const component = await this.loadOne(updatedId, consumerComponent);
105
+ const component = await this.loadOne(updatedId, consumerComponent, loadOpts);
104
106
  if (storeInCache) {
105
107
  this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded
106
- this.saveInCache(component, forCapsule);
108
+ this.saveInCache(component, forCapsule, loadOpts);
107
109
  }
108
110
  return component;
109
111
  }
@@ -134,11 +136,19 @@ export class WorkspaceComponentLoader {
134
136
  }
135
137
  clearComponentCache(id: ComponentID) {
136
138
  const idStr = id.toString();
137
- this.componentsCache.delete(idStr);
138
- this.componentsCacheForCapsule.delete(idStr);
139
+ for (const cacheKey of this.componentsCache.keys()) {
140
+ if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {
141
+ this.componentsCache.delete(cacheKey);
142
+ }
143
+ }
144
+ for (const cacheKey of this.componentsCacheForCapsule.keys()) {
145
+ if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {
146
+ this.componentsCacheForCapsule.delete(cacheKey);
147
+ }
148
+ }
139
149
  }
140
150
 
141
- private async loadOne(id: ComponentID, consumerComponent?: ConsumerComponent) {
151
+ private async loadOne(id: ComponentID, consumerComponent?: ConsumerComponent, loadOpts?: ComponentLoadOptions) {
142
152
  const componentFromScope = await this.workspace.scope.get(id);
143
153
  if (!consumerComponent) {
144
154
  if (!componentFromScope) throw new MissingBitMapComponent(id.toString());
@@ -174,16 +184,17 @@ export class WorkspaceComponentLoader {
174
184
  componentFromScope.tags,
175
185
  this.workspace
176
186
  );
177
- return this.executeLoadSlot(workspaceComponent);
187
+ return this.executeLoadSlot(workspaceComponent, loadOpts);
178
188
  }
179
- return this.executeLoadSlot(this.newComponentFromState(id, state));
189
+ return this.executeLoadSlot(this.newComponentFromState(id, state), loadOpts);
180
190
  }
181
191
 
182
- private saveInCache(component: Component, forCapsule: boolean): void {
192
+ private saveInCache(component: Component, forCapsule: boolean, loadOpts?: ComponentLoadOptions): void {
193
+ const cacheKey = createComponentCacheKey(component.id, loadOpts);
183
194
  if (forCapsule) {
184
- this.componentsCacheForCapsule.set(component.id.toString(), component);
195
+ this.componentsCacheForCapsule.set(cacheKey, component);
185
196
  } else {
186
- this.componentsCache.set(component.id.toString(), component);
197
+ this.componentsCache.set(cacheKey, component);
187
198
  }
188
199
  }
189
200
 
@@ -194,10 +205,9 @@ export class WorkspaceComponentLoader {
194
205
  * as a result, when out-of-sync is happening and the id is changed to include scope-name in the
195
206
  * legacy-id, the component is the cache has the old id.
196
207
  */
197
- private getFromCache(id: ComponentID, forCapsule: boolean): Component | undefined {
198
- const fromCache = forCapsule
199
- ? this.componentsCacheForCapsule.get(id.toString())
200
- : this.componentsCache.get(id.toString());
208
+ private getFromCache(id: ComponentID, forCapsule: boolean, loadOpts?: ComponentLoadOptions): Component | undefined {
209
+ const cacheKey = createComponentCacheKey(id, loadOpts);
210
+ const fromCache = forCapsule ? this.componentsCacheForCapsule.get(cacheKey) : this.componentsCache.get(cacheKey);
201
211
  if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {
202
212
  return fromCache;
203
213
  }
@@ -233,10 +243,10 @@ export class WorkspaceComponentLoader {
233
243
  );
234
244
  }
235
245
 
236
- private async executeLoadSlot(component: Component) {
246
+ private async executeLoadSlot(component: Component, loadOpts?: ComponentLoadOptions) {
237
247
  const entries = this.workspace.onComponentLoadSlot.toArray();
238
248
  const promises = entries.map(async ([extension, onLoad]) => {
239
- const data = await onLoad(component);
249
+ const data = await onLoad(component, loadOpts);
240
250
  return this.upsertExtensionData(component, extension, data);
241
251
  });
242
252
 
@@ -283,3 +293,11 @@ export class WorkspaceComponentLoader {
283
293
  return new ExtensionDataEntry(undefined, undefined, extension, undefined, data);
284
294
  }
285
295
  }
296
+
297
+ function createComponentCacheKey(id: ComponentID, loadOpts?: ComponentLoadOptions): string {
298
+ return `${id.toString()}:${JSON.stringify(sortKeys(loadOpts ?? {}))}`;
299
+ }
300
+
301
+ function sortKeys(obj: Object) {
302
+ return fromPairs(Object.entries(obj).sort(([k1], [k2]) => k1.localeCompare(k2)));
303
+ }