@layerzerolabs/vm-tooling 0.2.107 → 0.2.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/{PYS2ZW6G.js → 2PIH5TOH.js} +3 -3
  2. package/dist/{PYS2ZW6G.js.map → 2PIH5TOH.js.map} +1 -1
  3. package/dist/3N42XVZL.js +6 -0
  4. package/dist/{CAPBDIIE.js.map → 3N42XVZL.js.map} +1 -1
  5. package/dist/{DVALPAAO.js → 5XQTITZP.js} +68 -68
  6. package/dist/5XQTITZP.js.map +1 -0
  7. package/dist/{TMIYMQW3.js → 7CGWPLOJ.js} +4 -4
  8. package/dist/{TMIYMQW3.js.map → 7CGWPLOJ.js.map} +1 -1
  9. package/dist/{GMN3ZEOV.js → 7DDNJRV6.js} +8 -8
  10. package/dist/{GMN3ZEOV.js.map → 7DDNJRV6.js.map} +1 -1
  11. package/dist/{QH3FM6DD.js → AIKNZKYE.js} +5 -5
  12. package/dist/{QH3FM6DD.js.map → AIKNZKYE.js.map} +1 -1
  13. package/dist/{2XGBQPKA.js → FFE7SXCG.js} +3 -3
  14. package/dist/{2XGBQPKA.js.map → FFE7SXCG.js.map} +1 -1
  15. package/dist/{6L6NUQMM.js → FT4JK367.js} +5 -5
  16. package/dist/{6L6NUQMM.js.map → FT4JK367.js.map} +1 -1
  17. package/dist/{4SFAVHVD.js → H6FLARPD.js} +3 -3
  18. package/dist/{4SFAVHVD.js.map → H6FLARPD.js.map} +1 -1
  19. package/dist/{HC7LYTHL.js → IPZ5KX7M.js} +3 -3
  20. package/dist/{HC7LYTHL.js.map → IPZ5KX7M.js.map} +1 -1
  21. package/dist/{KN3TRHEZ.js → KBUFOLY3.js} +5 -5
  22. package/dist/{KN3TRHEZ.js.map → KBUFOLY3.js.map} +1 -1
  23. package/dist/N53MNPWU.js +6 -0
  24. package/dist/{2MO4PR4P.js.map → N53MNPWU.js.map} +1 -1
  25. package/dist/{S7YAUZ26.js → NAWFODGG.js} +5 -5
  26. package/dist/{S7YAUZ26.js.map → NAWFODGG.js.map} +1 -1
  27. package/dist/{E35WFC4E.js → PNCVL7HO.js} +5 -5
  28. package/dist/{E35WFC4E.js.map → PNCVL7HO.js.map} +1 -1
  29. package/dist/{UBUQDI5Q.js → PXDULNML.js} +4 -4
  30. package/dist/{UBUQDI5Q.js.map → PXDULNML.js.map} +1 -1
  31. package/dist/{GIFXFMSS.js → RORYN2CM.js} +3 -3
  32. package/dist/{GIFXFMSS.js.map → RORYN2CM.js.map} +1 -1
  33. package/dist/{GFKRACRT.js → TWCQHE4E.js} +4 -4
  34. package/dist/{GFKRACRT.js.map → TWCQHE4E.js.map} +1 -1
  35. package/dist/{CWKWODSW.js → TXIQ74D3.js} +3 -3
  36. package/dist/{CWKWODSW.js.map → TXIQ74D3.js.map} +1 -1
  37. package/dist/{HN2JUVAX.js → U3L7CZHW.js} +11 -11
  38. package/dist/{HN2JUVAX.js.map → U3L7CZHW.js.map} +1 -1
  39. package/dist/{EY2G7NK4.js → UUWRT3Q2.js} +4 -4
  40. package/dist/{EY2G7NK4.js.map → UUWRT3Q2.js.map} +1 -1
  41. package/dist/{3XEUJAQB.js → X6QPMSID.js} +3 -3
  42. package/dist/{3XEUJAQB.js.map → X6QPMSID.js.map} +1 -1
  43. package/dist/cli.js +16 -16
  44. package/dist/config.js +3 -3
  45. package/dist/context.js +1 -1
  46. package/dist/core/index.js +12 -12
  47. package/dist/core/local-executor.js +2 -2
  48. package/dist/core/local-executor.test.js +3 -3
  49. package/dist/core/lock.js +2 -2
  50. package/dist/core/lock.test.js +3 -3
  51. package/dist/core/tool-executor.js +11 -11
  52. package/dist/core/tool-executor.test.js +12 -12
  53. package/dist/core/version-resolver.js +4 -4
  54. package/dist/display/formatters.js +4 -4
  55. package/dist/display/index.js +6 -6
  56. package/dist/display/version-display.js +5 -5
  57. package/dist/environment.js +2 -2
  58. package/dist/github/index.js +7 -7
  59. package/dist/github/matrix.js +6 -6
  60. package/dist/index.js +19 -19
  61. package/dist/test.js +6 -6
  62. package/dist/utils/docker.js +5 -5
  63. package/dist/utils/docker.test.js +6 -6
  64. package/dist/utils/error.js +2 -2
  65. package/dist/utils/finder.js +2 -2
  66. package/dist/utils.js +3 -3
  67. package/package.json +7 -7
  68. package/dist/2MO4PR4P.js +0 -6
  69. package/dist/CAPBDIIE.js +0 -6
  70. package/dist/DVALPAAO.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { registry, imageDirectory } from './GIFXFMSS.js';
2
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { registry, imageDirectory } from './RORYN2CM.js';
2
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
3
3
  import { join } from 'path';
4
4
  import * as z from 'zod';
