@layerzerolabs/vm-tooling 1.2.10 → 1.2.12

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.
@@ -1,6 +1,6 @@
1
- import { createScopedWorkspace } from './FRKESQZG.js';
2
- import { safeRemove } from './GBRJXN7L.js';
3
1
  import { stringifyError } from './FFE7SXCG.js';
2
+ import { createScopedWorkspace } from './S72E7TE5.js';
3
+ import { safeRemove } from './GBRJXN7L.js';
4
4
  import { executeLocally } from './IPZ5KX7M.js';
5
5
  import { lockMany } from './H6FLARPD.js';
6
6
  import { resolveTypeVersions } from './3LCQOITB.js';
@@ -345,5 +345,5 @@ ${stdout}` : ""}`);
345
345
  __name(executeToolCommand, "executeToolCommand");
346
346
 
347
347
  export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv };
348
- //# sourceMappingURL=UJTQDPJD.js.map
349
- //# sourceMappingURL=UJTQDPJD.js.map
348
+ //# sourceMappingURL=H2SHSLKO.js.map
349
+ //# sourceMappingURL=H2SHSLKO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/tool-executor.ts"],"names":["getHostUserIds","userInfo","os","uid","gid","undefined","$","verbose","stdio","process","stderr","mergeVolumes","defaultVolumes","userVolumes","uniqBy","volume","containerPath","mergeToolEnv","layers","flat","name","CACHE_SAFE_CARGO_RE","CARGO_BUILD_RE","resolveCargoCacheEnv","script","volumes","test","cacheVolume","find","type","CARGO_TARGET_CACHE_PATH","value","resolveVolumePath","workspaceRoot","hostPath","path","resolve","replace","homedir","toDockerVolumeArgs","mode","readOnly","formatDockerArgForDisplay","arg","formatDockerVolumeArgs","volumeArgs","map","args","join","resolveWorkspaceContainerCwd","cwd","cwdReal","realpath","relativePath","relative","split","sep","posix","ensureDockerImage","imageUri","dockerPlatform","platform","expectedArchitecture","arch","docker$","processEnv","env","probeDockerPlatformContainerCreation","expectedPlatform","container","nothrow","quiet","exitCode","Error","containerId","stdout","trim","localImage","cachedArch","console","info","output","isAuthError","includes","executeToolCommand","context","toolName","customEntrypoint","entrypoint","customEnvVars","publish","versions","defaultVolumesEnabled","local","dockerPlatformOverride","tool","findToolByName","resolveDockerPlatformExecution","toolDockerPlatform","preExecute","resolvedVersion","resolveTypeVersions","getSecondaryVersion","secondaryVersion","satisfies","warn","error","stringifyError","executeLocally","scopedWorkspace","createScopedWorkspace","pruner","scopedWorkspacePruner","repoRoot","workspaceVolumes","scopedRoot","packageRoot","packageRelativePath","pnpmVirtualStoreMount","resolvedVolumes","copiedWorkspacePackageCount","prunerName","diagnostic","diagnostics","length","overrides","filter","userVolume","some","defaultVolume","image","findImageForTool","getImageUri","containerCwd","cacheKey","getImageTag","qualifiedVolumes","qualifyVolumeName","volumeNameOptions","volumeArg","defaultEnv","hasDockerSocketMount","dockerSocketEnv","cargoCacheEnv","envArgs","flatMap","hostUserIds","userIdEnvArgs","finalArgs","dockerArgs","privileged","p","lockMany","locked","label","time","result","timeEnd","removeResult","safeRemove","removed"],"mappings":"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","file":"UJTQDPJD.js","sourcesContent":["import { uniqBy } from 'es-toolkit';\nimport { realpath } from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport * as semver from 'semver';\nimport { $, type ProcessOutput } from 'zx';\n\nimport type { DockerPlatformOverride, EnvironmentVariable, VolumeMapping } from '../config';\nimport { CARGO_TARGET_CACHE_PATH } from '../config';\nimport type { ChainContext } from '../context';\nimport { createScopedWorkspace } from '../scoped-workspace';\nimport {\n type DockerPlatform,\n type DockerPlatformExecution,\n findImageForTool,\n getImageTag,\n getImageUri,\n qualifyVolumeName,\n resolveDockerPlatformExecution,\n} from '../utils/docker';\nimport { stringifyError } from '../utils/error';\nimport { findToolByName } from '../utils/finder';\nimport { safeRemove } from '../utils/fs';\nimport { executeLocally } from './local-executor';\nimport { lockMany } from './lock';\nimport { resolveTypeVersions } from './version-resolver';\n\n/**\n * Get the current user's UID and GID for Docker container user matching.\n * This prevents permission issues when containers write to bind-mounted directories.\n * On Windows or when running as root, returns undefined as UID/GID matching is not needed.\n */\nconst getHostUserIds = (): { uid: number; gid: number } | undefined => {\n // os.userInfo() returns uid/gid on POSIX systems, -1 on Windows\n const userInfo = os.userInfo();\n if (userInfo.uid === -1 || userInfo.gid === -1) {\n return undefined;\n }\n\n return { uid: userInfo.uid, gid: userInfo.gid };\n};\n\n// Configure zx to inherit stdio by default (moved from original setup)\n$.verbose = true;\n$.stdio = ['inherit', 'pipe', process.stderr];\n\n/**\n * Merge default volumes with user-specified volumes\n * User volumes take precedence when containerPath conflicts\n */\nconst mergeVolumes = (\n defaultVolumes: readonly VolumeMapping[],\n userVolumes: readonly VolumeMapping[],\n): VolumeMapping[] => uniqBy([...userVolumes, ...defaultVolumes], (volume) => volume.containerPath);\n\n/**\n * Merge env layers, highest precedence first. On a name collision the earlier layer wins — so the\n * cache redirect (passed last) can never clobber a user --env or a tool default for the same var.\n */\nexport const mergeToolEnv = (\n ...layers: readonly (readonly EnvironmentVariable[])[]\n): EnvironmentVariable[] => uniqBy(layers.flat(), ({ name }) => name);\n\n// test/nextest/check/clippy, the `t`/`c` aliases, and `cargo test-*`, with an optional +toolchain.\nconst CACHE_SAFE_CARGO_RE =\n /\\bcargo\\s+(?:\\+\\S+\\s+)?(?:test|nextest|check|clippy|t|c)(?:\\s|$)|\\bcargo\\s+(?:\\+\\S+\\s+)?test-\\S+/;\n// Anything that emits host artifacts: cargo build/b, rustc, sbf/bpf (incl. the dashed `cargo-*-sbf`\n// binaries the space-anchored branch would miss), and anchor build / idl build / test (anchor test\n// compiles the program + IDL before running). `(?![\\w-])` ends on a non-word boundary so a\n// separator-glued build (`cargo build;`) still trips it.\nconst CARGO_BUILD_RE =\n /\\banchor\\s+(?:idl\\s+build|build|test)\\b|\\bcargo-(?:build|test)-(?:sbf|bpf)\\b|\\bcargo\\s+(?:\\+\\S+\\s+)?(?:build(?:-sbf|-bpf)?|b|rustc|test-(?:sbf|bpf))(?![\\w-])/;\n\n/**\n * Redirect a cache-safe cargo `--script` to the shared `/cargo-target` mount via CARGO_TARGET_DIR.\n * Skips scripts containing a build (CARGO_BUILD_RE): a build's .so/IDL must reach the host-mounted\n * target/, not the cache. No-ops for tools that don't mount the cache.\n */\nexport const resolveCargoCacheEnv = (\n script: string | undefined,\n volumes: readonly VolumeMapping[],\n): EnvironmentVariable[] => {\n if (!script || !CACHE_SAFE_CARGO_RE.test(script) || CARGO_BUILD_RE.test(script)) {\n return [];\n }\n\n const cacheVolume = volumes.find(\n (volume) => volume.type === 'isolate' && volume.containerPath === CARGO_TARGET_CACHE_PATH,\n );\n if (!cacheVolume) {\n return [];\n }\n\n return [{ name: 'CARGO_TARGET_DIR', value: cacheVolume.containerPath }];\n};\n\n/**\n * Resolve a host path in a volume to an absolute path.\n * - Paths starting with ~ are resolved to home directory\n * - Relative paths (starting with . or no prefix) are resolved to workspace root\n * - Absolute paths are left unchanged\n */\nconst resolveVolumePath = (volume: VolumeMapping, workspaceRoot: string): VolumeMapping =>\n volume.type === 'host'\n ? {\n ...volume,\n hostPath: path.resolve(workspaceRoot, volume.hostPath.replace(/^~/, os.homedir())),\n }\n : volume;\n\nconst toDockerVolumeArgs = (volume: VolumeMapping): string[] => {\n const mode = volume.readOnly ? ':ro' : '';\n\n if (volume.type === 'host') {\n return ['-v', `${volume.hostPath}:${volume.containerPath}${mode}`];\n }\n\n return ['-v', `${volume.name}:${volume.containerPath}${mode}`];\n};\n\nconst formatDockerArgForDisplay = (arg: string): string =>\n /\\s|\"/.test(arg) ? `\"${arg.replace(/([\"\\\\])/g, '\\\\$1')}\"` : arg;\n\nconst formatDockerVolumeArgs = (volumeArgs: readonly (readonly string[])[]): string[] =>\n volumeArgs.map((args) => args.map(formatDockerArgForDisplay).join(' '));\n\nconst resolveWorkspaceContainerCwd = async ({\n cwd,\n workspaceRoot,\n}: {\n cwd: string;\n workspaceRoot: string;\n}): Promise<string> => {\n const cwdReal = await realpath(cwd);\n const relativePath = path.relative(workspaceRoot, cwdReal).split(path.sep).join(path.posix.sep);\n\n return relativePath ? path.posix.join('/workspace', relativePath) : '/workspace';\n};\n\nconst ensureDockerImage = async (\n imageUri: string,\n dockerPlatform: DockerPlatformExecution,\n): Promise<void> => {\n const platform = dockerPlatform.platform;\n const expectedArchitecture = platform?.arch;\n const docker$ = dockerPlatform.processEnv ? $({ env: dockerPlatform.processEnv }) : $;\n\n // Probe Docker's runnable platform by creating a container with the requested\n // platform. Docker uses this same platform resolution path for `docker run`.\n //\n // Do not inspect `.ImageManifestDescriptor.platform` here: Docker only added\n // that field in API v1.48 and may still omit it when the daemon does not use a\n // multi-platform image store. `docker image inspect` is also tag/cache-level\n // metadata, not the run-path decision. A successful `container create` is the\n // portable verification signal available without executing the tool command.\n const probeDockerPlatformContainerCreation = async (\n expectedPlatform: DockerPlatform,\n ): Promise<void> => {\n const container =\n await docker$`docker container create --platform ${expectedPlatform.value} ${imageUri} true`\n .nothrow()\n .quiet();\n\n if (container.exitCode) {\n throw new Error(\n [\n 'Failed to create Docker platform probe container:',\n ` - Image: ${imageUri}`,\n ` - Platform: ${expectedPlatform.value}`,\n ].join('\\n'),\n );\n }\n\n const containerId = container.stdout.trim();\n if (!containerId) {\n throw new Error(\n [\n 'Docker platform probe did not return a container id:',\n ` - Image: ${imageUri}`,\n ` - Platform: ${expectedPlatform.value}`,\n ].join('\\n'),\n );\n }\n\n await docker$`docker container rm ${containerId}`.nothrow().quiet();\n };\n\n // NOTE: `docker image ls <ref>` prints repository/tag in separate columns, so\n // `stdout.includes(<full-ref>)` is not reliable. Use `inspect` instead: exitCode=0\n // means the image exists locally.\n // Keep output minimal to avoid dumping full inspect JSON into CI logs.\n //\n // NOTE: Using `.quiet()` to avoid stderr being captured in the CI logs. If the image\n // is not in the cache, the process prints \"Error response from daemon: No such image: ...\"\n // which can confuse the uninitiated. It's just a cache miss, not an error.\n const localImage = await docker$`docker image inspect --format {{.Architecture}} ${imageUri}`\n .nothrow()\n .quiet();\n if (!localImage.exitCode) {\n const cachedArch = localImage.stdout.trim();\n if (!platform) {\n // No platform was requested, so any locally cached image is acceptable.\n console.info(\n `✅ Using cached Docker image: ${imageUri}${cachedArch ? ` (${cachedArch})` : ''}`,\n );\n return;\n }\n\n if (cachedArch === expectedArchitecture) {\n // A pinned platform still needs the container probe because tag-level\n // Architecture can disagree with Docker's actual --platform resolution.\n await probeDockerPlatformContainerCreation(platform);\n console.info(`✅ Using cached Docker image: ${imageUri} (${platform.value})`);\n return;\n }\n\n console.info(\n `🔄 Cached Docker image does not include the requested platform (${platform.value}); re-pulling.`,\n );\n }\n\n console.info(\n platform\n ? `📥 Pulling Docker image from: ${imageUri} (platform: ${platform.value})`\n : `📥 Pulling Docker image from: ${imageUri}`,\n );\n const output = await docker$`docker pull ${dockerPlatform.args} ${imageUri}`.nothrow();\n\n if (output.exitCode) {\n const stderr = output.stderr ?? '';\n const isAuthError =\n stderr.includes('authorization token has expired') ||\n stderr.includes('denied') ||\n stderr.includes('pull access denied');\n\n throw new Error(\n [\n 'Docker image not available:',\n ` - Image: ${imageUri} (pull failed)`,\n isAuthError\n ? ' - ECR auth expired. Run: pnpm localnet login'\n : ' - Check if the image tag exists in image registry.',\n ].join('\\n'),\n );\n }\n\n // After pulling, verify the same platform resolution path used by `docker run`.\n if (platform) {\n await probeDockerPlatformContainerCreation(platform);\n }\n\n console.info(`✅ Successfully pulled: ${imageUri}`);\n};\n\nexport interface ToolCommandExecutionOptions {\n cwd: string;\n volumes: readonly VolumeMapping[];\n customEntrypoint?: string;\n env: EnvironmentVariable[];\n args?: string[];\n script?: string;\n publish?: string[];\n versions?: Record<string, string>;\n defaultVolumesEnabled?: boolean;\n local?: boolean;\n dockerPlatform?: DockerPlatformOverride;\n}\n\n/**\n * Enhanced tool command execution using the new version compatibility matrix system\n */\nexport async function executeToolCommand<TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n args: string[],\n {\n cwd,\n volumes: userVolumes,\n customEntrypoint: entrypoint,\n env: customEnvVars,\n script,\n publish,\n versions = {},\n defaultVolumesEnabled = true,\n local,\n dockerPlatform: dockerPlatformOverride,\n }: ToolCommandExecutionOptions,\n): Promise<ProcessOutput> {\n const tool = findToolByName(context, toolName);\n const dockerPlatform = resolveDockerPlatformExecution({\n dockerPlatform: dockerPlatformOverride,\n toolDockerPlatform: tool.dockerPlatform,\n });\n\n // Run pre-execution hook if defined (e.g., toolchain sync)\n // TODO Support a local tool execution.\n if (tool.preExecute) {\n await tool.preExecute(context, {\n cwd,\n args,\n volumes: userVolumes,\n env: customEnvVars,\n script,\n publish,\n versions,\n defaultVolumesEnabled,\n dockerPlatform: dockerPlatformOverride,\n });\n }\n\n // Get the resolved version for the current tool.\n const resolvedVersion = resolveTypeVersions(context, versions)[tool.name];\n\n if (!resolvedVersion) {\n throw new Error(`No version resolved for tool ${tool.name}`);\n }\n\n console.info(`🔧 ${tool.name} version: ${resolvedVersion}`);\n\n // Check secondary version validation if available\n if (tool.getSecondaryVersion) {\n try {\n const secondaryVersion = await tool.getSecondaryVersion({ cwd });\n\n if (!semver.satisfies(secondaryVersion, resolvedVersion)) {\n console.warn(\n `Warning: Local configuration version (${secondaryVersion}) differs from resolved version (${resolvedVersion})`,\n );\n }\n } catch (error) {\n // Secondary version check failed, but continue with resolved version\n console.warn('Could not validate secondary version:', stringifyError(error));\n }\n }\n\n if (local) {\n return executeLocally(tool, resolvedVersion, {\n cwd,\n args,\n env: customEnvVars,\n script,\n });\n }\n\n const scopedWorkspace = await createScopedWorkspace({\n cwd,\n pruner: tool.scopedWorkspacePruner,\n });\n try {\n const workspaceRoot = scopedWorkspace.repoRoot;\n\n const workspaceVolumes: VolumeMapping[] = [\n {\n type: 'host',\n hostPath: scopedWorkspace.scopedRoot,\n containerPath: '/workspace',\n },\n {\n type: 'host',\n hostPath: scopedWorkspace.packageRoot,\n containerPath: `/workspace/${scopedWorkspace.packageRelativePath}`,\n },\n {\n type: 'host',\n hostPath: scopedWorkspace.pnpmVirtualStoreMount.hostPath,\n containerPath: scopedWorkspace.pnpmVirtualStoreMount.containerPath,\n readOnly: scopedWorkspace.pnpmVirtualStoreMount.readOnly,\n },\n ];\n\n const defaultVolumes = defaultVolumesEnabled ? (tool.defaultVolumes ?? []) : [];\n // Names are qualified below, once imageUri (the toolchain key) resolves.\n const resolvedVolumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) =>\n resolveVolumePath(volume, workspaceRoot),\n );\n\n console.info(`📦 Using scoped workspace: ${scopedWorkspace.scopedRoot}`);\n console.info(\n `📦 Copied ${scopedWorkspace.copiedWorkspacePackageCount} workspace package source(s)`,\n );\n if (scopedWorkspace.prunerName) {\n console.info(`📦 Scoped workspace pruner: ${scopedWorkspace.prunerName}`);\n }\n for (const diagnostic of scopedWorkspace.diagnostics) {\n console.info(`📦 ${diagnostic}`);\n }\n\n if (defaultVolumes.length > 0) {\n console.info(`📦 Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);\n\n if (userVolumes.length > 0) {\n const overrides = userVolumes.filter((userVolume) =>\n defaultVolumes.some(\n (defaultVolume) => defaultVolume.containerPath === userVolume.containerPath,\n ),\n );\n\n if (overrides.length > 0) {\n console.info(`🔧 User volumes override ${overrides.length} default volume(s)`);\n }\n }\n }\n\n // Use Docker image with merged volumes\n const image = findImageForTool(context, tool.name, resolvedVersion);\n const imageUri = await getImageUri(image);\n const containerCwd = await resolveWorkspaceContainerCwd({ cwd, workspaceRoot });\n\n // The image tag keys toolchain-shared caches — it's the registry identity of the pulled image,\n // so artifacts compiled inside it can't bleed across toolchains. See qualifyVolumeName.\n const cacheKey = getImageTag(image);\n const qualifiedVolumes = resolvedVolumes.map((volume) =>\n qualifyVolumeName(volume, { ...dockerPlatform.volumeNameOptions, cacheKey }),\n );\n const volumeArgs = [\n ...workspaceVolumes.map(toDockerVolumeArgs),\n ...qualifiedVolumes.map(toDockerVolumeArgs),\n ];\n\n console.info('📦 Docker volumes:');\n for (const volumeArg of formatDockerVolumeArgs(volumeArgs)) {\n console.info(` ${volumeArg}`);\n }\n\n await ensureDockerImage(imageUri, dockerPlatform);\n\n if (entrypoint?.trim()) {\n console.info(`🔧 Using custom entrypoint: ${entrypoint}`);\n }\n\n // Merge default env vars with custom env vars (custom takes precedence)\n const defaultEnv = tool.defaultEnv ?? [];\n\n // Check if Docker socket is mounted (for tools that spawn Docker containers)\n // If so, inject HOST_CWD and HOST_WORKSPACE_ROOT so the inner container knows the host paths\n const hasDockerSocketMount = resolvedVolumes.some(\n (volume) => volume.type === 'host' && volume.containerPath === '/var/run/docker.sock',\n );\n const dockerSocketEnv: EnvironmentVariable[] = hasDockerSocketMount\n ? [\n { name: 'HOST_CWD', value: cwd },\n { name: 'HOST_WORKSPACE_ROOT', value: workspaceRoot },\n ]\n : [];\n\n // Lowest precedence (passed last) so a user --env or tool default for CARGO_TARGET_DIR wins.\n const cargoCacheEnv = resolveCargoCacheEnv(script, resolvedVolumes);\n\n const envArgs = mergeToolEnv(\n customEnvVars,\n dockerSocketEnv,\n defaultEnv,\n cargoCacheEnv,\n ).flatMap(({ name, value }) => ['-e', `${name}=${value}`]);\n\n if (cargoCacheEnv.length > 0) {\n console.info(`🗃️ Sharing cargo target cache at ${CARGO_TARGET_CACHE_PATH}`);\n }\n\n // Add host user UID/GID for permission matching on Linux/macOS\n // This prevents artifacts created in containers from having root ownership\n // Used by stellar, sui, and iota images which have an entrypoint that handles UID/GID\n const hostUserIds = getHostUserIds();\n const userIdEnvArgs = hostUserIds\n ? ['-e', `LOCAL_UID=${hostUserIds.uid}`, '-e', `LOCAL_GID=${hostUserIds.gid}`]\n : [];\n\n console.info(`👤 Running container as UID:GID ${hostUserIds?.uid}:${hostUserIds?.gid}`);\n\n if (defaultEnv.length > 0) {\n console.info(\n `🌍 Using ${defaultEnv.length} default environment variable(s) for ${tool.name}`,\n );\n }\n if (customEnvVars.length > 0) {\n console.info(`🌍 Using ${customEnvVars.length} custom environment variable(s)`);\n }\n\n // Handle custom script execution\n let finalArgs: string[];\n if (script && script.trim() !== '') {\n console.info(`📜 Executing custom script: ${script}`);\n finalArgs = ['bash', '-c', script];\n } else {\n finalArgs = entrypoint === undefined ? [tool.name, ...args] : args;\n }\n\n // Build the Docker command with proper argument separation\n const dockerArgs = [\n 'run',\n ...dockerPlatform.args,\n ...(tool.privileged ? ['--privileged'] : []),\n '--rm',\n '--add-host=host.docker.internal:host-gateway',\n ...envArgs,\n ...userIdEnvArgs,\n ...volumeArgs.flat(),\n '-w',\n containerCwd,\n ...(publish ?? []).flatMap((p) => ['-p', p.trim()]),\n ...(entrypoint ? ['--entrypoint', entrypoint] : []),\n imageUri,\n ...finalArgs,\n ];\n\n const output = await lockMany(\n qualifiedVolumes.flatMap((volume) =>\n volume.type === 'isolate' && volume.locked ? [volume.name] : [],\n ),\n async () => {\n const label = `⏳ ${finalArgs.join(' ')}`;\n console.time(label);\n const docker$ = dockerPlatform.processEnv\n ? $({ env: dockerPlatform.processEnv })\n : $;\n const result = await docker$`docker ${dockerArgs}`.nothrow();\n console.timeEnd(label);\n\n return result;\n },\n );\n\n if (output.exitCode) {\n const stdout = output.stdout.trim();\n throw new Error(\n `Failed to run Docker container (exit code: ${output.exitCode})${stdout ? `\\n${stdout}` : ''}`,\n );\n }\n\n return output;\n } finally {\n // Docker can release bind mounts slightly after the command exits; cleanup failures should\n // not fail a completed tool run.\n const removeResult = await safeRemove(scopedWorkspace.scopedRoot);\n if (!removeResult.removed) {\n console.warn(\n `⚠️ Failed to clean up scoped workspace ${scopedWorkspace.scopedRoot}: ${stringifyError(removeResult.error)}`,\n );\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/tool-executor.ts"],"names":["getHostUserIds","userInfo","os","uid","gid","undefined","$","verbose","stdio","process","stderr","mergeVolumes","defaultVolumes","userVolumes","uniqBy","volume","containerPath","mergeToolEnv","layers","flat","name","CACHE_SAFE_CARGO_RE","CARGO_BUILD_RE","resolveCargoCacheEnv","script","volumes","test","cacheVolume","find","type","CARGO_TARGET_CACHE_PATH","value","resolveVolumePath","workspaceRoot","hostPath","path","resolve","replace","homedir","toDockerVolumeArgs","mode","readOnly","formatDockerArgForDisplay","arg","formatDockerVolumeArgs","volumeArgs","map","args","join","resolveWorkspaceContainerCwd","cwd","cwdReal","realpath","relativePath","relative","split","sep","posix","ensureDockerImage","imageUri","dockerPlatform","platform","expectedArchitecture","arch","docker$","processEnv","env","probeDockerPlatformContainerCreation","expectedPlatform","container","nothrow","quiet","exitCode","Error","containerId","stdout","trim","localImage","cachedArch","console","info","output","isAuthError","includes","executeToolCommand","context","toolName","customEntrypoint","entrypoint","customEnvVars","publish","versions","defaultVolumesEnabled","local","dockerPlatformOverride","tool","findToolByName","resolveDockerPlatformExecution","toolDockerPlatform","preExecute","resolvedVersion","resolveTypeVersions","getSecondaryVersion","secondaryVersion","satisfies","warn","error","stringifyError","executeLocally","scopedWorkspace","createScopedWorkspace","pruner","scopedWorkspacePruner","repoRoot","workspaceVolumes","scopedRoot","packageRoot","packageRelativePath","pnpmVirtualStoreMount","resolvedVolumes","copiedWorkspacePackageCount","prunerName","diagnostic","diagnostics","length","overrides","filter","userVolume","some","defaultVolume","image","findImageForTool","getImageUri","containerCwd","cacheKey","getImageTag","qualifiedVolumes","qualifyVolumeName","volumeNameOptions","volumeArg","defaultEnv","hasDockerSocketMount","dockerSocketEnv","cargoCacheEnv","envArgs","flatMap","hostUserIds","userIdEnvArgs","finalArgs","dockerArgs","privileged","p","lockMany","locked","label","time","result","timeEnd","removeResult","safeRemove","removed"],"mappings":"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","file":"H2SHSLKO.js","sourcesContent":["import { uniqBy } from 'es-toolkit';\nimport { realpath } from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport * as semver from 'semver';\nimport { $, type ProcessOutput } from 'zx';\n\nimport type { DockerPlatformOverride, EnvironmentVariable, VolumeMapping } from '../config';\nimport { CARGO_TARGET_CACHE_PATH } from '../config';\nimport type { ChainContext } from '../context';\nimport { createScopedWorkspace } from '../scoped-workspace';\nimport {\n type DockerPlatform,\n type DockerPlatformExecution,\n findImageForTool,\n getImageTag,\n getImageUri,\n qualifyVolumeName,\n resolveDockerPlatformExecution,\n} from '../utils/docker';\nimport { stringifyError } from '../utils/error';\nimport { findToolByName } from '../utils/finder';\nimport { safeRemove } from '../utils/fs';\nimport { executeLocally } from './local-executor';\nimport { lockMany } from './lock';\nimport { resolveTypeVersions } from './version-resolver';\n\n/**\n * Get the current user's UID and GID for Docker container user matching.\n * This prevents permission issues when containers write to bind-mounted directories.\n * On Windows or when running as root, returns undefined as UID/GID matching is not needed.\n */\nconst getHostUserIds = (): { uid: number; gid: number } | undefined => {\n // os.userInfo() returns uid/gid on POSIX systems, -1 on Windows\n const userInfo = os.userInfo();\n if (userInfo.uid === -1 || userInfo.gid === -1) {\n return undefined;\n }\n\n return { uid: userInfo.uid, gid: userInfo.gid };\n};\n\n// Configure zx to inherit stdio by default (moved from original setup)\n$.verbose = true;\n$.stdio = ['inherit', 'pipe', process.stderr];\n\n/**\n * Merge default volumes with user-specified volumes\n * User volumes take precedence when containerPath conflicts\n */\nconst mergeVolumes = (\n defaultVolumes: readonly VolumeMapping[],\n userVolumes: readonly VolumeMapping[],\n): VolumeMapping[] => uniqBy([...userVolumes, ...defaultVolumes], (volume) => volume.containerPath);\n\n/**\n * Merge env layers, highest precedence first. On a name collision the earlier layer wins — so the\n * cache redirect (passed last) can never clobber a user --env or a tool default for the same var.\n */\nexport const mergeToolEnv = (\n ...layers: readonly (readonly EnvironmentVariable[])[]\n): EnvironmentVariable[] => uniqBy(layers.flat(), ({ name }) => name);\n\n// test/nextest/check/clippy, the `t`/`c` aliases, and `cargo test-*`, with an optional +toolchain.\nconst CACHE_SAFE_CARGO_RE =\n /\\bcargo\\s+(?:\\+\\S+\\s+)?(?:test|nextest|check|clippy|t|c)(?:\\s|$)|\\bcargo\\s+(?:\\+\\S+\\s+)?test-\\S+/;\n// Anything that emits host artifacts: cargo build/b, rustc, sbf/bpf (incl. the dashed `cargo-*-sbf`\n// binaries the space-anchored branch would miss), and anchor build / idl build / test (anchor test\n// compiles the program + IDL before running). `(?![\\w-])` ends on a non-word boundary so a\n// separator-glued build (`cargo build;`) still trips it.\nconst CARGO_BUILD_RE =\n /\\banchor\\s+(?:idl\\s+build|build|test)\\b|\\bcargo-(?:build|test)-(?:sbf|bpf)\\b|\\bcargo\\s+(?:\\+\\S+\\s+)?(?:build(?:-sbf|-bpf)?|b|rustc|test-(?:sbf|bpf))(?![\\w-])/;\n\n/**\n * Redirect a cache-safe cargo `--script` to the shared `/cargo-target` mount via CARGO_TARGET_DIR.\n * Skips scripts containing a build (CARGO_BUILD_RE): a build's .so/IDL must reach the host-mounted\n * target/, not the cache. No-ops for tools that don't mount the cache.\n */\nexport const resolveCargoCacheEnv = (\n script: string | undefined,\n volumes: readonly VolumeMapping[],\n): EnvironmentVariable[] => {\n if (!script || !CACHE_SAFE_CARGO_RE.test(script) || CARGO_BUILD_RE.test(script)) {\n return [];\n }\n\n const cacheVolume = volumes.find(\n (volume) => volume.type === 'isolate' && volume.containerPath === CARGO_TARGET_CACHE_PATH,\n );\n if (!cacheVolume) {\n return [];\n }\n\n return [{ name: 'CARGO_TARGET_DIR', value: cacheVolume.containerPath }];\n};\n\n/**\n * Resolve a host path in a volume to an absolute path.\n * - Paths starting with ~ are resolved to home directory\n * - Relative paths (starting with . or no prefix) are resolved to workspace root\n * - Absolute paths are left unchanged\n */\nconst resolveVolumePath = (volume: VolumeMapping, workspaceRoot: string): VolumeMapping =>\n volume.type === 'host'\n ? {\n ...volume,\n hostPath: path.resolve(workspaceRoot, volume.hostPath.replace(/^~/, os.homedir())),\n }\n : volume;\n\nconst toDockerVolumeArgs = (volume: VolumeMapping): string[] => {\n const mode = volume.readOnly ? ':ro' : '';\n\n if (volume.type === 'host') {\n return ['-v', `${volume.hostPath}:${volume.containerPath}${mode}`];\n }\n\n return ['-v', `${volume.name}:${volume.containerPath}${mode}`];\n};\n\nconst formatDockerArgForDisplay = (arg: string): string =>\n /\\s|\"/.test(arg) ? `\"${arg.replace(/([\"\\\\])/g, '\\\\$1')}\"` : arg;\n\nconst formatDockerVolumeArgs = (volumeArgs: readonly (readonly string[])[]): string[] =>\n volumeArgs.map((args) => args.map(formatDockerArgForDisplay).join(' '));\n\nconst resolveWorkspaceContainerCwd = async ({\n cwd,\n workspaceRoot,\n}: {\n cwd: string;\n workspaceRoot: string;\n}): Promise<string> => {\n const cwdReal = await realpath(cwd);\n const relativePath = path.relative(workspaceRoot, cwdReal).split(path.sep).join(path.posix.sep);\n\n return relativePath ? path.posix.join('/workspace', relativePath) : '/workspace';\n};\n\nconst ensureDockerImage = async (\n imageUri: string,\n dockerPlatform: DockerPlatformExecution,\n): Promise<void> => {\n const platform = dockerPlatform.platform;\n const expectedArchitecture = platform?.arch;\n const docker$ = dockerPlatform.processEnv ? $({ env: dockerPlatform.processEnv }) : $;\n\n // Probe Docker's runnable platform by creating a container with the requested\n // platform. Docker uses this same platform resolution path for `docker run`.\n //\n // Do not inspect `.ImageManifestDescriptor.platform` here: Docker only added\n // that field in API v1.48 and may still omit it when the daemon does not use a\n // multi-platform image store. `docker image inspect` is also tag/cache-level\n // metadata, not the run-path decision. A successful `container create` is the\n // portable verification signal available without executing the tool command.\n const probeDockerPlatformContainerCreation = async (\n expectedPlatform: DockerPlatform,\n ): Promise<void> => {\n const container =\n await docker$`docker container create --platform ${expectedPlatform.value} ${imageUri} true`\n .nothrow()\n .quiet();\n\n if (container.exitCode) {\n throw new Error(\n [\n 'Failed to create Docker platform probe container:',\n ` - Image: ${imageUri}`,\n ` - Platform: ${expectedPlatform.value}`,\n ].join('\\n'),\n );\n }\n\n const containerId = container.stdout.trim();\n if (!containerId) {\n throw new Error(\n [\n 'Docker platform probe did not return a container id:',\n ` - Image: ${imageUri}`,\n ` - Platform: ${expectedPlatform.value}`,\n ].join('\\n'),\n );\n }\n\n await docker$`docker container rm ${containerId}`.nothrow().quiet();\n };\n\n // NOTE: `docker image ls <ref>` prints repository/tag in separate columns, so\n // `stdout.includes(<full-ref>)` is not reliable. Use `inspect` instead: exitCode=0\n // means the image exists locally.\n // Keep output minimal to avoid dumping full inspect JSON into CI logs.\n //\n // NOTE: Using `.quiet()` to avoid stderr being captured in the CI logs. If the image\n // is not in the cache, the process prints \"Error response from daemon: No such image: ...\"\n // which can confuse the uninitiated. It's just a cache miss, not an error.\n const localImage = await docker$`docker image inspect --format {{.Architecture}} ${imageUri}`\n .nothrow()\n .quiet();\n if (!localImage.exitCode) {\n const cachedArch = localImage.stdout.trim();\n if (!platform) {\n // No platform was requested, so any locally cached image is acceptable.\n console.info(\n `✅ Using cached Docker image: ${imageUri}${cachedArch ? ` (${cachedArch})` : ''}`,\n );\n return;\n }\n\n if (cachedArch === expectedArchitecture) {\n // A pinned platform still needs the container probe because tag-level\n // Architecture can disagree with Docker's actual --platform resolution.\n await probeDockerPlatformContainerCreation(platform);\n console.info(`✅ Using cached Docker image: ${imageUri} (${platform.value})`);\n return;\n }\n\n console.info(\n `🔄 Cached Docker image does not include the requested platform (${platform.value}); re-pulling.`,\n );\n }\n\n console.info(\n platform\n ? `📥 Pulling Docker image from: ${imageUri} (platform: ${platform.value})`\n : `📥 Pulling Docker image from: ${imageUri}`,\n );\n const output = await docker$`docker pull ${dockerPlatform.args} ${imageUri}`.nothrow();\n\n if (output.exitCode) {\n const stderr = output.stderr ?? '';\n const isAuthError =\n stderr.includes('authorization token has expired') ||\n stderr.includes('denied') ||\n stderr.includes('pull access denied');\n\n throw new Error(\n [\n 'Docker image not available:',\n ` - Image: ${imageUri} (pull failed)`,\n isAuthError\n ? ' - ECR auth expired. Run: pnpm localnet login'\n : ' - Check if the image tag exists in image registry.',\n ].join('\\n'),\n );\n }\n\n // After pulling, verify the same platform resolution path used by `docker run`.\n if (platform) {\n await probeDockerPlatformContainerCreation(platform);\n }\n\n console.info(`✅ Successfully pulled: ${imageUri}`);\n};\n\nexport interface ToolCommandExecutionOptions {\n cwd: string;\n volumes: readonly VolumeMapping[];\n customEntrypoint?: string;\n env: EnvironmentVariable[];\n args?: string[];\n script?: string;\n publish?: string[];\n versions?: Record<string, string>;\n defaultVolumesEnabled?: boolean;\n local?: boolean;\n dockerPlatform?: DockerPlatformOverride;\n}\n\n/**\n * Enhanced tool command execution using the new version compatibility matrix system\n */\nexport async function executeToolCommand<TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n args: string[],\n {\n cwd,\n volumes: userVolumes,\n customEntrypoint: entrypoint,\n env: customEnvVars,\n script,\n publish,\n versions = {},\n defaultVolumesEnabled = true,\n local,\n dockerPlatform: dockerPlatformOverride,\n }: ToolCommandExecutionOptions,\n): Promise<ProcessOutput> {\n const tool = findToolByName(context, toolName);\n const dockerPlatform = resolveDockerPlatformExecution({\n dockerPlatform: dockerPlatformOverride,\n toolDockerPlatform: tool.dockerPlatform,\n });\n\n // Run pre-execution hook if defined (e.g., toolchain sync)\n // TODO Support a local tool execution.\n if (tool.preExecute) {\n await tool.preExecute(context, {\n cwd,\n args,\n volumes: userVolumes,\n env: customEnvVars,\n script,\n publish,\n versions,\n defaultVolumesEnabled,\n dockerPlatform: dockerPlatformOverride,\n });\n }\n\n // Get the resolved version for the current tool.\n const resolvedVersion = resolveTypeVersions(context, versions)[tool.name];\n\n if (!resolvedVersion) {\n throw new Error(`No version resolved for tool ${tool.name}`);\n }\n\n console.info(`🔧 ${tool.name} version: ${resolvedVersion}`);\n\n // Check secondary version validation if available\n if (tool.getSecondaryVersion) {\n try {\n const secondaryVersion = await tool.getSecondaryVersion({ cwd });\n\n if (!semver.satisfies(secondaryVersion, resolvedVersion)) {\n console.warn(\n `Warning: Local configuration version (${secondaryVersion}) differs from resolved version (${resolvedVersion})`,\n );\n }\n } catch (error) {\n // Secondary version check failed, but continue with resolved version\n console.warn('Could not validate secondary version:', stringifyError(error));\n }\n }\n\n if (local) {\n return executeLocally(tool, resolvedVersion, {\n cwd,\n args,\n env: customEnvVars,\n script,\n });\n }\n\n const scopedWorkspace = await createScopedWorkspace({\n cwd,\n pruner: tool.scopedWorkspacePruner,\n });\n try {\n const workspaceRoot = scopedWorkspace.repoRoot;\n\n const workspaceVolumes: VolumeMapping[] = [\n {\n type: 'host',\n hostPath: scopedWorkspace.scopedRoot,\n containerPath: '/workspace',\n },\n {\n type: 'host',\n hostPath: scopedWorkspace.packageRoot,\n containerPath: `/workspace/${scopedWorkspace.packageRelativePath}`,\n },\n {\n type: 'host',\n hostPath: scopedWorkspace.pnpmVirtualStoreMount.hostPath,\n containerPath: scopedWorkspace.pnpmVirtualStoreMount.containerPath,\n readOnly: scopedWorkspace.pnpmVirtualStoreMount.readOnly,\n },\n ];\n\n const defaultVolumes = defaultVolumesEnabled ? (tool.defaultVolumes ?? []) : [];\n // Names are qualified below, once imageUri (the toolchain key) resolves.\n const resolvedVolumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) =>\n resolveVolumePath(volume, workspaceRoot),\n );\n\n console.info(`📦 Using scoped workspace: ${scopedWorkspace.scopedRoot}`);\n console.info(\n `📦 Copied ${scopedWorkspace.copiedWorkspacePackageCount} workspace package source(s)`,\n );\n if (scopedWorkspace.prunerName) {\n console.info(`📦 Scoped workspace pruner: ${scopedWorkspace.prunerName}`);\n }\n for (const diagnostic of scopedWorkspace.diagnostics) {\n console.info(`📦 ${diagnostic}`);\n }\n\n if (defaultVolumes.length > 0) {\n console.info(`📦 Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);\n\n if (userVolumes.length > 0) {\n const overrides = userVolumes.filter((userVolume) =>\n defaultVolumes.some(\n (defaultVolume) => defaultVolume.containerPath === userVolume.containerPath,\n ),\n );\n\n if (overrides.length > 0) {\n console.info(`🔧 User volumes override ${overrides.length} default volume(s)`);\n }\n }\n }\n\n // Use Docker image with merged volumes\n const image = findImageForTool(context, tool.name, resolvedVersion);\n const imageUri = await getImageUri(image);\n const containerCwd = await resolveWorkspaceContainerCwd({ cwd, workspaceRoot });\n\n // The image tag keys toolchain-shared caches — it's the registry identity of the pulled image,\n // so artifacts compiled inside it can't bleed across toolchains. See qualifyVolumeName.\n const cacheKey = getImageTag(image);\n const qualifiedVolumes = resolvedVolumes.map((volume) =>\n qualifyVolumeName(volume, { ...dockerPlatform.volumeNameOptions, cacheKey }),\n );\n const volumeArgs = [\n ...workspaceVolumes.map(toDockerVolumeArgs),\n ...qualifiedVolumes.map(toDockerVolumeArgs),\n ];\n\n console.info('📦 Docker volumes:');\n for (const volumeArg of formatDockerVolumeArgs(volumeArgs)) {\n console.info(` ${volumeArg}`);\n }\n\n await ensureDockerImage(imageUri, dockerPlatform);\n\n if (entrypoint?.trim()) {\n console.info(`🔧 Using custom entrypoint: ${entrypoint}`);\n }\n\n // Merge default env vars with custom env vars (custom takes precedence)\n const defaultEnv = tool.defaultEnv ?? [];\n\n // Check if Docker socket is mounted (for tools that spawn Docker containers)\n // If so, inject HOST_CWD and HOST_WORKSPACE_ROOT so the inner container knows the host paths\n const hasDockerSocketMount = resolvedVolumes.some(\n (volume) => volume.type === 'host' && volume.containerPath === '/var/run/docker.sock',\n );\n const dockerSocketEnv: EnvironmentVariable[] = hasDockerSocketMount\n ? [\n { name: 'HOST_CWD', value: cwd },\n { name: 'HOST_WORKSPACE_ROOT', value: workspaceRoot },\n ]\n : [];\n\n // Lowest precedence (passed last) so a user --env or tool default for CARGO_TARGET_DIR wins.\n const cargoCacheEnv = resolveCargoCacheEnv(script, resolvedVolumes);\n\n const envArgs = mergeToolEnv(\n customEnvVars,\n dockerSocketEnv,\n defaultEnv,\n cargoCacheEnv,\n ).flatMap(({ name, value }) => ['-e', `${name}=${value}`]);\n\n if (cargoCacheEnv.length > 0) {\n console.info(`🗃️ Sharing cargo target cache at ${CARGO_TARGET_CACHE_PATH}`);\n }\n\n // Add host user UID/GID for permission matching on Linux/macOS\n // This prevents artifacts created in containers from having root ownership\n // Used by stellar, sui, and iota images which have an entrypoint that handles UID/GID\n const hostUserIds = getHostUserIds();\n const userIdEnvArgs = hostUserIds\n ? ['-e', `LOCAL_UID=${hostUserIds.uid}`, '-e', `LOCAL_GID=${hostUserIds.gid}`]\n : [];\n\n console.info(`👤 Running container as UID:GID ${hostUserIds?.uid}:${hostUserIds?.gid}`);\n\n if (defaultEnv.length > 0) {\n console.info(\n `🌍 Using ${defaultEnv.length} default environment variable(s) for ${tool.name}`,\n );\n }\n if (customEnvVars.length > 0) {\n console.info(`🌍 Using ${customEnvVars.length} custom environment variable(s)`);\n }\n\n // Handle custom script execution\n let finalArgs: string[];\n if (script && script.trim() !== '') {\n console.info(`📜 Executing custom script: ${script}`);\n finalArgs = ['bash', '-c', script];\n } else {\n finalArgs = entrypoint === undefined ? [tool.name, ...args] : args;\n }\n\n // Build the Docker command with proper argument separation\n const dockerArgs = [\n 'run',\n ...dockerPlatform.args,\n ...(tool.privileged ? ['--privileged'] : []),\n '--rm',\n '--add-host=host.docker.internal:host-gateway',\n ...envArgs,\n ...userIdEnvArgs,\n ...volumeArgs.flat(),\n '-w',\n containerCwd,\n ...(publish ?? []).flatMap((p) => ['-p', p.trim()]),\n ...(entrypoint ? ['--entrypoint', entrypoint] : []),\n imageUri,\n ...finalArgs,\n ];\n\n const output = await lockMany(\n qualifiedVolumes.flatMap((volume) =>\n volume.type === 'isolate' && volume.locked ? [volume.name] : [],\n ),\n async () => {\n const label = `⏳ ${finalArgs.join(' ')}`;\n console.time(label);\n const docker$ = dockerPlatform.processEnv\n ? $({ env: dockerPlatform.processEnv })\n : $;\n const result = await docker$`docker ${dockerArgs}`.nothrow();\n console.timeEnd(label);\n\n return result;\n },\n );\n\n if (output.exitCode) {\n const stdout = output.stdout.trim();\n throw new Error(\n `Failed to run Docker container (exit code: ${output.exitCode})${stdout ? `\\n${stdout}` : ''}`,\n );\n }\n\n return output;\n } finally {\n // Docker can release bind mounts slightly after the command exits; cleanup failures should\n // not fail a completed tool run.\n const removeResult = await safeRemove(scopedWorkspace.scopedRoot);\n if (!removeResult.removed) {\n console.warn(\n `⚠️ Failed to clean up scoped workspace ${scopedWorkspace.scopedRoot}: ${stringifyError(removeResult.error)}`,\n );\n }\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { COPY_CONCURRENCY } from './2BEUXSFW.js';
2
1
  import { safeRemove, isInside } from './GBRJXN7L.js';
