@layerzerolabs/vm-tooling 0.2.126 → 0.2.128

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.
Files changed (127) hide show
  1. package/dist/{ZBEXHZRK.js → 2BEUXSFW.js} +6 -6
  2. package/dist/2BEUXSFW.js.map +1 -0
  3. package/dist/{CWBC3WMF.js → 2PIH5TOH.js} +3 -3
  4. package/dist/{CWBC3WMF.js.map → 2PIH5TOH.js.map} +1 -1
  5. package/dist/{B4G2AL5H.js → 3B3W576M.js} +15 -15
  6. package/dist/3B3W576M.js.map +1 -0
  7. package/dist/{5GPTK3MH.js → 3G6UO37X.js} +4 -4
  8. package/dist/{5GPTK3MH.js.map → 3G6UO37X.js.map} +1 -1
  9. package/dist/{WTU5LLJL.js → 3LCQOITB.js} +5 -5
  10. package/dist/{WTU5LLJL.js.map → 3LCQOITB.js.map} +1 -1
  11. package/dist/3N42XVZL.js +6 -0
  12. package/dist/{7ZZ35UQB.js.map → 3N42XVZL.js.map} +1 -1
  13. package/dist/{7AOPRLRU.js → 52SW5N2L.js} +4 -4
  14. package/dist/{7AOPRLRU.js.map → 52SW5N2L.js.map} +1 -1
  15. package/dist/{64WQVYV7.js → 6HWTBKK6.js} +28 -28
  16. package/dist/6HWTBKK6.js.map +1 -0
  17. package/dist/{ID575YY3.js → EHGHQQRV.js} +6 -6
  18. package/dist/EHGHQQRV.js.map +1 -0
  19. package/dist/{EN67HYJT.js → FFE7SXCG.js} +3 -3
  20. package/dist/{EN67HYJT.js.map → FFE7SXCG.js.map} +1 -1
  21. package/dist/{SKMNEOBU.js → GBRJXN7L.js} +3 -3
  22. package/dist/{SKMNEOBU.js.map → GBRJXN7L.js.map} +1 -1
  23. package/dist/{H7YRHR5O.js → H6FLARPD.js} +3 -3
  24. package/dist/{H7YRHR5O.js.map → H6FLARPD.js.map} +1 -1
  25. package/dist/{4LO2IH4K.js → HYD54MGL.js} +4 -4
  26. package/dist/HYD54MGL.js.map +1 -0
  27. package/dist/{DCLKPAAD.js → IPZ5KX7M.js} +3 -3
  28. package/dist/{DCLKPAAD.js.map → IPZ5KX7M.js.map} +1 -1
  29. package/dist/{H7PAZQ2B.js → JYAWK6HD.js} +5 -5
  30. package/dist/{H7PAZQ2B.js.map → JYAWK6HD.js.map} +1 -1
  31. package/dist/{4Y7MN3EA.js → LOCNB6C6.js} +5 -5
  32. package/dist/{4Y7MN3EA.js.map → LOCNB6C6.js.map} +1 -1
  33. package/dist/N53MNPWU.js +6 -0
  34. package/dist/{2ICMBBWU.js.map → N53MNPWU.js.map} +1 -1
  35. package/dist/{MAF3KTCC.js → PBCHVZQM.js} +5 -5
  36. package/dist/{MAF3KTCC.js.map → PBCHVZQM.js.map} +1 -1
  37. package/dist/{DHOHK2AA.js → RORYN2CM.js} +3 -3
  38. package/dist/{DHOHK2AA.js.map → RORYN2CM.js.map} +1 -1
  39. package/dist/{INJJFIX2.js → SQ7CSCOZ.js} +5 -5
  40. package/dist/{INJJFIX2.js.map → SQ7CSCOZ.js.map} +1 -1
  41. package/dist/{7QHFUB7K.js → TWG6SAKX.js} +11 -11
  42. package/dist/TWG6SAKX.js.map +1 -0
  43. package/dist/{6M2RYAT4.js → TXIQ74D3.js} +5 -9
  44. package/dist/TXIQ74D3.js.map +1 -0
  45. package/dist/{SU4VJ6AH.js → VPZLVFND.js} +8 -8
  46. package/dist/{SU4VJ6AH.js.map → VPZLVFND.js.map} +1 -1
  47. package/dist/{337JSZDD.js → VZXWHHPB.js} +4 -4
  48. package/dist/{337JSZDD.js.map → VZXWHHPB.js.map} +1 -1
  49. package/dist/{UBSQYHMB.js → X6QPMSID.js} +3 -3
  50. package/dist/{UBSQYHMB.js.map → X6QPMSID.js.map} +1 -1
  51. package/dist/{LYF4JPSK.js → YHTRUOFZ.js} +4 -4
  52. package/dist/{LYF4JPSK.js.map → YHTRUOFZ.js.map} +1 -1
  53. package/dist/cli.js +21 -21
  54. package/dist/config.d.ts +2 -2
  55. package/dist/config.d.ts.map +1 -1
  56. package/dist/config.js +3 -3
  57. package/dist/context.js +1 -1
  58. package/dist/core/index.js +17 -17
  59. package/dist/core/local-executor.js +2 -2
  60. package/dist/core/local-executor.test.js +3 -3
  61. package/dist/core/lock.js +2 -2
  62. package/dist/core/lock.test.js +3 -3
  63. package/dist/core/tool-executor.js +16 -16
  64. package/dist/core/tool-executor.test.js +17 -17
  65. package/dist/core/version-resolver.js +4 -4
  66. package/dist/display/formatters.js +4 -4
  67. package/dist/display/index.js +6 -6
  68. package/dist/display/version-display.js +5 -5
  69. package/dist/environment.js +2 -2
  70. package/dist/github/index.js +7 -7
  71. package/dist/github/matrix.js +6 -6
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +24 -24
  75. package/dist/index.js.map +1 -1
  76. package/dist/scoped-workspace/index.d.ts +6 -0
  77. package/dist/scoped-workspace/index.d.ts.map +1 -0
  78. package/dist/scoped-workspace/index.js +10 -0
  79. package/dist/{mini-workspace → scoped-workspace}/node-modules.d.ts +3 -3
  80. package/dist/scoped-workspace/node-modules.d.ts.map +1 -0
  81. package/dist/scoped-workspace/node-modules.js +4 -0
  82. package/dist/{mini-workspace/mini-workspace.test.js → scoped-workspace/scoped-workspace.test.js} +88 -96
  83. package/dist/scoped-workspace/scoped-workspace.test.js.map +1 -0
  84. package/dist/{mini-workspace → scoped-workspace}/types.d.ts +10 -10
  85. package/dist/scoped-workspace/types.d.ts.map +1 -0
  86. package/dist/scoped-workspace/types.js +6 -0
  87. package/dist/scoped-workspace/types.js.map +1 -0
  88. package/dist/scoped-workspace/workspace-dependency-graph.d.ts.map +1 -0
  89. package/dist/scoped-workspace/workspace-dependency-graph.js +7 -0
  90. package/dist/{mini-workspace → scoped-workspace}/workspace-source-copy.d.ts +1 -1
  91. package/dist/scoped-workspace/workspace-source-copy.d.ts.map +1 -0
  92. package/dist/scoped-workspace/workspace-source-copy.js +6 -0
  93. package/dist/test.js +6 -6
  94. package/dist/utils/docker.js +5 -5
  95. package/dist/utils/docker.test.js +6 -6
  96. package/dist/utils/error.js +2 -2
  97. package/dist/utils/finder.js +2 -2
  98. package/dist/utils/fs.js +2 -2
  99. package/dist/utils.js +3 -3
  100. package/package.json +5 -5
  101. package/dist/2ICMBBWU.js +0 -6
  102. package/dist/4LO2IH4K.js.map +0 -1
  103. package/dist/64WQVYV7.js.map +0 -1
  104. package/dist/6M2RYAT4.js.map +0 -1
  105. package/dist/7QHFUB7K.js.map +0 -1
  106. package/dist/7ZZ35UQB.js +0 -6
  107. package/dist/B4G2AL5H.js.map +0 -1
  108. package/dist/ID575YY3.js.map +0 -1
  109. package/dist/ZBEXHZRK.js.map +0 -1
  110. package/dist/mini-workspace/index.d.ts +0 -6
  111. package/dist/mini-workspace/index.d.ts.map +0 -1
  112. package/dist/mini-workspace/index.js +0 -10
  113. package/dist/mini-workspace/mini-workspace.test.js.map +0 -1
  114. package/dist/mini-workspace/node-modules.d.ts.map +0 -1
  115. package/dist/mini-workspace/node-modules.js +0 -4
  116. package/dist/mini-workspace/types.d.ts.map +0 -1
  117. package/dist/mini-workspace/types.js +0 -6
  118. package/dist/mini-workspace/types.js.map +0 -1
  119. package/dist/mini-workspace/workspace-dependency-graph.d.ts.map +0 -1
  120. package/dist/mini-workspace/workspace-dependency-graph.js +0 -7
  121. package/dist/mini-workspace/workspace-source-copy.d.ts.map +0 -1
  122. package/dist/mini-workspace/workspace-source-copy.js +0 -6
  123. /package/dist/{mini-workspace → scoped-workspace}/index.js.map +0 -0
  124. /package/dist/{mini-workspace → scoped-workspace}/node-modules.js.map +0 -0
  125. /package/dist/{mini-workspace → scoped-workspace}/workspace-dependency-graph.d.ts +0 -0
  126. /package/dist/{mini-workspace → scoped-workspace}/workspace-dependency-graph.js.map +0 -0
  127. /package/dist/{mini-workspace → scoped-workspace}/workspace-source-copy.js.map +0 -0
