@layerzerolabs/vm-tooling 0.2.113 → 0.2.114

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 (121) hide show
  1. package/dist/2ICMBBWU.js +6 -0
  2. package/dist/{N53MNPWU.js.map → 2ICMBBWU.js.map} +1 -1
  3. package/dist/{TWCQHE4E.js → 337JSZDD.js} +4 -4
  4. package/dist/{TWCQHE4E.js.map → 337JSZDD.js.map} +1 -1
  5. package/dist/{7CGWPLOJ.js → 4LO2IH4K.js} +6 -5
  6. package/dist/4LO2IH4K.js.map +1 -0
  7. package/dist/{NAWFODGG.js → 4Y7MN3EA.js} +5 -5
  8. package/dist/{NAWFODGG.js.map → 4Y7MN3EA.js.map} +1 -1
  9. package/dist/{IIZVEHVD.js → 5GPTK3MH.js} +12 -5
  10. package/dist/5GPTK3MH.js.map +1 -0
  11. package/dist/{TXIQ74D3.js → 6M2RYAT4.js} +9 -5
  12. package/dist/6M2RYAT4.js.map +1 -0
  13. package/dist/{UUWRT3Q2.js → 7AOPRLRU.js} +4 -4
  14. package/dist/{UUWRT3Q2.js.map → 7AOPRLRU.js.map} +1 -1
  15. package/dist/7ZZ35UQB.js +6 -0
  16. package/dist/{3N42XVZL.js.map → 7ZZ35UQB.js.map} +1 -1
  17. package/dist/BTTCOAYB.js +145 -0
  18. package/dist/BTTCOAYB.js.map +1 -0
  19. package/dist/{2PIH5TOH.js → CWBC3WMF.js} +3 -3
  20. package/dist/{2PIH5TOH.js.map → CWBC3WMF.js.map} +1 -1
  21. package/dist/{IPZ5KX7M.js → DCLKPAAD.js} +3 -3
  22. package/dist/{IPZ5KX7M.js.map → DCLKPAAD.js.map} +1 -1
  23. package/dist/{RORYN2CM.js → DHOHK2AA.js} +3 -3
  24. package/dist/{RORYN2CM.js.map → DHOHK2AA.js.map} +1 -1
  25. package/dist/DTNGUD3B.js +349 -0
  26. package/dist/DTNGUD3B.js.map +1 -0
  27. package/dist/{FFE7SXCG.js → EN67HYJT.js} +3 -3
  28. package/dist/{FFE7SXCG.js.map → EN67HYJT.js.map} +1 -1
  29. package/dist/{KBUFOLY3.js → H7PAZQ2B.js} +5 -5
  30. package/dist/{KBUFOLY3.js.map → H7PAZQ2B.js.map} +1 -1
  31. package/dist/{H6FLARPD.js → H7YRHR5O.js} +3 -3
  32. package/dist/{H6FLARPD.js.map → H7YRHR5O.js.map} +1 -1
  33. package/dist/ID575YY3.js +158 -0
  34. package/dist/ID575YY3.js.map +1 -0
  35. package/dist/{AIKNZKYE.js → INJJFIX2.js} +5 -5
  36. package/dist/{AIKNZKYE.js.map → INJJFIX2.js.map} +1 -1
  37. package/dist/LYF4JPSK.js +24 -0
  38. package/dist/LYF4JPSK.js.map +1 -0
  39. package/dist/{PNCVL7HO.js → MAF3KTCC.js} +5 -5
  40. package/dist/{PNCVL7HO.js.map → MAF3KTCC.js.map} +1 -1
  41. package/dist/SKMNEOBU.js +49 -0
  42. package/dist/SKMNEOBU.js.map +1 -0
  43. package/dist/{X6QPMSID.js → UBSQYHMB.js} +3 -3
  44. package/dist/{X6QPMSID.js.map → UBSQYHMB.js.map} +1 -1
  45. package/dist/{7DDNJRV6.js → V4633Q24.js} +8 -8
  46. package/dist/{7DDNJRV6.js.map → V4633Q24.js.map} +1 -1
  47. package/dist/WIT6LHNF.js +84 -0
  48. package/dist/WIT6LHNF.js.map +1 -0
  49. package/dist/{FT4JK367.js → WTU5LLJL.js} +5 -5
  50. package/dist/{FT4JK367.js.map → WTU5LLJL.js.map} +1 -1
  51. package/dist/ZBEXHZRK.js +46 -0
  52. package/dist/ZBEXHZRK.js.map +1 -0
  53. package/dist/cli.js +21 -16
  54. package/dist/config.d.ts +4 -0
  55. package/dist/config.d.ts.map +1 -1
  56. package/dist/config.js +3 -3
  57. package/dist/context.js +1 -1
  58. package/dist/core/index.js +17 -12
  59. package/dist/core/local-executor.js +2 -2
  60. package/dist/core/local-executor.test.js +3 -3
  61. package/dist/core/lock.js +2 -2
  62. package/dist/core/lock.test.js +3 -3
  63. package/dist/core/tool-executor.d.ts.map +1 -1
  64. package/dist/core/tool-executor.js +16 -11
  65. package/dist/core/tool-executor.test.js +17 -12
  66. package/dist/core/tool-executor.test.js.map +1 -1
  67. package/dist/core/version-resolver.js +4 -4
  68. package/dist/display/formatters.js +4 -4
  69. package/dist/display/index.js +6 -6
  70. package/dist/display/version-display.js +5 -5
  71. package/dist/environment.js +2 -2
  72. package/dist/github/index.js +7 -7
  73. package/dist/github/matrix.js +6 -6
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +24 -19
  77. package/dist/index.js.map +1 -1
  78. package/dist/mini-workspace/index.d.ts +6 -0
  79. package/dist/mini-workspace/index.d.ts.map +1 -0
  80. package/dist/mini-workspace/index.js +10 -0
  81. package/dist/mini-workspace/index.js.map +1 -0
  82. package/dist/mini-workspace/mini-workspace.test.js +643 -0
  83. package/dist/mini-workspace/mini-workspace.test.js.map +1 -0
  84. package/dist/mini-workspace/node-modules.d.ts +19 -0
  85. package/dist/mini-workspace/node-modules.d.ts.map +1 -0
  86. package/dist/mini-workspace/node-modules.js +4 -0
  87. package/dist/mini-workspace/node-modules.js.map +1 -0
  88. package/dist/mini-workspace/types.d.ts +82 -0
  89. package/dist/mini-workspace/types.d.ts.map +1 -0
  90. package/dist/mini-workspace/types.js +6 -0
  91. package/dist/mini-workspace/types.js.map +1 -0
  92. package/dist/mini-workspace/workspace-dependency-graph.d.ts +10 -0
  93. package/dist/mini-workspace/workspace-dependency-graph.d.ts.map +1 -0
  94. package/dist/mini-workspace/workspace-dependency-graph.js +7 -0
  95. package/dist/mini-workspace/workspace-dependency-graph.js.map +1 -0
  96. package/dist/mini-workspace/workspace-source-copy.d.ts +15 -0
  97. package/dist/mini-workspace/workspace-source-copy.d.ts.map +1 -0
  98. package/dist/mini-workspace/workspace-source-copy.js +6 -0
  99. package/dist/mini-workspace/workspace-source-copy.js.map +1 -0
  100. package/dist/test.js +6 -6
  101. package/dist/utils/docker.js +5 -5
  102. package/dist/utils/docker.test.js +6 -6
  103. package/dist/utils/error.js +2 -2
  104. package/dist/utils/finder.js +2 -2
  105. package/dist/utils/fs.d.ts +12 -0
  106. package/dist/utils/fs.d.ts.map +1 -0
  107. package/dist/utils/fs.js +4 -0
  108. package/dist/utils/fs.js.map +1 -0
  109. package/dist/utils.d.ts +0 -1
  110. package/dist/utils.d.ts.map +1 -1
  111. package/dist/utils.js +3 -3
  112. package/package.json +8 -5
  113. package/dist/3N42XVZL.js +0 -6
  114. package/dist/7CGWPLOJ.js.map +0 -1
  115. package/dist/IIZVEHVD.js.map +0 -1
  116. package/dist/N53MNPWU.js +0 -6
  117. package/dist/PXDULNML.js +0 -37
  118. package/dist/PXDULNML.js.map +0 -1
  119. package/dist/TXIQ74D3.js.map +0 -1
  120. package/dist/U3L7CZHW.js +0 -284
  121. package/dist/U3L7CZHW.js.map +0 -1
