@teambit/yarn 1.0.106 → 1.0.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/create-root-components-dir.ts +70 -0
- package/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
- package/dist/yarn.composition.d.ts +2 -2
- package/dist/yarn.package-manager.js +9 -11
- package/dist/yarn.package-manager.js.map +1 -1
- package/dist/yarn.ui.runtime.js +4 -4
- package/dist/yarn.ui.runtime.js.map +1 -1
- package/index.ts +4 -0
- package/package.json +16 -23
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
- package/yarn.aspect.ts +7 -0
- package/yarn.main.runtime.ts +19 -0
- package/yarn.package-manager.ts +578 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
4
|
+
import { ComponentMap } from '@teambit/component';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* All components are copied to a temporary folder (`<workspace-root>/.bit_components`).
|
|
8
|
+
*/
|
|
9
|
+
export async function createRootComponentsDir({
|
|
10
|
+
depResolver,
|
|
11
|
+
rootDir,
|
|
12
|
+
componentDirectoryMap,
|
|
13
|
+
}: {
|
|
14
|
+
depResolver: DependencyResolverMain;
|
|
15
|
+
rootDir: string;
|
|
16
|
+
componentDirectoryMap: ComponentMap<string>;
|
|
17
|
+
}) {
|
|
18
|
+
const pickedComponents = new Map<string, Record<string, any>>();
|
|
19
|
+
await pickComponentsAndAllDeps(
|
|
20
|
+
depResolver,
|
|
21
|
+
Array.from(componentDirectoryMap.hashMap.keys()),
|
|
22
|
+
componentDirectoryMap,
|
|
23
|
+
pickedComponents,
|
|
24
|
+
rootDir
|
|
25
|
+
);
|
|
26
|
+
const copiesDir = path.join(rootDir, 'node_modules/.bit_components');
|
|
27
|
+
await Promise.all(
|
|
28
|
+
Array.from(pickedComponents.entries()).map(async ([rootComponentDir, packageJson]) => {
|
|
29
|
+
const targetDir = path.join(copiesDir, packageJson.name);
|
|
30
|
+
const modulesDir = path.join(rootComponentDir, 'node_modules');
|
|
31
|
+
await fs.copy(rootComponentDir, targetDir, {
|
|
32
|
+
filter: (src) => src !== modulesDir,
|
|
33
|
+
overwrite: true,
|
|
34
|
+
});
|
|
35
|
+
await fs.writeJson(path.join(targetDir, 'package.json'), packageJson, { spaces: 2 });
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* This function generates a `package.json` for each component in the workspace.
|
|
42
|
+
* Any component dependencies that are present in the workspace are added to the dependencies
|
|
43
|
+
* as local `file:` dependencies.
|
|
44
|
+
*/
|
|
45
|
+
async function pickComponentsAndAllDeps(
|
|
46
|
+
depResolver: DependencyResolverMain,
|
|
47
|
+
rootComponentIds: string[],
|
|
48
|
+
componentDirectoryMap: ComponentMap<string>,
|
|
49
|
+
pickedComponents: Map<string, Record<string, any>>,
|
|
50
|
+
rootDir: string
|
|
51
|
+
) {
|
|
52
|
+
const dependencies: string[] = [];
|
|
53
|
+
await Promise.all(
|
|
54
|
+
rootComponentIds.map(async (rootComponentId) => {
|
|
55
|
+
const component = componentDirectoryMap.hashMap.get(rootComponentId);
|
|
56
|
+
if (component) {
|
|
57
|
+
dependencies.push(component[1]);
|
|
58
|
+
let packageJsonObject = pickedComponents.get(component[1]);
|
|
59
|
+
if (!packageJsonObject) {
|
|
60
|
+
const pkgName = depResolver.getPackageName(component[0]);
|
|
61
|
+
packageJsonObject = JSON.parse(
|
|
62
|
+
await fs.readFile(path.join(rootDir, 'node_modules', pkgName, 'package.json'), 'utf-8')
|
|
63
|
+
) as Record<string, any>;
|
|
64
|
+
pickedComponents.set(component[1], packageJsonObject);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
);
|
|
69
|
+
return dependencies;
|
|
70
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_yarn@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_yarn@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_yarn@1.0.108/dist/yarn.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_yarn@1.0.108/dist/yarn.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const Logo: () =>
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const Logo: () => JSX.Element;
|
|
@@ -95,9 +95,9 @@ function _os() {
|
|
|
95
95
|
};
|
|
96
96
|
return data;
|
|
97
97
|
}
|
|
98
|
-
function
|
|
98
|
+
function _versionSelectorType() {
|
|
99
99
|
const data = _interopRequireDefault(require("version-selector-type"));
|
|
100
|
-
|
|
100
|
+
_versionSelectorType = function () {
|
|
101
101
|
return data;
|
|
102
102
|
};
|
|
103
103
|
return data;
|
|
@@ -155,7 +155,7 @@ class YarnPackageManager {
|
|
|
155
155
|
const [capsulesRoot, capsulesRootManifest] = Object.entries(manifests).find(([path]) => {
|
|
156
156
|
return rootDir.startsWith(path) && rootDir !== path;
|
|
157
157
|
}) ?? [];
|
|
158
|
-
if (capsulesRoot && capsulesRootManifest
|
|
158
|
+
if (capsulesRoot && capsulesRootManifest?.dependencies) {
|
|
159
159
|
await (0, _dependenciesFs().createLinks)(capsulesRoot, capsulesRootManifest.dependencies);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
@@ -318,8 +318,7 @@ class YarnPackageManager {
|
|
|
318
318
|
* @param ws
|
|
319
319
|
*/
|
|
320
320
|
overrideInternalWorkspaceParams(ws) {
|
|
321
|
-
|
|
322
|
-
const ident = _core().structUtils.makeIdent(((_ws$manifest$name = ws.manifest.name) === null || _ws$manifest$name === void 0 ? void 0 : _ws$manifest$name.scope) || null, `${(_ws$manifest$name2 = ws.manifest.name) === null || _ws$manifest$name2 === void 0 ? void 0 : _ws$manifest$name2.name}-${ws.manifest.version}`);
|
|
321
|
+
const ident = _core().structUtils.makeIdent(ws.manifest.name?.scope || null, `${ws.manifest.name?.name}-${ws.manifest.version}`);
|
|
323
322
|
ws.manifest.name = ident;
|
|
324
323
|
|
|
325
324
|
// @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)
|
|
@@ -414,9 +413,9 @@ class YarnPackageManager {
|
|
|
414
413
|
virtualFolder: `${rootDirPath}/.yarn/__virtual__`,
|
|
415
414
|
npmRegistryServer: defaultRegistry.uri || 'https://registry.yarnpkg.com',
|
|
416
415
|
npmAlwaysAuth: defaultRegistry.alwaysAuth,
|
|
417
|
-
httpProxy: proxyConfig
|
|
418
|
-
httpsProxy: proxyConfig
|
|
419
|
-
enableStrictSsl: networkConfig
|
|
416
|
+
httpProxy: proxyConfig?.httpProxy,
|
|
417
|
+
httpsProxy: proxyConfig?.httpsProxy,
|
|
418
|
+
enableStrictSsl: networkConfig?.strictSSL,
|
|
420
419
|
// enableInlineBuilds: true,
|
|
421
420
|
globalFolder,
|
|
422
421
|
// We need to disable self-references as say create circular symlinks.
|
|
@@ -456,10 +455,9 @@ class YarnPackageManager {
|
|
|
456
455
|
return map;
|
|
457
456
|
}
|
|
458
457
|
async resolveRemoteVersion(packageName, options) {
|
|
459
|
-
var _versionSelectorType;
|
|
460
458
|
const parsedPackage = (0, _parsePackageName().default)(packageName);
|
|
461
459
|
const parsedVersion = parsedPackage.version;
|
|
462
|
-
const versionType = parsedVersion && (
|
|
460
|
+
const versionType = parsedVersion && (0, _versionSelectorType().default)(parsedVersion)?.type;
|
|
463
461
|
if (versionType === 'version') {
|
|
464
462
|
return {
|
|
465
463
|
packageName: parsedPackage.name,
|
|
@@ -595,7 +593,7 @@ async function removeExternalLinksFromYarnLockfile(lockfileLocation) {
|
|
|
595
593
|
const lockfileObject = (0, _parsers().parseSyml)(await _fsExtra().default.readFile(yarnLockPath, 'utf-8'));
|
|
596
594
|
const updatedLockfile = (0, _lodash().pickBy)(lockfileObject, (_, key) => !key.startsWith('@teambit') || !key.includes('@link:'));
|
|
597
595
|
const rootWorkspace = Object.entries(updatedLockfile).find(([key]) => key.endsWith('workspace:.'));
|
|
598
|
-
if (rootWorkspace
|
|
596
|
+
if (rootWorkspace?.[1]) {
|
|
599
597
|
rootWorkspace[1].dependencies = Object.fromEntries(Object.entries(rootWorkspace[1].dependencies).filter(([key, value]) => !key.startsWith('@teambit') || !value.startsWith('link:')));
|
|
600
598
|
}
|
|
601
599
|
const header = `${[`# This file is generated by running "yarn install" inside your project.\n`, `# Manual changes might be lost - proceed with caution!\n`].join(``)}\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_parsePackageName","data","_interopRequireDefault","require","_dependencyResolver","_bitError","_fsExtra","_path","_core","_cli","_fslib","_parsers","_pluginNpm","_parseOverrides","_lodash","_os","_versionSelectorType2","_yaml","_dependenciesFs","_symlinkDir","_createRootComponentsDir","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","YarnPackageManager","constructor","depResolver","logger","install","rootDir","manifests","componentDirectoryMap","installOptions","setStatusLine","useNesting","rootComponentsForCapsules","capsulesRoot","capsulesRootManifest","entries","find","path","startsWith","dependencies","createLinks","rootDirPath","npath","toPortablePath","config","computeConfiguration","cacheRootDir","nodeLinker","packageManagerConfigRootDir","packageImportMethod","project","Project","configuration","setupResolutions","overrides","_createLocalDirectoryOverrides","workspaceManifest","omit","rootWs","createWorkspace","manifest","neverBuiltDependencies","rootComponents","installConfig","hoistingLimits","createRootComponentsDir","mapValues","peerDependencies","updateManifestsForInstallationInWorkspaceCapsules","extendWithComponentsFromDir","debug","workspacesP","map","workspace","workspaces","Promise","all","workspacesIdents","workspaceIdentHash","locator","identHash","cwd","overrideInternalWorkspaceParams","setupWorkspaces","cache","Cache","installReport","StreamReport","start","stdout","process","report","persistProject","persistLockfile","removeExternalLinksFromYarnLockfile","nmSelfReferences","dir","name","symlinkDir","join","hasErrors","exit","exitCode","consoleSuccess","dependenciesChanged","Array","from","hashMap","component","getPackageName","relative","wsPath","ws","Workspace","setup","identity","structUtils","parseIdent","version","computeDeps","devDependencies","disableBuild","Map","built","dependenciesMeta","dep","resolutions","convertOverridesToResolutions","_ws$manifest$name","_ws$manifest$name2","ident","makeIdent","scope","makeLocator","reference","anchoredDescriptor","makeDescriptor","WorkspaceResolver","protocol","relativeCwd","anchoredLocator","workspacesByCwd","workspacesByIdent","dup","get","Error","set","getScopedRegistries","registries","scopedRegistries","scopes","reduce","acc","scopeName","regDef","authProp","getAuthProp","npmRegistryServer","uri","npmAlwaysAuth","alwaysAuth","keyName","registry","token","baseToken","undefined","getGlobalFolder","baseDir","homedir","options","includes","BitError","getRegistries","proxyConfig","getProxyConfig","networkConfig","getNetworkConfig","pluginConfig","getPluginConfiguration","startingCwd","Configuration","defaultRegistry","defaultAuthProp","globalFolder","cacheFolder","enableGlobalCache","installStatePath","pnpUnpluggedFolder","pnpDataPath","npmScopes","virtualFolder","httpProxy","httpsProxy","enableStrictSsl","strictSSL","nmMode","use","overwrite","fs","mkdir","recursive","rawDeps","packageName","resolveRemoteVersion","_versionSelectorType","parsedPackage","parsePackageName","parsedVersion","versionType","versionSelectorType","type","wantedRange","isSemver","npmPlugin","resolvers","_NpmRemapResolver","NpmSemverResolver","NpmTagResolver","resolver","range","LightReport","descriptor","resolveOptions","candidates","getCandidates","parsedRange","parseRange","selector","getInjectedDirs","componentDir","modulesDir","yarnStateContent","readFile","err","code","yarnState","YAML","parse","injectedDirs","locations","location","supportsDedupingOnExistingRoot","getWorkspaceDepsOfBitRoots","fromEntries","exports","parsedOverrides","parseOverrides","override","pattern","parentPkg","toYarnResolutionSelector","targetPkg","newPref","pref","fullName","description","pkgJsonPath","pkgJson","readJson","writeJson","spaces","lockfileLocation","yarnLockPath","lockfileObject","parseSyml","updatedLockfile","pickBy","_","rootWorkspace","endsWith","header","lockfileContent","stringifySyml","writeFile"],"sources":["yarn.package-manager.ts"],"sourcesContent":["import parsePackageName from 'parse-package-name';\nimport {\n extendWithComponentsFromDir,\n InstallationContext,\n DependencyResolverMain,\n PackageManager,\n PackageManagerInstallOptions,\n PackageImportMethod,\n Registries,\n Registry,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n} from '@teambit/dependency-resolver';\nimport { BitError } from '@teambit/bit-error';\nimport { ComponentMap } from '@teambit/component';\nimport fs from 'fs-extra';\nimport { join, relative } from 'path';\nimport {\n Workspace,\n Project,\n Configuration,\n structUtils,\n IdentHash,\n Descriptor,\n Cache,\n StreamReport,\n ResolveOptions,\n LightReport,\n WorkspaceResolver,\n} from '@yarnpkg/core';\nimport { getPluginConfiguration } from '@yarnpkg/cli';\nimport { npath, PortablePath } from '@yarnpkg/fslib';\nimport { parseSyml, stringifySyml, Resolution } from '@yarnpkg/parsers';\nimport npmPlugin from '@yarnpkg/plugin-npm';\nimport { parseOverrides } from '@pnpm/parse-overrides';\nimport { ProjectManifest } from '@pnpm/types';\nimport { omit, mapValues, pickBy } from 'lodash';\nimport { homedir } from 'os';\nimport { Logger } from '@teambit/logger';\nimport versionSelectorType from 'version-selector-type';\nimport YAML from 'yaml';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport symlinkDir from 'symlink-dir';\nimport { createRootComponentsDir } from './create-root-components-dir';\n\nexport class YarnPackageManager implements PackageManager {\n readonly name = 'yarn';\n\n constructor(private depResolver: DependencyResolverMain, private logger: Logger) {}\n\n async install(\n { rootDir, manifests, componentDirectoryMap }: InstallationContext,\n installOptions: PackageManagerInstallOptions = {}\n ): Promise<{ dependenciesChanged: boolean }> {\n this.logger.setStatusLine('installing dependencies');\n if (installOptions.useNesting && installOptions.rootComponentsForCapsules) {\n // For some reason Yarn doesn't want to link core aspects to the capsules root directory,\n // because the capsule root directory is outside the workspace's root directory.\n // So we need to create the symlinks ourselves.\n const [capsulesRoot, capsulesRootManifest] =\n Object.entries(manifests).find(([path]) => {\n return rootDir.startsWith(path) && rootDir !== path;\n }) ?? [];\n if (capsulesRoot && capsulesRootManifest?.dependencies) {\n await createLinks(capsulesRoot, capsulesRootManifest.dependencies);\n }\n }\n\n const rootDirPath = npath.toPortablePath(rootDir);\n const config = await this.computeConfiguration(rootDirPath, {\n cacheRootDir: installOptions.cacheRootDir,\n nodeLinker: installOptions.nodeLinker,\n packageManagerConfigRootDir: installOptions.packageManagerConfigRootDir,\n packageImportMethod: installOptions.packageImportMethod,\n });\n\n const project = new Project(rootDirPath, { configuration: config });\n\n // @ts-ignore\n project.setupResolutions();\n if (installOptions.rootComponentsForCapsules && !installOptions.useNesting) {\n installOptions.overrides = {\n ...installOptions.overrides,\n ...this._createLocalDirectoryOverrides(rootDir, componentDirectoryMap),\n };\n }\n const workspaceManifest = manifests[rootDir];\n manifests = omit(manifests, rootDir);\n const rootWs = await this.createWorkspace({\n rootDir,\n project,\n manifest: workspaceManifest,\n overrides: installOptions.overrides,\n neverBuiltDependencies: installOptions.neverBuiltDependencies,\n });\n if (installOptions.rootComponents) {\n rootWs.manifest.installConfig = {\n hoistingLimits: 'dependencies',\n };\n }\n\n if (installOptions.rootComponents) {\n await createRootComponentsDir({\n depResolver: this.depResolver,\n rootDir,\n componentDirectoryMap,\n });\n manifests = mapValues(manifests, (manifest) => ({\n ...manifest,\n dependencies: {\n ...manifest.peerDependencies,\n ...manifest.dependencies,\n },\n }));\n } else if (installOptions.useNesting) {\n manifests[rootDir] = workspaceManifest;\n // Nesting is used for scope aspect capsules.\n // In a capsule, all peer dependencies should be installed,\n // so we make runtime dependencies from peer dependencies.\n manifests[rootDir].dependencies = {\n ...manifests[rootDir].peerDependencies,\n ...manifests[rootDir].dependencies,\n };\n } else if (installOptions.rootComponentsForCapsules) {\n await updateManifestsForInstallationInWorkspaceCapsules(manifests);\n } else {\n manifests = await extendWithComponentsFromDir(rootDir, manifests);\n }\n\n this.logger.debug(`running installation in root dir ${rootDir}`);\n this.logger.debug('root manifest for installation', workspaceManifest);\n this.logger.debug('components manifests for installation', manifests);\n\n const workspacesP = Object.keys(manifests).map(async (path) => {\n const manifest = manifests[path];\n const workspace = await this.createWorkspace({ rootDir: path, project, manifest });\n return workspace;\n });\n\n const workspaces = await Promise.all(workspacesP);\n\n if (!installOptions.rootComponents && !installOptions.rootComponentsForCapsules && !installOptions.useNesting) {\n const workspacesIdents = {};\n for (const workspace of workspaces) {\n const workspaceIdentHash = workspace.locator.identHash;\n if (workspacesIdents[workspaceIdentHash]) {\n this.logger.debug(\n `overriding internal workspace fields to prevent duplications for workspace ${workspace.cwd}`\n );\n this.overrideInternalWorkspaceParams(workspace);\n }\n workspacesIdents[workspace.locator.identHash] = true;\n }\n }\n\n if (!manifests[rootDir]) {\n workspaces.push(rootWs);\n }\n this.setupWorkspaces(project, workspaces);\n\n const cache = await Cache.find(config);\n\n const installReport = await StreamReport.start(\n {\n stdout: process.stdout,\n configuration: config,\n },\n async (report) => {\n await project.install({\n persistProject: false,\n cache,\n report,\n });\n await project.persistLockfile();\n await removeExternalLinksFromYarnLockfile(rootDir);\n }\n );\n\n if (installOptions.nmSelfReferences) {\n await Promise.all(\n Object.entries(manifests).map(async ([dir, manifest]) => {\n if (manifest.name) {\n await symlinkDir(dir, join(dir, 'node_modules', manifest.name));\n }\n })\n );\n }\n\n if (installReport.hasErrors()) process.exit(installReport.exitCode());\n\n this.logger.consoleSuccess('installing dependencies');\n return { dependenciesChanged: true };\n }\n\n /**\n * Every component is overriden with a local directory of that component.\n * So the component will be installed from the local directory, not from the registry.\n */\n private _createLocalDirectoryOverrides(\n rootDir: string,\n componentDirectoryMap: ComponentMap<string>\n ): Record<string, string> {\n const overrides = {};\n Array.from(componentDirectoryMap.hashMap.entries()).forEach(([, [component, path]]) => {\n const name = this.depResolver.getPackageName(component);\n overrides[name] = `file:${relative(rootDir, path)}`;\n });\n return overrides;\n }\n\n private async createWorkspace({\n rootDir,\n project,\n manifest,\n overrides,\n neverBuiltDependencies,\n }: {\n rootDir: string;\n project: Project;\n manifest: any;\n overrides?: Record<string, string>;\n neverBuiltDependencies?: string[];\n }) {\n const wsPath = npath.toPortablePath(rootDir);\n const name = manifest.name || 'workspace';\n\n const ws = new Workspace(wsPath, { project });\n await ws.setup();\n const identity = structUtils.parseIdent(name);\n ws.manifest.name = identity;\n ws.manifest.version = manifest.version;\n ws.manifest.dependencies = this.computeDeps(manifest.dependencies);\n ws.manifest.devDependencies = this.computeDeps(manifest.devDependencies);\n ws.manifest.peerDependencies = this.computeDeps(manifest.peerDependencies);\n ws.manifest.installConfig = manifest.installConfig;\n if (neverBuiltDependencies) {\n const disableBuild = new Map([[null, { built: false }]]);\n ws.manifest.dependenciesMeta = new Map(neverBuiltDependencies.map((dep) => [dep, disableBuild]));\n }\n if (overrides) {\n ws.manifest.resolutions = convertOverridesToResolutions(overrides);\n }\n\n return ws;\n }\n\n /**\n * This is used to handle cases where in the capsules dirs we have the same component with different versions\n * The yarn ident is calculated by the manifest (package.json) name if exist\n * in our case for the same component with different versions we will get the same ident which will result errors later.\n * This is make sense in the original case of yarn workspace (it make sense you don't have 2 workspace with same name)\n * However in our case it doesn't make sense.\n * This function will make sure the ident will use the version as well\n * @param ws\n */\n private overrideInternalWorkspaceParams(ws: Workspace) {\n const ident = structUtils.makeIdent(\n ws.manifest.name?.scope || null,\n `${ws.manifest.name?.name}-${ws.manifest.version}`\n );\n\n ws.manifest.name = ident;\n\n // @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)\n ws.locator = structUtils.makeLocator(ident, ws.reference);\n\n // @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)\n ws.anchoredDescriptor = structUtils.makeDescriptor(ws.locator, `${WorkspaceResolver.protocol}${ws.relativeCwd}`);\n\n // @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)\n ws.anchoredLocator = structUtils.makeLocator(ws.locator, `${WorkspaceResolver.protocol}${ws.relativeCwd}`);\n }\n\n private setupWorkspaces(project: Project, workspaces: Workspace[]) {\n project.workspaces = [];\n project.workspacesByCwd = new Map();\n project.workspacesByIdent = new Map();\n\n workspaces.forEach((workspace) => {\n const dup = project.workspacesByIdent.get(workspace.locator.identHash);\n if (typeof dup !== `undefined`) {\n throw new Error(`Duplicate workspace name: ${workspace.cwd} conflicts with ${dup.cwd}`);\n }\n\n project.workspaces.push(workspace);\n project.workspacesByCwd.set(workspace.cwd, workspace);\n project.workspacesByIdent.set(workspace.locator.identHash, workspace);\n });\n }\n\n private async getScopedRegistries(registries: Registries) {\n const scopedRegistries = Object.keys(registries.scopes).reduce((acc, scopeName) => {\n const regDef = registries.scopes[scopeName];\n const authProp = this.getAuthProp(regDef);\n acc[scopeName] = {\n npmRegistryServer: regDef.uri,\n npmAlwaysAuth: regDef.alwaysAuth,\n };\n if (authProp) {\n acc[scopeName][authProp.keyName] = authProp.value;\n }\n\n return acc;\n }, {});\n return scopedRegistries;\n }\n\n private getAuthProp(registry: Registry) {\n if (registry.token) {\n return {\n keyName: 'npmAuthToken',\n value: registry.token,\n };\n }\n if (registry.baseToken) {\n return {\n keyName: 'npmAuthIdent',\n value: registry.baseToken,\n };\n }\n return undefined;\n }\n\n private getGlobalFolder(baseDir: string = homedir()) {\n return `${baseDir}/.yarn/global`;\n }\n\n // TODO: implement this to automate configuration.\n private async computeConfiguration(\n rootDirPath: PortablePath,\n options: {\n cacheRootDir?: string;\n nodeLinker?: 'hoisted' | 'isolated';\n packageManagerConfigRootDir?: string;\n packageImportMethod?: PackageImportMethod;\n }\n ): Promise<Configuration> {\n // We use \"copy\" by default because \"hardlink\" causes issues on Windows.\n // This must be a Yarn issue that may be fixed in the future by Yarn.\n const packageImportMethod = options.packageImportMethod || 'copy';\n if (!['hardlink', 'copy'].includes(packageImportMethod)) {\n throw new BitError(`packageImportMethod ${packageImportMethod} is not supported with Yarn`);\n }\n const registries = await this.depResolver.getRegistries();\n const proxyConfig = await this.depResolver.getProxyConfig();\n const networkConfig = await this.depResolver.getNetworkConfig();\n const pluginConfig = getPluginConfiguration();\n let startingCwd: PortablePath;\n if (options.packageManagerConfigRootDir) {\n startingCwd = npath.toPortablePath(options.packageManagerConfigRootDir);\n } else {\n startingCwd = rootDirPath;\n }\n const config = await Configuration.find(startingCwd, pluginConfig);\n const scopedRegistries = await this.getScopedRegistries(registries);\n const defaultRegistry = registries.defaultRegistry;\n const defaultAuthProp = this.getAuthProp(defaultRegistry);\n\n const globalFolder = this.getGlobalFolder(options.cacheRootDir);\n const cacheFolder = join(globalFolder, 'cache');\n const data = {\n enableGlobalCache: true,\n nodeLinker: options.nodeLinker === 'isolated' ? 'pnpm' : 'node-modules',\n installStatePath: `${rootDirPath}/.yarn/install-state.gz`,\n pnpUnpluggedFolder: `${rootDirPath}/.yarn/unplugged`,\n cacheFolder,\n pnpDataPath: `${rootDirPath}/.pnp.meta.json`,\n npmScopes: scopedRegistries,\n virtualFolder: `${rootDirPath}/.yarn/__virtual__`,\n npmRegistryServer: defaultRegistry.uri || 'https://registry.yarnpkg.com',\n npmAlwaysAuth: defaultRegistry.alwaysAuth,\n httpProxy: proxyConfig?.httpProxy,\n httpsProxy: proxyConfig?.httpsProxy,\n enableStrictSsl: networkConfig?.strictSSL,\n // enableInlineBuilds: true,\n globalFolder,\n // We need to disable self-references as say create circular symlinks.\n nmSelfReferences: false,\n // Hardlink the files from the global content-addressable store.\n // This increases the speed of installation and reduces disk space usage.\n nmMode: packageImportMethod === 'hardlink' ? 'hardlinks-global' : 'classic',\n\n // TODO: check about support for the following: (see more here - https://github.com/yarnpkg/berry/issues/1434#issuecomment-801449010)\n // ca?: string;\n // cert?: string;\n // key?: string;\n // noProxy?: boolean | string;\n };\n\n if (defaultAuthProp) {\n data[defaultAuthProp.keyName] = defaultAuthProp.value;\n }\n // TODO: node-modules is hardcoded now until adding support for pnp.\n config.use('<bit>', data, rootDirPath, { overwrite: true });\n\n // Yarn v4 stopped automatically creating the cache folder.\n // If we don't do it ourselves, Yarn will fail with: \"ENOENT: no such file or directory, copyfile...\"\n await fs.mkdir(cacheFolder, { recursive: true });\n\n return config;\n }\n\n private computeDeps(rawDeps?: { [key: string]: string }): Map<IdentHash, Descriptor> {\n const map = new Map<IdentHash, Descriptor>();\n if (!rawDeps) return map;\n\n Object.keys(rawDeps).forEach((packageName) => {\n const ident = structUtils.parseIdent(packageName);\n map.set(ident.identHash, structUtils.makeDescriptor(ident, rawDeps[packageName]));\n });\n\n return map;\n }\n\n async resolveRemoteVersion(\n packageName: string,\n options: PackageManagerResolveRemoteVersionOptions\n ): Promise<ResolvedPackageVersion> {\n const parsedPackage = parsePackageName(packageName);\n const parsedVersion = parsedPackage.version;\n const versionType = parsedVersion && versionSelectorType(parsedVersion)?.type;\n if (versionType === 'version') {\n return {\n packageName: parsedPackage.name,\n version: parsedVersion,\n wantedRange: parsedVersion,\n isSemver: true,\n };\n }\n if (!npmPlugin.resolvers) {\n throw new Error('npm resolvers for yarn API not found');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_NpmRemapResolver, NpmSemverResolver, NpmTagResolver] = npmPlugin.resolvers;\n let resolver = new NpmSemverResolver();\n const ident = structUtils.parseIdent(parsedPackage.name);\n let range = 'npm:*';\n const rootDirPath = npath.toPortablePath(options.rootDir);\n const config = await this.computeConfiguration(rootDirPath, {\n cacheRootDir: options.cacheRootDir,\n packageManagerConfigRootDir: options.packageManagerConfigRootDir,\n });\n\n const project = new Project(rootDirPath, { configuration: config });\n const report = new LightReport({ configuration: config, stdout: process.stdout });\n\n // Handle cases when the version is a dist tag like dev / latest for example bit install lodash@latest\n if (versionType === 'tag') {\n resolver = new NpmTagResolver();\n range = `npm:${parsedPackage.version}`;\n }\n const descriptor = structUtils.makeDescriptor(ident, range);\n\n // @ts-ignore\n project.setupResolutions();\n const resolveOptions: ResolveOptions = {\n project,\n resolver,\n report,\n };\n // const candidates = await resolver.getCandidates(descriptor, new Map(), resolveOptions);\n const candidates = await resolver.getCandidates(descriptor, new Map(), resolveOptions);\n const parsedRange = structUtils.parseRange(candidates[0].reference);\n const version = parsedRange.selector;\n return {\n packageName: parsedPackage.name,\n version,\n wantedRange: parsedVersion,\n isSemver: true,\n };\n }\n\n async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {\n const modulesDir = join(rootDir, 'node_modules');\n relative(modulesDir, componentDir);\n let yarnStateContent!: string;\n try {\n yarnStateContent = await fs.readFile(join(modulesDir, '.yarn-state.yml'), 'utf-8');\n } catch (err: any) {\n if (err.code === 'ENOENT') return [];\n }\n const yarnState = YAML.parse(yarnStateContent) as Record<string, { locations: string[] }>;\n const injectedDirs: string[] = [];\n for (const [key, { locations }] of Object.entries(yarnState)) {\n if (key.startsWith(`${packageName}@`) || key.startsWith(`${packageName}__root@`)) {\n for (const location of locations) {\n injectedDirs.push(location);\n }\n }\n }\n return injectedDirs;\n }\n\n supportsDedupingOnExistingRoot(): boolean {\n return true;\n }\n\n getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {\n return Object.fromEntries(\n manifests.map((manifest) => [manifest.name, `file:../../.bit_components/${manifest.name}`])\n );\n }\n}\n\nfunction convertOverridesToResolutions(\n overrides: Record<string, string>\n): Array<{ pattern: Resolution; reference: string }> {\n const parsedOverrides = parseOverrides(overrides);\n return parsedOverrides.map((override) => ({\n pattern: {\n from: override.parentPkg ? toYarnResolutionSelector(override.parentPkg) : undefined,\n descriptor: toYarnResolutionSelector(override.targetPkg),\n },\n reference: override.newPref,\n }));\n}\n\nfunction toYarnResolutionSelector({ name, pref }: { name: string; pref?: string }) {\n return {\n fullName: name,\n description: pref,\n };\n}\n\n/**\n * This function prepares the component manifests for installation inside a capsule.\n * Inside a capsule, all peer dependencies of the component should be installed.\n * So peer dependencies are added to the manifest as runtime dependencies.\n * Also, the package.json files are update to contain other component dependencies\n * in dependencies as local \"file:\" dependencies.\n */\nasync function updateManifestsForInstallationInWorkspaceCapsules(manifests: { [key: string]: any }) {\n await Promise.all(\n Object.entries(manifests).map(async ([dir, manifest]) => {\n const pkgJsonPath = join(dir, 'package.json');\n const pkgJson = await fs.readJson(pkgJsonPath);\n // We need to write the package.json files because they need to contain the workspace dependencies.\n // When packages are installed via the \"file:\" protocol, Yarn reads their package.json files\n // from the file system even if they are from the workspace.\n await fs.writeJson(\n pkgJsonPath,\n {\n ...pkgJson,\n dependencies: manifest.dependencies,\n },\n { spaces: 2 }\n );\n manifest.dependencies = {\n ...manifest.peerDependencies,\n ...manifest.dependencies,\n };\n manifest.installConfig = {\n hoistingLimits: 'workspaces',\n };\n })\n );\n}\n\nasync function removeExternalLinksFromYarnLockfile(lockfileLocation: string) {\n const yarnLockPath = join(lockfileLocation, 'yarn.lock');\n const lockfileObject = parseSyml(await fs.readFile(yarnLockPath, 'utf-8'));\n const updatedLockfile = pickBy(lockfileObject, (_, key) => !key.startsWith('@teambit') || !key.includes('@link:'));\n const rootWorkspace = Object.entries(updatedLockfile).find(([key]) => key.endsWith('workspace:.'));\n if (rootWorkspace?.[1]) {\n rootWorkspace[1].dependencies = Object.fromEntries(\n Object.entries(rootWorkspace[1].dependencies).filter(\n ([key, value]) => !key.startsWith('@teambit') || !(value as string).startsWith('link:')\n )\n );\n }\n const header = `${[\n `# This file is generated by running \"yarn install\" inside your project.\\n`,\n `# Manual changes might be lost - proceed with caution!\\n`,\n ].join(``)}\\n`;\n const lockfileContent = header + stringifySyml(updatedLockfile);\n await fs.writeFile(yarnLockPath, lockfileContent, 'utf-8');\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_parsePackageName","data","_interopRequireDefault","require","_dependencyResolver","_bitError","_fsExtra","_path","_core","_cli","_fslib","_parsers","_pluginNpm","_parseOverrides","_lodash","_os","_versionSelectorType","_yaml","_dependenciesFs","_symlinkDir","_createRootComponentsDir","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","YarnPackageManager","constructor","depResolver","logger","install","rootDir","manifests","componentDirectoryMap","installOptions","setStatusLine","useNesting","rootComponentsForCapsules","capsulesRoot","capsulesRootManifest","entries","find","path","startsWith","dependencies","createLinks","rootDirPath","npath","toPortablePath","config","computeConfiguration","cacheRootDir","nodeLinker","packageManagerConfigRootDir","packageImportMethod","project","Project","configuration","setupResolutions","overrides","_createLocalDirectoryOverrides","workspaceManifest","omit","rootWs","createWorkspace","manifest","neverBuiltDependencies","rootComponents","installConfig","hoistingLimits","createRootComponentsDir","mapValues","peerDependencies","updateManifestsForInstallationInWorkspaceCapsules","extendWithComponentsFromDir","debug","workspacesP","map","workspace","workspaces","Promise","all","workspacesIdents","workspaceIdentHash","locator","identHash","cwd","overrideInternalWorkspaceParams","setupWorkspaces","cache","Cache","installReport","StreamReport","start","stdout","process","report","persistProject","persistLockfile","removeExternalLinksFromYarnLockfile","nmSelfReferences","dir","name","symlinkDir","join","hasErrors","exit","exitCode","consoleSuccess","dependenciesChanged","Array","from","hashMap","component","getPackageName","relative","wsPath","ws","Workspace","setup","identity","structUtils","parseIdent","version","computeDeps","devDependencies","disableBuild","Map","built","dependenciesMeta","dep","resolutions","convertOverridesToResolutions","ident","makeIdent","scope","makeLocator","reference","anchoredDescriptor","makeDescriptor","WorkspaceResolver","protocol","relativeCwd","anchoredLocator","workspacesByCwd","workspacesByIdent","dup","get","Error","set","getScopedRegistries","registries","scopedRegistries","scopes","reduce","acc","scopeName","regDef","authProp","getAuthProp","npmRegistryServer","uri","npmAlwaysAuth","alwaysAuth","keyName","registry","token","baseToken","undefined","getGlobalFolder","baseDir","homedir","options","includes","BitError","getRegistries","proxyConfig","getProxyConfig","networkConfig","getNetworkConfig","pluginConfig","getPluginConfiguration","startingCwd","Configuration","defaultRegistry","defaultAuthProp","globalFolder","cacheFolder","enableGlobalCache","installStatePath","pnpUnpluggedFolder","pnpDataPath","npmScopes","virtualFolder","httpProxy","httpsProxy","enableStrictSsl","strictSSL","nmMode","use","overwrite","fs","mkdir","recursive","rawDeps","packageName","resolveRemoteVersion","parsedPackage","parsePackageName","parsedVersion","versionType","versionSelectorType","type","wantedRange","isSemver","npmPlugin","resolvers","_NpmRemapResolver","NpmSemverResolver","NpmTagResolver","resolver","range","LightReport","descriptor","resolveOptions","candidates","getCandidates","parsedRange","parseRange","selector","getInjectedDirs","componentDir","modulesDir","yarnStateContent","readFile","err","code","yarnState","YAML","parse","injectedDirs","locations","location","supportsDedupingOnExistingRoot","getWorkspaceDepsOfBitRoots","fromEntries","exports","parsedOverrides","parseOverrides","override","pattern","parentPkg","toYarnResolutionSelector","targetPkg","newPref","pref","fullName","description","pkgJsonPath","pkgJson","readJson","writeJson","spaces","lockfileLocation","yarnLockPath","lockfileObject","parseSyml","updatedLockfile","pickBy","_","rootWorkspace","endsWith","header","lockfileContent","stringifySyml","writeFile"],"sources":["yarn.package-manager.ts"],"sourcesContent":["import parsePackageName from 'parse-package-name';\nimport {\n extendWithComponentsFromDir,\n InstallationContext,\n DependencyResolverMain,\n PackageManager,\n PackageManagerInstallOptions,\n PackageImportMethod,\n Registries,\n Registry,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n} from '@teambit/dependency-resolver';\nimport { BitError } from '@teambit/bit-error';\nimport { ComponentMap } from '@teambit/component';\nimport fs from 'fs-extra';\nimport { join, relative } from 'path';\nimport {\n Workspace,\n Project,\n Configuration,\n structUtils,\n IdentHash,\n Descriptor,\n Cache,\n StreamReport,\n ResolveOptions,\n LightReport,\n WorkspaceResolver,\n} from '@yarnpkg/core';\nimport { getPluginConfiguration } from '@yarnpkg/cli';\nimport { npath, PortablePath } from '@yarnpkg/fslib';\nimport { parseSyml, stringifySyml, Resolution } from '@yarnpkg/parsers';\nimport npmPlugin from '@yarnpkg/plugin-npm';\nimport { parseOverrides } from '@pnpm/parse-overrides';\nimport { ProjectManifest } from '@pnpm/types';\nimport { omit, mapValues, pickBy } from 'lodash';\nimport { homedir } from 'os';\nimport { Logger } from '@teambit/logger';\nimport versionSelectorType from 'version-selector-type';\nimport YAML from 'yaml';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport symlinkDir from 'symlink-dir';\nimport { createRootComponentsDir } from './create-root-components-dir';\n\nexport class YarnPackageManager implements PackageManager {\n readonly name = 'yarn';\n\n constructor(private depResolver: DependencyResolverMain, private logger: Logger) {}\n\n async install(\n { rootDir, manifests, componentDirectoryMap }: InstallationContext,\n installOptions: PackageManagerInstallOptions = {}\n ): Promise<{ dependenciesChanged: boolean }> {\n this.logger.setStatusLine('installing dependencies');\n if (installOptions.useNesting && installOptions.rootComponentsForCapsules) {\n // For some reason Yarn doesn't want to link core aspects to the capsules root directory,\n // because the capsule root directory is outside the workspace's root directory.\n // So we need to create the symlinks ourselves.\n const [capsulesRoot, capsulesRootManifest] =\n Object.entries(manifests).find(([path]) => {\n return rootDir.startsWith(path) && rootDir !== path;\n }) ?? [];\n if (capsulesRoot && capsulesRootManifest?.dependencies) {\n await createLinks(capsulesRoot, capsulesRootManifest.dependencies);\n }\n }\n\n const rootDirPath = npath.toPortablePath(rootDir);\n const config = await this.computeConfiguration(rootDirPath, {\n cacheRootDir: installOptions.cacheRootDir,\n nodeLinker: installOptions.nodeLinker,\n packageManagerConfigRootDir: installOptions.packageManagerConfigRootDir,\n packageImportMethod: installOptions.packageImportMethod,\n });\n\n const project = new Project(rootDirPath, { configuration: config });\n\n // @ts-ignore\n project.setupResolutions();\n if (installOptions.rootComponentsForCapsules && !installOptions.useNesting) {\n installOptions.overrides = {\n ...installOptions.overrides,\n ...this._createLocalDirectoryOverrides(rootDir, componentDirectoryMap),\n };\n }\n const workspaceManifest = manifests[rootDir];\n manifests = omit(manifests, rootDir);\n const rootWs = await this.createWorkspace({\n rootDir,\n project,\n manifest: workspaceManifest,\n overrides: installOptions.overrides,\n neverBuiltDependencies: installOptions.neverBuiltDependencies,\n });\n if (installOptions.rootComponents) {\n rootWs.manifest.installConfig = {\n hoistingLimits: 'dependencies',\n };\n }\n\n if (installOptions.rootComponents) {\n await createRootComponentsDir({\n depResolver: this.depResolver,\n rootDir,\n componentDirectoryMap,\n });\n manifests = mapValues(manifests, (manifest) => ({\n ...manifest,\n dependencies: {\n ...manifest.peerDependencies,\n ...manifest.dependencies,\n },\n }));\n } else if (installOptions.useNesting) {\n manifests[rootDir] = workspaceManifest;\n // Nesting is used for scope aspect capsules.\n // In a capsule, all peer dependencies should be installed,\n // so we make runtime dependencies from peer dependencies.\n manifests[rootDir].dependencies = {\n ...manifests[rootDir].peerDependencies,\n ...manifests[rootDir].dependencies,\n };\n } else if (installOptions.rootComponentsForCapsules) {\n await updateManifestsForInstallationInWorkspaceCapsules(manifests);\n } else {\n manifests = await extendWithComponentsFromDir(rootDir, manifests);\n }\n\n this.logger.debug(`running installation in root dir ${rootDir}`);\n this.logger.debug('root manifest for installation', workspaceManifest);\n this.logger.debug('components manifests for installation', manifests);\n\n const workspacesP = Object.keys(manifests).map(async (path) => {\n const manifest = manifests[path];\n const workspace = await this.createWorkspace({ rootDir: path, project, manifest });\n return workspace;\n });\n\n const workspaces = await Promise.all(workspacesP);\n\n if (!installOptions.rootComponents && !installOptions.rootComponentsForCapsules && !installOptions.useNesting) {\n const workspacesIdents = {};\n for (const workspace of workspaces) {\n const workspaceIdentHash = workspace.locator.identHash;\n if (workspacesIdents[workspaceIdentHash]) {\n this.logger.debug(\n `overriding internal workspace fields to prevent duplications for workspace ${workspace.cwd}`\n );\n this.overrideInternalWorkspaceParams(workspace);\n }\n workspacesIdents[workspace.locator.identHash] = true;\n }\n }\n\n if (!manifests[rootDir]) {\n workspaces.push(rootWs);\n }\n this.setupWorkspaces(project, workspaces);\n\n const cache = await Cache.find(config);\n\n const installReport = await StreamReport.start(\n {\n stdout: process.stdout,\n configuration: config,\n },\n async (report) => {\n await project.install({\n persistProject: false,\n cache,\n report,\n });\n await project.persistLockfile();\n await removeExternalLinksFromYarnLockfile(rootDir);\n }\n );\n\n if (installOptions.nmSelfReferences) {\n await Promise.all(\n Object.entries(manifests).map(async ([dir, manifest]) => {\n if (manifest.name) {\n await symlinkDir(dir, join(dir, 'node_modules', manifest.name));\n }\n })\n );\n }\n\n if (installReport.hasErrors()) process.exit(installReport.exitCode());\n\n this.logger.consoleSuccess('installing dependencies');\n return { dependenciesChanged: true };\n }\n\n /**\n * Every component is overriden with a local directory of that component.\n * So the component will be installed from the local directory, not from the registry.\n */\n private _createLocalDirectoryOverrides(\n rootDir: string,\n componentDirectoryMap: ComponentMap<string>\n ): Record<string, string> {\n const overrides = {};\n Array.from(componentDirectoryMap.hashMap.entries()).forEach(([, [component, path]]) => {\n const name = this.depResolver.getPackageName(component);\n overrides[name] = `file:${relative(rootDir, path)}`;\n });\n return overrides;\n }\n\n private async createWorkspace({\n rootDir,\n project,\n manifest,\n overrides,\n neverBuiltDependencies,\n }: {\n rootDir: string;\n project: Project;\n manifest: any;\n overrides?: Record<string, string>;\n neverBuiltDependencies?: string[];\n }) {\n const wsPath = npath.toPortablePath(rootDir);\n const name = manifest.name || 'workspace';\n\n const ws = new Workspace(wsPath, { project });\n await ws.setup();\n const identity = structUtils.parseIdent(name);\n ws.manifest.name = identity;\n ws.manifest.version = manifest.version;\n ws.manifest.dependencies = this.computeDeps(manifest.dependencies);\n ws.manifest.devDependencies = this.computeDeps(manifest.devDependencies);\n ws.manifest.peerDependencies = this.computeDeps(manifest.peerDependencies);\n ws.manifest.installConfig = manifest.installConfig;\n if (neverBuiltDependencies) {\n const disableBuild = new Map([[null, { built: false }]]);\n ws.manifest.dependenciesMeta = new Map(neverBuiltDependencies.map((dep) => [dep, disableBuild]));\n }\n if (overrides) {\n ws.manifest.resolutions = convertOverridesToResolutions(overrides);\n }\n\n return ws;\n }\n\n /**\n * This is used to handle cases where in the capsules dirs we have the same component with different versions\n * The yarn ident is calculated by the manifest (package.json) name if exist\n * in our case for the same component with different versions we will get the same ident which will result errors later.\n * This is make sense in the original case of yarn workspace (it make sense you don't have 2 workspace with same name)\n * However in our case it doesn't make sense.\n * This function will make sure the ident will use the version as well\n * @param ws\n */\n private overrideInternalWorkspaceParams(ws: Workspace) {\n const ident = structUtils.makeIdent(\n ws.manifest.name?.scope || null,\n `${ws.manifest.name?.name}-${ws.manifest.version}`\n );\n\n ws.manifest.name = ident;\n\n // @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)\n ws.locator = structUtils.makeLocator(ident, ws.reference);\n\n // @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)\n ws.anchoredDescriptor = structUtils.makeDescriptor(ws.locator, `${WorkspaceResolver.protocol}${ws.relativeCwd}`);\n\n // @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)\n ws.anchoredLocator = structUtils.makeLocator(ws.locator, `${WorkspaceResolver.protocol}${ws.relativeCwd}`);\n }\n\n private setupWorkspaces(project: Project, workspaces: Workspace[]) {\n project.workspaces = [];\n project.workspacesByCwd = new Map();\n project.workspacesByIdent = new Map();\n\n workspaces.forEach((workspace) => {\n const dup = project.workspacesByIdent.get(workspace.locator.identHash);\n if (typeof dup !== `undefined`) {\n throw new Error(`Duplicate workspace name: ${workspace.cwd} conflicts with ${dup.cwd}`);\n }\n\n project.workspaces.push(workspace);\n project.workspacesByCwd.set(workspace.cwd, workspace);\n project.workspacesByIdent.set(workspace.locator.identHash, workspace);\n });\n }\n\n private async getScopedRegistries(registries: Registries) {\n const scopedRegistries = Object.keys(registries.scopes).reduce((acc, scopeName) => {\n const regDef = registries.scopes[scopeName];\n const authProp = this.getAuthProp(regDef);\n acc[scopeName] = {\n npmRegistryServer: regDef.uri,\n npmAlwaysAuth: regDef.alwaysAuth,\n };\n if (authProp) {\n acc[scopeName][authProp.keyName] = authProp.value;\n }\n\n return acc;\n }, {});\n return scopedRegistries;\n }\n\n private getAuthProp(registry: Registry) {\n if (registry.token) {\n return {\n keyName: 'npmAuthToken',\n value: registry.token,\n };\n }\n if (registry.baseToken) {\n return {\n keyName: 'npmAuthIdent',\n value: registry.baseToken,\n };\n }\n return undefined;\n }\n\n private getGlobalFolder(baseDir: string = homedir()) {\n return `${baseDir}/.yarn/global`;\n }\n\n // TODO: implement this to automate configuration.\n private async computeConfiguration(\n rootDirPath: PortablePath,\n options: {\n cacheRootDir?: string;\n nodeLinker?: 'hoisted' | 'isolated';\n packageManagerConfigRootDir?: string;\n packageImportMethod?: PackageImportMethod;\n }\n ): Promise<Configuration> {\n // We use \"copy\" by default because \"hardlink\" causes issues on Windows.\n // This must be a Yarn issue that may be fixed in the future by Yarn.\n const packageImportMethod = options.packageImportMethod || 'copy';\n if (!['hardlink', 'copy'].includes(packageImportMethod)) {\n throw new BitError(`packageImportMethod ${packageImportMethod} is not supported with Yarn`);\n }\n const registries = await this.depResolver.getRegistries();\n const proxyConfig = await this.depResolver.getProxyConfig();\n const networkConfig = await this.depResolver.getNetworkConfig();\n const pluginConfig = getPluginConfiguration();\n let startingCwd: PortablePath;\n if (options.packageManagerConfigRootDir) {\n startingCwd = npath.toPortablePath(options.packageManagerConfigRootDir);\n } else {\n startingCwd = rootDirPath;\n }\n const config = await Configuration.find(startingCwd, pluginConfig);\n const scopedRegistries = await this.getScopedRegistries(registries);\n const defaultRegistry = registries.defaultRegistry;\n const defaultAuthProp = this.getAuthProp(defaultRegistry);\n\n const globalFolder = this.getGlobalFolder(options.cacheRootDir);\n const cacheFolder = join(globalFolder, 'cache');\n const data = {\n enableGlobalCache: true,\n nodeLinker: options.nodeLinker === 'isolated' ? 'pnpm' : 'node-modules',\n installStatePath: `${rootDirPath}/.yarn/install-state.gz`,\n pnpUnpluggedFolder: `${rootDirPath}/.yarn/unplugged`,\n cacheFolder,\n pnpDataPath: `${rootDirPath}/.pnp.meta.json`,\n npmScopes: scopedRegistries,\n virtualFolder: `${rootDirPath}/.yarn/__virtual__`,\n npmRegistryServer: defaultRegistry.uri || 'https://registry.yarnpkg.com',\n npmAlwaysAuth: defaultRegistry.alwaysAuth,\n httpProxy: proxyConfig?.httpProxy,\n httpsProxy: proxyConfig?.httpsProxy,\n enableStrictSsl: networkConfig?.strictSSL,\n // enableInlineBuilds: true,\n globalFolder,\n // We need to disable self-references as say create circular symlinks.\n nmSelfReferences: false,\n // Hardlink the files from the global content-addressable store.\n // This increases the speed of installation and reduces disk space usage.\n nmMode: packageImportMethod === 'hardlink' ? 'hardlinks-global' : 'classic',\n\n // TODO: check about support for the following: (see more here - https://github.com/yarnpkg/berry/issues/1434#issuecomment-801449010)\n // ca?: string;\n // cert?: string;\n // key?: string;\n // noProxy?: boolean | string;\n };\n\n if (defaultAuthProp) {\n data[defaultAuthProp.keyName] = defaultAuthProp.value;\n }\n // TODO: node-modules is hardcoded now until adding support for pnp.\n config.use('<bit>', data, rootDirPath, { overwrite: true });\n\n // Yarn v4 stopped automatically creating the cache folder.\n // If we don't do it ourselves, Yarn will fail with: \"ENOENT: no such file or directory, copyfile...\"\n await fs.mkdir(cacheFolder, { recursive: true });\n\n return config;\n }\n\n private computeDeps(rawDeps?: { [key: string]: string }): Map<IdentHash, Descriptor> {\n const map = new Map<IdentHash, Descriptor>();\n if (!rawDeps) return map;\n\n Object.keys(rawDeps).forEach((packageName) => {\n const ident = structUtils.parseIdent(packageName);\n map.set(ident.identHash, structUtils.makeDescriptor(ident, rawDeps[packageName]));\n });\n\n return map;\n }\n\n async resolveRemoteVersion(\n packageName: string,\n options: PackageManagerResolveRemoteVersionOptions\n ): Promise<ResolvedPackageVersion> {\n const parsedPackage = parsePackageName(packageName);\n const parsedVersion = parsedPackage.version;\n const versionType = parsedVersion && versionSelectorType(parsedVersion)?.type;\n if (versionType === 'version') {\n return {\n packageName: parsedPackage.name,\n version: parsedVersion,\n wantedRange: parsedVersion,\n isSemver: true,\n };\n }\n if (!npmPlugin.resolvers) {\n throw new Error('npm resolvers for yarn API not found');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_NpmRemapResolver, NpmSemverResolver, NpmTagResolver] = npmPlugin.resolvers;\n let resolver = new NpmSemverResolver();\n const ident = structUtils.parseIdent(parsedPackage.name);\n let range = 'npm:*';\n const rootDirPath = npath.toPortablePath(options.rootDir);\n const config = await this.computeConfiguration(rootDirPath, {\n cacheRootDir: options.cacheRootDir,\n packageManagerConfigRootDir: options.packageManagerConfigRootDir,\n });\n\n const project = new Project(rootDirPath, { configuration: config });\n const report = new LightReport({ configuration: config, stdout: process.stdout });\n\n // Handle cases when the version is a dist tag like dev / latest for example bit install lodash@latest\n if (versionType === 'tag') {\n resolver = new NpmTagResolver();\n range = `npm:${parsedPackage.version}`;\n }\n const descriptor = structUtils.makeDescriptor(ident, range);\n\n // @ts-ignore\n project.setupResolutions();\n const resolveOptions: ResolveOptions = {\n project,\n resolver,\n report,\n };\n // const candidates = await resolver.getCandidates(descriptor, new Map(), resolveOptions);\n const candidates = await resolver.getCandidates(descriptor, new Map(), resolveOptions);\n const parsedRange = structUtils.parseRange(candidates[0].reference);\n const version = parsedRange.selector;\n return {\n packageName: parsedPackage.name,\n version,\n wantedRange: parsedVersion,\n isSemver: true,\n };\n }\n\n async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {\n const modulesDir = join(rootDir, 'node_modules');\n relative(modulesDir, componentDir);\n let yarnStateContent!: string;\n try {\n yarnStateContent = await fs.readFile(join(modulesDir, '.yarn-state.yml'), 'utf-8');\n } catch (err: any) {\n if (err.code === 'ENOENT') return [];\n }\n const yarnState = YAML.parse(yarnStateContent) as Record<string, { locations: string[] }>;\n const injectedDirs: string[] = [];\n for (const [key, { locations }] of Object.entries(yarnState)) {\n if (key.startsWith(`${packageName}@`) || key.startsWith(`${packageName}__root@`)) {\n for (const location of locations) {\n injectedDirs.push(location);\n }\n }\n }\n return injectedDirs;\n }\n\n supportsDedupingOnExistingRoot(): boolean {\n return true;\n }\n\n getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {\n return Object.fromEntries(\n manifests.map((manifest) => [manifest.name, `file:../../.bit_components/${manifest.name}`])\n );\n }\n}\n\nfunction convertOverridesToResolutions(\n overrides: Record<string, string>\n): Array<{ pattern: Resolution; reference: string }> {\n const parsedOverrides = parseOverrides(overrides);\n return parsedOverrides.map((override) => ({\n pattern: {\n from: override.parentPkg ? toYarnResolutionSelector(override.parentPkg) : undefined,\n descriptor: toYarnResolutionSelector(override.targetPkg),\n },\n reference: override.newPref,\n }));\n}\n\nfunction toYarnResolutionSelector({ name, pref }: { name: string; pref?: string }) {\n return {\n fullName: name,\n description: pref,\n };\n}\n\n/**\n * This function prepares the component manifests for installation inside a capsule.\n * Inside a capsule, all peer dependencies of the component should be installed.\n * So peer dependencies are added to the manifest as runtime dependencies.\n * Also, the package.json files are update to contain other component dependencies\n * in dependencies as local \"file:\" dependencies.\n */\nasync function updateManifestsForInstallationInWorkspaceCapsules(manifests: { [key: string]: any }) {\n await Promise.all(\n Object.entries(manifests).map(async ([dir, manifest]) => {\n const pkgJsonPath = join(dir, 'package.json');\n const pkgJson = await fs.readJson(pkgJsonPath);\n // We need to write the package.json files because they need to contain the workspace dependencies.\n // When packages are installed via the \"file:\" protocol, Yarn reads their package.json files\n // from the file system even if they are from the workspace.\n await fs.writeJson(\n pkgJsonPath,\n {\n ...pkgJson,\n dependencies: manifest.dependencies,\n },\n { spaces: 2 }\n );\n manifest.dependencies = {\n ...manifest.peerDependencies,\n ...manifest.dependencies,\n };\n manifest.installConfig = {\n hoistingLimits: 'workspaces',\n };\n })\n );\n}\n\nasync function removeExternalLinksFromYarnLockfile(lockfileLocation: string) {\n const yarnLockPath = join(lockfileLocation, 'yarn.lock');\n const lockfileObject = parseSyml(await fs.readFile(yarnLockPath, 'utf-8'));\n const updatedLockfile = pickBy(lockfileObject, (_, key) => !key.startsWith('@teambit') || !key.includes('@link:'));\n const rootWorkspace = Object.entries(updatedLockfile).find(([key]) => key.endsWith('workspace:.'));\n if (rootWorkspace?.[1]) {\n rootWorkspace[1].dependencies = Object.fromEntries(\n Object.entries(rootWorkspace[1].dependencies).filter(\n ([key, value]) => !key.startsWith('@teambit') || !(value as string).startsWith('link:')\n )\n );\n }\n const header = `${[\n `# This file is generated by running \"yarn install\" inside your project.\\n`,\n `# Manual changes might be lost - proceed with caution!\\n`,\n ].join(``)}\\n`;\n const lockfileContent = header + stringifySyml(updatedLockfile);\n await fs.writeFile(yarnLockPath, lockfileContent, 'utf-8');\n}\n"],"mappings":"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"}
|
package/dist/yarn.ui.runtime.js
CHANGED
|
@@ -58,8 +58,8 @@ class YarnUI {
|
|
|
58
58
|
options,
|
|
59
59
|
componentModel
|
|
60
60
|
}) => {
|
|
61
|
-
const packageName =
|
|
62
|
-
const latest =
|
|
61
|
+
const packageName = componentModel?.packageName || packageNameFromProps;
|
|
62
|
+
const latest = componentModel?.latest || latestFromProps;
|
|
63
63
|
const registry = packageName.split('/')[0];
|
|
64
64
|
const packageVersion = componentId.version === latest ? '' : `@${this.compUI.formatToInstallableVersion(componentId.version)}`;
|
|
65
65
|
return {
|
|
@@ -70,13 +70,13 @@ class YarnUI {
|
|
|
70
70
|
},
|
|
71
71
|
src: "https://static.bit.dev/brands/logo-yarn-text.svg"
|
|
72
72
|
}),
|
|
73
|
-
Component: !
|
|
73
|
+
Component: !options?.hide ? /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().Install, {
|
|
74
74
|
config: `npm config set '${registry}:registry' https://node-registry.bit.cloud`,
|
|
75
75
|
componentName: componentId.name,
|
|
76
76
|
packageManager: "yarn",
|
|
77
77
|
copyString: `yarn add ${packageName}${packageVersion}`,
|
|
78
78
|
registryName: registry,
|
|
79
|
-
isInstallable: !
|
|
79
|
+
isInstallable: !options?.disableInstall
|
|
80
80
|
}) : null,
|
|
81
81
|
order: 20
|
|
82
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireDefault","require","_ui","_uiFoundationUiUseBox","_component","_yarn","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","YarnUI","provider","componentUI","yarn","registerConsumeMethod","consumeMethod","constructor","compUI","packageName","packageNameFromProps","id","componentId","latest","latestFromProps","options","componentModel","registry","split","packageVersion","version","formatToInstallableVersion","Title","createElement","style","height","paddingTop","src","Component","hide","Install","config","componentName","name","packageManager","copyString","registryName","isInstallable","disableInstall","order","exports","UIRuntime","ComponentAspect","_default","YarnAspect","addRuntime"],"sources":["yarn.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport { Install } from '@teambit/ui-foundation.ui.use-box.menu';\nimport ComponentAspect, { ComponentUI, ConsumePlugin } from '@teambit/component';\nimport { YarnAspect } from './yarn.aspect';\n\nexport class YarnUI {\n static runtime = UIRuntime;\n\n static dependencies = [ComponentAspect];\n\n static async provider([componentUI]: [ComponentUI]) {\n const yarn = new YarnUI(componentUI);\n componentUI.registerConsumeMethod(yarn.consumeMethod);\n return yarn;\n }\n\n constructor(private compUI: ComponentUI) {}\n\n private consumeMethod: ConsumePlugin = ({\n packageName: packageNameFromProps,\n id: componentId,\n latest: latestFromProps,\n options,\n componentModel,\n }) => {\n const packageName = componentModel?.packageName || packageNameFromProps;\n const latest = componentModel?.latest || latestFromProps;\n\n const registry = packageName.split('/')[0];\n const packageVersion =\n componentId.version === latest ? '' : `@${this.compUI.formatToInstallableVersion(componentId.version as string)}`;\n\n return {\n Title: (\n <img style={{ height: '17px', paddingTop: '4px' }} src=\"https://static.bit.dev/brands/logo-yarn-text.svg\" />\n ),\n Component: !options?.hide ? (\n <Install\n config={`npm config set '${registry}:registry' https://node-registry.bit.cloud`}\n componentName={componentId.name}\n packageManager=\"yarn\"\n copyString={`yarn add ${packageName}${packageVersion}`}\n registryName={registry}\n isInstallable={!options?.disableInstall}\n />\n ) : null,\n order: 20,\n };\n };\n}\n\nexport default YarnUI;\n\nYarnAspect.addRuntime(YarnUI);\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,IAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,GAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,sBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,qBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,WAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,UAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,MAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,KAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAC,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAEpC,MAAMW,MAAM,CAAC;EAKlB,aAAaC,QAAQA,CAAC,CAACC,WAAW,CAAgB,EAAE;IAClD,MAAMC,IAAI,GAAG,IAAIH,MAAM,CAACE,WAAW,CAAC;IACpCA,WAAW,CAACE,qBAAqB,CAACD,IAAI,CAACE,aAAa,CAAC;IACrD,OAAOF,IAAI;EACb;EAEAG,WAAWA,CAASC,MAAmB,EAAE;IAAA,KAArBA,MAAmB,GAAnBA,MAAmB;IAAA3B,eAAA,wBAEA,CAAC;MACtC4B,WAAW,EAAEC,oBAAoB;MACjCC,EAAE,EAAEC,WAAW;MACfC,MAAM,EAAEC,eAAe;MACvBC,OAAO;MACPC;IACF,CAAC,KAAK;MACJ,MAAMP,WAAW,
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireDefault","require","_ui","_uiFoundationUiUseBox","_component","_yarn","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","YarnUI","provider","componentUI","yarn","registerConsumeMethod","consumeMethod","constructor","compUI","packageName","packageNameFromProps","id","componentId","latest","latestFromProps","options","componentModel","registry","split","packageVersion","version","formatToInstallableVersion","Title","createElement","style","height","paddingTop","src","Component","hide","Install","config","componentName","name","packageManager","copyString","registryName","isInstallable","disableInstall","order","exports","UIRuntime","ComponentAspect","_default","YarnAspect","addRuntime"],"sources":["yarn.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport { Install } from '@teambit/ui-foundation.ui.use-box.menu';\nimport ComponentAspect, { ComponentUI, ConsumePlugin } from '@teambit/component';\nimport { YarnAspect } from './yarn.aspect';\n\nexport class YarnUI {\n static runtime = UIRuntime;\n\n static dependencies = [ComponentAspect];\n\n static async provider([componentUI]: [ComponentUI]) {\n const yarn = new YarnUI(componentUI);\n componentUI.registerConsumeMethod(yarn.consumeMethod);\n return yarn;\n }\n\n constructor(private compUI: ComponentUI) {}\n\n private consumeMethod: ConsumePlugin = ({\n packageName: packageNameFromProps,\n id: componentId,\n latest: latestFromProps,\n options,\n componentModel,\n }) => {\n const packageName = componentModel?.packageName || packageNameFromProps;\n const latest = componentModel?.latest || latestFromProps;\n\n const registry = packageName.split('/')[0];\n const packageVersion =\n componentId.version === latest ? '' : `@${this.compUI.formatToInstallableVersion(componentId.version as string)}`;\n\n return {\n Title: (\n <img style={{ height: '17px', paddingTop: '4px' }} src=\"https://static.bit.dev/brands/logo-yarn-text.svg\" />\n ),\n Component: !options?.hide ? (\n <Install\n config={`npm config set '${registry}:registry' https://node-registry.bit.cloud`}\n componentName={componentId.name}\n packageManager=\"yarn\"\n copyString={`yarn add ${packageName}${packageVersion}`}\n registryName={registry}\n isInstallable={!options?.disableInstall}\n />\n ) : null,\n order: 20,\n };\n };\n}\n\nexport default YarnUI;\n\nYarnAspect.addRuntime(YarnUI);\n"],"mappings":"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"}
|
package/index.ts
ADDED
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/yarn",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.108",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/dependencies/yarn",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.dependencies",
|
|
8
8
|
"name": "yarn",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.108"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"fs-extra": "10.0.0",
|
|
@@ -22,33 +22,29 @@
|
|
|
22
22
|
"symlink-dir": "^5.1.1",
|
|
23
23
|
"version-selector-type": "3.0.0",
|
|
24
24
|
"yaml": "1.10.2",
|
|
25
|
-
"core-js": "^3.0.0",
|
|
26
|
-
"@babel/runtime": "7.20.0",
|
|
27
25
|
"@teambit/harmony": "0.4.6",
|
|
28
26
|
"@teambit/bit-error": "0.0.404",
|
|
29
27
|
"@teambit/ui-foundation.ui.use-box.menu": "1.0.7",
|
|
30
|
-
"@teambit/component": "1.0.
|
|
31
|
-
"@teambit/dependency-resolver": "1.0.
|
|
32
|
-
"@teambit/cli": "0.0.
|
|
33
|
-
"@teambit/logger": "0.0.
|
|
28
|
+
"@teambit/component": "1.0.108",
|
|
29
|
+
"@teambit/dependency-resolver": "1.0.108",
|
|
30
|
+
"@teambit/cli": "0.0.840",
|
|
31
|
+
"@teambit/logger": "0.0.933",
|
|
34
32
|
"@teambit/dependencies.fs.linked-dependencies": "0.0.6",
|
|
35
|
-
"@teambit/ui": "1.0.
|
|
33
|
+
"@teambit/ui": "1.0.108"
|
|
36
34
|
},
|
|
37
35
|
"devDependencies": {
|
|
38
36
|
"@types/fs-extra": "9.0.7",
|
|
39
|
-
"@types/react": "^17.0.8",
|
|
40
37
|
"@types/lodash": "4.14.165",
|
|
41
38
|
"@types/mocha": "9.1.0",
|
|
42
|
-
"@types/
|
|
43
|
-
"@types/
|
|
44
|
-
"@
|
|
45
|
-
"@types/testing-library__jest-dom": "5.9.5",
|
|
39
|
+
"@types/jest": "^29.2.2",
|
|
40
|
+
"@types/testing-library__jest-dom": "^5.9.5",
|
|
41
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.13",
|
|
46
42
|
"@teambit/dependencies.aspect-docs.yarn": "0.0.165"
|
|
47
43
|
},
|
|
48
44
|
"peerDependencies": {
|
|
49
|
-
"
|
|
50
|
-
"react": "^
|
|
51
|
-
"
|
|
45
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
46
|
+
"@types/react": "^18.2.12",
|
|
47
|
+
"@teambit/legacy": "1.0.624"
|
|
52
48
|
},
|
|
53
49
|
"license": "Apache-2.0",
|
|
54
50
|
"optionalDependencies": {},
|
|
@@ -62,7 +58,7 @@
|
|
|
62
58
|
},
|
|
63
59
|
"private": false,
|
|
64
60
|
"engines": {
|
|
65
|
-
"node": ">=
|
|
61
|
+
"node": ">=16.0.0"
|
|
66
62
|
},
|
|
67
63
|
"repository": {
|
|
68
64
|
"type": "git",
|
|
@@ -71,12 +67,9 @@
|
|
|
71
67
|
"keywords": [
|
|
72
68
|
"bit",
|
|
73
69
|
"bit-aspect",
|
|
70
|
+
"bit-core-aspect",
|
|
74
71
|
"components",
|
|
75
72
|
"collaboration",
|
|
76
|
-
"web"
|
|
77
|
-
"react",
|
|
78
|
-
"react-components",
|
|
79
|
-
"angular",
|
|
80
|
-
"angular-components"
|
|
73
|
+
"web"
|
|
81
74
|
]
|
|
82
75
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,38 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
"lib": [
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"DOM.Iterable",
|
|
8
|
-
"ScriptHost"
|
|
4
|
+
"esnext",
|
|
5
|
+
"dom",
|
|
6
|
+
"dom.Iterable"
|
|
9
7
|
],
|
|
10
|
-
"target": "
|
|
11
|
-
"module": "
|
|
12
|
-
"jsx": "react",
|
|
13
|
-
"allowJs": true,
|
|
14
|
-
"composite": true,
|
|
8
|
+
"target": "es2020",
|
|
9
|
+
"module": "es2020",
|
|
10
|
+
"jsx": "react-jsx",
|
|
15
11
|
"declaration": true,
|
|
16
12
|
"sourceMap": true,
|
|
17
|
-
"skipLibCheck": true,
|
|
18
13
|
"experimentalDecorators": true,
|
|
19
|
-
"
|
|
14
|
+
"skipLibCheck": true,
|
|
20
15
|
"moduleResolution": "node",
|
|
21
16
|
"esModuleInterop": true,
|
|
22
|
-
"rootDir": ".",
|
|
23
17
|
"resolveJsonModule": true,
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"strictPropertyInitialization": false,
|
|
28
|
-
"strict": true,
|
|
29
|
-
"noImplicitAny": false,
|
|
30
|
-
"preserveConstEnums": true
|
|
18
|
+
"allowJs": true,
|
|
19
|
+
"outDir": "dist",
|
|
20
|
+
"emitDeclarationOnly": true
|
|
31
21
|
},
|
|
32
22
|
"exclude": [
|
|
23
|
+
"artifacts",
|
|
24
|
+
"public",
|
|
33
25
|
"dist",
|
|
26
|
+
"node_modules",
|
|
27
|
+
"package.json",
|
|
34
28
|
"esm.mjs",
|
|
35
|
-
"
|
|
29
|
+
"**/*.cjs",
|
|
30
|
+
"./dist"
|
|
36
31
|
],
|
|
37
32
|
"include": [
|
|
38
33
|
"**/*",
|
package/types/asset.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ declare module '*.png' {
|
|
|
5
5
|
declare module '*.svg' {
|
|
6
6
|
import type { FunctionComponent, SVGProps } from 'react';
|
|
7
7
|
|
|
8
|
-
export const ReactComponent: FunctionComponent<
|
|
8
|
+
export const ReactComponent: FunctionComponent<
|
|
9
|
+
SVGProps<SVGSVGElement> & { title?: string }
|
|
10
|
+
>;
|
|
9
11
|
const src: string;
|
|
10
12
|
export default src;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
// @TODO Gilad
|
|
14
14
|
declare module '*.jpg' {
|
|
15
15
|
const value: any;
|
|
16
16
|
export = value;
|
|
@@ -27,3 +27,15 @@ declare module '*.bmp' {
|
|
|
27
27
|
const value: any;
|
|
28
28
|
export = value;
|
|
29
29
|
}
|
|
30
|
+
declare module '*.otf' {
|
|
31
|
+
const value: any;
|
|
32
|
+
export = value;
|
|
33
|
+
}
|
|
34
|
+
declare module '*.woff' {
|
|
35
|
+
const value: any;
|
|
36
|
+
export = value;
|
|
37
|
+
}
|
|
38
|
+
declare module '*.woff2' {
|
|
39
|
+
const value: any;
|
|
40
|
+
export = value;
|
|
41
|
+
}
|
package/yarn.aspect.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
2
|
+
import { MainRuntime } from '@teambit/cli';
|
|
3
|
+
import { LoggerAspect, LoggerMain } from '@teambit/logger';
|
|
4
|
+
import { YarnPackageManager } from './yarn.package-manager';
|
|
5
|
+
import { YarnAspect } from './yarn.aspect';
|
|
6
|
+
|
|
7
|
+
export class YarnMain {
|
|
8
|
+
static dependencies = [DependencyResolverAspect, LoggerAspect];
|
|
9
|
+
|
|
10
|
+
static runtime = MainRuntime;
|
|
11
|
+
|
|
12
|
+
static async provider([depResolver, loggerExt]: [DependencyResolverMain, LoggerMain]) {
|
|
13
|
+
const logger = loggerExt.createLogger(YarnAspect.id);
|
|
14
|
+
depResolver.registerPackageManager(new YarnPackageManager(depResolver, logger));
|
|
15
|
+
return new YarnMain();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
YarnAspect.addRuntime(YarnMain);
|
|
@@ -0,0 +1,578 @@
|
|
|
1
|
+
import parsePackageName from 'parse-package-name';
|
|
2
|
+
import {
|
|
3
|
+
extendWithComponentsFromDir,
|
|
4
|
+
InstallationContext,
|
|
5
|
+
DependencyResolverMain,
|
|
6
|
+
PackageManager,
|
|
7
|
+
PackageManagerInstallOptions,
|
|
8
|
+
PackageImportMethod,
|
|
9
|
+
Registries,
|
|
10
|
+
Registry,
|
|
11
|
+
PackageManagerResolveRemoteVersionOptions,
|
|
12
|
+
ResolvedPackageVersion,
|
|
13
|
+
} from '@teambit/dependency-resolver';
|
|
14
|
+
import { BitError } from '@teambit/bit-error';
|
|
15
|
+
import { ComponentMap } from '@teambit/component';
|
|
16
|
+
import fs from 'fs-extra';
|
|
17
|
+
import { join, relative } from 'path';
|
|
18
|
+
import {
|
|
19
|
+
Workspace,
|
|
20
|
+
Project,
|
|
21
|
+
Configuration,
|
|
22
|
+
structUtils,
|
|
23
|
+
IdentHash,
|
|
24
|
+
Descriptor,
|
|
25
|
+
Cache,
|
|
26
|
+
StreamReport,
|
|
27
|
+
ResolveOptions,
|
|
28
|
+
LightReport,
|
|
29
|
+
WorkspaceResolver,
|
|
30
|
+
} from '@yarnpkg/core';
|
|
31
|
+
import { getPluginConfiguration } from '@yarnpkg/cli';
|
|
32
|
+
import { npath, PortablePath } from '@yarnpkg/fslib';
|
|
33
|
+
import { parseSyml, stringifySyml, Resolution } from '@yarnpkg/parsers';
|
|
34
|
+
import npmPlugin from '@yarnpkg/plugin-npm';
|
|
35
|
+
import { parseOverrides } from '@pnpm/parse-overrides';
|
|
36
|
+
import { ProjectManifest } from '@pnpm/types';
|
|
37
|
+
import { omit, mapValues, pickBy } from 'lodash';
|
|
38
|
+
import { homedir } from 'os';
|
|
39
|
+
import { Logger } from '@teambit/logger';
|
|
40
|
+
import versionSelectorType from 'version-selector-type';
|
|
41
|
+
import YAML from 'yaml';
|
|
42
|
+
import { createLinks } from '@teambit/dependencies.fs.linked-dependencies';
|
|
43
|
+
import symlinkDir from 'symlink-dir';
|
|
44
|
+
import { createRootComponentsDir } from './create-root-components-dir';
|
|
45
|
+
|
|
46
|
+
export class YarnPackageManager implements PackageManager {
|
|
47
|
+
readonly name = 'yarn';
|
|
48
|
+
|
|
49
|
+
constructor(private depResolver: DependencyResolverMain, private logger: Logger) {}
|
|
50
|
+
|
|
51
|
+
async install(
|
|
52
|
+
{ rootDir, manifests, componentDirectoryMap }: InstallationContext,
|
|
53
|
+
installOptions: PackageManagerInstallOptions = {}
|
|
54
|
+
): Promise<{ dependenciesChanged: boolean }> {
|
|
55
|
+
this.logger.setStatusLine('installing dependencies');
|
|
56
|
+
if (installOptions.useNesting && installOptions.rootComponentsForCapsules) {
|
|
57
|
+
// For some reason Yarn doesn't want to link core aspects to the capsules root directory,
|
|
58
|
+
// because the capsule root directory is outside the workspace's root directory.
|
|
59
|
+
// So we need to create the symlinks ourselves.
|
|
60
|
+
const [capsulesRoot, capsulesRootManifest] =
|
|
61
|
+
Object.entries(manifests).find(([path]) => {
|
|
62
|
+
return rootDir.startsWith(path) && rootDir !== path;
|
|
63
|
+
}) ?? [];
|
|
64
|
+
if (capsulesRoot && capsulesRootManifest?.dependencies) {
|
|
65
|
+
await createLinks(capsulesRoot, capsulesRootManifest.dependencies);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const rootDirPath = npath.toPortablePath(rootDir);
|
|
70
|
+
const config = await this.computeConfiguration(rootDirPath, {
|
|
71
|
+
cacheRootDir: installOptions.cacheRootDir,
|
|
72
|
+
nodeLinker: installOptions.nodeLinker,
|
|
73
|
+
packageManagerConfigRootDir: installOptions.packageManagerConfigRootDir,
|
|
74
|
+
packageImportMethod: installOptions.packageImportMethod,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const project = new Project(rootDirPath, { configuration: config });
|
|
78
|
+
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
project.setupResolutions();
|
|
81
|
+
if (installOptions.rootComponentsForCapsules && !installOptions.useNesting) {
|
|
82
|
+
installOptions.overrides = {
|
|
83
|
+
...installOptions.overrides,
|
|
84
|
+
...this._createLocalDirectoryOverrides(rootDir, componentDirectoryMap),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const workspaceManifest = manifests[rootDir];
|
|
88
|
+
manifests = omit(manifests, rootDir);
|
|
89
|
+
const rootWs = await this.createWorkspace({
|
|
90
|
+
rootDir,
|
|
91
|
+
project,
|
|
92
|
+
manifest: workspaceManifest,
|
|
93
|
+
overrides: installOptions.overrides,
|
|
94
|
+
neverBuiltDependencies: installOptions.neverBuiltDependencies,
|
|
95
|
+
});
|
|
96
|
+
if (installOptions.rootComponents) {
|
|
97
|
+
rootWs.manifest.installConfig = {
|
|
98
|
+
hoistingLimits: 'dependencies',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (installOptions.rootComponents) {
|
|
103
|
+
await createRootComponentsDir({
|
|
104
|
+
depResolver: this.depResolver,
|
|
105
|
+
rootDir,
|
|
106
|
+
componentDirectoryMap,
|
|
107
|
+
});
|
|
108
|
+
manifests = mapValues(manifests, (manifest) => ({
|
|
109
|
+
...manifest,
|
|
110
|
+
dependencies: {
|
|
111
|
+
...manifest.peerDependencies,
|
|
112
|
+
...manifest.dependencies,
|
|
113
|
+
},
|
|
114
|
+
}));
|
|
115
|
+
} else if (installOptions.useNesting) {
|
|
116
|
+
manifests[rootDir] = workspaceManifest;
|
|
117
|
+
// Nesting is used for scope aspect capsules.
|
|
118
|
+
// In a capsule, all peer dependencies should be installed,
|
|
119
|
+
// so we make runtime dependencies from peer dependencies.
|
|
120
|
+
manifests[rootDir].dependencies = {
|
|
121
|
+
...manifests[rootDir].peerDependencies,
|
|
122
|
+
...manifests[rootDir].dependencies,
|
|
123
|
+
};
|
|
124
|
+
} else if (installOptions.rootComponentsForCapsules) {
|
|
125
|
+
await updateManifestsForInstallationInWorkspaceCapsules(manifests);
|
|
126
|
+
} else {
|
|
127
|
+
manifests = await extendWithComponentsFromDir(rootDir, manifests);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
this.logger.debug(`running installation in root dir ${rootDir}`);
|
|
131
|
+
this.logger.debug('root manifest for installation', workspaceManifest);
|
|
132
|
+
this.logger.debug('components manifests for installation', manifests);
|
|
133
|
+
|
|
134
|
+
const workspacesP = Object.keys(manifests).map(async (path) => {
|
|
135
|
+
const manifest = manifests[path];
|
|
136
|
+
const workspace = await this.createWorkspace({ rootDir: path, project, manifest });
|
|
137
|
+
return workspace;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
const workspaces = await Promise.all(workspacesP);
|
|
141
|
+
|
|
142
|
+
if (!installOptions.rootComponents && !installOptions.rootComponentsForCapsules && !installOptions.useNesting) {
|
|
143
|
+
const workspacesIdents = {};
|
|
144
|
+
for (const workspace of workspaces) {
|
|
145
|
+
const workspaceIdentHash = workspace.locator.identHash;
|
|
146
|
+
if (workspacesIdents[workspaceIdentHash]) {
|
|
147
|
+
this.logger.debug(
|
|
148
|
+
`overriding internal workspace fields to prevent duplications for workspace ${workspace.cwd}`
|
|
149
|
+
);
|
|
150
|
+
this.overrideInternalWorkspaceParams(workspace);
|
|
151
|
+
}
|
|
152
|
+
workspacesIdents[workspace.locator.identHash] = true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (!manifests[rootDir]) {
|
|
157
|
+
workspaces.push(rootWs);
|
|
158
|
+
}
|
|
159
|
+
this.setupWorkspaces(project, workspaces);
|
|
160
|
+
|
|
161
|
+
const cache = await Cache.find(config);
|
|
162
|
+
|
|
163
|
+
const installReport = await StreamReport.start(
|
|
164
|
+
{
|
|
165
|
+
stdout: process.stdout,
|
|
166
|
+
configuration: config,
|
|
167
|
+
},
|
|
168
|
+
async (report) => {
|
|
169
|
+
await project.install({
|
|
170
|
+
persistProject: false,
|
|
171
|
+
cache,
|
|
172
|
+
report,
|
|
173
|
+
});
|
|
174
|
+
await project.persistLockfile();
|
|
175
|
+
await removeExternalLinksFromYarnLockfile(rootDir);
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
if (installOptions.nmSelfReferences) {
|
|
180
|
+
await Promise.all(
|
|
181
|
+
Object.entries(manifests).map(async ([dir, manifest]) => {
|
|
182
|
+
if (manifest.name) {
|
|
183
|
+
await symlinkDir(dir, join(dir, 'node_modules', manifest.name));
|
|
184
|
+
}
|
|
185
|
+
})
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (installReport.hasErrors()) process.exit(installReport.exitCode());
|
|
190
|
+
|
|
191
|
+
this.logger.consoleSuccess('installing dependencies');
|
|
192
|
+
return { dependenciesChanged: true };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Every component is overriden with a local directory of that component.
|
|
197
|
+
* So the component will be installed from the local directory, not from the registry.
|
|
198
|
+
*/
|
|
199
|
+
private _createLocalDirectoryOverrides(
|
|
200
|
+
rootDir: string,
|
|
201
|
+
componentDirectoryMap: ComponentMap<string>
|
|
202
|
+
): Record<string, string> {
|
|
203
|
+
const overrides = {};
|
|
204
|
+
Array.from(componentDirectoryMap.hashMap.entries()).forEach(([, [component, path]]) => {
|
|
205
|
+
const name = this.depResolver.getPackageName(component);
|
|
206
|
+
overrides[name] = `file:${relative(rootDir, path)}`;
|
|
207
|
+
});
|
|
208
|
+
return overrides;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private async createWorkspace({
|
|
212
|
+
rootDir,
|
|
213
|
+
project,
|
|
214
|
+
manifest,
|
|
215
|
+
overrides,
|
|
216
|
+
neverBuiltDependencies,
|
|
217
|
+
}: {
|
|
218
|
+
rootDir: string;
|
|
219
|
+
project: Project;
|
|
220
|
+
manifest: any;
|
|
221
|
+
overrides?: Record<string, string>;
|
|
222
|
+
neverBuiltDependencies?: string[];
|
|
223
|
+
}) {
|
|
224
|
+
const wsPath = npath.toPortablePath(rootDir);
|
|
225
|
+
const name = manifest.name || 'workspace';
|
|
226
|
+
|
|
227
|
+
const ws = new Workspace(wsPath, { project });
|
|
228
|
+
await ws.setup();
|
|
229
|
+
const identity = structUtils.parseIdent(name);
|
|
230
|
+
ws.manifest.name = identity;
|
|
231
|
+
ws.manifest.version = manifest.version;
|
|
232
|
+
ws.manifest.dependencies = this.computeDeps(manifest.dependencies);
|
|
233
|
+
ws.manifest.devDependencies = this.computeDeps(manifest.devDependencies);
|
|
234
|
+
ws.manifest.peerDependencies = this.computeDeps(manifest.peerDependencies);
|
|
235
|
+
ws.manifest.installConfig = manifest.installConfig;
|
|
236
|
+
if (neverBuiltDependencies) {
|
|
237
|
+
const disableBuild = new Map([[null, { built: false }]]);
|
|
238
|
+
ws.manifest.dependenciesMeta = new Map(neverBuiltDependencies.map((dep) => [dep, disableBuild]));
|
|
239
|
+
}
|
|
240
|
+
if (overrides) {
|
|
241
|
+
ws.manifest.resolutions = convertOverridesToResolutions(overrides);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
return ws;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* This is used to handle cases where in the capsules dirs we have the same component with different versions
|
|
249
|
+
* The yarn ident is calculated by the manifest (package.json) name if exist
|
|
250
|
+
* in our case for the same component with different versions we will get the same ident which will result errors later.
|
|
251
|
+
* This is make sense in the original case of yarn workspace (it make sense you don't have 2 workspace with same name)
|
|
252
|
+
* However in our case it doesn't make sense.
|
|
253
|
+
* This function will make sure the ident will use the version as well
|
|
254
|
+
* @param ws
|
|
255
|
+
*/
|
|
256
|
+
private overrideInternalWorkspaceParams(ws: Workspace) {
|
|
257
|
+
const ident = structUtils.makeIdent(
|
|
258
|
+
ws.manifest.name?.scope || null,
|
|
259
|
+
`${ws.manifest.name?.name}-${ws.manifest.version}`
|
|
260
|
+
);
|
|
261
|
+
|
|
262
|
+
ws.manifest.name = ident;
|
|
263
|
+
|
|
264
|
+
// @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)
|
|
265
|
+
ws.locator = structUtils.makeLocator(ident, ws.reference);
|
|
266
|
+
|
|
267
|
+
// @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)
|
|
268
|
+
ws.anchoredDescriptor = structUtils.makeDescriptor(ws.locator, `${WorkspaceResolver.protocol}${ws.relativeCwd}`);
|
|
269
|
+
|
|
270
|
+
// @ts-expect-error: It's ok to initialize it now, even if it's readonly (setup is called right after construction)
|
|
271
|
+
ws.anchoredLocator = structUtils.makeLocator(ws.locator, `${WorkspaceResolver.protocol}${ws.relativeCwd}`);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
private setupWorkspaces(project: Project, workspaces: Workspace[]) {
|
|
275
|
+
project.workspaces = [];
|
|
276
|
+
project.workspacesByCwd = new Map();
|
|
277
|
+
project.workspacesByIdent = new Map();
|
|
278
|
+
|
|
279
|
+
workspaces.forEach((workspace) => {
|
|
280
|
+
const dup = project.workspacesByIdent.get(workspace.locator.identHash);
|
|
281
|
+
if (typeof dup !== `undefined`) {
|
|
282
|
+
throw new Error(`Duplicate workspace name: ${workspace.cwd} conflicts with ${dup.cwd}`);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
project.workspaces.push(workspace);
|
|
286
|
+
project.workspacesByCwd.set(workspace.cwd, workspace);
|
|
287
|
+
project.workspacesByIdent.set(workspace.locator.identHash, workspace);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
private async getScopedRegistries(registries: Registries) {
|
|
292
|
+
const scopedRegistries = Object.keys(registries.scopes).reduce((acc, scopeName) => {
|
|
293
|
+
const regDef = registries.scopes[scopeName];
|
|
294
|
+
const authProp = this.getAuthProp(regDef);
|
|
295
|
+
acc[scopeName] = {
|
|
296
|
+
npmRegistryServer: regDef.uri,
|
|
297
|
+
npmAlwaysAuth: regDef.alwaysAuth,
|
|
298
|
+
};
|
|
299
|
+
if (authProp) {
|
|
300
|
+
acc[scopeName][authProp.keyName] = authProp.value;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return acc;
|
|
304
|
+
}, {});
|
|
305
|
+
return scopedRegistries;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
private getAuthProp(registry: Registry) {
|
|
309
|
+
if (registry.token) {
|
|
310
|
+
return {
|
|
311
|
+
keyName: 'npmAuthToken',
|
|
312
|
+
value: registry.token,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
if (registry.baseToken) {
|
|
316
|
+
return {
|
|
317
|
+
keyName: 'npmAuthIdent',
|
|
318
|
+
value: registry.baseToken,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
return undefined;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
private getGlobalFolder(baseDir: string = homedir()) {
|
|
325
|
+
return `${baseDir}/.yarn/global`;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// TODO: implement this to automate configuration.
|
|
329
|
+
private async computeConfiguration(
|
|
330
|
+
rootDirPath: PortablePath,
|
|
331
|
+
options: {
|
|
332
|
+
cacheRootDir?: string;
|
|
333
|
+
nodeLinker?: 'hoisted' | 'isolated';
|
|
334
|
+
packageManagerConfigRootDir?: string;
|
|
335
|
+
packageImportMethod?: PackageImportMethod;
|
|
336
|
+
}
|
|
337
|
+
): Promise<Configuration> {
|
|
338
|
+
// We use "copy" by default because "hardlink" causes issues on Windows.
|
|
339
|
+
// This must be a Yarn issue that may be fixed in the future by Yarn.
|
|
340
|
+
const packageImportMethod = options.packageImportMethod || 'copy';
|
|
341
|
+
if (!['hardlink', 'copy'].includes(packageImportMethod)) {
|
|
342
|
+
throw new BitError(`packageImportMethod ${packageImportMethod} is not supported with Yarn`);
|
|
343
|
+
}
|
|
344
|
+
const registries = await this.depResolver.getRegistries();
|
|
345
|
+
const proxyConfig = await this.depResolver.getProxyConfig();
|
|
346
|
+
const networkConfig = await this.depResolver.getNetworkConfig();
|
|
347
|
+
const pluginConfig = getPluginConfiguration();
|
|
348
|
+
let startingCwd: PortablePath;
|
|
349
|
+
if (options.packageManagerConfigRootDir) {
|
|
350
|
+
startingCwd = npath.toPortablePath(options.packageManagerConfigRootDir);
|
|
351
|
+
} else {
|
|
352
|
+
startingCwd = rootDirPath;
|
|
353
|
+
}
|
|
354
|
+
const config = await Configuration.find(startingCwd, pluginConfig);
|
|
355
|
+
const scopedRegistries = await this.getScopedRegistries(registries);
|
|
356
|
+
const defaultRegistry = registries.defaultRegistry;
|
|
357
|
+
const defaultAuthProp = this.getAuthProp(defaultRegistry);
|
|
358
|
+
|
|
359
|
+
const globalFolder = this.getGlobalFolder(options.cacheRootDir);
|
|
360
|
+
const cacheFolder = join(globalFolder, 'cache');
|
|
361
|
+
const data = {
|
|
362
|
+
enableGlobalCache: true,
|
|
363
|
+
nodeLinker: options.nodeLinker === 'isolated' ? 'pnpm' : 'node-modules',
|
|
364
|
+
installStatePath: `${rootDirPath}/.yarn/install-state.gz`,
|
|
365
|
+
pnpUnpluggedFolder: `${rootDirPath}/.yarn/unplugged`,
|
|
366
|
+
cacheFolder,
|
|
367
|
+
pnpDataPath: `${rootDirPath}/.pnp.meta.json`,
|
|
368
|
+
npmScopes: scopedRegistries,
|
|
369
|
+
virtualFolder: `${rootDirPath}/.yarn/__virtual__`,
|
|
370
|
+
npmRegistryServer: defaultRegistry.uri || 'https://registry.yarnpkg.com',
|
|
371
|
+
npmAlwaysAuth: defaultRegistry.alwaysAuth,
|
|
372
|
+
httpProxy: proxyConfig?.httpProxy,
|
|
373
|
+
httpsProxy: proxyConfig?.httpsProxy,
|
|
374
|
+
enableStrictSsl: networkConfig?.strictSSL,
|
|
375
|
+
// enableInlineBuilds: true,
|
|
376
|
+
globalFolder,
|
|
377
|
+
// We need to disable self-references as say create circular symlinks.
|
|
378
|
+
nmSelfReferences: false,
|
|
379
|
+
// Hardlink the files from the global content-addressable store.
|
|
380
|
+
// This increases the speed of installation and reduces disk space usage.
|
|
381
|
+
nmMode: packageImportMethod === 'hardlink' ? 'hardlinks-global' : 'classic',
|
|
382
|
+
|
|
383
|
+
// TODO: check about support for the following: (see more here - https://github.com/yarnpkg/berry/issues/1434#issuecomment-801449010)
|
|
384
|
+
// ca?: string;
|
|
385
|
+
// cert?: string;
|
|
386
|
+
// key?: string;
|
|
387
|
+
// noProxy?: boolean | string;
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
if (defaultAuthProp) {
|
|
391
|
+
data[defaultAuthProp.keyName] = defaultAuthProp.value;
|
|
392
|
+
}
|
|
393
|
+
// TODO: node-modules is hardcoded now until adding support for pnp.
|
|
394
|
+
config.use('<bit>', data, rootDirPath, { overwrite: true });
|
|
395
|
+
|
|
396
|
+
// Yarn v4 stopped automatically creating the cache folder.
|
|
397
|
+
// If we don't do it ourselves, Yarn will fail with: "ENOENT: no such file or directory, copyfile..."
|
|
398
|
+
await fs.mkdir(cacheFolder, { recursive: true });
|
|
399
|
+
|
|
400
|
+
return config;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
private computeDeps(rawDeps?: { [key: string]: string }): Map<IdentHash, Descriptor> {
|
|
404
|
+
const map = new Map<IdentHash, Descriptor>();
|
|
405
|
+
if (!rawDeps) return map;
|
|
406
|
+
|
|
407
|
+
Object.keys(rawDeps).forEach((packageName) => {
|
|
408
|
+
const ident = structUtils.parseIdent(packageName);
|
|
409
|
+
map.set(ident.identHash, structUtils.makeDescriptor(ident, rawDeps[packageName]));
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
return map;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
async resolveRemoteVersion(
|
|
416
|
+
packageName: string,
|
|
417
|
+
options: PackageManagerResolveRemoteVersionOptions
|
|
418
|
+
): Promise<ResolvedPackageVersion> {
|
|
419
|
+
const parsedPackage = parsePackageName(packageName);
|
|
420
|
+
const parsedVersion = parsedPackage.version;
|
|
421
|
+
const versionType = parsedVersion && versionSelectorType(parsedVersion)?.type;
|
|
422
|
+
if (versionType === 'version') {
|
|
423
|
+
return {
|
|
424
|
+
packageName: parsedPackage.name,
|
|
425
|
+
version: parsedVersion,
|
|
426
|
+
wantedRange: parsedVersion,
|
|
427
|
+
isSemver: true,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
if (!npmPlugin.resolvers) {
|
|
431
|
+
throw new Error('npm resolvers for yarn API not found');
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
435
|
+
const [_NpmRemapResolver, NpmSemverResolver, NpmTagResolver] = npmPlugin.resolvers;
|
|
436
|
+
let resolver = new NpmSemverResolver();
|
|
437
|
+
const ident = structUtils.parseIdent(parsedPackage.name);
|
|
438
|
+
let range = 'npm:*';
|
|
439
|
+
const rootDirPath = npath.toPortablePath(options.rootDir);
|
|
440
|
+
const config = await this.computeConfiguration(rootDirPath, {
|
|
441
|
+
cacheRootDir: options.cacheRootDir,
|
|
442
|
+
packageManagerConfigRootDir: options.packageManagerConfigRootDir,
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
const project = new Project(rootDirPath, { configuration: config });
|
|
446
|
+
const report = new LightReport({ configuration: config, stdout: process.stdout });
|
|
447
|
+
|
|
448
|
+
// Handle cases when the version is a dist tag like dev / latest for example bit install lodash@latest
|
|
449
|
+
if (versionType === 'tag') {
|
|
450
|
+
resolver = new NpmTagResolver();
|
|
451
|
+
range = `npm:${parsedPackage.version}`;
|
|
452
|
+
}
|
|
453
|
+
const descriptor = structUtils.makeDescriptor(ident, range);
|
|
454
|
+
|
|
455
|
+
// @ts-ignore
|
|
456
|
+
project.setupResolutions();
|
|
457
|
+
const resolveOptions: ResolveOptions = {
|
|
458
|
+
project,
|
|
459
|
+
resolver,
|
|
460
|
+
report,
|
|
461
|
+
};
|
|
462
|
+
// const candidates = await resolver.getCandidates(descriptor, new Map(), resolveOptions);
|
|
463
|
+
const candidates = await resolver.getCandidates(descriptor, new Map(), resolveOptions);
|
|
464
|
+
const parsedRange = structUtils.parseRange(candidates[0].reference);
|
|
465
|
+
const version = parsedRange.selector;
|
|
466
|
+
return {
|
|
467
|
+
packageName: parsedPackage.name,
|
|
468
|
+
version,
|
|
469
|
+
wantedRange: parsedVersion,
|
|
470
|
+
isSemver: true,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {
|
|
475
|
+
const modulesDir = join(rootDir, 'node_modules');
|
|
476
|
+
relative(modulesDir, componentDir);
|
|
477
|
+
let yarnStateContent!: string;
|
|
478
|
+
try {
|
|
479
|
+
yarnStateContent = await fs.readFile(join(modulesDir, '.yarn-state.yml'), 'utf-8');
|
|
480
|
+
} catch (err: any) {
|
|
481
|
+
if (err.code === 'ENOENT') return [];
|
|
482
|
+
}
|
|
483
|
+
const yarnState = YAML.parse(yarnStateContent) as Record<string, { locations: string[] }>;
|
|
484
|
+
const injectedDirs: string[] = [];
|
|
485
|
+
for (const [key, { locations }] of Object.entries(yarnState)) {
|
|
486
|
+
if (key.startsWith(`${packageName}@`) || key.startsWith(`${packageName}__root@`)) {
|
|
487
|
+
for (const location of locations) {
|
|
488
|
+
injectedDirs.push(location);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
return injectedDirs;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
supportsDedupingOnExistingRoot(): boolean {
|
|
496
|
+
return true;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {
|
|
500
|
+
return Object.fromEntries(
|
|
501
|
+
manifests.map((manifest) => [manifest.name, `file:../../.bit_components/${manifest.name}`])
|
|
502
|
+
);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
function convertOverridesToResolutions(
|
|
507
|
+
overrides: Record<string, string>
|
|
508
|
+
): Array<{ pattern: Resolution; reference: string }> {
|
|
509
|
+
const parsedOverrides = parseOverrides(overrides);
|
|
510
|
+
return parsedOverrides.map((override) => ({
|
|
511
|
+
pattern: {
|
|
512
|
+
from: override.parentPkg ? toYarnResolutionSelector(override.parentPkg) : undefined,
|
|
513
|
+
descriptor: toYarnResolutionSelector(override.targetPkg),
|
|
514
|
+
},
|
|
515
|
+
reference: override.newPref,
|
|
516
|
+
}));
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
function toYarnResolutionSelector({ name, pref }: { name: string; pref?: string }) {
|
|
520
|
+
return {
|
|
521
|
+
fullName: name,
|
|
522
|
+
description: pref,
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* This function prepares the component manifests for installation inside a capsule.
|
|
528
|
+
* Inside a capsule, all peer dependencies of the component should be installed.
|
|
529
|
+
* So peer dependencies are added to the manifest as runtime dependencies.
|
|
530
|
+
* Also, the package.json files are update to contain other component dependencies
|
|
531
|
+
* in dependencies as local "file:" dependencies.
|
|
532
|
+
*/
|
|
533
|
+
async function updateManifestsForInstallationInWorkspaceCapsules(manifests: { [key: string]: any }) {
|
|
534
|
+
await Promise.all(
|
|
535
|
+
Object.entries(manifests).map(async ([dir, manifest]) => {
|
|
536
|
+
const pkgJsonPath = join(dir, 'package.json');
|
|
537
|
+
const pkgJson = await fs.readJson(pkgJsonPath);
|
|
538
|
+
// We need to write the package.json files because they need to contain the workspace dependencies.
|
|
539
|
+
// When packages are installed via the "file:" protocol, Yarn reads their package.json files
|
|
540
|
+
// from the file system even if they are from the workspace.
|
|
541
|
+
await fs.writeJson(
|
|
542
|
+
pkgJsonPath,
|
|
543
|
+
{
|
|
544
|
+
...pkgJson,
|
|
545
|
+
dependencies: manifest.dependencies,
|
|
546
|
+
},
|
|
547
|
+
{ spaces: 2 }
|
|
548
|
+
);
|
|
549
|
+
manifest.dependencies = {
|
|
550
|
+
...manifest.peerDependencies,
|
|
551
|
+
...manifest.dependencies,
|
|
552
|
+
};
|
|
553
|
+
manifest.installConfig = {
|
|
554
|
+
hoistingLimits: 'workspaces',
|
|
555
|
+
};
|
|
556
|
+
})
|
|
557
|
+
);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
async function removeExternalLinksFromYarnLockfile(lockfileLocation: string) {
|
|
561
|
+
const yarnLockPath = join(lockfileLocation, 'yarn.lock');
|
|
562
|
+
const lockfileObject = parseSyml(await fs.readFile(yarnLockPath, 'utf-8'));
|
|
563
|
+
const updatedLockfile = pickBy(lockfileObject, (_, key) => !key.startsWith('@teambit') || !key.includes('@link:'));
|
|
564
|
+
const rootWorkspace = Object.entries(updatedLockfile).find(([key]) => key.endsWith('workspace:.'));
|
|
565
|
+
if (rootWorkspace?.[1]) {
|
|
566
|
+
rootWorkspace[1].dependencies = Object.fromEntries(
|
|
567
|
+
Object.entries(rootWorkspace[1].dependencies).filter(
|
|
568
|
+
([key, value]) => !key.startsWith('@teambit') || !(value as string).startsWith('link:')
|
|
569
|
+
)
|
|
570
|
+
);
|
|
571
|
+
}
|
|
572
|
+
const header = `${[
|
|
573
|
+
`# This file is generated by running "yarn install" inside your project.\n`,
|
|
574
|
+
`# Manual changes might be lost - proceed with caution!\n`,
|
|
575
|
+
].join(``)}\n`;
|
|
576
|
+
const lockfileContent = header + stringifySyml(updatedLockfile);
|
|
577
|
+
await fs.writeFile(yarnLockPath, lockfileContent, 'utf-8');
|
|
578
|
+
}
|