@teambit/pnpm 1.0.1259 → 1.0.1261
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lockfile-deps-graph-converter.js +10 -3
- package/dist/lockfile-deps-graph-converter.js.map +1 -1
- package/dist/lockfile-deps-graph-converter.spec.js +79 -5
- package/dist/lockfile-deps-graph-converter.spec.js.map +1 -1
- package/dist/lynx.d.ts +17 -5
- package/dist/lynx.js +86 -86
- package/dist/lynx.js.map +1 -1
- package/dist/lynx.spec.js +59 -2
- package/dist/lynx.spec.js.map +1 -1
- package/dist/pnpm.package-manager.js +20 -10
- package/dist/pnpm.package-manager.js.map +1 -1
- package/dist/pnpm.package-manager.spec.js +52 -11
- package/dist/pnpm.package-manager.spec.js.map +1 -1
- package/dist/{preview-1791628002971.js → preview-1791720556076.js} +2 -2
- package/package.json +7 -7
package/dist/lynx.spec.js
CHANGED
|
@@ -14,6 +14,11 @@ function _lynx() {
|
|
|
14
14
|
};
|
|
15
15
|
return data;
|
|
16
16
|
}
|
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
20
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
21
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
22
|
describe('resolveScriptPolicies()', () => {
|
|
18
23
|
it('should pass through the pnpm allow-all builds flag', () => {
|
|
19
24
|
(0, _chai().expect)((0, _lynx().resolveScriptPolicies)({
|
|
@@ -23,7 +28,7 @@ describe('resolveScriptPolicies()', () => {
|
|
|
23
28
|
dangerouslyAllowAllBuilds: true
|
|
24
29
|
});
|
|
25
30
|
});
|
|
26
|
-
it('should
|
|
31
|
+
it('should deny never-built packages alongside the allow-all builds flag', () => {
|
|
27
32
|
(0, _chai().expect)((0, _lynx().resolveScriptPolicies)({
|
|
28
33
|
dangerouslyAllowAllScripts: true,
|
|
29
34
|
neverBuiltDependencies: ['native-pkg']
|
|
@@ -31,7 +36,7 @@ describe('resolveScriptPolicies()', () => {
|
|
|
31
36
|
allowBuilds: {
|
|
32
37
|
'native-pkg': false
|
|
33
38
|
},
|
|
34
|
-
|
|
39
|
+
dangerouslyAllowAllBuilds: true
|
|
35
40
|
});
|
|
36
41
|
});
|
|
37
42
|
});
|
|
@@ -112,5 +117,57 @@ describe('packageNameOfDepPath()', () => {
|
|
|
112
117
|
(0, _chai().expect)((0, _lynx().packageNameOfDepPath)('@org/private-pkg@git+ssh://git@github.com/org/private-pkg.git')).to.equal('@org/private-pkg');
|
|
113
118
|
});
|
|
114
119
|
});
|
|
120
|
+
describe('removeCoreDependencies()', () => {
|
|
121
|
+
const manifest = {
|
|
122
|
+
name: 'comp',
|
|
123
|
+
version: '1.0.0',
|
|
124
|
+
dependencies: {
|
|
125
|
+
'@teambit/legacy': 'workspace:*',
|
|
126
|
+
'@teambit/harmony': 'npm:@teambit/harmony@0.4.12',
|
|
127
|
+
lodash: '4.17.21'
|
|
128
|
+
},
|
|
129
|
+
peerDependencies: {
|
|
130
|
+
'@teambit/harmony': '^0.4.0',
|
|
131
|
+
react: '^19.0.0'
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
it('should remove the core dependencies whatever their spec, and as peers', () => {
|
|
135
|
+
(0, _chai().expect)((0, _lynx().removeCoreDependencies)(manifest)).to.deep.equal({
|
|
136
|
+
name: 'comp',
|
|
137
|
+
version: '1.0.0',
|
|
138
|
+
dependencies: {
|
|
139
|
+
lodash: '4.17.21'
|
|
140
|
+
},
|
|
141
|
+
peerDependencies: {
|
|
142
|
+
react: '^19.0.0'
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
it('should keep the link: dependencies Bit links itself', () => {
|
|
147
|
+
const linked = _objectSpread(_objectSpread({}, manifest), {}, {
|
|
148
|
+
dependencies: {
|
|
149
|
+
'@teambit/legacy': 'link:../legacy'
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
(0, _chai().expect)((0, _lynx().removeCoreDependencies)(linked).dependencies).to.deep.equal({
|
|
153
|
+
'@teambit/legacy': 'link:../legacy'
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
it('should keep harmony when the workspace forces its version', () => {
|
|
157
|
+
const result = (0, _lynx().removeCoreDependencies)(manifest, '0.4.12');
|
|
158
|
+
(0, _chai().expect)(result.dependencies).to.have.property('@teambit/harmony');
|
|
159
|
+
(0, _chai().expect)(result.dependencies).not.to.have.property('@teambit/legacy');
|
|
160
|
+
});
|
|
161
|
+
it('should return the manifest itself when there is nothing to remove', () => {
|
|
162
|
+
const plain = {
|
|
163
|
+
name: 'plain',
|
|
164
|
+
version: '1.0.0',
|
|
165
|
+
dependencies: {
|
|
166
|
+
lodash: '4.17.21'
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
(0, _chai().expect)((0, _lynx().removeCoreDependencies)(plain)).to.equal(plain);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
115
172
|
|
|
116
173
|
//# sourceMappingURL=lynx.spec.js.map
|
package/dist/lynx.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chai","data","require","_lynx","describe","it","expect","resolveScriptPolicies","dangerouslyAllowAllScripts","to","deep","equal","allowBuilds","dangerouslyAllowAllBuilds","neverBuiltDependencies","neverBuildPackageNames","manifest","createReadPackageHooks","rootComponents","reduce","current","hook","name","version","peerDependencies","dependencies","sortDepsRequiringBuild","undefined","mergeBitLockfileAttrs","depsRequiringBuild","restoredFromModel","packageNameOfDepPath"],"sources":["lynx.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport type { PackageManifest } from '@pnpm/types';\nimport {\n createReadPackageHooks,\n mergeBitLockfileAttrs,\n packageNameOfDepPath,\n resolveScriptPolicies,\n sortDepsRequiringBuild,\n} from './lynx';\n\ndescribe('resolveScriptPolicies()', () => {\n it('should pass through the pnpm allow-all builds flag', () => {\n expect(resolveScriptPolicies({ dangerouslyAllowAllScripts: true })).to.deep.equal({\n allowBuilds: {},\n dangerouslyAllowAllBuilds: true,\n });\n });\n\n it('should preserve explicit never-built packages instead of passing the allow-all builds flag', () => {\n expect(\n resolveScriptPolicies({\n dangerouslyAllowAllScripts: true,\n neverBuiltDependencies: ['native-pkg'],\n })\n ).to.deep.equal({\n allowBuilds: {\n 'native-pkg': false,\n },\n neverBuildPackageNames: ['native-pkg'],\n });\n });\n});\n\ndescribe('createReadPackageHooks()', () => {\n it('should install workspace peer dependencies when the project has no runtime dependencies', () => {\n const manifest = createReadPackageHooks({ rootComponents: true }).reduce<PackageManifest>(\n (current, hook) => hook(current, '/workspace/components/peer-only') as PackageManifest,\n {\n name: '@scope/peer-only',\n version: '1.0.0',\n peerDependencies: {\n '@apollo/client': '^3.12.0',\n },\n }\n );\n\n expect(manifest.dependencies).to.deep.equal({\n '@apollo/client': '^3.12.0',\n });\n });\n});\n\ndescribe('sortDepsRequiringBuild()', () => {\n it('should sort the reported list', () => {\n expect(sortDepsRequiringBuild(['esbuild@0.14.29', 'core-js@3.39.0'])).to.deep.equal([\n 'core-js@3.39.0',\n 'esbuild@0.14.29',\n ]);\n });\n\n it('should keep an empty list, which reports that nothing requires a build', () => {\n expect(sortDepsRequiringBuild([])).to.deep.equal([]);\n });\n\n it('should report no list when the install did not compute one', () => {\n expect(sortDepsRequiringBuild(undefined)).to.equal(undefined);\n });\n});\n\ndescribe('mergeBitLockfileAttrs()', () => {\n it('should preserve the recorded list when the install did not compute one', () => {\n expect(mergeBitLockfileAttrs({ depsRequiringBuild: ['core-js@3.39.0'] }, undefined)).to.deep.equal({\n depsRequiringBuild: ['core-js@3.39.0'],\n });\n });\n\n it('should replace the recorded list when the install computed one', () => {\n expect(mergeBitLockfileAttrs({ depsRequiringBuild: ['core-js@3.39.0'] }, ['esbuild@0.14.29'])).to.deep.equal({\n depsRequiringBuild: ['esbuild@0.14.29'],\n });\n });\n\n it('should record an empty list when the install found nothing requiring a build', () => {\n expect(mergeBitLockfileAttrs({ depsRequiringBuild: ['core-js@3.39.0'] }, [])).to.deep.equal({\n depsRequiringBuild: [],\n });\n });\n\n it('should keep other bit attributes captured before the install', () => {\n expect(mergeBitLockfileAttrs({ restoredFromModel: true }, ['esbuild@0.14.29'])).to.deep.equal({\n restoredFromModel: true,\n depsRequiringBuild: ['esbuild@0.14.29'],\n });\n });\n\n it('should write nothing when there is neither a computed list nor a recorded block', () => {\n expect(mergeBitLockfileAttrs(undefined, undefined)).to.equal(undefined);\n });\n});\n\ndescribe('packageNameOfDepPath()', () => {\n it('should take the name of a registry dependency', () => {\n expect(packageNameOfDepPath('esbuild@0.16.12')).to.equal('esbuild');\n });\n\n it('should keep the scope', () => {\n expect(packageNameOfDepPath('@teambit/harmony@0.4.7')).to.equal('@teambit/harmony');\n });\n\n it('should drop the peer suffix', () => {\n expect(packageNameOfDepPath('react-xarrows@2.0.2(react@18.3.1)')).to.equal('react-xarrows');\n });\n\n it('should stop at the version even when the resolution carries an @', () => {\n expect(packageNameOfDepPath('fuse-native@https://codeload.github.com/refinio/fuse-native/tar.gz/bba3d9')).to.equal(\n 'fuse-native'\n );\n expect(packageNameOfDepPath('private-pkg@git+ssh://git@github.com/org/private-pkg.git')).to.equal('private-pkg');\n expect(packageNameOfDepPath('@org/private-pkg@git+ssh://git@github.com/org/private-pkg.git')).to.equal(\n '@org/private-pkg'\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_lynx","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","describe","it","expect","resolveScriptPolicies","dangerouslyAllowAllScripts","to","deep","equal","allowBuilds","dangerouslyAllowAllBuilds","neverBuiltDependencies","manifest","createReadPackageHooks","rootComponents","reduce","current","hook","name","version","peerDependencies","dependencies","sortDepsRequiringBuild","undefined","mergeBitLockfileAttrs","depsRequiringBuild","restoredFromModel","packageNameOfDepPath","lodash","react","removeCoreDependencies","linked","result","have","property","not","plain"],"sources":["lynx.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport type { PackageManifest } from '@pnpm/types';\nimport {\n createReadPackageHooks,\n removeCoreDependencies,\n mergeBitLockfileAttrs,\n packageNameOfDepPath,\n resolveScriptPolicies,\n sortDepsRequiringBuild,\n} from './lynx';\n\ndescribe('resolveScriptPolicies()', () => {\n it('should pass through the pnpm allow-all builds flag', () => {\n expect(resolveScriptPolicies({ dangerouslyAllowAllScripts: true })).to.deep.equal({\n allowBuilds: {},\n dangerouslyAllowAllBuilds: true,\n });\n });\n\n it('should deny never-built packages alongside the allow-all builds flag', () => {\n expect(\n resolveScriptPolicies({\n dangerouslyAllowAllScripts: true,\n neverBuiltDependencies: ['native-pkg'],\n })\n ).to.deep.equal({\n allowBuilds: {\n 'native-pkg': false,\n },\n dangerouslyAllowAllBuilds: true,\n });\n });\n});\n\ndescribe('createReadPackageHooks()', () => {\n it('should install workspace peer dependencies when the project has no runtime dependencies', () => {\n const manifest = createReadPackageHooks({ rootComponents: true }).reduce<PackageManifest>(\n (current, hook) => hook(current, '/workspace/components/peer-only') as PackageManifest,\n {\n name: '@scope/peer-only',\n version: '1.0.0',\n peerDependencies: {\n '@apollo/client': '^3.12.0',\n },\n }\n );\n\n expect(manifest.dependencies).to.deep.equal({\n '@apollo/client': '^3.12.0',\n });\n });\n});\n\ndescribe('sortDepsRequiringBuild()', () => {\n it('should sort the reported list', () => {\n expect(sortDepsRequiringBuild(['esbuild@0.14.29', 'core-js@3.39.0'])).to.deep.equal([\n 'core-js@3.39.0',\n 'esbuild@0.14.29',\n ]);\n });\n\n it('should keep an empty list, which reports that nothing requires a build', () => {\n expect(sortDepsRequiringBuild([])).to.deep.equal([]);\n });\n\n it('should report no list when the install did not compute one', () => {\n expect(sortDepsRequiringBuild(undefined)).to.equal(undefined);\n });\n});\n\ndescribe('mergeBitLockfileAttrs()', () => {\n it('should preserve the recorded list when the install did not compute one', () => {\n expect(mergeBitLockfileAttrs({ depsRequiringBuild: ['core-js@3.39.0'] }, undefined)).to.deep.equal({\n depsRequiringBuild: ['core-js@3.39.0'],\n });\n });\n\n it('should replace the recorded list when the install computed one', () => {\n expect(mergeBitLockfileAttrs({ depsRequiringBuild: ['core-js@3.39.0'] }, ['esbuild@0.14.29'])).to.deep.equal({\n depsRequiringBuild: ['esbuild@0.14.29'],\n });\n });\n\n it('should record an empty list when the install found nothing requiring a build', () => {\n expect(mergeBitLockfileAttrs({ depsRequiringBuild: ['core-js@3.39.0'] }, [])).to.deep.equal({\n depsRequiringBuild: [],\n });\n });\n\n it('should keep other bit attributes captured before the install', () => {\n expect(mergeBitLockfileAttrs({ restoredFromModel: true }, ['esbuild@0.14.29'])).to.deep.equal({\n restoredFromModel: true,\n depsRequiringBuild: ['esbuild@0.14.29'],\n });\n });\n\n it('should write nothing when there is neither a computed list nor a recorded block', () => {\n expect(mergeBitLockfileAttrs(undefined, undefined)).to.equal(undefined);\n });\n});\n\ndescribe('packageNameOfDepPath()', () => {\n it('should take the name of a registry dependency', () => {\n expect(packageNameOfDepPath('esbuild@0.16.12')).to.equal('esbuild');\n });\n\n it('should keep the scope', () => {\n expect(packageNameOfDepPath('@teambit/harmony@0.4.7')).to.equal('@teambit/harmony');\n });\n\n it('should drop the peer suffix', () => {\n expect(packageNameOfDepPath('react-xarrows@2.0.2(react@18.3.1)')).to.equal('react-xarrows');\n });\n\n it('should stop at the version even when the resolution carries an @', () => {\n expect(packageNameOfDepPath('fuse-native@https://codeload.github.com/refinio/fuse-native/tar.gz/bba3d9')).to.equal(\n 'fuse-native'\n );\n expect(packageNameOfDepPath('private-pkg@git+ssh://git@github.com/org/private-pkg.git')).to.equal('private-pkg');\n expect(packageNameOfDepPath('@org/private-pkg@git+ssh://git@github.com/org/private-pkg.git')).to.equal(\n '@org/private-pkg'\n );\n });\n});\n\ndescribe('removeCoreDependencies()', () => {\n const manifest = {\n name: 'comp',\n version: '1.0.0',\n dependencies: {\n '@teambit/legacy': 'workspace:*',\n '@teambit/harmony': 'npm:@teambit/harmony@0.4.12',\n lodash: '4.17.21',\n },\n peerDependencies: { '@teambit/harmony': '^0.4.0', react: '^19.0.0' },\n };\n\n it('should remove the core dependencies whatever their spec, and as peers', () => {\n expect(removeCoreDependencies(manifest)).to.deep.equal({\n name: 'comp',\n version: '1.0.0',\n dependencies: { lodash: '4.17.21' },\n peerDependencies: { react: '^19.0.0' },\n });\n });\n\n it('should keep the link: dependencies Bit links itself', () => {\n const linked = { ...manifest, dependencies: { '@teambit/legacy': 'link:../legacy' } };\n expect(removeCoreDependencies(linked).dependencies).to.deep.equal({ '@teambit/legacy': 'link:../legacy' });\n });\n\n it('should keep harmony when the workspace forces its version', () => {\n const result = removeCoreDependencies(manifest, '0.4.12');\n expect(result.dependencies).to.have.property('@teambit/harmony');\n expect(result.dependencies).not.to.have.property('@teambit/legacy');\n });\n\n it('should return the manifest itself when there is nothing to remove', () => {\n const plain = { name: 'plain', version: '1.0.0', dependencies: { lodash: '4.17.21' } };\n expect(removeCoreDependencies(plain)).to.equal(plain);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -594,6 +594,9 @@ function applyComponentIdNames(trees) {
|
|
|
594
594
|
trees.forEach(rename);
|
|
595
595
|
}
|
|
596
596
|
|
|
597
|
+
/** The lockfile fields that say what its resolutions were resolved with. */
|
|
598
|
+
const RESOLUTION_CONTEXT_KEYS = ['pnpmfileChecksum', 'settings', 'overrides'];
|
|
599
|
+
|
|
597
600
|
// Merge a graph-derived lockfile into an existing wanted lockfile. The graph lockfile is
|
|
598
601
|
// authoritative for keys it contains (a re-imported component can change the resolution
|
|
599
602
|
// of its own deps), but must not erase packages, snapshots, or importer entries that are
|
|
@@ -633,17 +636,24 @@ function mergeGraphLockfileIntoExisting(existing, graph) {
|
|
|
633
636
|
snapshots: mergeEntryRecords(existing.snapshots, graph.snapshots)
|
|
634
637
|
});
|
|
635
638
|
// The merged lockfile mixes resolutions from both sides, so it can only
|
|
636
|
-
// claim the readPackage hooks checksum
|
|
637
|
-
// resolved with. Otherwise drop them, and pnpm resolves
|
|
638
|
-
// trusting the mix. A
|
|
639
|
-
// one) mixes nothing in, so the
|
|
640
|
-
if (hasResolutions(
|
|
639
|
+
// claim the readPackage hooks checksum, the resolution settings and the
|
|
640
|
+
// overrides both were resolved with. Otherwise drop them, and pnpm resolves
|
|
641
|
+
// again instead of trusting the mix. A side that adds no resolutions (an
|
|
642
|
+
// empty or link-only one) mixes nothing in, so the other side's values stand.
|
|
643
|
+
if (!hasResolutions(existing)) {
|
|
644
|
+
for (const key of RESOLUTION_CONTEXT_KEYS) {
|
|
645
|
+
if (graph[key] == null) delete merged[key];else merged[key] = graph[key];
|
|
646
|
+
}
|
|
647
|
+
} else if (hasResolutions(graph)) {
|
|
641
648
|
if (existing.pnpmfileChecksum !== graph.pnpmfileChecksum) {
|
|
642
649
|
delete merged.pnpmfileChecksum;
|
|
643
650
|
}
|
|
644
|
-
if (!
|
|
651
|
+
if (!sameRecords(existing.settings, graph.settings)) {
|
|
645
652
|
delete merged.settings;
|
|
646
653
|
}
|
|
654
|
+
if (!sameRecords(existing.overrides, graph.overrides)) {
|
|
655
|
+
delete merged.overrides;
|
|
656
|
+
}
|
|
647
657
|
}
|
|
648
658
|
if (existingBit || graphBit) {
|
|
649
659
|
merged.bit = _objectSpread(_objectSpread(_objectSpread({}, existingBit), graphBit), {}, {
|
|
@@ -656,10 +666,10 @@ function mergeGraphLockfileIntoExisting(existing, graph) {
|
|
|
656
666
|
function hasResolutions(lockfile) {
|
|
657
667
|
return Object.keys(lockfile.packages ?? {}).length > 0 || Object.keys(lockfile.snapshots ?? {}).length > 0;
|
|
658
668
|
}
|
|
659
|
-
function
|
|
660
|
-
if (
|
|
661
|
-
const keys = new Set([...Object.keys(
|
|
662
|
-
return [...keys].every(key =>
|
|
669
|
+
function sameRecords(record1, record2) {
|
|
670
|
+
if (record1 == null || record2 == null) return record1 === record2;
|
|
671
|
+
const keys = new Set([...Object.keys(record1), ...Object.keys(record2)]);
|
|
672
|
+
return [...keys].every(key => record1[key] === record2[key]);
|
|
663
673
|
}
|
|
664
674
|
function mergeEntryRecords(existing, graph) {
|
|
665
675
|
if (!existing) return graph;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dependencyResolver","data","require","_pkgEntities","_lodash","_legacy","_legacy2","_path","_lockfileDepsGraphConverter","_readConfig","_pnpmPruneModules","_preserveLoadedVirtualStoreDirs","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","loadNodeApi","PnpmPackageManager","constructor","depResolver","logger","cloud","Map","dir","config","warnings","readConfig","fetchRetries","memoize","dependenciesGraphToLockfile","dependenciesGraph","opts","initLockfileDepsGraphConverter","registries","Registries","Registry","generateResolverAndFetcher","resolve","graphLockfile","convertGraphToLockfile","nodeApi","existingLockfile","readLockfile","rootDir","mergedLockfile","mergeGraphLockfileIntoExisting","assign","bit","restoredFromModel","writeLockfile","lockfile","lockfilePath","join","debug","process","env","DEPS_GRAPH_LOG","console","log","install","manifests","installOptions","proxyConfig","networkConfig","profileAsync","readRegistries","getRegistries","readProxyConfig","getProxyConfig","readNetworkConfig","getNetworkConfig","readConfigResult","packageManagerConfigRootDir","rootComponents","rootComponentsForCapsules","cacheDir","error","message","failOnDependenciesGraphError","hidePackageManagerOutput","off","useNesting","extendWithComponentsFromDir","nmSelfReferences","values","manifest","name","devDependencies","modulesManifestCache","delete","hoistPattern","resolveHoistPattern","hoistPatterns","loadedVirtualStoreDirs","snapshotLoadedVirtualStoreDirs","installResult","storeDir","autoInstallPeers","dedupePeers","enableModulesDir","engineStrict","excludeLinksFromLockfile","lockfileOnly","minimumReleaseAge","minimumReleaseAgeExclude","neverBuiltDependencies","allowScripts","dangerouslyAllowAllScripts","nodeLinker","nodeVersion","includeOptionalDeps","ignorePackageManifest","dedupeInjectedDeps","dryRun","overrides","publicHoistPattern","shamefullyHoist","hoistWorkspacePackages","hoistInjectedDependencies","packageImportMethod","enableGlobalVirtualStore","globalVirtualStoreDir","patchedDependencies","packageExtensions","preferOffline","sideEffectsCacheRead","sideEffectsCache","sideEffectsCacheWrite","pnpmHomeDir","updateAll","reportOptions","appendOnly","optimizeReportForNonTerminal","outputStream","BIT_CLI_SERVER_NO_TTY","ServerSendOutStream","undefined","throttleProgress","hideProgressPrefix","hideLifecycleOutput","peerDependencyRules","returnListOfDepsRequiringBuild","forcedHarmonyVersion","dependenciesChanged","rebuild","depsRequiringBuild","on","restoreRemovedLoadedVirtualStoreDirs","getPeerDependencyIssues","lynx","resolveRemoteVersion","packageName","options","fullMetadata","configuredUserAgent","userAgent","username","getCurrentUser","result","explicitSettings","Set","maxSockets","has","networkConcurrency","fetchTimeout","fetchRetryMaxtimeout","fetchRetryMintimeout","strictSsl","strictSSL","ca","cert","key","pnpmRegistry","defaultRegistry","default","uri","alwaysAuth","authHeaderValue","originalAuthType","originalAuthValue","pnpmScoped","omit","scopesRegistries","reduce","acc","scopedRegName","scopedReg","replace","BIT_CLOUD_REGISTRY","getInjectedDirs","componentDir","modulesState","_readModulesManifest","injectedDeps","lockfileDir","get","modulesManifest","readModulesManifest","set","getWorkspaceDepsOfBitRoots","fromEntries","map","getGlobalVirtualStoreDir","pruneModules","pnpmPruneModules","findUsages","depName","trees","getDependents","packages","excludeProjectPatterns","BIT_ROOTS_DIR","manifestFields","applyComponentIdNames","renderDependents","depth","long","calcDependenciesGraph","originalLockfile","importers","originalImporters","componentRootDir","componentRelativeDir","pkgName","component","components","componentImporterId","compRootDir","includes","split","hasComponentRootImporter","Boolean","filterByImporterIds","clonedImporters","importerId","structuredClone","importer","workspacePkgName","componentIdByPkgName","ref","dependencies","optionalDependencies","version","startsWith","depType","partialLockfile","filterLockfileByImporters","graph","convertLockfileToGraph","state","_consumer","exports","hoistPatternsFromBitConfig","hoistPatternFromPnpmConfig","isDefaultHoistPattern","rename","node","componentId","scope","displayName","dependents","existing","graphImporter","entries","existingImporter","existingBit","graphBit","mergedDepsRequiringBuild","Array","from","sort","merged","lockfileVersion","mergeEntryRecords","snapshots","hasResolutions","pnpmfileChecksum","sameLockfileSettings","settings","pruneUnreachableLockfileEntries","settings1","settings2","every","graphEntry","existingEntry","reachablePackages","reachableSnapshots","stack","visit","depPath","current","pop","add","removePeerSuffix","snapshot","dep","pkgId","bitAttrs","suffixStart","indexOf","slice"],"sources":["pnpm.package-manager.ts"],"sourcesContent":["import type { CloudMain } from '@teambit/cloud';\nimport { extendWithComponentsFromDir, BIT_CLOUD_REGISTRY } from '@teambit/dependency-resolver';\nimport type {\n DependencyResolverMain,\n InstallationContext,\n PackageManager,\n PackageManagerInstallOptions,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n PackageManagerProxyConfig,\n PackageManagerNetworkConfig,\n CalcDepsGraphOptions,\n} from '@teambit/dependency-resolver';\nimport { Registries, Registry } from '@teambit/pkg.entities.registry';\nimport type { Logger } from '@teambit/logger';\nimport { type LockfileFile } from '@pnpm/lockfile.types';\nimport { memoize, omit } from 'lodash';\nimport type * as NodeApi from '@pnpm/napi';\nimport type { DependentNode, DependentsTree, PeerDependencyIssuesByProjects, ResolvedConfig } from '@pnpm/napi';\nimport { type ProjectId, type ProjectManifest, type DepPath } from '@pnpm/types';\nimport { BIT_ROOTS_DIR } from '@teambit/legacy.constants';\nimport { ServerSendOutStream } from '@teambit/legacy.logger';\nimport { join } from 'path';\nimport {\n convertLockfileToGraph,\n convertGraphToLockfile,\n init as initLockfileDepsGraphConverter,\n} from './lockfile-deps-graph-converter';\nimport { readConfig } from './read-config';\nimport { pnpmPruneModules } from './pnpm-prune-modules';\nimport {\n snapshotLoadedVirtualStoreDirs,\n restoreRemovedLoadedVirtualStoreDirs,\n} from './preserve-loaded-virtual-store-dirs';\nimport type { RebuildFn } from './lynx';\nimport type * as LynxModule from './lynx';\nimport { type DependenciesGraph } from '@teambit/objects';\n\nexport type { RebuildFn };\n\nexport interface InstallResult {\n dependenciesChanged: boolean;\n rebuild: RebuildFn;\n storeDir: string;\n depsRequiringBuild?: DepPath[];\n}\n\ntype ReadConfigResult = Promise<{ config: ResolvedConfig; warnings: string[] }>;\n\n/**\n * The `.modules.yaml` fields Bit reads. The engine returns the whole\n * manifest; only these are consumed here.\n */\ninterface ModulesManifest {\n injectedDeps?: Record<string, string[]>;\n}\n\n/** One importer entry of a lockfile, in the file's own shape. */\ntype LockfileFileImporter = Record<string, Record<string, { specifier?: string; version?: string }> | undefined>;\n\n/**\n * Required lazily so the native engine binary is not mapped into every\n * `bit` process at startup (same convention as the `./lynx` require sites).\n */\nfunction loadNodeApi(): typeof NodeApi {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n return require('@pnpm/napi') as typeof NodeApi;\n}\n\nexport class PnpmPackageManager implements PackageManager {\n readonly name = 'pnpm';\n readonly supportsDependencyGraphRestoration = true;\n readonly modulesManifestCache: Map<string, ModulesManifest> = new Map();\n private username: string;\n\n private _readConfig = async (dir?: string): ReadConfigResult => {\n const { config, warnings } = await readConfig(dir);\n if (config?.fetchRetries && config?.fetchRetries < 5) {\n config.fetchRetries = 5;\n return { config, warnings };\n }\n\n return { config, warnings };\n };\n\n public readConfig: (dir?: string) => ReadConfigResult = memoize(this._readConfig);\n\n constructor(\n private depResolver: DependencyResolverMain,\n private logger: Logger,\n private cloud: CloudMain\n ) {}\n\n async dependenciesGraphToLockfile(\n dependenciesGraph: DependenciesGraph,\n opts: {\n cacheDir: string;\n manifests: Record<string, ProjectManifest>;\n rootDir: string;\n registries?: Registries;\n proxyConfig?: PackageManagerProxyConfig;\n networkConfig?: PackageManagerNetworkConfig;\n }\n ) {\n await initLockfileDepsGraphConverter();\n const registries = opts.registries ?? new Registries(new Registry('https://node-registry.bit.cloud', false), {});\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { generateResolverAndFetcher } = require('./lynx') as typeof LynxModule;\n const { resolve } = await generateResolverAndFetcher({\n ...opts,\n registries,\n });\n const graphLockfile: LockfileFile = await convertGraphToLockfile(dependenciesGraph, {\n ...opts,\n resolve,\n });\n const nodeApi = loadNodeApi();\n // Merge the graph-derived subset into any existing wanted lockfile rather than\n // overwriting. Only the importers, packages, and snapshots referenced by the\n // imported components' subgraph are re-stated here; every other workspace dep's\n // locked version must be preserved so pnpm doesn't re-resolve it to a newer\n // registry version.\n const existingLockfile = await nodeApi.readLockfile<LockfileFile>({ dir: opts.rootDir });\n const mergedLockfile = existingLockfile\n ? mergeGraphLockfileIntoExisting(existingLockfile, graphLockfile)\n : graphLockfile;\n Object.assign(mergedLockfile, {\n bit: {\n ...(mergedLockfile as LockfileFile & { bit?: Record<string, unknown> }).bit,\n restoredFromModel: true,\n },\n });\n await nodeApi.writeLockfile({ dir: opts.rootDir, lockfile: mergedLockfile });\n const lockfilePath = join(opts.rootDir, 'pnpm-lock.yaml');\n this.logger.debug(`generated a lockfile from dependencies graph at ${lockfilePath}`);\n if (process.env.DEPS_GRAPH_LOG) {\n // eslint-disable-next-line no-console\n console.log(`generated a lockfile from dependencies graph at ${lockfilePath}`);\n }\n }\n\n async install(\n { rootDir, manifests }: InstallationContext,\n installOptions: PackageManagerInstallOptions = {}\n ): Promise<InstallResult> {\n // require it dynamically for performance purpose. the pnpm package require many files - do not move to static import\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { install } = require('./lynx');\n\n const { registries, proxyConfig, networkConfig, config } = await this.logger.profileAsync(\n 'install.pnpm.readConfig',\n async () => {\n const readRegistries = await this.depResolver.getRegistries();\n const readProxyConfig = await this.depResolver.getProxyConfig();\n const readNetworkConfig = await this.depResolver.getNetworkConfig();\n const { config: readConfigResult } = await this.readConfig(installOptions.packageManagerConfigRootDir);\n return {\n registries: readRegistries,\n proxyConfig: readProxyConfig,\n networkConfig: readNetworkConfig,\n config: readConfigResult,\n };\n }\n );\n if (\n installOptions.dependenciesGraph &&\n (installOptions.rootComponents || installOptions.rootComponentsForCapsules)\n ) {\n try {\n await this.dependenciesGraphToLockfile(installOptions.dependenciesGraph, {\n manifests,\n rootDir,\n registries,\n proxyConfig,\n networkConfig,\n cacheDir: config.cacheDir,\n });\n } catch (error) {\n this.logger.error((error as Error).message);\n if (installOptions.failOnDependenciesGraphError) throw error;\n }\n }\n\n this.logger.debug(`running installation in root dir ${rootDir}`);\n this.logger.debug('components manifests for installation', manifests);\n if (!installOptions.hidePackageManagerOutput) {\n // this.logger.setStatusLine('installing dependencies using pnpm');\n // turn off the logger because it interrupts the pnpm output\n // this.logger.console('-------------------------PNPM OUTPUT-------------------------');\n this.logger.off();\n }\n if (!installOptions.useNesting && installOptions.rootComponentsForCapsules) {\n manifests = await extendWithComponentsFromDir(rootDir, manifests);\n }\n if (installOptions.nmSelfReferences) {\n Object.values(manifests).forEach((manifest) => {\n if (manifest.name) {\n manifest.devDependencies = {\n [manifest.name]: 'link:.',\n ...manifest.devDependencies,\n };\n }\n });\n }\n this.modulesManifestCache.delete(rootDir);\n const hoistPattern = resolveHoistPattern(installOptions.hoistPatterns, config.hoistPattern);\n // packages this process already loaded modules from must stay requireable even if this install\n // re-keys them to a new peer hash - see preserve-loaded-virtual-store-dirs.ts\n const loadedVirtualStoreDirs = snapshotLoadedVirtualStoreDirs(rootDir);\n const installResult = await this.logger.profileAsync<{\n dependenciesChanged: boolean;\n rebuild: RebuildFn;\n storeDir: string;\n depsRequiringBuild?: DepPath[];\n }>('install.pnpm.core', () =>\n install(\n rootDir,\n manifests,\n config.storeDir,\n config.cacheDir,\n registries,\n proxyConfig,\n networkConfig,\n {\n autoInstallPeers: installOptions.autoInstallPeers ?? true,\n dedupePeers: installOptions.dedupePeers ?? true,\n enableModulesDir: installOptions.enableModulesDir,\n engineStrict: installOptions.engineStrict ?? config.engineStrict,\n excludeLinksFromLockfile: installOptions.excludeLinksFromLockfile,\n lockfileOnly: installOptions.lockfileOnly,\n minimumReleaseAge: installOptions.minimumReleaseAge,\n minimumReleaseAgeExclude: installOptions.minimumReleaseAgeExclude,\n neverBuiltDependencies: installOptions.neverBuiltDependencies,\n allowScripts: installOptions.allowScripts,\n dangerouslyAllowAllScripts: installOptions.dangerouslyAllowAllScripts,\n nodeLinker: installOptions.nodeLinker,\n nodeVersion: installOptions.nodeVersion ?? config.nodeVersion,\n includeOptionalDeps: installOptions.includeOptionalDeps,\n ignorePackageManifest: installOptions.ignorePackageManifest,\n dedupeInjectedDeps: installOptions.dedupeInjectedDeps ?? false,\n dryRun: installOptions.dependenciesGraph == null && installOptions.dryRun,\n overrides: installOptions.overrides,\n hoistPattern,\n publicHoistPattern: config.shamefullyHoist\n ? ['*']\n : ['@eslint/plugin-*', '*eslint-plugin*', '@prettier/plugin-*', '*prettier-plugin-*'],\n hoistWorkspacePackages: installOptions.hoistWorkspacePackages ?? false,\n hoistInjectedDependencies: installOptions.hoistInjectedDependencies,\n packageImportMethod: installOptions.packageImportMethod ?? config.packageImportMethod,\n enableGlobalVirtualStore: installOptions.enableGlobalVirtualStore,\n globalVirtualStoreDir: installOptions.globalVirtualStoreDir,\n patchedDependencies: installOptions.patchedDependencies,\n packageExtensions: installOptions.packageExtensions,\n preferOffline: installOptions.preferOffline,\n rootComponents: installOptions.rootComponents,\n rootComponentsForCapsules: installOptions.rootComponentsForCapsules,\n sideEffectsCacheRead: installOptions.sideEffectsCache ?? true,\n sideEffectsCacheWrite: installOptions.sideEffectsCache ?? true,\n pnpmHomeDir: config.pnpmHomeDir,\n updateAll: installOptions.updateAll,\n hidePackageManagerOutput: installOptions.hidePackageManagerOutput,\n reportOptions: {\n appendOnly: installOptions.optimizeReportForNonTerminal,\n outputStream: process.env.BIT_CLI_SERVER_NO_TTY ? new ServerSendOutStream() : undefined,\n throttleProgress: installOptions.throttleProgress,\n hideProgressPrefix: installOptions.hideProgressPrefix,\n hideLifecycleOutput: installOptions.hideLifecycleOutput,\n peerDependencyRules: installOptions.peerDependencyRules,\n },\n returnListOfDepsRequiringBuild: installOptions.returnListOfDepsRequiringBuild,\n forcedHarmonyVersion: installOptions.forcedHarmonyVersion,\n },\n this.logger\n )\n );\n const { dependenciesChanged, rebuild, storeDir, depsRequiringBuild } = installResult;\n if (!installOptions.hidePackageManagerOutput) {\n this.logger.on();\n // Make a divider row to improve output\n // this.logger.console('-------------------------END PNPM OUTPUT-------------------------');\n // this.logger.consoleSuccess('installing dependencies using pnpm');\n }\n await restoreRemovedLoadedVirtualStoreDirs(loadedVirtualStoreDirs, this.logger);\n return { dependenciesChanged, rebuild, storeDir, depsRequiringBuild };\n }\n\n async getPeerDependencyIssues(\n rootDir: string,\n manifests: Record<string, ProjectManifest>,\n installOptions: PackageManagerInstallOptions = {}\n ): Promise<PeerDependencyIssuesByProjects> {\n const proxyConfig = await this.depResolver.getProxyConfig();\n const networkConfig = await this.depResolver.getNetworkConfig();\n const registries = await this.depResolver.getRegistries();\n // require it dynamically for performance purpose. the pnpm package require many files - do not move to static import\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const lynx = require('./lynx');\n const { config } = await this.readConfig(installOptions.packageManagerConfigRootDir);\n return lynx.getPeerDependencyIssues(manifests, {\n storeDir: config.storeDir,\n cacheDir: config.cacheDir,\n proxyConfig,\n registries,\n rootDir,\n networkConfig,\n overrides: installOptions.overrides,\n packageImportMethod: installOptions.packageImportMethod ?? config.packageImportMethod,\n });\n }\n\n async resolveRemoteVersion(\n packageName: string,\n options: PackageManagerResolveRemoteVersionOptions\n ): Promise<ResolvedPackageVersion> {\n // require it dynamically for performance purpose. the pnpm package require many files - do not move to static import\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { resolveRemoteVersion } = require('./lynx');\n const registries = await this.depResolver.getRegistries();\n const proxyConfig = await this.depResolver.getProxyConfig();\n const networkConfig = await this.depResolver.getNetworkConfig();\n const { config } = await this.readConfig(options.packageManagerConfigRootDir);\n return resolveRemoteVersion(packageName, {\n rootDir: options.rootDir,\n cacheDir: config.cacheDir,\n registries,\n proxyConfig,\n networkConfig,\n fullMetadata: options.fullMetadata,\n });\n }\n\n async getProxyConfig?(): Promise<PackageManagerProxyConfig> {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { getProxyConfig } = require('./get-proxy-config');\n const { config } = await this.readConfig();\n return getProxyConfig(config);\n }\n\n async getNetworkConfig?(): Promise<PackageManagerNetworkConfig> {\n const { config } = await this.readConfig();\n const configuredUserAgent = config.userAgent;\n if (!configuredUserAgent && !this.username) {\n this.username = (await this.cloud.getCurrentUser())?.username ?? 'anonymous';\n }\n const result: PackageManagerNetworkConfig = {\n userAgent: configuredUserAgent ?? `bit user/${this.username}`,\n };\n // The resolved config carries the engine's defaults for the numeric\n // network settings, and anything returned here overrides Bit's global\n // network config in the dependency resolver's merge, so only settings the\n // user explicitly configured may pass through.\n const explicitSettings = new Set(config.explicitSettings);\n if (config.maxSockets != null && explicitSettings.has('maxSockets')) {\n result.maxSockets = config.maxSockets;\n }\n if (config.networkConcurrency != null && explicitSettings.has('networkConcurrency')) {\n result.networkConcurrency = config.networkConcurrency;\n }\n if (config.fetchRetries != null && explicitSettings.has('fetchRetries')) {\n result.fetchRetries = config.fetchRetries;\n }\n if (config.fetchTimeout != null && explicitSettings.has('fetchTimeout')) {\n result.fetchTimeout = config.fetchTimeout;\n }\n if (config.fetchRetryMaxtimeout != null && explicitSettings.has('fetchRetryMaxtimeout')) {\n result.fetchRetryMaxtimeout = config.fetchRetryMaxtimeout;\n }\n if (config.fetchRetryMintimeout != null && explicitSettings.has('fetchRetryMintimeout')) {\n result.fetchRetryMintimeout = config.fetchRetryMintimeout;\n }\n // Unlike the numeric settings above, strictSsl/ca/cert/key are optional\n // in the engine's projection and populated only when explicitly\n // configured (the engine applies its own defaults at client-build\n // time), so presence is already the explicit gate.\n if (config.strictSsl != null) {\n result.strictSSL = config.strictSsl;\n }\n if (config.ca != null) {\n result.ca = config.ca;\n }\n if (config.cert != null) {\n result.cert = config.cert;\n }\n if (config.key != null) {\n result.key = config.key;\n }\n return result;\n }\n\n async getRegistries(): Promise<Registries> {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { getRegistries } = require('./get-registries');\n const { config } = await this.readConfig();\n const pnpmRegistry = await getRegistries(config);\n const defaultRegistry = new Registry(\n pnpmRegistry.default.uri,\n pnpmRegistry.default.alwaysAuth,\n pnpmRegistry.default.authHeaderValue,\n pnpmRegistry.default.originalAuthType,\n pnpmRegistry.default.originalAuthValue\n );\n\n const pnpmScoped = omit(pnpmRegistry, ['default']);\n const scopesRegistries: Record<string, Registry> = Object.keys(pnpmScoped).reduce((acc, scopedRegName) => {\n const scopedReg = pnpmScoped[scopedRegName];\n const name = scopedRegName.replace('@', '');\n acc[name] = new Registry(\n scopedReg.uri,\n scopedReg.alwaysAuth,\n scopedReg.authHeaderValue,\n scopedReg.originalAuthType,\n scopedReg.originalAuthValue\n );\n return acc;\n }, {});\n\n // Add bit registry server if not exist\n if (!scopesRegistries.bit) {\n scopesRegistries.bit = new Registry(BIT_CLOUD_REGISTRY, true);\n }\n\n return new Registries(defaultRegistry, scopesRegistries);\n }\n\n async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {\n const modulesState = await this._readModulesManifest(rootDir);\n if (modulesState?.injectedDeps == null) return [];\n return modulesState.injectedDeps[`node_modules/${packageName}`] ?? modulesState.injectedDeps[componentDir] ?? [];\n }\n\n async _readModulesManifest(lockfileDir: string): Promise<ModulesManifest | undefined> {\n if (this.modulesManifestCache.has(lockfileDir)) {\n return this.modulesManifestCache.get(lockfileDir);\n }\n const nodeApi = loadNodeApi();\n const modulesManifest = (await nodeApi.readModulesManifest(\n join(lockfileDir, 'node_modules')\n )) as ModulesManifest | null;\n if (modulesManifest) {\n this.modulesManifestCache.set(lockfileDir, modulesManifest);\n }\n return modulesManifest ?? undefined;\n }\n\n getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {\n return Object.fromEntries(manifests.map((manifest) => [manifest.name, 'workspace:*']));\n }\n\n /**\n * pnpm's own shared `<storeDir>/links`.\n *\n * Bit used to carve out a private `<storeDir>/bit-links/<installationId>` root, because the core\n * aspects had to be mirrored at the root of the virtual store for the published envs to reach\n * them, and such a mirror cannot be shared with the pnpm CLI or another bit installation. They now\n * go to the project-local hoisted directory instead (see\n * `DependencyLinker.linkCoreAspectsToHoistedStore`), so nothing is written inside the store and\n * the shared directory can be used - slots are reused across bit versions and with every other\n * pnpm project, upgrades stay incremental, and `pnpm store prune` can account for them.\n */\n async getGlobalVirtualStoreDir({\n packageManagerConfigRootDir,\n }: {\n packageManagerConfigRootDir?: string;\n installationId: string;\n }): Promise<string> {\n const { config } = await this.readConfig(packageManagerConfigRootDir);\n return config.globalVirtualStoreDir ?? join(config.storeDir, 'links');\n }\n\n async pruneModules(rootDir: string): Promise<void> {\n return pnpmPruneModules(rootDir);\n }\n\n async findUsages(depName: string, opts: { lockfileDir: string; depth?: number }): Promise<string> {\n const nodeApi = loadNodeApi();\n const trees = await nodeApi.getDependents({\n dir: opts.lockfileDir,\n packages: [depName],\n // The generated importers under `.bit_roots` wire the workspace\n // together; they are not somewhere a user's dependency comes from.\n excludeProjectPatterns: [`*${BIT_ROOTS_DIR}/*`],\n // The engine walks the lockfile, which knows package names. Ask it\n // for the field that carries the component id so the tree can be\n // rendered in Bit's terms instead.\n manifestFields: ['componentId'],\n });\n applyComponentIdNames(trees);\n return nodeApi.renderDependents(trees, { depth: opts.depth, long: false });\n }\n\n /**\n * Calculating the dependencies graph of a given component using the lockfile.\n */\n async calcDependenciesGraph(opts: CalcDepsGraphOptions): Promise<void> {\n await initLockfileDepsGraphConverter();\n const nodeApi = loadNodeApi();\n const originalLockfile = await nodeApi.readLockfile<LockfileFile>({ dir: opts.rootDir });\n if (!originalLockfile?.importers) {\n return;\n }\n const originalImporters = originalLockfile.importers as Record<string, LockfileFileImporter>;\n for (const { componentRootDir, componentRelativeDir, pkgName, component } of opts.components) {\n const componentImporterId = (componentRelativeDir || '.') as ProjectId;\n let compRootDir: string | undefined;\n if (componentRootDir && !originalImporters[componentRootDir] && componentRootDir.includes('@')) {\n compRootDir = componentRootDir.split('@')[0];\n } else {\n compRootDir = componentRootDir;\n }\n if (!originalImporters[componentImporterId]) {\n continue;\n }\n const hasComponentRootImporter = compRootDir != null && Boolean(originalImporters[compRootDir]);\n const filterByImporterIds = [componentImporterId];\n if (hasComponentRootImporter && compRootDir !== componentImporterId) {\n filterByImporterIds.push(compRootDir as ProjectId);\n }\n // Only clone the importers that will be mutated, reuse the rest of the lockfile as-is\n const clonedImporters: Record<string, LockfileFileImporter> = {};\n for (const importerId of filterByImporterIds) {\n if (originalImporters[importerId]) {\n clonedImporters[importerId] = structuredClone(originalImporters[importerId]);\n }\n }\n const lockfile = {\n ...originalLockfile,\n importers: { ...originalImporters, ...clonedImporters },\n };\n for (const importerId of filterByImporterIds) {\n const importer = lockfile.importers[importerId];\n if (importer == null) continue;\n for (const workspacePkgName of opts.componentIdByPkgName.keys()) {\n if (workspacePkgName === pkgName) continue;\n // In the component's own importer, an injected sibling (a \"file:\"\n // ref) is a real direct dependency of this component — the graph\n // converter rewrites it to the component's semver id. Entries in\n // any other importer (e.g. the capsule/workspace root) merely\n // wire the workspace together and must not leak into this\n // component's graph.\n if (importerId === componentImporterId) {\n const ref =\n importer.dependencies?.[workspacePkgName] ??\n importer.devDependencies?.[workspacePkgName] ??\n importer.optionalDependencies?.[workspacePkgName];\n if (ref?.version?.startsWith('file:')) continue;\n }\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies', 'dependenciesMeta']) {\n delete importer[depType]?.[workspacePkgName];\n }\n }\n }\n // Filters the lockfile so that it only includes packages related to the given component.\n const partialLockfile = nodeApi.filterLockfileByImporters<LockfileFile>(lockfile, filterByImporterIds);\n const graph = convertLockfileToGraph(partialLockfile, {\n ...opts,\n componentRootDir: hasComponentRootImporter ? compRootDir : undefined,\n componentRelativeDir: componentImporterId,\n pkgName,\n });\n component.state._consumer.dependenciesGraph = graph;\n }\n }\n}\n\nfunction resolveHoistPattern(hoistPatternsFromBitConfig?: string[], hoistPatternFromPnpmConfig?: string[]): string[] {\n if (hoistPatternsFromBitConfig == null) return hoistPatternFromPnpmConfig ?? ['*'];\n if (\n isDefaultHoistPattern(hoistPatternsFromBitConfig) &&\n hoistPatternFromPnpmConfig &&\n !isDefaultHoistPattern(hoistPatternFromPnpmConfig)\n ) {\n return hoistPatternFromPnpmConfig;\n }\n return hoistPatternsFromBitConfig;\n}\n\nfunction isDefaultHoistPattern(hoistPattern: string[]): boolean {\n return hoistPattern.length === 1 && hoistPattern[0] === '*';\n}\n\n/**\n * Rename every node the engine resolved to a Bit component after its\n * component id, in place. The engine has no notion of one — it reports the\n * package name from the lockfile — so it is asked for the `componentId`\n * field of each node's manifest and Bit turns that into the display name,\n * which the renderer then prefers over the package name.\n */\nfunction applyComponentIdNames(trees: DependentsTree[]): void {\n const rename = (node: DependentsTree | DependentNode) => {\n const componentId = node.manifest?.componentId as { scope?: string; name?: string } | undefined;\n if (componentId?.scope && componentId.name) {\n node.displayName = `${componentId.scope}/${componentId.name}`;\n }\n node.dependents?.forEach(rename);\n };\n trees.forEach(rename);\n}\n\n// Merge a graph-derived lockfile into an existing wanted lockfile. The graph lockfile is\n// authoritative for keys it contains (a re-imported component can change the resolution\n// of its own deps), but must not erase packages, snapshots, or importer entries that are\n// only known to the existing lockfile. convertGraphToLockfile emits importer entries for\n// every workspace project, but only populates deps for manifests whose keys appear in the\n// graph's root edge — so per-importer overlay (instead of overwrite) is what keeps\n// unrelated workspace importers intact.\n//\n// Packages and snapshots are deep-merged per key so that pnpm-managed metadata the graph\n// doesn't round-trip (e.g. `optional`, `transitivePeerDependencies`, `dev`) survives on\n// entries the graph also knows about.\nexport function mergeGraphLockfileIntoExisting(existing: LockfileFile, graph: LockfileFile): LockfileFile {\n const importers: NonNullable<LockfileFile['importers']> = { ...existing.importers };\n for (const [importerId, graphImporter] of Object.entries(graph.importers ?? {})) {\n const existingImporter = importers[importerId];\n if (!existingImporter) {\n importers[importerId] = graphImporter;\n continue;\n }\n importers[importerId] = {\n ...existingImporter,\n dependencies: { ...existingImporter.dependencies, ...graphImporter.dependencies },\n devDependencies: { ...existingImporter.devDependencies, ...graphImporter.devDependencies },\n optionalDependencies: {\n ...existingImporter.optionalDependencies,\n ...graphImporter.optionalDependencies,\n },\n };\n }\n const existingBit = (existing as LockfileFile & { bit?: { depsRequiringBuild?: string[] } }).bit;\n const graphBit = (graph as LockfileFile & { bit?: { depsRequiringBuild?: string[] } }).bit;\n const mergedDepsRequiringBuild = Array.from(\n new Set([...(existingBit?.depsRequiringBuild ?? []), ...(graphBit?.depsRequiringBuild ?? [])])\n ).sort();\n const merged = {\n ...existing,\n // Keep the existing lockfile's schema version. convertGraphToLockfile hardcodes\n // lockfileVersion: '9.0', so preferring graph.lockfileVersion would silently\n // downgrade workspaces whose pnpm already writes a newer schema and trigger a\n // full rewrite on the next install.\n lockfileVersion: existing.lockfileVersion ?? graph.lockfileVersion,\n importers,\n packages: mergeEntryRecords(existing.packages, graph.packages),\n snapshots: mergeEntryRecords(existing.snapshots, graph.snapshots),\n };\n // The merged lockfile mixes resolutions from both sides, so it can only\n // claim the readPackage hooks checksum and the resolution settings both were\n // resolved with. Otherwise drop them, and pnpm resolves again instead of\n // trusting the mix. A graph that adds no resolutions (an empty or link-only\n // one) mixes nothing in, so the existing lockfile keeps its own.\n if (hasResolutions(graph)) {\n if (existing.pnpmfileChecksum !== graph.pnpmfileChecksum) {\n delete merged.pnpmfileChecksum;\n }\n if (!sameLockfileSettings(existing.settings, graph.settings)) {\n delete merged.settings;\n }\n }\n if (existingBit || graphBit) {\n (merged as LockfileFile & { bit?: Record<string, unknown> }).bit = {\n ...existingBit,\n ...graphBit,\n depsRequiringBuild: mergedDepsRequiringBuild,\n };\n }\n pruneUnreachableLockfileEntries(merged);\n return merged;\n}\n\nfunction hasResolutions(lockfile: LockfileFile): boolean {\n return Object.keys(lockfile.packages ?? {}).length > 0 || Object.keys(lockfile.snapshots ?? {}).length > 0;\n}\n\nfunction sameLockfileSettings(settings1: LockfileFile['settings'], settings2: LockfileFile['settings']): boolean {\n if (settings1 == null || settings2 == null) return settings1 === settings2;\n const keys = new Set([...Object.keys(settings1), ...Object.keys(settings2)]);\n return [...keys].every((key) => settings1[key] === settings2[key]);\n}\n\nfunction mergeEntryRecords<T extends object>(\n existing: Record<string, T> | undefined,\n graph: Record<string, T> | undefined\n): Record<string, T> | undefined {\n if (!existing) return graph;\n if (!graph) return existing;\n const merged: Record<string, T> = { ...existing };\n for (const [key, graphEntry] of Object.entries(graph)) {\n const existingEntry = merged[key];\n merged[key] = existingEntry ? ({ ...existingEntry, ...graphEntry } as T) : graphEntry;\n }\n return merged;\n}\n\nfunction pruneUnreachableLockfileEntries(lockfile: LockfileFile): void {\n const reachablePackages = new Set<string>();\n const reachableSnapshots = new Set<string>();\n // An explicit stack: deep dependency chains would overflow the call\n // stack with a recursive walk.\n const stack: string[] = [];\n const visit = (depPath: string) => {\n stack.push(depPath);\n while (stack.length > 0) {\n const current = stack.pop()!;\n if (reachableSnapshots.has(current)) continue;\n reachableSnapshots.add(current);\n reachablePackages.add(removePeerSuffix(current));\n const snapshot = lockfile.snapshots?.[current];\n if (!snapshot) continue;\n for (const depType of ['dependencies', 'optionalDependencies'] as const) {\n for (const [name, ref] of Object.entries(snapshot[depType] ?? {}) as Array<[string, string]>) {\n if (ref.startsWith('link:') || ref.startsWith('file:')) continue;\n stack.push(`${name}@${ref}`);\n }\n }\n }\n };\n for (const importer of Object.values(lockfile.importers ?? {})) {\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies'] as const) {\n for (const [name, dep] of Object.entries(importer[depType] ?? {}) as Array<\n [string, { version?: string } | string]\n >) {\n const version = typeof dep === 'string' ? dep : dep.version;\n if (!version || version.startsWith('link:') || version.startsWith('file:')) continue;\n visit(`${name}@${version}`);\n }\n }\n }\n for (const pkgId of Object.keys(lockfile.packages ?? {})) {\n if (!reachablePackages.has(pkgId)) {\n delete lockfile.packages![pkgId];\n }\n }\n for (const depPath of Object.keys(lockfile.snapshots ?? {})) {\n if (!reachableSnapshots.has(depPath)) {\n delete lockfile.snapshots![depPath];\n }\n }\n const bitAttrs = (lockfile as LockfileFile & { bit?: { depsRequiringBuild?: string[] } }).bit;\n if (bitAttrs?.depsRequiringBuild) {\n bitAttrs.depsRequiringBuild = bitAttrs.depsRequiringBuild.filter((depPath) =>\n reachablePackages.has(removePeerSuffix(depPath))\n );\n }\n}\n\nfunction removePeerSuffix(depPath: string): string {\n const suffixStart = depPath.indexOf('(');\n return suffixStart === -1 ? depPath : depPath.slice(0, suffixStart);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_dependencyResolver","data","require","_pkgEntities","_lodash","_legacy","_legacy2","_path","_lockfileDepsGraphConverter","_readConfig","_pnpmPruneModules","_preserveLoadedVirtualStoreDirs","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","loadNodeApi","PnpmPackageManager","constructor","depResolver","logger","cloud","Map","dir","config","warnings","readConfig","fetchRetries","memoize","dependenciesGraphToLockfile","dependenciesGraph","opts","initLockfileDepsGraphConverter","registries","Registries","Registry","generateResolverAndFetcher","resolve","graphLockfile","convertGraphToLockfile","nodeApi","existingLockfile","readLockfile","rootDir","mergedLockfile","mergeGraphLockfileIntoExisting","assign","bit","restoredFromModel","writeLockfile","lockfile","lockfilePath","join","debug","process","env","DEPS_GRAPH_LOG","console","log","install","manifests","installOptions","proxyConfig","networkConfig","profileAsync","readRegistries","getRegistries","readProxyConfig","getProxyConfig","readNetworkConfig","getNetworkConfig","readConfigResult","packageManagerConfigRootDir","rootComponents","rootComponentsForCapsules","cacheDir","error","message","failOnDependenciesGraphError","hidePackageManagerOutput","off","useNesting","extendWithComponentsFromDir","nmSelfReferences","values","manifest","name","devDependencies","modulesManifestCache","delete","hoistPattern","resolveHoistPattern","hoistPatterns","loadedVirtualStoreDirs","snapshotLoadedVirtualStoreDirs","installResult","storeDir","autoInstallPeers","dedupePeers","enableModulesDir","engineStrict","excludeLinksFromLockfile","lockfileOnly","minimumReleaseAge","minimumReleaseAgeExclude","neverBuiltDependencies","allowScripts","dangerouslyAllowAllScripts","nodeLinker","nodeVersion","includeOptionalDeps","ignorePackageManifest","dedupeInjectedDeps","dryRun","overrides","publicHoistPattern","shamefullyHoist","hoistWorkspacePackages","hoistInjectedDependencies","packageImportMethod","enableGlobalVirtualStore","globalVirtualStoreDir","patchedDependencies","packageExtensions","preferOffline","sideEffectsCacheRead","sideEffectsCache","sideEffectsCacheWrite","pnpmHomeDir","updateAll","reportOptions","appendOnly","optimizeReportForNonTerminal","outputStream","BIT_CLI_SERVER_NO_TTY","ServerSendOutStream","undefined","throttleProgress","hideProgressPrefix","hideLifecycleOutput","peerDependencyRules","returnListOfDepsRequiringBuild","forcedHarmonyVersion","dependenciesChanged","rebuild","depsRequiringBuild","on","restoreRemovedLoadedVirtualStoreDirs","getPeerDependencyIssues","lynx","resolveRemoteVersion","packageName","options","fullMetadata","configuredUserAgent","userAgent","username","getCurrentUser","result","explicitSettings","Set","maxSockets","has","networkConcurrency","fetchTimeout","fetchRetryMaxtimeout","fetchRetryMintimeout","strictSsl","strictSSL","ca","cert","key","pnpmRegistry","defaultRegistry","default","uri","alwaysAuth","authHeaderValue","originalAuthType","originalAuthValue","pnpmScoped","omit","scopesRegistries","reduce","acc","scopedRegName","scopedReg","replace","BIT_CLOUD_REGISTRY","getInjectedDirs","componentDir","modulesState","_readModulesManifest","injectedDeps","lockfileDir","get","modulesManifest","readModulesManifest","set","getWorkspaceDepsOfBitRoots","fromEntries","map","getGlobalVirtualStoreDir","pruneModules","pnpmPruneModules","findUsages","depName","trees","getDependents","packages","excludeProjectPatterns","BIT_ROOTS_DIR","manifestFields","applyComponentIdNames","renderDependents","depth","long","calcDependenciesGraph","originalLockfile","importers","originalImporters","componentRootDir","componentRelativeDir","pkgName","component","components","componentImporterId","compRootDir","includes","split","hasComponentRootImporter","Boolean","filterByImporterIds","clonedImporters","importerId","structuredClone","importer","workspacePkgName","componentIdByPkgName","ref","dependencies","optionalDependencies","version","startsWith","depType","partialLockfile","filterLockfileByImporters","graph","convertLockfileToGraph","state","_consumer","exports","hoistPatternsFromBitConfig","hoistPatternFromPnpmConfig","isDefaultHoistPattern","rename","node","componentId","scope","displayName","dependents","RESOLUTION_CONTEXT_KEYS","existing","graphImporter","entries","existingImporter","existingBit","graphBit","mergedDepsRequiringBuild","Array","from","sort","merged","lockfileVersion","mergeEntryRecords","snapshots","hasResolutions","pnpmfileChecksum","sameRecords","settings","pruneUnreachableLockfileEntries","record1","record2","every","graphEntry","existingEntry","reachablePackages","reachableSnapshots","stack","visit","depPath","current","pop","add","removePeerSuffix","snapshot","dep","pkgId","bitAttrs","suffixStart","indexOf","slice"],"sources":["pnpm.package-manager.ts"],"sourcesContent":["import type { CloudMain } from '@teambit/cloud';\nimport { extendWithComponentsFromDir, BIT_CLOUD_REGISTRY } from '@teambit/dependency-resolver';\nimport type {\n DependencyResolverMain,\n InstallationContext,\n PackageManager,\n PackageManagerInstallOptions,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n PackageManagerProxyConfig,\n PackageManagerNetworkConfig,\n CalcDepsGraphOptions,\n} from '@teambit/dependency-resolver';\nimport { Registries, Registry } from '@teambit/pkg.entities.registry';\nimport type { Logger } from '@teambit/logger';\nimport { type LockfileFile } from '@pnpm/lockfile.types';\nimport { memoize, omit } from 'lodash';\nimport type * as NodeApi from '@pnpm/napi';\nimport type { DependentNode, DependentsTree, PeerDependencyIssuesByProjects, ResolvedConfig } from '@pnpm/napi';\nimport { type ProjectId, type ProjectManifest, type DepPath } from '@pnpm/types';\nimport { BIT_ROOTS_DIR } from '@teambit/legacy.constants';\nimport { ServerSendOutStream } from '@teambit/legacy.logger';\nimport { join } from 'path';\nimport {\n convertLockfileToGraph,\n convertGraphToLockfile,\n init as initLockfileDepsGraphConverter,\n} from './lockfile-deps-graph-converter';\nimport { readConfig } from './read-config';\nimport { pnpmPruneModules } from './pnpm-prune-modules';\nimport {\n snapshotLoadedVirtualStoreDirs,\n restoreRemovedLoadedVirtualStoreDirs,\n} from './preserve-loaded-virtual-store-dirs';\nimport type { RebuildFn } from './lynx';\nimport type * as LynxModule from './lynx';\nimport { type DependenciesGraph } from '@teambit/objects';\n\nexport type { RebuildFn };\n\nexport interface InstallResult {\n dependenciesChanged: boolean;\n rebuild: RebuildFn;\n storeDir: string;\n depsRequiringBuild?: DepPath[];\n}\n\ntype ReadConfigResult = Promise<{ config: ResolvedConfig; warnings: string[] }>;\n\n/**\n * The `.modules.yaml` fields Bit reads. The engine returns the whole\n * manifest; only these are consumed here.\n */\ninterface ModulesManifest {\n injectedDeps?: Record<string, string[]>;\n}\n\n/** One importer entry of a lockfile, in the file's own shape. */\ntype LockfileFileImporter = Record<string, Record<string, { specifier?: string; version?: string }> | undefined>;\n\n/**\n * Required lazily so the native engine binary is not mapped into every\n * `bit` process at startup (same convention as the `./lynx` require sites).\n */\nfunction loadNodeApi(): typeof NodeApi {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n return require('@pnpm/napi') as typeof NodeApi;\n}\n\nexport class PnpmPackageManager implements PackageManager {\n readonly name = 'pnpm';\n readonly supportsDependencyGraphRestoration = true;\n readonly modulesManifestCache: Map<string, ModulesManifest> = new Map();\n private username: string;\n\n private _readConfig = async (dir?: string): ReadConfigResult => {\n const { config, warnings } = await readConfig(dir);\n if (config?.fetchRetries && config?.fetchRetries < 5) {\n config.fetchRetries = 5;\n return { config, warnings };\n }\n\n return { config, warnings };\n };\n\n public readConfig: (dir?: string) => ReadConfigResult = memoize(this._readConfig);\n\n constructor(\n private depResolver: DependencyResolverMain,\n private logger: Logger,\n private cloud: CloudMain\n ) {}\n\n async dependenciesGraphToLockfile(\n dependenciesGraph: DependenciesGraph,\n opts: {\n cacheDir: string;\n manifests: Record<string, ProjectManifest>;\n rootDir: string;\n registries?: Registries;\n proxyConfig?: PackageManagerProxyConfig;\n networkConfig?: PackageManagerNetworkConfig;\n }\n ) {\n await initLockfileDepsGraphConverter();\n const registries = opts.registries ?? new Registries(new Registry('https://node-registry.bit.cloud', false), {});\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { generateResolverAndFetcher } = require('./lynx') as typeof LynxModule;\n const { resolve } = await generateResolverAndFetcher({\n ...opts,\n registries,\n });\n const graphLockfile: LockfileFile = await convertGraphToLockfile(dependenciesGraph, {\n ...opts,\n resolve,\n });\n const nodeApi = loadNodeApi();\n // Merge the graph-derived subset into any existing wanted lockfile rather than\n // overwriting. Only the importers, packages, and snapshots referenced by the\n // imported components' subgraph are re-stated here; every other workspace dep's\n // locked version must be preserved so pnpm doesn't re-resolve it to a newer\n // registry version.\n const existingLockfile = await nodeApi.readLockfile<LockfileFile>({ dir: opts.rootDir });\n const mergedLockfile = existingLockfile\n ? mergeGraphLockfileIntoExisting(existingLockfile, graphLockfile)\n : graphLockfile;\n Object.assign(mergedLockfile, {\n bit: {\n ...(mergedLockfile as LockfileFile & { bit?: Record<string, unknown> }).bit,\n restoredFromModel: true,\n },\n });\n await nodeApi.writeLockfile({ dir: opts.rootDir, lockfile: mergedLockfile });\n const lockfilePath = join(opts.rootDir, 'pnpm-lock.yaml');\n this.logger.debug(`generated a lockfile from dependencies graph at ${lockfilePath}`);\n if (process.env.DEPS_GRAPH_LOG) {\n // eslint-disable-next-line no-console\n console.log(`generated a lockfile from dependencies graph at ${lockfilePath}`);\n }\n }\n\n async install(\n { rootDir, manifests }: InstallationContext,\n installOptions: PackageManagerInstallOptions = {}\n ): Promise<InstallResult> {\n // require it dynamically for performance purpose. the pnpm package require many files - do not move to static import\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { install } = require('./lynx');\n\n const { registries, proxyConfig, networkConfig, config } = await this.logger.profileAsync(\n 'install.pnpm.readConfig',\n async () => {\n const readRegistries = await this.depResolver.getRegistries();\n const readProxyConfig = await this.depResolver.getProxyConfig();\n const readNetworkConfig = await this.depResolver.getNetworkConfig();\n const { config: readConfigResult } = await this.readConfig(installOptions.packageManagerConfigRootDir);\n return {\n registries: readRegistries,\n proxyConfig: readProxyConfig,\n networkConfig: readNetworkConfig,\n config: readConfigResult,\n };\n }\n );\n if (\n installOptions.dependenciesGraph &&\n (installOptions.rootComponents || installOptions.rootComponentsForCapsules)\n ) {\n try {\n await this.dependenciesGraphToLockfile(installOptions.dependenciesGraph, {\n manifests,\n rootDir,\n registries,\n proxyConfig,\n networkConfig,\n cacheDir: config.cacheDir,\n });\n } catch (error) {\n this.logger.error((error as Error).message);\n if (installOptions.failOnDependenciesGraphError) throw error;\n }\n }\n\n this.logger.debug(`running installation in root dir ${rootDir}`);\n this.logger.debug('components manifests for installation', manifests);\n if (!installOptions.hidePackageManagerOutput) {\n // this.logger.setStatusLine('installing dependencies using pnpm');\n // turn off the logger because it interrupts the pnpm output\n // this.logger.console('-------------------------PNPM OUTPUT-------------------------');\n this.logger.off();\n }\n if (!installOptions.useNesting && installOptions.rootComponentsForCapsules) {\n manifests = await extendWithComponentsFromDir(rootDir, manifests);\n }\n if (installOptions.nmSelfReferences) {\n Object.values(manifests).forEach((manifest) => {\n if (manifest.name) {\n manifest.devDependencies = {\n [manifest.name]: 'link:.',\n ...manifest.devDependencies,\n };\n }\n });\n }\n this.modulesManifestCache.delete(rootDir);\n const hoistPattern = resolveHoistPattern(installOptions.hoistPatterns, config.hoistPattern);\n // packages this process already loaded modules from must stay requireable even if this install\n // re-keys them to a new peer hash - see preserve-loaded-virtual-store-dirs.ts\n const loadedVirtualStoreDirs = snapshotLoadedVirtualStoreDirs(rootDir);\n const installResult = await this.logger.profileAsync<{\n dependenciesChanged: boolean;\n rebuild: RebuildFn;\n storeDir: string;\n depsRequiringBuild?: DepPath[];\n }>('install.pnpm.core', () =>\n install(\n rootDir,\n manifests,\n config.storeDir,\n config.cacheDir,\n registries,\n proxyConfig,\n networkConfig,\n {\n autoInstallPeers: installOptions.autoInstallPeers ?? true,\n dedupePeers: installOptions.dedupePeers ?? true,\n enableModulesDir: installOptions.enableModulesDir,\n engineStrict: installOptions.engineStrict ?? config.engineStrict,\n excludeLinksFromLockfile: installOptions.excludeLinksFromLockfile,\n lockfileOnly: installOptions.lockfileOnly,\n minimumReleaseAge: installOptions.minimumReleaseAge,\n minimumReleaseAgeExclude: installOptions.minimumReleaseAgeExclude,\n neverBuiltDependencies: installOptions.neverBuiltDependencies,\n allowScripts: installOptions.allowScripts,\n dangerouslyAllowAllScripts: installOptions.dangerouslyAllowAllScripts,\n nodeLinker: installOptions.nodeLinker,\n nodeVersion: installOptions.nodeVersion ?? config.nodeVersion,\n includeOptionalDeps: installOptions.includeOptionalDeps,\n ignorePackageManifest: installOptions.ignorePackageManifest,\n dedupeInjectedDeps: installOptions.dedupeInjectedDeps ?? false,\n dryRun: installOptions.dependenciesGraph == null && installOptions.dryRun,\n overrides: installOptions.overrides,\n hoistPattern,\n publicHoistPattern: config.shamefullyHoist\n ? ['*']\n : ['@eslint/plugin-*', '*eslint-plugin*', '@prettier/plugin-*', '*prettier-plugin-*'],\n hoistWorkspacePackages: installOptions.hoistWorkspacePackages ?? false,\n hoistInjectedDependencies: installOptions.hoistInjectedDependencies,\n packageImportMethod: installOptions.packageImportMethod ?? config.packageImportMethod,\n enableGlobalVirtualStore: installOptions.enableGlobalVirtualStore,\n globalVirtualStoreDir: installOptions.globalVirtualStoreDir,\n patchedDependencies: installOptions.patchedDependencies,\n packageExtensions: installOptions.packageExtensions,\n preferOffline: installOptions.preferOffline,\n rootComponents: installOptions.rootComponents,\n rootComponentsForCapsules: installOptions.rootComponentsForCapsules,\n sideEffectsCacheRead: installOptions.sideEffectsCache ?? true,\n sideEffectsCacheWrite: installOptions.sideEffectsCache ?? true,\n pnpmHomeDir: config.pnpmHomeDir,\n updateAll: installOptions.updateAll,\n hidePackageManagerOutput: installOptions.hidePackageManagerOutput,\n reportOptions: {\n appendOnly: installOptions.optimizeReportForNonTerminal,\n outputStream: process.env.BIT_CLI_SERVER_NO_TTY ? new ServerSendOutStream() : undefined,\n throttleProgress: installOptions.throttleProgress,\n hideProgressPrefix: installOptions.hideProgressPrefix,\n hideLifecycleOutput: installOptions.hideLifecycleOutput,\n peerDependencyRules: installOptions.peerDependencyRules,\n },\n returnListOfDepsRequiringBuild: installOptions.returnListOfDepsRequiringBuild,\n forcedHarmonyVersion: installOptions.forcedHarmonyVersion,\n },\n this.logger\n )\n );\n const { dependenciesChanged, rebuild, storeDir, depsRequiringBuild } = installResult;\n if (!installOptions.hidePackageManagerOutput) {\n this.logger.on();\n // Make a divider row to improve output\n // this.logger.console('-------------------------END PNPM OUTPUT-------------------------');\n // this.logger.consoleSuccess('installing dependencies using pnpm');\n }\n await restoreRemovedLoadedVirtualStoreDirs(loadedVirtualStoreDirs, this.logger);\n return { dependenciesChanged, rebuild, storeDir, depsRequiringBuild };\n }\n\n async getPeerDependencyIssues(\n rootDir: string,\n manifests: Record<string, ProjectManifest>,\n installOptions: PackageManagerInstallOptions = {}\n ): Promise<PeerDependencyIssuesByProjects> {\n const proxyConfig = await this.depResolver.getProxyConfig();\n const networkConfig = await this.depResolver.getNetworkConfig();\n const registries = await this.depResolver.getRegistries();\n // require it dynamically for performance purpose. the pnpm package require many files - do not move to static import\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const lynx = require('./lynx');\n const { config } = await this.readConfig(installOptions.packageManagerConfigRootDir);\n return lynx.getPeerDependencyIssues(manifests, {\n storeDir: config.storeDir,\n cacheDir: config.cacheDir,\n proxyConfig,\n registries,\n rootDir,\n networkConfig,\n overrides: installOptions.overrides,\n packageImportMethod: installOptions.packageImportMethod ?? config.packageImportMethod,\n });\n }\n\n async resolveRemoteVersion(\n packageName: string,\n options: PackageManagerResolveRemoteVersionOptions\n ): Promise<ResolvedPackageVersion> {\n // require it dynamically for performance purpose. the pnpm package require many files - do not move to static import\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { resolveRemoteVersion } = require('./lynx');\n const registries = await this.depResolver.getRegistries();\n const proxyConfig = await this.depResolver.getProxyConfig();\n const networkConfig = await this.depResolver.getNetworkConfig();\n const { config } = await this.readConfig(options.packageManagerConfigRootDir);\n return resolveRemoteVersion(packageName, {\n rootDir: options.rootDir,\n cacheDir: config.cacheDir,\n registries,\n proxyConfig,\n networkConfig,\n fullMetadata: options.fullMetadata,\n });\n }\n\n async getProxyConfig?(): Promise<PackageManagerProxyConfig> {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { getProxyConfig } = require('./get-proxy-config');\n const { config } = await this.readConfig();\n return getProxyConfig(config);\n }\n\n async getNetworkConfig?(): Promise<PackageManagerNetworkConfig> {\n const { config } = await this.readConfig();\n const configuredUserAgent = config.userAgent;\n if (!configuredUserAgent && !this.username) {\n this.username = (await this.cloud.getCurrentUser())?.username ?? 'anonymous';\n }\n const result: PackageManagerNetworkConfig = {\n userAgent: configuredUserAgent ?? `bit user/${this.username}`,\n };\n // The resolved config carries the engine's defaults for the numeric\n // network settings, and anything returned here overrides Bit's global\n // network config in the dependency resolver's merge, so only settings the\n // user explicitly configured may pass through.\n const explicitSettings = new Set(config.explicitSettings);\n if (config.maxSockets != null && explicitSettings.has('maxSockets')) {\n result.maxSockets = config.maxSockets;\n }\n if (config.networkConcurrency != null && explicitSettings.has('networkConcurrency')) {\n result.networkConcurrency = config.networkConcurrency;\n }\n if (config.fetchRetries != null && explicitSettings.has('fetchRetries')) {\n result.fetchRetries = config.fetchRetries;\n }\n if (config.fetchTimeout != null && explicitSettings.has('fetchTimeout')) {\n result.fetchTimeout = config.fetchTimeout;\n }\n if (config.fetchRetryMaxtimeout != null && explicitSettings.has('fetchRetryMaxtimeout')) {\n result.fetchRetryMaxtimeout = config.fetchRetryMaxtimeout;\n }\n if (config.fetchRetryMintimeout != null && explicitSettings.has('fetchRetryMintimeout')) {\n result.fetchRetryMintimeout = config.fetchRetryMintimeout;\n }\n // Unlike the numeric settings above, strictSsl/ca/cert/key are optional\n // in the engine's projection and populated only when explicitly\n // configured (the engine applies its own defaults at client-build\n // time), so presence is already the explicit gate.\n if (config.strictSsl != null) {\n result.strictSSL = config.strictSsl;\n }\n if (config.ca != null) {\n result.ca = config.ca;\n }\n if (config.cert != null) {\n result.cert = config.cert;\n }\n if (config.key != null) {\n result.key = config.key;\n }\n return result;\n }\n\n async getRegistries(): Promise<Registries> {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const { getRegistries } = require('./get-registries');\n const { config } = await this.readConfig();\n const pnpmRegistry = await getRegistries(config);\n const defaultRegistry = new Registry(\n pnpmRegistry.default.uri,\n pnpmRegistry.default.alwaysAuth,\n pnpmRegistry.default.authHeaderValue,\n pnpmRegistry.default.originalAuthType,\n pnpmRegistry.default.originalAuthValue\n );\n\n const pnpmScoped = omit(pnpmRegistry, ['default']);\n const scopesRegistries: Record<string, Registry> = Object.keys(pnpmScoped).reduce((acc, scopedRegName) => {\n const scopedReg = pnpmScoped[scopedRegName];\n const name = scopedRegName.replace('@', '');\n acc[name] = new Registry(\n scopedReg.uri,\n scopedReg.alwaysAuth,\n scopedReg.authHeaderValue,\n scopedReg.originalAuthType,\n scopedReg.originalAuthValue\n );\n return acc;\n }, {});\n\n // Add bit registry server if not exist\n if (!scopesRegistries.bit) {\n scopesRegistries.bit = new Registry(BIT_CLOUD_REGISTRY, true);\n }\n\n return new Registries(defaultRegistry, scopesRegistries);\n }\n\n async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {\n const modulesState = await this._readModulesManifest(rootDir);\n if (modulesState?.injectedDeps == null) return [];\n return modulesState.injectedDeps[`node_modules/${packageName}`] ?? modulesState.injectedDeps[componentDir] ?? [];\n }\n\n async _readModulesManifest(lockfileDir: string): Promise<ModulesManifest | undefined> {\n if (this.modulesManifestCache.has(lockfileDir)) {\n return this.modulesManifestCache.get(lockfileDir);\n }\n const nodeApi = loadNodeApi();\n const modulesManifest = (await nodeApi.readModulesManifest(\n join(lockfileDir, 'node_modules')\n )) as ModulesManifest | null;\n if (modulesManifest) {\n this.modulesManifestCache.set(lockfileDir, modulesManifest);\n }\n return modulesManifest ?? undefined;\n }\n\n getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {\n return Object.fromEntries(manifests.map((manifest) => [manifest.name, 'workspace:*']));\n }\n\n /**\n * pnpm's own shared `<storeDir>/links`.\n *\n * Bit used to carve out a private `<storeDir>/bit-links/<installationId>` root, because the core\n * aspects had to be mirrored at the root of the virtual store for the published envs to reach\n * them, and such a mirror cannot be shared with the pnpm CLI or another bit installation. They now\n * go to the project-local hoisted directory instead (see\n * `DependencyLinker.linkCoreAspectsToHoistedStore`), so nothing is written inside the store and\n * the shared directory can be used - slots are reused across bit versions and with every other\n * pnpm project, upgrades stay incremental, and `pnpm store prune` can account for them.\n */\n async getGlobalVirtualStoreDir({\n packageManagerConfigRootDir,\n }: {\n packageManagerConfigRootDir?: string;\n installationId: string;\n }): Promise<string> {\n const { config } = await this.readConfig(packageManagerConfigRootDir);\n return config.globalVirtualStoreDir ?? join(config.storeDir, 'links');\n }\n\n async pruneModules(rootDir: string): Promise<void> {\n return pnpmPruneModules(rootDir);\n }\n\n async findUsages(depName: string, opts: { lockfileDir: string; depth?: number }): Promise<string> {\n const nodeApi = loadNodeApi();\n const trees = await nodeApi.getDependents({\n dir: opts.lockfileDir,\n packages: [depName],\n // The generated importers under `.bit_roots` wire the workspace\n // together; they are not somewhere a user's dependency comes from.\n excludeProjectPatterns: [`*${BIT_ROOTS_DIR}/*`],\n // The engine walks the lockfile, which knows package names. Ask it\n // for the field that carries the component id so the tree can be\n // rendered in Bit's terms instead.\n manifestFields: ['componentId'],\n });\n applyComponentIdNames(trees);\n return nodeApi.renderDependents(trees, { depth: opts.depth, long: false });\n }\n\n /**\n * Calculating the dependencies graph of a given component using the lockfile.\n */\n async calcDependenciesGraph(opts: CalcDepsGraphOptions): Promise<void> {\n await initLockfileDepsGraphConverter();\n const nodeApi = loadNodeApi();\n const originalLockfile = await nodeApi.readLockfile<LockfileFile>({ dir: opts.rootDir });\n if (!originalLockfile?.importers) {\n return;\n }\n const originalImporters = originalLockfile.importers as Record<string, LockfileFileImporter>;\n for (const { componentRootDir, componentRelativeDir, pkgName, component } of opts.components) {\n const componentImporterId = (componentRelativeDir || '.') as ProjectId;\n let compRootDir: string | undefined;\n if (componentRootDir && !originalImporters[componentRootDir] && componentRootDir.includes('@')) {\n compRootDir = componentRootDir.split('@')[0];\n } else {\n compRootDir = componentRootDir;\n }\n if (!originalImporters[componentImporterId]) {\n continue;\n }\n const hasComponentRootImporter = compRootDir != null && Boolean(originalImporters[compRootDir]);\n const filterByImporterIds = [componentImporterId];\n if (hasComponentRootImporter && compRootDir !== componentImporterId) {\n filterByImporterIds.push(compRootDir as ProjectId);\n }\n // Only clone the importers that will be mutated, reuse the rest of the lockfile as-is\n const clonedImporters: Record<string, LockfileFileImporter> = {};\n for (const importerId of filterByImporterIds) {\n if (originalImporters[importerId]) {\n clonedImporters[importerId] = structuredClone(originalImporters[importerId]);\n }\n }\n const lockfile = {\n ...originalLockfile,\n importers: { ...originalImporters, ...clonedImporters },\n };\n for (const importerId of filterByImporterIds) {\n const importer = lockfile.importers[importerId];\n if (importer == null) continue;\n for (const workspacePkgName of opts.componentIdByPkgName.keys()) {\n if (workspacePkgName === pkgName) continue;\n // In the component's own importer, an injected sibling (a \"file:\"\n // ref) is a real direct dependency of this component — the graph\n // converter rewrites it to the component's semver id. Entries in\n // any other importer (e.g. the capsule/workspace root) merely\n // wire the workspace together and must not leak into this\n // component's graph.\n if (importerId === componentImporterId) {\n const ref =\n importer.dependencies?.[workspacePkgName] ??\n importer.devDependencies?.[workspacePkgName] ??\n importer.optionalDependencies?.[workspacePkgName];\n if (ref?.version?.startsWith('file:')) continue;\n }\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies', 'dependenciesMeta']) {\n delete importer[depType]?.[workspacePkgName];\n }\n }\n }\n // Filters the lockfile so that it only includes packages related to the given component.\n const partialLockfile = nodeApi.filterLockfileByImporters<LockfileFile>(lockfile, filterByImporterIds);\n const graph = convertLockfileToGraph(partialLockfile, {\n ...opts,\n componentRootDir: hasComponentRootImporter ? compRootDir : undefined,\n componentRelativeDir: componentImporterId,\n pkgName,\n });\n component.state._consumer.dependenciesGraph = graph;\n }\n }\n}\n\nfunction resolveHoistPattern(hoistPatternsFromBitConfig?: string[], hoistPatternFromPnpmConfig?: string[]): string[] {\n if (hoistPatternsFromBitConfig == null) return hoistPatternFromPnpmConfig ?? ['*'];\n if (\n isDefaultHoistPattern(hoistPatternsFromBitConfig) &&\n hoistPatternFromPnpmConfig &&\n !isDefaultHoistPattern(hoistPatternFromPnpmConfig)\n ) {\n return hoistPatternFromPnpmConfig;\n }\n return hoistPatternsFromBitConfig;\n}\n\nfunction isDefaultHoistPattern(hoistPattern: string[]): boolean {\n return hoistPattern.length === 1 && hoistPattern[0] === '*';\n}\n\n/**\n * Rename every node the engine resolved to a Bit component after its\n * component id, in place. The engine has no notion of one — it reports the\n * package name from the lockfile — so it is asked for the `componentId`\n * field of each node's manifest and Bit turns that into the display name,\n * which the renderer then prefers over the package name.\n */\nfunction applyComponentIdNames(trees: DependentsTree[]): void {\n const rename = (node: DependentsTree | DependentNode) => {\n const componentId = node.manifest?.componentId as { scope?: string; name?: string } | undefined;\n if (componentId?.scope && componentId.name) {\n node.displayName = `${componentId.scope}/${componentId.name}`;\n }\n node.dependents?.forEach(rename);\n };\n trees.forEach(rename);\n}\n\n/** The lockfile fields that say what its resolutions were resolved with. */\nconst RESOLUTION_CONTEXT_KEYS = ['pnpmfileChecksum', 'settings', 'overrides'] as const;\n\n// Merge a graph-derived lockfile into an existing wanted lockfile. The graph lockfile is\n// authoritative for keys it contains (a re-imported component can change the resolution\n// of its own deps), but must not erase packages, snapshots, or importer entries that are\n// only known to the existing lockfile. convertGraphToLockfile emits importer entries for\n// every workspace project, but only populates deps for manifests whose keys appear in the\n// graph's root edge — so per-importer overlay (instead of overwrite) is what keeps\n// unrelated workspace importers intact.\n//\n// Packages and snapshots are deep-merged per key so that pnpm-managed metadata the graph\n// doesn't round-trip (e.g. `optional`, `transitivePeerDependencies`, `dev`) survives on\n// entries the graph also knows about.\nexport function mergeGraphLockfileIntoExisting(existing: LockfileFile, graph: LockfileFile): LockfileFile {\n const importers: NonNullable<LockfileFile['importers']> = { ...existing.importers };\n for (const [importerId, graphImporter] of Object.entries(graph.importers ?? {})) {\n const existingImporter = importers[importerId];\n if (!existingImporter) {\n importers[importerId] = graphImporter;\n continue;\n }\n importers[importerId] = {\n ...existingImporter,\n dependencies: { ...existingImporter.dependencies, ...graphImporter.dependencies },\n devDependencies: { ...existingImporter.devDependencies, ...graphImporter.devDependencies },\n optionalDependencies: {\n ...existingImporter.optionalDependencies,\n ...graphImporter.optionalDependencies,\n },\n };\n }\n const existingBit = (existing as LockfileFile & { bit?: { depsRequiringBuild?: string[] } }).bit;\n const graphBit = (graph as LockfileFile & { bit?: { depsRequiringBuild?: string[] } }).bit;\n const mergedDepsRequiringBuild = Array.from(\n new Set([...(existingBit?.depsRequiringBuild ?? []), ...(graphBit?.depsRequiringBuild ?? [])])\n ).sort();\n const merged = {\n ...existing,\n // Keep the existing lockfile's schema version. convertGraphToLockfile hardcodes\n // lockfileVersion: '9.0', so preferring graph.lockfileVersion would silently\n // downgrade workspaces whose pnpm already writes a newer schema and trigger a\n // full rewrite on the next install.\n lockfileVersion: existing.lockfileVersion ?? graph.lockfileVersion,\n importers,\n packages: mergeEntryRecords(existing.packages, graph.packages),\n snapshots: mergeEntryRecords(existing.snapshots, graph.snapshots),\n };\n // The merged lockfile mixes resolutions from both sides, so it can only\n // claim the readPackage hooks checksum, the resolution settings and the\n // overrides both were resolved with. Otherwise drop them, and pnpm resolves\n // again instead of trusting the mix. A side that adds no resolutions (an\n // empty or link-only one) mixes nothing in, so the other side's values stand.\n if (!hasResolutions(existing)) {\n for (const key of RESOLUTION_CONTEXT_KEYS) {\n if (graph[key] == null) delete merged[key];\n else merged[key] = graph[key] as any;\n }\n } else if (hasResolutions(graph)) {\n if (existing.pnpmfileChecksum !== graph.pnpmfileChecksum) {\n delete merged.pnpmfileChecksum;\n }\n if (!sameRecords(existing.settings, graph.settings)) {\n delete merged.settings;\n }\n if (!sameRecords(existing.overrides, graph.overrides)) {\n delete merged.overrides;\n }\n }\n if (existingBit || graphBit) {\n (merged as LockfileFile & { bit?: Record<string, unknown> }).bit = {\n ...existingBit,\n ...graphBit,\n depsRequiringBuild: mergedDepsRequiringBuild,\n };\n }\n pruneUnreachableLockfileEntries(merged);\n return merged;\n}\n\nfunction hasResolutions(lockfile: LockfileFile): boolean {\n return Object.keys(lockfile.packages ?? {}).length > 0 || Object.keys(lockfile.snapshots ?? {}).length > 0;\n}\n\nfunction sameRecords(record1?: object, record2?: object): boolean {\n if (record1 == null || record2 == null) return record1 === record2;\n const keys = new Set([...Object.keys(record1), ...Object.keys(record2)]);\n return [...keys].every((key) => record1[key] === record2[key]);\n}\n\nfunction mergeEntryRecords<T extends object>(\n existing: Record<string, T> | undefined,\n graph: Record<string, T> | undefined\n): Record<string, T> | undefined {\n if (!existing) return graph;\n if (!graph) return existing;\n const merged: Record<string, T> = { ...existing };\n for (const [key, graphEntry] of Object.entries(graph)) {\n const existingEntry = merged[key];\n merged[key] = existingEntry ? ({ ...existingEntry, ...graphEntry } as T) : graphEntry;\n }\n return merged;\n}\n\nfunction pruneUnreachableLockfileEntries(lockfile: LockfileFile): void {\n const reachablePackages = new Set<string>();\n const reachableSnapshots = new Set<string>();\n // An explicit stack: deep dependency chains would overflow the call\n // stack with a recursive walk.\n const stack: string[] = [];\n const visit = (depPath: string) => {\n stack.push(depPath);\n while (stack.length > 0) {\n const current = stack.pop()!;\n if (reachableSnapshots.has(current)) continue;\n reachableSnapshots.add(current);\n reachablePackages.add(removePeerSuffix(current));\n const snapshot = lockfile.snapshots?.[current];\n if (!snapshot) continue;\n for (const depType of ['dependencies', 'optionalDependencies'] as const) {\n for (const [name, ref] of Object.entries(snapshot[depType] ?? {}) as Array<[string, string]>) {\n if (ref.startsWith('link:') || ref.startsWith('file:')) continue;\n stack.push(`${name}@${ref}`);\n }\n }\n }\n };\n for (const importer of Object.values(lockfile.importers ?? {})) {\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies'] as const) {\n for (const [name, dep] of Object.entries(importer[depType] ?? {}) as Array<\n [string, { version?: string } | string]\n >) {\n const version = typeof dep === 'string' ? dep : dep.version;\n if (!version || version.startsWith('link:') || version.startsWith('file:')) continue;\n visit(`${name}@${version}`);\n }\n }\n }\n for (const pkgId of Object.keys(lockfile.packages ?? {})) {\n if (!reachablePackages.has(pkgId)) {\n delete lockfile.packages![pkgId];\n }\n }\n for (const depPath of Object.keys(lockfile.snapshots ?? {})) {\n if (!reachableSnapshots.has(depPath)) {\n delete lockfile.snapshots![depPath];\n }\n }\n const bitAttrs = (lockfile as LockfileFile & { bit?: { depsRequiringBuild?: string[] } }).bit;\n if (bitAttrs?.depsRequiringBuild) {\n bitAttrs.depsRequiringBuild = bitAttrs.depsRequiringBuild.filter((depPath) =>\n reachablePackages.has(removePeerSuffix(depPath))\n );\n }\n}\n\nfunction removePeerSuffix(depPath: string): string {\n const suffixStart = depPath.indexOf('(');\n return suffixStart === -1 ? depPath : depPath.slice(0, suffixStart);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -102,42 +102,83 @@ describe('mergeGraphLockfileIntoExisting', () => {
|
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
|
+
/** An existing lockfile that holds resolutions of its own. */
|
|
106
|
+
function existing(existingLockfile) {
|
|
107
|
+
return _objectSpread(_objectSpread({}, existingLockfile), {}, {
|
|
108
|
+
packages: {
|
|
109
|
+
'bar@1.0.0': {
|
|
110
|
+
resolution: {
|
|
111
|
+
integrity: 'sha512-b'
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
105
117
|
const settings = {
|
|
106
118
|
autoInstallPeers: true,
|
|
107
119
|
dedupePeers: true
|
|
108
120
|
};
|
|
109
121
|
it('keeps the pnpmfileChecksum both lockfiles were resolved with', () => {
|
|
110
|
-
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(lockfile('bit-1'), resolved(lockfile('bit-1')));
|
|
122
|
+
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(existing(lockfile('bit-1')), resolved(lockfile('bit-1')));
|
|
111
123
|
(0, _chai().expect)(merged.pnpmfileChecksum).to.equal('bit-1');
|
|
112
124
|
});
|
|
113
125
|
it('drops a pnpmfileChecksum the lockfiles disagree on', () => {
|
|
114
|
-
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(lockfile('bit-1'), resolved(lockfile('bit-2')))).not.to.have.property('pnpmfileChecksum');
|
|
115
|
-
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(lockfile('bit-1'), resolved(lockfile()))).not.to.have.property('pnpmfileChecksum');
|
|
126
|
+
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(existing(lockfile('bit-1')), resolved(lockfile('bit-2')))).not.to.have.property('pnpmfileChecksum');
|
|
127
|
+
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(existing(lockfile('bit-1')), resolved(lockfile()))).not.to.have.property('pnpmfileChecksum');
|
|
116
128
|
});
|
|
117
129
|
it('keeps the settings both lockfiles were resolved under', () => {
|
|
118
|
-
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
130
|
+
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(existing(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
119
131
|
settings
|
|
120
|
-
}), resolved(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
132
|
+
})), resolved(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
121
133
|
settings: _objectSpread({}, settings)
|
|
122
134
|
})));
|
|
123
135
|
(0, _chai().expect)(merged.settings).to.eql(settings);
|
|
124
136
|
});
|
|
125
137
|
it('drops settings the lockfiles disagree on', () => {
|
|
126
|
-
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
138
|
+
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(existing(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
127
139
|
settings
|
|
128
|
-
}), resolved(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
140
|
+
})), resolved(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
129
141
|
settings: _objectSpread(_objectSpread({}, settings), {}, {
|
|
130
142
|
dedupePeers: false
|
|
131
143
|
})
|
|
132
144
|
})))).not.to.have.property('settings');
|
|
133
|
-
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
145
|
+
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(existing(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
134
146
|
settings
|
|
135
|
-
}), resolved(lockfile()))).not.to.have.property('settings');
|
|
147
|
+
})), resolved(lockfile()))).not.to.have.property('settings');
|
|
148
|
+
});
|
|
149
|
+
it('keeps the overrides both lockfiles were resolved with, and drops ones they disagree on', () => {
|
|
150
|
+
const overrides = {
|
|
151
|
+
'@teambit/legacy@*': '-'
|
|
152
|
+
};
|
|
153
|
+
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(existing(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
154
|
+
overrides
|
|
155
|
+
})), resolved(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
156
|
+
overrides: _objectSpread({}, overrides)
|
|
157
|
+
}))).overrides).to.eql(overrides);
|
|
158
|
+
(0, _chai().expect)((0, _pnpm().mergeGraphLockfileIntoExisting)(existing(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
159
|
+
overrides
|
|
160
|
+
})), resolved(lockfile()))).not.to.have.property('overrides');
|
|
161
|
+
});
|
|
162
|
+
it("takes the graph's checksum, settings and overrides when the existing lockfile has no resolutions", () => {
|
|
163
|
+
const overrides = {
|
|
164
|
+
'@teambit/legacy@*': '-'
|
|
165
|
+
};
|
|
166
|
+
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(_objectSpread(_objectSpread({}, lockfile('hooks-1')), {}, {
|
|
167
|
+
settings: {
|
|
168
|
+
dedupePeers: false
|
|
169
|
+
}
|
|
170
|
+
}), resolved(_objectSpread(_objectSpread({}, lockfile()), {}, {
|
|
171
|
+
settings,
|
|
172
|
+
overrides
|
|
173
|
+
})));
|
|
174
|
+
(0, _chai().expect)(merged).not.to.have.property('pnpmfileChecksum');
|
|
175
|
+
(0, _chai().expect)(merged.settings).to.eql(settings);
|
|
176
|
+
(0, _chai().expect)(merged.overrides).to.eql(overrides);
|
|
136
177
|
});
|
|
137
178
|
it('keeps the checksum and settings of the existing lockfile when the graph adds no resolutions', () => {
|
|
138
|
-
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(_objectSpread(_objectSpread({}, lockfile('bit-1')), {}, {
|
|
179
|
+
const merged = (0, _pnpm().mergeGraphLockfileIntoExisting)(existing(_objectSpread(_objectSpread({}, lockfile('bit-1')), {}, {
|
|
139
180
|
settings
|
|
140
|
-
}), lockfile());
|
|
181
|
+
})), lockfile());
|
|
141
182
|
(0, _chai().expect)(merged.pnpmfileChecksum).to.equal('bit-1');
|
|
142
183
|
(0, _chai().expect)(merged.settings).to.eql(settings);
|
|
143
184
|
});
|