@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.
- package/dist/{ZBEXHZRK.js → 2BEUXSFW.js} +6 -6
- package/dist/2BEUXSFW.js.map +1 -0
- package/dist/{CWBC3WMF.js → 2PIH5TOH.js} +3 -3
- package/dist/{CWBC3WMF.js.map → 2PIH5TOH.js.map} +1 -1
- package/dist/{B4G2AL5H.js → 3B3W576M.js} +15 -15
- package/dist/3B3W576M.js.map +1 -0
- package/dist/{5GPTK3MH.js → 3G6UO37X.js} +4 -4
- package/dist/{5GPTK3MH.js.map → 3G6UO37X.js.map} +1 -1
- package/dist/{WTU5LLJL.js → 3LCQOITB.js} +5 -5
- package/dist/{WTU5LLJL.js.map → 3LCQOITB.js.map} +1 -1
- package/dist/3N42XVZL.js +6 -0
- package/dist/{7ZZ35UQB.js.map → 3N42XVZL.js.map} +1 -1
- package/dist/{7AOPRLRU.js → 52SW5N2L.js} +4 -4
- package/dist/{7AOPRLRU.js.map → 52SW5N2L.js.map} +1 -1
- package/dist/{64WQVYV7.js → 6HWTBKK6.js} +28 -28
- package/dist/6HWTBKK6.js.map +1 -0
- package/dist/{ID575YY3.js → EHGHQQRV.js} +6 -6
- package/dist/EHGHQQRV.js.map +1 -0
- package/dist/{EN67HYJT.js → FFE7SXCG.js} +3 -3
- package/dist/{EN67HYJT.js.map → FFE7SXCG.js.map} +1 -1
- package/dist/{SKMNEOBU.js → GBRJXN7L.js} +3 -3
- package/dist/{SKMNEOBU.js.map → GBRJXN7L.js.map} +1 -1
- package/dist/{H7YRHR5O.js → H6FLARPD.js} +3 -3
- package/dist/{H7YRHR5O.js.map → H6FLARPD.js.map} +1 -1
- package/dist/{4LO2IH4K.js → HYD54MGL.js} +4 -4
- package/dist/HYD54MGL.js.map +1 -0
- package/dist/{DCLKPAAD.js → IPZ5KX7M.js} +3 -3
- package/dist/{DCLKPAAD.js.map → IPZ5KX7M.js.map} +1 -1
- package/dist/{H7PAZQ2B.js → JYAWK6HD.js} +5 -5
- package/dist/{H7PAZQ2B.js.map → JYAWK6HD.js.map} +1 -1
- package/dist/{4Y7MN3EA.js → LOCNB6C6.js} +5 -5
- package/dist/{4Y7MN3EA.js.map → LOCNB6C6.js.map} +1 -1
- package/dist/N53MNPWU.js +6 -0
- package/dist/{2ICMBBWU.js.map → N53MNPWU.js.map} +1 -1
- package/dist/{MAF3KTCC.js → PBCHVZQM.js} +5 -5
- package/dist/{MAF3KTCC.js.map → PBCHVZQM.js.map} +1 -1
- package/dist/{DHOHK2AA.js → RORYN2CM.js} +3 -3
- package/dist/{DHOHK2AA.js.map → RORYN2CM.js.map} +1 -1
- package/dist/{INJJFIX2.js → SQ7CSCOZ.js} +5 -5
- package/dist/{INJJFIX2.js.map → SQ7CSCOZ.js.map} +1 -1
- package/dist/{7QHFUB7K.js → TWG6SAKX.js} +11 -11
- package/dist/TWG6SAKX.js.map +1 -0
- package/dist/{6M2RYAT4.js → TXIQ74D3.js} +5 -9
- package/dist/TXIQ74D3.js.map +1 -0
- package/dist/{SU4VJ6AH.js → VPZLVFND.js} +8 -8
- package/dist/{SU4VJ6AH.js.map → VPZLVFND.js.map} +1 -1
- package/dist/{337JSZDD.js → VZXWHHPB.js} +4 -4
- package/dist/{337JSZDD.js.map → VZXWHHPB.js.map} +1 -1
- package/dist/{UBSQYHMB.js → X6QPMSID.js} +3 -3
- package/dist/{UBSQYHMB.js.map → X6QPMSID.js.map} +1 -1
- package/dist/{LYF4JPSK.js → YHTRUOFZ.js} +4 -4
- package/dist/{LYF4JPSK.js.map → YHTRUOFZ.js.map} +1 -1
- package/dist/cli.js +21 -21
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -3
- package/dist/context.js +1 -1
- package/dist/core/index.js +17 -17
- package/dist/core/local-executor.js +2 -2
- package/dist/core/local-executor.test.js +3 -3
- package/dist/core/lock.js +2 -2
- package/dist/core/lock.test.js +3 -3
- package/dist/core/tool-executor.js +16 -16
- package/dist/core/tool-executor.test.js +17 -17
- package/dist/core/version-resolver.js +4 -4
- package/dist/display/formatters.js +4 -4
- package/dist/display/index.js +6 -6
- package/dist/display/version-display.js +5 -5
- package/dist/environment.js +2 -2
- package/dist/github/index.js +7 -7
- package/dist/github/matrix.js +6 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -24
- package/dist/index.js.map +1 -1
- package/dist/scoped-workspace/index.d.ts +6 -0
- package/dist/scoped-workspace/index.d.ts.map +1 -0
- package/dist/scoped-workspace/index.js +10 -0
- package/dist/{mini-workspace → scoped-workspace}/node-modules.d.ts +3 -3
- package/dist/scoped-workspace/node-modules.d.ts.map +1 -0
- package/dist/scoped-workspace/node-modules.js +4 -0
- package/dist/{mini-workspace/mini-workspace.test.js → scoped-workspace/scoped-workspace.test.js} +88 -96
- package/dist/scoped-workspace/scoped-workspace.test.js.map +1 -0
- package/dist/{mini-workspace → scoped-workspace}/types.d.ts +10 -10
- package/dist/scoped-workspace/types.d.ts.map +1 -0
- package/dist/scoped-workspace/types.js +6 -0
- package/dist/scoped-workspace/types.js.map +1 -0
- package/dist/scoped-workspace/workspace-dependency-graph.d.ts.map +1 -0
- package/dist/scoped-workspace/workspace-dependency-graph.js +7 -0
- package/dist/{mini-workspace → scoped-workspace}/workspace-source-copy.d.ts +1 -1
- package/dist/scoped-workspace/workspace-source-copy.d.ts.map +1 -0
- package/dist/scoped-workspace/workspace-source-copy.js +6 -0
- package/dist/test.js +6 -6
- package/dist/utils/docker.js +5 -5
- package/dist/utils/docker.test.js +6 -6
- package/dist/utils/error.js +2 -2
- package/dist/utils/finder.js +2 -2
- package/dist/utils/fs.js +2 -2
- package/dist/utils.js +3 -3
- package/package.json +5 -5
- package/dist/2ICMBBWU.js +0 -6
- package/dist/4LO2IH4K.js.map +0 -1
- package/dist/64WQVYV7.js.map +0 -1
- package/dist/6M2RYAT4.js.map +0 -1
- package/dist/7QHFUB7K.js.map +0 -1
- package/dist/7ZZ35UQB.js +0 -6
- package/dist/B4G2AL5H.js.map +0 -1
- package/dist/ID575YY3.js.map +0 -1
- package/dist/ZBEXHZRK.js.map +0 -1
- package/dist/mini-workspace/index.d.ts +0 -6
- package/dist/mini-workspace/index.d.ts.map +0 -1
- package/dist/mini-workspace/index.js +0 -10
- package/dist/mini-workspace/mini-workspace.test.js.map +0 -1
- package/dist/mini-workspace/node-modules.d.ts.map +0 -1
- package/dist/mini-workspace/node-modules.js +0 -4
- package/dist/mini-workspace/types.d.ts.map +0 -1
- package/dist/mini-workspace/types.js +0 -6
- package/dist/mini-workspace/types.js.map +0 -1
- package/dist/mini-workspace/workspace-dependency-graph.d.ts.map +0 -1
- package/dist/mini-workspace/workspace-dependency-graph.js +0 -7
- package/dist/mini-workspace/workspace-source-copy.d.ts.map +0 -1
- package/dist/mini-workspace/workspace-source-copy.js +0 -6
- /package/dist/{mini-workspace → scoped-workspace}/index.js.map +0 -0
- /package/dist/{mini-workspace → scoped-workspace}/node-modules.js.map +0 -0
- /package/dist/{mini-workspace → scoped-workspace}/workspace-dependency-graph.d.ts +0 -0
- /package/dist/{mini-workspace → scoped-workspace}/workspace-dependency-graph.js.map +0 -0
- /package/dist/{mini-workspace → scoped-workspace}/workspace-source-copy.js.map +0 -0
package/dist/{mini-workspace/mini-workspace.test.js → scoped-workspace/scoped-workspace.test.js}
RENAMED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { afterAll, describe, it, globalExpect } from '../
|
|
2
|
-
import {
|
|
3
|
-
import { resolveWorkspaceDependencyGraph } from '../
|
|
4
|
-
import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS } from '../
|
|
5
|
-
import '../
|
|
6
|
-
import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from '../
|
|
7
|
-
import '../
|
|
8
|
-
import '../
|
|
9
|
-
import { init_esm_shims,
|
|
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/
|
|
14
|
+
// src/scoped-workspace/scoped-workspace.test.ts
|
|
15
15
|
init_esm_shims();
|
|
16
|
-
var TMP = mkdtempSync(join(tmpdir(), "lz-
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
}, "
|
|
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
|
|
66
|
-
rmSync(
|
|
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
|
|
266
|
+
const scopedRoot = trackScopedRoot(result.scopedRoot);
|
|
275
267
|
globalExpect(result.copiedWorkspaceDependencies).toHaveLength(1);
|
|
276
|
-
globalExpect(existsSync(join(
|
|
277
|
-
globalExpect(existsSync(join(
|
|
278
|
-
globalExpect(existsSync(join(
|
|
279
|
-
globalExpect(existsSync(join(
|
|
280
|
-
globalExpect(existsSync(join(
|
|
281
|
-
globalExpect(existsSync(join(
|
|
282
|
-
globalExpect(lstatSync(join(
|
|
283
|
-
globalExpect(readlinkSync(join(
|
|
284
|
-
globalExpect(lstatSync(join(
|
|
285
|
-
globalExpect(readlinkSync(join(
|
|
286
|
-
globalExpect(existsSync(join(
|
|
287
|
-
globalExpect(existsSync(join(
|
|
288
|
-
globalExpect(existsSync(join(
|
|
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
|
|
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
|
|
336
|
-
globalExpect(existsSync(join(
|
|
337
|
-
globalExpect(existsSync(join(
|
|
338
|
-
globalExpect(existsSync(join(
|
|
339
|
-
globalExpect(existsSync(join(
|
|
340
|
-
globalExpect(existsSync(join(
|
|
341
|
-
globalExpect(existsSync(join(
|
|
342
|
-
globalExpect(existsSync(join(
|
|
343
|
-
globalExpect(existsSync(join(
|
|
344
|
-
globalExpect(existsSync(join(
|
|
345
|
-
globalExpect(existsSync(join(
|
|
346
|
-
globalExpect(lstatSync(join(
|
|
347
|
-
globalExpect(existsSync(join(
|
|
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
|
|
395
|
-
const nestedLink = join(
|
|
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
|
|
454
|
-
globalExpect(existsSync(join(
|
|
455
|
-
globalExpect(existsSync(join(
|
|
456
|
-
globalExpect(existsSync(join(
|
|
457
|
-
globalExpect(existsSync(join(
|
|
458
|
-
globalExpect(existsSync(join(
|
|
459
|
-
globalExpect(existsSync(join(
|
|
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(
|
|
454
|
+
describe(createScopedWorkspace, () => {
|
|
463
455
|
it("uses the unpruned source-copy fallback when no pruner is configured", async () => {
|
|
464
|
-
const repo = createRepo("
|
|
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
|
|
478
|
+
const result = await createScopedWorkspace({
|
|
487
479
|
cwd: current
|
|
488
480
|
});
|
|
489
|
-
const
|
|
481
|
+
const scopedRoot = trackScopedRoot(result.scopedRoot);
|
|
490
482
|
globalExpect(result.prunerName).toBeUndefined();
|
|
491
483
|
globalExpect(result.diagnostics).toEqual([
|
|
492
|
-
"No
|
|
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(
|
|
499
|
-
globalExpect(existsSync(join(
|
|
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("
|
|
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
|
|
540
|
+
const result = await createScopedWorkspace({
|
|
549
541
|
cwd: current,
|
|
550
542
|
pruner
|
|
551
543
|
});
|
|
552
|
-
const
|
|
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(
|
|
573
|
-
globalExpect(existsSync(join(
|
|
574
|
-
globalExpect(existsSync(join(
|
|
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("
|
|
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
|
|
613
|
+
const result = await createScopedWorkspace({
|
|
622
614
|
cwd: current,
|
|
623
615
|
pruner
|
|
624
616
|
});
|
|
625
|
-
const
|
|
626
|
-
globalExpect(existsSync(join(
|
|
627
|
-
globalExpect(existsSync(join(
|
|
628
|
-
globalExpect(existsSync(join(
|
|
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
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
674
|
-
globalExpect(lstatSync(join(
|
|
675
|
-
globalExpect(existsSync(join(
|
|
676
|
-
globalExpect(existsSync(join(
|
|
677
|
-
globalExpect(lstatSync(join(
|
|
678
|
-
globalExpect(lstatSync(join(
|
|
679
|
-
globalExpect(readlinkSync(join(
|
|
680
|
-
globalExpect(existsSync(join(
|
|
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=
|
|
693
|
-
//# sourceMappingURL=
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
50
|
+
export interface ScopedWorkspaceOptions {
|
|
51
51
|
cwd?: string;
|
|
52
|
-
pruner?:
|
|
52
|
+
pruner?: ScopedWorkspacePruner;
|
|
53
53
|
}
|
|
54
|
-
export interface
|
|
54
|
+
export interface ScopedWorkspace {
|
|
55
55
|
packageRoot: string;
|
|
56
56
|
repoRoot: string;
|
|
57
|
-
|
|
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
|
|
65
|
+
export interface ScopedWorkspacePruner {
|
|
66
66
|
name: string;
|
|
67
|
-
createPrunePlan: (input:
|
|
67
|
+
createPrunePlan: (input: ScopedWorkspacePrunerInput) => Promise<ScopedWorkspacePrunePlan>;
|
|
68
68
|
}
|
|
69
|
-
export interface
|
|
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
|
|
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 @@
|
|
|
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
|
|
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 './
|
|
2
|
-
import './
|
|
3
|
-
import './
|
|
4
|
-
import './
|
|
5
|
-
import './
|
|
6
|
-
import './
|
|
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
|