@layerzerolabs/vm-tooling 0.2.69 → 0.2.70
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.
- package/dist/{7SGBC6QF.js → 2PV3VF5J.js} +7 -7
- package/dist/2PV3VF5J.js.map +1 -0
- package/dist/{O2BYFSSA.cjs → 6LSAIGRV.cjs} +14 -17
- package/dist/6LSAIGRV.cjs.map +1 -0
- package/dist/{EOA5BV6N.js → 6N2O5WLJ.js} +3 -3
- package/dist/{EOA5BV6N.js.map → 6N2O5WLJ.js.map} +1 -1
- package/dist/{5AWAMWCO.cjs → AIP5GLUJ.cjs} +7 -7
- package/dist/AIP5GLUJ.cjs.map +1 -0
- package/dist/{QAZW6YGU.cjs → AWXMRCLV.cjs} +5 -5
- package/dist/{QAZW6YGU.cjs.map → AWXMRCLV.cjs.map} +1 -1
- package/dist/{SEXGHPU5.js → FURTC2JJ.js} +3 -3
- package/dist/{SEXGHPU5.js.map → FURTC2JJ.js.map} +1 -1
- package/dist/{WIEZSBV6.cjs → KFMDBFI6.cjs} +4 -4
- package/dist/{WIEZSBV6.cjs.map → KFMDBFI6.cjs.map} +1 -1
- package/dist/{GLKB4X7V.cjs → QIYLVNDK.cjs} +4 -4
- package/dist/{GLKB4X7V.cjs.map → QIYLVNDK.cjs.map} +1 -1
- package/dist/{QEKX6RRO.js → QLLNMABS.js} +5 -5
- package/dist/QLLNMABS.js.map +1 -0
- package/dist/{6MRAL2HJ.cjs → SGY6Q4GR.cjs} +6 -6
- package/dist/SGY6Q4GR.cjs.map +1 -0
- package/dist/{RIXAO4GX.js → V7FMMGFT.js} +14 -17
- package/dist/V7FMMGFT.js.map +1 -0
- package/dist/{VRSINTOC.js → ZUEHTSW3.js} +3 -3
- package/dist/{VRSINTOC.js.map → ZUEHTSW3.js.map} +1 -1
- package/dist/cli.cjs +4 -4
- package/dist/cli.js +3 -3
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.js +2 -2
- package/dist/core/tool-executor.cjs +3 -3
- package/dist/core/tool-executor.js +2 -2
- package/dist/github/index.cjs +4 -4
- package/dist/github/index.js +3 -3
- package/dist/github/matrix.cjs +3 -3
- package/dist/github/matrix.d.ts.map +1 -1
- package/dist/github/matrix.js +2 -2
- package/dist/index.cjs +10 -10
- package/dist/index.js +6 -6
- package/dist/test.cjs +3 -3
- package/dist/test.js +2 -2
- package/dist/utils/docker.cjs +5 -5
- package/dist/utils/docker.d.ts +3 -3
- package/dist/utils/docker.d.ts.map +1 -1
- package/dist/utils/docker.js +1 -1
- package/package.json +4 -4
- package/dist/5AWAMWCO.cjs.map +0 -1
- package/dist/6MRAL2HJ.cjs.map +0 -1
- package/dist/7SGBC6QF.js.map +0 -1
- package/dist/O2BYFSSA.cjs.map +0 -1
- package/dist/QEKX6RRO.js.map +0 -1
- package/dist/RIXAO4GX.js.map +0 -1
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"semver": "^7.5.4",
|
|
23
23
|
"zod": "4.3.5",
|
|
24
24
|
"zx": "^8.8.5",
|
|
25
|
-
"@layerzerolabs/common-node-utils": "0.2.
|
|
25
|
+
"@layerzerolabs/common-node-utils": "0.2.70"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@jest/globals": "^29.7.0",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"tsx": "^4.19.3",
|
|
35
35
|
"typescript": "^5.8.2",
|
|
36
36
|
"vitest": "^3.2.3",
|
|
37
|
-
"@layerzerolabs/
|
|
38
|
-
"@layerzerolabs/
|
|
37
|
+
"@layerzerolabs/typescript-configuration": "0.2.70",
|
|
38
|
+
"@layerzerolabs/tsup-configuration": "0.2.70"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"layerzero-ver"
|
|
50
50
|
]
|
|
51
51
|
},
|
|
52
|
-
"version": "0.2.
|
|
52
|
+
"version": "0.2.70",
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "tsup",
|
|
55
55
|
"lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",
|
package/dist/5AWAMWCO.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/docker.ts"],"names":["init_cjs_shims","getImageUriForTool","__name","context","toolName","version","separator","image","versionCombinations","flatMap","combination","imageId","images","findToolVersionsForCombination","Error","getImageUri","join","getRegistry","getImageDirectory","getImageName","name","getImageTag","versions","patch","Object","entries","sort","flat","qualifyVolumeName","volume","type","components","shared","packageName","env","npm_package_name","push","basename"],"mappings":";;;;;;;;;AAAAA,4BAAA,EAAA;AAQO,IAAMC,qCAAqBC,oBAAA,CAAA,OAC9BC,OAAAA,EACAC,QAAAA,EACAC,OAAAA,EACAC,YAAuB,GAAA,KAAG;AAE1B,EAAA,MAAM,CAACC,KAAAA,CAAAA,GAASJ,QAAQK,mBAAAA,CAAoBC,OAAAA,CAAQ,CAACC,WAAAA,KAAAA;AACjD,IAAA,MAAMC,OAAAA,GAAUD,WAAAA,CAAYE,MAAAA,CAAOR,QAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACO,OAAAA,EAAS;AACV,MAAA,OAAO,EAAA;AACX,IAAA;AAEA,IAAA,MAAMJ,MAAAA,GAAQJ,OAAAA,CAAQS,MAAAA,CAAOD,OAAAA,CAAAA;AAE7B,IAAA,OAAOJ,UAASM,4CAAAA,CAA+BV,OAAAA,EAASO,WAAAA,CAAAA,CAAaN,QAAAA,MAAcC,OAAAA,GAC7E;AAACE,MAAAA;QACD,EAAA;EACV,CAAA,CAAA;AAEA,EAAA,IAAI,CAACA,KAAAA,EAAO;AACR,IAAA,MAAM,IAAIO,KAAAA,CACN,CAAA,sCAAA,EAAyCV,QAAAA,CAAAA,cAAAA,EAAyBC,OAAAA,CAAAA,CAAS,CAAA;AAEnF,EAAA;AAEA,EAAA,OAAOU,WAAAA,CAAYR,OAAOD,SAAAA,CAAAA;AAC9B,CAAA,EA3BkC,oBAAA;AA6B3B,IAAMS,WAAAA,+CAAqBR,KAAAA,EAAcD,SAAAA,GAAuB,QACnEU,SAAAA,CACI,MAAMC,yBAAAA,EAAAA,EACN,MAAMC,+BAAAA,IACN,CAAA,EAAGC,0BAAAA,CAAaZ,KAAAA,CAAMa,IAAI,CAAA,CAAA,CAAA,EAAKC,YAAYd,KAAAA,EAAOD,SAAAA,CAAAA,CAAAA,CAAY,CAAA,EAJ3C,aAAA;AAOpB,IAAMe,8BAAcnB,oBAAA,CAAA,CAAC,EAAEoB,UAAUC,KAAAA,EAAK,EAAWjB,YAAuB,GAAA,KAC3E;AAAIkB,EAAAA,GAAAA,MAAAA,CAAOC,OAAAA,CAAQH,QAAAA,CAAAA,CAAUI,IAAAA,GAAOC,IAAAA,EAAI;KAAQJ,KAAAA,GAAQ;AAAC,IAAA,OAAA;AAASA,IAAAA;MAAS;AAAKP,CAAAA,CAAAA,IAAAA,CAAKV,SAAAA,CAAAA,EAD9D,aAAA;AAGpB,IAAMsB,iBAAAA,yCAAqBC,MAAAA,KAAAA;AAC9B,EAAA,IAAIA,MAAAA,CAAOC,SAAS,SAAA,EAAW;AAC3B,IAAA,OAAOD,MAAAA;AACX,EAAA;AAEA,EAAA,MAAME,UAAAA,GAAa;AAAC,IAAA,kBAAA;IAAoBF,MAAAA,CAAOT;;AAE/C,EAAA,IAAI,CAACS,OAAOG,MAAAA,EAAQ;AAEhB,IAAA,MAAMC,cAAcC,WAAAA,CAAIC,gBAAAA;AAExB,IAAA,IAAI,CAACF,WAAAA,EAAa;AACd,MAAA,MAAM,IAAInB,MAAM,mDAAA,CAAA;AACpB,IAAA;AAEAiB,IAAAA,UAAAA,CAAWK,IAAAA,CAAKC,aAAAA,CAASJ,WAAAA,CAAAA,CAAAA;AAC7B,EAAA;AAEA,EAAA,OAAO;IAAE,GAAGJ,MAAAA;IAAQT,IAAAA,EAAMW,UAAAA,CAAWf,KAAK,GAAA;AAAK,GAAA;AACnD,CAAA,EAnBiC,mBAAA","file":"5AWAMWCO.cjs","sourcesContent":["import { basename, join } from 'node:path';\nimport { env } from 'node:process';\n\nimport type { Image, VolumeMapping } from '../config';\nimport { getImageDirectory, getRegistry } from '../config';\nimport type { ChainContext } from '../context';\nimport { findToolVersionsForCombination, getImageName } from './finder';\n\nexport const getImageUriForTool = async <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n version: string,\n separator: '_' | '-' = '_',\n): Promise<string> => {\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 getImageUri(image, separator);\n};\n\nexport const getImageUri = async (image: Image, separator: '_' | '-' = '_'): Promise<string> =>\n join(\n await getRegistry(),\n await getImageDirectory(),\n `${getImageName(image.name)}:${getImageTag(image, separator)}`,\n );\n\nexport const getImageTag = ({ versions, patch }: Image, separator: '_' | '-' = '_'): string =>\n [...Object.entries(versions).sort().flat(), ...(patch ? ['patch', patch] : [])].join(separator);\n\nexport const qualifyVolumeName = (volume: VolumeMapping): 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 // This is the package name where the `lz-tool` command is executed.\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 return { ...volume, name: components.join('-') };\n};\n"]}
|
package/dist/6MRAL2HJ.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/test.ts"],"names":["init_cjs_shims","COMMAND_TIMEOUT","PULL_TIMEOUT","VERSION_TEST_TIMEOUT","runCommand","__name","command","args","timeout","promisify","execFile","killSignal","stdout","trim","ensureDockerImageExists","imageUri","testTools","describe","expect","it","beforeAll","images","_versionCombinations","versionCommands","name","image","Object","entries","getImageTag","join","toBe","literalImage","values","getImageUri","tool","expectedVersion","versions","Array","Error","version","toContain"],"mappings":";;;;;;;;AAAAA,4BAAA,EAAA;AAQA,IAAMC,kBAAkB,CAAA,GAAI,GAAA;AAC5B,IAAMC,eAAe,EAAA,GAAK,GAAA;AAC1B,IAAMC,uBAAuB,EAAA,GAAK,GAAA;AAElC,IAAMC,UAAAA,mBAAaC,oBAAA,CAAA,OACfC,OAAAA,EACAC,IAAAA,EACAC,OAAAA,GAAUP,eAAAA,KAAAA,CAGN,MAAMQ,cAAAA,CAAUC,sBAAAA,CAAAA,CAAUJ,OAAAA,EAASC,IAAAA,EAAM;AACrCC,EAAAA,OAAAA;EACAG,UAAAA,EAAY;AAChB,CAAA,CAAA,EACFC,MAAAA,CAAOC,IAAAA,EAAI,EAVE,YAAA,CAAA;AAanB,IAAMC,uBAAAA,+CAAiCC,QAAAA,KAAAA;AACnC,EAAA,MAAMX,WAAW,QAAA,EAAU;AAAC,IAAA,KAAA;AAAO,IAAA,MAAA;AAAQ,IAAA,cAAA;AAAgB,IAAA,MAAA;AAAQW,IAAAA;KAAWb,YAAAA,CAAAA;AAClF,CAAA,EAFgC,yBAAA,CAAA;AAIzB,IAAMc,SAAAA,mBAAYX,oBAAA,CAAA,CACrB,EAAEY,QAAAA,EAAUC,MAAAA,EAAQC,IAAIC,SAAAA,EAAS,EACjCC,MAAAA,EACAC,oBAAAA,EACAC,eAAAA,KAAAA;AAEAN,EAAAA,QAAAA,CAAS,oBAAoB,MAAA;AACzB,IAAA,KAAA,MAAW,CAACO,IAAAA,EAAMC,KAAAA,KAAUC,MAAAA,CAAOC,OAAAA,CAAQN,MAAAA,CAAAA,EAAS;AAChDF,MAAAA,EAAAA,CAAG,CAAA,mBAAA,EAAsBK,IAAAA,CAAAA,CAAAA,EAAQ,MAAA;AAC7BN,QAAAA,MAAAA,CAAO;UAACO,KAAAA,CAAMD,IAAAA;AAAMI,UAAAA,yBAAAA,CAAYH,OAAO,GAAA;AAAMI,SAAAA,CAAAA,IAAAA,CAAK,GAAA,CAAA,CAAA,CAAMC,IAAAA,CAAKN,IAAAA,CAAAA;MACjE,CAAA,CAAA;AACJ,IAAA;EACJ,CAAA,CAAA;AAEAP,EAAAA,QAAAA,CAAS,iBAAiB,MAAA;AACtB,IAAA,KAAA,MAAWc,YAAAA,IAAgBL,MAAAA,CAAOM,MAAAA,CAAOX,MAAAA,CAAAA,EAAS;AAC9C,MAAA,MAAMI,KAAAA,GAAeM,YAAAA;AAErBd,MAAAA,QAAAA,CAASW,yBAAAA,CAAYH,KAAAA,CAAAA,EAAQ,MAAA;AACzB,QAAA,IAAIV,QAAAA;AAEJK,QAAAA,SAAAA,CAAU,YAAA;AACNL,UAAAA,QAAAA,GAAW,MAAMkB,yBAAAA,CAAYR,KAAAA,EAAO,GAAA,CAAA;AACpC,UAAA,MAAMX,wBAAwBC,QAAAA,CAAAA;AAClC,QAAA,CAAA,EAAGb,YAAAA,CAAAA;AAEH,QAAA,KAAA,MAAW,CAACgC,MAAMC,eAAAA,CAAAA,IAAoBT,OAAOC,OAAAA,CAAQF,KAAAA,CAAMW,QAAQ,CAAA,EAAG;AAClEjB,UAAAA,EAAAA,CACI,CAAA,YAAA,EAAee,IAAAA,CAAAA,YAAAA,EAAmBC,eAAAA,IAClC,YAAA;AACI,YAAA,IAAI,EAAEZ,eAAAA,CAAgBW,IAAAA,CAAAA,YAAiBG,KAAAA,CAAAA,EAAQ;AAC3C,cAAA,MAAM,IAAIC,MAAM,yBAAA,CAAA;AACpB,YAAA;AAEA,YAAA,MAAMC,OAAAA,GAAU,MAAMnC,UAAAA,CAAW,QAAA,EAAU;AACvC,cAAA,KAAA;AACA,cAAA,MAAA;AACA,cAAA,cAAA;AACAW,cAAAA,QAAAA;AACGQ,cAAAA,GAAAA,eAAAA,CAAgBW,IAAAA;AACtB,aAAA,CAAA;AAEDhB,YAAAA,MAAAA,CAAOqB,OAAAA,CAAAA,CAASC,SAAAA,CAAUL,eAAAA,CAAAA;AAC9B,UAAA,CAAA,EACAhC,oBAAAA,CAAAA;AAER,QAAA;MACJ,CAAA,CAAA;AACJ,IAAA;EACJ,CAAA,CAAA;AACJ,CAAA,EAlDyB,WAAA","file":"6MRAL2HJ.cjs","sourcesContent":["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport type * as vitest from 'vitest';\n\nimport type { VersionCombination } from './config';\nimport { type Image } from './config';\nimport { getImageTag, getImageUri } from './utils/docker';\n\nconst COMMAND_TIMEOUT = 5 * 60_000;\nconst PULL_TIMEOUT = 10 * 60_000;\nconst VERSION_TEST_TIMEOUT = 15 * 60_000;\n\nconst runCommand = async (\n command: string,\n args: string[],\n timeout = COMMAND_TIMEOUT,\n): Promise<string> =>\n (\n await promisify(execFile)(command, args, {\n timeout,\n killSignal: 'SIGKILL', // Force kill if timeout\n })\n ).stdout.trim();\n\n/** Run a no-op command in the image to trigger a pull if it's not available locally. */\nconst ensureDockerImageExists = async (imageUri: string): Promise<void> => {\n await runCommand('docker', ['run', '--rm', '--entrypoint', 'true', imageUri], PULL_TIMEOUT);\n};\n\nexport const testTools = (\n { describe, expect, it, beforeAll }: typeof vitest,\n images: Record<string, Image>,\n _versionCombinations: VersionCombination<string>[],\n versionCommands: Record<string, string[]>,\n): void => {\n describe('Docker image IDs', () => {\n for (const [name, image] of Object.entries(images)) {\n it(`has an image ID of ${name}`, () => {\n expect([image.name, getImageTag(image, '-')].join(':')).toBe(name);\n });\n }\n });\n\n describe('Tool versions', () => {\n for (const literalImage of Object.values(images)) {\n const image: Image = literalImage;\n\n describe(getImageTag(image), () => {\n let imageUri: string;\n\n beforeAll(async () => {\n imageUri = await getImageUri(image, '_');\n await ensureDockerImageExists(imageUri);\n }, PULL_TIMEOUT);\n\n for (const [tool, expectedVersion] of Object.entries(image.versions)) {\n it(\n `should have ${tool} of version ${expectedVersion}`,\n async () => {\n if (!(versionCommands[tool] instanceof Array)) {\n throw new Error('Missing version command');\n }\n\n const version = await runCommand('docker', [\n 'run',\n '--rm',\n '--privileged',\n imageUri,\n ...versionCommands[tool],\n ]);\n\n expect(version).toContain(expectedVersion);\n },\n VERSION_TEST_TIMEOUT,\n );\n }\n });\n }\n });\n};\n"]}
|
package/dist/7SGBC6QF.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/docker.ts"],"names":["getImageUriForTool","context","toolName","version","separator","image","versionCombinations","flatMap","combination","imageId","images","findToolVersionsForCombination","Error","getImageUri","join","getRegistry","getImageDirectory","getImageName","name","getImageTag","versions","patch","Object","entries","sort","flat","qualifyVolumeName","volume","type","components","shared","packageName","env","npm_package_name","push","basename"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AAQO,IAAMA,qCAAqB,MAAA,CAAA,OAC9BC,OAAAA,EACAC,QAAAA,EACAC,OAAAA,EACAC,YAAuB,GAAA,KAAG;AAE1B,EAAA,MAAM,CAACC,KAAAA,CAAAA,GAASJ,QAAQK,mBAAAA,CAAoBC,OAAAA,CAAQ,CAACC,WAAAA,KAAAA;AACjD,IAAA,MAAMC,OAAAA,GAAUD,WAAAA,CAAYE,MAAAA,CAAOR,QAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACO,OAAAA,EAAS;AACV,MAAA,OAAO,EAAA;AACX,IAAA;AAEA,IAAA,MAAMJ,MAAAA,GAAQJ,OAAAA,CAAQS,MAAAA,CAAOD,OAAAA,CAAAA;AAE7B,IAAA,OAAOJ,UAASM,8BAAAA,CAA+BV,OAAAA,EAASO,WAAAA,CAAAA,CAAaN,QAAAA,MAAcC,OAAAA,GAC7E;AAACE,MAAAA;QACD,EAAA;EACV,CAAA,CAAA;AAEA,EAAA,IAAI,CAACA,KAAAA,EAAO;AACR,IAAA,MAAM,IAAIO,KAAAA,CACN,CAAA,sCAAA,EAAyCV,QAAAA,CAAAA,cAAAA,EAAyBC,OAAAA,CAAAA,CAAS,CAAA;AAEnF,EAAA;AAEA,EAAA,OAAOU,WAAAA,CAAYR,OAAOD,SAAAA,CAAAA;AAC9B,CAAA,EA3BkC,oBAAA;AA6B3B,IAAMS,WAAAA,iCAAqBR,KAAAA,EAAcD,SAAAA,GAAuB,QACnEU,IAAAA,CACI,MAAMC,WAAAA,EAAAA,EACN,MAAMC,iBAAAA,IACN,CAAA,EAAGC,YAAAA,CAAaZ,KAAAA,CAAMa,IAAI,CAAA,CAAA,CAAA,EAAKC,YAAYd,KAAAA,EAAOD,SAAAA,CAAAA,CAAAA,CAAY,CAAA,EAJ3C,aAAA;AAOpB,IAAMe,8BAAc,MAAA,CAAA,CAAC,EAAEC,UAAUC,KAAAA,EAAK,EAAWjB,YAAuB,GAAA,KAC3E;AAAIkB,EAAAA,GAAAA,MAAAA,CAAOC,OAAAA,CAAQH,QAAAA,CAAAA,CAAUI,IAAAA,GAAOC,IAAAA,EAAI;KAAQJ,KAAAA,GAAQ;AAAC,IAAA,OAAA;AAASA,IAAAA;MAAS;AAAKP,CAAAA,CAAAA,IAAAA,CAAKV,SAAAA,CAAAA,EAD9D,aAAA;AAGpB,IAAMsB,iBAAAA,2BAAqBC,MAAAA,KAAAA;AAC9B,EAAA,IAAIA,MAAAA,CAAOC,SAAS,SAAA,EAAW;AAC3B,IAAA,OAAOD,MAAAA;AACX,EAAA;AAEA,EAAA,MAAME,UAAAA,GAAa;AAAC,IAAA,kBAAA;IAAoBF,MAAAA,CAAOT;;AAE/C,EAAA,IAAI,CAACS,OAAOG,MAAAA,EAAQ;AAEhB,IAAA,MAAMC,cAAcC,GAAAA,CAAIC,gBAAAA;AAExB,IAAA,IAAI,CAACF,WAAAA,EAAa;AACd,MAAA,MAAM,IAAInB,MAAM,mDAAA,CAAA;AACpB,IAAA;AAEAiB,IAAAA,UAAAA,CAAWK,IAAAA,CAAKC,QAAAA,CAASJ,WAAAA,CAAAA,CAAAA;AAC7B,EAAA;AAEA,EAAA,OAAO;IAAE,GAAGJ,MAAAA;IAAQT,IAAAA,EAAMW,UAAAA,CAAWf,KAAK,GAAA;AAAK,GAAA;AACnD,CAAA,EAnBiC,mBAAA","file":"7SGBC6QF.js","sourcesContent":["import { basename, join } from 'node:path';\nimport { env } from 'node:process';\n\nimport type { Image, VolumeMapping } from '../config';\nimport { getImageDirectory, getRegistry } from '../config';\nimport type { ChainContext } from '../context';\nimport { findToolVersionsForCombination, getImageName } from './finder';\n\nexport const getImageUriForTool = async <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n version: string,\n separator: '_' | '-' = '_',\n): Promise<string> => {\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 getImageUri(image, separator);\n};\n\nexport const getImageUri = async (image: Image, separator: '_' | '-' = '_'): Promise<string> =>\n join(\n await getRegistry(),\n await getImageDirectory(),\n `${getImageName(image.name)}:${getImageTag(image, separator)}`,\n );\n\nexport const getImageTag = ({ versions, patch }: Image, separator: '_' | '-' = '_'): string =>\n [...Object.entries(versions).sort().flat(), ...(patch ? ['patch', patch] : [])].join(separator);\n\nexport const qualifyVolumeName = (volume: VolumeMapping): 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 // This is the package name where the `lz-tool` command is executed.\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 return { ...volume, name: components.join('-') };\n};\n"]}
|
package/dist/O2BYFSSA.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/github/matrix.ts"],"names":["init_cjs_shims","TAG_SEPARATORS","generateGithubMatrix","__name","images","directory","versionCombinations","createImageEntry","imageId","image","imageName","getImageName","name","tags","map","separator","getImageTag","length","Error","entry","id","build_args","Object","entries","versions","dependencies","sort","key","value","constantCase","join","image_name","results","imageEntries","r","mirroredImages","filter","result","mirrorRegistries","flatMap","mirror","activeImages","activeImageIds","Set","combo","values","push"],"mappings":"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","file":"O2BYFSSA.cjs","sourcesContent":["import { constantCase } from 'es-toolkit';\nimport { join } from 'node:path';\n\nimport { type Image, type VersionCombination } from '../config';\nimport { getImageTag } from '../utils/docker';\nimport { getImageName } from '../utils/finder';\n\ninterface ImageEntry {\n id: string;\n name: string;\n build_args: string[];\n image_name: string;\n tags: string[];\n directory: string;\n}\n\ninterface MirroredImageEntry {\n id: string;\n name: string;\n image_name: string;\n tags: string[];\n mirror: string;\n}\n\ninterface GithubMatrixOutput {\n images: ImageEntry[];\n mirroredImages: MirroredImageEntry[];\n activeImages: string[];\n}\n\n// TODO Remove underscore which is not standard in the Docker tag naming scheme.\nconst TAG_SEPARATORS = ['-', '_'] as const;\n\nexport const generateGithubMatrix = (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): GithubMatrixOutput => {\n const createImageEntry = ([imageId, image]: [string, Image]): {\n entry: ImageEntry;\n image: Image;\n } => {\n const imageName = getImageName(image.name);\n const tags = TAG_SEPARATORS.map((separator) => getImageTag(image, separator));\n\n if (tags.length === 0 || !tags[0]) {\n throw new Error(\n `Image \"${imageId}\" produced no tags. Every image must have at least one non-empty tag.`,\n );\n }\n\n return {\n entry: {\n id: imageId,\n name: image.name,\n build_args: Object.entries({ ...image.versions, ...image.dependencies })\n .sort()\n .map(([key, value]) => `${constantCase(key)}_VERSION=${value}`),\n directory: join(directory, 'docker', image.name),\n image_name: imageName,\n tags,\n },\n image,\n };\n };\n\n const results = Object.entries(images).map(createImageEntry);\n\n const imageEntries = results.map((r) => r.entry);\n\n const mirroredImages = results\n .filter((result) => result.image.mirrorRegistries?.length)\n .flatMap((result) =>\n result.image.mirrorRegistries!.map((mirror) => ({\n id: result.entry.id,\n name: result.entry.name,\n image_name: result.entry.image_name,\n tags: result.entry.tags,\n mirror,\n })),\n );\n\n const activeImages: string[] = [];\n if (versionCombinations) {\n const activeImageIds = new Set(\n versionCombinations.flatMap((combo) => Object.values(combo.images)),\n );\n activeImages.push(...activeImageIds);\n }\n\n return { images: imageEntries, mirroredImages, activeImages };\n};\n"]}
|
package/dist/QEKX6RRO.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/test.ts"],"names":["COMMAND_TIMEOUT","PULL_TIMEOUT","VERSION_TEST_TIMEOUT","runCommand","command","args","timeout","promisify","execFile","killSignal","stdout","trim","ensureDockerImageExists","imageUri","testTools","describe","expect","it","beforeAll","images","_versionCombinations","versionCommands","name","image","Object","entries","getImageTag","join","toBe","literalImage","values","getImageUri","tool","expectedVersion","versions","Array","Error","version","toContain"],"mappings":"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","file":"QEKX6RRO.js","sourcesContent":["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport type * as vitest from 'vitest';\n\nimport type { VersionCombination } from './config';\nimport { type Image } from './config';\nimport { getImageTag, getImageUri } from './utils/docker';\n\nconst COMMAND_TIMEOUT = 5 * 60_000;\nconst PULL_TIMEOUT = 10 * 60_000;\nconst VERSION_TEST_TIMEOUT = 15 * 60_000;\n\nconst runCommand = async (\n command: string,\n args: string[],\n timeout = COMMAND_TIMEOUT,\n): Promise<string> =>\n (\n await promisify(execFile)(command, args, {\n timeout,\n killSignal: 'SIGKILL', // Force kill if timeout\n })\n ).stdout.trim();\n\n/** Run a no-op command in the image to trigger a pull if it's not available locally. */\nconst ensureDockerImageExists = async (imageUri: string): Promise<void> => {\n await runCommand('docker', ['run', '--rm', '--entrypoint', 'true', imageUri], PULL_TIMEOUT);\n};\n\nexport const testTools = (\n { describe, expect, it, beforeAll }: typeof vitest,\n images: Record<string, Image>,\n _versionCombinations: VersionCombination<string>[],\n versionCommands: Record<string, string[]>,\n): void => {\n describe('Docker image IDs', () => {\n for (const [name, image] of Object.entries(images)) {\n it(`has an image ID of ${name}`, () => {\n expect([image.name, getImageTag(image, '-')].join(':')).toBe(name);\n });\n }\n });\n\n describe('Tool versions', () => {\n for (const literalImage of Object.values(images)) {\n const image: Image = literalImage;\n\n describe(getImageTag(image), () => {\n let imageUri: string;\n\n beforeAll(async () => {\n imageUri = await getImageUri(image, '_');\n await ensureDockerImageExists(imageUri);\n }, PULL_TIMEOUT);\n\n for (const [tool, expectedVersion] of Object.entries(image.versions)) {\n it(\n `should have ${tool} of version ${expectedVersion}`,\n async () => {\n if (!(versionCommands[tool] instanceof Array)) {\n throw new Error('Missing version command');\n }\n\n const version = await runCommand('docker', [\n 'run',\n '--rm',\n '--privileged',\n imageUri,\n ...versionCommands[tool],\n ]);\n\n expect(version).toContain(expectedVersion);\n },\n VERSION_TEST_TIMEOUT,\n );\n }\n });\n }\n });\n};\n"]}
|
package/dist/RIXAO4GX.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/github/matrix.ts"],"names":["TAG_SEPARATORS","generateGithubMatrix","images","directory","versionCombinations","createImageEntry","imageId","image","imageName","getImageName","name","tags","map","separator","getImageTag","length","Error","entry","id","build_args","Object","entries","versions","dependencies","sort","key","value","constantCase","join","image_name","results","imageEntries","r","mirroredImages","filter","result","mirrorRegistries","flatMap","mirror","activeImages","activeImageIds","Set","combo","values","push"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AA+BA,IAAMA,cAAAA,GAAiB;AAAC,EAAA,GAAA;AAAK,EAAA;;AAEtB,IAAMC,oBAAAA,mBAAuB,MAAA,CAAA,CAChCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,gBAAAA,mBAAmB,MAAA,CAAA,CAAC,CAACC,OAAAA,EAASC,KAAAA,CAAAA,KAAuB;AAIvD,IAAA,MAAMC,SAAAA,GAAYC,YAAAA,CAAaF,KAAAA,CAAMG,IAAI,CAAA;AACzC,IAAA,MAAMC,IAAAA,GAAOX,eAAeY,GAAAA,CAAI,CAACC,cAAcC,WAAAA,CAAYP,KAAAA,EAAOM,SAAAA,CAAAA,CAAAA;AAElE,IAAA,IAAIF,KAAKI,MAAAA,KAAW,CAAA,IAAK,CAACJ,IAAAA,CAAK,CAAA,CAAA,EAAI;AAC/B,MAAA,MAAM,IAAIK,KAAAA,CACN,CAAA,OAAA,EAAUV,OAAAA,CAAAA,qEAAAA,CAA8E,CAAA;AAEhG,IAAA;AAEA,IAAA,OAAO;MACHW,KAAAA,EAAO;QACHC,EAAAA,EAAIZ,OAAAA;AACJI,QAAAA,IAAAA,EAAMH,KAAAA,CAAMG,IAAAA;AACZS,QAAAA,UAAAA,EAAYC,OAAOC,OAAAA,CAAQ;AAAE,UAAA,GAAGd,KAAAA,CAAMe,QAAAA;AAAU,UAAA,GAAGf,KAAAA,CAAMgB;AAAa,SAAA,CAAA,CACjEC,IAAAA,EAAI,CACJZ,GAAAA,CAAI,CAAC,CAACa,GAAAA,EAAKC,KAAAA,CAAAA,KAAW,GAAGC,YAAAA,CAAaF,GAAAA,CAAAA,CAAAA,SAAAA,EAAgBC,KAAAA,CAAAA,CAAO,CAAA;AAClEvB,QAAAA,SAAAA,EAAWyB,IAAAA,CAAKzB,SAAAA,EAAW,QAAA,EAAUI,KAAAA,CAAMG,IAAI,CAAA;QAC/CmB,UAAAA,EAAYrB,SAAAA;AACZG,QAAAA;AACJ,OAAA;AACAJ,MAAAA;AACJ,KAAA;EACJ,CAAA,EA1ByB,kBAAA,CAAA;AA4BzB,EAAA,MAAMuB,UAAUV,MAAAA,CAAOC,OAAAA,CAAQnB,MAAAA,CAAAA,CAAQU,IAAIP,gBAAAA,CAAAA;AAE3C,EAAA,MAAM0B,eAAeD,OAAAA,CAAQlB,GAAAA,CAAI,CAACoB,CAAAA,KAAMA,EAAEf,KAAK,CAAA;AAE/C,EAAA,MAAMgB,iBAAiBH,OAAAA,CAClBI,MAAAA,CAAO,CAACC,MAAAA,KAAWA,MAAAA,CAAO5B,MAAM6B,gBAAAA,EAAkBrB,MAAAA,CAAAA,CAClDsB,OAAAA,CAAQ,CAACF,MAAAA,KACNA,MAAAA,CAAO5B,MAAM6B,gBAAAA,CAAkBxB,GAAAA,CAAI,CAAC0B,MAAAA,MAAY;AAC5CpB,IAAAA,EAAAA,EAAIiB,OAAOlB,KAAAA,CAAMC,EAAAA;AACjBR,IAAAA,IAAAA,EAAMyB,OAAOlB,KAAAA,CAAMP,IAAAA;AACnBmB,IAAAA,UAAAA,EAAYM,OAAOlB,KAAAA,CAAMY,UAAAA;AACzBlB,IAAAA,IAAAA,EAAMwB,OAAOlB,KAAAA,CAAMN,IAAAA;AACnB2B,IAAAA;AACJ,GAAA,CAAA,CAAA,CAAA;AAGR,EAAA,MAAMC,eAAyB,EAAA;AAC/B,EAAA,IAAInC,mBAAAA,EAAqB;AACrB,IAAA,MAAMoC,cAAAA,GAAiB,IAAIC,GAAAA,CACvBrC,mBAAAA,CAAoBiC,OAAAA,CAAQ,CAACK,KAAAA,KAAUtB,MAAAA,CAAOuB,MAAAA,CAAOD,KAAAA,CAAMxC,MAAM,CAAA,CAAA,CAAA;AAErEqC,IAAAA,YAAAA,CAAaK,IAAAA,CAAI,GAAIJ,cAAAA,CAAAA;AACzB,EAAA;AAEA,EAAA,OAAO;IAAEtC,MAAAA,EAAQ6B,YAAAA;AAAcE,IAAAA,cAAAA;AAAgBM,IAAAA;AAAa,GAAA;AAChE,CAAA,EA1DoC,sBAAA","file":"RIXAO4GX.js","sourcesContent":["import { constantCase } from 'es-toolkit';\nimport { join } from 'node:path';\n\nimport { type Image, type VersionCombination } from '../config';\nimport { getImageTag } from '../utils/docker';\nimport { getImageName } from '../utils/finder';\n\ninterface ImageEntry {\n id: string;\n name: string;\n build_args: string[];\n image_name: string;\n tags: string[];\n directory: string;\n}\n\ninterface MirroredImageEntry {\n id: string;\n name: string;\n image_name: string;\n tags: string[];\n mirror: string;\n}\n\ninterface GithubMatrixOutput {\n images: ImageEntry[];\n mirroredImages: MirroredImageEntry[];\n activeImages: string[];\n}\n\n// TODO Remove underscore which is not standard in the Docker tag naming scheme.\nconst TAG_SEPARATORS = ['-', '_'] as const;\n\nexport const generateGithubMatrix = (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): GithubMatrixOutput => {\n const createImageEntry = ([imageId, image]: [string, Image]): {\n entry: ImageEntry;\n image: Image;\n } => {\n const imageName = getImageName(image.name);\n const tags = TAG_SEPARATORS.map((separator) => getImageTag(image, separator));\n\n if (tags.length === 0 || !tags[0]) {\n throw new Error(\n `Image \"${imageId}\" produced no tags. Every image must have at least one non-empty tag.`,\n );\n }\n\n return {\n entry: {\n id: imageId,\n name: image.name,\n build_args: Object.entries({ ...image.versions, ...image.dependencies })\n .sort()\n .map(([key, value]) => `${constantCase(key)}_VERSION=${value}`),\n directory: join(directory, 'docker', image.name),\n image_name: imageName,\n tags,\n },\n image,\n };\n };\n\n const results = Object.entries(images).map(createImageEntry);\n\n const imageEntries = results.map((r) => r.entry);\n\n const mirroredImages = results\n .filter((result) => result.image.mirrorRegistries?.length)\n .flatMap((result) =>\n result.image.mirrorRegistries!.map((mirror) => ({\n id: result.entry.id,\n name: result.entry.name,\n image_name: result.entry.image_name,\n tags: result.entry.tags,\n mirror,\n })),\n );\n\n const activeImages: string[] = [];\n if (versionCombinations) {\n const activeImageIds = new Set(\n versionCombinations.flatMap((combo) => Object.values(combo.images)),\n );\n activeImages.push(...activeImageIds);\n }\n\n return { images: imageEntries, mirroredImages, activeImages };\n};\n"]}
|