@teambit/isolator 0.0.1083 → 0.0.1085

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.
@@ -69,6 +69,15 @@ export declare type IsolateComponentsOptions = CreateGraphOptions & {
69
69
  * create a new capsule with a random string attached to the path suffix
70
70
  */
71
71
  alwaysNew?: boolean;
72
+ /**
73
+ * If this is true -
74
+ * the isolator will check if there are missing capsules in the base dir
75
+ * if yes, it will create the capsule in a special dir inside a dir with the current date (without time)
76
+ * then inside that dir, it will create a dir with a random hash
77
+ * at the end of the process it will move missing capsules from the temp dir to the base dir so they can be used in
78
+ * the next iteration
79
+ */
80
+ useDatedDirs?: boolean;
72
81
  /**
73
82
  * installation options
74
83
  */
@@ -104,9 +113,17 @@ export declare type IsolateComponentsOptions = CreateGraphOptions & {
104
113
  * Force specific host to get the component from.
105
114
  */
106
115
  host?: ComponentFactory;
116
+ /**
117
+ * Dir where to read the package manager config from
118
+ * usually used when running package manager in the capsules dir to use the config
119
+ * from the workspace dir
120
+ */
107
121
  packageManagerConfigRootDir?: string;
108
122
  context?: IsolationContext;
109
123
  };
124
+ declare type GetCapsuleDirOpts = Pick<IsolateComponentsOptions, 'useHash' | 'rootBaseDir' | 'useDatedDirs'> & {
125
+ baseDir: string;
126
+ };
110
127
  export declare class IsolatorMain {
111
128
  private dependencyResolver;
112
129
  private logger;
@@ -129,8 +146,15 @@ export declare class IsolatorMain {
129
146
  AspectLoaderMain
130
147
  ]): Promise<IsolatorMain>;
131
148
  constructor(dependencyResolver: DependencyResolverMain, logger: Logger, componentAspect: ComponentMain, graph: GraphMain, globalConfig: GlobalConfigMain, aspectLoader: AspectLoaderMain);
132
- isolateComponents(seeders: ComponentID[], opts?: IsolateComponentsOptions, legacyScope?: LegacyScope): Promise<Network>;
149
+ isolateComponents(seeders: ComponentID[], opts: IsolateComponentsOptions, legacyScope?: LegacyScope): Promise<Network>;
133
150
  private createGraph;
151
+ private registerMoveCapsuleOnProcessExit;
152
+ /**
153
+ * Re-create the core aspects links in the real capsule dir
154
+ * This is required mainly for the first time when that folder is empty
155
+ */
156
+ private relinkCoreAspectsInCapsuleDir;
157
+ private shouldUseDatedDirs;
134
158
  /**
135
159
  *
136
160
  * @param originalCapsule the capsule that contains the original component
@@ -156,7 +180,9 @@ export declare class IsolatorMain {
156
180
  private getWorkspacePeersOnlyPolicy;
157
181
  private toComponentMap;
158
182
  list(workspacePath: string): Promise<ListResults>;
183
+ /** @deprecated use the new function signature with an object parameter instead */
159
184
  getCapsulesRootDir(baseDir: string, rootBaseDir?: string, useHash?: boolean): PathOsBasedAbsolute;
185
+ getCapsulesRootDir(getCapsuleDirOpts: GetCapsuleDirOpts): PathOsBasedAbsolute;
160
186
  deleteCapsules(capsuleBaseDir: string | null): Promise<string>;
161
187
  private createCapsulesFromComponents;
162
188
  private getRootDirOfAllCapsules;
@@ -16,6 +16,13 @@ function _defineProperty2() {
16
16
  };
17
17
  return data;
18
18
  }