2
+ import { COPY_CONCURRENCY } from './2BEUXSFW.js';
3
3
  import { init_esm_shims, __name } from './TXIQ74D3.js';
4
4
  import { glob } from 'glob';
5
5
  import { mkdtemp, mkdir, lstat, symlink, readlink, copyFile } from 'fs/promises';
@@ -151,5 +151,5 @@ var copyWorkspaceSources = /* @__PURE__ */ __name(async (options) => {
151
151
  }, "copyWorkspaceSources");
152
152
 
153
153
  export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, copyWorkspaceSources };
154
- //# sourceMappingURL=YEGHDP6J.js.map
155
- //# sourceMappingURL=YEGHDP6J.js.map
154
+ //# sourceMappingURL=O5XBAHB3.js.map
155
+ //# sourceMappingURL=O5XBAHB3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scoped-workspace/workspace-source-copy.ts"],"names":["DEFAULT_SOURCE_COPY_PATTERNS","DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS","DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS","getPathSegments","relativePath","split","isInsideNodeModules","includes","partitionGlobPatterns","patterns","include","ignore","pattern","startsWith","push","slice","copySourceDirectory","sourceDir","destDir","copyPatterns","mkdir","recursive","globOptions","cwd","dot","follow","nodir","posix","defaultEntries","glob","allowlistedEntries","entries","Set","limit","pLimit","COPY_CONCURRENCY","Promise","all","sort","map","sourcePath","join","destPath","stats","lstat","isDirectory","isSymbolicLink","dirname","symlink","readlink","error","code","undefined","existing","catch","intended","isFile","copyFile","getPackageSourceCopyPatterns","prunePatterns","packagePrunePatterns","packagePatterns","length","copyWorkspaceSources","options","scopedRoot","mkdtemp","tmpdir","copyPackageSource","absolutePath","isInside","dependencyGraph","repoRoot","Error","packageRelativePath","includedWorkspaceDependencies","dependency","safeRemove","packageRoot","copiedWorkspaceDependencies"],"mappings":";;;;;;;;;;AAAA,cAAA,EAAA;AAUO,IAAMA,4BAAAA,GAA+B;AAAC,EAAA;;AAI7C,IAAMC,sCAAAA,GAAyC;AAC3C,EAAA,kCAAA;AACA,EAAA;;AAGG,IAAMC,oCAAAA,GAAuC;AAChD,EAAA,aAAA;AACA,EAAA,cAAA;AACA,EAAA,cAAA;AACA,EAAA,eAAA;AACA,EAAA,mBAAA;AACA,EAAA,cAAA;AACA,EAAA,cAAA;AACA,EAAA,qBAAA;AACA,EAAA,mBAAA;AACA,EAAA,iBAAA;AACA,EAAA,YAAA;AACA,EAAA,eAAA;AACA,EAAA;;AAGJ,IAAMC,eAAAA,2BAAmBC,YAAAA,KACrBA,YAAAA,GAAeA,aAAaC,KAAAA,CAAM,GAAA,CAAA,GAAO,EAAA,EADrB,iBAAA,CAAA;AAGxB,IAAMC,mBAAAA,2BAAuBF,YAAAA,KACzBD,eAAAA,CAAgBC,YAAAA,CAAAA,CAAcG,QAAAA,CAAS,cAAA,CAAA,EADf,qBAAA,CAAA;AAG5B,IAAMC,qBAAAA,2BACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,UAAoB,EAAA;AAC1B,EAAA,MAAMC,SAAmB,EAAA;AAEzB,EAAA,KAAA,MAAWC,WAAWH,QAAAA,EAAU;AAC5B,IAAA,IAAIG,OAAAA,CAAQC,UAAAA,CAAW,GAAA,CAAA,EAAM;AACzBF,MAAAA,MAAAA,CAAOG,IAAAA,CAAKF,OAAAA,CAAQG,KAAAA,CAAM,CAAA,CAAA,CAAA;IAC9B,CAAA,MAAO;AACHL,MAAAA,OAAAA,CAAQI,KAAKF,OAAAA,CAAAA;AACjB,IAAA;AACJ,EAAA;AAEA,EAAA,OAAO;AAAEF,IAAAA,OAAAA;AAASC,IAAAA;AAAO,GAAA;AAC7B,CAAA,EAf8B,uBAAA,CAAA;AAiB9B,IAAMK,mBAAAA,mBAAsB,MAAA,CAAA,OACxBC,SAAAA,EACAC,OAAAA,EACAC,YAAAA,KAAAA;AAEA,EAAA,MAAMC,MAAMF,OAAAA,EAAS;IAAEG,SAAAA,EAAW;GAAK,CAAA;AAEvC,EAAA,MAAM,EAAEX,OAAAA,EAASC,MAAAA,EAAM,GAAKH,sBAAsBW,YAAAA,CAAAA;AAClD,EAAA,MAAMG,WAAAA,GAAc;IAChBC,GAAAA,EAAKN,SAAAA;IACLO,GAAAA,EAAK,IAAA;IACLC,MAAAA,EAAQ,KAAA;IACRC,KAAAA,EAAO,KAAA;IACPC,KAAAA,EAAO;AACX,GAAA;AACA,EAAA,MAAMC,cAAAA,GAAiB,MAAMC,IAAAA,CAAKnB,OAAAA,EAAS;IAAE,GAAGY,WAAAA;AAAaX,IAAAA;GAAO,CAAA;AACpE,EAAA,MAAMmB,kBAAAA,GAAqB,MAAMD,IAAAA,CAAK;AAAI5B,IAAAA,GAAAA;KAAyCqB,WAAAA,CAAAA;AACnF,EAAA,MAAMS,OAAAA,GAAU;AAAI,IAAA,mBAAA,IAAIC,GAAAA,CAAI;AAAIJ,MAAAA,GAAAA,cAAAA;AAAmBE,MAAAA,GAAAA;AAAmB,KAAA;;AACtE,EAAA,MAAMG,KAAAA,GAAQC,OAAOC,gBAAAA,CAAAA;AAErB,EAAA,MAAMC,OAAAA,CAAQC,IACVN,OAAAA,CAAQO,IAAAA,GAAOC,GAAAA,CAAI,CAACnC,YAAAA,KAChB6B,KAAAA,CAAM,YAAA;AACF,IAAA,MAAMO,UAAAA,GAAaC,IAAAA,CAAKxB,SAAAA,EAAWb,YAAAA,CAAAA;AACnC,IAAA,MAAMsC,QAAAA,GAAWD,IAAAA,CAAKvB,OAAAA,EAASd,YAAAA,CAAAA;AAC/B,IAAA,MAAMuC,KAAAA,GAAQ,MAAMC,KAAAA,CAAMJ,UAAAA,CAAAA;AAE1B,IAAA,IAAIG,KAAAA,CAAME,aAAW,EAAI;AAEzB,IAAA,IAAIF,KAAAA,CAAMG,gBAAc,EAAI;AACxB,MAAA,MAAM1B,KAAAA,CAAM2B,OAAAA,CAAQL,QAAAA,CAAAA,EAAW;QAAErB,SAAAA,EAAW;OAAK,CAAA;AACjD,MAAA,IAAI;AACA,QAAA,MAAM2B,OAAAA,CAAQ,MAAMC,QAAAA,CAAST,UAAAA,GAAaE,QAAAA,CAAAA;AAC9C,MAAA,CAAA,CAAA,OAASQ,KAAAA,EAAO;AAIZ,QAAA,MAAMC,OACF,OAAOD,KAAAA,KAAU,YAAYA,KAAAA,KAAU,IAAA,GAChCA,MAA4BC,IAAAA,GAC7BC,MAAAA;AACV,QAAA,IAAID,IAAAA,KAAS,UAAU,MAAMD,KAAAA;AAC7B,QAAA,MAAMG,WAAW,MAAMJ,QAAAA,CAASP,QAAAA,CAAAA,CAAUY,KAAAA,CAAM,MAAMF,MAAAA,CAAAA;AACtD,QAAA,MAAMG,QAAAA,GAAW,MAAMN,QAAAA,CAAST,UAAAA,CAAAA;AAChC,QAAA,IAAIa,QAAAA,KAAaE,UAAU,MAAML,KAAAA;AACrC,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,IAAI5C,mBAAAA,CAAoBF,YAAAA,CAAAA,EAAe;AAEvC,IAAA,IAAI,CAACuC,KAAAA,CAAMa,MAAAA,EAAM,EAAI;AAErB,IAAA,MAAMpC,KAAAA,CAAM2B,OAAAA,CAAQL,QAAAA,CAAAA,EAAW;MAAErB,SAAAA,EAAW;KAAK,CAAA;AACjD,IAAA,MAAMoC,QAAAA,CAASjB,YAAYE,QAAAA,CAAAA;AAC/B,EAAA,CAAA,CAAA,CAAA,CAAA;AAGZ,CAAA,EA1D4B,qBAAA,CAAA;AA4D5B,IAAMgB,+CAA+B,MAAA,CAAA,CAAC,EAClCtD,YAAAA,EACAuD,aAAAA,EACAC,sBAAoB,KAKvB;AACG,EAAA,MAAMC,eAAAA,GAAkBD,uBAAuBxD,YAAAA,CAAAA;AAE/C,EAAA,IAAIyD,eAAAA,EAAiB;AACjB,IAAA,OAAOA,eAAAA,CAAgBC,SAASD,eAAAA,GAAkB7D,4BAAAA;AACtD,EAAA;AACA,EAAA,IAAI2D,aAAAA,EAAeG,QAAQ,OAAOH,aAAAA;AAElC,EAAA,OAAO3D,4BAAAA;AACX,CAAA,EAjBqC,8BAAA,CAAA;AA6B9B,IAAM+D,oBAAAA,iCACTC,OAAAA,KAAAA;AAEA,EAAA,MAAMC,aAAa,MAAMC,OAAAA,CAAQzB,KAAK0B,MAAAA,EAAAA,EAAU,sBAAA,CAAA,CAAA;AAChD,EAAA,MAAM,EAAER,aAAAA,EAAeC,oBAAAA,EAAoB,GAAKI,OAAAA;AAEhD,EAAA,MAAMI,iBAAAA,mBAAoB,MAAA,CAAA,OAAO,EAC7BC,YAAAA,EACAjE,cAAY,KAIf;AACG,IAAA,IAAI,CAACkE,QAAAA,CAASN,OAAAA,CAAQO,eAAAA,CAAgBC,QAAAA,EAAUH,YAAAA,CAAAA,EAAe;AAC3D,MAAA,MAAM,IAAII,KAAAA,CACN,CAAA,4DAAA,EAA+DJ,YAAAA,CAAAA,CAAc,CAAA;AAErF,IAAA;AAEA,IAAA,MAAMrD,mBAAAA,CAAoBqD,YAAAA,EAAc5B,IAAAA,CAAKwB,UAAAA,EAAY7D,YAAAA,CAAAA,EAAe;SACjEsD,4BAAAA,CAA6B;AAC5BtD,QAAAA,YAAAA;AACAuD,QAAAA,aAAAA;AACAC,QAAAA;OACJ,CAAA;AACG1D,MAAAA,GAAAA;AACN,KAAA,CAAA;EACL,CAAA,EArB0B,mBAAA,CAAA;AAuB1B,EAAA,IAAI;AACA,IAAA,MAAMkB,KAAAA,CAAM2B,QAAQN,IAAAA,CAAKwB,UAAAA,EAAYD,QAAQO,eAAAA,CAAgBG,mBAAmB,CAAA,CAAA,EAAI;MAChFrD,SAAAA,EAAW;KACf,CAAA;AAEA,IAAA,MAAMY,KAAAA,GAAQC,OAAOC,gBAAAA,CAAAA;AACrB,IAAA,MAAMC,OAAAA,CAAQC,IACV2B,OAAAA,CAAQO,eAAAA,CAAgBI,8BAA8BpC,GAAAA,CAAI,CAACqC,UAAAA,KACvD3C,KAAAA,CAAM,YAAA;AACF,MAAA,MAAMmC,iBAAAA,CAAkB;AACpBC,QAAAA,YAAAA,EAAcO,UAAAA,CAAWP,YAAAA;AACzBjE,QAAAA,YAAAA,EAAcwE,UAAAA,CAAWxE;OAC7B,CAAA;AACJ,IAAA,CAAA,CAAA,CAAA,CAAA;AAGZ,EAAA,CAAA,CAAA,OAAS8C,KAAAA,EAAO;AACZ,IAAA,MAAM2B,WAAWZ,UAAAA,CAAAA;AACjB,IAAA,MAAMf,KAAAA;AACV,EAAA;AAEA,EAAA,OAAO;AACHsB,IAAAA,QAAAA,EAAUR,QAAQO,eAAAA,CAAgBC,QAAAA;AAClCM,IAAAA,WAAAA,EAAad,QAAQO,eAAAA,CAAgBO,WAAAA;AACrCb,IAAAA,UAAAA;AACAS,IAAAA,mBAAAA,EAAqBV,QAAQO,eAAAA,CAAgBG,mBAAAA;AAC7CK,IAAAA,2BAAAA,EAA6Bf,QAAQO,eAAAA,CAAgBI;AACzD,GAAA;AACJ,CAAA,EAzDoC,sBAAA","file":"YEGHDP6J.js","sourcesContent":["import { glob } from 'glob';\nimport { copyFile, lstat, mkdir, mkdtemp, readlink, symlink } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport pLimit from 'p-limit';\n\nimport { isInside, safeRemove } from '../utils/fs';\nimport { COPY_CONCURRENCY } from './node-modules';\nimport type { WorkspaceSourceCopyOptions, WorkspaceSourceCopyResult } from './types';\n\nexport const DEFAULT_SOURCE_COPY_PATTERNS = ['**/*'] as const;\n\n// TODO(#5328): This allowlist is temporary. VM-specific pruners should own build-output\n// selection, and #5328 will remove this fallback once those pruners are in place.\nconst DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS = [\n 'target/wasm32v1-none/release/*.d',\n 'target/wasm32v1-none/release/*.wasm',\n];\n\nexport const DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS = [\n '!**/.git/**',\n '!**/.next/**',\n '!**/.pnpm/**',\n '!**/.turbo/**',\n '!**/artifacts*/**',\n '!**/build/**',\n '!**/cache/**',\n '!**/dependencies/**',\n '!**/debug_info/**',\n '!**/hh-cache/**',\n '!**/out/**',\n '!**/target/**',\n '!**/typechain-types/**',\n] as const;\n\nconst getPathSegments = (relativePath: string): string[] =>\n relativePath ? relativePath.split('/') : [];\n\nconst isInsideNodeModules = (relativePath: string): boolean =>\n getPathSegments(relativePath).includes('node_modules');\n\nconst partitionGlobPatterns = (\n patterns: readonly string[],\n): { include: string[]; ignore: string[] } => {\n const include: string[] = [];\n const ignore: string[] = [];\n\n for (const pattern of patterns) {\n if (pattern.startsWith('!')) {\n ignore.push(pattern.slice(1));\n } else {\n include.push(pattern);\n }\n }\n\n return { include, ignore };\n};\n\nconst copySourceDirectory = async (\n sourceDir: string,\n destDir: string,\n copyPatterns: readonly string[],\n): Promise<void> => {\n await mkdir(destDir, { recursive: true });\n\n const { include, ignore } = partitionGlobPatterns(copyPatterns);\n const globOptions = {\n cwd: sourceDir,\n dot: true,\n follow: false,\n nodir: false,\n posix: true,\n };\n const defaultEntries = await glob(include, { ...globOptions, ignore });\n const allowlistedEntries = await glob([...DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS], globOptions);\n const entries = [...new Set([...defaultEntries, ...allowlistedEntries])];\n const limit = pLimit(COPY_CONCURRENCY);\n\n await Promise.all(\n entries.sort().map((relativePath) =>\n limit(async () => {\n const sourcePath = join(sourceDir, relativePath);\n const destPath = join(destDir, relativePath);\n const stats = await lstat(sourcePath);\n\n if (stats.isDirectory()) return;\n\n if (stats.isSymbolicLink()) {\n await mkdir(dirname(destPath), { recursive: true });\n try {\n await symlink(await readlink(sourcePath), destPath);\n } catch (error) {\n // A workspace package nested under another package root can be copied\n // twice (once via the parent tree, once as its own importer). Treat an\n // identical existing symlink as success.\n const code =\n typeof error === 'object' && error !== null\n ? (error as { code?: string }).code\n : undefined;\n if (code !== 'EEXIST') throw error;\n const existing = await readlink(destPath).catch(() => undefined);\n const intended = await readlink(sourcePath);\n if (existing !== intended) throw error;\n }\n return;\n }\n\n if (isInsideNodeModules(relativePath)) return;\n\n if (!stats.isFile()) return;\n\n await mkdir(dirname(destPath), { recursive: true });\n await copyFile(sourcePath, destPath);\n }),\n ),\n );\n};\n\nconst getPackageSourceCopyPatterns = ({\n relativePath,\n prunePatterns,\n packagePrunePatterns,\n}: {\n relativePath: string;\n prunePatterns?: readonly string[];\n packagePrunePatterns?: Readonly<Record<string, readonly string[]>>;\n}): readonly string[] => {\n const packagePatterns = packagePrunePatterns?.[relativePath];\n\n if (packagePatterns) {\n return packagePatterns.length ? packagePatterns : DEFAULT_SOURCE_COPY_PATTERNS;\n }\n if (prunePatterns?.length) return prunePatterns;\n\n return DEFAULT_SOURCE_COPY_PATTERNS;\n};\n\n/**\n * Copy only dependency source-like files for the resolved workspace dependency graph into a\n * repo-shaped scoped workspace.\n *\n * The current package itself is not copied. It is mounted from the host at the same repo-relative\n * path by the Docker executor so package-local build outputs such as `target`, `build`, and\n * `src/generated` land in the real package. Generated artifacts and caches are deliberately\n * excluded from dependency copies. Package-local node_modules directories are copied as symlinks\n * only, relying on the root `.pnpm` virtual store mount for external package contents.\n */\nexport const copyWorkspaceSources = async (\n options: WorkspaceSourceCopyOptions,\n): Promise<WorkspaceSourceCopyResult> => {\n const scopedRoot = await mkdtemp(join(tmpdir(), 'lz-scoped-workspace-'));\n const { prunePatterns, packagePrunePatterns } = options;\n\n const copyPackageSource = async ({\n absolutePath,\n relativePath,\n }: {\n absolutePath: string;\n relativePath: string;\n }): Promise<void> => {\n if (!isInside(options.dependencyGraph.repoRoot, absolutePath)) {\n throw new Error(\n `Refusing to copy workspace package outside repository root: ${absolutePath}`,\n );\n }\n\n await copySourceDirectory(absolutePath, join(scopedRoot, relativePath), [\n ...getPackageSourceCopyPatterns({\n relativePath,\n prunePatterns,\n packagePrunePatterns,\n }),\n ...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS,\n ]);\n };\n\n try {\n await mkdir(dirname(join(scopedRoot, options.dependencyGraph.packageRelativePath)), {\n recursive: true,\n });\n\n const limit = pLimit(COPY_CONCURRENCY);\n await Promise.all(\n options.dependencyGraph.includedWorkspaceDependencies.map((dependency) =>\n limit(async () => {\n await copyPackageSource({\n absolutePath: dependency.absolutePath,\n relativePath: dependency.relativePath,\n });\n }),\n ),\n );\n } catch (error) {\n await safeRemove(scopedRoot);\n throw error;\n }\n\n return {\n repoRoot: options.dependencyGraph.repoRoot,\n packageRoot: options.dependencyGraph.packageRoot,\n scopedRoot,\n packageRelativePath: options.dependencyGraph.packageRelativePath,\n copiedWorkspaceDependencies: options.dependencyGraph.includedWorkspaceDependencies,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/scoped-workspace/workspace-source-copy.ts"],"names":["DEFAULT_SOURCE_COPY_PATTERNS","DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS","DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS","getPathSegments","relativePath","split","isInsideNodeModules","includes","partitionGlobPatterns","patterns","include","ignore","pattern","startsWith","push","slice","copySourceDirectory","sourceDir","destDir","copyPatterns","mkdir","recursive","globOptions","cwd","dot","follow","nodir","posix","defaultEntries","glob","allowlistedEntries","entries","Set","limit","pLimit","COPY_CONCURRENCY","Promise","all","sort","map","sourcePath","join","destPath","stats","lstat","isDirectory","isSymbolicLink","dirname","symlink","readlink","error","code","undefined","existing","catch","intended","isFile","copyFile","getPackageSourceCopyPatterns","prunePatterns","packagePrunePatterns","packagePatterns","length","copyWorkspaceSources","options","scopedRoot","mkdtemp","tmpdir","copyPackageSource","absolutePath","isInside","dependencyGraph","repoRoot","Error","packageRelativePath","includedWorkspaceDependencies","dependency","safeRemove","packageRoot","copiedWorkspaceDependencies"],"mappings":"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","file":"O5XBAHB3.js","sourcesContent":["import { glob } from 'glob';\nimport { copyFile, lstat, mkdir, mkdtemp, readlink, symlink } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport pLimit from 'p-limit';\n\nimport { isInside, safeRemove } from '../utils/fs';\nimport { COPY_CONCURRENCY } from './node-modules';\nimport type { WorkspaceSourceCopyOptions, WorkspaceSourceCopyResult } from './types';\n\nexport const DEFAULT_SOURCE_COPY_PATTERNS = ['**/*'] as const;\n\n// TODO(#5328): This allowlist is temporary. VM-specific pruners should own build-output\n// selection, and #5328 will remove this fallback once those pruners are in place.\nconst DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS = [\n 'target/wasm32v1-none/release/*.d',\n 'target/wasm32v1-none/release/*.wasm',\n];\n\nexport const DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS = [\n '!**/.git/**',\n '!**/.next/**',\n '!**/.pnpm/**',\n '!**/.turbo/**',\n '!**/artifacts*/**',\n '!**/build/**',\n '!**/cache/**',\n '!**/dependencies/**',\n '!**/debug_info/**',\n '!**/hh-cache/**',\n '!**/out/**',\n '!**/target/**',\n '!**/typechain-types/**',\n] as const;\n\nconst getPathSegments = (relativePath: string): string[] =>\n relativePath ? relativePath.split('/') : [];\n\nconst isInsideNodeModules = (relativePath: string): boolean =>\n getPathSegments(relativePath).includes('node_modules');\n\nconst partitionGlobPatterns = (\n patterns: readonly string[],\n): { include: string[]; ignore: string[] } => {\n const include: string[] = [];\n const ignore: string[] = [];\n\n for (const pattern of patterns) {\n if (pattern.startsWith('!')) {\n ignore.push(pattern.slice(1));\n } else {\n include.push(pattern);\n }\n }\n\n return { include, ignore };\n};\n\nconst copySourceDirectory = async (\n sourceDir: string,\n destDir: string,\n copyPatterns: readonly string[],\n): Promise<void> => {\n await mkdir(destDir, { recursive: true });\n\n const { include, ignore } = partitionGlobPatterns(copyPatterns);\n const globOptions = {\n cwd: sourceDir,\n dot: true,\n follow: false,\n nodir: false,\n posix: true,\n };\n const defaultEntries = await glob(include, { ...globOptions, ignore });\n const allowlistedEntries = await glob([...DEFAULT_SOURCE_COPY_ALLOWLIST_PATTERNS], globOptions);\n const entries = [...new Set([...defaultEntries, ...allowlistedEntries])];\n const limit = pLimit(COPY_CONCURRENCY);\n\n await Promise.all(\n entries.sort().map((relativePath) =>\n limit(async () => {\n const sourcePath = join(sourceDir, relativePath);\n const destPath = join(destDir, relativePath);\n const stats = await lstat(sourcePath);\n\n if (stats.isDirectory()) return;\n\n if (stats.isSymbolicLink()) {\n await mkdir(dirname(destPath), { recursive: true });\n try {\n await symlink(await readlink(sourcePath), destPath);\n } catch (error) {\n // A workspace package nested under another package root can be copied\n // twice (once via the parent tree, once as its own importer). Treat an\n // identical existing symlink as success.\n const code =\n typeof error === 'object' && error !== null\n ? (error as { code?: string }).code\n : undefined;\n if (code !== 'EEXIST') throw error;\n const existing = await readlink(destPath).catch(() => undefined);\n const intended = await readlink(sourcePath);\n if (existing !== intended) throw error;\n }\n return;\n }\n\n if (isInsideNodeModules(relativePath)) return;\n\n if (!stats.isFile()) return;\n\n await mkdir(dirname(destPath), { recursive: true });\n await copyFile(sourcePath, destPath);\n }),\n ),\n );\n};\n\nconst getPackageSourceCopyPatterns = ({\n relativePath,\n prunePatterns,\n packagePrunePatterns,\n}: {\n relativePath: string;\n prunePatterns?: readonly string[];\n packagePrunePatterns?: Readonly<Record<string, readonly string[]>>;\n}): readonly string[] => {\n const packagePatterns = packagePrunePatterns?.[relativePath];\n\n if (packagePatterns) {\n return packagePatterns.length ? packagePatterns : DEFAULT_SOURCE_COPY_PATTERNS;\n }\n if (prunePatterns?.length) return prunePatterns;\n\n return DEFAULT_SOURCE_COPY_PATTERNS;\n};\n\n/**\n * Copy only dependency source-like files for the resolved workspace dependency graph into a\n * repo-shaped scoped workspace.\n *\n * The current package itself is not copied. It is mounted from the host at the same repo-relative\n * path by the Docker executor so package-local build outputs such as `target`, `build`, and\n * `src/generated` land in the real package. Generated artifacts and caches are deliberately\n * excluded from dependency copies. Package-local node_modules directories are copied as symlinks\n * only, relying on the root `.pnpm` virtual store mount for external package contents.\n */\nexport const copyWorkspaceSources = async (\n options: WorkspaceSourceCopyOptions,\n): Promise<WorkspaceSourceCopyResult> => {\n const scopedRoot = await mkdtemp(join(tmpdir(), 'lz-scoped-workspace-'));\n const { prunePatterns, packagePrunePatterns } = options;\n\n const copyPackageSource = async ({\n absolutePath,\n relativePath,\n }: {\n absolutePath: string;\n relativePath: string;\n }): Promise<void> => {\n if (!isInside(options.dependencyGraph.repoRoot, absolutePath)) {\n throw new Error(\n `Refusing to copy workspace package outside repository root: ${absolutePath}`,\n );\n }\n\n await copySourceDirectory(absolutePath, join(scopedRoot, relativePath), [\n ...getPackageSourceCopyPatterns({\n relativePath,\n prunePatterns,\n packagePrunePatterns,\n }),\n ...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS,\n ]);\n };\n\n try {\n await mkdir(dirname(join(scopedRoot, options.dependencyGraph.packageRelativePath)), {\n recursive: true,\n });\n\n const limit = pLimit(COPY_CONCURRENCY);\n await Promise.all(\n options.dependencyGraph.includedWorkspaceDependencies.map((dependency) =>\n limit(async () => {\n await copyPackageSource({\n absolutePath: dependency.absolutePath,\n relativePath: dependency.relativePath,\n });\n }),\n ),\n );\n } catch (error) {\n await safeRemove(scopedRoot);\n throw error;\n }\n\n return {\n repoRoot: options.dependencyGraph.repoRoot,\n packageRoot: options.dependencyGraph.packageRoot,\n scopedRoot,\n packageRelativePath: options.dependencyGraph.packageRelativePath,\n copiedWorkspaceDependencies: options.dependencyGraph.includedWorkspaceDependencies,\n };\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { resolveWorkspaceDependencyGraph } from './EHGHQQRV.js';
2
- import { copyWorkspaceSources } from './YEGHDP6J.js';
3
- import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './2BEUXSFW.js';
2
+ import { copyWorkspaceSources } from './O5XBAHB3.js';
4
3
  import { safeRemove } from './GBRJXN7L.js';
