@layerzerolabs/vm-tooling 0.2.103 → 0.2.105

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 (66) hide show
  1. package/dist/{P4BHRQMD.js → 2MO4PR4P.js} +2 -2
  2. package/dist/2MO4PR4P.js.map +1 -0
  3. package/dist/DVALPAAO.js +18385 -0
  4. package/dist/DVALPAAO.js.map +1 -0
  5. package/dist/{ZSOVVFOM.js → E35WFC4E.js} +3 -3
  6. package/dist/{ZSOVVFOM.js.map → E35WFC4E.js.map} +1 -1
  7. package/dist/{BTPRTHPR.js → EY2G7NK4.js} +3 -3
  8. package/dist/{BTPRTHPR.js.map → EY2G7NK4.js.map} +1 -1
  9. package/dist/{6V27P6AU.js → GFKRACRT.js} +3 -3
  10. package/dist/{6V27P6AU.js.map → GFKRACRT.js.map} +1 -1
  11. package/dist/GIFXFMSS.js +13 -0
  12. package/dist/GIFXFMSS.js.map +1 -0
  13. package/dist/{UQGPF6NC.js → GMN3ZEOV.js} +14 -6
  14. package/dist/GMN3ZEOV.js.map +1 -0
  15. package/dist/HC7LYTHL.js +53 -0
  16. package/dist/HC7LYTHL.js.map +1 -0
  17. package/dist/{JYJBE36S.js → HN2JUVAX.js} +114 -40
  18. package/dist/HN2JUVAX.js.map +1 -0
  19. package/dist/KN3TRHEZ.js +107 -0
  20. package/dist/KN3TRHEZ.js.map +1 -0
  21. package/dist/{BJUOU4DR.js → TMIYMQW3.js} +27 -9
  22. package/dist/TMIYMQW3.js.map +1 -0
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js +8 -6
  25. package/dist/config.d.ts +15 -1
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +2 -1
  28. package/dist/core/index.d.ts +1 -0
  29. package/dist/core/index.d.ts.map +1 -1
  30. package/dist/core/index.js +7 -5
  31. package/dist/core/local-executor.d.ts +11 -0
  32. package/dist/core/local-executor.d.ts.map +1 -0
  33. package/dist/core/local-executor.js +4 -0
  34. package/dist/core/local-executor.js.map +1 -0
  35. package/dist/core/local-executor.test.js +110 -0
  36. package/dist/core/local-executor.test.js.map +1 -0
  37. package/dist/core/lock.test.js +2 -18360
  38. package/dist/core/lock.test.js.map +1 -1
  39. package/dist/core/tool-executor.d.ts +15 -2
  40. package/dist/core/tool-executor.d.ts.map +1 -1
  41. package/dist/core/tool-executor.js +6 -4
  42. package/dist/core/tool-executor.test.js +180 -0
  43. package/dist/core/tool-executor.test.js.map +1 -0
  44. package/dist/environment.d.ts +4 -0
  45. package/dist/environment.d.ts.map +1 -0
  46. package/dist/environment.js +4 -0
  47. package/dist/environment.js.map +1 -0
  48. package/dist/github/index.js +5 -4
  49. package/dist/github/matrix.js +4 -3
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +11 -9
  53. package/dist/index.js.map +1 -1
  54. package/dist/test.js +4 -3
  55. package/dist/utils/docker.d.ts +30 -3
  56. package/dist/utils/docker.d.ts.map +1 -1
  57. package/dist/utils/docker.js +3 -2
  58. package/dist/utils/docker.test.js +272 -0
  59. package/dist/utils/docker.test.js.map +1 -0
  60. package/package.json +5 -5
  61. package/dist/AXL4SBDJ.js +0 -56
  62. package/dist/AXL4SBDJ.js.map +0 -1
  63. package/dist/BJUOU4DR.js.map +0 -1
  64. package/dist/JYJBE36S.js.map +0 -1
  65. package/dist/P4BHRQMD.js.map +0 -1
  66. package/dist/UQGPF6NC.js.map +0 -1
