@layerzerolabs/vm-tooling 1.2.29 → 1.2.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/{HIFVOL6G.js → 4PZQU6GV.js} +7 -9
  2. package/dist/4PZQU6GV.js.map +1 -0
  3. package/dist/{P52CW6DK.js → D3SKWSHN.js} +3 -5
  4. package/dist/D3SKWSHN.js.map +1 -0
  5. package/dist/{5SLPZRAL.js → D5ZLPMIL.js} +5 -7
  6. package/dist/D5ZLPMIL.js.map +1 -0
  7. package/dist/EKUFNO5X.js +3 -0
  8. package/dist/EKUFNO5X.js.map +1 -0
  9. package/dist/{XOVO3JKY.js → ELRX6BWW.js} +3 -5
  10. package/dist/ELRX6BWW.js.map +1 -0
  11. package/dist/{GNAXYUMP.js → FZ4WTZV4.js} +5 -6
  12. package/dist/FZ4WTZV4.js.map +1 -0
  13. package/dist/{CYP6J4VH.js → GSL2M6U4.js} +4 -6
  14. package/dist/GSL2M6U4.js.map +1 -0
  15. package/dist/{5PX53N66.js → GU2VLUXE.js} +3 -5
  16. package/dist/GU2VLUXE.js.map +1 -0
  17. package/dist/{VB2BOPPZ.js → IHHBJ2SZ.js} +3 -5
  18. package/dist/IHHBJ2SZ.js.map +1 -0
  19. package/dist/{H55JBB6F.js → IUE6WGKT.js} +12 -14
  20. package/dist/IUE6WGKT.js.map +1 -0
  21. package/dist/{HMZV72VO.js → J7BNVFS2.js} +5 -7
  22. package/dist/J7BNVFS2.js.map +1 -0
  23. package/dist/{SWKTHNWT.js → KBDBSTDG.js} +4 -6
  24. package/dist/KBDBSTDG.js.map +1 -0
  25. package/dist/{BVTEQOCW.js → L53SDSQA.js} +4 -6
  26. package/dist/L53SDSQA.js.map +1 -0
  27. package/dist/{GBCVVX6B.js → NCFTCSCO.js} +8 -10
  28. package/dist/NCFTCSCO.js.map +1 -0
  29. package/dist/{IGFQKKDO.js → UCR2ZBRF.js} +5 -6
  30. package/dist/UCR2ZBRF.js.map +1 -0
  31. package/dist/{TJ5HTUVM.js → UZOGNQDH.js} +3 -4
  32. package/dist/UZOGNQDH.js.map +1 -0
  33. package/dist/{XKW5QM54.js → V43YBQSF.js} +4 -6
  34. package/dist/V43YBQSF.js.map +1 -0
  35. package/dist/{6M3XVMYE.js → VAVK6AV3.js} +5 -7
  36. package/dist/VAVK6AV3.js.map +1 -0
  37. package/dist/{N3I7SNFG.js → VMHQSHJN.js} +3 -5
  38. package/dist/VMHQSHJN.js.map +1 -0
  39. package/dist/VUOMXK5T.js +6 -0
  40. package/dist/VUOMXK5T.js.map +1 -0
  41. package/dist/{XMRVBPGX.js → WP67XJRG.js} +3 -5
  42. package/dist/WP67XJRG.js.map +1 -0
  43. package/dist/{ADZG6QSC.js → YT4XAH7H.js} +3 -4
  44. package/dist/YT4XAH7H.js.map +1 -0
  45. package/dist/{H4RUI4N2.js → YZCMSN63.js} +5 -7
  46. package/dist/YZCMSN63.js.map +1 -0
  47. package/dist/ZEW74YLA.js +3 -0
  48. package/dist/ZEW74YLA.js.map +1 -0
  49. package/dist/{RRKFUBOS.js → ZTUNQIFK.js} +5 -7
  50. package/dist/ZTUNQIFK.js.map +1 -0
  51. package/dist/cli.js +22 -22
  52. package/dist/config.js +3 -3
  53. package/dist/context.js +0 -3
  54. package/dist/context.js.map +1 -1
  55. package/dist/core/index.js +18 -18
  56. package/dist/core/local-executor.js +2 -2
  57. package/dist/core/lock.js +2 -2
  58. package/dist/core/tool-executor.js +17 -17
  59. package/dist/core/version-resolver.js +4 -4
  60. package/dist/display/formatters.js +4 -4
  61. package/dist/display/index.js +6 -6
  62. package/dist/display/version-display.js +5 -5
  63. package/dist/environment.js +2 -2
  64. package/dist/github/index.js +7 -7
  65. package/dist/github/matrix.js +6 -6
  66. package/dist/index.js +25 -28
  67. package/dist/index.js.map +1 -1
  68. package/dist/scoped-workspace/exclude-workspace-dependency-sources-pruner.js +2 -2
  69. package/dist/scoped-workspace/index.js +9 -9
  70. package/dist/scoped-workspace/node-modules.js +2 -2
  71. package/dist/scoped-workspace/types.js +0 -3
  72. package/dist/scoped-workspace/types.js.map +1 -1
  73. package/dist/scoped-workspace/workspace-dependency-graph.js +5 -5
  74. package/dist/scoped-workspace/workspace-source-copy.js +4 -4
  75. package/dist/test.js +6 -6
  76. package/dist/utils/docker.js +5 -5
  77. package/dist/utils/error.js +2 -2
  78. package/dist/utils/finder.js +2 -2
  79. package/dist/utils/fs.js +2 -2
  80. package/dist/utils.js +3 -3
  81. package/package.json +6 -7
  82. package/dist/2GK3MDLX.js +0 -1341
  83. package/dist/2GK3MDLX.js.map +0 -1
  84. package/dist/5PX53N66.js.map +0 -1
  85. package/dist/5SLPZRAL.js.map +0 -1
  86. package/dist/6M3XVMYE.js.map +0 -1
  87. package/dist/ADZG6QSC.js.map +0 -1
  88. package/dist/BJVTHJLE.js +0 -6
  89. package/dist/BJVTHJLE.js.map +0 -1
  90. package/dist/BVTEQOCW.js.map +0 -1
  91. package/dist/CYP6J4VH.js.map +0 -1
  92. package/dist/GBCVVX6B.js.map +0 -1
  93. package/dist/GNAXYUMP.js.map +0 -1
  94. package/dist/H4RUI4N2.js.map +0 -1
  95. package/dist/H55JBB6F.js.map +0 -1
  96. package/dist/HIFVOL6G.js.map +0 -1
  97. package/dist/HMZV72VO.js.map +0 -1
  98. package/dist/IGFQKKDO.js.map +0 -1
  99. package/dist/JWJXCZMP.js +0 -40
  100. package/dist/JWJXCZMP.js.map +0 -1
  101. package/dist/LBCSKMFZ.js +0 -18392
  102. package/dist/LBCSKMFZ.js.map +0 -1
  103. package/dist/N3I7SNFG.js.map +0 -1
  104. package/dist/P52CW6DK.js.map +0 -1
  105. package/dist/RRKFUBOS.js.map +0 -1
  106. package/dist/SWKTHNWT.js.map +0 -1
  107. package/dist/TJ5HTUVM.js.map +0 -1
  108. package/dist/VB2BOPPZ.js.map +0 -1
  109. package/dist/XKW5QM54.js.map +0 -1
  110. package/dist/XMRVBPGX.js.map +0 -1
  111. package/dist/XOVO3JKY.js.map +0 -1
  112. package/dist/ZWMRQU7D.js +0 -6
  113. package/dist/ZWMRQU7D.js.map +0 -1
  114. package/dist/core/local-executor.test.js +0 -110
  115. package/dist/core/local-executor.test.js.map +0 -1
  116. package/dist/core/lock.test.js +0 -29
  117. package/dist/core/lock.test.js.map +0 -1
  118. package/dist/core/tool-executor.test.js +0 -186
  119. package/dist/core/tool-executor.test.js.map +0 -1
  120. package/dist/scoped-workspace/tests/exclude-workspace-dependency-sources-pruner.test.js +0 -49
  121. package/dist/scoped-workspace/tests/exclude-workspace-dependency-sources-pruner.test.js.map +0 -1
  122. package/dist/scoped-workspace/tests/scoped-workspace.test.js +0 -725
  123. package/dist/scoped-workspace/tests/scoped-workspace.test.js.map +0 -1
  124. package/dist/utils/docker.test.js +0 -272
  125. package/dist/utils/docker.test.js.map +0 -1
