@layerzerolabs/vm-tooling 0.2.104 → 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 (54) hide show
  1. package/dist/{5PWUQUE5.js → DVALPAAO.js} +25 -3
  2. package/dist/DVALPAAO.js.map +1 -0
  3. package/dist/{3IQB2ZZF.js → E35WFC4E.js} +3 -3
  4. package/dist/{3IQB2ZZF.js.map → E35WFC4E.js.map} +1 -1
  5. package/dist/{TMKE5ARZ.js → EY2G7NK4.js} +3 -3
  6. package/dist/{TMKE5ARZ.js.map → EY2G7NK4.js.map} +1 -1
  7. package/dist/{SQYDOF2V.js → GFKRACRT.js} +3 -3
  8. package/dist/{SQYDOF2V.js.map → GFKRACRT.js.map} +1 -1
  9. package/dist/GIFXFMSS.js +13 -0
  10. package/dist/GIFXFMSS.js.map +1 -0
  11. package/dist/{TSEHDOF7.js → GMN3ZEOV.js} +14 -6
  12. package/dist/GMN3ZEOV.js.map +1 -0
  13. package/dist/{INYD2E56.js → HN2JUVAX.js} +94 -29
  14. package/dist/HN2JUVAX.js.map +1 -0
  15. package/dist/KN3TRHEZ.js +107 -0
  16. package/dist/KN3TRHEZ.js.map +1 -0
  17. package/dist/{HOFCGMNS.js → TMIYMQW3.js} +27 -9
  18. package/dist/TMIYMQW3.js.map +1 -0
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +6 -5
  21. package/dist/config.d.ts +12 -1
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +2 -1
  24. package/dist/core/index.js +5 -4
  25. package/dist/core/local-executor.test.js +1 -1
  26. package/dist/core/lock.test.js +1 -1
  27. package/dist/core/tool-executor.d.ts +14 -2
  28. package/dist/core/tool-executor.d.ts.map +1 -1
  29. package/dist/core/tool-executor.js +5 -4
  30. package/dist/core/tool-executor.test.js +180 -0
  31. package/dist/core/tool-executor.test.js.map +1 -0
  32. package/dist/environment.d.ts +4 -0
  33. package/dist/environment.d.ts.map +1 -0
  34. package/dist/environment.js +4 -0
  35. package/dist/environment.js.map +1 -0
  36. package/dist/github/index.js +5 -4
  37. package/dist/github/matrix.js +4 -3
  38. package/dist/index.d.ts +2 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +9 -8
  41. package/dist/index.js.map +1 -1
  42. package/dist/test.js +4 -3
  43. package/dist/utils/docker.d.ts +30 -3
  44. package/dist/utils/docker.d.ts.map +1 -1
  45. package/dist/utils/docker.js +3 -2
  46. package/dist/utils/docker.test.js +272 -0
  47. package/dist/utils/docker.test.js.map +1 -0
  48. package/package.json +5 -5
  49. package/dist/5PWUQUE5.js.map +0 -1
  50. package/dist/HOFCGMNS.js.map +0 -1
  51. package/dist/INYD2E56.js.map +0 -1
  52. package/dist/RVVZQC34.js +0 -56
  53. package/dist/RVVZQC34.js.map +0 -1
  54. package/dist/TSEHDOF7.js.map +0 -1
package/dist/test.js CHANGED
@@ -1,6 +1,7 @@
1
- export { testTools } from './TMKE5ARZ.js';
2
- import './RVVZQC34.js';
3
- import './HOFCGMNS.js';
1
+ export { testTools } from './EY2G7NK4.js';
2
+ import './KN3TRHEZ.js';
3
+ import './TMIYMQW3.js';
4
+ import './GIFXFMSS.js';
4
5
  import './3XEUJAQB.js';
5
6
  import './CWKWODSW.js';
6
7
  //# sourceMappingURL=test.js.map
@@ -1,7 +1,34 @@
1
- import type { Image, VolumeMapping } from '../config';
1
+ import type { DockerPlatformOverride, DockerPlatformValue, Image, VolumeMapping } from '../config';
2
2
  import type { ChainContext } from '../context';
