@layerzerolabs/vm-tooling 1.2.12 → 1.2.13
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/BKDTYYTO.js +23 -0
- package/dist/BKDTYYTO.js.map +1 -0
- package/dist/{S72E7TE5.js → EITIWAHW.js} +3 -3
- package/dist/EITIWAHW.js.map +1 -0
- package/dist/{O5XBAHB3.js → LGZABPAO.js} +14 -26
- package/dist/LGZABPAO.js.map +1 -0
- package/dist/{USIF66ZJ.js → USAMINHV.js} +3 -3
- package/dist/{USIF66ZJ.js.map → USAMINHV.js.map} +1 -1
- package/dist/{H2SHSLKO.js → Z35XTD72.js} +3 -3
- package/dist/{H2SHSLKO.js.map → Z35XTD72.js.map} +1 -1
- package/dist/cli.js +5 -4
- package/dist/core/index.js +4 -3
- package/dist/core/tool-executor.js +4 -3
- package/dist/core/tool-executor.test.js +4 -3
- package/dist/core/tool-executor.test.js.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/scoped-workspace/exclude-workspace-dependency-sources-pruner.d.ts +11 -0
- package/dist/scoped-workspace/exclude-workspace-dependency-sources-pruner.d.ts.map +1 -0
- package/dist/scoped-workspace/exclude-workspace-dependency-sources-pruner.js +4 -0
- package/dist/scoped-workspace/exclude-workspace-dependency-sources-pruner.js.map +1 -0
- package/dist/scoped-workspace/index.d.ts +2 -1
- package/dist/scoped-workspace/index.d.ts.map +1 -1
- package/dist/scoped-workspace/index.js +3 -2
- package/dist/scoped-workspace/tests/exclude-workspace-dependency-sources-pruner.test.js +49 -0
- package/dist/scoped-workspace/tests/exclude-workspace-dependency-sources-pruner.test.js.map +1 -0
- package/dist/scoped-workspace/{scoped-workspace.test.js → tests/scoped-workspace.test.js} +54 -16
- package/dist/scoped-workspace/tests/scoped-workspace.test.js.map +1 -0
- package/dist/scoped-workspace/workspace-source-copy.d.ts +5 -5
- package/dist/scoped-workspace/workspace-source-copy.d.ts.map +1 -1
- package/dist/scoped-workspace/workspace-source-copy.js +1 -1
- package/package.json +7 -7
- package/dist/O5XBAHB3.js.map +0 -1
- package/dist/S72E7TE5.js.map +0 -1
- package/dist/scoped-workspace/scoped-workspace.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/tool-executor.test.ts"],"names":["cacheVolume","type","containerPath","CARGO_TARGET_CACHE_PATH","name","withCache","cacheEnv","value","describe","resolveCargoCacheEnv","it","each","script","expect","toEqual","otherVolumes","undefined","renamed","mergeToolEnv","userEnv"],"mappings":"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","file":"tool-executor.test.js","sourcesContent":["import { describe, expect, it } from 'vitest';\n\nimport type { EnvironmentVariable, VolumeMapping } from '../config';\nimport { CARGO_TARGET_CACHE_PATH } from '../config';\nimport { mergeToolEnv, resolveCargoCacheEnv } from './tool-executor';\n\nconst cacheVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: CARGO_TARGET_CACHE_PATH,\n name: 'solana-target',\n};\n\nconst withCache: readonly VolumeMapping[] = [cacheVolume];\nconst cacheEnv = [{ name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH }];\n\ndescribe(resolveCargoCacheEnv, () => {\n describe('cache-safe scripts redirect at the shared cache', () => {\n it.each([\n 'cargo test -p anchor-trait --lib --tests',\n 'cargo test --manifest-path macros/examples/vault/Cargo.toml --lib --tests',\n 'cargo test -p rbac --test trybuild -- --ignored',\n 'cargo test --package onesig -- tests --nocapture',\n 'cargo test-ellipse',\n 'cargo test-triangle',\n 'cargo check',\n 'cargo nextest run',\n 'cargo +nightly-2025-06-01 fmt -- --check && cargo clippy --all-targets',\n // builtin t=test / c=check aliases.\n 'cargo t',\n 'cargo c',\n 'cargo +nightly-2025-06-01 t --lib',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual(cacheEnv);\n });\n });\n\n describe('artifact-producing builds are never redirected', () => {\n it.each([\n 'anchor build --no-idl --ignore-keys',\n 'cargo build',\n 'cargo build-sbf',\n // test-sbf/test-bpf build .so despite the `test-` prefix.\n 'cargo test-sbf',\n 'cargo test-bpf --features foo',\n // Dashed binary forms (the real protocol `test` script is `cargo-test-sbf`) — the\n // space-anchored cargo branch misses these, so they need their own alternative.\n 'cargo-test-sbf',\n 'cargo-build-sbf',\n 'cargo-build-bpf --features x',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n\n it('skips when a build and a test share one script (build half must reach the host)', () => {\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('anchor build && cargo test --lib', withCache)).toEqual([]);\n // builtin b=build alias must still defeat the redirect when paired with a test.\n expect(resolveCargoCacheEnv('cargo b && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('cargo b && cargo t', withCache)).toEqual([]);\n // `anchor idl build` emits host IDL JSON — must defeat the redirect like any build.\n expect(\n resolveCargoCacheEnv('cargo test --lib && anchor idl build -o x.json', withCache),\n ).toEqual([]);\n // Dashed sbf binary glued to a cache-safe verb must still defeat the redirect.\n expect(resolveCargoCacheEnv('cargo test --lib && cargo-build-sbf', withCache)).toEqual(\n [],\n );\n // `anchor test` builds the program + IDL before running, and `cargo rustc` compiles —\n // both must defeat the redirect when paired with a cache-safe verb.\n expect(resolveCargoCacheEnv('anchor test && cargo test --lib', withCache)).toEqual([]);\n expect(\n resolveCargoCacheEnv('cargo rustc -- --emit=obj && cargo test', withCache),\n ).toEqual([]);\n });\n\n // The build must be detected even when glued straight to a shell separator with no space\n // (`;`, `&&`) — otherwise the build half silently redirects its .so/IDL into the cache.\n it.each([\n 'cargo build; cargo test',\n 'cargo build&&cargo test',\n 'cargo build-sbf;cargo test',\n 'cargo b;cargo test',\n 'cargo b&&cargo t',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n });\n\n describe('commands outside the cache-safe allowlist are not redirected', () => {\n it.each(['cargo +nightly-2025-06-01 fmt', 'cargo +nightly-2025-06-01 fmt -- --check'])(\n '%s',\n (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n },\n );\n });\n\n it('does nothing when the tool mounts no /cargo-target cache volume', () => {\n const otherVolumes: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: '/usr/local/cargo', name: 'solana-cargo' },\n ];\n expect(resolveCargoCacheEnv('cargo test -p oft --lib --tests', otherVolumes)).toEqual([]);\n });\n\n it('returns nothing for an empty or absent script (non --script invocations)', () => {\n expect(resolveCargoCacheEnv(undefined, withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('', withCache)).toEqual([]);\n });\n\n it('does not match cargo substrings inside other words', () => {\n expect(resolveCargoCacheEnv('mycargo testlike', withCache)).toEqual([]);\n });\n\n it('tolerates irregular whitespace around the command', () => {\n // \\s+ / \\b mean extra spaces, tabs, and leading whitespace do not defeat matching.\n expect(resolveCargoCacheEnv(' cargo test --lib', withCache)).toEqual(cacheEnv);\n expect(resolveCargoCacheEnv('cargo\\ttest', withCache)).toEqual(cacheEnv);\n // ...and the build exclusion is equally whitespace-insensitive.\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n });\n\n it('finds the cache volume by containerPath, regardless of its name', () => {\n // Lookup is keyed on the mount path, not the 'solana-target' name — any isolate volume\n // mounted at the cache path triggers the redirect.\n const renamed: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: CARGO_TARGET_CACHE_PATH, name: 'custom-target' },\n ];\n expect(resolveCargoCacheEnv('cargo test', renamed)).toEqual([\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ]);\n });\n});\n\ndescribe(mergeToolEnv, () => {\n const cacheEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ];\n\n it('keeps the higher-precedence (earlier) layer on a name collision', () => {\n const userEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: '/host/target' },\n ];\n // cacheEnv is passed last (lowest precedence); a user override must survive.\n expect(mergeToolEnv(userEnv, [], [], cacheEnv)).toEqual(userEnv);\n });\n\n it('applies the cache redirect only when nothing upstream sets the var', () => {\n expect(mergeToolEnv([], [], [], cacheEnv)).toEqual(cacheEnv);\n });\n\n it('preserves order and de-dupes across layers', () => {\n expect(\n mergeToolEnv(\n [{ name: 'A', value: '1' }],\n [{ name: 'B', value: '2' }],\n [{ name: 'A', value: 'shadowed' }],\n ),\n ).toEqual([\n { name: 'A', value: '1' },\n { name: 'B', value: '2' },\n ]);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/core/tool-executor.test.ts"],"names":["cacheVolume","type","containerPath","CARGO_TARGET_CACHE_PATH","name","withCache","cacheEnv","value","describe","resolveCargoCacheEnv","it","each","script","expect","toEqual","otherVolumes","undefined","renamed","mergeToolEnv","userEnv"],"mappings":"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","file":"tool-executor.test.js","sourcesContent":["import { describe, expect, it } from 'vitest';\n\nimport type { EnvironmentVariable, VolumeMapping } from '../config';\nimport { CARGO_TARGET_CACHE_PATH } from '../config';\nimport { mergeToolEnv, resolveCargoCacheEnv } from './tool-executor';\n\nconst cacheVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: CARGO_TARGET_CACHE_PATH,\n name: 'solana-target',\n};\n\nconst withCache: readonly VolumeMapping[] = [cacheVolume];\nconst cacheEnv = [{ name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH }];\n\ndescribe(resolveCargoCacheEnv, () => {\n describe('cache-safe scripts redirect at the shared cache', () => {\n it.each([\n 'cargo test -p anchor-trait --lib --tests',\n 'cargo test --manifest-path macros/examples/vault/Cargo.toml --lib --tests',\n 'cargo test -p rbac --test trybuild -- --ignored',\n 'cargo test --package onesig -- tests --nocapture',\n 'cargo test-ellipse',\n 'cargo test-triangle',\n 'cargo check',\n 'cargo nextest run',\n 'cargo +nightly-2025-06-01 fmt -- --check && cargo clippy --all-targets',\n // builtin t=test / c=check aliases.\n 'cargo t',\n 'cargo c',\n 'cargo +nightly-2025-06-01 t --lib',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual(cacheEnv);\n });\n });\n\n describe('artifact-producing builds are never redirected', () => {\n it.each([\n 'anchor build --no-idl --ignore-keys',\n 'cargo build',\n 'cargo build-sbf',\n // test-sbf/test-bpf build .so despite the `test-` prefix.\n 'cargo test-sbf',\n 'cargo test-bpf --features foo',\n // Dashed binary forms (the real protocol `test` script is `cargo-test-sbf`) — the\n // space-anchored cargo branch misses these, so they need their own alternative.\n 'cargo-test-sbf',\n 'cargo-build-sbf',\n 'cargo-build-bpf --features x',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n\n it('skips when a build and a test share one script (build half must reach the host)', () => {\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('anchor build && cargo test --lib', withCache)).toEqual([]);\n // builtin b=build alias must still defeat the redirect when paired with a test.\n expect(resolveCargoCacheEnv('cargo b && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('cargo b && cargo t', withCache)).toEqual([]);\n // `anchor idl build` emits host IDL JSON — must defeat the redirect like any build.\n expect(\n resolveCargoCacheEnv('cargo test --lib && anchor idl build -o x.json', withCache),\n ).toEqual([]);\n // Dashed sbf binary glued to a cache-safe verb must still defeat the redirect.\n expect(resolveCargoCacheEnv('cargo test --lib && cargo-build-sbf', withCache)).toEqual(\n [],\n );\n // `anchor test` builds the program + IDL before running, and `cargo rustc` compiles —\n // both must defeat the redirect when paired with a cache-safe verb.\n expect(resolveCargoCacheEnv('anchor test && cargo test --lib', withCache)).toEqual([]);\n expect(\n resolveCargoCacheEnv('cargo rustc -- --emit=obj && cargo test', withCache),\n ).toEqual([]);\n });\n\n // The build must be detected even when glued straight to a shell separator with no space\n // (`;`, `&&`) — otherwise the build half silently redirects its .so/IDL into the cache.\n it.each([\n 'cargo build; cargo test',\n 'cargo build&&cargo test',\n 'cargo build-sbf;cargo test',\n 'cargo b;cargo test',\n 'cargo b&&cargo t',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n });\n\n describe('commands outside the cache-safe allowlist are not redirected', () => {\n it.each(['cargo +nightly-2025-06-01 fmt', 'cargo +nightly-2025-06-01 fmt -- --check'])(\n '%s',\n (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n },\n );\n });\n\n it('does nothing when the tool mounts no /cargo-target cache volume', () => {\n const otherVolumes: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: '/usr/local/cargo', name: 'solana-cargo' },\n ];\n expect(resolveCargoCacheEnv('cargo test -p oft --lib --tests', otherVolumes)).toEqual([]);\n });\n\n it('returns nothing for an empty or absent script (non --script invocations)', () => {\n expect(resolveCargoCacheEnv(undefined, withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('', withCache)).toEqual([]);\n });\n\n it('does not match cargo substrings inside other words', () => {\n expect(resolveCargoCacheEnv('mycargo testlike', withCache)).toEqual([]);\n });\n\n it('tolerates irregular whitespace around the command', () => {\n // \\s+ / \\b mean extra spaces, tabs, and leading whitespace do not defeat matching.\n expect(resolveCargoCacheEnv(' cargo test --lib', withCache)).toEqual(cacheEnv);\n expect(resolveCargoCacheEnv('cargo\\ttest', withCache)).toEqual(cacheEnv);\n // ...and the build exclusion is equally whitespace-insensitive.\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n });\n\n it('finds the cache volume by containerPath, regardless of its name', () => {\n // Lookup is keyed on the mount path, not the 'solana-target' name — any isolate volume\n // mounted at the cache path triggers the redirect.\n const renamed: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: CARGO_TARGET_CACHE_PATH, name: 'custom-target' },\n ];\n expect(resolveCargoCacheEnv('cargo test', renamed)).toEqual([\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ]);\n });\n});\n\ndescribe(mergeToolEnv, () => {\n const cacheEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ];\n\n it('keeps the higher-precedence (earlier) layer on a name collision', () => {\n const userEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: '/host/target' },\n ];\n // cacheEnv is passed last (lowest precedence); a user override must survive.\n expect(mergeToolEnv(userEnv, [], [], cacheEnv)).toEqual(userEnv);\n });\n\n it('applies the cache redirect only when nothing upstream sets the var', () => {\n expect(mergeToolEnv([], [], [], cacheEnv)).toEqual(cacheEnv);\n });\n\n it('preserves order and de-dupes across layers', () => {\n expect(\n mergeToolEnv(\n [{ name: 'A', value: '1' }],\n [{ name: 'B', value: '2' }],\n [{ name: 'A', value: 'shadowed' }],\n ),\n ).toEqual([\n { name: 'A', value: '1' },\n { name: 'B', value: '2' },\n ]);\n });\n});\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
export { runGithubMatrixGenerator } from './VZXWHHPB.js';
|
|
2
2
|
import './PBCHVZQM.js';
|
|
3
|
-
export { runCli } from './
|
|
3
|
+
export { runCli } from './USAMINHV.js';
|
|
4
4
|
import './3N42XVZL.js';
|
|
5
5
|
import './SQ7CSCOZ.js';
|
|
6
6
|
import './LOCNB6C6.js';
|
|
7
7
|
export { testTools } from './52SW5N2L.js';
|
|
8
8
|
import './N53MNPWU.js';
|
|
9
|
-
export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from './
|
|
9
|
+
export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from './Z35XTD72.js';
|
|
10
10
|
import './FFE7SXCG.js';
|
|
11
|
-
export { createScopedWorkspace } from './
|
|
11
|
+
export { createScopedWorkspace } from './EITIWAHW.js';
|
|
12
12
|
import './EHGHQQRV.js';
|
|
13
|
-
export { DEFAULT_SOURCE_COPY_PATTERNS } from './
|
|
13
|
+
export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS } from './LGZABPAO.js';
|
|
14
14
|
import './GBRJXN7L.js';
|
|
15
|
+
export { createExcludeWorkspaceDependencySourcesPruner } from './BKDTYYTO.js';
|
|
15
16
|
import './2BEUXSFW.js';
|
|
16
17
|
export { executeLocally } from './IPZ5KX7M.js';
|
|
17
18
|
import './H6FLARPD.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAA,EAAA","file":"index.js","sourcesContent":["export * from './cli';\nexport type {\n DockerPlatformOverride,\n DockerPlatformValue,\n EnvironmentVariable,\n Image,\n Tool,\n VersionCombination,\n VolumeMapping,\n} from './config';\nexport {\n CARGO_TARGET_CACHE_PATH,\n DOCKER_PLATFORM_NATIVE,\n DOCKER_PLATFORM_OVERRIDE_VALUES,\n DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION,\n DOCKER_PLATFORM_VALUES,\n DockerRegistryMirror,\n isDockerPlatformOverride,\n} from './config';\nexport type * from './context';\nexport * from './core';\nexport type * from './core/tool-executor';\nexport * from './github';\nexport * from './scoped-workspace';\nexport * from './test';\nexport { findFileInParentDirectory } from './utils';\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ScopedWorkspacePruner } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Create a pruner for containerized VM tool invocations that do not need source files from other
|
|
4
|
+
* workspace packages.
|
|
5
|
+
*
|
|
6
|
+
* Only workspace dependency source copies are excluded. The current package remains bind-mounted,
|
|
7
|
+
* and the repo-shaped directory structure, root node_modules symlinks, and pnpm virtual-store mount
|
|
8
|
+
* are preserved for tool execution.
|
|
9
|
+
*/
|
|
10
|
+
export declare const createExcludeWorkspaceDependencySourcesPruner: (name: string) => ScopedWorkspacePruner;
|
|
11
|
+
//# sourceMappingURL=exclude-workspace-dependency-sources-pruner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exclude-workspace-dependency-sources-pruner.d.ts","sourceRoot":"","sources":["../../src/scoped-workspace/exclude-workspace-dependency-sources-pruner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,6CAA6C,GACtD,MAAM,MAAM,KACb,qBAaD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"exclude-workspace-dependency-sources-pruner.js"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ScopedWorkspace, ScopedWorkspaceOptions } from './types';
|
|
2
|
+
export { createExcludeWorkspaceDependencySourcesPruner } from './exclude-workspace-dependency-sources-pruner';
|
|
2
3
|
export type { PnpmVirtualStoreMount, ScopedWorkspace, ScopedWorkspaceOptions, ScopedWorkspacePrunePlan, ScopedWorkspacePruner, ScopedWorkspacePrunerInput, WorkspaceDependencyEdge, WorkspaceDependencyGraph, } from './types';
|
|
3
|
-
export { DEFAULT_SOURCE_COPY_PATTERNS } from './workspace-source-copy';
|
|
4
|
+
export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, } from './workspace-source-copy';
|
|
4
5
|
/** Create the shared scoped-workspace filesystem used by containerized package builds. */
|
|
5
6
|
export declare const createScopedWorkspace: (options?: ScopedWorkspaceOptions) => Promise<ScopedWorkspace>;
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scoped-workspace/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,eAAe,EACf,sBAAsB,EAKzB,MAAM,SAAS,CAAC;AAIjB,YAAY,EACR,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,GAC3B,MAAM,SAAS,CAAC;AACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scoped-workspace/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,eAAe,EACf,sBAAsB,EAKzB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,6CAA6C,EAAE,MAAM,+CAA+C,CAAC;AAC9G,YAAY,EACR,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,GAC3B,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,oCAAoC,EACpC,4BAA4B,GAC/B,MAAM,yBAAyB,CAAC;AAoDjC,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,GAC9B,UAAS,sBAA2B,KACrC,OAAO,CAAC,eAAe,CA0CzB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { createScopedWorkspace } from '../
|
|
1
|
+
export { createScopedWorkspace } from '../EITIWAHW.js';
|
|
2
2
|
import '../EHGHQQRV.js';
|
|
3
|
-
export { DEFAULT_SOURCE_COPY_PATTERNS } from '../
|
|
3
|
+
export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS } from '../LGZABPAO.js';
|
|
4
4
|
import '../GBRJXN7L.js';
|
|
5
|
+
export { createExcludeWorkspaceDependencySourcesPruner } from '../BKDTYYTO.js';
|
|
5
6
|
import '../2BEUXSFW.js';
|
|
6
7
|
import '../YHTRUOFZ.js';
|
|
7
8
|
import '../X6QPMSID.js';
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, it, globalExpect } from '../../3G6UO37X.js';
|
|
2
|
+
import { createExcludeWorkspaceDependencySourcesPruner } from '../../BKDTYYTO.js';
|
|
3
|
+
import { init_esm_shims } from '../../TXIQ74D3.js';
|
|
4
|
+
|
|
5
|
+
// src/scoped-workspace/tests/exclude-workspace-dependency-sources-pruner.test.ts
|
|
6
|
+
init_esm_shims();
|
|
7
|
+
describe(createExcludeWorkspaceDependencySourcesPruner, () => {
|
|
8
|
+
it("excludes workspace dependency sources and reports the excluded package count", async () => {
|
|
9
|
+
const pruner = createExcludeWorkspaceDependencySourcesPruner("test-vm");
|
|
10
|
+
const plan = await pruner.createPrunePlan({
|
|
11
|
+
repoRoot: "/repo",
|
|
12
|
+
packageRoot: "/repo/apps/current",
|
|
13
|
+
packageRelativePath: "apps/current",
|
|
14
|
+
cwd: "/repo/apps/current",
|
|
15
|
+
dependencyGraph: {
|
|
16
|
+
repoRoot: "/repo",
|
|
17
|
+
packageRoot: "/repo/apps/current",
|
|
18
|
+
packageRelativePath: "apps/current",
|
|
19
|
+
rootNodeModulesDependencyNames: [],
|
|
20
|
+
includedWorkspaceDependencies: [
|
|
21
|
+
{
|
|
22
|
+
name: "@layerzerolabs/dep-a",
|
|
23
|
+
importerRelativePath: "apps/current",
|
|
24
|
+
relativePath: "packages/dep-a",
|
|
25
|
+
absolutePath: "/repo/packages/dep-a",
|
|
26
|
+
version: "link:../../packages/dep-a"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "@layerzerolabs/dep-b",
|
|
30
|
+
importerRelativePath: "apps/current",
|
|
31
|
+
relativePath: "packages/dep-b",
|
|
32
|
+
absolutePath: "/repo/packages/dep-b",
|
|
33
|
+
version: "link:../../packages/dep-b"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
globalExpect(pruner.name).toBe("test-vm");
|
|
39
|
+
globalExpect(plan.patterns).toEqual([
|
|
40
|
+
"!**/**"
|
|
41
|
+
]);
|
|
42
|
+
globalExpect(plan.packagePatterns).toEqual({});
|
|
43
|
+
globalExpect(plan.diagnostics).toEqual([
|
|
44
|
+
"test-vm scoped-workspace pruner excluded source files from 2 workspace dependency package(s)."
|
|
45
|
+
]);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=exclude-workspace-dependency-sources-pruner.test.js.map
|
|
49
|
+
//# sourceMappingURL=exclude-workspace-dependency-sources-pruner.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/scoped-workspace/tests/exclude-workspace-dependency-sources-pruner.test.ts"],"names":["describe","createExcludeWorkspaceDependencySourcesPruner","it","pruner","plan","createPrunePlan","repoRoot","packageRoot","packageRelativePath","cwd","dependencyGraph","rootNodeModulesDependencyNames","includedWorkspaceDependencies","name","importerRelativePath","relativePath","absolutePath","version","expect","toBe","patterns","toEqual","packagePatterns","diagnostics"],"mappings":";;;;;AAAA,cAAA,EAAA;AAIAA,QAAAA,CAASC,+CAA+C,MAAA;AACpDC,EAAAA,EAAAA,CAAG,gFAAgF,YAAA;AAC/E,IAAA,MAAMC,MAAAA,GAASF,8CAA8C,SAAA,CAAA;AAE7D,IAAA,MAAMG,IAAAA,GAAO,MAAMD,MAAAA,CAAOE,eAAAA,CAAgB;MACtCC,QAAAA,EAAU,OAAA;MACVC,WAAAA,EAAa,oBAAA;MACbC,mBAAAA,EAAqB,cAAA;MACrBC,GAAAA,EAAK,oBAAA;MACLC,eAAAA,EAAiB;QACbJ,QAAAA,EAAU,OAAA;QACVC,WAAAA,EAAa,oBAAA;QACbC,mBAAAA,EAAqB,cAAA;AACrBG,QAAAA,8BAAAA,EAAgC,EAAA;QAChCC,6BAAAA,EAA+B;AAC3B,UAAA;YACIC,IAAAA,EAAM,sBAAA;YACNC,oBAAAA,EAAsB,cAAA;YACtBC,YAAAA,EAAc,gBAAA;YACdC,YAAAA,EAAc,sBAAA;YACdC,OAAAA,EAAS;AACb,WAAA;AACA,UAAA;YACIJ,IAAAA,EAAM,sBAAA;YACNC,oBAAAA,EAAsB,cAAA;YACtBC,YAAAA,EAAc,gBAAA;YACdC,YAAAA,EAAc,sBAAA;YACdC,OAAAA,EAAS;AACb;;AAER;KACJ,CAAA;AAEAC,IAAAA,YAAAA,CAAOf,MAAAA,CAAOU,IAAI,CAAA,CAAEM,IAAAA,CAAK,SAAA,CAAA;AACzBD,IAAAA,YAAAA,CAAOd,IAAAA,CAAKgB,QAAQ,CAAA,CAAEC,OAAAA,CAAQ;AAAC,MAAA;AAAS,KAAA,CAAA;AACxCH,IAAAA,YAAAA,CAAOd,IAAAA,CAAKkB,eAAe,CAAA,CAAED,OAAAA,CAAQ,EAAC,CAAA;AACtCH,IAAAA,YAAAA,CAAOd,IAAAA,CAAKmB,WAAW,CAAA,CAAEF,OAAAA,CAAQ;AAC7B,MAAA;AACH,KAAA,CAAA;EACL,CAAA,CAAA;AACJ,CAAA,CAAA","file":"exclude-workspace-dependency-sources-pruner.test.js","sourcesContent":["import { describe, expect, it } from 'vitest';\n\nimport { createExcludeWorkspaceDependencySourcesPruner } from '../exclude-workspace-dependency-sources-pruner';\n\ndescribe(createExcludeWorkspaceDependencySourcesPruner, () => {\n it('excludes workspace dependency sources and reports the excluded package count', async () => {\n const pruner = createExcludeWorkspaceDependencySourcesPruner('test-vm');\n\n const plan = await pruner.createPrunePlan({\n repoRoot: '/repo',\n packageRoot: '/repo/apps/current',\n packageRelativePath: 'apps/current',\n cwd: '/repo/apps/current',\n dependencyGraph: {\n repoRoot: '/repo',\n packageRoot: '/repo/apps/current',\n packageRelativePath: 'apps/current',\n rootNodeModulesDependencyNames: [],\n includedWorkspaceDependencies: [\n {\n name: '@layerzerolabs/dep-a',\n importerRelativePath: 'apps/current',\n relativePath: 'packages/dep-a',\n absolutePath: '/repo/packages/dep-a',\n version: 'link:../../packages/dep-a',\n },\n {\n name: '@layerzerolabs/dep-b',\n importerRelativePath: 'apps/current',\n relativePath: 'packages/dep-b',\n absolutePath: '/repo/packages/dep-b',\n version: 'link:../../packages/dep-b',\n },\n ],\n },\n });\n\n expect(pruner.name).toBe('test-vm');\n expect(plan.patterns).toEqual(['!**/**']);\n expect(plan.packagePatterns).toEqual({});\n expect(plan.diagnostics).toEqual([\n 'test-vm scoped-workspace pruner excluded source files from 2 workspace dependency package(s).',\n ]);\n });\n});\n"]}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { afterAll, describe, it, globalExpect } from '
|
|
2
|
-
import { createScopedWorkspace } from '
|
|
3
|
-
import { resolveWorkspaceDependencyGraph } from '
|
|
4
|
-
import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS } from '
|
|
5
|
-
import '
|
|
6
|
-
import
|
|
7
|
-
import '
|
|
8
|
-
import '
|
|
9
|
-
import
|
|
1
|
+
import { afterAll, describe, it, globalExpect } from '../../3G6UO37X.js';
|
|
2
|
+
import { createScopedWorkspace } from '../../EITIWAHW.js';
|
|
3
|
+
import { resolveWorkspaceDependencyGraph } from '../../EHGHQQRV.js';
|
|
4
|
+
import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS, DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS } from '../../LGZABPAO.js';
|
|
5
|
+
import '../../GBRJXN7L.js';
|
|
6
|
+
import '../../BKDTYYTO.js';
|
|
7
|
+
import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from '../../2BEUXSFW.js';
|
|
8
|
+
import '../../YHTRUOFZ.js';
|
|
9
|
+
import '../../X6QPMSID.js';
|
|
10
|
+
import { init_esm_shims, __name } from '../../TXIQ74D3.js';
|
|
10
11
|
import { mkdtempSync, rmSync, mkdirSync, realpathSync, symlinkSync, existsSync, lstatSync, readlinkSync, writeFileSync } from 'fs';
|
|
11
12
|
import { tmpdir } from 'os';
|
|
12
13
|
import { join } from 'path';
|
|
13
14
|
|
|
14
|
-
// src/scoped-workspace/scoped-workspace.test.ts
|
|
15
|
+
// src/scoped-workspace/tests/scoped-workspace.test.ts
|
|
15
16
|
init_esm_shims();
|
|
16
17
|
var TMP = mkdtempSync(join(tmpdir(), "lz-scoped-workspace-test-"));
|
|
17
18
|
var GENERATED_SCOPED_ROOTS = [];
|
|
@@ -238,8 +239,6 @@ describe(copyWorkspaceSources, () => {
|
|
|
238
239
|
"src/index.ts": "export const dep = true",
|
|
239
240
|
"dependencies/generated-crate/src/lib.rs": "pub fn generated() {}",
|
|
240
241
|
"target/deploy/program.so": "compiled",
|
|
241
|
-
"target/wasm32v1-none/release/program.d": "program.wasm: src/lib.rs",
|
|
242
|
-
"target/wasm32v1-none/release/program.wasm": "compiled wasm",
|
|
243
242
|
"node_modules/pkg/index.js": "module.exports = {}",
|
|
244
243
|
"dist/index.js": "module.exports = {}",
|
|
245
244
|
"artifacts/contracts/Contract.json": "{}"
|
|
@@ -268,9 +267,7 @@ describe(copyWorkspaceSources, () => {
|
|
|
268
267
|
globalExpect(result.copiedWorkspaceDependencies).toHaveLength(1);
|
|
269
268
|
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "src", "index.ts"))).toBe(true);
|
|
270
269
|
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "dependencies"))).toBe(false);
|
|
271
|
-
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target"
|
|
272
|
-
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target", "wasm32v1-none", "release", "program.d"))).toBe(true);
|
|
273
|
-
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target", "wasm32v1-none", "release", "program.wasm"))).toBe(true);
|
|
270
|
+
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "target"))).toBe(false);
|
|
274
271
|
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "node_modules"))).toBe(true);
|
|
275
272
|
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "node_modules", "pkg", "index.js"))).toBe(false);
|
|
276
273
|
globalExpect(lstatSync(join(scopedRoot, "packages", "dep", "node_modules", "linked-pkg")).isSymbolicLink()).toBe(true);
|
|
@@ -323,7 +320,8 @@ describe(copyWorkspaceSources, () => {
|
|
|
323
320
|
"!sdk/**",
|
|
324
321
|
"!scripts/**",
|
|
325
322
|
"!tests/**",
|
|
326
|
-
"!programs/**/tests/**"
|
|
323
|
+
"!programs/**/tests/**",
|
|
324
|
+
...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS
|
|
327
325
|
]
|
|
328
326
|
});
|
|
329
327
|
const scopedRoot = trackScopedRoot(result.scopedRoot);
|
|
@@ -452,6 +450,46 @@ describe(copyWorkspaceSources, () => {
|
|
|
452
450
|
globalExpect(existsSync(join(scopedRoot, "packages", "anchor-dep", "programs", "demo", "tests"))).toBe(false);
|
|
453
451
|
globalExpect(existsSync(join(scopedRoot, "packages", "utility-dep", "src", "index.ts"))).toBe(true);
|
|
454
452
|
});
|
|
453
|
+
it("copies pruner-selected build outputs under otherwise-excluded directories", async () => {
|
|
454
|
+
const repo = createRepo("workspace-source-build-output-copy");
|
|
455
|
+
const current = join(repo, "apps", "current");
|
|
456
|
+
const dep = join(repo, "packages", "dep");
|
|
457
|
+
createPackage(current, "@layerzerolabs/current");
|
|
458
|
+
createPackage(dep, "@layerzerolabs/dep", {
|
|
459
|
+
"src/index.ts": "export const dep = true",
|
|
460
|
+
"target/wasm32v1-none/release/dep.wasm": "wasm",
|
|
461
|
+
"target/wasm32v1-none/release/dep.d": "deps"
|
|
462
|
+
});
|
|
463
|
+
const dependencyGraph = {
|
|
464
|
+
repoRoot: repo,
|
|
465
|
+
packageRoot: current,
|
|
466
|
+
packageRelativePath: "apps/current",
|
|
467
|
+
rootNodeModulesDependencyNames: [],
|
|
468
|
+
includedWorkspaceDependencies: [
|
|
469
|
+
{
|
|
470
|
+
name: "@layerzerolabs/dep",
|
|
471
|
+
importerRelativePath: "apps/current",
|
|
472
|
+
relativePath: "packages/dep",
|
|
473
|
+
absolutePath: dep,
|
|
474
|
+
version: "link:../../packages/dep"
|
|
475
|
+
}
|
|
476
|
+
]
|
|
477
|
+
};
|
|
478
|
+
const result = await copyWorkspaceSources({
|
|
479
|
+
dependencyGraph,
|
|
480
|
+
packagePrunePatterns: {
|
|
481
|
+
"packages/dep": [
|
|
482
|
+
"target/wasm32v1-none/release/*.d",
|
|
483
|
+
"target/wasm32v1-none/release/*.wasm"
|
|
484
|
+
]
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
const scopedRoot = trackScopedRoot(result.scopedRoot);
|
|
488
|
+
const releaseDir = join(scopedRoot, "packages", "dep", "target", "wasm32v1-none", "release");
|
|
489
|
+
globalExpect(existsSync(join(releaseDir, "dep.wasm"))).toBe(true);
|
|
490
|
+
globalExpect(existsSync(join(releaseDir, "dep.d"))).toBe(true);
|
|
491
|
+
globalExpect(existsSync(join(scopedRoot, "packages", "dep", "src"))).toBe(false);
|
|
492
|
+
});
|
|
455
493
|
});
|
|
456
494
|
describe(createScopedWorkspace, () => {
|
|
457
495
|
it("uses the unpruned source-copy fallback when no pruner is configured", async () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/scoped-workspace/tests/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","DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS","parent","nested","nestedLink","anchorDep","utilityDep","packagePrunePatterns","releaseDir","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_EXCLUDE_PATTERNS,\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 'dependencies/generated-crate/src/lib.rs': 'pub fn generated() {}',\n 'target/deploy/program.so': 'compiled',\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', 'dependencies'))).toBe(false);\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'target'))).toBe(false);\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 ...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS,\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 it('copies pruner-selected build outputs under otherwise-excluded directories', async () => {\n const repo = createRepo('workspace-source-build-output-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 'target/wasm32v1-none/release/dep.wasm': 'wasm',\n 'target/wasm32v1-none/release/dep.d': 'deps',\n });\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 packagePrunePatterns: {\n 'packages/dep': [\n 'target/wasm32v1-none/release/*.d',\n 'target/wasm32v1-none/release/*.wasm',\n ],\n },\n });\n const scopedRoot = trackScopedRoot(result.scopedRoot);\n\n const releaseDir = join(\n scopedRoot,\n 'packages',\n 'dep',\n 'target',\n 'wasm32v1-none',\n 'release',\n );\n expect(existsSync(join(releaseDir, 'dep.wasm'))).toBe(true);\n expect(existsSync(join(releaseDir, 'dep.d'))).toBe(true);\n // Only selected files are copied; src was not selected.\n expect(existsSync(join(scopedRoot, 'packages', 'dep', 'src'))).toBe(false);\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-contracts');\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-contracts'),\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-contracts', '@types/node', 'eslint'],\n });\n\n expect(result.nodeModulesPath).toBe(join(scopedRoot, 'node_modules'));\n expect(result.symlinks).toEqual([\n '@layerzerolabs/oapp-solana-contracts',\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-contracts'),\n ).isSymbolicLink(),\n ).toBe(true);\n expect(\n readlinkSync(\n join(scopedRoot, 'node_modules', '@layerzerolabs', 'oapp-solana-contracts'),\n ),\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"]}
|
|
@@ -2,14 +2,14 @@ import type { WorkspaceSourceCopyOptions, WorkspaceSourceCopyResult } from './ty
|
|
|
2
2
|
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/**", "!**/dependencies/**", "!**/debug_info/**", "!**/hh-cache/**", "!**/out/**", "!**/target/**", "!**/typechain-types/**"];
|
|
4
4
|
/**
|
|
5
|
-
* Copy
|
|
6
|
-
* repo-shaped scoped workspace.
|
|
5
|
+
* Copy selected workspace dependency files into a repo-shaped scoped workspace.
|
|
7
6
|
*
|
|
8
7
|
* The current package itself is not copied. It is mounted from the host at the same repo-relative
|
|
9
8
|
* path by the Docker executor so package-local build outputs such as `target`, `build`, and
|
|
10
|
-
* `src/generated` land in the real package.
|
|
11
|
-
*
|
|
12
|
-
* only, relying on the root `.pnpm`
|
|
9
|
+
* `src/generated` land in the real package. Dependency files come from pruner patterns when
|
|
10
|
+
* configured; otherwise we copy source-like files and skip generated artifacts/caches.
|
|
11
|
+
* Package-local node_modules directories are copied as symlinks only, relying on the root `.pnpm`
|
|
12
|
+
* virtual store mount for external package contents.
|
|
13
13
|
*/
|
|
14
14
|
export declare const copyWorkspaceSources: (options: WorkspaceSourceCopyOptions) => Promise<WorkspaceSourceCopyResult>;
|
|
15
15
|
//# sourceMappingURL=workspace-source-copy.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAE9D,eAAO,MAAM,oCAAoC,wPAcvC,CAAC;AAgHX;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,0BAA0B,KACpC,OAAO,CAAC,yBAAyB,CAwDnC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, copyWorkspaceSources } from '../
|
|
1
|
+
export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, copyWorkspaceSources } from '../LGZABPAO.js';
|
|
2
2
|
import '../GBRJXN7L.js';
|
|
3
3
|
import '../2BEUXSFW.js';
|
|
4
4
|
import '../TXIQ74D3.js';
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"yaml": "^2.2.2",
|
|
25
25
|
"zod": "4.3.5",
|
|
26
26
|
"zx": "^8.8.5",
|
|
27
|
-
"@layerzerolabs/common-node-utils": "1.2.
|
|
27
|
+
"@layerzerolabs/common-node-utils": "1.2.13"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@jest/globals": "^29.7.0",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"tsx": "^4.21.0",
|
|
37
37
|
"typescript": "^5.8.2",
|
|
38
38
|
"vitest": "^3.2.6",
|
|
39
|
-
"@layerzerolabs/typescript-configuration": "1.2.
|
|
40
|
-
"@layerzerolabs/tsup-configuration": "1.2.
|
|
41
|
-
"@layerzerolabs/vitest-configuration": "1.2.
|
|
39
|
+
"@layerzerolabs/typescript-configuration": "1.2.13",
|
|
40
|
+
"@layerzerolabs/tsup-configuration": "1.2.13",
|
|
41
|
+
"@layerzerolabs/vitest-configuration": "1.2.13"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"audit-external",
|
|
50
50
|
"console-oft-unaudited-internal",
|
|
51
51
|
"console-pen-test",
|
|
52
|
+
"console-solana-v1-internal",
|
|
52
53
|
"gasolina-audit",
|
|
53
54
|
"layerzero-ver",
|
|
54
55
|
"monorepo-external",
|
|
55
|
-
"onesig-client"
|
|
56
|
-
"usdai-internal"
|
|
56
|
+
"onesig-client"
|
|
57
57
|
]
|
|
58
58
|
},
|
|
59
|
-
"version": "1.2.
|
|
59
|
+
"version": "1.2.13",
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "tsup",
|
|
62
62
|
"lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",
|
package/dist/O5XBAHB3.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scoped-workspace/workspace-source-copy.ts"],"names":["DEFAULT_SOURCE_COPY_PATTERNS","DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS","DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS","getPathSegments","relativePath","split","isInsideNodeModules","includes","partitionGlobPatterns","patterns","include","ignore","pattern","startsWith","push","slice","copySourceDirectory","sourceDir","destDir","copyPatterns","mkdir","recursive","globOptions","cwd","dot","follow","nodir","posix","defaultEntries","glob","allowlistedEntries","entries","Set","limit","pLimit","COPY_CONCURRENCY","Promise","all","sort","map","sourcePath","join","destPath","stats","lstat","isDirectory","isSymbolicLink","dirname","symlink","readlink","error","code","undefined","existing","catch","intended","isFile","copyFile","getPackageSourceCopyPatterns","prunePatterns","packagePrunePatterns","packagePatterns","length","copyWorkspaceSources","options","scopedRoot","mkdtemp","tmpdir","copyPackageSource","absolutePath","isInside","dependencyGraph","repoRoot","Error","packageRelativePath","includedWorkspaceDependencies","dependency","safeRemove","packageRoot","copiedWorkspaceDependencies"],"mappings":"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","file":"O5XBAHB3.js","sourcesContent":["import { glob } from 'glob';\nimport { copyFile, lstat, mkdir, mkdtemp, readlink, symlink } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport pLimit from 'p-limit';\n\nimport { isInside, safeRemove } from '../utils/fs';\nimport { COPY_CONCURRENCY } from './node-modules';\nimport type { WorkspaceSourceCopyOptions, WorkspaceSourceCopyResult } from './types';\n\nexport const DEFAULT_SOURCE_COPY_PATTERNS = ['**/*'] as const;\n\n// TODO(#5328): This allowlist is temporary. VM-specific pruners should own build-output\n// selection, and #5328 will remove this fallback once those pruners are in place.\nconst DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS = [\n 'target/wasm32v1-none/release/*.d',\n 'target/wasm32v1-none/release/*.wasm',\n];\n\nexport const DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS = [\n '!**/.git/**',\n '!**/.next/**',\n '!**/.pnpm/**',\n '!**/.turbo/**',\n '!**/artifacts*/**',\n '!**/build/**',\n '!**/cache/**',\n '!**/dependencies/**',\n '!**/debug_info/**',\n '!**/hh-cache/**',\n '!**/out/**',\n '!**/target/**',\n '!**/typechain-types/**',\n] as const;\n\nconst getPathSegments = (relativePath: string): string[] =>\n relativePath ? relativePath.split('/') : [];\n\nconst isInsideNodeModules = (relativePath: string): boolean =>\n getPathSegments(relativePath).includes('node_modules');\n\nconst partitionGlobPatterns = (\n patterns: readonly string[],\n): { include: string[]; ignore: string[] } => {\n const include: string[] = [];\n const ignore: string[] = [];\n\n for (const pattern of patterns) {\n if (pattern.startsWith('!')) {\n ignore.push(pattern.slice(1));\n } else {\n include.push(pattern);\n }\n }\n\n return { include, ignore };\n};\n\nconst copySourceDirectory = async (\n sourceDir: string,\n destDir: string,\n copyPatterns: readonly string[],\n): Promise<void> => {\n await mkdir(destDir, { recursive: true });\n\n const { include, ignore } = partitionGlobPatterns(copyPatterns);\n const globOptions = {\n cwd: sourceDir,\n dot: true,\n follow: false,\n nodir: false,\n posix: true,\n };\n const defaultEntries = await glob(include, { ...globOptions, ignore });\n const allowlistedEntries = await glob([...DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS], globOptions);\n const entries = [...new Set([...defaultEntries, ...allowlistedEntries])];\n const limit = pLimit(COPY_CONCURRENCY);\n\n await Promise.all(\n entries.sort().map((relativePath) =>\n limit(async () => {\n const sourcePath = join(sourceDir, relativePath);\n const destPath = join(destDir, relativePath);\n const stats = await lstat(sourcePath);\n\n if (stats.isDirectory()) return;\n\n if (stats.isSymbolicLink()) {\n await mkdir(dirname(destPath), { recursive: true });\n try {\n await symlink(await readlink(sourcePath), destPath);\n } catch (error) {\n // A workspace package nested under another package root can be copied\n // twice (once via the parent tree, once as its own importer). Treat an\n // identical existing symlink as success.\n const code =\n typeof error === 'object' && error !== null\n ? (error as { code?: string }).code\n : undefined;\n if (code !== 'EEXIST') throw error;\n const existing = await readlink(destPath).catch(() => undefined);\n const intended = await readlink(sourcePath);\n if (existing !== intended) throw error;\n }\n return;\n }\n\n if (isInsideNodeModules(relativePath)) return;\n\n if (!stats.isFile()) return;\n\n await mkdir(dirname(destPath), { recursive: true });\n await copyFile(sourcePath, destPath);\n }),\n ),\n );\n};\n\nconst getPackageSourceCopyPatterns = ({\n relativePath,\n prunePatterns,\n packagePrunePatterns,\n}: {\n relativePath: string;\n prunePatterns?: readonly string[];\n packagePrunePatterns?: Readonly<Record<string, readonly string[]>>;\n}): readonly string[] => {\n const packagePatterns = packagePrunePatterns?.[relativePath];\n\n if (packagePatterns) {\n return packagePatterns.length ? packagePatterns : DEFAULT_SOURCE_COPY_PATTERNS;\n }\n if (prunePatterns?.length) return prunePatterns;\n\n return DEFAULT_SOURCE_COPY_PATTERNS;\n};\n\n/**\n * Copy only dependency source-like files for the resolved workspace dependency graph into a\n * repo-shaped scoped workspace.\n *\n * The current package itself is not copied. It is mounted from the host at the same repo-relative\n * path by the Docker executor so package-local build outputs such as `target`, `build`, and\n * `src/generated` land in the real package. Generated artifacts and caches are deliberately\n * excluded from dependency copies. Package-local node_modules directories are copied as symlinks\n * only, relying on the root `.pnpm` virtual store mount for external package contents.\n */\nexport const copyWorkspaceSources = async (\n options: WorkspaceSourceCopyOptions,\n): Promise<WorkspaceSourceCopyResult> => {\n const scopedRoot = await mkdtemp(join(tmpdir(), 'lz-scoped-workspace-'));\n const { prunePatterns, packagePrunePatterns } = options;\n\n const copyPackageSource = async ({\n absolutePath,\n relativePath,\n }: {\n absolutePath: string;\n relativePath: string;\n }): Promise<void> => {\n if (!isInside(options.dependencyGraph.repoRoot, absolutePath)) {\n throw new Error(\n `Refusing to copy workspace package outside repository root: ${absolutePath}`,\n );\n }\n\n await copySourceDirectory(absolutePath, join(scopedRoot, relativePath), [\n ...getPackageSourceCopyPatterns({\n relativePath,\n prunePatterns,\n packagePrunePatterns,\n }),\n ...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS,\n ]);\n };\n\n try {\n await mkdir(dirname(join(scopedRoot, options.dependencyGraph.packageRelativePath)), {\n recursive: true,\n });\n\n const limit = pLimit(COPY_CONCURRENCY);\n await Promise.all(\n options.dependencyGraph.includedWorkspaceDependencies.map((dependency) =>\n limit(async () => {\n await copyPackageSource({\n absolutePath: dependency.absolutePath,\n relativePath: dependency.relativePath,\n });\n }),\n ),\n );\n } catch (error) {\n await safeRemove(scopedRoot);\n throw error;\n }\n\n return {\n repoRoot: options.dependencyGraph.repoRoot,\n packageRoot: options.dependencyGraph.packageRoot,\n scopedRoot,\n packageRelativePath: options.dependencyGraph.packageRelativePath,\n copiedWorkspaceDependencies: options.dependencyGraph.includedWorkspaceDependencies,\n };\n};\n"]}
|