@teambit/isolator 0.0.1020 → 0.0.1022

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.
@@ -131,6 +131,8 @@ export declare class IsolatorMain {
131
131
  private createCapsules;
132
132
  private installInCapsules;
133
133
  private linkInCapsules;
134
+ private toLocalLinks;
135
+ private linkDetailToLocalDepEntry;
134
136
  private getCapsulesWithModifiedPackageJson;
135
137
  private writeComponentsInCapsules;
136
138
  private getWorkspacePeersOnlyPolicy;
@@ -2,6 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.object.from-entries.js");
5
6
  require("core-js/modules/es.promise.js");
6
7
  require("core-js/modules/es.regexp.exec.js");
7
8
  Object.defineProperty(exports, "__esModule", {
@@ -350,16 +351,22 @@ class IsolatorMain {
350
351
  if (installOptions.useNesting) {
351
352
  await Promise.all(capsuleList.map(async capsule => {
352
353
  const newCapsuleList = _capsuleList().default.fromArray([capsule]);
353
- await this.installInCapsules(capsule.path, newCapsuleList, installOptions, cachePackagesOnCapsulesRoot);
354
- await this.linkInCapsules(capsulesDir, newCapsuleList, capsulesWithPackagesData, linkingOptions);
354
+ const linkedDependencies = await this.linkInCapsules(capsulesDir, newCapsuleList, capsulesWithPackagesData, linkingOptions);
355
+ await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {
356
+ cachePackagesOnCapsulesRoot,
357
+ linkedDependencies
358
+ });
355
359
  }));
356
360
  } else {
357
361
  // When nesting is used, the first component (which is the entry component) is installed in the root
358
362
  // and all other components (which are the dependencies of the entry component) are installed in
359
363
  // a subdirectory.
360
364
  const rootDir = installOptions !== null && installOptions !== void 0 && installOptions.useNesting ? capsuleList[0].path : capsulesDir;
361
- await this.installInCapsules(rootDir, capsuleList, installOptions, cachePackagesOnCapsulesRoot);
362
- await this.linkInCapsules(capsulesDir, capsuleList, capsulesWithPackagesData, linkingOptions);
365
+ const linkedDependencies = await this.linkInCapsules(capsulesDir, capsuleList, capsulesWithPackagesData, linkingOptions);
366
+ await this.installInCapsules(rootDir, capsuleList, installOptions, {
367
+ cachePackagesOnCapsulesRoot,
368
+ linkedDependencies
369
+ });
363
370
  }
364
371
  longProcessLogger.end();
365
372
  this.logger.consoleSuccess();
@@ -378,10 +385,10 @@ class IsolatorMain {
378
385
  });
379
386
  return allCapsuleList;
380
387
  }
381
- async installInCapsules(capsulesDir, capsuleList, isolateInstallOptions, cachePackagesOnCapsulesRoot) {
388
+ async installInCapsules(capsulesDir, capsuleList, isolateInstallOptions, opts) {
382
389
  const installer = this.dependencyResolver.getInstaller({
383
390
  rootDir: capsulesDir,
384
- cacheRootDirectory: cachePackagesOnCapsulesRoot ? capsulesDir : undefined
391
+ cacheRootDirectory: opts.cachePackagesOnCapsulesRoot ? capsulesDir : undefined
385
392
  });
386
393
  // When using isolator we don't want to use the policy defined in the workspace directly,
387
394
  // we only want to instal deps from components and the peer from the workspace
@@ -390,7 +397,8 @@ class IsolatorMain {
390
397
  const installOptions = {
391
398
  installTeambitBit: !!isolateInstallOptions.installTeambitBit,
392
399
  packageManagerConfigRootDir: isolateInstallOptions.packageManagerConfigRootDir,
393
- resolveVersionsFromDependenciesOnly: true
400
+ resolveVersionsFromDependenciesOnly: true,
401
+ linkedDependencies: opts.linkedDependencies
394
402
  };
395
403
  const packageManagerInstallOptions = {
396
404
  dedupe: isolateInstallOptions.dedupe,
@@ -410,21 +418,64 @@ class IsolatorMain {
410
418
  linkingOptions
411
419
  });
412
420
  const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();
413
- const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);
414
- await linker.link(capsulesDir, peerOnlyPolicy, this.toComponentMap(capsuleList), _objectSpread(_objectSpread({}, linkingOptions), {}, {
421
+ const linkResults = await linker.link(capsulesDir, peerOnlyPolicy, this.toComponentMap(capsuleList), _objectSpread(_objectSpread({}, linkingOptions), {}, {
415
422
  linkNestedDepsInNM: !this.dependencyResolver.hasRootComponents() && linkingOptions.linkNestedDepsInNM
416
423
  }));
424
+ let rootLinks;
425
+ let nestedLinks;
417
426
  if (!this.dependencyResolver.hasRootComponents()) {
418
- await (0, _symlinkDependenciesToCapsules().symlinkOnCapsuleRoot)(capsuleList, this.logger, capsulesDir);
419
- await (0, _symlinkDependenciesToCapsules().symlinkDependenciesToCapsules)(capsulesWithModifiedPackageJson, capsuleList, this.logger);
427
+ rootLinks = await (0, _symlinkDependenciesToCapsules().symlinkOnCapsuleRoot)(capsuleList, this.logger, capsulesDir);
428
+ const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);
429
+ nestedLinks = await (0, _symlinkDependenciesToCapsules().symlinkDependenciesToCapsules)(capsulesWithModifiedPackageJson, capsuleList, this.logger);
420
430
  } else {
421
431
  const coreAspectIds = this.aspectLoader.getCoreAspectIds();
422
432
  const coreAspectCapsules = _capsuleList().default.fromArray(capsuleList.filter(capsule => {
423
433
  const [compIdWithoutVersion] = capsule.component.id.toString().split('@');
424
434
  return coreAspectIds.includes(compIdWithoutVersion);
425
435
  }));
426
- await (0, _symlinkDependenciesToCapsules().symlinkOnCapsuleRoot)(coreAspectCapsules, this.logger, capsulesDir);
436
+ rootLinks = await (0, _symlinkDependenciesToCapsules().symlinkOnCapsuleRoot)(coreAspectCapsules, this.logger, capsulesDir);
437
+ }
438
+ return _objectSpread(_objectSpread({}, nestedLinks), {}, {
439
+ [capsulesDir]: this.toLocalLinks(linkResults, rootLinks)
440
+ });
441
+ }
442
+ toLocalLinks(linkResults, rootLinks) {
443
+ const localLinks = [];
444
+ if (linkResults.teambitBitLink) {
445
+ localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitBitLink.linkDetail));
446
+ }
447
+ if (linkResults.coreAspectsLinks) {
448
+ linkResults.coreAspectsLinks.forEach(link => {
449
+ localLinks.push(this.linkDetailToLocalDepEntry(link.linkDetail));
450
+ });
451
+ }
452
+ if (linkResults.harmonyLink) {
453
+ localLinks.push(this.linkDetailToLocalDepEntry(linkResults.harmonyLink));
454
+ }
455
+ if (linkResults.teambitLegacyLink) {
456
+ localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitLegacyLink));
427
457
  }
458
+ if (linkResults.resolvedFromEnvLinks) {
459
+ linkResults.resolvedFromEnvLinks.forEach(link => {
460
+ link.linksDetail.forEach(linkDetail => {
461
+ localLinks.push(this.linkDetailToLocalDepEntry(linkDetail));
462
+ });
463
+ });
464
+ }
465
+ if (linkResults.linkToDirResults) {
466
+ linkResults.linkToDirResults.forEach(link => {
467
+ localLinks.push(this.linkDetailToLocalDepEntry(link.linksDetail));
468
+ });
469
+ }
470
+ if (rootLinks) {
471
+ rootLinks.forEach(link => {
472
+ localLinks.push(this.linkDetailToLocalDepEntry(link));
473
+ });
474
+ }
475
+ return Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`]));
476
+ }
477
+ linkDetailToLocalDepEntry(linkDetail) {
478
+ return [linkDetail.packageName, linkDetail.from];
428
479
  }
429
480
  getCapsulesWithModifiedPackageJson(capsulesWithPackagesData) {
430
481
  const capsulesWithModifiedPackageJson = capsulesWithPackagesData.filter(capsuleWithPackageData => {
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","logger","createLogger","IsolatorAspect","id","isolator","constructor","graph","isolateComponents","seeders","opts","legacyScope","host","getHost","debug","join","JSON","stringify","Object","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","length","seedersWithVersions","map","seeder","_legacy","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","capsuleList","createCapsules","capsuleDir","getCapsulesRootDir","rootBaseDir","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","existingComps","compact","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","fs","copy","components","installOptions","useNesting","hasRootComponents","emptyRootDir","supportsDedupingOnExistingRoot","config","capsulesDir","emptyDir","capsules","createCapsulesFromComponents","allCapsuleList","CapsuleList","fromArray","getExistingAsIs","skipIfExists","existingCapsules","filter","capsule","existsSync","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","cachePackagesOnCapsulesRoot","linkingOptions","longProcessLogger","createLongProcessLogger","newCapsuleList","installInCapsules","linkInCapsules","rootDir","end","consoleSuccess","forEach","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","packageManagerInstallOptions","overrides","capsulesOverrides","rootComponentsForCapsules","keepExistingModulesDir","install","toComponentMap","linker","getLinker","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","link","linkNestedDepsInNM","symlinkOnCapsuleRoot","symlinkDependenciesToCapsules","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","push","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","c","getCapsule","scope","populateArtifactsFromParent","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","ComponentMap","create","list","workspacePath","workspaceCapsuleFolder","readdir","capsuleFullPaths","workspace","e","code","capsulesRootBaseDir","getRootDirOfAllCapsules","hash","deleteCapsules","capsuleBaseDir","dirToDelete","remove","Capsule","createFromComponent","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","promises","readFile","encoding","parse","packageJson","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","packageName","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","toVinylFile","artifacts","getArtifacts","addManyFiles","bitDir","ignoreBitDependencies","getBitDependencies","reduce","acc","depId","Array","isArray","searchWithoutVersion","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensions","extensionsBitIds","main","pathNormalizeToLinux","mainFile","fetchParentArtifacts","buildStatus","artifactFilesToFetch","parent","head","parents","compParent","getConsumerComponent","changeVersion","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport { compact, flatten, pick } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { GraphAspect, GraphMain } from '@teambit/graph';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { DEPENDENCIES_FIELDS, PACKAGE_JSON } from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport {\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n} from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nexport type ListResults = {\n workspace: string;\n capsules: string[];\n};\n\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 * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * installation options\n */\n installOptions?: IsolateComponentsInstallOptions;\n\n linkingOptions?: LinkingOptions;\n\n /**\n * delete the capsule rootDir first. it makes sure that the isolation process starts fresh with\n * no previous capsules. for build and tag this is true.\n */\n emptyRootDir?: boolean;\n\n /**\n * skip the reproduction of the capsule in case it exists.\n */\n skipIfExists?: boolean;\n\n /**\n * get existing capsule without doing any changes, no writes, no installations.\n */\n getExistingAsIs?: boolean;\n\n /**\n * place the package-manager cache on the capsule-root\n */\n cachePackagesOnCapsulesRoot?: boolean;\n\n /**\n * do not build graph with all dependencies. isolate the seeders only.\n */\n seedersOnly?: boolean;\n\n /**\n * relevant for tagging from scope, where we tag an existing snap without any code-changes.\n * the idea is to have all build artifacts from the previous snap and run deploy pipeline on top of it.\n */\n populateArtifactsFromParent?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n packageManagerConfigRootDir?: string;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [\n DependencyResolverAspect,\n LoggerAspect,\n ComponentAspect,\n GraphAspect,\n GlobalConfigAspect,\n AspectLoaderAspect,\n ];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n\n static async provider([dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain\n ]): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(\n dependencyResolver,\n logger,\n componentAspect,\n graphMain,\n globalConfig,\n aspectLoader\n );\n return isolator;\n }\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graph: GraphMain,\n private globalConfig: GlobalConfigMain,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions = {},\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n this.logger.debug(\n `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);\n const seedersWithVersions = seeders.map((seeder) => {\n if (seeder._legacy.hasVersion()) return seeder;\n const comp = componentsToIsolate.find((component) => component.id.isEqual(seeder, { ignoreVersion: true }));\n if (!comp) throw new Error(`unable to find seeder ${seeder.toString()} in componentsToIsolate`);\n return comp.id;\n });\n opts.baseDir = opts.baseDir || host.path;\n const capsuleList = await this.createCapsules(componentsToIsolate, opts, legacyScope);\n const capsuleDir = this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir);\n this.logger.debug(\n `creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`\n );\n return new Network(capsuleList, seedersWithVersions, capsuleDir);\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDepsIds = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsIds = await Promise.all(\n compsAndDepsIds.map(async (id) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(id, true);\n } else {\n existing = await host.hasId(id);\n }\n if (existing) return id;\n return undefined;\n })\n );\n const existingComps = await host.getMany(compact(existingCompsIds));\n return existingComps;\n }\n\n /**\n *\n * @param originalCapsule the capsule that contains the original component\n * @param newBaseDir relative path. (it will be saved inside `this.getRootDirOfAllCapsules()`. the final path of the capsule will be getRootDirOfAllCapsules() + newBaseDir + filenameify(component.id))\n * @returns a new capsule with the same content of the original capsule but with a new baseDir and all packages\n * installed in the newBaseDir.\n */\n async cloneCapsule(originalCapsule: Capsule, newBaseDir: string): Promise<Capsule> {\n const network = await this.isolateComponents([originalCapsule.component.id], { baseDir: newBaseDir });\n const clonedCapsule = network.seedersCapsules[0];\n await fs.copy(originalCapsule.path, clonedCapsule.path);\n return clonedCapsule;\n }\n\n /**\n * Create capsules for the provided components\n * do not use this outside directly, use isolate components which build the entire network\n * @param components\n * @param opts\n * @param legacyScope\n */\n private async createCapsules(\n components: Component[],\n opts: IsolateComponentsOptions,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n this.logger.debug(`createCapsules, ${components.length} components`);\n const installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting: this.dependencyResolver.hasRootComponents() && opts.installOptions?.useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n const config = { installPackages: true, ...opts };\n const capsulesDir = this.getCapsulesRootDir(opts.baseDir as string, opts.rootBaseDir);\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 const longProcessLogger = this.logger.createLongProcessLogger('install packages');\n if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, cachePackagesOnCapsulesRoot);\n await this.linkInCapsules(capsulesDir, newCapsuleList, capsulesWithPackagesData, linkingOptions);\n })\n );\n } else {\n // When nesting is used, the first component (which is the entry component) is installed in the root\n // and all other components (which are the dependencies of the entry component) are installed in\n // a subdirectory.\n const rootDir = installOptions?.useNesting ? capsuleList[0].path : capsulesDir;\n await this.installInCapsules(rootDir, capsuleList, installOptions, cachePackagesOnCapsulesRoot);\n await this.linkInCapsules(capsulesDir, capsuleList, capsulesWithPackagesData, linkingOptions);\n }\n longProcessLogger.end();\n this.logger.consoleSuccess();\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\n return allCapsuleList;\n }\n\n private async installInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n isolateInstallOptions: IsolateComponentsInstallOptions,\n cachePackagesOnCapsulesRoot?: boolean\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\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 };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n rootComponentsForCapsules: this.dependencyResolver.hasRootComponents(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.hasRootComponents(),\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 ) {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n });\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n await linker.link(capsulesDir, peerOnlyPolicy, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n linkNestedDepsInNM: !this.dependencyResolver.hasRootComponents() && linkingOptions.linkNestedDepsInNM,\n });\n if (!this.dependencyResolver.hasRootComponents()) {\n await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n 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 await symlinkOnCapsuleRoot(coreAspectCapsules, this.logger, capsulesDir);\n }\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(\n components: Component[],\n capsuleList: CapsuleList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n if (await CapsuleList.capsuleUsePreviouslySavedDists(component)) {\n unmodifiedComps.push(component);\n } else {\n modifiedComps.push(component);\n }\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const scope =\n (await CapsuleList.capsuleUsePreviouslySavedDists(component)) || opts?.populateArtifactsFromParent\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(component, allIds, scope, opts);\n await dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(workspacePath: string): Promise<ListResults> {\n try {\n const workspaceCapsuleFolder = this.getCapsulesRootDir(workspacePath);\n const capsules = await fs.readdir(workspaceCapsuleFolder);\n const capsuleFullPaths = capsules.map((c) => path.join(workspaceCapsuleFolder, c));\n return {\n workspace: workspacePath,\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { workspace: workspacePath, capsules: [] };\n }\n throw e;\n }\n }\n\n getCapsulesRootDir(baseDir: string, rootBaseDir?: string): PathOsBasedAbsolute {\n const capsulesRootBaseDir = rootBaseDir || this.getRootDirOfAllCapsules();\n return path.join(capsulesRootBaseDir, hash(baseDir));\n }\n\n async deleteCapsules(capsuleBaseDir: string | null): Promise<string> {\n const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir(capsuleBaseDir) : this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n this.logger.debug(`createCapsulesFromComponents: ${components.length} components`);\n const capsules: Capsule[] = await Promise.all(\n components.map((component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n })\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getGlobalCapsulesBaseDir();\n }\n\n private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n })\n );\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = getComponentPackageVersion(component);\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = getComponentPackageVersion(depCapsule?.component);\n } else {\n version = snapToSemver(version);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // component.packageJsonFile is not available here. we don't mutate the component object for capsules.\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: BitIds,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ): Promise<DataToPersist> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const dataToPersist = new DataToPersist();\n const clonedFiles = legacyComp.files.map((file) => file.clone());\n const writeToPath = '.';\n clonedFiles.forEach((file) => file.updatePaths({ newBase: writeToPath }));\n dataToPersist.removePath(new RemovePath(writeToPath));\n clonedFiles.map((file) => dataToPersist.addFile(file));\n const packageJson = this.preparePackageJsonToWrite(\n component,\n writeToPath,\n ids // this.ignoreBitDependencies,\n );\n if (!legacyComp.id.hasVersion()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n packageJson.addOrUpdateProperty('version', semver.inc(legacyComp.version!, 'prerelease') || '0.0.1-0');\n }\n await PackageJsonTransformer.applyTransformers(component, packageJson);\n const valuesToMerge = legacyComp.overrides.componentOverridesPackageJsonData;\n packageJson.mergePackageJsonObject(valuesToMerge);\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, opts?.populateArtifactsFromParent);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n ignoreBitDependencies: BitIds | boolean = true\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: BitIds) => {\n if (ignoreBitDependencies === true) return {};\n return dependencies.reduce((acc, depId: BitId) => {\n if (Array.isArray(ignoreBitDependencies) && ignoreBitDependencies.searchWithoutVersion(depId)) return acc;\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = packageDependency;\n return acc;\n }, {});\n };\n const bitDependencies = getBitDependencies(legacyComp.dependencies.getAllIds());\n const bitDevDependencies = getBitDependencies(legacyComp.devDependencies.getAllIds());\n const bitExtensionDependencies = getBitDependencies(legacyComp.extensions.extensionsBitIds);\n const packageJson = PackageJsonFile.createFromComponent(bitDir, legacyComp, true);\n const main = pathNormalizeToLinux(legacyComp.mainFile);\n packageJson.addOrUpdateProperty('main', main);\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(bitDependencies);\n packageJsonFile.addDevDependencies({\n ...bitDevDependencies,\n ...bitExtensionDependencies,\n });\n };\n addDependencies(packageJson);\n const currentVersion = getComponentPackageVersion(component);\n packageJson.addOrUpdateProperty('version', currentVersion);\n\n return packageJson;\n }\n\n /**\n * currently, it writes all artifacts.\n * later, this responsibility might move to pkg extension, which could write only artifacts\n * that are set in package.json.files[], to have a similar structure of a package.\n */\n private async getArtifacts(\n component: Component,\n legacyScope?: Scope,\n fetchParentArtifacts = false\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\n if (fetchParentArtifacts) throw new Error(`unable to fetch from parent, the legacyScope was not provided`);\n // when capsules are written via the workspace, do not write artifacts, they get created by\n // build-pipeline. when capsules are written via the scope, we do need the dists.\n return [];\n }\n if (legacyComp.buildStatus !== 'succeed' && !fetchParentArtifacts) {\n // this is important for \"bit sign\" when on lane to not go to the original scope\n return [];\n }\n const artifactFilesToFetch = async () => {\n if (fetchParentArtifacts) {\n const parent = component.head?.parents[0];\n if (!parent)\n throw new Error(`unable to fetch artifacts from parent. parent is missing for ${component.id.toString()}`);\n const compParent = await legacyScope.getConsumerComponent(legacyComp.id.changeVersion(parent.toString()));\n return getArtifactFilesExcludeExtension(compParent.extensions, 'teambit.pkg/pkg');\n }\n const extensionsNamesForArtifacts = ['teambit.compilation/compiler'];\n return flatten(\n extensionsNamesForArtifacts.map((extName) => getArtifactFilesByExtension(legacyComp.extensions, extName))\n );\n };\n\n const artifactsFiles = await artifactFilesToFetch();\n const artifactsVinylFlattened: ArtifactVinyl[] = [];\n await Promise.all(\n artifactsFiles.map(async (artifactFiles) => {\n if (!artifactFiles) return;\n if (!(artifactFiles instanceof ArtifactFiles)) {\n artifactFiles = deserializeArtifactFiles(artifactFiles);\n }\n // fyi, if this is coming from the isolator aspect, it is optimized to import all at once.\n // see artifact-files.importMultipleDistsArtifacts().\n const vinylFiles = await artifactFiles.getVinylsAndImportIfMissing(legacyComp.id, legacyScope);\n artifactsVinylFlattened.push(...vinylFiles);\n })\n );\n const artifactsDir = legacyComp.writtenPath;\n if (artifactsDir) {\n artifactsVinylFlattened.forEach((a) => a.updatePaths({ newBase: artifactsDir }));\n }\n return artifactsVinylFlattened;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphMain","globalConfig","aspectLoader","logger","createLogger","IsolatorAspect","id","isolator","constructor","graph","isolateComponents","seeders","opts","legacyScope","host","getHost","debug","join","JSON","stringify","Object","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","length","seedersWithVersions","map","seeder","_legacy","hasVersion","comp","find","component","isEqual","ignoreVersion","Error","toString","baseDir","path","capsuleList","createCapsules","capsuleDir","getCapsulesRootDir","rootBaseDir","Network","getGraphOpts","getGraphIds","successorsSubgraph","compsAndDepsIds","nodes","node","attr","existingCompsIds","Promise","all","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","existingComps","compact","cloneCapsule","originalCapsule","newBaseDir","network","clonedCapsule","seedersCapsules","fs","copy","components","installOptions","useNesting","hasRootComponents","emptyRootDir","supportsDedupingOnExistingRoot","config","capsulesDir","emptyDir","capsules","createCapsulesFromComponents","allCapsuleList","CapsuleList","fromArray","getExistingAsIs","skipIfExists","existingCapsules","filter","capsule","existsSync","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","cachePackagesOnCapsulesRoot","linkingOptions","longProcessLogger","createLongProcessLogger","newCapsuleList","linkedDependencies","linkInCapsules","installInCapsules","rootDir","end","consoleSuccess","forEach","capsuleWithPackageData","currentPackageJson","writeFileSync","PACKAGE_JSON","isolateInstallOptions","installer","getInstaller","cacheRootDirectory","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","resolveVersionsFromDependenciesOnly","packageManagerInstallOptions","overrides","capsulesOverrides","rootComponentsForCapsules","keepExistingModulesDir","install","toComponentMap","linker","getLinker","linkResults","link","linkNestedDepsInNM","rootLinks","nestedLinks","symlinkOnCapsuleRoot","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","symlinkDependenciesToCapsules","coreAspectIds","getCoreAspectIds","coreAspectCapsules","compIdWithoutVersion","split","includes","toLocalLinks","localLinks","teambitBitLink","push","linkDetailToLocalDepEntry","linkDetail","coreAspectsLinks","harmonyLink","teambitLegacyLink","resolvedFromEnvLinks","linksDetail","linkToDirResults","fromEntries","key","value","packageName","from","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","capsuleUsePreviouslySavedDists","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","c","getCapsule","scope","populateArtifactsFromParent","dataToPersist","populateComponentsFilesToWriteForCapsule","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","tuples","ComponentMap","create","list","workspacePath","workspaceCapsuleFolder","readdir","capsuleFullPaths","workspace","e","code","capsulesRootBaseDir","getRootDirOfAllCapsules","hash","deleteCapsules","capsuleBaseDir","dirToDelete","remove","Capsule","createFromComponent","getGlobalCapsulesBaseDir","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","promises","readFile","encoding","parse","packageJson","getCurrentPackageJson","found","packageJsonObject","currentVersion","getComponentPackageVersion","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","snapToSemver","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","ids","legacyComp","DataToPersist","clonedFiles","files","file","writeToPath","updatePaths","newBase","removePath","RemovePath","addFile","preparePackageJsonToWrite","semver","inc","PackageJsonTransformer","applyTransformers","valuesToMerge","componentOverridesPackageJsonData","mergePackageJsonObject","toVinylFile","artifacts","getArtifacts","addManyFiles","bitDir","ignoreBitDependencies","getBitDependencies","reduce","acc","depId","Array","isArray","searchWithoutVersion","packageDependency","componentIdToPackageName","isDependency","bitDependencies","getAllIds","bitDevDependencies","bitExtensionDependencies","extensions","extensionsBitIds","main","pathNormalizeToLinux","mainFile","fetchParentArtifacts","buildStatus","artifactFilesToFetch","parent","head","parents","compParent","getConsumerComponent","changeVersion","getArtifactFilesExcludeExtension","extensionsNamesForArtifacts","flatten","extName","getArtifactFilesByExtension","artifactsFiles","artifactsVinylFlattened","artifactFiles","ArtifactFiles","deserializeArtifactFiles","vinylFiles","getVinylsAndImportIfMissing","artifactsDir","writtenPath","a","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","AspectLoaderAspect","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport semver from 'semver';\nimport { compact, flatten, pick } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion, snapToSemver } from '@teambit/component-package-version';\nimport { GraphAspect, GraphMain } from '@teambit/graph';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n LinkDetail,\n LinkResults,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { DEPENDENCIES_FIELDS, PACKAGE_JSON } from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport {\n ArtifactFiles,\n deserializeArtifactFiles,\n getArtifactFilesByExtension,\n getArtifactFilesExcludeExtension,\n importMultipleDistsArtifacts,\n} from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nexport type ListResults = {\n workspace: string;\n capsules: string[];\n};\n\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 * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * installation options\n */\n installOptions?: IsolateComponentsInstallOptions;\n\n linkingOptions?: LinkingOptions;\n\n /**\n * delete the capsule rootDir first. it makes sure that the isolation process starts fresh with\n * no previous capsules. for build and tag this is true.\n */\n emptyRootDir?: boolean;\n\n /**\n * skip the reproduction of the capsule in case it exists.\n */\n skipIfExists?: boolean;\n\n /**\n * get existing capsule without doing any changes, no writes, no installations.\n */\n getExistingAsIs?: boolean;\n\n /**\n * place the package-manager cache on the capsule-root\n */\n cachePackagesOnCapsulesRoot?: boolean;\n\n /**\n * do not build graph with all dependencies. isolate the seeders only.\n */\n seedersOnly?: boolean;\n\n /**\n * relevant for tagging from scope, where we tag an existing snap without any code-changes.\n * the idea is to have all build artifacts from the previous snap and run deploy pipeline on top of it.\n */\n populateArtifactsFromParent?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n packageManagerConfigRootDir?: string;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [\n DependencyResolverAspect,\n LoggerAspect,\n ComponentAspect,\n GraphAspect,\n GlobalConfigAspect,\n AspectLoaderAspect,\n ];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n\n static async provider([dependencyResolver, loggerExtension, componentAspect, graphMain, globalConfig, aspectLoader]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphMain,\n GlobalConfigMain,\n AspectLoaderMain\n ]): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(\n dependencyResolver,\n logger,\n componentAspect,\n graphMain,\n globalConfig,\n aspectLoader\n );\n return isolator;\n }\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graph: GraphMain,\n private globalConfig: GlobalConfigMain,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions = {},\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n this.logger.debug(\n `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);\n const seedersWithVersions = seeders.map((seeder) => {\n if (seeder._legacy.hasVersion()) return seeder;\n const comp = componentsToIsolate.find((component) => component.id.isEqual(seeder, { ignoreVersion: true }));\n if (!comp) throw new Error(`unable to find seeder ${seeder.toString()} in componentsToIsolate`);\n return comp.id;\n });\n opts.baseDir = opts.baseDir || host.path;\n const capsuleList = await this.createCapsules(componentsToIsolate, opts, legacyScope);\n const capsuleDir = this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir);\n this.logger.debug(\n `creating network with base dir: ${opts.baseDir}, rootBaseDir: ${opts.rootBaseDir}. final capsule-dir: ${capsuleDir}. capsuleList: ${capsuleList.length}`\n );\n return new Network(capsuleList, seedersWithVersions, capsuleDir);\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graph.getGraphIds(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDepsIds = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsIds = await Promise.all(\n compsAndDepsIds.map(async (id) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(id, true);\n } else {\n existing = await host.hasId(id);\n }\n if (existing) return id;\n return undefined;\n })\n );\n const existingComps = await host.getMany(compact(existingCompsIds));\n return existingComps;\n }\n\n /**\n *\n * @param originalCapsule the capsule that contains the original component\n * @param newBaseDir relative path. (it will be saved inside `this.getRootDirOfAllCapsules()`. the final path of the capsule will be getRootDirOfAllCapsules() + newBaseDir + filenameify(component.id))\n * @returns a new capsule with the same content of the original capsule but with a new baseDir and all packages\n * installed in the newBaseDir.\n */\n async cloneCapsule(originalCapsule: Capsule, newBaseDir: string): Promise<Capsule> {\n const network = await this.isolateComponents([originalCapsule.component.id], { baseDir: newBaseDir });\n const clonedCapsule = network.seedersCapsules[0];\n await fs.copy(originalCapsule.path, clonedCapsule.path);\n return clonedCapsule;\n }\n\n /**\n * Create capsules for the provided components\n * do not use this outside directly, use isolate components which build the entire network\n * @param components\n * @param opts\n * @param legacyScope\n */\n private async createCapsules(\n components: Component[],\n opts: IsolateComponentsOptions,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n this.logger.debug(`createCapsules, ${components.length} components`);\n const installOptions = {\n ...DEFAULT_ISOLATE_INSTALL_OPTIONS,\n ...opts.installOptions,\n useNesting: this.dependencyResolver.hasRootComponents() && opts.installOptions?.useNesting,\n };\n if (!opts.emptyRootDir) {\n installOptions.dedupe = installOptions.dedupe && this.dependencyResolver.supportsDedupingOnExistingRoot();\n }\n const config = { installPackages: true, ...opts };\n const capsulesDir = this.getCapsulesRootDir(opts.baseDir as string, opts.rootBaseDir);\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 const longProcessLogger = this.logger.createLongProcessLogger('install packages');\n if (installOptions.useNesting) {\n await Promise.all(\n capsuleList.map(async (capsule) => {\n const newCapsuleList = CapsuleList.fromArray([capsule]);\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n newCapsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(capsule.path, newCapsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n });\n })\n );\n } else {\n // When nesting is used, the first component (which is the entry component) is installed in the root\n // and all other components (which are the dependencies of the entry component) are installed in\n // a subdirectory.\n const rootDir = installOptions?.useNesting ? capsuleList[0].path : capsulesDir;\n const linkedDependencies = await this.linkInCapsules(\n capsulesDir,\n capsuleList,\n capsulesWithPackagesData,\n linkingOptions\n );\n await this.installInCapsules(rootDir, capsuleList, installOptions, {\n cachePackagesOnCapsulesRoot,\n linkedDependencies,\n });\n }\n longProcessLogger.end();\n this.logger.consoleSuccess();\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\n return allCapsuleList;\n }\n\n private async installInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n isolateInstallOptions: IsolateComponentsInstallOptions,\n opts: {\n cachePackagesOnCapsulesRoot?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n }\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: opts.cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n });\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 };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n rootComponentsForCapsules: this.dependencyResolver.hasRootComponents(),\n useNesting: isolateInstallOptions.useNesting,\n keepExistingModulesDir: this.dependencyResolver.hasRootComponents(),\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 });\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const linkResults = await linker.link(capsulesDir, peerOnlyPolicy, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n linkNestedDepsInNM: !this.dependencyResolver.hasRootComponents() && linkingOptions.linkNestedDepsInNM,\n });\n let rootLinks: LinkDetail[] | undefined;\n let nestedLinks: Record<string, Record<string, string>> | undefined;\n if (!this.dependencyResolver.hasRootComponents()) {\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]: this.toLocalLinks(linkResults, rootLinks),\n };\n }\n\n private toLocalLinks(linkResults: LinkResults, rootLinks: LinkDetail[] | undefined): Record<string, string> {\n const localLinks: Array<[string, string]> = [];\n if (linkResults.teambitBitLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitBitLink.linkDetail));\n }\n if (linkResults.coreAspectsLinks) {\n linkResults.coreAspectsLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link.linkDetail));\n });\n }\n if (linkResults.harmonyLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.harmonyLink));\n }\n if (linkResults.teambitLegacyLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitLegacyLink));\n }\n if (linkResults.resolvedFromEnvLinks) {\n linkResults.resolvedFromEnvLinks.forEach((link) => {\n link.linksDetail.forEach((linkDetail) => {\n localLinks.push(this.linkDetailToLocalDepEntry(linkDetail));\n });\n });\n }\n if (linkResults.linkToDirResults) {\n linkResults.linkToDirResults.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link.linksDetail));\n });\n }\n if (rootLinks) {\n rootLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link));\n });\n }\n return Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`]));\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(\n components: Component[],\n capsuleList: CapsuleList,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n if (await CapsuleList.capsuleUsePreviouslySavedDists(component)) {\n unmodifiedComps.push(component);\n } else {\n modifiedComps.push(component);\n }\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const scope =\n (await CapsuleList.capsuleUsePreviouslySavedDists(component)) || opts?.populateArtifactsFromParent\n ? legacyScope\n : undefined;\n const dataToPersist = await this.populateComponentsFilesToWriteForCapsule(component, allIds, scope, opts);\n await dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(workspacePath: string): Promise<ListResults> {\n try {\n const workspaceCapsuleFolder = this.getCapsulesRootDir(workspacePath);\n const capsules = await fs.readdir(workspaceCapsuleFolder);\n const capsuleFullPaths = capsules.map((c) => path.join(workspaceCapsuleFolder, c));\n return {\n workspace: workspacePath,\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { workspace: workspacePath, capsules: [] };\n }\n throw e;\n }\n }\n\n getCapsulesRootDir(baseDir: string, rootBaseDir?: string): PathOsBasedAbsolute {\n const capsulesRootBaseDir = rootBaseDir || this.getRootDirOfAllCapsules();\n return path.join(capsulesRootBaseDir, hash(baseDir));\n }\n\n async deleteCapsules(capsuleBaseDir: string | null): Promise<string> {\n const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir(capsuleBaseDir) : this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n this.logger.debug(`createCapsulesFromComponents: ${components.length} components`);\n const capsules: Capsule[] = await Promise.all(\n components.map((component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n })\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getGlobalCapsulesBaseDir();\n }\n\n private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n })\n );\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = getComponentPackageVersion(component);\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = getComponentPackageVersion(depCapsule?.component);\n } else {\n version = snapToSemver(version);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // component.packageJsonFile is not available here. we don't mutate the component object for capsules.\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n async populateComponentsFilesToWriteForCapsule(\n component: Component,\n ids: BitIds,\n legacyScope?: Scope,\n opts?: IsolateComponentsOptions\n ): Promise<DataToPersist> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n const dataToPersist = new DataToPersist();\n const clonedFiles = legacyComp.files.map((file) => file.clone());\n const writeToPath = '.';\n clonedFiles.forEach((file) => file.updatePaths({ newBase: writeToPath }));\n dataToPersist.removePath(new RemovePath(writeToPath));\n clonedFiles.map((file) => dataToPersist.addFile(file));\n const packageJson = this.preparePackageJsonToWrite(\n component,\n writeToPath,\n ids // this.ignoreBitDependencies,\n );\n if (!legacyComp.id.hasVersion()) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n packageJson.addOrUpdateProperty('version', semver.inc(legacyComp.version!, 'prerelease') || '0.0.1-0');\n }\n await PackageJsonTransformer.applyTransformers(component, packageJson);\n const valuesToMerge = legacyComp.overrides.componentOverridesPackageJsonData;\n packageJson.mergePackageJsonObject(valuesToMerge);\n dataToPersist.addFile(packageJson.toVinylFile());\n const artifacts = await this.getArtifacts(component, legacyScope, opts?.populateArtifactsFromParent);\n dataToPersist.addManyFiles(artifacts);\n return dataToPersist;\n }\n\n private preparePackageJsonToWrite(\n component: Component,\n bitDir: string,\n ignoreBitDependencies: BitIds | boolean = true\n ): PackageJsonFile {\n const legacyComp: ConsumerComponent = component.state._consumer;\n this.logger.debug(`package-json.preparePackageJsonToWrite. bitDir ${bitDir}.`);\n const getBitDependencies = (dependencies: BitIds) => {\n if (ignoreBitDependencies === true) return {};\n return dependencies.reduce((acc, depId: BitId) => {\n if (Array.isArray(ignoreBitDependencies) && ignoreBitDependencies.searchWithoutVersion(depId)) return acc;\n const packageDependency = depId.version;\n const packageName = componentIdToPackageName({\n ...legacyComp,\n id: depId,\n isDependency: true,\n });\n acc[packageName] = packageDependency;\n return acc;\n }, {});\n };\n const bitDependencies = getBitDependencies(legacyComp.dependencies.getAllIds());\n const bitDevDependencies = getBitDependencies(legacyComp.devDependencies.getAllIds());\n const bitExtensionDependencies = getBitDependencies(legacyComp.extensions.extensionsBitIds);\n const packageJson = PackageJsonFile.createFromComponent(bitDir, legacyComp, true);\n const main = pathNormalizeToLinux(legacyComp.mainFile);\n packageJson.addOrUpdateProperty('main', main);\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(bitDependencies);\n packageJsonFile.addDevDependencies({\n ...bitDevDependencies,\n ...bitExtensionDependencies,\n });\n };\n addDependencies(packageJson);\n const currentVersion = getComponentPackageVersion(component);\n packageJson.addOrUpdateProperty('version', currentVersion);\n\n return packageJson;\n }\n\n /**\n * currently, it writes all artifacts.\n * later, this responsibility might move to pkg extension, which could write only artifacts\n * that are set in package.json.files[], to have a similar structure of a package.\n */\n private async getArtifacts(\n component: Component,\n legacyScope?: Scope,\n fetchParentArtifacts = false\n ): Promise<AbstractVinyl[]> {\n const legacyComp: ConsumerComponent = component.state._consumer;\n if (!legacyScope) {\n if (fetchParentArtifacts) throw new Error(`unable to fetch from parent, the legacyScope was not provided`);\n // when capsules are written via the workspace, do not write artifacts, they get created by\n // build-pipeline. when capsules are written via the scope, we do need the dists.\n return [];\n }\n if (legacyComp.buildStatus !== 'succeed' && !fetchParentArtifacts) {\n // this is important for \"bit sign\" when on lane to not go to the original scope\n return [];\n }\n const artifactFilesToFetch = async () => {\n if (fetchParentArtifacts) {\n const parent = component.head?.parents[0];\n if (!parent)\n throw new Error(`unable to fetch artifacts from parent. parent is missing for ${component.id.toString()}`);\n const compParent = await legacyScope.getConsumerComponent(legacyComp.id.changeVersion(parent.toString()));\n return getArtifactFilesExcludeExtension(compParent.extensions, 'teambit.pkg/pkg');\n }\n const extensionsNamesForArtifacts = ['teambit.compilation/compiler'];\n return flatten(\n extensionsNamesForArtifacts.map((extName) => getArtifactFilesByExtension(legacyComp.extensions, extName))\n );\n };\n\n const artifactsFiles = await artifactFilesToFetch();\n const artifactsVinylFlattened: ArtifactVinyl[] = [];\n await Promise.all(\n artifactsFiles.map(async (artifactFiles) => {\n if (!artifactFiles) return;\n if (!(artifactFiles instanceof ArtifactFiles)) {\n artifactFiles = deserializeArtifactFiles(artifactFiles);\n }\n // fyi, if this is coming from the isolator aspect, it is optimized to import all at once.\n // see artifact-files.importMultipleDistsArtifacts().\n const vinylFiles = await artifactFiles.getVinylsAndImportIfMissing(legacyComp.id, legacyScope);\n artifactsVinylFlattened.push(...vinylFiles);\n })\n );\n const artifactsDir = legacyComp.writtenPath;\n if (artifactsDir) {\n artifactsVinylFlattened.forEach((a) => a.updatePaths({ newBase: artifactsDir }));\n }\n return artifactsVinylFlattened;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1020/dist/isolator.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1020/dist/isolator.docs.md';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1022/dist/isolator.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.1022/dist/isolator.docs.md';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -1,5 +1,6 @@
1
+ import { LinkDetail } from '@teambit/dependency-resolver';
1
2
  import { Logger } from '@teambit/logger';
2
3
  import { Capsule } from './capsule';
3
4
  import CapsuleList from './capsule-list';
4
- export declare function symlinkDependenciesToCapsules(capsules: Capsule[], capsuleList: CapsuleList, logger: Logger): Promise<void>;
5
- export declare function symlinkOnCapsuleRoot(capsuleList: CapsuleList, logger: Logger, capsuleRoot: string): Promise<void>;
5
+ export declare function symlinkDependenciesToCapsules(capsules: Capsule[], capsuleList: CapsuleList, logger: Logger): Promise<Record<string, Record<string, string>>>;
6
+ export declare function symlinkOnCapsuleRoot(capsuleList: CapsuleList, logger: Logger, capsuleRoot: string): Promise<LinkDetail[]>;
@@ -2,6 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.object.from-entries.js");
5
6
  require("core-js/modules/es.promise.js");
6
7
  Object.defineProperty(exports, "__esModule", {
7
8
  value: true
@@ -15,13 +16,6 @@ function _component() {
15
16
  };
16
17
  return data;
17
18
  }
18
- function _symlink() {
19
- const data = _interopRequireDefault(require("@teambit/legacy/dist/links/symlink"));
20
- _symlink = function () {
21
- return data;
22
- };
23
- return data;
24
- }
25
19
  function _componentIdToPackageName() {
26
20
  const data = _interopRequireDefault(require("@teambit/legacy/dist/utils/bit/component-id-to-package-name"));
27
21
  _componentIdToPackageName = function () {
@@ -38,41 +32,40 @@ function _path() {
38
32
  }
39
33
  async function symlinkDependenciesToCapsules(capsules, capsuleList, logger) {
40
34
  logger.debug(`symlinkDependenciesToCapsules, ${capsules.length} capsules`);
41
- await Promise.all(capsules.map(capsule => {
35
+ return Object.fromEntries(await Promise.all(capsules.map(capsule => {
42
36
  return symlinkComponent(capsule.component.state._consumer, capsuleList, logger);
43
- }));
37
+ })));
44
38
  }
45
39
  async function symlinkOnCapsuleRoot(capsuleList, logger, capsuleRoot) {
46
40
  const modulesPath = _path().default.join(capsuleRoot, 'node_modules');
47
- const symlinks = capsuleList.map(capsule => {
41
+ return capsuleList.map(capsule => {
48
42
  const packageName = (0, _componentIdToPackageName().default)(capsule.component.state._consumer);
49
43
  const dest = _path().default.join(modulesPath, packageName);
50
- const src = _path().default.relative(_path().default.resolve(dest, '..'), capsule.path);
51
- return new (_symlink().default)(src, dest, capsule.component.id._legacy);
44
+ return {
45
+ from: capsule.path,
46
+ to: dest,
47
+ packageName
48
+ };
52
49
  });
53
- await Promise.all(symlinks.map(symlink => symlink.write()));
54
50
  }
55
51
  async function symlinkComponent(component, capsuleList, logger) {
56
52
  const componentCapsule = capsuleList.getCapsuleIgnoreScopeAndVersion(new (_component().ComponentID)(component.id));
57
53
  if (!componentCapsule) throw new Error(`unable to find the capsule for ${component.id.toString()}`);
58
54
  const allDeps = component.getAllDependenciesIds();
59
- const symlinks = allDeps.map(depId => {
55
+ const linkResults = allDeps.reduce((acc, depId) => {
60
56
  // TODO: this is dangerous - we might have 2 capsules for the same component with different version, then we might link to the wrong place
61
57
  const devCapsule = capsuleList.getCapsuleIgnoreScopeAndVersion(new (_component().ComponentID)(depId));
62
58
  if (!devCapsule) {
63
59
  // happens when a dependency is not in the workspace. (it gets installed via the package manager)
64
60
  logger.debug(`symlinkComponentToCapsule: unable to find the capsule for ${depId.toStringWithoutVersion()}. skipping`);
65
- return null;
61
+ return acc;
66
62
  }
67
63
  const packageName = (0, _componentIdToPackageName().default)(devCapsule.component.state._consumer);
68
64
  const devCapsulePath = devCapsule.path;
69
- // @todo: this is a hack, the capsule should be the one responsible to symlink, this works only for FS capsules.
70
- const dest = _path().default.join(componentCapsule.path, 'node_modules', packageName);
71
- // use relative symlink in capsules to make it really isolated from the machine fs
72
- const src = _path().default.relative(_path().default.resolve(dest, '..'), devCapsulePath);
73
- return new (_symlink().default)(src, dest, component.id);
74
- });
75
- await Promise.all(symlinks.map(symlink => symlink && symlink.write()));
65
+ acc[packageName] = `link:${devCapsulePath}`;
66
+ return acc;
67
+ }, {});
68
+ return [componentCapsule.path, linkResults];
76
69
  }
77
70
 
78
71
  //# sourceMappingURL=symlink-dependencies-to-capsules.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["symlinkDependenciesToCapsules","capsules","capsuleList","logger","debug","length","Promise","all","map","capsule","symlinkComponent","component","state","_consumer","symlinkOnCapsuleRoot","capsuleRoot","modulesPath","path","join","symlinks","packageName","componentIdToPackageName","dest","src","relative","resolve","Symlink","id","_legacy","symlink","write","componentCapsule","getCapsuleIgnoreScopeAndVersion","ComponentID","Error","toString","allDeps","getAllDependenciesIds","depId","devCapsule","toStringWithoutVersion","devCapsulePath"],"sources":["symlink-dependencies-to-capsules.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\nimport { Logger } from '@teambit/logger';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport Symlink from '@teambit/legacy/dist/links/symlink';\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(capsules: Capsule[], capsuleList: CapsuleList, logger: Logger) {\n logger.debug(`symlinkDependenciesToCapsules, ${capsules.length} capsules`);\n await Promise.all(\n capsules.map((capsule) => {\n return symlinkComponent(capsule.component.state._consumer, capsuleList, logger);\n })\n );\n}\n\nexport async function symlinkOnCapsuleRoot(capsuleList: CapsuleList, logger: Logger, capsuleRoot: string) {\n const modulesPath = path.join(capsuleRoot, 'node_modules');\n const symlinks = capsuleList.map((capsule) => {\n const packageName = componentIdToPackageName(capsule.component.state._consumer);\n const dest = path.join(modulesPath, packageName);\n const src = path.relative(path.resolve(dest, '..'), capsule.path);\n\n return new Symlink(src, dest, capsule.component.id._legacy);\n });\n\n await Promise.all(symlinks.map((symlink) => symlink.write()));\n}\n\nasync function symlinkComponent(component: ConsumerComponent, capsuleList: CapsuleList, logger: Logger) {\n const componentCapsule = capsuleList.getCapsuleIgnoreScopeAndVersion(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 symlinks = allDeps.map((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.getCapsuleIgnoreScopeAndVersion(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 null;\n }\n const packageName = componentIdToPackageName(devCapsule.component.state._consumer);\n const devCapsulePath = devCapsule.path;\n // @todo: this is a hack, the capsule should be the one responsible to symlink, this works only for FS capsules.\n const dest = path.join(componentCapsule.path, 'node_modules', packageName);\n // use relative symlink in capsules to make it really isolated from the machine fs\n const src = path.relative(path.resolve(dest, '..'), devCapsulePath);\n return new Symlink(src, dest, component.id);\n });\n\n await Promise.all(symlinks.map((symlink) => symlink && symlink.write()));\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["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","getCapsuleIgnoreScopeAndVersion","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.getCapsuleIgnoreScopeAndVersion(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.getCapsuleIgnoreScopeAndVersion(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":";;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKO,eAAeA,6BAA6B,CACjDC,QAAmB,EACnBC,WAAwB,EACxBC,MAAc,EACmC;EACjDA,MAAM,CAACC,KAAK,CAAE,kCAAiCH,QAAQ,CAACI,MAAO,WAAU,CAAC;EAC1E,OAAOC,MAAM,CAACC,WAAW,CACvB,MAAMC,OAAO,CAACC,GAAG,CACfR,QAAQ,CAACS,GAAG,CAAEC,OAAO,IAAK;IACxB,OAAOC,gBAAgB,CAACD,OAAO,CAACE,SAAS,CAACC,KAAK,CAACC,SAAS,EAAEb,WAAW,EAAEC,MAAM,CAAC;EACjF,CAAC,CAAC,CACH,CACF;AACH;AAEO,eAAea,oBAAoB,CACxCd,WAAwB,EACxBC,MAAc,EACdc,WAAmB,EACI;EACvB,MAAMC,WAAW,GAAGC,eAAI,CAACC,IAAI,CAACH,WAAW,EAAE,cAAc,CAAC;EAC1D,OAAOf,WAAW,CAACQ,GAAG,CAAEC,OAAO,IAAK;IAClC,MAAMU,WAAW,GAAG,IAAAC,mCAAwB,EAACX,OAAO,CAACE,SAAS,CAACC,KAAK,CAACC,SAAS,CAAC;IAC/E,MAAMQ,IAAI,GAAGJ,eAAI,CAACC,IAAI,CAACF,WAAW,EAAEG,WAAW,CAAC;IAChD,OAAO;MACLG,IAAI,EAAEb,OAAO,CAACQ,IAAI;MAClBM,EAAE,EAAEF,IAAI;MACRF;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,eAAeT,gBAAgB,CAC7BC,SAA4B,EAC5BX,WAAwB,EACxBC,MAAc,EAC6B;EAC3C,MAAMuB,gBAAgB,GAAGxB,WAAW,CAACyB,+BAA+B,CAAC,KAAIC,wBAAW,EAACf,SAAS,CAACgB,EAAE,CAAC,CAAC;EACnG,IAAI,CAACH,gBAAgB,EAAE,MAAM,IAAII,KAAK,CAAE,kCAAiCjB,SAAS,CAACgB,EAAE,CAACE,QAAQ,EAAG,EAAC,CAAC;EACnG,MAAMC,OAAO,GAAGnB,SAAS,CAACoB,qBAAqB,EAAE;EACjD,MAAMC,WAAW,GAAGF,OAAO,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAY,KAAK;IACxD;IACA,MAAMC,UAAU,GAAGpC,WAAW,CAACyB,+BAA+B,CAAC,KAAIC,wBAAW,EAACS,KAAK,CAAC,CAAC;IACtF,IAAI,CAACC,UAAU,EAAE;MACf;MACAnC,MAAM,CAACC,KAAK,CACT,6DAA4DiC,KAAK,CAACE,sBAAsB,EAAG,YAAW,CACxG;MACD,OAAOH,GAAG;IACZ;IACA,MAAMf,WAAW,GAAG,IAAAC,mCAAwB,EAACgB,UAAU,CAACzB,SAAS,CAACC,KAAK,CAACC,SAAS,CAAC;IAClF,MAAMyB,cAAc,GAAGF,UAAU,CAACnB,IAAI;IACtCiB,GAAG,CAACf,WAAW,CAAC,GAAI,QAAOmB,cAAe,EAAC;IAC3C,OAAOJ,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAEN,OAAO,CAACV,gBAAgB,CAACP,IAAI,EAAEe,WAAW,CAAC;AAC7C"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/isolator",
3
- "version": "0.0.1020",
3
+ "version": "0.0.1022",
4
4
  "homepage": "https://bit.dev/teambit/component/isolator",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "isolator",
9
- "version": "0.0.1020"
9
+ "version": "0.0.1022"
10
10
  },
11
11
  "dependencies": {
12
12
  "fs-extra": "10.0.0",
@@ -25,16 +25,16 @@
25
25
  "@babel/runtime": "7.20.0",
26
26
  "@teambit/graph.cleargraph": "0.0.1",
27
27
  "@teambit/harmony": "0.4.6",
28
- "@teambit/component": "0.0.1020",
29
- "@teambit/dependency-resolver": "0.0.1020",
28
+ "@teambit/component": "0.0.1022",
29
+ "@teambit/dependency-resolver": "0.0.1022",
30
30
  "@teambit/legacy-bit-id": "0.0.423",
31
- "@teambit/aspect-loader": "0.0.1020",
32
- "@teambit/cli": "0.0.683",
31
+ "@teambit/aspect-loader": "0.0.1022",
32
+ "@teambit/cli": "0.0.685",
33
33
  "@teambit/component-package-version": "0.0.422",
34
- "@teambit/global-config": "0.0.685",
35
- "@teambit/graph": "0.0.1020",
36
- "@teambit/logger": "0.0.776",
37
- "@teambit/workspace.modules.node-modules-linker": "0.0.27"
34
+ "@teambit/global-config": "0.0.687",
35
+ "@teambit/graph": "0.0.1022",
36
+ "@teambit/logger": "0.0.778",
37
+ "@teambit/workspace.modules.node-modules-linker": "0.0.29"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/react": "^17.0.8",
@@ -50,7 +50,7 @@
50
50
  "@types/testing-library__jest-dom": "5.9.5"
51
51
  },
52
52
  "peerDependencies": {
53
- "@teambit/legacy": "1.0.462",
53
+ "@teambit/legacy": "1.0.465",
54
54
  "react": "^16.8.0 || ^17.0.0",
55
55
  "react-dom": "^16.8.0 || ^17.0.0"
56
56
  },