3
- export declare const getImageUriForTool: <TImageId extends string>(context: ChainContext<TImageId>, toolName: string, version: string) => Promise<string>;
3
+ export interface DockerPlatform {
4
+ /** Raw value, e.g. `linux/amd64`, for Docker `--platform`. */
5
+ value: string;
6
+ /** Filesystem-safe token for cache volume names, e.g. `linux-amd64`. */
7
+ namespace: string;
8
+ /** Architecture as `docker inspect --format {{.Architecture}}` reports it, e.g. `amd64`. */
9
+ arch: string;
10
+ }
11
+ export type DockerProcessEnv = Record<string, string | undefined>;
12
+ export interface QualifyVolumeNameOptions {
13
+ cacheKey?: string;
14
+ dockerPlatform?: string;
15
+ }
16
+ export interface DockerPlatformResolutionOptions {
17
+ dockerPlatform?: DockerPlatformOverride;
18
+ toolDockerPlatform?: DockerPlatformValue;
19
+ envDockerPlatform?: string;
20
+ }
21
+ export interface DockerPlatformExecution {
22
+ platform?: DockerPlatform;
23
+ args: string[];
24
+ processEnv?: DockerProcessEnv;
25
+ volumeNameOptions: QualifyVolumeNameOptions;
26
+ }
27
+ export declare const resolveDockerPlatform: (dockerPlatform?: string) => DockerPlatform | undefined;
28
+ export declare const resolveEffectiveDockerPlatformValue: ({ dockerPlatform, toolDockerPlatform, envDockerPlatform, }: DockerPlatformResolutionOptions) => string | undefined;
29
+ export declare const resolveDockerPlatformExecution: (options: DockerPlatformResolutionOptions) => DockerPlatformExecution;
30
+ export declare const findImageForTool: <TImageId extends string>(context: ChainContext<TImageId>, toolName: string, version: string) => Image;
4
31
  export declare const getImageUri: (image: Image) => Promise<string>;
5
32
  export declare const getImageTag: ({ versions, patch }: Image) => string;
6
- export declare const qualifyVolumeName: (volume: VolumeMapping) => VolumeMapping;
33
+ export declare const qualifyVolumeName: (volume: VolumeMapping, { cacheKey, dockerPlatform }?: QualifyVolumeNameOptions) => VolumeMapping;
7
34
  //# sourceMappingURL=docker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/utils/docker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,kBAAkB,GAAU,QAAQ,SAAS,MAAM,EAC5D,SAAS,YAAY,CAAC,QAAQ,CAAC,EAC/B,UAAU,MAAM,EAChB,SAAS,MAAM,KAChB,OAAO,CAAC,MAAM,CAsBhB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,OAAO,KAAK,KAAG,OAAO,CAAC,MAAM,CAK1D,CAAC;AAEN,eAAO,MAAM,WAAW,GAAI,qBAAqB,KAAK,KAAG,MACoC,CAAC;AAE9F,eAAO,MAAM,iBAAiB,GAAI,QAAQ,aAAa,KAAG,aAmBzD,CAAC"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/utils/docker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,cAAc;IAC3B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC5C,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,EAAE,wBAAwB,CAAC;CAC/C;AAED,eAAO,MAAM,qBAAqB,GAAI,iBAAiB,MAAM,KAAG,cAAc,GAAG,SAahF,CAAC;AAQF,eAAO,MAAM,mCAAmC,GAAI,4DAIjD,+BAA+B,KAAG,MAAM,GAAG,SAM7C,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,SAAS,+BAA+B,KACzC,uBAoBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,MAAM,EACpD,SAAS,YAAY,CAAC,QAAQ,CAAC,EAC/B,UAAU,MAAM,EAChB,SAAS,MAAM,KAChB,KAsBF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,OAAO,KAAK,KAAG,OAAO,CAAC,MAAM,CAK1D,CAAC;AAEN,eAAO,MAAM,WAAW,GAAI,qBAAqB,KAAK,KAAG,MACoC,CAAC;AAE9F,eAAO,MAAM,iBAAiB,GAC1B,QAAQ,aAAa,EACrB,+BAA8B,wBAE7B,KACF,aA6BF,CAAC"}