4
+ import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './2BEUXSFW.js';
5
5
  import { init_esm_shims, __name } from './TXIQ74D3.js';
6
6
  import { resolve } from 'path';
7
7
 
@@ -80,5 +80,5 @@ var createScopedWorkspace = /* @__PURE__ */ __name(async (options = {}) => {
80
80
  }, "createScopedWorkspace");
81
81
 
82
82
  export { createScopedWorkspace };
83
- //# sourceMappingURL=FRKESQZG.js.map
84
- //# sourceMappingURL=FRKESQZG.js.map
83
+ //# sourceMappingURL=S72E7TE5.js.map
84
+ //# sourceMappingURL=S72E7TE5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scoped-workspace/index.ts"],"names":["FALLBACK_DIAGNOSTIC","createPrunerInput","dependencyGraph","cwd","repoRoot","packageRoot","packageRelativePath","collectDiagnostics","sources","flatMap","source","diagnostics","resolvePruner","pruner","input","prunePlan","createPrunePlan","prunerName","name","createScopedWorkspace","options","resolve","process","resolveWorkspaceDependencyGraph","prunerResolution","sourceCopy","copyWorkspaceSources","prunePatterns","patterns","packagePrunePatterns","packagePatterns","copyRootNodeModulesSymlinks","scopedRoot","dependencyNames","rootNodeModulesDependencyNames","error","safeRemove","copiedPackagePathEntries","copiedWorkspaceDependencies","map","dependency","relativePath","absolutePath","sort","a","b","localeCompare","pnpmVirtualStoreMount","getPnpmVirtualStoreMount","copiedWorkspacePackageCount","length","copiedWorkspacePackagePaths","Object","fromEntries"],"mappings":"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","file":"FRKESQZG.js","sourcesContent":["import { resolve } from 'node:path';\n\nimport { safeRemove } from '../utils/fs';\nimport { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './node-modules';\nimport type {\n ScopedWorkspace,\n ScopedWorkspaceOptions,\n ScopedWorkspacePrunePlan,\n ScopedWorkspacePruner,\n ScopedWorkspacePrunerInput,\n WorkspaceDependencyGraph,\n} from './types';\nimport { resolveWorkspaceDependencyGraph } from './workspace-dependency-graph';\nimport { copyWorkspaceSources } from './workspace-source-copy';\n\nexport type {\n PnpmVirtualStoreMount,\n ScopedWorkspace,\n ScopedWorkspaceOptions,\n ScopedWorkspacePrunePlan,\n ScopedWorkspacePruner,\n ScopedWorkspacePrunerInput,\n WorkspaceDependencyEdge,\n WorkspaceDependencyGraph,\n} from './types';\nexport { DEFAULT_SOURCE_COPY_PATTERNS } from './workspace-source-copy';\n\nconst FALLBACK_DIAGNOSTIC =\n 'No scoped-workspace pruner configured; using unpruned package-level source copy fallback.';\n\ninterface PrunerResolution {\n prunerName?: string;\n prunePlan?: ScopedWorkspacePrunePlan;\n diagnostics: string[];\n}\n\nconst createPrunerInput = ({\n dependencyGraph,\n cwd,\n}: {\n dependencyGraph: WorkspaceDependencyGraph;\n cwd: string;\n}): ScopedWorkspacePrunerInput => ({\n repoRoot: dependencyGraph.repoRoot,\n packageRoot: dependencyGraph.packageRoot,\n packageRelativePath: dependencyGraph.packageRelativePath,\n cwd,\n dependencyGraph,\n});\n\nconst collectDiagnostics = (\n ...sources: readonly (ScopedWorkspacePrunePlan | void | undefined)[]\n): string[] => sources.flatMap((source) => (source?.diagnostics ? [...source.diagnostics] : []));\n\nconst resolvePruner = async ({\n pruner,\n dependencyGraph,\n cwd,\n}: {\n pruner?: ScopedWorkspacePruner;\n dependencyGraph: WorkspaceDependencyGraph;\n cwd: string;\n}): Promise<PrunerResolution> => {\n if (!pruner) {\n return { diagnostics: [FALLBACK_DIAGNOSTIC] };\n }\n\n const input = createPrunerInput({ dependencyGraph, cwd });\n const prunePlan = await pruner.createPrunePlan(input);\n\n return {\n prunerName: pruner.name,\n prunePlan,\n diagnostics: collectDiagnostics(prunePlan),\n };\n};\n\n/** Create the shared scoped-workspace filesystem used by containerized package builds. */\nexport const createScopedWorkspace = async (\n options: ScopedWorkspaceOptions = {},\n): Promise<ScopedWorkspace> => {\n const cwd = resolve(options.cwd ?? process.cwd());\n const dependencyGraph = await resolveWorkspaceDependencyGraph({\n cwd,\n });\n const prunerResolution = await resolvePruner({\n pruner: options.pruner,\n dependencyGraph,\n cwd,\n });\n const sourceCopy = await copyWorkspaceSources({\n dependencyGraph,\n prunePatterns: prunerResolution.prunePlan?.patterns,\n packagePrunePatterns: prunerResolution.prunePlan?.packagePatterns,\n });\n\n try {\n await copyRootNodeModulesSymlinks({\n repoRoot: dependencyGraph.repoRoot,\n scopedRoot: sourceCopy.scopedRoot,\n dependencyNames: dependencyGraph.rootNodeModulesDependencyNames,\n });\n } catch (error) {\n await safeRemove(sourceCopy.scopedRoot);\n throw error;\n }\n\n const copiedPackagePathEntries = sourceCopy.copiedWorkspaceDependencies\n .map((dependency) => [dependency.relativePath, dependency.absolutePath] as const)\n .sort(([a], [b]) => a.localeCompare(b));\n\n return {\n packageRoot: dependencyGraph.packageRoot,\n repoRoot: dependencyGraph.repoRoot,\n scopedRoot: sourceCopy.scopedRoot,\n packageRelativePath: dependencyGraph.packageRelativePath,\n pnpmVirtualStoreMount: getPnpmVirtualStoreMount(dependencyGraph.repoRoot),\n copiedWorkspacePackageCount: copiedPackagePathEntries.length,\n copiedWorkspacePackagePaths: Object.fromEntries(copiedPackagePathEntries),\n prunerName: prunerResolution.prunerName,\n diagnostics: prunerResolution.diagnostics,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/scoped-workspace/index.ts"],"names":["FALLBACK_DIAGNOSTIC","createPrunerInput","dependencyGraph","cwd","repoRoot","packageRoot","packageRelativePath","collectDiagnostics","sources","flatMap","source","diagnostics","resolvePruner","pruner","input","prunePlan","createPrunePlan","prunerName","name","createScopedWorkspace","options","resolve","process","resolveWorkspaceDependencyGraph","prunerResolution","sourceCopy","copyWorkspaceSources","prunePatterns","patterns","packagePrunePatterns","packagePatterns","copyRootNodeModulesSymlinks","scopedRoot","dependencyNames","rootNodeModulesDependencyNames","error","safeRemove","copiedPackagePathEntries","copiedWorkspaceDependencies","map","dependency","relativePath","absolutePath","sort","a","b","localeCompare","pnpmVirtualStoreMount","getPnpmVirtualStoreMount","copiedWorkspacePackageCount","length","copiedWorkspacePackagePaths","Object","fromEntries"],"mappings":"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","file":"S72E7TE5.js","sourcesContent":["import { resolve } from 'node:path';\n\nimport { safeRemove } from '../utils/fs';\nimport { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './node-modules';\nimport type {\n ScopedWorkspace,\n ScopedWorkspaceOptions,\n ScopedWorkspacePrunePlan,\n ScopedWorkspacePruner,\n ScopedWorkspacePrunerInput,\n WorkspaceDependencyGraph,\n} from './types';\nimport { resolveWorkspaceDependencyGraph } from './workspace-dependency-graph';\nimport { copyWorkspaceSources } from './workspace-source-copy';\n\nexport type {\n PnpmVirtualStoreMount,\n ScopedWorkspace,\n ScopedWorkspaceOptions,\n ScopedWorkspacePrunePlan,\n ScopedWorkspacePruner,\n ScopedWorkspacePrunerInput,\n WorkspaceDependencyEdge,\n WorkspaceDependencyGraph,\n} from './types';\nexport { DEFAULT_SOURCE_COPY_PATTERNS } from './workspace-source-copy';\n\nconst FALLBACK_DIAGNOSTIC =\n 'No scoped-workspace pruner configured; using unpruned package-level source copy fallback.';\n\ninterface PrunerResolution {\n prunerName?: string;\n prunePlan?: ScopedWorkspacePrunePlan;\n diagnostics: string[];\n}\n\nconst createPrunerInput = ({\n dependencyGraph,\n cwd,\n}: {\n dependencyGraph: WorkspaceDependencyGraph;\n cwd: string;\n}): ScopedWorkspacePrunerInput => ({\n repoRoot: dependencyGraph.repoRoot,\n packageRoot: dependencyGraph.packageRoot,\n packageRelativePath: dependencyGraph.packageRelativePath,\n cwd,\n dependencyGraph,\n});\n\nconst collectDiagnostics = (\n ...sources: readonly (ScopedWorkspacePrunePlan | void | undefined)[]\n): string[] => sources.flatMap((source) => (source?.diagnostics ? [...source.diagnostics] : []));\n\nconst resolvePruner = async ({\n pruner,\n dependencyGraph,\n cwd,\n}: {\n pruner?: ScopedWorkspacePruner;\n dependencyGraph: WorkspaceDependencyGraph;\n cwd: string;\n}): Promise<PrunerResolution> => {\n if (!pruner) {\n return { diagnostics: [FALLBACK_DIAGNOSTIC] };\n }\n\n const input = createPrunerInput({ dependencyGraph, cwd });\n const prunePlan = await pruner.createPrunePlan(input);\n\n return {\n prunerName: pruner.name,\n prunePlan,\n diagnostics: collectDiagnostics(prunePlan),\n };\n};\n\n/** Create the shared scoped-workspace filesystem used by containerized package builds. */\nexport const createScopedWorkspace = async (\n options: ScopedWorkspaceOptions = {},\n): Promise<ScopedWorkspace> => {\n const cwd = resolve(options.cwd ?? process.cwd());\n const dependencyGraph = await resolveWorkspaceDependencyGraph({\n cwd,\n });\n const prunerResolution = await resolvePruner({\n pruner: options.pruner,\n dependencyGraph,\n cwd,\n });\n const sourceCopy = await copyWorkspaceSources({\n dependencyGraph,\n prunePatterns: prunerResolution.prunePlan?.patterns,\n packagePrunePatterns: prunerResolution.prunePlan?.packagePatterns,\n });\n\n try {\n await copyRootNodeModulesSymlinks({\n repoRoot: dependencyGraph.repoRoot,\n scopedRoot: sourceCopy.scopedRoot,\n dependencyNames: dependencyGraph.rootNodeModulesDependencyNames,\n });\n } catch (error) {\n await safeRemove(sourceCopy.scopedRoot);\n throw error;\n }\n\n const copiedPackagePathEntries = sourceCopy.copiedWorkspaceDependencies\n .map((dependency) => [dependency.relativePath, dependency.absolutePath] as const)\n .sort(([a], [b]) => a.localeCompare(b));\n\n return {\n packageRoot: dependencyGraph.packageRoot,\n repoRoot: dependencyGraph.repoRoot,\n scopedRoot: sourceCopy.scopedRoot,\n packageRelativePath: dependencyGraph.packageRelativePath,\n pnpmVirtualStoreMount: getPnpmVirtualStoreMount(dependencyGraph.repoRoot),\n copiedWorkspacePackageCount: copiedPackagePathEntries.length,\n copiedWorkspacePackagePaths: Object.fromEntries(copiedPackagePathEntries),\n prunerName: prunerResolution.prunerName,\n diagnostics: prunerResolution.diagnostics,\n };\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { displayVersionCombinations, displayToolVersionInfo } from './SQ7CSCOZ.js';
2
- import { executeToolCommand } from './UJTQDPJD.js';
2
+ import { executeToolCommand } from './H2SHSLKO.js';
3
3
  import { volumeMappingSchema, DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION, isDockerPlatformOverride } from './HYD54MGL.js';
