@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
@@ -1,195 +1,15 @@
1
- import { afterEach, describe, expect, test } from 'bun:test';
2
- import { promises as fs } from 'fs';
3
- import os from 'os';
4
- import path from 'path';
1
+ import { describe, expect, test } from 'bun:test';
5
2
 
6
- import { createAppManifest } from '../testSupport.js';
7
3
  import {
8
- ensureProjectInfrastructureRuntime,
9
- inspectProjectInfrastructure,
10
- readProjectInfrastructureEnvironment,
11
- resolveProjectInfrastructureDatabaseUrl,
12
- resolveProjectInfrastructurePortForward,
13
- runProjectInfrastructureLifecycle,
4
+ readStoredInfraStateAsync,
5
+ resolveInfraProjectAsync,
6
+ writeInfraGeneratedArtifactsAsync,
14
7
  } from './index.js';
15
8
 
16
- const temporaryPaths: string[] = [];
17
-
18
- afterEach(async () => {
19
- await Promise.all(
20
- temporaryPaths.splice(0).map((entry) => fs.rm(entry, { force: true, recursive: true })),
21
- );
22
- });
23
-
24
- async function createProjectFixture(): Promise<string> {
25
- const projectPath = await fs.mkdtemp(path.join(os.tmpdir(), 'ankh-infra-project-'));
26
- temporaryPaths.push(projectPath);
27
- const infraRoot = path.join(projectPath, 'infra', 'minikube');
28
- const scriptsRoot = path.join(infraRoot, 'scripts');
29
- await fs.mkdir(scriptsRoot, { recursive: true });
30
- await fs.writeFile(
31
- path.join(scriptsRoot, 'status.sh'),
32
- "#!/usr/bin/env bash\nprintf 'status-ok'\nprintf 'status-warning' >&2\n",
33
- 'utf8',
34
- );
35
- await fs.writeFile(
36
- path.join(infraRoot, '.env.example'),
37
- [
38
- 'APP_PORT_FORWARD_LOCAL_PORT=48123',
39
- 'SITE_URL=http://example.local',
40
- 'DATABASE_URL=postgres://example',
41
- 'PRIVATE_VALUE=not-selected',
42
- '',
43
- ].join('\n'),
44
- 'utf8',
45
- );
46
- return projectPath;
47
- }
48
-
49
9
  describe('@ankhorage/infra/project', () => {
50
- test('executes generated lifecycle scripts without exposing script paths to consumers', async () => {
51
- const projectPath = await createProjectFixture();
52
- const stdout: string[] = [];
53
- const stderr: string[] = [];
54
-
55
- const result = await runProjectInfrastructureLifecycle({
56
- projectId: 'example',
57
- projectPath,
58
- script: 'status',
59
- target: 'minikube',
60
- onStdout: (chunk) => stdout.push(chunk),
61
- onStderr: (chunk) => stderr.push(chunk),
62
- });
63
-
64
- expect(result).toEqual({ stdout: 'status-ok', stderr: 'status-warning' });
65
- expect(stdout.join('')).toBe('status-ok');
66
- expect(stderr.join('')).toBe('status-warning');
67
- });
68
-
69
- test('resolves the generated app port-forward endpoint through the owner API', async () => {
70
- const projectPath = await createProjectFixture();
71
- const result = await resolveProjectInfrastructurePortForward({
72
- projectPath,
73
- target: 'minikube',
74
- });
75
-
76
- expect(result).toEqual({
77
- localPort: 48123,
78
- url: 'http://127.0.0.1:48123',
79
- });
80
- });
81
-
82
- test('ensures the generated runtime port-forward group through the owner API', async () => {
83
- const projectPath = await createProjectFixture();
84
- const scriptPath = path.join(projectPath, 'infra', 'minikube', 'scripts', 'port-forward.sh');
85
- await fs.writeFile(scriptPath, '#!/usr/bin/env bash\nprintf \'%s\' "$*"\n', 'utf8');
86
-
87
- const result = await ensureProjectInfrastructureRuntime({
88
- projectId: 'example',
89
- projectPath,
90
- target: 'minikube',
91
- });
92
-
93
- expect(result).toEqual({ stdout: 'start runtime', stderr: '' });
94
- });
95
-
96
- test('reports actionable runtime-forward failures without reconciling infrastructure', async () => {
97
- const projectPath = await createProjectFixture();
98
- const scriptPath = path.join(projectPath, 'infra', 'minikube', 'scripts', 'port-forward.sh');
99
- await fs.writeFile(
100
- scriptPath,
101
- '#!/usr/bin/env bash\necho "app: target app/service/app-runtime not found"\nexit 1\n',
102
- 'utf8',
103
- );
104
-
105
- await expectRejectMessage(
106
- ensureProjectInfrastructureRuntime({
107
- projectId: 'example',
108
- projectPath,
109
- target: 'minikube',
110
- }),
111
- "Failed to ensure infrastructure runtime for project 'example': app: target app/service/app-runtime not found",
112
- );
113
- });
114
-
115
- test('reads only requested runtime environment values from the generated fallback', async () => {
116
- const projectPath = await createProjectFixture();
117
- const result = await readProjectInfrastructureEnvironment({
118
- keys: ['SITE_URL', 'MISSING_VALUE'],
119
- projectPath,
120
- target: 'minikube',
121
- });
122
-
123
- expect(result).toEqual({ SITE_URL: 'http://example.local' });
124
- });
125
-
126
- test('prefers generated runtime environment and resolves the trusted database URL', async () => {
127
- const projectPath = await createProjectFixture();
128
- const envPath = path.join(projectPath, 'infra', 'minikube', '.env');
129
- await fs.writeFile(
130
- envPath,
131
- 'SITE_URL=http://runtime.local\nDATABASE_URL=postgres://runtime\n',
132
- 'utf8',
133
- );
134
-
135
- const environment = await readProjectInfrastructureEnvironment({
136
- keys: ['SITE_URL'],
137
- projectPath,
138
- target: 'minikube',
139
- });
140
- const databaseUrl = await resolveProjectInfrastructureDatabaseUrl({
141
- projectPath,
142
- target: 'minikube',
143
- });
144
-
145
- expect(environment).toEqual({ SITE_URL: 'http://runtime.local' });
146
- expect(databaseUrl).toBe('postgres://runtime');
147
- });
148
-
149
- test('inspects deployment and generated state through the owner ledger', async () => {
150
- const projectPath = await createProjectFixture();
151
- await fs.mkdir(path.join(projectPath, '.ankh'), { recursive: true });
152
- await fs.writeFile(
153
- path.join(projectPath, '.ankh', 'infra-ledger.json'),
154
- JSON.stringify({
155
- schemaVersion: 1,
156
- generatedAt: '2026-08-12T04:00:00.000Z',
157
- target: 'minikube',
158
- files: ['infra/minikube/.env.example', 'infra/minikube/scripts/status.sh'],
159
- warnings: ['generated warning'],
160
- }),
161
- 'utf8',
162
- );
163
- const manifest = createAppManifest('example', {
164
- deployment: { monitoring: false, target: 'minikube' },
165
- modules: [],
166
- });
167
-
168
- const result = await inspectProjectInfrastructure({
169
- manifest,
170
- projectId: 'example',
171
- projectPath,
172
- });
173
-
174
- expect(result).toEqual({
175
- generated: true,
176
- generatedAt: '2026-08-12T04:00:00.000Z',
177
- hasDeployment: true,
178
- target: 'minikube',
179
- trackedFiles: 2,
180
- warnings: ['generated warning'],
181
- });
10
+ test('exports project resolution, safe state and artifact owner APIs', () => {
11
+ expect(resolveInfraProjectAsync).toBeFunction();
12
+ expect(readStoredInfraStateAsync).toBeFunction();
13
+ expect(writeInfraGeneratedArtifactsAsync).toBeFunction();
182
14
  });
183
15
  });
184
-
185
- async function expectRejectMessage(
186
- promise: Promise<unknown>,
187
- expectedMessage: string,
188
- ): Promise<void> {
189
- try {
190
- await promise;
191
- throw new Error('Expected operation to reject.');
192
- } catch (error) {
193
- expect(error instanceof Error ? error.message : String(error)).toContain(expectedMessage);
194
- }
195
- }
@@ -1,22 +1,7 @@
1
- export {
2
- type ResolvedInfraProject,
3
- resolveInfraProject as resolveInfraWorkspaceProject,
4
- } from '../project.js';
5
- export { resolveProjectInfrastructureDatabaseUrl } from '../projectDatabase.js';
6
- export { readProjectInfrastructureEnvironment } from '../projectEnvironment.js';
7
- export {
8
- type InfraProjectInspection,
9
- type InfraSyncResult,
10
- inspectProjectInfrastructure,
11
- resolveProjectInfrastructureTarget,
12
- syncProjectInfrastructure,
13
- } from '../projectInfrastructure.js';
14
- export {
15
- ensureProjectInfrastructureRuntime,
16
- type InfraLifecycleScript,
17
- type InfraPortForwardInfo,
18
- InfraScriptExecutionError,
19
- type InfraScriptOutput,
20
- resolveProjectInfrastructurePortForward,
21
- runProjectInfrastructureLifecycle,
22
- } from '../runtime.js';
1
+ export { readStoredInfraStateAsync } from '../features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.js';
2
+ export { removeStoredInfraStateAsync } from '../features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.js';
3
+ export { resolveInfraProjectAsync } from '../features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js';
4
+ export { writeInfraGeneratedArtifactsAsync } from '../features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.js';
5
+ export { writeStoredInfraStateAsync } from '../features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.js';
6
+ export { resolveProjectFile } from '../features/environment-lifecycle/utils/resolveProjectFile.js';
7
+ export type { InfraArtifactWriteResult, ResolvedInfraProject } from '../types/infraProject.js';
@@ -3,216 +3,66 @@ import { promises as fs } from 'fs';
3
3
  import os from 'os';
4
4
  import path from 'path';
5
5
 
6
- import { resolveInfraProject } from './project.js';
7
- import { createAppManifest, createWorkspaceFixture } from './testSupport.js';
6
+ import { resolveInfraProjectAsync } from './features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js';
7
+ import { createWorkspaceFixture } from './testSupport.js';
8
8
 
9
- const tempRoots = new Set<string>();
9
+ const temporaryPaths = new Set<string>();
10
10
 
11
11
  afterEach(async () => {
12
12
  await Promise.all(
13
- [...tempRoots].map((rootPath) => fs.rm(rootPath, { force: true, recursive: true })),
13
+ [...temporaryPaths].map((entry) => fs.rm(entry, { force: true, recursive: true })),
14
14
  );
15
- tempRoots.clear();
15
+ temporaryPaths.clear();
16
16
  });
17
17
 
18
- describe('resolveInfraProject', () => {
19
- test('resolves an explicit project id from the workspace root', async () => {
18
+ describe('project resolution', () => {
19
+ test('resolves explicit and cwd-inferred projects with canonical manifests', async () => {
20
20
  const fixture = await createWorkspaceFixture();
21
- tempRoots.add(fixture.rootPath);
22
-
23
- const project = await resolveInfraProject({
21
+ temporaryPaths.add(fixture.rootPath);
22
+ const explicit = await resolveInfraProjectAsync({
24
23
  cwd: fixture.rootPath,
25
24
  projectId: fixture.projectId,
26
25
  });
27
-
28
- expect(project.projectId).toBe('shop');
29
- expect(project.projectPath).toBe(fixture.projectPath);
30
- expect(project.workspaceRoot).toBe(fixture.rootPath);
31
- });
32
-
33
- test('infers the project id from cwd inside apps/<project>', async () => {
34
- const fixture = await createWorkspaceFixture();
35
- tempRoots.add(fixture.rootPath);
36
-
37
- const nestedPath = path.join(fixture.projectPath, 'src', 'modules');
38
- await fs.mkdir(nestedPath, { recursive: true });
39
-
40
- const project = await resolveInfraProject({
41
- cwd: nestedPath,
42
- });
43
-
44
- expect(project.projectId).toBe('shop');
45
- expect(project.projectPath).toBe(fixture.projectPath);
46
- });
47
-
48
- test('loads the fallback manifest when ankh.config.json is missing', async () => {
49
- const fixture = await createWorkspaceFixture({
50
- manifestFile: 'missing',
51
- });
52
- tempRoots.add(fixture.rootPath);
53
-
54
- const project = await resolveInfraProject({
55
- cwd: fixture.rootPath,
56
- projectId: fixture.projectId,
57
- });
58
-
59
- expect(project.manifest.metadata.name).toBe('shop');
60
- expect(project.manifest.metadata.slug).toBe('shop');
61
- expect(project.manifest.infra.modules).toEqual([]);
62
- });
63
-
64
- test('rejects malformed manifest JSON', async () => {
65
- const fixture = await createWorkspaceFixture({
66
- manifestFile: 'invalid-json',
67
- });
68
- tempRoots.add(fixture.rootPath);
69
-
70
- await expectRejectMessage(
71
- resolveInfraProject({
72
- cwd: fixture.rootPath,
73
- projectId: fixture.projectId,
74
- }),
75
- 'Project manifest is not valid JSON',
76
- );
77
- });
78
-
79
- test('rejects traversal project ids', async () => {
80
- const fixture = await createWorkspaceFixture();
81
- tempRoots.add(fixture.rootPath);
82
-
83
- await expectRejectMessage(
84
- resolveInfraProject({
85
- cwd: fixture.rootPath,
86
- projectId: '../shop',
87
- }),
88
- 'Invalid project id:',
26
+ const inferred = await resolveInfraProjectAsync({ cwd: fixture.projectPath });
27
+ expect(explicit.projectPath).toBe(fixture.projectPath);
28
+ expect(inferred.projectId).toBe(fixture.projectId);
29
+ expect(explicit.manifest.infra.environments.local.deployment.runtime.provider).toBe(
30
+ 'docker-compose',
89
31
  );
90
32
  });
91
33
 
92
- test('rejects explicit project ids with nested traversal segments', async () => {
93
- const fixture = await createWorkspaceFixture();
94
- tempRoots.add(fixture.rootPath);
95
-
96
- await expectRejectMessage(
97
- resolveInfraProject({
98
- cwd: fixture.rootPath,
99
- projectId: 'shop/../other',
100
- }),
101
- 'Invalid project id:',
102
- );
34
+ test('requires a real manifest and rejects malformed JSON', async () => {
35
+ const missing = await createWorkspaceFixture({ manifestFile: 'missing' });
36
+ const invalid = await createWorkspaceFixture({ manifestFile: 'invalid-json' });
37
+ temporaryPaths.add(missing.rootPath);
38
+ temporaryPaths.add(invalid.rootPath);
39
+ expect(
40
+ await captureError(resolveInfraProjectAsync({ cwd: missing.rootPath, projectId: 'shop' })),
41
+ ).toContain('Project manifest not found');
42
+ expect(
43
+ await captureError(resolveInfraProjectAsync({ cwd: invalid.rootPath, projectId: 'shop' })),
44
+ ).toContain('Project manifest is not valid JSON');
103
45
  });
104
46
 
105
- test('rejects explicit absolute project ids', async () => {
47
+ test('rejects traversal and projects outside an Ankh workspace', async () => {
106
48
  const fixture = await createWorkspaceFixture();
107
- tempRoots.add(fixture.rootPath);
108
-
109
- await expectRejectMessage(
110
- resolveInfraProject({
111
- cwd: fixture.rootPath,
112
- projectId: '/tmp/shop',
113
- }),
114
- 'Invalid project id:',
115
- );
116
- });
117
-
118
- test('rejects explicit dot project ids', async () => {
119
- const fixture = await createWorkspaceFixture();
120
- tempRoots.add(fixture.rootPath);
121
-
122
- await expectRejectMessage(
123
- resolveInfraProject({
124
- cwd: fixture.rootPath,
125
- projectId: '.',
126
- }),
127
- 'Invalid project id:',
128
- );
129
- });
130
-
131
- test('rejects explicit dot-dot project ids', async () => {
132
- const fixture = await createWorkspaceFixture();
133
- tempRoots.add(fixture.rootPath);
134
-
135
- await expectRejectMessage(
136
- resolveInfraProject({
137
- cwd: fixture.rootPath,
138
- projectId: '..',
139
- }),
140
- 'Invalid project id:',
141
- );
142
- });
143
-
144
- test('rejects explicit empty project ids', async () => {
145
- const fixture = await createWorkspaceFixture();
146
- tempRoots.add(fixture.rootPath);
147
-
148
- await expectRejectMessage(
149
- resolveInfraProject({
150
- cwd: fixture.rootPath,
151
- projectId: '',
152
- }),
153
- 'Invalid project id:',
154
- );
155
- });
156
-
157
- test('rejects explicit blank project ids', async () => {
158
- const fixture = await createWorkspaceFixture();
159
- tempRoots.add(fixture.rootPath);
160
-
161
- await expectRejectMessage(
162
- resolveInfraProject({
163
- cwd: fixture.rootPath,
164
- projectId: ' ',
165
- }),
166
- 'Invalid project id:',
167
- );
168
- });
169
-
170
- test('fails when no workspace root can be found', async () => {
171
- const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'infra-no-root-'));
172
- tempRoots.add(rootPath);
173
-
174
- await expectRejectMessage(
175
- resolveInfraProject({
176
- cwd: rootPath,
177
- projectId: 'shop',
178
- }),
179
- 'Could not find an Ankh workspace root',
180
- );
181
- });
182
-
183
- test('reads a valid project manifest', async () => {
184
- const manifest = createAppManifest('cards', {
185
- deployment: {
186
- monitoring: false,
187
- target: 'minikube',
188
- },
189
- modules: [],
190
- });
191
- const fixture = await createWorkspaceFixture({
192
- manifest,
193
- projectId: 'cards',
194
- });
195
- tempRoots.add(fixture.rootPath);
196
-
197
- const project = await resolveInfraProject({
198
- cwd: fixture.rootPath,
199
- projectId: 'cards',
200
- });
201
-
202
- expect(project.manifest.metadata.name).toBe('cards');
203
- expect(project.manifest.infra.deployment?.target).toBe('minikube');
49
+ const outside = await fs.mkdtemp(path.join(os.tmpdir(), 'infra-outside-'));
50
+ temporaryPaths.add(fixture.rootPath);
51
+ temporaryPaths.add(outside);
52
+ expect(
53
+ await captureError(resolveInfraProjectAsync({ cwd: fixture.rootPath, projectId: '../shop' })),
54
+ ).toContain('Invalid project id');
55
+ expect(
56
+ await captureError(resolveInfraProjectAsync({ cwd: outside, projectId: 'shop' })),
57
+ ).toContain('Could not find an Ankh workspace root');
204
58
  });
205
59
  });
206
60
 
207
- async function expectRejectMessage(promise: Promise<unknown>, text: string): Promise<void> {
208
- let didReject = false;
209
-
61
+ async function captureError(operation: Promise<unknown>): Promise<string> {
210
62
  try {
211
- await promise;
63
+ await operation;
212
64
  } catch (error) {
213
- didReject = true;
214
- expect(error instanceof Error ? error.message : String(error)).toContain(text);
65
+ return error instanceof Error ? error.message : String(error);
215
66
  }
216
-
217
- expect(didReject).toBe(true);
67
+ throw new Error('Expected operation to fail.');
218
68
  }
@@ -2,7 +2,7 @@ import { afterEach, expect, test } from 'bun:test';
2
2
  import { promises as fs } from 'fs';
3
3
  import path from 'path';
4
4
 
5
- import { resolveInfraProject } from './project.js';
5
+ import { resolveInfraProjectAsync } from './features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js';
6
6
  import { createAppManifest, createWorkspaceFixture } from './testSupport.js';
7
7
 
8
8
  const tempRoots = new Set<string>();
@@ -33,7 +33,7 @@ test('Infra rejects nested manifest shapes rejected by Contracts', async () => {
33
33
  );
34
34
 
35
35
  const error = await captureError(
36
- resolveInfraProject({ cwd: fixture.rootPath, projectId: fixture.projectId }),
36
+ resolveInfraProjectAsync({ cwd: fixture.rootPath, projectId: fixture.projectId }),
37
37
  );
38
38
  expect(error.message).toContain('Project manifest has an invalid shape');
39
39
  });