@@ -1,5 +1,6 @@
1
- export { getImageTag, getImageUri, getImageUriForTool, qualifyVolumeName } from '../RVVZQC34.js';
2
- import '../HOFCGMNS.js';
1
+ export { findImageForTool, getImageTag, getImageUri, qualifyVolumeName, resolveDockerPlatform, resolveDockerPlatformExecution, resolveEffectiveDockerPlatformValue } from '../KN3TRHEZ.js';
2
+ import '../TMIYMQW3.js';
3
+ import '../GIFXFMSS.js';
3
4
  import '../3XEUJAQB.js';
4
5
  import '../CWKWODSW.js';
5
6
  //# sourceMappingURL=docker.js.map
@@ -0,0 +1,272 @@
1
+ import { describe, afterEach, it, globalExpect, beforeEach } from '../DVALPAAO.js';
2
+ import { resolveDockerPlatform, resolveEffectiveDockerPlatformValue, resolveDockerPlatformExecution, qualifyVolumeName } from '../KN3TRHEZ.js';
3
+ import { isDockerPlatformOverride } from '../TMIYMQW3.js';
4
+ import '../GIFXFMSS.js';
5
+ import '../3XEUJAQB.js';
6
+ import { init_esm_shims, __name } from '../CWKWODSW.js';
7
+
8
+ // src/utils/docker.test.ts
9
+ init_esm_shims();
10
+ var TAG = "agave-2.1.0-anchor-0.31.1";
11
+ var qualifiedName = /* @__PURE__ */ __name((volume, options) => {
12
+ const result = qualifyVolumeName(volume, options);
13
+ if (result.type !== "isolate") {
14
+ throw new Error("expected an isolate volume");
15
+ }
16
+ return result.name;
17
+ }, "qualifiedName");
18
+ describe("Docker platform helpers", () => {
19
+ const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;
20
+ afterEach(() => {
21
+ if (originalDockerDefaultPlatform === void 0) {
22
+ delete process.env.DOCKER_DEFAULT_PLATFORM;
23
+ } else {
24
+ process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;
25
+ }
26
+ });
27
+ it.sequential("validates supported Docker platform overrides from one source of truth", () => {
28
+ globalExpect(isDockerPlatformOverride("native")).toBe(true);
29
+ globalExpect(isDockerPlatformOverride("linux/amd64")).toBe(true);
30
+ globalExpect(isDockerPlatformOverride("linux/arm64")).toBe(true);
31
+ globalExpect(isDockerPlatformOverride(null)).toBe(false);
32
+ globalExpect(isDockerPlatformOverride(void 0)).toBe(false);
33
+ globalExpect(isDockerPlatformOverride("")).toBe(false);
34
+ globalExpect(isDockerPlatformOverride("linux/arm/v7")).toBe(false);
35
+ });
36
+ it.sequential("resolves a Docker platform into Docker and cache-name forms", () => {
37
+ globalExpect(resolveDockerPlatform("linux/amd64")).toEqual({
38
+ value: "linux/amd64",
39
+ namespace: "linux-amd64",
40
+ arch: "amd64"
41
+ });
42
+ });
43
+ it.sequential("matches Docker arch parsing for multi-segment platform values", () => {
44
+ globalExpect(resolveDockerPlatform("linux/arm/v7")).toEqual({
45
+ value: "linux/arm/v7",
46
+ namespace: "linux-arm-v7",
47
+ arch: "arm"
48
+ });
49
+ });
50
+ it.sequential("resolves the effective platform with CLI override first", () => {
51
+ globalExpect(resolveEffectiveDockerPlatformValue({
52
+ dockerPlatform: "linux/arm64",
53
+ toolDockerPlatform: "linux/amd64",
54
+ envDockerPlatform: "linux/amd64"
55
+ })).toBe("linux/arm64");
56
+ });
57
+ it.sequential("lets native override skip tool and env platform fallbacks", () => {
58
+ globalExpect(resolveEffectiveDockerPlatformValue({
59
+ dockerPlatform: "native",
60
+ toolDockerPlatform: "linux/amd64",
61
+ envDockerPlatform: "linux/arm64"
62
+ })).toBeUndefined();
63
+ });
64
+ it.sequential("uses the tool platform before the env fallback", () => {
65
+ globalExpect(resolveEffectiveDockerPlatformValue({
66
+ toolDockerPlatform: "linux/amd64",
67
+ envDockerPlatform: "linux/arm64"
68
+ })).toBe("linux/amd64");
69
+ });
70
+ it.sequential("resolves native execution by clearing Docker default platform", () => {
71
+ process.env.DOCKER_DEFAULT_PLATFORM = "linux/amd64";
72
+ const execution = resolveDockerPlatformExecution({
73
+ dockerPlatform: "native",
74
+ toolDockerPlatform: "linux/amd64"
75
+ });
76
+ globalExpect(execution.platform).toBeUndefined();
77
+ globalExpect(execution.args).toEqual([]);
78
+ globalExpect(execution.processEnv?.DOCKER_DEFAULT_PLATFORM).toBeUndefined();
79
+ globalExpect(execution.volumeNameOptions).toEqual({
80
+ dockerPlatform: void 0
81
+ });
82
+ });
83
+ it.sequential("resolves pinned execution into one platform context", () => {
84
+ globalExpect(resolveDockerPlatformExecution({
85
+ dockerPlatform: "linux/arm64",
86
+ toolDockerPlatform: "linux/amd64"
87
+ })).toEqual({
88
+ platform: {
89
+ value: "linux/arm64",
90
+ namespace: "linux-arm64",
91
+ arch: "arm64"
92
+ },
93
+ args: [
94
+ "--platform",
95
+ "linux/arm64"
96
+ ],
97
+ volumeNameOptions: {
98
+ dockerPlatform: "linux/arm64"
99
+ }
100
+ });
101
+ });
102
+ });
103
+ describe(qualifyVolumeName, () => {
104
+ const originalPackageName = process.env.npm_package_name;
105
+ const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;
106
+ beforeEach(() => {
107
+ process.env.npm_package_name = "@layerzerolabs/oft-solana";
108
+ delete process.env.DOCKER_DEFAULT_PLATFORM;
109
+ });
110
+ afterEach(() => {
111
+ if (originalPackageName === void 0) {
112
+ delete process.env.npm_package_name;
113
+ } else {
114
+ process.env.npm_package_name = originalPackageName;
115
+ }
116
+ if (originalDockerDefaultPlatform === void 0) {
117
+ delete process.env.DOCKER_DEFAULT_PLATFORM;
118
+ } else {
119
+ process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;
120
+ }
121
+ });
122
+ const isolateVolume = {
123
+ type: "isolate",
124
+ containerPath: "/usr/local/cargo",
125
+ name: "solana-cargo"
126
+ };
127
+ it.sequential("leaves host volumes untouched even when cache and platform options are supplied", () => {
128
+ const volume = {
129
+ type: "host",
130
+ containerPath: "/var/run/docker.sock",
131
+ hostPath: "/var/run/docker.sock"
132
+ };
133
+ globalExpect(qualifyVolumeName(volume, {
134
+ cacheKey: TAG,
135
+ dockerPlatform: "linux/amd64"
136
+ })).toEqual(volume);
137
+ });
138
+ it.sequential("keeps shared volumes package-agnostic and toolchain-agnostic", () => {
139
+ const volume = {
140
+ type: "isolate",
141
+ containerPath: "/home/app/.move",
142
+ name: "sui",
143
+ shared: true
144
+ };
145
+ globalExpect(qualifiedName(volume, {
146
+ cacheKey: TAG
147
+ })).toBe("lz-tooling-cache-sui");
148
+ globalExpect(qualifiedName({
149
+ ...volume,
150
+ toolchainKeyed: true
151
+ }, {
152
+ cacheKey: TAG
153
+ })).toBe("lz-tooling-cache-sui");
154
+ });
155
+ it.sequential("keys a toolchainKeyed volume by the toolchain tag, not the package", () => {
156
+ globalExpect(qualifiedName({
157
+ ...isolateVolume,
158
+ locked: true,
159
+ toolchainKeyed: true
160
+ }, {
161
+ cacheKey: TAG
162
+ })).toBe(`lz-tooling-cache-solana-cargo-${TAG}`);
163
+ });
164
+ it.sequential("keeps a non-opted-in volume package-private even when a cache key is available", () => {
165
+ const volume = {
166
+ type: "isolate",
167
+ containerPath: "/root/.move",
168
+ name: "aptos",
169
+ locked: true
170
+ };
171
+ globalExpect(qualifiedName(volume, {
172
+ cacheKey: TAG
173
+ })).toBe("lz-tooling-cache-aptos-oft-solana");
174
+ });
175
+ it.sequential("falls back to package-private when a toolchainKeyed volume has no cache key", () => {
176
+ globalExpect(qualifiedName({
177
+ ...isolateVolume,
178
+ toolchainKeyed: true
179
+ })).toBe("lz-tooling-cache-solana-cargo-oft-solana");
180
+ });
181
+ it.sequential("throws when no cache key is usable and the package name is absent", () => {
182
+ delete process.env.npm_package_name;
183
+ globalExpect(() => qualifyVolumeName(isolateVolume)).toThrow("npm_package_name");
184
+ });
185
+ it.sequential("preserves existing isolate volume names when no platform is pinned", () => {
186
+ globalExpect(qualifyVolumeName(isolateVolume)).toMatchObject({
187
+ name: "lz-tooling-cache-solana-cargo-oft-solana"
188
+ });
189
+ });
190
+ it.sequential("suffixes isolate volume names with the pinned amd64 platform", () => {
191
+ globalExpect(qualifyVolumeName(isolateVolume, {
192
+ dockerPlatform: "linux/amd64"
193
+ })).toMatchObject({
194
+ name: "lz-tooling-cache-solana-cargo-oft-solana-linux-amd64"
195
+ });
196
+ });
197
+ it.sequential("uses different isolate volume names for different pinned platforms", () => {
198
+ const amd64 = qualifyVolumeName(isolateVolume, {
199
+ dockerPlatform: "linux/amd64"
200
+ });
201
+ const arm64 = qualifyVolumeName(isolateVolume, {
202
+ dockerPlatform: "linux/arm64"
203
+ });
204
+ globalExpect(amd64).toMatchObject({
205
+ name: "lz-tooling-cache-solana-cargo-oft-solana-linux-amd64"
206
+ });
207
+ globalExpect(arm64).toMatchObject({
208
+ name: "lz-tooling-cache-solana-cargo-oft-solana-linux-arm64"
209
+ });
210
+ });
211
+ it.sequential("uses DOCKER_DEFAULT_PLATFORM when no explicit platform is passed", () => {
212
+ process.env.DOCKER_DEFAULT_PLATFORM = "linux/amd64";
213
+ globalExpect(qualifyVolumeName(isolateVolume)).toMatchObject({
214
+ name: "lz-tooling-cache-solana-cargo-oft-solana-linux-amd64"
215
+ });
216
+ });
217
+ it.sequential("does not use DOCKER_DEFAULT_PLATFORM when an explicit undefined platform is passed", () => {
218
+ process.env.DOCKER_DEFAULT_PLATFORM = "linux/amd64";
219
+ globalExpect(qualifyVolumeName(isolateVolume, {
220
+ dockerPlatform: void 0
221
+ })).toMatchObject({
222
+ name: "lz-tooling-cache-solana-cargo-oft-solana"
223
+ });
224
+ });
225
+ it.sequential("keeps distinct ARM platform variants in distinct cache names", () => {
226
+ process.env.DOCKER_DEFAULT_PLATFORM = "linux/arm/v6";
227
+ const v6 = qualifyVolumeName({
228
+ ...isolateVolume,
229
+ shared: true
230
+ });
231
+ process.env.DOCKER_DEFAULT_PLATFORM = "linux/arm/v7";
232
+ const v7 = qualifyVolumeName({
233
+ ...isolateVolume,
234
+ shared: true
235
+ });
236
+ globalExpect(v6).toMatchObject({
237
+ name: "lz-tooling-cache-solana-cargo-linux-arm-v6"
238
+ });
239
+ globalExpect(v7).toMatchObject({
240
+ name: "lz-tooling-cache-solana-cargo-linux-arm-v7"
241
+ });
242
+ });
243
+ it.sequential("does not suffix architecture-independent isolate volumes", () => {
244
+ globalExpect(qualifyVolumeName({
245
+ ...isolateVolume,
246
+ shared: true,
247
+ architectureIndependent: true
248
+ }, {
249
+ dockerPlatform: "linux/amd64"
250
+ })).toMatchObject({
251
+ name: "lz-tooling-cache-solana-cargo"
252
+ });
253
+ });
254
+ it.sequential("preserves shared volume naming while still platform-isolating it", () => {
255
+ const sharedVolume = {
256
+ type: "isolate",
257
+ containerPath: "/shared",
258
+ name: "shared-state",
259
+ shared: true
260
+ };
261
+ globalExpect(qualifyVolumeName(sharedVolume)).toMatchObject({
262
+ name: "lz-tooling-cache-shared-state"
263
+ });
264
+ globalExpect(qualifyVolumeName(sharedVolume, {
265
+ dockerPlatform: "linux/amd64"
266
+ })).toMatchObject({
267
+ name: "lz-tooling-cache-shared-state-linux-amd64"
268
+ });
269
+ });
270
+ });
271
+ //# sourceMappingURL=docker.test.js.map
272
+ //# sourceMappingURL=docker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/docker.test.ts"],"names":["TAG","qualifiedName","volume","options","result","qualifyVolumeName","type","Error","name","describe","originalDockerDefaultPlatform","process","env","DOCKER_DEFAULT_PLATFORM","afterEach","undefined","it","sequential","expect","isDockerPlatformOverride","toBe","resolveDockerPlatform","toEqual","value","namespace","arch","resolveEffectiveDockerPlatformValue","dockerPlatform","toolDockerPlatform","envDockerPlatform","toBeUndefined","execution","resolveDockerPlatformExecution","platform","args","processEnv","volumeNameOptions","originalPackageName","npm_package_name","beforeEach","isolateVolume","containerPath","hostPath","cacheKey","shared","toolchainKeyed","locked","toThrow","toMatchObject","amd64","arm64","v6","v7","architectureIndependent","sharedVolume"],"mappings":"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","file":"docker.test.js","sourcesContent":["import { afterEach, beforeEach, describe, expect, it } from 'vitest';\n\nimport type { VolumeMapping } from '../config';\nimport { isDockerPlatformOverride } from '../config';\nimport type { QualifyVolumeNameOptions } from './docker';\nimport {\n qualifyVolumeName,\n resolveDockerPlatform,\n resolveDockerPlatformExecution,\n resolveEffectiveDockerPlatformValue,\n} from './docker';\n\nconst TAG = 'agave-2.1.0-anchor-0.31.1';\n\nconst qualifiedName = (volume: VolumeMapping, options?: QualifyVolumeNameOptions): string => {\n const result = qualifyVolumeName(volume, options);\n if (result.type !== 'isolate') {\n throw new Error('expected an isolate volume');\n }\n return result.name;\n};\n\ndescribe('Docker platform helpers', () => {\n const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;\n\n afterEach(() => {\n if (originalDockerDefaultPlatform === undefined) {\n delete process.env.DOCKER_DEFAULT_PLATFORM;\n } else {\n process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;\n }\n });\n\n it.sequential('validates supported Docker platform overrides from one source of truth', () => {\n expect(isDockerPlatformOverride('native')).toBe(true);\n expect(isDockerPlatformOverride('linux/amd64')).toBe(true);\n expect(isDockerPlatformOverride('linux/arm64')).toBe(true);\n expect(isDockerPlatformOverride(null)).toBe(false);\n expect(isDockerPlatformOverride(undefined)).toBe(false);\n expect(isDockerPlatformOverride('')).toBe(false);\n expect(isDockerPlatformOverride('linux/arm/v7')).toBe(false);\n });\n\n it.sequential('resolves a Docker platform into Docker and cache-name forms', () => {\n expect(resolveDockerPlatform('linux/amd64')).toEqual({\n value: 'linux/amd64',\n namespace: 'linux-amd64',\n arch: 'amd64',\n });\n });\n\n it.sequential('matches Docker arch parsing for multi-segment platform values', () => {\n expect(resolveDockerPlatform('linux/arm/v7')).toEqual({\n value: 'linux/arm/v7',\n namespace: 'linux-arm-v7',\n arch: 'arm',\n });\n });\n\n it.sequential('resolves the effective platform with CLI override first', () => {\n expect(\n resolveEffectiveDockerPlatformValue({\n dockerPlatform: 'linux/arm64',\n toolDockerPlatform: 'linux/amd64',\n envDockerPlatform: 'linux/amd64',\n }),\n ).toBe('linux/arm64');\n });\n\n it.sequential('lets native override skip tool and env platform fallbacks', () => {\n expect(\n resolveEffectiveDockerPlatformValue({\n dockerPlatform: 'native',\n toolDockerPlatform: 'linux/amd64',\n envDockerPlatform: 'linux/arm64',\n }),\n ).toBeUndefined();\n });\n\n it.sequential('uses the tool platform before the env fallback', () => {\n expect(\n resolveEffectiveDockerPlatformValue({\n toolDockerPlatform: 'linux/amd64',\n envDockerPlatform: 'linux/arm64',\n }),\n ).toBe('linux/amd64');\n });\n\n it.sequential('resolves native execution by clearing Docker default platform', () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/amd64';\n\n const execution = resolveDockerPlatformExecution({\n dockerPlatform: 'native',\n toolDockerPlatform: 'linux/amd64',\n });\n\n expect(execution.platform).toBeUndefined();\n expect(execution.args).toEqual([]);\n expect(execution.processEnv?.DOCKER_DEFAULT_PLATFORM).toBeUndefined();\n expect(execution.volumeNameOptions).toEqual({ dockerPlatform: undefined });\n });\n\n it.sequential('resolves pinned execution into one platform context', () => {\n expect(\n resolveDockerPlatformExecution({\n dockerPlatform: 'linux/arm64',\n toolDockerPlatform: 'linux/amd64',\n }),\n ).toEqual({\n platform: {\n value: 'linux/arm64',\n namespace: 'linux-arm64',\n arch: 'arm64',\n },\n args: ['--platform', 'linux/arm64'],\n volumeNameOptions: { dockerPlatform: 'linux/arm64' },\n });\n });\n});\n\ndescribe(qualifyVolumeName, () => {\n const originalPackageName = process.env.npm_package_name;\n const originalDockerDefaultPlatform = process.env.DOCKER_DEFAULT_PLATFORM;\n\n beforeEach(() => {\n process.env.npm_package_name = '@layerzerolabs/oft-solana';\n delete process.env.DOCKER_DEFAULT_PLATFORM;\n });\n\n afterEach(() => {\n if (originalPackageName === undefined) {\n delete process.env.npm_package_name;\n } else {\n process.env.npm_package_name = originalPackageName;\n }\n if (originalDockerDefaultPlatform === undefined) {\n delete process.env.DOCKER_DEFAULT_PLATFORM;\n } else {\n process.env.DOCKER_DEFAULT_PLATFORM = originalDockerDefaultPlatform;\n }\n });\n\n const isolateVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/usr/local/cargo',\n name: 'solana-cargo',\n };\n\n it.sequential(\n 'leaves host volumes untouched even when cache and platform options are supplied',\n () => {\n const volume: VolumeMapping = {\n type: 'host',\n containerPath: '/var/run/docker.sock',\n hostPath: '/var/run/docker.sock',\n };\n expect(\n qualifyVolumeName(volume, { cacheKey: TAG, dockerPlatform: 'linux/amd64' }),\n ).toEqual(volume);\n },\n );\n\n it.sequential('keeps shared volumes package-agnostic and toolchain-agnostic', () => {\n const volume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/home/app/.move',\n name: 'sui',\n shared: true,\n };\n expect(qualifiedName(volume, { cacheKey: TAG })).toBe('lz-tooling-cache-sui');\n expect(qualifiedName({ ...volume, toolchainKeyed: true }, { cacheKey: TAG })).toBe(\n 'lz-tooling-cache-sui',\n );\n });\n\n it.sequential('keys a toolchainKeyed volume by the toolchain tag, not the package', () => {\n expect(\n qualifiedName(\n { ...isolateVolume, locked: true, toolchainKeyed: true },\n { cacheKey: TAG },\n ),\n ).toBe(`lz-tooling-cache-solana-cargo-${TAG}`);\n });\n\n it.sequential(\n 'keeps a non-opted-in volume package-private even when a cache key is available',\n () => {\n const volume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/root/.move',\n name: 'aptos',\n locked: true,\n };\n expect(qualifiedName(volume, { cacheKey: TAG })).toBe(\n 'lz-tooling-cache-aptos-oft-solana',\n );\n },\n );\n\n it.sequential(\n 'falls back to package-private when a toolchainKeyed volume has no cache key',\n () => {\n expect(qualifiedName({ ...isolateVolume, toolchainKeyed: true })).toBe(\n 'lz-tooling-cache-solana-cargo-oft-solana',\n );\n },\n );\n\n it.sequential('throws when no cache key is usable and the package name is absent', () => {\n delete process.env.npm_package_name;\n\n expect(() => qualifyVolumeName(isolateVolume)).toThrow('npm_package_name');\n });\n\n it.sequential('preserves existing isolate volume names when no platform is pinned', () => {\n expect(qualifyVolumeName(isolateVolume)).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana',\n });\n });\n\n it.sequential('suffixes isolate volume names with the pinned amd64 platform', () => {\n expect(qualifyVolumeName(isolateVolume, { dockerPlatform: 'linux/amd64' })).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-amd64',\n });\n });\n\n it.sequential('uses different isolate volume names for different pinned platforms', () => {\n const amd64 = qualifyVolumeName(isolateVolume, { dockerPlatform: 'linux/amd64' });\n const arm64 = qualifyVolumeName(isolateVolume, { dockerPlatform: 'linux/arm64' });\n\n expect(amd64).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-amd64',\n });\n expect(arm64).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-arm64',\n });\n });\n\n it.sequential('uses DOCKER_DEFAULT_PLATFORM when no explicit platform is passed', () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/amd64';\n\n expect(qualifyVolumeName(isolateVolume)).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana-linux-amd64',\n });\n });\n\n it.sequential(\n 'does not use DOCKER_DEFAULT_PLATFORM when an explicit undefined platform is passed',\n () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/amd64';\n\n expect(qualifyVolumeName(isolateVolume, { dockerPlatform: undefined })).toMatchObject({\n name: 'lz-tooling-cache-solana-cargo-oft-solana',\n });\n },\n );\n\n it.sequential('keeps distinct ARM platform variants in distinct cache names', () => {\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/arm/v6';\n const v6 = qualifyVolumeName({ ...isolateVolume, shared: true });\n\n process.env.DOCKER_DEFAULT_PLATFORM = 'linux/arm/v7';\n const v7 = qualifyVolumeName({ ...isolateVolume, shared: true });\n\n expect(v6).toMatchObject({ name: 'lz-tooling-cache-solana-cargo-linux-arm-v6' });\n expect(v7).toMatchObject({ name: 'lz-tooling-cache-solana-cargo-linux-arm-v7' });\n });\n\n it.sequential('does not suffix architecture-independent isolate volumes', () => {\n expect(\n qualifyVolumeName(\n {\n ...isolateVolume,\n shared: true,\n architectureIndependent: true,\n },\n { dockerPlatform: 'linux/amd64' },\n ),\n ).toMatchObject({ name: 'lz-tooling-cache-solana-cargo' });\n });\n\n it.sequential('preserves shared volume naming while still platform-isolating it', () => {\n const sharedVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: '/shared',\n name: 'shared-state',\n shared: true,\n };\n\n expect(qualifyVolumeName(sharedVolume)).toMatchObject({\n name: 'lz-tooling-cache-shared-state',\n });\n expect(qualifyVolumeName(sharedVolume, { dockerPlatform: 'linux/amd64' })).toMatchObject({\n name: 'lz-tooling-cache-shared-state-linux-amd64',\n });\n });\n});\n"]}
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "semver": "^7.5.4",
22
22
  "zod": "4.3.5",
23
23
  "zx": "^8.8.5",
24
- "@layerzerolabs/common-node-utils": "0.2.104"
24
+ "@layerzerolabs/common-node-utils": "0.2.105"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@jest/globals": "^29.7.0",
@@ -33,9 +33,9 @@
33
33
  "tsx": "^4.19.3",
34
34
  "typescript": "^5.8.2",
35
35
  "vitest": "^3.2.3",
36
- "@layerzerolabs/tsup-configuration": "0.2.104",
37
- "@layerzerolabs/vitest-configuration": "0.2.104",
38
- "@layerzerolabs/typescript-configuration": "0.2.104"
36
+ "@layerzerolabs/typescript-configuration": "0.2.105",
37
+ "@layerzerolabs/vitest-configuration": "0.2.105",
38
+ "@layerzerolabs/tsup-configuration": "0.2.105"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public",
@@ -50,7 +50,7 @@
50
50
  "onesig-client"
51
51
  ]
52
52
  },
53
- "version": "0.2.104",
53
+ "version": "0.2.105",
54
54
  "scripts": {
55
55
  "build": "tsup",
56
56
  "lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",