4
4
  import { local } from './RORYN2CM.js';
5
5
  import { getToolDefaultVersion, getToolSupportedVersions } from './X6QPMSID.js';
@@ -136,5 +136,5 @@ var runCli = /* @__PURE__ */ __name(async (config, registerExtraCommands) => {
136
136
  }, "runCli");
137
137
 
138
138
  export { runCli };
139
- //# sourceMappingURL=VU7HNYKB.js.map
140
- //# sourceMappingURL=VU7HNYKB.js.map
139
+ //# sourceMappingURL=USIF66ZJ.js.map
140
+ //# sourceMappingURL=USIF66ZJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"names":["parseDockerPlatformOverride","input","isDockerPlatformOverride","Error","String","DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION","createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","local","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"VU7HNYKB.js","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { DockerPlatformOverride, EnvironmentVariable, VolumeMapping } from './config';\nimport {\n DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION,\n isDockerPlatformOverride,\n volumeMappingSchema,\n} from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport * as environment from './environment';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n local?: boolean;\n dockerPlatform?: DockerPlatformOverride;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst parseDockerPlatformOverride = (input: unknown): DockerPlatformOverride => {\n if (isDockerPlatformOverride(input)) {\n return input;\n }\n\n throw new Error(\n `Invalid docker platform: ${String(input)}. Expected ${DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION}.`,\n );\n};\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n local: options.local || environment.local,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool')\n .option(\n '--docker-platform <platform>',\n `Override the Docker platform for this run (${DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION})`,\n parseDockerPlatformOverride,\n )\n .option('--local', 'Run the tool from the host installation instead of Docker');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/cli.ts"],"names":["parseDockerPlatformOverride","input","isDockerPlatformOverride","Error","String","DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION","createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","local","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"USIF66ZJ.js","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { DockerPlatformOverride, EnvironmentVariable, VolumeMapping } from './config';\nimport {\n DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION,\n isDockerPlatformOverride,\n volumeMappingSchema,\n} from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport * as environment from './environment';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n local?: boolean;\n dockerPlatform?: DockerPlatformOverride;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst parseDockerPlatformOverride = (input: unknown): DockerPlatformOverride => {\n if (isDockerPlatformOverride(input)) {\n return input;\n }\n\n throw new Error(\n `Invalid docker platform: ${String(input)}. Expected ${DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION}.`,\n );\n};\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n local: options.local || environment.local,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool')\n .option(\n '--docker-platform <platform>',\n `Override the Docker platform for this run (${DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION})`,\n parseDockerPlatformOverride,\n )\n .option('--local', 'Run the tool from the host installation instead of Docker');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
package/dist/cli.js CHANGED
@@ -1,15 +1,15 @@
1
- export { runCli } from './VU7HNYKB.js';
1
+ export { runCli } from './USIF66ZJ.js';
2
2
  import './3N42XVZL.js';
