@ankhorage/infra 4.1.12 → 5.0.0

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 (521) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +21 -32
  3. package/dist/cli/bin.d.ts +1 -8
  4. package/dist/cli/bin.d.ts.map +1 -1
  5. package/dist/cli/bin.js +2 -34
  6. package/dist/cli/bin.js.map +1 -1
  7. package/dist/cli/commands/destroy.d.ts +11 -0
  8. package/dist/cli/commands/destroy.d.ts.map +1 -0
  9. package/dist/cli/commands/destroy.js +51 -0
  10. package/dist/cli/commands/destroy.js.map +1 -0
  11. package/dist/cli/commands/down.d.ts +11 -0
  12. package/dist/cli/commands/down.d.ts.map +1 -0
  13. package/dist/cli/commands/down.js +27 -0
  14. package/dist/cli/commands/down.js.map +1 -0
  15. package/dist/cli/commands/generate.d.ts +11 -0
  16. package/dist/cli/commands/generate.d.ts.map +1 -0
  17. package/dist/cli/commands/generate.js +29 -0
  18. package/dist/cli/commands/generate.js.map +1 -0
  19. package/dist/cli/commands/outputs.d.ts +11 -0
  20. package/dist/cli/commands/outputs.d.ts.map +1 -0
  21. package/dist/cli/commands/outputs.js +25 -0
  22. package/dist/cli/commands/outputs.js.map +1 -0
  23. package/dist/cli/commands/plan.d.ts +11 -0
  24. package/dist/cli/commands/plan.d.ts.map +1 -0
  25. package/dist/cli/commands/plan.js +19 -0
  26. package/dist/cli/commands/plan.js.map +1 -0
  27. package/dist/cli/commands/status.d.ts +11 -0
  28. package/dist/cli/commands/status.d.ts.map +1 -0
  29. package/dist/cli/commands/status.js +19 -0
  30. package/dist/cli/commands/status.js.map +1 -0
  31. package/dist/cli/commands/up.d.ts +11 -0
  32. package/dist/cli/commands/up.d.ts.map +1 -0
  33. package/dist/cli/commands/up.js +28 -0
  34. package/dist/cli/commands/up.js.map +1 -0
  35. package/dist/cli/commands/validate.d.ts +11 -0
  36. package/dist/cli/commands/validate.d.ts.map +1 -0
  37. package/dist/cli/commands/validate.js +19 -0
  38. package/dist/cli/commands/validate.js.map +1 -0
  39. package/dist/cli/constants.d.ts +66 -0
  40. package/dist/cli/constants.d.ts.map +1 -0
  41. package/dist/cli/constants.js +19 -0
  42. package/dist/cli/constants.js.map +1 -0
  43. package/dist/cli/createDefaultInfraCommandContext.d.ts +4 -0
  44. package/dist/cli/createDefaultInfraCommandContext.d.ts.map +1 -0
  45. package/dist/{commandContext.js → cli/createDefaultInfraCommandContext.js} +4 -3
  46. package/dist/cli/createDefaultInfraCommandContext.js.map +1 -0
  47. package/dist/cli/createInfraRuntimeProvider.d.ts +5 -0
  48. package/dist/cli/createInfraRuntimeProvider.d.ts.map +1 -0
  49. package/dist/cli/createInfraRuntimeProvider.js +22 -0
  50. package/dist/cli/createInfraRuntimeProvider.js.map +1 -0
  51. package/dist/cli/createProviderCommandDescriptors.d.ts +4 -0
  52. package/dist/cli/createProviderCommandDescriptors.d.ts.map +1 -0
  53. package/dist/cli/createProviderCommandDescriptors.js +6 -0
  54. package/dist/cli/createProviderCommandDescriptors.js.map +1 -0
  55. package/dist/cli/findInfraCommand.d.ts +4 -0
  56. package/dist/cli/findInfraCommand.d.ts.map +1 -0
  57. package/dist/cli/findInfraCommand.js +6 -0
  58. package/dist/cli/findInfraCommand.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -8
  60. package/dist/cli/index.d.ts.map +1 -1
  61. package/dist/cli/index.js +2 -24
  62. package/dist/cli/index.js.map +1 -1
  63. package/dist/cli/renderInfraRootHelp.d.ts +3 -0
  64. package/dist/cli/renderInfraRootHelp.d.ts.map +1 -0
  65. package/dist/cli/renderInfraRootHelp.js +21 -0
  66. package/dist/cli/renderInfraRootHelp.js.map +1 -0
  67. package/dist/cli/renderUnknownInfraCommand.d.ts +3 -0
  68. package/dist/cli/renderUnknownInfraCommand.d.ts.map +1 -0
  69. package/dist/cli/renderUnknownInfraCommand.js +5 -0
  70. package/dist/cli/renderUnknownInfraCommand.js.map +1 -0
  71. package/dist/cli/runInfraCliAsync.d.ts +10 -0
  72. package/dist/cli/runInfraCliAsync.d.ts.map +1 -0
  73. package/dist/cli/runInfraCliAsync.js +34 -0
  74. package/dist/cli/runInfraCliAsync.js.map +1 -0
  75. package/dist/cli/runInfraCommandAsync.d.ts +4 -0
  76. package/dist/cli/runInfraCommandAsync.d.ts.map +1 -0
  77. package/dist/cli/runInfraCommandAsync.js +100 -0
  78. package/dist/cli/runInfraCommandAsync.js.map +1 -0
  79. package/dist/cli/utils/prepareInfraCommandOperationAsync.d.ts +4 -0
  80. package/dist/cli/utils/prepareInfraCommandOperationAsync.d.ts.map +1 -0
  81. package/dist/cli/utils/prepareInfraCommandOperationAsync.js +45 -0
  82. package/dist/cli/utils/prepareInfraCommandOperationAsync.js.map +1 -0
  83. package/dist/cli/utils/requireInfraSuccess.d.ts +7 -0
  84. package/dist/cli/utils/requireInfraSuccess.d.ts.map +1 -0
  85. package/dist/cli/utils/requireInfraSuccess.js +17 -0
  86. package/dist/cli/utils/requireInfraSuccess.js.map +1 -0
  87. package/dist/cli/utils/resolveInfraPersistence.d.ts +4 -0
  88. package/dist/cli/utils/resolveInfraPersistence.d.ts.map +1 -0
  89. package/dist/cli/utils/resolveInfraPersistence.js +17 -0
  90. package/dist/cli/utils/resolveInfraPersistence.js.map +1 -0
  91. package/dist/cli/utils/writeInfraEnvironmentOutputs.d.ts +5 -0
  92. package/dist/cli/utils/writeInfraEnvironmentOutputs.d.ts.map +1 -0
  93. package/dist/cli/utils/writeInfraEnvironmentOutputs.js +16 -0
  94. package/dist/cli/utils/writeInfraEnvironmentOutputs.js.map +1 -0
  95. package/dist/cli/utils/writeInfraStructured.d.ts +4 -0
  96. package/dist/cli/utils/writeInfraStructured.d.ts.map +1 -0
  97. package/dist/cli/utils/writeInfraStructured.js +8 -0
  98. package/dist/cli/utils/writeInfraStructured.js.map +1 -0
  99. package/dist/constants.d.ts +10 -0
  100. package/dist/constants.d.ts.map +1 -0
  101. package/dist/{packageMetadata.js → constants.js} +6 -3
  102. package/dist/constants.js.map +1 -0
  103. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.d.ts +4 -0
  104. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.d.ts.map +1 -0
  105. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.js +35 -0
  106. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.js.map +1 -0
  107. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.d.ts +4 -0
  108. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.d.ts.map +1 -0
  109. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.js +23 -0
  110. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.js.map +1 -0
  111. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.d.ts +4 -0
  112. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.d.ts.map +1 -0
  113. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.js +9 -0
  114. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.js.map +1 -0
  115. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.d.ts +5 -0
  116. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.d.ts.map +1 -0
  117. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.js +28 -0
  118. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.js.map +1 -0
  119. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.d.ts +4 -0
  120. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.d.ts.map +1 -0
  121. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.js +7 -0
  122. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.js.map +1 -0
  123. package/dist/features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.d.ts +7 -0
  124. package/dist/features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.d.ts.map +1 -0
  125. package/dist/{project.js → features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js} +10 -34
  126. package/dist/features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js.map +1 -0
  127. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.d.ts +5 -0
  128. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.d.ts.map +1 -0
  129. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.js +28 -0
  130. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.js.map +1 -0
  131. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.d.ts +4 -0
  132. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.d.ts.map +1 -0
  133. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.js +16 -0
  134. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.js.map +1 -0
  135. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.d.ts +9 -0
  136. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.d.ts.map +1 -0
  137. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.js +2 -0
  138. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.js.map +1 -0
  139. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.d.ts +4 -0
  140. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.d.ts.map +1 -0
  141. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.js +15 -0
  142. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.js.map +1 -0
  143. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.d.ts +4 -0
  144. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.d.ts.map +1 -0
  145. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.js +84 -0
  146. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.js.map +1 -0
  147. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.d.ts +4 -0
  148. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.d.ts.map +1 -0
  149. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.js +55 -0
  150. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.js.map +1 -0
  151. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.d.ts +4 -0
  152. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.d.ts.map +1 -0
  153. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.js +38 -0
  154. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.js.map +1 -0
  155. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.d.ts +4 -0
  156. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.d.ts.map +1 -0
  157. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.js +34 -0
  158. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.js.map +1 -0
  159. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.d.ts +4 -0
  160. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.d.ts.map +1 -0
  161. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.js +57 -0
  162. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.js.map +1 -0
  163. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.d.ts +5 -0
  164. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.d.ts.map +1 -0
  165. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.js +109 -0
  166. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.js.map +1 -0
  167. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.d.ts +6 -0
  168. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.d.ts.map +1 -0
  169. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.js +181 -0
  170. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.js.map +1 -0
  171. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.d.ts +4 -0
  172. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.d.ts.map +1 -0
  173. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.js +68 -0
  174. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.js.map +1 -0
  175. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.d.ts +4 -0
  176. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.d.ts.map +1 -0
  177. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.js +98 -0
  178. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.js.map +1 -0
  179. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.d.ts +5 -0
  180. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.d.ts.map +1 -0
  181. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.js +17 -0
  182. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.js.map +1 -0
  183. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.d.ts +4 -0
  184. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.d.ts.map +1 -0
  185. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.js +13 -0
  186. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.js.map +1 -0
  187. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.d.ts +4 -0
  188. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.d.ts.map +1 -0
  189. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.js +43 -0
  190. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.js.map +1 -0
  191. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.d.ts +4 -0
  192. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.d.ts.map +1 -0
  193. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.js +54 -0
  194. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.js.map +1 -0
  195. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.d.ts +5 -0
  196. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.d.ts.map +1 -0
  197. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.js +39 -0
  198. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.js.map +1 -0
  199. package/dist/features/environment-lifecycle/utils/appendInfraFailure.d.ts +7 -0
  200. package/dist/features/environment-lifecycle/utils/appendInfraFailure.d.ts.map +1 -0
  201. package/dist/features/environment-lifecycle/utils/appendInfraFailure.js +5 -0
  202. package/dist/features/environment-lifecycle/utils/appendInfraFailure.js.map +1 -0
  203. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.d.ts +5 -0
  204. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.d.ts.map +1 -0
  205. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.js +13 -0
  206. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.js.map +1 -0
  207. package/dist/features/environment-lifecycle/utils/createInfraFailure.d.ts +4 -0
  208. package/dist/features/environment-lifecycle/utils/createInfraFailure.d.ts.map +1 -0
  209. package/dist/features/environment-lifecycle/utils/createInfraFailure.js +5 -0
  210. package/dist/features/environment-lifecycle/utils/createInfraFailure.js.map +1 -0
  211. package/dist/features/environment-lifecycle/utils/createInfraLedger.d.ts +12 -0
  212. package/dist/features/environment-lifecycle/utils/createInfraLedger.d.ts.map +1 -0
  213. package/dist/features/environment-lifecycle/utils/createInfraLedger.js +14 -0
  214. package/dist/features/environment-lifecycle/utils/createInfraLedger.js.map +1 -0
  215. package/dist/features/environment-lifecycle/utils/infraIdentityKey.d.ts +4 -0
  216. package/dist/features/environment-lifecycle/utils/infraIdentityKey.d.ts.map +1 -0
  217. package/dist/features/environment-lifecycle/utils/infraIdentityKey.js +5 -0
  218. package/dist/features/environment-lifecycle/utils/infraIdentityKey.js.map +1 -0
  219. package/dist/features/environment-lifecycle/utils/isInfraStoredState.d.ts +4 -0
  220. package/dist/features/environment-lifecycle/utils/isInfraStoredState.d.ts.map +1 -0
  221. package/dist/features/environment-lifecycle/utils/isInfraStoredState.js +103 -0
  222. package/dist/features/environment-lifecycle/utils/isInfraStoredState.js.map +1 -0
  223. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.d.ts +4 -0
  224. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.d.ts.map +1 -0
  225. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.js +10 -0
  226. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.js.map +1 -0
  227. package/dist/features/environment-lifecycle/utils/mergeInfraResources.d.ts +4 -0
  228. package/dist/features/environment-lifecycle/utils/mergeInfraResources.d.ts.map +1 -0
  229. package/dist/features/environment-lifecycle/utils/mergeInfraResources.js +10 -0
  230. package/dist/features/environment-lifecycle/utils/mergeInfraResources.js.map +1 -0
  231. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.d.ts +3 -0
  232. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.d.ts.map +1 -0
  233. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.js +8 -0
  234. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.js.map +1 -0
  235. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.d.ts +4 -0
  236. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.d.ts.map +1 -0
  237. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.js +11 -0
  238. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.js.map +1 -0
  239. package/dist/features/environment-lifecycle/utils/resolveProjectFile.d.ts +3 -0
  240. package/dist/features/environment-lifecycle/utils/resolveProjectFile.d.ts.map +1 -0
  241. package/dist/features/environment-lifecycle/utils/resolveProjectFile.js +19 -0
  242. package/dist/features/environment-lifecycle/utils/resolveProjectFile.js.map +1 -0
  243. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.d.ts +4 -0
  244. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.d.ts.map +1 -0
  245. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.js +6 -0
  246. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.js.map +1 -0
  247. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.d.ts +4 -0
  248. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.d.ts.map +1 -0
  249. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.js +6 -0
  250. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.js.map +1 -0
  251. package/dist/index.d.ts +16 -6
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +14 -15
  254. package/dist/index.js.map +1 -1
  255. package/dist/metadata/index.d.ts +1 -1
  256. package/dist/metadata/index.d.ts.map +1 -1
  257. package/dist/metadata/index.js +1 -1
  258. package/dist/metadata/index.js.map +1 -1
  259. package/dist/project/index.d.ts +7 -5
  260. package/dist/project/index.d.ts.map +1 -1
  261. package/dist/project/index.js +6 -5
  262. package/dist/project/index.js.map +1 -1
  263. package/dist/readme-usage.js +17 -26
  264. package/dist/readme-usage.js.map +1 -1
  265. package/dist/testSupport.d.ts +1 -1
  266. package/dist/testSupport.d.ts.map +1 -1
  267. package/dist/testSupport.js +11 -1
  268. package/dist/testSupport.js.map +1 -1
  269. package/dist/types/infraCli.d.ts +91 -0
  270. package/dist/types/infraCli.d.ts.map +1 -0
  271. package/dist/types/infraCli.js +2 -0
  272. package/dist/types/infraCli.js.map +1 -0
  273. package/dist/types/infraOrchestration.d.ts +84 -0
  274. package/dist/types/infraOrchestration.d.ts.map +1 -0
  275. package/dist/types/infraOrchestration.js +2 -0
  276. package/dist/types/infraOrchestration.js.map +1 -0
  277. package/dist/{project.d.ts → types/infraProject.d.ts} +6 -6
  278. package/dist/types/infraProject.d.ts.map +1 -0
  279. package/dist/types/infraProject.js +2 -0
  280. package/dist/types/infraProject.js.map +1 -0
  281. package/package.json +20 -10
  282. package/src/adapterPackages.integration.test.ts +79 -0
  283. package/src/cli/bin.ts +2 -61
  284. package/src/cli/cli.test.ts +35 -126
  285. package/src/cli/commands/destroy.ts +57 -0
  286. package/src/cli/commands/down.ts +28 -0
  287. package/src/cli/commands/generate.ts +34 -0
  288. package/src/cli/commands/outputs.ts +25 -0
  289. package/src/cli/commands/plan.ts +20 -0
  290. package/src/cli/commands/status.ts +20 -0
  291. package/src/cli/commands/up.ts +29 -0
  292. package/src/cli/commands/validate.ts +20 -0
  293. package/src/cli/constants.ts +19 -0
  294. package/src/cli/createDefaultInfraCommandContext.ts +17 -0
  295. package/src/cli/createInfraRuntimeProvider.ts +35 -0
  296. package/src/cli/createProviderCommandDescriptors.ts +8 -0
  297. package/src/cli/findInfraCommand.ts +7 -0
  298. package/src/cli/index.test.ts +12 -20
  299. package/src/cli/index.ts +7 -49
  300. package/src/cli/renderInfraRootHelp.ts +23 -0
  301. package/src/cli/renderUnknownInfraCommand.ts +4 -0
  302. package/src/cli/runInfraCliAsync.ts +51 -0
  303. package/src/cli/runInfraCommandAsync.ts +114 -0
  304. package/src/cli/utils/prepareInfraCommandOperationAsync.ts +64 -0
  305. package/src/cli/utils/requireInfraSuccess.ts +24 -0
  306. package/src/cli/utils/resolveInfraPersistence.ts +22 -0
  307. package/src/cli/utils/writeInfraEnvironmentOutputs.ts +24 -0
  308. package/src/cli/utils/writeInfraStructured.ts +11 -0
  309. package/src/commands.test.ts +198 -196
  310. package/src/{packageMetadata.ts → constants.ts} +5 -2
  311. package/src/environmentLifecycle.test.ts +193 -0
  312. package/src/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.ts +52 -0
  313. package/src/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.ts +32 -0
  314. package/src/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.ts +10 -0
  315. package/src/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.ts +34 -0
  316. package/src/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.ts +12 -0
  317. package/src/{project.ts → features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.ts} +10 -45
  318. package/src/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.ts +34 -0
  319. package/src/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.ts +21 -0
  320. package/src/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.ts +10 -0
  321. package/src/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.ts +25 -0
  322. package/src/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.ts +119 -0
  323. package/src/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.ts +65 -0
  324. package/src/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.ts +51 -0
  325. package/src/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.ts +41 -0
  326. package/src/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.ts +67 -0
  327. package/src/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.ts +137 -0
  328. package/src/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.ts +257 -0
  329. package/src/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.ts +80 -0
  330. package/src/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.ts +126 -0
  331. package/src/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.ts +25 -0
  332. package/src/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.ts +21 -0
  333. package/src/features/environment-lifecycle/composition/createInfraCommandServices.ts +47 -0
  334. package/src/features/environment-lifecycle/domain/orderInfraPlanActions.ts +64 -0
  335. package/src/features/environment-lifecycle/domain/resolveInfraEnvironment.ts +62 -0
  336. package/src/features/environment-lifecycle/utils/appendInfraFailure.ts +9 -0
  337. package/src/features/environment-lifecycle/utils/createInfraExecutionContext.ts +24 -0
  338. package/src/features/environment-lifecycle/utils/createInfraFailure.ts +6 -0
  339. package/src/features/environment-lifecycle/utils/createInfraLedger.ts +30 -0
  340. package/src/features/environment-lifecycle/utils/infraIdentityKey.ts +6 -0
  341. package/src/features/environment-lifecycle/utils/isInfraStoredState.ts +141 -0
  342. package/src/features/environment-lifecycle/utils/mergeInfraOutputs.ts +14 -0
  343. package/src/features/environment-lifecycle/utils/mergeInfraResources.ts +14 -0
  344. package/src/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.ts +7 -0
  345. package/src/features/environment-lifecycle/utils/resolveInfraStatePath.ts +12 -0
  346. package/src/features/environment-lifecycle/utils/resolveProjectFile.ts +22 -0
  347. package/src/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.ts +15 -0
  348. package/src/features/environment-lifecycle/utils/retainUnchangedAdapterResources.ts +15 -0
  349. package/src/index.test.ts +22 -315
  350. package/src/index.ts +41 -53
  351. package/src/infraComposition.integration.test.ts +128 -0
  352. package/src/infraOperations.test.ts +386 -0
  353. package/src/infraUp.test.ts +260 -0
  354. package/src/metadata/index.ts +1 -1
  355. package/src/package.test.ts +4 -2
  356. package/src/project/index.test.ts +8 -188
  357. package/src/project/index.ts +7 -22
  358. package/src/project.test.ts +39 -189
  359. package/src/projectContractsParser.test.ts +2 -2
  360. package/src/projectInfrastructure.test.ts +121 -167
  361. package/src/readme-usage.ts +17 -26
  362. package/src/testSupport.ts +12 -2
  363. package/src/types/infraCli.ts +115 -0
  364. package/src/types/infraOrchestration.ts +126 -0
  365. package/src/types/infraProject.ts +15 -0
  366. package/dist/adapters/minikube/auth/index.d.ts +0 -8
  367. package/dist/adapters/minikube/auth/index.d.ts.map +0 -1
  368. package/dist/adapters/minikube/auth/index.js +0 -29
  369. package/dist/adapters/minikube/auth/index.js.map +0 -1
  370. package/dist/adapters/minikube/auth/oauthRuntime.d.ts +0 -4
  371. package/dist/adapters/minikube/auth/oauthRuntime.d.ts.map +0 -1
  372. package/dist/adapters/minikube/auth/oauthRuntime.js +0 -138
  373. package/dist/adapters/minikube/auth/oauthRuntime.js.map +0 -1
  374. package/dist/adapters/minikube/auth/supabase/index.d.ts +0 -7
  375. package/dist/adapters/minikube/auth/supabase/index.d.ts.map +0 -1
  376. package/dist/adapters/minikube/auth/supabase/index.js +0 -232
  377. package/dist/adapters/minikube/auth/supabase/index.js.map +0 -1
  378. package/dist/adapters/minikube/auth/supabase/profile.d.ts +0 -20
  379. package/dist/adapters/minikube/auth/supabase/profile.d.ts.map +0 -1
  380. package/dist/adapters/minikube/auth/supabase/profile.js +0 -452
  381. package/dist/adapters/minikube/auth/supabase/profile.js.map +0 -1
  382. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.d.ts +0 -7
  383. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.d.ts.map +0 -1
  384. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.js +0 -104
  385. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.js.map +0 -1
  386. package/dist/adapters/minikube/authz/cerbos/index.d.ts +0 -13
  387. package/dist/adapters/minikube/authz/cerbos/index.d.ts.map +0 -1
  388. package/dist/adapters/minikube/authz/cerbos/index.js +0 -382
  389. package/dist/adapters/minikube/authz/cerbos/index.js.map +0 -1
  390. package/dist/adapters/minikube/authz/index.d.ts +0 -9
  391. package/dist/adapters/minikube/authz/index.d.ts.map +0 -1
  392. package/dist/adapters/minikube/authz/index.js +0 -23
  393. package/dist/adapters/minikube/authz/index.js.map +0 -1
  394. package/dist/adapters/minikube/base/index.d.ts +0 -14
  395. package/dist/adapters/minikube/base/index.d.ts.map +0 -1
  396. package/dist/adapters/minikube/base/index.js +0 -3433
  397. package/dist/adapters/minikube/base/index.js.map +0 -1
  398. package/dist/adapters/minikube/base/supabaseMigrations.d.ts +0 -2
  399. package/dist/adapters/minikube/base/supabaseMigrations.d.ts.map +0 -1
  400. package/dist/adapters/minikube/base/supabaseMigrations.js +0 -6
  401. package/dist/adapters/minikube/base/supabaseMigrations.js.map +0 -1
  402. package/dist/adapters/minikube/contracts.d.ts +0 -34
  403. package/dist/adapters/minikube/contracts.d.ts.map +0 -1
  404. package/dist/adapters/minikube/contracts.js +0 -10
  405. package/dist/adapters/minikube/contracts.js.map +0 -1
  406. package/dist/adapters/minikube/index.d.ts +0 -3
  407. package/dist/adapters/minikube/index.d.ts.map +0 -1
  408. package/dist/adapters/minikube/index.js +0 -136
  409. package/dist/adapters/minikube/index.js.map +0 -1
  410. package/dist/adapters/minikube/secrets/index.d.ts +0 -7
  411. package/dist/adapters/minikube/secrets/index.d.ts.map +0 -1
  412. package/dist/adapters/minikube/secrets/index.js +0 -13
  413. package/dist/adapters/minikube/secrets/index.js.map +0 -1
  414. package/dist/adapters/minikube/secrets/supabase-vault/index.d.ts +0 -8
  415. package/dist/adapters/minikube/secrets/supabase-vault/index.d.ts.map +0 -1
  416. package/dist/adapters/minikube/secrets/supabase-vault/index.js +0 -118
  417. package/dist/adapters/minikube/secrets/supabase-vault/index.js.map +0 -1
  418. package/dist/adapters/minikube/storage/index.d.ts +0 -7
  419. package/dist/adapters/minikube/storage/index.d.ts.map +0 -1
  420. package/dist/adapters/minikube/storage/index.js +0 -77
  421. package/dist/adapters/minikube/storage/index.js.map +0 -1
  422. package/dist/adapters/minikube/storage/supabase/index.d.ts +0 -7
  423. package/dist/adapters/minikube/storage/supabase/index.d.ts.map +0 -1
  424. package/dist/adapters/minikube/storage/supabase/index.js +0 -82
  425. package/dist/adapters/minikube/storage/supabase/index.js.map +0 -1
  426. package/dist/authRedirects.d.ts +0 -19
  427. package/dist/authRedirects.d.ts.map +0 -1
  428. package/dist/authRedirects.js +0 -80
  429. package/dist/authRedirects.js.map +0 -1
  430. package/dist/authTargetRedirects.d.ts +0 -12
  431. package/dist/authTargetRedirects.d.ts.map +0 -1
  432. package/dist/authTargetRedirects.js +0 -32
  433. package/dist/authTargetRedirects.js.map +0 -1
  434. package/dist/commandContext.d.ts +0 -12
  435. package/dist/commandContext.d.ts.map +0 -1
  436. package/dist/commandContext.js.map +0 -1
  437. package/dist/commands.d.ts +0 -95
  438. package/dist/commands.d.ts.map +0 -1
  439. package/dist/commands.js +0 -256
  440. package/dist/commands.js.map +0 -1
  441. package/dist/infraValidation.d.ts +0 -4
  442. package/dist/infraValidation.d.ts.map +0 -1
  443. package/dist/infraValidation.js +0 -63
  444. package/dist/infraValidation.js.map +0 -1
  445. package/dist/packageMetadata.d.ts +0 -10
  446. package/dist/packageMetadata.d.ts.map +0 -1
  447. package/dist/packageMetadata.js.map +0 -1
  448. package/dist/project.d.ts.map +0 -1
  449. package/dist/project.js.map +0 -1
  450. package/dist/projectDatabase.d.ts +0 -5
  451. package/dist/projectDatabase.d.ts.map +0 -1
  452. package/dist/projectDatabase.js +0 -22
  453. package/dist/projectDatabase.js.map +0 -1
  454. package/dist/projectEnvironment.d.ts +0 -6
  455. package/dist/projectEnvironment.d.ts.map +0 -1
  456. package/dist/projectEnvironment.js +0 -45
  457. package/dist/projectEnvironment.js.map +0 -1
  458. package/dist/projectInfrastructure.d.ts +0 -38
  459. package/dist/projectInfrastructure.d.ts.map +0 -1
  460. package/dist/projectInfrastructure.js +0 -145
  461. package/dist/projectInfrastructure.js.map +0 -1
  462. package/dist/runtime.d.ts +0 -54
  463. package/dist/runtime.d.ts.map +0 -1
  464. package/dist/runtime.js +0 -151
  465. package/dist/runtime.js.map +0 -1
  466. package/dist/secretStore.d.ts +0 -19
  467. package/dist/secretStore.d.ts.map +0 -1
  468. package/dist/secretStore.js +0 -22
  469. package/dist/secretStore.js.map +0 -1
  470. package/dist/types.d.ts +0 -70
  471. package/dist/types.d.ts.map +0 -1
  472. package/dist/types.js +0 -2
  473. package/dist/types.js.map +0 -1
  474. package/src/adapters/minikube/README.md +0 -115
  475. package/src/adapters/minikube/appRuntimeServing.test.ts +0 -28
  476. package/src/adapters/minikube/auth/index.ts +0 -40
  477. package/src/adapters/minikube/auth/oauthRuntime.ts +0 -163
  478. package/src/adapters/minikube/auth/supabase/index.test.ts +0 -227
  479. package/src/adapters/minikube/auth/supabase/index.ts +0 -293
  480. package/src/adapters/minikube/auth/supabase/oauthRuntime.test.ts +0 -154
  481. package/src/adapters/minikube/auth/supabase/profile.integration.test.ts +0 -1028
  482. package/src/adapters/minikube/auth/supabase/profile.ts +0 -526
  483. package/src/adapters/minikube/auth/supabase/providerAssignments.test.ts +0 -36
  484. package/src/adapters/minikube/auth/targetAwareOAuthRuntime.test.ts +0 -83
  485. package/src/adapters/minikube/auth/targetAwareOAuthRuntime.ts +0 -136
  486. package/src/adapters/minikube/authz/cerbos/index.ts +0 -486
  487. package/src/adapters/minikube/authz/index.ts +0 -32
  488. package/src/adapters/minikube/base/appImageBuild.test.ts +0 -352
  489. package/src/adapters/minikube/base/index.test.ts +0 -693
  490. package/src/adapters/minikube/base/index.ts +0 -3763
  491. package/src/adapters/minikube/base/portForwardRuntime.test.ts +0 -624
  492. package/src/adapters/minikube/base/supabaseMigrations.test.ts +0 -168
  493. package/src/adapters/minikube/base/supabaseMigrations.ts +0 -5
  494. package/src/adapters/minikube/base/twoAppIsolation.integration.test.ts +0 -898
  495. package/src/adapters/minikube/base/upgradeReconciliation.test.ts +0 -135
  496. package/src/adapters/minikube/contracts.ts +0 -46
  497. package/src/adapters/minikube/index.ts +0 -172
  498. package/src/adapters/minikube/secrets/index.test.ts +0 -147
  499. package/src/adapters/minikube/secrets/index.ts +0 -19
  500. package/src/adapters/minikube/secrets/supabase-vault/index.ts +0 -139
  501. package/src/adapters/minikube/storage/index.ts +0 -91
  502. package/src/adapters/minikube/storage/supabase/index.ts +0 -108
  503. package/src/apiInfrastructure.test.ts +0 -69
  504. package/src/authRedirects.test.ts +0 -63
  505. package/src/authRedirects.ts +0 -113
  506. package/src/authTargetRedirects.test.ts +0 -62
  507. package/src/authTargetRedirects.ts +0 -46
  508. package/src/commandContext.ts +0 -27
  509. package/src/commands.ts +0 -404
  510. package/src/generatedApiLedgerCleanup.test.ts +0 -72
  511. package/src/infraApiValidation.test.ts +0 -42
  512. package/src/infraValidation.ts +0 -99
  513. package/src/minikubeImageLifecycle.test.ts +0 -35
  514. package/src/projectDatabase.ts +0 -27
  515. package/src/projectEnvironment.ts +0 -51
  516. package/src/projectInfrastructure.ts +0 -221
  517. package/src/runtime.test.ts +0 -124
  518. package/src/runtime.ts +0 -234
  519. package/src/secretStore.test.ts +0 -76
  520. package/src/secretStore.ts +0 -44
  521. package/src/types.ts +0 -82