5
5
  import { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';
@@ -67,5 +67,5 @@ var getImageDirectory = /* @__PURE__ */ __name(async () => (await getRegistryCon
67
67
  var getRegistry = /* @__PURE__ */ __name(async () => (await getRegistryConfig()).registry, "getRegistry");
68
68
 
69
69
  export { CARGO_TARGET_CACHE_PATH, DOCKER_PLATFORM_NATIVE, DOCKER_PLATFORM_OVERRIDE_VALUES, DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION, DOCKER_PLATFORM_VALUES, DockerRegistryMirror, getImageDirectory, getRegistry, isDockerPlatformOverride, volumeMappingSchema };
70
- //# sourceMappingURL=TMIYMQW3.js.map
71
- //# sourceMappingURL=TMIYMQW3.js.map
70
+ //# sourceMappingURL=7CGWPLOJ.js.map
71
+ //# sourceMappingURL=7CGWPLOJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts"],"names":["registryConfigCache","getRegistryConfig","registry","imageDirectory","workspaceRoot","getFullyQualifiedRepoRootPath","configPath","join","module","default","CARGO_TARGET_CACHE_PATH","volumeMappingBaseSchema","object","containerPath","string","hostVolumeMappingSchema","extend","type","literal","hostPath","isolateVolumeMappingSchema","name","shared","optional","boolean","locked","toolchainKeyed","architectureIndependent","volumeMappingSchema","union","DOCKER_PLATFORM_VALUES","DOCKER_PLATFORM_NATIVE","DOCKER_PLATFORM_OVERRIDE_VALUES","DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION","dockerPlatformOverrideValueSet","Set","isDockerPlatformOverride","input","has","DockerRegistryMirror","getImageDirectory","getRegistry"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AAcA,IAAIA,mBAAAA;AAEJ,IAAMC,oCAAoB,MAAA,CAAA,YAAA;AACtB,EAAA,IAAI,CAACD,mBAAAA,EAAqB;AACtB,IAAA,IAAgBE,YAAwBC,cAAAA,EAAgB;AACpDH,MAAAA,mBAAAA,GAAsB;AAClBE,QAAAA,QAAAA;AACAC,QAAAA;AACJ,OAAA;IACJ,CAAA,MAAO;AACH,MAAA,MAAMC,aAAAA,GAAgB,MAAMC,6BAAAA,EAAAA;AAC5B,MAAA,MAAMC,aAAaC,IAAAA,CACfH,aAAAA,EACA,SAAA,EACA,YAAA,EACA,UACA,sBAAA,CAAA;AAGJ,MAAA,MAAMI,MAAAA,GAAS,MAAM,OAAOF,UAAAA,CAAAA;AAC5BN,MAAAA,mBAAAA,GAAsBQ,MAAAA,CAAOC,OAAAA;AACjC,IAAA;AACJ,EAAA;AACA,EAAA,OAAOT,mBAAAA;AACX,CAAA,EAtB0B,mBAAA,CAAA;AA2BnB,IAAMU,uBAAAA,GAA0B;AAEvC,IAAMC,0BAA4BC,CAAAA,CAAAA,MAAAA,CAAO;AACrCC,EAAAA,aAAAA,EAAiBC,CAAAA,CAAAA,MAAAA;AACrB,CAAA,CAAA;AAEA,IAAMC,uBAAAA,GAA0BJ,wBAAwBK,MAAAA,CAAO;AAC3DC,EAAAA,IAAAA,EAAQC,UAAQ,MAAA,CAAA;AAChBC,EAAAA,QAAAA,EAAYL,CAAAA,CAAAA,MAAAA;AAChB,CAAA,CAAA;AAEA,IAAMM,0BAAAA,GAA6BT,wBAAwBK,MAAAA,CAAO;AAC9DC,EAAAA,IAAAA,EAAQC,UAAQ,SAAA,CAAA;AAChBG,EAAAA,IAAAA,EAAQP,CAAAA,CAAAA,MAAAA,EAAM;EACdQ,MAAAA,EAAUC,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;EAC5BC,MAAAA,EAAUF,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;;;EAG5BE,cAAAA,EAAkBH,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;;;EAGpCG,uBAAAA,EAA2BJ,CAAAA,CAAAA,QAAAA,CAAWC,WAAO;AACjD,CAAA,CAAA;AAEO,IAAMI,sBAAwBC,CAAAA,CAAAA,KAAAA,CAAM;AAACd,EAAAA,uBAAAA;AAAyBK,EAAAA;AAA2B,CAAA;AAYzF,IAAMU,sBAAAA,GAAyB;AAAC,EAAA,aAAA;AAAe,EAAA;;AAC/C,IAAMC,sBAAAA,GAAyB;AAC/B,IAAMC,+BAAAA,GAAkC;AAC3CD,EAAAA,sBAAAA;AACGD,EAAAA,GAAAA;;AAEA,IAAMG,2CAAAA,GACTD,+BAAAA,CAAgCzB,IAAAA,CAAK,IAAA;AAEzC,IAAM2B,8BAAAA,GAAiC,IAAIC,GAAAA,CAAYH,+BAAAA,CAAAA;AAKhD,IAAMI,wBAAAA,2BAA4BC,KAAAA,KACrC,OAAOA,UAAU,QAAA,IAAYH,8BAAAA,CAA+BI,GAAAA,CAAID,KAAAA,CAAAA,EAD5B,0BAAA;AA4BjC,IAAWE,oBAAAA,6BAAAA,qBAAAA,EAAAA;;AAAAA,EAAAA,OAAAA,qBAAAA;;AAkBX,IAAMC,iBAAAA,mBAAoB,MAAA,CAAA,YAAA,CAAa,MAAMvC,iBAAAA,IAAqBE,cAAAA,EAAxC,mBAAA;AAC1B,IAAMsC,WAAAA,mBAAc,MAAA,CAAA,YAAA,CAAa,MAAMxC,iBAAAA,IAAqBC,QAAAA,EAAxC,aAAA","file":"TMIYMQW3.js","sourcesContent":["import { join } from 'node:path';\nimport * as z from 'zod';\n\nimport { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';\n\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core/tool-executor';\nimport * as environment from './environment';\n\ninterface RegistryConfig {\n registry: string;\n imageDirectory: string;\n}\n\nlet registryConfigCache: RegistryConfig | undefined;\n\nconst getRegistryConfig = async (): Promise<RegistryConfig> => {\n if (!registryConfigCache) {\n if (environment.registry && environment.imageDirectory) {\n registryConfigCache = {\n registry: environment.registry,\n imageDirectory: environment.imageDirectory,\n };\n } else {\n const workspaceRoot = await getFullyQualifiedRepoRootPath();\n const configPath = join(\n workspaceRoot,\n 'configs',\n 'vm-tooling',\n 'values',\n 'docker-image-repo.ts',\n );\n\n const module = await import(configPath);\n registryConfigCache = module.default;\n }\n }\n return registryConfigCache!;\n};\n\n// Container path for the shared cargo build-artifact cache. A VM mounts its toolchain `target/`\n// cache at this path; resolveCargoCacheEnv keys on it to inject CARGO_TARGET_DIR. Single source so\n// the helper's lookup and each VM config's containerPath can't drift apart.\nexport const CARGO_TARGET_CACHE_PATH = '/cargo-target';\n\nconst volumeMappingBaseSchema = z.object({\n containerPath: z.string(),\n});\n\nconst hostVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('host'),\n hostPath: z.string(),\n});\n\nconst isolateVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('isolate'),\n name: z.string(),\n shared: z.optional(z.boolean()),\n locked: z.optional(z.boolean()),\n // Share this cache across packages on the same toolchain instead of per-package. See\n // qualifyVolumeName. Opt-in — omit to keep it package-private.\n toolchainKeyed: z.optional(z.boolean()),\n // Opt out of arch-namespacing for volumes holding no compiled artifacts (config/state).\n // Suffixing is the safe default: under-splitting an arch-sensitive cache poisons it.\n architectureIndependent: z.optional(z.boolean()),\n});\n\nexport const volumeMappingSchema = z.union([hostVolumeMappingSchema, isolateVolumeMappingSchema]);\n\nexport type VolumeMapping = z.infer<typeof volumeMappingSchema>;\n\nexport interface EnvironmentVariable {\n name: string;\n value: string;\n}\n\n// Explicit platform pins currently supported by tool config and the CLI.\n// `native` is a CLI-only escape hatch that runs Docker without `--platform`\n// and clears DOCKER_DEFAULT_PLATFORM for that invocation.\nexport const DOCKER_PLATFORM_VALUES = ['linux/amd64', 'linux/arm64'] as const;\nexport const DOCKER_PLATFORM_NATIVE = 'native';\nexport const DOCKER_PLATFORM_OVERRIDE_VALUES = [\n DOCKER_PLATFORM_NATIVE,\n ...DOCKER_PLATFORM_VALUES,\n] as const;\nexport const DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION =\n DOCKER_PLATFORM_OVERRIDE_VALUES.join(', ');\n\nconst dockerPlatformOverrideValueSet = new Set<string>(DOCKER_PLATFORM_OVERRIDE_VALUES);\n\nexport type DockerPlatformValue = (typeof DOCKER_PLATFORM_VALUES)[number];\nexport type DockerPlatformOverride = (typeof DOCKER_PLATFORM_OVERRIDE_VALUES)[number];\n\nexport const isDockerPlatformOverride = (input: unknown): input is DockerPlatformOverride =>\n typeof input === 'string' && dockerPlatformOverrideValueSet.has(input);\n\nexport interface Tool {\n name: string;\n privileged?: boolean;\n\n // Docker platform to use when running this tool's image\n dockerPlatform?: DockerPlatformValue;\n\n // Default isolate volumes for caching (user volumes can override these)\n defaultVolumes?: readonly VolumeMapping[];\n\n // Default environment variables (user env vars can override these)\n defaultEnv?: readonly EnvironmentVariable[];\n\n // Optional version parsing and validation functions\n getSecondaryVersion?: (args: { cwd: string }) => Promise<string>;\n\n getLocalVersion?: (args: { cwd: string }) => Promise<string>;\n\n // Optional hook called before every tool command execution (e.g., toolchain sync)\n preExecute?: (\n context: ChainContext<string>,\n options: ToolCommandExecutionOptions,\n ) => Promise<void>;\n}\n\nexport const enum DockerRegistryMirror {\n PUBLIC_GAR = 'public-gar',\n}\n\nexport interface Image {\n name: string;\n versions: Record<string, string>;\n dependencies?: Record<string, string>;\n patch?: number;\n mirrorRegistries?: DockerRegistryMirror[];\n}\n\nexport interface VersionCombination<TImageId> {\n images: Record<string, TImageId>;\n description?: string;\n stable?: boolean;\n}\n\nexport const getImageDirectory = async () => (await getRegistryConfig()).imageDirectory;\nexport const getRegistry = async () => (await getRegistryConfig()).registry;\n"]}
1
+ {"version":3,"sources":["../src/config.ts"],"names":["registryConfigCache","getRegistryConfig","registry","imageDirectory","workspaceRoot","getFullyQualifiedRepoRootPath","configPath","join","module","default","CARGO_TARGET_CACHE_PATH","volumeMappingBaseSchema","object","containerPath","string","hostVolumeMappingSchema","extend","type","literal","hostPath","isolateVolumeMappingSchema","name","shared","optional","boolean","locked","toolchainKeyed","architectureIndependent","volumeMappingSchema","union","DOCKER_PLATFORM_VALUES","DOCKER_PLATFORM_NATIVE","DOCKER_PLATFORM_OVERRIDE_VALUES","DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION","dockerPlatformOverrideValueSet","Set","isDockerPlatformOverride","input","has","DockerRegistryMirror","getImageDirectory","getRegistry"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AAcA,IAAIA,mBAAAA;AAEJ,IAAMC,oCAAoB,MAAA,CAAA,YAAA;AACtB,EAAA,IAAI,CAACD,mBAAAA,EAAqB;AACtB,IAAA,IAAgBE,YAAwBC,cAAAA,EAAgB;AACpDH,MAAAA,mBAAAA,GAAsB;AAClBE,QAAAA,QAAAA;AACAC,QAAAA;AACJ,OAAA;IACJ,CAAA,MAAO;AACH,MAAA,MAAMC,aAAAA,GAAgB,MAAMC,6BAAAA,EAAAA;AAC5B,MAAA,MAAMC,aAAaC,IAAAA,CACfH,aAAAA,EACA,SAAA,EACA,YAAA,EACA,UACA,sBAAA,CAAA;AAGJ,MAAA,MAAMI,MAAAA,GAAS,MAAM,OAAOF,UAAAA,CAAAA;AAC5BN,MAAAA,mBAAAA,GAAsBQ,MAAAA,CAAOC,OAAAA;AACjC,IAAA;AACJ,EAAA;AACA,EAAA,OAAOT,mBAAAA;AACX,CAAA,EAtB0B,mBAAA,CAAA;AA2BnB,IAAMU,uBAAAA,GAA0B;AAEvC,IAAMC,0BAA4BC,CAAAA,CAAAA,MAAAA,CAAO;AACrCC,EAAAA,aAAAA,EAAiBC,CAAAA,CAAAA,MAAAA;AACrB,CAAA,CAAA;AAEA,IAAMC,uBAAAA,GAA0BJ,wBAAwBK,MAAAA,CAAO;AAC3DC,EAAAA,IAAAA,EAAQC,UAAQ,MAAA,CAAA;AAChBC,EAAAA,QAAAA,EAAYL,CAAAA,CAAAA,MAAAA;AAChB,CAAA,CAAA;AAEA,IAAMM,0BAAAA,GAA6BT,wBAAwBK,MAAAA,CAAO;AAC9DC,EAAAA,IAAAA,EAAQC,UAAQ,SAAA,CAAA;AAChBG,EAAAA,IAAAA,EAAQP,CAAAA,CAAAA,MAAAA,EAAM;EACdQ,MAAAA,EAAUC,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;EAC5BC,MAAAA,EAAUF,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;;;EAG5BE,cAAAA,EAAkBH,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;;;EAGpCG,uBAAAA,EAA2BJ,CAAAA,CAAAA,QAAAA,CAAWC,WAAO;AACjD,CAAA,CAAA;AAEO,IAAMI,sBAAwBC,CAAAA,CAAAA,KAAAA,CAAM;AAACd,EAAAA,uBAAAA;AAAyBK,EAAAA;AAA2B,CAAA;AAYzF,IAAMU,sBAAAA,GAAyB;AAAC,EAAA,aAAA;AAAe,EAAA;;AAC/C,IAAMC,sBAAAA,GAAyB;AAC/B,IAAMC,+BAAAA,GAAkC;AAC3CD,EAAAA,sBAAAA;AACGD,EAAAA,GAAAA;;AAEA,IAAMG,2CAAAA,GACTD,+BAAAA,CAAgCzB,IAAAA,CAAK,IAAA;AAEzC,IAAM2B,8BAAAA,GAAiC,IAAIC,GAAAA,CAAYH,+BAAAA,CAAAA;AAKhD,IAAMI,wBAAAA,2BAA4BC,KAAAA,KACrC,OAAOA,UAAU,QAAA,IAAYH,8BAAAA,CAA+BI,GAAAA,CAAID,KAAAA,CAAAA,EAD5B,0BAAA;AA4BjC,IAAWE,oBAAAA,6BAAAA,qBAAAA,EAAAA;;AAAAA,EAAAA,OAAAA,qBAAAA;;AAkBX,IAAMC,iBAAAA,mBAAoB,MAAA,CAAA,YAAA,CAAa,MAAMvC,iBAAAA,IAAqBE,cAAAA,EAAxC,mBAAA;AAC1B,IAAMsC,WAAAA,mBAAc,MAAA,CAAA,YAAA,CAAa,MAAMxC,iBAAAA,IAAqBC,QAAAA,EAAxC,aAAA","file":"7CGWPLOJ.js","sourcesContent":["import { join } from 'node:path';\nimport * as z from 'zod';\n\nimport { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';\n\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core/tool-executor';\nimport * as environment from './environment';\n\ninterface RegistryConfig {\n registry: string;\n imageDirectory: string;\n}\n\nlet registryConfigCache: RegistryConfig | undefined;\n\nconst getRegistryConfig = async (): Promise<RegistryConfig> => {\n if (!registryConfigCache) {\n if (environment.registry && environment.imageDirectory) {\n registryConfigCache = {\n registry: environment.registry,\n imageDirectory: environment.imageDirectory,\n };\n } else {\n const workspaceRoot = await getFullyQualifiedRepoRootPath();\n const configPath = join(\n workspaceRoot,\n 'configs',\n 'vm-tooling',\n 'values',\n 'docker-image-repo.ts',\n );\n\n const module = await import(configPath);\n registryConfigCache = module.default;\n }\n }\n return registryConfigCache!;\n};\n\n// Container path for the shared cargo build-artifact cache. A VM mounts its toolchain `target/`\n// cache at this path; resolveCargoCacheEnv keys on it to inject CARGO_TARGET_DIR. Single source so\n// the helper's lookup and each VM config's containerPath can't drift apart.\nexport const CARGO_TARGET_CACHE_PATH = '/cargo-target';\n\nconst volumeMappingBaseSchema = z.object({\n containerPath: z.string(),\n});\n\nconst hostVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('host'),\n hostPath: z.string(),\n});\n\nconst isolateVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('isolate'),\n name: z.string(),\n shared: z.optional(z.boolean()),\n locked: z.optional(z.boolean()),\n // Share this cache across packages on the same toolchain instead of per-package. See\n // qualifyVolumeName. Opt-in — omit to keep it package-private.\n toolchainKeyed: z.optional(z.boolean()),\n // Opt out of arch-namespacing for volumes holding no compiled artifacts (config/state).\n // Suffixing is the safe default: under-splitting an arch-sensitive cache poisons it.\n architectureIndependent: z.optional(z.boolean()),\n});\n\nexport const volumeMappingSchema = z.union([hostVolumeMappingSchema, isolateVolumeMappingSchema]);\n\nexport type VolumeMapping = z.infer<typeof volumeMappingSchema>;\n\nexport interface EnvironmentVariable {\n name: string;\n value: string;\n}\n\n// Explicit platform pins currently supported by tool config and the CLI.\n// `native` is a CLI-only escape hatch that runs Docker without `--platform`\n// and clears DOCKER_DEFAULT_PLATFORM for that invocation.\nexport const DOCKER_PLATFORM_VALUES = ['linux/amd64', 'linux/arm64'] as const;\nexport const DOCKER_PLATFORM_NATIVE = 'native';\nexport const DOCKER_PLATFORM_OVERRIDE_VALUES = [\n DOCKER_PLATFORM_NATIVE,\n ...DOCKER_PLATFORM_VALUES,\n] as const;\nexport const DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION =\n DOCKER_PLATFORM_OVERRIDE_VALUES.join(', ');\n\nconst dockerPlatformOverrideValueSet = new Set<string>(DOCKER_PLATFORM_OVERRIDE_VALUES);\n\nexport type DockerPlatformValue = (typeof DOCKER_PLATFORM_VALUES)[number];\nexport type DockerPlatformOverride = (typeof DOCKER_PLATFORM_OVERRIDE_VALUES)[number];\n\nexport const isDockerPlatformOverride = (input: unknown): input is DockerPlatformOverride =>\n typeof input === 'string' && dockerPlatformOverrideValueSet.has(input);\n\nexport interface Tool {\n name: string;\n privileged?: boolean;\n\n // Docker platform to use when running this tool's image\n dockerPlatform?: DockerPlatformValue;\n\n // Default isolate volumes for caching (user volumes can override these)\n defaultVolumes?: readonly VolumeMapping[];\n\n // Default environment variables (user env vars can override these)\n defaultEnv?: readonly EnvironmentVariable[];\n\n // Optional version parsing and validation functions\n getSecondaryVersion?: (args: { cwd: string }) => Promise<string>;\n\n getLocalVersion?: (args: { cwd: string }) => Promise<string>;\n\n // Optional hook called before every tool command execution (e.g., toolchain sync)\n preExecute?: (\n context: ChainContext<string>,\n options: ToolCommandExecutionOptions,\n ) => Promise<void>;\n}\n\nexport const enum DockerRegistryMirror {\n PUBLIC_GAR = 'public-gar',\n}\n\nexport interface Image {\n name: string;\n versions: Record<string, string>;\n dependencies?: Record<string, string>;\n patch?: number;\n mirrorRegistries?: DockerRegistryMirror[];\n}\n\nexport interface VersionCombination<TImageId> {\n images: Record<string, TImageId>;\n description?: string;\n stable?: boolean;\n}\n\nexport const getImageDirectory = async () => (await getRegistryConfig()).imageDirectory;\nexport const getRegistry = async () => (await getRegistryConfig()).registry;\n"]}
@@ -1,9 +1,9 @@
1
- import { displayVersionCombinations, displayToolVersionInfo } from './QH3FM6DD.js';
2
- import { executeToolCommand } from './HN2JUVAX.js';
3
- import { volumeMappingSchema, DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION, isDockerPlatformOverride } from './TMIYMQW3.js';
4
- import { local } from './GIFXFMSS.js';
5
- import { getToolDefaultVersion, getToolSupportedVersions } from './3XEUJAQB.js';
6
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { displayVersionCombinations, displayToolVersionInfo } from './AIKNZKYE.js';
2
+ import { executeToolCommand } from './U3L7CZHW.js';
3
+ import { volumeMappingSchema, DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION, isDockerPlatformOverride } from './7CGWPLOJ.js';
4
+ import { local } from './RORYN2CM.js';
5
+ import { getToolDefaultVersion, getToolSupportedVersions } from './X6QPMSID.js';
6
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
7
7
  import { Command } from 'commander';
8
8
  import { camelCase } from 'es-toolkit';
9
9
  import fs from 'fs';
@@ -136,5 +136,5 @@ var runCli = /* @__PURE__ */ __name(async (config, registerExtraCommands) => {
136
136
  }, "runCli");
137
137
 
138
138
  export { runCli };
139
- //# sourceMappingURL=GMN3ZEOV.js.map
140
- //# sourceMappingURL=GMN3ZEOV.js.map
139
+ //# sourceMappingURL=7DDNJRV6.js.map
140
+ //# sourceMappingURL=7DDNJRV6.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":"GMN3ZEOV.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":"7DDNJRV6.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,6 +1,6 @@
1
- import { formatVersionCombination } from './S7YAUZ26.js';
2
- import { findToolByName, getToolDefaultVersion, getToolSupportedVersions } from './3XEUJAQB.js';
3
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { formatVersionCombination } from './NAWFODGG.js';
2
+ import { findToolByName, getToolDefaultVersion, getToolSupportedVersions } from './X6QPMSID.js';
3
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
4
4
 
5
5
  // src/display/version-display.ts
6
6
  init_esm_shims();
@@ -64,5 +64,5 @@ function displayToolVersionInfo(context, toolName) {
64
64
  __name(displayToolVersionInfo, "displayToolVersionInfo");
65
65
 
66
66
  export { displayToolVersionInfo, displayVersionCombinations };
67
- //# sourceMappingURL=QH3FM6DD.js.map
68
- //# sourceMappingURL=QH3FM6DD.js.map
67
+ //# sourceMappingURL=AIKNZKYE.js.map
68
+ //# sourceMappingURL=AIKNZKYE.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/display/version-display.ts"],"names":["displayVersionCombinations","context","console","log","combinations","versionCombinations","toolNames","Set","flatMap","images","Object","keys","sort","join","repeat","formatVersionCombination","index","combination","entries","displayToolVersionInfo","toolName","tool","findToolByName","Error","name","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","toUpperCase","defaultVolumes","length","forEach","volume","volumeDesc","type","containerPath","hostPath"],"mappings":";;;;;AACA,cAAA,EAAA;AAMO,SAASA,2BAA2BC,OAAAA,EAA6B;AACpEC,EAAAA,OAAAA,CAAQC,IAAI,kEAAA,CAAA;AAEZ,EAAA,MAAMC,eAAeH,OAAAA,CAAQI,mBAAAA;AAC7B,EAAA,MAAMC,SAAAA,GAAY;OAAI,IAAIC,GAAAA,CAAIH,YAAAA,CAAaI,OAAAA,CAAQ,CAAC,EAAEC,MAAAA,EAAM,KAAOC,MAAAA,CAAOC,IAAAA,CAAKF,MAAAA,CAAAA,CAAAA;IAC1EG,IAAAA,EAAI,CACJC,KAAK,IAAA,CAAA;AAEVX,EAAAA,OAAAA,CAAQC,GAAAA,CAAI,CAAA,iBAAA,EAAaG,SAAAA,CAAAA,CAAW,CAAA;AACpCJ,EAAAA,OAAAA,CAAQC,GAAAA,CAAI,QAAA,CAAIW,MAAAA,CAAO,EAAA,CAAA,CAAA;AAEvBZ,EAAAA,OAAAA,CAAQC,IAAI,oBAAA,CAAA;AACZD,EAAAA,OAAAA,CAAQC,IAAIY,wBAAAA,CAAyBd,OAAAA,EAASG,aAAa,CAAA,CAAA,EAAI,IAAA,CAAA,CAAA;AAC/DF,EAAAA,OAAAA,CAAQC,GAAAA,EAAG;AAGXD,EAAAA,OAAAA,CAAQC,IAAI,uCAAA,CAAA;AACZ,EAAA,KAAA,MAAW,CAACa,KAAAA,EAAOC,WAAAA,CAAAA,IAAgBb,YAAAA,CAAac,SAAO,EAAI;AACvDhB,IAAAA,OAAAA,CAAQC,IAAIY,wBAAAA,CAAyBd,OAAAA,EAASgB,WAAAA,EAAa,CAACD,KAAAA,CAAAA,CAAAA;AAChE,EAAA;AACAd,EAAAA,OAAAA,CAAQC,GAAAA,EAAG;AAEXD,EAAAA,OAAAA,CAAQC,IAAI,2BAAA,CAAA;AACZD,EAAAA,OAAAA,CAAQC,IAAI,yEAAA,CAAA;AACZD,EAAAA,OAAAA,CAAQC,IACJ,0FAAA,CAAA;AAEJD,EAAAA,OAAAA,CAAQC,GAAAA,EAAG;AACf;AA5BgBH,MAAAA,CAAAA,0BAAAA,EAAAA,4BAAAA,CAAAA;AAiCT,SAASmB,sBAAAA,CACZlB,SACAmB,QAAAA,EAAgB;AAEhB,EAAA,MAAMC,IAAAA,GAAOC,cAAAA,CAAerB,OAAAA,EAASmB,QAAAA,CAAAA;AACrC,EAAA,MAAMhB,eAAeH,OAAAA,CAAQI,mBAAAA;AAE7B,EAAA,IAAI,CAACD,YAAAA,EAAc;AACf,IAAA,MAAM,IAAImB,KAAAA,CAAM,CAAA,kCAAA,EAAqCF,IAAAA,CAAKG,IAAI,CAAA,CAAE,CAAA;AACpE,EAAA;AAEA,EAAA,MAAMC,cAAAA,GAAiBC,qBAAAA,CAAsBzB,OAAAA,EAASoB,IAAAA,CAAKG,IAAI,CAAA;AAC/D,EAAA,MAAMG,iBAAAA,GAAoBC,wBAAAA,CAAyB3B,OAAAA,EAASoB,IAAAA,CAAKG,IAAI,CAAA;AAErEtB,EAAAA,OAAAA,CAAQC,GAAAA,CAAI;YAAQkB,IAAAA,CAAKG,IAAAA,CAAKK,WAAAA,EAAW,CAAA,oBAAA,CAAwB,CAAA;AACjE3B,EAAAA,OAAAA,CAAQC,GAAAA,CAAI,QAAA,CAAIW,MAAAA,CAAO,EAAA,CAAA,CAAA;AACvBZ,EAAAA,OAAAA,CAAQC,GAAAA,CAAI,CAAA,iBAAA,EAAoBsB,cAAAA,CAAAA,CAAgB,CAAA;AAChDvB,EAAAA,OAAAA,CAAQC,IAAI,CAAA,oBAAA,EAAuBwB,iBAAAA,CAAkBd,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAO,CAAA;AACjEX,EAAAA,OAAAA,CAAQC,GAAAA,EAAG;AAGX,EAAA,IAAIkB,IAAAA,CAAKS,cAAAA,IAAkBT,IAAAA,CAAKS,cAAAA,CAAeC,SAAS,CAAA,EAAG;AACvD7B,IAAAA,OAAAA,CAAQC,IAAI,kCAAA,CAAA;AACZkB,IAAAA,IAAAA,CAAKS,cAAAA,CAAeE,OAAAA,CAAQ,CAACC,MAAAA,KAAAA;AACzB,MAAA,MAAMC,aACFD,MAAAA,CAAOE,IAAAA,KAAS,SAAA,GACV,CAAA,EAAGF,OAAOT,IAAI,CAAA,QAAA,EAAMS,MAAAA,CAAOG,aAAa,KACxC,CAAA,EAAGH,MAAAA,CAAOI,QAAQ,CAAA,QAAA,EAAMJ,OAAOG,aAAa,CAAA,CAAA;AACtDlC,MAAAA,OAAAA,CAAQC,GAAAA,CAAI,CAAA,SAAA,EAAO+B,UAAAA,CAAAA,CAAY,CAAA;IACnC,CAAA,CAAA;AACAhC,IAAAA,OAAAA,CAAQC,IAAI,0DAAA,CAAA;AACZD,IAAAA,OAAAA,CAAQC,GAAAA,EAAG;AACf,EAAA;AAEAD,EAAAA,OAAAA,CAAQC,IAAI,qDAAA,CAAA;AACZ,EAAA,KAAA,MAAW,CAACa,KAAAA,EAAOC,WAAAA,CAAAA,IAAgBb,YAAAA,CAAac,SAAO,EAAI;AACvD,IAAA,IAAID,WAAAA,CAAYR,MAAAA,CAAOY,IAAAA,CAAKG,IAAI,CAAA,EAAG;AAC/BtB,MAAAA,OAAAA,CAAQC,IAAIY,wBAAAA,CAAyBd,OAAAA,EAASgB,WAAAA,EAAa,CAACD,KAAAA,CAAAA,CAAAA;AAChE,IAAA;AACJ,EAAA;AACAd,EAAAA,OAAAA,CAAQC,GAAAA,EAAG;AAEXD,EAAAA,OAAAA,CAAQC,IAAI,wCAAA,CAAA;AACZD,EAAAA,OAAAA,CAAQC,IAAI,8CAAA,CAAA;AACZD,EAAAA,OAAAA,CAAQC,IAAI,sBAAA,CAAA;AACZD,EAAAA,OAAAA,CAAQC,GAAAA,EAAG;AACf;AA9CgBgB,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA","file":"QH3FM6DD.js","sourcesContent":["import type { ChainContext } from '../context';\nimport { findToolByName, getToolDefaultVersion, getToolSupportedVersions } from '../utils/finder';\nimport { formatVersionCombination } from './formatters';\n\n/**\n * Display all supported version combinations\n */\nexport function displayVersionCombinations(context: ChainContext<string>): void {\n console.log('\\n🚀 LayerZero VM Tool - Supported Version Combinations\\n');\n\n const combinations = context.versionCombinations;\n const toolNames = [...new Set(combinations.flatMap(({ images }) => Object.keys(images)))]\n .sort()\n .join(', ');\n\n console.log(`📦 Tools: ${toolNames}`);\n console.log('─'.repeat(50));\n\n console.log('🎯 Default:');\n console.log(formatVersionCombination(context, combinations[0], true));\n console.log();\n\n // Show all combinations\n console.log('📋 All supported combinations:');\n for (const [index, combination] of combinations.entries()) {\n console.log(formatVersionCombination(context, combination, !index));\n }\n console.log();\n\n console.log('💡 Usage examples:');\n console.log(' lz-tool anchor --anchor-version 0.29.0 --solana-version 1.17.31 build');\n console.log(\n ' lz-tool anchor --anchor-version 0.31.1 build # Auto-selects compatible solana version',\n );\n console.log();\n}\n\n/**\n * Display tool-specific version information\n */\nexport function displayToolVersionInfo<TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): void {\n const tool = findToolByName(context, toolName);\n const combinations = context.versionCombinations;\n\n if (!combinations) {\n throw new Error(`No version matrix found for tool: ${tool.name}`);\n }\n\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n console.log(`\\n🔧 ${tool.name.toUpperCase()} Version Information`);\n console.log('─'.repeat(40));\n console.log(`Default version: ${defaultVersion}`);\n console.log(`Supported versions: ${supportedVersions.join(', ')}`);\n console.log();\n\n // Display default volumes\n if (tool.defaultVolumes && tool.defaultVolumes.length > 0) {\n console.log('📦 Default cache volumes:');\n tool.defaultVolumes.forEach((volume) => {\n const volumeDesc =\n volume.type === 'isolate'\n ? `${volume.name} → ${volume.containerPath}`\n : `${volume.hostPath} → ${volume.containerPath}`;\n console.log(` • ${volumeDesc}`);\n });\n console.log(' 💡 Use -v to override or add additional volumes');\n console.log();\n }\n\n console.log('🔗 Compatible combinations with other tools:');\n for (const [index, combination] of combinations.entries()) {\n if (combination.images[tool.name]) {\n console.log(formatVersionCombination(context, combination, !index));\n }\n }\n console.log();\n\n console.log('📝 Version resolution priority:');\n console.log(' 1. Command line options (--{tool}-version)');\n console.log(' 2. Default version');\n console.log();\n}\n"]}
1
+ {"version":3,"sources":["../src/display/version-display.ts"],"names":["displayVersionCombinations","context","console","log","combinations","versionCombinations","toolNames","Set","flatMap","images","Object","keys","sort","join","repeat","formatVersionCombination","index","combination","entries","displayToolVersionInfo","toolName","tool","findToolByName","Error","name","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","toUpperCase","defaultVolumes","length","forEach","volume","volumeDesc","type","containerPath","hostPath"],"mappings":"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","file":"AIKNZKYE.js","sourcesContent":["import type { ChainContext } from '../context';\nimport { findToolByName, getToolDefaultVersion, getToolSupportedVersions } from '../utils/finder';\nimport { formatVersionCombination } from './formatters';\n\n/**\n * Display all supported version combinations\n */\nexport function displayVersionCombinations(context: ChainContext<string>): void {\n console.log('\\n🚀 LayerZero VM Tool - Supported Version Combinations\\n');\n\n const combinations = context.versionCombinations;\n const toolNames = [...new Set(combinations.flatMap(({ images }) => Object.keys(images)))]\n .sort()\n .join(', ');\n\n console.log(`📦 Tools: ${toolNames}`);\n console.log('─'.repeat(50));\n\n console.log('🎯 Default:');\n console.log(formatVersionCombination(context, combinations[0], true));\n console.log();\n\n // Show all combinations\n console.log('📋 All supported combinations:');\n for (const [index, combination] of combinations.entries()) {\n console.log(formatVersionCombination(context, combination, !index));\n }\n console.log();\n\n console.log('💡 Usage examples:');\n console.log(' lz-tool anchor --anchor-version 0.29.0 --solana-version 1.17.31 build');\n console.log(\n ' lz-tool anchor --anchor-version 0.31.1 build # Auto-selects compatible solana version',\n );\n console.log();\n}\n\n/**\n * Display tool-specific version information\n */\nexport function displayToolVersionInfo<TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): void {\n const tool = findToolByName(context, toolName);\n const combinations = context.versionCombinations;\n\n if (!combinations) {\n throw new Error(`No version matrix found for tool: ${tool.name}`);\n }\n\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n console.log(`\\n🔧 ${tool.name.toUpperCase()} Version Information`);\n console.log('─'.repeat(40));\n console.log(`Default version: ${defaultVersion}`);\n console.log(`Supported versions: ${supportedVersions.join(', ')}`);\n console.log();\n\n // Display default volumes\n if (tool.defaultVolumes && tool.defaultVolumes.length > 0) {\n console.log('📦 Default cache volumes:');\n tool.defaultVolumes.forEach((volume) => {\n const volumeDesc =\n volume.type === 'isolate'\n ? `${volume.name} → ${volume.containerPath}`\n : `${volume.hostPath} → ${volume.containerPath}`;\n console.log(` • ${volumeDesc}`);\n });\n console.log(' 💡 Use -v to override or add additional volumes');\n console.log();\n }\n\n console.log('🔗 Compatible combinations with other tools:');\n for (const [index, combination] of combinations.entries()) {\n if (combination.images[tool.name]) {\n console.log(formatVersionCombination(context, combination, !index));\n }\n }\n console.log();\n\n console.log('📝 Version resolution priority:');\n console.log(' 1. Command line options (--{tool}-version)');\n console.log(' 2. Default version');\n console.log();\n}\n"]}
@@ -1,9 +1,9 @@
1
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
2
2
 
3
3
  // src/utils/error.ts
4
4
  init_esm_shims();
5
5
  var stringifyError = /* @__PURE__ */ __name((error) => error instanceof Error ? error.message : String(error), "stringifyError");
6
6
 
7
7
  export { stringifyError };
8
- //# sourceMappingURL=2XGBQPKA.js.map
9
- //# sourceMappingURL=2XGBQPKA.js.map
8
+ //# sourceMappingURL=FFE7SXCG.js.map
9
+ //# sourceMappingURL=FFE7SXCG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/error.ts"],"names":["stringifyError","error","Error","message","String"],"mappings":";;;AAAA,cAAA,EAAA;AAAO,IAAMA,cAAAA,2BAAkBC,KAAAA,KAC3BA,KAAAA,YAAiBC,QAAQD,KAAAA,CAAME,OAAAA,GAAUC,MAAAA,CAAOH,KAAAA,CAAAA,EADtB,gBAAA","file":"2XGBQPKA.js","sourcesContent":["export const stringifyError = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n"]}
1
+ {"version":3,"sources":["../src/utils/error.ts"],"names":["stringifyError","error","Error","message","String"],"mappings":";;;AAAA,cAAA,EAAA;AAAO,IAAMA,cAAAA,2BAAkBC,KAAAA,KAC3BA,KAAAA,YAAiBC,QAAQD,KAAAA,CAAME,OAAAA,GAAUC,MAAAA,CAAOH,KAAAA,CAAAA,EADtB,gBAAA","file":"FFE7SXCG.js","sourcesContent":["export const stringifyError = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n"]}
@@ -1,6 +1,6 @@
1
- import { getCombinationId } from './UBUQDI5Q.js';
2
- import { getToolDefaultVersion, getToolSupportedVersions, findToolVersionsForCombination } from './3XEUJAQB.js';
3
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { getCombinationId } from './PXDULNML.js';
2
+ import { getToolDefaultVersion, getToolSupportedVersions, findToolVersionsForCombination } from './X6QPMSID.js';
3
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
4
4
  import * as console from 'console';
5
5
 
6
6
  // src/core/version-resolver.ts
@@ -33,5 +33,5 @@ var resolveTypeVersions = /* @__PURE__ */ __name((context, userVersions) => {
33
33
  }, "resolveTypeVersions");
34
34
 
35
35
  export { resolveTypeVersions };
36
- //# sourceMappingURL=6L6NUQMM.js.map
37
- //# sourceMappingURL=6L6NUQMM.js.map
36
+ //# sourceMappingURL=FT4JK367.js.map
37
+ //# sourceMappingURL=FT4JK367.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/version-resolver.ts"],"names":["resolveTypeVersions","context","userVersions","versions","tool","tools","defaultVersion","getToolDefaultVersion","name","version","supportedVersions","getToolSupportedVersions","includes","console","warn","join","combination","versionCombinations","find","Object","entries","findToolVersionsForCombination","every","Error","info","getCombinationId","description"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAaO,IAAMA,mBAAAA,mBAAsB,MAAA,CAAA,CAC/BC,OAAAA,EACAC,YAAAA,KAAAA;AAGA,EAAA,MAAMC,WAAmC,EAAC;AAE1C,EAAA,KAAA,MAAWC,IAAAA,IAAQH,QAAQI,KAAAA,EAAO;AAC9B,IAAA,MAAMC,cAAAA,GAAiBC,qBAAAA,CAAsBN,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAC/D,IAAA,MAAMC,OAAAA,GAAUP,YAAAA,CAAaE,IAAAA,CAAKI,IAAI,CAAA,IAAKF,cAAAA;AAE3C,IAAA,IAAI,CAACG,OAAAA,EAAS;AACV,MAAA;AACJ,IAAA;AAEAN,IAAAA,QAAAA,CAASC,IAAAA,CAAKI,IAAI,CAAA,GAAIC,OAAAA;AAEtB,IAAA,IAAIA,YAAYH,cAAAA,EAAgB;AAC5B,MAAA;AACJ,IAAA;AAGA,IAAA,MAAMI,iBAAAA,GAAoBC,wBAAAA,CAAyBV,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAErE,IAAA,IAAI,CAACE,iBAAAA,CAAkBE,QAAAA,CAASH,OAAAA,CAAAA,EAAU;AACtCI,MAAQC,aAAK,CAAA,sBAAA,EAAeL,OAAAA,CAAAA,KAAAA,EAAeL,IAAAA,CAAKI,IAAI,CAAA,8BAAA,CAAgC,CAAA;AACpFK,MAAQC,aAAK,CAAA,uBAAA,EAA0BJ,iBAAAA,CAAkBK,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAO,CAAA;AACrEF,MAAQC,aAAK,CAAA,6DAAA,CAA+D,CAAA;AAChF,IAAA;AACJ,EAAA;AAGA,EAAA,MAAME,WAAAA,GAAcf,QAAQgB,mBAAAA,CAAoBC,IAAAA,CAAK,CAACF,YAAAA,KAClDG,MAAAA,CAAOC,OAAAA,CAAQC,8BAAAA,CAA+BpB,OAAAA,EAASe,YAAAA,CAAAA,CAAAA,CAAcM,KAAAA,CACjE,CAAC,CAAClB,IAAAA,EAAMK,OAAAA,MAAaN,QAAAA,CAASC,IAAAA,CAAAA,KAAUK,OAAAA,CAAAA,CAAAA;AAIhD,EAAA,IAAI,CAACO,WAAAA,EAAa;AACd,IAAA,MAAM,IAAIO,MAAM,mDAAA,CAAA;AACpB,EAAA;AAEAV,EAAQW,OAAAA,CAAAA,IAAAA,CACJ,CAAA,OAAA,EAAKC,gBAAAA,CAAiBxB,OAAAA,EAASe,WAAAA,CAAAA,CAAAA,CAAAA,EAAgBA,WAAAA,CAAYU,WAAAA,GAAc,CAAA,CAAA,EAAIV,WAAAA,CAAYU,WAAW,CAAA,CAAA,CAAA,GAAM,EAAA,CAAA,CAAI,CAAA;AAGlH,EAAA,OAAOvB,QAAAA;AACX,CAAA,EA/CmC,qBAAA","file":"6L6NUQMM.js","sourcesContent":["import * as console from 'node:console';\n\nimport type { ChainContext } from '../context';\nimport { getCombinationId } from '../utils';\nimport {\n findToolVersionsForCombination,\n getToolDefaultVersion,\n getToolSupportedVersions,\n} from '../utils/finder';\n\n/**\n * Resolve versions for all tools in a type with compatibility checking\n */\nexport const resolveTypeVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n userVersions: Record<string, string>,\n): Record<string, string> => {\n // Collect versions from all sources for each tool\n const versions: Record<string, string> = {};\n\n for (const tool of context.tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const version = userVersions[tool.name] || defaultVersion;\n\n if (!version) {\n continue;\n }\n\n versions[tool.name] = version;\n\n if (version === defaultVersion) {\n continue;\n }\n\n // Validate the user-specified version if not default.\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n if (!supportedVersions.includes(version)) {\n console.warn(`⚠️ Version ${version} for ${tool.name} is not in the supported list.`);\n console.warn(` Supported versions: ${supportedVersions.join(', ')}`);\n console.warn(` Continuing with Docker availability as final validation...`);\n }\n }\n\n // Check if current combination matches any compatible combination\n const combination = context.versionCombinations.find((combination) =>\n Object.entries(findToolVersionsForCombination(context, combination)).every(\n ([tool, version]) => versions[tool] === version,\n ),\n );\n\n if (!combination) {\n throw new Error('Compatible combination of tool versions not found');\n }\n\n console.info(\n `✅ ${getCombinationId(context, combination)} ${combination.description ? `(${combination.description})` : ''}`,\n );\n\n return versions;\n};\n"]}
1
+ {"version":3,"sources":["../src/core/version-resolver.ts"],"names":["resolveTypeVersions","context","userVersions","versions","tool","tools","defaultVersion","getToolDefaultVersion","name","version","supportedVersions","getToolSupportedVersions","includes","console","warn","join","combination","versionCombinations","find","Object","entries","findToolVersionsForCombination","every","Error","info","getCombinationId","description"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAaO,IAAMA,mBAAAA,mBAAsB,MAAA,CAAA,CAC/BC,OAAAA,EACAC,YAAAA,KAAAA;AAGA,EAAA,MAAMC,WAAmC,EAAC;AAE1C,EAAA,KAAA,MAAWC,IAAAA,IAAQH,QAAQI,KAAAA,EAAO;AAC9B,IAAA,MAAMC,cAAAA,GAAiBC,qBAAAA,CAAsBN,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAC/D,IAAA,MAAMC,OAAAA,GAAUP,YAAAA,CAAaE,IAAAA,CAAKI,IAAI,CAAA,IAAKF,cAAAA;AAE3C,IAAA,IAAI,CAACG,OAAAA,EAAS;AACV,MAAA;AACJ,IAAA;AAEAN,IAAAA,QAAAA,CAASC,IAAAA,CAAKI,IAAI,CAAA,GAAIC,OAAAA;AAEtB,IAAA,IAAIA,YAAYH,cAAAA,EAAgB;AAC5B,MAAA;AACJ,IAAA;AAGA,IAAA,MAAMI,iBAAAA,GAAoBC,wBAAAA,CAAyBV,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAErE,IAAA,IAAI,CAACE,iBAAAA,CAAkBE,QAAAA,CAASH,OAAAA,CAAAA,EAAU;AACtCI,MAAQC,aAAK,CAAA,sBAAA,EAAeL,OAAAA,CAAAA,KAAAA,EAAeL,IAAAA,CAAKI,IAAI,CAAA,8BAAA,CAAgC,CAAA;AACpFK,MAAQC,aAAK,CAAA,uBAAA,EAA0BJ,iBAAAA,CAAkBK,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAO,CAAA;AACrEF,MAAQC,aAAK,CAAA,6DAAA,CAA+D,CAAA;AAChF,IAAA;AACJ,EAAA;AAGA,EAAA,MAAME,WAAAA,GAAcf,QAAQgB,mBAAAA,CAAoBC,IAAAA,CAAK,CAACF,YAAAA,KAClDG,MAAAA,CAAOC,OAAAA,CAAQC,8BAAAA,CAA+BpB,OAAAA,EAASe,YAAAA,CAAAA,CAAAA,CAAcM,KAAAA,CACjE,CAAC,CAAClB,IAAAA,EAAMK,OAAAA,MAAaN,QAAAA,CAASC,IAAAA,CAAAA,KAAUK,OAAAA,CAAAA,CAAAA;AAIhD,EAAA,IAAI,CAACO,WAAAA,EAAa;AACd,IAAA,MAAM,IAAIO,MAAM,mDAAA,CAAA;AACpB,EAAA;AAEAV,EAAQW,OAAAA,CAAAA,IAAAA,CACJ,CAAA,OAAA,EAAKC,gBAAAA,CAAiBxB,OAAAA,EAASe,WAAAA,CAAAA,CAAAA,CAAAA,EAAgBA,WAAAA,CAAYU,WAAAA,GAAc,CAAA,CAAA,EAAIV,WAAAA,CAAYU,WAAW,CAAA,CAAA,CAAA,GAAM,EAAA,CAAA,CAAI,CAAA;AAGlH,EAAA,OAAOvB,QAAAA;AACX,CAAA,EA/CmC,qBAAA","file":"FT4JK367.js","sourcesContent":["import * as console from 'node:console';\n\nimport type { ChainContext } from '../context';\nimport { getCombinationId } from '../utils';\nimport {\n findToolVersionsForCombination,\n getToolDefaultVersion,\n getToolSupportedVersions,\n} from '../utils/finder';\n\n/**\n * Resolve versions for all tools in a type with compatibility checking\n */\nexport const resolveTypeVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n userVersions: Record<string, string>,\n): Record<string, string> => {\n // Collect versions from all sources for each tool\n const versions: Record<string, string> = {};\n\n for (const tool of context.tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const version = userVersions[tool.name] || defaultVersion;\n\n if (!version) {\n continue;\n }\n\n versions[tool.name] = version;\n\n if (version === defaultVersion) {\n continue;\n }\n\n // Validate the user-specified version if not default.\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n if (!supportedVersions.includes(version)) {\n console.warn(`⚠️ Version ${version} for ${tool.name} is not in the supported list.`);\n console.warn(` Supported versions: ${supportedVersions.join(', ')}`);\n console.warn(` Continuing with Docker availability as final validation...`);\n }\n }\n\n // Check if current combination matches any compatible combination\n const combination = context.versionCombinations.find((combination) =>\n Object.entries(findToolVersionsForCombination(context, combination)).every(\n ([tool, version]) => versions[tool] === version,\n ),\n );\n\n if (!combination) {\n throw new Error('Compatible combination of tool versions not found');\n }\n\n console.info(\n `✅ ${getCombinationId(context, combination)} ${combination.description ? `(${combination.description})` : ''}`,\n );\n\n return versions;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
2
2
  import { delay } from 'es-toolkit';
3
3
  import * as console from 'console';
4
4
  import { rmSync } from 'fs';
@@ -81,5 +81,5 @@ var lockMany = /* @__PURE__ */ __name(async (keys, run) => (
81
81
  ), "lockMany");
82
82
 
83
83
  export { buildLockFilePath, lock, lockMany };
84
- //# sourceMappingURL=4SFAVHVD.js.map
85
- //# sourceMappingURL=4SFAVHVD.js.map
84
+ //# sourceMappingURL=H6FLARPD.js.map
85
+ //# sourceMappingURL=H6FLARPD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/lock.ts"],"names":["directory","join","homedir","defaultOptions","interval","timeout","signals","buildLockFilePath","key","lock","run","options","path","packageName","env","npm_package_name","info","unlock","rmSync","force","lockError","mkdir","recursive","handle","open","constants","O_CREAT","O_EXCL","close","error","time","stat","birthtime","_error","Date","now","getTime","Error","message","delay","signal","process","addListener","console","log","removeListener","lockMany","keys","sort","reduce"],"mappings":"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","file":"4SFAVHVD.js","sourcesContent":["import { delay } from 'es-toolkit';\nimport * as console from 'node:console';\nimport { rmSync } from 'node:fs';\nimport { stat } from 'node:fs/promises';\nimport { constants, mkdir, open } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\ninterface LockOptions {\n interval?: number;\n timeout?: number;\n}\n\nconst directory = join(homedir(), '.cache/vm-tooling/locks');\nconst defaultOptions = { interval: 1000, timeout: 15 * 60_000 };\nconst signals = ['SIGINT', 'SIGTERM', 'SIGHUP'] as const;\n\nexport const buildLockFilePath = (key: string): string => join(directory, key);\n\nexport const lock = async <T>(key: string, run: () => Promise<T>, options: LockOptions = {}) => {\n const { interval, timeout } = { ...defaultOptions, ...options };\n\n const path = buildLockFilePath(key);\n const packageName = env.npm_package_name;\n const info = [...(packageName ? ['for', packageName] : []), 'at', path].join(' ');\n\n const unlock = () => rmSync(path, { force: true });\n\n while (true) {\n let lockError;\n\n try {\n await mkdir(directory, { recursive: true });\n const handle = await open(path, constants.O_CREAT | constants.O_EXCL);\n await handle.close();\n break;\n } catch (error: unknown) {\n lockError = error as Error;\n }\n\n let time: Date | undefined;\n\n try {\n time = (await stat(path)).birthtime;\n } catch (_error) {\n // \"Crush\" errors as the lock is unlocked between the `open` and `stat`.\n }\n\n if (time && Date.now() - time.getTime() > timeout) {\n // If the timeout is reached, we assume that the previous run is\n // in a bad state and recover automatically by removing the lock file\n // even when it is actually running still.\n unlock();\n throw new Error(`Timeout waiting for lock file ${info}: ${lockError.message}`);\n }\n\n await delay(interval);\n }\n\n for (const signal of signals) {\n process.addListener(signal, unlock);\n }\n\n console.log(`🔒 Acquired lock ${info}`);\n\n try {\n return await run();\n } finally {\n for (const signal of signals) {\n process.removeListener(signal, unlock);\n }\n\n unlock();\n\n console.log(`🔓 Released lock ${info}`);\n }\n};\n\nexport const lockMany = async <T>(keys: string[], run: () => Promise<T>): Promise<T> =>\n // Sort keys to avoid deadlocks.\n keys.sort().reduce((run, key) => () => lock(key, run), run)();\n"]}
1
+ {"version":3,"sources":["../src/core/lock.ts"],"names":["directory","join","homedir","defaultOptions","interval","timeout","signals","buildLockFilePath","key","lock","run","options","path","packageName","env","npm_package_name","info","unlock","rmSync","force","lockError","mkdir","recursive","handle","open","constants","O_CREAT","O_EXCL","close","error","time","stat","birthtime","_error","Date","now","getTime","Error","message","delay","signal","process","addListener","console","log","removeListener","lockMany","keys","sort","reduce"],"mappings":"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","file":"H6FLARPD.js","sourcesContent":["import { delay } from 'es-toolkit';\nimport * as console from 'node:console';\nimport { rmSync } from 'node:fs';\nimport { stat } from 'node:fs/promises';\nimport { constants, mkdir, open } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\ninterface LockOptions {\n interval?: number;\n timeout?: number;\n}\n\nconst directory = join(homedir(), '.cache/vm-tooling/locks');\nconst defaultOptions = { interval: 1000, timeout: 15 * 60_000 };\nconst signals = ['SIGINT', 'SIGTERM', 'SIGHUP'] as const;\n\nexport const buildLockFilePath = (key: string): string => join(directory, key);\n\nexport const lock = async <T>(key: string, run: () => Promise<T>, options: LockOptions = {}) => {\n const { interval, timeout } = { ...defaultOptions, ...options };\n\n const path = buildLockFilePath(key);\n const packageName = env.npm_package_name;\n const info = [...(packageName ? ['for', packageName] : []), 'at', path].join(' ');\n\n const unlock = () => rmSync(path, { force: true });\n\n while (true) {\n let lockError;\n\n try {\n await mkdir(directory, { recursive: true });\n const handle = await open(path, constants.O_CREAT | constants.O_EXCL);\n await handle.close();\n break;\n } catch (error: unknown) {\n lockError = error as Error;\n }\n\n let time: Date | undefined;\n\n try {\n time = (await stat(path)).birthtime;\n } catch (_error) {\n // \"Crush\" errors as the lock is unlocked between the `open` and `stat`.\n }\n\n if (time && Date.now() - time.getTime() > timeout) {\n // If the timeout is reached, we assume that the previous run is\n // in a bad state and recover automatically by removing the lock file\n // even when it is actually running still.\n unlock();\n throw new Error(`Timeout waiting for lock file ${info}: ${lockError.message}`);\n }\n\n await delay(interval);\n }\n\n for (const signal of signals) {\n process.addListener(signal, unlock);\n }\n\n console.log(`🔒 Acquired lock ${info}`);\n\n try {\n return await run();\n } finally {\n for (const signal of signals) {\n process.removeListener(signal, unlock);\n }\n\n unlock();\n\n console.log(`🔓 Released lock ${info}`);\n }\n};\n\nexport const lockMany = async <T>(keys: string[], run: () => Promise<T>): Promise<T> =>\n // Sort keys to avoid deadlocks.\n keys.sort().reduce((run, key) => () => lock(key, run), run)();\n"]}
@@ -1,4 +1,4 @@
1
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
2
2
  import process from 'process';
3
3
  import { $ } from 'zx';
4
4
 
@@ -49,5 +49,5 @@ ${stdout}` : ""}`);
49
49
  }, "executeLocally");
50
50
 
51
51
  export { executeLocally };
52
- //# sourceMappingURL=HC7LYTHL.js.map
53
- //# sourceMappingURL=HC7LYTHL.js.map
52
+ //# sourceMappingURL=IPZ5KX7M.js.map
53
+ //# sourceMappingURL=IPZ5KX7M.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/local-executor.ts"],"names":["executeLocally","tool","resolvedVersion","cwd","args","env","script","getLocalVersion","Error","name","localVersion","console","info","commandLine","trim","label","join","time","output","$","process","Object","fromEntries","defaultEnv","map","value","nothrow","timeEnd","exitCode","stdout"],"mappings":";;;;;AAAA,cAAA,EAAA;AAYO,IAAMA,cAAAA,iCACTC,IAAAA,EACAC,eAAAA,EACA,EAAEC,GAAAA,EAAKC,IAAAA,EAAMC,GAAAA,EAAKC,MAAAA,EAAM,KAAyB;AAEjD,EAAA,IAAI,CAACL,KAAKM,eAAAA,EAAiB;AACvB,IAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,qCAAA,EAAwCP,IAAAA,CAAKQ,IAAI,CAAA,CAAE,CAAA;AACvE,EAAA;AAEA,EAAA,MAAMC,YAAAA,GAAe,MAAMT,IAAAA,CAAKM,eAAAA,CAAgB;AAAEJ,IAAAA;GAAI,CAAA;AAEtD,EAAA,IAAID,oBAAoBQ,YAAAA,EAAc;AAClC,IAAA,MAAM,IAAIF,MACN,CAAA,MAAA,EAASP,IAAAA,CAAKQ,IAAI,CAAA,UAAA,EAAaC,YAAAA,CAAAA,uCAAAA,EAAsDR,eAAAA,CAAAA,CAAAA,CAAkB,CAAA;AAE/G,EAAA;AAEAS,EAAAA,OAAAA,CAAQC,KAAK,CAAA,6BAAA,EAAoBX,IAAAA,CAAKQ,IAAI,CAAA,CAAA,EAAIC,YAAAA,CAAAA,CAAc,CAAA;AAE5D,EAAA,MAAMG,WAAAA,GAAcP,MAAAA,EAAQQ,IAAAA,EAAAA,GAAS;AAAC,IAAA,MAAA;AAAQ,IAAA,IAAA;AAAMR,IAAAA;AAAU,GAAA,GAAA;IAACL,IAAAA,CAAKQ,IAAAA;AAASL,IAAAA,GAAAA;;AAE7E,EAAA,MAAMW,KAAAA,GAAQ,CAAA,OAAA,EAAKF,WAAAA,CAAYG,IAAAA,CAAK,GAAA,CAAA,CAAA,CAAA;AACpCL,EAAAA,OAAAA,CAAQM,KAAKF,KAAAA,CAAAA;AACb,EAAA,MAAMG,MAAAA,GAAS,MAAMC,CAAAA,CAAE;AACnBhB,IAAAA,GAAAA;IACAE,GAAAA,EAAK;AACD,MAAA,GAAGe,OAAAA,CAAQf,GAAAA;MACX,GAAGgB,MAAAA,CAAOC,WAAAA,CAAAA,CAAarB,IAAAA,CAAKsB,UAAAA,IAAc,EAAA,EAAIC,GAAAA,CAAI,CAAC,EAAEf,IAAAA,EAAMgB,KAAAA,EAAK,KAAO;AAAChB,QAAAA,IAAAA;AAAMgB,QAAAA;OAAM,CAAA,CAAA;MACpF,GAAGJ,MAAAA,CAAOC,YAAYjB,GAAAA,CAAImB,GAAAA,CAAI,CAAC,EAAEf,IAAAA,EAAMgB,OAAK,KAAO;AAAChB,QAAAA,IAAAA;AAAMgB,QAAAA;OAAM,CAAA;AACpE;GACJ,CAAA,CAAA,EAAKZ,WAAAA,CAAAA,CAAAA,CAAca,OAAAA,EAAO;AAC1Bf,EAAAA,OAAAA,CAAQgB,QAAQZ,KAAAA,CAAAA;AAEhB,EAAA,IAAIG,MAAAA,CAAOU,aAAa,CAAA,EAAG;AACvB,IAAA,MAAMC,MAAAA,GAASX,MAAAA,CAAOW,MAAAA,CAAOf,IAAAA,EAAI;AAEjC,IAAA,MAAM,IAAIN,MACN,CAAA,oBAAA,EAAuBP,IAAAA,CAAKQ,IAAI,CAAA,aAAA,EAAgBS,MAAAA,CAAOU,QAAQ,CAAA,CAAA,EAAIC,MAAAA,GAAS;EAAKA,MAAAA,CAAAA,CAAAA,GAAW,EAAA,CAAA,CAAI,CAAA;AAExG,EAAA;AAEA,EAAA,OAAOX,MAAAA;AACX,CAAA,EA1C8B,gBAAA","file":"HC7LYTHL.js","sourcesContent":["import process from 'node:process';\nimport { $, type ProcessOutput } from 'zx';\n\nimport type { EnvironmentVariable, Tool } from '../config';\n\ninterface LocalExecutionOptions {\n cwd: string;\n args: string[];\n env: readonly EnvironmentVariable[];\n script?: string;\n}\n\nexport const executeLocally = async (\n tool: Tool,\n resolvedVersion: string,\n { cwd, args, env, script }: LocalExecutionOptions,\n): Promise<ProcessOutput> => {\n if (!tool.getLocalVersion) {\n throw new Error(`Local execution is not supported for ${tool.name}`);\n }\n\n const localVersion = await tool.getLocalVersion({ cwd });\n\n if (resolvedVersion !== localVersion) {\n throw new Error(\n `Local ${tool.name} version (${localVersion}) does not match the required version (${resolvedVersion})`,\n );\n }\n\n console.info(`🖥️ Using local ${tool.name} ${localVersion}`);\n\n const commandLine = script?.trim() ? ['bash', '-c', script] : [tool.name, ...args];\n\n const label = `⏳ ${commandLine.join(' ')}`;\n console.time(label);\n const output = await $({\n cwd,\n env: {\n ...process.env,\n ...Object.fromEntries((tool.defaultEnv ?? []).map(({ name, value }) => [name, value])),\n ...Object.fromEntries(env.map(({ name, value }) => [name, value])),\n },\n })`${commandLine}`.nothrow();\n console.timeEnd(label);\n\n if (output.exitCode !== 0) {\n const stdout = output.stdout.trim();\n\n throw new Error(\n `Failed to run local ${tool.name} (exit code: ${output.exitCode})${stdout ? `\\n${stdout}` : ''}`,\n );\n }\n\n return output;\n};\n"]}
1
+ {"version":3,"sources":["../src/core/local-executor.ts"],"names":["executeLocally","tool","resolvedVersion","cwd","args","env","script","getLocalVersion","Error","name","localVersion","console","info","commandLine","trim","label","join","time","output","$","process","Object","fromEntries","defaultEnv","map","value","nothrow","timeEnd","exitCode","stdout"],"mappings":";;;;;AAAA,cAAA,EAAA;AAYO,IAAMA,cAAAA,iCACTC,IAAAA,EACAC,eAAAA,EACA,EAAEC,GAAAA,EAAKC,IAAAA,EAAMC,GAAAA,EAAKC,MAAAA,EAAM,KAAyB;AAEjD,EAAA,IAAI,CAACL,KAAKM,eAAAA,EAAiB;AACvB,IAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,qCAAA,EAAwCP,IAAAA,CAAKQ,IAAI,CAAA,CAAE,CAAA;AACvE,EAAA;AAEA,EAAA,MAAMC,YAAAA,GAAe,MAAMT,IAAAA,CAAKM,eAAAA,CAAgB;AAAEJ,IAAAA;GAAI,CAAA;AAEtD,EAAA,IAAID,oBAAoBQ,YAAAA,EAAc;AAClC,IAAA,MAAM,IAAIF,MACN,CAAA,MAAA,EAASP,IAAAA,CAAKQ,IAAI,CAAA,UAAA,EAAaC,YAAAA,CAAAA,uCAAAA,EAAsDR,eAAAA,CAAAA,CAAAA,CAAkB,CAAA;AAE/G,EAAA;AAEAS,EAAAA,OAAAA,CAAQC,KAAK,CAAA,6BAAA,EAAoBX,IAAAA,CAAKQ,IAAI,CAAA,CAAA,EAAIC,YAAAA,CAAAA,CAAc,CAAA;AAE5D,EAAA,MAAMG,WAAAA,GAAcP,MAAAA,EAAQQ,IAAAA,EAAAA,GAAS;AAAC,IAAA,MAAA;AAAQ,IAAA,IAAA;AAAMR,IAAAA;AAAU,GAAA,GAAA;IAACL,IAAAA,CAAKQ,IAAAA;AAASL,IAAAA,GAAAA;;AAE7E,EAAA,MAAMW,KAAAA,GAAQ,CAAA,OAAA,EAAKF,WAAAA,CAAYG,IAAAA,CAAK,GAAA,CAAA,CAAA,CAAA;AACpCL,EAAAA,OAAAA,CAAQM,KAAKF,KAAAA,CAAAA;AACb,EAAA,MAAMG,MAAAA,GAAS,MAAMC,CAAAA,CAAE;AACnBhB,IAAAA,GAAAA;IACAE,GAAAA,EAAK;AACD,MAAA,GAAGe,OAAAA,CAAQf,GAAAA;MACX,GAAGgB,MAAAA,CAAOC,WAAAA,CAAAA,CAAarB,IAAAA,CAAKsB,UAAAA,IAAc,EAAA,EAAIC,GAAAA,CAAI,CAAC,EAAEf,IAAAA,EAAMgB,KAAAA,EAAK,KAAO;AAAChB,QAAAA,IAAAA;AAAMgB,QAAAA;OAAM,CAAA,CAAA;MACpF,GAAGJ,MAAAA,CAAOC,YAAYjB,GAAAA,CAAImB,GAAAA,CAAI,CAAC,EAAEf,IAAAA,EAAMgB,OAAK,KAAO;AAAChB,QAAAA,IAAAA;AAAMgB,QAAAA;OAAM,CAAA;AACpE;GACJ,CAAA,CAAA,EAAKZ,WAAAA,CAAAA,CAAAA,CAAca,OAAAA,EAAO;AAC1Bf,EAAAA,OAAAA,CAAQgB,QAAQZ,KAAAA,CAAAA;AAEhB,EAAA,IAAIG,MAAAA,CAAOU,aAAa,CAAA,EAAG;AACvB,IAAA,MAAMC,MAAAA,GAASX,MAAAA,CAAOW,MAAAA,CAAOf,IAAAA,EAAI;AAEjC,IAAA,MAAM,IAAIN,MACN,CAAA,oBAAA,EAAuBP,IAAAA,CAAKQ,IAAI,CAAA,aAAA,EAAgBS,MAAAA,CAAOU,QAAQ,CAAA,CAAA,EAAIC,MAAAA,GAAS;EAAKA,MAAAA,CAAAA,CAAAA,GAAW,EAAA,CAAA,CAAI,CAAA;AAExG,EAAA;AAEA,EAAA,OAAOX,MAAAA;AACX,CAAA,EA1C8B,gBAAA","file":"IPZ5KX7M.js","sourcesContent":["import process from 'node:process';\nimport { $, type ProcessOutput } from 'zx';\n\nimport type { EnvironmentVariable, Tool } from '../config';\n\ninterface LocalExecutionOptions {\n cwd: string;\n args: string[];\n env: readonly EnvironmentVariable[];\n script?: string;\n}\n\nexport const executeLocally = async (\n tool: Tool,\n resolvedVersion: string,\n { cwd, args, env, script }: LocalExecutionOptions,\n): Promise<ProcessOutput> => {\n if (!tool.getLocalVersion) {\n throw new Error(`Local execution is not supported for ${tool.name}`);\n }\n\n const localVersion = await tool.getLocalVersion({ cwd });\n\n if (resolvedVersion !== localVersion) {\n throw new Error(\n `Local ${tool.name} version (${localVersion}) does not match the required version (${resolvedVersion})`,\n );\n }\n\n console.info(`🖥️ Using local ${tool.name} ${localVersion}`);\n\n const commandLine = script?.trim() ? ['bash', '-c', script] : [tool.name, ...args];\n\n const label = `⏳ ${commandLine.join(' ')}`;\n console.time(label);\n const output = await $({\n cwd,\n env: {\n ...process.env,\n ...Object.fromEntries((tool.defaultEnv ?? []).map(({ name, value }) => [name, value])),\n ...Object.fromEntries(env.map(({ name, value }) => [name, value])),\n },\n })`${commandLine}`.nothrow();\n console.timeEnd(label);\n\n if (output.exitCode !== 0) {\n const stdout = output.stdout.trim();\n\n throw new Error(\n `Failed to run local ${tool.name} (exit code: ${output.exitCode})${stdout ? `\\n${stdout}` : ''}`,\n );\n }\n\n return output;\n};\n"]}
@@ -1,6 +1,6 @@
1
- import { DOCKER_PLATFORM_NATIVE, getRegistry, getImageDirectory } from './TMIYMQW3.js';
2
- import { findToolVersionsForCombination, getImageName } from './3XEUJAQB.js';
3
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { DOCKER_PLATFORM_NATIVE, getRegistry, getImageDirectory } from './7CGWPLOJ.js';
2
+ import { findToolVersionsForCombination, getImageName } from './X6QPMSID.js';
3
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
4
4
  import { join, basename } from 'path';
5
5
  import { env } from 'process';
6
6
 
@@ -103,5 +103,5 @@ var qualifyVolumeName = /* @__PURE__ */ __name((volume, { cacheKey, dockerPlatfo
103
103
  }, "qualifyVolumeName");
104
104
 
105
105
  export { findImageForTool, getImageTag, getImageUri, qualifyVolumeName, resolveDockerPlatform, resolveDockerPlatformExecution, resolveEffectiveDockerPlatformValue };
106
- //# sourceMappingURL=KN3TRHEZ.js.map
107
- //# sourceMappingURL=KN3TRHEZ.js.map
106
+ //# sourceMappingURL=KBUFOLY3.js.map
107
+ //# sourceMappingURL=KBUFOLY3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/docker.ts"],"names":["resolveDockerPlatform","dockerPlatform","undefined","archSegment","split","arch","value","namespace","replace","resolveEffectiveDockerPlatformValue","toolDockerPlatform","envDockerPlatform","env","DOCKER_DEFAULT_PLATFORM","DOCKER_PLATFORM_NATIVE","resolveDockerPlatformExecution","options","_dockerDefaultPlatform","processEnv","args","volumeNameOptions","platform","findImageForTool","context","toolName","version","image","versionCombinations","flatMap","combination","imageId","images","findToolVersionsForCombination","Error","getImageUri","join","getRegistry","getImageDirectory","getImageName","name","getImageTag","versions","patch","Object","entries","sort","flat","qualifyVolumeName","volume","cacheKey","type","components","shared","toolchainKeyed","push","packageName","npm_package_name","basename","architectureIndependent"],"mappings":"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","file":"KN3TRHEZ.js","sourcesContent":["import { basename, join } from 'node:path';\nimport { env } from 'node:process';\n\nimport type { DockerPlatformOverride, DockerPlatformValue, Image, VolumeMapping } from '../config';\nimport { DOCKER_PLATFORM_NATIVE, getImageDirectory, getRegistry } from '../config';\nimport type { ChainContext } from '../context';\nimport { findToolVersionsForCombination, getImageName } from './finder';\n\nexport interface DockerPlatform {\n /** Raw value, e.g. `linux/amd64`, for Docker `--platform`. */\n value: string;\n /** Filesystem-safe token for cache volume names, e.g. `linux-amd64`. */\n namespace: string;\n /** Architecture as `docker inspect --format {{.Architecture}}` reports it, e.g. `amd64`. */\n arch: string;\n}\n\nexport type DockerProcessEnv = Record<string, string | undefined>;\n\nexport interface QualifyVolumeNameOptions {\n cacheKey?: string;\n dockerPlatform?: string;\n}\n\nexport interface DockerPlatformResolutionOptions {\n dockerPlatform?: DockerPlatformOverride;\n toolDockerPlatform?: DockerPlatformValue;\n envDockerPlatform?: string;\n}\n\nexport interface DockerPlatformExecution {\n platform?: DockerPlatform;\n args: string[];\n processEnv?: DockerProcessEnv;\n volumeNameOptions: QualifyVolumeNameOptions;\n}\n\nexport const resolveDockerPlatform = (dockerPlatform?: string): DockerPlatform | undefined => {\n if (!dockerPlatform) {\n return undefined;\n }\n\n const [, archSegment] = dockerPlatform.split('/');\n const arch = archSegment || dockerPlatform;\n\n return {\n value: dockerPlatform,\n namespace: dockerPlatform.replace(/\\//g, '-'),\n arch,\n };\n};\n\n// Platform precedence is intentional: CLI override > tool default > DOCKER_DEFAULT_PLATFORM.\n// A tool default is an explicit choice made by the tool config (for example Anchor's amd64 pin),\n// so a user's shell env should not override it by accident. DOCKER_DEFAULT_PLATFORM only applies\n// when the tool does not declare a platform.\n// `native` is an escape hatch from forced platform selection: it resolves to no\n// platform value, so Docker commands run without `--platform`.\nexport const resolveEffectiveDockerPlatformValue = ({\n dockerPlatform,\n toolDockerPlatform,\n envDockerPlatform = env.DOCKER_DEFAULT_PLATFORM,\n}: DockerPlatformResolutionOptions): string | undefined => {\n if (dockerPlatform === DOCKER_PLATFORM_NATIVE) {\n return undefined;\n }\n\n return dockerPlatform ?? toolDockerPlatform ?? envDockerPlatform;\n};\n\nexport const resolveDockerPlatformExecution = (\n options: DockerPlatformResolutionOptions,\n): DockerPlatformExecution => {\n if (options.dockerPlatform === DOCKER_PLATFORM_NATIVE) {\n // Clear DOCKER_DEFAULT_PLATFORM as well, otherwise Docker would still be forced\n // to use that platform even though this run requested native execution.\n const { DOCKER_DEFAULT_PLATFORM: _dockerDefaultPlatform, ...processEnv } = env;\n\n return {\n args: [],\n processEnv,\n volumeNameOptions: { dockerPlatform: undefined },\n };\n }\n\n const platform = resolveDockerPlatform(resolveEffectiveDockerPlatformValue(options));\n\n return {\n platform,\n args: platform ? ['--platform', platform.value] : [],\n volumeNameOptions: { dockerPlatform: platform?.value },\n };\n};\n\nexport const findImageForTool = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n version: string,\n): Image => {\n const [image] = context.versionCombinations.flatMap((combination) => {\n const imageId = combination.images[toolName];\n\n if (!imageId) {\n return [];\n }\n\n const image = context.images[imageId];\n\n return image && findToolVersionsForCombination(context, combination)[toolName] === version\n ? [image]\n : [];\n });\n\n if (!image) {\n throw new Error(\n `No version combination found for tool ${toolName} with version ${version}`,\n );\n }\n\n return image;\n};\n\nexport const getImageUri = async (image: Image): Promise<string> =>\n join(\n await getRegistry(),\n await getImageDirectory(),\n `${getImageName(image.name)}:${getImageTag(image)}`,\n );\n\nexport const getImageTag = ({ versions, patch }: Image): string =>\n [...Object.entries(versions).sort().flat(), ...(patch ? ['patch', patch] : [])].join('-');\n\nexport const qualifyVolumeName = (\n volume: VolumeMapping,\n { cacheKey, dockerPlatform }: QualifyVolumeNameOptions = {\n dockerPlatform: env.DOCKER_DEFAULT_PLATFORM,\n },\n): VolumeMapping => {\n if (volume.type !== 'isolate') {\n return volume;\n }\n\n const components = ['lz-tooling-cache', volume.name];\n\n if (!volume.shared) {\n // Opted-in volumes key on the toolchain (image tag) so same-toolchain packages share one\n // cache; the rest stay package-private. Falls back to package-private without a cacheKey.\n if (volume.toolchainKeyed && cacheKey) {\n components.push(cacheKey);\n } else {\n const packageName = env.npm_package_name;\n\n if (!packageName) {\n throw new Error('npm_package_name environment variable not defined');\n }\n\n components.push(basename(packageName));\n }\n }\n\n const platform = resolveDockerPlatform(dockerPlatform);\n if (platform && !volume.architectureIndependent) {\n components.push(platform.namespace);\n }\n\n return { ...volume, name: components.join('-') };\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/docker.ts"],"names":["resolveDockerPlatform","dockerPlatform","undefined","archSegment","split","arch","value","namespace","replace","resolveEffectiveDockerPlatformValue","toolDockerPlatform","envDockerPlatform","env","DOCKER_DEFAULT_PLATFORM","DOCKER_PLATFORM_NATIVE","resolveDockerPlatformExecution","options","_dockerDefaultPlatform","processEnv","args","volumeNameOptions","platform","findImageForTool","context","toolName","version","image","versionCombinations","flatMap","combination","imageId","images","findToolVersionsForCombination","Error","getImageUri","join","getRegistry","getImageDirectory","getImageName","name","getImageTag","versions","patch","Object","entries","sort","flat","qualifyVolumeName","volume","cacheKey","type","components","shared","toolchainKeyed","push","packageName","npm_package_name","basename","architectureIndependent"],"mappings":"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","file":"KBUFOLY3.js","sourcesContent":["import { basename, join } from 'node:path';\nimport { env } from 'node:process';\n\nimport type { DockerPlatformOverride, DockerPlatformValue, Image, VolumeMapping } from '../config';\nimport { DOCKER_PLATFORM_NATIVE, getImageDirectory, getRegistry } from '../config';\nimport type { ChainContext } from '../context';\nimport { findToolVersionsForCombination, getImageName } from './finder';\n\nexport interface DockerPlatform {\n /** Raw value, e.g. `linux/amd64`, for Docker `--platform`. */\n value: string;\n /** Filesystem-safe token for cache volume names, e.g. `linux-amd64`. */\n namespace: string;\n /** Architecture as `docker inspect --format {{.Architecture}}` reports it, e.g. `amd64`. */\n arch: string;\n}\n\nexport type DockerProcessEnv = Record<string, string | undefined>;\n\nexport interface QualifyVolumeNameOptions {\n cacheKey?: string;\n dockerPlatform?: string;\n}\n\nexport interface DockerPlatformResolutionOptions {\n dockerPlatform?: DockerPlatformOverride;\n toolDockerPlatform?: DockerPlatformValue;\n envDockerPlatform?: string;\n}\n\nexport interface DockerPlatformExecution {\n platform?: DockerPlatform;\n args: string[];\n processEnv?: DockerProcessEnv;\n volumeNameOptions: QualifyVolumeNameOptions;\n}\n\nexport const resolveDockerPlatform = (dockerPlatform?: string): DockerPlatform | undefined => {\n if (!dockerPlatform) {\n return undefined;\n }\n\n const [, archSegment] = dockerPlatform.split('/');\n const arch = archSegment || dockerPlatform;\n\n return {\n value: dockerPlatform,\n namespace: dockerPlatform.replace(/\\//g, '-'),\n arch,\n };\n};\n\n// Platform precedence is intentional: CLI override > tool default > DOCKER_DEFAULT_PLATFORM.\n// A tool default is an explicit choice made by the tool config (for example Anchor's amd64 pin),\n// so a user's shell env should not override it by accident. DOCKER_DEFAULT_PLATFORM only applies\n// when the tool does not declare a platform.\n// `native` is an escape hatch from forced platform selection: it resolves to no\n// platform value, so Docker commands run without `--platform`.\nexport const resolveEffectiveDockerPlatformValue = ({\n dockerPlatform,\n toolDockerPlatform,\n envDockerPlatform = env.DOCKER_DEFAULT_PLATFORM,\n}: DockerPlatformResolutionOptions): string | undefined => {\n if (dockerPlatform === DOCKER_PLATFORM_NATIVE) {\n return undefined;\n }\n\n return dockerPlatform ?? toolDockerPlatform ?? envDockerPlatform;\n};\n\nexport const resolveDockerPlatformExecution = (\n options: DockerPlatformResolutionOptions,\n): DockerPlatformExecution => {\n if (options.dockerPlatform === DOCKER_PLATFORM_NATIVE) {\n // Clear DOCKER_DEFAULT_PLATFORM as well, otherwise Docker would still be forced\n // to use that platform even though this run requested native execution.\n const { DOCKER_DEFAULT_PLATFORM: _dockerDefaultPlatform, ...processEnv } = env;\n\n return {\n args: [],\n processEnv,\n volumeNameOptions: { dockerPlatform: undefined },\n };\n }\n\n const platform = resolveDockerPlatform(resolveEffectiveDockerPlatformValue(options));\n\n return {\n platform,\n args: platform ? ['--platform', platform.value] : [],\n volumeNameOptions: { dockerPlatform: platform?.value },\n };\n};\n\nexport const findImageForTool = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n version: string,\n): Image => {\n const [image] = context.versionCombinations.flatMap((combination) => {\n const imageId = combination.images[toolName];\n\n if (!imageId) {\n return [];\n }\n\n const image = context.images[imageId];\n\n return image && findToolVersionsForCombination(context, combination)[toolName] === version\n ? [image]\n : [];\n });\n\n if (!image) {\n throw new Error(\n `No version combination found for tool ${toolName} with version ${version}`,\n );\n }\n\n return image;\n};\n\nexport const getImageUri = async (image: Image): Promise<string> =>\n join(\n await getRegistry(),\n await getImageDirectory(),\n `${getImageName(image.name)}:${getImageTag(image)}`,\n );\n\nexport const getImageTag = ({ versions, patch }: Image): string =>\n [...Object.entries(versions).sort().flat(), ...(patch ? ['patch', patch] : [])].join('-');\n\nexport const qualifyVolumeName = (\n volume: VolumeMapping,\n { cacheKey, dockerPlatform }: QualifyVolumeNameOptions = {\n dockerPlatform: env.DOCKER_DEFAULT_PLATFORM,\n },\n): VolumeMapping => {\n if (volume.type !== 'isolate') {\n return volume;\n }\n\n const components = ['lz-tooling-cache', volume.name];\n\n if (!volume.shared) {\n // Opted-in volumes key on the toolchain (image tag) so same-toolchain packages share one\n // cache; the rest stay package-private. Falls back to package-private without a cacheKey.\n if (volume.toolchainKeyed && cacheKey) {\n components.push(cacheKey);\n } else {\n const packageName = env.npm_package_name;\n\n if (!packageName) {\n throw new Error('npm_package_name environment variable not defined');\n }\n\n components.push(basename(packageName));\n }\n }\n\n const platform = resolveDockerPlatform(dockerPlatform);\n if (platform && !volume.architectureIndependent) {\n components.push(platform.namespace);\n }\n\n return { ...volume, name: components.join('-') };\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { init_esm_shims } from './TXIQ74D3.js';
2
+
3
+ // src/core/index.ts
4
+ init_esm_shims();
5
+ //# sourceMappingURL=N53MNPWU.js.map
6
+ //# sourceMappingURL=N53MNPWU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;AAAA,cAAA,EAAA","file":"2MO4PR4P.js","sourcesContent":["export * from './local-executor';\nexport * from './tool-executor';\nexport * from './version-resolver';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;AAAA,cAAA,EAAA","file":"N53MNPWU.js","sourcesContent":["export * from './local-executor';\nexport * from './tool-executor';\nexport * from './version-resolver';\n"]}
@@ -1,6 +1,6 @@
1
- import { getCombinationId } from './UBUQDI5Q.js';
2
- import { findToolVersionsForCombination } from './3XEUJAQB.js';
3
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { getCombinationId } from './PXDULNML.js';
2
+ import { findToolVersionsForCombination } from './X6QPMSID.js';
3
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
4
4
 
5
5
  // src/display/formatters.ts
6
6
  init_esm_shims();
@@ -16,5 +16,5 @@ function formatVersionCombination(context, combination, isDefault) {
16
16
  __name(formatVersionCombination, "formatVersionCombination");
17
17
 
18
18
  export { formatVersionCombination };
19
- //# sourceMappingURL=S7YAUZ26.js.map
20
- //# sourceMappingURL=S7YAUZ26.js.map
19
+ //# sourceMappingURL=NAWFODGG.js.map
20
+ //# sourceMappingURL=NAWFODGG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/display/formatters.ts"],"names":["formatVersionCombination","context","combination","isDefault","tools","Object","entries","findToolVersionsForCombination","filter","_","version","undefined","map","tool","join","badges","stable","description","Boolean","getCombinationId"],"mappings":";;;;;AAEA,cAAA,EAAA;AAMO,SAASA,wBAAAA,CACZC,OAAAA,EACAC,WAAAA,EACAC,SAAAA,EAAmB;AAEnB,EAAA,MAAMC,KAAAA,GAAQC,MAAAA,CAAOC,OAAAA,CAAQC,8BAAAA,CAA+BN,OAAAA,EAASC,WAAAA,CAAAA,CAAAA,CAChEM,MAAAA,CAAO,CAAC,CAACC,CAAAA,EAAGC,OAAAA,CAAAA,KAAaA,OAAAA,KAAYC,MAAAA,CAAAA,CACrCC,GAAAA,CAAI,CAAC,CAACC,IAAAA,EAAMH,OAAAA,CAAAA,KAAa,CAAA,EAAGG,IAAAA,CAAAA,CAAAA,EAAQH,OAAAA,CAAAA,CAAS,CAAA,CAC7CI,KAAK,IAAA,CAAA;AAEV,EAAA,MAAMC,MAAAA,GAAS;AACXZ,IAAAA,SAAAA,GAAY,mBAAA,GAAe,IAAA;AAC3BD,IAAAA,WAAAA,CAAYc,SAAS,eAAA,GAAa,IAAA;IAClCd,WAAAA,CAAYe;IAEXT,MAAAA,CAAOU,OAAAA,CAAAA,CACPJ,IAAAA,CAAK,GAAA,CAAA;AAEV,EAAA,OAAO,CAAA,EAAA,EAAKK,iBAAiBlB,OAAAA,EAASC,WAAAA,CAAAA,CAAAA,EAAAA,EAAiBE,KAAAA,IAASW,MAAAA,CAAAA,CAAAA;AACpE;AAnBgBf,MAAAA,CAAAA,wBAAAA,EAAAA,0BAAAA,CAAAA","file":"S7YAUZ26.js","sourcesContent":["import type { VersionCombination } from '../config';\nimport type { ChainContext } from '../context';\nimport { getCombinationId } from '../utils';\nimport { findToolVersionsForCombination } from '../utils/finder';\n\n/**\n * Format version combinations for display\n */\nexport function formatVersionCombination<TImageId extends string>(\n context: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n isDefault?: boolean,\n): string {\n const tools = Object.entries(findToolVersionsForCombination(context, combination))\n .filter(([_, version]) => version !== undefined)\n .map(([tool, version]) => `${tool}:${version}`)\n .join(', ');\n\n const badges = [\n isDefault ? '🎯 Default' : null,\n combination.stable ? '✅ Stable' : null,\n combination.description,\n ]\n .filter(Boolean)\n .join(' ');\n\n return ` ${getCombinationId(context, combination)}: ${tools} ${badges}`;\n}\n"]}
1
+ {"version":3,"sources":["../src/display/formatters.ts"],"names":["formatVersionCombination","context","combination","isDefault","tools","Object","entries","findToolVersionsForCombination","filter","_","version","undefined","map","tool","join","badges","stable","description","Boolean","getCombinationId"],"mappings":";;;;;AAEA,cAAA,EAAA;AAMO,SAASA,wBAAAA,CACZC,OAAAA,EACAC,WAAAA,EACAC,SAAAA,EAAmB;AAEnB,EAAA,MAAMC,KAAAA,GAAQC,MAAAA,CAAOC,OAAAA,CAAQC,8BAAAA,CAA+BN,OAAAA,EAASC,WAAAA,CAAAA,CAAAA,CAChEM,MAAAA,CAAO,CAAC,CAACC,CAAAA,EAAGC,OAAAA,CAAAA,KAAaA,OAAAA,KAAYC,MAAAA,CAAAA,CACrCC,GAAAA,CAAI,CAAC,CAACC,IAAAA,EAAMH,OAAAA,CAAAA,KAAa,CAAA,EAAGG,IAAAA,CAAAA,CAAAA,EAAQH,OAAAA,CAAAA,CAAS,CAAA,CAC7CI,KAAK,IAAA,CAAA;AAEV,EAAA,MAAMC,MAAAA,GAAS;AACXZ,IAAAA,SAAAA,GAAY,mBAAA,GAAe,IAAA;AAC3BD,IAAAA,WAAAA,CAAYc,SAAS,eAAA,GAAa,IAAA;IAClCd,WAAAA,CAAYe;IAEXT,MAAAA,CAAOU,OAAAA,CAAAA,CACPJ,IAAAA,CAAK,GAAA,CAAA;AAEV,EAAA,OAAO,CAAA,EAAA,EAAKK,iBAAiBlB,OAAAA,EAASC,WAAAA,CAAAA,CAAAA,EAAAA,EAAiBE,KAAAA,IAASW,MAAAA,CAAAA,CAAAA;AACpE;AAnBgBf,MAAAA,CAAAA,wBAAAA,EAAAA,0BAAAA,CAAAA","file":"NAWFODGG.js","sourcesContent":["import type { VersionCombination } from '../config';\nimport type { ChainContext } from '../context';\nimport { getCombinationId } from '../utils';\nimport { findToolVersionsForCombination } from '../utils/finder';\n\n/**\n * Format version combinations for display\n */\nexport function formatVersionCombination<TImageId extends string>(\n context: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n isDefault?: boolean,\n): string {\n const tools = Object.entries(findToolVersionsForCombination(context, combination))\n .filter(([_, version]) => version !== undefined)\n .map(([tool, version]) => `${tool}:${version}`)\n .join(', ');\n\n const badges = [\n isDefault ? '🎯 Default' : null,\n combination.stable ? '✅ Stable' : null,\n combination.description,\n ]\n .filter(Boolean)\n .join(' ');\n\n return ` ${getCombinationId(context, combination)}: ${tools} ${badges}`;\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { getImageTag } from './KN3TRHEZ.js';
2
- import { getImageName } from './3XEUJAQB.js';
3
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { getImageTag } from './KBUFOLY3.js';
2
+ import { getImageName } from './X6QPMSID.js';
3
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
4
4
  import { constantCase } from 'es-toolkit';
5
5
  import { join } from 'path';
6
6
 
@@ -51,5 +51,5 @@ var generateGithubMatrix = /* @__PURE__ */ __name((images, directory, versionCom
51
51
  }, "generateGithubMatrix");
52
52
 
53
53
  export { generateGithubMatrix };
54
- //# sourceMappingURL=E35WFC4E.js.map
55
- //# sourceMappingURL=E35WFC4E.js.map
54
+ //# sourceMappingURL=PNCVL7HO.js.map
55
+ //# sourceMappingURL=PNCVL7HO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/github/matrix.ts"],"names":["generateGithubMatrix","images","directory","versionCombinations","createImageEntry","imageId","image","tag","getImageTag","Error","entry","id","name","build_args","Object","entries","versions","dependencies","sort","map","key","value","constantCase","join","image_name","getImageName","tags","results","imageEntries","r","mirroredImages","filter","result","mirrorRegistries","length","flatMap","mirror","activeImages","activeImageIds","Set","combo","values","push"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AA8BO,IAAMA,oBAAAA,mBAAuB,MAAA,CAAA,CAChCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,gBAAAA,mBAAmB,MAAA,CAAA,CAAC,CAACC,OAAAA,EAASC,KAAAA,CAAAA,KAAuB;AAIvD,IAAA,MAAMC,GAAAA,GAAMC,YAAYF,KAAAA,CAAAA;AAExB,IAAA,IAAI,CAACC,GAAAA,EAAK;AACN,MAAA,MAAM,IAAIE,KAAAA,CACN,CAAA,OAAA,EAAUJ,OAAAA,CAAAA,qEAAAA,CAA8E,CAAA;AAEhG,IAAA;AAEA,IAAA,OAAO;MACHK,KAAAA,EAAO;QACHC,EAAAA,EAAIN,OAAAA;AACJO,QAAAA,IAAAA,EAAMN,KAAAA,CAAMM,IAAAA;AACZC,QAAAA,UAAAA,EAAYC,OAAOC,OAAAA,CAAQ;AAAE,UAAA,GAAGT,KAAAA,CAAMU,QAAAA;AAAU,UAAA,GAAGV,KAAAA,CAAMW;AAAa,SAAA,CAAA,CACjEC,IAAAA,EAAI,CACJC,GAAAA,CAAI,CAAC,CAACC,GAAAA,EAAKC,KAAAA,CAAAA,KAAW,GAAGC,YAAAA,CAAaF,GAAAA,CAAAA,CAAAA,SAAAA,EAAgBC,KAAAA,CAAAA,CAAO,CAAA;AAClEnB,QAAAA,SAAAA,EAAWqB,IAAAA,CAAKrB,SAAAA,EAAW,QAAA,EAAUI,KAAAA,CAAMM,IAAI,CAAA;QAC/CY,UAAAA,EAAYC,YAAAA,CAAanB,MAAMM,IAAI,CAAA;QACnCc,IAAAA,EAAM;AAACnB,UAAAA;;AACX,OAAA;AACAD,MAAAA;AACJ,KAAA;EACJ,CAAA,EAzByB,kBAAA,CAAA;AA2BzB,EAAA,MAAMqB,UAAUb,MAAAA,CAAOC,OAAAA,CAAQd,MAAAA,CAAAA,CAAQkB,IAAIf,gBAAAA,CAAAA;AAE3C,EAAA,MAAMwB,eAAeD,OAAAA,CAAQR,GAAAA,CAAI,CAACU,CAAAA,KAAMA,EAAEnB,KAAK,CAAA;AAE/C,EAAA,MAAMoB,cAAAA,GAAiBH,QAClBI,MAAAA,CAAO,CAACC,WAAWA,MAAAA,CAAO1B,KAAAA,CAAM2B,kBAAkBC,MAAAA,CAAAA,CAClDC,QAAQ,CAAC,EAAEzB,OAAOJ,KAAAA,EAAK,KACpBA,MAAM2B,gBAAAA,CAAkBd,GAAAA,CAAI,CAACiB,MAAAA,MAAY;AACrCzB,IAAAA,EAAAA,EAAID,KAAAA,CAAMC,EAAAA;AACVC,IAAAA,IAAAA,EAAMF,KAAAA,CAAME,IAAAA;AACZY,IAAAA,UAAAA,EAAYd,KAAAA,CAAMc,UAAAA;AAClBE,IAAAA,IAAAA,EAAMhB,KAAAA,CAAMgB,IAAAA;AACZU,IAAAA;AACJ,GAAA,CAAA,CAAA,CAAA;AAGR,EAAA,MAAMC,eAAyB,EAAA;AAC/B,EAAA,IAAIlC,mBAAAA,EAAqB;AACrB,IAAA,MAAMmC,cAAAA,GAAiB,IAAIC,GAAAA,CACvBpC,mBAAAA,CAAoBgC,OAAAA,CAAQ,CAACK,KAAAA,KAAU1B,MAAAA,CAAO2B,MAAAA,CAAOD,KAAAA,CAAMvC,MAAM,CAAA,CAAA,CAAA;AAErEoC,IAAAA,YAAAA,CAAaK,IAAAA,CAAI,GAAIJ,cAAAA,CAAAA;AACzB,EAAA;AAEA,EAAA,OAAO;IAAErC,MAAAA,EAAQ2B,YAAAA;AAAcE,IAAAA,cAAAA;AAAgBO,IAAAA;AAAa,GAAA;AAChE,CAAA,EAzDoC,sBAAA","file":"E35WFC4E.js","sourcesContent":["import { constantCase } from 'es-toolkit';\nimport { join } from 'node:path';\n\nimport { type Image, type VersionCombination } from '../config';\nimport { getImageTag } from '../utils/docker';\nimport { getImageName } from '../utils/finder';\n\ninterface ImageEntry {\n id: string;\n name: string;\n build_args: string[];\n image_name: string;\n tags: string[];\n directory: string;\n}\n\ninterface MirroredImageEntry {\n id: string;\n name: string;\n image_name: string;\n tags: string[];\n mirror: string;\n}\n\ninterface GithubMatrixOutput {\n images: ImageEntry[];\n mirroredImages: MirroredImageEntry[];\n activeImages: string[];\n}\n\nexport const generateGithubMatrix = (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): GithubMatrixOutput => {\n const createImageEntry = ([imageId, image]: [string, Image]): {\n entry: ImageEntry;\n image: Image;\n } => {\n const tag = getImageTag(image);\n\n if (!tag) {\n throw new Error(\n `Image \"${imageId}\" produced no tags. Every image must have at least one non-empty tag.`,\n );\n }\n\n return {\n entry: {\n id: imageId,\n name: image.name,\n build_args: Object.entries({ ...image.versions, ...image.dependencies })\n .sort()\n .map(([key, value]) => `${constantCase(key)}_VERSION=${value}`),\n directory: join(directory, 'docker', image.name),\n image_name: getImageName(image.name),\n tags: [tag],\n },\n image,\n };\n };\n\n const results = Object.entries(images).map(createImageEntry);\n\n const imageEntries = results.map((r) => r.entry);\n\n const mirroredImages = results\n .filter((result) => result.image.mirrorRegistries?.length)\n .flatMap(({ entry, image }) =>\n image.mirrorRegistries!.map((mirror) => ({\n id: entry.id,\n name: entry.name,\n image_name: entry.image_name,\n tags: entry.tags,\n mirror,\n })),\n );\n\n const activeImages: string[] = [];\n if (versionCombinations) {\n const activeImageIds = new Set(\n versionCombinations.flatMap((combo) => Object.values(combo.images)),\n );\n activeImages.push(...activeImageIds);\n }\n\n return { images: imageEntries, mirroredImages, activeImages };\n};\n"]}
1
+ {"version":3,"sources":["../src/github/matrix.ts"],"names":["generateGithubMatrix","images","directory","versionCombinations","createImageEntry","imageId","image","tag","getImageTag","Error","entry","id","name","build_args","Object","entries","versions","dependencies","sort","map","key","value","constantCase","join","image_name","getImageName","tags","results","imageEntries","r","mirroredImages","filter","result","mirrorRegistries","length","flatMap","mirror","activeImages","activeImageIds","Set","combo","values","push"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AA8BO,IAAMA,oBAAAA,mBAAuB,MAAA,CAAA,CAChCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,gBAAAA,mBAAmB,MAAA,CAAA,CAAC,CAACC,OAAAA,EAASC,KAAAA,CAAAA,KAAuB;AAIvD,IAAA,MAAMC,GAAAA,GAAMC,YAAYF,KAAAA,CAAAA;AAExB,IAAA,IAAI,CAACC,GAAAA,EAAK;AACN,MAAA,MAAM,IAAIE,KAAAA,CACN,CAAA,OAAA,EAAUJ,OAAAA,CAAAA,qEAAAA,CAA8E,CAAA;AAEhG,IAAA;AAEA,IAAA,OAAO;MACHK,KAAAA,EAAO;QACHC,EAAAA,EAAIN,OAAAA;AACJO,QAAAA,IAAAA,EAAMN,KAAAA,CAAMM,IAAAA;AACZC,QAAAA,UAAAA,EAAYC,OAAOC,OAAAA,CAAQ;AAAE,UAAA,GAAGT,KAAAA,CAAMU,QAAAA;AAAU,UAAA,GAAGV,KAAAA,CAAMW;AAAa,SAAA,CAAA,CACjEC,IAAAA,EAAI,CACJC,GAAAA,CAAI,CAAC,CAACC,GAAAA,EAAKC,KAAAA,CAAAA,KAAW,GAAGC,YAAAA,CAAaF,GAAAA,CAAAA,CAAAA,SAAAA,EAAgBC,KAAAA,CAAAA,CAAO,CAAA;AAClEnB,QAAAA,SAAAA,EAAWqB,IAAAA,CAAKrB,SAAAA,EAAW,QAAA,EAAUI,KAAAA,CAAMM,IAAI,CAAA;QAC/CY,UAAAA,EAAYC,YAAAA,CAAanB,MAAMM,IAAI,CAAA;QACnCc,IAAAA,EAAM;AAACnB,UAAAA;;AACX,OAAA;AACAD,MAAAA;AACJ,KAAA;EACJ,CAAA,EAzByB,kBAAA,CAAA;AA2BzB,EAAA,MAAMqB,UAAUb,MAAAA,CAAOC,OAAAA,CAAQd,MAAAA,CAAAA,CAAQkB,IAAIf,gBAAAA,CAAAA;AAE3C,EAAA,MAAMwB,eAAeD,OAAAA,CAAQR,GAAAA,CAAI,CAACU,CAAAA,KAAMA,EAAEnB,KAAK,CAAA;AAE/C,EAAA,MAAMoB,cAAAA,GAAiBH,QAClBI,MAAAA,CAAO,CAACC,WAAWA,MAAAA,CAAO1B,KAAAA,CAAM2B,kBAAkBC,MAAAA,CAAAA,CAClDC,QAAQ,CAAC,EAAEzB,OAAOJ,KAAAA,EAAK,KACpBA,MAAM2B,gBAAAA,CAAkBd,GAAAA,CAAI,CAACiB,MAAAA,MAAY;AACrCzB,IAAAA,EAAAA,EAAID,KAAAA,CAAMC,EAAAA;AACVC,IAAAA,IAAAA,EAAMF,KAAAA,CAAME,IAAAA;AACZY,IAAAA,UAAAA,EAAYd,KAAAA,CAAMc,UAAAA;AAClBE,IAAAA,IAAAA,EAAMhB,KAAAA,CAAMgB,IAAAA;AACZU,IAAAA;AACJ,GAAA,CAAA,CAAA,CAAA;AAGR,EAAA,MAAMC,eAAyB,EAAA;AAC/B,EAAA,IAAIlC,mBAAAA,EAAqB;AACrB,IAAA,MAAMmC,cAAAA,GAAiB,IAAIC,GAAAA,CACvBpC,mBAAAA,CAAoBgC,OAAAA,CAAQ,CAACK,KAAAA,KAAU1B,MAAAA,CAAO2B,MAAAA,CAAOD,KAAAA,CAAMvC,MAAM,CAAA,CAAA,CAAA;AAErEoC,IAAAA,YAAAA,CAAaK,IAAAA,CAAI,GAAIJ,cAAAA,CAAAA;AACzB,EAAA;AAEA,EAAA,OAAO;IAAErC,MAAAA,EAAQ2B,YAAAA;AAAcE,IAAAA,cAAAA;AAAgBO,IAAAA;AAAa,GAAA;AAChE,CAAA,EAzDoC,sBAAA","file":"PNCVL7HO.js","sourcesContent":["import { constantCase } from 'es-toolkit';\nimport { join } from 'node:path';\n\nimport { type Image, type VersionCombination } from '../config';\nimport { getImageTag } from '../utils/docker';\nimport { getImageName } from '../utils/finder';\n\ninterface ImageEntry {\n id: string;\n name: string;\n build_args: string[];\n image_name: string;\n tags: string[];\n directory: string;\n}\n\ninterface MirroredImageEntry {\n id: string;\n name: string;\n image_name: string;\n tags: string[];\n mirror: string;\n}\n\ninterface GithubMatrixOutput {\n images: ImageEntry[];\n mirroredImages: MirroredImageEntry[];\n activeImages: string[];\n}\n\nexport const generateGithubMatrix = (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): GithubMatrixOutput => {\n const createImageEntry = ([imageId, image]: [string, Image]): {\n entry: ImageEntry;\n image: Image;\n } => {\n const tag = getImageTag(image);\n\n if (!tag) {\n throw new Error(\n `Image \"${imageId}\" produced no tags. Every image must have at least one non-empty tag.`,\n );\n }\n\n return {\n entry: {\n id: imageId,\n name: image.name,\n build_args: Object.entries({ ...image.versions, ...image.dependencies })\n .sort()\n .map(([key, value]) => `${constantCase(key)}_VERSION=${value}`),\n directory: join(directory, 'docker', image.name),\n image_name: getImageName(image.name),\n tags: [tag],\n },\n image,\n };\n };\n\n const results = Object.entries(images).map(createImageEntry);\n\n const imageEntries = results.map((r) => r.entry);\n\n const mirroredImages = results\n .filter((result) => result.image.mirrorRegistries?.length)\n .flatMap(({ entry, image }) =>\n image.mirrorRegistries!.map((mirror) => ({\n id: entry.id,\n name: entry.name,\n image_name: entry.image_name,\n tags: entry.tags,\n mirror,\n })),\n );\n\n const activeImages: string[] = [];\n if (versionCombinations) {\n const activeImageIds = new Set(\n versionCombinations.flatMap((combo) => Object.values(combo.images)),\n );\n activeImages.push(...activeImageIds);\n }\n\n return { images: imageEntries, mirroredImages, activeImages };\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { findToolVersionsForCombination } from './3XEUJAQB.js';
2
- import { init_esm_shims, __name } from './CWKWODSW.js';
1
+ import { findToolVersionsForCombination } from './X6QPMSID.js';
2
+ import { init_esm_shims, __name } from './TXIQ74D3.js';
3
3
  import { access } from 'fs/promises';
4
4
  import { dirname, join } from 'path';
5
5
 
@@ -33,5 +33,5 @@ var findWorkspaceRoot = /* @__PURE__ */ __name(async (directory) => {
33
33
  }, "findWorkspaceRoot");
34
34
 
35
35
  export { findFileInParentDirectory, findWorkspaceRoot, getCombinationId };
36
- //# sourceMappingURL=UBUQDI5Q.js.map
37
- //# sourceMappingURL=UBUQDI5Q.js.map
36
+ //# sourceMappingURL=PXDULNML.js.map
37
+ //# sourceMappingURL=PXDULNML.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.ts"],"names":["rootFiles","getCombinationId","context","combination","Object","entries","findToolVersionsForCombination","toSorted","flat","join","findFileInParentDirectory","directory","filename","dirname","path","access","_","findWorkspaceRoot","rootFile","Error"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAQA,IAAMA,SAAAA,GAAsB;AAAC,EAAA,qBAAA;AAAuB,EAAA;;AAE7C,IAAMC,mCAAmB,MAAA,CAAA,CAC5BC,OAAAA,EACAC,WAAAA,KAEAC,MAAAA,CAAOC,QAAQC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,CAAAA,EAClDI,QAAAA,EAAQ,CACRC,MAAI,CACJC,IAAAA,CAAK,GAAA,CAAA,EAPkB,kBAAA;AASzB,IAAMC,yBAAAA,mBAA4B,MAAA,CAAA,OACrCC,SAAAA,EACAC,QAAAA,KAAAA;AAEA,EAAA,OAAOD,SAAAA,KAAcE,OAAAA,CAAQF,SAAAA,CAAAA,EAAY;AACrC,IAAA,MAAMG,IAAAA,GAAOL,IAAAA,CAAKE,SAAAA,EAAWC,QAAAA,CAAAA;AAE7B,IAAA,IAAI;AACA,MAAA,MAAMG,OAAOD,IAAAA,CAAAA;AACb,MAAA,OAAOA,IAAAA;AACX,IAAA,CAAA,CAAA,OAASE,CAAAA,EAAG;AAAC,IAAA;AAEbL,IAAAA,SAAAA,GAAYE,QAAQF,SAAAA,CAAAA;AACxB,EAAA;AAEA,EAAA,OAAO,IAAA;AACX,CAAA,EAhByC,2BAAA;AAkBlC,IAAMM,iBAAAA,iCAA2BN,SAAAA,KAAAA;AACpC,EAAA,KAAA,MAAWO,YAAYlB,SAAAA,EAAW;AAC9B,IAAA,MAAMc,IAAAA,GAAO,MAAMJ,yBAAAA,CAA0BC,SAAAA,EAAWO,QAAAA,CAAAA;AAExD,IAAA,IAAIJ,IAAAA,EAAM;AACN,MAAA,OAAOD,QAAQC,IAAAA,CAAAA;AACnB,IAAA;AACJ,EAAA;AAEA,EAAA,MAAM,IAAIK,KAAAA,CAAM,CAAA,yCAAA,EAA4CR,SAAAA,CAAAA,CAAW,CAAA;AAC3E,CAAA,EAViC,mBAAA","file":"UBUQDI5Q.js","sourcesContent":["import { access } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\n\nimport type { VersionCombination } from './config';\nimport type { ChainContext } from './context';\nimport { findToolVersionsForCombination } from './utils/finder';\n\n// TODO Add more root markers when we publish the VM tooling package.\nconst rootFiles: string[] = ['pnpm-workspace.yaml', '.git'];\n\nexport const getCombinationId = <TImageId extends string>(\n context: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): string =>\n Object.entries(findToolVersionsForCombination(context, combination))\n .toSorted()\n .flat()\n .join('-');\n\nexport const findFileInParentDirectory = async (\n directory: string,\n filename: string,\n): Promise<string | null> => {\n while (directory !== dirname(directory)) {\n const path = join(directory, filename);\n\n try {\n await access(path);\n return path;\n } catch (_) {}\n\n directory = dirname(directory);\n }\n\n return null;\n};\n\nexport const findWorkspaceRoot = async (directory: string): Promise<string> => {\n for (const rootFile of rootFiles) {\n const path = await findFileInParentDirectory(directory, rootFile);\n\n if (path) {\n return dirname(path);\n }\n }\n\n throw new Error(`Workspace root not found from directory: ${directory}`);\n};\n"]}
1
+ {"version":3,"sources":["../src/utils.ts"],"names":["rootFiles","getCombinationId","context","combination","Object","entries","findToolVersionsForCombination","toSorted","flat","join","findFileInParentDirectory","directory","filename","dirname","path","access","_","findWorkspaceRoot","rootFile","Error"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAQA,IAAMA,SAAAA,GAAsB;AAAC,EAAA,qBAAA;AAAuB,EAAA;;AAE7C,IAAMC,mCAAmB,MAAA,CAAA,CAC5BC,OAAAA,EACAC,WAAAA,KAEAC,MAAAA,CAAOC,QAAQC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,CAAAA,EAClDI,QAAAA,EAAQ,CACRC,MAAI,CACJC,IAAAA,CAAK,GAAA,CAAA,EAPkB,kBAAA;AASzB,IAAMC,yBAAAA,mBAA4B,MAAA,CAAA,OACrCC,SAAAA,EACAC,QAAAA,KAAAA;AAEA,EAAA,OAAOD,SAAAA,KAAcE,OAAAA,CAAQF,SAAAA,CAAAA,EAAY;AACrC,IAAA,MAAMG,IAAAA,GAAOL,IAAAA,CAAKE,SAAAA,EAAWC,QAAAA,CAAAA;AAE7B,IAAA,IAAI;AACA,MAAA,MAAMG,OAAOD,IAAAA,CAAAA;AACb,MAAA,OAAOA,IAAAA;AACX,IAAA,CAAA,CAAA,OAASE,CAAAA,EAAG;AAAC,IAAA;AAEbL,IAAAA,SAAAA,GAAYE,QAAQF,SAAAA,CAAAA;AACxB,EAAA;AAEA,EAAA,OAAO,IAAA;AACX,CAAA,EAhByC,2BAAA;AAkBlC,IAAMM,iBAAAA,iCAA2BN,SAAAA,KAAAA;AACpC,EAAA,KAAA,MAAWO,YAAYlB,SAAAA,EAAW;AAC9B,IAAA,MAAMc,IAAAA,GAAO,MAAMJ,yBAAAA,CAA0BC,SAAAA,EAAWO,QAAAA,CAAAA;AAExD,IAAA,IAAIJ,IAAAA,EAAM;AACN,MAAA,OAAOD,QAAQC,IAAAA,CAAAA;AACnB,IAAA;AACJ,EAAA;AAEA,EAAA,MAAM,IAAIK,KAAAA,CAAM,CAAA,yCAAA,EAA4CR,SAAAA,CAAAA,CAAW,CAAA;AAC3E,CAAA,EAViC,mBAAA","file":"PXDULNML.js","sourcesContent":["import { access } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\n\nimport type { VersionCombination } from './config';\nimport type { ChainContext } from './context';\nimport { findToolVersionsForCombination } from './utils/finder';\n\n// TODO Add more root markers when we publish the VM tooling package.\nconst rootFiles: string[] = ['pnpm-workspace.yaml', '.git'];\n\nexport const getCombinationId = <TImageId extends string>(\n context: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): string =>\n Object.entries(findToolVersionsForCombination(context, combination))\n .toSorted()\n .flat()\n .join('-');\n\nexport const findFileInParentDirectory = async (\n directory: string,\n filename: string,\n): Promise<string | null> => {\n while (directory !== dirname(directory)) {\n const path = join(directory, filename);\n\n try {\n await access(path);\n return path;\n } catch (_) {}\n\n directory = dirname(directory);\n }\n\n return null;\n};\n\nexport const findWorkspaceRoot = async (directory: string): Promise<string> => {\n for (const rootFile of rootFiles) {\n const path = await findFileInParentDirectory(directory, rootFile);\n\n if (path) {\n return dirname(path);\n }\n }\n\n throw new Error(`Workspace root not found from directory: ${directory}`);\n};\n"]}