3
3
  import './SQ7CSCOZ.js';
4
4
  import './LOCNB6C6.js';
5
5
  import './N53MNPWU.js';
6
- import './UJTQDPJD.js';
7
- import './FRKESQZG.js';
6
+ import './H2SHSLKO.js';
7
+ import './FFE7SXCG.js';
8
+ import './S72E7TE5.js';
8
9
  import './EHGHQQRV.js';
9
- import './YEGHDP6J.js';
10
- import './2BEUXSFW.js';
10
+ import './O5XBAHB3.js';
11
11
  import './GBRJXN7L.js';
12
- import './FFE7SXCG.js';
12
+ import './2BEUXSFW.js';
13
13
  import './IPZ5KX7M.js';
14
14
  import './H6FLARPD.js';
15
15
  import './3LCQOITB.js';
@@ -1,11 +1,11 @@
1
1
  import '../N53MNPWU.js';
2
- export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../UJTQDPJD.js';
3
- import '../FRKESQZG.js';
2
+ export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../H2SHSLKO.js';
3
+ import '../FFE7SXCG.js';
4
+ import '../S72E7TE5.js';
4
5
  import '../EHGHQQRV.js';
5
- import '../YEGHDP6J.js';
6
- import '../2BEUXSFW.js';
6
+ import '../O5XBAHB3.js';
7
7
  import '../GBRJXN7L.js';