@@ -1,24 +1,24 @@
1
- import { afterAll, describe, it, globalExpect } from '../5GPTK3MH.js';
2
- import { createMiniWorkspace } from '../B4G2AL5H.js';
3
- import { resolveWorkspaceDependencyGraph } from '../ID575YY3.js';
4
- import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS } from '../7QHFUB7K.js';
5
- import '../SKMNEOBU.js';
6
- import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from '../ZBEXHZRK.js';
7
- import '../LYF4JPSK.js';
8
- import '../UBSQYHMB.js';
9
- import { init_esm_shims, __dirname as __dirname$1, __name } from '../6M2RYAT4.js';
1
+ import { afterAll, describe, it, globalExpect } from '../3G6UO37X.js';
2
+ import { createScopedWorkspace } from '../3B3W576M.js';
3
+ import { resolveWorkspaceDependencyGraph } from '../EHGHQQRV.js';
4
+ import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS } from '../TWG6SAKX.js';
5
+ import '../GBRJXN7L.js';
6
+ import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from '../2BEUXSFW.js';
7
+ import '../YHTRUOFZ.js';
8
+ import '../X6QPMSID.js';
9
+ import { init_esm_shims, __name } from '../TXIQ74D3.js';
10
10
  import { mkdtempSync, rmSync, mkdirSync, realpathSync, symlinkSync, existsSync, lstatSync, readlinkSync, writeFileSync } from 'fs';
11
11
  import { tmpdir } from 'os';
12
12
  import { join } from 'path';
13
13
 
14
- // src/mini-workspace/mini-workspace.test.ts
14
+ // src/scoped-workspace/scoped-workspace.test.ts
15
15
  init_esm_shims();
16
- var TMP = mkdtempSync(join(tmpdir(), "lz-mini-workspace-test-"));
17
- var GENERATED_MINI_ROOTS = [];
18
- var trackMiniRoot = /* @__PURE__ */ __name((miniRoot) => {
19
- GENERATED_MINI_ROOTS.push(miniRoot);
20
- return miniRoot;
21
- }, "trackMiniRoot");
16
+ var TMP = mkdtempSync(join(tmpdir(), "lz-scoped-workspace-test-"));
17
+ var GENERATED_SCOPED_ROOTS = [];
18
+ var trackScopedRoot = /* @__PURE__ */ __name((scopedRoot) => {
19
+ GENERATED_SCOPED_ROOTS.push(scopedRoot);
20
+ return scopedRoot;
21
+ }, "trackScopedRoot");
22
22
  var createPackage = /* @__PURE__ */ __name((dir, name, files = {}) => {
23
23
  mkdirSync(dir, {
24
24
  recursive: true
@@ -62,8 +62,8 @@ afterAll(() => {
62
62
  recursive: true,
63
63
  force: true
64
64
  });
65
- for (const miniRoot of GENERATED_MINI_ROOTS) {
66
- rmSync(miniRoot, {
65
+ for (const scopedRoot of GENERATED_SCOPED_ROOTS) {
66
+ rmSync(scopedRoot, {
67
67
  recursive: true,
68
68
  force: true
69
69
  });
@@ -179,14 +179,6 @@ describe(resolveWorkspaceDependencyGraph, () => {
179
179
  "@layerzerolabs/protocol-starknet-v2"
180
180
  ]);
181
181
  });
182
- it("uses the real repository lockfile to include transitive anchor-trait for console-oft", async () => {
183
- const repo = join(__dirname$1, "..", "..", "..", "..", "..");
184
- const dependencyGraph = await resolveWorkspaceDependencyGraph({
185
- cwd: join(repo, "apps/project-types/console-oft-app/contracts/solana"),
186
- repoRoot: repo
187
- });
188
- globalExpect(dependencyGraph.includedWorkspaceDependencies.map((dependency) => dependency.name)).toContain("@layerzerolabs/framework-solana-anchor-trait");
189
- });
190
182
  it("invalidates cached lockfile importers when the lockfile changes", async () => {
191
183
  const repo = createRepo("dependency-graph-cache-invalidation");
192
184
  const current = join(repo, "apps", "current");
@@ -271,23 +263,23 @@ describe(copyWorkspaceSources, () => {
271
263
  const result = await copyWorkspaceSources({
272
264
  dependencyGraph
273
265
  });
274
- const miniRoot = trackMiniRoot(result.miniRoot);
266
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
275
267
  globalExpect(result.copiedWorkspaceDependencies).toHaveLength(1);
276
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
277
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "target", "deploy"))).toBe(false);
278
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "target", "wasm32v1-none", "release", "program.d"))).toBe(true);
279
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "target", "wasm32v1-none", "release", "program.wasm"))).toBe(true);
280
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "node_modules"))).toBe(true);
281
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "node_modules", "pkg", "index.js"))).toBe(false);
282
- globalExpect(lstatSync(join(miniRoot, "packages", "dep", "node_modules", "linked-pkg")).isSymbolicLink()).toBe(true);
283
- globalExpect(readlinkSync(join(miniRoot, "packages", "dep", "node_modules", "linked-pkg"))).toBe("../../../../node_modules/.pnpm/linked-pkg@1.0.0/node_modules/linked-pkg");
284
- globalExpect(lstatSync(join(miniRoot, "packages", "dep", "src-link.ts")).isSymbolicLink()).toBe(true);
285
- globalExpect(readlinkSync(join(miniRoot, "packages", "dep", "src-link.ts"))).toBe("src/index.ts");
286
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "dist", "index.js"))).toBe(true);
287
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "artifacts"))).toBe(false);
288
- globalExpect(existsSync(join(miniRoot, "apps", "current"))).toBe(false);
268
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
269
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target", "deploy"))).toBe(false);
270
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target", "wasm32v1-none", "release", "program.d"))).toBe(true);
271
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target", "wasm32v1-none", "release", "program.wasm"))).toBe(true);
272
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "node_modules"))).toBe(true);
273
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "node_modules", "pkg", "index.js"))).toBe(false);
274
+ globalExpect(lstatSync(join(scopedRoot, "packages", "dep", "node_modules", "linked-pkg")).isSymbolicLink()).toBe(true);
275
+ globalExpect(readlinkSync(join(scopedRoot, "packages", "dep", "node_modules", "linked-pkg"))).toBe("../../../../node_modules/.pnpm/linked-pkg@1.0.0/node_modules/linked-pkg");
276
+ globalExpect(lstatSync(join(scopedRoot, "packages", "dep", "src-link.ts")).isSymbolicLink()).toBe(true);
277
+ globalExpect(readlinkSync(join(scopedRoot, "packages", "dep", "src-link.ts"))).toBe("src/index.ts");
278
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "dist", "index.js"))).toBe(true);
279
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "artifacts"))).toBe(false);
280
+ globalExpect(existsSync(join(scopedRoot, "apps", "current"))).toBe(false);
289
281
  });
290
- it("applies glob-compatible mini-workspace prune patterns to dependency source copies", async () => {
282
+ it("applies glob-compatible scoped-workspace prune patterns to dependency source copies", async () => {
291
283
  const repo = createRepo("workspace-source-pattern-copy");
292
284
  const current = join(repo, "apps", "current");
293
285
  const dep = join(repo, "packages", "dep");
@@ -332,19 +324,19 @@ describe(copyWorkspaceSources, () => {
332
324
  "!programs/**/tests/**"
333
325
  ]
334
326
  });
335
- const miniRoot = trackMiniRoot(result.miniRoot);
336
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
337
- globalExpect(existsSync(join(miniRoot, "apps", "current"))).toBe(false);
338
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "programs", "demo", "src", "lib.rs"))).toBe(true);
339
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "README.md"))).toBe(false);
340
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "LICENSE"))).toBe(false);
341
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "sdk"))).toBe(false);
342
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "scripts"))).toBe(false);
343
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "tests"))).toBe(false);
344
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "programs", "demo", "tests"))).toBe(false);
345
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "node_modules", "pkg"))).toBe(false);
346
- globalExpect(lstatSync(join(miniRoot, "packages", "dep", "node_modules", "dep-link")).isSymbolicLink()).toBe(true);
347
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "target"))).toBe(false);
327
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
328
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
329
+ globalExpect(existsSync(join(scopedRoot, "apps", "current"))).toBe(false);
330
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "programs", "demo", "src", "lib.rs"))).toBe(true);
331
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "README.md"))).toBe(false);
332
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "LICENSE"))).toBe(false);
333
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "sdk"))).toBe(false);
334
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "scripts"))).toBe(false);
335
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "tests"))).toBe(false);
336
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "programs", "demo", "tests"))).toBe(false);
337
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "node_modules", "pkg"))).toBe(false);
338
+ globalExpect(lstatSync(join(scopedRoot, "packages", "dep", "node_modules", "dep-link")).isSymbolicLink()).toBe(true);
339
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target"))).toBe(false);
348
340
  });