@@ -1 +0,0 @@
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"]}
@@ -1,272 +0,0 @@
1
- import { describe, afterEach, it, globalExpect, beforeEach } from '../LBCSKMFZ.js';
2
- import { resolveDockerPlatform, resolveEffectiveDockerPlatformValue, resolveDockerPlatformExecution, qualifyVolumeName } from '../H4RUI4N2.js';
3
- import { isDockerPlatformOverride } from '../SWKTHNWT.js';
4
- import '../P52CW6DK.js';
5
- import '../N3I7SNFG.js';
6
- import { init_esm_shims, __name } from '../JWJXCZMP.js';
7
-
8
- // src/utils/docker.test.ts
9
- init_esm_shims();
10
- var TAG = "agave-2.1.0-anchor-0.31.1";
11
- var qualifiedName = /* @__PURE__ */ __name((volume, options) => {
12
- const result = qualifyVolumeName(volume, options);
13
- if (result.type !== "isolate") {
14
- throw new Error("expected an isolate volume");
15
- }
16
- return result.name;
17
- }, "qualifiedName");
18
- describe("Docker platform helpers", () => {
19
- const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;
20
- afterEach(() => {
21
- if (originalDockerDefaultPlatform === void 0) {
22
- delete process.env.DOCKER_DEFAULT_PLATFORM;
23
- } else {
24
- process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;
25
- }
26
- });
27
- it.sequential("validates supported Docker platform overrides from one source of truth", () => {
28
- globalExpect(isDockerPlatformOverride("native")).toBe(true);
29
- globalExpect(isDockerPlatformOverride("linux/amd64")).toBe(true);
30
- globalExpect(isDockerPlatformOverride("linux/arm64")).toBe(true);
31
- globalExpect(isDockerPlatformOverride(null)).toBe(false);
32
- globalExpect(isDockerPlatformOverride(void 0)).toBe(false);
33
- globalExpect(isDockerPlatformOverride("")).toBe(false);
34
- globalExpect(isDockerPlatformOverride("linux/arm/v7")).toBe(false);
35
- });
36
- it.sequential("resolves a Docker platform into Docker and cache-name forms", () => {
37
- globalExpect(resolveDockerPlatform("linux/amd64")).toEqual({
38
- value: "linux/amd64",
39
- namespace: "linux-amd64",
40
- arch: "amd64"
41
- });
42
- });
43
- it.sequential("matches Docker arch parsing for multi-segment platform values", () => {
44
- globalExpect(resolveDockerPlatform("linux/arm/v7")).toEqual({
45
- value: "linux/arm/v7",
46
- namespace: "linux-arm-v7",
47
- arch: "arm"
48
- });
49
- });
50
- it.sequential("resolves the effective platform with CLI override first", () => {
51
- globalExpect(resolveEffectiveDockerPlatformValue({
52
- dockerPlatform: "linux/arm64",
53
- toolDockerPlatform: "linux/amd64",
54
- envDockerPlatform: "linux/amd64"
55
- })).toBe("linux/arm64");
56
- });
57
- it.sequential("lets native override skip tool and env platform fallbacks", () => {
58
- globalExpect(resolveEffectiveDockerPlatformValue({
59
- dockerPlatform: "native",
60
- toolDockerPlatform: "linux/amd64",
61
- envDockerPlatform: "linux/arm64"
62
- })).toBeUndefined();
63
- });
64
- it.sequential("uses the tool platform before the env fallback", () => {
65
- globalExpect(resolveEffectiveDockerPlatformValue({
66
- toolDockerPlatform: "linux/amd64",
67
- envDockerPlatform: "linux/arm64"
68
- })).toBe("linux/amd64");
69
- });
70
- it.sequential("resolves native execution by clearing Docker default platform", () => {
71
- process.env.DOCKER_DEFAULT_PLATFORM = "linux/amd64";
72
- const execution = resolveDockerPlatformExecution({
73
- dockerPlatform: "native",
74
- toolDockerPlatform: "linux/amd64"
75
- });
76
- globalExpect(execution.platform).toBeUndefined();
77
- globalExpect(execution.args).toEqual([]);
78
- globalExpect(execution.processEnv?.DOCKER_DEFAULT_PLATFORM).toBeUndefined();
79
- globalExpect(execution.volumeNameOptions).toEqual({
80
- dockerPlatform: void 0
81
- });
82
- });
83
- it.sequential("resolves pinned execution into one platform context", () => {
84
- globalExpect(resolveDockerPlatformExecution({
85
- dockerPlatform: "linux/arm64",
86
- toolDockerPlatform: "linux/amd64"
87
- })).toEqual({
88
- platform: {
89
- value: "linux/arm64",
90
- namespace: "linux-arm64",
91
- arch: "arm64"
92
- },
93
- args: [
94
- "--platform",
95
- "linux/arm64"
96
- ],
97
- volumeNameOptions: {
98
- dockerPlatform: "linux/arm64"
99
- }
100
- });
101
- });
102
- });
103
- describe(qualifyVolumeName, () => {
104
- const originalPackageName = process.env.npm_package_name;
105
- const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;
106
- beforeEach(() => {
107
- process.env.npm_package_name = "@layerzerolabs/oft-solana";
108
- delete process.env.DOCKER_DEFAULT_PLATFORM;
109
- });
110
- afterEach(() => {
111
- if (originalPackageName === void 0) {
112
- delete process.env.npm_package_name;
113
- } else {
114
- process.env.npm_package_name = originalPackageName;
115
- }
116
- if (originalDockerDefaultPlatform === void 0) {
117
- delete process.env.DOCKER_DEFAULT_PLATFORM;
118
- } else {
119
- process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;
120
- }
121
- });
122
- const isolateVolume = {
123
- type: "isolate",
124
- containerPath: "/usr/local/cargo",
125
- name: "solana-cargo"
126
- };
127
- it.sequential("leaves host volumes untouched even when cache and platform options are supplied", () => {
128
- const volume = {
129
- type: "host",
130
- containerPath: "/var/run/docker.sock",
131
- hostPath: "/var/run/docker.sock"
132
- };
133
- globalExpect(qualifyVolumeName(volume, {
134
- cacheKey: TAG,
135
- dockerPlatform: "linux/amd64"
136
- })).toEqual(volume);
137
- });
138
- it.sequential("keeps shared volumes package-agnostic and toolchain-agnostic", () => {
139
- const volume = {
140
- type: "isolate",
141
- containerPath: "/home/app/.move",
142
- name: "sui",
143
- shared: true
144
- };
145
- globalExpect(qualifiedName(volume, {
146
- cacheKey: TAG
147
- })).toBe("lz-tooling-cache-sui");
148
- globalExpect(qualifiedName({
149
- ...volume,
150
- toolchainKeyed: true
151
- }, {
152
- cacheKey: TAG
153
- })).toBe("lz-tooling-cache-sui");
154
- });
155
- it.sequential("keys a toolchainKeyed volume by the toolchain tag, not the package", () => {
156
- globalExpect(qualifiedName({
157
- ...isolateVolume,
158
- locked: true,
159
- toolchainKeyed: true
160
- }, {
161
- cacheKey: TAG
162
- })).toBe(`lz-tooling-cache-solana-cargo-${TAG}`);
163
- });
164
- it.sequential("keeps a non-opted-in volume package-private even when a cache key is available", () => {
165
- const volume = {
166
- type: "isolate",
167
- containerPath: "/root/.move",
168
- name: "aptos",
169
- locked: true
170
- };
171
- globalExpect(qualifiedName(volume, {
172
- cacheKey: TAG
173
- })).toBe("lz-tooling-cache-aptos-oft-solana");
174
- });
175
- it.sequential("falls back to package-private when a toolchainKeyed volume has no cache key", () => {
176
- globalExpect(qualifiedName({
177
- ...isolateVolume,
178
- toolchainKeyed: true
179
- })).toBe("lz-tooling-cache-solana-cargo-oft-solana");
180
- });
181
- it.sequential("throws when no cache key is usable and the package name is absent", () => {
182
- delete process.env.npm_package_name;
183
- globalExpect(() => qualifyVolumeName(isolateVolume)).toThrow("npm_package_name");
184
- });
185
- it.sequential("preserves existing isolate volume names when no platform is pinned", () => {
186
- globalExpect(qualifyVolumeName(isolateVolume)).toMatchObject({
187
- name: "lz-tooling-cache-solana-cargo-oft-solana"
188
- });
189
- });
190
- it.sequential("suffixes isolate volume names with the pinned amd64 platform", () => {
191
- globalExpect(qualifyVolumeName(isolateVolume, {
192
- dockerPlatform: "linux/amd64"
193
- })).toMatchObject({
194
- name: "lz-tooling-cache-solana-cargo-oft-solana-linux-amd64"
195
- });
196
- });
197
- it.sequential("uses different isolate volume names for different pinned platforms", () => {
198
- const amd64 = qualifyVolumeName(isolateVolume, {
199
- dockerPlatform: "linux/amd64"
200
- });
201
- const arm64 = qualifyVolumeName(isolateVolume, {
202
- dockerPlatform: "linux/arm64"
203
- });
204
- globalExpect(amd64).toMatchObject({
205
- name: "lz-tooling-cache-solana-cargo-oft-solana-linux-amd64"
206
- });
207
- globalExpect(arm64).toMatchObject({
208
- name: "lz-tooling-cache-solana-cargo-oft-solana-linux-arm64"
209
- });
210
- });
211
- it.sequential("uses DOCKER_DEFAULT_PLATFORM when no explicit platform is passed", () => {
212
- process.env.DOCKER_DEFAULT_PLATFORM = "linux/amd64";
213
- globalExpect(qualifyVolumeName(isolateVolume)).toMatchObject({
214
- name: "lz-tooling-cache-solana-cargo-oft-solana-linux-amd64"
215
- });
216
- });
217
- it.sequential("does not use DOCKER_DEFAULT_PLATFORM when an explicit undefined platform is passed", () => {
218
- process.env.DOCKER_DEFAULT_PLATFORM = "linux/amd64";
219
- globalExpect(qualifyVolumeName(isolateVolume, {
220
- dockerPlatform: void 0
221
- })).toMatchObject({
222
- name: "lz-tooling-cache-solana-cargo-oft-solana"
223
- });
224
- });
225
- it.sequential("keeps distinct ARM platform variants in distinct cache names", () => {
226
- process.env.DOCKER_DEFAULT_PLATFORM = "linux/arm/v6";
227
- const v6 = qualifyVolumeName({
228
- ...isolateVolume,
229
- shared: true
230
- });
231
- process.env.DOCKER_DEFAULT_PLATFORM = "linux/arm/v7";
232
- const v7 = qualifyVolumeName({
233
- ...isolateVolume,
234
- shared: true
235
- });
236
- globalExpect(v6).toMatchObject({
237
- name: "lz-tooling-cache-solana-cargo-linux-arm-v6"
238
- });
239
- globalExpect(v7).toMatchObject({
240
- name: "lz-tooling-cache-solana-cargo-linux-arm-v7"
241
- });
242
- });
243
- it.sequential("does not suffix architecture-independent isolate volumes", () => {
244
- globalExpect(qualifyVolumeName({
245
- ...isolateVolume,
246
- shared: true,
247
- architectureIndependent: true
248
- }, {
249
- dockerPlatform: "linux/amd64"
250
- })).toMatchObject({
251
- name: "lz-tooling-cache-solana-cargo"
252
- });
253
- });
254
- it.sequential("preserves shared volume naming while still platform-isolating it", () => {
255
- const sharedVolume = {
256
- type: "isolate",
257
- containerPath: "/shared",
258
- name: "shared-state",
259
- shared: true
260
- };
261
- globalExpect(qualifyVolumeName(sharedVolume)).toMatchObject({
262
- name: "lz-tooling-cache-shared-state"
263
- });
264
- globalExpect(qualifyVolumeName(sharedVolume, {
265
- dockerPlatform: "linux/amd64"
266
- })).toMatchObject({
267
- name: "lz-tooling-cache-shared-state-linux-amd64"
268
- });
269
- });
270
- });
271
- //# sourceMappingURL=docker.test.js.map
272
- //# sourceMappingURL=docker.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/docker.test.ts"],"names":["TAG","qualifiedName","volume","options","result","qualifyVolumeName","type","Error","name","describe","originalDockerDefaultPlatform","process","env","DOCKER_DEFAULT_PLATFORM","afterEach","undefined","it","sequential","expect","isDockerPlatformOverride","toBe","resolveDockerPlatform","toEqual","value","namespace","arch","resolveEffectiveDockerPlatformValue","dockerPlatform","toolDockerPlatform","envDockerPlatform","toBeUndefined","execution","resolveDockerPlatformExecution","platform","args","processEnv","volumeNameOptions","originalPackageName","npm_package_name","beforeEach","isolateVolume","containerPath","hostPath","cacheKey","shared","toolchainKeyed","locked","toThrow","toMatchObject","amd64","arm64","v6","v7","architectureIndependent","sharedVolume"],"mappings":"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","file":"docker.test.js","sourcesContent":["import { afterEach, beforeEach, describe, expect, it } from 'vitest';\n\nimport type { VolumeMapping } from '../config';\nimport { isDockerPlatformOverride } from '../config';\nimport type { QualifyVolumeNameOptions } from './docker';\nimport {\n qualifyVolumeName,\n resolveDockerPlatform,\n resolveDockerPlatformExecution,\n resolveEffectiveDockerPlatformValue,\n} from './docker';\n\nconst TAG = 'agave-2.1.0-anchor-0.31.1';\n\nconst qualifiedName = (volume: VolumeMapping, options?: QualifyVolumeNameOptions): string => {\n const result = qualifyVolumeName(volume, options);\n if (result.type !== 'isolate') {\n throw new Error('expected an isolate volume');\n }\n return result.name;\n};\n\ndescribe('Docker platform helpers', () => {\n const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;\n\n afterEach(() => {\n if (originalDockerDefaultPlatform === undefined) {\n delete process.env.DOCKER_DEFAULT_PLATFORM;\n } else {\n process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;\n }\n });\n\n it.sequential('validates supported Docker platform overrides from one source of truth', () => {\n expect(isDockerPlatformOverride('native')).toBe(true);\n expect(isDockerPlatformOverride('linux/amd64')).toBe(true);\n expect(isDockerPlatformOverride('linux/arm64')).toBe(true);\n expect(isDockerPlatformOverride(null)).toBe(false);\n expect(isDockerPlatformOverride(undefined)).toBe(false);\n expect(isDockerPlatformOverride('')).toBe(false);\n expect(isDockerPlatformOverride('linux/arm/v7')).toBe(false);\n });\n\n it.sequential('resolves a Docker platform into Docker and cache-name forms', () => {\n expect(resolveDockerPlatform('linux/amd64')).toEqual({\n value: 'linux/amd64',\n namespace: 'linux-amd64',\n arch: 'amd64',\n });\n });\n\n it.sequential('matches Docker arch parsing for multi-segment platform values', () => {\n expect(resolveDockerPlatform('linux/arm/v7')).toEqual({\n value: 'linux/arm/v7',\n namespace: 'linux-arm-v7',\n arch: 'arm',\n });\n });\n\n it.sequential('resolves the effective platform with CLI override first', () => {\n expect(\n resolveEffectiveDockerPlatformValue({\n dockerPlatform: 'linux/arm64',\n toolDockerPlatform: 'linux/amd64',\n envDockerPlatform: 'linux/amd64',\n }),\n ).toBe('linux/arm64');\n });\n\n it.sequential('lets native override skip tool and env platform fallbacks', () => {\n expect(\n resolveEffectiveDockerPlatformValue({\n dockerPlatform: 'native',\n toolDockerPlatform: 'linux/amd64',\n envDockerPlatform: 'linux/arm64',\n }),\n ).toBeUndefined();\n });\n\n it.sequential('uses the tool platform before the env fallback', () => {\n expect(\n resolveEffectiveDockerPlatformValue({\n toolDockerPlatform: 'linux/amd64',\n envDockerPlatform: 'linux/arm64',\n }),\n ).toBe('linux/amd64');\n });\n\n it.sequential('resolves native execution by clearing Docker default platform', () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/amd64';\n\n const execution = resolveDockerPlatformExecution({\n dockerPlatform: 'native',\n toolDockerPlatform: 'linux/amd64',\n });\n\n expect(execution.platform).toBeUndefined();\n expect(execution.args).toEqual([]);\n expect(execution.processEnv?.DOCKER_DEFAULT_PLATFORM).toBeUndefined();\n expect(execution.volumeNameOptions).toEqual({ dockerPlatform: undefined });\n });\n\n it.sequential('resolves pinned execution into one platform context', () => {\n expect(\n resolveDockerPlatformExecution({\n dockerPlatform: 'linux/arm64',\n toolDockerPlatform: 'linux/amd64',\n }),\n ).toEqual({\n platform: {\n value: 'linux/arm64',\n namespace: 'linux-arm64',\n arch: 'arm64',\n },\n args: ['--platform', 'linux/arm64'],\n volumeNameOptions: { dockerPlatform: 'linux/arm64' },\n });\n });\n});\n\ndescribe(qualifyVolumeName, () => {\n const originalPackageName = process.env.npm_package_name;\n const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;\n\n beforeEach(() => {\n process.env.npm_package_name = '@layerzerolabs/oft-solana';\n delete process.env.DOCKER_DEFAULT_PLATFORM;\n });\n\n afterEach(() => {\n if (originalPackageName === undefined) {\n delete process.env.npm_package_name;\n } else {\n process.env.npm_package_name = originalPackageName;\n }\n if (originalDockerDefaultPlatform === undefined) {\n delete process.env.DOCKER_DEFAULT_PLATFORM;\n } else {\n process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;\n }\n });\n\n const isolateVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/usr/local/cargo',\n name: 'solana-cargo',\n };\n\n it.sequential(\n 'leaves host volumes untouched even when cache and platform options are supplied',\n () => {\n const volume: VolumeMapping = {\n type: 'host',\n containerPath: '/var/run/docker.sock',\n hostPath: '/var/run/docker.sock',\n };\n expect(\n qualifyVolumeName(volume, { cacheKey: TAG, dockerPlatform: 'linux/amd64' }),\n ).toEqual(volume);\n },\n );\n\n it.sequential('keeps shared volumes package-agnostic and toolchain-agnostic', () => {\n const volume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/home/app/.move',\n name: 'sui',\n shared: true,\n };\n expect(qualifiedName(volume, { cacheKey: TAG })).toBe('lz-tooling-cache-sui');\n expect(qualifiedName({ ...volume, toolchainKeyed: true }, { cacheKey: TAG })).toBe(\n 'lz-tooling-cache-sui',\n );\n });\n\n it.sequential('keys a toolchainKeyed volume by the toolchain tag, not the package', () => {\n expect(\n qualifiedName(\n { ...isolateVolume, locked: true, toolchainKeyed: true },\n { cacheKey: TAG },\n ),\n ).toBe(`lz-tooling-cache-solana-cargo-${TAG}`);\n });\n\n it.sequential(\n 'keeps a non-opted-in volume package-private even when a cache key is available',\n () => {\n const volume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/root/.move',\n name: 'aptos',\n locked: true,\n };\n expect(qualifiedName(volume, { cacheKey: TAG })).toBe(\n 'lz-tooling-cache-aptos-oft-solana',\n );\n },\n );\n\n it.sequential(\n 'falls back to package-private when a toolchainKeyed volume has no cache key',\n () => {\n expect(qualifiedName({ ...isolateVolume, toolchainKeyed: true })).toBe(\n 'lz-tooling-cache-solana-cargo-oft-solana',\n );\n },\n );\n\n it.sequential('throws when no cache key is usable and the package name is absent', () => {\n delete process.env.npm_package_name;\n\n expect(() => qualifyVolumeName(isolateVolume)).toThrow('npm_package_name');\n });\n\n it.sequential('preserves existing isolate volume names when no platform is pinned', () => {\n expect(qualifyVolumeName(isolateVolume)).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana',\n });\n });\n\n it.sequential('suffixes isolate volume names with the pinned amd64 platform', () => {\n expect(qualifyVolumeName(isolateVolume, { dockerPlatform: 'linux/amd64' })).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-amd64',\n });\n });\n\n it.sequential('uses different isolate volume names for different pinned platforms', () => {\n const amd64 = qualifyVolumeName(isolateVolume, { dockerPlatform: 'linux/amd64' });\n const arm64 = qualifyVolumeName(isolateVolume, { dockerPlatform: 'linux/arm64' });\n\n expect(amd64).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-amd64',\n });\n expect(arm64).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-arm64',\n });\n });\n\n it.sequential('uses DOCKER_DEFAULT_PLATFORM when no explicit platform is passed', () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/amd64';\n\n expect(qualifyVolumeName(isolateVolume)).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-amd64',\n });\n });\n\n it.sequential(\n 'does not use DOCKER_DEFAULT_PLATFORM when an explicit undefined platform is passed',\n () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/amd64';\n\n expect(qualifyVolumeName(isolateVolume, { dockerPlatform: undefined })).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana',\n });\n },\n );\n\n it.sequential('keeps distinct ARM platform variants in distinct cache names', () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/arm/v6';\n const v6 = qualifyVolumeName({ ...isolateVolume, shared: true });\n\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/arm/v7';\n const v7 = qualifyVolumeName({ ...isolateVolume, shared: true });\n\n expect(v6).toMatchObject({ name: 'lz-tooling-cache-solana-cargo-linux-arm-v6' });\n expect(v7).toMatchObject({ name: 'lz-tooling-cache-solana-cargo-linux-arm-v7' });\n });\n\n it.sequential('does not suffix architecture-independent isolate volumes', () => {\n expect(\n qualifyVolumeName(\n {\n ...isolateVolume,\n shared: true,\n architectureIndependent: true,\n },\n { dockerPlatform: 'linux/amd64' },\n ),\n ).toMatchObject({ name: 'lz-tooling-cache-solana-cargo' });\n });\n\n it.sequential('preserves shared volume naming while still platform-isolating it', () => {\n const sharedVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/shared',\n name: 'shared-state',\n shared: true,\n };\n\n expect(qualifyVolumeName(sharedVolume)).toMatchObject({\n name: 'lz-tooling-cache-shared-state',\n });\n expect(qualifyVolumeName(sharedVolume, { dockerPlatform: 'linux/amd64' })).toMatchObject({\n name: 'lz-tooling-cache-shared-state-linux-amd64',\n });\n });\n});\n"]}