@@ -0,0 +1,84 @@
1
+ import { resolveWorkspaceDependencyGraph } from './ID575YY3.js';
2
+ import { copyWorkspaceSources } from './BTTCOAYB.js';
3
+ import { safeRemove } from './SKMNEOBU.js';
4
+ import { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './ZBEXHZRK.js';
5
+ import { init_esm_shims, __name } from './6M2RYAT4.js';
6
+ import { resolve } from 'path';
7
+
8
+ // src/mini-workspace/index.ts
9
+ init_esm_shims();
10
+ var FALLBACK_DIAGNOSTIC = "No mini-workspace pruner configured; using unpruned package-level source copy fallback.";
11
+ var createPrunerInput = /* @__PURE__ */ __name(({ dependencyGraph, cwd }) => ({
12
+ repoRoot: dependencyGraph.repoRoot,
13
+ packageRoot: dependencyGraph.packageRoot,
14
+ packageRelativePath: dependencyGraph.packageRelativePath,
15
+ cwd,
16
+ dependencyGraph
17
+ }), "createPrunerInput");
18
+ var collectDiagnostics = /* @__PURE__ */ __name((...sources) => sources.flatMap((source) => source?.diagnostics ? [
19
+ ...source.diagnostics
20
+ ] : []), "collectDiagnostics");
21
+ var resolvePruner = /* @__PURE__ */ __name(async ({ pruner, dependencyGraph, cwd }) => {
22
+ if (!pruner) {
23
+ return {
24
+ diagnostics: [
25
+ FALLBACK_DIAGNOSTIC
26
+ ]
27
+ };
28
+ }
29
+ const input = createPrunerInput({
30
+ dependencyGraph,
31
+ cwd
32
+ });
33
+ const prunePlan = await pruner.createPrunePlan(input);
34
+ return {
35
+ prunerName: pruner.name,
36
+ prunePlan,
37
+ diagnostics: collectDiagnostics(prunePlan)
38
+ };
39
+ }, "resolvePruner");
40
+ var createMiniWorkspace = /* @__PURE__ */ __name(async (options = {}) => {
41
+ const cwd = resolve(options.cwd ?? process.cwd());
42
+ const dependencyGraph = await resolveWorkspaceDependencyGraph({
43
+ cwd
44
+ });
45
+ const prunerResolution = await resolvePruner({
46
+ pruner: options.pruner,
47
+ dependencyGraph,
48
+ cwd
49
+ });
50
+ const sourceCopy = await copyWorkspaceSources({
51
+ dependencyGraph,
52
+ prunePatterns: prunerResolution.prunePlan?.patterns,
53
+ packagePrunePatterns: prunerResolution.prunePlan?.packagePatterns
54
+ });
55
+ try {
56
+ await copyRootNodeModulesSymlinks({
57
+ repoRoot: dependencyGraph.repoRoot,
58
+ miniRoot: sourceCopy.miniRoot,
59
+ dependencyNames: dependencyGraph.rootNodeModulesDependencyNames
60
+ });
61
+ } catch (error) {
62
+ await safeRemove(sourceCopy.miniRoot);
63
+ throw error;
64
+ }
65
+ const copiedPackagePathEntries = sourceCopy.copiedWorkspaceDependencies.map((dependency) => [
66
+ dependency.relativePath,
67
+ dependency.absolutePath
68
+ ]).sort(([a], [b]) => a.localeCompare(b));
69
+ return {
70
+ packageRoot: dependencyGraph.packageRoot,
71
+ repoRoot: dependencyGraph.repoRoot,
72
+ miniRoot: sourceCopy.miniRoot,
73
+ packageRelativePath: dependencyGraph.packageRelativePath,
74
+ pnpmVirtualStoreMount: getPnpmVirtualStoreMount(dependencyGraph.repoRoot),
75
+ copiedWorkspacePackageCount: copiedPackagePathEntries.length,
76
+ copiedWorkspacePackagePaths: Object.fromEntries(copiedPackagePathEntries),
77
+ prunerName: prunerResolution.prunerName,
78
+ diagnostics: prunerResolution.diagnostics
79
+ };
80
+ }, "createMiniWorkspace");
81
+
82
+ export { createMiniWorkspace };
83
+ //# sourceMappingURL=WIT6LHNF.js.map
84
+ //# sourceMappingURL=WIT6LHNF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mini-workspace/index.ts"],"names":["FALLBACK_DIAGNOSTIC","createPrunerInput","dependencyGraph","cwd","repoRoot","packageRoot","packageRelativePath","collectDiagnostics","sources","flatMap","source","diagnostics","resolvePruner","pruner","input","prunePlan","createPrunePlan","prunerName","name","createMiniWorkspace","options","resolve","process","resolveWorkspaceDependencyGraph","prunerResolution","sourceCopy","copyWorkspaceSources","prunePatterns","patterns","packagePrunePatterns","packagePatterns","copyRootNodeModulesSymlinks","miniRoot","dependencyNames","rootNodeModulesDependencyNames","error","safeRemove","copiedPackagePathEntries","copiedWorkspaceDependencies","map","dependency","relativePath","absolutePath","sort","a","b","localeCompare","pnpmVirtualStoreMount","getPnpmVirtualStoreMount","copiedWorkspacePackageCount","length","copiedWorkspacePackagePaths","Object","fromEntries"],"mappings":"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","file":"WIT6LHNF.js","sourcesContent":["import { resolve } from 'node:path';\n\nimport { safeRemove } from '../utils/fs';\nimport { copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount } from './node-modules';\nimport type {\n MiniWorkspace,\n MiniWorkspaceOptions,\n MiniWorkspacePrunePlan,\n MiniWorkspacePruner,\n MiniWorkspacePrunerInput,\n WorkspaceDependencyGraph,\n} from './types';\nimport { resolveWorkspaceDependencyGraph } from './workspace-dependency-graph';\nimport { copyWorkspaceSources } from './workspace-source-copy';\n\nexport type {\n MiniWorkspace,\n MiniWorkspaceOptions,\n MiniWorkspacePrunePlan,\n MiniWorkspacePruner,\n MiniWorkspacePrunerInput,\n PnpmVirtualStoreMount,\n WorkspaceDependencyEdge,\n WorkspaceDependencyGraph,\n} from './types';\nexport { DEFAULT_SOURCE_COPY_PATTERNS } from './workspace-source-copy';\n\nconst FALLBACK_DIAGNOSTIC =\n 'No mini-workspace pruner configured; using unpruned package-level source copy fallback.';\n\ninterface PrunerResolution {\n prunerName?: string;\n prunePlan?: MiniWorkspacePrunePlan;\n diagnostics: string[];\n}\n\nconst createPrunerInput = ({\n dependencyGraph,\n cwd,\n}: {\n dependencyGraph: WorkspaceDependencyGraph;\n cwd: string;\n}): MiniWorkspacePrunerInput => ({\n repoRoot: dependencyGraph.repoRoot,\n packageRoot: dependencyGraph.packageRoot,\n packageRelativePath: dependencyGraph.packageRelativePath,\n cwd,\n dependencyGraph,\n});\n\nconst collectDiagnostics = (\n ...sources: readonly (MiniWorkspacePrunePlan | void | undefined)[]\n): string[] => sources.flatMap((source) => (source?.diagnostics ? [...source.diagnostics] : []));\n\nconst resolvePruner = async ({\n pruner,\n dependencyGraph,\n cwd,\n}: {\n pruner?: MiniWorkspacePruner;\n dependencyGraph: WorkspaceDependencyGraph;\n cwd: string;\n}): Promise<PrunerResolution> => {\n if (!pruner) {\n return { diagnostics: [FALLBACK_DIAGNOSTIC] };\n }\n\n const input = createPrunerInput({ dependencyGraph, cwd });\n const prunePlan = await pruner.createPrunePlan(input);\n\n return {\n prunerName: pruner.name,\n prunePlan,\n diagnostics: collectDiagnostics(prunePlan),\n };\n};\n\n/** Create the shared mini-workspace filesystem used by containerized package builds. */\nexport const createMiniWorkspace = async (\n options: MiniWorkspaceOptions = {},\n): Promise<MiniWorkspace> => {\n const cwd = resolve(options.cwd ?? process.cwd());\n const dependencyGraph = await resolveWorkspaceDependencyGraph({\n cwd,\n });\n const prunerResolution = await resolvePruner({\n pruner: options.pruner,\n dependencyGraph,\n cwd,\n });\n const sourceCopy = await copyWorkspaceSources({\n dependencyGraph,\n prunePatterns: prunerResolution.prunePlan?.patterns,\n packagePrunePatterns: prunerResolution.prunePlan?.packagePatterns,\n });\n\n try {\n await copyRootNodeModulesSymlinks({\n repoRoot: dependencyGraph.repoRoot,\n miniRoot: sourceCopy.miniRoot,\n dependencyNames: dependencyGraph.rootNodeModulesDependencyNames,\n });\n } catch (error) {\n await safeRemove(sourceCopy.miniRoot);\n throw error;\n }\n\n const copiedPackagePathEntries = sourceCopy.copiedWorkspaceDependencies\n .map((dependency) => [dependency.relativePath, dependency.absolutePath] as const)\n .sort(([a], [b]) => a.localeCompare(b));\n\n return {\n packageRoot: dependencyGraph.packageRoot,\n repoRoot: dependencyGraph.repoRoot,\n miniRoot: sourceCopy.miniRoot,\n packageRelativePath: dependencyGraph.packageRelativePath,\n pnpmVirtualStoreMount: getPnpmVirtualStoreMount(dependencyGraph.repoRoot),\n copiedWorkspacePackageCount: copiedPackagePathEntries.length,\n copiedWorkspacePackagePaths: Object.fromEntries(copiedPackagePathEntries),\n prunerName: prunerResolution.prunerName,\n diagnostics: prunerResolution.diagnostics,\n };\n};\n"]}
@@ -1,6 +1,6 @@
1
- import { getCombinationId } from './PXDULNML.js';
2
- import { getToolDefaultVersion, getToolSupportedVersions, findToolVersionsForCombination } from './X6QPMSID.js';
3
- import { init_esm_shims, __name } from './TXIQ74D3.js';
1
+ import { getCombinationId } from './LYF4JPSK.js';
2
+ import { getToolDefaultVersion, getToolSupportedVersions, findToolVersionsForCombination } from './UBSQYHMB.js';
3
+ import { init_esm_shims, __name } from './6M2RYAT4.js';
4
4
  import * as console from 'console';
5
5
 
6
6
  // src/core/version-resolver.ts
@@ -33,5 +33,5 @@ var resolveTypeVersions = /* @__PURE__ */ __name((context, userVersions) => {
33
33
  }, "resolveTypeVersions");
34
34
 
35
35
  export { resolveTypeVersions };
36
- //# sourceMappingURL=FT4JK367.js.map
37
- //# sourceMappingURL=FT4JK367.js.map
36
+ //# sourceMappingURL=WTU5LLJL.js.map
37
+ //# sourceMappingURL=WTU5LLJL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/version-resolver.ts"],"names":["resolveTypeVersions","context","userVersions","versions","tool","tools","defaultVersion","getToolDefaultVersion","name","version","supportedVersions","getToolSupportedVersions","includes","console","warn","join","combination","versionCombinations","find","Object","entries","findToolVersionsForCombination","every","Error","info","getCombinationId","description"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAaO,IAAMA,mBAAAA,mBAAsB,MAAA,CAAA,CAC/BC,OAAAA,EACAC,YAAAA,KAAAA;AAGA,EAAA,MAAMC,WAAmC,EAAC;AAE1C,EAAA,KAAA,MAAWC,IAAAA,IAAQH,QAAQI,KAAAA,EAAO;AAC9B,IAAA,MAAMC,cAAAA,GAAiBC,qBAAAA,CAAsBN,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAC/D,IAAA,MAAMC,OAAAA,GAAUP,YAAAA,CAAaE,IAAAA,CAAKI,IAAI,CAAA,IAAKF,cAAAA;AAE3C,IAAA,IAAI,CAACG,OAAAA,EAAS;AACV,MAAA;AACJ,IAAA;AAEAN,IAAAA,QAAAA,CAASC,IAAAA,CAAKI,IAAI,CAAA,GAAIC,OAAAA;AAEtB,IAAA,IAAIA,YAAYH,cAAAA,EAAgB;AAC5B,MAAA;AACJ,IAAA;AAGA,IAAA,MAAMI,iBAAAA,GAAoBC,wBAAAA,CAAyBV,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAErE,IAAA,IAAI,CAACE,iBAAAA,CAAkBE,QAAAA,CAASH,OAAAA,CAAAA,EAAU;AACtCI,MAAQC,aAAK,CAAA,sBAAA,EAAeL,OAAAA,CAAAA,KAAAA,EAAeL,IAAAA,CAAKI,IAAI,CAAA,8BAAA,CAAgC,CAAA;AACpFK,MAAQC,aAAK,CAAA,uBAAA,EAA0BJ,iBAAAA,CAAkBK,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAO,CAAA;AACrEF,MAAQC,aAAK,CAAA,6DAAA,CAA+D,CAAA;AAChF,IAAA;AACJ,EAAA;AAGA,EAAA,MAAME,WAAAA,GAAcf,QAAQgB,mBAAAA,CAAoBC,IAAAA,CAAK,CAACF,YAAAA,KAClDG,MAAAA,CAAOC,OAAAA,CAAQC,8BAAAA,CAA+BpB,OAAAA,EAASe,YAAAA,CAAAA,CAAAA,CAAcM,KAAAA,CACjE,CAAC,CAAClB,IAAAA,EAAMK,OAAAA,MAAaN,QAAAA,CAASC,IAAAA,CAAAA,KAAUK,OAAAA,CAAAA,CAAAA;AAIhD,EAAA,IAAI,CAACO,WAAAA,EAAa;AACd,IAAA,MAAM,IAAIO,MAAM,mDAAA,CAAA;AACpB,EAAA;AAEAV,EAAQW,OAAAA,CAAAA,IAAAA,CACJ,CAAA,OAAA,EAAKC,gBAAAA,CAAiBxB,OAAAA,EAASe,WAAAA,CAAAA,CAAAA,CAAAA,EAAgBA,WAAAA,CAAYU,WAAAA,GAAc,CAAA,CAAA,EAAIV,WAAAA,CAAYU,WAAW,CAAA,CAAA,CAAA,GAAM,EAAA,CAAA,CAAI,CAAA;AAGlH,EAAA,OAAOvB,QAAAA;AACX,CAAA,EA/CmC,qBAAA","file":"FT4JK367.js","sourcesContent":["import * as console from 'node:console';\n\nimport type { ChainContext } from '../context';\nimport { getCombinationId } from '../utils';\nimport {\n findToolVersionsForCombination,\n getToolDefaultVersion,\n getToolSupportedVersions,\n} from '../utils/finder';\n\n/**\n * Resolve versions for all tools in a type with compatibility checking\n */\nexport const resolveTypeVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n userVersions: Record<string, string>,\n): Record<string, string> => {\n // Collect versions from all sources for each tool\n const versions: Record<string, string> = {};\n\n for (const tool of context.tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const version = userVersions[tool.name] || defaultVersion;\n\n if (!version) {\n continue;\n }\n\n versions[tool.name] = version;\n\n if (version === defaultVersion) {\n continue;\n }\n\n // Validate the user-specified version if not default.\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n if (!supportedVersions.includes(version)) {\n console.warn(`⚠️ Version ${version} for ${tool.name} is not in the supported list.`);\n console.warn(` Supported versions: ${supportedVersions.join(', ')}`);\n console.warn(` Continuing with Docker availability as final validation...`);\n }\n }\n\n // Check if current combination matches any compatible combination\n const combination = context.versionCombinations.find((combination) =>\n Object.entries(findToolVersionsForCombination(context, combination)).every(\n ([tool, version]) => versions[tool] === version,\n ),\n );\n\n if (!combination) {\n throw new Error('Compatible combination of tool versions not found');\n }\n\n console.info(\n `✅ ${getCombinationId(context, combination)} ${combination.description ? `(${combination.description})` : ''}`,\n );\n\n return versions;\n};\n"]}
1
+ {"version":3,"sources":["../src/core/version-resolver.ts"],"names":["resolveTypeVersions","context","userVersions","versions","tool","tools","defaultVersion","getToolDefaultVersion","name","version","supportedVersions","getToolSupportedVersions","includes","console","warn","join","combination","versionCombinations","find","Object","entries","findToolVersionsForCombination","every","Error","info","getCombinationId","description"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAaO,IAAMA,mBAAAA,mBAAsB,MAAA,CAAA,CAC/BC,OAAAA,EACAC,YAAAA,KAAAA;AAGA,EAAA,MAAMC,WAAmC,EAAC;AAE1C,EAAA,KAAA,MAAWC,IAAAA,IAAQH,QAAQI,KAAAA,EAAO;AAC9B,IAAA,MAAMC,cAAAA,GAAiBC,qBAAAA,CAAsBN,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAC/D,IAAA,MAAMC,OAAAA,GAAUP,YAAAA,CAAaE,IAAAA,CAAKI,IAAI,CAAA,IAAKF,cAAAA;AAE3C,IAAA,IAAI,CAACG,OAAAA,EAAS;AACV,MAAA;AACJ,IAAA;AAEAN,IAAAA,QAAAA,CAASC,IAAAA,CAAKI,IAAI,CAAA,GAAIC,OAAAA;AAEtB,IAAA,IAAIA,YAAYH,cAAAA,EAAgB;AAC5B,MAAA;AACJ,IAAA;AAGA,IAAA,MAAMI,iBAAAA,GAAoBC,wBAAAA,CAAyBV,OAAAA,EAASG,IAAAA,CAAKI,IAAI,CAAA;AAErE,IAAA,IAAI,CAACE,iBAAAA,CAAkBE,QAAAA,CAASH,OAAAA,CAAAA,EAAU;AACtCI,MAAQC,aAAK,CAAA,sBAAA,EAAeL,OAAAA,CAAAA,KAAAA,EAAeL,IAAAA,CAAKI,IAAI,CAAA,8BAAA,CAAgC,CAAA;AACpFK,MAAQC,aAAK,CAAA,uBAAA,EAA0BJ,iBAAAA,CAAkBK,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAO,CAAA;AACrEF,MAAQC,aAAK,CAAA,6DAAA,CAA+D,CAAA;AAChF,IAAA;AACJ,EAAA;AAGA,EAAA,MAAME,WAAAA,GAAcf,QAAQgB,mBAAAA,CAAoBC,IAAAA,CAAK,CAACF,YAAAA,KAClDG,MAAAA,CAAOC,OAAAA,CAAQC,8BAAAA,CAA+BpB,OAAAA,EAASe,YAAAA,CAAAA,CAAAA,CAAcM,KAAAA,CACjE,CAAC,CAAClB,IAAAA,EAAMK,OAAAA,MAAaN,QAAAA,CAASC,IAAAA,CAAAA,KAAUK,OAAAA,CAAAA,CAAAA;AAIhD,EAAA,IAAI,CAACO,WAAAA,EAAa;AACd,IAAA,MAAM,IAAIO,MAAM,mDAAA,CAAA;AACpB,EAAA;AAEAV,EAAQW,OAAAA,CAAAA,IAAAA,CACJ,CAAA,OAAA,EAAKC,gBAAAA,CAAiBxB,OAAAA,EAASe,WAAAA,CAAAA,CAAAA,CAAAA,EAAgBA,WAAAA,CAAYU,WAAAA,GAAc,CAAA,CAAA,EAAIV,WAAAA,CAAYU,WAAW,CAAA,CAAA,CAAA,GAAM,EAAA,CAAA,CAAI,CAAA;AAGlH,EAAA,OAAOvB,QAAAA;AACX,CAAA,EA/CmC,qBAAA","file":"WTU5LLJL.js","sourcesContent":["import * as console from 'node:console';\n\nimport type { ChainContext } from '../context';\nimport { getCombinationId } from '../utils';\nimport {\n findToolVersionsForCombination,\n getToolDefaultVersion,\n getToolSupportedVersions,\n} from '../utils/finder';\n\n/**\n * Resolve versions for all tools in a type with compatibility checking\n */\nexport const resolveTypeVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n userVersions: Record<string, string>,\n): Record<string, string> => {\n // Collect versions from all sources for each tool\n const versions: Record<string, string> = {};\n\n for (const tool of context.tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const version = userVersions[tool.name] || defaultVersion;\n\n if (!version) {\n continue;\n }\n\n versions[tool.name] = version;\n\n if (version === defaultVersion) {\n continue;\n }\n\n // Validate the user-specified version if not default.\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n if (!supportedVersions.includes(version)) {\n console.warn(`⚠️ Version ${version} for ${tool.name} is not in the supported list.`);\n console.warn(` Supported versions: ${supportedVersions.join(', ')}`);\n console.warn(` Continuing with Docker availability as final validation...`);\n }\n }\n\n // Check if current combination matches any compatible combination\n const combination = context.versionCombinations.find((combination) =>\n Object.entries(findToolVersionsForCombination(context, combination)).every(\n ([tool, version]) => versions[tool] === version,\n ),\n );\n\n if (!combination) {\n throw new Error('Compatible combination of tool versions not found');\n }\n\n console.info(\n `✅ ${getCombinationId(context, combination)} ${combination.description ? `(${combination.description})` : ''}`,\n );\n\n return versions;\n};\n"]}
@@ -0,0 +1,46 @@
1
+ import { init_esm_shims, __name } from './6M2RYAT4.js';
2
+ import { mkdir, lstat, symlink, readlink } from 'fs/promises';
3
+ import { join, dirname } from 'path';
4
+ import pLimit from 'p-limit';
5
+
6
+ // src/mini-workspace/node-modules.ts
7
+ init_esm_shims();
8
+ var COPY_CONCURRENCY = 10;
9
+ var copyNodeModulesSymlinks = /* @__PURE__ */ __name(async (sourceDir, targetDir, dependencyNames) => {
10
+ const limit = pLimit(COPY_CONCURRENCY);
11
+ const symlinks = await Promise.all(dependencyNames.map((packageName) => limit(async () => {
12
+ const sourcePath = join(sourceDir, packageName);
13
+ const targetPath = join(targetDir, packageName);
14
+ const stats = await lstat(sourcePath);
15
+ if (!stats.isSymbolicLink()) return void 0;
16
+ await mkdir(dirname(targetPath), {
17
+ recursive: true
18
+ });
19
+ await symlink(await readlink(sourcePath), targetPath);
20
+ return packageName;
21
+ })));
22
+ return symlinks.flatMap((symlink2) => symlink2 ? [
23
+ symlink2
24
+ ] : []);
25
+ }, "copyNodeModulesSymlinks");
26
+ var copyRootNodeModulesSymlinks = /* @__PURE__ */ __name(async ({ repoRoot, miniRoot, dependencyNames }) => {
27
+ const sourceNodeModules = join(repoRoot, "node_modules");
28
+ const targetNodeModules = join(miniRoot, "node_modules");
29
+ await mkdir(join(targetNodeModules, ".pnpm"), {
30
+ recursive: true
31
+ });
32
+ const symlinks = await copyNodeModulesSymlinks(sourceNodeModules, targetNodeModules, dependencyNames);
33
+ return {
34
+ nodeModulesPath: targetNodeModules,
35
+ symlinks: symlinks.sort()
36
+ };
37
+ }, "copyRootNodeModulesSymlinks");
38
+ var getPnpmVirtualStoreMount = /* @__PURE__ */ __name((repoRoot, containerWorkspaceRoot = "/workspace") => ({
39
+ hostPath: join(repoRoot, "node_modules", ".pnpm"),
40
+ containerPath: `${containerWorkspaceRoot}/node_modules/.pnpm`,
41
+ readOnly: true
42
+ }), "getPnpmVirtualStoreMount");
43
+
44
+ export { COPY_CONCURRENCY, copyRootNodeModulesSymlinks, getPnpmVirtualStoreMount };
45
+ //# sourceMappingURL=ZBEXHZRK.js.map
46
+ //# sourceMappingURL=ZBEXHZRK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mini-workspace/node-modules.ts"],"names":["COPY_CONCURRENCY","copyNodeModulesSymlinks","sourceDir","targetDir","dependencyNames","limit","pLimit","symlinks","Promise","all","map","packageName","sourcePath","join","targetPath","stats","lstat","isSymbolicLink","undefined","mkdir","dirname","recursive","symlink","readlink","flatMap","copyRootNodeModulesSymlinks","repoRoot","miniRoot","sourceNodeModules","targetNodeModules","nodeModulesPath","sort","getPnpmVirtualStoreMount","containerWorkspaceRoot","hostPath","containerPath","readOnly"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAUO,IAAMA,gBAAAA,GAAmB;AAEhC,IAAMC,uBAAAA,mBAA0B,MAAA,CAAA,OAC5BC,SAAAA,EACAC,SAAAA,EACAC,eAAAA,KAAAA;AAEA,EAAA,MAAMC,KAAAA,GAAQC,OAAON,gBAAAA,CAAAA;AAErB,EAAA,MAAMO,QAAAA,GAAW,MAAMC,OAAAA,CAAQC,GAAAA,CAC3BL,gBAAgBM,GAAAA,CAAI,CAACC,WAAAA,KACjBN,KAAAA,CAAM,YAAA;AACF,IAAA,MAAMO,UAAAA,GAAaC,IAAAA,CAAKX,SAAAA,EAAWS,WAAAA,CAAAA;AACnC,IAAA,MAAMG,UAAAA,GAAaD,IAAAA,CAAKV,SAAAA,EAAWQ,WAAAA,CAAAA;AACnC,IAAA,MAAMI,KAAAA,GAAQ,MAAMC,KAAAA,CAAMJ,UAAAA,CAAAA;AAE1B,IAAA,IAAI,CAACG,KAAAA,CAAME,cAAAA,EAAc,EAAI,OAAOC,MAAAA;AAEpC,IAAA,MAAMC,KAAAA,CAAMC,OAAAA,CAAQN,UAAAA,CAAAA,EAAa;MAAEO,SAAAA,EAAW;KAAK,CAAA;AACnD,IAAA,MAAMC,OAAAA,CAAQ,MAAMC,QAAAA,CAASX,UAAAA,GAAaE,UAAAA,CAAAA;AAE1C,IAAA,OAAOH,WAAAA;AACX,EAAA,CAAA,CAAA,CAAA,CAAA;AAIR,EAAA,OAAOJ,QAAAA,CAASiB,OAAAA,CAAQ,CAACF,QAAAA,KAAaA,QAAAA,GAAU;AAACA,IAAAA;AAAW,GAAA,GAAA,EAAE,CAAA;AAClE,CAAA,EAzBgC,yBAAA,CAAA;AAmCzB,IAAMG,8CAA8B,MAAA,CAAA,OAAO,EAC9CC,QAAAA,EACAC,QAAAA,EACAvB,iBAAe,KACiB;AAChC,EAAA,MAAMwB,iBAAAA,GAAoBf,IAAAA,CAAKa,QAAAA,EAAU,cAAA,CAAA;AACzC,EAAA,MAAMG,iBAAAA,GAAoBhB,IAAAA,CAAKc,QAAAA,EAAU,cAAA,CAAA;AAIzC,EAAA,MAAMR,KAAAA,CAAMN,IAAAA,CAAKgB,iBAAAA,EAAmB,OAAA,CAAA,EAAU;IAAER,SAAAA,EAAW;GAAK,CAAA;AAChE,EAAA,MAAMd,QAAAA,GAAW,MAAMN,uBAAAA,CACnB2B,iBAAAA,EACAC,mBACAzB,eAAAA,CAAAA;AAGJ,EAAA,OAAO;IACH0B,eAAAA,EAAiBD,iBAAAA;AACjBtB,IAAAA,QAAAA,EAAUA,SAASwB,IAAAA;AACvB,GAAA;AACJ,CAAA,EArB2C,6BAAA;AA6BpC,IAAMC,wBAAAA,mBAA2B,MAAA,CAAA,CACpCN,QAAAA,EACAO,sBAAAA,GAAyB,YAAA,MACA;EACzBC,QAAAA,EAAUrB,IAAAA,CAAKa,QAAAA,EAAU,cAAA,EAAgB,OAAA,CAAA;AACzCS,EAAAA,aAAAA,EAAe,GAAGF,sBAAAA,CAAAA,mBAAAA,CAAAA;EAClBG,QAAAA,EAAU;AACd,CAAA,CAAA,EAPwC,0BAAA","file":"ZBEXHZRK.js","sourcesContent":["import { lstat, mkdir, readlink, symlink } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport pLimit from 'p-limit';\n\nimport type {\n PnpmVirtualStoreMount,\n RootNodeModulesSymlinkCopyOptions,\n RootNodeModulesSymlinkCopyResult,\n} from './types';\n\nexport const COPY_CONCURRENCY = 10;\n\nconst copyNodeModulesSymlinks = async (\n sourceDir: string,\n targetDir: string,\n dependencyNames: readonly string[],\n): Promise<string[]> => {\n const limit = pLimit(COPY_CONCURRENCY);\n\n const symlinks = await Promise.all(\n dependencyNames.map((packageName) =>\n limit(async (): Promise<string | undefined> => {\n const sourcePath = join(sourceDir, packageName);\n const targetPath = join(targetDir, packageName);\n const stats = await lstat(sourcePath);\n\n if (!stats.isSymbolicLink()) return undefined;\n\n await mkdir(dirname(targetPath), { recursive: true });\n await symlink(await readlink(sourcePath), targetPath);\n\n return packageName;\n }),\n ),\n );\n\n return symlinks.flatMap((symlink) => (symlink ? [symlink] : []));\n};\n\n/**\n * Copy selected root node_modules dependency symlinks into a mini workspace.\n *\n * pnpm's node_modules is primarily symlinks over node_modules/.pnpm and workspace packages.\n * Copying those symlinks does not copy their targets. The `.pnpm` virtual store is provided by a\n * read-only Docker mount. Package dependency resolution stays package-local; the graph decides\n * which root node_modules entries are needed by the workspace package closure.\n */\nexport const copyRootNodeModulesSymlinks = async ({\n repoRoot,\n miniRoot,\n dependencyNames,\n}: RootNodeModulesSymlinkCopyOptions): Promise<RootNodeModulesSymlinkCopyResult> => {\n const sourceNodeModules = join(repoRoot, 'node_modules');\n const targetNodeModules = join(miniRoot, 'node_modules');\n\n // Pre-create the .pnpm mountpoint (recursive mkdir also creates node_modules)\n // so Docker can bind-mount the virtual store over it.\n await mkdir(join(targetNodeModules, '.pnpm'), { recursive: true });\n const symlinks = await copyNodeModulesSymlinks(\n sourceNodeModules,\n targetNodeModules,\n dependencyNames,\n );\n\n return {\n nodeModulesPath: targetNodeModules,\n symlinks: symlinks.sort(),\n };\n};\n\n/**\n * Describe the pnpm virtual store mount used by package-root container builds.\n *\n * The implementation should mount `.pnpm` instead of copying it. This preserves pnpm's dependency\n * topology without copying the virtual store into every mini workspace.\n */\nexport const getPnpmVirtualStoreMount = (\n repoRoot: string,\n containerWorkspaceRoot = '/workspace',\n): PnpmVirtualStoreMount => ({\n hostPath: join(repoRoot, 'node_modules', '.pnpm'),\n containerPath: `${containerWorkspaceRoot}/node_modules/.pnpm`,\n readOnly: true,\n});\n"]}
package/dist/cli.js CHANGED
@@ -1,18 +1,23 @@
1
- export { runCli } from './7DDNJRV6.js';
2
- import './3N42XVZL.js';
3
- import './AIKNZKYE.js';
4
- import './NAWFODGG.js';
5
- import './N53MNPWU.js';
6
- import './U3L7CZHW.js';
7
- import './FFE7SXCG.js';
8
- import './IPZ5KX7M.js';
9
- import './H6FLARPD.js';
10
- import './FT4JK367.js';
11
- import './KBUFOLY3.js';
12
- import './7CGWPLOJ.js';
13
- import './RORYN2CM.js';
14
- import './PXDULNML.js';
15
- import './X6QPMSID.js';
16
- import './TXIQ74D3.js';
1
+ export { runCli } from './V4633Q24.js';
2
+ import './7ZZ35UQB.js';
3
+ import './INJJFIX2.js';
4
+ import './4Y7MN3EA.js';
5
+ import './2ICMBBWU.js';
6
+ import './DTNGUD3B.js';
7
+ import './EN67HYJT.js';
8
+ import './WIT6LHNF.js';
9
+ import './ID575YY3.js';
10
+ import './BTTCOAYB.js';
11
+ import './SKMNEOBU.js';
12
+ import './ZBEXHZRK.js';
13
+ import './DCLKPAAD.js';
14
+ import './H7YRHR5O.js';
15
+ import './WTU5LLJL.js';
16
+ import './H7PAZQ2B.js';
17
+ import './4LO2IH4K.js';
18
+ import './DHOHK2AA.js';
19
+ import './LYF4JPSK.js';
20
+ import './UBSQYHMB.js';
21
+ import './6M2RYAT4.js';
17
22
  //# sourceMappingURL=cli.js.map
18
23
  //# sourceMappingURL=cli.js.map
package/dist/config.d.ts CHANGED
@@ -1,13 +1,16 @@
1
1
  import * as z from 'zod';
2
2
  import type { ChainContext } from './context';
3
3
  import type { ToolCommandExecutionOptions } from './core/tool-executor';
4
+ import type { MiniWorkspacePruner } from './mini-workspace';
4
5
  export declare const CARGO_TARGET_CACHE_PATH = "/cargo-target";
5
6
  export declare const volumeMappingSchema: z.ZodUnion<readonly [z.ZodObject<{
6
7
  containerPath: z.ZodString;
8
+ readOnly: z.ZodOptional<z.ZodBoolean>;
7
9
  type: z.ZodLiteral<"host">;
8
10
  hostPath: z.ZodString;
9
11
  }, z.core.$strip>, z.ZodObject<{
10
12
  containerPath: z.ZodString;
13
+ readOnly: z.ZodOptional<z.ZodBoolean>;
11
14
  type: z.ZodLiteral<"isolate">;
12
15
  name: z.ZodString;
13
16
  shared: z.ZodOptional<z.ZodBoolean>;
@@ -33,6 +36,7 @@ export interface Tool {
33
36
  dockerPlatform?: DockerPlatformValue;
34
37
  defaultVolumes?: readonly VolumeMapping[];
35
38
  defaultEnv?: readonly EnvironmentVariable[];
39
+ miniWorkspacePruner?: MiniWorkspacePruner;
36
40
  getSecondaryVersion?: (args: {
37
41
  cwd: string;
38
42
  }) => Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAqCxE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAwBvD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;mBAAiE,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,eAAO,MAAM,sBAAsB,yCAA0C,CAAC;AAC9E,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,+BAA+B,mDAGlC,CAAC;AACX,eAAO,MAAM,2CAA2C,QACV,CAAC;AAI/C,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtF,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,sBACO,CAAC;AAE3E,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAGrC,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAG1C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAG5C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAG7D,UAAU,CAAC,EAAE,CACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,2BAA2B,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,0BAAkB,oBAAoB;IAClC,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,uBAAyD,CAAC;AACxF,eAAO,MAAM,WAAW,uBAAmD,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAoC5D,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAyBvD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;mBAAiE,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,eAAO,MAAM,sBAAsB,yCAA0C,CAAC;AAC9E,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,+BAA+B,mDAGlC,CAAC;AACX,eAAO,MAAM,2CAA2C,QACV,CAAC;AAI/C,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtF,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,sBACO,CAAC;AAE3E,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAGrC,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAG1C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAG5C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAG1C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAG7D,UAAU,CAAC,EAAE,CACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,2BAA2B,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,0BAAkB,oBAAoB;IAClC,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,uBAAyD,CAAC;AACxF,eAAO,MAAM,WAAW,uBAAmD,CAAC"}
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
- export { CARGO_TARGET_CACHE_PATH, DOCKER_PLATFORM_NATIVE, DOCKER_PLATFORM_OVERRIDE_VALUES, DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION, DOCKER_PLATFORM_VALUES, DockerRegistryMirror, getImageDirectory, getRegistry, isDockerPlatformOverride, volumeMappingSchema } from './7CGWPLOJ.js';
2
- import './RORYN2CM.js';
3
- import './TXIQ74D3.js';
1
+ export { CARGO_TARGET_CACHE_PATH, DOCKER_PLATFORM_NATIVE, DOCKER_PLATFORM_OVERRIDE_VALUES, DOCKER_PLATFORM_OVERRIDE_VALUES_DESCRIPTION, DOCKER_PLATFORM_VALUES, DockerRegistryMirror, getImageDirectory, getRegistry, isDockerPlatformOverride, volumeMappingSchema } from './4LO2IH4K.js';
2
+ import './DHOHK2AA.js';
3
+ import './6M2RYAT4.js';
4
4
  //# sourceMappingURL=config.js.map
5
5
  //# sourceMappingURL=config.js.map
package/dist/context.js CHANGED
@@ -1,4 +1,4 @@
1
- import { init_esm_shims } from './TXIQ74D3.js';
1
+ import { init_esm_shims } from './6M2RYAT4.js';
2
2
 
3
3
  // src/context.ts
4
4
  init_esm_shims();
@@ -1,14 +1,19 @@
1
- import '../N53MNPWU.js';
2
- export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../U3L7CZHW.js';
3
- import '../FFE7SXCG.js';
4
- export { executeLocally } from '../IPZ5KX7M.js';
5
- import '../H6FLARPD.js';
6
- export { resolveTypeVersions } from '../FT4JK367.js';
7
- import '../KBUFOLY3.js';
8
- import '../7CGWPLOJ.js';
9
- import '../RORYN2CM.js';
10
- import '../PXDULNML.js';
11
- import '../X6QPMSID.js';
12
- import '../TXIQ74D3.js';
1
+ import '../2ICMBBWU.js';
2
+ export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../DTNGUD3B.js';
3
+ import '../EN67HYJT.js';
4
+ import '../WIT6LHNF.js';
5
+ import '../ID575YY3.js';
6
+ import '../BTTCOAYB.js';
7
+ import '../SKMNEOBU.js';
8
+ import '../ZBEXHZRK.js';
9
+ export { executeLocally } from '../DCLKPAAD.js';
10
+ import '../H7YRHR5O.js';
11
+ export { resolveTypeVersions } from '../WTU5LLJL.js';
12
+ import '../H7PAZQ2B.js';
13
+ import '../4LO2IH4K.js';
14
+ import '../DHOHK2AA.js';
15
+ import '../LYF4JPSK.js';
16
+ import '../UBSQYHMB.js';
17
+ import '../6M2RYAT4.js';
13
18
  //# sourceMappingURL=index.js.map
14
19
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { executeLocally } from '../IPZ5KX7M.js';
2
- import '../TXIQ74D3.js';
1
+ export { executeLocally } from '../DCLKPAAD.js';
2
+ import '../6M2RYAT4.js';
3
3
  //# sourceMappingURL=local-executor.js.map
4
4
  //# sourceMappingURL=local-executor.js.map
@@ -1,6 +1,6 @@
1
- import { describe, it, globalExpect } from '../IIZVEHVD.js';
2
- import { executeLocally } from '../IPZ5KX7M.js';
3
- import { init_esm_shims, __name } from '../TXIQ74D3.js';
1
+ import { describe, it, globalExpect } from '../5GPTK3MH.js';
2
+ import { executeLocally } from '../DCLKPAAD.js';
3
+ import { init_esm_shims, __name } from '../6M2RYAT4.js';
4
4
  import process from 'process';
5
5
 
6
6
  // src/core/local-executor.test.ts
package/dist/core/lock.js CHANGED
@@ -1,4 +1,4 @@
1
- export { buildLockFilePath, lock, lockMany } from '../H6FLARPD.js';
2
- import '../TXIQ74D3.js';
1
+ export { buildLockFilePath, lock, lockMany } from '../H7YRHR5O.js';
2
+ import '../6M2RYAT4.js';
3
3
  //# sourceMappingURL=lock.js.map
4
4
  //# sourceMappingURL=lock.js.map
@@ -1,6 +1,6 @@
1
- import { it, globalExpect } from '../IIZVEHVD.js';
2
- import { lock, buildLockFilePath } from '../H6FLARPD.js';
3
- import { init_esm_shims } from '../TXIQ74D3.js';
1
+ import { it, globalExpect } from '../5GPTK3MH.js';
2
+ import { lock, buildLockFilePath } from '../H7YRHR5O.js';
3
+ import { init_esm_shims } from '../6M2RYAT4.js';
4
4
  import { mkdir, writeFile, stat } from 'fs/promises';
5
5
  import { dirname } from 'path';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/core/tool-executor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAK,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAE3C,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6C/C;;;GAGG;AACH,eAAO,MAAM,YAAY,GACrB,GAAG,QAAQ,SAAS,CAAC,SAAS,mBAAmB,EAAE,CAAC,EAAE,KACvD,mBAAmB,EAA+C,CAAC;AAYtE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC7B,QAAQ,MAAM,GAAG,SAAS,EAC1B,SAAS,SAAS,aAAa,EAAE,KAClC,mBAAmB,EAarB,CAAC;AAmIF,MAAM,WAAW,2BAA2B;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,mBAAmB,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,sBAAsB,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,SAAS,MAAM,EAC5D,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,EACI,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,UAAU,EAC5B,GAAG,EAAE,aAAa,EAClB,MAAM,EACN,OAAO,EACP,QAAa,EACb,qBAA4B,EAC5B,KAAK,EACL,cAAc,EAAE,sBAAsB,GACzC,EAAE,2BAA2B,GAC/B,OAAO,CAAC,aAAa,CAAC,CAuMxB"}
1
+ {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/core/tool-executor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAK,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAE3C,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8C/C;;;GAGG;AACH,eAAO,MAAM,YAAY,GACrB,GAAG,QAAQ,SAAS,CAAC,SAAS,mBAAmB,EAAE,CAAC,EAAE,KACvD,mBAAmB,EAA+C,CAAC;AAYtE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC7B,QAAQ,MAAM,GAAG,SAAS,EAC1B,SAAS,SAAS,aAAa,EAAE,KAClC,mBAAmB,EAarB,CAAC;AAgKF,MAAM,WAAW,2BAA2B;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,mBAAmB,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,sBAAsB,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,SAAS,MAAM,EAC5D,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,EACI,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,UAAU,EAC5B,GAAG,EAAE,aAAa,EAClB,MAAM,EACN,OAAO,EACP,QAAa,EACb,qBAA4B,EAC5B,KAAK,EACL,cAAc,EAAE,sBAAsB,GACzC,EAAE,2BAA2B,GAC/B,OAAO,CAAC,aAAa,CAAC,CA6PxB"}
@@ -1,13 +1,18 @@
1
- export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../U3L7CZHW.js';
2
- import '../FFE7SXCG.js';
3
- import '../IPZ5KX7M.js';
4
- import '../H6FLARPD.js';
5
- import '../FT4JK367.js';
6
- import '../KBUFOLY3.js';
7
- import '../7CGWPLOJ.js';
8
- import '../RORYN2CM.js';
9
- import '../PXDULNML.js';
10
- import '../X6QPMSID.js';
11
- import '../TXIQ74D3.js';
1
+ export { executeToolCommand, mergeToolEnv, resolveCargoCacheEnv } from '../DTNGUD3B.js';
2
+ import '../EN67HYJT.js';
3
+ import '../WIT6LHNF.js';
4
+ import '../ID575YY3.js';
5
+ import '../BTTCOAYB.js';
6
+ import '../SKMNEOBU.js';
7
+ import '../ZBEXHZRK.js';
8
+ import '../DCLKPAAD.js';
9
+ import '../H7YRHR5O.js';
10
+ import '../WTU5LLJL.js';
11
+ import '../H7PAZQ2B.js';
12
+ import '../4LO2IH4K.js';
13
+ import '../DHOHK2AA.js';
14
+ import '../LYF4JPSK.js';
15
+ import '../UBSQYHMB.js';
16
+ import '../6M2RYAT4.js';
12
17
  //# sourceMappingURL=tool-executor.js.map
13
18
  //# sourceMappingURL=tool-executor.js.map
@@ -1,15 +1,20 @@
1
- import { describe, it, globalExpect } from '../IIZVEHVD.js';
2
- import { resolveCargoCacheEnv, mergeToolEnv } from '../U3L7CZHW.js';
3
- import '../FFE7SXCG.js';
4
- import '../IPZ5KX7M.js';
5
- import '../H6FLARPD.js';
6
- import '../FT4JK367.js';
7
- import '../KBUFOLY3.js';
8
- import { CARGO_TARGET_CACHE_PATH } from '../7CGWPLOJ.js';
9
- import '../RORYN2CM.js';
10
- import '../PXDULNML.js';
11
- import '../X6QPMSID.js';
12
- import { init_esm_shims } from '../TXIQ74D3.js';
1
+ import { describe, it, globalExpect } from '../5GPTK3MH.js';
2
+ import { resolveCargoCacheEnv, mergeToolEnv } from '../DTNGUD3B.js';
3
+ import '../EN67HYJT.js';
4
+ import '../WIT6LHNF.js';
5
+ import '../ID575YY3.js';
6
+ import '../BTTCOAYB.js';
7
+ import '../SKMNEOBU.js';
8
+ import '../ZBEXHZRK.js';
9
+ import '../DCLKPAAD.js';
10
+ import '../H7YRHR5O.js';
11
+ import '../WTU5LLJL.js';
12
+ import '../H7PAZQ2B.js';
13
+ import { CARGO_TARGET_CACHE_PATH } from '../4LO2IH4K.js';
14
+ import '../DHOHK2AA.js';
15
+ import '../LYF4JPSK.js';
16
+ import '../UBSQYHMB.js';
17
+ import { init_esm_shims } from '../6M2RYAT4.js';
13
18
 
14
19
  // src/core/tool-executor.test.ts
15
20
  init_esm_shims();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/tool-executor.test.ts"],"names":["cacheVolume","type","containerPath","CARGO_TARGET_CACHE_PATH","name","withCache","cacheEnv","value","describe","resolveCargoCacheEnv","it","each","script","expect","toEqual","otherVolumes","undefined","renamed","mergeToolEnv","userEnv"],"mappings":"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","file":"tool-executor.test.js","sourcesContent":["import { describe, expect, it } from 'vitest';\n\nimport type { EnvironmentVariable, VolumeMapping } from '../config';\nimport { CARGO_TARGET_CACHE_PATH } from '../config';\nimport { mergeToolEnv, resolveCargoCacheEnv } from './tool-executor';\n\nconst cacheVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: CARGO_TARGET_CACHE_PATH,\n name: 'solana-target',\n};\n\nconst withCache: readonly VolumeMapping[] = [cacheVolume];\nconst cacheEnv = [{ name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH }];\n\ndescribe(resolveCargoCacheEnv, () => {\n describe('cache-safe scripts redirect at the shared cache', () => {\n it.each([\n 'cargo test -p anchor-trait --lib --tests',\n 'cargo test --manifest-path macros/examples/vault/Cargo.toml --lib --tests',\n 'cargo test -p rbac --test trybuild -- --ignored',\n 'cargo test --package onesig -- tests --nocapture',\n 'cargo test-ellipse',\n 'cargo test-triangle',\n 'cargo check',\n 'cargo nextest run',\n 'cargo +nightly-2025-06-01 fmt -- --check && cargo clippy --all-targets',\n // builtin t=test / c=check aliases.\n 'cargo t',\n 'cargo c',\n 'cargo +nightly-2025-06-01 t --lib',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual(cacheEnv);\n });\n });\n\n describe('artifact-producing builds are never redirected', () => {\n it.each([\n 'anchor build --no-idl --ignore-keys',\n 'cargo build',\n 'cargo build-sbf',\n // test-sbf/test-bpf build .so despite the `test-` prefix.\n 'cargo test-sbf',\n 'cargo test-bpf --features foo',\n // Dashed binary forms (the real protocol `test` script is `cargo-test-sbf`) — the\n // space-anchored cargo branch misses these, so they need their own alternative.\n 'cargo-test-sbf',\n 'cargo-build-sbf',\n 'cargo-build-bpf --features x',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n\n it('skips when a build and a test share one script (build half must reach the host)', () => {\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('anchor build && cargo test --lib', withCache)).toEqual([]);\n // builtin b=build alias must still defeat the redirect when paired with a test.\n expect(resolveCargoCacheEnv('cargo b && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('cargo b && cargo t', withCache)).toEqual([]);\n // `anchor idl build` emits host IDL JSON — must defeat the redirect like any build.\n expect(\n resolveCargoCacheEnv('cargo test --lib && anchor idl build -o x.json', withCache),\n ).toEqual([]);\n // Dashed sbf binary glued to a cache-safe verb must still defeat the redirect.\n expect(resolveCargoCacheEnv('cargo test --lib && cargo-build-sbf', withCache)).toEqual(\n [],\n );\n // `anchor test` builds the program + IDL before running, and `cargo rustc` compiles —\n // both must defeat the redirect when paired with a cache-safe verb.\n expect(resolveCargoCacheEnv('anchor test && cargo test --lib', withCache)).toEqual([]);\n expect(\n resolveCargoCacheEnv('cargo rustc -- --emit=obj && cargo test', withCache),\n ).toEqual([]);\n });\n\n // The build must be detected even when glued straight to a shell separator with no space\n // (`;`, `&&`) — otherwise the build half silently redirects its .so/IDL into the cache.\n it.each([\n 'cargo build; cargo test',\n 'cargo build&&cargo test',\n 'cargo build-sbf;cargo test',\n 'cargo b;cargo test',\n 'cargo b&&cargo t',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n });\n\n describe('commands outside the cache-safe allowlist are not redirected', () => {\n it.each(['cargo +nightly-2025-06-01 fmt', 'cargo +nightly-2025-06-01 fmt -- --check'])(\n '%s',\n (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n },\n );\n });\n\n it('does nothing when the tool mounts no /cargo-target cache volume', () => {\n const otherVolumes: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: '/usr/local/cargo', name: 'solana-cargo' },\n ];\n expect(resolveCargoCacheEnv('cargo test -p oft --lib --tests', otherVolumes)).toEqual([]);\n });\n\n it('returns nothing for an empty or absent script (non --script invocations)', () => {\n expect(resolveCargoCacheEnv(undefined, withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('', withCache)).toEqual([]);\n });\n\n it('does not match cargo substrings inside other words', () => {\n expect(resolveCargoCacheEnv('mycargo testlike', withCache)).toEqual([]);\n });\n\n it('tolerates irregular whitespace around the command', () => {\n // \\s+ / \\b mean extra spaces, tabs, and leading whitespace do not defeat matching.\n expect(resolveCargoCacheEnv(' cargo test --lib', withCache)).toEqual(cacheEnv);\n expect(resolveCargoCacheEnv('cargo\\ttest', withCache)).toEqual(cacheEnv);\n // ...and the build exclusion is equally whitespace-insensitive.\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n });\n\n it('finds the cache volume by containerPath, regardless of its name', () => {\n // Lookup is keyed on the mount path, not the 'solana-target' name — any isolate volume\n // mounted at the cache path triggers the redirect.\n const renamed: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: CARGO_TARGET_CACHE_PATH, name: 'custom-target' },\n ];\n expect(resolveCargoCacheEnv('cargo test', renamed)).toEqual([\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ]);\n });\n});\n\ndescribe(mergeToolEnv, () => {\n const cacheEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ];\n\n it('keeps the higher-precedence (earlier) layer on a name collision', () => {\n const userEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: '/host/target' },\n ];\n // cacheEnv is passed last (lowest precedence); a user override must survive.\n expect(mergeToolEnv(userEnv, [], [], cacheEnv)).toEqual(userEnv);\n });\n\n it('applies the cache redirect only when nothing upstream sets the var', () => {\n expect(mergeToolEnv([], [], [], cacheEnv)).toEqual(cacheEnv);\n });\n\n it('preserves order and de-dupes across layers', () => {\n expect(\n mergeToolEnv(\n [{ name: 'A', value: '1' }],\n [{ name: 'B', value: '2' }],\n [{ name: 'A', value: 'shadowed' }],\n ),\n ).toEqual([\n { name: 'A', value: '1' },\n { name: 'B', value: '2' },\n ]);\n });\n});\n"]}
1
+ {"version":3,"sources":["../../src/core/tool-executor.test.ts"],"names":["cacheVolume","type","containerPath","CARGO_TARGET_CACHE_PATH","name","withCache","cacheEnv","value","describe","resolveCargoCacheEnv","it","each","script","expect","toEqual","otherVolumes","undefined","renamed","mergeToolEnv","userEnv"],"mappings":"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","file":"tool-executor.test.js","sourcesContent":["import { describe, expect, it } from 'vitest';\n\nimport type { EnvironmentVariable, VolumeMapping } from '../config';\nimport { CARGO_TARGET_CACHE_PATH } from '../config';\nimport { mergeToolEnv, resolveCargoCacheEnv } from './tool-executor';\n\nconst cacheVolume: VolumeMapping = {\n type: 'isolate',\n containerPath: CARGO_TARGET_CACHE_PATH,\n name: 'solana-target',\n};\n\nconst withCache: readonly VolumeMapping[] = [cacheVolume];\nconst cacheEnv = [{ name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH }];\n\ndescribe(resolveCargoCacheEnv, () => {\n describe('cache-safe scripts redirect at the shared cache', () => {\n it.each([\n 'cargo test -p anchor-trait --lib --tests',\n 'cargo test --manifest-path macros/examples/vault/Cargo.toml --lib --tests',\n 'cargo test -p rbac --test trybuild -- --ignored',\n 'cargo test --package onesig -- tests --nocapture',\n 'cargo test-ellipse',\n 'cargo test-triangle',\n 'cargo check',\n 'cargo nextest run',\n 'cargo +nightly-2025-06-01 fmt -- --check && cargo clippy --all-targets',\n // builtin t=test / c=check aliases.\n 'cargo t',\n 'cargo c',\n 'cargo +nightly-2025-06-01 t --lib',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual(cacheEnv);\n });\n });\n\n describe('artifact-producing builds are never redirected', () => {\n it.each([\n 'anchor build --no-idl --ignore-keys',\n 'cargo build',\n 'cargo build-sbf',\n // test-sbf/test-bpf build .so despite the `test-` prefix.\n 'cargo test-sbf',\n 'cargo test-bpf --features foo',\n // Dashed binary forms (the real protocol `test` script is `cargo-test-sbf`) — the\n // space-anchored cargo branch misses these, so they need their own alternative.\n 'cargo-test-sbf',\n 'cargo-build-sbf',\n 'cargo-build-bpf --features x',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n\n it('skips when a build and a test share one script (build half must reach the host)', () => {\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('anchor build && cargo test --lib', withCache)).toEqual([]);\n // builtin b=build alias must still defeat the redirect when paired with a test.\n expect(resolveCargoCacheEnv('cargo b && cargo test', withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('cargo b && cargo t', withCache)).toEqual([]);\n // `anchor idl build` emits host IDL JSON — must defeat the redirect like any build.\n expect(\n resolveCargoCacheEnv('cargo test --lib && anchor idl build -o x.json', withCache),\n ).toEqual([]);\n // Dashed sbf binary glued to a cache-safe verb must still defeat the redirect.\n expect(resolveCargoCacheEnv('cargo test --lib && cargo-build-sbf', withCache)).toEqual(\n [],\n );\n // `anchor test` builds the program + IDL before running, and `cargo rustc` compiles —\n // both must defeat the redirect when paired with a cache-safe verb.\n expect(resolveCargoCacheEnv('anchor test && cargo test --lib', withCache)).toEqual([]);\n expect(\n resolveCargoCacheEnv('cargo rustc -- --emit=obj && cargo test', withCache),\n ).toEqual([]);\n });\n\n // The build must be detected even when glued straight to a shell separator with no space\n // (`;`, `&&`) — otherwise the build half silently redirects its .so/IDL into the cache.\n it.each([\n 'cargo build; cargo test',\n 'cargo build&&cargo test',\n 'cargo build-sbf;cargo test',\n 'cargo b;cargo test',\n 'cargo b&&cargo t',\n ])('%s', (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n });\n });\n\n describe('commands outside the cache-safe allowlist are not redirected', () => {\n it.each(['cargo +nightly-2025-06-01 fmt', 'cargo +nightly-2025-06-01 fmt -- --check'])(\n '%s',\n (script) => {\n expect(resolveCargoCacheEnv(script, withCache)).toEqual([]);\n },\n );\n });\n\n it('does nothing when the tool mounts no /cargo-target cache volume', () => {\n const otherVolumes: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: '/usr/local/cargo', name: 'solana-cargo' },\n ];\n expect(resolveCargoCacheEnv('cargo test -p oft --lib --tests', otherVolumes)).toEqual([]);\n });\n\n it('returns nothing for an empty or absent script (non --script invocations)', () => {\n expect(resolveCargoCacheEnv(undefined, withCache)).toEqual([]);\n expect(resolveCargoCacheEnv('', withCache)).toEqual([]);\n });\n\n it('does not match cargo substrings inside other words', () => {\n expect(resolveCargoCacheEnv('mycargo testlike', withCache)).toEqual([]);\n });\n\n it('tolerates irregular whitespace around the command', () => {\n // \\s+ / \\b mean extra spaces, tabs, and leading whitespace do not defeat matching.\n expect(resolveCargoCacheEnv(' cargo test --lib', withCache)).toEqual(cacheEnv);\n expect(resolveCargoCacheEnv('cargo\\ttest', withCache)).toEqual(cacheEnv);\n // ...and the build exclusion is equally whitespace-insensitive.\n expect(resolveCargoCacheEnv('cargo build && cargo test', withCache)).toEqual([]);\n });\n\n it('finds the cache volume by containerPath, regardless of its name', () => {\n // Lookup is keyed on the mount path, not the 'solana-target' name — any isolate volume\n // mounted at the cache path triggers the redirect.\n const renamed: readonly VolumeMapping[] = [\n { type: 'isolate', containerPath: CARGO_TARGET_CACHE_PATH, name: 'custom-target' },\n ];\n expect(resolveCargoCacheEnv('cargo test', renamed)).toEqual([\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ]);\n });\n});\n\ndescribe(mergeToolEnv, () => {\n const cacheEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: CARGO_TARGET_CACHE_PATH },\n ];\n\n it('keeps the higher-precedence (earlier) layer on a name collision', () => {\n const userEnv: EnvironmentVariable[] = [\n { name: 'CARGO_TARGET_DIR', value: '/host/target' },\n ];\n // cacheEnv is passed last (lowest precedence); a user override must survive.\n expect(mergeToolEnv(userEnv, [], [], cacheEnv)).toEqual(userEnv);\n });\n\n it('applies the cache redirect only when nothing upstream sets the var', () => {\n expect(mergeToolEnv([], [], [], cacheEnv)).toEqual(cacheEnv);\n });\n\n it('preserves order and de-dupes across layers', () => {\n expect(\n mergeToolEnv(\n [{ name: 'A', value: '1' }],\n [{ name: 'B', value: '2' }],\n [{ name: 'A', value: 'shadowed' }],\n ),\n ).toEqual([\n { name: 'A', value: '1' },\n { name: 'B', value: '2' },\n ]);\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
- export { resolveTypeVersions } from '../FT4JK367.js';
2
- import '../PXDULNML.js';
3
- import '../X6QPMSID.js';
4
- import '../TXIQ74D3.js';
1
+ export { resolveTypeVersions } from '../WTU5LLJL.js';
2
+ import '../LYF4JPSK.js';
3
+ import '../UBSQYHMB.js';
4
+ import '../6M2RYAT4.js';
5
5
  //# sourceMappingURL=version-resolver.js.map
6
6
  //# sourceMappingURL=version-resolver.js.map
@@ -1,6 +1,6 @@
1
- export { formatVersionCombination } from '../NAWFODGG.js';
2
- import '../PXDULNML.js';
3
- import '../X6QPMSID.js';
4
- import '../TXIQ74D3.js';
1
+ export { formatVersionCombination } from '../4Y7MN3EA.js';
2
+ import '../LYF4JPSK.js';
3
+ import '../UBSQYHMB.js';
4
+ import '../6M2RYAT4.js';
5
5
  //# sourceMappingURL=formatters.js.map
6
6
  //# sourceMappingURL=formatters.js.map
@@ -1,8 +1,8 @@
1
- import '../3N42XVZL.js';
2
- export { displayToolVersionInfo, displayVersionCombinations } from '../AIKNZKYE.js';
3
- export { formatVersionCombination } from '../NAWFODGG.js';
4
- import '../PXDULNML.js';
5
- import '../X6QPMSID.js';
6
- import '../TXIQ74D3.js';
1
+ import '../7ZZ35UQB.js';
2
+ export { displayToolVersionInfo, displayVersionCombinations } from '../INJJFIX2.js';
3
+ export { formatVersionCombination } from '../4Y7MN3EA.js';
4
+ import '../LYF4JPSK.js';
5
+ import '../UBSQYHMB.js';
6
+ import '../6M2RYAT4.js';
7
7
  //# sourceMappingURL=index.js.map
8
8
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- export { displayToolVersionInfo, displayVersionCombinations } from '../AIKNZKYE.js';
2
- import '../NAWFODGG.js';
3
- import '../PXDULNML.js';
4
- import '../X6QPMSID.js';
5
- import '../TXIQ74D3.js';
1
+ export { displayToolVersionInfo, displayVersionCombinations } from '../INJJFIX2.js';
2
+ import '../4Y7MN3EA.js';
3
+ import '../LYF4JPSK.js';
4
+ import '../UBSQYHMB.js';
5
+ import '../6M2RYAT4.js';
6
6
  //# sourceMappingURL=version-display.js.map
7
7
  //# sourceMappingURL=version-display.js.map
@@ -1,4 +1,4 @@
1
- export { imageDirectory, local, registry } from './RORYN2CM.js';
2
- import './TXIQ74D3.js';
1
+ export { imageDirectory, local, registry } from './DHOHK2AA.js';
2
+ import './6M2RYAT4.js';
3
3
  //# sourceMappingURL=environment.js.map
4
4
  //# sourceMappingURL=environment.js.map
@@ -1,9 +1,9 @@
1
- export { runGithubMatrixGenerator } from '../TWCQHE4E.js';
2
- import '../PNCVL7HO.js';
3
- import '../KBUFOLY3.js';
4
- import '../7CGWPLOJ.js';
5
- import '../RORYN2CM.js';
6
- import '../X6QPMSID.js';
7
- import '../TXIQ74D3.js';
1
+ export { runGithubMatrixGenerator } from '../337JSZDD.js';
2
+ import '../MAF3KTCC.js';
3
+ import '../H7PAZQ2B.js';
4
+ import '../4LO2IH4K.js';
5
+ import '../DHOHK2AA.js';
6
+ import '../UBSQYHMB.js';
7
+ import '../6M2RYAT4.js';
8
8
  //# sourceMappingURL=index.js.map
9
9
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,8 @@
1
- export { generateGithubMatrix } from '../PNCVL7HO.js';
2
- import '../KBUFOLY3.js';
3
- import '../7CGWPLOJ.js';
4
- import '../RORYN2CM.js';
5
- import '../X6QPMSID.js';
6
- import '../TXIQ74D3.js';
1
+ export { generateGithubMatrix } from '../MAF3KTCC.js';
2
+ import '../H7PAZQ2B.js';
3
+ import '../4LO2IH4K.js';
4
+ import '../DHOHK2AA.js';
5
+ import '../UBSQYHMB.js';
6
+ import '../6M2RYAT4.js';
7
7
  //# sourceMappingURL=matrix.js.map
8
8
  //# sourceMappingURL=matrix.js.map