349
341
  it("tolerates identical package-local symlinks copied twice (nested workspace package layout)", async () => {
350
342
  const repo = createRepo("workspace-source-duplicate-symlink");
@@ -391,8 +383,8 @@ describe(copyWorkspaceSources, () => {
391
383
  const result = await copyWorkspaceSources({
392
384
  dependencyGraph
393
385
  });
394
- const miniRoot = trackMiniRoot(result.miniRoot);
395
- const nestedLink = join(miniRoot, "apps", "parent", "nested-pkg", "node_modules", "@layerzerolabs", "vm-tooling-stellar");
386
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
387
+ const nestedLink = join(scopedRoot, "apps", "parent", "nested-pkg", "node_modules", "@layerzerolabs", "vm-tooling-stellar");
396
388
  globalExpect(lstatSync(nestedLink).isSymbolicLink()).toBe(true);
397
389
  globalExpect(readlinkSync(nestedLink)).toBe("../../../../../../tools/vm-tooling/vm-tooling-stellar");
398
390
  });
@@ -450,18 +442,18 @@ describe(copyWorkspaceSources, () => {
450
442
  ]
451
443
  }
452
444
  });
453
- const miniRoot = trackMiniRoot(result.miniRoot);
454
- globalExpect(existsSync(join(miniRoot, "apps", "current"))).toBe(false);
455
- globalExpect(existsSync(join(miniRoot, "packages", "anchor-dep", "Anchor.toml"))).toBe(true);
456
- globalExpect(existsSync(join(miniRoot, "packages", "anchor-dep", "programs", "demo", "Cargo.toml"))).toBe(true);
457
- globalExpect(existsSync(join(miniRoot, "packages", "anchor-dep", "programs", "demo", "src", "lib.rs"))).toBe(true);
458
- globalExpect(existsSync(join(miniRoot, "packages", "anchor-dep", "programs", "demo", "tests"))).toBe(false);
459
- globalExpect(existsSync(join(miniRoot, "packages", "utility-dep", "src", "index.ts"))).toBe(true);
445
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
446
+ globalExpect(existsSync(join(scopedRoot, "apps", "current"))).toBe(false);
447
+ globalExpect(existsSync(join(scopedRoot, "packages", "anchor-dep", "Anchor.toml"))).toBe(true);
448
+ globalExpect(existsSync(join(scopedRoot, "packages", "anchor-dep", "programs", "demo", "Cargo.toml"))).toBe(true);
449
+ globalExpect(existsSync(join(scopedRoot, "packages", "anchor-dep", "programs", "demo", "src", "lib.rs"))).toBe(true);
450
+ globalExpect(existsSync(join(scopedRoot, "packages", "anchor-dep", "programs", "demo", "tests"))).toBe(false);
451
+ globalExpect(existsSync(join(scopedRoot, "packages", "utility-dep", "src", "index.ts"))).toBe(true);
460
452
  });
461
453
  });
