@teambit/isolator 1.0.1037 → 1.0.1038
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -201,6 +201,12 @@ export declare class IsolatorMain {
|
|
|
201
201
|
constructor(dependencyResolver: DependencyResolverMain, logger: Logger, componentAspect: ComponentMain, graph: GraphMain, cli: CLIMain, globalConfig: GlobalConfigMain, aspectLoader: AspectLoaderMain, capsuleTransferSlot: CapsuleTransferSlot, configStore: ConfigStoreMain);
|
|
202
202
|
isolateComponents(seeders: ComponentID[], opts: IsolateComponentsOptions, legacyScope?: LegacyScope): Promise<Network>;
|
|
203
203
|
private createGraph;
|
|
204
|
+
/**
|
|
205
|
+
* Cheap pre-check for the aspect-isolation cyclic-dep path: do any of the given components have a
|
|
206
|
+
* direct snap-versioned component dependency? Used to avoid building the seeder graph (which can
|
|
207
|
+
* trigger network imports on scope hosts) when there can be no snap cyclic dep to pull in.
|
|
208
|
+
*/
|
|
209
|
+
private hasSnapComponentDependency;
|
|
204
210
|
/**
|
|
205
211
|
* When isolating seeders-only (e.g. `bit sign`), dependencies are normally installed as packages
|
|
206
212
|
* from the registry rather than getting a capsule. That breaks for a dependency that is part of a
|
|
@@ -209,6 +215,15 @@ export declare class IsolatorMain {
|
|
|
209
215
|
* snap from the registry and fails (the Ripple circular-dependency build failure). Return the
|
|
210
216
|
* dependency components that participate in a cycle with any seeder so they can be added to the
|
|
211
217
|
* isolation as real capsules and linked locally instead of installed from the registry.
|
|
218
|
+
*
|
|
219
|
+
* When `onlySnaps` is set (aspect isolation), only cyclic deps on a snap version are pulled in.
|
|
220
|
+
* A published-tag cyclic aspect dep resolves fine from the registry, and isolating it as a
|
|
221
|
+
* capsule would force loading its (possibly unavailable) env — see the caller for context.
|
|
222
|
+
*
|
|
223
|
+
* Returns the dependency `components` to add, and `cyclicMemberIds` — the ids of every member of
|
|
224
|
+
* an "activated" cycle (a cycle from which a dep was pulled in), including the seeders. The caller
|
|
225
|
+
* installs those members together (see createCapsules); a cycle has no valid nesting order, so
|
|
226
|
+
* its members must share an install root for the package manager to link them as siblings.
|
|
212
227
|
*/
|
|
213
228
|
private getCyclicDependenciesOfSeeders;
|
|
214
229
|
private registerMoveCapsuleOnProcessExit;
|
|
@@ -319,14 +319,32 @@ class IsolatorMain {
|
|
|
319
319
|
let componentsToIsolate = opts.seedersOnly ? await host.getMany(seeders) : await this.createGraph(seeders, createGraphOpts);
|
|
320
320
|
// seedersOnly skips the dependency graph and installs deps as packages from the registry.
|
|
321
321
|
// A dependency in a cycle with a seeder can't be installed that way (its snap-version isn't
|
|
322
|
-
// published yet), so pull it into the isolation as a capsule.
|
|
323
|
-
//
|
|
324
|
-
//
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
322
|
+
// published yet), so pull it into the isolation as a capsule.
|
|
323
|
+
// For aspect isolation, restrict this to snap-versioned cyclic deps: an unpublished snap (e.g.
|
|
324
|
+
// a lane-built env whose preview component is co-snapped and never published) genuinely can't
|
|
325
|
+
// be fetched, whereas a published-tag cyclic aspect dep must stay a registry install — pulling
|
|
326
|
+
// it in forces loading an env that isn't available in that context (broke `bit ci pr` / `bit
|
|
327
|
+
// new react`, both of which hit published-tag cyclic aspect deps).
|
|
328
|
+
// members of dependency cycles that were pulled into the isolation. A cycle is an indivisible
|
|
329
|
+
// install unit, so these capsules must be installed together (see createCapsules) — otherwise
|
|
330
|
+
// the nesting install path resolves a cyclic member's unpublished snap dep from the registry.
|
|
331
|
+
let cyclicMemberIds;
|
|
332
|
+
if (opts.seedersOnly) {
|
|
333
|
+
const onlySnaps = Boolean(opts.context?.aspects);
|
|
334
|
+
// For aspect isolation only snap-versioned cyclic deps are ever pulled in. Building the seeder
|
|
335
|
+
// graph can trigger `scope.import` on scope hosts, so skip it entirely for the common case
|
|
336
|
+
// where no seeder even has a snap-versioned component dependency (a co-snapped cyclic member
|
|
337
|
+
// surfaces as a direct snap dep on the seeder, so a direct-deps check is sufficient here).
|
|
338
|
+
if (!onlySnaps || this.hasSnapComponentDependency(componentsToIsolate)) {
|
|
339
|
+
const {
|
|
340
|
+
components: cyclicDeps,
|
|
341
|
+
cyclicMemberIds: memberIds
|
|
342
|
+
} = await this.getCyclicDependenciesOfSeeders(seeders, componentsToIsolate, createGraphOpts, onlySnaps);
|
|
343
|
+
if (cyclicDeps.length) {
|
|
344
|
+
this.logger.debug(`isolateComponents, adding ${cyclicDeps.length} cyclic dependencies of the seeders`);
|
|
345
|
+
componentsToIsolate = [...componentsToIsolate, ...cyclicDeps];
|
|
346
|
+
cyclicMemberIds = memberIds;
|
|
347
|
+
}
|
|
330
348
|
}
|
|
331
349
|
}
|
|
332
350
|
this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);
|
|
@@ -349,7 +367,7 @@ class IsolatorMain {
|
|
|
349
367
|
baseDir: opts.baseDir || ''
|
|
350
368
|
}));
|
|
351
369
|
opts.cacheCapsulesDir = cacheCapsulesDir;
|
|
352
|
-
const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope);
|
|
370
|
+
const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope, cyclicMemberIds);
|
|
353
371
|
this.logger.debug(`creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`);
|
|
354
372
|
const cacheCapsules = process.env.CACHE_CAPSULES || opts.cacheLockFileOnly;
|
|
355
373
|
if (shouldUseDatedDirs && cacheCapsules) {
|
|
@@ -393,6 +411,15 @@ class IsolatorMain {
|
|
|
393
411
|
return filteredComps;
|
|
394
412
|
}
|
|
395
413
|
|
|
414
|
+
/**
|
|
415
|
+
* Cheap pre-check for the aspect-isolation cyclic-dep path: do any of the given components have a
|
|
416
|
+
* direct snap-versioned component dependency? Used to avoid building the seeder graph (which can
|
|
417
|
+
* trigger network imports on scope hosts) when there can be no snap cyclic dep to pull in.
|
|
418
|
+
*/
|
|
419
|
+
hasSnapComponentDependency(components) {
|
|
420
|
+
return components.some(component => this.dependencyResolver.getComponentDependencies(component).some(dep => dep.componentId.version != null && (0, _componentVersion().isSnap)(dep.componentId.version)));
|
|
421
|
+
}
|
|
422
|
+
|
|
396
423
|
/**
|
|
397
424
|
* When isolating seeders-only (e.g. `bit sign`), dependencies are normally installed as packages
|
|
398
425
|
* from the registry rather than getting a capsule. That breaks for a dependency that is part of a
|
|
@@ -401,8 +428,21 @@ class IsolatorMain {
|
|
|
401
428
|
* snap from the registry and fails (the Ripple circular-dependency build failure). Return the
|
|
402
429
|
* dependency components that participate in a cycle with any seeder so they can be added to the
|
|
403
430
|
* isolation as real capsules and linked locally instead of installed from the registry.
|
|
431
|
+
*
|
|
432
|
+
* When `onlySnaps` is set (aspect isolation), only cyclic deps on a snap version are pulled in.
|
|
433
|
+
* A published-tag cyclic aspect dep resolves fine from the registry, and isolating it as a
|
|
434
|
+
* capsule would force loading its (possibly unavailable) env — see the caller for context.
|
|
435
|
+
*
|
|
436
|
+
* Returns the dependency `components` to add, and `cyclicMemberIds` — the ids of every member of
|
|
437
|
+
* an "activated" cycle (a cycle from which a dep was pulled in), including the seeders. The caller
|
|
438
|
+
* installs those members together (see createCapsules); a cycle has no valid nesting order, so
|
|
439
|
+
* its members must share an install root for the package manager to link them as siblings.
|
|
404
440
|
*/
|
|
405
|
-
async getCyclicDependenciesOfSeeders(seeders, alreadyIsolated, opts = {}) {
|
|
441
|
+
async getCyclicDependenciesOfSeeders(seeders, alreadyIsolated, opts = {}, onlySnaps = false) {
|
|
442
|
+
const empty = {
|
|
443
|
+
components: [],
|
|
444
|
+
cyclicMemberIds: new Set()
|
|
445
|
+
};
|
|
406
446
|
const host = opts.host || this.componentAspect.getHost();
|
|
407
447
|
const getGraphOpts = (0, _lodash().pick)(opts, ['host']);
|
|
408
448
|
const graph = await this.graph.getGraphIds(seeders, getGraphOpts);
|
|
@@ -410,14 +450,37 @@ class IsolatorMain {
|
|
|
410
450
|
// seeder participates in. Pass includeDeps=true so detection doesn't rely on matching the
|
|
411
451
|
// (possibly versionless) seeder ids against the graph's versioned node ids — otherwise a
|
|
412
452
|
// seeder-involving cycle can be missed and its members get installed from the registry again.
|
|
413
|
-
const
|
|
414
|
-
if (
|
|
453
|
+
const cycles = graph.findCycles(undefined, true);
|
|
454
|
+
if (cycles.length === 0) return empty;
|
|
415
455
|
const alreadyIsolatedIds = new Set(alreadyIsolated.map(comp => comp.id.toString()));
|
|
416
|
-
const
|
|
417
|
-
|
|
456
|
+
const isSnapId = idStr => {
|
|
457
|
+
const id = graph.node(idStr)?.attr;
|
|
458
|
+
return id?.version != null && (0, _componentVersion().isSnap)(id.version);
|
|
459
|
+
};
|
|
460
|
+
const idsToAddStr = new Set();
|
|
461
|
+
const cyclicMemberIds = new Set();
|
|
462
|
+
for (const cycle of cycles) {
|
|
463
|
+
// the members this cycle would contribute as new capsules. In onlySnaps mode a published-tag
|
|
464
|
+
// member stays a registry install, so it neither gets pulled in nor groups the cycle.
|
|
465
|
+
const newMembers = cycle.filter(idStr => !alreadyIsolatedIds.has(idStr));
|
|
466
|
+
const membersToAdd = onlySnaps ? newMembers.filter(isSnapId) : newMembers;
|
|
467
|
+
if (membersToAdd.length === 0) continue;
|
|
468
|
+
membersToAdd.forEach(idStr => idsToAddStr.add(idStr));
|
|
469
|
+
// group the whole cycle (the just-added members plus the already-isolated seeders in it) so
|
|
470
|
+
// they install together. A published-tag member that wasn't pulled in stays out of the group.
|
|
471
|
+
cycle.forEach(idStr => {
|
|
472
|
+
if (alreadyIsolatedIds.has(idStr) || idsToAddStr.has(idStr)) cyclicMemberIds.add(idStr);
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
const idsToAdd = [...idsToAddStr].map(idStr => graph.node(idStr)?.attr).filter(id => id != null);
|
|
476
|
+
if (idsToAdd.length === 0) return empty;
|
|
418
477
|
// The ids come straight from the graph we just built, so their objects are already present in
|
|
419
478
|
// the host — getMany loads them without hitting the network.
|
|
420
|
-
|
|
479
|
+
const components = await host.getMany(idsToAdd);
|
|
480
|
+
return {
|
|
481
|
+
components,
|
|
482
|
+
cyclicMemberIds
|
|
483
|
+
};
|
|
421
484
|
}
|
|
422
485
|
registerMoveCapsuleOnProcessExit(datedCapsuleDir, targetCapsuleDir, cacheLockFileOnly = false) {
|
|
423
486
|
this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);
|
|
@@ -607,7 +670,7 @@ class IsolatorMain {
|
|
|
607
670
|
* @param legacyScope
|
|
608
671
|
*/
|
|
609
672
|
/* eslint-disable complexity */
|
|
610
|
-
async createCapsules(components, capsulesDir, opts, legacyScope) {
|
|
673
|
+
async createCapsules(components, capsulesDir, opts, legacyScope, cyclicMemberIds) {
|
|
611
674
|
this.logger.debug(`createCapsules, ${components.length} components`);
|
|
612
675
|
let longProcessLogger;
|
|
613
676
|
if (opts.context?.aspects) {
|
|
@@ -657,7 +720,16 @@ class IsolatorMain {
|
|
|
657
720
|
return existingCapsules;
|
|
658
721
|
}
|
|
659
722
|
} else {
|
|
660
|
-
|
|
723
|
+
// Keep cached members of an activated cycle whenever any member of that cycle still needs an
|
|
724
|
+
// install, so the grouped install below receives the whole cycle and the package manager
|
|
725
|
+
// links them as siblings — otherwise a cached member would resolve its (unpublished snap)
|
|
726
|
+
// sibling from the registry and fail again. When every cyclic member is already installed
|
|
727
|
+
// they were grouped together on a previous run, so they drop out like any other cached capsule.
|
|
728
|
+
const cyclicNeedsInstall = cyclicMemberIds != null && capsules.some(capsule => cyclicMemberIds.has(capsule.component.id.toString()) && !capsule.fs.existsSync('package.json'));
|
|
729
|
+
capsules = capsules.filter(capsule => {
|
|
730
|
+
if (!capsule.fs.existsSync('package.json')) return true;
|
|
731
|
+
return cyclicNeedsInstall && (cyclicMemberIds?.has(capsule.component.id.toString()) ?? false);
|
|
732
|
+
});
|
|
661
733
|
capsuleList = _capsuleList().default.fromArray(capsules);
|
|
662
734
|
}
|
|
663
735
|
}
|
|
@@ -674,34 +746,59 @@ class IsolatorMain {
|
|
|
674
746
|
}
|
|
675
747
|
const rootLinks = await this.linkInCapsulesRoot(capsulesDir, capsuleList, linkingOptions);
|
|
676
748
|
if (installOptions.useNesting) {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
const linkedDependencies = await this.linkInCapsules(newCapsuleList, capsulesWithPackagesData);
|
|
695
|
-
if (index === 0) {
|
|
696
|
-
linkedDependencies[capsulesDir] = rootLinks;
|
|
697
|
-
}
|
|
698
|
-
await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {
|
|
749
|
+
// A dependency cycle is an indivisible install unit. Nesting installs each capsule in its
|
|
750
|
+
// own root, which makes a cyclic member resolve its in-network cyclic dependency from the
|
|
751
|
+
// registry (and an unpublished snap 404s). Install all members of the activated cycles
|
|
752
|
+
// together at the shared root so the package manager links them as siblings — the same way
|
|
753
|
+
// the non-nested path below does — while every other capsule keeps its isolated nested root.
|
|
754
|
+
const cyclicCapsules = capsuleList.filter(capsule => cyclicMemberIds?.has(capsule.component.id.toString()) ?? false);
|
|
755
|
+
const cyclicCapsuleSet = new Set(cyclicCapsules.map(capsule => capsule.component.id.toString()));
|
|
756
|
+
const nestedCapsules = capsuleList.filter(capsule => !cyclicCapsuleSet.has(capsule.component.id.toString()));
|
|
757
|
+
const installTasks = [];
|
|
758
|
+
if (cyclicCapsules.length) {
|
|
759
|
+
const cyclicCapsuleList = _capsuleList().default.fromArray(cyclicCapsules);
|
|
760
|
+
const linkedDependencies = await this.linkInCapsules(cyclicCapsuleList, capsulesWithPackagesData);
|
|
761
|
+
linkedDependencies[capsulesDir] = rootLinks;
|
|
762
|
+
installTasks.push(this.installInCapsules(capsulesDir, cyclicCapsuleList, installOptions, {
|
|
699
763
|
cachePackagesOnCapsulesRoot,
|
|
700
764
|
linkedDependencies,
|
|
701
765
|
packageManager: opts.packageManager,
|
|
702
766
|
nodeLinker: opts.nodeLinker
|
|
703
|
-
});
|
|
704
|
-
}
|
|
767
|
+
}));
|
|
768
|
+
}
|
|
769
|
+
nestedCapsules.forEach((capsule, index) => {
|
|
770
|
+
installTasks.push((async () => {
|
|
771
|
+
const newCapsuleList = _capsuleList().default.fromArray([capsule]);
|
|
772
|
+
if (opts.cacheCapsulesDir && capsulesDir !== opts.cacheCapsulesDir && opts.cacheLockFileOnly) {
|
|
773
|
+
const cacheCapsuleDir = _path().default.join(opts.cacheCapsulesDir, (0, _path().basename)(capsule.path));
|
|
774
|
+
const lockFilePath = _path().default.join(cacheCapsuleDir, 'pnpm-lock.yaml');
|
|
775
|
+
const lockExists = await _fsExtra().default.pathExists(lockFilePath);
|
|
776
|
+
if (lockExists) {
|
|
777
|
+
try {
|
|
778
|
+
// this.logger.console(`moving lock file from ${lockFilePath} to ${capsule.path}`);
|
|
779
|
+
await (0, _fsExtra().copyFile)(lockFilePath, _path().default.join(capsule.path, 'pnpm-lock.yaml'));
|
|
780
|
+
} catch (err) {
|
|
781
|
+
// We can ignore the error, we don't want to break the flow. the file will be anyway re-generated
|
|
782
|
+
// in the target capsule. it will only be a bit slower.
|
|
783
|
+
this.logger.error(`failed moving lock file from cache folder path: ${lockFilePath} to local capsule at ${capsule.path} (even though the lock file seems to exist)`, err);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
const linkedDependencies = await this.linkInCapsules(newCapsuleList, capsulesWithPackagesData);
|
|
788
|
+
// attach the root links to a single install. When a cyclic group install exists it owns
|
|
789
|
+
// them (its root is capsulesDir); otherwise the first nested capsule does, as before.
|
|
790
|
+
if (index === 0 && !cyclicCapsules.length) {
|
|
791
|
+
linkedDependencies[capsulesDir] = rootLinks;
|
|
792
|
+
}
|
|
793
|
+
await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {
|
|
794
|
+
cachePackagesOnCapsulesRoot,
|
|
795
|
+
linkedDependencies,
|
|
796
|
+
packageManager: opts.packageManager,
|
|
797
|
+
nodeLinker: opts.nodeLinker
|
|
798
|
+
});
|
|
799
|
+
})());
|
|
800
|
+
});
|
|
801
|
+
await Promise.all(installTasks);
|
|
705
802
|
} else {
|
|
706
803
|
const dependenciesGraph = opts.useDependenciesGraph ? await legacyScope?.getDependenciesGraphByComponentIds(capsuleList.getAllComponentIDs()) : undefined;
|
|
707
804
|
const capsulesWithoutDependenciesGraph = opts.useDependenciesGraph ? await this.getCapsulesWithoutDependenciesGraph(capsuleList, legacyScope) : _capsuleList().default.fromArray([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_rimraf","data","_interopRequireDefault","require","_uuid","_cli","_semver","_chalk","_lodash","_harmonyModules","_aspectLoader","_component","_componentPackageVersion","_dependenciesFs","_graph","_harmony","_dependencyResolver","_logger","_componentId","_globalConfig","_legacy","_componentVersion","_component2","_legacy2","_harmonyModules2","_pkgModules","_fsExtra","_interopRequireWildcard","_objectHash","_path","_workspaceModules","_pMap","_capsule","_capsuleList","_capsuleCache","_isolator","_symlinkDependenciesToCapsules","_network","_configStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","CAPSULE_DIR_LENGTH","DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","CAPSULE_READY_FILE","exports","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","cli","configStore","_config","capsuleTransferSlot","logger","createLogger","IsolatorAspect","id","isolator","registerAutoPruneHook","sweepTrashAsync","constructor","graph","Map","Set","cache","CapsuleCache","getRootDirOfAllCapsules","isolateComponents","seeders","opts","legacyScope","host","getHost","debug","join","JSON","stringify","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","context","aspects","cyclicDeps","getCyclicDependenciesOfSeeders","seedersWithVersions","map","seeder","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","shouldUseDatedDirs","capsuleDir","getCapsulesRootDir","useDatedDirs","cacheCapsulesDir","capsuleList","createCapsules","rootBaseDir","cacheCapsules","process","env","CACHE_CAPSULES","cacheLockFileOnly","targetCapsuleDir","registerMoveCapsuleOnProcessExit","relinkCoreAspectsInCapsuleDir","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","componentsToInclude","compact","filteredComps","isFeatureEnabled","DISABLE_CAPSULE_OPTIMIZATION","filterUnmodifiedExportedDependencies","alreadyIsolated","cyclicIds","findCycles","flat","size","alreadyIsolatedIds","idsToAdd","idStr","datedCapsuleDir","info","registerOnBeforeExit","allDirs","getAllCapsulesDirsFromRoot","moveCapsulesLockFileToTargetDir","moveCapsulesToTargetDir","rootDir","fs","readdir","withFileTypes","capsuleDirents","dir","isDirectory","capsulesDirs","sourceRootDir","promises","sourceDir","dirname","basename","sourceLockFile","pathExistsSync","_movedLockFiles","console","targetDir","targetLockFile","targetLockFileExists","pathExists","remove","mvFunc","getCapsuleTransferFn","add","err","error","sourceCapsuleReadyFile","getCapsuleReadyFilePath","targetCapsuleReadyFile","rimraf","sync","removeCapsuleReadyFileSync","moveWithTempName","writeCapsuleReadyFileSync","move","tempDir","v4","exists","capsulesDir","linkingOptions","linkTeambitBit","linkCoreAspects","linker","getLinker","linkingContext","inCapsule","linkedRootDeps","calculateLinkedDeps","ComponentMap","create","createLinks","skipIfSymlinkValid","alwaysNew","getExistingAsIs","installOptions","useNesting","realCapsulesDir","allCapsulesExists","every","Capsule","getCapsuleDirName","readyFilePath","existsSync","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","copy","components","longProcessLogger","wsPath","workspaceName","createLongProcessLogger","chalk","cyan","bold","isolatedCapsules","emptyRootDir","supportsDedupingOnExistingRoot","config","emptyDir","capsules","createCapsulesFromComponents","writeRootPackageJson","getCapsuleDirHash","rootKind","deriveCapsuleKind","rootOriginPath","ensureOriginMarker","allCapsuleList","CapsuleList","fromArray","ensureAspectCapsuleMarkers","end","skipIfExists","existingCapsules","capsule","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","cachePackagesOnCapsulesRoot","installLongProcessLogger","rootLinks","linkInCapsulesRoot","index","newCapsuleList","cacheCapsuleDir","lockFilePath","lockExists","copyFile","linkedDependencies","linkInCapsules","installInCapsules","packageManager","nodeLinker","dependenciesGraph","useDependenciesGraph","getDependenciesGraphByComponentIds","getAllComponentIDs","capsulesWithoutDependenciesGraph","getCapsulesWithoutDependenciesGraph","addDependenciesGraphToComponents","populateArtifactsFrom","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","markCapsulesAsReady","capsuleListOutput","consoleSuccess","pMap","getDependenciesGraphByComponentId","isEmpty","concurrency","concurrentComponentsLimit","componentIdByPkgName","createComponentIdByPkgNameMap","comps","componentRelativeDir","relative","addDependenciesGraph","componentById","state","_consumer","markCapsuleAsReady","writeFile","capsulePath","exist","removeSync","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","installingContext","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","forcedHarmonyVersion","harmonyVersionInRootPolicy","excludeExtensionsDependencies","dedupeInjectedDeps","packageManagerInstallOptions","autoInstallPeers","dedupePeers","nmSelfReferences","capsuleSelfReference","overrides","capsulesOverrides","hoistPatterns","rootComponentsForCapsules","keepExistingModulesDir","hasRootComponents","hoistWorkspacePackages","install","toComponentMap","nestedLinks","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","linkNestedDepsInNM","symlinkOnCapsuleRoot","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","link","linkDetailToLocalDepEntry","fromEntries","key","linkDetail","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","ComponentIdList","c","getParentsComp","artifactsFrom","getConsumerComponent","populateArtifactsFromComps","getCapsule","scope","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","list","withoutNodeModules","capsuleFullPaths","code","registerCapsuleTransferFn","fn","register","values","getDefaultCapsuleTransferFn","source","target","overwrite","hash","substring","getCapsuleDirOpts","useHash","datedDirId","getCapsuleDirOptsWithDefaults","capsulesRootBaseDir","dateDir","getDatedCapsuleDirName","defaultDatedBaseDir","datedBaseDir","getConfig","CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR","hashDir","finalDatedDirId","_datedHashForName","deleteCapsules","pruneCapsules","listAllCapsuleRoots","rootPackageJson","packageJson","outputJsonSync","createFromComponent","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","packageJsonPath","previousPackageJsonRaw","readFile","encoding","parse","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","peerDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","versionRange","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addPeerDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","populateArtifactsIgnorePkgJson","compParent","getCompForArtifacts","mergePkgJsonFromLastBuild","toVinylFile","artifacts","getArtifacts","addManyFiles","suffix","aspectsData","extensions","findExtension","aspectData","aspectId","pkgJsonLastBuild","pkgJson","current","mergeDeps","currentDeps","depsFromLastBuild","depName","bitDir","componentDepsToIgnore","getComponentDependencies","getBitDependencies","reduce","acc","depId","searchWithoutVersion","fromDepsResolver","isEqualWithoutVersion","versionWithRange","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensionsBitIds","main","pathNormalizeToLinux","mainFile","buildStatus","artifactFilesToFetch","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","seederIds","remotes","getRemoteScopes","filtered","componentIdStr","isSeeder","seederId","isModified","isPublished","publishConfig","wasPublished","isSnap","wasPackagePublished","canBeInstalled","isExported","isHub","builderData","Extensions","builder","pkgData","pkg","publishedPackage","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","CLIAspect","ConfigStoreAspect","Slot","withType","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import rimraf from 'rimraf';\nimport { v4 } from 'uuid';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport chalk from 'chalk';\nimport { compact, flatten, isEqual, pick } from 'lodash';\nimport { isFeatureEnabled, DISABLE_CAPSULE_OPTIMIZATION } from '@teambit/harmony.modules.feature-toggle';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { ComponentMap, ComponentAspect } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory, Component } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport type { GraphMain } from '@teambit/graph';\nimport { GraphAspect } from '@teambit/graph';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type {\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n PackageManagerInstallOptions,\n NodeLinker,\n} from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect, KEY_NAME_BY_LIFECYCLE_TYPE } from '@teambit/dependency-resolver';\nimport type { Logger, LoggerMain, LongProcessLogger } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport type { Scope, Scope as LegacyScope } from '@teambit/legacy.scope';\nimport type { GlobalConfigMain } from '@teambit/global-config';\nimport { GlobalConfigAspect } from '@teambit/global-config';\nimport {\n DEPENDENCIES_FIELDS,\n PACKAGE_JSON,\n CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR,\n Extensions,\n} from '@teambit/legacy.constants';\nimport { isSnap } from '@teambit/component-version';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport type { AbstractVinyl, ArtifactVinyl } from '@teambit/component.sources';\nimport {\n PackageJsonFile,\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n DataToPersist,\n RemovePath,\n} from '@teambit/component.sources';\nimport type { PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { concurrentComponentsLimit } from '@teambit/harmony.modules.concurrency';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { type DependenciesGraph } from '@teambit/objects';\n\nimport fs, { copyFile } from 'fs-extra';\nimport hash from 'object-hash';\nimport path, { basename } from 'path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport pMap from 'p-map';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { CapsuleCache } from './capsule-cache';\nimport type { CapsuleKind, PruneCapsulesOptions, PruneCapsulesReport } from './capsule-cache';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\n\nexport type ListResults = {\n capsules: string[];\n};\n\nexport type CapsuleTransferFn = (sourceDir: string, targetDir: string) => Promise<void>;\n\nexport type CapsuleTransferSlot = SlotRegistry<CapsuleTransferFn>;\n\n/**\n * Context for the isolation process\n */\nexport type IsolationContext = {\n /**\n * Whether the isolation done for aspects (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\n/**\n * it's normally a sha1 of the workspace/scope dir. 40 chars long. however, Windows is not happy with long paths.\n * so we use a shorter hash. the number 9 is pretty random, it's what we use for short-hash of snaps.\n * we're aware of an extremely low risk of collision. take into account that in most cases you won't have more than 10\n * capsules in the machine.\n */\nconst CAPSULE_DIR_LENGTH = 9;\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 /**\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 * If this is true -\n * the isolator will do few things:\n * 1. in the end of the process it will only move the lock file (pnpm-lock.yaml) into the capsule cache\n * 2. in the beginning of the process it will check if there is a lock file in the capsule cache, if yes it will move\n * it to the temp dated dir\n * 3. it will write env's file into the dated dir (as it only contain the lock file)\n * 4. it will run install in the dated dir (as there is no node_modules there yet)\n */\n cacheLockFileOnly?: boolean;\n\n /**\n * If set, along with useDatedDirs, then we will use the same hash dir for all capsules created with the same\n * datedDirId\n */\n datedDirId?: string;\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 populateArtifactsFrom?: ComponentID[];\n\n /**\n * relevant when populateArtifactsFrom is set.\n * by default, it uses the package.json created in the previous snap as a base and make the necessary changes.\n * if this is set to true, it will ignore the package.json from the previous snap.\n */\n populateArtifactsIgnorePkgJson?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n /**\n * Use specific package manager for the isolation process (override the package manager from the dep resolver config)\n */\n packageManager?: string;\n\n /**\n * Use specific node linker for the isolation process (override the package manager from the dep resolver config)\n */\n nodeLinker?: NodeLinker;\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 /**\n * Root dir of capsulse cache (used mostly to copy lock file if used with cache lock file only option)\n */\n cacheCapsulesDir?: string;\n\n /**\n * Generate a lockfile from the dependencies graph stored in the model\n * and generate a dependency graph from the lockfile in the capsule.\n */\n useDependenciesGraph?: boolean;\n};\n\ntype GetCapsuleDirOpts = Pick<\n IsolateComponentsOptions,\n 'datedDirId' | 'useHash' | 'rootBaseDir' | 'useDatedDirs' | 'cacheLockFileOnly'\n> & {\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\n/**\n * File name to indicate that the capsule is ready (all packages are installed and links are created)\n */\nexport const CAPSULE_READY_FILE = '.bit-capsule-ready';\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [\n DependencyResolverAspect,\n LoggerAspect,\n ComponentAspect,\n GraphAspect,\n GlobalConfigAspect,\n AspectLoaderAspect,\n CLIAspect,\n ConfigStoreAspect,\n ];\n static slots = [Slot.withType<CapsuleTransferFn>()];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n _datedHashForName = new Map<string, string>(); // cache dated hash for a specific name\n _movedLockFiles = new Set(); // cache moved lock files to avoid show warning about them\n\n static async provider(\n [dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader, cli, configStore]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain,\n CLIMain,\n ConfigStoreMain,\n ],\n _config,\n [capsuleTransferSlot]: [CapsuleTransferSlot]\n ): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(\n dependencyResolver,\n logger,\n componentAspect,\n graphMain,\n cli,\n globalConfig,\n aspectLoader,\n capsuleTransferSlot,\n configStore\n );\n isolator.registerAutoPruneHook();\n isolator.sweepTrashAsync();\n return isolator;\n }\n private cache: CapsuleCache;\n\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graph: GraphMain,\n private cli: CLIMain,\n private globalConfig: GlobalConfigMain,\n private aspectLoader: AspectLoaderMain,\n private capsuleTransferSlot: CapsuleTransferSlot,\n private configStore: ConfigStoreMain\n ) {\n this.cache = new CapsuleCache(logger, cli, configStore, () => this.getRootDirOfAllCapsules());\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 = opts.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 let componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n // seedersOnly skips the dependency graph and installs deps as packages from the registry.\n // A dependency in a cycle with a seeder can't be installed that way (its snap-version isn't\n // published yet), so pull it into the isolation as a capsule. Skip this for aspect isolation:\n // aspects are loaded from already-published packages and pulling cyclic aspect deps in only\n // forces loading envs that aren't installed in that context.\n if (opts.seedersOnly && !opts.context?.aspects) {\n const cyclicDeps = await this.getCyclicDependenciesOfSeeders(seeders, componentsToIsolate, createGraphOpts);\n if (cyclicDeps.length) {\n this.logger.debug(`isolateComponents, adding ${cyclicDeps.length} cyclic dependencies of the seeders`);\n componentsToIsolate = [...componentsToIsolate, ...cyclicDeps];\n }\n }\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 cacheCapsulesDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n opts.cacheCapsulesDir = cacheCapsulesDir;\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 const cacheCapsules = process.env.CACHE_CAPSULES || opts.cacheLockFileOnly;\n if (shouldUseDatedDirs && cacheCapsules) {\n const targetCapsuleDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir, opts.cacheLockFileOnly);\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 = opts.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 componentsToInclude = compact(existingCompsIds);\n let filteredComps = await host.getMany(componentsToInclude);\n\n // Optimization: exclude unmodified exported dependencies from capsule creation\n if (!isFeatureEnabled(DISABLE_CAPSULE_OPTIMIZATION)) {\n filteredComps = await this.filterUnmodifiedExportedDependencies(filteredComps, seeders, host);\n this.logger.debug(\n `[OPTIMIZATION] Before filtering: ${componentsToInclude.length}. After filtering: ${filteredComps.length} components remaining`\n );\n }\n\n return filteredComps;\n }\n\n /**\n * When isolating seeders-only (e.g. `bit sign`), dependencies are normally installed as packages\n * from the registry rather than getting a capsule. That breaks for a dependency that is part of a\n * dependency cycle with a seeder: the cyclic component references back into a seeder whose\n * snap-version package was never published, so the capsule install tries to fetch an unpublished\n * snap from the registry and fails (the Ripple circular-dependency build failure). Return the\n * dependency components that participate in a cycle with any seeder so they can be added to the\n * isolation as real capsules and linked locally instead of installed from the registry.\n */\n private async getCyclicDependenciesOfSeeders(\n seeders: ComponentID[],\n alreadyIsolated: Component[],\n opts: CreateGraphOptions = {}\n ): Promise<Component[]> {\n const host = opts.host || this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n // the graph only spans the seeders and their dependencies, so any cycle in it is a cycle a\n // seeder participates in. Pass includeDeps=true so detection doesn't rely on matching the\n // (possibly versionless) seeder ids against the graph's versioned node ids — otherwise a\n // seeder-involving cycle can be missed and its members get installed from the registry again.\n const cyclicIds = new Set<string>(graph.findCycles(undefined, true).flat());\n if (cyclicIds.size === 0) return [];\n const alreadyIsolatedIds = new Set(alreadyIsolated.map((comp) => comp.id.toString()));\n const idsToAdd = [...cyclicIds]\n .filter((idStr) => !alreadyIsolatedIds.has(idStr))\n .map((idStr) => graph.node(idStr)?.attr)\n .filter((id): id is ComponentID => id != null);\n if (idsToAdd.length === 0) return [];\n // The ids come straight from the graph we just built, so their objects are already present in\n // the host — getMany loads them without hitting the network.\n return host.getMany(idsToAdd);\n }\n\n private registerMoveCapsuleOnProcessExit(\n datedCapsuleDir: string,\n targetCapsuleDir: string,\n cacheLockFileOnly = false\n ): void {\n this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);\n this.cli.registerOnBeforeExit(async () => {\n const allDirs = await this.getAllCapsulesDirsFromRoot(datedCapsuleDir);\n if (cacheLockFileOnly) {\n await this.moveCapsulesLockFileToTargetDir(allDirs, datedCapsuleDir, targetCapsuleDir);\n } else {\n await this.moveCapsulesToTargetDir(allDirs, datedCapsuleDir, targetCapsuleDir);\n }\n });\n }\n\n private async getAllCapsulesDirsFromRoot(rootDir: string): Promise<string[]> {\n const allDirs = await fs.readdir(rootDir, { withFileTypes: true });\n const capsuleDirents = allDirs.filter((dir) => dir.isDirectory() && dir.name !== 'node_modules');\n return capsuleDirents.map((dir) => path.join(rootDir, dir.name));\n }\n\n private async moveCapsulesLockFileToTargetDir(\n capsulesDirs: string[],\n sourceRootDir: string,\n targetCapsuleDir: string\n ): Promise<void> {\n this.logger.info(`start moving lock files from ${sourceRootDir} to ${targetCapsuleDir}`);\n const promises = capsulesDirs.map(async (sourceDir) => {\n const dirname = path.basename(sourceDir);\n const sourceLockFile = path.join(sourceDir, 'pnpm-lock.yaml');\n // Lock file is not exist, don't copy it to the cache\n if (!fs.pathExistsSync(sourceLockFile)) {\n // It was already moved during the process, do not show the log for it\n if (!this._movedLockFiles.has(sourceLockFile)) {\n this.logger.console(`skipping moving lock file to cache as it is not exist ${sourceDir}`);\n }\n return;\n }\n const targetDir = path.join(targetCapsuleDir, dirname);\n const targetLockFile = path.join(targetDir, 'pnpm-lock.yaml');\n const targetLockFileExists = await fs.pathExists(targetLockFile);\n if (targetLockFileExists) {\n // Lock file is already in the cache, no need to move it\n // this.logger.console(`skipping moving lock file to cache as it is already exist at ${targetDir}`);\n\n // Delete existing lock file so we can update it\n await fs.remove(targetLockFile);\n return;\n }\n this.logger.debug(`moving lock file from ${sourceLockFile} to ${targetDir}`);\n const mvFunc = this.getCapsuleTransferFn();\n try {\n await mvFunc(sourceLockFile, path.join(targetDir, 'pnpm-lock.yaml'));\n this._movedLockFiles.add(sourceLockFile);\n } catch (err) {\n this.logger.error(`failed moving lock file from ${sourceLockFile} to ${targetDir}`, err);\n }\n });\n await Promise.all(promises);\n }\n\n private async moveCapsulesToTargetDir(\n capsulesDirs: string[],\n sourceRootDir: string,\n targetCapsuleDir: string\n ): Promise<void> {\n this.logger.info(`start moving capsules from ${sourceRootDir} to ${targetCapsuleDir}`);\n const promises = capsulesDirs.map(async (sourceDir) => {\n const dirname = path.basename(sourceDir);\n const sourceCapsuleReadyFile = this.getCapsuleReadyFilePath(sourceDir);\n if (!fs.pathExistsSync(sourceCapsuleReadyFile)) {\n // Capsule is not ready, don't copy it to the cache\n this.logger.console(`skipping moving capsule to cache as it is not ready ${sourceDir}`);\n return;\n }\n const targetDir = path.join(targetCapsuleDir, dirname);\n if (fs.pathExistsSync(path.join(targetCapsuleDir, dirname))) {\n const targetCapsuleReadyFile = this.getCapsuleReadyFilePath(targetDir);\n if (fs.pathExistsSync(targetCapsuleReadyFile)) {\n // Capsule is already in the cache, no need to move it\n this.logger.console(`skipping moving capsule to cache as it is already exist at ${targetDir}`);\n return;\n }\n this.logger.console(`cleaning target capsule location as it's not ready at: ${targetDir}`);\n rimraf.sync(targetDir);\n }\n this.logger.console(`moving specific capsule from ${sourceDir} to ${targetDir}`);\n // We delete the ready file path first, as the move might take a long time, so we don't want to move\n // the ready file indicator before the capsule is ready in the new location\n this.removeCapsuleReadyFileSync(sourceDir);\n await this.moveWithTempName(sourceDir, targetDir, this.getCapsuleTransferFn());\n // Mark the capsule as ready in the new location\n this.writeCapsuleReadyFileSync(targetDir);\n });\n await Promise.all(promises);\n }\n\n /**\n * The function moves a directory from a source location to a target location using a temporary directory.\n * This is using temp dir because sometime the source dir and target dir might be in different FS\n * (for example different mounts) which means the move might take a long time\n * during the time of moving, another process will see that the capsule is not ready and will try to remove then\n * move it again, which lead to the first process throwing an error\n * @param sourceDir - The source directory from where the files or directories will be moved.\n * @param targetDir - The target directory where the source directory will be moved to.\n */\n private async moveWithTempName(sourceDir, targetDir, mvFunc: Function = fs.move): Promise<void> {\n const tempDir = `${targetDir}-${v4()}`;\n this.logger.console(`moving capsule from ${sourceDir} to a temp dir ${tempDir}`);\n await mvFunc(sourceDir, tempDir);\n const exists = await fs.pathExists(targetDir);\n // This might exist if in the time when we move to the temp dir, another process created the target dir already\n if (exists) {\n this.logger.console(`skip moving capsule from temp dir to real dir as it's already exist: ${targetDir}`);\n // Clean leftovers\n await rimraf(tempDir);\n return;\n }\n this.logger.console(`moving capsule from a temp dir ${tempDir} to the target dir ${targetDir}`);\n await mvFunc(tempDir, targetDir);\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 // This links are in the global cache which used by many process\n // we don't want to delete and re-create the links if they already exist and valid\n return createLinks(capsulesDir, linkedRootDeps, { skipIfSymlinkValid: true });\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 // validate all capsules in the real location exists and valid\n const allCapsulesExists = componentsToIsolate.every((component) => {\n const capsuleDir = path.join(realCapsulesDir, Capsule.getCapsuleDirName(component));\n const readyFilePath = this.getCapsuleReadyFilePath(capsuleDir);\n return fs.existsSync(capsuleDir) && fs.existsSync(readyFilePath);\n });\n if (allCapsulesExists) {\n this.logger.debug(\n `All required capsules already exists and valid in the real (cached) location: ${realCapsulesDir}`\n );\n return false;\n }\n this.logger.debug(\n `Missing required capsules in the real (cached) location: ${realCapsulesDir}, using dated (temp) dir`\n );\n return true;\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 /* eslint-disable complexity */\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 || opts.name || '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 useNesting = this.dependencyResolver.isolatedCapsules() && opts.installOptions?.useNesting;\n const installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n\n const config = { installPackages: true, ...opts };\n if (opts.getExistingAsIs && !(await fs.pathExists(capsulesDir))) {\n this.logger.console(\n `💡 Capsules directory not found: ${capsulesDir}. Automatically setting getExistingAsIs to false.`\n );\n opts.getExistingAsIs = false;\n }\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n let capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n this.writeRootPackageJson(capsulesDir, this.getCapsuleDirHash(opts.baseDir || ''));\n const rootKind = this.deriveCapsuleKind(opts);\n const rootOriginPath = opts.baseDir || '';\n await this.cache.ensureOriginMarker(capsulesDir, rootKind, rootOriginPath);\n const allCapsuleList = CapsuleList.fromArray(capsules);\n let capsuleList = allCapsuleList;\n if (opts.getExistingAsIs) {\n if (rootKind === 'scope-aspects-root') {\n await this.cache.ensureAspectCapsuleMarkers(allCapsuleList, rootOriginPath);\n }\n longProcessLogger?.end();\n\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) {\n if (rootKind === 'scope-aspects-root') {\n await this.cache.ensureAspectCapsuleMarkers(existingCapsules, rootOriginPath);\n }\n longProcessLogger?.end();\n return existingCapsules;\n }\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: LongProcessLogger | undefined;\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(\n `install packages in ${capsuleList.length} capsules`\n );\n }\n const rootLinks = await this.linkInCapsulesRoot(capsulesDir, capsuleList, linkingOptions);\n if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule, index) => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n if (opts.cacheCapsulesDir && capsulesDir !== opts.cacheCapsulesDir && opts.cacheLockFileOnly) {\n const cacheCapsuleDir = path.join(opts.cacheCapsulesDir, basename(capsule.path));\n const lockFilePath = path.join(cacheCapsuleDir, 'pnpm-lock.yaml');\n const lockExists = await fs.pathExists(lockFilePath);\n if (lockExists) {\n try {\n // this.logger.console(`moving lock file from ${lockFilePath} to ${capsule.path}`);\n await copyFile(lockFilePath, path.join(capsule.path, 'pnpm-lock.yaml'));\n } catch (err) {\n // We can ignore the error, we don't want to break the flow. the file will be anyway re-generated\n // in the target capsule. it will only be a bit slower.\n this.logger.error(\n `failed moving lock file from cache folder path: ${lockFilePath} to local capsule at ${capsule.path} (even though the lock file seems to exist)`,\n err\n );\n }\n }\n }\n const linkedDependencies = await this.linkInCapsules(newCapsuleList, capsulesWithPackagesData);\n if (index === 0) {\n linkedDependencies[capsulesDir] = rootLinks;\n }\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\n });\n })\n );\n } else {\n const dependenciesGraph = opts.useDependenciesGraph\n ? await legacyScope?.getDependenciesGraphByComponentIds(capsuleList.getAllComponentIDs())\n : undefined;\n const capsulesWithoutDependenciesGraph = opts.useDependenciesGraph\n ? await this.getCapsulesWithoutDependenciesGraph(capsuleList, legacyScope)\n : CapsuleList.fromArray([]);\n const linkedDependencies = await this.linkInCapsules(capsuleList, capsulesWithPackagesData);\n linkedDependencies[capsulesDir] = rootLinks;\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n dependenciesGraph,\n });\n if (capsulesWithoutDependenciesGraph.length) {\n // If the graph was not present in the model, use the just-created lockfile inside the capsules\n // to populate it only for the missing components.\n await this.addDependenciesGraphToComponents(capsulesWithoutDependenciesGraph, components, capsulesDir);\n }\n }\n if (installLongProcessLogger) {\n installLongProcessLogger.end('success');\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 crashing when the versions don't exist yet.\n // skip this rewrite when populateArtifactsFrom is set, because the package.json was already\n // written with the correct (merged) dependencies from the last build in writeComponentsInCapsules.\n if (!opts.populateArtifactsFrom) {\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 }\n await this.markCapsulesAsReady(capsuleList);\n if (rootKind === 'scope-aspects-root') {\n await this.cache.ensureAspectCapsuleMarkers(allCapsuleList, rootOriginPath);\n }\n if (longProcessLogger) {\n longProcessLogger.end();\n }\n // Only show this message if at least one new capsule created\n if (longProcessLogger && capsuleList.length) {\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 /* eslint-enable complexity */\n\n private async getCapsulesWithoutDependenciesGraph(\n capsuleList: CapsuleList,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n if (!legacyScope) return capsuleList;\n const capsules = await pMap(\n capsuleList,\n async (capsule) => {\n const dependenciesGraph = await legacyScope.getDependenciesGraphByComponentId(capsule.component.id);\n return dependenciesGraph == null || dependenciesGraph.isEmpty() ? capsule : undefined;\n },\n { concurrency: concurrentComponentsLimit() }\n );\n return CapsuleList.fromArray(compact(capsules));\n }\n\n private async addDependenciesGraphToComponents(\n capsuleList: CapsuleList,\n components: Component[],\n capsulesDir: string\n ): Promise<void> {\n const componentIdByPkgName = this.dependencyResolver.createComponentIdByPkgNameMap(components);\n const opts = {\n componentIdByPkgName,\n rootDir: capsulesDir,\n };\n const comps = capsuleList.map((capsule) => ({\n component: capsule.component,\n componentRelativeDir: path.relative(capsulesDir, capsule.path),\n }));\n await this.dependencyResolver.addDependenciesGraph(comps, opts);\n const componentById = new Map(components.map((component) => [component.id.toString(), component]));\n for (const capsule of capsuleList) {\n const dependenciesGraph = capsule.component.state._consumer.dependenciesGraph;\n if (!dependenciesGraph) continue;\n // Graph calculation mutates capsule components; callers persist the original host components.\n const component = componentById.get(capsule.component.id.toString());\n if (component) component.state._consumer.dependenciesGraph = dependenciesGraph;\n }\n }\n\n private async markCapsulesAsReady(capsuleList: CapsuleList): Promise<void> {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n return this.markCapsuleAsReady(capsule);\n })\n );\n }\n\n private async markCapsuleAsReady(capsule: Capsule): Promise<void> {\n const readyFilePath = this.getCapsuleReadyFilePath(capsule.path);\n return fs.writeFile(readyFilePath, '');\n }\n\n private removeCapsuleReadyFileSync(capsulePath: string): void {\n const readyFilePath = this.getCapsuleReadyFilePath(capsulePath);\n const exist = fs.pathExistsSync(readyFilePath);\n if (!exist) return;\n fs.removeSync(readyFilePath);\n }\n\n private writeCapsuleReadyFileSync(capsulePath: string): void {\n const readyFilePath = this.getCapsuleReadyFilePath(capsulePath);\n const exist = fs.pathExistsSync(readyFilePath);\n if (exist) return;\n fs.writeFileSync(readyFilePath, '');\n }\n\n private getCapsuleReadyFilePath(capsulePath: string): string {\n return path.join(capsulePath, CAPSULE_READY_FILE);\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 packageManager?: string;\n nodeLinker?: NodeLinker;\n dependenciesGraph?: DependenciesGraph;\n }\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: opts.cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n installingContext: { inCapsule: true },\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\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 forcedHarmonyVersion: this.dependencyResolver.harmonyVersionInRootPolicy(),\n excludeExtensionsDependencies: true,\n dedupeInjectedDeps: true,\n dependenciesGraph: opts.dependenciesGraph,\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n autoInstallPeers: this.dependencyResolver.config.autoInstallPeers,\n dedupePeers: this.dependencyResolver.config.dedupePeers,\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n nmSelfReferences: this.dependencyResolver.config.capsuleSelfReference,\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n hoistPatterns: this.dependencyResolver.config.hoistPatterns,\n rootComponentsForCapsules: this.dependencyResolver.isolatedCapsules(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.isolatedCapsules(),\n hasRootComponents: this.dependencyResolver.isolatedCapsules(),\n hoistWorkspacePackages: true,\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 capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[]\n ): Promise<Record<string, Record<string, string>>> {\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.isolatedCapsules()) {\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n nestedLinks = await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n }\n return nestedLinks ?? {};\n }\n\n private async linkInCapsulesRoot(\n capsulesDir: string,\n capsuleList: CapsuleList,\n linkingOptions: LinkingOptions\n ): Promise<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 if (!this.dependencyResolver.isolatedCapsules()) {\n rootLinks = await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\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 ...linkedRootDeps,\n ...this.toLocalLinks(rootLinks),\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 /**\n * TODO: The modified/unmodified separation and `importMultipleDistsArtifacts` optimization below\n * is likely ineffective and could be removed. See TODO comment on `CapsuleList.capsuleUsePreviouslySavedDists`\n * for details. The optimization downloads dist artifacts for unmodified components, but TypeScript\n * will recompile them anyway because `tsconfig.tsbuildinfo` is not saved in objects.\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 = ComponentIdList.fromArray(legacyComponents.map((c) => c.id));\n const getParentsComp = () => {\n const artifactsFrom = opts?.populateArtifactsFrom;\n if (!artifactsFrom) return undefined;\n if (!legacyScope) throw new Error('populateArtifactsFrom is set but legacyScope is not defined');\n return Promise.all(artifactsFrom.map((id) => legacyScope.getConsumerComponent(id)));\n };\n const populateArtifactsFromComps = await getParentsComp();\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?.populateArtifactsFrom\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(\n component,\n allIds,\n scope,\n opts,\n populateArtifactsFromComps\n );\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(rootDir: string): Promise<ListResults> {\n try {\n const capsules = await fs.readdir(rootDir);\n const withoutNodeModules = capsules.filter((c) => c !== 'node_modules');\n const capsuleFullPaths = withoutNodeModules.map((c) => path.join(rootDir, c));\n return {\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { capsules: [] };\n }\n throw e;\n }\n }\n\n registerCapsuleTransferFn(fn: CapsuleTransferFn) {\n this.capsuleTransferSlot.register(fn);\n }\n\n private getCapsuleTransferFn(): CapsuleTransferFn {\n return this.capsuleTransferSlot.values()[0] || this.getDefaultCapsuleTransferFn();\n }\n\n private getDefaultCapsuleTransferFn(): CapsuleTransferFn {\n return async (source, target) => {\n return fs.move(source, target, { overwrite: true });\n };\n }\n\n private getCapsuleDirHash(baseDir: string): string {\n return hash(baseDir).substring(0, CAPSULE_DIR_LENGTH);\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 datedDirId?: string\n ): PathOsBasedAbsolute {\n if (typeof getCapsuleDirOpts === 'string') {\n getCapsuleDirOpts = { baseDir: getCapsuleDirOpts, rootBaseDir, useHash, useDatedDirs, datedDirId };\n }\n const getCapsuleDirOptsWithDefaults = {\n useHash: true,\n useDatedDirs: false,\n cacheLockFileOnly: false,\n ...getCapsuleDirOpts,\n };\n const capsulesRootBaseDir = getCapsuleDirOptsWithDefaults.rootBaseDir || this.getRootDirOfAllCapsules();\n if (getCapsuleDirOptsWithDefaults.useDatedDirs) {\n const dateDir = this.cache.getDatedCapsuleDirName();\n const defaultDatedBaseDir = 'dated-capsules';\n const datedBaseDir = this.configStore.getConfig(CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR) || defaultDatedBaseDir;\n let hashDir;\n const finalDatedDirId = getCapsuleDirOpts.datedDirId;\n if (finalDatedDirId && this._datedHashForName.has(finalDatedDirId)) {\n // Make sure in the same process we always use the same hash for the same datedDirId\n hashDir = this._datedHashForName.get(finalDatedDirId);\n } else {\n hashDir = v4();\n if (finalDatedDirId) {\n this._datedHashForName.set(finalDatedDirId, hashDir);\n }\n }\n return path.join(capsulesRootBaseDir, datedBaseDir, dateDir, hashDir);\n }\n const dir = getCapsuleDirOptsWithDefaults.useHash\n ? this.getCapsuleDirHash(getCapsuleDirOptsWithDefaults.baseDir)\n : getCapsuleDirOptsWithDefaults.baseDir;\n return path.join(capsulesRootBaseDir, dir);\n }\n\n // --- Capsule-cache delegates ---------------------------------------------------------\n // The actual cache management (origin markers, fast-delete + trash sweep, prune\n // pipeline, auto-prune trigger) lives in `CapsuleCache`. These thin forwarders keep\n // the externally-used isolator API stable.\n\n async deleteCapsules(rootDir?: string): Promise<string> {\n return this.cache.deleteCapsules(rootDir);\n }\n\n async pruneCapsules(opts: PruneCapsulesOptions = {}): Promise<PruneCapsulesReport> {\n return this.cache.pruneCapsules(opts);\n }\n\n async listAllCapsuleRoots(opts: { withSizes?: boolean } = {}) {\n return this.cache.listAllCapsuleRoots(opts);\n }\n\n registerAutoPruneHook(): void {\n this.cache.registerAutoPruneHook();\n }\n\n sweepTrashAsync(): void {\n this.cache.sweepTrashAsync();\n }\n\n private writeRootPackageJson(capsulesDir: string, hashDir: string): void {\n const rootPackageJson = path.join(capsulesDir, 'package.json');\n if (!fs.existsSync(rootPackageJson)) {\n const packageJson = {\n name: `capsules-${hashDir}`,\n 'bit-capsule': true,\n };\n fs.outputJsonSync(rootPackageJson, packageJson);\n }\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 pMap(\n components,\n (component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n },\n { concurrency: concurrentComponentsLimit() }\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getGlobalCapsulesBaseDir();\n }\n\n /**\n * Derive the capsule kind from the isolation context. Aspect resolution sets\n * `opts.context.aspects = true`. Otherwise, distinguish bare-scope isolations\n * (host is ScopeMain) from workspace isolations (host is Workspace) by duck-typing\n * on `bitMap`, which only Workspace exposes — this avoids a circular dep on the\n * workspace aspect.\n */\n private deriveCapsuleKind(opts: IsolateComponentsOptions): CapsuleKind {\n if (opts.context?.aspects) return 'scope-aspects-root';\n const host = opts.host || this.componentAspect.getHost();\n if (host && !('bitMap' in host)) return 'scope';\n return 'workspace';\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) => !isEqual(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 {\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 peerDependencies: {},\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] =\n dep.versionRange && dep.versionRange !== '+' ? dep.versionRange : version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = 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 packageJsonFile.addPeerDependencies(manifest.peerDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n private async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: ComponentIdList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions,\n populateArtifactsFromComps?: ConsumerComponent[]\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(component, writeToPath, ids);\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 if (populateArtifactsFromComps && !opts?.populateArtifactsIgnorePkgJson) {\n const compParent = this.getCompForArtifacts(component, populateArtifactsFromComps);\n this.mergePkgJsonFromLastBuild(compParent, packageJson);\n }\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, populateArtifactsFromComps);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private mergePkgJsonFromLastBuild(component: ConsumerComponent, packageJson: PackageJsonFile) {\n const suffix = `for ${component.id.toString()}. to workaround this, use --ignore-last-pkg-json flag`;\n const aspectsData = component.extensions.findExtension('teambit.pipelines/builder')?.data?.aspectsData;\n if (!aspectsData) throw new Error(`getPkgJsonFromLastBuild, unable to find builder aspects data ${suffix}`);\n const data = aspectsData?.find((aspectData) => aspectData.aspectId === 'teambit.pkg/pkg');\n if (!data) throw new Error(`getPkgJsonFromLastBuild, unable to find pkg aspect data ${suffix}`);\n const pkgJsonLastBuild = data?.data?.pkgJson;\n if (!pkgJsonLastBuild) throw new Error(`getPkgJsonFromLastBuild, unable to find pkgJson of pkg aspect ${suffix}`);\n const current = packageJson.packageJsonObject;\n pkgJsonLastBuild.componentId = current.componentId;\n pkgJsonLastBuild.version = current.version;\n const mergeDeps = (currentDeps?: Record<string, string>, depsFromLastBuild?: Record<string, string>) => {\n if (!depsFromLastBuild) return;\n if (!currentDeps) return depsFromLastBuild;\n Object.keys(depsFromLastBuild).forEach((depName) => {\n if (!currentDeps[depName]) return;\n depsFromLastBuild[depName] = currentDeps[depName];\n });\n return depsFromLastBuild;\n };\n pkgJsonLastBuild.dependencies = mergeDeps(current.dependencies, pkgJsonLastBuild.dependencies);\n pkgJsonLastBuild.devDependencies = mergeDeps(current.devDependencies, pkgJsonLastBuild.devDependencies);\n pkgJsonLastBuild.peerDependencies = mergeDeps(current.peerDependencies, pkgJsonLastBuild.peerDependencies);\n packageJson.mergePackageJsonObject(pkgJsonLastBuild);\n }\n\n private getCompForArtifacts(\n component: Component,\n populateArtifactsFromComps: ConsumerComponent[]\n ): ConsumerComponent {\n const compParent = populateArtifactsFromComps.find((comp) =>\n comp.id.isEqual(component.id, { ignoreVersion: true })\n );\n if (!compParent) {\n throw new Error(`isolator, unable to find where to populate the artifacts from for ${component.id.toString()}`);\n }\n return compParent;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n componentDepsToIgnore: ComponentIdList\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const compDeps = this.dependencyResolver.getComponentDependencies(component);\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: ComponentIdList) => {\n return dependencies.reduce((acc, depId: ComponentID) => {\n if (componentDepsToIgnore.searchWithoutVersion(depId)) {\n return acc;\n }\n const fromDepsResolver = compDeps.find((dep) => dep.componentId.isEqualWithoutVersion(depId));\n const versionWithRange = fromDepsResolver?.versionRange;\n\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = versionWithRange || 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);\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 populateArtifactsFromComps?: ConsumerComponent[]\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\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' && !populateArtifactsFromComps) {\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 (populateArtifactsFromComps) {\n const compParent = this.getCompForArtifacts(component, populateArtifactsFromComps);\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 /**\n * Filter out unmodified exported dependencies to optimize capsule creation.\n * These dependencies can be installed as packages instead of creating capsules.\n */\n private async filterUnmodifiedExportedDependencies(\n components: Component[],\n seederIds: ComponentID[],\n host: ComponentFactory\n ): Promise<Component[]> {\n this.logger.debug(`filterUnmodifiedExportedDependencies: filtering ${components.length} components`);\n\n const scope = this.componentAspect.getHost('teambit.scope/scope');\n // @ts-ignore it's there, but we can't have the type of ScopeMain here to not create a circular dependency\n const remotes = await scope.getRemoteScopes();\n\n const filtered: Component[] = [];\n\n for (const component of components) {\n const componentIdStr = component.id.toString();\n const isSeeder = seederIds.some((seederId) => component.id.isEqual(seederId, { ignoreVersion: true }));\n\n if (isSeeder) {\n // Always include seeders (modified components and their dependents)\n filtered.push(component);\n continue;\n }\n // For dependencies, check if they are exported and unmodified\n\n // Check if component is modified\n // Normally, when running \"bit build\" with no args, only the seeders are modified, so this check is not needed.\n // However, when running \"bit build comp1\", comp1 might have modified dependencies. we want to include them.\n // In terms of performance, I checked on a big workspace, it costs zero time, because the modification data is cached.\n const isModified = await component.isModified();\n if (isModified) {\n // Always include modified components\n filtered.push(component);\n continue;\n }\n\n const isPublished = component.get('teambit.pkg/pkg')?.config?.packageJson?.publishConfig;\n // `buildStatus === 'succeed'` is not enough to know the package is on the registry: a SNAP can build\n // successfully yet never publish — e.g. `bit ci pr` snapping with the publish task skipped (build\n // succeeds so buildStatus becomes 'succeed', but no package is published). reusing such a lane on a\n // later run, this unmodified dependency would be excluded here and then fail to install with \"No\n // matching version found\". For snaps we therefore also require evidence the package was actually\n // published (`publishedPackage` builder metadata). We DON'T demand it for tagged (semver) releases:\n // those are published by the release pipeline, and the metadata is not reliable as a published-marker\n // anyway — older published versions simply don't carry it, so requiring it would wrongly rebuild\n // installable deps from source and create duplicate package instances in the capsules.\n const wasPublished = !isSnap(component.id.version) || this.wasPackagePublished(component);\n const canBeInstalled =\n host.isExported(component.id) &&\n (remotes.isHub(component.id.scope) || isPublished) &&\n component.buildStatus === 'succeed' &&\n wasPublished;\n\n if (canBeInstalled) {\n this.logger.debug(`[OPTIMIZATION] Excluding unmodified exported dependency: ${componentIdStr}`);\n } else {\n filtered.push(component);\n }\n }\n\n this.logger.debug(\n `filterUnmodifiedExportedDependencies: kept ${filtered.length} out of ${components.length} components`\n );\n return filtered;\n }\n\n /**\n * whether this exact (snap) version recorded a successful publish. the publish (pkg) build task writes\n * `publishedPackage` into the version's builder data only on a real (non-dry-run) successful publish\n * (see publisher.ts). it's inline metadata on the version, read here via the public component aspect\n * API (no network). NOTE: presence proves the package was published, but ABSENCE does not prove it\n * wasn't — older published versions don't carry this field — so callers only use it to gate snaps,\n * where the skip-publish gap actually occurs, not tagged releases.\n */\n private wasPackagePublished(component: Component): boolean {\n const builderData = component.get(Extensions.builder)?.data;\n const pkgData = builderData?.aspectsData?.find((aspectData) => aspectData.aspectId === Extensions.pkg);\n return pkgData?.data?.publishedPackage != null;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_rimraf","data","_interopRequireDefault","require","_uuid","_cli","_semver","_chalk","_lodash","_harmonyModules","_aspectLoader","_component","_componentPackageVersion","_dependenciesFs","_graph","_harmony","_dependencyResolver","_logger","_componentId","_globalConfig","_legacy","_componentVersion","_component2","_legacy2","_harmonyModules2","_pkgModules","_fsExtra","_interopRequireWildcard","_objectHash","_path","_workspaceModules","_pMap","_capsule","_capsuleList","_capsuleCache","_isolator","_symlinkDependenciesToCapsules","_network","_configStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","CAPSULE_DIR_LENGTH","DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","CAPSULE_READY_FILE","exports","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","cli","configStore","_config","capsuleTransferSlot","logger","createLogger","IsolatorAspect","id","isolator","registerAutoPruneHook","sweepTrashAsync","constructor","graph","Map","Set","cache","CapsuleCache","getRootDirOfAllCapsules","isolateComponents","seeders","opts","legacyScope","host","getHost","debug","join","JSON","stringify","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","cyclicMemberIds","onlySnaps","Boolean","context","aspects","hasSnapComponentDependency","components","cyclicDeps","memberIds","getCyclicDependenciesOfSeeders","seedersWithVersions","map","seeder","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","shouldUseDatedDirs","capsuleDir","getCapsulesRootDir","useDatedDirs","cacheCapsulesDir","capsuleList","createCapsules","rootBaseDir","cacheCapsules","process","env","CACHE_CAPSULES","cacheLockFileOnly","targetCapsuleDir","registerMoveCapsuleOnProcessExit","relinkCoreAspectsInCapsuleDir","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","componentsToInclude","compact","filteredComps","isFeatureEnabled","DISABLE_CAPSULE_OPTIMIZATION","filterUnmodifiedExportedDependencies","some","getComponentDependencies","dep","componentId","version","isSnap","alreadyIsolated","empty","cycles","findCycles","alreadyIsolatedIds","isSnapId","idStr","idsToAddStr","cycle","newMembers","membersToAdd","add","idsToAdd","datedCapsuleDir","info","registerOnBeforeExit","allDirs","getAllCapsulesDirsFromRoot","moveCapsulesLockFileToTargetDir","moveCapsulesToTargetDir","rootDir","fs","readdir","withFileTypes","capsuleDirents","dir","isDirectory","capsulesDirs","sourceRootDir","promises","sourceDir","dirname","basename","sourceLockFile","pathExistsSync","_movedLockFiles","console","targetDir","targetLockFile","targetLockFileExists","pathExists","remove","mvFunc","getCapsuleTransferFn","err","error","sourceCapsuleReadyFile","getCapsuleReadyFilePath","targetCapsuleReadyFile","rimraf","sync","removeCapsuleReadyFileSync","moveWithTempName","writeCapsuleReadyFileSync","move","tempDir","v4","exists","capsulesDir","linkingOptions","linkTeambitBit","linkCoreAspects","linker","getLinker","linkingContext","inCapsule","linkedRootDeps","calculateLinkedDeps","ComponentMap","create","createLinks","skipIfSymlinkValid","alwaysNew","getExistingAsIs","installOptions","useNesting","realCapsulesDir","allCapsulesExists","every","Capsule","getCapsuleDirName","readyFilePath","existsSync","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","copy","longProcessLogger","wsPath","workspaceName","createLongProcessLogger","chalk","cyan","bold","isolatedCapsules","emptyRootDir","supportsDedupingOnExistingRoot","config","emptyDir","capsules","createCapsulesFromComponents","writeRootPackageJson","getCapsuleDirHash","rootKind","deriveCapsuleKind","rootOriginPath","ensureOriginMarker","allCapsuleList","CapsuleList","fromArray","ensureAspectCapsuleMarkers","end","skipIfExists","existingCapsules","capsule","cyclicNeedsInstall","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","cachePackagesOnCapsulesRoot","installLongProcessLogger","rootLinks","linkInCapsulesRoot","cyclicCapsules","cyclicCapsuleSet","nestedCapsules","installTasks","cyclicCapsuleList","linkedDependencies","linkInCapsules","installInCapsules","packageManager","nodeLinker","index","newCapsuleList","cacheCapsuleDir","lockFilePath","lockExists","copyFile","dependenciesGraph","useDependenciesGraph","getDependenciesGraphByComponentIds","getAllComponentIDs","capsulesWithoutDependenciesGraph","getCapsulesWithoutDependenciesGraph","addDependenciesGraphToComponents","populateArtifactsFrom","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","markCapsulesAsReady","capsuleListOutput","consoleSuccess","pMap","getDependenciesGraphByComponentId","isEmpty","concurrency","concurrentComponentsLimit","componentIdByPkgName","createComponentIdByPkgNameMap","comps","componentRelativeDir","relative","addDependenciesGraph","componentById","state","_consumer","markCapsuleAsReady","writeFile","capsulePath","exist","removeSync","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","installingContext","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","forcedHarmonyVersion","harmonyVersionInRootPolicy","excludeExtensionsDependencies","dedupeInjectedDeps","packageManagerInstallOptions","autoInstallPeers","dedupePeers","nmSelfReferences","capsuleSelfReference","overrides","capsulesOverrides","hoistPatterns","rootComponentsForCapsules","keepExistingModulesDir","hasRootComponents","hoistWorkspacePackages","install","toComponentMap","nestedLinks","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","linkNestedDepsInNM","symlinkOnCapsuleRoot","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","link","linkDetailToLocalDepEntry","fromEntries","key","linkDetail","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","ComponentIdList","c","getParentsComp","artifactsFrom","getConsumerComponent","populateArtifactsFromComps","getCapsule","scope","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","list","withoutNodeModules","capsuleFullPaths","code","registerCapsuleTransferFn","fn","register","values","getDefaultCapsuleTransferFn","source","target","overwrite","hash","substring","getCapsuleDirOpts","useHash","datedDirId","getCapsuleDirOptsWithDefaults","capsulesRootBaseDir","dateDir","getDatedCapsuleDirName","defaultDatedBaseDir","datedBaseDir","getConfig","CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR","hashDir","finalDatedDirId","_datedHashForName","deleteCapsules","pruneCapsules","listAllCapsuleRoots","rootPackageJson","packageJson","outputJsonSync","createFromComponent","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","field","packageJsonPath","previousPackageJsonRaw","readFile","encoding","parse","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","peerDependencies","compDeps","toTypeArray","depCapsule","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","versionRange","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addPeerDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","populateArtifactsIgnorePkgJson","compParent","getCompForArtifacts","mergePkgJsonFromLastBuild","toVinylFile","artifacts","getArtifacts","addManyFiles","suffix","aspectsData","extensions","findExtension","aspectData","aspectId","pkgJsonLastBuild","pkgJson","current","mergeDeps","currentDeps","depsFromLastBuild","depName","bitDir","componentDepsToIgnore","getBitDependencies","reduce","acc","depId","searchWithoutVersion","fromDepsResolver","isEqualWithoutVersion","versionWithRange","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensionsBitIds","main","pathNormalizeToLinux","mainFile","buildStatus","artifactFilesToFetch","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","seederIds","remotes","getRemoteScopes","filtered","componentIdStr","isSeeder","seederId","isModified","isPublished","publishConfig","wasPublished","wasPackagePublished","canBeInstalled","isExported","isHub","builderData","Extensions","builder","pkgData","pkg","publishedPackage","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","CLIAspect","ConfigStoreAspect","Slot","withType","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import rimraf from 'rimraf';\nimport { v4 } from 'uuid';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport chalk from 'chalk';\nimport { compact, flatten, isEqual, pick } from 'lodash';\nimport { isFeatureEnabled, DISABLE_CAPSULE_OPTIMIZATION } from '@teambit/harmony.modules.feature-toggle';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { ComponentMap, ComponentAspect } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory, Component } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport type { GraphMain } from '@teambit/graph';\nimport { GraphAspect } from '@teambit/graph';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type {\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n PackageManagerInstallOptions,\n NodeLinker,\n} from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect, KEY_NAME_BY_LIFECYCLE_TYPE } from '@teambit/dependency-resolver';\nimport type { Logger, LoggerMain, LongProcessLogger } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport type { Scope, Scope as LegacyScope } from '@teambit/legacy.scope';\nimport type { GlobalConfigMain } from '@teambit/global-config';\nimport { GlobalConfigAspect } from '@teambit/global-config';\nimport {\n DEPENDENCIES_FIELDS,\n PACKAGE_JSON,\n CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR,\n Extensions,\n} from '@teambit/legacy.constants';\nimport { isSnap } from '@teambit/component-version';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport type { AbstractVinyl, ArtifactVinyl } from '@teambit/component.sources';\nimport {\n PackageJsonFile,\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n DataToPersist,\n RemovePath,\n} from '@teambit/component.sources';\nimport type { PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { concurrentComponentsLimit } from '@teambit/harmony.modules.concurrency';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { type DependenciesGraph } from '@teambit/objects';\n\nimport fs, { copyFile } from 'fs-extra';\nimport hash from 'object-hash';\nimport path, { basename } from 'path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport pMap from 'p-map';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { CapsuleCache } from './capsule-cache';\nimport type { CapsuleKind, PruneCapsulesOptions, PruneCapsulesReport } from './capsule-cache';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\n\nexport type ListResults = {\n capsules: string[];\n};\n\nexport type CapsuleTransferFn = (sourceDir: string, targetDir: string) => Promise<void>;\n\nexport type CapsuleTransferSlot = SlotRegistry<CapsuleTransferFn>;\n\n/**\n * Context for the isolation process\n */\nexport type IsolationContext = {\n /**\n * Whether the isolation done for aspects (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\n/**\n * it's normally a sha1 of the workspace/scope dir. 40 chars long. however, Windows is not happy with long paths.\n * so we use a shorter hash. the number 9 is pretty random, it's what we use for short-hash of snaps.\n * we're aware of an extremely low risk of collision. take into account that in most cases you won't have more than 10\n * capsules in the machine.\n */\nconst CAPSULE_DIR_LENGTH = 9;\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 /**\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 * If this is true -\n * the isolator will do few things:\n * 1. in the end of the process it will only move the lock file (pnpm-lock.yaml) into the capsule cache\n * 2. in the beginning of the process it will check if there is a lock file in the capsule cache, if yes it will move\n * it to the temp dated dir\n * 3. it will write env's file into the dated dir (as it only contain the lock file)\n * 4. it will run install in the dated dir (as there is no node_modules there yet)\n */\n cacheLockFileOnly?: boolean;\n\n /**\n * If set, along with useDatedDirs, then we will use the same hash dir for all capsules created with the same\n * datedDirId\n */\n datedDirId?: string;\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 populateArtifactsFrom?: ComponentID[];\n\n /**\n * relevant when populateArtifactsFrom is set.\n * by default, it uses the package.json created in the previous snap as a base and make the necessary changes.\n * if this is set to true, it will ignore the package.json from the previous snap.\n */\n populateArtifactsIgnorePkgJson?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n /**\n * Use specific package manager for the isolation process (override the package manager from the dep resolver config)\n */\n packageManager?: string;\n\n /**\n * Use specific node linker for the isolation process (override the package manager from the dep resolver config)\n */\n nodeLinker?: NodeLinker;\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 /**\n * Root dir of capsulse cache (used mostly to copy lock file if used with cache lock file only option)\n */\n cacheCapsulesDir?: string;\n\n /**\n * Generate a lockfile from the dependencies graph stored in the model\n * and generate a dependency graph from the lockfile in the capsule.\n */\n useDependenciesGraph?: boolean;\n};\n\ntype GetCapsuleDirOpts = Pick<\n IsolateComponentsOptions,\n 'datedDirId' | 'useHash' | 'rootBaseDir' | 'useDatedDirs' | 'cacheLockFileOnly'\n> & {\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\n/**\n * File name to indicate that the capsule is ready (all packages are installed and links are created)\n */\nexport const CAPSULE_READY_FILE = '.bit-capsule-ready';\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [\n DependencyResolverAspect,\n LoggerAspect,\n ComponentAspect,\n GraphAspect,\n GlobalConfigAspect,\n AspectLoaderAspect,\n CLIAspect,\n ConfigStoreAspect,\n ];\n static slots = [Slot.withType<CapsuleTransferFn>()];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n _datedHashForName = new Map<string, string>(); // cache dated hash for a specific name\n _movedLockFiles = new Set(); // cache moved lock files to avoid show warning about them\n\n static async provider(\n [dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader, cli, configStore]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain,\n CLIMain,\n ConfigStoreMain,\n ],\n _config,\n [capsuleTransferSlot]: [CapsuleTransferSlot]\n ): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(\n dependencyResolver,\n logger,\n componentAspect,\n graphMain,\n cli,\n globalConfig,\n aspectLoader,\n capsuleTransferSlot,\n configStore\n );\n isolator.registerAutoPruneHook();\n isolator.sweepTrashAsync();\n return isolator;\n }\n private cache: CapsuleCache;\n\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graph: GraphMain,\n private cli: CLIMain,\n private globalConfig: GlobalConfigMain,\n private aspectLoader: AspectLoaderMain,\n private capsuleTransferSlot: CapsuleTransferSlot,\n private configStore: ConfigStoreMain\n ) {\n this.cache = new CapsuleCache(logger, cli, configStore, () => this.getRootDirOfAllCapsules());\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 = opts.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 let componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n // seedersOnly skips the dependency graph and installs deps as packages from the registry.\n // A dependency in a cycle with a seeder can't be installed that way (its snap-version isn't\n // published yet), so pull it into the isolation as a capsule.\n // For aspect isolation, restrict this to snap-versioned cyclic deps: an unpublished snap (e.g.\n // a lane-built env whose preview component is co-snapped and never published) genuinely can't\n // be fetched, whereas a published-tag cyclic aspect dep must stay a registry install — pulling\n // it in forces loading an env that isn't available in that context (broke `bit ci pr` / `bit\n // new react`, both of which hit published-tag cyclic aspect deps).\n // members of dependency cycles that were pulled into the isolation. A cycle is an indivisible\n // install unit, so these capsules must be installed together (see createCapsules) — otherwise\n // the nesting install path resolves a cyclic member's unpublished snap dep from the registry.\n let cyclicMemberIds: Set<string> | undefined;\n if (opts.seedersOnly) {\n const onlySnaps = Boolean(opts.context?.aspects);\n // For aspect isolation only snap-versioned cyclic deps are ever pulled in. Building the seeder\n // graph can trigger `scope.import` on scope hosts, so skip it entirely for the common case\n // where no seeder even has a snap-versioned component dependency (a co-snapped cyclic member\n // surfaces as a direct snap dep on the seeder, so a direct-deps check is sufficient here).\n if (!onlySnaps || this.hasSnapComponentDependency(componentsToIsolate)) {\n const { components: cyclicDeps, cyclicMemberIds: memberIds } = await this.getCyclicDependenciesOfSeeders(\n seeders,\n componentsToIsolate,\n createGraphOpts,\n onlySnaps\n );\n if (cyclicDeps.length) {\n this.logger.debug(`isolateComponents, adding ${cyclicDeps.length} cyclic dependencies of the seeders`);\n componentsToIsolate = [...componentsToIsolate, ...cyclicDeps];\n cyclicMemberIds = memberIds;\n }\n }\n }\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 cacheCapsulesDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n opts.cacheCapsulesDir = cacheCapsulesDir;\n const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope, cyclicMemberIds);\n this.logger.debug(\n `creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`\n );\n const cacheCapsules = process.env.CACHE_CAPSULES || opts.cacheLockFileOnly;\n if (shouldUseDatedDirs && cacheCapsules) {\n const targetCapsuleDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir, opts.cacheLockFileOnly);\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 = opts.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 componentsToInclude = compact(existingCompsIds);\n let filteredComps = await host.getMany(componentsToInclude);\n\n // Optimization: exclude unmodified exported dependencies from capsule creation\n if (!isFeatureEnabled(DISABLE_CAPSULE_OPTIMIZATION)) {\n filteredComps = await this.filterUnmodifiedExportedDependencies(filteredComps, seeders, host);\n this.logger.debug(\n `[OPTIMIZATION] Before filtering: ${componentsToInclude.length}. After filtering: ${filteredComps.length} components remaining`\n );\n }\n\n return filteredComps;\n }\n\n /**\n * Cheap pre-check for the aspect-isolation cyclic-dep path: do any of the given components have a\n * direct snap-versioned component dependency? Used to avoid building the seeder graph (which can\n * trigger network imports on scope hosts) when there can be no snap cyclic dep to pull in.\n */\n private hasSnapComponentDependency(components: Component[]): boolean {\n return components.some((component) =>\n this.dependencyResolver\n .getComponentDependencies(component)\n .some((dep) => dep.componentId.version != null && isSnap(dep.componentId.version))\n );\n }\n\n /**\n * When isolating seeders-only (e.g. `bit sign`), dependencies are normally installed as packages\n * from the registry rather than getting a capsule. That breaks for a dependency that is part of a\n * dependency cycle with a seeder: the cyclic component references back into a seeder whose\n * snap-version package was never published, so the capsule install tries to fetch an unpublished\n * snap from the registry and fails (the Ripple circular-dependency build failure). Return the\n * dependency components that participate in a cycle with any seeder so they can be added to the\n * isolation as real capsules and linked locally instead of installed from the registry.\n *\n * When `onlySnaps` is set (aspect isolation), only cyclic deps on a snap version are pulled in.\n * A published-tag cyclic aspect dep resolves fine from the registry, and isolating it as a\n * capsule would force loading its (possibly unavailable) env — see the caller for context.\n *\n * Returns the dependency `components` to add, and `cyclicMemberIds` — the ids of every member of\n * an \"activated\" cycle (a cycle from which a dep was pulled in), including the seeders. The caller\n * installs those members together (see createCapsules); a cycle has no valid nesting order, so\n * its members must share an install root for the package manager to link them as siblings.\n */\n private async getCyclicDependenciesOfSeeders(\n seeders: ComponentID[],\n alreadyIsolated: Component[],\n opts: CreateGraphOptions = {},\n onlySnaps = false\n ): Promise<{ components: Component[]; cyclicMemberIds: Set<string> }> {\n const empty = { components: [], cyclicMemberIds: new Set<string>() };\n const host = opts.host || this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n // the graph only spans the seeders and their dependencies, so any cycle in it is a cycle a\n // seeder participates in. Pass includeDeps=true so detection doesn't rely on matching the\n // (possibly versionless) seeder ids against the graph's versioned node ids — otherwise a\n // seeder-involving cycle can be missed and its members get installed from the registry again.\n const cycles = graph.findCycles(undefined, true);\n if (cycles.length === 0) return empty;\n const alreadyIsolatedIds = new Set(alreadyIsolated.map((comp) => comp.id.toString()));\n const isSnapId = (idStr: string): boolean => {\n const id = graph.node(idStr)?.attr;\n return id?.version != null && isSnap(id.version);\n };\n const idsToAddStr = new Set<string>();\n const cyclicMemberIds = new Set<string>();\n for (const cycle of cycles) {\n // the members this cycle would contribute as new capsules. In onlySnaps mode a published-tag\n // member stays a registry install, so it neither gets pulled in nor groups the cycle.\n const newMembers = cycle.filter((idStr) => !alreadyIsolatedIds.has(idStr));\n const membersToAdd = onlySnaps ? newMembers.filter(isSnapId) : newMembers;\n if (membersToAdd.length === 0) continue;\n membersToAdd.forEach((idStr) => idsToAddStr.add(idStr));\n // group the whole cycle (the just-added members plus the already-isolated seeders in it) so\n // they install together. A published-tag member that wasn't pulled in stays out of the group.\n cycle.forEach((idStr) => {\n if (alreadyIsolatedIds.has(idStr) || idsToAddStr.has(idStr)) cyclicMemberIds.add(idStr);\n });\n }\n const idsToAdd = [...idsToAddStr]\n .map((idStr) => graph.node(idStr)?.attr)\n .filter((id): id is ComponentID => id != null);\n if (idsToAdd.length === 0) return empty;\n // The ids come straight from the graph we just built, so their objects are already present in\n // the host — getMany loads them without hitting the network.\n const components = await host.getMany(idsToAdd);\n return { components, cyclicMemberIds };\n }\n\n private registerMoveCapsuleOnProcessExit(\n datedCapsuleDir: string,\n targetCapsuleDir: string,\n cacheLockFileOnly = false\n ): void {\n this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);\n this.cli.registerOnBeforeExit(async () => {\n const allDirs = await this.getAllCapsulesDirsFromRoot(datedCapsuleDir);\n if (cacheLockFileOnly) {\n await this.moveCapsulesLockFileToTargetDir(allDirs, datedCapsuleDir, targetCapsuleDir);\n } else {\n await this.moveCapsulesToTargetDir(allDirs, datedCapsuleDir, targetCapsuleDir);\n }\n });\n }\n\n private async getAllCapsulesDirsFromRoot(rootDir: string): Promise<string[]> {\n const allDirs = await fs.readdir(rootDir, { withFileTypes: true });\n const capsuleDirents = allDirs.filter((dir) => dir.isDirectory() && dir.name !== 'node_modules');\n return capsuleDirents.map((dir) => path.join(rootDir, dir.name));\n }\n\n private async moveCapsulesLockFileToTargetDir(\n capsulesDirs: string[],\n sourceRootDir: string,\n targetCapsuleDir: string\n ): Promise<void> {\n this.logger.info(`start moving lock files from ${sourceRootDir} to ${targetCapsuleDir}`);\n const promises = capsulesDirs.map(async (sourceDir) => {\n const dirname = path.basename(sourceDir);\n const sourceLockFile = path.join(sourceDir, 'pnpm-lock.yaml');\n // Lock file is not exist, don't copy it to the cache\n if (!fs.pathExistsSync(sourceLockFile)) {\n // It was already moved during the process, do not show the log for it\n if (!this._movedLockFiles.has(sourceLockFile)) {\n this.logger.console(`skipping moving lock file to cache as it is not exist ${sourceDir}`);\n }\n return;\n }\n const targetDir = path.join(targetCapsuleDir, dirname);\n const targetLockFile = path.join(targetDir, 'pnpm-lock.yaml');\n const targetLockFileExists = await fs.pathExists(targetLockFile);\n if (targetLockFileExists) {\n // Lock file is already in the cache, no need to move it\n // this.logger.console(`skipping moving lock file to cache as it is already exist at ${targetDir}`);\n\n // Delete existing lock file so we can update it\n await fs.remove(targetLockFile);\n return;\n }\n this.logger.debug(`moving lock file from ${sourceLockFile} to ${targetDir}`);\n const mvFunc = this.getCapsuleTransferFn();\n try {\n await mvFunc(sourceLockFile, path.join(targetDir, 'pnpm-lock.yaml'));\n this._movedLockFiles.add(sourceLockFile);\n } catch (err) {\n this.logger.error(`failed moving lock file from ${sourceLockFile} to ${targetDir}`, err);\n }\n });\n await Promise.all(promises);\n }\n\n private async moveCapsulesToTargetDir(\n capsulesDirs: string[],\n sourceRootDir: string,\n targetCapsuleDir: string\n ): Promise<void> {\n this.logger.info(`start moving capsules from ${sourceRootDir} to ${targetCapsuleDir}`);\n const promises = capsulesDirs.map(async (sourceDir) => {\n const dirname = path.basename(sourceDir);\n const sourceCapsuleReadyFile = this.getCapsuleReadyFilePath(sourceDir);\n if (!fs.pathExistsSync(sourceCapsuleReadyFile)) {\n // Capsule is not ready, don't copy it to the cache\n this.logger.console(`skipping moving capsule to cache as it is not ready ${sourceDir}`);\n return;\n }\n const targetDir = path.join(targetCapsuleDir, dirname);\n if (fs.pathExistsSync(path.join(targetCapsuleDir, dirname))) {\n const targetCapsuleReadyFile = this.getCapsuleReadyFilePath(targetDir);\n if (fs.pathExistsSync(targetCapsuleReadyFile)) {\n // Capsule is already in the cache, no need to move it\n this.logger.console(`skipping moving capsule to cache as it is already exist at ${targetDir}`);\n return;\n }\n this.logger.console(`cleaning target capsule location as it's not ready at: ${targetDir}`);\n rimraf.sync(targetDir);\n }\n this.logger.console(`moving specific capsule from ${sourceDir} to ${targetDir}`);\n // We delete the ready file path first, as the move might take a long time, so we don't want to move\n // the ready file indicator before the capsule is ready in the new location\n this.removeCapsuleReadyFileSync(sourceDir);\n await this.moveWithTempName(sourceDir, targetDir, this.getCapsuleTransferFn());\n // Mark the capsule as ready in the new location\n this.writeCapsuleReadyFileSync(targetDir);\n });\n await Promise.all(promises);\n }\n\n /**\n * The function moves a directory from a source location to a target location using a temporary directory.\n * This is using temp dir because sometime the source dir and target dir might be in different FS\n * (for example different mounts) which means the move might take a long time\n * during the time of moving, another process will see that the capsule is not ready and will try to remove then\n * move it again, which lead to the first process throwing an error\n * @param sourceDir - The source directory from where the files or directories will be moved.\n * @param targetDir - The target directory where the source directory will be moved to.\n */\n private async moveWithTempName(sourceDir, targetDir, mvFunc: Function = fs.move): Promise<void> {\n const tempDir = `${targetDir}-${v4()}`;\n this.logger.console(`moving capsule from ${sourceDir} to a temp dir ${tempDir}`);\n await mvFunc(sourceDir, tempDir);\n const exists = await fs.pathExists(targetDir);\n // This might exist if in the time when we move to the temp dir, another process created the target dir already\n if (exists) {\n this.logger.console(`skip moving capsule from temp dir to real dir as it's already exist: ${targetDir}`);\n // Clean leftovers\n await rimraf(tempDir);\n return;\n }\n this.logger.console(`moving capsule from a temp dir ${tempDir} to the target dir ${targetDir}`);\n await mvFunc(tempDir, targetDir);\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 // This links are in the global cache which used by many process\n // we don't want to delete and re-create the links if they already exist and valid\n return createLinks(capsulesDir, linkedRootDeps, { skipIfSymlinkValid: true });\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 // validate all capsules in the real location exists and valid\n const allCapsulesExists = componentsToIsolate.every((component) => {\n const capsuleDir = path.join(realCapsulesDir, Capsule.getCapsuleDirName(component));\n const readyFilePath = this.getCapsuleReadyFilePath(capsuleDir);\n return fs.existsSync(capsuleDir) && fs.existsSync(readyFilePath);\n });\n if (allCapsulesExists) {\n this.logger.debug(\n `All required capsules already exists and valid in the real (cached) location: ${realCapsulesDir}`\n );\n return false;\n }\n this.logger.debug(\n `Missing required capsules in the real (cached) location: ${realCapsulesDir}, using dated (temp) dir`\n );\n return true;\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 /* eslint-disable complexity */\n private async createCapsules(\n components: Component[],\n capsulesDir: string,\n opts: IsolateComponentsOptions,\n legacyScope?: Scope,\n cyclicMemberIds?: Set<string>\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 || opts.name || '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 useNesting = this.dependencyResolver.isolatedCapsules() && opts.installOptions?.useNesting;\n const installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n\n const config = { installPackages: true, ...opts };\n if (opts.getExistingAsIs && !(await fs.pathExists(capsulesDir))) {\n this.logger.console(\n `💡 Capsules directory not found: ${capsulesDir}. Automatically setting getExistingAsIs to false.`\n );\n opts.getExistingAsIs = false;\n }\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n let capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n this.writeRootPackageJson(capsulesDir, this.getCapsuleDirHash(opts.baseDir || ''));\n const rootKind = this.deriveCapsuleKind(opts);\n const rootOriginPath = opts.baseDir || '';\n await this.cache.ensureOriginMarker(capsulesDir, rootKind, rootOriginPath);\n const allCapsuleList = CapsuleList.fromArray(capsules);\n let capsuleList = allCapsuleList;\n if (opts.getExistingAsIs) {\n if (rootKind === 'scope-aspects-root') {\n await this.cache.ensureAspectCapsuleMarkers(allCapsuleList, rootOriginPath);\n }\n longProcessLogger?.end();\n\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) {\n if (rootKind === 'scope-aspects-root') {\n await this.cache.ensureAspectCapsuleMarkers(existingCapsules, rootOriginPath);\n }\n longProcessLogger?.end();\n return existingCapsules;\n }\n } else {\n // Keep cached members of an activated cycle whenever any member of that cycle still needs an\n // install, so the grouped install below receives the whole cycle and the package manager\n // links them as siblings — otherwise a cached member would resolve its (unpublished snap)\n // sibling from the registry and fail again. When every cyclic member is already installed\n // they were grouped together on a previous run, so they drop out like any other cached capsule.\n const cyclicNeedsInstall =\n cyclicMemberIds != null &&\n capsules.some(\n (capsule) =>\n cyclicMemberIds.has(capsule.component.id.toString()) && !capsule.fs.existsSync('package.json')\n );\n capsules = capsules.filter((capsule) => {\n if (!capsule.fs.existsSync('package.json')) return true;\n return cyclicNeedsInstall && (cyclicMemberIds?.has(capsule.component.id.toString()) ?? false);\n });\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: LongProcessLogger | undefined;\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(\n `install packages in ${capsuleList.length} capsules`\n );\n }\n const rootLinks = await this.linkInCapsulesRoot(capsulesDir, capsuleList, linkingOptions);\n if (installOptions.useNesting) {\n // A dependency cycle is an indivisible install unit. Nesting installs each capsule in its\n // own root, which makes a cyclic member resolve its in-network cyclic dependency from the\n // registry (and an unpublished snap 404s). Install all members of the activated cycles\n // together at the shared root so the package manager links them as siblings — the same way\n // the non-nested path below does — while every other capsule keeps its isolated nested root.\n const cyclicCapsules = capsuleList.filter(\n (capsule) => cyclicMemberIds?.has(capsule.component.id.toString()) ?? false\n );\n const cyclicCapsuleSet = new Set(cyclicCapsules.map((capsule) => capsule.component.id.toString()));\n const nestedCapsules = capsuleList.filter(\n (capsule) => !cyclicCapsuleSet.has(capsule.component.id.toString())\n );\n const installTasks: Array<Promise<void>> = [];\n if (cyclicCapsules.length) {\n const cyclicCapsuleList = CapsuleList.fromArray(cyclicCapsules);\n const linkedDependencies = await this.linkInCapsules(cyclicCapsuleList, capsulesWithPackagesData);\n linkedDependencies[capsulesDir] = rootLinks;\n installTasks.push(\n this.installInCapsules(capsulesDir, cyclicCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\n })\n );\n }\n nestedCapsules.forEach((capsule, index) => {\n installTasks.push(\n (async () => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n if (opts.cacheCapsulesDir && capsulesDir !== opts.cacheCapsulesDir && opts.cacheLockFileOnly) {\n const cacheCapsuleDir = path.join(opts.cacheCapsulesDir, basename(capsule.path));\n const lockFilePath = path.join(cacheCapsuleDir, 'pnpm-lock.yaml');\n const lockExists = await fs.pathExists(lockFilePath);\n if (lockExists) {\n try {\n // this.logger.console(`moving lock file from ${lockFilePath} to ${capsule.path}`);\n await copyFile(lockFilePath, path.join(capsule.path, 'pnpm-lock.yaml'));\n } catch (err) {\n // We can ignore the error, we don't want to break the flow. the file will be anyway re-generated\n // in the target capsule. it will only be a bit slower.\n this.logger.error(\n `failed moving lock file from cache folder path: ${lockFilePath} to local capsule at ${capsule.path} (even though the lock file seems to exist)`,\n err\n );\n }\n }\n }\n const linkedDependencies = await this.linkInCapsules(newCapsuleList, capsulesWithPackagesData);\n // attach the root links to a single install. When a cyclic group install exists it owns\n // them (its root is capsulesDir); otherwise the first nested capsule does, as before.\n if (index === 0 && !cyclicCapsules.length) {\n linkedDependencies[capsulesDir] = rootLinks;\n }\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\n });\n })()\n );\n });\n await Promise.all(installTasks);\n } else {\n const dependenciesGraph = opts.useDependenciesGraph\n ? await legacyScope?.getDependenciesGraphByComponentIds(capsuleList.getAllComponentIDs())\n : undefined;\n const capsulesWithoutDependenciesGraph = opts.useDependenciesGraph\n ? await this.getCapsulesWithoutDependenciesGraph(capsuleList, legacyScope)\n : CapsuleList.fromArray([]);\n const linkedDependencies = await this.linkInCapsules(capsuleList, capsulesWithPackagesData);\n linkedDependencies[capsulesDir] = rootLinks;\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n dependenciesGraph,\n });\n if (capsulesWithoutDependenciesGraph.length) {\n // If the graph was not present in the model, use the just-created lockfile inside the capsules\n // to populate it only for the missing components.\n await this.addDependenciesGraphToComponents(capsulesWithoutDependenciesGraph, components, capsulesDir);\n }\n }\n if (installLongProcessLogger) {\n installLongProcessLogger.end('success');\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 crashing when the versions don't exist yet.\n // skip this rewrite when populateArtifactsFrom is set, because the package.json was already\n // written with the correct (merged) dependencies from the last build in writeComponentsInCapsules.\n if (!opts.populateArtifactsFrom) {\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 }\n await this.markCapsulesAsReady(capsuleList);\n if (rootKind === 'scope-aspects-root') {\n await this.cache.ensureAspectCapsuleMarkers(allCapsuleList, rootOriginPath);\n }\n if (longProcessLogger) {\n longProcessLogger.end();\n }\n // Only show this message if at least one new capsule created\n if (longProcessLogger && capsuleList.length) {\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 /* eslint-enable complexity */\n\n private async getCapsulesWithoutDependenciesGraph(\n capsuleList: CapsuleList,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n if (!legacyScope) return capsuleList;\n const capsules = await pMap(\n capsuleList,\n async (capsule) => {\n const dependenciesGraph = await legacyScope.getDependenciesGraphByComponentId(capsule.component.id);\n return dependenciesGraph == null || dependenciesGraph.isEmpty() ? capsule : undefined;\n },\n { concurrency: concurrentComponentsLimit() }\n );\n return CapsuleList.fromArray(compact(capsules));\n }\n\n private async addDependenciesGraphToComponents(\n capsuleList: CapsuleList,\n components: Component[],\n capsulesDir: string\n ): Promise<void> {\n const componentIdByPkgName = this.dependencyResolver.createComponentIdByPkgNameMap(components);\n const opts = {\n componentIdByPkgName,\n rootDir: capsulesDir,\n };\n const comps = capsuleList.map((capsule) => ({\n component: capsule.component,\n componentRelativeDir: path.relative(capsulesDir, capsule.path),\n }));\n await this.dependencyResolver.addDependenciesGraph(comps, opts);\n const componentById = new Map(components.map((component) => [component.id.toString(), component]));\n for (const capsule of capsuleList) {\n const dependenciesGraph = capsule.component.state._consumer.dependenciesGraph;\n if (!dependenciesGraph) continue;\n // Graph calculation mutates capsule components; callers persist the original host components.\n const component = componentById.get(capsule.component.id.toString());\n if (component) component.state._consumer.dependenciesGraph = dependenciesGraph;\n }\n }\n\n private async markCapsulesAsReady(capsuleList: CapsuleList): Promise<void> {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n return this.markCapsuleAsReady(capsule);\n })\n );\n }\n\n private async markCapsuleAsReady(capsule: Capsule): Promise<void> {\n const readyFilePath = this.getCapsuleReadyFilePath(capsule.path);\n return fs.writeFile(readyFilePath, '');\n }\n\n private removeCapsuleReadyFileSync(capsulePath: string): void {\n const readyFilePath = this.getCapsuleReadyFilePath(capsulePath);\n const exist = fs.pathExistsSync(readyFilePath);\n if (!exist) return;\n fs.removeSync(readyFilePath);\n }\n\n private writeCapsuleReadyFileSync(capsulePath: string): void {\n const readyFilePath = this.getCapsuleReadyFilePath(capsulePath);\n const exist = fs.pathExistsSync(readyFilePath);\n if (exist) return;\n fs.writeFileSync(readyFilePath, '');\n }\n\n private getCapsuleReadyFilePath(capsulePath: string): string {\n return path.join(capsulePath, CAPSULE_READY_FILE);\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 packageManager?: string;\n nodeLinker?: NodeLinker;\n dependenciesGraph?: DependenciesGraph;\n }\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: opts.cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n installingContext: { inCapsule: true },\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\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 forcedHarmonyVersion: this.dependencyResolver.harmonyVersionInRootPolicy(),\n excludeExtensionsDependencies: true,\n dedupeInjectedDeps: true,\n dependenciesGraph: opts.dependenciesGraph,\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n autoInstallPeers: this.dependencyResolver.config.autoInstallPeers,\n dedupePeers: this.dependencyResolver.config.dedupePeers,\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n nmSelfReferences: this.dependencyResolver.config.capsuleSelfReference,\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n hoistPatterns: this.dependencyResolver.config.hoistPatterns,\n rootComponentsForCapsules: this.dependencyResolver.isolatedCapsules(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.isolatedCapsules(),\n hasRootComponents: this.dependencyResolver.isolatedCapsules(),\n hoistWorkspacePackages: true,\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 capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[]\n ): Promise<Record<string, Record<string, string>>> {\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.isolatedCapsules()) {\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n nestedLinks = await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n }\n return nestedLinks ?? {};\n }\n\n private async linkInCapsulesRoot(\n capsulesDir: string,\n capsuleList: CapsuleList,\n linkingOptions: LinkingOptions\n ): Promise<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 if (!this.dependencyResolver.isolatedCapsules()) {\n rootLinks = await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\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 ...linkedRootDeps,\n ...this.toLocalLinks(rootLinks),\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 /**\n * TODO: The modified/unmodified separation and `importMultipleDistsArtifacts` optimization below\n * is likely ineffective and could be removed. See TODO comment on `CapsuleList.capsuleUsePreviouslySavedDists`\n * for details. The optimization downloads dist artifacts for unmodified components, but TypeScript\n * will recompile them anyway because `tsconfig.tsbuildinfo` is not saved in objects.\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 = ComponentIdList.fromArray(legacyComponents.map((c) => c.id));\n const getParentsComp = () => {\n const artifactsFrom = opts?.populateArtifactsFrom;\n if (!artifactsFrom) return undefined;\n if (!legacyScope) throw new Error('populateArtifactsFrom is set but legacyScope is not defined');\n return Promise.all(artifactsFrom.map((id) => legacyScope.getConsumerComponent(id)));\n };\n const populateArtifactsFromComps = await getParentsComp();\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?.populateArtifactsFrom\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(\n component,\n allIds,\n scope,\n opts,\n populateArtifactsFromComps\n );\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(rootDir: string): Promise<ListResults> {\n try {\n const capsules = await fs.readdir(rootDir);\n const withoutNodeModules = capsules.filter((c) => c !== 'node_modules');\n const capsuleFullPaths = withoutNodeModules.map((c) => path.join(rootDir, c));\n return {\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { capsules: [] };\n }\n throw e;\n }\n }\n\n registerCapsuleTransferFn(fn: CapsuleTransferFn) {\n this.capsuleTransferSlot.register(fn);\n }\n\n private getCapsuleTransferFn(): CapsuleTransferFn {\n return this.capsuleTransferSlot.values()[0] || this.getDefaultCapsuleTransferFn();\n }\n\n private getDefaultCapsuleTransferFn(): CapsuleTransferFn {\n return async (source, target) => {\n return fs.move(source, target, { overwrite: true });\n };\n }\n\n private getCapsuleDirHash(baseDir: string): string {\n return hash(baseDir).substring(0, CAPSULE_DIR_LENGTH);\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 datedDirId?: string\n ): PathOsBasedAbsolute {\n if (typeof getCapsuleDirOpts === 'string') {\n getCapsuleDirOpts = { baseDir: getCapsuleDirOpts, rootBaseDir, useHash, useDatedDirs, datedDirId };\n }\n const getCapsuleDirOptsWithDefaults = {\n useHash: true,\n useDatedDirs: false,\n cacheLockFileOnly: false,\n ...getCapsuleDirOpts,\n };\n const capsulesRootBaseDir = getCapsuleDirOptsWithDefaults.rootBaseDir || this.getRootDirOfAllCapsules();\n if (getCapsuleDirOptsWithDefaults.useDatedDirs) {\n const dateDir = this.cache.getDatedCapsuleDirName();\n const defaultDatedBaseDir = 'dated-capsules';\n const datedBaseDir = this.configStore.getConfig(CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR) || defaultDatedBaseDir;\n let hashDir;\n const finalDatedDirId = getCapsuleDirOpts.datedDirId;\n if (finalDatedDirId && this._datedHashForName.has(finalDatedDirId)) {\n // Make sure in the same process we always use the same hash for the same datedDirId\n hashDir = this._datedHashForName.get(finalDatedDirId);\n } else {\n hashDir = v4();\n if (finalDatedDirId) {\n this._datedHashForName.set(finalDatedDirId, hashDir);\n }\n }\n return path.join(capsulesRootBaseDir, datedBaseDir, dateDir, hashDir);\n }\n const dir = getCapsuleDirOptsWithDefaults.useHash\n ? this.getCapsuleDirHash(getCapsuleDirOptsWithDefaults.baseDir)\n : getCapsuleDirOptsWithDefaults.baseDir;\n return path.join(capsulesRootBaseDir, dir);\n }\n\n // --- Capsule-cache delegates ---------------------------------------------------------\n // The actual cache management (origin markers, fast-delete + trash sweep, prune\n // pipeline, auto-prune trigger) lives in `CapsuleCache`. These thin forwarders keep\n // the externally-used isolator API stable.\n\n async deleteCapsules(rootDir?: string): Promise<string> {\n return this.cache.deleteCapsules(rootDir);\n }\n\n async pruneCapsules(opts: PruneCapsulesOptions = {}): Promise<PruneCapsulesReport> {\n return this.cache.pruneCapsules(opts);\n }\n\n async listAllCapsuleRoots(opts: { withSizes?: boolean } = {}) {\n return this.cache.listAllCapsuleRoots(opts);\n }\n\n registerAutoPruneHook(): void {\n this.cache.registerAutoPruneHook();\n }\n\n sweepTrashAsync(): void {\n this.cache.sweepTrashAsync();\n }\n\n private writeRootPackageJson(capsulesDir: string, hashDir: string): void {\n const rootPackageJson = path.join(capsulesDir, 'package.json');\n if (!fs.existsSync(rootPackageJson)) {\n const packageJson = {\n name: `capsules-${hashDir}`,\n 'bit-capsule': true,\n };\n fs.outputJsonSync(rootPackageJson, packageJson);\n }\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 pMap(\n components,\n (component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n },\n { concurrency: concurrentComponentsLimit() }\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getGlobalCapsulesBaseDir();\n }\n\n /**\n * Derive the capsule kind from the isolation context. Aspect resolution sets\n * `opts.context.aspects = true`. Otherwise, distinguish bare-scope isolations\n * (host is ScopeMain) from workspace isolations (host is Workspace) by duck-typing\n * on `bitMap`, which only Workspace exposes — this avoids a circular dep on the\n * workspace aspect.\n */\n private deriveCapsuleKind(opts: IsolateComponentsOptions): CapsuleKind {\n if (opts.context?.aspects) return 'scope-aspects-root';\n const host = opts.host || this.componentAspect.getHost();\n if (host && !('bitMap' in host)) return 'scope';\n return 'workspace';\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) => !isEqual(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 {\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 peerDependencies: {},\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] =\n dep.versionRange && dep.versionRange !== '+' ? dep.versionRange : version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = 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 packageJsonFile.addPeerDependencies(manifest.peerDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n private async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: ComponentIdList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions,\n populateArtifactsFromComps?: ConsumerComponent[]\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(component, writeToPath, ids);\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 if (populateArtifactsFromComps && !opts?.populateArtifactsIgnorePkgJson) {\n const compParent = this.getCompForArtifacts(component, populateArtifactsFromComps);\n this.mergePkgJsonFromLastBuild(compParent, packageJson);\n }\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, populateArtifactsFromComps);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private mergePkgJsonFromLastBuild(component: ConsumerComponent, packageJson: PackageJsonFile) {\n const suffix = `for ${component.id.toString()}. to workaround this, use --ignore-last-pkg-json flag`;\n const aspectsData = component.extensions.findExtension('teambit.pipelines/builder')?.data?.aspectsData;\n if (!aspectsData) throw new Error(`getPkgJsonFromLastBuild, unable to find builder aspects data ${suffix}`);\n const data = aspectsData?.find((aspectData) => aspectData.aspectId === 'teambit.pkg/pkg');\n if (!data) throw new Error(`getPkgJsonFromLastBuild, unable to find pkg aspect data ${suffix}`);\n const pkgJsonLastBuild = data?.data?.pkgJson;\n if (!pkgJsonLastBuild) throw new Error(`getPkgJsonFromLastBuild, unable to find pkgJson of pkg aspect ${suffix}`);\n const current = packageJson.packageJsonObject;\n pkgJsonLastBuild.componentId = current.componentId;\n pkgJsonLastBuild.version = current.version;\n const mergeDeps = (currentDeps?: Record<string, string>, depsFromLastBuild?: Record<string, string>) => {\n if (!depsFromLastBuild) return;\n if (!currentDeps) return depsFromLastBuild;\n Object.keys(depsFromLastBuild).forEach((depName) => {\n if (!currentDeps[depName]) return;\n depsFromLastBuild[depName] = currentDeps[depName];\n });\n return depsFromLastBuild;\n };\n pkgJsonLastBuild.dependencies = mergeDeps(current.dependencies, pkgJsonLastBuild.dependencies);\n pkgJsonLastBuild.devDependencies = mergeDeps(current.devDependencies, pkgJsonLastBuild.devDependencies);\n pkgJsonLastBuild.peerDependencies = mergeDeps(current.peerDependencies, pkgJsonLastBuild.peerDependencies);\n packageJson.mergePackageJsonObject(pkgJsonLastBuild);\n }\n\n private getCompForArtifacts(\n component: Component,\n populateArtifactsFromComps: ConsumerComponent[]\n ): ConsumerComponent {\n const compParent = populateArtifactsFromComps.find((comp) =>\n comp.id.isEqual(component.id, { ignoreVersion: true })\n );\n if (!compParent) {\n throw new Error(`isolator, unable to find where to populate the artifacts from for ${component.id.toString()}`);\n }\n return compParent;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n componentDepsToIgnore: ComponentIdList\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const compDeps = this.dependencyResolver.getComponentDependencies(component);\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: ComponentIdList) => {\n return dependencies.reduce((acc, depId: ComponentID) => {\n if (componentDepsToIgnore.searchWithoutVersion(depId)) {\n return acc;\n }\n const fromDepsResolver = compDeps.find((dep) => dep.componentId.isEqualWithoutVersion(depId));\n const versionWithRange = fromDepsResolver?.versionRange;\n\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = versionWithRange || 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);\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 populateArtifactsFromComps?: ConsumerComponent[]\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\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' && !populateArtifactsFromComps) {\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 (populateArtifactsFromComps) {\n const compParent = this.getCompForArtifacts(component, populateArtifactsFromComps);\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 /**\n * Filter out unmodified exported dependencies to optimize capsule creation.\n * These dependencies can be installed as packages instead of creating capsules.\n */\n private async filterUnmodifiedExportedDependencies(\n components: Component[],\n seederIds: ComponentID[],\n host: ComponentFactory\n ): Promise<Component[]> {\n this.logger.debug(`filterUnmodifiedExportedDependencies: filtering ${components.length} components`);\n\n const scope = this.componentAspect.getHost('teambit.scope/scope');\n // @ts-ignore it's there, but we can't have the type of ScopeMain here to not create a circular dependency\n const remotes = await scope.getRemoteScopes();\n\n const filtered: Component[] = [];\n\n for (const component of components) {\n const componentIdStr = component.id.toString();\n const isSeeder = seederIds.some((seederId) => component.id.isEqual(seederId, { ignoreVersion: true }));\n\n if (isSeeder) {\n // Always include seeders (modified components and their dependents)\n filtered.push(component);\n continue;\n }\n // For dependencies, check if they are exported and unmodified\n\n // Check if component is modified\n // Normally, when running \"bit build\" with no args, only the seeders are modified, so this check is not needed.\n // However, when running \"bit build comp1\", comp1 might have modified dependencies. we want to include them.\n // In terms of performance, I checked on a big workspace, it costs zero time, because the modification data is cached.\n const isModified = await component.isModified();\n if (isModified) {\n // Always include modified components\n filtered.push(component);\n continue;\n }\n\n const isPublished = component.get('teambit.pkg/pkg')?.config?.packageJson?.publishConfig;\n // `buildStatus === 'succeed'` is not enough to know the package is on the registry: a SNAP can build\n // successfully yet never publish — e.g. `bit ci pr` snapping with the publish task skipped (build\n // succeeds so buildStatus becomes 'succeed', but no package is published). reusing such a lane on a\n // later run, this unmodified dependency would be excluded here and then fail to install with \"No\n // matching version found\". For snaps we therefore also require evidence the package was actually\n // published (`publishedPackage` builder metadata). We DON'T demand it for tagged (semver) releases:\n // those are published by the release pipeline, and the metadata is not reliable as a published-marker\n // anyway — older published versions simply don't carry it, so requiring it would wrongly rebuild\n // installable deps from source and create duplicate package instances in the capsules.\n const wasPublished = !isSnap(component.id.version) || this.wasPackagePublished(component);\n const canBeInstalled =\n host.isExported(component.id) &&\n (remotes.isHub(component.id.scope) || isPublished) &&\n component.buildStatus === 'succeed' &&\n wasPublished;\n\n if (canBeInstalled) {\n this.logger.debug(`[OPTIMIZATION] Excluding unmodified exported dependency: ${componentIdStr}`);\n } else {\n filtered.push(component);\n }\n }\n\n this.logger.debug(\n `filterUnmodifiedExportedDependencies: kept ${filtered.length} out of ${components.length} components`\n );\n return filtered;\n }\n\n /**\n * whether this exact (snap) version recorded a successful publish. the publish (pkg) build task writes\n * `publishedPackage` into the version's builder data only on a real (non-dry-run) successful publish\n * (see publisher.ts). it's inline metadata on the version, read here via the public component aspect\n * API (no network). NOTE: presence proves the package was published, but ABSENCE does not prove it\n * wasn't — older published versions don't carry this field — so callers only use it to gate snaps,\n * where the skip-publish gap actually occurs, not tagged releases.\n */\n private wasPackagePublished(component: Component): boolean {\n const builderData = component.get(Extensions.builder)?.data;\n const pkgData = builderData?.aspectsData?.find((aspectData) => aspectData.aspectId === Extensions.pkg);\n return pkgData?.data?.publishedPackage != null;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_isolator@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_isolator@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_isolator@1.0.1038/dist/isolator.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_isolator@1.0.1038/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": "1.0.
|
|
3
|
+
"version": "1.0.1038",
|
|
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": "1.0.
|
|
9
|
+
"version": "1.0.1038"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"fs-extra": "10.0.0",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"@teambit/legacy.utils": "0.0.39",
|
|
43
43
|
"@teambit/pkg.modules.component-package-name": "0.0.137",
|
|
44
44
|
"@teambit/workspace.modules.node-modules-linker": "0.0.361",
|
|
45
|
-
"@teambit/component": "1.0.
|
|
46
|
-
"@teambit/dependency-resolver": "1.0.
|
|
47
|
-
"@teambit/aspect-loader": "1.0.
|
|
48
|
-
"@teambit/graph": "1.0.
|
|
49
|
-
"@teambit/objects": "0.0.
|
|
45
|
+
"@teambit/component": "1.0.1038",
|
|
46
|
+
"@teambit/dependency-resolver": "1.0.1038",
|
|
47
|
+
"@teambit/aspect-loader": "1.0.1038",
|
|
48
|
+
"@teambit/graph": "1.0.1038",
|
|
49
|
+
"@teambit/objects": "0.0.545"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/fs-extra": "9.0.7",
|