@@ -0,0 +1,107 @@
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';
4
+ import { join, basename } from 'path';
5
+ import { env } from 'process';
6
+
7
+ // src/utils/docker.ts
8
+ init_esm_shims();
9
+ var resolveDockerPlatform = /* @__PURE__ */ __name((dockerPlatform) => {
10
+ if (!dockerPlatform) {
11
+ return void 0;
12
+ }
13
+ const [, archSegment] = dockerPlatform.split("/");
14
+ const arch = archSegment || dockerPlatform;
15
+ return {
16
+ value: dockerPlatform,
17
+ namespace: dockerPlatform.replace(/\//g, "-"),
18
+ arch
19
+ };
20
+ }, "resolveDockerPlatform");
21
+ var resolveEffectiveDockerPlatformValue = /* @__PURE__ */ __name(({ dockerPlatform, toolDockerPlatform, envDockerPlatform = env.DOCKER_DEFAULT_PLATFORM }) => {
22
+ if (dockerPlatform === DOCKER_PLATFORM_NATIVE) {
23
+ return void 0;
24
+ }
25
+ return dockerPlatform ?? toolDockerPlatform ?? envDockerPlatform;
26
+ }, "resolveEffectiveDockerPlatformValue");
27
+ var resolveDockerPlatformExecution = /* @__PURE__ */ __name((options) => {
28
+ if (options.dockerPlatform === DOCKER_PLATFORM_NATIVE) {
29
+ const { DOCKER_DEFAULT_PLATFORM: _dockerDefaultPlatform, ...processEnv } = env;
30
+ return {
31
+ args: [],
32
+ processEnv,
33
+ volumeNameOptions: {
34
+ dockerPlatform: void 0
35
+ }
36
+ };
37
+ }
38
+ const platform = resolveDockerPlatform(resolveEffectiveDockerPlatformValue(options));
39
+ return {
40
+ platform,
41
+ args: platform ? [
42
+ "--platform",
43
+ platform.value
44
+ ] : [],
45
+ volumeNameOptions: {
46
+ dockerPlatform: platform?.value
47
+ }
48
+ };
49
+ }, "resolveDockerPlatformExecution");
50
+ var findImageForTool = /* @__PURE__ */ __name((context, toolName, version) => {
51
+ const [image] = context.versionCombinations.flatMap((combination) => {
52
+ const imageId = combination.images[toolName];
53
+ if (!imageId) {
54
+ return [];
55
+ }
56
+ const image2 = context.images[imageId];
57
+ return image2 && findToolVersionsForCombination(context, combination)[toolName] === version ? [
58
+ image2
59
+ ] : [];
60
+ });
61
+ if (!image) {
62
+ throw new Error(`No version combination found for tool ${toolName} with version ${version}`);
63
+ }
64
+ return image;
65
+ }, "findImageForTool");
66
+ var getImageUri = /* @__PURE__ */ __name(async (image) => join(await getRegistry(), await getImageDirectory(), `${getImageName(image.name)}:${getImageTag(image)}`), "getImageUri");
67
+ var getImageTag = /* @__PURE__ */ __name(({ versions, patch }) => [
68
+ ...Object.entries(versions).sort().flat(),
69
+ ...patch ? [
70
+ "patch",
71
+ patch
72
+ ] : []
73
+ ].join("-"), "getImageTag");
74
+ var qualifyVolumeName = /* @__PURE__ */ __name((volume, { cacheKey, dockerPlatform } = {
75
+ dockerPlatform: env.DOCKER_DEFAULT_PLATFORM
76
+ }) => {
77
+ if (volume.type !== "isolate") {
78
+ return volume;
79
+ }
80
+ const components = [
81
+ "lz-tooling-cache",
82
+ volume.name
83
+ ];
84
+ if (!volume.shared) {
85
+ if (volume.toolchainKeyed && cacheKey) {
86
+ components.push(cacheKey);
87
+ } else {
88
+ const packageName = env.npm_package_name;
89
+ if (!packageName) {
90
+ throw new Error("npm_package_name environment variable not defined");
91
+ }
92
+ components.push(basename(packageName));
93
+ }
94
+ }
95
+ const platform = resolveDockerPlatform(dockerPlatform);
96
+ if (platform && !volume.architectureIndependent) {
97
+ components.push(platform.namespace);
98
+ }
99
+ return {
100
+ ...volume,
101
+ name: components.join("-")
102
+ };
103
+ }, "qualifyVolumeName");
104
+
105
+ export { findImageForTool, getImageTag, getImageUri, qualifyVolumeName, resolveDockerPlatform, resolveDockerPlatformExecution, resolveEffectiveDockerPlatformValue };
106
+ //# sourceMappingURL=KN3TRHEZ.js.map
107
+ //# sourceMappingURL=KN3TRHEZ.js.map
@@ -0,0 +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,3 +1,4 @@
1
+ import { registry, imageDirectory } from './GIFXFMSS.js';
1
2
  import { init_esm_shims, __name } from './CWKWODSW.js';
2
3
  import { join } from 'path';
3
4
  import * as z from 'zod';
@@ -8,12 +9,10 @@ init_esm_shims();
8
9
  var registryConfigCache;
9
10
  var getRegistryConfig = /* @__PURE__ */ __name(async () => {
10
11
  if (!registryConfigCache) {
11
- const envRegistry = process.env.VM_TOOLING_REGISTRY;
12
- const envImageDirectory = process.env.VM_TOOLING_IMAGE_DIRECTORY;
13
- if (envRegistry && envImageDirectory) {
12
+ if (registry && imageDirectory) {
14
13
  registryConfigCache = {
15
- registry: envRegistry,
16
- imageDirectory: envImageDirectory
14
+ registry,
15
+ imageDirectory
17
16
  };
18
17
  } else {
19
18
  const workspaceRoot = await getFullyQualifiedRepoRootPath();
@@ -24,6 +23,7 @@ var getRegistryConfig = /* @__PURE__ */ __name(async () => {
24
23
  }
25
24
  return registryConfigCache;
26
25
  }, "getRegistryConfig");
26
+ var CARGO_TARGET_CACHE_PATH = "/cargo-target";
27
27
  var volumeMappingBaseSchema = z.object({
28
28
  containerPath: z.string()
29
29
  });
@@ -35,12 +35,30 @@ var isolateVolumeMappingSchema = volumeMappingBaseSchema.extend({
35
35
  type: z.literal("isolate"),
36
36
  name: z.string(),
37
37
  shared: z.optional(z.boolean()),
38
- locked: z.optional(z.boolean())
38
+ locked: z.optional(z.boolean()),
39
+ // Share this cache across packages on the same toolchain instead of per-package. See
40
+ // qualifyVolumeName. Opt-in — omit to keep it package-private.
41
+ toolchainKeyed: z.optional(z.boolean()),
42
+ // Opt out of arch-namespacing for volumes holding no compiled artifacts (config/state).
43
+ // Suffixing is the safe default: under-splitting an arch-sensitive cache poisons it.
44
+ architectureIndependent: z.optional(z.boolean())
39
45
  });
40
46
  var volumeMappingSchema = z.union([
41
47
  hostVolumeMappingSchema,
42
48
  isolateVolumeMappingSchema
43
49
  ]);
50
+ var DOCKER_PLATFORM_VALUES = [
51
+ "linux/amd64",
52
+ "linux/arm64"
53
+ ];
54
+ var DOCKER_PLATFORM_NATIVE = "native";
55
+ var DOCKER_PLATFORM_OVERRIDE_VALUES = [
56
+ DOCKER_PLATFORM_NATIVE,
57
+ ...DOCKER_PLATFORM_VALUES
58
+ ];
59
+ var DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION = DOCKER_PLATFORM_OVERRIDE_VALUES.join(", ");
60
+ var dockerPlatformOverrideValueSet = new Set(DOCKER_PLATFORM_OVERRIDE_VALUES);
61
+ var isDockerPlatformOverride = /* @__PURE__ */ __name((input) => typeof input === "string" && dockerPlatformOverrideValueSet.has(input), "isDockerPlatformOverride");
44
62
  var DockerRegistryMirror = /* @__PURE__ */ (function(DockerRegistryMirror2) {
45
63
  DockerRegistryMirror2["PUBLIC_GAR"] = "public-gar";
46
64
  return DockerRegistryMirror2;
@@ -48,6 +66,6 @@ var DockerRegistryMirror = /* @__PURE__ */ (function(DockerRegistryMirror2) {
48
66
  var getImageDirectory = /* @__PURE__ */ __name(async () => (await getRegistryConfig()).imageDirectory, "getImageDirectory");
49
67
  var getRegistry = /* @__PURE__ */ __name(async () => (await getRegistryConfig()).registry, "getRegistry");
50
68
 
51
- export { DockerRegistryMirror, getImageDirectory, getRegistry, volumeMappingSchema };
52
- //# sourceMappingURL=BJUOU4DR.js.map
53
- //# sourceMappingURL=BJUOU4DR.js.map
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
@@ -0,0 +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"]}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAe1D,KAAK,qBAAqB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,2BAA2B,CAAC,KAC7E,IAAI,CAAC;AA+LV,eAAO,MAAM,MAAM,GAAU,QAAQ,SAAS,MAAM,EAChD,QAAQ,YAAY,CAAC,QAAQ,CAAC,EAC9B,wBAAwB,qBAAqB,KAC9C,OAAO,CAAC,IAAI,CAOd,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAkB1D,KAAK,qBAAqB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,2BAA2B,CAAC,KAC7E,IAAI,CAAC;AAgNV,eAAO,MAAM,MAAM,GAAU,QAAQ,SAAS,MAAM,EAChD,QAAQ,YAAY,CAAC,QAAQ,CAAC,EAC9B,wBAAwB,qBAAqB,KAC9C,OAAO,CAAC,IAAI,CAOd,CAAC"}
package/dist/cli.js CHANGED
@@ -1,16 +1,18 @@
1
- export { runCli } from './UQGPF6NC.js';
1
+ export { runCli } from './GMN3ZEOV.js';
2
2
  import './CAPBDIIE.js';
3
3
  import './QH3FM6DD.js';
4
4
  import './S7YAUZ26.js';
5
- import './P4BHRQMD.js';
6
- import './JYJBE36S.js';
5
+ import './2MO4PR4P.js';
6
+ import './HN2JUVAX.js';
7
7
  import './2XGBQPKA.js';
8
+ import './HC7LYTHL.js';
9
+ import './4SFAVHVD.js';
8
10
  import './6L6NUQMM.js';
9
- import './AXL4SBDJ.js';
10
- import './BJUOU4DR.js';
11
+ import './KN3TRHEZ.js';
12
+ import './TMIYMQW3.js';
13
+ import './GIFXFMSS.js';
11
14
  import './UBUQDI5Q.js';
12
15
  import './3XEUJAQB.js';
13
- import './4SFAVHVD.js';
14
16
  import './CWKWODSW.js';
15
17
  //# sourceMappingURL=cli.js.map
16
18
  //# sourceMappingURL=cli.js.map
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as z from 'zod';
2
2
  import type { ChainContext } from './context';
3
3
  import type { ToolCommandExecutionOptions } from './core/tool-executor';
4
+ export declare const CARGO_TARGET_CACHE_PATH = "/cargo-target";
4
5
  export declare const volumeMappingSchema: z.ZodUnion<readonly [z.ZodObject<{
5
6
  containerPath: z.ZodString;
6
7
  type: z.ZodLiteral<"host">;
@@ -11,23 +12,36 @@ export declare const volumeMappingSchema: z.ZodUnion<readonly [z.ZodObject<{
11
12
  name: z.ZodString;
12
13
  shared: z.ZodOptional<z.ZodBoolean>;
13
14
  locked: z.ZodOptional<z.ZodBoolean>;
15
+ toolchainKeyed: z.ZodOptional<z.ZodBoolean>;
16
+ architectureIndependent: z.ZodOptional<z.ZodBoolean>;
14
17
  }, z.core.$strip>]>;
15
18
  export type VolumeMapping = z.infer<typeof volumeMappingSchema>;
16
19
  export interface EnvironmentVariable {
17
20
  name: string;
18
21
  value: string;
19
22
  }
23
+ export declare const DOCKER_PLATFORM_VALUES: readonly ["linux/amd64", "linux/arm64"];
24
+ export declare const DOCKER_PLATFORM_NATIVE = "native";
25
+ export declare const DOCKER_PLATFORM_OVERRIDE_VALUES: readonly ["native", "linux/amd64", "linux/arm64"];
26
+ export declare const DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION: string;
27
+ export type DockerPlatformValue = (typeof DOCKER_PLATFORM_VALUES)[number];
28
+ export type DockerPlatformOverride = (typeof DOCKER_PLATFORM_OVERRIDE_VALUES)[number];
29
+ export declare const isDockerPlatformOverride: (input: unknown) => input is DockerPlatformOverride;
20
30
  export interface Tool {
21
31
  name: string;
22
32
  privileged?: boolean;
33
+ dockerPlatform?: DockerPlatformValue;
23
34
  defaultVolumes?: readonly VolumeMapping[];
24
35
  defaultEnv?: readonly EnvironmentVariable[];
25
36
  getSecondaryVersion?: (args: {
26
37
  cwd: string;
27
38
  }) => Promise<string>;
39
+ getLocalVersion?: (args: {
40
+ cwd: string;
41
+ }) => Promise<string>;
28
42
  preExecute?: (context: ChainContext<string>, options: ToolCommandExecutionOptions) => Promise<void>;
29
43
  }
30
- export declare enum DockerRegistryMirror {
44
+ export declare const enum DockerRegistryMirror {
31
45
  PUBLIC_GAR = "public-gar"
32
46
  }
33
47
  export interface Image {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAiDxE,eAAO,MAAM,mBAAmB;;;;;;;;;;mBAAiE,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAG1C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAG5C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAGjE,UAAU,CAAC,EAAE,CACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,2BAA2B,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,oBAAY,oBAAoB;IAC5B,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,uBAAyD,CAAC;AACxF,eAAO,MAAM,WAAW,uBAAmD,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAqCxE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAwBvD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;mBAAiE,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,eAAO,MAAM,sBAAsB,yCAA0C,CAAC;AAC9E,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,+BAA+B,mDAGlC,CAAC;AACX,eAAO,MAAM,2CAA2C,QACV,CAAC;AAI/C,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtF,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,sBACO,CAAC;AAE3E,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAGrC,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAG1C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAG5C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAG7D,UAAU,CAAC,EAAE,CACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,2BAA2B,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,0BAAkB,oBAAoB;IAClC,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,uBAAyD,CAAC;AACxF,eAAO,MAAM,WAAW,uBAAmD,CAAC"}
package/dist/config.js CHANGED
@@ -1,4 +1,5 @@
1
- export { DockerRegistryMirror, getImageDirectory, getRegistry, volumeMappingSchema } from './BJUOU4DR.js';
1
+ 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 } from './TMIYMQW3.js';
2
+ import './GIFXFMSS.js';
2
3
  import './CWKWODSW.js';
3
4
  //# sourceMappingURL=config.js.map
4
5
  //# sourceMappingURL=config.js.map
@@ -1,3 +1,4 @@
1
+ export * from './local-executor';
1
2
  export * from './tool-executor';
2
3
  export * from './version-resolver';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
@@ -1,12 +1,14 @@
1
- import '../P4BHRQMD.js';
2
- export { executeToolCommand } from '../JYJBE36S.js';
1
+ import '../2MO4PR4P.js';
2
+ export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../HN2JUVAX.js';
3
3
  import '../2XGBQPKA.js';
4
+ export { executeLocally } from '../HC7LYTHL.js';
5
+ import '../4SFAVHVD.js';
4
6
  export { resolveTypeVersions } from '../6L6NUQMM.js';
5
- import '../AXL4SBDJ.js';
6
- import '../BJUOU4DR.js';
7
+ import '../KN3TRHEZ.js';
8
+ import '../TMIYMQW3.js';
9
+ import '../GIFXFMSS.js';
7
10
  import '../UBUQDI5Q.js';
8
11
  import '../3XEUJAQB.js';
9
- import '../4SFAVHVD.js';
10
12
  import '../CWKWODSW.js';
11
13
  //# sourceMappingURL=index.js.map
12
14
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ import { type ProcessOutput } from 'zx';
2
+ import type { EnvironmentVariable, Tool } from '../config';
3
+ interface LocalExecutionOptions {
4
+ cwd: string;
5
+ args: string[];
6
+ env: readonly EnvironmentVariable[];
7
+ script?: string;
8
+ }
9
+ export declare const executeLocally: (tool: Tool, resolvedVersion: string, { cwd, args, env, script }: LocalExecutionOptions) => Promise<ProcessOutput>;
10
+ export {};
11
+ //# sourceMappingURL=local-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-executor.d.ts","sourceRoot":"","sources":["../../src/core/local-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3D,UAAU,qBAAqB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,GACvB,MAAM,IAAI,EACV,iBAAiB,MAAM,EACvB,4BAA4B,qBAAqB,KAClD,OAAO,CAAC,aAAa,CAsCvB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { executeLocally } from '../HC7LYTHL.js';
2
+ import '../CWKWODSW.js';
3
+ //# sourceMappingURL=local-executor.js.map
4
+ //# sourceMappingURL=local-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"local-executor.js"}
@@ -0,0 +1,110 @@
1
+ import { describe, it, globalExpect } from '../DVALPAAO.js';
2
+ import { executeLocally } from '../HC7LYTHL.js';
3
+ import { init_esm_shims, __name } from '../CWKWODSW.js';
4
+ import process from 'process';
5
+
6
+ // src/core/local-executor.test.ts
7
+ init_esm_shims();
8
+ describe(executeLocally, () => {
9
+ const cwd = process.cwd();
10
+ it("throws when the tool does not support local execution", async () => {
11
+ const tool = {
12
+ name: "forge"
13
+ };
14
+ await globalExpect(executeLocally(tool, "1.0.0", {
15
+ cwd,
16
+ args: [],
17
+ env: []
18
+ })).rejects.toThrowError(/not supported/);
19
+ });
20
+ it("throws when the local version does not match", async () => {
21
+ const tool = {
22
+ name: "forge",
23
+ getLocalVersion: /* @__PURE__ */ __name(async () => "1.0.0", "getLocalVersion")
24
+ };
25
+ await globalExpect(executeLocally(tool, "2.0.0", {
26
+ cwd,
27
+ args: [],
28
+ env: []
29
+ })).rejects.toThrowError(/does not match the required version/);
30
+ });
31
+ it("propagates the error raised while probing the local version", async () => {
32
+ const tool = {
33
+ name: "forge",
34
+ getLocalVersion: /* @__PURE__ */ __name(async () => {
35
+ throw new Error("forge is not installed locally");
36
+ }, "getLocalVersion")
37
+ };
38
+ await globalExpect(executeLocally(tool, "1.0.0", {
39
+ cwd,
40
+ args: [],
41
+ env: []
42
+ })).rejects.toThrowError(/not installed locally/);
43
+ });
44
+ it("runs the host tool when the version matches", async () => {
45
+ const tool = {
46
+ name: "node",
47
+ getLocalVersion: /* @__PURE__ */ __name(async () => "1.0.0", "getLocalVersion")
48
+ };
49
+ const output = await executeLocally(tool, "1.0.0", {
50
+ cwd,
51
+ args: [
52
+ "-e",
53
+ 'process.stdout.write("ran")'
54
+ ],
55
+ env: []
56
+ });
57
+ globalExpect(output.exitCode).toBe(0);
58
+ globalExpect(output.stdout).toContain("ran");
59
+ });
60
+ it("passes custom environment variables to the host tool", async () => {
61
+ const tool = {
62
+ name: "node",
63
+ getLocalVersion: /* @__PURE__ */ __name(async () => "1.0.0", "getLocalVersion")
64
+ };
65
+ const output = await executeLocally(tool, "1.0.0", {
66
+ cwd,
67
+ args: [
68
+ "-e",
69
+ 'process.stdout.write(process.env.LZ_LOCAL_TEST ?? "")'
70
+ ],
71
+ env: [
72
+ {
73
+ name: "LZ_LOCAL_TEST",
74
+ value: "present"
75
+ }
76
+ ]
77
+ });
78
+ globalExpect(output.stdout).toContain("present");
79
+ });
80
+ it("runs a custom script via bash without prefixing the tool name", async () => {
81
+ const tool = {
82
+ name: "node",
83
+ getLocalVersion: /* @__PURE__ */ __name(async () => "1.0.0", "getLocalVersion")
84
+ };
85
+ const output = await executeLocally(tool, "1.0.0", {
86
+ cwd,
87
+ args: [],
88
+ env: [],
89
+ script: "printf scripted"
90
+ });
91
+ globalExpect(output.exitCode).toBe(0);
92
+ globalExpect(output.stdout).toContain("scripted");
93
+ });
94
+ it("throws when the host tool exits with a non-zero code", async () => {
95
+ const tool = {
96
+ name: "node",
97
+ getLocalVersion: /* @__PURE__ */ __name(async () => "1.0.0", "getLocalVersion")
98
+ };
99
+ await globalExpect(executeLocally(tool, "1.0.0", {
100
+ cwd,
101
+ args: [
102
+ "-e",
103
+ "process.exit(2)"
104
+ ],
105
+ env: []
106
+ })).rejects.toThrowError(/exit code: 2/);
107
+ });
108
+ });
109
+ //# sourceMappingURL=local-executor.test.js.map
110
+ //# sourceMappingURL=local-executor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/local-executor.test.ts"],"names":["describe","executeLocally","cwd","process","it","tool","name","expect","args","env","rejects","toThrowError","getLocalVersion","Error","output","exitCode","toBe","stdout","toContain","value","script"],"mappings":"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","file":"local-executor.test.js","sourcesContent":["import process from 'node:process';\nimport { describe, expect, it } from 'vitest';\n\nimport type { Tool } from '../config';\nimport { executeLocally } from './local-executor';\n\ndescribe(executeLocally, () => {\n const cwd = process.cwd();\n\n it('throws when the tool does not support local execution', async () => {\n const tool: Tool = { name: 'forge' };\n\n await expect(\n executeLocally(tool, '1.0.0', { cwd, args: [], env: [] }),\n ).rejects.toThrowError(/not supported/);\n });\n\n it('throws when the local version does not match', async () => {\n const tool: Tool = { name: 'forge', getLocalVersion: async () => '1.0.0' };\n\n await expect(\n executeLocally(tool, '2.0.0', { cwd, args: [], env: [] }),\n ).rejects.toThrowError(/does not match the required version/);\n });\n\n it('propagates the error raised while probing the local version', async () => {\n const tool: Tool = {\n name: 'forge',\n getLocalVersion: async () => {\n throw new Error('forge is not installed locally');\n },\n };\n\n await expect(\n executeLocally(tool, '1.0.0', { cwd, args: [], env: [] }),\n ).rejects.toThrowError(/not installed locally/);\n });\n\n it('runs the host tool when the version matches', async () => {\n const tool: Tool = { name: 'node', getLocalVersion: async () => '1.0.0' };\n\n const output = await executeLocally(tool, '1.0.0', {\n cwd,\n args: ['-e', 'process.stdout.write(\"ran\")'],\n env: [],\n });\n\n expect(output.exitCode).toBe(0);\n expect(output.stdout).toContain('ran');\n });\n\n it('passes custom environment variables to the host tool', async () => {\n const tool: Tool = { name: 'node', getLocalVersion: async () => '1.0.0' };\n\n const output = await executeLocally(tool, '1.0.0', {\n cwd,\n args: ['-e', 'process.stdout.write(process.env.LZ_LOCAL_TEST ?? \"\")'],\n env: [{ name: 'LZ_LOCAL_TEST', value: 'present' }],\n });\n\n expect(output.stdout).toContain('present');\n });\n\n it('runs a custom script via bash without prefixing the tool name', async () => {\n const tool: Tool = { name: 'node', getLocalVersion: async () => '1.0.0' };\n\n const output = await executeLocally(tool, '1.0.0', {\n cwd,\n args: [],\n env: [],\n script: 'printf scripted',\n });\n\n expect(output.exitCode).toBe(0);\n expect(output.stdout).toContain('scripted');\n });\n\n it('throws when the host tool exits with a non-zero code', async () => {\n const tool: Tool = { name: 'node', getLocalVersion: async () => '1.0.0' };\n\n await expect(\n executeLocally(tool, '1.0.0', {\n cwd,\n args: ['-e', 'process.exit(2)'],\n env: [],\n }),\n ).rejects.toThrowError(/exit code: 2/);\n });\n});\n"]}