@layerzerolabs/vm-tooling 1.2.9 → 1.2.11
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.
|
@@ -627,7 +627,7 @@ describe(copyRootNodeModulesSymlinks, () => {
|
|
|
627
627
|
const repo = createRepo("node-modules-symlinks");
|
|
628
628
|
const scopedRoot = join(TMP, "scoped-node-modules-symlinks");
|
|
629
629
|
const dep = join(repo, "apps", "oapp-app", "contracts", "solana");
|
|
630
|
-
createPackage(dep, "@layerzerolabs/oapp-solana-
|
|
630
|
+
createPackage(dep, "@layerzerolabs/oapp-solana-contracts");
|
|
631
631
|
mkdirSync(join(repo, "node_modules", ".pnpm"), {
|
|
632
632
|
recursive: true
|
|
633
633
|
});
|
|
@@ -647,20 +647,20 @@ describe(copyRootNodeModulesSymlinks, () => {
|
|
|
647
647
|
symlinkSync(".pnpm/eslint@1.0.0/node_modules/eslint", join(repo, "node_modules", "eslint"));
|
|
648
648
|
symlinkSync("../.pnpm/typescript@1.0.0/node_modules/typescript/bin/tsc", join(repo, "node_modules", ".bin", "tsc"));
|
|
649
649
|
symlinkSync("../.pnpm/@types+node@1.0.0/node_modules/@types/node", join(repo, "node_modules", "@types", "node"));
|
|
650
|
-
symlinkSync("../../apps/oapp-app/contracts/solana", join(repo, "node_modules", "@layerzerolabs", "oapp-solana-
|
|
650
|
+
symlinkSync("../../apps/oapp-app/contracts/solana", join(repo, "node_modules", "@layerzerolabs", "oapp-solana-contracts"));
|
|
651
651
|
symlinkSync("../..", join(repo, "node_modules", "@layerzerolabs", "whole-repo-link"));
|
|
652
652
|
const result = await copyRootNodeModulesSymlinks({
|
|
653
653
|
repoRoot: repo,
|
|
654
654
|
scopedRoot,
|
|
655
655
|
dependencyNames: [
|
|
656
|
-
"@layerzerolabs/oapp-solana-
|
|
656
|
+
"@layerzerolabs/oapp-solana-contracts",
|
|
657
657
|
"@types/node",
|
|
658
658
|
"eslint"
|
|
659
659
|
]
|
|
660
660
|
});
|
|
661
661
|
globalExpect(result.nodeModulesPath).toBe(join(scopedRoot, "node_modules"));
|
|
662
662
|
globalExpect(result.symlinks).toEqual([
|
|
663
|
-
"@layerzerolabs/oapp-solana-
|
|
663
|
+
"@layerzerolabs/oapp-solana-contracts",
|
|
664
664
|
"@types/node",
|
|
665
665
|
"eslint"
|
|
666
666
|
]);
|
|
@@ -669,8 +669,8 @@ describe(copyRootNodeModulesSymlinks, () => {
|
|
|
669
669
|
globalExpect(existsSync(join(scopedRoot, "node_modules", ".bin", "real-file"))).toBe(false);
|
|
670
670
|
globalExpect(existsSync(join(scopedRoot, "node_modules", ".bin", "tsc"))).toBe(false);
|
|
671
671
|
globalExpect(lstatSync(join(scopedRoot, "node_modules", "@types", "node")).isSymbolicLink()).toBe(true);
|
|
672
|
-
globalExpect(lstatSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-
|
|
673
|
-
globalExpect(readlinkSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-
|
|
672
|
+
globalExpect(lstatSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-contracts")).isSymbolicLink()).toBe(true);
|
|
673
|
+
globalExpect(readlinkSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-contracts"))).toBe("../../apps/oapp-app/contracts/solana");
|
|
674
674
|
globalExpect(existsSync(join(scopedRoot, "node_modules", "@layerzerolabs", "whole-repo-link"))).toBe(false);
|
|
675
675
|
});
|
|
676
676
|
});
|
|
@@ -1 +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 'dependencies/generated-crate/src/lib.rs': 'pub fn generated() {}',\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', 'dependencies'))).toBe(false);\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"]}
|
|
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":";;;;;;;;;;;;;;AAAA,cAAA,EAAA;AAwBA,IAAMA,MAAMC,WAAAA,CAAYC,IAAAA,CAAKC,MAAAA,EAAAA,EAAU,2BAAA,CAAA,CAAA;AACvC,IAAMC,yBAAmC,EAAA;AAEzC,IAAMC,eAAAA,2BAAmBC,UAAAA,KAAAA;AACrBF,EAAAA,sBAAAA,CAAuBG,KAAKD,UAAAA,CAAAA;AAC5B,EAAA,OAAOA,UAAAA;AACX,CAAA,EAHwB,iBAAA,CAAA;AAKxB,IAAME,gCAAgB,MAAA,CAAA,CAACC,GAAAA,EAAaC,IAAAA,EAAcC,KAAAA,GAAgC,EAAC,KAAC;AAChFC,EAAAA,SAAAA,CAAUH,GAAAA,EAAK;IAAEI,SAAAA,EAAW;GAAK,CAAA;AACjCC,EAAAA,aAAAA,CAAcZ,IAAAA,CAAKO,GAAAA,EAAK,cAAA,CAAA,EAAiBM,KAAKC,SAAAA,CAAU;AAAEN,IAAAA,IAAAA;IAAMO,OAAAA,EAAS;AAAQ,GAAA,CAAA,CAAA;AAEjF,EAAA,KAAA,MAAW,CAACC,IAAAA,EAAMC,OAAAA,KAAYC,MAAAA,CAAOC,OAAAA,CAAQV,KAAAA,CAAAA,EAAQ;AACjD,IAAA,MAAMW,QAAAA,GAAWpB,IAAAA,CAAKO,GAAAA,EAAKS,IAAAA,CAAAA;AAC3BN,IAAAA,SAAAA,CAAUV,IAAAA,CAAKoB,QAAAA,EAAU,IAAA,CAAA,EAAO;MAAET,SAAAA,EAAW;KAAK,CAAA;AAClDC,IAAAA,aAAAA,CAAcQ,UAAUH,OAAAA,CAAAA;AAC5B,EAAA;AACJ,CAAA,EATsB,eAAA,CAAA;AAWtB,IAAMI,UAAAA,2BAAcb,IAAAA,KAAAA;AAChB,EAAA,MAAMc,IAAAA,GAAOtB,IAAAA,CAAKF,GAAAA,EAAKU,IAAAA,CAAAA;AACvBE,EAAAA,SAAAA,CAAUY,IAAAA,EAAM;IAAEX,SAAAA,EAAW;GAAK,CAAA;AAClCC,EAAAA,aAAAA,CAAcZ,IAAAA,CAAKsB,IAAAA,EAAM,qBAAA,CAAA,EAAwB,uBAAA,CAAA;AACjD,EAAA,OAAOA,IAAAA;AACX,CAAA,EALmB,YAAA,CAAA;AAOnB,IAAMC,aAAAA,mBAAgB,MAAA,CAAA,CAACD,IAAAA,EAAcE,IAAAA,KAAAA;AACjCZ,EAAAA,aAAAA,CACIZ,IAAAA,CAAKsB,IAAAA,EAAM,gBAAA,CAAA,EACX;AACI,IAAA,wBAAA;AACA,IAAA,EAAA;AACA,IAAA,WAAA;AACA,IAAA,0BAAA;AACA,IAAA,EAAA;AACA,IAAA,YAAA;AACAE,IAAAA,IAAAA,CAAKC,OAAAA,EAAO;AACZ,IAAA,EAAA;AACA,IAAA,WAAA;AACA,IAAA;AACFzB,GAAAA,CAAAA,IAAAA,CAAK,IAAA,CAAA,CAAA;AAEf,CAAA,EAhBsB,eAAA,CAAA;AAkBtB0B,QAAAA,CAAS,MAAA;AACLC,EAAAA,MAAAA,CAAO7B,GAAAA,EAAK;IAAEa,SAAAA,EAAW,IAAA;IAAMiB,KAAAA,EAAO;GAAK,CAAA;AAC3C,EAAA,KAAA,MAAWxB,cAAcF,sBAAAA,EAAwB;AAC7CyB,IAAAA,MAAAA,CAAOvB,UAAAA,EAAY;MAAEO,SAAAA,EAAW,IAAA;MAAMiB,KAAAA,EAAO;KAAK,CAAA;AACtD,EAAA;AACJ,CAAA,CAAA;AAEAC,QAAAA,CAASC,iCAAiC,MAAA;AACtCC,EAAAA,EAAAA,CAAG,0CAA0C,YAAA;AACzC,IAAA,MAAMT,IAAAA,GAAOD,WAAW,kBAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAMW,IAAAA,GAAOjC,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,OAAA,CAAA;AACpC,IAAA,MAAMY,IAAAA,GAAOlC,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,OAAA,CAAA;AACpC,IAAA,MAAMa,UAAUnC,IAAAA,CAAKsB,IAAAA,EAAM,OAAA,EAAS,UAAA,EAAY,UAAU,aAAA,CAAA;AAE1DhB,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,CAAA;AACvB1B,IAAAA,aAAAA,CAAc2B,MAAM,sBAAA,CAAA;AACpB3B,IAAAA,aAAAA,CAAc4B,MAAM,sBAAA,CAAA;AACpB5B,IAAAA,aAAAA,CAAc6B,SAAS,mCAAA,CAAA;AACvBZ,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCX,CAAA,CAAA;AAGO,IAAA,MAAMc,eAAAA,GAAkB,MAAMN,+BAAAA,CAAgC;MAC1DO,GAAAA,EAAKL,OAAAA;MACLM,QAAAA,EAAUhB;KACd,CAAA;AAEA,IAAA,MAAMiB,wBAAwBH,eAAAA,CAAgBI,6BAAAA,CAA8BC,IACxE,CAACC,UAAAA,KAAeA,WAAWC,YAAY,CAAA;AAE3CC,IAAAA,YAAAA,CAAOL,qBAAAA,CAAAA,CAAuBM,YAAAA,CAAa,CAAA,CAAA;AAC3CD,IAAAA,YAAAA,CAAOL,qBAAAA,CAAAA,CAAuBO,OAAAA,CAC1BF,YAAAA,CAAOG,eAAAA,CAAgB;AACnB,MAAA,gBAAA;AACA,MAAA,gBAAA;AACA,MAAA;KACH,CAAA,CAAA;AAELH,IAAAA,YAAAA,CAAOR,eAAAA,CAAgBY,8BAA8B,CAAA,CAAEH,YAAAA,CAAa,CAAA,CAAA;AACpED,IAAAA,YAAAA,CAAOR,eAAAA,CAAgBY,8BAA8B,CAAA,CAAEF,OAAAA,CACnDF,aAAOG,eAAAA,CAAgB;AACnB,MAAA,mCAAA;AACA,MAAA,sBAAA;AACA,MAAA;KACH,CAAA,CAAA;EAET,CAAA,CAAA;AAEAhB,EAAAA,EAAAA,CAAG,0EAA0E,YAAA;AACzE,IAAA,MAAMT,IAAAA,GAAOD,WAAW,gBAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,UAAU,iBAAA,CAAA;AACjD,IAAA,MAAM2B,SAAAA,GAAYjD,IAAAA,CAAKgC,OAAAA,EAAS,WAAA,CAAA;AAChC,IAAA,MAAMkB,GAAAA,GAAMlD,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,sBAAA,CAAA;AAEnChB,IAAAA,aAAAA,CAAc0B,SAAS,gCAAA,EAAkC;MACrD,sBAAA,EAAwB;KAC5B,CAAA;AACA1B,IAAAA,aAAAA,CAAc4C,KAAK,qCAAA,CAAA;AACnBxC,IAAAA,SAAAA,CAAUuC,SAAAA,EAAW;MAAEtC,SAAAA,EAAW;KAAK,CAAA;AACvCY,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;;;;;;;AAeX,CAAA,CAAA;AAGO,IAAA,MAAMc,eAAAA,GAAkB,MAAMN,+BAAAA,CAAgC;MAC1DO,GAAAA,EAAKY,SAAAA;MACLX,QAAAA,EAAUhB;KACd,CAAA;AAEAsB,IAAAA,YAAAA,CAAOR,gBAAgBe,WAAW,CAAA,CAAEC,IAAAA,CAAKC,YAAAA,CAAarB,OAAAA,CAAAA,CAAAA;AACtDY,IAAAA,YAAAA,CAAOR,eAAAA,CAAgBkB,mBAAmB,CAAA,CAAEF,IAAAA,CAAK,iCAAA,CAAA;AACjDR,IAAAA,YAAAA,CACIR,eAAAA,CAAgBI,8BAA8BC,GAAAA,CAC1C,CAACC,eAAeA,UAAAA,CAAWC,YAAY,CAAA,CAAA,CAE7CG,OAAAA,CAAQ;AAAC,MAAA;AAAgC,KAAA,CAAA;AAC3CF,IAAAA,YAAAA,CAAOR,eAAAA,CAAgBY,8BAA8B,CAAA,CAAEF,OAAAA,CAAQ;AAC3D,MAAA;AACH,KAAA,CAAA;EACL,CAAA,CAAA;AAEAf,EAAAA,EAAAA,CAAG,mEAAmE,YAAA;AAClE,IAAA,MAAMT,IAAAA,GAAOD,WAAW,qCAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAMW,IAAAA,GAAOjC,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,OAAA,CAAA;AACpC,IAAA,MAAMY,IAAAA,GAAOlC,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,OAAA,CAAA;AAEpChB,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,CAAA;AACvB1B,IAAAA,aAAAA,CAAc2B,MAAM,sBAAA,CAAA;AACpB3B,IAAAA,aAAAA,CAAc4B,MAAM,sBAAA,CAAA;AACpBX,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;AASX,CAAA,CAAA;AAGO,IAAA,MAAMiC,UAAAA,GAAa,MAAMzB,+BAAAA,CAAgC;MACrDO,GAAAA,EAAKL,OAAAA;MACLM,QAAAA,EAAUhB;KACd,CAAA;AAEAC,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;;;AAWX,CAAA,CAAA;AAGO,IAAA,MAAMkC,WAAAA,GAAc,MAAM1B,+BAAAA,CAAgC;MACtDO,GAAAA,EAAKL,OAAAA;MACLM,QAAAA,EAAUhB;KACd,CAAA;AAEAsB,IAAAA,YAAAA,CACIW,UAAAA,CAAWf,8BAA8BC,GAAAA,CAAI,CAACC,eAAeA,UAAAA,CAAWC,YAAY,CAAA,CAAA,CACtFG,OAAAA,CAAQ;AAAC,MAAA;AAAiB,KAAA,CAAA;AAC5BF,IAAAA,YAAAA,CACIY,WAAAA,CAAYhB,8BAA8BC,GAAAA,CAAI,CAACC,eAAeA,UAAAA,CAAWC,YAAY,CAAA,CAAA,CACvFG,OAAAA,CAAQ;AAAC,MAAA;AAAiB,KAAA,CAAA;EAChC,CAAA,CAAA;AACJ,CAAA,CAAA;AAEAjB,QAAAA,CAAS4B,sBAAsB,MAAA;AAC3B1B,EAAAA,EAAAA,CAAG,+HAA+H,YAAA;AAC9H,IAAA,MAAMT,IAAAA,GAAOD,WAAW,uBAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAM4B,GAAAA,GAAMlD,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,KAAA,CAAA;AACnChB,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,EAA0B;MAC7C,cAAA,EAAgB,6BAAA;MAChB,0BAAA,EAA4B;KAChC,CAAA;AACA1B,IAAAA,aAAAA,CAAc4C,KAAK,oBAAA,EAAsB;MACrC,cAAA,EAAgB,yBAAA;MAChB,yCAAA,EAA2C,uBAAA;MAC3C,0BAAA,EAA4B,UAAA;MAC5B,wCAAA,EAA0C,0BAAA;MAC1C,2CAAA,EAA6C,eAAA;MAC7C,2BAAA,EAA6B,qBAAA;MAC7B,eAAA,EAAiB,qBAAA;MACjB,mCAAA,EAAqC;KACzC,CAAA;AACAQ,IAAAA,WAAAA,CACI,yEAAA,EACA1D,IAAAA,CAAKkD,GAAAA,EAAK,cAAA,EAAgB,YAAA,CAAA,CAAA;AAE9BQ,IAAAA,WAAAA,CAAY,cAAA,EAAgB1D,IAAAA,CAAKkD,GAAAA,EAAK,aAAA,CAAA,CAAA;AAEtC,IAAA,MAAMd,eAAAA,GAAkB;MACpBE,QAAAA,EAAUhB,IAAAA;MACV6B,WAAAA,EAAanB,OAAAA;MACbsB,mBAAAA,EAAqB,cAAA;AACrBN,MAAAA,8BAAAA,EAAgC,EAAA;MAChCR,6BAAAA,EAA+B;AAC3B,QAAA;UACIhC,IAAAA,EAAM,oBAAA;UACNmD,oBAAAA,EAAsB,cAAA;UACtBhB,YAAAA,EAAc,cAAA;UACdiB,YAAAA,EAAcV,GAAAA;UACdnC,OAAAA,EAAS;AACb;;AAER,KAAA;AAEA,IAAA,MAAM8C,MAAAA,GAAS,MAAMJ,oBAAAA,CAAqB;AAAErB,MAAAA;KAAgB,CAAA;AAC5D,IAAA,MAAMhC,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AAEpDwC,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOC,2BAA2B,CAAA,CAAEjB,YAAAA,CAAa,CAAA,CAAA;AACxDD,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAAK,IAAA,CAAA;AAChFR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,CAAA,CAAA,CAAA,CAAkBgD,IAAAA,CAAK,KAAA,CAAA;AAC7ER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,QAAA,EAAU,QAAA,CAAA,CAAA,CAAA,CAAYgD,IAAAA,CAAK,KAAA,CAAA;AACjFR,IAAAA,YAAAA,CACImB,UAAAA,CACI/D,IAAAA,CACII,UAAAA,EACA,UAAA,EACA,KAAA,EACA,QAAA,EACA,eAAA,EACA,SAAA,EACA,WAAA,CAAA,CAAA,CAAA,CAGVgD,KAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CACImB,UAAAA,CACI/D,IAAAA,CACII,UAAAA,EACA,UAAA,EACA,KAAA,EACA,QAAA,EACA,eAAA,EACA,SAAA,EACA,cAAA,CAAA,CAAA,CAAA,CAGVgD,KAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,CAAA,CAAA,CAAA,CAAkBgD,IAAAA,CAAK,IAAA,CAAA;AAC7ER,IAAAA,YAAAA,CACImB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CACxEgD,IAAAA,CAAK,KAAA,CAAA;AACPR,IAAAA,YAAAA,CACIoB,SAAAA,CACIhE,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,EAAgB,YAAA,CAAA,CAAA,CACtD6D,cAAAA,EAAc,CAAA,CAClBb,KAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CACIsB,YAAAA,CAAalE,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,EAAgB,YAAA,CAAA,CAAA,CAAA,CACnEgD,IAAAA,CAAK,yEAAA,CAAA;AACPR,IAAAA,YAAAA,CAAOoB,SAAAA,CAAUhE,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,aAAA,CAAA,CAAA,CAAgB6D,cAAAA,EAAc,CAAA,CAAIb,IAAAA,CACnF,IAAA,CAAA;AAEJR,IAAAA,YAAAA,CAAOsB,YAAAA,CAAalE,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,aAAA,CAAA,CAAA,CAAA,CAAiBgD,IAAAA,CACrE,cAAA,CAAA;AAEJR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,MAAA,EAAQ,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAAK,IAAA,CAAA;AACjFR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,WAAA,CAAA,CAAA,CAAA,CAAegD,IAAAA,CAAK,KAAA,CAAA;AAC1ER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,KAAKI,UAAAA,EAAY,MAAA,EAAQ,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;EACjE,CAAA,CAAA;AAEArB,EAAAA,EAAAA,CAAG,uFAAuF,YAAA;AACtF,IAAA,MAAMT,IAAAA,GAAOD,WAAW,+BAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAM4B,GAAAA,GAAMlD,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,KAAA,CAAA;AACnChB,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,CAAA;AACvB1B,IAAAA,aAAAA,CAAc4C,KAAK,oBAAA,EAAsB;MACrC,cAAA,EAAgB,yBAAA;MAChB,WAAA,EAAa,OAAA;MACbiB,OAAAA,EAAS,KAAA;MACT,eAAA,EAAiB,yBAAA;MACjB,gBAAA,EAAkB,yBAAA;MAClB,kBAAA,EAAoB,4BAAA;MACpB,2BAAA,EAA6B,qBAAA;MAC7B,0BAAA,EAA4B,qBAAA;MAC5B,oCAAA,EAAsC,0BAAA;MACtC,0BAAA,EAA4B;KAChC,CAAA;AACAT,IAAAA,WAAAA,CAAY,iBAAA,EAAmB1D,IAAAA,CAAKkD,GAAAA,EAAK,cAAA,EAAgB,UAAA,CAAA,CAAA;AAEzD,IAAA,MAAMd,eAAAA,GAAkB;MACpBE,QAAAA,EAAUhB,IAAAA;MACV6B,WAAAA,EAAanB,OAAAA;MACbsB,mBAAAA,EAAqB,cAAA;AACrBN,MAAAA,8BAAAA,EAAgC,EAAA;MAChCR,6BAAAA,EAA+B;AAC3B,QAAA;UACIhC,IAAAA,EAAM,oBAAA;UACNmD,oBAAAA,EAAsB,cAAA;UACtBhB,YAAAA,EAAc,cAAA;UACdiB,YAAAA,EAAcV,GAAAA;UACdnC,OAAAA,EAAS;AACb;;AAER,KAAA;AAEA,IAAA,MAAM8C,MAAAA,GAAS,MAAMJ,oBAAAA,CAAqB;AACtCrB,MAAAA,eAAAA;MACAgC,aAAAA,EAAe;AACRC,QAAAA,GAAAA,4BAAAA;AACH,QAAA,UAAA;AACA,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AACA,QAAA,WAAA;AACA,QAAA;;KAER,CAAA;AACA,IAAA,MAAMjE,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AAEpDwC,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAAK,IAAA,CAAA;AAChFR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,KAAKI,UAAAA,EAAY,MAAA,EAAQ,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;AAC7DR,IAAAA,YAAAA,CACImB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,MAAA,EAAQ,KAAA,EAAO,QAAA,CAAA,CAAA,CAAA,CAC5EgD,KAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,WAAA,CAAA,CAAA,CAAA,CAAegD,IAAAA,CAAK,KAAA,CAAA;AAC1ER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;AACxER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,KAAA,CAAA,CAAA,CAAA,CAASgD,IAAAA,CAAK,KAAA,CAAA;AACpER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;AACxER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,OAAA,CAAA,CAAA,CAAA,CAAWgD,IAAAA,CAAK,KAAA,CAAA;AACtER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,MAAA,EAAQ,OAAA,CAAA,CAAA,CAAA,CAAWgD,IAAAA,CACjF,KAAA,CAAA;AAEJR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,EAAgB,KAAA,CAAA,CAAA,CAAA,CAASgD,IAAAA,CAAK,KAAA,CAAA;AACpFR,IAAAA,YAAAA,CACIoB,SAAAA,CACIhE,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,cAAA,EAAgB,UAAA,CAAA,CAAA,CACtD6D,cAAAA,EAAc,CAAA,CAClBb,KAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,QAAA,CAAA,CAAA,CAAA,CAAYgD,IAAAA,CAAK,KAAA,CAAA;EAC3E,CAAA,CAAA;AAEArB,EAAAA,EAAAA,CAAG,6FAA6F,YAAA;AAC5F,IAAA,MAAMT,IAAAA,GAAOD,WAAW,oCAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAMgD,MAAAA,GAAStE,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,QAAA,CAAA;AAClC,IAAA,MAAMiD,MAAAA,GAASvE,IAAAA,CAAKsE,MAAAA,EAAQ,YAAA,CAAA;AAC5BhE,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,CAAA;AACvB1B,IAAAA,aAAAA,CAAcgE,QAAQ,uBAAA,EAAyB;MAC3C,cAAA,EAAgB;KACpB,CAAA;AACAhE,IAAAA,aAAAA,CAAciE,QAAQ,uBAAA,EAAyB;MAC3C,cAAA,EAAgB;KACpB,CAAA;AACA7D,IAAAA,SAAAA,CAAUV,IAAAA,CAAKuE,MAAAA,EAAQ,cAAA,EAAgB,gBAAA,CAAA,EAAmB;MAAE5D,SAAAA,EAAW;KAAK,CAAA;AAC5E+C,IAAAA,WAAAA,CACI,yDACA1D,IAAAA,CAAKuE,MAAAA,EAAQ,cAAA,EAAgB,gBAAA,EAAkB,oBAAA,CAAA,CAAA;AAGnD7D,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsE,MAAAA,EAAQ,cAAA,EAAgB,gBAAA,CAAA,EAAmB;MAAE3D,SAAAA,EAAW;KAAK,CAAA;AAC5E+C,IAAAA,WAAAA,CACI,mDACA1D,IAAAA,CAAKsE,MAAAA,EAAQ,cAAA,EAAgB,gBAAA,EAAkB,oBAAA,CAAA,CAAA;AAGnD,IAAA,MAAMlC,eAAAA,GAAkB;MACpBE,QAAAA,EAAUhB,IAAAA;MACV6B,WAAAA,EAAanB,OAAAA;MACbsB,mBAAAA,EAAqB,cAAA;AACrBN,MAAAA,8BAAAA,EAAgC,EAAA;MAChCR,6BAAAA,EAA+B;AAC3B,QAAA;UACIhC,IAAAA,EAAM,uBAAA;UACNmD,oBAAAA,EAAsB,cAAA;UACtBhB,YAAAA,EAAc,aAAA;UACdiB,YAAAA,EAAcU,MAAAA;UACdvD,OAAAA,EAAS;AACb,SAAA;AACA,QAAA;UACIP,IAAAA,EAAM,uBAAA;UACNmD,oBAAAA,EAAsB,aAAA;UACtBhB,YAAAA,EAAc,wBAAA;UACdiB,YAAAA,EAAcW,MAAAA;UACdxD,OAAAA,EAAS;AACb;;AAER,KAAA;AAEA,IAAA,MAAM8C,MAAAA,GAAS,MAAMJ,oBAAAA,CAAqB;AAAErB,MAAAA;KAAgB,CAAA;AAC5D,IAAA,MAAMhC,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AACpD,IAAA,MAAMoE,UAAAA,GAAaxE,KACfI,UAAAA,EACA,MAAA,EACA,UACA,YAAA,EACA,cAAA,EACA,kBACA,oBAAA,CAAA;AAEJwC,IAAAA,YAAAA,CAAOoB,UAAUQ,UAAAA,CAAAA,CAAYP,gBAAc,CAAA,CAAIb,KAAK,IAAA,CAAA;AACpDR,IAAAA,YAAAA,CAAOsB,YAAAA,CAAaM,UAAAA,CAAAA,CAAAA,CAAapB,KAC7B,uDAAA,CAAA;EAER,CAAA,CAAA;AAEArB,EAAAA,EAAAA,CAAG,uEAAuE,YAAA;AACtE,IAAA,MAAMT,IAAAA,GAAOD,WAAW,uCAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAMmD,SAAAA,GAAYzE,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,YAAA,CAAA;AACzC,IAAA,MAAMoD,UAAAA,GAAa1E,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,aAAA,CAAA;AAC1ChB,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,EAA0B;MAC7C,cAAA,EAAgB,6BAAA;MAChB,iBAAA,EAAmB;KACvB,CAAA;AACA1B,IAAAA,aAAAA,CAAcmE,WAAW,2BAAA,EAA6B;MAClD,aAAA,EAAe,sEAAA;MACf,0BAAA,EAA4B,0BAAA;MAC5B,0BAAA,EAA4B,qBAAA;MAC5B,oCAAA,EAAsC;KAC1C,CAAA;AACAnE,IAAAA,aAAAA,CAAcoE,YAAY,4BAAA,EAA8B;MACpD,cAAA,EAAgB;KACpB,CAAA;AAEA,IAAA,MAAMtC,eAAAA,GAAkB;MACpBE,QAAAA,EAAUhB,IAAAA;MACV6B,WAAAA,EAAanB,OAAAA;MACbsB,mBAAAA,EAAqB,cAAA;AACrBN,MAAAA,8BAAAA,EAAgC,EAAA;MAChCR,6BAAAA,EAA+B;AAC3B,QAAA;UACIhC,IAAAA,EAAM,2BAAA;UACNmD,oBAAAA,EAAsB,cAAA;UACtBhB,YAAAA,EAAc,qBAAA;UACdiB,YAAAA,EAAca,SAAAA;UACd1D,OAAAA,EAAS;AACb,SAAA;AACA,QAAA;UACIP,IAAAA,EAAM,4BAAA;UACNmD,oBAAAA,EAAsB,cAAA;UACtBhB,YAAAA,EAAc,sBAAA;UACdiB,YAAAA,EAAcc,UAAAA;UACd3D,OAAAA,EAAS;AACb;;AAER,KAAA;AAEA,IAAA,MAAM8C,MAAAA,GAAS,MAAMJ,oBAAAA,CAAqB;AACtCrB,MAAAA,eAAAA;AACAgC,MAAAA,aAAAA,EAAe,EAAA;MACfO,oBAAAA,EAAsB;QAClB,cAAA,EAAgB;AAAC,UAAA;;QACjB,qBAAA,EAAuB;AACnB,UAAA,aAAA;AACA,UAAA,uBAAA;AACA,UAAA;;AAER;KACJ,CAAA;AACA,IAAA,MAAMvE,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AAEpDwC,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,KAAKI,UAAAA,EAAY,MAAA,EAAQ,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;AAC7DR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,YAAA,EAAc,aAAA,CAAA,CAAA,CAAA,CAAiBgD,IAAAA,CAAK,IAAA,CAAA;AACnFR,IAAAA,YAAAA,CACImB,UAAAA,CACI/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,YAAA,EAAc,UAAA,EAAY,MAAA,EAAQ,YAAA,CAAA,CAAA,CAAA,CAErEgD,IAAAA,CAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CACImB,UAAAA,CACI/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,YAAA,EAAc,UAAA,EAAY,MAAA,EAAQ,KAAA,EAAO,QAAA,CAAA,CAAA,CAAA,CAE5EgD,KAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CACImB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,YAAA,EAAc,UAAA,EAAY,MAAA,EAAQ,OAAA,CAAA,CAAA,CAAA,CAC5EgD,IAAAA,CAAK,KAAA,CAAA;AACPR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,aAAA,EAAe,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAC/E,IAAA,CAAA;EAER,CAAA,CAAA;AACJ,CAAA,CAAA;AAEAvB,QAAAA,CAAS+C,uBAAuB,MAAA;AAC5B7C,EAAAA,EAAAA,CAAG,uEAAuE,YAAA;AACtE,IAAA,MAAMT,IAAAA,GAAOD,WAAW,2BAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAM4B,GAAAA,GAAMlD,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,KAAA,CAAA;AACnCZ,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,OAAA,CAAA,EAAU;MAAEX,SAAAA,EAAW;KAAK,CAAA;AACjEL,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,EAA0B;MAC7C,cAAA,EAAgB;KACpB,CAAA;AACA1B,IAAAA,aAAAA,CAAc4C,KAAK,oBAAA,EAAsB;MACrC,cAAA,EAAgB;KACpB,CAAA;AACA3B,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;AASX,CAAA,CAAA;AAGO,IAAA,MAAMuC,MAAAA,GAAS,MAAMe,qBAAAA,CAAsB;MAAEvC,GAAAA,EAAKL;KAAQ,CAAA;AAC1D,IAAA,MAAM5B,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AAEpDwC,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOgB,UAAU,CAAA,CAAEC,aAAAA,EAAa;AACvClC,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOkB,WAAW,CAAA,CAAEjC,OAAAA,CAAQ;AAC/B,MAAA;AACH,KAAA,CAAA;AACDF,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOmB,2BAA2B,CAAA,CAAE5B,IAAAA,CAAK,CAAA,CAAA;AAChDR,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOoB,2BAA2B,CAAA,CAAEnC,OAAAA,CAAQ;AAC/C,MAAA,cAAA,EAAgBO,aAAaH,GAAAA;KACjC,CAAA;AACAN,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAAK,IAAA,CAAA;AAChFR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,KAAKI,UAAAA,EAAY,MAAA,EAAQ,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;EACjE,CAAA,CAAA;AAEArB,EAAAA,EAAAA,CAAG,gEAAgE,YAAA;AAC/D,IAAA,MAAMT,IAAAA,GAAOD,WAAW,yBAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAM4B,GAAAA,GAAMlD,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,KAAA,CAAA;AACnC,IAAA,MAAM4D,SAAoE,EAAA;AAC1E,IAAA,MAAMC,MAAAA,GAAgC;MAClC3E,IAAAA,EAAM,aAAA;AACN4E,MAAAA,eAAAA,gCAAwBC,KAAAA,KAAAA;AACpBH,QAAAA,MAAAA,CAAO7E,KAAKgF,KAAAA,CAAAA;AACZ,QAAA,OAAO;AACHC,UAAAA,QAAAA,EAAU,EAAA;UACVC,eAAAA,EAAiB;YACb,cAAA,EAAgB;AAAC,cAAA;;YACjB,cAAA,EAAgB;AAAIlB,cAAAA,GAAAA,4BAAAA;AAA8B,cAAA;;AACtD,WAAA;UACAU,WAAAA,EAAa;AAAC,YAAA;;AAClB,SAAA;MACJ,CAAA,EAViB,iBAAA;AAWrB,KAAA;AAEArE,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,OAAA,CAAA,EAAU;MAAEX,SAAAA,EAAW;KAAK,CAAA;AACjEL,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,EAA0B;MAC7C,cAAA,EAAgB,6BAAA;MAChB,iBAAA,EAAmB;KACvB,CAAA;AACA1B,IAAAA,aAAAA,CAAc4C,KAAK,oBAAA,EAAsB;MACrC,cAAA,EAAgB,yBAAA;MAChB,kBAAA,EAAoB;KACxB,CAAA;AACA3B,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;AASX,CAAA,CAAA;AAGO,IAAA,MAAMuC,MAAAA,GAAS,MAAMe,qBAAAA,CAAsB;MACvCvC,GAAAA,EAAKL,OAAAA;AACLmD,MAAAA;KACJ,CAAA;AACA,IAAA,MAAM/E,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AAEpDwC,IAAAA,YAAAA,CAAOsC,MAAAA,CAAAA,CAAQrC,YAAAA,CAAa,CAAA,CAAA;AAC5B,IAAA,MAAM2C,UAAAA,GAAaN,OAAO,CAAA,CAAA;AAE1BtC,IAAAA,YAAAA,CAAO4C,UAAAA,EAAYC,aAAAA,CAAc;AAC7BnD,MAAAA,QAAAA,EAAUe,aAAa/B,IAAAA,CAAAA;AACvB6B,MAAAA,WAAAA,EAAaE,aAAarB,OAAAA,CAAAA;MAC1BsB,mBAAAA,EAAqB,cAAA;MACrBjB,GAAAA,EAAKL;KACT,CAAA;AACAY,IAAAA,YAAAA,CACI4C,UAAAA,CAAWpD,eAAAA,CAAgBI,6BAAAA,CAA8BC,GAAAA,CACrD,CAAC,EAAEE,YAAAA,EAAY,KAAOA,YAAAA,CAAAA,CAAAA,CAE5BG,OAAAA,CAAQ;AAAC,MAAA;AAAe,KAAA,CAAA;AAC1BF,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOgB,UAAU,CAAA,CAAEzB,IAAAA,CAAK,aAAA,CAAA;AAC/BR,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOkB,WAAW,CAAA,CAAEjC,OAAAA,CAAQ;AAAC,MAAA;AAAiC,KAAA,CAAA;AACrEF,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOmB,2BAA2B,CAAA,CAAE5B,IAAAA,CAAK,CAAA,CAAA;AAChDR,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOoB,2BAA2B,CAAA,CAAEnC,OAAAA,CAAQ;AAC/C,MAAA,cAAA,EAAgBO,aAAaH,GAAAA;KACjC,CAAA;AACAN,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,KAAKI,UAAAA,EAAY,MAAA,EAAQ,SAAA,CAAA,CAAA,CAAA,CAAagD,IAAAA,CAAK,KAAA,CAAA;AAC7DR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAAK,IAAA,CAAA;AAChFR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,KAAA,EAAO,OAAA,CAAA,CAAA,CAAA,CAAWgD,IAAAA,CAAK,KAAA,CAAA;EAC1E,CAAA,CAAA;AAEArB,EAAAA,EAAAA,CAAG,wFAAwF,YAAA;AACvF,IAAA,MAAMT,IAAAA,GAAOD,WAAW,wCAAA,CAAA;AACxB,IAAA,MAAMW,OAAAA,GAAUhC,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,SAAA,CAAA;AACnC,IAAA,MAAMoE,SAAAA,GAAY1F,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,YAAA,CAAA;AACzC,IAAA,MAAMqE,UAAAA,GAAa3F,IAAAA,CAAKsB,IAAAA,EAAM,UAAA,EAAY,aAAA,CAAA;AAC1C,IAAA,MAAM6D,MAAAA,GAAgC;MAClC3E,IAAAA,EAAM,aAAA;AACN4E,MAAAA,eAAAA,kBAAiB,MAAA,CAAA,aAAa;AAC1BE,QAAAA,QAAAA,EAAU,EAAA;QACVC,eAAAA,EAAiB;UACb,qBAAA,EAAuB;AAAC,YAAA;;AAC5B;OACJ,CAAA,EALiB,iBAAA;AAMrB,KAAA;AAEA7E,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,OAAA,CAAA,EAAU;MAAEX,SAAAA,EAAW;KAAK,CAAA;AACjEL,IAAAA,aAAAA,CAAc0B,SAAS,wBAAA,EAA0B;MAC7C,cAAA,EAAgB;KACpB,CAAA;AACA1B,IAAAA,aAAAA,CAAcoF,WAAW,2BAAA,EAA6B;MAClD,cAAA,EAAgB,4BAAA;MAChB,kBAAA,EAAoB;KACxB,CAAA;AACApF,IAAAA,aAAAA,CAAcqF,YAAY,4BAAA,EAA8B;MACpD,cAAA,EAAgB;KACpB,CAAA;AACApE,IAAAA,aAAAA,CACID,IAAAA,EACA;;;;;;;;;;;;;;;AAeX,CAAA,CAAA;AAGO,IAAA,MAAMuC,MAAAA,GAAS,MAAMe,qBAAAA,CAAsB;MACvCvC,GAAAA,EAAKL,OAAAA;AACLmD,MAAAA;KACJ,CAAA;AACA,IAAA,MAAM/E,UAAAA,GAAaD,eAAAA,CAAgB0D,MAAAA,CAAOzD,UAAU,CAAA;AAEpDwC,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,YAAA,EAAc,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAC9E,IAAA,CAAA;AAEJR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,YAAA,EAAc,OAAA,CAAA,CAAA,CAAA,CAAWgD,IAAAA,CAAK,KAAA,CAAA;AAC7ER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,UAAA,EAAY,aAAA,EAAe,KAAA,EAAO,UAAA,CAAA,CAAA,CAAA,CAAcgD,IAAAA,CAC/E,IAAA,CAAA;EAER,CAAA,CAAA;AACJ,CAAA,CAAA;AAEAvB,QAAAA,CAAS+D,6BAA6B,MAAA;AAClC7D,EAAAA,EAAAA,CAAG,qFAAqF,YAAA;AACpF,IAAA,MAAMT,IAAAA,GAAOD,WAAW,uBAAA,CAAA;AACxB,IAAA,MAAMjB,UAAAA,GAAaJ,IAAAA,CAAKF,GAAAA,EAAK,8BAAA,CAAA;AAC7B,IAAA,MAAMoD,MAAMlD,IAAAA,CAAKsB,IAAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,aAAa,QAAA,CAAA;AAExDhB,IAAAA,aAAAA,CAAc4C,KAAK,sCAAA,CAAA;AACnBxC,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,OAAA,CAAA,EAAU;MAAEX,SAAAA,EAAW;KAAK,CAAA;AACjED,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,MAAA,CAAA,EAAS;MAAEX,SAAAA,EAAW;KAAK,CAAA;AAChED,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,QAAA,CAAA,EAAW;MAAEX,SAAAA,EAAW;KAAK,CAAA;AAClED,IAAAA,SAAAA,CAAUV,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,gBAAA,CAAA,EAAmB;MAAEX,SAAAA,EAAW;KAAK,CAAA;AAC1EC,IAAAA,aAAAA,CAAcZ,KAAKsB,IAAAA,EAAM,cAAA,EAAgB,MAAA,EAAQ,WAAA,GAAc,aAAA,CAAA;AAC/DZ,IAAAA,SAAAA,CAAUV,KAAKI,UAAAA,EAAY,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,QAAA,CAAA,EAAW;MAAEO,SAAAA,EAAW;KAAK,CAAA;AACzF+C,IAAAA,WAAAA,CAAY,wCAAA,EAA0C1D,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,QAAA,CAAA,CAAA;AACjFoC,IAAAA,WAAAA,CACI,6DACA1D,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,MAAA,EAAQ,KAAA,CAAA,CAAA;AAEvCoC,IAAAA,WAAAA,CACI,uDACA1D,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,QAAA,EAAU,MAAA,CAAA,CAAA;AAEzCoC,IAAAA,WAAAA,CACI,wCACA1D,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,gBAAA,EAAkB,uBAAA,CAAA,CAAA;AAEjDoC,IAAAA,WAAAA,CAAY,SAAS1D,IAAAA,CAAKsB,IAAAA,EAAM,cAAA,EAAgB,gBAAA,EAAkB,iBAAA,CAAA,CAAA;AAElE,IAAA,MAAMuC,MAAAA,GAAS,MAAM+B,2BAAAA,CAA4B;MAC7CtD,QAAAA,EAAUhB,IAAAA;AACVlB,MAAAA,UAAAA;MACAyF,eAAAA,EAAiB;AAAC,QAAA,sCAAA;AAAwC,QAAA,aAAA;AAAe,QAAA;;KAC7E,CAAA;AAEAjD,IAAAA,YAAAA,CAAOiB,OAAOiC,eAAe,CAAA,CAAE1C,KAAKpD,IAAAA,CAAKI,UAAAA,EAAY,cAAA,CAAA,CAAA;AACrDwC,IAAAA,YAAAA,CAAOiB,MAAAA,CAAOkC,QAAQ,CAAA,CAAEjD,OAAAA,CAAQ;AAC5B,MAAA,sCAAA;AACA,MAAA,aAAA;AACA,MAAA;AACH,KAAA,CAAA;AACDF,IAAAA,YAAAA,CAAOsB,YAAAA,CAAalE,KAAKI,UAAAA,EAAY,cAAA,EAAgB,QAAA,CAAA,CAAA,CAAA,CAAYgD,IAAAA,CAC7D,wCAAA,CAAA;AAEJR,IAAAA,YAAAA,CAAOoB,SAAAA,CAAUhE,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,OAAA,CAAA,CAAA,CAAU4F,WAAAA,EAAW,CAAA,CAAI5C,IAAAA,CAAK,IAAA,CAAA;AAChFR,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,MAAA,EAAQ,WAAA,CAAA,CAAA,CAAA,CAAegD,IAAAA,CAAK,KAAA,CAAA;AAC/ER,IAAAA,YAAAA,CAAOmB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,MAAA,EAAQ,KAAA,CAAA,CAAA,CAAA,CAASgD,IAAAA,CAAK,KAAA,CAAA;AACzER,IAAAA,YAAAA,CAAOoB,SAAAA,CAAUhE,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,QAAA,EAAU,MAAA,CAAA,CAAA,CAAS6D,cAAAA,EAAc,CAAA,CAAIb,IAAAA,CACnF,IAAA,CAAA;AAEJR,IAAAA,YAAAA,CACIoB,SAAAA,CACIhE,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,gBAAA,EAAkB,uBAAA,CAAA,CAAA,CACrD6D,cAAAA,EAAc,CAAA,CAClBb,IAAAA,CAAK,IAAA,CAAA;AACPR,IAAAA,YAAAA,CACIsB,YAAAA,CACIlE,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,gBAAA,EAAkB,uBAAA,CAAA,CAAA,CAAA,CAEzDgD,IAAAA,CAAK,sCAAA,CAAA;AACPR,IAAAA,YAAAA,CACImB,UAAAA,CAAW/D,IAAAA,CAAKI,UAAAA,EAAY,cAAA,EAAgB,gBAAA,EAAkB,iBAAA,CAAA,CAAA,CAAA,CAChEgD,IAAAA,CAAK,KAAA,CAAA;EACX,CAAA,CAAA;AACJ,CAAA,CAAA;AAEAvB,QAAAA,CAASoE,0BAA0B,MAAA;AAC/BlE,EAAAA,EAAAA,CAAG,8EAA8E,MAAA;AAC7Ea,IAAAA,YAAAA,CAAOqD,wBAAAA,CAAyB,OAAA,CAAA,CAAA,CAAUnD,OAAAA,CAAQ;MAC9CoD,QAAAA,EAAU,0BAAA;MACVC,aAAAA,EAAe,+BAAA;MACfC,QAAAA,EAAU;KACd,CAAA;EACJ,CAAA,CAAA;AACJ,CAAA,CAAA","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 'dependencies/generated-crate/src/lib.rs': 'pub fn generated() {}',\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', 'dependencies'))).toBe(false);\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-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"]}
|
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.11"
|
|
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/
|
|
40
|
-
"@layerzerolabs/
|
|
41
|
-
"@layerzerolabs/
|
|
39
|
+
"@layerzerolabs/typescript-configuration": "1.2.11",
|
|
40
|
+
"@layerzerolabs/vitest-configuration": "1.2.11",
|
|
41
|
+
"@layerzerolabs/tsup-configuration": "1.2.11"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"externalRepoConfig": {
|
|
48
48
|
"targets": [
|
|
49
49
|
"audit-external",
|
|
50
|
+
"console-oft-unaudited-internal",
|
|
50
51
|
"console-pen-test",
|
|
51
52
|
"gasolina-audit",
|
|
52
53
|
"layerzero-ver",
|
|
@@ -55,7 +56,7 @@
|
|
|
55
56
|
"usdai-internal"
|
|
56
57
|
]
|
|
57
58
|
},
|
|
58
|
-
"version": "1.2.
|
|
59
|
+
"version": "1.2.11",
|
|
59
60
|
"scripts": {
|
|
60
61
|
"build": "tsup",
|
|
61
62
|
"lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",
|