@teambit/workspace 0.0.596 → 0.0.601

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.
@@ -201,7 +201,29 @@ function _capsule() {
201
201
  return data;
202
202
  }
203
203
 
204
+ function _envsSet() {
205
+ const data = require("./envs-subcommands/envs-set.cmd");
206
+
207
+ _envsSet = function () {
208
+ return data;
209
+ };
210
+
211
+ return data;
212
+ }
213
+
214
+ function _envsUnset() {
215
+ const data = require("./envs-subcommands/envs-unset.cmd");
216
+
217
+ _envsUnset = function () {
218
+ return data;
219
+ };
220
+
221
+ return data;
222
+ }
223
+
204
224
  async function provideWorkspace([pubsub, cli, scope, component, isolator, dependencyResolver, variants, loggerExt, graphql, ui, bundler, aspectLoader, envs], config, [onComponentLoadSlot, onComponentChangeSlot, onComponentAddSlot, onComponentRemoveSlot, onPreWatchSlot], harmony) {
225
+ var _envsCommand$commands, _envsCommand$commands2;
226
+
205
227
  const bitConfig = harmony.config.get('teambit.harmony/bit');
206
228
  const consumer = await getConsumer(bitConfig.cwd);
207
229
  if (!consumer) return undefined; // TODO: get the 'workspace' name in a better way
@@ -297,7 +319,13 @@ async function provideWorkspace([pubsub, cli, scope, component, isolator, depend
297
319
  component.registerHost(workspace);
298
320
  cli.registerOnStart(async () => {
299
321
  await workspace.loadAspects(aspectLoader.getNotLoadedConfiguredExtensions());
300
- });
322
+ }); // add sub-commands "set" and "unset" to envs command.
323
+
324
+ const envsCommand = cli.getCommand('envs');
325
+ envsCommand === null || envsCommand === void 0 ? void 0 : (_envsCommand$commands = envsCommand.commands) === null || _envsCommand$commands === void 0 ? void 0 : _envsCommand$commands.push(new (_envsSet().EnvsSetCmd)(workspace)); // bit envs set
326
+
327
+ envsCommand === null || envsCommand === void 0 ? void 0 : (_envsCommand$commands2 = envsCommand.commands) === null || _envsCommand$commands2 === void 0 ? void 0 : _envsCommand$commands2.push(new (_envsUnset().EnvsUnsetCmd)(workspace)); // bit envs unset
328
+
301
329
  return workspace;
302
330
  }
