isolate-package 1.33.0-0 → 1.33.0

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.
@@ -15,17 +15,9 @@ vi.mock("fs-extra", () => ({
15
15
  vi.mock("~/lib/utils", () => ({
16
16
  filterPatchedDependencies: vi.fn(),
17
17
  getIsolateRelativeLogPath: vi.fn((p: string) => p),
18
- getPackageName: vi.fn((spec: string) => {
19
- if (spec.startsWith("@")) {
20
- const parts = spec.split("@");
21
- return `@${parts[1] ?? ""}`;
22
- }
23
- return spec.split("@")[0] ?? "";
24
- }),
25
18
  getRootRelativeLogPath: vi.fn((p: string) => p),
26
19
  isRushWorkspace: vi.fn(() => false),
27
20
  readTypedJson: vi.fn(),
28
- readTypedJsonSync: vi.fn(),
29
21
  readTypedYamlSync: vi.fn(),
30
22
  }));
31
23
 
@@ -37,25 +29,16 @@ vi.mock("~/lib/package-manager", () => ({
37
29
  /** Mock the pnpm lockfile readers */
38
30
  vi.mock("pnpm_lockfile_file_v8", () => ({
39
31
  readWantedLockfile: vi.fn(() => Promise.resolve(null)),
40
- getLockfileImporterId: vi.fn(
41
- (root: string, dir: string) => dir.replace(`${root}/`, "") || ".",
42
- ),
43
32
  }));
44
33
 
45
34
  vi.mock("pnpm_lockfile_file_v9", () => ({
46
35
  readWantedLockfile: vi.fn(() => Promise.resolve(null)),
47
- getLockfileImporterId: vi.fn(
48
- (root: string, dir: string) => dir.replace(`${root}/`, "") || ".",
49
- ),
50
36
  }));
51
37
 
52
38
  const fs = vi.mocked((await import("fs-extra")).default);
53
39
  const { filterPatchedDependencies, readTypedJson, readTypedYamlSync } =
54
40
  vi.mocked(await import("~/lib/utils"));
55
41
  const { usePackageManager } = vi.mocked(await import("~/lib/package-manager"));
56
- const { readWantedLockfile: readWantedLockfile_v9 } = vi.mocked(
57
- await import("pnpm_lockfile_file_v9"),
58
- );
59
42
 
60
43
  describe("copyPatches", () => {
61
44
  beforeEach(() => {
@@ -82,8 +65,6 @@ describe("copyPatches", () => {
82
65
 
83
66
  const result = await copyPatches({
84
67
  workspaceRootDir: "/workspace",
85
- targetPackageDir: "/workspace/packages/test",
86
- internalDepPackageNames: [],
87
68
  targetPackageManifest: { name: "test", version: "1.0.0" },
88
69
  isolateDir: "/workspace/isolate",
89
70
  packagesRegistry: {},
@@ -145,8 +126,6 @@ describe("copyPatches", () => {
145
126
 
146
127
  const result = await copyPatches({
147
128
  workspaceRootDir: "/workspace",
148
- targetPackageDir: "/workspace/packages/test",
149
- internalDepPackageNames: [],
150
129
  targetPackageManifest: { name: "test", version: "1.0.0" },
151
130
  isolateDir: "/workspace/isolate",
152
131
  packagesRegistry: {},
@@ -167,8 +146,6 @@ describe("copyPatches", () => {
167
146
 
168
147
  const result = await copyPatches({
169
148
  workspaceRootDir: "/workspace",
170
- targetPackageDir: "/workspace/packages/test",
171
- internalDepPackageNames: [],
172
149
  targetPackageManifest: { name: "test", version: "1.0.0" },
173
150
  isolateDir: "/workspace/isolate",
174
151
  packagesRegistry: {},
@@ -199,8 +176,6 @@ describe("copyPatches", () => {
199
176
 
200
177
  const result = await copyPatches({
201
178
  workspaceRootDir: "/workspace",
202
- targetPackageDir: "/workspace/packages/test",
203
- internalDepPackageNames: [],
204
179
  targetPackageManifest: targetManifest,
205
180
  isolateDir: "/workspace/isolate",
206
181
  packagesRegistry: {},
@@ -239,8 +214,6 @@ describe("copyPatches", () => {
239
214
 
240
215
  const result = await copyPatches({
241
216
  workspaceRootDir: "/workspace",
242
- targetPackageDir: "/workspace/packages/test",
243
- internalDepPackageNames: [],
244
217
  targetPackageManifest: targetManifest,
245
218
  isolateDir: "/workspace/isolate",
246
219
  packagesRegistry: {},
@@ -283,8 +256,6 @@ describe("copyPatches", () => {
283
256
 
284
257
  const result = await copyPatches({
285
258
  workspaceRootDir: "/workspace",
286
- targetPackageDir: "/workspace/packages/test",
287
- internalDepPackageNames: [],
288
259
  targetPackageManifest: targetManifest,
289
260
  isolateDir: "/workspace/isolate",
290
261
  packagesRegistry: {},
@@ -316,8 +287,6 @@ describe("copyPatches", () => {
316
287
 
317
288
  const result = await copyPatches({
318
289
  workspaceRootDir: "/workspace",
319
- targetPackageDir: "/workspace/packages/test",
320
- internalDepPackageNames: [],
321
290
  targetPackageManifest: targetManifest,
322
291
  isolateDir: "/workspace/isolate",
323
292
  packagesRegistry: {},
@@ -352,8 +321,6 @@ describe("copyPatches", () => {
352
321
 
353
322
  const result = await copyPatches({
354
323
  workspaceRootDir: "/workspace",
355
- targetPackageDir: "/workspace/packages/test",
356
- internalDepPackageNames: [],
357
324
  targetPackageManifest: targetManifest,
358
325
  isolateDir: "/workspace/isolate",
359
326
  packagesRegistry: {},
@@ -397,8 +364,6 @@ describe("copyPatches", () => {
397
364
 
398
365
  const result = await copyPatches({
399
366
  workspaceRootDir: "/workspace",
400
- targetPackageDir: "/workspace/packages/test",
401
- internalDepPackageNames: [],
402
367
  targetPackageManifest: targetManifest,
403
368
  isolateDir: "/workspace/isolate",
404
369
  packagesRegistry: {},
@@ -444,8 +409,6 @@ describe("copyPatches", () => {
444
409
 
445
410
  const result = await copyPatches({
446
411
  workspaceRootDir: "/workspace",
447
- targetPackageDir: "/workspace/packages/test",
448
- internalDepPackageNames: [],
449
412
  targetPackageManifest: targetManifest,
450
413
  isolateDir: "/workspace/isolate",
451
414
  packagesRegistry: {},
@@ -493,8 +456,6 @@ describe("copyPatches", () => {
493
456
 
494
457
  const result = await copyPatches({
495
458
  workspaceRootDir: "/workspace",
496
- targetPackageDir: "/workspace/packages/test",
497
- internalDepPackageNames: [],
498
459
  targetPackageManifest: targetManifest,
499
460
  isolateDir: "/workspace/isolate",
500
461
  packagesRegistry: {},
@@ -548,8 +509,6 @@ describe("copyPatches", () => {
548
509
 
549
510
  const result = await copyPatches({
550
511
  workspaceRootDir: "/workspace",
551
- targetPackageDir: "/workspace/packages/test",
552
- internalDepPackageNames: [],
553
512
  targetPackageManifest: consumerManifest,
554
513
  isolateDir: "/workspace/isolate",
555
514
  packagesRegistry: {
@@ -577,88 +536,4 @@ describe("copyPatches", () => {
577
536
  expect(reachable!.has("firebase-package")).toBe(true);
578
537
  expect(reachable!.has("tslib")).toBe(true);
579
538
  });
580
-
581
- it("should pick up deep external-to-external transitives from the pnpm lockfile (regression: issue #167 follow-up)", async () => {
582
- /**
583
- * Target depends on `@react-pdf/renderer` (external). The patched
584
- * `@react-pdf/render` is only a transitive of `@react-pdf/renderer`. The
585
- * manifest walker can't see it because it can't open external manifests,
586
- * so the lockfile walker has to surface it.
587
- */
588
- const targetManifest: PackageManifest = {
589
- name: "consumer",
590
- version: "1.0.0",
591
- dependencies: { "@react-pdf/renderer": "^4.0.0" },
592
- };
593
-
594
- readTypedYamlSync.mockReturnValue({
595
- patchedDependencies: {
596
- "@react-pdf/render@4.3.0": "patches/@react-pdf__render@4.3.0.patch",
597
- },
598
- });
599
- readTypedJson.mockResolvedValue({
600
- name: "root",
601
- version: "1.0.0",
602
- } as PackageManifest);
603
-
604
- filterPatchedDependencies.mockReturnValue({
605
- "@react-pdf/render@4.3.0": "patches/@react-pdf__render@4.3.0.patch",
606
- });
607
-
608
- fs.existsSync.mockReturnValue(true);
609
-
610
- usePackageManager.mockReturnValue({
611
- name: "pnpm",
612
- majorVersion: 9,
613
- version: "9.0.0",
614
- packageManagerString: "pnpm@9.0.0",
615
- });
616
-
617
- /**
618
- * Fake v9 lockfile: target importer depends on @react-pdf/renderer, which
619
- * has @react-pdf/render as its only resolved dep.
620
- */
621
- readWantedLockfile_v9.mockResolvedValue({
622
- lockfileVersion: "9.0",
623
- importers: {
624
- "packages/consumer": {
625
- specifiers: { "@react-pdf/renderer": "^4.0.0" },
626
- dependencies: { "@react-pdf/renderer": "4.0.0" },
627
- },
628
- },
629
- packages: {
630
- "@react-pdf/renderer@4.0.0": {
631
- resolution: { integrity: "sha512-x" },
632
- dependencies: { "@react-pdf/render": "4.3.0" },
633
- },
634
- "@react-pdf/render@4.3.0": {
635
- resolution: { integrity: "sha512-y" },
636
- },
637
- },
638
- } as unknown as Awaited<ReturnType<typeof readWantedLockfile_v9>>);
639
-
640
- const result = await copyPatches({
641
- workspaceRootDir: "/workspace",
642
- targetPackageDir: "/workspace/packages/consumer",
643
- internalDepPackageNames: [],
644
- targetPackageManifest: targetManifest,
645
- isolateDir: "/workspace/isolate",
646
- packagesRegistry: {},
647
- includeDevDependencies: false,
648
- });
649
-
650
- expect(result).toEqual({
651
- "@react-pdf/render@4.3.0": {
652
- path: "patches/@react-pdf__render@4.3.0.patch",
653
- hash: "",
654
- },
655
- });
656
-
657
- const filterCall = filterPatchedDependencies.mock.calls[0]?.[0];
658
- expect(filterCall).toBeDefined();
659
- const reachable = filterCall!.reachableDependencyNames;
660
- expect(reachable).toBeInstanceOf(Set);
661
- expect(reachable!.has("@react-pdf/renderer")).toBe(true);
662
- expect(reachable!.has("@react-pdf/render")).toBe(true);
663
- });
664
539
  });
@@ -18,29 +18,23 @@ import {
18
18
  readTypedJson,
19
19
  readTypedYamlSync,
20
20
  } from "~/lib/utils";
21
- import { collectInstalledNamesFromBunLockfile } from "./collect-installed-names-bun";
22
- import { collectInstalledNamesFromPnpmLockfile } from "./collect-installed-names-pnpm";
23
21
 
24
22
  export async function copyPatches({
25
23
  workspaceRootDir,
26
- targetPackageDir,
27
24
  targetPackageManifest,
28
25
  packagesRegistry,
29
- internalDepPackageNames,
30
26
  isolateDir,
31
27
  includeDevDependencies,
32
28
  }: {
33
29
  workspaceRootDir: string;
34
- targetPackageDir: string;
35
30
  targetPackageManifest: PackageManifest;
36
31
  packagesRegistry: PackagesRegistry;
37
- internalDepPackageNames: string[];
38
32
  isolateDir: string;
39
33
  includeDevDependencies: boolean;
40
34
  }): Promise<Record<string, PatchFile>> {
41
35
  const log = useLogger();
42
36
 
43
- const { name: packageManagerName, majorVersion } = usePackageManager();
37
+ const { name: packageManagerName } = usePackageManager();
44
38
 
45
39
  let patchedDependencies: Record<string, string> | undefined;
46
40
 
@@ -108,37 +102,6 @@ export async function copyPatches({
108
102
  includeDevDependencies,
109
103
  });
110
104
 
111
- /**
112
- * Manifest-based reachability misses external→external transitives because
113
- * external manifests aren't loaded here. Walk the package-manager's
114
- * lockfile to also pick up those names, so a patch for a deeply-nested
115
- * external dep (e.g. `@react-pdf/render` reached via `@react-pdf/renderer`)
116
- * survives isolation.
117
- */
118
- const lockfileInstalledNames =
119
- packageManagerName === "pnpm"
120
- ? await collectInstalledNamesFromPnpmLockfile({
121
- workspaceRootDir,
122
- targetPackageDir,
123
- internalDepPackageNames,
124
- packagesRegistry,
125
- majorVersion,
126
- includeDevDependencies,
127
- })
128
- : packageManagerName === "bun"
129
- ? collectInstalledNamesFromBunLockfile({
130
- workspaceRootDir,
131
- targetPackageDir,
132
- internalDepPackageNames,
133
- packagesRegistry,
134
- includeDevDependencies,
135
- })
136
- : new Set<string>();
137
-
138
- for (const name of lockfileInstalledNames) {
139
- reachableDependencyNames.add(name);
140
- }
141
-
142
105
  const filteredPatches = filterPatchedDependencies({
143
106
  patchedDependencies,
144
107
  targetPackageManifest,