@layerzerolabs/vm-tooling-stellar 1.2.12 → 1.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,14 @@
1
+ import { createStellarScopedWorkspacePruner } from './Z66N4WL7.js';
1
2
  import { syncToolchain } from './PFRVJTS7.js';
2
3
  import { DockerRegistryMirror } from '@layerzerolabs/vm-tooling';
3
4
 
5
+ var scopedWorkspacePruner = createStellarScopedWorkspacePruner();
4
6
  var tools = [
5
7
  {
6
8
  name: "stellar",
7
9
  preExecute: syncToolchain,
8
10
  dockerPlatform: "linux/amd64",
11
+ scopedWorkspacePruner,
9
12
  defaultVolumes: [
10
13
  // NOTE: for configuration commands, you should never put it in your package.json#build or #test, since the config is locked for parallel builds
11
14
  // while common commands like contract build and binding generation are allowed since they are not writing to the config files
@@ -30,7 +33,7 @@ var tools = [
30
33
  name: "stellar-rustup",
31
34
  shared: true
32
35
  },
33
- // safe as the wort case of corruption is cache miss, since it is key-based cache, concurrent writes will produce identical content
36
+ // safe as the worst case of corruption is cache miss, since it is key-based cache, concurrent writes will produce identical content
34
37
  {
35
38
  type: "host",
36
39
  containerPath: "/cache/sccache",
@@ -106,5 +109,5 @@ var versionCombinations = [
106
109
  ];
107
110
 
108
111
  export { images, tools, versionCombinations };
109
- //# sourceMappingURL=YKDO3PL4.js.map
110
- //# sourceMappingURL=YKDO3PL4.js.map
112
+ //# sourceMappingURL=PY5UWW6H.js.map
113
+ //# sourceMappingURL=PY5UWW6H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config.ts"],"names":["scopedWorkspacePruner","createStellarScopedWorkspacePruner","tools","name","preExecute","syncToolchain","dockerPlatform","defaultVolumes","type","containerPath","shared","hostPath","defaultEnv","value","images","versions","stellar","patch","mirrorRegistries","DockerRegistryMirror","PUBLIC_GAR","dependencies","rust","versionCombinations","description","stable"],"mappings":";;;;AAUA,IAAMA,wBAAwBC,kCAAAA,EAAAA;AAEvB,IAAMC,KAAAA,GAAoC;AAC7C,EAAA;IACIC,IAAAA,EAAM,SAAA;IACNC,UAAAA,EAAYC,aAAAA;IACZC,cAAAA,EAAgB,aAAA;AAChBN,IAAAA,qBAAAA;IACAO,cAAAA,EAAgB;;;AAGZ,MAAA;QACIC,IAAAA,EAAM,SAAA;QACNC,aAAAA,EAAe,gBAAA;QACfN,IAAAA,EAAM,gBAAA;QACNO,MAAAA,EAAQ;AACZ,OAAA;;AAEA,MAAA;QACIF,IAAAA,EAAM,SAAA;QACNC,aAAAA,EAAe,cAAA;QACfN,IAAAA,EAAM,eAAA;QACNO,MAAAA,EAAQ;AACZ,OAAA;;;AAGA,MAAA;QACIF,IAAAA,EAAM,SAAA;QACNC,aAAAA,EAAe,eAAA;QACfN,IAAAA,EAAM,gBAAA;QACNO,MAAAA,EAAQ;AACZ,OAAA;;AAEA,MAAA;QACIF,IAAAA,EAAM,MAAA;QACNC,aAAAA,EAAe,gBAAA;QACfE,QAAAA,EAAU;AACd;;IAEJC,UAAAA,EAAY;;AAER,MAAA;QAAET,IAAAA,EAAM,eAAA;QAAiBU,KAAAA,EAAO;AAAyB,OAAA;;AAEzD,MAAA;QAAEV,IAAAA,EAAM,8CAAA;QAAgDU,KAAAA,EAAO;AAAQ,OAAA;AACvE,MAAA;QAAEV,IAAAA,EAAM,+CAAA;QAAiDU,KAAAA,EAAO;AAAQ,OAAA;AACxE,MAAA;QACIV,IAAAA,EAAM,iDAAA;QACNU,KAAAA,EAAO;AACX,OAAA;AACA,MAAA;QACIV,IAAAA,EAAM,kDAAA;QACNU,KAAAA,EAAO;AACX;;AAER;;AAGG,IAAMC,MAAAA,GAAS;AAClB,EAAA,CAAC,gCAAA,GAAmC;IAChCX,IAAAA,EAAM,SAAA;IACNY,QAAAA,EAAU;MACNC,OAAAA,EAAS;AACb,KAAA;IACAC,KAAAA,EAAO,CAAA;IACPC,gBAAAA,EAAkB;MAACC,oBAAAA,CAAqBC;;AAC5C,GAAA;AACA,EAAA,CAAC,gCAAA,GAAmC;IAChCjB,IAAAA,EAAM,SAAA;IACNY,QAAAA,EAAU;MACNC,OAAAA,EAAS;AACb,KAAA;IACAC,KAAAA,EAAO,CAAA;IACPI,YAAAA,EAAc;MACVC,IAAAA,EAAM;AACV,KAAA;IACAJ,gBAAAA,EAAkB;MAACC,oBAAAA,CAAqBC;;AAC5C;AACJ;AAIO,IAAMG,mBAAAA,GACT;AACI,EAAA;IACIT,MAAAA,EAAQ;MACJE,OAAAA,EAAS;AACb,KAAA;IACAQ,WAAAA,EAAa,uBAAA;IACbC,MAAAA,EAAQ;AACZ,GAAA;AACA,EAAA;IACIX,MAAAA,EAAQ;MACJE,OAAAA,EAAS;AACb,KAAA;IACAQ,WAAAA,EAAa,gBAAA;IACbC,MAAAA,EAAQ;AACZ","file":"PY5UWW6H.js","sourcesContent":["import {\n DockerRegistryMirror,\n type Image,\n type Tool,\n type VersionCombination,\n} from '@layerzerolabs/vm-tooling';\n\nimport { syncToolchain } from './commands/sync-toolchain';\nimport { createStellarScopedWorkspacePruner } from './scoped-workspace-pruner';\n\nconst scopedWorkspacePruner = createStellarScopedWorkspacePruner();\n\nexport const tools: readonly [Tool, ...Tool[]] = [\n {\n name: 'stellar',\n preExecute: syncToolchain,\n dockerPlatform: 'linux/amd64',\n scopedWorkspacePruner,\n defaultVolumes: [\n // NOTE: for configuration commands, you should never put it in your package.json#build or #test, since the config is locked for parallel builds\n // while common commands like contract build and binding generation are allowed since they are not writing to the config files\n {\n type: 'isolate',\n containerPath: '/cache/stellar',\n name: 'stellar-config',\n shared: true,\n },\n // safe to be unlocked as it is POSIX lock guarded\n {\n type: 'isolate',\n containerPath: '/cache/cargo',\n name: 'stellar-cargo',\n shared: true,\n },\n // shared across packages — toolchain is pre-synced via `sync-toolchain` (locked)\n // so concurrent reads from build/test/lint are safe\n {\n type: 'isolate',\n containerPath: '/cache/rustup',\n name: 'stellar-rustup',\n shared: true,\n },\n // safe as the worst case of corruption is cache miss, since it is key-based cache, concurrent writes will produce identical content\n {\n type: 'host',\n containerPath: '/cache/sccache',\n hostPath: '~/.sccache',\n },\n ],\n defaultEnv: [\n // sccache configuration\n { name: 'RUSTC_WRAPPER', value: '/usr/local/bin/sccache' },\n // mold linker for faster linking\n { name: 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER', value: 'clang' },\n { name: 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER', value: 'clang' },\n {\n name: 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS',\n value: '-C link-arg=-fuse-ld=mold',\n },\n {\n name: 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS',\n value: '-C link-arg=-fuse-ld=mold',\n },\n ],\n },\n];\n\nexport const images = {\n ['stellar:stellar-25.1.0-patch-2']: {\n name: 'stellar',\n versions: {\n stellar: '25.1.0',\n },\n patch: 2,\n mirrorRegistries: [DockerRegistryMirror.PUBLIC_GAR],\n },\n ['stellar:stellar-25.2.0-patch-1']: {\n name: 'stellar',\n versions: {\n stellar: '25.2.0',\n },\n patch: 1,\n dependencies: {\n rust: '1.91.0',\n },\n mirrorRegistries: [DockerRegistryMirror.PUBLIC_GAR],\n },\n} satisfies Record<string, Image>;\n\nexport type ImageId = keyof typeof images;\n\nexport const versionCombinations: [VersionCombination<ImageId>, ...VersionCombination<ImageId>[]] =\n [\n {\n images: {\n stellar: 'stellar:stellar-25.1.0-patch-2',\n },\n description: 'Latest stable release',\n stable: true,\n },\n {\n images: {\n stellar: 'stellar:stellar-25.2.0-patch-1',\n },\n description: 'Stellar 25.2.0',\n stable: true,\n },\n ];\n"]}
@@ -0,0 +1,43 @@
1
+ import { __name } from './VUOMXK5T.js';
2
+ import { join } from 'path';
3
+ import pLimit from 'p-limit';
4
+ import { pathExists } from '@layerzerolabs/common-node-utils';
5
+ import { DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS } from '@layerzerolabs/vm-tooling';
6
+
7
+ var createStellarScopedWorkspacePruner = /* @__PURE__ */ __name(() => ({
8
+ name: "stellar",
9
+ createPrunePlan: /* @__PURE__ */ __name(async ({ dependencyGraph }) => {
10
+ const packagePatterns = {};
11
+ const limit = pLimit(10);
12
+ await Promise.all(dependencyGraph.includedWorkspaceDependencies.map((dependency) => limit(async () => {
13
+ if (dependency.name === "@layerzerolabs/stellar-ts-bindings-gen") {
14
+ packagePatterns[dependency.relativePath] = [
15
+ "**/*",
16
+ ...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS
17
+ ];
18
+ return;
19
+ }
20
+ if (await pathExists(join(dependency.absolutePath, "Cargo.toml"))) {
21
+ packagePatterns[dependency.relativePath] = [
22
+ "target/wasm32v1-none/release/*.d",
23
+ "target/wasm32v1-none/release/*.wasm",
24
+ ".artifacts/**/*.wasm"
25
+ ];
26
+ }
27
+ })));
28
+ const includedPackageCount = Object.keys(packagePatterns).length;
29
+ return {
30
+ patterns: [
31
+ "!**/**"
32
+ ],
33
+ packagePatterns,
34
+ diagnostics: [
35
+ `Stellar scoped-workspace pruner selected files from ${includedPackageCount} workspace dependency package(s).`
36
+ ]
37
+ };
38
+ }, "createPrunePlan")
39
+ }), "createStellarScopedWorkspacePruner");
40
+
41
+ export { createStellarScopedWorkspacePruner };
42
+ //# sourceMappingURL=Z66N4WL7.js.map
43
+ //# sourceMappingURL=Z66N4WL7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scoped-workspace-pruner.ts"],"names":["createStellarScopedWorkspacePruner","name","createPrunePlan","dependencyGraph","packagePatterns","limit","pLimit","Promise","all","includedWorkspaceDependencies","map","dependency","relativePath","DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS","pathExists","join","absolutePath","includedPackageCount","Object","keys","length","patterns","diagnostics"],"mappings":";;;;;;AASO,IAAMA,qDAAqC,MAAA,CAAA,OAA8B;EAC5EC,IAAAA,EAAM,SAAA;EACNC,eAAAA,kBAAiB,MAAA,CAAA,OAAO,EAAEC,eAAAA,EAAe,KAAE;AACvC,IAAA,MAAMC,kBAAqD,EAAC;AAC5D,IAAA,MAAMC,KAAAA,GAAQC,OAAO,EAAA,CAAA;AAErB,IAAA,MAAMC,OAAAA,CAAQC,IACVL,eAAAA,CAAgBM,6BAAAA,CAA8BC,IAAI,CAACC,UAAAA,KAC/CN,MAAM,YAAA;AACF,MAAA,IAAIM,UAAAA,CAAWV,SAAS,wCAAA,EAA0C;AAC9DG,QAAAA,eAAAA,CAAgBO,UAAAA,CAAWC,YAAY,CAAA,GAAI;AACvC,UAAA,MAAA;AACGC,UAAAA,GAAAA;;AAEP,QAAA;AACJ,MAAA;AAOA,MAAA,IAAI,MAAMC,UAAAA,CAAWC,IAAAA,CAAKJ,WAAWK,YAAAA,EAAc,YAAA,CAAA,CAAA,EAAgB;AAC/DZ,QAAAA,eAAAA,CAAgBO,UAAAA,CAAWC,YAAY,CAAA,GAAI;AACvC,UAAA,kCAAA;AACA,UAAA,qCAAA;AACA,UAAA;;AAER,MAAA;AACJ,IAAA,CAAA,CAAA,CAAA,CAAA;AAIR,IAAA,MAAMK,oBAAAA,GAAuBC,MAAAA,CAAOC,IAAAA,CAAKf,eAAAA,CAAAA,CAAiBgB,MAAAA;AAE1D,IAAA,OAAO;MACHC,QAAAA,EAAU;AAAC,QAAA;;AACXjB,MAAAA,eAAAA;MACAkB,WAAAA,EAAa;AACT,QAAA,CAAA,oDAAA,EAAuDL,oBAAAA,CAAAA,iCAAAA;;AAE/D,KAAA;EACJ,CAAA,EAxCiB,iBAAA;AAyCrB,CAAA,CAAA,EA3CkD,oCAAA","file":"Z66N4WL7.js","sourcesContent":["import { join } from 'node:path';\nimport pLimit from 'p-limit';\n\nimport { pathExists } from '@layerzerolabs/common-node-utils';\nimport {\n DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS,\n type ScopedWorkspacePruner,\n} from '@layerzerolabs/vm-tooling';\n\nexport const createStellarScopedWorkspacePruner = (): ScopedWorkspacePruner => ({\n name: 'stellar',\n createPrunePlan: async ({ dependencyGraph }) => {\n const packagePatterns: Record<string, readonly string[]> = {};\n const limit = pLimit(10);\n\n await Promise.all(\n dependencyGraph.includedWorkspaceDependencies.map((dependency) =>\n limit(async () => {\n if (dependency.name === '@layerzerolabs/stellar-ts-bindings-gen') {\n packagePatterns[dependency.relativePath] = [\n '**/*',\n ...DEFAULT_SOURCE_COPY_EXCLUDE_PATTERNS,\n ];\n return;\n }\n\n // Stellar Rust sources are vendored into the current package's dependencies/\n // directory by build-utils-rust before lz-tool runs. Workspace dependency\n // packages only need their wasm outputs for TS bindings generation:\n // - target/.../release: cargo/stellar-cli release builds\n // - .artifacts: SEP-58 verifiable builds (e.g. onesig / protocol stellar SDKs)\n if (await pathExists(join(dependency.absolutePath, 'Cargo.toml'))) {\n packagePatterns[dependency.relativePath] = [\n 'target/wasm32v1-none/release/*.d',\n 'target/wasm32v1-none/release/*.wasm',\n '.artifacts/**/*.wasm',\n ];\n }\n }),\n ),\n );\n\n const includedPackageCount = Object.keys(packagePatterns).length;\n\n return {\n patterns: ['!**/**'],\n packagePatterns,\n diagnostics: [\n `Stellar scoped-workspace pruner selected files from ${includedPackageCount} workspace dependency package(s).`,\n ],\n };\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EAEpB,KAAK,IAAI,EACT,KAAK,kBAAkB,EAC1B,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAoD5C,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CAoBc,CAAC;AAElC,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,MAAM,CAAC;AAE1C,eAAO,MAAM,mBAAmB,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAgB3F,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EAEpB,KAAK,IAAI,EACT,KAAK,kBAAkB,EAC1B,MAAM,2BAA2B,CAAC;AAOnC,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAqD5C,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CAoBc,CAAC;AAElC,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,MAAM,CAAC;AAE1C,eAAO,MAAM,mBAAmB,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAgB3F,CAAC"}
package/dist/config.js CHANGED
@@ -1,4 +1,5 @@
1
- export { images, tools, versionCombinations } from './YKDO3PL4.js';
1
+ export { images, tools, versionCombinations } from './PY5UWW6H.js';
2
+ import './Z66N4WL7.js';
2
3
  import './PFRVJTS7.js';
3
4
  import './VUOMXK5T.js';
4
5
  //# sourceMappingURL=config.js.map
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ export { createStellarScopedWorkspacePruner } from './scoped-workspace-pruner';
1
2
  export declare const main: () => Promise<void>;
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,IAAI,QAAO,OAAO,CAAC,IAAI,CA4G9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAM/E,eAAO,MAAM,IAAI,QAAO,OAAO,CAAC,IAAI,CA4G9B,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { packageSource } from './LCHYL2IQ.js';
2
2
  import { runVerifiableBuildFromArchive, parsePackageSpec } from './D25LP26W.js';
3
- import { versionCombinations, images, tools } from './YKDO3PL4.js';
3
+ import { versionCombinations, images, tools } from './PY5UWW6H.js';
4
+ export { createStellarScopedWorkspacePruner } from './Z66N4WL7.js';
4
5
  import { syncToolchain } from './PFRVJTS7.js';
5
6
  import { __name } from './VUOMXK5T.js';
6
7
  import path from 'path';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["DEFAULT_OUTPUT_DIR","context","tools","images","versionCombinations","collectPackageSpecs","value","previous","main","runCli","program","parseGlobalOptions","command","description","action","syncToolchain","extra","stellar","requiredOption","option","stellarVersion","rustVersion","archive","package","packageSpecs","outputDir","options","runVerifiableBuildFromArchive","path","resolve","cwd","packages","map","parsePackageSpec","output","include","exclude","packageSource"],"mappings":";;;;;;;;AAUA,IAAMA,kBAAAA,GAAqB,YAAA;AAE3B,IAAMC,OAAAA,GAAiC;AAAEC,EAAAA,KAAAA;AAAOC,EAAAA,MAAAA;AAAQC,EAAAA;AAAoB,CAAA;AAE5E,IAAMC,mBAAAA,mBAAsB,MAAA,CAAA,CAACC,KAAAA,EAAeC,QAAAA,KAAiC;AAAIA,EAAAA,GAAAA,QAAAA;AAAUD,EAAAA;AAA/D,CAAA,EAAA,qBAAA,CAAA;AAErB,IAAME,uBAAO,MAAA,CAAA,MAChBC,MAAAA,CAAOR,OAAAA,EAAS,CAACS,SAASC,kBAAAA,KAAAA;AACtBD,EAAAA,OAAAA,CACKE,OAAAA,CAAQ,gBAAA,CAAA,CACRC,WAAAA,CACG,+EAAA,CAAA,CAEHC,MAAAA,CAAO,YAAYC,aAAAA,CAAcd,OAAAA,EAAS,MAAMU,kBAAAA,CAAmBD,OAAAA,CAAAA,CAAAA,CAAAA;AAIxE,EAAA,MAAMM,QAAQN,OAAAA,CAAQE,OAAAA,CAAQ,OAAA,CAAA,CAASC,YAAY,+BAAA,CAAA;AACnD,EAAA,MAAMI,OAAAA,GAAUD,KAAAA,CAAMJ,OAAAA,CAAQ,SAAA,CAAA;AAE9BK,EAAAA,OAAAA,CACKL,QAAQ,kBAAA,CAAA,CACRC,WAAAA,CACG,8NAEI,EAEPK,cAAAA,CACG,6BAAA,EACA,sEAAA,CAAA,CAEHC,OACG,0BAAA,EACA,sHACI,EAEPD,cAAAA,CACG,kBAAA,EACA,4DAAA,CAAA,CAEHC,MAAAA,CACG,2BAAA,EACA,iFAAA,EACAd,qBACA,EAAE,EAELc,MAAAA,CACG,qBAAA,EACA,iDACAnB,kBAAAA,CAAAA,CAEHc,MAAAA,CACG,OAAO,EACHM,cAAAA,EACAC,WAAAA,EACAC,SACAC,OAAAA,EAASC,YAAAA,EACTC,WAAS,KAOZ;AACG,IAAA,MAAMC,OAAAA,GAAU,MAAMf,kBAAAA,CAAmBD,OAAAA,CAAAA;AACzC,IAAA,MAAMiB,6BAAAA,CACF;AACIL,MAAAA,OAAAA,EAASM,IAAAA,CAAKC,OAAAA,CAAQH,OAAAA,CAAQI,GAAAA,EAAKR,OAAAA,CAAAA;MACnCS,QAAAA,EAAUP,YAAAA,CAAaQ,IAAIC,gBAAAA,CAAAA;AAC3BR,MAAAA,SAAAA,EAAWG,IAAAA,CAAKC,OAAAA,CAAQH,OAAAA,CAAQI,GAAAA,EAAKL,SAAAA,CAAAA;AACrCL,MAAAA,cAAAA;AACAC,MAAAA;KACJ,EACA;AAAES,MAAAA,GAAAA,EAAKJ,OAAAA,CAAQI;KAAI,CAAA;EAE3B,CAAA,CAAA;AAGRb,EAAAA,OAAAA,CACKL,OAAAA,CAAQ,gBAAA,CAAA,CACRC,WAAAA,CACG,gYAII,CAAA,CAEPM,MAAAA,CACG,iBAAA,EACA,oEAAA,CAAA,CAEHA,MAAAA,CACG,wBAAA,EACA,2EAAA,EACA,EAAE,CAAA,CAELA,MAAAA,CACG,wBAAA,EACA,sFAAA,EACA,EAAE,CAAA,CAELL,MAAAA,CACG,OAAO,EACHoB,MAAAA,EACAC,OAAAA,EACAC,OAAAA,OAMAC,aAAAA,CAAc;AAAEH,IAAAA,MAAAA;AAAQC,IAAAA,OAAAA;AAASC,IAAAA;AAAQ,GAAA,EAAG,MAAMzB,kBAAAA,CAAmBD,OAAAA,CAAAA,CAAAA,CAAAA;AAErF,CAAA,CAAA,EA5GgB,MAAA","file":"index.js","sourcesContent":["import path from 'node:path';\n\nimport type { ChainContext } from '@layerzerolabs/vm-tooling';\nimport { runCli } from '@layerzerolabs/vm-tooling';\n\nimport { packageSource } from './commands/package-source';\nimport { syncToolchain } from './commands/sync-toolchain';\nimport { parsePackageSpec, runVerifiableBuildFromArchive } from './commands/verifiable-build';\nimport { type ImageId, images, tools, versionCombinations } from './config';\n\nconst DEFAULT_OUTPUT_DIR = '.artifacts';\n\nconst context: ChainContext<ImageId> = { tools, images, versionCombinations };\n\nconst collectPackageSpecs = (value: string, previous: string[]): string[] => [...previous, value];\n\nexport const main = (): Promise<void> =>\n runCli(context, (program, parseGlobalOptions) => {\n program\n .command('sync-toolchain')\n .description(\n 'Pre-download the Rust toolchain specified in rust-toolchain.toml under a lock',\n )\n .action(async () => syncToolchain(context, await parseGlobalOptions(program)));\n\n // Extra (non-passthrough) commands, namespaced under `extra <tool>` like vm-tooling-sui:\n // lz-tool extra stellar verifiable-build [options]\n const extra = program.command('extra').description('Extra commands for VM tooling');\n const stellar = extra.command('stellar');\n\n stellar\n .command('verifiable-build')\n .description(\n 'Build one or more Stellar contracts reproducibly from a source archive: ' +\n 'extract → hash → build each --package in the official stellar/stellar-cli ' +\n 'image → atomically publish contracts-source.zip and *.wasm.',\n )\n .requiredOption(\n '--stellar-version <version>',\n 'Stellar CLI version of the official reproducible image (e.g. 25.1.0)',\n )\n .option(\n '--rust-version <version>',\n 'Rust version of the official reproducible image (e.g. 1.90.0); defaults to ' +\n \"the archive's rust-toolchain.toml channel\",\n )\n .requiredOption(\n '--archive <path>',\n 'Self-contained source .zip for the SEP-58 verifiable build',\n )\n .option(\n '--package <name:manifest>',\n 'Package to build as <name>:<manifest-path> (repeatable; required at least once)',\n collectPackageSpecs,\n [] as string[],\n )\n .option(\n '--output-dir <path>',\n 'Directory for contracts-source.zip and *.wasm',\n DEFAULT_OUTPUT_DIR,\n )\n .action(\n async ({\n stellarVersion,\n rustVersion,\n archive,\n package: packageSpecs,\n outputDir,\n }: {\n stellarVersion: string;\n rustVersion?: string;\n archive: string;\n package: string[];\n outputDir: string;\n }) => {\n const options = await parseGlobalOptions(program);\n await runVerifiableBuildFromArchive(\n {\n archive: path.resolve(options.cwd, archive),\n packages: packageSpecs.map(parsePackageSpec),\n outputDir: path.resolve(options.cwd, outputDir),\n stellarVersion,\n rustVersion,\n },\n { cwd: options.cwd },\n );\n },\n );\n\n stellar\n .command('package-source')\n .description(\n 'Package the self-contained crate in the cwd into a byte-deterministic source ' +\n '.zip under .artifacts/ (for the SEP-58 verifiable build) and print its ' +\n 'source_sha256. Include-only: packages source files (.rs/.lock, Cargo.toml, ' +\n 'rust-toolchain.toml, rustfmt.toml, clippy.toml) plus any --include entries; ' +\n '--exclude always wins. Skips non-source directories (target, node_modules, …).',\n )\n .option(\n '--output <path>',\n 'Output .zip path (default: <cwd>/.artifacts/<basename>-source.zip)',\n )\n .option(\n '--include <pattern...>',\n 'Native Node glob patterns to include beyond the default source extensions',\n [],\n )\n .option(\n '--exclude <pattern...>',\n 'Native Node glob patterns to exclude (always wins over the allow-list and --include)',\n [],\n )\n .action(\n async ({\n output,\n include,\n exclude,\n }: {\n output?: string;\n include?: string[];\n exclude?: string[];\n }) =>\n packageSource({ output, include, exclude }, await parseGlobalOptions(program)),\n );\n });\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["DEFAULT_OUTPUT_DIR","context","tools","images","versionCombinations","collectPackageSpecs","value","previous","main","runCli","program","parseGlobalOptions","command","description","action","syncToolchain","extra","stellar","requiredOption","option","stellarVersion","rustVersion","archive","package","packageSpecs","outputDir","options","runVerifiableBuildFromArchive","path","resolve","cwd","packages","map","parsePackageSpec","output","include","exclude","packageSource"],"mappings":";;;;;;;;;AAUA,IAAMA,kBAAAA,GAAqB,YAAA;AAI3B,IAAMC,OAAAA,GAAiC;AAAEC,EAAAA,KAAAA;AAAOC,EAAAA,MAAAA;AAAQC,EAAAA;AAAoB,CAAA;AAE5E,IAAMC,mBAAAA,mBAAsB,MAAA,CAAA,CAACC,KAAAA,EAAeC,QAAAA,KAAiC;AAAIA,EAAAA,GAAAA,QAAAA;AAAUD,EAAAA;AAA/D,CAAA,EAAA,qBAAA,CAAA;AAErB,IAAME,uBAAO,MAAA,CAAA,MAChBC,MAAAA,CAAOR,OAAAA,EAAS,CAACS,SAASC,kBAAAA,KAAAA;AACtBD,EAAAA,OAAAA,CACKE,OAAAA,CAAQ,gBAAA,CAAA,CACRC,WAAAA,CACG,+EAAA,CAAA,CAEHC,MAAAA,CAAO,YAAYC,aAAAA,CAAcd,OAAAA,EAAS,MAAMU,kBAAAA,CAAmBD,OAAAA,CAAAA,CAAAA,CAAAA;AAIxE,EAAA,MAAMM,QAAQN,OAAAA,CAAQE,OAAAA,CAAQ,OAAA,CAAA,CAASC,YAAY,+BAAA,CAAA;AACnD,EAAA,MAAMI,OAAAA,GAAUD,KAAAA,CAAMJ,OAAAA,CAAQ,SAAA,CAAA;AAE9BK,EAAAA,OAAAA,CACKL,QAAQ,kBAAA,CAAA,CACRC,WAAAA,CACG,8NAEI,EAEPK,cAAAA,CACG,6BAAA,EACA,sEAAA,CAAA,CAEHC,OACG,0BAAA,EACA,sHACI,EAEPD,cAAAA,CACG,kBAAA,EACA,4DAAA,CAAA,CAEHC,MAAAA,CACG,2BAAA,EACA,iFAAA,EACAd,qBACA,EAAE,EAELc,MAAAA,CACG,qBAAA,EACA,iDACAnB,kBAAAA,CAAAA,CAEHc,MAAAA,CACG,OAAO,EACHM,cAAAA,EACAC,WAAAA,EACAC,SACAC,OAAAA,EAASC,YAAAA,EACTC,WAAS,KAOZ;AACG,IAAA,MAAMC,OAAAA,GAAU,MAAMf,kBAAAA,CAAmBD,OAAAA,CAAAA;AACzC,IAAA,MAAMiB,6BAAAA,CACF;AACIL,MAAAA,OAAAA,EAASM,IAAAA,CAAKC,OAAAA,CAAQH,OAAAA,CAAQI,GAAAA,EAAKR,OAAAA,CAAAA;MACnCS,QAAAA,EAAUP,YAAAA,CAAaQ,IAAIC,gBAAAA,CAAAA;AAC3BR,MAAAA,SAAAA,EAAWG,IAAAA,CAAKC,OAAAA,CAAQH,OAAAA,CAAQI,GAAAA,EAAKL,SAAAA,CAAAA;AACrCL,MAAAA,cAAAA;AACAC,MAAAA;KACJ,EACA;AAAES,MAAAA,GAAAA,EAAKJ,OAAAA,CAAQI;KAAI,CAAA;EAE3B,CAAA,CAAA;AAGRb,EAAAA,OAAAA,CACKL,OAAAA,CAAQ,gBAAA,CAAA,CACRC,WAAAA,CACG,gYAII,CAAA,CAEPM,MAAAA,CACG,iBAAA,EACA,oEAAA,CAAA,CAEHA,MAAAA,CACG,wBAAA,EACA,2EAAA,EACA,EAAE,CAAA,CAELA,MAAAA,CACG,wBAAA,EACA,sFAAA,EACA,EAAE,CAAA,CAELL,MAAAA,CACG,OAAO,EACHoB,MAAAA,EACAC,OAAAA,EACAC,OAAAA,OAMAC,aAAAA,CAAc;AAAEH,IAAAA,MAAAA;AAAQC,IAAAA,OAAAA;AAASC,IAAAA;AAAQ,GAAA,EAAG,MAAMzB,kBAAAA,CAAmBD,OAAAA,CAAAA,CAAAA,CAAAA;AAErF,CAAA,CAAA,EA5GgB,MAAA","file":"index.js","sourcesContent":["import path from 'node:path';\n\nimport type { ChainContext } from '@layerzerolabs/vm-tooling';\nimport { runCli } from '@layerzerolabs/vm-tooling';\n\nimport { packageSource } from './commands/package-source';\nimport { syncToolchain } from './commands/sync-toolchain';\nimport { parsePackageSpec, runVerifiableBuildFromArchive } from './commands/verifiable-build';\nimport { type ImageId, images, tools, versionCombinations } from './config';\n\nconst DEFAULT_OUTPUT_DIR = '.artifacts';\n\nexport { createStellarScopedWorkspacePruner } from './scoped-workspace-pruner';\n\nconst context: ChainContext<ImageId> = { tools, images, versionCombinations };\n\nconst collectPackageSpecs = (value: string, previous: string[]): string[] => [...previous, value];\n\nexport const main = (): Promise<void> =>\n runCli(context, (program, parseGlobalOptions) => {\n program\n .command('sync-toolchain')\n .description(\n 'Pre-download the Rust toolchain specified in rust-toolchain.toml under a lock',\n )\n .action(async () => syncToolchain(context, await parseGlobalOptions(program)));\n\n // Extra (non-passthrough) commands, namespaced under `extra <tool>` like vm-tooling-sui:\n // lz-tool extra stellar verifiable-build [options]\n const extra = program.command('extra').description('Extra commands for VM tooling');\n const stellar = extra.command('stellar');\n\n stellar\n .command('verifiable-build')\n .description(\n 'Build one or more Stellar contracts reproducibly from a source archive: ' +\n 'extract → hash → build each --package in the official stellar/stellar-cli ' +\n 'image → atomically publish contracts-source.zip and *.wasm.',\n )\n .requiredOption(\n '--stellar-version <version>',\n 'Stellar CLI version of the official reproducible image (e.g. 25.1.0)',\n )\n .option(\n '--rust-version <version>',\n 'Rust version of the official reproducible image (e.g. 1.90.0); defaults to ' +\n \"the archive's rust-toolchain.toml channel\",\n )\n .requiredOption(\n '--archive <path>',\n 'Self-contained source .zip for the SEP-58 verifiable build',\n )\n .option(\n '--package <name:manifest>',\n 'Package to build as <name>:<manifest-path> (repeatable; required at least once)',\n collectPackageSpecs,\n [] as string[],\n )\n .option(\n '--output-dir <path>',\n 'Directory for contracts-source.zip and *.wasm',\n DEFAULT_OUTPUT_DIR,\n )\n .action(\n async ({\n stellarVersion,\n rustVersion,\n archive,\n package: packageSpecs,\n outputDir,\n }: {\n stellarVersion: string;\n rustVersion?: string;\n archive: string;\n package: string[];\n outputDir: string;\n }) => {\n const options = await parseGlobalOptions(program);\n await runVerifiableBuildFromArchive(\n {\n archive: path.resolve(options.cwd, archive),\n packages: packageSpecs.map(parsePackageSpec),\n outputDir: path.resolve(options.cwd, outputDir),\n stellarVersion,\n rustVersion,\n },\n { cwd: options.cwd },\n );\n },\n );\n\n stellar\n .command('package-source')\n .description(\n 'Package the self-contained crate in the cwd into a byte-deterministic source ' +\n '.zip under .artifacts/ (for the SEP-58 verifiable build) and print its ' +\n 'source_sha256. Include-only: packages source files (.rs/.lock, Cargo.toml, ' +\n 'rust-toolchain.toml, rustfmt.toml, clippy.toml) plus any --include entries; ' +\n '--exclude always wins. Skips non-source directories (target, node_modules, …).',\n )\n .option(\n '--output <path>',\n 'Output .zip path (default: <cwd>/.artifacts/<basename>-source.zip)',\n )\n .option(\n '--include <pattern...>',\n 'Native Node glob patterns to include beyond the default source extensions',\n [],\n )\n .option(\n '--exclude <pattern...>',\n 'Native Node glob patterns to exclude (always wins over the allow-list and --include)',\n [],\n )\n .action(\n async ({\n output,\n include,\n exclude,\n }: {\n output?: string;\n include?: string[];\n exclude?: string[];\n }) =>\n packageSource({ output, include, exclude }, await parseGlobalOptions(program)),\n );\n });\n"]}
@@ -0,0 +1,3 @@
1
+ import { type ScopedWorkspacePruner } from '@layerzerolabs/vm-tooling';
2
+ export declare const createStellarScopedWorkspacePruner: () => ScopedWorkspacePruner;
3
+ //# sourceMappingURL=scoped-workspace-pruner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-workspace-pruner.d.ts","sourceRoot":"","sources":["../src/scoped-workspace-pruner.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,qBAAqB,EAC7B,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,kCAAkC,QAAO,qBA2CpD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createStellarScopedWorkspacePruner } from './Z66N4WL7.js';
2
+ import './VUOMXK5T.js';
3
+ //# sourceMappingURL=scoped-workspace-pruner.js.map
4
+ //# sourceMappingURL=scoped-workspace-pruner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"scoped-workspace-pruner.js"}
@@ -1,4 +1,5 @@
1
- import { images, versionCombinations } from '../YKDO3PL4.js';
1
+ import { images, versionCombinations } from '../PY5UWW6H.js';
2
+ import '../Z66N4WL7.js';
2
3
  import '../PFRVJTS7.js';
3
4
  import '../VUOMXK5T.js';
4
5
  import { runGithubMatrixGenerator } from '@layerzerolabs/vm-tooling';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/scripts/generate-github-matrix.ts"],"names":["runGithubMatrixGenerator","images","versionCombinations","catch","error","console","process","exit"],"mappings":";;;;;AAIAA,wBAAAA,CAAyBC,QAAQ,qCAAA,EAAuCC,mBAAAA,CAAAA,CAAqBC,KAAAA,CACzF,CAACC,KAAAA,KAAAA;AACGC,EAAAA,OAAAA,CAAQD,MAAMA,KAAAA,CAAAA;AACdE,EAAAA,OAAAA,CAAQC,KAAK,CAAA,CAAA;AACjB,CAAA,CAAA","file":"generate-github-matrix.js","sourcesContent":["import { runGithubMatrixGenerator } from '@layerzerolabs/vm-tooling';\n\nimport { images, versionCombinations } from '../config';\n\nrunGithubMatrixGenerator(images, 'tools/vm-tooling/vm-tooling-stellar', versionCombinations).catch(\n (error: unknown) => {\n console.error(error);\n process.exit(1);\n },\n);\n"]}
1
+ {"version":3,"sources":["../../src/scripts/generate-github-matrix.ts"],"names":["runGithubMatrixGenerator","images","versionCombinations","catch","error","console","process","exit"],"mappings":";;;;;;AAIAA,wBAAAA,CAAyBC,QAAQ,qCAAA,EAAuCC,mBAAAA,CAAAA,CAAqBC,KAAAA,CACzF,CAACC,KAAAA,KAAAA;AACGC,EAAAA,OAAAA,CAAQD,MAAMA,KAAAA,CAAAA;AACdE,EAAAA,OAAAA,CAAQC,KAAK,CAAA,CAAA;AACjB,CAAA,CAAA","file":"generate-github-matrix.js","sourcesContent":["import { runGithubMatrixGenerator } from '@layerzerolabs/vm-tooling';\n\nimport { images, versionCombinations } from '../config';\n\nrunGithubMatrixGenerator(images, 'tools/vm-tooling/vm-tooling-stellar', versionCombinations).catch(\n (error: unknown) => {\n console.error(error);\n process.exit(1);\n },\n);\n"]}
package/package.json CHANGED
@@ -20,18 +20,20 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "fflate": "^0.8.3",
23
+ "p-limit": "^6.1.0",
23
24
  "toml": "^3.0.0",
24
- "@layerzerolabs/deterministic-zip": "1.2.12",
25
- "@layerzerolabs/vm-tooling": "1.2.12"
25
+ "@layerzerolabs/common-node-utils": "1.2.13",
26
+ "@layerzerolabs/deterministic-zip": "1.2.13",
27
+ "@layerzerolabs/vm-tooling": "1.2.13"
26
28
  },
27
29
  "devDependencies": {
28
30
  "tsup": "^8.4.0",
29
31
  "tsx": "^4.21.0",
30
32
  "typescript": "^5.8.2",
31
33
  "vitest": "^3.2.6",
32
- "@layerzerolabs/tsup-configuration": "1.2.12",
33
- "@layerzerolabs/typescript-configuration": "1.2.12",
34
- "@layerzerolabs/vitest-configuration": "1.2.12"
34
+ "@layerzerolabs/tsup-configuration": "1.2.13",
35
+ "@layerzerolabs/typescript-configuration": "1.2.13",
36
+ "@layerzerolabs/vitest-configuration": "1.2.13"
35
37
  },
36
38
  "publishConfig": {
37
39
  "access": "public",
@@ -45,7 +47,7 @@
45
47
  "onesig-client"
46
48
  ]
47
49
  },
48
- "version": "1.2.12",
50
+ "version": "1.2.13",
49
51
  "scripts": {
50
52
  "build": "tsup",
51
53
  "generate-github-matrix": "tsx src/scripts/generate-github-matrix.ts",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config.ts"],"names":["tools","name","preExecute","syncToolchain","dockerPlatform","defaultVolumes","type","containerPath","shared","hostPath","defaultEnv","value","images","versions","stellar","patch","mirrorRegistries","DockerRegistryMirror","PUBLIC_GAR","dependencies","rust","versionCombinations","description","stable"],"mappings":";;;AASO,IAAMA,KAAAA,GAAoC;AAC7C,EAAA;IACIC,IAAAA,EAAM,SAAA;IACNC,UAAAA,EAAYC,aAAAA;IACZC,cAAAA,EAAgB,aAAA;IAChBC,cAAAA,EAAgB;;;AAGZ,MAAA;QACIC,IAAAA,EAAM,SAAA;QACNC,aAAAA,EAAe,gBAAA;QACfN,IAAAA,EAAM,gBAAA;QACNO,MAAAA,EAAQ;AACZ,OAAA;;AAEA,MAAA;QACIF,IAAAA,EAAM,SAAA;QACNC,aAAAA,EAAe,cAAA;QACfN,IAAAA,EAAM,eAAA;QACNO,MAAAA,EAAQ;AACZ,OAAA;;;AAGA,MAAA;QACIF,IAAAA,EAAM,SAAA;QACNC,aAAAA,EAAe,eAAA;QACfN,IAAAA,EAAM,gBAAA;QACNO,MAAAA,EAAQ;AACZ,OAAA;;AAEA,MAAA;QACIF,IAAAA,EAAM,MAAA;QACNC,aAAAA,EAAe,gBAAA;QACfE,QAAAA,EAAU;AACd;;IAEJC,UAAAA,EAAY;;AAER,MAAA;QAAET,IAAAA,EAAM,eAAA;QAAiBU,KAAAA,EAAO;AAAyB,OAAA;;AAEzD,MAAA;QAAEV,IAAAA,EAAM,8CAAA;QAAgDU,KAAAA,EAAO;AAAQ,OAAA;AACvE,MAAA;QAAEV,IAAAA,EAAM,+CAAA;QAAiDU,KAAAA,EAAO;AAAQ,OAAA;AACxE,MAAA;QACIV,IAAAA,EAAM,iDAAA;QACNU,KAAAA,EAAO;AACX,OAAA;AACA,MAAA;QACIV,IAAAA,EAAM,kDAAA;QACNU,KAAAA,EAAO;AACX;;AAER;;AAGG,IAAMC,MAAAA,GAAS;AAClB,EAAA,CAAC,gCAAA,GAAmC;IAChCX,IAAAA,EAAM,SAAA;IACNY,QAAAA,EAAU;MACNC,OAAAA,EAAS;AACb,KAAA;IACAC,KAAAA,EAAO,CAAA;IACPC,gBAAAA,EAAkB;MAACC,oBAAAA,CAAqBC;;AAC5C,GAAA;AACA,EAAA,CAAC,gCAAA,GAAmC;IAChCjB,IAAAA,EAAM,SAAA;IACNY,QAAAA,EAAU;MACNC,OAAAA,EAAS;AACb,KAAA;IACAC,KAAAA,EAAO,CAAA;IACPI,YAAAA,EAAc;MACVC,IAAAA,EAAM;AACV,KAAA;IACAJ,gBAAAA,EAAkB;MAACC,oBAAAA,CAAqBC;;AAC5C;AACJ;AAIO,IAAMG,mBAAAA,GACT;AACI,EAAA;IACIT,MAAAA,EAAQ;MACJE,OAAAA,EAAS;AACb,KAAA;IACAQ,WAAAA,EAAa,uBAAA;IACbC,MAAAA,EAAQ;AACZ,GAAA;AACA,EAAA;IACIX,MAAAA,EAAQ;MACJE,OAAAA,EAAS;AACb,KAAA;IACAQ,WAAAA,EAAa,gBAAA;IACbC,MAAAA,EAAQ;AACZ","file":"YKDO3PL4.js","sourcesContent":["import {\n DockerRegistryMirror,\n type Image,\n type Tool,\n type VersionCombination,\n} from '@layerzerolabs/vm-tooling';\n\nimport { syncToolchain } from './commands/sync-toolchain';\n\nexport const tools: readonly [Tool, ...Tool[]] = [\n {\n name: 'stellar',\n preExecute: syncToolchain,\n dockerPlatform: 'linux/amd64',\n defaultVolumes: [\n // NOTE: for configuration commands, you should never put it in your package.json#build or #test, since the config is locked for parallel builds\n // while common commands like contract build and binding generation are allowed since they are not writing to the config files\n {\n type: 'isolate',\n containerPath: '/cache/stellar',\n name: 'stellar-config',\n shared: true,\n },\n // safe to be unlocked as it is POSIX lock guarded\n {\n type: 'isolate',\n containerPath: '/cache/cargo',\n name: 'stellar-cargo',\n shared: true,\n },\n // shared across packages — toolchain is pre-synced via `sync-toolchain` (locked)\n // so concurrent reads from build/test/lint are safe\n {\n type: 'isolate',\n containerPath: '/cache/rustup',\n name: 'stellar-rustup',\n shared: true,\n },\n // safe as the wort case of corruption is cache miss, since it is key-based cache, concurrent writes will produce identical content\n {\n type: 'host',\n containerPath: '/cache/sccache',\n hostPath: '~/.sccache',\n },\n ],\n defaultEnv: [\n // sccache configuration\n { name: 'RUSTC_WRAPPER', value: '/usr/local/bin/sccache' },\n // mold linker for faster linking\n { name: 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER', value: 'clang' },\n { name: 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER', value: 'clang' },\n {\n name: 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS',\n value: '-C link-arg=-fuse-ld=mold',\n },\n {\n name: 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS',\n value: '-C link-arg=-fuse-ld=mold',\n },\n ],\n },\n];\n\nexport const images = {\n ['stellar:stellar-25.1.0-patch-2']: {\n name: 'stellar',\n versions: {\n stellar: '25.1.0',\n },\n patch: 2,\n mirrorRegistries: [DockerRegistryMirror.PUBLIC_GAR],\n },\n ['stellar:stellar-25.2.0-patch-1']: {\n name: 'stellar',\n versions: {\n stellar: '25.2.0',\n },\n patch: 1,\n dependencies: {\n rust: '1.91.0',\n },\n mirrorRegistries: [DockerRegistryMirror.PUBLIC_GAR],\n },\n} satisfies Record<string, Image>;\n\nexport type ImageId = keyof typeof images;\n\nexport const versionCombinations: [VersionCombination<ImageId>, ...VersionCombination<ImageId>[]] =\n [\n {\n images: {\n stellar: 'stellar:stellar-25.1.0-patch-2',\n },\n description: 'Latest stable release',\n stable: true,\n },\n {\n images: {\n stellar: 'stellar:stellar-25.2.0-patch-1',\n },\n description: 'Stellar 25.2.0',\n stable: true,\n },\n ];\n"]}