@teambit/isolator 1.0.13 → 1.0.15
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.
- package/dist/capsule-list.d.ts +0 -1
- package/dist/capsule-list.js +0 -3
- package/dist/capsule-list.js.map +1 -1
- package/dist/isolator.composition.d.ts +2 -2
- package/dist/isolator.main.runtime.d.ts +19 -1
- package/dist/isolator.main.runtime.js +106 -42
- package/dist/isolator.main.runtime.js.map +1 -1
- package/dist/{preview-1696183042534.js → preview-1696331786092.js} +2 -2
- package/dist/symlink-dependencies-to-capsules.js +2 -2
- package/dist/symlink-dependencies-to-capsules.js.map +1 -1
- package/package.json +11 -11
package/dist/capsule-list.d.ts
CHANGED
@@ -6,7 +6,6 @@ export default class CapsuleList extends Array<Capsule> {
|
|
6
6
|
getCapsule(id: ComponentID): Capsule | undefined;
|
7
7
|
getCapsuleByLegacyId(id: BitId): Capsule | undefined;
|
8
8
|
getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined;
|
9
|
-
getCapsuleIgnoreScopeAndVersion(id: ComponentID): Capsule | undefined;
|
10
9
|
getAllCapsuleDirs(): string[];
|
11
10
|
getIdByPathInCapsule(pathInCapsule: string): ComponentID | null;
|
12
11
|
getAllComponents(): Component[];
|
package/dist/capsule-list.js
CHANGED
@@ -30,9 +30,6 @@ class CapsuleList extends Array {
|
|
30
30
|
ignoreVersion: true
|
31
31
|
}));
|
32
32
|
}
|
33
|
-
getCapsuleIgnoreScopeAndVersion(id) {
|
34
|
-
return this.find(capsule => capsule.component.id._legacy.isEqualWithoutScopeAndVersion(id._legacy));
|
35
|
-
}
|
36
33
|
getAllCapsuleDirs() {
|
37
34
|
return this.map(capsule => capsule.path);
|
38
35
|
}
|
package/dist/capsule-list.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_graph","data","require","_path","CapsuleList","Array","getCapsule","id","find","capsule","component","isEqual","getCapsuleByLegacyId","_legacy","getCapsuleIgnoreVersion","ignoreVersion","
|
1
|
+
{"version":3,"names":["_graph","data","require","_path","CapsuleList","Array","getCapsule","id","find","capsule","component","isEqual","getCapsuleByLegacyId","_legacy","getCapsuleIgnoreVersion","ignoreVersion","getAllCapsuleDirs","map","path","getIdByPathInCapsule","pathInCapsule","normalizedPathInCapsule","normalize","found","getAllComponents","c","toposort","depResolver","components","graph","Graph","forEach","comp","setNode","Node","getPackageName","node","nodes","deps","getDependencies","attr","dep","_dep$getPackageName","depPkgName","call","hasNode","setEdge","Edge","lifecycle","sortedSeeders","sortedCapsules","fromArray","capsules","capsuleUsePreviouslySavedDists","isModified","buildStatus","exports","default"],"sources":["capsule-list.ts"],"sourcesContent":["import type { Component, ComponentID } from '@teambit/component';\nimport { Dependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Edge, Graph, Node } from '@teambit/graph.cleargraph';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { normalize } from 'path';\nimport { Capsule } from './capsule';\n\nexport default class CapsuleList extends Array<Capsule> {\n getCapsule(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleByLegacyId(id: BitId): Capsule | undefined {\n return this.find((capsule) => capsule.component.id._legacy.isEqual(id));\n }\n getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id, { ignoreVersion: true }));\n }\n getAllCapsuleDirs(): string[] {\n return this.map((capsule) => capsule.path);\n }\n getIdByPathInCapsule(pathInCapsule: string): ComponentID | null {\n const normalizedPathInCapsule = normalize(pathInCapsule);\n const found = this.find((capsule) => normalizedPathInCapsule === normalize(capsule.path));\n return found ? found.component.id : null;\n }\n getAllComponents(): Component[] {\n return this.map((c) => c.component);\n }\n // Sort the capsules by their dependencies. The capsules with no dependencies will be first. Returns a new array.\n async toposort(depResolver: DependencyResolverMain): Promise<CapsuleList> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n // Build a graph with all the components from the current capsule list\n components.forEach((comp: Component) => graph.setNode(new Node(depResolver.getPackageName(comp), comp)));\n\n // Add edges between the components according to their interdependencies\n for (const node of graph.nodes) {\n // eslint-disable-next-line no-await-in-loop\n const deps = await depResolver.getDependencies(node.attr);\n deps.forEach((dep: Dependency) => {\n const depPkgName = dep.getPackageName?.();\n if (depPkgName && graph.hasNode(depPkgName)) {\n graph.setEdge(new Edge(node.id, depPkgName, dep.lifecycle));\n }\n });\n }\n\n const sortedSeeders = graph.toposort(true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const sortedCapsules: Capsule[] = sortedSeeders.map((node: Node<Component>) => this.getCapsule(node.attr.id)!);\n return CapsuleList.fromArray(sortedCapsules);\n }\n static fromArray(capsules: Capsule[]) {\n return new CapsuleList(...capsules);\n }\n /**\n * determines whether or not a capsule can theoretically use the dists saved in the last snap, rather than re-compile them.\n * practically, this optimization is used for components that have typescript as their compiler.\n */\n static async capsuleUsePreviouslySavedDists(component: Component): Promise<boolean> {\n const isModified = await component.isModified();\n return component.buildStatus === 'succeed' && !isModified;\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,MAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGe,MAAMG,WAAW,SAASC,KAAK,CAAU;EACtDC,UAAUA,CAACC,EAAe,EAAuB;IAC/C,OAAO,IAAI,CAACC,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACH,EAAE,CAACI,OAAO,CAACJ,EAAE,CAAC,CAAC;EACjE;EACAK,oBAAoBA,CAACL,EAAS,EAAuB;IACnD,OAAO,IAAI,CAACC,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACH,EAAE,CAACM,OAAO,CAACF,OAAO,CAACJ,EAAE,CAAC,CAAC;EACzE;EACAO,uBAAuBA,CAACP,EAAe,EAAuB;IAC5D,OAAO,IAAI,CAACC,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACH,EAAE,CAACI,OAAO,CAACJ,EAAE,EAAE;MAAEQ,aAAa,EAAE;IAAK,CAAC,CAAC,CAAC;EAC1F;EACAC,iBAAiBA,CAAA,EAAa;IAC5B,OAAO,IAAI,CAACC,GAAG,CAAER,OAAO,IAAKA,OAAO,CAACS,IAAI,CAAC;EAC5C;EACAC,oBAAoBA,CAACC,aAAqB,EAAsB;IAC9D,MAAMC,uBAAuB,GAAG,IAAAC,iBAAS,EAACF,aAAa,CAAC;IACxD,MAAMG,KAAK,GAAG,IAAI,CAACf,IAAI,CAAEC,OAAO,IAAKY,uBAAuB,KAAK,IAAAC,iBAAS,EAACb,OAAO,CAACS,IAAI,CAAC,CAAC;IACzF,OAAOK,KAAK,GAAGA,KAAK,CAACb,SAAS,CAACH,EAAE,GAAG,IAAI;EAC1C;EACAiB,gBAAgBA,CAAA,EAAgB;IAC9B,OAAO,IAAI,CAACP,GAAG,CAAEQ,CAAC,IAAKA,CAAC,CAACf,SAAS,CAAC;EACrC;EACA;EACA,MAAMgB,QAAQA,CAACC,WAAmC,EAAwB;IACxE,MAAMC,UAAU,GAAG,IAAI,CAACJ,gBAAgB,CAAC,CAAC;IAC1C,MAAMK,KAAK,GAAG,KAAIC,cAAK,EAAoB,CAAC;;IAE5C;IACAF,UAAU,CAACG,OAAO,CAAEC,IAAe,IAAKH,KAAK,CAACI,OAAO,CAAC,KAAIC,aAAI,EAACP,WAAW,CAACQ,cAAc,CAACH,IAAI,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC;;IAExG;IACA,KAAK,MAAMI,IAAI,IAAIP,KAAK,CAACQ,KAAK,EAAE;MAC9B;MACA,MAAMC,IAAI,GAAG,MAAMX,WAAW,CAACY,eAAe,CAACH,IAAI,CAACI,IAAI,CAAC;MACzDF,IAAI,CAACP,OAAO,CAAEU,GAAe,IAAK;QAAA,IAAAC,mBAAA;QAChC,MAAMC,UAAU,IAAAD,mBAAA,GAAGD,GAAG,CAACN,cAAc,cAAAO,mBAAA,uBAAlBA,mBAAA,CAAAE,IAAA,CAAAH,GAAqB,CAAC;QACzC,IAAIE,UAAU,IAAId,KAAK,CAACgB,OAAO,CAACF,UAAU,CAAC,EAAE;UAC3Cd,KAAK,CAACiB,OAAO,CAAC,KAAIC,aAAI,EAACX,IAAI,CAAC7B,EAAE,EAAEoC,UAAU,EAAEF,GAAG,CAACO,SAAS,CAAC,CAAC;QAC7D;MACF,CAAC,CAAC;IACJ;IAEA,MAAMC,aAAa,GAAGpB,KAAK,CAACH,QAAQ,CAAC,IAAI,CAAC;IAC1C;IACA,MAAMwB,cAAyB,GAAGD,aAAa,CAAChC,GAAG,CAAEmB,IAAqB,IAAK,IAAI,CAAC9B,UAAU,CAAC8B,IAAI,CAACI,IAAI,CAACjC,EAAE,CAAE,CAAC;IAC9G,OAAOH,WAAW,CAAC+C,SAAS,CAACD,cAAc,CAAC;EAC9C;EACA,OAAOC,SAASA,CAACC,QAAmB,EAAE;IACpC,OAAO,IAAIhD,WAAW,CAAC,GAAGgD,QAAQ,CAAC;EACrC;EACA;AACF;AACA;AACA;EACE,aAAaC,8BAA8BA,CAAC3C,SAAoB,EAAoB;IAClF,MAAM4C,UAAU,GAAG,MAAM5C,SAAS,CAAC4C,UAAU,CAAC,CAAC;IAC/C,OAAO5C,SAAS,CAAC6C,WAAW,KAAK,SAAS,IAAI,CAACD,UAAU;EAC3D;AACF;AAACE,OAAA,CAAAC,OAAA,GAAArD,WAAA"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
export declare const Logo: () => JSX.Element;
|
1
|
+
import React from 'react';
|
2
|
+
export declare const Logo: () => React.JSX.Element;
|
@@ -81,6 +81,16 @@ export declare type IsolateComponentsOptions = CreateGraphOptions & {
|
|
81
81
|
* the next iteration
|
82
82
|
*/
|
83
83
|
useDatedDirs?: boolean;
|
84
|
+
/**
|
85
|
+
* If this is true -
|
86
|
+
* the isolator will do few things:
|
87
|
+
* 1. in the end of the process it will only move the lock file (pnpm-lock.yaml) into the capsule cache
|
88
|
+
* 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
|
89
|
+
* it to the temp dated dir
|
90
|
+
* 3. it will write env's file into the dated dir (as it only contain the lock file)
|
91
|
+
* 4. it will run install in the dated dir (as there is no node_modules there yet)
|
92
|
+
*/
|
93
|
+
cacheLockFileOnly?: boolean;
|
84
94
|
/**
|
85
95
|
* If set, along with useDatedDirs, then we will use the same hash dir for all capsules created with the same
|
86
96
|
* datedDirId
|
@@ -136,8 +146,12 @@ export declare type IsolateComponentsOptions = CreateGraphOptions & {
|
|
136
146
|
*/
|
137
147
|
packageManagerConfigRootDir?: string;
|
138
148
|
context?: IsolationContext;
|
149
|
+
/**
|
150
|
+
* Root dir of capsulse cache (used mostly to copy lock file if used with cache lock file only option)
|
151
|
+
*/
|
152
|
+
cacheCapsulesDir?: string;
|
139
153
|
};
|
140
|
-
declare type GetCapsuleDirOpts = Pick<IsolateComponentsOptions, 'datedDirId' | 'useHash' | 'rootBaseDir' | 'useDatedDirs'> & {
|
154
|
+
declare type GetCapsuleDirOpts = Pick<IsolateComponentsOptions, 'datedDirId' | 'useHash' | 'rootBaseDir' | 'useDatedDirs' | 'cacheLockFileOnly'> & {
|
141
155
|
baseDir: string;
|
142
156
|
};
|
143
157
|
/**
|
@@ -161,6 +175,7 @@ export declare class IsolatorMain {
|
|
161
175
|
[idStr: string]: string;
|
162
176
|
};
|
163
177
|
_datedHashForName: Map<string, string>;
|
178
|
+
_movedLockFiles: Set<unknown>;
|
164
179
|
static provider([dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader, cli]: [
|
165
180
|
DependencyResolverMain,
|
166
181
|
LoggerMain,
|
@@ -174,6 +189,9 @@ export declare class IsolatorMain {
|
|
174
189
|
isolateComponents(seeders: ComponentID[], opts: IsolateComponentsOptions, legacyScope?: LegacyScope): Promise<Network>;
|
175
190
|
private createGraph;
|
176
191
|
private registerMoveCapsuleOnProcessExit;
|
192
|
+
private getAllCapsulesDirsFromRoot;
|
193
|
+
private moveCapsulesLockFileToTargetDir;
|
194
|
+
private moveCapsulesToTargetDir;
|
177
195
|
/**
|
178
196
|
* The function moves a directory from a source location to a target location using a temporary directory.
|
179
197
|
* This is using temp dir because sometime the source dir and target dir might be in different FS
|
@@ -145,7 +145,7 @@ function _path() {
|
|
145
145
|
return data;
|
146
146
|
}
|
147
147
|
function _fsExtra() {
|
148
|
-
const data =
|
148
|
+
const data = _interopRequireWildcard(require("fs-extra"));
|
149
149
|
_fsExtra = function () {
|
150
150
|
return data;
|
151
151
|
};
|
@@ -159,7 +159,7 @@ function _objectHash() {
|
|
159
159
|
return data;
|
160
160
|
}
|
161
161
|
function _path2() {
|
162
|
-
const data =
|
162
|
+
const data = _interopRequireWildcard(require("path"));
|
163
163
|
_path2 = function () {
|
164
164
|
return data;
|
165
165
|
};
|
@@ -249,6 +249,8 @@ function _network() {
|
|
249
249
|
};
|
250
250
|
return data;
|
251
251
|
}
|
252
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
253
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
252
254
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
253
255
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
254
256
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
@@ -273,7 +275,7 @@ const DEFAULT_ISOLATE_INSTALL_OPTIONS = {
|
|
273
275
|
const CAPSULE_READY_FILE = '.bit-capsule-ready';
|
274
276
|
exports.CAPSULE_READY_FILE = CAPSULE_READY_FILE;
|
275
277
|
class IsolatorMain {
|
276
|
-
// cache
|
278
|
+
// cache moved lock files to avoid show warning about them
|
277
279
|
|
278
280
|
static async provider([dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader, cli], _config, [capsuleTransferSlot]) {
|
279
281
|
const logger = loggerExtension.createLogger(_isolator().IsolatorAspect.id);
|
@@ -292,6 +294,8 @@ class IsolatorMain {
|
|
292
294
|
_defineProperty(this, "_componentsPackagesVersionCache", {});
|
293
295
|
// cache packages versions of components
|
294
296
|
_defineProperty(this, "_datedHashForName", new Map());
|
297
|
+
// cache dated hash for a specific name
|
298
|
+
_defineProperty(this, "_movedLockFiles", new Set());
|
295
299
|
}
|
296
300
|
|
297
301
|
// TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists
|
@@ -319,15 +323,20 @@ class IsolatorMain {
|
|
319
323
|
useDatedDirs: shouldUseDatedDirs,
|
320
324
|
baseDir: opts.baseDir || ''
|
321
325
|
}));
|
326
|
+
const cacheCapsulesDir = this.getCapsulesRootDir(_objectSpread(_objectSpread({}, opts), {}, {
|
327
|
+
useDatedDirs: false,
|
328
|
+
baseDir: opts.baseDir || ''
|
329
|
+
}));
|
330
|
+
opts.cacheCapsulesDir = cacheCapsulesDir;
|
322
331
|
const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope);
|
323
332
|
this.logger.debug(`creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`);
|
324
|
-
const cacheCapsules = process.env.CACHE_CAPSULES;
|
333
|
+
const cacheCapsules = process.env.CACHE_CAPSULES || opts.cacheLockFileOnly;
|
325
334
|
if (shouldUseDatedDirs && cacheCapsules) {
|
326
335
|
const targetCapsuleDir = this.getCapsulesRootDir(_objectSpread(_objectSpread({}, opts), {}, {
|
327
336
|
useDatedDirs: false,
|
328
337
|
baseDir: opts.baseDir || ''
|
329
338
|
}));
|
330
|
-
this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir);
|
339
|
+
this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir, opts.cacheLockFileOnly);
|
331
340
|
// TODO: ideally this should be inside the on process exit hook
|
332
341
|
// but this is an async op which make it a bit hard
|
333
342
|
await this.relinkCoreAspectsInCapsuleDir(targetCapsuleDir);
|
@@ -355,42 +364,85 @@ class IsolatorMain {
|
|
355
364
|
const existingComps = await host.getMany((0, _lodash().compact)(existingCompsIds));
|
356
365
|
return existingComps;
|
357
366
|
}
|
358
|
-
registerMoveCapsuleOnProcessExit(datedCapsuleDir, targetCapsuleDir) {
|
367
|
+
registerMoveCapsuleOnProcessExit(datedCapsuleDir, targetCapsuleDir, cacheLockFileOnly = false) {
|
359
368
|
this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);
|
360
369
|
this.cli.registerOnBeforeExit(async () => {
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
}
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
370
|
+
const allDirs = await this.getAllCapsulesDirsFromRoot(datedCapsuleDir);
|
371
|
+
if (cacheLockFileOnly) {
|
372
|
+
await this.moveCapsulesLockFileToTargetDir(allDirs, datedCapsuleDir, targetCapsuleDir);
|
373
|
+
} else {
|
374
|
+
await this.moveCapsulesToTargetDir(allDirs, datedCapsuleDir, targetCapsuleDir);
|
375
|
+
}
|
376
|
+
});
|
377
|
+
}
|
378
|
+
async getAllCapsulesDirsFromRoot(rootDir) {
|
379
|
+
const allDirs = await _fsExtra().default.readdir(rootDir, {
|
380
|
+
withFileTypes: true
|
381
|
+
});
|
382
|
+
const capsuleDirents = allDirs.filter(dir => dir.isDirectory() && dir.name !== 'node_modules');
|
383
|
+
return capsuleDirents.map(dir => _path2().default.join(rootDir, dir.name));
|
384
|
+
}
|
385
|
+
async moveCapsulesLockFileToTargetDir(capsulesDirs, sourceRootDir, targetCapsuleDir) {
|
386
|
+
this.logger.info(`start moving lock files from ${sourceRootDir} to ${targetCapsuleDir}`);
|
387
|
+
const promises = capsulesDirs.map(async sourceDir => {
|
388
|
+
const dirname = _path2().default.basename(sourceDir);
|
389
|
+
const sourceLockFile = _path2().default.join(sourceDir, 'pnpm-lock.yaml');
|
390
|
+
// Lock file is not exist, don't copy it to the cache
|
391
|
+
if (!_fsExtra().default.pathExistsSync(sourceLockFile)) {
|
392
|
+
// It was already moved during the process, do not show the log for it
|
393
|
+
if (!this._movedLockFiles.has(sourceLockFile)) {
|
394
|
+
this.logger.console(`skipping moving lock file to cache as it is not exist ${sourceDir}`);
|
372
395
|
}
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
396
|
+
return;
|
397
|
+
}
|
398
|
+
const targetDir = _path2().default.join(targetCapsuleDir, dirname);
|
399
|
+
const targetLockFile = _path2().default.join(targetDir, 'pnpm-lock.yaml');
|
400
|
+
const targetLockFileExists = await _fsExtra().default.pathExists(targetLockFile);
|
401
|
+
if (targetLockFileExists) {
|
402
|
+
// Lock file is already in the cache, no need to move it
|
403
|
+
// this.logger.console(`skipping moving lock file to cache as it is already exist at ${targetDir}`);
|
404
|
+
|
405
|
+
// Delete existing lock file so we can update it
|
406
|
+
await _fsExtra().default.remove(targetLockFile);
|
407
|
+
return;
|
408
|
+
}
|
409
|
+
this.logger.console(`moving lock file from ${sourceLockFile} to ${targetDir}`);
|
410
|
+
const mvFunc = this.getCapsuleTransferFn();
|
411
|
+
await mvFunc(sourceLockFile, _path2().default.join(targetDir, 'pnpm-lock.yaml'));
|
412
|
+
this._movedLockFiles.add(sourceLockFile);
|
413
|
+
});
|
414
|
+
await Promise.all(promises);
|
415
|
+
}
|
416
|
+
async moveCapsulesToTargetDir(capsulesDirs, sourceRootDir, targetCapsuleDir) {
|
417
|
+
this.logger.info(`start moving capsules from ${sourceRootDir} to ${targetCapsuleDir}`);
|
418
|
+
const promises = capsulesDirs.map(async sourceDir => {
|
419
|
+
const dirname = _path2().default.basename(sourceDir);
|
420
|
+
const sourceCapsuleReadyFile = this.getCapsuleReadyFilePath(sourceDir);
|
421
|
+
if (!_fsExtra().default.pathExistsSync(sourceCapsuleReadyFile)) {
|
422
|
+
// Capsule is not ready, don't copy it to the cache
|
423
|
+
this.logger.console(`skipping moving capsule to cache as it is not ready ${sourceDir}`);
|
424
|
+
return;
|
425
|
+
}
|
426
|
+
const targetDir = _path2().default.join(targetCapsuleDir, dirname);
|
427
|
+
if (_fsExtra().default.pathExistsSync(_path2().default.join(targetCapsuleDir, dirname))) {
|
428
|
+
const targetCapsuleReadyFile = this.getCapsuleReadyFilePath(targetDir);
|
429
|
+
if (_fsExtra().default.pathExistsSync(targetCapsuleReadyFile)) {
|
430
|
+
// Capsule is already in the cache, no need to move it
|
431
|
+
this.logger.console(`skipping moving capsule to cache as it is already exist at ${targetDir}`);
|
432
|
+
return;
|
383
433
|
}
|
384
|
-
this.logger.console(`
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
434
|
+
this.logger.console(`cleaning target capsule location as it's not ready at: ${targetDir}`);
|
435
|
+
_rimraf().default.sync(targetDir);
|
436
|
+
}
|
437
|
+
this.logger.console(`moving specific capsule from ${sourceDir} to ${targetDir}`);
|
438
|
+
// We delete the ready file path first, as the move might take a long time, so we don't want to move
|
439
|
+
// the ready file indicator before the capsule is ready in the new location
|
440
|
+
this.removeCapsuleReadyFileSync(sourceDir);
|
441
|
+
await this.moveWithTempName(sourceDir, targetDir, this.getCapsuleTransferFn());
|
442
|
+
// Mark the capsule as ready in the new location
|
443
|
+
this.writeCapsuleReadyFileSync(targetDir);
|
393
444
|
});
|
445
|
+
await Promise.all(promises);
|
394
446
|
}
|
395
447
|
|
396
448
|
/**
|
@@ -402,10 +454,9 @@ class IsolatorMain {
|
|
402
454
|
* @param sourceDir - The source directory from where the files or directories will be moved.
|
403
455
|
* @param targetDir - The target directory where the source directory will be moved to.
|
404
456
|
*/
|
405
|
-
async moveWithTempName(sourceDir, targetDir) {
|
457
|
+
async moveWithTempName(sourceDir, targetDir, mvFunc = _fsExtra().default.move) {
|
406
458
|
const tempDir = `${targetDir}-${(0, _uuid().v4)()}`;
|
407
459
|
this.logger.console(`moving capsule from ${sourceDir} to a temp dir ${tempDir}`);
|
408
|
-
const mvFunc = this.getCapsuleTransferFn() || _fsExtra().default.move;
|
409
460
|
await mvFunc(sourceDir, tempDir);
|
410
461
|
const exists = await _fsExtra().default.pathExists(targetDir);
|
411
462
|
// This might exist if in the time when we move to the temp dir, another process created the target dir already
|
@@ -507,8 +558,9 @@ class IsolatorMain {
|
|
507
558
|
const wsPath = opts.context.workspaceName || ((_opts$host2 = opts.host) === null || _opts$host2 === void 0 ? void 0 : _opts$host2.path) || opts.name || 'unknown';
|
508
559
|
longProcessLogger = this.logger.createLongProcessLogger(`ensuring ${_chalk().default.cyan(components.length.toString())} capsule(s) for all envs and aspects for ${_chalk().default.bold(wsPath)} at ${_chalk().default.bold(capsulesDir)}`);
|
509
560
|
}
|
561
|
+
const useNesting = this.dependencyResolver.isolatedCapsules() && ((_opts$installOptions2 = opts.installOptions) === null || _opts$installOptions2 === void 0 ? void 0 : _opts$installOptions2.useNesting);
|
510
562
|
const installOptions = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_ISOLATE_INSTALL_OPTIONS), opts.installOptions), {}, {
|
511
|
-
useNesting
|
563
|
+
useNesting
|
512
564
|
});
|
513
565
|
if (!opts.emptyRootDir) {
|
514
566
|
installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();
|
@@ -549,6 +601,15 @@ class IsolatorMain {
|
|
549
601
|
if (installOptions.useNesting) {
|
550
602
|
await Promise.all(capsuleList.map(async capsule => {
|
551
603
|
const newCapsuleList = _capsuleList().default.fromArray([capsule]);
|
604
|
+
if (opts.cacheCapsulesDir && capsulesDir !== opts.cacheCapsulesDir && opts.cacheLockFileOnly) {
|
605
|
+
const cacheCapsuleDir = _path2().default.join(opts.cacheCapsulesDir, (0, _path2().basename)(capsule.path));
|
606
|
+
const lockFilePath = _path2().default.join(cacheCapsuleDir, 'pnpm-lock.yaml');
|
607
|
+
const lockExists = await _fsExtra().default.pathExists(lockFilePath);
|
608
|
+
if (lockExists) {
|
609
|
+
// this.logger.console(`moving lock file from ${lockFilePath} to ${capsule.path}`);
|
610
|
+
await (0, _fsExtra().copyFile)(lockFilePath, _path2().default.join(capsule.path, 'pnpm-lock.yaml'));
|
611
|
+
}
|
612
|
+
}
|
552
613
|
const linkedDependencies = await this.linkInCapsules(capsulesDir, newCapsuleList, capsulesWithPackagesData, linkingOptions);
|
553
614
|
await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {
|
554
615
|
cachePackagesOnCapsulesRoot,
|
@@ -760,7 +821,7 @@ class IsolatorMain {
|
|
760
821
|
this.capsuleTransferSlot.register(fn);
|
761
822
|
}
|
762
823
|
getCapsuleTransferFn() {
|
763
|
-
return this.capsuleTransferSlot.values()[0];
|
824
|
+
return this.capsuleTransferSlot.values()[0] || _fsExtra().default.move;
|
764
825
|
}
|
765
826
|
|
766
827
|
/** @deprecated use the new function signature with an object parameter instead */
|
@@ -777,17 +838,20 @@ class IsolatorMain {
|
|
777
838
|
}
|
778
839
|
const getCapsuleDirOptsWithDefaults = _objectSpread({
|
779
840
|
useHash: true,
|
780
|
-
useDatedDirs: false
|
841
|
+
useDatedDirs: false,
|
842
|
+
cacheLockFileOnly: false
|
781
843
|
}, getCapsuleDirOpts);
|
782
844
|
const capsulesRootBaseDir = getCapsuleDirOptsWithDefaults.rootBaseDir || this.getRootDirOfAllCapsules();
|
783
845
|
if (getCapsuleDirOptsWithDefaults.useDatedDirs) {
|
784
846
|
const date = new Date();
|
785
|
-
const
|
847
|
+
const month = date.getMonth() < 12 ? date.getMonth() + 1 : 1;
|
848
|
+
const dateDir = `${date.getFullYear()}-${month}-${date.getDate()}`;
|
786
849
|
const defaultDatedBaseDir = 'dated-capsules';
|
787
850
|
const datedBaseDir = this.globalConfig.getSync(_constants().CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR) || defaultDatedBaseDir;
|
788
851
|
let hashDir;
|
789
852
|
const finalDatedDirId = getCapsuleDirOpts.datedDirId;
|
790
853
|
if (finalDatedDirId && this._datedHashForName.has(finalDatedDirId)) {
|
854
|
+
// Make sure in the same process we always use the same hash for the same datedDirId
|
791
855
|
hashDir = this._datedHashForName.get(finalDatedDirId);
|
792
856
|
} else {
|
793
857
|
hashDir = (0, _uuid().v4)();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_rimraf","data","_interopRequireDefault","require","_uuid","_cli","_semver","_chalk","_lodash","_aspectLoader","_component","_componentPackageVersion","_dependenciesFs","_graph","_harmony","_dependencyResolver","_logger","_bitId","_globalConfig","_constants","_packageJsonFile","_artifactFiles","_path","_fsExtra","_objectHash","_path2","_equals","_dataToPersist","_removePath","_workspaceModules","_componentIdToPackageName","_concurrency","_pMap","_capsule","_capsuleList","_isolator","_symlinkDependenciesToCapsules","_network","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","CAPSULE_READY_FILE","exports","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","cli","_config","capsuleTransferSlot","logger","createLogger","IsolatorAspect","id","isolator","constructor","graph","Map","isolateComponents","seeders","opts","legacyScope","_opts$host","host","getHost","debug","join","JSON","stringify","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","seedersWithVersions","map","seeder","_legacy","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","shouldUseDatedDirs","capsuleDir","getCapsulesRootDir","useDatedDirs","capsuleList","createCapsules","rootBaseDir","cacheCapsules","process","env","CACHE_CAPSULES","targetCapsuleDir","registerMoveCapsuleOnProcessExit","relinkCoreAspectsInCapsuleDir","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","existingComps","compact","datedCapsuleDir","info","registerOnBeforeExit","allDirs","fs","readdirSync","withFileTypes","dir","isDirectory","promises","sourceDir","sourceCapsuleReadyFile","getCapsuleReadyFilePath","pathExistsSync","console","targetDir","targetCapsuleReadyFile","rimraf","sync","removeCapsuleReadyFileSync","moveWithTempName","writeCapsuleReadyFileSync","tempDir","v4","mvFunc","getCapsuleTransferFn","move","exists","pathExists","capsulesDir","linkingOptions","linkTeambitBit","linkCoreAspects","linker","getLinker","rootDir","linkingContext","inCapsule","linkedRootDeps","calculateLinkedDeps","ComponentMap","create","createLinks","skipIfSymlinkValid","_opts$installOptions","alwaysNew","getExistingAsIs","installOptions","useNesting","realCapsulesDir","allCapsulesExists","every","Capsule","getCapsuleDirName","readyFilePath","existsSync","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","copy","components","_opts$context","_opts$installOptions2","longProcessLogger","context","aspects","_opts$host2","wsPath","workspaceName","createLongProcessLogger","chalk","cyan","bold","isolatedCapsules","emptyRootDir","supportsDedupingOnExistingRoot","config","emptyDir","capsules","createCapsulesFromComponents","allCapsuleList","CapsuleList","fromArray","skipIfExists","existingCapsules","capsule","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","_opts$context2","cachePackagesOnCapsulesRoot","installLongProcessLogger","newCapsuleList","linkedDependencies","linkInCapsules","installInCapsules","packageManager","nodeLinker","end","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","markCapsulesAsReady","capsuleListOutput","consoleSuccess","markCapsuleAsReady","writeFile","capsulePath","exist","removeSync","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","installingContext","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","forceTeambitHarmonyLink","hasHarmonyInRootPolicy","excludeExtensionsDependencies","packageManagerInstallOptions","nmSelfReferences","overrides","capsulesOverrides","rootComponentsForCapsules","keepExistingModulesDir","hasRootComponents","install","toComponentMap","linkNestedDepsInNM","rootLinks","nestedLinks","symlinkOnCapsuleRoot","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","link","linkDetailToLocalDepEntry","fromEntries","linkDetail","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","c","getCapsule","scope","populateArtifactsFrom","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","list","readdir","withoutNodeModules","capsuleFullPaths","code","registerCapsuleTransferFn","fn","register","values","getCapsuleDirOpts","useHash","datedDirId","getCapsuleDirOptsWithDefaults","capsulesRootBaseDir","getRootDirOfAllCapsules","date","Date","dateDir","getFullYear","getMonth","getDate","defaultDatedBaseDir","datedBaseDir","getSync","CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR","hashDir","finalDatedDirId","_datedHashForName","has","get","set","hash","deleteCapsules","dirToDelete","remove","pMap","createFromComponent","concurrency","concurrentComponentsLimit","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","readFile","encoding","parse","packageJson","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","toVinylFile","artifacts","getArtifacts","addManyFiles","bitDir","ignoreBitDependencies","getBitDependencies","reduce","acc","depId","Array","isArray","searchWithoutVersion","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensions","extensionsBitIds","main","pathNormalizeToLinux","mainFile","buildStatus","artifactFilesToFetch","compParent","getConsumerComponent","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","CLIAspect","Slot","withType","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import rimraf from 'rimraf';\nimport { v4 } from 'uuid';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport chalk from 'chalk';\nimport { compact, flatten, pick } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport { GraphAspect, GraphMain } from '@teambit/graph';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n NodeLinker,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain, LongProcessLogger } from '@teambit/logger';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport {\n DEPENDENCIES_FIELDS,\n PACKAGE_JSON,\n CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR,\n} from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport {\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n} from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { concurrentComponentsLimit } from '@teambit/legacy/dist/utils/concurrency';\nimport pMap from 'p-map';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nexport type ListResults = {\n capsules: string[];\n};\n\nexport type CapsuleTransferFn = (sourceDir: string, targetDir: string) => 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\nexport type IsolateComponentsInstallOptions = {\n installPackages?: boolean; // default: true\n // TODO: add back when depResolver.getInstaller support it\n // packageManager?: string;\n dedupe?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n installPeersFromEnvs?: boolean;\n installTeambitBit?: boolean;\n packageManagerConfigRootDir?: string;\n // When set to true, the newly added components will be grouped inside one directory.\n // This is useful for scope aspect capsules, which are installed in stages.\n useNesting?: boolean;\n};\n\ntype CreateGraphOptions = {\n /**\n * include components that exists in nested hosts. for example include components that exist in scope but not in the workspace\n */\n includeFromNestedHosts?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n};\n\nexport type IsolateComponentsOptions = CreateGraphOptions & {\n name?: string;\n /**\n * absolute path to put all the capsules dirs inside.\n */\n rootBaseDir?: string;\n\n /**\n * the capsule root-dir based on a *hash* of this baseDir, not on the baseDir itself.\n * A folder with this hash as its name will be created in the rootBaseDir\n * By default this value will be the host path\n */\n baseDir?: string;\n\n /**\n * Whether to use hash function (of base dir) as capsules root dir name\n */\n useHash?: boolean;\n\n /**\n * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * If this is true -\n * the isolator will check if there are missing capsules in the base dir\n * if yes, it will create the capsule in a special dir inside a dir with the current date (without time)\n * then inside that dir, it will create a dir with a random hash\n * at the end of the process it will move missing capsules from the temp dir to the base dir so they can be used in\n * the next iteration\n */\n useDatedDirs?: boolean;\n\n /**\n * 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 * 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\ntype GetCapsuleDirOpts = Pick<IsolateComponentsOptions, 'datedDirId' | 'useHash' | 'rootBaseDir' | 'useDatedDirs'> & {\n baseDir: string;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\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 ];\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\n static async provider(\n [dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader, cli]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain,\n CLIMain\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 );\n return isolator;\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 ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions,\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n this.logger.debug(\n `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);\n const seedersWithVersions = seeders.map((seeder) => {\n if (seeder._legacy.hasVersion()) return seeder;\n const comp = componentsToIsolate.find((component) => component.id.isEqual(seeder, { ignoreVersion: true }));\n if (!comp) throw new Error(`unable to find seeder ${seeder.toString()} in componentsToIsolate`);\n return comp.id;\n });\n opts.baseDir = opts.baseDir || host.path;\n const shouldUseDatedDirs = this.shouldUseDatedDirs(componentsToIsolate, opts);\n const capsuleDir = this.getCapsulesRootDir({\n ...opts,\n useDatedDirs: shouldUseDatedDirs,\n baseDir: opts.baseDir || '',\n });\n const capsuleList = await this.createCapsules(componentsToIsolate, capsuleDir, opts, legacyScope);\n this.logger.debug(\n `creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`\n );\n const cacheCapsules = process.env.CACHE_CAPSULES;\n if (shouldUseDatedDirs && cacheCapsules) {\n const targetCapsuleDir = this.getCapsulesRootDir({ ...opts, useDatedDirs: false, baseDir: opts.baseDir || '' });\n this.registerMoveCapsuleOnProcessExit(capsuleDir, targetCapsuleDir);\n // TODO: ideally this should be inside the on process exit hook\n // but this is an async op which make it a bit hard\n await this.relinkCoreAspectsInCapsuleDir(targetCapsuleDir);\n }\n return new Network(capsuleList, seedersWithVersions, capsuleDir);\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDepsIds = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsIds = await Promise.all(\n compsAndDepsIds.map(async (id) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(id, true);\n } else {\n existing = await host.hasId(id);\n }\n if (existing) return id;\n return undefined;\n })\n );\n const existingComps = await host.getMany(compact(existingCompsIds));\n return existingComps;\n }\n\n private registerMoveCapsuleOnProcessExit(datedCapsuleDir: string, targetCapsuleDir: string): void {\n this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);\n this.cli.registerOnBeforeExit(async () => {\n this.logger.info(`start moving capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);\n const allDirs = fs\n .readdirSync(datedCapsuleDir, { withFileTypes: true })\n .filter((dir) => dir.isDirectory() && dir.name !== 'node_modules');\n const promises = allDirs.map(async (dir) => {\n const sourceDir = path.join(datedCapsuleDir, dir.name);\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, dir.name);\n if (fs.pathExistsSync(path.join(targetCapsuleDir, dir.name))) {\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);\n // Mark the capsule as ready in the new location\n this.writeCapsuleReadyFileSync(targetDir);\n });\n await Promise.all(promises);\n });\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): Promise<void> {\n const tempDir = `${targetDir}-${v4()}`;\n this.logger.console(`moving capsule from ${sourceDir} to a temp dir ${tempDir}`);\n const mvFunc = this.getCapsuleTransferFn() || fs.move;\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.console(\n `All required capsules already exists and valid in the real (cached) location: ${realCapsulesDir}`\n );\n return false;\n }\n this.logger.console(\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 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 installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting: this.dependencyResolver.isolatedCapsules() && opts.installOptions?.useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n const config = { installPackages: true, ...opts };\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n let capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n const allCapsuleList = CapsuleList.fromArray(capsules);\n let capsuleList = allCapsuleList;\n if (opts.getExistingAsIs) {\n return capsuleList;\n }\n\n if (opts.skipIfExists) {\n if (!installOptions.useNesting) {\n const existingCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => capsule.fs.existsSync('package.json'))\n );\n\n if (existingCapsules.length === capsuleList.length) return existingCapsules;\n } else {\n capsules = capsules.filter((capsule) => !capsule.fs.existsSync('package.json'));\n capsuleList = CapsuleList.fromArray(capsules);\n }\n }\n const capsulesWithPackagesData = await this.getCapsulesPreviousPackageJson(capsules);\n\n await this.writeComponentsInCapsules(components, capsuleList, legacyScope, opts);\n await this.updateWithCurrentPackageJsonData(capsulesWithPackagesData, capsuleList);\n if (installOptions.installPackages) {\n const cachePackagesOnCapsulesRoot = opts.cachePackagesOnCapsulesRoot ?? false;\n const linkingOptions = opts.linkingOptions ?? {};\n let installLongProcessLogger: 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 if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n newCapsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\n });\n })\n );\n } else {\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n capsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\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 crushing when the versions don't exist yet\n capsulesWithPackagesData.forEach((capsuleWithPackageData) => {\n const { currentPackageJson, capsule } = capsuleWithPackageData;\n if (!currentPackageJson)\n throw new Error(\n `isolator.createCapsules, unable to find currentPackageJson for ${capsule.component.id.toString()}`\n );\n capsuleWithPackageData.capsule.fs.writeFileSync(PACKAGE_JSON, JSON.stringify(currentPackageJson, null, 2));\n });\n await this.markCapsulesAsReady(capsuleList);\n // Only show this message if at least one new capsule created\n if (longProcessLogger && capsuleList.length) {\n longProcessLogger.end();\n // this.logger.consoleSuccess();\n const capsuleListOutput = allCapsuleList.map((capsule) => capsule.component.id.toString()).join(', ');\n this.logger.consoleSuccess(`resolved aspect(s): ${chalk.cyan(capsuleListOutput)}`);\n }\n\n return allCapsuleList;\n }\n\n private async 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 }\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 forceTeambitHarmonyLink: !this.dependencyResolver.hasHarmonyInRootPolicy(),\n excludeExtensionsDependencies: true,\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n nmSelfReferences: this.dependencyResolver.isolatedCapsules(),\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n rootComponentsForCapsules: this.dependencyResolver.isolatedCapsules(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.isolatedCapsules(),\n hasRootComponents: this.dependencyResolver.isolatedCapsules(),\n };\n await installer.install(\n capsulesDir,\n peerOnlyPolicy,\n this.toComponentMap(capsuleList),\n installOptions,\n packageManagerInstallOptions\n );\n }\n\n private async linkInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[],\n linkingOptions: LinkingOptions\n ): Promise<Record<string, Record<string, string>>> {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n linkingContext: { inCapsule: true },\n });\n const { linkedRootDeps } = await linker.calculateLinkedDeps(capsulesDir, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n linkNestedDepsInNM: !this.dependencyResolver.isolatedCapsules() && linkingOptions.linkNestedDepsInNM,\n });\n let rootLinks: LinkDetail[] | undefined;\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.isolatedCapsules()) {\n rootLinks = await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n nestedLinks = await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n } else {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const coreAspectCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => {\n const [compIdWithoutVersion] = capsule.component.id.toString().split('@');\n return coreAspectIds.includes(compIdWithoutVersion);\n })\n );\n rootLinks = await symlinkOnCapsuleRoot(coreAspectCapsules, this.logger, capsulesDir);\n }\n return {\n ...nestedLinks,\n [capsulesDir]: {\n ...linkedRootDeps,\n ...this.toLocalLinks(rootLinks),\n },\n };\n }\n\n private toLocalLinks(rootLinks: LinkDetail[] | undefined): Record<string, string> {\n const localLinks: Array<[string, string]> = [];\n if (rootLinks) {\n rootLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link));\n });\n }\n return Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`]));\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(\n components: Component[],\n capsuleList: CapsuleList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n if (await CapsuleList.capsuleUsePreviouslySavedDists(component)) {\n unmodifiedComps.push(component);\n } else {\n modifiedComps.push(component);\n }\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const scope =\n (await CapsuleList.capsuleUsePreviouslySavedDists(component)) || opts?.populateArtifactsFrom\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(component, allIds, scope, opts);\n await dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(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];\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 ...getCapsuleDirOpts,\n };\n const capsulesRootBaseDir = getCapsuleDirOptsWithDefaults.rootBaseDir || this.getRootDirOfAllCapsules();\n if (getCapsuleDirOptsWithDefaults.useDatedDirs) {\n const date = new Date();\n const dateDir = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n const defaultDatedBaseDir = 'dated-capsules';\n const datedBaseDir = this.globalConfig.getSync(CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR) || defaultDatedBaseDir;\n let hashDir;\n const finalDatedDirId = getCapsuleDirOpts.datedDirId;\n if (finalDatedDirId && this._datedHashForName.has(finalDatedDirId)) {\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 ? hash(getCapsuleDirOptsWithDefaults.baseDir)\n : getCapsuleDirOptsWithDefaults.baseDir;\n return path.join(capsulesRootBaseDir, dir);\n }\n\n async deleteCapsules(rootDir?: string): Promise<string> {\n const dirToDelete = rootDir || this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n this.logger.debug(`createCapsulesFromComponents: ${components.length} components`);\n const capsules: Capsule[] = await 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 private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n })\n );\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = getComponentPackageVersion(component);\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = getComponentPackageVersion(depCapsule?.component);\n } else {\n version = snapToSemver(version);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // component.packageJsonFile is not available here. we don't mutate the component object for capsules.\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: BitIds,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ): Promise<DataToPersist> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const dataToPersist = new DataToPersist();\n const clonedFiles = legacyComp.files.map((file) => file.clone());\n const writeToPath = '.';\n clonedFiles.forEach((file) => file.updatePaths({ newBase: writeToPath }));\n dataToPersist.removePath(new RemovePath(writeToPath));\n clonedFiles.map((file) => dataToPersist.addFile(file));\n const packageJson = this.preparePackageJsonToWrite(\n component,\n writeToPath,\n ids // this.ignoreBitDependencies,\n );\n if (!legacyComp.id.hasVersion()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n packageJson.addOrUpdateProperty('version', semver.inc(legacyComp.version!, 'prerelease') || '0.0.1-0');\n }\n await PackageJsonTransformer.applyTransformers(component, packageJson);\n const valuesToMerge = legacyComp.overrides.componentOverridesPackageJsonData;\n packageJson.mergePackageJsonObject(valuesToMerge);\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, opts?.populateArtifactsFrom);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n ignoreBitDependencies: BitIds | boolean = true\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: BitIds) => {\n if (ignoreBitDependencies === true) return {};\n return dependencies.reduce((acc, depId: BitId) => {\n if (Array.isArray(ignoreBitDependencies) && ignoreBitDependencies.searchWithoutVersion(depId)) return acc;\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = packageDependency;\n return acc;\n }, {});\n };\n const bitDependencies = getBitDependencies(legacyComp.dependencies.getAllIds());\n const bitDevDependencies = getBitDependencies(legacyComp.devDependencies.getAllIds());\n const bitExtensionDependencies = getBitDependencies(legacyComp.extensions.extensionsBitIds);\n const packageJson = PackageJsonFile.createFromComponent(bitDir, legacyComp, true);\n const main = pathNormalizeToLinux(legacyComp.mainFile);\n packageJson.addOrUpdateProperty('main', main);\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(bitDependencies);\n packageJsonFile.addDevDependencies({\n ...bitDevDependencies,\n ...bitExtensionDependencies,\n });\n };\n addDependencies(packageJson);\n const currentVersion = getComponentPackageVersion(component);\n packageJson.addOrUpdateProperty('version', currentVersion);\n\n return packageJson;\n }\n\n /**\n * currently, it writes all artifacts.\n * later, this responsibility might move to pkg extension, which could write only artifacts\n * that are set in package.json.files[], to have a similar structure of a package.\n */\n private async getArtifacts(\n component: Component,\n legacyScope?: Scope,\n populateArtifactsFrom?: ComponentID[]\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\n if (populateArtifactsFrom) throw new Error(`unable to fetch from parent, the legacyScope was not provided`);\n // when capsules are written via the workspace, do not write artifacts, they get created by\n // build-pipeline. when capsules are written via the scope, we do need the dists.\n return [];\n }\n if (legacyComp.buildStatus !== 'succeed' && !populateArtifactsFrom) {\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 (populateArtifactsFrom) {\n const found = populateArtifactsFrom.find((id) => id.isEqual(component.id, { ignoreVersion: true }));\n if (!found) {\n throw new Error(\n `getArtifacts: unable to find where to populate the artifacts from for ${component.id.toString()}`\n );\n }\n const compParent = await legacyScope.getConsumerComponent(found._legacy);\n return getArtifactFilesExcludeExtension(compParent.extensions, 'teambit.pkg/pkg');\n }\n const extensionsNamesForArtifacts = ['teambit.compilation/compiler'];\n return flatten(\n extensionsNamesForArtifacts.map((extName) => getArtifactFilesByExtension(legacyComp.extensions, extName))\n );\n };\n\n const artifactsFiles = await artifactFilesToFetch();\n const artifactsVinylFlattened: ArtifactVinyl[] = [];\n await Promise.all(\n artifactsFiles.map(async (artifactFiles) => {\n if (!artifactFiles) return;\n if (!(artifactFiles instanceof ArtifactFiles)) {\n artifactFiles = deserializeArtifactFiles(artifactFiles);\n }\n // fyi, if this is coming from the isolator aspect, it is optimized to import all at once.\n // see artifact-files.importMultipleDistsArtifacts().\n const vinylFiles = await artifactFiles.getVinylsAndImportIfMissing(legacyComp.id, legacyScope);\n artifactsVinylFlattened.push(...vinylFiles);\n })\n );\n const artifactsDir = legacyComp.writtenPath;\n if (artifactsDir) {\n artifactsVinylFlattened.forEach((a) => a.updatePaths({ newBase: artifactsDir }));\n }\n return artifactsVinylFlattened;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_rimraf","data","_interopRequireDefault","require","_uuid","_cli","_semver","_chalk","_lodash","_aspectLoader","_component","_componentPackageVersion","_dependenciesFs","_graph","_harmony","_dependencyResolver","_logger","_bitId","_globalConfig","_constants","_packageJsonFile","_artifactFiles","_path","_fsExtra","_interopRequireWildcard","_objectHash","_path2","_equals","_dataToPersist","_removePath","_workspaceModules","_componentIdToPackageName","_concurrency","_pMap","_capsule","_capsuleList","_isolator","_symlinkDependenciesToCapsules","_network","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","e","r","t","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","CAPSULE_READY_FILE","exports","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","cli","_config","capsuleTransferSlot","logger","createLogger","IsolatorAspect","id","isolator","constructor","graph","Map","Set","isolateComponents","seeders","opts","legacyScope","_opts$host","host","getHost","debug","join","JSON","stringify","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","seedersWithVersions","map","seeder","_legacy","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","existingComps","compact","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","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","_opts$installOptions","alwaysNew","getExistingAsIs","installOptions","useNesting","realCapsulesDir","allCapsulesExists","every","Capsule","getCapsuleDirName","readyFilePath","existsSync","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","copy","components","_opts$context","_opts$installOptions2","longProcessLogger","context","aspects","_opts$host2","wsPath","workspaceName","createLongProcessLogger","chalk","cyan","bold","isolatedCapsules","emptyRootDir","supportsDedupingOnExistingRoot","config","emptyDir","capsules","createCapsulesFromComponents","allCapsuleList","CapsuleList","fromArray","skipIfExists","existingCapsules","capsule","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","_opts$context2","cachePackagesOnCapsulesRoot","installLongProcessLogger","newCapsuleList","cacheCapsuleDir","lockFilePath","lockExists","copyFile","linkedDependencies","linkInCapsules","installInCapsules","packageManager","nodeLinker","end","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","markCapsulesAsReady","capsuleListOutput","consoleSuccess","markCapsuleAsReady","writeFile","capsulePath","exist","removeSync","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","installingContext","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","forceTeambitHarmonyLink","hasHarmonyInRootPolicy","excludeExtensionsDependencies","packageManagerInstallOptions","nmSelfReferences","overrides","capsulesOverrides","rootComponentsForCapsules","keepExistingModulesDir","hasRootComponents","install","toComponentMap","linkNestedDepsInNM","rootLinks","nestedLinks","symlinkOnCapsuleRoot","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","link","linkDetailToLocalDepEntry","fromEntries","linkDetail","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","c","getCapsule","scope","populateArtifactsFrom","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","list","withoutNodeModules","capsuleFullPaths","code","registerCapsuleTransferFn","fn","register","values","getCapsuleDirOpts","useHash","datedDirId","getCapsuleDirOptsWithDefaults","capsulesRootBaseDir","getRootDirOfAllCapsules","date","Date","month","getMonth","dateDir","getFullYear","getDate","defaultDatedBaseDir","datedBaseDir","getSync","CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR","hashDir","finalDatedDirId","_datedHashForName","hash","deleteCapsules","dirToDelete","pMap","createFromComponent","concurrency","concurrentComponentsLimit","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","readFile","encoding","parse","packageJson","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","toVinylFile","artifacts","getArtifacts","addManyFiles","bitDir","ignoreBitDependencies","getBitDependencies","reduce","acc","depId","Array","isArray","searchWithoutVersion","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensions","extensionsBitIds","main","pathNormalizeToLinux","mainFile","buildStatus","artifactFilesToFetch","compParent","getConsumerComponent","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","CLIAspect","Slot","withType","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import rimraf from 'rimraf';\nimport { v4 } from 'uuid';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport chalk from 'chalk';\nimport { compact, flatten, pick } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport { GraphAspect, GraphMain } from '@teambit/graph';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n NodeLinker,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain, LongProcessLogger } from '@teambit/logger';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport {\n DEPENDENCIES_FIELDS,\n PACKAGE_JSON,\n CFG_CAPSULES_SCOPES_ASPECTS_DATED_DIR,\n} from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport {\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n} from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs, { copyFile } from 'fs-extra';\nimport hash from 'object-hash';\nimport path, { basename } from 'path';\nimport equals from 'ramda/src/equals';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { concurrentComponentsLimit } from '@teambit/legacy/dist/utils/concurrency';\nimport pMap from 'p-map';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nexport type ListResults = {\n capsules: string[];\n};\n\nexport type CapsuleTransferFn = (sourceDir: string, targetDir: string) => 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\nexport type IsolateComponentsInstallOptions = {\n installPackages?: boolean; // default: true\n // TODO: add back when depResolver.getInstaller support it\n // packageManager?: string;\n dedupe?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n installPeersFromEnvs?: boolean;\n installTeambitBit?: boolean;\n packageManagerConfigRootDir?: string;\n // When set to true, the newly added components will be grouped inside one directory.\n // This is useful for scope aspect capsules, which are installed in stages.\n useNesting?: boolean;\n};\n\ntype CreateGraphOptions = {\n /**\n * include components that exists in nested hosts. for example include components that exist in scope but not in the workspace\n */\n includeFromNestedHosts?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n};\n\nexport type IsolateComponentsOptions = CreateGraphOptions & {\n name?: string;\n /**\n * absolute path to put all the capsules dirs inside.\n */\n rootBaseDir?: string;\n\n /**\n * the capsule root-dir based on a *hash* of this baseDir, not on the baseDir itself.\n * A folder with this hash as its name will be created in the rootBaseDir\n * By default this value will be the host path\n */\n baseDir?: string;\n\n /**\n * Whether to use hash function (of base dir) as capsules root dir name\n */\n useHash?: boolean;\n\n /**\n * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * If this is true -\n * the isolator will check if there are missing capsules in the base dir\n * if yes, it will create the capsule in a special dir inside a dir with the current date (without time)\n * then inside that dir, it will create a dir with a random hash\n * at the end of the process it will move missing capsules from the temp dir to the base dir so they can be used in\n * the next iteration\n */\n useDatedDirs?: boolean;\n\n /**\n * 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 * 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\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 ];\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]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain,\n CLIMain\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 );\n return isolator;\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 ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions,\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n this.logger.debug(\n `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);\n const seedersWithVersions = seeders.map((seeder) => {\n if (seeder._legacy.hasVersion()) return seeder;\n const comp = componentsToIsolate.find((component) => component.id.isEqual(seeder, { ignoreVersion: true }));\n if (!comp) throw new Error(`unable to find seeder ${seeder.toString()} in componentsToIsolate`);\n return comp.id;\n });\n opts.baseDir = opts.baseDir || host.path;\n const shouldUseDatedDirs = this.shouldUseDatedDirs(componentsToIsolate, opts);\n const capsuleDir = this.getCapsulesRootDir({\n ...opts,\n useDatedDirs: shouldUseDatedDirs,\n baseDir: opts.baseDir || '',\n });\n const 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 = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDepsIds = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsIds = await Promise.all(\n compsAndDepsIds.map(async (id) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(id, true);\n } else {\n existing = await host.hasId(id);\n }\n if (existing) return id;\n return undefined;\n })\n );\n const existingComps = await host.getMany(compact(existingCompsIds));\n return existingComps;\n }\n\n private registerMoveCapsuleOnProcessExit(\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.console(`moving lock file from ${sourceLockFile} to ${targetDir}`);\n const mvFunc = this.getCapsuleTransferFn();\n await mvFunc(sourceLockFile, path.join(targetDir, 'pnpm-lock.yaml'));\n this._movedLockFiles.add(sourceLockFile);\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.console(\n `All required capsules already exists and valid in the real (cached) location: ${realCapsulesDir}`\n );\n return false;\n }\n this.logger.console(\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 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.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n let capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n const allCapsuleList = CapsuleList.fromArray(capsules);\n let capsuleList = allCapsuleList;\n if (opts.getExistingAsIs) {\n return capsuleList;\n }\n\n if (opts.skipIfExists) {\n if (!installOptions.useNesting) {\n const existingCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => capsule.fs.existsSync('package.json'))\n );\n\n if (existingCapsules.length === capsuleList.length) return existingCapsules;\n } else {\n capsules = capsules.filter((capsule) => !capsule.fs.existsSync('package.json'));\n capsuleList = CapsuleList.fromArray(capsules);\n }\n }\n const capsulesWithPackagesData = await this.getCapsulesPreviousPackageJson(capsules);\n\n await this.writeComponentsInCapsules(components, capsuleList, legacyScope, opts);\n await this.updateWithCurrentPackageJsonData(capsulesWithPackagesData, capsuleList);\n if (installOptions.installPackages) {\n const cachePackagesOnCapsulesRoot = opts.cachePackagesOnCapsulesRoot ?? false;\n const linkingOptions = opts.linkingOptions ?? {};\n let installLongProcessLogger: 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 if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule) => {\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 // this.logger.console(`moving lock file from ${lockFilePath} to ${capsule.path}`);\n await copyFile(lockFilePath, path.join(capsule.path, 'pnpm-lock.yaml'));\n }\n }\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n newCapsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\n nodeLinker: opts.nodeLinker,\n });\n })\n );\n } else {\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n capsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n packageManager: opts.packageManager,\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 crushing when the versions don't exist yet\n capsulesWithPackagesData.forEach((capsuleWithPackageData) => {\n const { currentPackageJson, capsule } = capsuleWithPackageData;\n if (!currentPackageJson)\n throw new Error(\n `isolator.createCapsules, unable to find currentPackageJson for ${capsule.component.id.toString()}`\n );\n capsuleWithPackageData.capsule.fs.writeFileSync(PACKAGE_JSON, JSON.stringify(currentPackageJson, null, 2));\n });\n await this.markCapsulesAsReady(capsuleList);\n // Only show this message if at least one new capsule created\n if (longProcessLogger && capsuleList.length) {\n longProcessLogger.end();\n // this.logger.consoleSuccess();\n const capsuleListOutput = allCapsuleList.map((capsule) => capsule.component.id.toString()).join(', ');\n this.logger.consoleSuccess(`resolved aspect(s): ${chalk.cyan(capsuleListOutput)}`);\n }\n\n return allCapsuleList;\n }\n\n private async 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 }\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 forceTeambitHarmonyLink: !this.dependencyResolver.hasHarmonyInRootPolicy(),\n excludeExtensionsDependencies: true,\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n nmSelfReferences: this.dependencyResolver.isolatedCapsules(),\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n rootComponentsForCapsules: this.dependencyResolver.isolatedCapsules(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.isolatedCapsules(),\n hasRootComponents: this.dependencyResolver.isolatedCapsules(),\n };\n await installer.install(\n capsulesDir,\n peerOnlyPolicy,\n this.toComponentMap(capsuleList),\n installOptions,\n packageManagerInstallOptions\n );\n }\n\n private async linkInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[],\n linkingOptions: LinkingOptions\n ): Promise<Record<string, Record<string, string>>> {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n linkingContext: { inCapsule: true },\n });\n const { linkedRootDeps } = await linker.calculateLinkedDeps(capsulesDir, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n linkNestedDepsInNM: !this.dependencyResolver.isolatedCapsules() && linkingOptions.linkNestedDepsInNM,\n });\n let rootLinks: LinkDetail[] | undefined;\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.isolatedCapsules()) {\n rootLinks = await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n nestedLinks = await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n } else {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const coreAspectCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => {\n const [compIdWithoutVersion] = capsule.component.id.toString().split('@');\n return coreAspectIds.includes(compIdWithoutVersion);\n })\n );\n rootLinks = await symlinkOnCapsuleRoot(coreAspectCapsules, this.logger, capsulesDir);\n }\n return {\n ...nestedLinks,\n [capsulesDir]: {\n ...linkedRootDeps,\n ...this.toLocalLinks(rootLinks),\n },\n };\n }\n\n private toLocalLinks(rootLinks: LinkDetail[] | undefined): Record<string, string> {\n const localLinks: Array<[string, string]> = [];\n if (rootLinks) {\n rootLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link));\n });\n }\n return Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`]));\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(\n components: Component[],\n capsuleList: CapsuleList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n if (await CapsuleList.capsuleUsePreviouslySavedDists(component)) {\n unmodifiedComps.push(component);\n } else {\n modifiedComps.push(component);\n }\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const scope =\n (await CapsuleList.capsuleUsePreviouslySavedDists(component)) || opts?.populateArtifactsFrom\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(component, allIds, scope, opts);\n await dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(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] || fs.move;\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 date = new Date();\n const month = date.getMonth() < 12 ? date.getMonth() + 1 : 1;\n const dateDir = `${date.getFullYear()}-${month}-${date.getDate()}`;\n const defaultDatedBaseDir = 'dated-capsules';\n const datedBaseDir = this.globalConfig.getSync(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 ? hash(getCapsuleDirOptsWithDefaults.baseDir)\n : getCapsuleDirOptsWithDefaults.baseDir;\n return path.join(capsulesRootBaseDir, dir);\n }\n\n async deleteCapsules(rootDir?: string): Promise<string> {\n const dirToDelete = rootDir || this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n this.logger.debug(`createCapsulesFromComponents: ${components.length} components`);\n const capsules: Capsule[] = await 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 private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n })\n );\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = getComponentPackageVersion(component);\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = getComponentPackageVersion(depCapsule?.component);\n } else {\n version = snapToSemver(version);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // component.packageJsonFile is not available here. we don't mutate the component object for capsules.\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: BitIds,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ): Promise<DataToPersist> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const dataToPersist = new DataToPersist();\n const clonedFiles = legacyComp.files.map((file) => file.clone());\n const writeToPath = '.';\n clonedFiles.forEach((file) => file.updatePaths({ newBase: writeToPath }));\n dataToPersist.removePath(new RemovePath(writeToPath));\n clonedFiles.map((file) => dataToPersist.addFile(file));\n const packageJson = this.preparePackageJsonToWrite(\n component,\n writeToPath,\n ids // this.ignoreBitDependencies,\n );\n if (!legacyComp.id.hasVersion()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n packageJson.addOrUpdateProperty('version', semver.inc(legacyComp.version!, 'prerelease') || '0.0.1-0');\n }\n await PackageJsonTransformer.applyTransformers(component, packageJson);\n const valuesToMerge = legacyComp.overrides.componentOverridesPackageJsonData;\n packageJson.mergePackageJsonObject(valuesToMerge);\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, opts?.populateArtifactsFrom);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n ignoreBitDependencies: BitIds | boolean = true\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: BitIds) => {\n if (ignoreBitDependencies === true) return {};\n return dependencies.reduce((acc, depId: BitId) => {\n if (Array.isArray(ignoreBitDependencies) && ignoreBitDependencies.searchWithoutVersion(depId)) return acc;\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = packageDependency;\n return acc;\n }, {});\n };\n const bitDependencies = getBitDependencies(legacyComp.dependencies.getAllIds());\n const bitDevDependencies = getBitDependencies(legacyComp.devDependencies.getAllIds());\n const bitExtensionDependencies = getBitDependencies(legacyComp.extensions.extensionsBitIds);\n const packageJson = PackageJsonFile.createFromComponent(bitDir, legacyComp, true);\n const main = pathNormalizeToLinux(legacyComp.mainFile);\n packageJson.addOrUpdateProperty('main', main);\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(bitDependencies);\n packageJsonFile.addDevDependencies({\n ...bitDevDependencies,\n ...bitExtensionDependencies,\n });\n };\n addDependencies(packageJson);\n const currentVersion = getComponentPackageVersion(component);\n packageJson.addOrUpdateProperty('version', currentVersion);\n\n return packageJson;\n }\n\n /**\n * currently, it writes all artifacts.\n * later, this responsibility might move to pkg extension, which could write only artifacts\n * that are set in package.json.files[], to have a similar structure of a package.\n */\n private async getArtifacts(\n component: Component,\n legacyScope?: Scope,\n populateArtifactsFrom?: ComponentID[]\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\n if (populateArtifactsFrom) throw new Error(`unable to fetch from parent, the legacyScope was not provided`);\n // when capsules are written via the workspace, do not write artifacts, they get created by\n // build-pipeline. when capsules are written via the scope, we do need the dists.\n return [];\n }\n if (legacyComp.buildStatus !== 'succeed' && !populateArtifactsFrom) {\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 (populateArtifactsFrom) {\n const found = populateArtifactsFrom.find((id) => id.isEqual(component.id, { ignoreVersion: true }));\n if (!found) {\n throw new Error(\n `getArtifacts: unable to find where to populate the artifacts from for ${component.id.toString()}`\n );\n }\n const compParent = await legacyScope.getConsumerComponent(found._legacy);\n return getArtifactFilesExcludeExtension(compParent.extensions, 'teambit.pkg/pkg');\n }\n const extensionsNamesForArtifacts = ['teambit.compilation/compiler'];\n return flatten(\n extensionsNamesForArtifacts.map((extName) => getArtifactFilesByExtension(legacyComp.extensions, extName))\n );\n };\n\n const artifactsFiles = await artifactFilesToFetch();\n const artifactsVinylFlattened: ArtifactVinyl[] = [];\n await Promise.all(\n artifactsFiles.map(async (artifactFiles) => {\n if (!artifactFiles) return;\n if (!(artifactFiles instanceof ArtifactFiles)) {\n artifactFiles = deserializeArtifactFiles(artifactFiles);\n }\n // fyi, if this is coming from the isolator aspect, it is optimized to import all at once.\n // see artifact-files.importMultipleDistsArtifacts().\n const vinylFiles = await artifactFiles.getVinylsAndImportIfMissing(legacyComp.id, legacyScope);\n artifactsVinylFlattened.push(...vinylFiles);\n })\n );\n const artifactsDir = legacyComp.writtenPath;\n if (artifactsDir) {\n artifactsVinylFlattened.forEach((a) => a.updatePaths({ newBase: artifactsDir }));\n }\n return artifactsVinylFlattened;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@1.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@1.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@1.0.15/dist/isolator.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@1.0.15/dist/isolator.docs.md';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
@@ -46,12 +46,12 @@ async function symlinkOnCapsuleRoot(capsuleList, logger, capsuleRoot) {
|
|
46
46
|
});
|
47
47
|
}
|
48
48
|
async function symlinkComponent(component, capsuleList, logger) {
|
49
|
-
const componentCapsule = capsuleList.
|
49
|
+
const componentCapsule = capsuleList.getCapsuleIgnoreVersion(new (_component().ComponentID)(component.id));
|
50
50
|
if (!componentCapsule) throw new Error(`unable to find the capsule for ${component.id.toString()}`);
|
51
51
|
const allDeps = component.getAllDependenciesIds();
|
52
52
|
const linkResults = allDeps.reduce((acc, depId) => {
|
53
53
|
// TODO: this is dangerous - we might have 2 capsules for the same component with different version, then we might link to the wrong place
|
54
|
-
const devCapsule = capsuleList.
|
54
|
+
const devCapsule = capsuleList.getCapsuleIgnoreVersion(new (_component().ComponentID)(depId));
|
55
55
|
if (!devCapsule) {
|
56
56
|
// happens when a dependency is not in the workspace. (it gets installed via the package manager)
|
57
57
|
logger.debug(`symlinkComponentToCapsule: unable to find the capsule for ${depId.toStringWithoutVersion()}. skipping`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_component","data","require","_componentIdToPackageName","_interopRequireDefault","_path","obj","__esModule","default","symlinkDependenciesToCapsules","capsules","capsuleList","logger","debug","length","Object","fromEntries","Promise","all","map","capsule","symlinkComponent","component","state","_consumer","symlinkOnCapsuleRoot","capsuleRoot","modulesPath","path","join","packageName","componentIdToPackageName","dest","from","to","componentCapsule","
|
1
|
+
{"version":3,"names":["_component","data","require","_componentIdToPackageName","_interopRequireDefault","_path","obj","__esModule","default","symlinkDependenciesToCapsules","capsules","capsuleList","logger","debug","length","Object","fromEntries","Promise","all","map","capsule","symlinkComponent","component","state","_consumer","symlinkOnCapsuleRoot","capsuleRoot","modulesPath","path","join","packageName","componentIdToPackageName","dest","from","to","componentCapsule","getCapsuleIgnoreVersion","ComponentID","id","Error","toString","allDeps","getAllDependenciesIds","linkResults","reduce","acc","depId","devCapsule","toStringWithoutVersion","devCapsulePath"],"sources":["symlink-dependencies-to-capsules.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\nimport { LinkDetail } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport path from 'path';\n\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\n\nexport async function symlinkDependenciesToCapsules(\n capsules: Capsule[],\n capsuleList: CapsuleList,\n logger: Logger\n): Promise<Record<string, Record<string, string>>> {\n logger.debug(`symlinkDependenciesToCapsules, ${capsules.length} capsules`);\n return Object.fromEntries(\n await Promise.all(\n capsules.map((capsule) => {\n return symlinkComponent(capsule.component.state._consumer, capsuleList, logger);\n })\n )\n );\n}\n\nexport async function symlinkOnCapsuleRoot(\n capsuleList: CapsuleList,\n logger: Logger,\n capsuleRoot: string\n): Promise<LinkDetail[]> {\n const modulesPath = path.join(capsuleRoot, 'node_modules');\n return capsuleList.map((capsule) => {\n const packageName = componentIdToPackageName(capsule.component.state._consumer);\n const dest = path.join(modulesPath, packageName);\n return {\n from: capsule.path,\n to: dest,\n packageName,\n };\n });\n}\n\nasync function symlinkComponent(\n component: ConsumerComponent,\n capsuleList: CapsuleList,\n logger: Logger\n): Promise<[string, Record<string, string>]> {\n const componentCapsule = capsuleList.getCapsuleIgnoreVersion(new ComponentID(component.id));\n if (!componentCapsule) throw new Error(`unable to find the capsule for ${component.id.toString()}`);\n const allDeps = component.getAllDependenciesIds();\n const linkResults = allDeps.reduce((acc, depId: BitId) => {\n // TODO: this is dangerous - we might have 2 capsules for the same component with different version, then we might link to the wrong place\n const devCapsule = capsuleList.getCapsuleIgnoreVersion(new ComponentID(depId));\n if (!devCapsule) {\n // happens when a dependency is not in the workspace. (it gets installed via the package manager)\n logger.debug(\n `symlinkComponentToCapsule: unable to find the capsule for ${depId.toStringWithoutVersion()}. skipping`\n );\n return acc;\n }\n const packageName = componentIdToPackageName(devCapsule.component.state._consumer);\n const devCapsulePath = devCapsule.path;\n acc[packageName] = `link:${devCapsulePath}`;\n return acc;\n }, {});\n\n return [componentCapsule.path, linkResults];\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/isolator",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.15",
|
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.15"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"chalk": "2.4.2",
|
@@ -29,16 +29,16 @@
|
|
29
29
|
"@teambit/graph.cleargraph": "0.0.1",
|
30
30
|
"@teambit/legacy-bit-id": "1.0.0",
|
31
31
|
"@teambit/harmony": "0.4.6",
|
32
|
-
"@teambit/component": "1.0.
|
33
|
-
"@teambit/dependency-resolver": "1.0.
|
34
|
-
"@teambit/aspect-loader": "1.0.
|
35
|
-
"@teambit/cli": "0.0.
|
32
|
+
"@teambit/component": "1.0.15",
|
33
|
+
"@teambit/dependency-resolver": "1.0.15",
|
34
|
+
"@teambit/aspect-loader": "1.0.15",
|
35
|
+
"@teambit/cli": "0.0.794",
|
36
36
|
"@teambit/component-package-version": "0.0.427",
|
37
37
|
"@teambit/dependencies.fs.linked-dependencies": "0.0.4",
|
38
|
-
"@teambit/global-config": "0.0.
|
39
|
-
"@teambit/graph": "1.0.
|
40
|
-
"@teambit/logger": "0.0.
|
41
|
-
"@teambit/workspace.modules.node-modules-linker": "0.0.
|
38
|
+
"@teambit/global-config": "0.0.796",
|
39
|
+
"@teambit/graph": "1.0.15",
|
40
|
+
"@teambit/logger": "0.0.887",
|
41
|
+
"@teambit/workspace.modules.node-modules-linker": "0.0.135"
|
42
42
|
},
|
43
43
|
"devDependencies": {
|
44
44
|
"@types/react": "^17.0.8",
|
@@ -54,7 +54,7 @@
|
|
54
54
|
"@types/testing-library__jest-dom": "5.9.5"
|
55
55
|
},
|
56
56
|
"peerDependencies": {
|
57
|
-
"@teambit/legacy": "1.0.
|
57
|
+
"@teambit/legacy": "1.0.573",
|
58
58
|
"react": "^16.8.0 || ^17.0.0",
|
59
59
|
"react-dom": "^16.8.0 || ^17.0.0"
|
60
60
|
},
|