8
- import '../FFE7SXCG.js';
8
+ import '../2BEUXSFW.js';
9
9
  export { executeLocally } from '../IPZ5KX7M.js';
10
10
  import '../H6FLARPD.js';
11
11
  export { resolveTypeVersions } from '../3LCQOITB.js';
@@ -1,10 +1,10 @@
1
- export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../UJTQDPJD.js';
2
- import '../FRKESQZG.js';
1
+ export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../H2SHSLKO.js';
2
+ import '../FFE7SXCG.js';
3
+ import '../S72E7TE5.js';
3
4
  import '../EHGHQQRV.js';
4
- import '../YEGHDP6J.js';
5
- import '../2BEUXSFW.js';
5
+ import '../O5XBAHB3.js';
6
6
  import '../GBRJXN7L.js';
7
- import '../FFE7SXCG.js';
7
+ import '../2BEUXSFW.js';
8
8
  import '../IPZ5KX7M.js';
9
9
  import '../H6FLARPD.js';
10
10
  import '../3LCQOITB.js';
@@ -1,11 +1,11 @@
1
1
  import { describe, it, globalExpect } from '../3G6UO37X.js';
2
- import { resolveCargoCacheEnv, mergeToolEnv } from '../UJTQDPJD.js';
3
- import '../FRKESQZG.js';
2
+ import { resolveCargoCacheEnv, mergeToolEnv } from '../H2SHSLKO.js';
3
+ import '../FFE7SXCG.js';
4
+ import '../S72E7TE5.js';
4
5
  import '../EHGHQQRV.js';