303
331
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["workspace.provider.ts"],"names":["provideWorkspace","pubsub","cli","scope","component","isolator","dependencyResolver","variants","loggerExt","graphql","ui","bundler","aspectLoader","envs","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","isLegacy","LegacyComponentLoader","registerOnComponentLoadSubscriber","legacyComponent","id","resolveComponentId","newComponent","state","_consumer","ConsumerComponent","registerOnComponentConfigLoading","componentId","componentFromScope","extensions","componentExtensions","defaultScope","componentDefaultScope","loadExtensions","extensionsWithLegacyIdsP","map","extension","legacyEntry","clone","extensionId","compId","_legacy","newExtensionId","extensionsWithLegacyIds","Promise","all","ExtensionDataList","fromArray","workspaceSchema","registerUiRoot","WorkspaceUIRoot","register","capsuleCmd","CapsuleCmd","commands","CapsuleListCmd","CapsuleCreateCmd","CapsuleDeleteCmd","InstallCmd","UpdateCmd","UninstallCmd","EjectConfCmd","watcher","Watcher","unregister","WatchCommand","LinkCommand","Tag","registerHost","registerOnStart","loadAspects","getNotLoadedConfiguredExtensions","path"],"mappings":"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","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 { 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 { Tag } from './tag-cmd';\nimport { CapsuleCmd, CapsuleCreateCmd, CapsuleDeleteCmd, CapsuleListCmd } from './capsule.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];\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 ]: 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 if (!workspace.isLegacy) {\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\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 await workspace.loadExtensions(extensions);\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 && !workspace.consumer.isLegacy) {\n cli.unregister('watch');\n commands.push(new WatchCommand(pubsub, logger, watcher));\n cli.unregister('link');\n commands.push(new LinkCommand(workspace, logger));\n }\n commands.push(new Tag());\n cli.register(...commands);\n component.registerHost(workspace);\n\n cli.registerOnStart(async () => {\n await workspace.loadAspects(aspectLoader.getNotLoadedConfiguredExtensions());\n });\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"]}
1
+ {"version":3,"sources":["workspace.provider.ts"],"names":["provideWorkspace","pubsub","cli","scope","component","isolator","dependencyResolver","variants","loggerExt","graphql","ui","bundler","aspectLoader","envs","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","isLegacy","LegacyComponentLoader","registerOnComponentLoadSubscriber","legacyComponent","id","resolveComponentId","newComponent","state","_consumer","ConsumerComponent","registerOnComponentConfigLoading","componentId","componentFromScope","extensions","componentExtensions","defaultScope","componentDefaultScope","loadExtensions","extensionsWithLegacyIdsP","map","extension","legacyEntry","clone","extensionId","compId","_legacy","newExtensionId","extensionsWithLegacyIds","Promise","all","ExtensionDataList","fromArray","workspaceSchema","registerUiRoot","WorkspaceUIRoot","register","capsuleCmd","CapsuleCmd","commands","CapsuleListCmd","CapsuleCreateCmd","CapsuleDeleteCmd","InstallCmd","UpdateCmd","UninstallCmd","EjectConfCmd","watcher","Watcher","unregister","WatchCommand","LinkCommand","Tag","registerHost","registerOnStart","loadAspects","getNotLoadedConfiguredExtensions","envsCommand","getCommand","EnvsSetCmd","EnvsUnsetCmd","path"],"mappings":";;;;;;;;;;;;;AAcA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;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;;AACA;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;;AAGA;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;;AACA;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;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AA6Be,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,CADa,EAgBbC,MAhBa,EAiBb,CAACC,mBAAD,EAAsBC,qBAAtB,EAA6CC,kBAA7C,EAAiEC,qBAAjE,EAAwFC,cAAxF,CAjBa,EAwBbC,OAxBa,EAyBb;AAAA;;AACA,QAAMC,SAAc,GAAGD,OAAO,CAACN,MAAR,CAAeQ,GAAf,CAAmB,qBAAnB,CAAvB;AACA,QAAMC,QAAQ,GAAG,MAAMC,WAAW,CAACH,SAAS,CAACI,GAAX,CAAlC;AACA,MAAI,CAACF,QAAL,EAAe,OAAOG,SAAP,CAHf,CAIA;;AACA,QAAMC,MAAM,GAAGnB,SAAS,CAACoB,YAAV,CAAuBC,qBAAvB,CAAf;AACA,QAAMC,SAAS,GAAG,KAAIC,sBAAJ,EAChB9B,MADgB,EAEhBa,MAFgB,EAGhBS,QAHgB,EAIhBpB,KAJgB,EAKhBC,SALgB,EAMhBC,QANgB,EAOhBC,kBAPgB,EAQhBC,QARgB,EAShBK,YATgB,EAUhBe,MAVgB,EAWhBD,SAXgB,EAYhBN,OAZgB,EAahBL,mBAbgB,EAchBC,qBAdgB,EAehBH,IAfgB,EAgBhBI,kBAhBgB,EAiBhBC,qBAjBgB,EAkBhBC,cAlBgB,EAmBhBV,OAnBgB,CAAlB;;AAsBA,QAAMuB,iCAAiC,GAAG,MAAM;AAAA;;AAC9C,UAAMC,WAAW,GAAG,0BAAAH,SAAS,CAACP,QAAV,CAAmBU,WAAnB,gFAAgCC,iBAAhC,KAAqD,EAAzE;AACA,UAAMC,qBAAqB,GAAG7B,kBAAkB,CAAC0B,iCAAnB,CAAqDC,WAArD,CAA9B;AACA,WAAOE,qBAAP;AACD,GAJD;;AAMA7B,EAAAA,kBAAkB,CAAC8B,kBAAnB,CAAsCJ,iCAAiC,EAAvE;;AAEAK,kCAAqBC,yBAArB,CAA+C;AAC7CC,IAAAA,OAAO,EAAE,YAAY;AACnB;AACA,YAAMC,WAAoC,GAAG;AAC3CC,QAAAA,MAAM,EAAE,IADmC;AAE3CC,QAAAA,cAAc,EAAE,KAF2B;AAG3CC,QAAAA,MAAM,EAAE;AAHmC,OAA7C;AAKA,aAAOb,SAAS,CAACS,OAAV,CAAkBb,SAAlB,EAA6Bc,WAA7B,CAAP;AACD;AAT4C,GAA/C;;AAYAjB,EAAAA,QAAQ,CAACqB,YAAT,CAAsBC,IAAtB,CAA2B,MAAMf,SAAS,CAACgB,UAAV,EAAjC;;AAEA,MAAI,CAAChB,SAAS,CAACiB,QAAf,EAAyB;AACvBC,+BAAsBC,iCAAtB,CAAwD,MAAOC,eAAP,IAA8C;AACpG,YAAMC,EAAE,GAAG,MAAMrB,SAAS,CAACsB,kBAAV,CAA6BF,eAAe,CAACC,EAA7C,CAAjB;AACA,YAAME,YAAY,GAAG,MAAMvB,SAAS,CAACR,GAAV,CAAc6B,EAAd,EAAkB,KAAlB,EAAyBD,eAAzB,CAA3B;AACA,aAAOG,YAAY,CAACC,KAAb,CAAmBC,SAA1B;AACD,KAJD;AAKD;;AAEDC,uBAAkBC,gCAAlB,CAAmD5B,qBAAnD,EAA6D,MAAOsB,EAAP,IAAc;AACzE,UAAMO,WAAW,GAAG,MAAM5B,SAAS,CAACsB,kBAAV,CAA6BD,EAA7B,CAA1B,CADyE,CAEzE;AACA;AACA;;AACA,UAAMQ,kBAAkB,GAAG,MAAM7B,SAAS,CAAC3B,KAAV,CAAgBmB,GAAhB,CAAoBoC,WAApB,CAAjC;AACA,UAAME,UAAU,GAAG,MAAM9B,SAAS,CAAC+B,mBAAV,CAA8BH,WAA9B,EAA2CC,kBAA3C,CAAzB;AACA,UAAMG,YAAY,GAAG,MAAMhC,SAAS,CAACiC,qBAAV,CAAgCL,WAAhC,CAA3B;AAEA,UAAM5B,SAAS,CAACkC,cAAV,CAAyBJ,UAAzB,CAAN;AACA,UAAMK,wBAAwB,GAAGL,UAAU,CAACM,GAAX,CAAe,MAAOC,SAAP,IAAqB;AACnE,YAAMC,WAAW,GAAGD,SAAS,CAACE,KAAV,EAApB;;AACA,UAAID,WAAW,CAACE,WAAhB,EAA6B;AAC3B,cAAMC,MAAM,GAAG,MAAMzC,SAAS,CAACsB,kBAAV,CAA6BgB,WAAW,CAACE,WAAzC,CAArB;AACAF,QAAAA,WAAW,CAACE,WAAZ,GAA0BC,MAAM,CAACC,OAAjC;AACAJ,QAAAA,WAAW,CAACK,cAAZ,GAA6BF,MAA7B;AACD;;AAED,aAAOH,WAAP;AACD,KATgC,CAAjC;AAUA,UAAMM,uBAAuB,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYX,wBAAZ,CAAtC;AAEA,WAAO;AACLH,MAAAA,YADK;AAELF,MAAAA,UAAU,EAAEiB,mCAAkBC,SAAlB,CAA4BJ,uBAA5B;AAFP,KAAP;AAID,GA1BD;AA4BA;AACF;AACA;;;AACE,+CAA2B,MAAOvB,EAAP,IAAqB;AAC9C,UAAMO,WAAW,GAAG,MAAM5B,SAAS,CAACsB,kBAAV,CAA6BD,EAA7B,CAA1B;AACA,UAAMW,YAAY,GAAG,MAAMhC,SAAS,CAACiC,qBAAV,CAAgCL,WAAhC,CAA3B;AACA,WAAOI,YAAP;AACD,GAJD;AAMA,QAAMiB,eAAe,GAAG,2BAAmBjD,SAAnB,EAA8BrB,OAA9B,CAAxB;AACAC,EAAAA,EAAE,CAACsE,cAAH,CAAkB,KAAIC,6BAAJ,EAAoBnD,SAApB,EAA+BnB,OAA/B,CAAlB;AACAF,EAAAA,OAAO,CAACyE,QAAR,CAAiBH,eAAjB;AACA,QAAMI,UAAU,GAAG,KAAIC,qBAAJ,GAAnB;AACAD,EAAAA,UAAU,CAACE,QAAX,GAAsB,CACpB,KAAIC,yBAAJ,EAAmBjF,QAAnB,EAA6ByB,SAA7B,CADoB,EAEpB,KAAIyD,2BAAJ,EAAqBzD,SAArB,EAAgCzB,QAAhC,CAFoB,EAGpB,KAAImF,2BAAJ,EAAqBnF,QAArB,EAA+ByB,SAA/B,CAHoB,CAAtB;AAKA,QAAMuD,QAAqB,GAAG,CAC5B,KAAII,kBAAJ,EAAe3D,SAAf,EAA0BH,MAA1B,CAD4B,EAE5B,KAAI+D,iBAAJ,EAAc5D,SAAd,CAF4B,EAG5B,KAAI6D,oBAAJ,EAAiB7D,SAAjB,CAH4B,EAI5B,KAAI8D,oBAAJ,EAAiB9D,SAAjB,CAJ4B,EAK5BqD,UAL4B,CAA9B;AAOA,QAAMU,OAAO,GAAG,KAAIC,kBAAJ,EAAYhE,SAAZ,EAAuB7B,MAAvB,CAAhB;;AACA,MAAI6B,SAAS,IAAI,CAACA,SAAS,CAACP,QAAV,CAAmBwB,QAArC,EAA+C;AAC7C7C,IAAAA,GAAG,CAAC6F,UAAJ,CAAe,OAAf;AACAV,IAAAA,QAAQ,CAACxC,IAAT,CAAc,KAAImD,qBAAJ,EAAiB/F,MAAjB,EAAyB0B,MAAzB,EAAiCkE,OAAjC,CAAd;AACA3F,IAAAA,GAAG,CAAC6F,UAAJ,CAAe,MAAf;AACAV,IAAAA,QAAQ,CAACxC,IAAT,CAAc,KAAIoD,mBAAJ,EAAgBnE,SAAhB,EAA2BH,MAA3B,CAAd;AACD;;AACD0D,EAAAA,QAAQ,CAACxC,IAAT,CAAc,KAAIqD,aAAJ,GAAd;AACAhG,EAAAA,GAAG,CAACgF,QAAJ,CAAa,GAAGG,QAAhB;AACAjF,EAAAA,SAAS,CAAC+F,YAAV,CAAuBrE,SAAvB;AAEA5B,EAAAA,GAAG,CAACkG,eAAJ,CAAoB,YAAY;AAC9B,UAAMtE,SAAS,CAACuE,WAAV,CAAsBzF,YAAY,CAAC0F,gCAAb,EAAtB,CAAN;AACD,GAFD,EA1HA,CA8HA;;AACA,QAAMC,WAAW,GAAGrG,GAAG,CAACsG,UAAJ,CAAe,MAAf,CAApB;AACAD,EAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,qCAAAA,WAAW,CAAElB,QAAb,gFAAuBxC,IAAvB,CAA4B,KAAI4D,qBAAJ,EAAe3E,SAAf,CAA5B,EAhIA,CAgIwD;;AACxDyE,EAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,sCAAAA,WAAW,CAAElB,QAAb,kFAAuBxC,IAAvB,CAA4B,KAAI6D,yBAAJ,EAAiB5E,SAAjB,CAA5B,EAjIA,CAiI0D;;AAE1D,SAAOA,SAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeN,WAAf,CAA2BmF,IAA3B,EAAyE;AACvE,SAAO,qCAAoBA,IAApB,CAAP;AACD","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 { 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 { Tag } from './tag-cmd';\nimport { CapsuleCmd, CapsuleCreateCmd, CapsuleDeleteCmd, CapsuleListCmd } from './capsule.cmd';\nimport { EnvsSetCmd } from './envs-subcommands/envs-set.cmd';\nimport { EnvsUnsetCmd } from './envs-subcommands/envs-unset.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];\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 ]: 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 if (!workspace.isLegacy) {\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\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 await workspace.loadExtensions(extensions);\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 && !workspace.consumer.isLegacy) {\n cli.unregister('watch');\n commands.push(new WatchCommand(pubsub, logger, watcher));\n cli.unregister('link');\n commands.push(new LinkCommand(workspace, logger));\n }\n commands.push(new Tag());\n cli.register(...commands);\n component.registerHost(workspace);\n\n cli.registerOnStart(async () => {\n await workspace.loadAspects(aspectLoader.getNotLoadedConfiguredExtensions());\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\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}"]}
@@ -0,0 +1,20 @@
1
+ import { Command } from '@teambit/cli';
2
+ import chalk from 'chalk';
3
+ import { Workspace } from '../workspace';
4
+
5
+ export class EnvsSetCmd implements Command {
6
+ name = 'set <pattern> <env>';
7
+ description = 'set an environment to component(s)';
8
+ options = [];
9
+ group = 'development';
10
+
11
+ constructor(private workspace: Workspace) {}
12
+
13
+ async report([pattern, env]: [string, string]) {
14
+ const envId = await this.workspace.resolveComponentId(env);
15
+ const components = await this.workspace.byPattern(pattern);
16
+ await this.workspace.setEnvToComponents(envId, components);
17
+ return `added ${chalk.bold(envId.toString())} env to the following component(s):
18
+ ${components.map((comp) => comp.id.toString()).join('\n')}`;
19
+ }
20
+ }
@@ -0,0 +1,18 @@
1
+ import { Command } from '@teambit/cli';
2
+ import { Workspace } from '../workspace';
3
+
4
+ export class EnvsUnsetCmd implements Command {
5
+ name = 'unset <pattern>';
6
+ description = 'unset an environment from component(s)';
7
+ options = [];
8
+ group = 'development';
9
+
10
+ constructor(private workspace: Workspace) {}
11
+
12
+ async report([pattern]: [string]) {
13
+ const components = await this.workspace.byPattern(pattern);
14
+ const { changed } = await this.workspace.unsetEnvFromComponents(components);
15
+ return `successfully removed env from the following component(s):
16
+ ${changed.map((id) => id.toString()).join('\n')}`;
17
+ }
18
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/workspace",
3
- "version": "0.0.596",
3
+ "version": "0.0.601",
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.596"
9
+ "version": "0.0.601"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -29,64 +29,64 @@
29
29
  "stringify-package": "1.0.1",
30
30
  "moment": "2.29.1",
31
31
  "chokidar": "3.5.1",
32
+ "classnames": "2.2.6",
32
33
  "@react-hook/latest": "1.0.3",
33
34
  "pluralize": "8.0.0",
34
35
  "reset-css": "5.0.1",
35
- "classnames": "2.2.6",
36
36
  "@babel/runtime": "7.12.18",
37
37
  "core-js": "^3.0.0",
38
+ "@teambit/base-ui.graph.tree.recursive-tree": "1.0.0",
38
39
  "@teambit/base-ui.surfaces.split-pane.hover-splitter": "1.0.0",
39
40
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
40
- "@teambit/base-ui.graph.tree.recursive-tree": "1.0.0",
41
41
  "@teambit/component-id": "0.0.398",
42
42
  "@teambit/bit-error": "0.0.394",
43
43
  "@teambit/legacy-bit-id": "0.0.397",
44
- "@teambit/logger": "0.0.497",
45
- "@teambit/scope": "0.0.596",
46
- "@teambit/cli": "0.0.409",
47
- "@teambit/isolator": "0.0.596",
48
- "@teambit/component-tree": "0.0.395",
49
- "@teambit/component.ui.component-status-resolver": "0.0.489",
44
+ "@teambit/logger": "0.0.502",
45
+ "@teambit/scope": "0.0.601",
46
+ "@teambit/cli": "0.0.413",
47
+ "@teambit/isolator": "0.0.601",
48
+ "@teambit/component-tree": "0.0.399",
49
+ "@teambit/component.ui.component-status-resolver": "0.0.490",
50
50
  "@teambit/harmony.modules.resolved-component": "0.0.483",
51
- "@teambit/dependency-resolver": "0.0.596",
52
- "@teambit/compiler": "0.0.596",
53
- "@teambit/component": "0.0.596",
54
- "@teambit/graphql": "0.0.596",
55
- "@teambit/aspect-loader": "0.0.596",
56
- "@teambit/bundler": "0.0.596",
57
- "@teambit/envs": "0.0.596",
58
- "@teambit/pubsub": "0.0.596",
59
- "@teambit/ui": "0.0.596",
60
- "@teambit/variants": "0.0.499",
51
+ "@teambit/dependency-resolver": "0.0.601",
52
+ "@teambit/compiler": "0.0.601",
53
+ "@teambit/component": "0.0.601",
54
+ "@teambit/graphql": "0.0.601",
55
+ "@teambit/aspect-loader": "0.0.601",
56
+ "@teambit/bundler": "0.0.601",
57
+ "@teambit/envs": "0.0.601",
58
+ "@teambit/pubsub": "0.0.601",
59
+ "@teambit/ui": "0.0.601",
60
+ "@teambit/variants": "0.0.504",
61
61
  "@teambit/component-issues": "0.0.45",
62
- "@teambit/config": "0.0.421",
62
+ "@teambit/config": "0.0.425",
63
63
  "@teambit/harmony.modules.requireable-component": "0.0.483",
64
- "@teambit/importer": "0.0.36",
64
+ "@teambit/importer": "0.0.40",
65
65
  "@teambit/workspace.modules.match-pattern": "0.0.487",
66
- "@teambit/command-bar": "0.0.596",
67
- "@teambit/design.ui.surfaces.menu.link-item": "0.0.374",
68
- "@teambit/graph": "0.0.596",
69
- "@teambit/react-router": "0.0.596",
70
- "@teambit/sidebar": "0.0.596",
66
+ "@teambit/command-bar": "0.0.601",
67
+ "@teambit/design.ui.surfaces.menu.link-item": "0.0.375",
68
+ "@teambit/graph": "0.0.601",
69
+ "@teambit/react-router": "0.0.601",
70
+ "@teambit/sidebar": "0.0.601",
71
71
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.485",
72
72
  "@teambit/ui-foundation.ui.menu": "0.0.485",
73
73
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.487",
74
74
  "@teambit/toolbox.time.time-format": "0.0.482",
75
+ "@teambit/design.ui.styles.ellipsis": "0.0.347",
76
+ "@teambit/design.ui.styles.muted-italic": "0.0.35",
77
+ "@teambit/ui-foundation.ui.full-loader": "0.0.485",
78
+ "@teambit/ui-foundation.ui.side-bar": "0.0.492",
79
+ "@teambit/ui-foundation.ui.tree.drawer": "0.0.486",
75
80
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.486",
76
- "@teambit/deprecation": "0.0.596",
81
+ "@teambit/deprecation": "0.0.601",
77
82
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.486",
78
- "@teambit/ui-foundation.ui.buttons.collapser": "0.0.191",
79
- "@teambit/ui-foundation.ui.corner": "0.0.492",
83
+ "@teambit/ui-foundation.ui.buttons.collapser": "0.0.192",
84
+ "@teambit/ui-foundation.ui.corner": "0.0.493",
80
85
  "@teambit/ui-foundation.ui.notifications.notification-context": "0.0.486",
81
86
  "@teambit/ui-foundation.ui.top-bar": "0.0.488",
82
- "@teambit/design.ui.styles.ellipsis": "0.0.346",
83
- "@teambit/design.ui.styles.muted-italic": "0.0.35",
84
- "@teambit/ui-foundation.ui.full-loader": "0.0.485",
85
- "@teambit/ui-foundation.ui.side-bar": "0.0.491",
86
- "@teambit/ui-foundation.ui.tree.drawer": "0.0.485",
87
87
  "@teambit/explorer.ui.gallery.component-grid": "0.0.485",
88
- "@teambit/workspace.ui.empty-workspace": "0.0.487",
89
- "@teambit/workspace.ui.workspace-component-card": "0.0.489"
88
+ "@teambit/workspace.ui.empty-workspace": "0.0.488",
89
+ "@teambit/workspace.ui.workspace-component-card": "0.0.490"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@types/lodash": "4.14.165",
@@ -96,8 +96,8 @@
96
96
  "@types/fs-extra": "9.0.7",
97
97
  "@types/memoizee": "0.4.5",
98
98
  "@types/react-router-dom": "5.1.7",
99
- "@types/pluralize": "0.0.29",
100
99
  "@types/classnames": "2.2.11",
100
+ "@types/pluralize": "0.0.29",
101
101
  "@types/mocha": "5.2.7",
102
102
  "@types/testing-library__jest-dom": "5.9.5",
103
103
  "@types/jest": "^26.0.0",
@@ -106,7 +106,7 @@
106
106
  },