@@ -0,0 +1,181 @@
1
+ import { INFRA_ADAPTER_CATALOG, isInfraAdapterDescriptor, validateInfraAdapterSelection, } from '@ankhorage/contracts/infra';
2
+ /*** Resolve exactly the selected provider packages and validate their public adapter boundaries. */
3
+ export async function resolveInfraAdaptersAsync(environment, resolver) {
4
+ const entries = getSelectedCatalogEntries(environment);
5
+ const modules = await Promise.all(entries.map(async (entry) => loadModuleAsync(entry.package, resolver)));
6
+ const loadingDiagnostics = modules.flatMap((result) => result.diagnostics);
7
+ if (loadingDiagnostics.length > 0)
8
+ return { ok: false, diagnostics: loadingDiagnostics };
9
+ const loaded = modules.flatMap((result) => (result.ok ? [result.value] : []));
10
+ const selection = validateInfraAdapterSelection(environment, loaded.map(({ infraAdapterDescriptor }) => infraAdapterDescriptor));
11
+ if (!selection.ok)
12
+ return selection;
13
+ const instantiated = instantiateModules(loaded);
14
+ if (!instantiated.ok)
15
+ return instantiated;
16
+ const instances = instantiated.value;
17
+ const compute = instances.find(isComputeAdapter);
18
+ const runtime = instances.find(isRuntimeAdapter);
19
+ const services = instances.filter(isServiceAdapter);
20
+ const diagnostics = validateInstances(compute, runtime, services, selection.value);
21
+ return diagnostics.length > 0 || compute === undefined || runtime === undefined
22
+ ? { ok: false, diagnostics }
23
+ : {
24
+ ok: true,
25
+ value: { compute, runtime, services: orderServiceAdapters(services) },
26
+ diagnostics: [],
27
+ };
28
+ }
29
+ /*** Order services by selected capability dependencies while preserving catalog order for peers. */
30
+ function orderServiceAdapters(services) {
31
+ const pending = [...services];
32
+ const ordered = [];
33
+ const provided = new Set(['compute', 'runtime', 'workloads', 'networking']);
34
+ while (pending.length > 0) {
35
+ const index = pending.findIndex((service) => service.descriptor.dependencies.every((dependency) => provided.has(dependency) ||
36
+ !services.some(({ descriptor }) => hasCapability(descriptor, dependency))));
37
+ if (index < 0)
38
+ return services;
39
+ const [service] = pending.splice(index, 1);
40
+ if (service === undefined)
41
+ return services;
42
+ ordered.push(service);
43
+ for (const capability of service.descriptor.capabilities)
44
+ provided.add(capability);
45
+ }
46
+ return ordered;
47
+ }
48
+ /*** Compare catalog capability values across descriptor union members. */
49
+ function hasCapability(descriptor, capability) {
50
+ return descriptor.capabilities.includes(capability);
51
+ }
52
+ /*** Invoke selected factories safely and require their instances to match the module descriptor. */
53
+ function instantiateModules(modules) {
54
+ const instances = [];
55
+ const diagnostics = [];
56
+ for (const module of modules) {
57
+ try {
58
+ const instance = module.createInfraAdapter();
59
+ if (!isAdapterForDescriptor(instance, module.infraAdapterDescriptor)) {
60
+ diagnostics.push(instanceDiagnostic(module.infraAdapterDescriptor.id, `Selected adapter factory for ${module.infraAdapterDescriptor.package} returned a mismatched lifecycle implementation.`));
61
+ }
62
+ else
63
+ instances.push(instance);
64
+ }
65
+ catch {
66
+ diagnostics.push(instanceDiagnostic(module.infraAdapterDescriptor.id, `Selected adapter factory for ${module.infraAdapterDescriptor.package} could not be created.`));
67
+ }
68
+ }
69
+ return diagnostics.length > 0
70
+ ? { ok: false, diagnostics }
71
+ : { ok: true, value: instances, diagnostics: [] };
72
+ }
73
+ /*** Select each configured adapter once, including multi-capability service providers. */
74
+ function getSelectedCatalogEntries(environment) {
75
+ const ids = new Set([
76
+ environment.deployment.compute.provider,
77
+ environment.deployment.runtime.provider,
78
+ environment.database?.provider,
79
+ environment.objectStorage?.provider,
80
+ environment.auth?.provider,
81
+ environment.authz?.provider,
82
+ environment.secretStore?.provider,
83
+ ]);
84
+ return Object.values(INFRA_ADAPTER_CATALOG).filter((entry) => ids.has(entry.id));
85
+ }
86
+ /*** Convert module-resolution errors into provider-safe diagnostics without importing alternatives. */
87
+ async function loadModuleAsync(packageName, resolver) {
88
+ try {
89
+ const loaded = await resolver.loadAsync(packageName);
90
+ return isInfraAdapterPackageModule(loaded)
91
+ ? { ok: true, value: loaded, diagnostics: [] }
92
+ : adapterFailure('infra-adapter-module-invalid', `Selected adapter package ${packageName} does not export its canonical descriptor and factory.`);
93
+ }
94
+ catch {
95
+ return adapterFailure('infra-adapter-package-unavailable', `Selected adapter package ${packageName} could not be loaded.`);
96
+ }
97
+ }
98
+ /*** Validate the runtime shape of a dynamically loaded provider package. */
99
+ function isInfraAdapterPackageModule(value) {
100
+ return (isRecord(value) &&
101
+ isInfraAdapterDescriptor(value.infraAdapterDescriptor) &&
102
+ typeof value.createInfraAdapter === 'function');
103
+ }
104
+ /*** Validate one compute adapter instance without trusting a dynamic module cast. */
105
+ function isComputeAdapter(value) {
106
+ return hasAdapterMethods(value, 'compute', [
107
+ 'validateAsync',
108
+ 'inspectAsync',
109
+ 'planAsync',
110
+ 'ensureAsync',
111
+ 'statusAsync',
112
+ 'destroyAsync',
113
+ ]);
114
+ }
115
+ /*** Validate one runtime adapter instance without trusting a dynamic module cast. */
116
+ function isRuntimeAdapter(value) {
117
+ return hasAdapterMethods(value, 'runtime', [
118
+ 'validateAsync',
119
+ 'planAsync',
120
+ 'ensureAsync',
121
+ 'statusAsync',
122
+ 'suspendAsync',
123
+ 'destroyAsync',
124
+ ]);
125
+ }
126
+ /*** Validate one service adapter instance without trusting a dynamic module cast. */
127
+ function isServiceAdapter(value) {
128
+ return hasAdapterMethods(value, 'service', [
129
+ 'validateAsync',
130
+ 'planAsync',
131
+ 'desiredWorkloadsAsync',
132
+ 'reconcileAsync',
133
+ 'statusAsync',
134
+ 'destroyAsync',
135
+ ]);
136
+ }
137
+ /*** Match a factory result to the exact descriptor selected from its module. */
138
+ function isAdapterForDescriptor(value, expected) {
139
+ const validShape = expected.kind === 'compute'
140
+ ? isComputeAdapter(value)
141
+ : expected.kind === 'runtime'
142
+ ? isRuntimeAdapter(value)
143
+ : isServiceAdapter(value);
144
+ return (validShape &&
145
+ isRecord(value) &&
146
+ isInfraAdapterDescriptor(value.descriptor) &&
147
+ value.descriptor.id === expected.id &&
148
+ value.descriptor.package === expected.package);
149
+ }
150
+ /*** Check a dynamic adapter descriptor kind and its required lifecycle methods. */
151
+ function hasAdapterMethods(value, kind, methods) {
152
+ return (isRecord(value) &&
153
+ isInfraAdapterDescriptor(value.descriptor) &&
154
+ value.descriptor.kind === kind &&
155
+ methods.every((method) => typeof Reflect.get(value, method) === 'function'));
156
+ }
157
+ /*** Ensure factories returned exactly one matching compute/runtime adapter and every service. */
158
+ function validateInstances(compute, runtime, services, descriptors) {
159
+ const expectedServices = descriptors.filter(({ kind }) => kind === 'service').length;
160
+ const diagnostics = [];
161
+ if (compute === undefined)
162
+ diagnostics.push(instanceDiagnostic('compute', 'Selected compute adapter factory is invalid.'));
163
+ if (runtime === undefined)
164
+ diagnostics.push(instanceDiagnostic('runtime', 'Selected runtime adapter factory is invalid.'));
165
+ if (services.length !== expectedServices)
166
+ diagnostics.push(instanceDiagnostic('service', 'A selected service adapter factory is invalid.'));
167
+ return diagnostics;
168
+ }
169
+ /*** Create an adapter-factory diagnostic without exposing module exception details. */
170
+ function instanceDiagnostic(kind, message) {
171
+ return { severity: 'error', code: `infra-${kind}-adapter-invalid`, message };
172
+ }
173
+ /*** Create a failed adapter resolution result. */
174
+ function adapterFailure(code, message) {
175
+ return { ok: false, diagnostics: [{ severity: 'error', code, message }] };
176
+ }
177
+ /*** Narrow dynamically loaded module and adapter values. */
178
+ function isRecord(value) {
179
+ return typeof value === 'object' && value !== null;
180
+ }
181
+ //# sourceMappingURL=resolveInfraAdaptersAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveInfraAdaptersAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n INFRA_ADAPTER_CATALOG,\n type InfraAdapterDescriptor,\n type InfraComputeAdapter,\n type InfraDiagnostic,\n type InfraEnvironmentSpec,\n type InfraResult,\n type InfraRuntimeAdapter,\n type InfraServiceAdapter,\n isInfraAdapterDescriptor,\n validateInfraAdapterSelection,\n} from '@ankhorage/contracts/infra';\n\nimport type { ResolvedInfraAdapters } from '../../../../types/infraOrchestration.js';\nimport type {\n InfraAdapterPackageModule,\n InfraAdapterPackageResolver,\n} from '../ports/outbound/infraAdapterPackage.js';\n\n/*** Resolve exactly the selected provider packages and validate their public adapter boundaries. */\nexport async function resolveInfraAdaptersAsync(\n environment: InfraEnvironmentSpec,\n resolver: InfraAdapterPackageResolver,\n): Promise<InfraResult<ResolvedInfraAdapters>> {\n const entries = getSelectedCatalogEntries(environment);\n const modules = await Promise.all(\n entries.map(async (entry) => loadModuleAsync(entry.package, resolver)),\n );\n const loadingDiagnostics = modules.flatMap((result) => result.diagnostics);\n if (loadingDiagnostics.length > 0) return { ok: false, diagnostics: loadingDiagnostics };\n const loaded = modules.flatMap((result) => (result.ok ? [result.value] : []));\n const selection = validateInfraAdapterSelection(\n environment,\n loaded.map(({ infraAdapterDescriptor }) => infraAdapterDescriptor),\n );\n if (!selection.ok) return selection;\n const instantiated = instantiateModules(loaded);\n if (!instantiated.ok) return instantiated;\n const instances = instantiated.value;\n const compute = instances.find(isComputeAdapter);\n const runtime = instances.find(isRuntimeAdapter);\n const services = instances.filter(isServiceAdapter);\n const diagnostics = validateInstances(compute, runtime, services, selection.value);\n return diagnostics.length > 0 || compute === undefined || runtime === undefined\n ? { ok: false, diagnostics }\n : {\n ok: true,\n value: { compute, runtime, services: orderServiceAdapters(services) },\n diagnostics: [],\n };\n}\n\n/*** Order services by selected capability dependencies while preserving catalog order for peers. */\nfunction orderServiceAdapters(\n services: readonly InfraServiceAdapter[],\n): readonly InfraServiceAdapter[] {\n const pending = [...services];\n const ordered: InfraServiceAdapter[] = [];\n const provided = new Set<string>(['compute', 'runtime', 'workloads', 'networking']);\n while (pending.length > 0) {\n const index = pending.findIndex((service) =>\n service.descriptor.dependencies.every(\n (dependency) =>\n provided.has(dependency) ||\n !services.some(({ descriptor }) => hasCapability(descriptor, dependency)),\n ),\n );\n if (index < 0) return services;\n const [service] = pending.splice(index, 1);\n if (service === undefined) return services;\n ordered.push(service);\n for (const capability of service.descriptor.capabilities) provided.add(capability);\n }\n return ordered;\n}\n\n/*** Compare catalog capability values across descriptor union members. */\nfunction hasCapability(descriptor: InfraAdapterDescriptor, capability: string): boolean {\n return (descriptor.capabilities as readonly string[]).includes(capability);\n}\n\n/*** Invoke selected factories safely and require their instances to match the module descriptor. */\nfunction instantiateModules(\n modules: readonly InfraAdapterPackageModule[],\n): InfraResult<readonly unknown[]> {\n const instances: unknown[] = [];\n const diagnostics: InfraDiagnostic[] = [];\n for (const module of modules) {\n try {\n const instance = module.createInfraAdapter();\n if (!isAdapterForDescriptor(instance, module.infraAdapterDescriptor)) {\n diagnostics.push(\n instanceDiagnostic(\n module.infraAdapterDescriptor.id,\n `Selected adapter factory for ${module.infraAdapterDescriptor.package} returned a mismatched lifecycle implementation.`,\n ),\n );\n } else instances.push(instance);\n } catch {\n diagnostics.push(\n instanceDiagnostic(\n module.infraAdapterDescriptor.id,\n `Selected adapter factory for ${module.infraAdapterDescriptor.package} could not be created.`,\n ),\n );\n }\n }\n return diagnostics.length > 0\n ? { ok: false, diagnostics }\n : { ok: true, value: instances, diagnostics: [] };\n}\n\n/*** Select each configured adapter once, including multi-capability service providers. */\nfunction getSelectedCatalogEntries(environment: InfraEnvironmentSpec) {\n const ids = new Set([\n environment.deployment.compute.provider,\n environment.deployment.runtime.provider,\n environment.database?.provider,\n environment.objectStorage?.provider,\n environment.auth?.provider,\n environment.authz?.provider,\n environment.secretStore?.provider,\n ]);\n return Object.values(INFRA_ADAPTER_CATALOG).filter((entry) => ids.has(entry.id));\n}\n\n/*** Convert module-resolution errors into provider-safe diagnostics without importing alternatives. */\nasync function loadModuleAsync(\n packageName: string,\n resolver: InfraAdapterPackageResolver,\n): Promise<InfraResult<InfraAdapterPackageModule>> {\n try {\n const loaded: unknown = await resolver.loadAsync(packageName);\n return isInfraAdapterPackageModule(loaded)\n ? { ok: true, value: loaded, diagnostics: [] }\n : adapterFailure(\n 'infra-adapter-module-invalid',\n `Selected adapter package ${packageName} does not export its canonical descriptor and factory.`,\n );\n } catch {\n return adapterFailure(\n 'infra-adapter-package-unavailable',\n `Selected adapter package ${packageName} could not be loaded.`,\n );\n }\n}\n\n/*** Validate the runtime shape of a dynamically loaded provider package. */\nfunction isInfraAdapterPackageModule(value: unknown): value is InfraAdapterPackageModule {\n return (\n isRecord(value) &&\n isInfraAdapterDescriptor(value.infraAdapterDescriptor) &&\n typeof value.createInfraAdapter === 'function'\n );\n}\n\n/*** Validate one compute adapter instance without trusting a dynamic module cast. */\nfunction isComputeAdapter(value: unknown): value is InfraComputeAdapter {\n return hasAdapterMethods(value, 'compute', [\n 'validateAsync',\n 'inspectAsync',\n 'planAsync',\n 'ensureAsync',\n 'statusAsync',\n 'destroyAsync',\n ]);\n}\n\n/*** Validate one runtime adapter instance without trusting a dynamic module cast. */\nfunction isRuntimeAdapter(value: unknown): value is InfraRuntimeAdapter {\n return hasAdapterMethods(value, 'runtime', [\n 'validateAsync',\n 'planAsync',\n 'ensureAsync',\n 'statusAsync',\n 'suspendAsync',\n 'destroyAsync',\n ]);\n}\n\n/*** Validate one service adapter instance without trusting a dynamic module cast. */\nfunction isServiceAdapter(value: unknown): value is InfraServiceAdapter {\n return hasAdapterMethods(value, 'service', [\n 'validateAsync',\n 'planAsync',\n 'desiredWorkloadsAsync',\n 'reconcileAsync',\n 'statusAsync',\n 'destroyAsync',\n ]);\n}\n\n/*** Match a factory result to the exact descriptor selected from its module. */\nfunction isAdapterForDescriptor(value: unknown, expected: InfraAdapterDescriptor): boolean {\n const validShape =\n expected.kind === 'compute'\n ? isComputeAdapter(value)\n : expected.kind === 'runtime'\n ? isRuntimeAdapter(value)\n : isServiceAdapter(value);\n return (\n validShape &&\n isRecord(value) &&\n isInfraAdapterDescriptor(value.descriptor) &&\n value.descriptor.id === expected.id &&\n value.descriptor.package === expected.package\n );\n}\n\n/*** Check a dynamic adapter descriptor kind and its required lifecycle methods. */\nfunction hasAdapterMethods(\n value: unknown,\n kind: InfraAdapterDescriptor['kind'],\n methods: readonly string[],\n): boolean {\n return (\n isRecord(value) &&\n isInfraAdapterDescriptor(value.descriptor) &&\n value.descriptor.kind === kind &&\n methods.every((method) => typeof Reflect.get(value, method) === 'function')\n );\n}\n\n/*** Ensure factories returned exactly one matching compute/runtime adapter and every service. */\nfunction validateInstances(\n compute: InfraComputeAdapter | undefined,\n runtime: InfraRuntimeAdapter | undefined,\n services: readonly InfraServiceAdapter[],\n descriptors: readonly InfraAdapterDescriptor[],\n): readonly InfraDiagnostic[] {\n const expectedServices = descriptors.filter(({ kind }) => kind === 'service').length;\n const diagnostics: InfraDiagnostic[] = [];\n if (compute === undefined)\n diagnostics.push(instanceDiagnostic('compute', 'Selected compute adapter factory is invalid.'));\n if (runtime === undefined)\n diagnostics.push(instanceDiagnostic('runtime', 'Selected runtime adapter factory is invalid.'));\n if (services.length !== expectedServices)\n diagnostics.push(\n instanceDiagnostic('service', 'A selected service adapter factory is invalid.'),\n );\n return diagnostics;\n}\n\n/*** Create an adapter-factory diagnostic without exposing module exception details. */\nfunction instanceDiagnostic(kind: string, message: string): InfraDiagnostic {\n return { severity: 'error', code: `infra-${kind}-adapter-invalid`, message };\n}\n\n/*** Create a failed adapter resolution result. */\nfunction adapterFailure(code: string, message: string): InfraResult<never> {\n return { ok: false, diagnostics: [{ severity: 'error', code, message }] };\n}\n\n/*** Narrow dynamically loaded module and adapter values. */\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === 'object' && value !== null;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraOperationRequest, InfraOrchestrationDependencies, InfraStatusOperationResult } from '../../../../types/infraOrchestration.js';
2
+ /*** Aggregate provider-neutral compute, runtime and service status. */
3
+ export declare function statusInfraEnvironmentAsync(request: InfraOperationRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraStatusOperationResult>;
4
+ //# sourceMappingURL=statusInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,yCAAyC,CAAC;AAIjD,uEAAuE;AACvE,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,0BAA0B,CAAC,CA6CrC"}
@@ -0,0 +1,68 @@
1
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
2
+ import { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';
3
+ /*** Aggregate provider-neutral compute, runtime and service status. */
4
+ export async function statusInfraEnvironmentAsync(request, dependencies) {
5
+ const prepared = await prepareInfraOperationAsync(request, 'status', dependencies);
6
+ if (!prepared.ok)
7
+ return prepared;
8
+ const diagnostics = [...prepared.diagnostics];
9
+ const resources = [];
10
+ const compute = await prepared.value.adapters.compute.statusAsync(prepared.value.context);
11
+ if (!compute.ok)
12
+ return appendInfraFailure(diagnostics, compute);
13
+ resources.push(...compute.value);
14
+ diagnostics.push(...compute.diagnostics);
15
+ if (prepared.value.runtimeDesired.targets.length === 0) {
16
+ resources.push({
17
+ owner: {
18
+ projectId: request.projectId,
19
+ environment: prepared.value.environment.id,
20
+ adapter: prepared.value.adapters.runtime.descriptor.id,
21
+ resourceId: 'runtime',
22
+ },
23
+ state: 'absent',
24
+ detail: 'Compute has not exposed a portable runtime target.',
25
+ });
26
+ }
27
+ else {
28
+ const runtime = await prepared.value.adapters.runtime.statusAsync(prepared.value.context, prepared.value.runtimeDesired);
29
+ if (!runtime.ok)
30
+ return appendInfraFailure(diagnostics, runtime);
31
+ resources.push(...runtime.value);
32
+ diagnostics.push(...runtime.diagnostics);
33
+ }
34
+ for (const service of prepared.value.adapters.services) {
35
+ const status = await service.statusAsync(prepared.value.context);
36
+ if (!status.ok)
37
+ return appendInfraFailure(diagnostics, status);
38
+ resources.push(...status.value);
39
+ diagnostics.push(...status.diagnostics);
40
+ }
41
+ return {
42
+ ok: true,
43
+ value: {
44
+ projectId: request.projectId,
45
+ environment: prepared.value.environment.id,
46
+ state: aggregateInfraStatus(resources),
47
+ resources,
48
+ },
49
+ diagnostics,
50
+ };
51
+ }
52
+ /*** Select the most actionable canonical status, treating an empty environment as absent. */
53
+ function aggregateInfraStatus(resources) {
54
+ if (resources.length === 0)
55
+ return 'absent';
56
+ const severity = [
57
+ 'failed',
58
+ 'degraded',
59
+ 'pending',
60
+ 'unknown',
61
+ 'stopped',
62
+ 'retained',
63
+ 'absent',
64
+ 'ready',
65
+ ];
66
+ return (severity.find((state) => resources.some((resource) => resource.state === state)) ?? 'unknown');
67
+ }
68
+ //# sourceMappingURL=statusInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InfraDiagnostic, InfraResourceStatus } from '@ankhorage/contracts/infra';\n\nimport type {\n InfraOperationRequest,\n InfraOrchestrationDependencies,\n InfraStatusOperationResult,\n} from '../../../../types/infraOrchestration.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';\n\n/*** Aggregate provider-neutral compute, runtime and service status. */\nexport async function statusInfraEnvironmentAsync(\n request: InfraOperationRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraStatusOperationResult> {\n const prepared = await prepareInfraOperationAsync(request, 'status', dependencies);\n if (!prepared.ok) return prepared;\n const diagnostics: InfraDiagnostic[] = [...prepared.diagnostics];\n const resources: InfraResourceStatus[] = [];\n const compute = await prepared.value.adapters.compute.statusAsync(prepared.value.context);\n if (!compute.ok) return appendInfraFailure(diagnostics, compute);\n resources.push(...compute.value);\n diagnostics.push(...compute.diagnostics);\n if (prepared.value.runtimeDesired.targets.length === 0) {\n resources.push({\n owner: {\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n adapter: prepared.value.adapters.runtime.descriptor.id,\n resourceId: 'runtime',\n },\n state: 'absent',\n detail: 'Compute has not exposed a portable runtime target.',\n });\n } else {\n const runtime = await prepared.value.adapters.runtime.statusAsync(\n prepared.value.context,\n prepared.value.runtimeDesired,\n );\n if (!runtime.ok) return appendInfraFailure(diagnostics, runtime);\n resources.push(...runtime.value);\n diagnostics.push(...runtime.diagnostics);\n }\n for (const service of prepared.value.adapters.services) {\n const status = await service.statusAsync(prepared.value.context);\n if (!status.ok) return appendInfraFailure(diagnostics, status);\n resources.push(...status.value);\n diagnostics.push(...status.diagnostics);\n }\n return {\n ok: true,\n value: {\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n state: aggregateInfraStatus(resources),\n resources,\n },\n diagnostics,\n };\n}\n\n/*** Select the most actionable canonical status, treating an empty environment as absent. */\nfunction aggregateInfraStatus(\n resources: readonly InfraResourceStatus[],\n): InfraResourceStatus['state'] {\n if (resources.length === 0) return 'absent';\n const severity: readonly InfraResourceStatus['state'][] = [\n 'failed',\n 'degraded',\n 'pending',\n 'unknown',\n 'stopped',\n 'retained',\n 'absent',\n 'ready',\n ];\n return (\n severity.find((state) => resources.some((resource) => resource.state === state)) ?? 'unknown'\n );\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraOrchestrationDependencies, InfraUpOperationResult, InfraUpRequest } from '../../../../types/infraOrchestration.js';
2
+ /*** Validate and reconcile compute, contributed workloads, runtime and services in dependency order. */
3
+ export declare function upInfraEnvironmentAsync(request: InfraUpRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraUpOperationResult>;
4
+ //# sourceMappingURL=upInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACtB,cAAc,EACf,MAAM,yCAAyC,CAAC;AAUjD,wGAAwG;AACxG,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,sBAAsB,CAAC,CA0EjC"}
@@ -0,0 +1,98 @@
1
+ import { resolveInfraEnvironment } from '../../domain/resolveInfraEnvironment.js';
2
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
3
+ import { createInfraExecutionContext } from '../../utils/createInfraExecutionContext.js';
4
+ import { createInfraLedger } from '../../utils/createInfraLedger.js';
5
+ import { mergeInfraOutputs } from '../../utils/mergeInfraOutputs.js';
6
+ import { collectInfraWorkloadsAsync } from './collectInfraWorkloadsAsync.js';
7
+ import { resolveInfraAdaptersAsync } from './resolveInfraAdaptersAsync.js';
8
+ import { validateInfraAdaptersAsync } from './validateInfraAdaptersAsync.js';
9
+ /*** Validate and reconcile compute, contributed workloads, runtime and services in dependency order. */
10
+ export async function upInfraEnvironmentAsync(request, dependencies) {
11
+ const environment = resolveInfraEnvironment({
12
+ manifest: request.manifest,
13
+ environment: request.environment,
14
+ operation: 'up',
15
+ });
16
+ if (!environment.ok)
17
+ return environment;
18
+ const diagnostics = [...environment.diagnostics];
19
+ const adapters = await resolveInfraAdaptersAsync(environment.value.desired, dependencies.adapterResolver);
20
+ if (!adapters.ok)
21
+ return appendInfraFailure(diagnostics, adapters);
22
+ diagnostics.push(...adapters.diagnostics);
23
+ const context = createInfraExecutionContext(request, environment.value, dependencies);
24
+ const validation = await validateInfraAdaptersAsync(context, adapters.value);
25
+ if (!validation.ok)
26
+ return appendInfraFailure(diagnostics, validation);
27
+ diagnostics.push(...validation.diagnostics);
28
+ const workloads = await collectInfraWorkloadsAsync(context, adapters.value.services);
29
+ if (!workloads.ok)
30
+ return appendInfraFailure(diagnostics, workloads);
31
+ diagnostics.push(...workloads.diagnostics);
32
+ const compute = await adapters.value.compute.ensureAsync(context, environment.value.desired.deployment.compute);
33
+ if (!compute.ok)
34
+ return appendInfraFailure(diagnostics, compute);
35
+ diagnostics.push(...compute.diagnostics);
36
+ const runtimeDesired = {
37
+ selection: environment.value.desired.deployment.runtime,
38
+ targets: compute.value.targets,
39
+ workloads: [...(environment.value.desired.workloads ?? []), ...workloads.value],
40
+ availableOutputs: mergeInfraOutputs(request.previous?.outputs ?? [], compute.value.outputs),
41
+ };
42
+ const runtimeValidation = await adapters.value.runtime.validateAsync(context, runtimeDesired);
43
+ if (!runtimeValidation.ok)
44
+ return appendInfraFailure(diagnostics, runtimeValidation);
45
+ diagnostics.push(...runtimeValidation.diagnostics);
46
+ const runtime = await adapters.value.runtime.ensureAsync(context, runtimeDesired);
47
+ if (!runtime.ok)
48
+ return appendInfraFailure(diagnostics, runtime);
49
+ diagnostics.push(...runtime.diagnostics);
50
+ const services = await reconcileServicesAsync(context, adapters.value.services, [
51
+ ...compute.value.outputs,
52
+ ...runtime.value.outputs,
53
+ ]);
54
+ if (!services.ok)
55
+ return appendInfraFailure(diagnostics, services);
56
+ diagnostics.push(...services.diagnostics);
57
+ const resources = [
58
+ ...compute.value.resources,
59
+ ...runtime.value.resources,
60
+ ...services.value.resources,
61
+ ];
62
+ const outputs = mergeInfraOutputs(compute.value.outputs, runtime.value.outputs, services.value.outputs);
63
+ const ledger = createInfraLedger({
64
+ projectId: request.projectId,
65
+ environment: environment.value.id,
66
+ targets: compute.value.targets,
67
+ resources,
68
+ outputs,
69
+ previous: request.previous,
70
+ });
71
+ return {
72
+ ok: true,
73
+ value: {
74
+ environment: environment.value.id,
75
+ targets: compute.value.targets,
76
+ resources,
77
+ outputs,
78
+ ledger,
79
+ },
80
+ diagnostics,
81
+ };
82
+ }
83
+ /*** Reconcile service-owned external state after its runtime workloads expose outputs. */
84
+ async function reconcileServicesAsync(context, services, runtimeOutputs) {
85
+ const resources = [];
86
+ const outputs = [];
87
+ const diagnostics = [];
88
+ for (const service of services) {
89
+ const result = await service.reconcileAsync(context, runtimeOutputs);
90
+ if (!result.ok)
91
+ return appendInfraFailure(diagnostics, result);
92
+ resources.push(...result.value.resources);
93
+ outputs.push(...result.value.outputs);
94
+ diagnostics.push(...result.diagnostics);
95
+ }
96
+ return { ok: true, value: { resources, outputs }, diagnostics };
97
+ }
98
+ //# sourceMappingURL=upInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n InfraDiagnostic,\n InfraExecutionContext,\n InfraOutput,\n InfraOwnedResource,\n InfraResult,\n InfraServiceAdapter,\n} from '@ankhorage/contracts/infra';\n\nimport type {\n InfraOrchestrationDependencies,\n InfraUpOperationResult,\n InfraUpRequest,\n} from '../../../../types/infraOrchestration.js';\nimport { resolveInfraEnvironment } from '../../domain/resolveInfraEnvironment.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { createInfraExecutionContext } from '../../utils/createInfraExecutionContext.js';\nimport { createInfraLedger } from '../../utils/createInfraLedger.js';\nimport { mergeInfraOutputs } from '../../utils/mergeInfraOutputs.js';\nimport { collectInfraWorkloadsAsync } from './collectInfraWorkloadsAsync.js';\nimport { resolveInfraAdaptersAsync } from './resolveInfraAdaptersAsync.js';\nimport { validateInfraAdaptersAsync } from './validateInfraAdaptersAsync.js';\n\n/*** Validate and reconcile compute, contributed workloads, runtime and services in dependency order. */\nexport async function upInfraEnvironmentAsync(\n request: InfraUpRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraUpOperationResult> {\n const environment = resolveInfraEnvironment({\n manifest: request.manifest,\n environment: request.environment,\n operation: 'up',\n });\n if (!environment.ok) return environment;\n const diagnostics: InfraDiagnostic[] = [...environment.diagnostics];\n const adapters = await resolveInfraAdaptersAsync(\n environment.value.desired,\n dependencies.adapterResolver,\n );\n if (!adapters.ok) return appendInfraFailure(diagnostics, adapters);\n diagnostics.push(...adapters.diagnostics);\n const context = createInfraExecutionContext(request, environment.value, dependencies);\n const validation = await validateInfraAdaptersAsync(context, adapters.value);\n if (!validation.ok) return appendInfraFailure(diagnostics, validation);\n diagnostics.push(...validation.diagnostics);\n const workloads = await collectInfraWorkloadsAsync(context, adapters.value.services);\n if (!workloads.ok) return appendInfraFailure(diagnostics, workloads);\n diagnostics.push(...workloads.diagnostics);\n const compute = await adapters.value.compute.ensureAsync(\n context,\n environment.value.desired.deployment.compute,\n );\n if (!compute.ok) return appendInfraFailure(diagnostics, compute);\n diagnostics.push(...compute.diagnostics);\n const runtimeDesired = {\n selection: environment.value.desired.deployment.runtime,\n targets: compute.value.targets,\n workloads: [...(environment.value.desired.workloads ?? []), ...workloads.value],\n availableOutputs: mergeInfraOutputs(request.previous?.outputs ?? [], compute.value.outputs),\n };\n const runtimeValidation = await adapters.value.runtime.validateAsync(context, runtimeDesired);\n if (!runtimeValidation.ok) return appendInfraFailure(diagnostics, runtimeValidation);\n diagnostics.push(...runtimeValidation.diagnostics);\n const runtime = await adapters.value.runtime.ensureAsync(context, runtimeDesired);\n if (!runtime.ok) return appendInfraFailure(diagnostics, runtime);\n diagnostics.push(...runtime.diagnostics);\n const services = await reconcileServicesAsync(context, adapters.value.services, [\n ...compute.value.outputs,\n ...runtime.value.outputs,\n ]);\n if (!services.ok) return appendInfraFailure(diagnostics, services);\n diagnostics.push(...services.diagnostics);\n const resources = [\n ...compute.value.resources,\n ...runtime.value.resources,\n ...services.value.resources,\n ];\n const outputs = mergeInfraOutputs(\n compute.value.outputs,\n runtime.value.outputs,\n services.value.outputs,\n );\n const ledger = createInfraLedger({\n projectId: request.projectId,\n environment: environment.value.id,\n targets: compute.value.targets,\n resources,\n outputs,\n previous: request.previous,\n });\n return {\n ok: true,\n value: {\n environment: environment.value.id,\n targets: compute.value.targets,\n resources,\n outputs,\n ledger,\n },\n diagnostics,\n };\n}\n\n/*** Reconcile service-owned external state after its runtime workloads expose outputs. */\nasync function reconcileServicesAsync(\n context: InfraExecutionContext,\n services: readonly InfraServiceAdapter[],\n runtimeOutputs: readonly InfraOutput[],\n): Promise<\n InfraResult<{\n readonly resources: readonly InfraOwnedResource[];\n readonly outputs: readonly InfraOutput[];\n }>\n> {\n const resources: InfraOwnedResource[] = [];\n const outputs: InfraOutput[] = [];\n const diagnostics: InfraDiagnostic[] = [];\n for (const service of services) {\n const result = await service.reconcileAsync(context, runtimeOutputs);\n if (!result.ok) return appendInfraFailure(diagnostics, result);\n resources.push(...result.value.resources);\n outputs.push(...result.value.outputs);\n diagnostics.push(...result.diagnostics);\n }\n return { ok: true, value: { resources, outputs }, diagnostics };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { InfraExecutionContext, InfraResult } from '@ankhorage/contracts/infra';
2
+ import type { ResolvedInfraAdapters } from '../../../../types/infraOrchestration.js';
3
+ /*** Validate compute and service configuration before any mutating adapter call. */
4
+ export declare function validateInfraAdaptersAsync(context: InfraExecutionContext, adapters: ResolvedInfraAdapters): Promise<InfraResult<null>>;
5
+ //# sourceMappingURL=validateInfraAdaptersAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateInfraAdaptersAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGrF,oFAAoF;AACpF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAW5B"}
@@ -0,0 +1,17 @@
1
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
2
+ /*** Validate compute and service configuration before any mutating adapter call. */
3
+ export async function validateInfraAdaptersAsync(context, adapters) {
4
+ const diagnostics = [];
5
+ const compute = await adapters.compute.validateAsync(context, context.desired.deployment.compute);
6
+ if (!compute.ok)
7
+ return compute;
8
+ diagnostics.push(...compute.diagnostics);
9
+ for (const service of adapters.services) {
10
+ const validation = await service.validateAsync(context);
11
+ if (!validation.ok)
12
+ return appendInfraFailure(diagnostics, validation);
13
+ diagnostics.push(...validation.diagnostics);
14
+ }
15
+ return { ok: true, value: null, diagnostics };
16
+ }
17
+ //# sourceMappingURL=validateInfraAdaptersAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateInfraAdaptersAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA8B,EAC9B,QAA+B;IAE/B,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACvE,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAChD,CAAC","sourcesContent":["import type {\n InfraDiagnostic,\n InfraExecutionContext,\n InfraResult,\n} from '@ankhorage/contracts/infra';\n\nimport type { ResolvedInfraAdapters } from '../../../../types/infraOrchestration.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\n\n/*** Validate compute and service configuration before any mutating adapter call. */\nexport async function validateInfraAdaptersAsync(\n context: InfraExecutionContext,\n adapters: ResolvedInfraAdapters,\n): Promise<InfraResult<null>> {\n const diagnostics: InfraDiagnostic[] = [];\n const compute = await adapters.compute.validateAsync(context, context.desired.deployment.compute);\n if (!compute.ok) return compute;\n diagnostics.push(...compute.diagnostics);\n for (const service of adapters.services) {\n const validation = await service.validateAsync(context);\n if (!validation.ok) return appendInfraFailure(diagnostics, validation);\n diagnostics.push(...validation.diagnostics);\n }\n return { ok: true, value: null, diagnostics };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraOperationRequest, InfraOrchestrationDependencies, InfraValidateOperationResult } from '../../../../types/infraOrchestration.js';
2
+ /*** Validate one environment and every selected adapter without mutating infrastructure. */
3
+ export declare function validateInfraEnvironmentAsync(request: InfraOperationRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraValidateOperationResult>;
4
+ //# sourceMappingURL=validateInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,EAC7B,MAAM,yCAAyC,CAAC;AAGjD,4FAA4F;AAC5F,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,4BAA4B,CAAC,CASvC"}
@@ -0,0 +1,13 @@
1
+ import { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';
2
+ /*** Validate one environment and every selected adapter without mutating infrastructure. */
3
+ export async function validateInfraEnvironmentAsync(request, dependencies) {
4
+ const prepared = await prepareInfraOperationAsync(request, 'validate', dependencies);
5
+ return prepared.ok
6
+ ? {
7
+ ok: true,
8
+ value: { environment: prepared.value.environment.id },
9
+ diagnostics: prepared.diagnostics,
10
+ }
11
+ : prepared;
12
+ }
13
+ //# sourceMappingURL=validateInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAA8B,EAC9B,YAA4C;IAE5C,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACrF,OAAO,QAAQ,CAAC,EAAE;QAChB,CAAC,CAAC;YACE,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE;YACrD,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC;QACH,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC","sourcesContent":["import type {\n InfraOperationRequest,\n InfraOrchestrationDependencies,\n InfraValidateOperationResult,\n} from '../../../../types/infraOrchestration.js';\nimport { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';\n\n/*** Validate one environment and every selected adapter without mutating infrastructure. */\nexport async function validateInfraEnvironmentAsync(\n request: InfraOperationRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraValidateOperationResult> {\n const prepared = await prepareInfraOperationAsync(request, 'validate', dependencies);\n return prepared.ok\n ? {\n ok: true,\n value: { environment: prepared.value.environment.id },\n diagnostics: prepared.diagnostics,\n }\n : prepared;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraCommandServices } from '../../../types/infraCli.js';
2
+ /*** Compose command use cases with filesystem, environment-value and package-resolver adapters. */
3
+ export declare function createInfraCommandServices(overrides?: Partial<InfraCommandServices>): InfraCommandServices;
4
+ //# sourceMappingURL=createInfraCommandServices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInfraCommandServices.d.ts","sourceRoot":"","sources":["../../../../src/features/environment-lifecycle/composition/createInfraCommandServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAkBvE,mGAAmG;AACnG,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC5C,oBAAoB,CAyBtB"}
@@ -0,0 +1,43 @@
1
+ import { createEnvironmentInfraCredentialPort } from '../adapters/outbound/createEnvironmentInfraCredentialPort.js';
2
+ import { createEnvironmentInfraSecretPort } from '../adapters/outbound/createEnvironmentInfraSecretPort.js';
3
+ import { createNodeInfraAdapterPackageResolver } from '../adapters/outbound/createNodeInfraAdapterPackageResolver.js';
4
+ import { readStoredInfraStateAsync } from '../adapters/outbound/readStoredInfraStateAsync.js';
5
+ import { removeStoredInfraStateAsync } from '../adapters/outbound/removeStoredInfraStateAsync.js';
6
+ import { resolveInfraProjectAsync } from '../adapters/outbound/resolveInfraProjectAsync.js';
7
+ import { writeInfraGeneratedArtifactsAsync } from '../adapters/outbound/writeInfraGeneratedArtifactsAsync.js';
8
+ import { writeStoredInfraStateAsync } from '../adapters/outbound/writeStoredInfraStateAsync.js';
9
+ import { destroyInfraEnvironmentAsync } from '../application/use-cases/destroyInfraEnvironmentAsync.js';
10
+ import { downInfraEnvironmentAsync } from '../application/use-cases/downInfraEnvironmentAsync.js';
11
+ import { generateInfraEnvironmentAsync } from '../application/use-cases/generateInfraEnvironmentAsync.js';
12
+ import { getInfraEnvironmentOutputs } from '../application/use-cases/getInfraEnvironmentOutputs.js';
13
+ import { planInfraEnvironmentAsync } from '../application/use-cases/planInfraEnvironmentAsync.js';
14
+ import { statusInfraEnvironmentAsync } from '../application/use-cases/statusInfraEnvironmentAsync.js';
15
+ import { upInfraEnvironmentAsync } from '../application/use-cases/upInfraEnvironmentAsync.js';
16
+ import { validateInfraEnvironmentAsync } from '../application/use-cases/validateInfraEnvironmentAsync.js';
17
+ /*** Compose command use cases with filesystem, environment-value and package-resolver adapters. */
18
+ export function createInfraCommandServices(overrides = {}) {
19
+ return {
20
+ resolveProject: overrides.resolveProject ?? resolveInfraProjectAsync,
21
+ readState: overrides.readState ?? readStoredInfraStateAsync,
22
+ writeState: overrides.writeState ?? writeStoredInfraStateAsync,
23
+ removeState: overrides.removeState ?? removeStoredInfraStateAsync,
24
+ writeArtifacts: overrides.writeArtifacts ?? writeInfraGeneratedArtifactsAsync,
25
+ operations: overrides.operations ?? {
26
+ validate: validateInfraEnvironmentAsync,
27
+ plan: planInfraEnvironmentAsync,
28
+ generate: generateInfraEnvironmentAsync,
29
+ up: upInfraEnvironmentAsync,
30
+ status: statusInfraEnvironmentAsync,
31
+ outputs: getInfraEnvironmentOutputs,
32
+ down: downInfraEnvironmentAsync,
33
+ destroy: destroyInfraEnvironmentAsync,
34
+ },
35
+ createDependencies: overrides.createDependencies ??
36
+ ((context) => ({
37
+ adapterResolver: createNodeInfraAdapterPackageResolver(),
38
+ credentials: createEnvironmentInfraCredentialPort(context.env),
39
+ secrets: createEnvironmentInfraSecretPort(context.env),
40
+ })),
41
+ };
42
+ }
43
+ //# sourceMappingURL=createInfraCommandServices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInfraCommandServices.js","sourceRoot":"","sources":["../../../../src/features/environment-lifecycle/composition/createInfraCommandServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oCAAoC,EAAE,MAAM,8DAA8D,CAAC;AACpH,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAC5G,OAAO,EAAE,qCAAqC,EAAE,MAAM,+DAA+D,CAAC;AACtH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,iCAAiC,EAAE,MAAM,2DAA2D,CAAC;AAC9G,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AACxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAC;AAC1G,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAC;AAE1G,mGAAmG;AACnG,MAAM,UAAU,0BAA0B,CACxC,YAA2C,EAAE;IAE7C,OAAO;QACL,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,wBAAwB;QACpE,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,yBAAyB;QAC3D,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,0BAA0B;QAC9D,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,2BAA2B;QACjE,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,iCAAiC;QAC7E,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI;YAClC,QAAQ,EAAE,6BAA6B;YACvC,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,6BAA6B;YACvC,EAAE,EAAE,uBAAuB;YAC3B,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,0BAA0B;YACnC,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,4BAA4B;SACtC;QACD,kBAAkB,EAChB,SAAS,CAAC,kBAAkB;YAC5B,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACb,eAAe,EAAE,qCAAqC,EAAE;gBACxD,WAAW,EAAE,oCAAoC,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC9D,OAAO,EAAE,gCAAgC,CAAC,OAAO,CAAC,GAAG,CAAC;aACvD,CAAC,CAAC;KACN,CAAC;AACJ,CAAC","sourcesContent":["import type { InfraCommandServices } from '../../../types/infraCli.js';\nimport { createEnvironmentInfraCredentialPort } from '../adapters/outbound/createEnvironmentInfraCredentialPort.js';\nimport { createEnvironmentInfraSecretPort } from '../adapters/outbound/createEnvironmentInfraSecretPort.js';\nimport { createNodeInfraAdapterPackageResolver } from '../adapters/outbound/createNodeInfraAdapterPackageResolver.js';\nimport { readStoredInfraStateAsync } from '../adapters/outbound/readStoredInfraStateAsync.js';\nimport { removeStoredInfraStateAsync } from '../adapters/outbound/removeStoredInfraStateAsync.js';\nimport { resolveInfraProjectAsync } from '../adapters/outbound/resolveInfraProjectAsync.js';\nimport { writeInfraGeneratedArtifactsAsync } from '../adapters/outbound/writeInfraGeneratedArtifactsAsync.js';\nimport { writeStoredInfraStateAsync } from '../adapters/outbound/writeStoredInfraStateAsync.js';\nimport { destroyInfraEnvironmentAsync } from '../application/use-cases/destroyInfraEnvironmentAsync.js';\nimport { downInfraEnvironmentAsync } from '../application/use-cases/downInfraEnvironmentAsync.js';\nimport { generateInfraEnvironmentAsync } from '../application/use-cases/generateInfraEnvironmentAsync.js';\nimport { getInfraEnvironmentOutputs } from '../application/use-cases/getInfraEnvironmentOutputs.js';\nimport { planInfraEnvironmentAsync } from '../application/use-cases/planInfraEnvironmentAsync.js';\nimport { statusInfraEnvironmentAsync } from '../application/use-cases/statusInfraEnvironmentAsync.js';\nimport { upInfraEnvironmentAsync } from '../application/use-cases/upInfraEnvironmentAsync.js';\nimport { validateInfraEnvironmentAsync } from '../application/use-cases/validateInfraEnvironmentAsync.js';\n\n/*** Compose command use cases with filesystem, environment-value and package-resolver adapters. */\nexport function createInfraCommandServices(\n overrides: Partial<InfraCommandServices> = {},\n): InfraCommandServices {\n return {\n resolveProject: overrides.resolveProject ?? resolveInfraProjectAsync,\n readState: overrides.readState ?? readStoredInfraStateAsync,\n writeState: overrides.writeState ?? writeStoredInfraStateAsync,\n removeState: overrides.removeState ?? removeStoredInfraStateAsync,\n writeArtifacts: overrides.writeArtifacts ?? writeInfraGeneratedArtifactsAsync,\n operations: overrides.operations ?? {\n validate: validateInfraEnvironmentAsync,\n plan: planInfraEnvironmentAsync,\n generate: generateInfraEnvironmentAsync,\n up: upInfraEnvironmentAsync,\n status: statusInfraEnvironmentAsync,\n outputs: getInfraEnvironmentOutputs,\n down: downInfraEnvironmentAsync,\n destroy: destroyInfraEnvironmentAsync,\n },\n createDependencies:\n overrides.createDependencies ??\n ((context) => ({\n adapterResolver: createNodeInfraAdapterPackageResolver(),\n credentials: createEnvironmentInfraCredentialPort(context.env),\n secrets: createEnvironmentInfraSecretPort(context.env),\n })),\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraPlanAction, InfraResult } from '@ankhorage/contracts/infra';
2
+ /*** Order plan actions dependency-first and reject duplicate owners or dependency cycles. */
3
+ export declare function orderInfraPlanActions(actions: readonly InfraPlanAction[]): InfraResult<readonly InfraPlanAction[]>;
4
+ //# sourceMappingURL=orderInfraPlanActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderInfraPlanActions.d.ts","sourceRoot":"","sources":["../../../../src/features/environment-lifecycle/domain/orderInfraPlanActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAEpC,6FAA6F;AAC7F,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,WAAW,CAAC,SAAS,eAAe,EAAE,CAAC,CAWzC"}