5
- import '../YEGHDP6J.js';
6
- import '../2BEUXSFW.js';
6
+ import '../O5XBAHB3.js';
7
7
  import '../GBRJXN7L.js';
8
- import '../FFE7SXCG.js';
8
+ import '../2BEUXSFW.js';
9
9
  import '../IPZ5KX7M.js';
10
10
  import '../H6FLARPD.js';
11
11
  import '../3LCQOITB.js';
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  export { runGithubMatrixGenerator } from './VZXWHHPB.js';
2
2
  import './PBCHVZQM.js';
3
- export { runCli } from './VU7HNYKB.js';
3
+ export { runCli } from './USIF66ZJ.js';
4
4
  import './3N42XVZL.js';
5
5
  import './SQ7CSCOZ.js';
6
6
  import './LOCNB6C6.js';
7
7
  export { testTools } from './52SW5N2L.js';
8
8
  import './N53MNPWU.js';
9
- export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from './UJTQDPJD.js';
10
- export { createScopedWorkspace } from './FRKESQZG.js';
9
+ export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from './H2SHSLKO.js';
10
+ import './FFE7SXCG.js';
11
+ export { createScopedWorkspace } from './S72E7TE5.js';
11
12
  import './EHGHQQRV.js';
12
- export { DEFAULT_SOURCE_COPY_PATTERNS } from './YEGHDP6J.js';
13
- import './2BEUXSFW.js';
13
+ export { DEFAULT_SOURCE_COPY_PATTERNS } from './O5XBAHB3.js';
14
14
  import './GBRJXN7L.js';