107
107
  "peerDependencies": {
108
108
  "@apollo/client": "^3.0.0",
109
- "@teambit/legacy": "1.0.196",
109
+ "@teambit/legacy": "1.0.200",
110
110
  "react-dom": "^16.8.0 || ^17.0.0",
111
111
  "react": "^16.8.0 || ^17.0.0"
112
112
  },
@@ -134,7 +134,7 @@
134
134
  "react": "-"
135
135
  },
136
136
  "peerDependencies": {
137
- "@teambit/legacy": "1.0.196",
137
+ "@teambit/legacy": "1.0.200",
138
138
  "react-dom": "^16.8.0 || ^17.0.0",
139
139
  "react": "^16.8.0 || ^17.0.0"
140
140
  }
@@ -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 } from 'lodash';
5
+ import { compact, 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';
@@ -110,12 +110,24 @@ export class WorkspaceComponentLoader {
110
110
  return component;
111
111
  }
112
112
 
113
+ async getIfExist(componentId: ComponentID) {
114
+ try {
115
+ return await this.get(componentId);
116
+ } catch (err: any) {
117
+ if (this.isComponentNotExistsError(err)) {
118
+ return undefined;
119
+ }
120
+ throw err;
121
+ }
122
+ }
123
+
113
124
  private addMultipleEnvsIssueIfNeeded(component: Component) {
114
125
  const envs = this.envs.getAllEnvsConfiguredOnComponent(component);
115
- if (envs.length < 2) {
126
+ const envIds = uniq(envs.map((env) => env.id));
127
+ if (envIds.length < 2) {
116
128
  return;
117
129
  }
118
- component.state.issues.getOrCreate(IssuesClasses.MultipleEnvs).data = envs.map((e) => e.id);
130
+ component.state.issues.getOrCreate(IssuesClasses.MultipleEnvs).data = envIds;
119
131
  }
120
132
 
121
133
  clearCache() {