462
- describe(createMiniWorkspace, () => {
454
+ describe(createScopedWorkspace, () => {
463
455
  it("uses the unpruned source-copy fallback when no pruner is configured", async () => {
464
- const repo = createRepo("mini-workspace-fallback");
456
+ const repo = createRepo("scoped-workspace-fallback");
465
457
  const current = join(repo, "apps", "current");
466
458
  const dep = join(repo, "packages", "dep");
467
459
  mkdirSync(join(repo, "node_modules", ".pnpm"), {
@@ -483,23 +475,23 @@ describe(createMiniWorkspace, () => {
483
475
  packages/dep:
484
476
  devDependencies: {}
485
477
  `);
486
- const result = await createMiniWorkspace({
478
+ const result = await createScopedWorkspace({
487
479
  cwd: current
488
480
  });
489
- const miniRoot = trackMiniRoot(result.miniRoot);
481
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
490
482
  globalExpect(result.prunerName).toBeUndefined();
491
483
  globalExpect(result.diagnostics).toEqual([
492
- "No mini-workspace pruner configured; using unpruned package-level source copy fallback."
484
+ "No scoped-workspace pruner configured; using unpruned package-level source copy fallback."
493
485
  ]);
494
486
  globalExpect(result.copiedWorkspacePackageCount).toBe(1);
495
487
  globalExpect(result.copiedWorkspacePackagePaths).toEqual({
496
488
  "packages/dep": realpathSync(dep)
497
489
  });
498
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
499
- globalExpect(existsSync(join(miniRoot, "apps", "current"))).toBe(false);
490
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
491
+ globalExpect(existsSync(join(scopedRoot, "apps", "current"))).toBe(false);
500
492
  });
501
493
  it("uses a configured pruner to filter dependency package copies", async () => {
502
- const repo = createRepo("mini-workspace-pruner");
494
+ const repo = createRepo("scoped-workspace-pruner");
503
495
  const current = join(repo, "apps", "current");
504
496
  const dep = join(repo, "packages", "dep");
505
497
  const inputs = [];
@@ -545,11 +537,11 @@ describe(createMiniWorkspace, () => {
545
537
  packages/dep:
546
538
  devDependencies: {}
547
539
  `);
548
- const result = await createMiniWorkspace({
540
+ const result = await createScopedWorkspace({
549
541
  cwd: current,
550
542
  pruner
551
543
  });
552
- const miniRoot = trackMiniRoot(result.miniRoot);
544
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
553
545
  globalExpect(inputs).toHaveLength(1);
554
546
  const firstInput = inputs[0];
555
547
  globalExpect(firstInput).toMatchObject({
@@ -569,12 +561,12 @@ describe(createMiniWorkspace, () => {
569
561
  globalExpect(result.copiedWorkspacePackagePaths).toEqual({
570
562
  "packages/dep": realpathSync(dep)
571
563
  });
572
- globalExpect(existsSync(join(miniRoot, "apps", "current"))).toBe(false);
573
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
574
- globalExpect(existsSync(join(miniRoot, "packages", "dep", "tests"))).toBe(false);
564
+ globalExpect(existsSync(join(scopedRoot, "apps", "current"))).toBe(false);
565
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
566
+ globalExpect(existsSync(join(scopedRoot, "packages", "dep", "tests"))).toBe(false);
575
567
  });
576
568
  it("uses default dependency copies for pruned packages without package-specific patterns", async () => {
577
- const repo = createRepo("mini-workspace-empty-global-patterns");
569
+ const repo = createRepo("scoped-workspace-empty-global-patterns");
578
570
  const current = join(repo, "apps", "current");
579
571
  const prunedDep = join(repo, "packages", "pruned-dep");
580
572
  const defaultDep = join(repo, "packages", "default-dep");
@@ -618,20 +610,20 @@ describe(createMiniWorkspace, () => {
618
610
  packages/pruned-dep:
619
611
  devDependencies: {}
620
612
  `);
621
- const result = await createMiniWorkspace({
613
+ const result = await createScopedWorkspace({
622
614
  cwd: current,
623
615
  pruner
624
616
  });
625
- const miniRoot = trackMiniRoot(result.miniRoot);
626
- globalExpect(existsSync(join(miniRoot, "packages", "pruned-dep", "src", "index.ts"))).toBe(true);
627
- globalExpect(existsSync(join(miniRoot, "packages", "pruned-dep", "tests"))).toBe(false);
628
- globalExpect(existsSync(join(miniRoot, "packages", "default-dep", "src", "index.ts"))).toBe(true);
617
+ const scopedRoot = trackScopedRoot(result.scopedRoot);
618
+ globalExpect(existsSync(join(scopedRoot, "packages", "pruned-dep", "src", "index.ts"))).toBe(true);
619
+ globalExpect(existsSync(join(scopedRoot, "packages", "pruned-dep", "tests"))).toBe(false);
620
+ globalExpect(existsSync(join(scopedRoot, "packages", "default-dep", "src", "index.ts"))).toBe(true);
629
621
  });
630
622
  });
631
623
  describe(copyRootNodeModulesSymlinks, () => {
632
624
  it("copies only selected root dependency symlinks without copying dependency contents", async () => {
633
625
  const repo = createRepo("node-modules-symlinks");
634
- const miniRoot = join(TMP, "mini-node-modules-symlinks");
626
+ const scopedRoot = join(TMP, "scoped-node-modules-symlinks");
635
627
  const dep = join(repo, "apps", "oapp-app", "contracts", "solana");
636
628
  createPackage(dep, "@layerzerolabs/oapp-solana-impl");
637
629
  mkdirSync(join(repo, "node_modules", ".pnpm"), {
@@ -647,7 +639,7 @@ describe(copyRootNodeModulesSymlinks, () => {
647
639
  recursive: true
648
640
  });
649
641
  writeFileSync(join(repo, "node_modules", ".bin", "real-file"), "do not copy");
650
- mkdirSync(join(miniRoot, "apps", "oapp-app", "contracts", "solana"), {
642
+ mkdirSync(join(scopedRoot, "apps", "oapp-app", "contracts", "solana"), {
651
643
  recursive: true
652
644
  });
653
645
  symlinkSync(".pnpm/eslint@1.0.0/node_modules/eslint", join(repo, "node_modules", "eslint"));
@@ -657,27 +649,27 @@ describe(copyRootNodeModulesSymlinks, () => {
657
649
  symlinkSync("../..", join(repo, "node_modules", "@layerzerolabs", "whole-repo-link"));
658
650
  const result = await copyRootNodeModulesSymlinks({
659
651
  repoRoot: repo,
660
- miniRoot,
652
+ scopedRoot,
661
653
  dependencyNames: [
662
654
  "@layerzerolabs/oapp-solana-impl",
663
655
  "@types/node",
664
656
  "eslint"
665
657
  ]
666
658
  });
667
- globalExpect(result.nodeModulesPath).toBe(join(miniRoot, "node_modules"));
659
+ globalExpect(result.nodeModulesPath).toBe(join(scopedRoot, "node_modules"));
668
660
  globalExpect(result.symlinks).toEqual([
669
661
  "@layerzerolabs/oapp-solana-impl",
670
662
  "@types/node",
671
663
  "eslint"
672
664
  ]);
673
- globalExpect(readlinkSync(join(miniRoot, "node_modules", "eslint"))).toBe(".pnpm/eslint@1.0.0/node_modules/eslint");
674
- globalExpect(lstatSync(join(miniRoot, "node_modules", ".pnpm")).isDirectory()).toBe(true);
675
- globalExpect(existsSync(join(miniRoot, "node_modules", ".bin", "real-file"))).toBe(false);
676
- globalExpect(existsSync(join(miniRoot, "node_modules", ".bin", "tsc"))).toBe(false);
677
- globalExpect(lstatSync(join(miniRoot, "node_modules", "@types", "node")).isSymbolicLink()).toBe(true);
678
- globalExpect(lstatSync(join(miniRoot, "node_modules", "@layerzerolabs", "oapp-solana-impl")).isSymbolicLink()).toBe(true);
679
- globalExpect(readlinkSync(join(miniRoot, "node_modules", "@layerzerolabs", "oapp-solana-impl"))).toBe("../../apps/oapp-app/contracts/solana");
680
- globalExpect(existsSync(join(miniRoot, "node_modules", "@layerzerolabs", "whole-repo-link"))).toBe(false);
665
+ globalExpect(readlinkSync(join(scopedRoot, "node_modules", "eslint"))).toBe(".pnpm/eslint@1.0.0/node_modules/eslint");
666
+ globalExpect(lstatSync(join(scopedRoot, "node_modules", ".pnpm")).isDirectory()).toBe(true);
667
+ globalExpect(existsSync(join(scopedRoot, "node_modules", ".bin", "real-file"))).toBe(false);
668
+ globalExpect(existsSync(join(scopedRoot, "node_modules", ".bin", "tsc"))).toBe(false);
669
+ globalExpect(lstatSync(join(scopedRoot, "node_modules", "@types", "node")).isSymbolicLink()).toBe(true);
670
+ globalExpect(lstatSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-impl")).isSymbolicLink()).toBe(true);
671
+ globalExpect(readlinkSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-impl"))).toBe("../../apps/oapp-app/contracts/solana");
672
+ globalExpect(existsSync(join(scopedRoot, "node_modules", "@layerzerolabs", "whole-repo-link"))).toBe(false);
681
673
  });
682
674
  });
683
675
  describe(getPnpmVirtualStoreMount, () => {
@@ -689,5 +681,5 @@ describe(getPnpmVirtualStoreMount, () => {
689
681
  });
690
682
  });
691
683
  });
692
- //# sourceMappingURL=mini-workspace.test.js.map
693
- //# sourceMappingURL=mini-workspace.test.js.map
684
+ //# sourceMappingURL=scoped-workspace.test.js.map
685
+ //# sourceMappingURL=scoped-workspace.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/scoped-workspace/scoped-workspace.test.ts"],"names":["TMP","mkdtempSync","join","tmpdir","GENERATED_SCOPED_ROOTS","trackScopedRoot","scopedRoot","push","createPackage","dir","name","files","mkdirSync","recursive","writeFileSync","JSON","stringify","version","file","content","Object","entries","filePath","createRepo","repo","writeLockfile","body","trimEnd","afterAll","rmSync","force","describe","resolveWorkspaceDependencyGraph","it","current","depA","depB","tooling","dependencyGraph","cwd","repoRoot","includedRelativePaths","includedWorkspaceDependencies","map","dependency","relativePath","expect","toHaveLength","toEqual","arrayContaining","rootNodeModulesDependencyNames","contracts","dep","packageRoot","toBe","realpathSync","packageRelativePath","firstGraph","secondGraph","copyWorkspaceSources","symlinkSync","importerRelativePath","absolutePath","result","copiedWorkspaceDependencies","existsSync","lstatSync","isSymbolicLink","readlinkSync","LICENSE","prunePatterns","DEFAULT_SOURCE_COPY_PATTERNS","parent","nested","nestedLink","anchorDep","utilityDep","packagePrunePatterns","createScopedWorkspace","prunerName","toBeUndefined","diagnostics","copiedWorkspacePackageCount","copiedWorkspacePackagePaths","inputs","pruner","createPrunePlan","input","patterns","packagePatterns","firstInput","toMatchObject","prunedDep","defaultDep","copyRootNodeModulesSymlinks","dependencyNames","nodeModulesPath","symlinks","isDirectory","getPnpmVirtualStoreMount","hostPath","containerPath","readOnly"],"mappings":"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","file":"scoped-workspace.test.js","sourcesContent":["import {\n existsSync,\n lstatSync,\n mkdirSync,\n mkdtempSync,\n readlinkSync,\n realpathSync,\n rmSync,\n symlinkSync,\n writeFileSync,\n} from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { afterAll, describe, expect, it } from 'vitest';\n\nimport {\n createScopedWorkspace,\n DEFAULT_SOURCE_COPY_PATTERNS,\n type ScopedWorkspacePruner,\n} from './index';\nimport { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './node-modules';\nimport { resolveWorkspaceDependencyGraph } from './workspace-dependency-graph';\nimport { copyWorkspaceSources } from './workspace-source-copy';\n\nconst TMP = mkdtempSync(join(tmpdir(), 'lz-scoped-workspace-test-'));\nconst GENERATED_SCOPED_ROOTS: string[] = [];\n\nconst trackScopedRoot = (scopedRoot: string): string => {\n GENERATED_SCOPED_ROOTS.push(scopedRoot);\n return scopedRoot;\n};\n\nconst createPackage = (dir: string, name: string, files: Record<string, string> = {}) => {\n mkdirSync(dir, { recursive: true });\n writeFileSync(join(dir, 'package.json'), JSON.stringify({ name, version: '0.0.0' }));\n\n for (const [file, content] of Object.entries(files)) {\n const filePath = join(dir, file);\n mkdirSync(join(filePath, '..'), { recursive: true });\n writeFileSync(filePath, content);\n }\n};\n\nconst createRepo = (name: string): string => {\n const repo = join(TMP, name);\n mkdirSync(repo, { recursive: true });\n writeFileSync(join(repo, 'pnpm-workspace.yaml'), 'packages:\\n - \"**\"\\n');\n return repo;\n};\n\nconst writeLockfile = (repo: string, body: string) => {\n writeFileSync(\n join(repo, 'pnpm-lock.yaml'),\n [\n \"lockfileVersion: '9.0'\",\n '',\n 'settings:',\n ' autoInstallPeers: true',\n '',\n 'importers:',\n body.trimEnd(),\n '',\n 'packages:',\n '',\n ].join('\\n'),\n );\n};\n\nafterAll(() => {\n rmSync(TMP, { recursive: true, force: true });\n for (const scopedRoot of GENERATED_SCOPED_ROOTS) {\n rmSync(scopedRoot, { recursive: true, force: true });\n }\n});\n\ndescribe(resolveWorkspaceDependencyGraph, () => {\n it('follows transitive workspace link deps', async () => {\n const repo = createRepo('dependency-graph');\n const current = join(repo, 'apps', 'current');\n const depA = join(repo, 'packages', 'dep-a');\n const depB = join(repo, 'packages', 'dep-b');\n const tooling = join(repo, 'tools', 'vm-utils', 'solana', 'build-utils');\n\n createPackage(current, '@layerzerolabs/current');\n createPackage(depA, '@layerzerolabs/dep-a');\n createPackage(depB, '@layerzerolabs/dep-b');\n createPackage(tooling, '@layerzerolabs/build-utils-solana');\n writeLockfile(\n repo,\n `\n apps/current:\n dependencies:\n '@layerzerolabs/dep-a':\n specifier: workspace:*\n version: link:../../packages/dep-a\n '@layerzerolabs/build-utils-solana':\n specifier: workspace:*\n version: link:../../tools/vm-utils/solana/build-utils\n\n .:\n devDependencies:\n eslint:\n specifier: ^9.0.0\n version: 9.0.0\n '@layerzerolabs/dep-a':\n specifier: workspace:*\n version: link:packages/dep-a\n '@layerzerolabs/build-utils-solana':\n specifier: workspace:*\n version: link:tools/vm-utils/solana/build-utils\n\n packages/dep-a:\n dependencies:\n eslint:\n specifier: ^9.0.0\n version: 9.0.0\n '@layerzerolabs/dep-b':\n specifier: workspace:*\n version: link:../dep-b\n\n packages/dep-b:\n dependencies:\n '@layerzerolabs/dep-a':\n specifier: workspace:*\n version: link:../dep-a\n\n tools/vm-utils/solana/build-utils:\n devDependencies: {}\n`,\n );\n\n const dependencyGraph = await resolveWorkspaceDependencyGraph({\n cwd: current,\n repoRoot: repo,\n });\n\n const includedRelativePaths = dependencyGraph.includedWorkspaceDependencies.map(\n (dependency) => dependency.relativePath,\n );\n expect(includedRelativePaths).toHaveLength(3);\n expect(includedRelativePaths).toEqual(\n expect.arrayContaining([\n 'packages/dep-a',\n 'packages/dep-b',\n 'tools/vm-utils/solana/build-utils',\n ]),\n );\n expect(dependencyGraph.rootNodeModulesDependencyNames).toHaveLength(3);\n expect(dependencyGraph.rootNodeModulesDependencyNames).toEqual(\n expect.arrayContaining([\n '@layerzerolabs/build-utils-solana',\n '@layerzerolabs/dep-a',\n 'eslint',\n ]),\n );\n });\n\n it('resolves nested command directories to their ancestor package importer', async () => {\n const repo = createRepo('nested-current');\n const current = join(repo, 'packages', 'onesig', 'onesig-starknet');\n const contracts = join(current, 'contracts');\n const dep = join(repo, 'packages', 'protocol-starknet-v2');\n\n createPackage(current, '@layerzerolabs/onesig-starknet', {\n 'contracts/Scarb.toml': '[package]\\nname = \"onesig\"\\n',\n });\n createPackage(dep, '@layerzerolabs/protocol-starknet-v2');\n mkdirSync(contracts, { recursive: true });\n writeLockfile(\n repo,\n `\n packages/onesig/onesig-starknet:\n devDependencies:\n '@layerzerolabs/protocol-starknet-v2':\n specifier: workspace:*\n version: link:../../protocol-starknet-v2\n\n .:\n devDependencies:\n '@layerzerolabs/protocol-starknet-v2':\n specifier: workspace:*\n version: link:packages/protocol-starknet-v2\n\n packages/protocol-starknet-v2:\n devDependencies: {}\n`,\n );\n\n const dependencyGraph = await resolveWorkspaceDependencyGraph({\n cwd: contracts,\n repoRoot: repo,\n });\n\n expect(dependencyGraph.packageRoot).toBe(realpathSync(current));\n expect(dependencyGraph.packageRelativePath).toBe('packages/onesig/onesig-starknet');\n expect(\n dependencyGraph.includedWorkspaceDependencies.map(\n (dependency) => dependency.relativePath,\n ),\n ).toEqual(['packages/protocol-starknet-v2']);\n expect(dependencyGraph.rootNodeModulesDependencyNames).toEqual([\n '@layerzerolabs/protocol-starknet-v2',\n ]);\n });\n\n it('invalidates cached lockfile importers when the lockfile changes', async () => {\n const repo = createRepo('dependency-graph-cache-invalidation');\n const current = join(repo, 'apps', 'current');\n const depA = join(repo, 'packages', 'dep-a');\n const depB = join(repo, 'packages', 'dep-b');\n\n createPackage(current, '@layerzerolabs/current');\n createPackage(depA, '@layerzerolabs/dep-a');\n createPackage(depB, '@layerzerolabs/dep-b');\n writeLockfile(\n repo,\n `\n apps/current:\n dependencies:\n '@layerzerolabs/dep-a':\n specifier: workspace:*\n version: link:../../packages/dep-a\n\n packages/dep-a:\n devDependencies: {}\n`,\n );\n\n const firstGraph = await resolveWorkspaceDependencyGraph({\n cwd: current,\n repoRoot: repo,\n });\n\n writeLockfile(\n repo,\n `\n apps/current:\n dependencies:\n '@layerzerolabs/dep-b':\n specifier: workspace:*\n version: link:../../packages/dep-b\n\n packages/dep-b:\n devDependencies: {}\n\n # Keep the rewritten lockfile size different so mtime+size invalidation is exercised.\n`,\n );\n\n const secondGraph = await resolveWorkspaceDependencyGraph({\n cwd: current,\n repoRoot: repo,\n });\n\n expect(\n firstGraph.includedWorkspaceDependencies.map((dependency) => dependency.relativePath),\n ).toEqual(['packages/dep-a']);\n expect(\n secondGraph.includedWorkspaceDependencies.map((dependency) => dependency.relativePath),\n ).toEqual(['packages/dep-b']);\n });\n});\n\ndescribe(copyWorkspaceSources, () => {\n it('copies dependency sources and dist outputs while excluding the current package and heavyweight generated output directories', async () => {\n const repo = createRepo('workspace-source-copy');\n const current = join(repo, 'apps', 'current');\n const dep = join(repo, 'packages', 'dep');\n createPackage(current, '@layerzerolabs/current', {\n 'src/index.ts': 'export const current = true',\n 'target/deploy/current.so': 'compiled',\n });\n createPackage(dep, '@layerzerolabs/dep', {\n 'src/index.ts': 'export const dep = true',\n 'target/deploy/program.so': 'compiled',\n 'target/wasm32v1-none/release/program.d': 'program.wasm: src/lib.rs',\n 'target/wasm32v1-none/release/program.wasm': 'compiled wasm',\n 'node_modules/pkg/index.js': 'module.exports = {}',\n 'dist/index.js': 'module.exports = {}',\n 'artifacts/contracts/Contract.json': '{}',\n });\n symlinkSync(\n '../../../../node_modules/.pnpm/linked-pkg@1.0.0/node_modules/linked-pkg',\n join(dep, 'node_modules', 'linked-pkg'),\n );\n symlinkSync('src/index.ts', join(dep, 'src-link.ts'));\n\n const dependencyGraph = {\n repoRoot: repo,\n packageRoot: current,\n packageRelativePath: 'apps/current',\n rootNodeModulesDependencyNames: [],\n includedWorkspaceDependencies: [\n {\n name: '@layerzerolabs/dep',\n importerRelativePath: 'apps/current',\n relativePath: 'packages/dep',\n absolutePath: dep,\n version: 'link:../../packages/dep',\n },\n ],\n };\n\n const result = await copyWorkspaceSources({ dependencyGraph });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n expect(result.copiedWorkspaceDependencies).toHaveLength(1);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'src', 'index.ts'))).toBe(true);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'target', 'deploy'))).toBe(false);\n expect(\n existsSync(\n join(\n scopedRoot,\n 'packages',\n 'dep',\n 'target',\n 'wasm32v1-none',\n 'release',\n 'program.d',\n ),\n ),\n ).toBe(true);\n expect(\n existsSync(\n join(\n scopedRoot,\n 'packages',\n 'dep',\n 'target',\n 'wasm32v1-none',\n 'release',\n 'program.wasm',\n ),\n ),\n ).toBe(true);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'node_modules'))).toBe(true);\n expect(\n existsSync(join(scopedRoot, 'packages', 'dep', 'node_modules', 'pkg', 'index.js')),\n ).toBe(false);\n expect(\n lstatSync(\n join(scopedRoot, 'packages', 'dep', 'node_modules', 'linked-pkg'),\n ).isSymbolicLink(),\n ).toBe(true);\n expect(\n readlinkSync(join(scopedRoot, 'packages', 'dep', 'node_modules', 'linked-pkg')),\n ).toBe('../../../../node_modules/.pnpm/linked-pkg@1.0.0/node_modules/linked-pkg');\n expect(lstatSync(join(scopedRoot, 'packages', 'dep', 'src-link.ts')).isSymbolicLink()).toBe(\n true,\n );\n expect(readlinkSync(join(scopedRoot, 'packages', 'dep', 'src-link.ts'))).toBe(\n 'src/index.ts',\n );\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'dist', 'index.js'))).toBe(true);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'artifacts'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'apps', 'current'))).toBe(false);\n });\n\n it('applies glob-compatible scoped-workspace prune patterns to dependency source copies', async () => {\n const repo = createRepo('workspace-source-pattern-copy');\n const current = join(repo, 'apps', 'current');\n const dep = join(repo, 'packages', 'dep');\n createPackage(current, '@layerzerolabs/current');\n createPackage(dep, '@layerzerolabs/dep', {\n 'src/index.ts': 'export const dep = true',\n 'README.md': '# dep',\n LICENSE: 'MIT',\n 'sdk/client.ts': 'export const sdk = true',\n 'scripts/dev.ts': 'export const dev = true',\n 'tests/fixture.ts': 'export const secret = true',\n 'node_modules/pkg/index.js': 'module.exports = {}',\n 'programs/demo/src/lib.rs': 'pub fn process() {}',\n 'programs/demo/tests/integration.rs': '#[test] fn it_works() {}',\n 'target/deploy/program.so': 'compiled',\n });\n symlinkSync('../src/index.ts', join(dep, 'node_modules', 'dep-link'));\n\n const dependencyGraph = {\n repoRoot: repo,\n packageRoot: current,\n packageRelativePath: 'apps/current',\n rootNodeModulesDependencyNames: [],\n includedWorkspaceDependencies: [\n {\n name: '@layerzerolabs/dep',\n importerRelativePath: 'apps/current',\n relativePath: 'packages/dep',\n absolutePath: dep,\n version: 'link:../../packages/dep',\n },\n ],\n };\n\n const result = await copyWorkspaceSources({\n dependencyGraph,\n prunePatterns: [\n ...DEFAULT_SOURCE_COPY_PATTERNS,\n '!**/*.md',\n '!**/LICENSE',\n '!sdk/**',\n '!scripts/**',\n '!tests/**',\n '!programs/**/tests/**',\n ],\n });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'src', 'index.ts'))).toBe(true);\n expect(existsSync(join(scopedRoot, 'apps', 'current'))).toBe(false);\n expect(\n existsSync(join(scopedRoot, 'packages', 'dep', 'programs', 'demo', 'src', 'lib.rs')),\n ).toBe(true);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'README.md'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'LICENSE'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'sdk'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'scripts'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'tests'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'programs', 'demo', 'tests'))).toBe(\n false,\n );\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'node_modules', 'pkg'))).toBe(false);\n expect(\n lstatSync(\n join(scopedRoot, 'packages', 'dep', 'node_modules', 'dep-link'),\n ).isSymbolicLink(),\n ).toBe(true);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'target'))).toBe(false);\n });\n\n it('tolerates identical package-local symlinks copied twice (nested workspace package layout)', async () => {\n const repo = createRepo('workspace-source-duplicate-symlink');\n const current = join(repo, 'apps', 'current');\n const parent = join(repo, 'apps', 'parent');\n const nested = join(parent, 'nested-pkg');\n createPackage(current, '@layerzerolabs/current');\n createPackage(parent, '@layerzerolabs/parent', {\n 'src/index.ts': 'export const parent = true',\n });\n createPackage(nested, '@layerzerolabs/nested', {\n 'src/index.ts': 'export const nested = true',\n });\n mkdirSync(join(nested, 'node_modules', '@layerzerolabs'), { recursive: true });\n symlinkSync(\n '../../../../../../tools/vm-tooling/vm-tooling-stellar',\n join(nested, 'node_modules', '@layerzerolabs', 'vm-tooling-stellar'),\n );\n // Parent tree includes the nested package directory on disk.\n mkdirSync(join(parent, 'node_modules', '@layerzerolabs'), { recursive: true });\n symlinkSync(\n '../../../../tools/vm-tooling/vm-tooling-stellar',\n join(parent, 'node_modules', '@layerzerolabs', 'vm-tooling-stellar'),\n );\n\n const dependencyGraph = {\n repoRoot: repo,\n packageRoot: current,\n packageRelativePath: 'apps/current',\n rootNodeModulesDependencyNames: [],\n includedWorkspaceDependencies: [\n {\n name: '@layerzerolabs/parent',\n importerRelativePath: 'apps/current',\n relativePath: 'apps/parent',\n absolutePath: parent,\n version: 'link:../parent',\n },\n {\n name: '@layerzerolabs/nested',\n importerRelativePath: 'apps/parent',\n relativePath: 'apps/parent/nested-pkg',\n absolutePath: nested,\n version: 'link:./nested-pkg',\n },\n ],\n };\n\n const result = await copyWorkspaceSources({ dependencyGraph });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n const nestedLink = join(\n scopedRoot,\n 'apps',\n 'parent',\n 'nested-pkg',\n 'node_modules',\n '@layerzerolabs',\n 'vm-tooling-stellar',\n );\n expect(lstatSync(nestedLink).isSymbolicLink()).toBe(true);\n expect(readlinkSync(nestedLink)).toBe(\n '../../../../../../tools/vm-tooling/vm-tooling-stellar',\n );\n });\n\n it('falls back to default patterns when global prune patterns are empty', async () => {\n const repo = createRepo('workspace-source-package-pattern-copy');\n const current = join(repo, 'apps', 'current');\n const anchorDep = join(repo, 'packages', 'anchor-dep');\n const utilityDep = join(repo, 'packages', 'utility-dep');\n createPackage(current, '@layerzerolabs/current', {\n 'src/index.ts': 'export const current = true',\n 'tests/secret.ts': 'export const secret = true',\n });\n createPackage(anchorDep, '@layerzerolabs/anchor-dep', {\n 'Anchor.toml': '[programs.localnet]\\nanchor_dep = \"11111111111111111111111111111111\"',\n 'programs/demo/Cargo.toml': '[package]\\nname = \"demo\"',\n 'programs/demo/src/lib.rs': 'pub fn process() {}',\n 'programs/demo/tests/integration.rs': '#[test] fn it_works() {}',\n });\n createPackage(utilityDep, '@layerzerolabs/utility-dep', {\n 'src/index.ts': 'export const utility = true',\n });\n\n const dependencyGraph = {\n repoRoot: repo,\n packageRoot: current,\n packageRelativePath: 'apps/current',\n rootNodeModulesDependencyNames: [],\n includedWorkspaceDependencies: [\n {\n name: '@layerzerolabs/anchor-dep',\n importerRelativePath: 'apps/current',\n relativePath: 'packages/anchor-dep',\n absolutePath: anchorDep,\n version: 'link:../../packages/anchor-dep',\n },\n {\n name: '@layerzerolabs/utility-dep',\n importerRelativePath: 'apps/current',\n relativePath: 'packages/utility-dep',\n absolutePath: utilityDep,\n version: 'link:../../packages/utility-dep',\n },\n ],\n };\n\n const result = await copyWorkspaceSources({\n dependencyGraph,\n prunePatterns: [],\n packagePrunePatterns: {\n 'apps/current': ['src/**'],\n 'packages/anchor-dep': [\n 'Anchor.toml',\n 'programs/*/Cargo.toml',\n 'programs/*/src/**',\n ],\n },\n });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n expect(existsSync(join(scopedRoot, 'apps', 'current'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'anchor-dep', 'Anchor.toml'))).toBe(true);\n expect(\n existsSync(\n join(scopedRoot, 'packages', 'anchor-dep', 'programs', 'demo', 'Cargo.toml'),\n ),\n ).toBe(true);\n expect(\n existsSync(\n join(scopedRoot, 'packages', 'anchor-dep', 'programs', 'demo', 'src', 'lib.rs'),\n ),\n ).toBe(true);\n expect(\n existsSync(join(scopedRoot, 'packages', 'anchor-dep', 'programs', 'demo', 'tests')),\n ).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'utility-dep', 'src', 'index.ts'))).toBe(\n true,\n );\n });\n});\n\ndescribe(createScopedWorkspace, () => {\n it('uses the unpruned source-copy fallback when no pruner is configured', async () => {\n const repo = createRepo('scoped-workspace-fallback');\n const current = join(repo, 'apps', 'current');\n const dep = join(repo, 'packages', 'dep');\n mkdirSync(join(repo, 'node_modules', '.pnpm'), { recursive: true });\n createPackage(current, '@layerzerolabs/current', {\n 'src/index.ts': 'export const current = true',\n });\n createPackage(dep, '@layerzerolabs/dep', {\n 'src/index.ts': 'export const dep = true',\n });\n writeLockfile(\n repo,\n `\n apps/current:\n dependencies:\n '@layerzerolabs/dep':\n specifier: workspace:*\n version: link:../../packages/dep\n\n packages/dep:\n devDependencies: {}\n`,\n );\n\n const result = await createScopedWorkspace({ cwd: current });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n expect(result.prunerName).toBeUndefined();\n expect(result.diagnostics).toEqual([\n 'No scoped-workspace pruner configured; using unpruned package-level source copy fallback.',\n ]);\n expect(result.copiedWorkspacePackageCount).toBe(1);\n expect(result.copiedWorkspacePackagePaths).toEqual({\n 'packages/dep': realpathSync(dep),\n });\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'src', 'index.ts'))).toBe(true);\n expect(existsSync(join(scopedRoot, 'apps', 'current'))).toBe(false);\n });\n\n it('uses a configured pruner to filter dependency package copies', async () => {\n const repo = createRepo('scoped-workspace-pruner');\n const current = join(repo, 'apps', 'current');\n const dep = join(repo, 'packages', 'dep');\n const inputs: Parameters<ScopedWorkspacePruner['createPrunePlan']>[0][] = [];\n const pruner: ScopedWorkspacePruner = {\n name: 'test-pruner',\n createPrunePlan: async (input) => {\n inputs.push(input);\n return {\n patterns: [],\n packagePatterns: {\n 'apps/current': ['src/**'],\n 'packages/dep': [...DEFAULT_SOURCE_COPY_PATTERNS, '!tests/**'],\n },\n diagnostics: ['planned current package inputs'],\n };\n },\n };\n\n mkdirSync(join(repo, 'node_modules', '.pnpm'), { recursive: true });\n createPackage(current, '@layerzerolabs/current', {\n 'src/index.ts': 'export const current = true',\n 'tests/secret.ts': 'export const secret = true',\n });\n createPackage(dep, '@layerzerolabs/dep', {\n 'src/index.ts': 'export const dep = true',\n 'tests/fixture.ts': 'export const secret = true',\n });\n writeLockfile(\n repo,\n `\n apps/current:\n dependencies:\n '@layerzerolabs/dep':\n specifier: workspace:*\n version: link:../../packages/dep\n\n packages/dep:\n devDependencies: {}\n`,\n );\n\n const result = await createScopedWorkspace({\n cwd: current,\n pruner,\n });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n expect(inputs).toHaveLength(1);\n const firstInput = inputs[0]!;\n\n expect(firstInput).toMatchObject({\n repoRoot: realpathSync(repo),\n packageRoot: realpathSync(current),\n packageRelativePath: 'apps/current',\n cwd: current,\n });\n expect(\n firstInput.dependencyGraph.includedWorkspaceDependencies.map(\n ({ relativePath }) => relativePath,\n ),\n ).toEqual(['packages/dep']);\n expect(result.prunerName).toBe('test-pruner');\n expect(result.diagnostics).toEqual(['planned current package inputs']);\n expect(result.copiedWorkspacePackageCount).toBe(1);\n expect(result.copiedWorkspacePackagePaths).toEqual({\n 'packages/dep': realpathSync(dep),\n });\n expect(existsSync(join(scopedRoot, 'apps', 'current'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'src', 'index.ts'))).toBe(true);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'tests'))).toBe(false);\n });\n\n it('uses default dependency copies for pruned packages without package-specific patterns', async () => {\n const repo = createRepo('scoped-workspace-empty-global-patterns');\n const current = join(repo, 'apps', 'current');\n const prunedDep = join(repo, 'packages', 'pruned-dep');\n const defaultDep = join(repo, 'packages', 'default-dep');\n const pruner: ScopedWorkspacePruner = {\n name: 'test-pruner',\n createPrunePlan: async () => ({\n patterns: [],\n packagePatterns: {\n 'packages/pruned-dep': ['src/**'],\n },\n }),\n };\n\n mkdirSync(join(repo, 'node_modules', '.pnpm'), { recursive: true });\n createPackage(current, '@layerzerolabs/current', {\n 'src/index.ts': 'export const current = true',\n });\n createPackage(prunedDep, '@layerzerolabs/pruned-dep', {\n 'src/index.ts': 'export const pruned = true',\n 'tests/fixture.ts': 'export const fixture = true',\n });\n createPackage(defaultDep, '@layerzerolabs/default-dep', {\n 'src/index.ts': 'export const defaultDep = true',\n });\n writeLockfile(\n repo,\n `\n apps/current:\n dependencies:\n '@layerzerolabs/pruned-dep':\n specifier: workspace:*\n version: link:../../packages/pruned-dep\n '@layerzerolabs/default-dep':\n specifier: workspace:*\n version: link:../../packages/default-dep\n\n packages/default-dep:\n devDependencies: {}\n\n packages/pruned-dep:\n devDependencies: {}\n`,\n );\n\n const result = await createScopedWorkspace({\n cwd: current,\n pruner,\n });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n expect(existsSync(join(scopedRoot, 'packages', 'pruned-dep', 'src', 'index.ts'))).toBe(\n true,\n );\n expect(existsSync(join(scopedRoot, 'packages', 'pruned-dep', 'tests'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'default-dep', 'src', 'index.ts'))).toBe(\n true,\n );\n });\n});\n\ndescribe(copyRootNodeModulesSymlinks, () => {\n it('copies only selected root dependency symlinks without copying dependency contents', async () => {\n const repo = createRepo('node-modules-symlinks');\n const scopedRoot = join(TMP, 'scoped-node-modules-symlinks');\n const dep = join(repo, 'apps', 'oapp-app', 'contracts', 'solana');\n\n createPackage(dep, '@layerzerolabs/oapp-solana-impl');\n mkdirSync(join(repo, 'node_modules', '.pnpm'), { recursive: true });\n mkdirSync(join(repo, 'node_modules', '.bin'), { recursive: true });\n mkdirSync(join(repo, 'node_modules', '@types'), { recursive: true });\n mkdirSync(join(repo, 'node_modules', '@layerzerolabs'), { recursive: true });\n writeFileSync(join(repo, 'node_modules', '.bin', 'real-file'), 'do not copy');\n mkdirSync(join(scopedRoot, 'apps', 'oapp-app', 'contracts', 'solana'), { recursive: true });\n symlinkSync('.pnpm/eslint@1.0.0/node_modules/eslint', join(repo, 'node_modules', 'eslint'));\n symlinkSync(\n '../.pnpm/typescript@1.0.0/node_modules/typescript/bin/tsc',\n join(repo, 'node_modules', '.bin', 'tsc'),\n );\n symlinkSync(\n '../.pnpm/@types+node@1.0.0/node_modules/@types/node',\n join(repo, 'node_modules', '@types', 'node'),\n );\n symlinkSync(\n '../../apps/oapp-app/contracts/solana',\n join(repo, 'node_modules', '@layerzerolabs', 'oapp-solana-impl'),\n );\n symlinkSync('../..', join(repo, 'node_modules', '@layerzerolabs', 'whole-repo-link'));\n\n const result = await copyRootNodeModulesSymlinks({\n repoRoot: repo,\n scopedRoot,\n dependencyNames: ['@layerzerolabs/oapp-solana-impl', '@types/node', 'eslint'],\n });\n\n expect(result.nodeModulesPath).toBe(join(scopedRoot, 'node_modules'));\n expect(result.symlinks).toEqual([\n '@layerzerolabs/oapp-solana-impl',\n '@types/node',\n 'eslint',\n ]);\n expect(readlinkSync(join(scopedRoot, 'node_modules', 'eslint'))).toBe(\n '.pnpm/eslint@1.0.0/node_modules/eslint',\n );\n expect(lstatSync(join(scopedRoot, 'node_modules', '.pnpm')).isDirectory()).toBe(true);\n expect(existsSync(join(scopedRoot, 'node_modules', '.bin', 'real-file'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'node_modules', '.bin', 'tsc'))).toBe(false);\n expect(lstatSync(join(scopedRoot, 'node_modules', '@types', 'node')).isSymbolicLink()).toBe(\n true,\n );\n expect(\n lstatSync(\n join(scopedRoot, 'node_modules', '@layerzerolabs', 'oapp-solana-impl'),\n ).isSymbolicLink(),\n ).toBe(true);\n expect(\n readlinkSync(join(scopedRoot, 'node_modules', '@layerzerolabs', 'oapp-solana-impl')),\n ).toBe('../../apps/oapp-app/contracts/solana');\n expect(\n existsSync(join(scopedRoot, 'node_modules', '@layerzerolabs', 'whole-repo-link')),\n ).toBe(false);\n });\n});\n\ndescribe(getPnpmVirtualStoreMount, () => {\n it('describes a read-only .pnpm mount without requiring root node_modules copy', () => {\n expect(getPnpmVirtualStoreMount('/repo')).toEqual({\n hostPath: '/repo/node_modules/.pnpm',\n containerPath: '/workspace/node_modules/.pnpm',\n readOnly: true,\n });\n });\n});\n"]}
@@ -29,7 +29,7 @@ export interface WorkspaceSourceCopyOptions {
29
29
  export interface WorkspaceSourceCopyResult {
30
30
  repoRoot: string;
31
31
  packageRoot: string;
32
- miniRoot: string;
32
+ scopedRoot: string;
33
33
  packageRelativePath: string;
34
34
  copiedWorkspaceDependencies: WorkspaceDependencyEdge[];
35
35
  }
@@ -40,21 +40,21 @@ export interface PnpmVirtualStoreMount {
40
40
  }
41
41
  export interface RootNodeModulesSymlinkCopyOptions {
42
42
  repoRoot: string;
43
- miniRoot: string;
43
+ scopedRoot: string;
44
44
  dependencyNames: readonly string[];
45
45
  }
46
46
  export interface RootNodeModulesSymlinkCopyResult {
47
47
  nodeModulesPath: string;
48
48
  symlinks: string[];
49
49
  }
50
- export interface MiniWorkspaceOptions {
50
+ export interface ScopedWorkspaceOptions {
51
51
  cwd?: string;
52
- pruner?: MiniWorkspacePruner;
52
+ pruner?: ScopedWorkspacePruner;
53
53
  }
54
- export interface MiniWorkspace {
54
+ export interface ScopedWorkspace {
55
55
  packageRoot: string;
56
56
  repoRoot: string;
57
- miniRoot: string;
57
+ scopedRoot: string;
58
58
  packageRelativePath: string;
59
59
  pnpmVirtualStoreMount: PnpmVirtualStoreMount;
60
60
  copiedWorkspacePackageCount: number;
@@ -62,18 +62,18 @@ export interface MiniWorkspace {
62
62
  prunerName?: string;
63
63
  diagnostics: string[];
64
64
  }
65
- export interface MiniWorkspacePruner {
65
+ export interface ScopedWorkspacePruner {
66
66
  name: string;
67
- createPrunePlan: (input: MiniWorkspacePrunerInput) => Promise<MiniWorkspacePrunePlan>;
67
+ createPrunePlan: (input: ScopedWorkspacePrunerInput) => Promise<ScopedWorkspacePrunePlan>;
68
68
  }
69
- export interface MiniWorkspacePrunerInput {
69
+ export interface ScopedWorkspacePrunerInput {
70
70
  repoRoot: string;
71
71
  packageRoot: string;
72
72
  packageRelativePath: string;
73
73
  cwd: string;
74
74
  dependencyGraph: WorkspaceDependencyGraph;
75
75
  }
76
- export interface MiniWorkspacePrunePlan {
76
+ export interface ScopedWorkspacePrunePlan {
77
77
  patterns: readonly string[];
78
78
  /** Overrides keyed by workspace package relative path. */
79
79
  packagePatterns?: Readonly<Record<string, readonly string[]>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scoped-workspace/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { init_esm_shims } from '../TXIQ74D3.js';
2
+
3
+ // src/scoped-workspace/types.ts
4
+ init_esm_shims();
5
+ //# sourceMappingURL=types.js.map
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/scoped-workspace/types.ts"],"names":[],"mappings":";;;AAuFA,cAAA,EAAA","file":"types.js","sourcesContent":["export interface WorkspaceDependencyEdge {\n name: string;\n importerRelativePath: string;\n relativePath: string;\n absolutePath: string;\n version: string;\n}\n\nexport interface WorkspaceDependencyGraph {\n repoRoot: string;\n packageRoot: string;\n packageRelativePath: string;\n /** Root node_modules symlink names referenced by the workspace package closure. */\n rootNodeModulesDependencyNames: string[];\n includedWorkspaceDependencies: WorkspaceDependencyEdge[];\n}\n\nexport interface WorkspaceDependencyGraphOptions {\n /** Package root whose workspace dependency graph should be calculated. */\n cwd?: string;\n /** Repository root. Defaults to the nearest ancestor containing pnpm-workspace.yaml. */\n repoRoot?: string;\n}\n\nexport interface WorkspaceSourceCopyOptions {\n dependencyGraph: WorkspaceDependencyGraph;\n /** Ordered package-relative include/exclude expressions for workspace source copies. */\n prunePatterns?: readonly string[];\n /** Package-relative path overrides for workspace source copies. */\n packagePrunePatterns?: Readonly<Record<string, readonly string[]>>;\n}\n\nexport interface WorkspaceSourceCopyResult {\n repoRoot: string;\n packageRoot: string;\n scopedRoot: string;\n packageRelativePath: string;\n copiedWorkspaceDependencies: WorkspaceDependencyEdge[];\n}\n\nexport interface PnpmVirtualStoreMount {\n hostPath: string;\n containerPath: string;\n readOnly: true;\n}\n\nexport interface RootNodeModulesSymlinkCopyOptions {\n repoRoot: string;\n scopedRoot: string;\n dependencyNames: readonly string[];\n}\n\nexport interface RootNodeModulesSymlinkCopyResult {\n nodeModulesPath: string;\n symlinks: string[];\n}\n\nexport interface ScopedWorkspaceOptions {\n cwd?: string;\n pruner?: ScopedWorkspacePruner;\n}\n\nexport interface ScopedWorkspace {\n packageRoot: string;\n repoRoot: string;\n scopedRoot: string;\n packageRelativePath: string;\n pnpmVirtualStoreMount: PnpmVirtualStoreMount;\n copiedWorkspacePackageCount: number;\n copiedWorkspacePackagePaths: Record<string, string>;\n prunerName?: string;\n diagnostics: string[];\n}\n\nexport interface ScopedWorkspacePruner {\n name: string;\n createPrunePlan: (input: ScopedWorkspacePrunerInput) => Promise<ScopedWorkspacePrunePlan>;\n}\n\nexport interface ScopedWorkspacePrunerInput {\n repoRoot: string;\n packageRoot: string;\n packageRelativePath: string;\n cwd: string;\n dependencyGraph: WorkspaceDependencyGraph;\n}\n\nexport interface ScopedWorkspacePrunePlan {\n patterns: readonly string[];\n /** Overrides keyed by workspace package relative path. */\n packagePatterns?: Readonly<Record<string, readonly string[]>>;\n diagnostics?: readonly string[];\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-dependency-graph.d.ts","sourceRoot":"","sources":["../../src/scoped-workspace/workspace-dependency-graph.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAER,wBAAwB,EACxB,+BAA+B,EAClC,MAAM,SAAS,CAAC;AA2KjB;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,GACxC,UAAS,+BAAoC,KAC9C,OAAO,CAAC,wBAAwB,CA6ElC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { resolveWorkspaceDependencyGraph } from '../EHGHQQRV.js';
2
+ import '../GBRJXN7L.js';
3
+ import '../YHTRUOFZ.js';
4
+ import '../X6QPMSID.js';
5
+ import '../TXIQ74D3.js';
6
+ //# sourceMappingURL=workspace-dependency-graph.js.map
7
+ //# sourceMappingURL=workspace-dependency-graph.js.map
@@ -3,7 +3,7 @@ export declare const DEFAULT_SOURCE_COPY_PATTERNS: readonly ["**/*"];
3
3
  export declare const DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS: readonly ["!**/.git/**", "!**/.next/**", "!**/.pnpm/**", "!**/.turbo/**", "!**/artifacts*/**", "!**/build/**", "!**/cache/**", "!**/debug_info/**", "!**/hh-cache/**", "!**/out/**", "!**/target/**", "!**/typechain-types/**"];
4
4
  /**
5
5
  * Copy only dependency source-like files for the resolved workspace dependency graph into a
6
- * repo-shaped mini workspace.
6
+ * repo-shaped scoped workspace.
7
7
  *
8
8
  * The current package itself is not copied. It is mounted from the host at the same repo-relative
9
9
  * path by the Docker executor so package-local build outputs such as `target`, `build`, and
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-source-copy.d.ts","sourceRoot":"","sources":["../../src/scoped-workspace/workspace-source-copy.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAErF,eAAO,MAAM,4BAA4B,mBAAoB,CAAC;AAS9D,eAAO,MAAM,oCAAoC,iOAavC,CAAC;AAwGX;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,0BAA0B,KACpC,OAAO,CAAC,yBAAyB,CAuDnC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, copyWorkspaceSources } from '../TWG6SAKX.js';
2
+ import '../GBRJXN7L.js';
3
+ import '../2BEUXSFW.js';
4
+ import '../TXIQ74D3.js';
5
+ //# sourceMappingURL=workspace-source-copy.js.map
6
+ //# sourceMappingURL=workspace-source-copy.js.map
package/dist/test.js CHANGED
@@ -1,8 +1,8 @@
1
- export { testTools } from './7AOPRLRU.js';
2
- import './H7PAZQ2B.js';
3
- import './4LO2IH4K.js';
4
- import './DHOHK2AA.js';
5
- import './UBSQYHMB.js';
6
- import './6M2RYAT4.js';
1
+ export { testTools } from './52SW5N2L.js';
2
+ import './JYAWK6HD.js';
3
+ import './HYD54MGL.js';
4
+ import './RORYN2CM.js';
5
+ import './X6QPMSID.js';
6
+ import './TXIQ74D3.js';
7
7
  //# sourceMappingURL=test.js.map
8
8
  //# sourceMappingURL=test.js.map