@teambit/scope 0.0.536 → 0.0.543

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.
@@ -117,13 +117,18 @@ export declare class ScopeMain implements ComponentFactory {
117
117
  getResolvedAspects(components: Component[], { skipIfExists }?: {
118
118
  skipIfExists?: boolean | undefined;
119
119
  }): Promise<RequireableComponent[]>;
120
+ private compileIfNoDist;
120
121
  private tryCompile;
121
122
  requireAspects(components: Component[], throwOnError?: boolean): Promise<Array<ExtensionManifest | Aspect>>;
122
123
  getAspectCapsulePath(): string;
123
124
  private resolveUserAspects;
124
125
  resolveAspects(runtimeName?: string, componentIds?: ComponentID[]): Promise<AspectDefinition[]>;
125
126
  getLegacyGraph(ids?: ComponentID[]): Promise<LegacyGraph>;
126
- import(ids: ComponentID[], useCache?: boolean, throwIfNotExist?: boolean): Promise<Component[]>;
127
+ import(ids: ComponentID[], { useCache, throwIfNotExist, reFetchUnBuiltVersion, }?: {
128
+ useCache?: boolean;
129
+ throwIfNotExist?: boolean;
130
+ reFetchUnBuiltVersion?: boolean;
131
+ }): Promise<Component[]>;
127
132
  get(id: ComponentID): Promise<Component | undefined>;
128
133
  getFromConsumerComponent(consumerComponent: ConsumerComponent): Promise<Component>;
129
134
  getRemoteComponent(id: ComponentID): Promise<Component>;
@@ -221,6 +221,16 @@ function _scopeLoader() {
221
221
  return data;
222
222
  }
223
223
 
224
+ function _constants() {
225
+ const data = require("@teambit/legacy/dist/constants");
226
+
227
+ _constants = function () {
228
+ return data;
229
+ };
230
+
231
+ return data;
232
+ }
233
+
224
234
  function _actions() {
225
235
  const data = require("@teambit/legacy/dist/scope/actions");
226
236
 
@@ -726,7 +736,9 @@ class ScopeMain {
726
736
  await this.loadAspectFromPath(localAspects);
727
737
  const componentIds = await this.resolveMultipleComponentIds(aspectIds);
728
738
  if (!componentIds || !componentIds.length) return [];
729
- const components = await this.import(componentIds);
739
+ const components = await this.import(componentIds, {
740
+ reFetchUnBuiltVersion: false
741
+ });
730
742
  return components;
731
743
  }
732
744
 
@@ -746,6 +758,7 @@ class ScopeMain {
746
758
  {
747
759
  baseDir: this.getAspectCapsulePath(),
748
760
  skipIfExists,
761
+ seedersOnly: true,
749
762
  includeFromNestedHosts: true,
750
763
  installOptions: {
751
764
  copyPeerToRuntimeOnRoot: true
@@ -758,6 +771,7 @@ class ScopeMain {
758
771
  const plugins = this.aspectLoader.getPlugins(capsule.component, capsule.path);
759
772
 
760
773
  if (plugins.has()) {
774
+ await this.compileIfNoDist(capsule, capsule.component);
761
775
  return plugins.load(_cli().MainRuntime.name);
762
776
  } // eslint-disable-next-line global-require, import/no-dynamic-require
763
777
 
@@ -775,10 +789,15 @@ class ScopeMain {
775
789
  });
776
790
  }
777
791
 
778
- async tryCompile(requirableAspect) {
779
- const env = this.envs.getEnv(requirableAspect.component);
792
+ async compileIfNoDist(capsule, component) {
793
+ const env = this.envs.getEnv(component);
780
794
  const compiler = env.env.getCompiler();
781
- const compiledCode = requirableAspect.component.filesystem.files.flatMap(file => {
795
+
796
+ const distDir = (compiler === null || compiler === void 0 ? void 0 : compiler.distDir) || _constants().DEFAULT_DIST_DIRNAME;
797
+
798
+ const distExists = (0, _fsExtra().existsSync)((0, _path().join)(capsule.path, distDir));
799
+ if (distExists) return;
800
+ const compiledCode = component.filesystem.files.flatMap(file => {
782
801
  if (!compiler.isFileSupported(file.path)) {
783
802
  return [{
784
803
  outputText: file.contents.toString('utf8'),
@@ -786,23 +805,26 @@ class ScopeMain {
786
805
  }];
787
806
  }
788
807
 
789
- if (compiler.transpileFile && requirableAspect.capsule) {
808
+ if (compiler.transpileFile) {
790
809
  return compiler.transpileFile(file.contents.toString('utf8'), {
791
810
  filePath: file.path,
792
- componentDir: requirableAspect.capsule.path
811
+ componentDir: capsule.path
793
812
  });
794
813
  }
795
814
 
796
815
  return [];
797
816
  });
798
817
  await Promise.all((0, _lodash().compact)(compiledCode).map(compiledFile => {
799
- var _requirableAspect$cap;
800
-
801
818
  const path = compiler.getDistPathBySrcPath(compiledFile.outputPath);
802
- return (_requirableAspect$cap = requirableAspect.capsule) === null || _requirableAspect$cap === void 0 ? void 0 : _requirableAspect$cap.outputFile(path, compiledFile.outputText);
819
+ return capsule === null || capsule === void 0 ? void 0 : capsule.outputFile(path, compiledFile.outputText);
803
820
  }));
804
821
  }
805
822
 
823
+ async tryCompile(requirableAspect) {
824
+ if (requirableAspect.capsule) return this.compileIfNoDist(requirableAspect.capsule, requirableAspect.component);
825
+ return undefined;
826
+ }
827
+
806
828
  async requireAspects(components, throwOnError = false) {
807
829
  const requireableExtensions = await this.getResolvedAspects(components);
808
830
 
@@ -941,7 +963,11 @@ class ScopeMain {
941
963
  */
942
964
 
943
965
 
944
- async import(ids, useCache = true, throwIfNotExist = false) {
966
+ async import(ids, {
967
+ useCache = true,
968
+ throwIfNotExist = false,
969
+ reFetchUnBuiltVersion = true
970
+ } = {}) {
945
971
  const legacyIds = ids.map(id => {
946
972
  const legacyId = id._legacy;
947
973
  if (legacyId.scope === this.name) return legacyId.changeScope(null);
@@ -950,7 +976,7 @@ class ScopeMain {
950
976
  const withoutOwnScopeAndLocals = legacyIds.filter(id => {
951
977
  return id.scope !== this.name && id.hasScope();
952
978
  });
953
- await this.legacyScope.import(_bitId().BitIds.fromArray(withoutOwnScopeAndLocals), useCache);
979
+ await this.legacyScope.import(_bitId().BitIds.fromArray(withoutOwnScopeAndLocals), useCache, reFetchUnBuiltVersion);
954
980
  return this.getMany(ids, throwIfNotExist);
955
981
  }
956
982
 
@@ -1 +1 @@
1
- {"version":3,"sources":["scope.main.runtime.ts"],"names":["ScopeMain","constructor","harmony","legacyScope","componentExtension","config","tagRegistry","postPutSlot","postDeleteSlot","postExportSlot","postObjectsPersist","preFetchObjects","isolator","aspectLoader","logger","envs","componentLoader","ScopeComponentLoader","name","icon","backgroundIconColor","description","path","isLegacy","onTag","tagFn","host","getHost","legacyOnTagFunc","legacyComponents","options","reloadAspectsWithNewVersion","components","getManyByLegacy","builderDataMap","builderDataMapToLegacyOnTagResults","push","register","getUserAspectsIdsWithoutRootIds","allUserAspectIds","getUserAspects","rootIds","Object","keys","toObject","diffIds","getAspectsByPreviouslyUsedVersion","harmonyIds","aspectsIds","aspectsP","map","component","newId","resolveComponentId","id","previouslyUsedVersion","version","newIdWithPreviouslyUsedVersion","changeVersion","includes","toString","Promise","all","idsToLoad","loadAspects","getFromConsumerComponent","clearCache","objects","builderDataComponentMap","builderDataToLegacyExtension","builderData","existingBuilder","state","aspects","get","BuilderAspect","legacy","builderExtension","ExtensionDataEntry","undefined","data","toArray","_legacy","onPostPut","postPutFn","onPostDelete","postDeleteFn","registerOnPostExport","postExportFn","registerOnPreFetchObjects","preFetchObjectsFn","registerOnPostObjectsPersist","postObjectsPersistFn","fetch","ids","persist","delete","force","lanes","headers","authData","authorization","result","fns","values","metadata","auth","componentIds","ComponentID","fromString","fn","err","error","toObjectList","list","ObjectList","fromBitObjects","toJs","str","endsWith","replace","parseLocalAspect","localAspects","dirPaths","localAspect","nonExistsDirPaths","filter","forEach","warn","existsDirPaths","findRuntime","dirPath","runtime","files","find","loadAspectFromPath","manifests","scopeRuntime","module","require","default","loadExtensionsByManifests","throwOnError","scopeManifests","getManifestsGraphRecursively","visited","nonVisitedId","length","getNonLoadedAspects","requireAspects","depsToLoad","manifest","dependencies","_runtimes","depIds","d","loaded","notLoadedIds","isAspectLoaded","coreAspectsStringIds","getCoreAspectIds","idsWithoutCore","aspectIds","startsWith","concat","resolveMultipleComponentIds","import","resolveLocalAspects","dirs","dir","runtimeManifest","AspectDefinition","getResolvedAspects","skipIfExists","network","isolateComponents","c","baseDir","getAspectCapsulePath","includeFromNestedHosts","installOptions","copyPeerToRuntimeOnRoot","capsules","seedersCapsules","capsule","RequireableComponent","plugins","getPlugins","has","load","MainRuntime","aspect","getRuntimePath","mainRuntime","runtimePath","tryCompile","requirableAspect","env","getEnv","compiler","getCompiler","compiledCode","filesystem","flatMap","file","isFileSupported","outputText","contents","outputPath","transpileFile","filePath","componentDir","compiledFile","getDistPathBySrcPath","outputFile","requireableExtensions","erroredId","requireWithCatch","requireableAspects","requireableExtension","doRequire","code","newErr","resolvedAspectsAgain","manifestAgain","handleExtensionLoadingError","resolveUserAspects","runtimeName","userAspectsIds","getMany","seedersOnly","aspectDefs","resolveAspects","getCapsule","Error","localPath","aspectPath","withoutLocalAspects","aspectId","fullName","userAspectsDefs","localResolved","coreAspects","getCoreAspectDefs","allDefs","uniqDefs","def","defs","getLegacyGraph","comp","legacyIds","bitId","hasScope","changeScope","legacyGraph","useCache","throwIfNotExist","legacyId","scope","withoutOwnScopeAndLocals","ComponentsIds","fromArray","consumerComponent","getRemoteComponent","includeCache","componentsIds","listIds","limit","offset","listInvalid","allModelComponents","modelComponentsToList","modelComponent","exists","fromLegacy","toBitIdWithLatestVersion","debug","JSON","stringify","hasId","componentId","opts","includeOrphaned","includeVersion","hasIdNested","idsWithoutEmpty","componentsP","getOrThrow","loadMany","ComponentNotFound","getState","hash","getSnap","getLogs","loadComponentLogs","idStr","loadModelComponentByIdStr","getIdToCheck","IdToCheck","BitId","getParsedId","byPattern","patterns","finalPatterns","pattern","targetIds","some","toStringWithoutVersion","match","getExactVersionBySemverRange","range","getModelComponent","versions","listVersions","semver","maxSatisfying","includePrerelease","resumeExport","exportId","remotes","resolveId","_legacyRemotes","isAspectComponent","loadComponentsAspect","provider","componentExt","ui","graphql","cli","express","loggerMain","tagSlot","postObjectsPersistSlot","preFetchObjectsSlot","bitConfig","cwd","createLogger","ScopeAspect","registerOnStart","hasWorkspace","getNotLoadedConfiguredExtensions","onPutHook","getAuthData","token","Http","getToken","type","DEFAULT_AUTH_TYPE","credentials","onPostExportHook","onPostObjectsPersistHook","ExportPersist","PostSign","Scope","onPostExport","Repository","onPostObjectsPersist","PutRoute","FetchRoute","ActionRoute","DeleteRoute","registerUiRoot","ScopeUIRoot","registerHost","Slot","withType","ComponentAspect","UIAspect","GraphqlAspect","CLIAspect","IsolatorAspect","AspectLoaderAspect","ExpressAspect","LoggerAspect","EnvsAspect","httpTimeOut","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;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;;AAEA;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;;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;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;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;;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;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;;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","sourcesContent":["import mapSeries from 'p-map-series';\nimport semver from 'semver';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { TaskResultsList, BuilderData, BuilderAspect } from '@teambit/builder';\nimport { readdirSync, existsSync } from 'fs-extra';\nimport { resolve, join } from 'path';\nimport { AspectLoaderAspect, AspectDefinition } from '@teambit/aspect-loader';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain, ComponentMap } from '@teambit/component';\nimport { Component, ComponentAspect, ComponentFactory, ComponentID, Snap, State } from '@teambit/component';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { Harmony, Slot, SlotRegistry, ExtensionManifest, Aspect } from '@teambit/harmony';\nimport { IsolatorAspect, IsolatorMain } from '@teambit/isolator';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport type { UiMain } from '@teambit/ui';\nimport { UIAspect } from '@teambit/ui';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { BitIds as ComponentsIds } from '@teambit/legacy/dist/bit-id';\nimport { ModelComponent, Lane } from '@teambit/legacy/dist/scope/models';\nimport { Repository } from '@teambit/legacy/dist/scope/objects';\nimport LegacyScope, { LegacyOnTagResult, OnTagFunc, OnTagOpts } from '@teambit/legacy/dist/scope/scope';\nimport { ComponentLog } from '@teambit/legacy/dist/scope/models/model-component';\nimport { loadScopeIfExist } from '@teambit/legacy/dist/scope/scope-loader';\nimport { PersistOptions } from '@teambit/legacy/dist/scope/types';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport { ExportPersist, PostSign } from '@teambit/legacy/dist/scope/actions';\nimport { getScopeRemotes } from '@teambit/legacy/dist/scope/scope-remotes';\nimport { Remotes } from '@teambit/legacy/dist/remotes';\nimport { isMatchNamespacePatternItem } from '@teambit/workspace.modules.match-pattern';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport { FETCH_OPTIONS } from '@teambit/legacy/dist/api/scope/lib/fetch';\nimport { ObjectList } from '@teambit/legacy/dist/scope/objects/object-list';\nimport { Http, DEFAULT_AUTH_TYPE, AuthData, getAuthDataFromHeader } from '@teambit/legacy/dist/scope/network/http/http';\nimport { buildOneGraphForComponentsUsingScope } from '@teambit/legacy/dist/scope/graph/components-graph';\nimport { remove } from '@teambit/legacy/dist/api/scope';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { resumeExport } from '@teambit/legacy/dist/scope/component-ops/export-scope-components';\nimport { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { Compiler } from '@teambit/compiler';\nimport { compact, uniq, slice, uniqBy, difference } from 'lodash';\nimport { ComponentNotFound } from './exceptions';\nimport { ScopeAspect } from './scope.aspect';\nimport { scopeSchema } from './scope.graphql';\nimport { ScopeUIRoot } from './scope.ui-root';\nimport { PutRoute, FetchRoute, ActionRoute, DeleteRoute } from './routes';\nimport { ScopeComponentLoader } from './scope-component-loader';\n\ntype TagRegistry = SlotRegistry<OnTag>;\n\ntype ManifestOrAspect = ExtensionManifest | Aspect;\n\nexport type OnTagResults = { builderDataMap: ComponentMap<BuilderData>; pipeResults: TaskResultsList[] };\nexport type OnTag = (components: Component[], options?: OnTagOpts) => Promise<OnTagResults>;\n\ntype RemoteEventMetadata = { auth?: AuthData; headers?: {} };\ntype RemoteEvent<Data> = (data: Data, metadata: RemoteEventMetadata, errors?: Array<string | Error>) => Promise<void>;\ntype OnPostPutData = { ids: ComponentID[]; lanes: Lane[] };\ntype OnPostDeleteData = { ids: ComponentID[] };\ntype OnPreFetchObjectData = { ids: string[]; fetchOptions: FETCH_OPTIONS };\n\ntype OnPostPut = RemoteEvent<OnPostPutData>;\ntype OnPostExport = RemoteEvent<OnPostPutData>;\ntype OnPostDelete = RemoteEvent<OnPostDeleteData>;\ntype OnPostObjectsPersist = RemoteEvent<undefined>;\ntype OnPreFetchObjects = RemoteEvent<OnPreFetchObjectData>;\n\nexport type OnPostPutSlot = SlotRegistry<OnPostPut>;\nexport type OnPostDeleteSlot = SlotRegistry<OnPostDelete>;\nexport type OnPostExportSlot = SlotRegistry<OnPostExport>;\nexport type OnPostObjectsPersistSlot = SlotRegistry<OnPostObjectsPersist>;\nexport type OnPreFetchObjectsSlot = SlotRegistry<OnPreFetchObjects>;\n\nexport type ScopeConfig = {\n httpTimeOut: number;\n description?: string;\n icon?: string;\n backgroundIconColor?: string;\n};\n\nexport class ScopeMain implements ComponentFactory {\n componentLoader: ScopeComponentLoader;\n constructor(\n /**\n * private reference to the instance of Harmony.\n */\n private harmony: Harmony,\n /**\n * legacy scope\n */\n readonly legacyScope: LegacyScope,\n\n /**\n * component extension.\n */\n readonly componentExtension: ComponentMain,\n\n /**\n * slot registry for subscribing to build\n */\n\n readonly config: ScopeConfig,\n\n private tagRegistry: TagRegistry,\n\n private postPutSlot: OnPostPutSlot,\n\n private postDeleteSlot: OnPostDeleteSlot,\n\n private postExportSlot: OnPostExportSlot,\n\n private postObjectsPersist: OnPostObjectsPersistSlot,\n\n public preFetchObjects: OnPreFetchObjectsSlot,\n\n private isolator: IsolatorMain,\n\n private aspectLoader: AspectLoaderMain,\n\n private logger: Logger,\n\n private envs: EnvsMain\n ) {\n this.componentLoader = new ScopeComponentLoader(this, this.logger);\n }\n\n /**\n * name of the scope\n */\n get name(): string {\n return this.legacyScope.name;\n }\n\n get icon(): string | undefined {\n return this.config.icon;\n }\n\n get backgroundIconColor(): string | undefined {\n return this.config.backgroundIconColor;\n }\n\n get description(): string | undefined {\n return this.config.description;\n }\n\n get path(): string {\n return this.legacyScope.path;\n }\n\n get isLegacy(): boolean {\n return this.legacyScope.isLegacy;\n }\n\n /**\n * register to the tag slot.\n */\n onTag(tagFn: OnTag) {\n const host = this.componentExtension.getHost();\n const legacyOnTagFunc: OnTagFunc = async (\n legacyComponents: ConsumerComponent[],\n options?: OnTagOpts\n ): Promise<LegacyOnTagResult[]> => {\n // Reload the aspects with their new version\n await this.reloadAspectsWithNewVersion(legacyComponents);\n const components = await host.getManyByLegacy(legacyComponents);\n const { builderDataMap } = await tagFn(components, options);\n return this.builderDataMapToLegacyOnTagResults(builderDataMap);\n };\n this.legacyScope.onTag.push(legacyOnTagFunc);\n this.tagRegistry.register(tagFn);\n }\n\n // We need to reload the aspects with their new version since:\n // during get many by legacy, we go load component which in turn go to getEnv\n // get env validates that the env written on the component is really exist by checking the envs slot registry\n // when we load here, it's env version in the aspect list already has the new version in case the env itself is being tagged\n // so we are search for the env in the registry with the new version number\n // but since the env only registered during the on load of the bit process (before the tag) it's version in the registry is only the old one\n // once we reload them we will have it registered with the new version as well\n async reloadAspectsWithNewVersion(components: ConsumerComponent[]): Promise<void> {\n const host = this.componentExtension.getHost();\n\n // Return only aspects that defined on components but not in the root config file (workspace.jsonc/scope.jsonc)\n const getUserAspectsIdsWithoutRootIds = (): string[] => {\n const allUserAspectIds = this.aspectLoader.getUserAspects();\n const rootIds = Object.keys(this.harmony.config.toObject());\n const diffIds = difference(allUserAspectIds, rootIds);\n return diffIds;\n };\n\n // Based on the list of components to be tagged return those who are loaded to harmony with their used version\n const getAspectsByPreviouslyUsedVersion = async (): Promise<string[]> => {\n const harmonyIds = getUserAspectsIdsWithoutRootIds();\n const aspectsIds: string[] = [];\n const aspectsP = components.map(async (component) => {\n const newId = await host.resolveComponentId(component.id);\n if (\n component.previouslyUsedVersion &&\n component.version &&\n component.previouslyUsedVersion !== component.version\n ) {\n const newIdWithPreviouslyUsedVersion = newId.changeVersion(component.previouslyUsedVersion);\n if (harmonyIds.includes(newIdWithPreviouslyUsedVersion.toString())) {\n aspectsIds.push(newId.toString());\n }\n }\n });\n await Promise.all(aspectsP);\n return aspectsIds;\n };\n\n const idsToLoad = await getAspectsByPreviouslyUsedVersion();\n await host.loadAspects(idsToLoad, false);\n }\n\n getManyByLegacy(components: ConsumerComponent[]): Promise<Component[]> {\n return mapSeries(components, async (component) => this.getFromConsumerComponent(component));\n }\n\n clearCache() {\n this.componentLoader.clearCache();\n this.legacyScope.objects.clearCache();\n }\n\n builderDataMapToLegacyOnTagResults(builderDataComponentMap: ComponentMap<BuilderData>): LegacyOnTagResult[] {\n const builderDataToLegacyExtension = (component: Component, builderData: BuilderData) => {\n const existingBuilder = component.state.aspects.get(BuilderAspect.id)?.legacy;\n const builderExtension = existingBuilder || new ExtensionDataEntry(undefined, undefined, BuilderAspect.id);\n builderExtension.data = builderData;\n return builderExtension;\n };\n return builderDataComponentMap.toArray().map(([component, builderData]) => ({\n id: component.id._legacy,\n builderData: builderDataToLegacyExtension(component, builderData),\n }));\n }\n\n /**\n * register to the post-export slot.\n */\n onPostPut(postPutFn: OnPostPut) {\n this.postPutSlot.register(postPutFn);\n return this;\n }\n\n /**\n * register to the post-delete slot.\n */\n onPostDelete(postDeleteFn: OnPostDelete) {\n this.postDeleteSlot.register(postDeleteFn);\n return this;\n }\n\n /**\n * register to the post-export slot.\n */\n registerOnPostExport(postExportFn: OnPostExport) {\n this.postExportSlot.register(postExportFn);\n return this;\n }\n\n registerOnPreFetchObjects(preFetchObjectsFn: OnPreFetchObjects) {\n this.preFetchObjects.register(preFetchObjectsFn);\n return this;\n }\n\n registerOnPostObjectsPersist(postObjectsPersistFn: OnPostObjectsPersist) {\n this.postObjectsPersist.register(postObjectsPersistFn);\n return this;\n }\n\n /**\n * Will fetch a list of components into the current scope.\n * This will only fetch the object and won't write the files to the actual FS\n *\n * @param {ComponentsIds} ids list of ids to fetch\n */\n fetch(ids: ComponentsIds) {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\n /**\n * This function will get a component and sealed it's current state into the scope\n *\n * @param {Component[]} components A list of components to seal with specific persist options (such as message and version number)\n * @param {PersistOptions} persistGeneralOptions General persistence options such as verbose\n */\n persist(components: Component[], options: PersistOptions) {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\n async delete(\n { ids, force, lanes }: { ids: string[]; force: boolean; lanes: boolean },\n headers?: Record<string, any>\n ) {\n const authData = getAuthDataFromHeader(headers?.authorization);\n const result = await remove({\n path: this.path,\n ids,\n force,\n lanes,\n });\n\n const fns = this.postDeleteSlot.values();\n const metadata = { auth: authData, headers };\n const componentIds = ids.map((id) => ComponentID.fromString(id));\n await mapSeries(fns, async (fn) => {\n try {\n await fn({ ids: componentIds }, metadata);\n } catch (err: any) {\n this.logger.error('failed to run delete slot', err);\n }\n });\n return result;\n }\n\n async toObjectList(): Promise<ObjectList> {\n const objects = await this.legacyScope.objects.list();\n return ObjectList.fromBitObjects(objects);\n }\n\n // TODO: temporary compiler workaround - discuss this with david.\n private toJs(str: string) {\n if (str.endsWith('.ts')) return str.replace('.ts', '.js');\n return str;\n }\n\n private parseLocalAspect(localAspects: string[]) {\n const dirPaths = localAspects.map((localAspect) => resolve(localAspect.replace('file://', '')));\n const nonExistsDirPaths = dirPaths.filter((path) => !existsSync(path));\n nonExistsDirPaths.forEach((path) => this.logger.warn(`no such file or directory: ${path}`));\n const existsDirPaths = dirPaths.filter((path) => existsSync(path));\n return existsDirPaths;\n }\n\n private findRuntime(dirPath: string, runtime: string) {\n const files = readdirSync(join(dirPath, 'dist'));\n return files.find((path) => path.includes(`${runtime}.runtime.js`));\n }\n\n private async loadAspectFromPath(localAspects: string[]) {\n const dirPaths = this.parseLocalAspect(localAspects);\n const manifests = dirPaths.map((dirPath) => {\n const scopeRuntime = this.findRuntime(dirPath, 'scope');\n if (scopeRuntime) {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(join(dirPath, 'dist', scopeRuntime));\n return module.default || module;\n }\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(dirPath);\n return module.default || module;\n });\n\n await this.aspectLoader.loadExtensionsByManifests(manifests, true);\n }\n\n private localAspects: string[] = [];\n\n async loadAspects(ids: string[], throwOnError = false): Promise<void> {\n const scopeManifests = await this.getManifestsGraphRecursively(ids, [], throwOnError);\n await this.aspectLoader.loadExtensionsByManifests(scopeManifests);\n }\n\n async getManifestsGraphRecursively(\n ids: string[],\n visited: string[] = [],\n throwOnError = false\n ): Promise<ManifestOrAspect[]> {\n ids = uniq(ids);\n const nonVisitedId = ids.filter((id) => !visited.includes(id));\n if (!nonVisitedId.length) {\n return [];\n }\n const components = await this.getNonLoadedAspects(nonVisitedId);\n visited.push(...nonVisitedId);\n const manifests = await this.requireAspects(components, throwOnError);\n const depsToLoad: Array<ExtensionManifest | Aspect> = [];\n await mapSeries(manifests, async (manifest) => {\n depsToLoad.push(...(manifest.dependencies || []));\n // @ts-ignore\n (manifest._runtimes || []).forEach((runtime) => {\n depsToLoad.push(...(runtime.dependencies || []));\n });\n const depIds = depsToLoad.map((d) => d.id).filter((id) => id) as string[];\n const loaded = await this.getManifestsGraphRecursively(depIds, visited, throwOnError);\n manifests.push(...loaded);\n });\n return manifests;\n }\n\n private async getNonLoadedAspects(ids: string[]): Promise<Component[]> {\n const notLoadedIds = ids.filter((id) => !this.aspectLoader.isAspectLoaded(id));\n if (!notLoadedIds.length) return [];\n const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();\n const idsWithoutCore: string[] = difference(ids, coreAspectsStringIds);\n const aspectIds = idsWithoutCore.filter((id) => !id.startsWith('file://'));\n // TODO: use diff instead of filter twice\n const localAspects = ids.filter((id) => id.startsWith('file://'));\n this.localAspects = this.localAspects.concat(localAspects);\n // load local aspects for debugging purposes.\n await this.loadAspectFromPath(localAspects);\n const componentIds = await this.resolveMultipleComponentIds(aspectIds);\n if (!componentIds || !componentIds.length) return [];\n const components = await this.import(componentIds);\n\n return components;\n }\n\n private async resolveLocalAspects(ids: string[], runtime?: string) {\n const dirs = this.parseLocalAspect(ids);\n\n return dirs.map((dir) => {\n const runtimeManifest = runtime ? this.findRuntime(dir, runtime) : undefined;\n return new AspectDefinition(\n dir,\n runtimeManifest ? join(dir, 'dist', runtimeManifest) : null,\n undefined,\n undefined,\n true\n );\n });\n }\n\n async getResolvedAspects(components: Component[], { skipIfExists = true } = {}): Promise<RequireableComponent[]> {\n if (!components.length) return [];\n const network = await this.isolator.isolateComponents(\n components.map((c) => c.id),\n // includeFromNestedHosts - to support case when you are in a workspace, trying to load aspect defined in the workspace.jsonc but not part of the workspace\n {\n baseDir: this.getAspectCapsulePath(),\n skipIfExists,\n includeFromNestedHosts: true,\n installOptions: { copyPeerToRuntimeOnRoot: true },\n },\n this.legacyScope\n );\n\n const capsules = network.seedersCapsules;\n\n return capsules.map((capsule) => {\n return new RequireableComponent(\n capsule.component,\n async () => {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const plugins = this.aspectLoader.getPlugins(capsule.component, capsule.path);\n if (plugins.has()) {\n return plugins.load(MainRuntime.name);\n }\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const aspect = require(capsule.path);\n const scopeRuntime = await this.aspectLoader.getRuntimePath(capsule.component, capsule.path, 'scope');\n const mainRuntime = await this.aspectLoader.getRuntimePath(capsule.component, capsule.path, MainRuntime.name);\n const runtimePath = scopeRuntime || mainRuntime;\n // eslint-disable-next-line global-require, import/no-dynamic-require\n if (runtimePath) require(runtimePath);\n // eslint-disable-next-line global-require, import/no-dynamic-require\n return aspect;\n },\n capsule\n );\n });\n }\n\n private async tryCompile(requirableAspect: RequireableComponent) {\n const env = this.envs.getEnv(requirableAspect.component);\n const compiler: Compiler = env.env.getCompiler();\n const compiledCode = requirableAspect.component.filesystem.files.flatMap((file) => {\n if (!compiler.isFileSupported(file.path)) {\n return [\n {\n outputText: file.contents.toString('utf8'),\n outputPath: file.path,\n },\n ];\n }\n\n if (compiler.transpileFile && requirableAspect.capsule) {\n return compiler.transpileFile(file.contents.toString('utf8'), {\n filePath: file.path,\n componentDir: requirableAspect.capsule.path,\n });\n }\n\n return [];\n });\n\n await Promise.all(\n compact(compiledCode).map((compiledFile) => {\n const path = compiler.getDistPathBySrcPath(compiledFile.outputPath);\n return requirableAspect.capsule?.outputFile(path, compiledFile.outputText);\n })\n );\n }\n\n async requireAspects(components: Component[], throwOnError = false): Promise<Array<ExtensionManifest | Aspect>> {\n const requireableExtensions = await this.getResolvedAspects(components);\n if (!requireableExtensions) {\n return [];\n }\n let error: any;\n let erroredId = '';\n const requireWithCatch = async (requireableAspects: RequireableComponent[]) => {\n error = undefined;\n try {\n const manifests = await mapSeries(requireableAspects, async (requireableExtension) => {\n try {\n return await this.aspectLoader.doRequire(requireableExtension);\n } catch (err: any) {\n erroredId = requireableExtension.component.id.toString();\n if (err.code === 'MODULE_NOT_FOUND') {\n try {\n await this.tryCompile(requireableExtension);\n return await this.aspectLoader.doRequire(requireableExtension);\n } catch (newErr: any) {\n error = newErr;\n throw newErr;\n }\n }\n error = err;\n throw err;\n }\n });\n return manifests;\n } catch (err) {\n return null;\n }\n };\n const manifests = await requireWithCatch(requireableExtensions);\n if (!error) {\n return compact(manifests);\n }\n if (error.code === 'MODULE_NOT_FOUND') {\n this.logger.warn(\n `failed loading aspects from capsules due to MODULE_NOT_FOUND error, re-creating the capsules and trying again`\n );\n const resolvedAspectsAgain = await this.getResolvedAspects(components, {\n skipIfExists: false,\n });\n const manifestAgain = await requireWithCatch(resolvedAspectsAgain);\n if (!error) {\n return compact(manifestAgain);\n }\n }\n\n this.aspectLoader.handleExtensionLoadingError(error, erroredId, throwOnError);\n return [];\n }\n\n getAspectCapsulePath() {\n return `${this.path}-aspects`;\n }\n\n private async resolveUserAspects(runtimeName?: string, userAspectsIds?: ComponentID[]): Promise<AspectDefinition[]> {\n if (!userAspectsIds || !userAspectsIds.length) return [];\n const components = await this.getMany(userAspectsIds);\n const network = await this.isolator.isolateComponents(\n userAspectsIds,\n {\n baseDir: this.getAspectCapsulePath(),\n skipIfExists: true,\n // for some reason this needs to be false, otherwise tagging components in some workspaces\n // result in error during Preview task:\n // \"No matching version found for <some-component-on-the-workspace>\"\n seedersOnly: false,\n includeFromNestedHosts: true,\n installOptions: { copyPeerToRuntimeOnRoot: true },\n host: this,\n },\n this.legacyScope\n );\n const capsules = network.seedersCapsules;\n const aspectDefs = await this.aspectLoader.resolveAspects(components, async (component) => {\n const capsule = capsules.getCapsule(component.id);\n if (!capsule) throw new Error(`failed loading aspect: ${component.id.toString()}`);\n const localPath = capsule.path;\n\n return {\n aspectPath: localPath,\n runtimePath: runtimeName ? await this.aspectLoader.getRuntimePath(component, localPath, runtimeName) : null,\n };\n });\n return aspectDefs;\n }\n\n async resolveAspects(runtimeName?: string, componentIds?: ComponentID[]): Promise<AspectDefinition[]> {\n const userAspectsIds = componentIds || (await this.resolveMultipleComponentIds(this.aspectLoader.getUserAspects()));\n const withoutLocalAspects = userAspectsIds.filter((aspectId) => {\n return !this.localAspects.find((localAspect) => {\n return localAspect.includes(aspectId.fullName.replace('/', '.'));\n });\n });\n const userAspectsDefs = await this.resolveUserAspects(runtimeName, withoutLocalAspects);\n const localResolved = await this.resolveLocalAspects(this.localAspects, runtimeName);\n const coreAspects = await this.aspectLoader.getCoreAspectDefs(runtimeName);\n\n const allDefs = userAspectsDefs.concat(coreAspects).concat(localResolved);\n const uniqDefs = uniqBy(allDefs, (def) => `${def.aspectPath}-${def.runtimePath}`);\n let defs = uniqDefs;\n if (runtimeName) {\n defs = defs.filter((def) => def.runtimePath);\n }\n\n return defs;\n }\n\n async getLegacyGraph(ids?: ComponentID[]): Promise<LegacyGraph> {\n if (!ids || ids.length < 1) ids = (await this.list()).map((comp) => comp.id) || [];\n const legacyIds = ids.map((id) => {\n let bitId = id._legacy;\n // The resolve bitId in scope will remove the scope name in case it's the same as the scope\n // We restore it back to use it correctly in the legacy code.\n if (!bitId.hasScope()) {\n bitId = bitId.changeScope(this.legacyScope?.name);\n }\n return bitId;\n });\n\n const legacyGraph = await buildOneGraphForComponentsUsingScope(legacyIds, this.legacyScope);\n return legacyGraph;\n }\n\n /**\n * import components into the scope.\n */\n async import(ids: ComponentID[], useCache = true, throwIfNotExist = false): Promise<Component[]> {\n const legacyIds = ids.map((id) => {\n const legacyId = id._legacy;\n if (legacyId.scope === this.name) return legacyId.changeScope(null);\n return legacyId;\n });\n\n const withoutOwnScopeAndLocals = legacyIds.filter((id) => {\n return id.scope !== this.name && id.hasScope();\n });\n await this.legacyScope.import(ComponentsIds.fromArray(withoutOwnScopeAndLocals), useCache);\n\n return this.getMany(ids, throwIfNotExist);\n }\n\n async get(id: ComponentID): Promise<Component | undefined> {\n return this.componentLoader.get(id);\n }\n\n async getFromConsumerComponent(consumerComponent: ConsumerComponent): Promise<Component> {\n return this.componentLoader.getFromConsumerComponent(consumerComponent);\n }\n\n /**\n * get a component from a remote without importing it\n */\n async getRemoteComponent(id: ComponentID): Promise<Component> {\n return this.componentLoader.getRemoteComponent(id);\n }\n\n /**\n * list all components in the scope.\n */\n async list(filter?: { offset: number; limit: number }, includeCache = false): Promise<Component[]> {\n const componentsIds = await this.listIds(includeCache);\n\n return this.getMany(\n filter && filter.limit ? slice(componentsIds, filter.offset, filter.offset + filter.limit) : componentsIds\n );\n }\n\n /**\n * for now, list of invalid components are mostly useful for the workspace.\n * in the future, this can return components that failed to load in the scope due to objects file\n * corruption or similar issues.\n */\n async listInvalid() {\n return [];\n }\n\n /**\n * get ids of all scope components.\n * @param includeCache whether or not include components that their scope-name is different than the current scope-name\n */\n async listIds(includeCache = false): Promise<ComponentID[]> {\n const allModelComponents = await this.legacyScope.list();\n const modelComponentsToList = includeCache\n ? allModelComponents\n : allModelComponents.filter((modelComponent) => this.exists(modelComponent));\n\n const ids = modelComponentsToList.map((component) =>\n ComponentID.fromLegacy(component.toBitIdWithLatestVersion(), component.scope || this.name)\n );\n this.logger.debug(`scope listIds: componentsIds after filter scope: ${JSON.stringify(ids, undefined, 2)}`);\n return ids;\n }\n\n /**\n * Check if a specific id exist in the scope\n * @param componentId\n */\n async hasId(componentId: ComponentID, includeCache = false): Promise<boolean> {\n if (!includeCache && componentId.scope !== this.name) return false;\n const opts = {\n includeOrphaned: true,\n includeVersion: true,\n };\n\n return this.legacyScope.hasId(componentId._legacy, opts);\n }\n\n async hasIdNested(componentId: ComponentID, includeCache = false): Promise<boolean> {\n return this.hasId(componentId, includeCache);\n }\n\n /**\n * determine whether a component exists in the scope.\n */\n exists(modelComponent: ModelComponent) {\n return modelComponent.scope === this.name;\n }\n\n async getMany(ids: ComponentID[], throwIfNotExist = false): Promise<Component[]> {\n const idsWithoutEmpty = compact(ids);\n const componentsP = mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n return throwIfNotExist ? this.getOrThrow(id) : this.get(id);\n });\n const components = await componentsP;\n return compact(components);\n }\n\n /**\n * load components from a scope and load their aspects\n */\n async loadMany(ids: ComponentID[]): Promise<Component[]> {\n const components = await mapSeries(ids, (id) => this.load(id));\n return compact(components);\n }\n\n /**\n * get a component and throw an exception if not found.\n * @param id component id\n */\n async getOrThrow(id: ComponentID): Promise<Component> {\n const component = await this.get(id);\n if (!component) throw new ComponentNotFound(id);\n return component;\n }\n\n /**\n * returns a specific state of a component.\n * @param id component ID.\n * @param hash state hash.\n */\n async getState(id: ComponentID, hash: string): Promise<State> {\n return this.componentLoader.getState(id, hash);\n }\n\n async getSnap(id: ComponentID, hash: string): Promise<Snap> {\n return this.componentLoader.getSnap(id, hash);\n }\n\n async getLogs(id: ComponentID): Promise<ComponentLog[]> {\n return this.legacyScope.loadComponentLogs(id._legacy);\n }\n\n /**\n * resolve a component ID.\n * @param id component ID.\n */\n async resolveComponentId(id: string | ComponentID | BitId): Promise<ComponentID> {\n const idStr = id.toString();\n const component = await this.legacyScope.loadModelComponentByIdStr(idStr);\n const getIdToCheck = () => {\n if (component) return idStr; // component exists in the scope with the scope-name.\n if (idStr.startsWith(`${this.name}/`)) {\n // component with the full name doesn't exist in the scope, it might be locally tagged\n return idStr.replace(`${this.name}/`, '');\n }\n return idStr;\n };\n const IdToCheck = getIdToCheck();\n const legacyId = id instanceof BitId ? id : await this.legacyScope.getParsedId(IdToCheck);\n if (!legacyId.scope) return ComponentID.fromLegacy(legacyId, this.name);\n return ComponentID.fromLegacy(legacyId);\n }\n\n async resolveMultipleComponentIds(ids: Array<string | ComponentID | BitId>) {\n return Promise.all(ids.map(async (id) => this.resolveComponentId(id)));\n }\n\n /**\n * load components into the scope through a variants pattern.\n */\n async byPattern(patterns: string[], scope = '**'): Promise<Component[]> {\n const ids = await this.listIds(true);\n const finalPatterns = patterns.map((pattern) => `${scope}/${pattern || '**'}`);\n const targetIds = ids.filter((id) => {\n return finalPatterns.some((pattern) => isMatchNamespacePatternItem(id.toStringWithoutVersion(), pattern).match);\n });\n\n const components = await this.getMany(targetIds);\n return components;\n }\n\n async getExactVersionBySemverRange(id: ComponentID, range: string): Promise<string | undefined> {\n const modelComponent = await this.legacyScope.getModelComponent(id._legacy);\n const versions = modelComponent.listVersions();\n return semver.maxSatisfying<string>(versions, range, { includePrerelease: true })?.toString();\n }\n\n async resumeExport(exportId: string, remotes: string[]): Promise<string[]> {\n return resumeExport(this.legacyScope, exportId, remotes);\n }\n\n async resolveId(id: string): Promise<ComponentID> {\n const legacyId = await this.legacyScope.getParsedId(id);\n return ComponentID.fromLegacy(legacyId);\n }\n\n // TODO: add new API for this\n async _legacyRemotes(): Promise<Remotes> {\n return getScopeRemotes(this.legacyScope);\n }\n\n /**\n * get a component and load its aspect\n */\n async load(id: ComponentID): Promise<Component | undefined> {\n const component = await this.get(id);\n if (!component) return undefined;\n const aspectIds = component.state.aspects.ids;\n // load components from type aspects as aspects.\n if (this.aspectLoader.isAspectComponent(component)) {\n aspectIds.push(component.id.toString());\n }\n await this.loadAspects(aspectIds, true);\n\n return component;\n }\n\n async loadComponentsAspect(component: Component) {\n const aspectIds = component.state.aspects.ids;\n await this.loadAspects(aspectIds, true);\n }\n\n /**\n * declare the slots of scope extension.\n */\n static slots = [\n Slot.withType<OnTag>(),\n Slot.withType<OnPostPut>(),\n Slot.withType<OnPostDelete>(),\n Slot.withType<OnPostExport>(),\n Slot.withType<OnPostObjectsPersist>(),\n Slot.withType<OnPreFetchObjects>(),\n ];\n static runtime = MainRuntime;\n\n static dependencies = [\n ComponentAspect,\n UIAspect,\n GraphqlAspect,\n CLIAspect,\n IsolatorAspect,\n AspectLoaderAspect,\n ExpressAspect,\n LoggerAspect,\n EnvsAspect,\n ];\n\n static defaultConfig: ScopeConfig = {\n httpTimeOut: 600000,\n };\n\n static async provider(\n [componentExt, ui, graphql, cli, isolator, aspectLoader, express, loggerMain, envs]: [\n ComponentMain,\n UiMain,\n GraphqlMain,\n CLIMain,\n IsolatorMain,\n AspectLoaderMain,\n ExpressMain,\n LoggerMain,\n EnvsMain\n ],\n config: ScopeConfig,\n [tagSlot, postPutSlot, postDeleteSlot, postExportSlot, postObjectsPersistSlot, preFetchObjectsSlot]: [\n TagRegistry,\n OnPostPutSlot,\n OnPostDeleteSlot,\n OnPostExportSlot,\n OnPostObjectsPersistSlot,\n OnPreFetchObjectsSlot\n ],\n harmony: Harmony\n ) {\n const bitConfig: any = harmony.config.get('teambit.harmony/bit');\n const legacyScope = await loadScopeIfExist(bitConfig?.cwd);\n if (!legacyScope) {\n return undefined;\n }\n\n const logger = loggerMain.createLogger(ScopeAspect.id);\n const scope = new ScopeMain(\n harmony,\n legacyScope,\n componentExt,\n config,\n tagSlot,\n postPutSlot,\n postDeleteSlot,\n postExportSlot,\n postObjectsPersistSlot,\n preFetchObjectsSlot,\n isolator,\n aspectLoader,\n logger,\n envs\n );\n cli.registerOnStart(async (hasWorkspace: boolean) => {\n if (hasWorkspace) return;\n await scope.loadAspects(aspectLoader.getNotLoadedConfiguredExtensions());\n });\n\n const onPutHook = async (ids: string[], lanes: Lane[], authData?: AuthData): Promise<void> => {\n logger.debug(`onPutHook, started. (${ids.length} components)`);\n scope.componentLoader.clearCache();\n const componentIds = await scope.resolveMultipleComponentIds(ids);\n const fns = postPutSlot.values();\n const data = {\n ids: componentIds,\n lanes,\n };\n const metadata = { auth: authData };\n await Promise.all(fns.map(async (fn) => fn(data, metadata)));\n logger.debug(`onPutHook, completed. (${ids.length} components)`);\n };\n\n const getAuthData = (): AuthData | undefined => {\n const token = Http.getToken();\n return token ? { type: DEFAULT_AUTH_TYPE, credentials: token } : undefined;\n };\n\n const onPostExportHook = async (ids: BitId[], lanes: Lane[]): Promise<void> => {\n logger.debug(`onPostExportHook, started. (${ids.length} components)`);\n const componentIds = await scope.resolveMultipleComponentIds(ids);\n const fns = postExportSlot.values();\n const data = {\n ids: componentIds,\n lanes,\n };\n const metadata = { auth: getAuthData() };\n await Promise.all(fns.map(async (fn) => fn(data, metadata)));\n logger.debug(`onPostExportHook, completed. (${ids.length} components)`);\n };\n\n const onPostObjectsPersistHook = async (): Promise<void> => {\n logger.debug(`onPostObjectsPersistHook, started`);\n const fns = postObjectsPersistSlot.values();\n const metadata = { auth: getAuthData() };\n await Promise.all(fns.map(async (fn) => fn(undefined, metadata)));\n logger.debug(`onPostObjectsPersistHook, completed`);\n };\n\n ExportPersist.onPutHook = onPutHook;\n PostSign.onPutHook = onPutHook;\n Scope.onPostExport = onPostExportHook;\n Repository.onPostObjectsPersist = onPostObjectsPersistHook;\n\n express.register([\n new PutRoute(scope, postPutSlot),\n new FetchRoute(scope, logger),\n new ActionRoute(scope),\n new DeleteRoute(scope),\n ]);\n // @ts-ignore - @ran to implement the missing functions and remove it\n ui.registerUiRoot(new ScopeUIRoot(scope));\n graphql.register(scopeSchema(scope));\n componentExt.registerHost(scope);\n\n return scope;\n }\n}\n\nScopeAspect.addRuntime(ScopeMain);\n"]}
1
+ {"version":3,"sources":["scope.main.runtime.ts"],"names":["ScopeMain","constructor","harmony","legacyScope","componentExtension","config","tagRegistry","postPutSlot","postDeleteSlot","postExportSlot","postObjectsPersist","preFetchObjects","isolator","aspectLoader","logger","envs","componentLoader","ScopeComponentLoader","name","icon","backgroundIconColor","description","path","isLegacy","onTag","tagFn","host","getHost","legacyOnTagFunc","legacyComponents","options","reloadAspectsWithNewVersion","components","getManyByLegacy","builderDataMap","builderDataMapToLegacyOnTagResults","push","register","getUserAspectsIdsWithoutRootIds","allUserAspectIds","getUserAspects","rootIds","Object","keys","toObject","diffIds","getAspectsByPreviouslyUsedVersion","harmonyIds","aspectsIds","aspectsP","map","component","newId","resolveComponentId","id","previouslyUsedVersion","version","newIdWithPreviouslyUsedVersion","changeVersion","includes","toString","Promise","all","idsToLoad","loadAspects","getFromConsumerComponent","clearCache","objects","builderDataComponentMap","builderDataToLegacyExtension","builderData","existingBuilder","state","aspects","get","BuilderAspect","legacy","builderExtension","ExtensionDataEntry","undefined","data","toArray","_legacy","onPostPut","postPutFn","onPostDelete","postDeleteFn","registerOnPostExport","postExportFn","registerOnPreFetchObjects","preFetchObjectsFn","registerOnPostObjectsPersist","postObjectsPersistFn","fetch","ids","persist","delete","force","lanes","headers","authData","authorization","result","fns","values","metadata","auth","componentIds","ComponentID","fromString","fn","err","error","toObjectList","list","ObjectList","fromBitObjects","toJs","str","endsWith","replace","parseLocalAspect","localAspects","dirPaths","localAspect","nonExistsDirPaths","filter","forEach","warn","existsDirPaths","findRuntime","dirPath","runtime","files","find","loadAspectFromPath","manifests","scopeRuntime","module","require","default","loadExtensionsByManifests","throwOnError","scopeManifests","getManifestsGraphRecursively","visited","nonVisitedId","length","getNonLoadedAspects","requireAspects","depsToLoad","manifest","dependencies","_runtimes","depIds","d","loaded","notLoadedIds","isAspectLoaded","coreAspectsStringIds","getCoreAspectIds","idsWithoutCore","aspectIds","startsWith","concat","resolveMultipleComponentIds","import","reFetchUnBuiltVersion","resolveLocalAspects","dirs","dir","runtimeManifest","AspectDefinition","getResolvedAspects","skipIfExists","network","isolateComponents","c","baseDir","getAspectCapsulePath","seedersOnly","includeFromNestedHosts","installOptions","copyPeerToRuntimeOnRoot","capsules","seedersCapsules","capsule","RequireableComponent","plugins","getPlugins","has","compileIfNoDist","load","MainRuntime","aspect","getRuntimePath","mainRuntime","runtimePath","env","getEnv","compiler","getCompiler","distDir","DEFAULT_DIST_DIRNAME","distExists","compiledCode","filesystem","flatMap","file","isFileSupported","outputText","contents","outputPath","transpileFile","filePath","componentDir","compiledFile","getDistPathBySrcPath","outputFile","tryCompile","requirableAspect","requireableExtensions","erroredId","requireWithCatch","requireableAspects","requireableExtension","doRequire","code","newErr","resolvedAspectsAgain","manifestAgain","handleExtensionLoadingError","resolveUserAspects","runtimeName","userAspectsIds","getMany","aspectDefs","resolveAspects","getCapsule","Error","localPath","aspectPath","withoutLocalAspects","aspectId","fullName","userAspectsDefs","localResolved","coreAspects","getCoreAspectDefs","allDefs","uniqDefs","def","defs","getLegacyGraph","comp","legacyIds","bitId","hasScope","changeScope","legacyGraph","useCache","throwIfNotExist","legacyId","scope","withoutOwnScopeAndLocals","ComponentsIds","fromArray","consumerComponent","getRemoteComponent","includeCache","componentsIds","listIds","limit","offset","listInvalid","allModelComponents","modelComponentsToList","modelComponent","exists","fromLegacy","toBitIdWithLatestVersion","debug","JSON","stringify","hasId","componentId","opts","includeOrphaned","includeVersion","hasIdNested","idsWithoutEmpty","componentsP","getOrThrow","loadMany","ComponentNotFound","getState","hash","getSnap","getLogs","loadComponentLogs","idStr","loadModelComponentByIdStr","getIdToCheck","IdToCheck","BitId","getParsedId","byPattern","patterns","finalPatterns","pattern","targetIds","some","toStringWithoutVersion","match","getExactVersionBySemverRange","range","getModelComponent","versions","listVersions","semver","maxSatisfying","includePrerelease","resumeExport","exportId","remotes","resolveId","_legacyRemotes","isAspectComponent","loadComponentsAspect","provider","componentExt","ui","graphql","cli","express","loggerMain","tagSlot","postObjectsPersistSlot","preFetchObjectsSlot","bitConfig","cwd","createLogger","ScopeAspect","registerOnStart","hasWorkspace","getNotLoadedConfiguredExtensions","onPutHook","getAuthData","token","Http","getToken","type","DEFAULT_AUTH_TYPE","credentials","onPostExportHook","onPostObjectsPersistHook","ExportPersist","PostSign","Scope","onPostExport","Repository","onPostObjectsPersist","PutRoute","FetchRoute","ActionRoute","DeleteRoute","registerUiRoot","ScopeUIRoot","registerHost","Slot","withType","ComponentAspect","UIAspect","GraphqlAspect","CLIAspect","IsolatorAspect","AspectLoaderAspect","ExpressAspect","LoggerAspect","EnvsAspect","httpTimeOut","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;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;;AAEA;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;;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;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;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;;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;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;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","sourcesContent":["import mapSeries from 'p-map-series';\nimport semver from 'semver';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { TaskResultsList, BuilderData, BuilderAspect } from '@teambit/builder';\nimport { readdirSync, existsSync } from 'fs-extra';\nimport { resolve, join } from 'path';\nimport { AspectLoaderAspect, AspectDefinition } from '@teambit/aspect-loader';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain, ComponentMap } from '@teambit/component';\nimport { Component, ComponentAspect, ComponentFactory, ComponentID, Snap, State } from '@teambit/component';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { Harmony, Slot, SlotRegistry, ExtensionManifest, Aspect } from '@teambit/harmony';\nimport { Capsule, IsolatorAspect, IsolatorMain } from '@teambit/isolator';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport type { UiMain } from '@teambit/ui';\nimport { UIAspect } from '@teambit/ui';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { BitIds as ComponentsIds } from '@teambit/legacy/dist/bit-id';\nimport { ModelComponent, Lane } from '@teambit/legacy/dist/scope/models';\nimport { Repository } from '@teambit/legacy/dist/scope/objects';\nimport LegacyScope, { LegacyOnTagResult, OnTagFunc, OnTagOpts } from '@teambit/legacy/dist/scope/scope';\nimport { ComponentLog } from '@teambit/legacy/dist/scope/models/model-component';\nimport { loadScopeIfExist } from '@teambit/legacy/dist/scope/scope-loader';\nimport { PersistOptions } from '@teambit/legacy/dist/scope/types';\nimport { DEFAULT_DIST_DIRNAME } from '@teambit/legacy/dist/constants';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport { ExportPersist, PostSign } from '@teambit/legacy/dist/scope/actions';\nimport { getScopeRemotes } from '@teambit/legacy/dist/scope/scope-remotes';\nimport { Remotes } from '@teambit/legacy/dist/remotes';\nimport { isMatchNamespacePatternItem } from '@teambit/workspace.modules.match-pattern';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport { FETCH_OPTIONS } from '@teambit/legacy/dist/api/scope/lib/fetch';\nimport { ObjectList } from '@teambit/legacy/dist/scope/objects/object-list';\nimport { Http, DEFAULT_AUTH_TYPE, AuthData, getAuthDataFromHeader } from '@teambit/legacy/dist/scope/network/http/http';\nimport { buildOneGraphForComponentsUsingScope } from '@teambit/legacy/dist/scope/graph/components-graph';\nimport { remove } from '@teambit/legacy/dist/api/scope';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { resumeExport } from '@teambit/legacy/dist/scope/component-ops/export-scope-components';\nimport { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { Compiler } from '@teambit/compiler';\nimport { compact, uniq, slice, uniqBy, difference } from 'lodash';\nimport { ComponentNotFound } from './exceptions';\nimport { ScopeAspect } from './scope.aspect';\nimport { scopeSchema } from './scope.graphql';\nimport { ScopeUIRoot } from './scope.ui-root';\nimport { PutRoute, FetchRoute, ActionRoute, DeleteRoute } from './routes';\nimport { ScopeComponentLoader } from './scope-component-loader';\n\ntype TagRegistry = SlotRegistry<OnTag>;\n\ntype ManifestOrAspect = ExtensionManifest | Aspect;\n\nexport type OnTagResults = { builderDataMap: ComponentMap<BuilderData>; pipeResults: TaskResultsList[] };\nexport type OnTag = (components: Component[], options?: OnTagOpts) => Promise<OnTagResults>;\n\ntype RemoteEventMetadata = { auth?: AuthData; headers?: {} };\ntype RemoteEvent<Data> = (data: Data, metadata: RemoteEventMetadata, errors?: Array<string | Error>) => Promise<void>;\ntype OnPostPutData = { ids: ComponentID[]; lanes: Lane[] };\ntype OnPostDeleteData = { ids: ComponentID[] };\ntype OnPreFetchObjectData = { ids: string[]; fetchOptions: FETCH_OPTIONS };\n\ntype OnPostPut = RemoteEvent<OnPostPutData>;\ntype OnPostExport = RemoteEvent<OnPostPutData>;\ntype OnPostDelete = RemoteEvent<OnPostDeleteData>;\ntype OnPostObjectsPersist = RemoteEvent<undefined>;\ntype OnPreFetchObjects = RemoteEvent<OnPreFetchObjectData>;\n\nexport type OnPostPutSlot = SlotRegistry<OnPostPut>;\nexport type OnPostDeleteSlot = SlotRegistry<OnPostDelete>;\nexport type OnPostExportSlot = SlotRegistry<OnPostExport>;\nexport type OnPostObjectsPersistSlot = SlotRegistry<OnPostObjectsPersist>;\nexport type OnPreFetchObjectsSlot = SlotRegistry<OnPreFetchObjects>;\n\nexport type ScopeConfig = {\n httpTimeOut: number;\n description?: string;\n icon?: string;\n backgroundIconColor?: string;\n};\n\nexport class ScopeMain implements ComponentFactory {\n componentLoader: ScopeComponentLoader;\n constructor(\n /**\n * private reference to the instance of Harmony.\n */\n private harmony: Harmony,\n /**\n * legacy scope\n */\n readonly legacyScope: LegacyScope,\n\n /**\n * component extension.\n */\n readonly componentExtension: ComponentMain,\n\n /**\n * slot registry for subscribing to build\n */\n\n readonly config: ScopeConfig,\n\n private tagRegistry: TagRegistry,\n\n private postPutSlot: OnPostPutSlot,\n\n private postDeleteSlot: OnPostDeleteSlot,\n\n private postExportSlot: OnPostExportSlot,\n\n private postObjectsPersist: OnPostObjectsPersistSlot,\n\n public preFetchObjects: OnPreFetchObjectsSlot,\n\n private isolator: IsolatorMain,\n\n private aspectLoader: AspectLoaderMain,\n\n private logger: Logger,\n\n private envs: EnvsMain\n ) {\n this.componentLoader = new ScopeComponentLoader(this, this.logger);\n }\n\n /**\n * name of the scope\n */\n get name(): string {\n return this.legacyScope.name;\n }\n\n get icon(): string | undefined {\n return this.config.icon;\n }\n\n get backgroundIconColor(): string | undefined {\n return this.config.backgroundIconColor;\n }\n\n get description(): string | undefined {\n return this.config.description;\n }\n\n get path(): string {\n return this.legacyScope.path;\n }\n\n get isLegacy(): boolean {\n return this.legacyScope.isLegacy;\n }\n\n /**\n * register to the tag slot.\n */\n onTag(tagFn: OnTag) {\n const host = this.componentExtension.getHost();\n const legacyOnTagFunc: OnTagFunc = async (\n legacyComponents: ConsumerComponent[],\n options?: OnTagOpts\n ): Promise<LegacyOnTagResult[]> => {\n // Reload the aspects with their new version\n await this.reloadAspectsWithNewVersion(legacyComponents);\n const components = await host.getManyByLegacy(legacyComponents);\n const { builderDataMap } = await tagFn(components, options);\n return this.builderDataMapToLegacyOnTagResults(builderDataMap);\n };\n this.legacyScope.onTag.push(legacyOnTagFunc);\n this.tagRegistry.register(tagFn);\n }\n\n // We need to reload the aspects with their new version since:\n // during get many by legacy, we go load component which in turn go to getEnv\n // get env validates that the env written on the component is really exist by checking the envs slot registry\n // when we load here, it's env version in the aspect list already has the new version in case the env itself is being tagged\n // so we are search for the env in the registry with the new version number\n // but since the env only registered during the on load of the bit process (before the tag) it's version in the registry is only the old one\n // once we reload them we will have it registered with the new version as well\n async reloadAspectsWithNewVersion(components: ConsumerComponent[]): Promise<void> {\n const host = this.componentExtension.getHost();\n\n // Return only aspects that defined on components but not in the root config file (workspace.jsonc/scope.jsonc)\n const getUserAspectsIdsWithoutRootIds = (): string[] => {\n const allUserAspectIds = this.aspectLoader.getUserAspects();\n const rootIds = Object.keys(this.harmony.config.toObject());\n const diffIds = difference(allUserAspectIds, rootIds);\n return diffIds;\n };\n\n // Based on the list of components to be tagged return those who are loaded to harmony with their used version\n const getAspectsByPreviouslyUsedVersion = async (): Promise<string[]> => {\n const harmonyIds = getUserAspectsIdsWithoutRootIds();\n const aspectsIds: string[] = [];\n const aspectsP = components.map(async (component) => {\n const newId = await host.resolveComponentId(component.id);\n if (\n component.previouslyUsedVersion &&\n component.version &&\n component.previouslyUsedVersion !== component.version\n ) {\n const newIdWithPreviouslyUsedVersion = newId.changeVersion(component.previouslyUsedVersion);\n if (harmonyIds.includes(newIdWithPreviouslyUsedVersion.toString())) {\n aspectsIds.push(newId.toString());\n }\n }\n });\n await Promise.all(aspectsP);\n return aspectsIds;\n };\n\n const idsToLoad = await getAspectsByPreviouslyUsedVersion();\n await host.loadAspects(idsToLoad, false);\n }\n\n getManyByLegacy(components: ConsumerComponent[]): Promise<Component[]> {\n return mapSeries(components, async (component) => this.getFromConsumerComponent(component));\n }\n\n clearCache() {\n this.componentLoader.clearCache();\n this.legacyScope.objects.clearCache();\n }\n\n builderDataMapToLegacyOnTagResults(builderDataComponentMap: ComponentMap<BuilderData>): LegacyOnTagResult[] {\n const builderDataToLegacyExtension = (component: Component, builderData: BuilderData) => {\n const existingBuilder = component.state.aspects.get(BuilderAspect.id)?.legacy;\n const builderExtension = existingBuilder || new ExtensionDataEntry(undefined, undefined, BuilderAspect.id);\n builderExtension.data = builderData;\n return builderExtension;\n };\n return builderDataComponentMap.toArray().map(([component, builderData]) => ({\n id: component.id._legacy,\n builderData: builderDataToLegacyExtension(component, builderData),\n }));\n }\n\n /**\n * register to the post-export slot.\n */\n onPostPut(postPutFn: OnPostPut) {\n this.postPutSlot.register(postPutFn);\n return this;\n }\n\n /**\n * register to the post-delete slot.\n */\n onPostDelete(postDeleteFn: OnPostDelete) {\n this.postDeleteSlot.register(postDeleteFn);\n return this;\n }\n\n /**\n * register to the post-export slot.\n */\n registerOnPostExport(postExportFn: OnPostExport) {\n this.postExportSlot.register(postExportFn);\n return this;\n }\n\n registerOnPreFetchObjects(preFetchObjectsFn: OnPreFetchObjects) {\n this.preFetchObjects.register(preFetchObjectsFn);\n return this;\n }\n\n registerOnPostObjectsPersist(postObjectsPersistFn: OnPostObjectsPersist) {\n this.postObjectsPersist.register(postObjectsPersistFn);\n return this;\n }\n\n /**\n * Will fetch a list of components into the current scope.\n * This will only fetch the object and won't write the files to the actual FS\n *\n * @param {ComponentsIds} ids list of ids to fetch\n */\n fetch(ids: ComponentsIds) {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\n /**\n * This function will get a component and sealed it's current state into the scope\n *\n * @param {Component[]} components A list of components to seal with specific persist options (such as message and version number)\n * @param {PersistOptions} persistGeneralOptions General persistence options such as verbose\n */\n persist(components: Component[], options: PersistOptions) {} // eslint-disable-line @typescript-eslint/no-unused-vars\n\n async delete(\n { ids, force, lanes }: { ids: string[]; force: boolean; lanes: boolean },\n headers?: Record<string, any>\n ) {\n const authData = getAuthDataFromHeader(headers?.authorization);\n const result = await remove({\n path: this.path,\n ids,\n force,\n lanes,\n });\n\n const fns = this.postDeleteSlot.values();\n const metadata = { auth: authData, headers };\n const componentIds = ids.map((id) => ComponentID.fromString(id));\n await mapSeries(fns, async (fn) => {\n try {\n await fn({ ids: componentIds }, metadata);\n } catch (err: any) {\n this.logger.error('failed to run delete slot', err);\n }\n });\n return result;\n }\n\n async toObjectList(): Promise<ObjectList> {\n const objects = await this.legacyScope.objects.list();\n return ObjectList.fromBitObjects(objects);\n }\n\n // TODO: temporary compiler workaround - discuss this with david.\n private toJs(str: string) {\n if (str.endsWith('.ts')) return str.replace('.ts', '.js');\n return str;\n }\n\n private parseLocalAspect(localAspects: string[]) {\n const dirPaths = localAspects.map((localAspect) => resolve(localAspect.replace('file://', '')));\n const nonExistsDirPaths = dirPaths.filter((path) => !existsSync(path));\n nonExistsDirPaths.forEach((path) => this.logger.warn(`no such file or directory: ${path}`));\n const existsDirPaths = dirPaths.filter((path) => existsSync(path));\n return existsDirPaths;\n }\n\n private findRuntime(dirPath: string, runtime: string) {\n const files = readdirSync(join(dirPath, 'dist'));\n return files.find((path) => path.includes(`${runtime}.runtime.js`));\n }\n\n private async loadAspectFromPath(localAspects: string[]) {\n const dirPaths = this.parseLocalAspect(localAspects);\n const manifests = dirPaths.map((dirPath) => {\n const scopeRuntime = this.findRuntime(dirPath, 'scope');\n if (scopeRuntime) {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(join(dirPath, 'dist', scopeRuntime));\n return module.default || module;\n }\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(dirPath);\n return module.default || module;\n });\n\n await this.aspectLoader.loadExtensionsByManifests(manifests, true);\n }\n\n private localAspects: string[] = [];\n\n async loadAspects(ids: string[], throwOnError = false): Promise<void> {\n const scopeManifests = await this.getManifestsGraphRecursively(ids, [], throwOnError);\n await this.aspectLoader.loadExtensionsByManifests(scopeManifests);\n }\n\n async getManifestsGraphRecursively(\n ids: string[],\n visited: string[] = [],\n throwOnError = false\n ): Promise<ManifestOrAspect[]> {\n ids = uniq(ids);\n const nonVisitedId = ids.filter((id) => !visited.includes(id));\n if (!nonVisitedId.length) {\n return [];\n }\n const components = await this.getNonLoadedAspects(nonVisitedId);\n visited.push(...nonVisitedId);\n const manifests = await this.requireAspects(components, throwOnError);\n const depsToLoad: Array<ExtensionManifest | Aspect> = [];\n await mapSeries(manifests, async (manifest) => {\n depsToLoad.push(...(manifest.dependencies || []));\n // @ts-ignore\n (manifest._runtimes || []).forEach((runtime) => {\n depsToLoad.push(...(runtime.dependencies || []));\n });\n const depIds = depsToLoad.map((d) => d.id).filter((id) => id) as string[];\n const loaded = await this.getManifestsGraphRecursively(depIds, visited, throwOnError);\n manifests.push(...loaded);\n });\n return manifests;\n }\n\n private async getNonLoadedAspects(ids: string[]): Promise<Component[]> {\n const notLoadedIds = ids.filter((id) => !this.aspectLoader.isAspectLoaded(id));\n if (!notLoadedIds.length) return [];\n const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();\n const idsWithoutCore: string[] = difference(ids, coreAspectsStringIds);\n const aspectIds = idsWithoutCore.filter((id) => !id.startsWith('file://'));\n // TODO: use diff instead of filter twice\n const localAspects = ids.filter((id) => id.startsWith('file://'));\n this.localAspects = this.localAspects.concat(localAspects);\n // load local aspects for debugging purposes.\n await this.loadAspectFromPath(localAspects);\n const componentIds = await this.resolveMultipleComponentIds(aspectIds);\n if (!componentIds || !componentIds.length) return [];\n const components = await this.import(componentIds, { reFetchUnBuiltVersion: false });\n\n return components;\n }\n\n private async resolveLocalAspects(ids: string[], runtime?: string) {\n const dirs = this.parseLocalAspect(ids);\n\n return dirs.map((dir) => {\n const runtimeManifest = runtime ? this.findRuntime(dir, runtime) : undefined;\n return new AspectDefinition(\n dir,\n runtimeManifest ? join(dir, 'dist', runtimeManifest) : null,\n undefined,\n undefined,\n true\n );\n });\n }\n\n async getResolvedAspects(components: Component[], { skipIfExists = true } = {}): Promise<RequireableComponent[]> {\n if (!components.length) return [];\n const network = await this.isolator.isolateComponents(\n components.map((c) => c.id),\n // includeFromNestedHosts - to support case when you are in a workspace, trying to load aspect defined in the workspace.jsonc but not part of the workspace\n {\n baseDir: this.getAspectCapsulePath(),\n skipIfExists,\n seedersOnly: true,\n includeFromNestedHosts: true,\n installOptions: { copyPeerToRuntimeOnRoot: true },\n },\n this.legacyScope\n );\n\n const capsules = network.seedersCapsules;\n\n return capsules.map((capsule) => {\n return new RequireableComponent(\n capsule.component,\n async () => {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const plugins = this.aspectLoader.getPlugins(capsule.component, capsule.path);\n if (plugins.has()) {\n await this.compileIfNoDist(capsule, capsule.component);\n return plugins.load(MainRuntime.name);\n }\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const aspect = require(capsule.path);\n const scopeRuntime = await this.aspectLoader.getRuntimePath(capsule.component, capsule.path, 'scope');\n const mainRuntime = await this.aspectLoader.getRuntimePath(capsule.component, capsule.path, MainRuntime.name);\n const runtimePath = scopeRuntime || mainRuntime;\n // eslint-disable-next-line global-require, import/no-dynamic-require\n if (runtimePath) require(runtimePath);\n // eslint-disable-next-line global-require, import/no-dynamic-require\n return aspect;\n },\n capsule\n );\n });\n }\n\n private async compileIfNoDist(capsule: Capsule, component: Component) {\n const env = this.envs.getEnv(component);\n const compiler: Compiler = env.env.getCompiler();\n const distDir = compiler?.distDir || DEFAULT_DIST_DIRNAME;\n const distExists = existsSync(join(capsule.path, distDir));\n if (distExists) return;\n\n const compiledCode = component.filesystem.files.flatMap((file) => {\n if (!compiler.isFileSupported(file.path)) {\n return [\n {\n outputText: file.contents.toString('utf8'),\n outputPath: file.path,\n },\n ];\n }\n\n if (compiler.transpileFile) {\n return compiler.transpileFile(file.contents.toString('utf8'), {\n filePath: file.path,\n componentDir: capsule.path,\n });\n }\n\n return [];\n });\n\n await Promise.all(\n compact(compiledCode).map((compiledFile) => {\n const path = compiler.getDistPathBySrcPath(compiledFile.outputPath);\n return capsule?.outputFile(path, compiledFile.outputText);\n })\n );\n }\n\n private async tryCompile(requirableAspect: RequireableComponent) {\n if (requirableAspect.capsule) return this.compileIfNoDist(requirableAspect.capsule, requirableAspect.component);\n return undefined;\n }\n\n async requireAspects(components: Component[], throwOnError = false): Promise<Array<ExtensionManifest | Aspect>> {\n const requireableExtensions = await this.getResolvedAspects(components);\n if (!requireableExtensions) {\n return [];\n }\n let error: any;\n let erroredId = '';\n const requireWithCatch = async (requireableAspects: RequireableComponent[]) => {\n error = undefined;\n try {\n const manifests = await mapSeries(requireableAspects, async (requireableExtension) => {\n try {\n return await this.aspectLoader.doRequire(requireableExtension);\n } catch (err: any) {\n erroredId = requireableExtension.component.id.toString();\n if (err.code === 'MODULE_NOT_FOUND') {\n try {\n await this.tryCompile(requireableExtension);\n return await this.aspectLoader.doRequire(requireableExtension);\n } catch (newErr: any) {\n error = newErr;\n throw newErr;\n }\n }\n error = err;\n throw err;\n }\n });\n return manifests;\n } catch (err) {\n return null;\n }\n };\n const manifests = await requireWithCatch(requireableExtensions);\n if (!error) {\n return compact(manifests);\n }\n if (error.code === 'MODULE_NOT_FOUND') {\n this.logger.warn(\n `failed loading aspects from capsules due to MODULE_NOT_FOUND error, re-creating the capsules and trying again`\n );\n const resolvedAspectsAgain = await this.getResolvedAspects(components, {\n skipIfExists: false,\n });\n const manifestAgain = await requireWithCatch(resolvedAspectsAgain);\n if (!error) {\n return compact(manifestAgain);\n }\n }\n\n this.aspectLoader.handleExtensionLoadingError(error, erroredId, throwOnError);\n return [];\n }\n\n getAspectCapsulePath() {\n return `${this.path}-aspects`;\n }\n\n private async resolveUserAspects(runtimeName?: string, userAspectsIds?: ComponentID[]): Promise<AspectDefinition[]> {\n if (!userAspectsIds || !userAspectsIds.length) return [];\n const components = await this.getMany(userAspectsIds);\n const network = await this.isolator.isolateComponents(\n userAspectsIds,\n {\n baseDir: this.getAspectCapsulePath(),\n skipIfExists: true,\n // for some reason this needs to be false, otherwise tagging components in some workspaces\n // result in error during Preview task:\n // \"No matching version found for <some-component-on-the-workspace>\"\n seedersOnly: false,\n includeFromNestedHosts: true,\n installOptions: { copyPeerToRuntimeOnRoot: true },\n host: this,\n },\n this.legacyScope\n );\n const capsules = network.seedersCapsules;\n const aspectDefs = await this.aspectLoader.resolveAspects(components, async (component) => {\n const capsule = capsules.getCapsule(component.id);\n if (!capsule) throw new Error(`failed loading aspect: ${component.id.toString()}`);\n const localPath = capsule.path;\n\n return {\n aspectPath: localPath,\n runtimePath: runtimeName ? await this.aspectLoader.getRuntimePath(component, localPath, runtimeName) : null,\n };\n });\n return aspectDefs;\n }\n\n async resolveAspects(runtimeName?: string, componentIds?: ComponentID[]): Promise<AspectDefinition[]> {\n const userAspectsIds = componentIds || (await this.resolveMultipleComponentIds(this.aspectLoader.getUserAspects()));\n const withoutLocalAspects = userAspectsIds.filter((aspectId) => {\n return !this.localAspects.find((localAspect) => {\n return localAspect.includes(aspectId.fullName.replace('/', '.'));\n });\n });\n const userAspectsDefs = await this.resolveUserAspects(runtimeName, withoutLocalAspects);\n const localResolved = await this.resolveLocalAspects(this.localAspects, runtimeName);\n const coreAspects = await this.aspectLoader.getCoreAspectDefs(runtimeName);\n\n const allDefs = userAspectsDefs.concat(coreAspects).concat(localResolved);\n const uniqDefs = uniqBy(allDefs, (def) => `${def.aspectPath}-${def.runtimePath}`);\n let defs = uniqDefs;\n if (runtimeName) {\n defs = defs.filter((def) => def.runtimePath);\n }\n\n return defs;\n }\n\n async getLegacyGraph(ids?: ComponentID[]): Promise<LegacyGraph> {\n if (!ids || ids.length < 1) ids = (await this.list()).map((comp) => comp.id) || [];\n const legacyIds = ids.map((id) => {\n let bitId = id._legacy;\n // The resolve bitId in scope will remove the scope name in case it's the same as the scope\n // We restore it back to use it correctly in the legacy code.\n if (!bitId.hasScope()) {\n bitId = bitId.changeScope(this.legacyScope?.name);\n }\n return bitId;\n });\n\n const legacyGraph = await buildOneGraphForComponentsUsingScope(legacyIds, this.legacyScope);\n return legacyGraph;\n }\n\n /**\n * import components into the scope.\n */\n async import(\n ids: ComponentID[],\n {\n useCache = true,\n throwIfNotExist = false,\n reFetchUnBuiltVersion = true,\n }: {\n /**\n * if the component exists locally, don't go to the server to search for updates.\n */\n useCache?: boolean;\n throwIfNotExist?: boolean;\n /**\n * if the Version objects exists locally, but its `buildStatus` is Pending or Failed, reach the remote to find\n * whether the version was already built there.\n */\n reFetchUnBuiltVersion?: boolean;\n } = {}\n ): Promise<Component[]> {\n const legacyIds = ids.map((id) => {\n const legacyId = id._legacy;\n if (legacyId.scope === this.name) return legacyId.changeScope(null);\n return legacyId;\n });\n\n const withoutOwnScopeAndLocals = legacyIds.filter((id) => {\n return id.scope !== this.name && id.hasScope();\n });\n await this.legacyScope.import(ComponentsIds.fromArray(withoutOwnScopeAndLocals), useCache, reFetchUnBuiltVersion);\n\n return this.getMany(ids, throwIfNotExist);\n }\n\n async get(id: ComponentID): Promise<Component | undefined> {\n return this.componentLoader.get(id);\n }\n\n async getFromConsumerComponent(consumerComponent: ConsumerComponent): Promise<Component> {\n return this.componentLoader.getFromConsumerComponent(consumerComponent);\n }\n\n /**\n * get a component from a remote without importing it\n */\n async getRemoteComponent(id: ComponentID): Promise<Component> {\n return this.componentLoader.getRemoteComponent(id);\n }\n\n /**\n * list all components in the scope.\n */\n async list(filter?: { offset: number; limit: number }, includeCache = false): Promise<Component[]> {\n const componentsIds = await this.listIds(includeCache);\n\n return this.getMany(\n filter && filter.limit ? slice(componentsIds, filter.offset, filter.offset + filter.limit) : componentsIds\n );\n }\n\n /**\n * for now, list of invalid components are mostly useful for the workspace.\n * in the future, this can return components that failed to load in the scope due to objects file\n * corruption or similar issues.\n */\n async listInvalid() {\n return [];\n }\n\n /**\n * get ids of all scope components.\n * @param includeCache whether or not include components that their scope-name is different than the current scope-name\n */\n async listIds(includeCache = false): Promise<ComponentID[]> {\n const allModelComponents = await this.legacyScope.list();\n const modelComponentsToList = includeCache\n ? allModelComponents\n : allModelComponents.filter((modelComponent) => this.exists(modelComponent));\n\n const ids = modelComponentsToList.map((component) =>\n ComponentID.fromLegacy(component.toBitIdWithLatestVersion(), component.scope || this.name)\n );\n this.logger.debug(`scope listIds: componentsIds after filter scope: ${JSON.stringify(ids, undefined, 2)}`);\n return ids;\n }\n\n /**\n * Check if a specific id exist in the scope\n * @param componentId\n */\n async hasId(componentId: ComponentID, includeCache = false): Promise<boolean> {\n if (!includeCache && componentId.scope !== this.name) return false;\n const opts = {\n includeOrphaned: true,\n includeVersion: true,\n };\n\n return this.legacyScope.hasId(componentId._legacy, opts);\n }\n\n async hasIdNested(componentId: ComponentID, includeCache = false): Promise<boolean> {\n return this.hasId(componentId, includeCache);\n }\n\n /**\n * determine whether a component exists in the scope.\n */\n exists(modelComponent: ModelComponent) {\n return modelComponent.scope === this.name;\n }\n\n async getMany(ids: ComponentID[], throwIfNotExist = false): Promise<Component[]> {\n const idsWithoutEmpty = compact(ids);\n const componentsP = mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n return throwIfNotExist ? this.getOrThrow(id) : this.get(id);\n });\n const components = await componentsP;\n return compact(components);\n }\n\n /**\n * load components from a scope and load their aspects\n */\n async loadMany(ids: ComponentID[]): Promise<Component[]> {\n const components = await mapSeries(ids, (id) => this.load(id));\n return compact(components);\n }\n\n /**\n * get a component and throw an exception if not found.\n * @param id component id\n */\n async getOrThrow(id: ComponentID): Promise<Component> {\n const component = await this.get(id);\n if (!component) throw new ComponentNotFound(id);\n return component;\n }\n\n /**\n * returns a specific state of a component.\n * @param id component ID.\n * @param hash state hash.\n */\n async getState(id: ComponentID, hash: string): Promise<State> {\n return this.componentLoader.getState(id, hash);\n }\n\n async getSnap(id: ComponentID, hash: string): Promise<Snap> {\n return this.componentLoader.getSnap(id, hash);\n }\n\n async getLogs(id: ComponentID): Promise<ComponentLog[]> {\n return this.legacyScope.loadComponentLogs(id._legacy);\n }\n\n /**\n * resolve a component ID.\n * @param id component ID.\n */\n async resolveComponentId(id: string | ComponentID | BitId): Promise<ComponentID> {\n const idStr = id.toString();\n const component = await this.legacyScope.loadModelComponentByIdStr(idStr);\n const getIdToCheck = () => {\n if (component) return idStr; // component exists in the scope with the scope-name.\n if (idStr.startsWith(`${this.name}/`)) {\n // component with the full name doesn't exist in the scope, it might be locally tagged\n return idStr.replace(`${this.name}/`, '');\n }\n return idStr;\n };\n const IdToCheck = getIdToCheck();\n const legacyId = id instanceof BitId ? id : await this.legacyScope.getParsedId(IdToCheck);\n if (!legacyId.scope) return ComponentID.fromLegacy(legacyId, this.name);\n return ComponentID.fromLegacy(legacyId);\n }\n\n async resolveMultipleComponentIds(ids: Array<string | ComponentID | BitId>) {\n return Promise.all(ids.map(async (id) => this.resolveComponentId(id)));\n }\n\n /**\n * load components into the scope through a variants pattern.\n */\n async byPattern(patterns: string[], scope = '**'): Promise<Component[]> {\n const ids = await this.listIds(true);\n const finalPatterns = patterns.map((pattern) => `${scope}/${pattern || '**'}`);\n const targetIds = ids.filter((id) => {\n return finalPatterns.some((pattern) => isMatchNamespacePatternItem(id.toStringWithoutVersion(), pattern).match);\n });\n\n const components = await this.getMany(targetIds);\n return components;\n }\n\n async getExactVersionBySemverRange(id: ComponentID, range: string): Promise<string | undefined> {\n const modelComponent = await this.legacyScope.getModelComponent(id._legacy);\n const versions = modelComponent.listVersions();\n return semver.maxSatisfying<string>(versions, range, { includePrerelease: true })?.toString();\n }\n\n async resumeExport(exportId: string, remotes: string[]): Promise<string[]> {\n return resumeExport(this.legacyScope, exportId, remotes);\n }\n\n async resolveId(id: string): Promise<ComponentID> {\n const legacyId = await this.legacyScope.getParsedId(id);\n return ComponentID.fromLegacy(legacyId);\n }\n\n // TODO: add new API for this\n async _legacyRemotes(): Promise<Remotes> {\n return getScopeRemotes(this.legacyScope);\n }\n\n /**\n * get a component and load its aspect\n */\n async load(id: ComponentID): Promise<Component | undefined> {\n const component = await this.get(id);\n if (!component) return undefined;\n const aspectIds = component.state.aspects.ids;\n // load components from type aspects as aspects.\n if (this.aspectLoader.isAspectComponent(component)) {\n aspectIds.push(component.id.toString());\n }\n await this.loadAspects(aspectIds, true);\n\n return component;\n }\n\n async loadComponentsAspect(component: Component) {\n const aspectIds = component.state.aspects.ids;\n await this.loadAspects(aspectIds, true);\n }\n\n /**\n * declare the slots of scope extension.\n */\n static slots = [\n Slot.withType<OnTag>(),\n Slot.withType<OnPostPut>(),\n Slot.withType<OnPostDelete>(),\n Slot.withType<OnPostExport>(),\n Slot.withType<OnPostObjectsPersist>(),\n Slot.withType<OnPreFetchObjects>(),\n ];\n static runtime = MainRuntime;\n\n static dependencies = [\n ComponentAspect,\n UIAspect,\n GraphqlAspect,\n CLIAspect,\n IsolatorAspect,\n AspectLoaderAspect,\n ExpressAspect,\n LoggerAspect,\n EnvsAspect,\n ];\n\n static defaultConfig: ScopeConfig = {\n httpTimeOut: 600000,\n };\n\n static async provider(\n [componentExt, ui, graphql, cli, isolator, aspectLoader, express, loggerMain, envs]: [\n ComponentMain,\n UiMain,\n GraphqlMain,\n CLIMain,\n IsolatorMain,\n AspectLoaderMain,\n ExpressMain,\n LoggerMain,\n EnvsMain\n ],\n config: ScopeConfig,\n [tagSlot, postPutSlot, postDeleteSlot, postExportSlot, postObjectsPersistSlot, preFetchObjectsSlot]: [\n TagRegistry,\n OnPostPutSlot,\n OnPostDeleteSlot,\n OnPostExportSlot,\n OnPostObjectsPersistSlot,\n OnPreFetchObjectsSlot\n ],\n harmony: Harmony\n ) {\n const bitConfig: any = harmony.config.get('teambit.harmony/bit');\n const legacyScope = await loadScopeIfExist(bitConfig?.cwd);\n if (!legacyScope) {\n return undefined;\n }\n\n const logger = loggerMain.createLogger(ScopeAspect.id);\n const scope = new ScopeMain(\n harmony,\n legacyScope,\n componentExt,\n config,\n tagSlot,\n postPutSlot,\n postDeleteSlot,\n postExportSlot,\n postObjectsPersistSlot,\n preFetchObjectsSlot,\n isolator,\n aspectLoader,\n logger,\n envs\n );\n cli.registerOnStart(async (hasWorkspace: boolean) => {\n if (hasWorkspace) return;\n await scope.loadAspects(aspectLoader.getNotLoadedConfiguredExtensions());\n });\n\n const onPutHook = async (ids: string[], lanes: Lane[], authData?: AuthData): Promise<void> => {\n logger.debug(`onPutHook, started. (${ids.length} components)`);\n scope.componentLoader.clearCache();\n const componentIds = await scope.resolveMultipleComponentIds(ids);\n const fns = postPutSlot.values();\n const data = {\n ids: componentIds,\n lanes,\n };\n const metadata = { auth: authData };\n await Promise.all(fns.map(async (fn) => fn(data, metadata)));\n logger.debug(`onPutHook, completed. (${ids.length} components)`);\n };\n\n const getAuthData = (): AuthData | undefined => {\n const token = Http.getToken();\n return token ? { type: DEFAULT_AUTH_TYPE, credentials: token } : undefined;\n };\n\n const onPostExportHook = async (ids: BitId[], lanes: Lane[]): Promise<void> => {\n logger.debug(`onPostExportHook, started. (${ids.length} components)`);\n const componentIds = await scope.resolveMultipleComponentIds(ids);\n const fns = postExportSlot.values();\n const data = {\n ids: componentIds,\n lanes,\n };\n const metadata = { auth: getAuthData() };\n await Promise.all(fns.map(async (fn) => fn(data, metadata)));\n logger.debug(`onPostExportHook, completed. (${ids.length} components)`);\n };\n\n const onPostObjectsPersistHook = async (): Promise<void> => {\n logger.debug(`onPostObjectsPersistHook, started`);\n const fns = postObjectsPersistSlot.values();\n const metadata = { auth: getAuthData() };\n await Promise.all(fns.map(async (fn) => fn(undefined, metadata)));\n logger.debug(`onPostObjectsPersistHook, completed`);\n };\n\n ExportPersist.onPutHook = onPutHook;\n PostSign.onPutHook = onPutHook;\n Scope.onPostExport = onPostExportHook;\n Repository.onPostObjectsPersist = onPostObjectsPersistHook;\n\n express.register([\n new PutRoute(scope, postPutSlot),\n new FetchRoute(scope, logger),\n new ActionRoute(scope),\n new DeleteRoute(scope),\n ]);\n // @ts-ignore - @ran to implement the missing functions and remove it\n ui.registerUiRoot(new ScopeUIRoot(scope));\n graphql.register(scopeSchema(scope));\n componentExt.registerHost(scope);\n\n return scope;\n }\n}\n\nScopeAspect.addRuntime(ScopeMain);\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/scope",
3
- "version": "0.0.536",
3
+ "version": "0.0.543",
4
4
  "homepage": "https://bit.dev/teambit/scope/scope",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.scope",
8
8
  "name": "scope",
9
- "version": "0.0.536"
9
+ "version": "0.0.543"
10
10
  },
11
11
  "dependencies": {
12
12
  "semver": "7.3.4",
@@ -23,49 +23,49 @@
23
23
  "@teambit/base-ui.surfaces.split-pane.hover-splitter": "1.0.0",
24
24
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
25
25
  "@teambit/base-ui.graph.tree.recursive-tree": "1.0.0",
26
- "@teambit/scope.models.scope-model": "0.0.61",
27
- "@teambit/scope.ui.hooks.scope-context": "0.0.61",
28
- "@teambit/component": "0.0.536",
29
- "@teambit/logger": "0.0.457",
30
- "@teambit/aspect-loader": "0.0.536",
31
- "@teambit/builder": "0.0.536",
26
+ "@teambit/scope.models.scope-model": "0.0.65",
27
+ "@teambit/scope.ui.hooks.scope-context": "0.0.65",
28
+ "@teambit/component": "0.0.543",
29
+ "@teambit/logger": "0.0.461",
30
+ "@teambit/aspect-loader": "0.0.543",
31
+ "@teambit/builder": "0.0.543",
32
32
  "@teambit/cli": "0.0.380",
33
- "@teambit/compiler": "0.0.536",
34
- "@teambit/envs": "0.0.536",
35
- "@teambit/express": "0.0.461",
36
- "@teambit/graphql": "0.0.536",
37
- "@teambit/harmony.modules.requireable-component": "0.0.449",
38
- "@teambit/isolator": "0.0.536",
33
+ "@teambit/compiler": "0.0.543",
34
+ "@teambit/envs": "0.0.543",
35
+ "@teambit/express": "0.0.465",
36
+ "@teambit/graphql": "0.0.543",
37
+ "@teambit/harmony.modules.requireable-component": "0.0.453",
38
+ "@teambit/isolator": "0.0.543",
39
39
  "@teambit/legacy-bit-id": "0.0.369",
40
- "@teambit/ui": "0.0.536",
41
- "@teambit/workspace.modules.match-pattern": "0.0.451",
42
- "@teambit/command-bar": "0.0.536",
40
+ "@teambit/ui": "0.0.543",
41
+ "@teambit/workspace.modules.match-pattern": "0.0.455",
42
+ "@teambit/command-bar": "0.0.543",
43
43
  "@teambit/component-tree": "0.0.366",
44
44
  "@teambit/design.ui.surfaces.menu.link-item": "0.0.374",
45
- "@teambit/react-router": "0.0.536",
46
- "@teambit/sidebar": "0.0.536",
47
- "@teambit/ui-foundation.ui.main-dropdown": "0.0.451",
48
- "@teambit/ui-foundation.ui.menu": "0.0.451",
49
- "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.453",
45
+ "@teambit/react-router": "0.0.543",
46
+ "@teambit/sidebar": "0.0.543",
47
+ "@teambit/ui-foundation.ui.main-dropdown": "0.0.455",
48
+ "@teambit/ui-foundation.ui.menu": "0.0.455",
49
+ "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.457",
50
50
  "@teambit/bit-error": "0.0.366",
51
- "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.451",
52
- "@teambit/scope.ui.hooks.use-scope": "0.0.62",
53
- "@teambit/ui-foundation.ui.buttons.collapser": "0.0.156",
54
- "@teambit/ui-foundation.ui.corner": "0.0.458",
55
- "@teambit/ui-foundation.ui.hooks.use-is-mobile": "0.0.144",
56
- "@teambit/ui-foundation.ui.top-bar": "0.0.453",
51
+ "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.455",
52
+ "@teambit/scope.ui.hooks.use-scope": "0.0.66",
53
+ "@teambit/ui-foundation.ui.buttons.collapser": "0.0.160",
54
+ "@teambit/ui-foundation.ui.corner": "0.0.462",
55
+ "@teambit/ui-foundation.ui.hooks.use-is-mobile": "0.0.148",
56
+ "@teambit/ui-foundation.ui.top-bar": "0.0.457",
57
57
  "@teambit/design.ui.styles.ellipsis": "0.0.346",
58
58
  "@teambit/design.ui.styles.muted-italic": "0.0.35",
59
- "@teambit/ui-foundation.ui.full-loader": "0.0.451",
60
- "@teambit/ui-foundation.ui.side-bar": "0.0.455",
61
- "@teambit/ui-foundation.ui.tree.drawer": "0.0.451",
62
- "@teambit/explorer.ui.gallery.component-card": "0.0.454",
63
- "@teambit/explorer.ui.gallery.component-grid": "0.0.451",
64
- "@teambit/preview.ui.preview-placeholder": "0.0.451",
65
- "@teambit/scope.ui.empty-scope": "0.0.454",
66
- "@teambit/scope.ui.scope-details": "0.0.460",
67
- "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.70",
68
- "@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.70"
59
+ "@teambit/ui-foundation.ui.full-loader": "0.0.455",
60
+ "@teambit/ui-foundation.ui.side-bar": "0.0.459",
61
+ "@teambit/ui-foundation.ui.tree.drawer": "0.0.455",
62
+ "@teambit/explorer.ui.gallery.component-card": "0.0.458",
63
+ "@teambit/explorer.ui.gallery.component-grid": "0.0.455",
64
+ "@teambit/preview.ui.preview-placeholder": "0.0.455",
65
+ "@teambit/scope.ui.empty-scope": "0.0.458",
66
+ "@teambit/scope.ui.scope-details": "0.0.464",
67
+ "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.74",
68
+ "@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.74"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@types/semver": "7.3.4",
@@ -11,7 +11,7 @@ import { Component, ComponentAspect, ComponentFactory, ComponentID, Snap, State
11
11
  import type { GraphqlMain } from '@teambit/graphql';
12
12
  import { GraphqlAspect } from '@teambit/graphql';
13
13
  import { Harmony, Slot, SlotRegistry, ExtensionManifest, Aspect } from '@teambit/harmony';
14
- import { IsolatorAspect, IsolatorMain } from '@teambit/isolator';
14
+ import { Capsule, IsolatorAspect, IsolatorMain } from '@teambit/isolator';
15
15
  import { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';
16
16
  import { ExpressAspect, ExpressMain } from '@teambit/express';
17
17
  import type { UiMain } from '@teambit/ui';
@@ -25,6 +25,7 @@ import LegacyScope, { LegacyOnTagResult, OnTagFunc, OnTagOpts } from '@teambit/l
25
25
  import { ComponentLog } from '@teambit/legacy/dist/scope/models/model-component';
26
26
  import { loadScopeIfExist } from '@teambit/legacy/dist/scope/scope-loader';
27
27
  import { PersistOptions } from '@teambit/legacy/dist/scope/types';
28
+ import { DEFAULT_DIST_DIRNAME } from '@teambit/legacy/dist/constants';
28
29
  import LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';
29
30
  import { ExportPersist, PostSign } from '@teambit/legacy/dist/scope/actions';
30
31
  import { getScopeRemotes } from '@teambit/legacy/dist/scope/scope-remotes';
@@ -401,7 +402,7 @@ export class ScopeMain implements ComponentFactory {
401
402
  await this.loadAspectFromPath(localAspects);
402
403
  const componentIds = await this.resolveMultipleComponentIds(aspectIds);
403
404
  if (!componentIds || !componentIds.length) return [];
404
- const components = await this.import(componentIds);
405
+ const components = await this.import(componentIds, { reFetchUnBuiltVersion: false });
405
406
 
406
407
  return components;
407
408
  }
@@ -429,6 +430,7 @@ export class ScopeMain implements ComponentFactory {
429
430
  {
430
431
  baseDir: this.getAspectCapsulePath(),
431
432
  skipIfExists,
433
+ seedersOnly: true,
432
434
  includeFromNestedHosts: true,
433
435
  installOptions: { copyPeerToRuntimeOnRoot: true },
434
436
  },
@@ -444,6 +446,7 @@ export class ScopeMain implements ComponentFactory {
444
446
  // eslint-disable-next-line global-require, import/no-dynamic-require
445
447
  const plugins = this.aspectLoader.getPlugins(capsule.component, capsule.path);
446
448
  if (plugins.has()) {
449
+ await this.compileIfNoDist(capsule, capsule.component);
447
450
  return plugins.load(MainRuntime.name);
448
451
  }
449
452
  // eslint-disable-next-line global-require, import/no-dynamic-require
@@ -461,10 +464,14 @@ export class ScopeMain implements ComponentFactory {
461
464
  });
462
465
  }
463
466
 
464
- private async tryCompile(requirableAspect: RequireableComponent) {
465
- const env = this.envs.getEnv(requirableAspect.component);
467
+ private async compileIfNoDist(capsule: Capsule, component: Component) {
468
+ const env = this.envs.getEnv(component);
466
469
  const compiler: Compiler = env.env.getCompiler();
467
- const compiledCode = requirableAspect.component.filesystem.files.flatMap((file) => {
470
+ const distDir = compiler?.distDir || DEFAULT_DIST_DIRNAME;
471
+ const distExists = existsSync(join(capsule.path, distDir));
472
+ if (distExists) return;
473
+
474
+ const compiledCode = component.filesystem.files.flatMap((file) => {
468
475
  if (!compiler.isFileSupported(file.path)) {
469
476
  return [
470
477
  {
@@ -474,10 +481,10 @@ export class ScopeMain implements ComponentFactory {
474
481
  ];
475
482
  }
476
483
 
477
- if (compiler.transpileFile && requirableAspect.capsule) {
484
+ if (compiler.transpileFile) {
478
485
  return compiler.transpileFile(file.contents.toString('utf8'), {
479
486
  filePath: file.path,
480
- componentDir: requirableAspect.capsule.path,
487
+ componentDir: capsule.path,
481
488
  });
482
489
  }
483
490
 
@@ -487,11 +494,16 @@ export class ScopeMain implements ComponentFactory {
487
494
  await Promise.all(
488
495
  compact(compiledCode).map((compiledFile) => {
489
496
  const path = compiler.getDistPathBySrcPath(compiledFile.outputPath);
490
- return requirableAspect.capsule?.outputFile(path, compiledFile.outputText);
497
+ return capsule?.outputFile(path, compiledFile.outputText);
491
498
  })
492
499
  );
493
500
  }
494
501
 
502
+ private async tryCompile(requirableAspect: RequireableComponent) {
503
+ if (requirableAspect.capsule) return this.compileIfNoDist(requirableAspect.capsule, requirableAspect.component);
504
+ return undefined;
505
+ }
506
+
495
507
  async requireAspects(components: Component[], throwOnError = false): Promise<Array<ExtensionManifest | Aspect>> {
496
508
  const requireableExtensions = await this.getResolvedAspects(components);
497
509
  if (!requireableExtensions) {
@@ -622,7 +634,25 @@ export class ScopeMain implements ComponentFactory {
622
634
  /**
623
635
  * import components into the scope.
624
636
  */
625
- async import(ids: ComponentID[], useCache = true, throwIfNotExist = false): Promise<Component[]> {
637
+ async import(
638
+ ids: ComponentID[],
639
+ {
640
+ useCache = true,
641
+ throwIfNotExist = false,
642
+ reFetchUnBuiltVersion = true,
643
+ }: {
644
+ /**
645
+ * if the component exists locally, don't go to the server to search for updates.
646
+ */
647
+ useCache?: boolean;
648
+ throwIfNotExist?: boolean;
649
+ /**
650
+ * if the Version objects exists locally, but its `buildStatus` is Pending or Failed, reach the remote to find
651
+ * whether the version was already built there.
652
+ */
653
+ reFetchUnBuiltVersion?: boolean;
654
+ } = {}
655
+ ): Promise<Component[]> {
626
656
  const legacyIds = ids.map((id) => {
627
657
  const legacyId = id._legacy;
628
658
  if (legacyId.scope === this.name) return legacyId.changeScope(null);
@@ -632,7 +662,7 @@ export class ScopeMain implements ComponentFactory {
632
662
  const withoutOwnScopeAndLocals = legacyIds.filter((id) => {
633
663
  return id.scope !== this.name && id.hasScope();
634
664
  });
635
- await this.legacyScope.import(ComponentsIds.fromArray(withoutOwnScopeAndLocals), useCache);
665
+ await this.legacyScope.import(ComponentsIds.fromArray(withoutOwnScopeAndLocals), useCache, reFetchUnBuiltVersion);
636
666
 
637
667
  return this.getMany(ids, throwIfNotExist);
638
668
  }