15
- import './FFE7SXCG.js';
15
+ import './2BEUXSFW.js';
16
16
  export { executeLocally } from './IPZ5KX7M.js';
17
17
  import './H6FLARPD.js';
18
18
  export { resolveTypeVersions } from './3LCQOITB.js';
@@ -1,8 +1,8 @@
1
- export { createScopedWorkspace } from '../FRKESQZG.js';
1
+ export { createScopedWorkspace } from '../S72E7TE5.js';
2
2
  import '../EHGHQQRV.js';
3
- export { DEFAULT_SOURCE_COPY_PATTERNS } from '../YEGHDP6J.js';
4
- import '../2BEUXSFW.js';
3
+ export { DEFAULT_SOURCE_COPY_PATTERNS } from '../O5XBAHB3.js';
5
4
  import '../GBRJXN7L.js';
5
+ import '../2BEUXSFW.js';
6
6
  import '../YHTRUOFZ.js';
7
7
  import '../X6QPMSID.js';
8
8
  import '../TXIQ74D3.js';
@@ -1,9 +1,9 @@
1
1
  import { afterAll, describe, it, globalExpect } from '../3G6UO37X.js';
2
- import { createScopedWorkspace } from '../FRKESQZG.js';
2
+ import { createScopedWorkspace } from '../S72E7TE5.js';
3
3
  import { resolveWorkspaceDependencyGraph } from '../EHGHQQRV.js';
4
- import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS } from '../YEGHDP6J.js';
5
- import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from '../2BEUXSFW.js';
4
+ import { copyWorkspaceSources, DEFAULT_SOURCE_COPY_PATTERNS } from '../O5XBAHB3.js';
6
5
  import '../GBRJXN7L.js';
6
+ import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from '../2BEUXSFW.js';
7
7
  import '../YHTRUOFZ.js';
8
8
  import '../X6QPMSID.js';
9
9
  import { init_esm_shims, __name } from '../TXIQ74D3.js';
@@ -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-impl");
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-impl"));
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-impl",
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-impl",
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-impl")).isSymbolicLink()).toBe(true);
673
- globalExpect(readlinkSync(join(scopedRoot, "node_modules", "@layerzerolabs", "oapp-solana-impl"))).toBe("../../apps/oapp-app/contracts/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":"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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-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,6 +1,6 @@
1
- export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, copyWorkspaceSources } from '../YEGHDP6J.js';
2
- import '../2BEUXSFW.js';
1
+ export { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS, DEFAULT_SOURCE_COPY_PATTERNS, copyWorkspaceSources } from '../O5XBAHB3.js';
3
2
  import '../GBRJXN7L.js';
3
+ import '../2BEUXSFW.js';
4
4
  import '../TXIQ74D3.js';
5
5
  //# sourceMappingURL=workspace-source-copy.js.map
6
6
  //# sourceMappingURL=workspace-source-copy.js.map
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.10"
27
+ "@layerzerolabs/common-node-utils": "1.2.12"
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/tsup-configuration": "1.2.10",
40
- "@layerzerolabs/vitest-configuration": "1.2.10",
41
- "@layerzerolabs/typescript-configuration": "1.2.10"
39
+ "@layerzerolabs/typescript-configuration": "1.2.12",
40
+ "@layerzerolabs/tsup-configuration": "1.2.12",
41
+ "@layerzerolabs/vitest-configuration": "1.2.12"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
@@ -56,7 +56,7 @@
56
56
  "usdai-internal"
57
57
  ]
58
58
  },
59
- "version": "1.2.10",
59
+ "version": "1.2.12",
60
60
  "scripts": {
61
61
  "build": "tsup",
62
62
  "lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",