19
+ function _uuid() {
20
+ const data = require("uuid");
21
+ _uuid = function () {
22
+ return data;
23
+ };
24
+ return data;
25
+ }
19
26
  function _cli() {
20
27
  const data = require("@teambit/cli");
21
28
  _cli = function () {
@@ -65,6 +72,13 @@ function _componentPackageVersion() {
65
72
  };
66
73
  return data;
67
74
  }
75
+ function _dependenciesFs() {
76
+ const data = require("@teambit/dependencies.fs.linked-dependencies");
77
+ _dependenciesFs = function () {
78
+ return data;
79
+ };
80
+ return data;
81
+ }
68
82
  function _graph() {
69
83
  const data = require("@teambit/graph");
70
84
  _graph = function () {
@@ -248,7 +262,7 @@ class IsolatorMain {
248
262
 
249
263
  // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists
250
264
  // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host
251
- async isolateComponents(seeders, opts = {}, legacyScope) {
265
+ async isolateComponents(seeders, opts, legacyScope) {
252
266
  var _opts$host;
253
267
  const host = this.componentAspect.getHost();
254
268
  this.logger.debug(`isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(Object.assign({}, opts, {
@@ -266,9 +280,23 @@ class IsolatorMain {
266
280
  return comp.id;
267
281
  });
268
282
  opts.baseDir = opts.baseDir || host.path;
269
- const capsuleList = await this.createCapsules(componentsToIsolate, opts, legacyScope);
270
- const capsuleDir = this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir, opts.useHash);
283
+ const shouldUseDatedDirs = this.shouldUseDatedDirs(componentsToIsolate, opts);
284
+ const capsuleDir = this.getCapsulesRootDir(_objectSpread(_objectSpread({}, opts), {}, {
285
+ useDatedDirs: shouldUseDatedDirs,
286
+ baseDir: opts.baseDir || ''
287
+ }));
288
+ const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope);
271
289
  this.logger.debug(`creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`);
290
+ if (shouldUseDatedDirs) {
291
+ const targetCapsuleDir = this.getCapsulesRootDir(_objectSpread(_objectSpread({}, opts), {}, {
292
+ useDatedDirs: false,
293
+ baseDir: opts.baseDir || ''
294
+ }));
295
+ this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir);
296
+ // TODO: ideally this should be inside the on process exit hook
297
+ // but this is an async op which make it a bit hard
298
+ await this.relinkCoreAspectsInCapsuleDir(targetCapsuleDir);
299
+ }
272
300
  return new (_network().Network)(capsuleList, seedersWithVersions, capsuleDir);
273
301
  }
274
302
  async createGraph(seeders, opts = {}) {
@@ -292,6 +320,67 @@ class IsolatorMain {
292
320
  const existingComps = await host.getMany((0, _lodash().compact)(existingCompsIds));
293
321
  return existingComps;
294
322
  }
323
+ registerMoveCapsuleOnProcessExit(datedCapsuleDir, targetCapsuleDir) {
324
+ this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);
325
+ process.on('exit', () => {
326
+ this.logger.info(`start moving capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);
327
+ const allDirs = _fsExtra().default.readdirSync(datedCapsuleDir, {
328
+ withFileTypes: true
329
+ }).filter(dir => dir.isDirectory() && dir.name !== 'node_modules');
330
+ allDirs.forEach(dir => {
331
+ const targetDir = _path2().default.join(targetCapsuleDir, dir.name);
332
+ if (!_fsExtra().default.pathExistsSync(_path2().default.join(targetCapsuleDir, dir.name))) {
333
+ const sourceDir = _path2().default.join(datedCapsuleDir, dir.name);
334
+ this.logger.info(`moving specific capsule from ${sourceDir} to ${targetDir}`);
335
+ _fsExtra().default.moveSync(sourceDir, targetDir);
336
+ }
337
+ });
338
+ });
339
+ }
340
+
341
+ /**
342
+ * Re-create the core aspects links in the real capsule dir
343
+ * This is required mainly for the first time when that folder is empty
344
+ */
345
+ async relinkCoreAspectsInCapsuleDir(capsulesDir) {
346
+ const linkingOptions = {
347
+ linkTeambitBit: true,
348
+ linkCoreAspects: true
349
+ };
350
+ const linker = this.dependencyResolver.getLinker({
351
+ rootDir: capsulesDir,
352
+ linkingOptions,
353
+ linkingContext: {
354
+ inCapsule: true
355
+ }
356
+ });
357
+ const {
358
+ linkedRootDeps
359
+ } = await linker.calculateLinkedDeps(capsulesDir, _component().ComponentMap.create([]), linkingOptions);
360
+ return (0, _dependenciesFs().createLinks)(capsulesDir, linkedRootDeps);
361
+ }
362
+ shouldUseDatedDirs(componentsToIsolate, opts) {
363
+ var _opts$installOptions;
364
+ if (!opts.useDatedDirs) return false;
365
+ // No need to use the dated dirs in case we anyway create new capsule for each one
366
+ if (opts.alwaysNew) return false;
367
+ // if (opts.skipIfExists) return false;
368
+ // no point to use dated dir in case of getExistingAsIs as it will be just always empty
369
+ if (opts.getExistingAsIs) return false;
370
+ // Do not use the dated dirs in case we don't use nesting, as the capsules
371
+ // will not work after moving to the real dir
372
+ if (!((_opts$installOptions = opts.installOptions) !== null && _opts$installOptions !== void 0 && _opts$installOptions.useNesting)) return false;
373
+ // Getting the real capsule dir to check if all capsules exists
374
+ const realCapsulesDir = this.getCapsulesRootDir(_objectSpread(_objectSpread({}, opts), {}, {
375
+ useDatedDirs: false,
376
+ baseDir: opts.baseDir || ''
377
+ }));
378
+ const allCapsulesExists = componentsToIsolate.every(component => {
379
+ const capsuleDir = _path2().default.join(realCapsulesDir, _capsule().Capsule.getCapsuleDirName(component));
380
+ return _fsExtra().default.existsSync(capsuleDir);
381
+ });
382
+ return !allCapsulesExists;
383
+ }
295
384
 
296
385
  /**
297
386
  *
@@ -316,10 +405,9 @@ class IsolatorMain {
316
405
  * @param opts
317
406
  * @param legacyScope
318
407
  */
319
- async createCapsules(components, opts, legacyScope) {
320
- var _opts$context, _opts$installOptions;
408
+ async createCapsules(components, capsulesDir, opts, legacyScope) {
409
+ var _opts$context, _opts$installOptions2;
321
410
  this.logger.debug(`createCapsules, ${components.length} components`);
322
- const capsulesDir = this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir, opts.useHash);
323
411
  let longProcessLogger;
324
412
  if ((_opts$context = opts.context) !== null && _opts$context !== void 0 && _opts$context.aspects) {
325
413
  var _opts$host2;
@@ -328,7 +416,7 @@ class IsolatorMain {
328
416
  longProcessLogger = this.logger.createLongProcessLogger(`ensuring ${_chalk().default.cyan(components.length.toString())} capsule(s) for all envs and aspects for ${_chalk().default.bold(wsPath)} at ${_chalk().default.bold(capsulesDir)}`);
329
417
  }
330
418
  const installOptions = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_ISOLATE_INSTALL_OPTIONS), opts.installOptions), {}, {
331
- useNesting: this.dependencyResolver.isolatedCapsules() && ((_opts$installOptions = opts.installOptions) === null || _opts$installOptions === void 0 ? void 0 : _opts$installOptions.useNesting)
419
+ useNesting: this.dependencyResolver.isolatedCapsules() && ((_opts$installOptions2 = opts.installOptions) === null || _opts$installOptions2 === void 0 ? void 0 : _opts$installOptions2.useNesting)
332
420
  });
333
421
  if (!opts.emptyRootDir) {
334
422
  installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();
@@ -531,7 +619,9 @@ class IsolatorMain {
531
619
  }
532
620
  async list(workspacePath) {
533
621
  try {
534
- const workspaceCapsuleFolder = this.getCapsulesRootDir(workspacePath);
622
+ const workspaceCapsuleFolder = this.getCapsulesRootDir({
623
+ baseDir: workspacePath
624
+ });
535
625
  const capsules = await _fsExtra().default.readdir(workspaceCapsuleFolder);
536
626
  const capsuleFullPaths = capsules.map(c => _path2().default.join(workspaceCapsuleFolder, c));
537
627
  return {
@@ -548,13 +638,37 @@ class IsolatorMain {
548
638
  throw e;
549
639
  }
550
640
  }
551
- getCapsulesRootDir(baseDir, rootBaseDir, useHash = true) {
552
- const capsulesRootBaseDir = rootBaseDir || this.getRootDirOfAllCapsules();
553
- const dir = useHash ? (0, _objectHash().default)(baseDir) : baseDir;
641
+
642
+ /** @deprecated use the new function signature with an object parameter instead */
643
+
644
+ getCapsulesRootDir(getCapsuleDirOpts, rootBaseDir, useHash = true, useDatedDirs = false) {
645
+ if (typeof getCapsuleDirOpts === 'string') {
646
+ getCapsuleDirOpts = {
647
+ baseDir: getCapsuleDirOpts,
648
+ rootBaseDir,
649
+ useHash,
650
+ useDatedDirs
651
+ };
652
+ }
653
+ const getCapsuleDirOptsWithDefaults = _objectSpread({
654
+ useHash: true,
655
+ useDatedDirs: false
656
+ }, getCapsuleDirOpts);
657
+ const capsulesRootBaseDir = getCapsuleDirOptsWithDefaults.rootBaseDir || this.getRootDirOfAllCapsules();
658
+ if (getCapsuleDirOptsWithDefaults.useDatedDirs) {
659
+ const date = new Date();
660
+ const dateDir = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
661
+ const datedBaseDir = 'dated-capsules';
662
+ const hashDir = (0, _uuid().v4)();
663
+ return _path2().default.join(capsulesRootBaseDir, datedBaseDir, dateDir, hashDir);
664
+ }
665
+ const dir = getCapsuleDirOptsWithDefaults.useHash ? (0, _objectHash().default)(getCapsuleDirOptsWithDefaults.baseDir) : getCapsuleDirOptsWithDefaults.baseDir;
554
666
  return _path2().default.join(capsulesRootBaseDir, dir);
555
667
  }
556
668
  async deleteCapsules(capsuleBaseDir) {
557
- const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir(capsuleBaseDir) : this.getRootDirOfAllCapsules();
669
+ const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir({
670
+ baseDir: capsuleBaseDir
671
+ }) : this.getRootDirOfAllCapsules();
558
672
  await _fsExtra().default.remove(dirToDelete);
559
673
  return dirToDelete;
560
674
  }
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","logger","createLogger","IsolatorAspect","id","isolator","constructor","graph","isolateComponents","seeders","opts","legacyScope","host","getHost","debug","join","JSON","stringify","Object","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","length","seedersWithVersions","map","seeder","_legacy","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","capsuleList","createCapsules","capsuleDir","getCapsulesRootDir","rootBaseDir","useHash","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","existingComps","compact","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","fs","copy","components","capsulesDir","longProcessLogger","context","aspects","wsPath","workspaceName","createLongProcessLogger","chalk","cyan","bold","installOptions","useNesting","isolatedCapsules","emptyRootDir","supportsDedupingOnExistingRoot","config","emptyDir","capsules","createCapsulesFromComponents","allCapsuleList","CapsuleList","fromArray","getExistingAsIs","skipIfExists","existingCapsules","filter","capsule","existsSync","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","cachePackagesOnCapsulesRoot","linkingOptions","installLongProcessLogger","newCapsuleList","linkedDependencies","linkInCapsules","installInCapsules","end","consoleSuccess","forEach","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","capsuleListOutput","isolateInstallOptions","installer","getInstaller","rootDir","cacheRootDirectory","installingContext","inCapsule","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","forceTeambitHarmonyLink","hasHarmonyInRootPolicy","packageManagerInstallOptions","nmSelfReferences","overrides","capsulesOverrides","rootComponentsForCapsules","keepExistingModulesDir","hasRootComponents","install","toComponentMap","linker","getLinker","linkingContext","linkedRootDeps","calculateLinkedDeps","linkNestedDepsInNM","rootLinks","nestedLinks","symlinkOnCapsuleRoot","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","link","push","linkDetailToLocalDepEntry","fromEntries","key","value","linkDetail","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","c","getCapsule","scope","populateArtifactsFromParent","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","ComponentMap","create","list","workspacePath","workspaceCapsuleFolder","readdir","capsuleFullPaths","workspace","e","code","capsulesRootBaseDir","getRootDirOfAllCapsules","dir","hash","deleteCapsules","capsuleBaseDir","dirToDelete","remove","Capsule","createFromComponent","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","promises","readFile","encoding","parse","packageJson","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","toVinylFile","artifacts","getArtifacts","addManyFiles","bitDir","ignoreBitDependencies","getBitDependencies","reduce","acc","depId","Array","isArray","searchWithoutVersion","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensions","extensionsBitIds","main","pathNormalizeToLinux","mainFile","fetchParentArtifacts","buildStatus","artifactFilesToFetch","parent","head","parents","compParent","getConsumerComponent","changeVersion","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport chalk from 'chalk';\nimport { compact, flatten, pick } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { GraphAspect, GraphMain } from '@teambit/graph';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { DEPENDENCIES_FIELDS, PACKAGE_JSON } from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport {\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n} from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nexport type ListResults = {\n workspace: string;\n capsules: string[];\n};\n\n/**\n * Context for the isolation process\n */\nexport type IsolationContext = {\n /**\n * Whether the isolation done for aspets (as opposed to regular components)\n */\n aspects?: boolean;\n\n /**\n * Workspace name where the isolation starts from\n */\n workspaceName?: string;\n};\n\nexport type IsolateComponentsInstallOptions = {\n installPackages?: boolean; // default: true\n // TODO: add back when depResolver.getInstaller support it\n // packageManager?: string;\n dedupe?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n installPeersFromEnvs?: boolean;\n installTeambitBit?: boolean;\n packageManagerConfigRootDir?: string;\n // When set to true, the newly added components will be grouped inside one directory.\n // This is useful for scope aspect capsules, which are installed in stages.\n useNesting?: boolean;\n};\n\ntype CreateGraphOptions = {\n /**\n * include components that exists in nested hosts. for example include components that exist in scope but not in the workspace\n */\n includeFromNestedHosts?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n};\n\nexport type IsolateComponentsOptions = CreateGraphOptions & {\n name?: string;\n /**\n * absolute path to put all the capsules dirs inside.\n */\n rootBaseDir?: string;\n\n /**\n * the capsule root-dir based on a *hash* of this baseDir, not on the baseDir itself.\n * A folder with this hash as its name will be created in the rootBaseDir\n * By default this value will be the host path\n */\n baseDir?: string;\n\n /**\n * Whether to use hash function (of base dir) as capsules root dir name\n */\n useHash?: boolean;\n\n /**\n * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * installation options\n */\n installOptions?: IsolateComponentsInstallOptions;\n\n linkingOptions?: LinkingOptions;\n\n /**\n * delete the capsule rootDir first. it makes sure that the isolation process starts fresh with\n * no previous capsules. for build and tag this is true.\n */\n emptyRootDir?: boolean;\n\n /**\n * skip the reproduction of the capsule in case it exists.\n */\n skipIfExists?: boolean;\n\n /**\n * get existing capsule without doing any changes, no writes, no installations.\n */\n getExistingAsIs?: boolean;\n\n /**\n * place the package-manager cache on the capsule-root\n */\n cachePackagesOnCapsulesRoot?: boolean;\n\n /**\n * do not build graph with all dependencies. isolate the seeders only.\n */\n seedersOnly?: boolean;\n\n /**\n * relevant for tagging from scope, where we tag an existing snap without any code-changes.\n * the idea is to have all build artifacts from the previous snap and run deploy pipeline on top of it.\n */\n populateArtifactsFromParent?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n packageManagerConfigRootDir?: string;\n\n context?: IsolationContext;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [\n DependencyResolverAspect,\n LoggerAspect,\n ComponentAspect,\n GraphAspect,\n GlobalConfigAspect,\n AspectLoaderAspect,\n ];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n\n static async provider([dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain\n ]): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(\n dependencyResolver,\n logger,\n componentAspect,\n graphMain,\n globalConfig,\n aspectLoader\n );\n return isolator;\n }\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graph: GraphMain,\n private globalConfig: GlobalConfigMain,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions = {},\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n this.logger.debug(\n `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);\n const seedersWithVersions = seeders.map((seeder) => {\n if (seeder._legacy.hasVersion()) return seeder;\n const comp = componentsToIsolate.find((component) => component.id.isEqual(seeder, { ignoreVersion: true }));\n if (!comp) throw new Error(`unable to find seeder ${seeder.toString()} in componentsToIsolate`);\n return comp.id;\n });\n opts.baseDir = opts.baseDir || host.path;\n const capsuleList = await this.createCapsules(componentsToIsolate, opts, legacyScope);\n const capsuleDir = this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir, opts.useHash);\n this.logger.debug(\n `creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`\n );\n return new Network(capsuleList, seedersWithVersions, capsuleDir);\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDepsIds = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsIds = await Promise.all(\n compsAndDepsIds.map(async (id) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(id, true);\n } else {\n existing = await host.hasId(id);\n }\n if (existing) return id;\n return undefined;\n })\n );\n const existingComps = await host.getMany(compact(existingCompsIds));\n return existingComps;\n }\n\n /**\n *\n * @param originalCapsule the capsule that contains the original component\n * @param newBaseDir relative path. (it will be saved inside `this.getRootDirOfAllCapsules()`. the final path of the capsule will be getRootDirOfAllCapsules() + newBaseDir + filenameify(component.id))\n * @returns a new capsule with the same content of the original capsule but with a new baseDir and all packages\n * installed in the newBaseDir.\n */\n async cloneCapsule(originalCapsule: Capsule, newBaseDir: string): Promise<Capsule> {\n const network = await this.isolateComponents([originalCapsule.component.id], { baseDir: newBaseDir });\n const clonedCapsule = network.seedersCapsules[0];\n await fs.copy(originalCapsule.path, clonedCapsule.path);\n return clonedCapsule;\n }\n\n /**\n * Create capsules for the provided components\n * do not use this outside directly, use isolate components which build the entire network\n * @param components\n * @param opts\n * @param legacyScope\n */\n private async createCapsules(\n components: Component[],\n opts: IsolateComponentsOptions,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n this.logger.debug(`createCapsules, ${components.length} components`);\n const capsulesDir = this.getCapsulesRootDir(opts.baseDir as string, opts.rootBaseDir, opts.useHash);\n\n let longProcessLogger;\n if (opts.context?.aspects) {\n // const wsPath = opts.host?.path || 'unknown';\n const wsPath = opts.context.workspaceName || opts.host?.path || 'unknown';\n longProcessLogger = this.logger.createLongProcessLogger(\n `ensuring ${chalk.cyan(components.length.toString())} capsule(s) for all envs and aspects for ${chalk.bold(\n wsPath\n )} at ${chalk.bold(capsulesDir)}`\n );\n }\n const installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting: this.dependencyResolver.isolatedCapsules() && opts.installOptions?.useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n const config = { installPackages: true, ...opts };\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n let capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n const allCapsuleList = CapsuleList.fromArray(capsules);\n let capsuleList = allCapsuleList;\n if (opts.getExistingAsIs) {\n return capsuleList;\n }\n\n if (opts.skipIfExists) {\n if (!installOptions.useNesting) {\n const existingCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => capsule.fs.existsSync('package.json'))\n );\n\n if (existingCapsules.length === capsuleList.length) return existingCapsules;\n } else {\n capsules = capsules.filter((capsule) => !capsule.fs.existsSync('package.json'));\n capsuleList = CapsuleList.fromArray(capsules);\n }\n }\n const capsulesWithPackagesData = await this.getCapsulesPreviousPackageJson(capsules);\n\n await this.writeComponentsInCapsules(components, capsuleList, legacyScope, opts);\n await this.updateWithCurrentPackageJsonData(capsulesWithPackagesData, capsuleList);\n if (installOptions.installPackages) {\n const cachePackagesOnCapsulesRoot = opts.cachePackagesOnCapsulesRoot ?? false;\n const linkingOptions = opts.linkingOptions ?? {};\n let installLongProcessLogger;\n // Only show the log message in case we are going to install something\n if (capsuleList && capsuleList.length && !opts.context?.aspects) {\n installLongProcessLogger = this.logger.createLongProcessLogger('install packages in capsules');\n }\n if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n newCapsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n });\n })\n );\n } else {\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n capsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n });\n }\n if (installLongProcessLogger) {\n installLongProcessLogger.end();\n this.logger.consoleSuccess('installed packages in capsules');\n }\n }\n\n // rewrite the package-json with the component dependencies in it. the original package.json\n // that was written before, didn't have these dependencies in order for the package-manager to\n // be able to install them without crushing when the versions don't exist yet\n capsulesWithPackagesData.forEach((capsuleWithPackageData) => {\n const { currentPackageJson, capsule } = capsuleWithPackageData;\n if (!currentPackageJson)\n throw new Error(\n `isolator.createCapsules, unable to find currentPackageJson for ${capsule.component.id.toString()}`\n );\n capsuleWithPackageData.capsule.fs.writeFileSync(PACKAGE_JSON, JSON.stringify(currentPackageJson, null, 2));\n });\n // Only show this message if at least one new capsule created\n if (longProcessLogger && capsuleList.length) {\n longProcessLogger.end();\n // this.logger.consoleSuccess();\n const capsuleListOutput = allCapsuleList.map((capsule) => capsule.component.id.toString()).join(', ');\n this.logger.consoleSuccess(`resolved aspect(s): ${chalk.cyan(capsuleListOutput)}`);\n }\n\n return allCapsuleList;\n }\n\n private async installInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n isolateInstallOptions: IsolateComponentsInstallOptions,\n opts: {\n cachePackagesOnCapsulesRoot?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n }\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: opts.cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n installingContext: { inCapsule: true },\n });\n // When using isolator we don't want to use the policy defined in the workspace directly,\n // we only want to instal deps from components and the peer from the workspace\n\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const installOptions: InstallOptions = {\n installTeambitBit: !!isolateInstallOptions.installTeambitBit,\n packageManagerConfigRootDir: isolateInstallOptions.packageManagerConfigRootDir,\n resolveVersionsFromDependenciesOnly: true,\n linkedDependencies: opts.linkedDependencies,\n forceTeambitHarmonyLink: !this.dependencyResolver.hasHarmonyInRootPolicy(),\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n nmSelfReferences: this.dependencyResolver.isolatedCapsules(),\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n rootComponentsForCapsules: this.dependencyResolver.isolatedCapsules(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.isolatedCapsules(),\n hasRootComponents: this.dependencyResolver.isolatedCapsules(),\n };\n await installer.install(\n capsulesDir,\n peerOnlyPolicy,\n this.toComponentMap(capsuleList),\n installOptions,\n packageManagerInstallOptions\n );\n }\n\n private async linkInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[],\n linkingOptions: LinkingOptions\n ): Promise<Record<string, Record<string, string>>> {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n linkingContext: { inCapsule: true },\n });\n const { linkedRootDeps } = await linker.calculateLinkedDeps(capsulesDir, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n linkNestedDepsInNM: !this.dependencyResolver.isolatedCapsules() && linkingOptions.linkNestedDepsInNM,\n });\n let rootLinks: LinkDetail[] | undefined;\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.isolatedCapsules()) {\n rootLinks = await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n nestedLinks = await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n } else {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const coreAspectCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => {\n const [compIdWithoutVersion] = capsule.component.id.toString().split('@');\n return coreAspectIds.includes(compIdWithoutVersion);\n })\n );\n rootLinks = await symlinkOnCapsuleRoot(coreAspectCapsules, this.logger, capsulesDir);\n }\n return {\n ...nestedLinks,\n [capsulesDir]: {\n ...linkedRootDeps,\n ...this.toLocalLinks(rootLinks),\n },\n };\n }\n\n private toLocalLinks(rootLinks: LinkDetail[] | undefined): Record<string, string> {\n const localLinks: Array<[string, string]> = [];\n if (rootLinks) {\n rootLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link));\n });\n }\n return Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`]));\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(\n components: Component[],\n capsuleList: CapsuleList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n if (await CapsuleList.capsuleUsePreviouslySavedDists(component)) {\n unmodifiedComps.push(component);\n } else {\n modifiedComps.push(component);\n }\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const scope =\n (await CapsuleList.capsuleUsePreviouslySavedDists(component)) || opts?.populateArtifactsFromParent\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(component, allIds, scope, opts);\n await dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(workspacePath: string): Promise<ListResults> {\n try {\n const workspaceCapsuleFolder = this.getCapsulesRootDir(workspacePath);\n const capsules = await fs.readdir(workspaceCapsuleFolder);\n const capsuleFullPaths = capsules.map((c) => path.join(workspaceCapsuleFolder, c));\n return {\n workspace: workspacePath,\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { workspace: workspacePath, capsules: [] };\n }\n throw e;\n }\n }\n\n getCapsulesRootDir(baseDir: string, rootBaseDir?: string, useHash = true): PathOsBasedAbsolute {\n const capsulesRootBaseDir = rootBaseDir || this.getRootDirOfAllCapsules();\n const dir = useHash ? hash(baseDir) : baseDir;\n return path.join(capsulesRootBaseDir, dir);\n }\n\n async deleteCapsules(capsuleBaseDir: string | null): Promise<string> {\n const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir(capsuleBaseDir) : this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n this.logger.debug(`createCapsulesFromComponents: ${components.length} components`);\n const capsules: Capsule[] = await Promise.all(\n components.map((component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n })\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getGlobalCapsulesBaseDir();\n }\n\n private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n })\n );\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = getComponentPackageVersion(component);\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = getComponentPackageVersion(depCapsule?.component);\n } else {\n version = snapToSemver(version);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // component.packageJsonFile is not available here. we don't mutate the component object for capsules.\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: BitIds,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ): Promise<DataToPersist> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const dataToPersist = new DataToPersist();\n const clonedFiles = legacyComp.files.map((file) => file.clone());\n const writeToPath = '.';\n clonedFiles.forEach((file) => file.updatePaths({ newBase: writeToPath }));\n dataToPersist.removePath(new RemovePath(writeToPath));\n clonedFiles.map((file) => dataToPersist.addFile(file));\n const packageJson = this.preparePackageJsonToWrite(\n component,\n writeToPath,\n ids // this.ignoreBitDependencies,\n );\n if (!legacyComp.id.hasVersion()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n packageJson.addOrUpdateProperty('version', semver.inc(legacyComp.version!, 'prerelease') || '0.0.1-0');\n }\n await PackageJsonTransformer.applyTransformers(component, packageJson);\n const valuesToMerge = legacyComp.overrides.componentOverridesPackageJsonData;\n packageJson.mergePackageJsonObject(valuesToMerge);\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, opts?.populateArtifactsFromParent);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n ignoreBitDependencies: BitIds | boolean = true\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: BitIds) => {\n if (ignoreBitDependencies === true) return {};\n return dependencies.reduce((acc, depId: BitId) => {\n if (Array.isArray(ignoreBitDependencies) && ignoreBitDependencies.searchWithoutVersion(depId)) return acc;\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = packageDependency;\n return acc;\n }, {});\n };\n const bitDependencies = getBitDependencies(legacyComp.dependencies.getAllIds());\n const bitDevDependencies = getBitDependencies(legacyComp.devDependencies.getAllIds());\n const bitExtensionDependencies = getBitDependencies(legacyComp.extensions.extensionsBitIds);\n const packageJson = PackageJsonFile.createFromComponent(bitDir, legacyComp, true);\n const main = pathNormalizeToLinux(legacyComp.mainFile);\n packageJson.addOrUpdateProperty('main', main);\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(bitDependencies);\n packageJsonFile.addDevDependencies({\n ...bitDevDependencies,\n ...bitExtensionDependencies,\n });\n };\n addDependencies(packageJson);\n const currentVersion = getComponentPackageVersion(component);\n packageJson.addOrUpdateProperty('version', currentVersion);\n\n return packageJson;\n }\n\n /**\n * currently, it writes all artifacts.\n * later, this responsibility might move to pkg extension, which could write only artifacts\n * that are set in package.json.files[], to have a similar structure of a package.\n */\n private async getArtifacts(\n component: Component,\n legacyScope?: Scope,\n fetchParentArtifacts = false\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\n if (fetchParentArtifacts) throw new Error(`unable to fetch from parent, the legacyScope was not provided`);\n // when capsules are written via the workspace, do not write artifacts, they get created by\n // build-pipeline. when capsules are written via the scope, we do need the dists.\n return [];\n }\n if (legacyComp.buildStatus !== 'succeed' && !fetchParentArtifacts) {\n // this is important for \"bit sign\" when on lane to not go to the original scope\n return [];\n }\n const artifactFilesToFetch = async () => {\n if (fetchParentArtifacts) {\n const parent = component.head?.parents[0];\n if (!parent)\n throw new Error(`unable to fetch artifacts from parent. parent is missing for ${component.id.toString()}`);\n const compParent = await legacyScope.getConsumerComponent(legacyComp.id.changeVersion(parent.toString()));\n return getArtifactFilesExcludeExtension(compParent.extensions, 'teambit.pkg/pkg');\n }\n const extensionsNamesForArtifacts = ['teambit.compilation/compiler'];\n return flatten(\n extensionsNamesForArtifacts.map((extName) => getArtifactFilesByExtension(legacyComp.extensions, extName))\n );\n };\n\n const artifactsFiles = await artifactFilesToFetch();\n const artifactsVinylFlattened: ArtifactVinyl[] = [];\n await Promise.all(\n artifactsFiles.map(async (artifactFiles) => {\n if (!artifactFiles) return;\n if (!(artifactFiles instanceof ArtifactFiles)) {\n artifactFiles = deserializeArtifactFiles(artifactFiles);\n }\n // fyi, if this is coming from the isolator aspect, it is optimized to import all at once.\n // see artifact-files.importMultipleDistsArtifacts().\n const vinylFiles = await artifactFiles.getVinylsAndImportIfMissing(legacyComp.id, legacyScope);\n artifactsVinylFlattened.push(...vinylFiles);\n })\n );\n const artifactsDir = legacyComp.writtenPath;\n if (artifactsDir) {\n artifactsVinylFlattened.forEach((a) => a.updatePaths({ newBase: artifactsDir }));\n }\n return artifactsVinylFlattened;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","logger","createLogger","IsolatorAspect","id","isolator","constructor","graph","isolateComponents","seeders","opts","legacyScope","host","getHost","debug","join","JSON","stringify","Object","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","length","seedersWithVersions","map","seeder","_legacy","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","shouldUseDatedDirs","capsuleDir","getCapsulesRootDir","useDatedDirs","capsuleList","createCapsules","rootBaseDir","targetCapsuleDir","registerMoveCapsuleOnProcessExit","relinkCoreAspectsInCapsuleDir","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","existingComps","compact","datedCapsuleDir","info","process","on","allDirs","fs","readdirSync","withFileTypes","filter","dir","isDirectory","forEach","targetDir","pathExistsSync","sourceDir","moveSync","capsulesDir","linkingOptions","linkTeambitBit","linkCoreAspects","linker","getLinker","rootDir","linkingContext","inCapsule","linkedRootDeps","calculateLinkedDeps","ComponentMap","create","createLinks","alwaysNew","getExistingAsIs","installOptions","useNesting","realCapsulesDir","allCapsulesExists","every","Capsule","getCapsuleDirName","existsSync","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","copy","components","longProcessLogger","context","aspects","wsPath","workspaceName","createLongProcessLogger","chalk","cyan","bold","isolatedCapsules","emptyRootDir","supportsDedupingOnExistingRoot","config","emptyDir","capsules","createCapsulesFromComponents","allCapsuleList","CapsuleList","fromArray","skipIfExists","existingCapsules","capsule","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","cachePackagesOnCapsulesRoot","installLongProcessLogger","newCapsuleList","linkedDependencies","linkInCapsules","installInCapsules","end","consoleSuccess","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","capsuleListOutput","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","installingContext","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","forceTeambitHarmonyLink","hasHarmonyInRootPolicy","packageManagerInstallOptions","nmSelfReferences","overrides","capsulesOverrides","rootComponentsForCapsules","keepExistingModulesDir","hasRootComponents","install","toComponentMap","linkNestedDepsInNM","rootLinks","nestedLinks","symlinkOnCapsuleRoot","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","link","push","linkDetailToLocalDepEntry","fromEntries","key","value","linkDetail","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","c","getCapsule","scope","populateArtifactsFromParent","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","list","workspacePath","workspaceCapsuleFolder","readdir","capsuleFullPaths","workspace","e","code","getCapsuleDirOpts","useHash","getCapsuleDirOptsWithDefaults","capsulesRootBaseDir","getRootDirOfAllCapsules","date","Date","dateDir","getFullYear","getMonth","getDate","datedBaseDir","hashDir","v4","hash","deleteCapsules","capsuleBaseDir","dirToDelete","remove","createFromComponent","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","promises","readFile","encoding","parse","packageJson","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","toVinylFile","artifacts","getArtifacts","addManyFiles","bitDir","ignoreBitDependencies","getBitDependencies","reduce","acc","depId","Array","isArray","searchWithoutVersion","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensions","extensionsBitIds","main","pathNormalizeToLinux","mainFile","fetchParentArtifacts","buildStatus","artifactFilesToFetch","parent","head","parents","compParent","getConsumerComponent","changeVersion","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import { v4 } from 'uuid';\nimport { MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport chalk from 'chalk';\nimport { compact, flatten, pick } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport { GraphAspect, GraphMain } from '@teambit/graph';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { DEPENDENCIES_FIELDS, PACKAGE_JSON } from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport {\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n} from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nexport type ListResults = {\n workspace: string;\n capsules: string[];\n};\n\n/**\n * Context for the isolation process\n */\nexport type IsolationContext = {\n /**\n * Whether the isolation done for aspets (as opposed to regular components)\n */\n aspects?: boolean;\n\n /**\n * Workspace name where the isolation starts from\n */\n workspaceName?: string;\n};\n\nexport type IsolateComponentsInstallOptions = {\n installPackages?: boolean; // default: true\n // TODO: add back when depResolver.getInstaller support it\n // packageManager?: string;\n dedupe?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n installPeersFromEnvs?: boolean;\n installTeambitBit?: boolean;\n packageManagerConfigRootDir?: string;\n // When set to true, the newly added components will be grouped inside one directory.\n // This is useful for scope aspect capsules, which are installed in stages.\n useNesting?: boolean;\n};\n\ntype CreateGraphOptions = {\n /**\n * include components that exists in nested hosts. for example include components that exist in scope but not in the workspace\n */\n includeFromNestedHosts?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n};\n\nexport type IsolateComponentsOptions = CreateGraphOptions & {\n name?: string;\n /**\n * absolute path to put all the capsules dirs inside.\n */\n rootBaseDir?: string;\n\n /**\n * the capsule root-dir based on a *hash* of this baseDir, not on the baseDir itself.\n * A folder with this hash as its name will be created in the rootBaseDir\n * By default this value will be the host path\n */\n baseDir?: string;\n\n /**\n * Whether to use hash function (of base dir) as capsules root dir name\n */\n useHash?: boolean;\n\n /**\n * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * If this is true -\n * the isolator will check if there are missing capsules in the base dir\n * if yes, it will create the capsule in a special dir inside a dir with the current date (without time)\n * then inside that dir, it will create a dir with a random hash\n * at the end of the process it will move missing capsules from the temp dir to the base dir so they can be used in\n * the next iteration\n */\n useDatedDirs?: boolean;\n\n /**\n * installation options\n */\n installOptions?: IsolateComponentsInstallOptions;\n\n linkingOptions?: LinkingOptions;\n\n /**\n * delete the capsule rootDir first. it makes sure that the isolation process starts fresh with\n * no previous capsules. for build and tag this is true.\n */\n emptyRootDir?: boolean;\n\n /**\n * skip the reproduction of the capsule in case it exists.\n */\n skipIfExists?: boolean;\n\n /**\n * get existing capsule without doing any changes, no writes, no installations.\n */\n getExistingAsIs?: boolean;\n\n /**\n * place the package-manager cache on the capsule-root\n */\n cachePackagesOnCapsulesRoot?: boolean;\n\n /**\n * do not build graph with all dependencies. isolate the seeders only.\n */\n seedersOnly?: boolean;\n\n /**\n * relevant for tagging from scope, where we tag an existing snap without any code-changes.\n * the idea is to have all build artifacts from the previous snap and run deploy pipeline on top of it.\n */\n populateArtifactsFromParent?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n /**\n * Dir where to read the package manager config from\n * usually used when running package manager in the capsules dir to use the config\n * from the workspace dir\n */\n packageManagerConfigRootDir?: string;\n\n context?: IsolationContext;\n};\n\ntype GetCapsuleDirOpts = Pick<IsolateComponentsOptions, 'useHash' | 'rootBaseDir' | 'useDatedDirs'> & {\n baseDir: string;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [\n DependencyResolverAspect,\n LoggerAspect,\n ComponentAspect,\n GraphAspect,\n GlobalConfigAspect,\n AspectLoaderAspect,\n ];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n\n static async provider([dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain\n ]): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(\n dependencyResolver,\n logger,\n componentAspect,\n graphMain,\n globalConfig,\n aspectLoader\n );\n return isolator;\n }\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graph: GraphMain,\n private globalConfig: GlobalConfigMain,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions,\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n this.logger.debug(\n `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);\n const seedersWithVersions = seeders.map((seeder) => {\n if (seeder._legacy.hasVersion()) return seeder;\n const comp = componentsToIsolate.find((component) => component.id.isEqual(seeder, { ignoreVersion: true }));\n if (!comp) throw new Error(`unable to find seeder ${seeder.toString()} in componentsToIsolate`);\n return comp.id;\n });\n opts.baseDir = opts.baseDir || host.path;\n const shouldUseDatedDirs = this.shouldUseDatedDirs(componentsToIsolate, opts);\n const capsuleDir = this.getCapsulesRootDir({\n ...opts,\n useDatedDirs: shouldUseDatedDirs,\n baseDir: opts.baseDir || '',\n });\n const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope);\n this.logger.debug(\n `creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`\n );\n if (shouldUseDatedDirs) {\n const targetCapsuleDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir);\n // TODO: ideally this should be inside the on process exit hook\n // but this is an async op which make it a bit hard\n await this.relinkCoreAspectsInCapsuleDir(targetCapsuleDir);\n }\n return new Network(capsuleList, seedersWithVersions, capsuleDir);\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDepsIds = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsIds = await Promise.all(\n compsAndDepsIds.map(async (id) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(id, true);\n } else {\n existing = await host.hasId(id);\n }\n if (existing) return id;\n return undefined;\n })\n );\n const existingComps = await host.getMany(compact(existingCompsIds));\n return existingComps;\n }\n\n private registerMoveCapsuleOnProcessExit(datedCapsuleDir: string, targetCapsuleDir: string): void {\n this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);\n process.on('exit', () => {\n this.logger.info(`start moving capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);\n const allDirs = fs\n .readdirSync(datedCapsuleDir, { withFileTypes: true })\n .filter((dir) => dir.isDirectory() && dir.name !== 'node_modules');\n allDirs.forEach((dir) => {\n const targetDir = path.join(targetCapsuleDir, dir.name);\n if (!fs.pathExistsSync(path.join(targetCapsuleDir, dir.name))) {\n const sourceDir = path.join(datedCapsuleDir, dir.name);\n this.logger.info(`moving specific capsule from ${sourceDir} to ${targetDir}`);\n fs.moveSync(sourceDir, targetDir);\n }\n });\n });\n }\n\n /**\n * Re-create the core aspects links in the real capsule dir\n * This is required mainly for the first time when that folder is empty\n */\n private async relinkCoreAspectsInCapsuleDir(capsulesDir: string): Promise<void> {\n const linkingOptions = {\n linkTeambitBit: true,\n linkCoreAspects: true,\n };\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n linkingContext: { inCapsule: true },\n });\n const { linkedRootDeps } = await linker.calculateLinkedDeps(capsulesDir, ComponentMap.create([]), linkingOptions);\n return createLinks(capsulesDir, linkedRootDeps);\n }\n\n private shouldUseDatedDirs(componentsToIsolate: Component[], opts: IsolateComponentsOptions): boolean {\n if (!opts.useDatedDirs) return false;\n // No need to use the dated dirs in case we anyway create new capsule for each one\n if (opts.alwaysNew) return false;\n // if (opts.skipIfExists) return false;\n // no point to use dated dir in case of getExistingAsIs as it will be just always empty\n if (opts.getExistingAsIs) return false;\n // Do not use the dated dirs in case we don't use nesting, as the capsules\n // will not work after moving to the real dir\n if (!opts.installOptions?.useNesting) return false;\n // Getting the real capsule dir to check if all capsules exists\n const realCapsulesDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n const allCapsulesExists = componentsToIsolate.every((component) => {\n const capsuleDir = path.join(realCapsulesDir, Capsule.getCapsuleDirName(component));\n return fs.existsSync(capsuleDir);\n });\n return !allCapsulesExists;\n }\n\n /**\n *\n * @param originalCapsule the capsule that contains the original component\n * @param newBaseDir relative path. (it will be saved inside `this.getRootDirOfAllCapsules()`. the final path of the capsule will be getRootDirOfAllCapsules() + newBaseDir + filenameify(component.id))\n * @returns a new capsule with the same content of the original capsule but with a new baseDir and all packages\n * installed in the newBaseDir.\n */\n async cloneCapsule(originalCapsule: Capsule, newBaseDir: string): Promise<Capsule> {\n const network = await this.isolateComponents([originalCapsule.component.id], { baseDir: newBaseDir });\n const clonedCapsule = network.seedersCapsules[0];\n await fs.copy(originalCapsule.path, clonedCapsule.path);\n return clonedCapsule;\n }\n\n /**\n * Create capsules for the provided components\n * do not use this outside directly, use isolate components which build the entire network\n * @param components\n * @param opts\n * @param legacyScope\n */\n private async createCapsules(\n components: Component[],\n capsulesDir: string,\n opts: IsolateComponentsOptions,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n this.logger.debug(`createCapsules, ${components.length} components`);\n\n let longProcessLogger;\n if (opts.context?.aspects) {\n // const wsPath = opts.host?.path || 'unknown';\n const wsPath = opts.context.workspaceName || opts.host?.path || 'unknown';\n longProcessLogger = this.logger.createLongProcessLogger(\n `ensuring ${chalk.cyan(components.length.toString())} capsule(s) for all envs and aspects for ${chalk.bold(\n wsPath\n )} at ${chalk.bold(capsulesDir)}`\n );\n }\n const installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting: this.dependencyResolver.isolatedCapsules() && opts.installOptions?.useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n const config = { installPackages: true, ...opts };\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n let capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n const allCapsuleList = CapsuleList.fromArray(capsules);\n let capsuleList = allCapsuleList;\n if (opts.getExistingAsIs) {\n return capsuleList;\n }\n\n if (opts.skipIfExists) {\n if (!installOptions.useNesting) {\n const existingCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => capsule.fs.existsSync('package.json'))\n );\n\n if (existingCapsules.length === capsuleList.length) return existingCapsules;\n } else {\n capsules = capsules.filter((capsule) => !capsule.fs.existsSync('package.json'));\n capsuleList = CapsuleList.fromArray(capsules);\n }\n }\n const capsulesWithPackagesData = await this.getCapsulesPreviousPackageJson(capsules);\n\n await this.writeComponentsInCapsules(components, capsuleList, legacyScope, opts);\n await this.updateWithCurrentPackageJsonData(capsulesWithPackagesData, capsuleList);\n if (installOptions.installPackages) {\n const cachePackagesOnCapsulesRoot = opts.cachePackagesOnCapsulesRoot ?? false;\n const linkingOptions = opts.linkingOptions ?? {};\n let installLongProcessLogger;\n // Only show the log message in case we are going to install something\n if (capsuleList && capsuleList.length && !opts.context?.aspects) {\n installLongProcessLogger = this.logger.createLongProcessLogger('install packages in capsules');\n }\n if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n newCapsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n });\n })\n );\n } else {\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n capsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n });\n }\n if (installLongProcessLogger) {\n installLongProcessLogger.end();\n this.logger.consoleSuccess('installed packages in capsules');\n }\n }\n\n // rewrite the package-json with the component dependencies in it. the original package.json\n // that was written before, didn't have these dependencies in order for the package-manager to\n // be able to install them without crushing when the versions don't exist yet\n capsulesWithPackagesData.forEach((capsuleWithPackageData) => {\n const { currentPackageJson, capsule } = capsuleWithPackageData;\n if (!currentPackageJson)\n throw new Error(\n `isolator.createCapsules, unable to find currentPackageJson for ${capsule.component.id.toString()}`\n );\n capsuleWithPackageData.capsule.fs.writeFileSync(PACKAGE_JSON, JSON.stringify(currentPackageJson, null, 2));\n });\n // Only show this message if at least one new capsule created\n if (longProcessLogger && capsuleList.length) {\n longProcessLogger.end();\n // this.logger.consoleSuccess();\n const capsuleListOutput = allCapsuleList.map((capsule) => capsule.component.id.toString()).join(', ');\n this.logger.consoleSuccess(`resolved aspect(s): ${chalk.cyan(capsuleListOutput)}`);\n }\n\n return allCapsuleList;\n }\n\n private async installInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n isolateInstallOptions: IsolateComponentsInstallOptions,\n opts: {\n cachePackagesOnCapsulesRoot?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n }\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: opts.cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n installingContext: { inCapsule: true },\n });\n // When using isolator we don't want to use the policy defined in the workspace directly,\n // we only want to instal deps from components and the peer from the workspace\n\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const installOptions: InstallOptions = {\n installTeambitBit: !!isolateInstallOptions.installTeambitBit,\n packageManagerConfigRootDir: isolateInstallOptions.packageManagerConfigRootDir,\n resolveVersionsFromDependenciesOnly: true,\n linkedDependencies: opts.linkedDependencies,\n forceTeambitHarmonyLink: !this.dependencyResolver.hasHarmonyInRootPolicy(),\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n nmSelfReferences: this.dependencyResolver.isolatedCapsules(),\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n rootComponentsForCapsules: this.dependencyResolver.isolatedCapsules(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.isolatedCapsules(),\n hasRootComponents: this.dependencyResolver.isolatedCapsules(),\n };\n await installer.install(\n capsulesDir,\n peerOnlyPolicy,\n this.toComponentMap(capsuleList),\n installOptions,\n packageManagerInstallOptions\n );\n }\n\n private async linkInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[],\n linkingOptions: LinkingOptions\n ): Promise<Record<string, Record<string, string>>> {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n linkingContext: { inCapsule: true },\n });\n const { linkedRootDeps } = await linker.calculateLinkedDeps(capsulesDir, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n linkNestedDepsInNM: !this.dependencyResolver.isolatedCapsules() && linkingOptions.linkNestedDepsInNM,\n });\n let rootLinks: LinkDetail[] | undefined;\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.isolatedCapsules()) {\n rootLinks = await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n nestedLinks = await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n } else {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const coreAspectCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => {\n const [compIdWithoutVersion] = capsule.component.id.toString().split('@');\n return coreAspectIds.includes(compIdWithoutVersion);\n })\n );\n rootLinks = await symlinkOnCapsuleRoot(coreAspectCapsules, this.logger, capsulesDir);\n }\n return {\n ...nestedLinks,\n [capsulesDir]: {\n ...linkedRootDeps,\n ...this.toLocalLinks(rootLinks),\n },\n };\n }\n\n private toLocalLinks(rootLinks: LinkDetail[] | undefined): Record<string, string> {\n const localLinks: Array<[string, string]> = [];\n if (rootLinks) {\n rootLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link));\n });\n }\n return Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`]));\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(\n components: Component[],\n capsuleList: CapsuleList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n if (await CapsuleList.capsuleUsePreviouslySavedDists(component)) {\n unmodifiedComps.push(component);\n } else {\n modifiedComps.push(component);\n }\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const scope =\n (await CapsuleList.capsuleUsePreviouslySavedDists(component)) || opts?.populateArtifactsFromParent\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(component, allIds, scope, opts);\n await dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(workspacePath: string): Promise<ListResults> {\n try {\n const workspaceCapsuleFolder = this.getCapsulesRootDir({ baseDir: workspacePath });\n const capsules = await fs.readdir(workspaceCapsuleFolder);\n const capsuleFullPaths = capsules.map((c) => path.join(workspaceCapsuleFolder, c));\n return {\n workspace: workspacePath,\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { workspace: workspacePath, capsules: [] };\n }\n throw e;\n }\n }\n\n /** @deprecated use the new function signature with an object parameter instead */\n getCapsulesRootDir(baseDir: string, rootBaseDir?: string, useHash?: boolean): PathOsBasedAbsolute;\n getCapsulesRootDir(getCapsuleDirOpts: GetCapsuleDirOpts): PathOsBasedAbsolute;\n getCapsulesRootDir(\n getCapsuleDirOpts: GetCapsuleDirOpts | string,\n rootBaseDir?: string,\n useHash = true,\n useDatedDirs = false\n ): PathOsBasedAbsolute {\n if (typeof getCapsuleDirOpts === 'string') {\n getCapsuleDirOpts = { baseDir: getCapsuleDirOpts, rootBaseDir, useHash, useDatedDirs };\n }\n const getCapsuleDirOptsWithDefaults = {\n useHash: true,\n useDatedDirs: false,\n ...getCapsuleDirOpts,\n };\n const capsulesRootBaseDir = getCapsuleDirOptsWithDefaults.rootBaseDir || this.getRootDirOfAllCapsules();\n if (getCapsuleDirOptsWithDefaults.useDatedDirs) {\n const date = new Date();\n const dateDir = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n const datedBaseDir = 'dated-capsules';\n const hashDir = v4();\n return path.join(capsulesRootBaseDir, datedBaseDir, dateDir, hashDir);\n }\n const dir = getCapsuleDirOptsWithDefaults.useHash\n ? hash(getCapsuleDirOptsWithDefaults.baseDir)\n : getCapsuleDirOptsWithDefaults.baseDir;\n return path.join(capsulesRootBaseDir, dir);\n }\n\n async deleteCapsules(capsuleBaseDir: string | null): Promise<string> {\n const dirToDelete = capsuleBaseDir\n ? this.getCapsulesRootDir({ baseDir: capsuleBaseDir })\n : this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n this.logger.debug(`createCapsulesFromComponents: ${components.length} components`);\n const capsules: Capsule[] = await Promise.all(\n components.map((component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n })\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getGlobalCapsulesBaseDir();\n }\n\n private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n })\n );\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = getComponentPackageVersion(component);\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = getComponentPackageVersion(depCapsule?.component);\n } else {\n version = snapToSemver(version);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // component.packageJsonFile is not available here. we don't mutate the component object for capsules.\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: BitIds,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ): Promise<DataToPersist> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const dataToPersist = new DataToPersist();\n const clonedFiles = legacyComp.files.map((file) => file.clone());\n const writeToPath = '.';\n clonedFiles.forEach((file) => file.updatePaths({ newBase: writeToPath }));\n dataToPersist.removePath(new RemovePath(writeToPath));\n clonedFiles.map((file) => dataToPersist.addFile(file));\n const packageJson = this.preparePackageJsonToWrite(\n component,\n writeToPath,\n ids // this.ignoreBitDependencies,\n );\n if (!legacyComp.id.hasVersion()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n packageJson.addOrUpdateProperty('version', semver.inc(legacyComp.version!, 'prerelease') || '0.0.1-0');\n }\n await PackageJsonTransformer.applyTransformers(component, packageJson);\n const valuesToMerge = legacyComp.overrides.componentOverridesPackageJsonData;\n packageJson.mergePackageJsonObject(valuesToMerge);\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, opts?.populateArtifactsFromParent);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n ignoreBitDependencies: BitIds | boolean = true\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: BitIds) => {\n if (ignoreBitDependencies === true) return {};\n return dependencies.reduce((acc, depId: BitId) => {\n if (Array.isArray(ignoreBitDependencies) && ignoreBitDependencies.searchWithoutVersion(depId)) return acc;\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = packageDependency;\n return acc;\n }, {});\n };\n const bitDependencies = getBitDependencies(legacyComp.dependencies.getAllIds());\n const bitDevDependencies = getBitDependencies(legacyComp.devDependencies.getAllIds());\n const bitExtensionDependencies = getBitDependencies(legacyComp.extensions.extensionsBitIds);\n const packageJson = PackageJsonFile.createFromComponent(bitDir, legacyComp, true);\n const main = pathNormalizeToLinux(legacyComp.mainFile);\n packageJson.addOrUpdateProperty('main', main);\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(bitDependencies);\n packageJsonFile.addDevDependencies({\n ...bitDevDependencies,\n ...bitExtensionDependencies,\n });\n };\n addDependencies(packageJson);\n const currentVersion = getComponentPackageVersion(component);\n packageJson.addOrUpdateProperty('version', currentVersion);\n\n return packageJson;\n }\n\n /**\n * currently, it writes all artifacts.\n * later, this responsibility might move to pkg extension, which could write only artifacts\n * that are set in package.json.files[], to have a similar structure of a package.\n */\n private async getArtifacts(\n component: Component,\n legacyScope?: Scope,\n fetchParentArtifacts = false\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\n if (fetchParentArtifacts) throw new Error(`unable to fetch from parent, the legacyScope was not provided`);\n // when capsules are written via the workspace, do not write artifacts, they get created by\n // build-pipeline. when capsules are written via the scope, we do need the dists.\n return [];\n }\n if (legacyComp.buildStatus !== 'succeed' && !fetchParentArtifacts) {\n // this is important for \"bit sign\" when on lane to not go to the original scope\n return [];\n }\n const artifactFilesToFetch = async () => {\n if (fetchParentArtifacts) {\n const parent = component.head?.parents[0];\n if (!parent)\n throw new Error(`unable to fetch artifacts from parent. parent is missing for ${component.id.toString()}`);\n const compParent = await legacyScope.getConsumerComponent(legacyComp.id.changeVersion(parent.toString()));\n return getArtifactFilesExcludeExtension(compParent.extensions, 'teambit.pkg/pkg');\n }\n const extensionsNamesForArtifacts = ['teambit.compilation/compiler'];\n return flatten(\n extensionsNamesForArtifacts.map((extName) => getArtifactFilesByExtension(legacyComp.extensions, extName))\n );\n };\n\n const artifactsFiles = await artifactFilesToFetch();\n const artifactsVinylFlattened: ArtifactVinyl[] = [];\n await Promise.all(\n artifactsFiles.map(async (artifactFiles) => {\n if (!artifactFiles) return;\n if (!(artifactFiles instanceof ArtifactFiles)) {\n artifactFiles = deserializeArtifactFiles(artifactFiles);\n }\n // fyi, if this is coming from the isolator aspect, it is optimized to import all at once.\n // see artifact-files.importMultipleDistsArtifacts().\n const vinylFiles = await artifactFiles.getVinylsAndImportIfMissing(legacyComp.id, legacyScope);\n artifactsVinylFlattened.push(...vinylFiles);\n })\n );\n const artifactsDir = legacyComp.writtenPath;\n if (artifactsDir) {\n artifactsVinylFlattened.forEach((a) => a.updatePaths({ newBase: artifactsDir }));\n }\n return artifactsVinylFlattened;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1083/dist/isolator.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1083/dist/isolator.docs.md';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1085/dist/isolator.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1085/dist/isolator.docs.md';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/isolator",
3
- "version": "0.0.1083",
3
+ "version": "0.0.1085",
4
4
  "homepage": "https://bit.cloud/teambit/component/isolator",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "isolator",
9
- "version": "0.0.1083"
9
+ "version": "0.0.1085"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -15,11 +15,11 @@
15
15
  "object-hash": "2.1.1",
16
16
  "ramda": "0.27.1",
17
17
  "semver": "7.3.4",
18
+ "uuid": "8.3.2",
18
19
  "@teambit/any-fs": "0.0.5",
19
20
  "@teambit/capsule": "0.0.12",
20
21
  "filenamify": "4.2.0",
21
22
  "glob": "7.1.6",
22
- "uuid": "8.3.2",
23
23
  "debug": "4.3.2",
24
24
  "execa": "2.1.0",
25
25
  "core-js": "^3.0.0",
@@ -27,15 +27,16 @@
27
27
  "@teambit/graph.cleargraph": "0.0.1",
28
28
  "@teambit/legacy-bit-id": "0.0.423",
29
29
  "@teambit/harmony": "0.4.6",
30
- "@teambit/component": "0.0.1083",
31
- "@teambit/dependency-resolver": "0.0.1083",
32
- "@teambit/aspect-loader": "0.0.1083",
33
- "@teambit/cli": "0.0.727",
30
+ "@teambit/component": "0.0.1085",
31
+ "@teambit/dependency-resolver": "0.0.1085",
32
+ "@teambit/aspect-loader": "0.0.1085",
33
+ "@teambit/cli": "0.0.729",
34
34
  "@teambit/component-package-version": "0.0.422",
35
- "@teambit/global-config": "0.0.729",
36
- "@teambit/graph": "0.0.1083",
37
- "@teambit/logger": "0.0.820",
38
- "@teambit/workspace.modules.node-modules-linker": "0.0.71"
35
+ "@teambit/dependencies.fs.linked-dependencies": "0.0.1",
36
+ "@teambit/global-config": "0.0.731",
37
+ "@teambit/graph": "0.0.1085",
38
+ "@teambit/logger": "0.0.822",
39
+ "@teambit/workspace.modules.node-modules-linker": "0.0.73"
39
40
  },
40
41
  "devDependencies": {
41
42
  "@types/react": "^17.0.8",
@@ -51,7 +52,7 @@
51
52
  "@types/testing-library__jest-dom": "5.9.5"
52
53
  },
53
54
  "peerDependencies": {
54
- "@teambit/legacy": "1.0.507",
55
+ "@teambit/legacy": "1.0.510",
55
56
  "react": "^16.8.0 || ^17.0.0",
56
57
  "react-dom": "^16.8.0 || ^17.0.0"
57
58
  },