@ankhorage/infra 4.1.12 → 5.1.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 (528) hide show
  1. package/CHANGELOG.md +16 -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/composition/createProjectInfraLifecycle.d.ts +4 -0
  192. package/dist/features/environment-lifecycle/composition/createProjectInfraLifecycle.d.ts.map +1 -0
  193. package/dist/features/environment-lifecycle/composition/createProjectInfraLifecycle.js +123 -0
  194. package/dist/features/environment-lifecycle/composition/createProjectInfraLifecycle.js.map +1 -0
  195. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.d.ts +4 -0
  196. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.d.ts.map +1 -0
  197. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.js +54 -0
  198. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.js.map +1 -0
  199. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.d.ts +5 -0
  200. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.d.ts.map +1 -0
  201. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.js +39 -0
  202. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.js.map +1 -0
  203. package/dist/features/environment-lifecycle/utils/appendInfraFailure.d.ts +7 -0
  204. package/dist/features/environment-lifecycle/utils/appendInfraFailure.d.ts.map +1 -0
  205. package/dist/features/environment-lifecycle/utils/appendInfraFailure.js +5 -0
  206. package/dist/features/environment-lifecycle/utils/appendInfraFailure.js.map +1 -0
  207. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.d.ts +5 -0
  208. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.d.ts.map +1 -0
  209. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.js +13 -0
  210. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.js.map +1 -0
  211. package/dist/features/environment-lifecycle/utils/createInfraFailure.d.ts +4 -0
  212. package/dist/features/environment-lifecycle/utils/createInfraFailure.d.ts.map +1 -0
  213. package/dist/features/environment-lifecycle/utils/createInfraFailure.js +5 -0
  214. package/dist/features/environment-lifecycle/utils/createInfraFailure.js.map +1 -0
  215. package/dist/features/environment-lifecycle/utils/createInfraLedger.d.ts +12 -0
  216. package/dist/features/environment-lifecycle/utils/createInfraLedger.d.ts.map +1 -0
  217. package/dist/features/environment-lifecycle/utils/createInfraLedger.js +14 -0
  218. package/dist/features/environment-lifecycle/utils/createInfraLedger.js.map +1 -0
  219. package/dist/features/environment-lifecycle/utils/infraIdentityKey.d.ts +4 -0
  220. package/dist/features/environment-lifecycle/utils/infraIdentityKey.d.ts.map +1 -0
  221. package/dist/features/environment-lifecycle/utils/infraIdentityKey.js +5 -0
  222. package/dist/features/environment-lifecycle/utils/infraIdentityKey.js.map +1 -0
  223. package/dist/features/environment-lifecycle/utils/isInfraStoredState.d.ts +4 -0
  224. package/dist/features/environment-lifecycle/utils/isInfraStoredState.d.ts.map +1 -0
  225. package/dist/features/environment-lifecycle/utils/isInfraStoredState.js +103 -0
  226. package/dist/features/environment-lifecycle/utils/isInfraStoredState.js.map +1 -0
  227. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.d.ts +4 -0
  228. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.d.ts.map +1 -0
  229. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.js +10 -0
  230. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.js.map +1 -0
  231. package/dist/features/environment-lifecycle/utils/mergeInfraResources.d.ts +4 -0
  232. package/dist/features/environment-lifecycle/utils/mergeInfraResources.d.ts.map +1 -0
  233. package/dist/features/environment-lifecycle/utils/mergeInfraResources.js +10 -0
  234. package/dist/features/environment-lifecycle/utils/mergeInfraResources.js.map +1 -0
  235. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.d.ts +3 -0
  236. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.d.ts.map +1 -0
  237. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.js +8 -0
  238. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.js.map +1 -0
  239. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.d.ts +4 -0
  240. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.d.ts.map +1 -0
  241. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.js +11 -0
  242. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.js.map +1 -0
  243. package/dist/features/environment-lifecycle/utils/resolveProjectFile.d.ts +3 -0
  244. package/dist/features/environment-lifecycle/utils/resolveProjectFile.d.ts.map +1 -0
  245. package/dist/features/environment-lifecycle/utils/resolveProjectFile.js +19 -0
  246. package/dist/features/environment-lifecycle/utils/resolveProjectFile.js.map +1 -0
  247. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.d.ts +4 -0
  248. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.d.ts.map +1 -0
  249. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.js +6 -0
  250. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.js.map +1 -0
  251. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.d.ts +4 -0
  252. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.d.ts.map +1 -0
  253. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.js +6 -0
  254. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.js.map +1 -0
  255. package/dist/index.d.ts +16 -6
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +14 -15
  258. package/dist/index.js.map +1 -1
  259. package/dist/metadata/index.d.ts +1 -1
  260. package/dist/metadata/index.d.ts.map +1 -1
  261. package/dist/metadata/index.js +1 -1
  262. package/dist/metadata/index.js.map +1 -1
  263. package/dist/project/index.d.ts +8 -5
  264. package/dist/project/index.d.ts.map +1 -1
  265. package/dist/project/index.js +7 -5
  266. package/dist/project/index.js.map +1 -1
  267. package/dist/readme-usage.js +17 -26
  268. package/dist/readme-usage.js.map +1 -1
  269. package/dist/testSupport.d.ts +1 -1
  270. package/dist/testSupport.d.ts.map +1 -1
  271. package/dist/testSupport.js +11 -1
  272. package/dist/testSupport.js.map +1 -1
  273. package/dist/types/infraCli.d.ts +91 -0
  274. package/dist/types/infraCli.d.ts.map +1 -0
  275. package/dist/types/infraCli.js +2 -0
  276. package/dist/types/infraCli.js.map +1 -0
  277. package/dist/types/infraOrchestration.d.ts +84 -0
  278. package/dist/types/infraOrchestration.d.ts.map +1 -0
  279. package/dist/types/infraOrchestration.js +2 -0
  280. package/dist/types/infraOrchestration.js.map +1 -0
  281. package/dist/types/infraProject.d.ts +43 -0
  282. package/dist/types/infraProject.d.ts.map +1 -0
  283. package/dist/types/infraProject.js +2 -0
  284. package/dist/types/infraProject.js.map +1 -0
  285. package/package.json +20 -10
  286. package/src/adapterPackages.integration.test.ts +79 -0
  287. package/src/cli/bin.ts +2 -61
  288. package/src/cli/cli.test.ts +35 -126
  289. package/src/cli/commands/destroy.ts +57 -0
  290. package/src/cli/commands/down.ts +28 -0
  291. package/src/cli/commands/generate.ts +34 -0
  292. package/src/cli/commands/outputs.ts +25 -0
  293. package/src/cli/commands/plan.ts +20 -0
  294. package/src/cli/commands/status.ts +20 -0
  295. package/src/cli/commands/up.ts +29 -0
  296. package/src/cli/commands/validate.ts +20 -0
  297. package/src/cli/constants.ts +19 -0
  298. package/src/cli/createDefaultInfraCommandContext.ts +17 -0
  299. package/src/cli/createInfraRuntimeProvider.ts +35 -0
  300. package/src/cli/createProviderCommandDescriptors.ts +8 -0
  301. package/src/cli/findInfraCommand.ts +7 -0
  302. package/src/cli/index.test.ts +12 -20
  303. package/src/cli/index.ts +7 -49
  304. package/src/cli/renderInfraRootHelp.ts +23 -0
  305. package/src/cli/renderUnknownInfraCommand.ts +4 -0
  306. package/src/cli/runInfraCliAsync.ts +51 -0
  307. package/src/cli/runInfraCommandAsync.ts +114 -0
  308. package/src/cli/utils/prepareInfraCommandOperationAsync.ts +64 -0
  309. package/src/cli/utils/requireInfraSuccess.ts +24 -0
  310. package/src/cli/utils/resolveInfraPersistence.ts +22 -0
  311. package/src/cli/utils/writeInfraEnvironmentOutputs.ts +24 -0
  312. package/src/cli/utils/writeInfraStructured.ts +11 -0
  313. package/src/commands.test.ts +198 -196
  314. package/src/{packageMetadata.ts → constants.ts} +5 -2
  315. package/src/environmentLifecycle.test.ts +193 -0
  316. package/src/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.ts +52 -0
  317. package/src/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.ts +32 -0
  318. package/src/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.ts +10 -0
  319. package/src/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.ts +34 -0
  320. package/src/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.ts +12 -0
  321. package/src/{project.ts → features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.ts} +10 -45
  322. package/src/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.ts +34 -0
  323. package/src/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.ts +21 -0
  324. package/src/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.ts +10 -0
  325. package/src/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.ts +25 -0
  326. package/src/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.ts +119 -0
  327. package/src/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.ts +65 -0
  328. package/src/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.ts +51 -0
  329. package/src/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.ts +41 -0
  330. package/src/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.ts +67 -0
  331. package/src/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.ts +137 -0
  332. package/src/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.ts +257 -0
  333. package/src/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.ts +80 -0
  334. package/src/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.ts +126 -0
  335. package/src/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.ts +25 -0
  336. package/src/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.ts +21 -0
  337. package/src/features/environment-lifecycle/composition/createInfraCommandServices.ts +47 -0
  338. package/src/features/environment-lifecycle/composition/createProjectInfraLifecycle.ts +157 -0
  339. package/src/features/environment-lifecycle/domain/orderInfraPlanActions.ts +64 -0
  340. package/src/features/environment-lifecycle/domain/resolveInfraEnvironment.ts +62 -0
  341. package/src/features/environment-lifecycle/utils/appendInfraFailure.ts +9 -0
  342. package/src/features/environment-lifecycle/utils/createInfraExecutionContext.ts +24 -0
  343. package/src/features/environment-lifecycle/utils/createInfraFailure.ts +6 -0
  344. package/src/features/environment-lifecycle/utils/createInfraLedger.ts +30 -0
  345. package/src/features/environment-lifecycle/utils/infraIdentityKey.ts +6 -0
  346. package/src/features/environment-lifecycle/utils/isInfraStoredState.ts +141 -0
  347. package/src/features/environment-lifecycle/utils/mergeInfraOutputs.ts +14 -0
  348. package/src/features/environment-lifecycle/utils/mergeInfraResources.ts +14 -0
  349. package/src/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.ts +7 -0
  350. package/src/features/environment-lifecycle/utils/resolveInfraStatePath.ts +12 -0
  351. package/src/features/environment-lifecycle/utils/resolveProjectFile.ts +22 -0
  352. package/src/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.ts +15 -0
  353. package/src/features/environment-lifecycle/utils/retainUnchangedAdapterResources.ts +15 -0
  354. package/src/index.test.ts +22 -315
  355. package/src/index.ts +41 -53
  356. package/src/infraComposition.integration.test.ts +128 -0
  357. package/src/infraOperations.test.ts +386 -0
  358. package/src/infraUp.test.ts +260 -0
  359. package/src/metadata/index.ts +1 -1
  360. package/src/package.test.ts +4 -2
  361. package/src/project/index.test.ts +10 -188
  362. package/src/project/index.ts +15 -22
  363. package/src/project.test.ts +39 -189
  364. package/src/projectContractsParser.test.ts +2 -2
  365. package/src/projectInfrastructure.test.ts +121 -167
  366. package/src/projectLifecycle.test.ts +136 -0
  367. package/src/readme-usage.ts +17 -26
  368. package/src/testSupport.ts +12 -2
  369. package/src/types/infraCli.ts +115 -0
  370. package/src/types/infraOrchestration.ts +126 -0
  371. package/src/types/infraProject.ts +58 -0
  372. package/dist/adapters/minikube/auth/index.d.ts +0 -8
  373. package/dist/adapters/minikube/auth/index.d.ts.map +0 -1
  374. package/dist/adapters/minikube/auth/index.js +0 -29
  375. package/dist/adapters/minikube/auth/index.js.map +0 -1
  376. package/dist/adapters/minikube/auth/oauthRuntime.d.ts +0 -4
  377. package/dist/adapters/minikube/auth/oauthRuntime.d.ts.map +0 -1
  378. package/dist/adapters/minikube/auth/oauthRuntime.js +0 -138
  379. package/dist/adapters/minikube/auth/oauthRuntime.js.map +0 -1
  380. package/dist/adapters/minikube/auth/supabase/index.d.ts +0 -7
  381. package/dist/adapters/minikube/auth/supabase/index.d.ts.map +0 -1
  382. package/dist/adapters/minikube/auth/supabase/index.js +0 -232
  383. package/dist/adapters/minikube/auth/supabase/index.js.map +0 -1
  384. package/dist/adapters/minikube/auth/supabase/profile.d.ts +0 -20
  385. package/dist/adapters/minikube/auth/supabase/profile.d.ts.map +0 -1
  386. package/dist/adapters/minikube/auth/supabase/profile.js +0 -452
  387. package/dist/adapters/minikube/auth/supabase/profile.js.map +0 -1
  388. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.d.ts +0 -7
  389. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.d.ts.map +0 -1
  390. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.js +0 -104
  391. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.js.map +0 -1
  392. package/dist/adapters/minikube/authz/cerbos/index.d.ts +0 -13
  393. package/dist/adapters/minikube/authz/cerbos/index.d.ts.map +0 -1
  394. package/dist/adapters/minikube/authz/cerbos/index.js +0 -382
  395. package/dist/adapters/minikube/authz/cerbos/index.js.map +0 -1
  396. package/dist/adapters/minikube/authz/index.d.ts +0 -9
  397. package/dist/adapters/minikube/authz/index.d.ts.map +0 -1
  398. package/dist/adapters/minikube/authz/index.js +0 -23
  399. package/dist/adapters/minikube/authz/index.js.map +0 -1
  400. package/dist/adapters/minikube/base/index.d.ts +0 -14
  401. package/dist/adapters/minikube/base/index.d.ts.map +0 -1
  402. package/dist/adapters/minikube/base/index.js +0 -3433
  403. package/dist/adapters/minikube/base/index.js.map +0 -1
  404. package/dist/adapters/minikube/base/supabaseMigrations.d.ts +0 -2
  405. package/dist/adapters/minikube/base/supabaseMigrations.d.ts.map +0 -1
  406. package/dist/adapters/minikube/base/supabaseMigrations.js +0 -6
  407. package/dist/adapters/minikube/base/supabaseMigrations.js.map +0 -1
  408. package/dist/adapters/minikube/contracts.d.ts +0 -34
  409. package/dist/adapters/minikube/contracts.d.ts.map +0 -1
  410. package/dist/adapters/minikube/contracts.js +0 -10
  411. package/dist/adapters/minikube/contracts.js.map +0 -1
  412. package/dist/adapters/minikube/index.d.ts +0 -3
  413. package/dist/adapters/minikube/index.d.ts.map +0 -1
  414. package/dist/adapters/minikube/index.js +0 -136
  415. package/dist/adapters/minikube/index.js.map +0 -1
  416. package/dist/adapters/minikube/secrets/index.d.ts +0 -7
  417. package/dist/adapters/minikube/secrets/index.d.ts.map +0 -1
  418. package/dist/adapters/minikube/secrets/index.js +0 -13
  419. package/dist/adapters/minikube/secrets/index.js.map +0 -1
  420. package/dist/adapters/minikube/secrets/supabase-vault/index.d.ts +0 -8
  421. package/dist/adapters/minikube/secrets/supabase-vault/index.d.ts.map +0 -1
  422. package/dist/adapters/minikube/secrets/supabase-vault/index.js +0 -118
  423. package/dist/adapters/minikube/secrets/supabase-vault/index.js.map +0 -1
  424. package/dist/adapters/minikube/storage/index.d.ts +0 -7
  425. package/dist/adapters/minikube/storage/index.d.ts.map +0 -1
  426. package/dist/adapters/minikube/storage/index.js +0 -77
  427. package/dist/adapters/minikube/storage/index.js.map +0 -1
  428. package/dist/adapters/minikube/storage/supabase/index.d.ts +0 -7
  429. package/dist/adapters/minikube/storage/supabase/index.d.ts.map +0 -1
  430. package/dist/adapters/minikube/storage/supabase/index.js +0 -82
  431. package/dist/adapters/minikube/storage/supabase/index.js.map +0 -1
  432. package/dist/authRedirects.d.ts +0 -19
  433. package/dist/authRedirects.d.ts.map +0 -1
  434. package/dist/authRedirects.js +0 -80
  435. package/dist/authRedirects.js.map +0 -1
  436. package/dist/authTargetRedirects.d.ts +0 -12
  437. package/dist/authTargetRedirects.d.ts.map +0 -1
  438. package/dist/authTargetRedirects.js +0 -32
  439. package/dist/authTargetRedirects.js.map +0 -1
  440. package/dist/commandContext.d.ts +0 -12
  441. package/dist/commandContext.d.ts.map +0 -1
  442. package/dist/commandContext.js.map +0 -1
  443. package/dist/commands.d.ts +0 -95
  444. package/dist/commands.d.ts.map +0 -1
  445. package/dist/commands.js +0 -256
  446. package/dist/commands.js.map +0 -1
  447. package/dist/infraValidation.d.ts +0 -4
  448. package/dist/infraValidation.d.ts.map +0 -1
  449. package/dist/infraValidation.js +0 -63
  450. package/dist/infraValidation.js.map +0 -1
  451. package/dist/packageMetadata.d.ts +0 -10
  452. package/dist/packageMetadata.d.ts.map +0 -1
  453. package/dist/packageMetadata.js.map +0 -1
  454. package/dist/project.d.ts +0 -14
  455. package/dist/project.d.ts.map +0 -1
  456. package/dist/project.js.map +0 -1
  457. package/dist/projectDatabase.d.ts +0 -5
  458. package/dist/projectDatabase.d.ts.map +0 -1
  459. package/dist/projectDatabase.js +0 -22
  460. package/dist/projectDatabase.js.map +0 -1
  461. package/dist/projectEnvironment.d.ts +0 -6
  462. package/dist/projectEnvironment.d.ts.map +0 -1
  463. package/dist/projectEnvironment.js +0 -45
  464. package/dist/projectEnvironment.js.map +0 -1
  465. package/dist/projectInfrastructure.d.ts +0 -38
  466. package/dist/projectInfrastructure.d.ts.map +0 -1
  467. package/dist/projectInfrastructure.js +0 -145
  468. package/dist/projectInfrastructure.js.map +0 -1
  469. package/dist/runtime.d.ts +0 -54
  470. package/dist/runtime.d.ts.map +0 -1
  471. package/dist/runtime.js +0 -151
  472. package/dist/runtime.js.map +0 -1
  473. package/dist/secretStore.d.ts +0 -19
  474. package/dist/secretStore.d.ts.map +0 -1
  475. package/dist/secretStore.js +0 -22
  476. package/dist/secretStore.js.map +0 -1
  477. package/dist/types.d.ts +0 -70
  478. package/dist/types.d.ts.map +0 -1
  479. package/dist/types.js +0 -2
  480. package/dist/types.js.map +0 -1
  481. package/src/adapters/minikube/README.md +0 -115
  482. package/src/adapters/minikube/appRuntimeServing.test.ts +0 -28
  483. package/src/adapters/minikube/auth/index.ts +0 -40
  484. package/src/adapters/minikube/auth/oauthRuntime.ts +0 -163
  485. package/src/adapters/minikube/auth/supabase/index.test.ts +0 -227
  486. package/src/adapters/minikube/auth/supabase/index.ts +0 -293
  487. package/src/adapters/minikube/auth/supabase/oauthRuntime.test.ts +0 -154
  488. package/src/adapters/minikube/auth/supabase/profile.integration.test.ts +0 -1028
  489. package/src/adapters/minikube/auth/supabase/profile.ts +0 -526
  490. package/src/adapters/minikube/auth/supabase/providerAssignments.test.ts +0 -36
  491. package/src/adapters/minikube/auth/targetAwareOAuthRuntime.test.ts +0 -83
  492. package/src/adapters/minikube/auth/targetAwareOAuthRuntime.ts +0 -136
  493. package/src/adapters/minikube/authz/cerbos/index.ts +0 -486
  494. package/src/adapters/minikube/authz/index.ts +0 -32
  495. package/src/adapters/minikube/base/appImageBuild.test.ts +0 -352
  496. package/src/adapters/minikube/base/index.test.ts +0 -693
  497. package/src/adapters/minikube/base/index.ts +0 -3763
  498. package/src/adapters/minikube/base/portForwardRuntime.test.ts +0 -624
  499. package/src/adapters/minikube/base/supabaseMigrations.test.ts +0 -168
  500. package/src/adapters/minikube/base/supabaseMigrations.ts +0 -5
  501. package/src/adapters/minikube/base/twoAppIsolation.integration.test.ts +0 -898
  502. package/src/adapters/minikube/base/upgradeReconciliation.test.ts +0 -135
  503. package/src/adapters/minikube/contracts.ts +0 -46
  504. package/src/adapters/minikube/index.ts +0 -172
  505. package/src/adapters/minikube/secrets/index.test.ts +0 -147
  506. package/src/adapters/minikube/secrets/index.ts +0 -19
  507. package/src/adapters/minikube/secrets/supabase-vault/index.ts +0 -139
  508. package/src/adapters/minikube/storage/index.ts +0 -91
  509. package/src/adapters/minikube/storage/supabase/index.ts +0 -108
  510. package/src/apiInfrastructure.test.ts +0 -69
  511. package/src/authRedirects.test.ts +0 -63
  512. package/src/authRedirects.ts +0 -113
  513. package/src/authTargetRedirects.test.ts +0 -62
  514. package/src/authTargetRedirects.ts +0 -46
  515. package/src/commandContext.ts +0 -27
  516. package/src/commands.ts +0 -404
  517. package/src/generatedApiLedgerCleanup.test.ts +0 -72
  518. package/src/infraApiValidation.test.ts +0 -42
  519. package/src/infraValidation.ts +0 -99
  520. package/src/minikubeImageLifecycle.test.ts +0 -35
  521. package/src/projectDatabase.ts +0 -27
  522. package/src/projectEnvironment.ts +0 -51
  523. package/src/projectInfrastructure.ts +0 -221
  524. package/src/runtime.test.ts +0 -124
  525. package/src/runtime.ts +0 -234
  526. package/src/secretStore.test.ts +0 -76
  527. package/src/secretStore.ts +0 -44
  528. package/src/types.ts +0 -82
@@ -1,63 +0,0 @@
1
- import { AUTH_PROVIDERS, AUTH_SCOPES, AUTHZ_ENGINES, DATABASE_PROVIDERS, DEPLOYMENT_TARGETS, } from '@ankhorage/contracts';
2
- export function validateInfraSupport(manifest) {
3
- const warnings = [...validateInfraApiSupport(manifest)];
4
- const deploymentTarget = manifest.deployment?.target;
5
- if (deploymentTarget !== undefined && !isSupported(deploymentTarget, DEPLOYMENT_TARGETS)) {
6
- warnings.push(warningForUnsupportedValue({
7
- path: 'infra.deployment.target',
8
- value: deploymentTarget,
9
- supported: DEPLOYMENT_TARGETS,
10
- }));
11
- }
12
- const databaseProvider = manifest.database?.provider;
13
- if (databaseProvider !== undefined && !isSupported(databaseProvider, DATABASE_PROVIDERS)) {
14
- warnings.push(warningForUnsupportedValue({
15
- path: 'infra.database.provider',
16
- value: databaseProvider,
17
- supported: DATABASE_PROVIDERS,
18
- }));
19
- }
20
- const authProvider = manifest.auth?.provider;
21
- if (authProvider !== undefined && !isSupported(authProvider, AUTH_PROVIDERS)) {
22
- warnings.push(warningForUnsupportedValue({
23
- path: 'infra.auth.provider',
24
- value: authProvider,
25
- supported: AUTH_PROVIDERS,
26
- }));
27
- }
28
- const authScope = manifest.auth?.scope;
29
- if (authScope !== undefined && !isSupported(authScope, AUTH_SCOPES)) {
30
- warnings.push(warningForUnsupportedValue({
31
- path: 'infra.auth.scope',
32
- value: authScope,
33
- supported: AUTH_SCOPES,
34
- }));
35
- }
36
- const authzEngine = manifest.auth?.authorization?.engine;
37
- if (authzEngine !== undefined && !isSupported(authzEngine, AUTHZ_ENGINES)) {
38
- warnings.push(warningForUnsupportedValue({
39
- path: 'infra.auth.authorization.engine',
40
- value: authzEngine,
41
- supported: AUTHZ_ENGINES,
42
- }));
43
- }
44
- return warnings;
45
- }
46
- export function validateInfraApiSupport(manifest) {
47
- return (manifest.apis ?? [])
48
- .filter((api) => api.origin === 'internal')
49
- .map((api) => `infra.apis.${api.id} has origin "internal", but internal API provisioning is not supported in Phase 1; no API infrastructure will be generated.`);
50
- }
51
- function warningForUnsupportedValue(args) {
52
- return `${args.path} "${args.value}" is not currently supported by implemented generators. Supported values: ${formatSupportedValues(args.supported)}.`;
53
- }
54
- function formatSupportedValues(values) {
55
- if (values.length === 0) {
56
- return '(none)';
57
- }
58
- return values.join(', ');
59
- }
60
- function isSupported(value, supported) {
61
- return supported.includes(value);
62
- }
63
- //# sourceMappingURL=infraValidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"infraValidation.js","sourceRoot":"","sources":["../src/infraValidation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AUTH_PROVIDERS,\n AUTH_SCOPES,\n AUTHZ_ENGINES,\n DATABASE_PROVIDERS,\n DEPLOYMENT_TARGETS,\n} from '@ankhorage/contracts';\n\nimport type { InfraManifestInput } from './types.js';\n\nexport function validateInfraSupport(manifest: InfraManifestInput): readonly string[] {\n const warnings: string[] = [...validateInfraApiSupport(manifest)];\n\n const deploymentTarget = manifest.deployment?.target;\n if (deploymentTarget !== undefined && !isSupported(deploymentTarget, DEPLOYMENT_TARGETS)) {\n warnings.push(\n warningForUnsupportedValue({\n path: 'infra.deployment.target',\n value: deploymentTarget,\n supported: DEPLOYMENT_TARGETS,\n }),\n );\n }\n\n const databaseProvider = manifest.database?.provider;\n if (databaseProvider !== undefined && !isSupported(databaseProvider, DATABASE_PROVIDERS)) {\n warnings.push(\n warningForUnsupportedValue({\n path: 'infra.database.provider',\n value: databaseProvider,\n supported: DATABASE_PROVIDERS,\n }),\n );\n }\n\n const authProvider = manifest.auth?.provider;\n if (authProvider !== undefined && !isSupported(authProvider, AUTH_PROVIDERS)) {\n warnings.push(\n warningForUnsupportedValue({\n path: 'infra.auth.provider',\n value: authProvider,\n supported: AUTH_PROVIDERS,\n }),\n );\n }\n\n const authScope = manifest.auth?.scope;\n if (authScope !== undefined && !isSupported(authScope, AUTH_SCOPES)) {\n warnings.push(\n warningForUnsupportedValue({\n path: 'infra.auth.scope',\n value: authScope,\n supported: AUTH_SCOPES,\n }),\n );\n }\n\n const authzEngine = manifest.auth?.authorization?.engine;\n if (authzEngine !== undefined && !isSupported(authzEngine, AUTHZ_ENGINES)) {\n warnings.push(\n warningForUnsupportedValue({\n path: 'infra.auth.authorization.engine',\n value: authzEngine,\n supported: AUTHZ_ENGINES,\n }),\n );\n }\n\n return warnings;\n}\n\nexport function validateInfraApiSupport(manifest: InfraManifestInput): readonly string[] {\n return (manifest.apis ?? [])\n .filter((api) => api.origin === 'internal')\n .map(\n (api) =>\n `infra.apis.${api.id} has origin \"internal\", but internal API provisioning is not supported in Phase 1; no API infrastructure will be generated.`,\n );\n}\n\nfunction warningForUnsupportedValue(args: {\n readonly path: string;\n readonly value: string;\n readonly supported: readonly string[];\n}): string {\n return `${args.path} \"${args.value}\" is not currently supported by implemented generators. Supported values: ${formatSupportedValues(args.supported)}.`;\n}\n\nfunction formatSupportedValues(values: readonly string[]): string {\n if (values.length === 0) {\n return '(none)';\n }\n\n return values.join(', ');\n}\n\nfunction isSupported(value: string, supported: readonly string[]): boolean {\n return supported.includes(value);\n}\n"]}
@@ -1,10 +0,0 @@
1
- export declare const INFRA_PACKAGE_NAME: string;
2
- export declare const INFRA_PACKAGE_VERSION: string;
3
- export declare const INFRA_COMMAND_CATEGORY: "infra";
4
- export declare const INFRA_CAPABILITIES: readonly ["infra.validate", "infra.generate", "infra.status", "infra.up", "infra.down"];
5
- export declare const INFRA_PACKAGE_METADATA: {
6
- readonly category: "infra";
7
- readonly provider: "./dist/ankh.provider.js";
8
- readonly capabilities: readonly ["infra.validate", "infra.generate", "infra.status", "infra.up", "infra.down"];
9
- };
10
- //# sourceMappingURL=packageMetadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../src/packageMetadata.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,kBAAkB,QAAmB,CAAC;AACnD,eAAO,MAAM,qBAAqB,QAAsB,CAAC;AACzD,eAAO,MAAM,sBAAsB,SAAiD,CAAC;AACrF,eAAO,MAAM,kBAAkB,yFAMiB,CAAC;AAEjD,eAAO,MAAM,sBAAsB;;;;CAIK,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageMetadata.js","sourceRoot":"","sources":["../src/packageMetadata.ts"],"names":[],"mappings":"AAMA,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC;AACzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAA8C,CAAC;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,UAAU;IACV,YAAY;CACkC,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,yBAAyB;IACnC,YAAY,EAAE,kBAAkB;CACM,CAAC","sourcesContent":["import type {\n AnkhCapabilityId,\n AnkhCommandCategory,\n AnkhPackageMetadata,\n} from '@ankhorage/contracts/cli';\n\nimport packageJson from '../package.json';\n\nexport const INFRA_PACKAGE_NAME = packageJson.name;\nexport const INFRA_PACKAGE_VERSION = packageJson.version;\nexport const INFRA_COMMAND_CATEGORY = 'infra' as const satisfies AnkhCommandCategory;\nexport const INFRA_CAPABILITIES = [\n 'infra.validate',\n 'infra.generate',\n 'infra.status',\n 'infra.up',\n 'infra.down',\n] as const satisfies readonly AnkhCapabilityId[];\n\nexport const INFRA_PACKAGE_METADATA = {\n category: INFRA_COMMAND_CATEGORY,\n provider: './dist/ankh.provider.js',\n capabilities: INFRA_CAPABILITIES,\n} as const satisfies AnkhPackageMetadata;\n"]}
package/dist/project.d.ts DELETED
@@ -1,14 +0,0 @@
1
- import { type AppManifest } from '@ankhorage/contracts';
2
- export interface ResolvedInfraProject {
3
- readonly appsRoot: string;
4
- readonly manifest: AppManifest;
5
- readonly manifestPath: string;
6
- readonly projectId: string;
7
- readonly projectPath: string;
8
- readonly workspaceRoot: string;
9
- }
10
- export declare function resolveInfraProject(options: {
11
- readonly cwd: string;
12
- readonly projectId?: string;
13
- }): Promise<ResolvedInfraProject>;
14
- //# sourceMappingURL=project.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,sBAAsB,CAAC;AAIvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiChC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AppManifest, isAppManifest } from '@ankhorage/contracts';\nimport { promises as fs } from 'fs';\nimport path from 'path';\n\nexport interface ResolvedInfraProject {\n readonly appsRoot: string;\n readonly manifest: AppManifest;\n readonly manifestPath: string;\n readonly projectId: string;\n readonly projectPath: string;\n readonly workspaceRoot: string;\n}\n\nexport async function resolveInfraProject(options: {\n readonly cwd: string;\n readonly projectId?: string;\n}): Promise<ResolvedInfraProject> {\n const workspaceRoot = await findWorkspaceRoot(options.cwd);\n if (workspaceRoot === null) {\n throw new Error(`Could not find an Ankh workspace root from cwd: ${options.cwd}`);\n }\n\n const appsRoot = path.join(workspaceRoot, 'apps');\n const projectId =\n options.projectId === undefined\n ? inferProjectId(options.cwd, appsRoot)\n : validateExplicitProjectId(options.projectId);\n if (projectId === null) {\n throw new Error(\n 'Could not infer a project from cwd. Pass a project id or run the command inside apps/<project>.',\n );\n }\n\n const projectPath = resolveProjectPath(appsRoot, projectId);\n if (!(await pathExists(projectPath))) {\n throw new Error(`Project '${projectId}' not found.`);\n }\n\n const manifestPath = path.join(projectPath, 'ankh.config.json');\n const manifest = await readProjectManifest({ manifestPath, projectId });\n\n return {\n appsRoot,\n manifest,\n manifestPath,\n projectId,\n projectPath,\n workspaceRoot,\n };\n}\n\nfunction resolveProjectPath(appsRoot: string, projectId: string): string {\n const projectPath = path.resolve(appsRoot, projectId);\n const appsRootPath = `${path.resolve(appsRoot)}${path.sep}`;\n\n if (!projectPath.startsWith(appsRootPath)) {\n throw new Error('Security check failed while resolving the project path.');\n }\n\n return projectPath;\n}\n\nfunction createFallbackManifest(projectId: string): AppManifest {\n return {\n metadata: {\n name: projectId,\n slug: projectId,\n version: '0.0.0',\n category: 'developer_tools',\n themeId: 'default',\n },\n themes: [],\n activeThemeId: 'default',\n infra: { modules: [] },\n navigator: {\n type: 'stack',\n routes: [{ name: 'index', screenId: 'index' }],\n },\n screens: {},\n settings: {\n localization: {\n defaultLocale: 'en',\n locales: ['en'],\n },\n },\n };\n}\n\nasync function readProjectManifest(args: {\n readonly manifestPath: string;\n readonly projectId: string;\n}): Promise<AppManifest> {\n if (!(await pathExists(args.manifestPath))) {\n return createFallbackManifest(args.projectId);\n }\n\n const rawManifest = await fs.readFile(args.manifestPath, 'utf8');\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(rawManifest);\n } catch (error) {\n throw new Error(\n `Project manifest is not valid JSON: ${args.manifestPath}: ${getErrorMessage(error)}`,\n { cause: error },\n );\n }\n\n if (!isAppManifest(parsed)) {\n throw new Error(`Project manifest has an invalid shape: ${args.manifestPath}`);\n }\n\n return parsed;\n}\n\nasync function findWorkspaceRoot(startPath: string): Promise<string | null> {\n let currentPath = path.resolve(startPath);\n\n for (;;) {\n const appsRoot = path.join(currentPath, 'apps');\n if (await isDirectory(appsRoot)) return currentPath;\n\n const parentPath = path.dirname(currentPath);\n if (parentPath === currentPath) return null;\n currentPath = parentPath;\n }\n}\n\nfunction inferProjectId(cwd: string, appsRoot: string): string | null {\n const relativePath = path.relative(path.resolve(appsRoot), path.resolve(cwd));\n if (relativePath === '' || relativePath.startsWith('..') || path.isAbsolute(relativePath)) {\n return null;\n }\n\n const [projectId] = relativePath.split(path.sep);\n return projectId === undefined || projectId.length === 0 ? null : path.basename(projectId);\n}\n\nfunction validateExplicitProjectId(projectId: string): string {\n if (projectId.trim().length === 0) {\n throw new Error('Invalid project id: expected a single safe project segment.');\n }\n\n if (\n projectId === '.' ||\n projectId === '..' ||\n path.isAbsolute(projectId) ||\n projectId.includes('/') ||\n projectId.includes('\\\\')\n ) {\n throw new Error(`Invalid project id: ${projectId}. Expected a single safe project segment.`);\n }\n\n return projectId;\n}\n\nasync function isDirectory(filePath: string): Promise<boolean> {\n try {\n const stat = await fs.stat(filePath);\n return stat.isDirectory();\n } catch {\n return false;\n }\n}\n\nasync function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"]}
@@ -1,5 +0,0 @@
1
- export declare function resolveProjectInfrastructureDatabaseUrl(args: {
2
- readonly projectPath: string;
3
- readonly target: string;
4
- }): Promise<string | null>;
5
- //# sourceMappingURL=projectDatabase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectDatabase.d.ts","sourceRoot":"","sources":["../src/projectDatabase.ts"],"names":[],"mappings":"AAUA,wBAAsB,uCAAuC,CAAC,IAAI,EAAE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAazB"}
@@ -1,22 +0,0 @@
1
- import { readProjectInfrastructureEnvironment } from './projectEnvironment.js';
2
- const DATABASE_URL_KEYS = [
3
- 'ANKH_SECRET_STORE_DATABASE_URL',
4
- 'SUPABASE_DB_URL',
5
- 'POSTGRES_URL',
6
- 'DB_URL',
7
- 'DATABASE_URL',
8
- ];
9
- export async function resolveProjectInfrastructureDatabaseUrl(args) {
10
- const environment = await readProjectInfrastructureEnvironment({
11
- keys: DATABASE_URL_KEYS,
12
- projectPath: args.projectPath,
13
- target: args.target,
14
- });
15
- for (const key of DATABASE_URL_KEYS) {
16
- const value = environment[key]?.trim();
17
- if (value)
18
- return value;
19
- }
20
- return null;
21
- }
22
- //# sourceMappingURL=projectDatabase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectDatabase.js","sourceRoot":"","sources":["../src/projectDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,yBAAyB,CAAC;AAE/E,MAAM,iBAAiB,GAAG;IACxB,gCAAgC;IAChC,iBAAiB;IACjB,cAAc;IACd,QAAQ;IACR,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAAC,IAG7D;IACC,MAAM,WAAW,GAAG,MAAM,oCAAoC,CAAC;QAC7D,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { readProjectInfrastructureEnvironment } from './projectEnvironment.js';\n\nconst DATABASE_URL_KEYS = [\n 'ANKH_SECRET_STORE_DATABASE_URL',\n 'SUPABASE_DB_URL',\n 'POSTGRES_URL',\n 'DB_URL',\n 'DATABASE_URL',\n] as const;\n\nexport async function resolveProjectInfrastructureDatabaseUrl(args: {\n readonly projectPath: string;\n readonly target: string;\n}): Promise<string | null> {\n const environment = await readProjectInfrastructureEnvironment({\n keys: DATABASE_URL_KEYS,\n projectPath: args.projectPath,\n target: args.target,\n });\n\n for (const key of DATABASE_URL_KEYS) {\n const value = environment[key]?.trim();\n if (value) return value;\n }\n\n return null;\n}\n"]}
@@ -1,6 +0,0 @@
1
- export declare function readProjectInfrastructureEnvironment(args: {
2
- readonly keys: readonly string[];
3
- readonly projectPath: string;
4
- readonly target: string;
5
- }): Promise<Readonly<Record<string, string>>>;
6
- //# sourceMappingURL=projectEnvironment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectEnvironment.d.ts","sourceRoot":"","sources":["../src/projectEnvironment.ts"],"names":[],"mappings":"AAGA,wBAAsB,oCAAoC,CAAC,IAAI,EAAE;IAC/D,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAc5C"}
@@ -1,45 +0,0 @@
1
- import { promises as fs } from 'fs';
2
- import path from 'path';
3
- export async function readProjectInfrastructureEnvironment(args) {
4
- const infraRoot = path.join(args.projectPath, 'infra', args.target);
5
- const envPath = path.join(infraRoot, '.env');
6
- const fallbackPath = path.join(infraRoot, '.env.example');
7
- const sourcePath = (await pathExists(envPath)) ? envPath : fallbackPath;
8
- const environment = await readEnvironmentFile(sourcePath);
9
- const selected = {};
10
- for (const key of new Set(args.keys)) {
11
- const value = environment.get(key);
12
- if (value !== undefined)
13
- selected[key] = value;
14
- }
15
- return selected;
16
- }
17
- async function readEnvironmentFile(filePath) {
18
- const out = new Map();
19
- const content = await fs.readFile(filePath, 'utf8');
20
- for (const line of content.split(/\r?\n/u)) {
21
- const trimmed = line.trim();
22
- if (!trimmed || trimmed.startsWith('#'))
23
- continue;
24
- const separator = trimmed.indexOf('=');
25
- if (separator <= 0)
26
- continue;
27
- const key = trimmed.slice(0, separator).trim();
28
- const value = trimmed
29
- .slice(separator + 1)
30
- .trim()
31
- .replace(/^['"]|['"]$/g, '');
32
- out.set(key, value);
33
- }
34
- return out;
35
- }
36
- async function pathExists(filePath) {
37
- try {
38
- await fs.access(filePath);
39
- return true;
40
- }
41
- catch {
42
- return false;
43
- }
44
- }
45
- //# sourceMappingURL=projectEnvironment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectEnvironment.js","sourceRoot":"","sources":["../src/projectEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,IAI1D;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;IACxE,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,CAAC;YAAE,SAAS;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO;aAClB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB,IAAI,EAAE;aACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { promises as fs } from 'fs';\nimport path from 'path';\n\nexport async function readProjectInfrastructureEnvironment(args: {\n readonly keys: readonly string[];\n readonly projectPath: string;\n readonly target: string;\n}): Promise<Readonly<Record<string, string>>> {\n const infraRoot = path.join(args.projectPath, 'infra', args.target);\n const envPath = path.join(infraRoot, '.env');\n const fallbackPath = path.join(infraRoot, '.env.example');\n const sourcePath = (await pathExists(envPath)) ? envPath : fallbackPath;\n const environment = await readEnvironmentFile(sourcePath);\n const selected: Record<string, string> = {};\n\n for (const key of new Set(args.keys)) {\n const value = environment.get(key);\n if (value !== undefined) selected[key] = value;\n }\n\n return selected;\n}\n\nasync function readEnvironmentFile(filePath: string): Promise<Map<string, string>> {\n const out = new Map<string, string>();\n const content = await fs.readFile(filePath, 'utf8');\n\n for (const line of content.split(/\\r?\\n/u)) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n const separator = trimmed.indexOf('=');\n if (separator <= 0) continue;\n const key = trimmed.slice(0, separator).trim();\n const value = trimmed\n .slice(separator + 1)\n .trim()\n .replace(/^['\"]|['\"]$/g, '');\n out.set(key, value);\n }\n\n return out;\n}\n\nasync function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n"]}
@@ -1,38 +0,0 @@
1
- import type { AppManifest } from '@ankhorage/contracts';
2
- import { generateInfrastructure } from './index.js';
3
- export interface InfraSyncResult {
4
- readonly generated: number;
5
- readonly removed: number;
6
- readonly warnings: readonly string[];
7
- readonly skipped?: {
8
- readonly reason: string;
9
- };
10
- }
11
- export interface InfraProjectInspection {
12
- readonly generated: boolean;
13
- readonly generatedAt: string | null;
14
- readonly hasDeployment: boolean;
15
- readonly target: string | null;
16
- readonly trackedFiles: number;
17
- readonly warnings: readonly string[];
18
- readonly skipped?: {
19
- readonly reason: string;
20
- };
21
- }
22
- export declare function syncProjectInfrastructure(args: {
23
- readonly generateInfrastructureImpl?: typeof generateInfrastructure;
24
- readonly manifest: AppManifest;
25
- readonly projectId: string;
26
- readonly projectPath: string;
27
- }): Promise<InfraSyncResult>;
28
- export declare function inspectProjectInfrastructure(args: {
29
- readonly manifest: AppManifest;
30
- readonly projectId: string;
31
- readonly projectPath: string;
32
- }): Promise<InfraProjectInspection>;
33
- export declare function resolveProjectInfrastructureTarget(args: {
34
- readonly manifest: AppManifest;
35
- readonly projectPath: string;
36
- }): Promise<string | null>;
37
- export declare function resolveProjectFile(projectPath: string, filePath: string): string;
38
- //# sourceMappingURL=projectInfrastructure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectInfrastructure.d.ts","sourceRoot":"","sources":["../src/projectInfrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAcpD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC,eAAe,CAAC,CAiE3B;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA0BlC;AAED,wBAAsB,kCAAkC,CAAC,IAAI,EAAE;IAC7D,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQzB;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUhF"}
@@ -1,145 +0,0 @@
1
- import { promises as fs } from 'fs';
2
- import path from 'path';
3
- import { generateInfrastructure } from './index.js';
4
- import { validateInfraSupport } from './infraValidation.js';
5
- const INFRA_LEDGER_RELATIVE_PATH = '.ankh/infra-ledger.json';
6
- const STUDIO_PROJECT_ID = 'studio';
7
- export async function syncProjectInfrastructure(args) {
8
- const supportWarnings = validateInfraSupport(args.manifest.infra);
9
- if (args.projectId === STUDIO_PROJECT_ID) {
10
- return {
11
- generated: 0,
12
- removed: 0,
13
- warnings: supportWarnings,
14
- skipped: {
15
- reason: 'apps/studio is the dashboard and is not a generated app target.',
16
- },
17
- };
18
- }
19
- const previousLedger = await readInfraLedger(args.projectPath);
20
- const previousFiles = new Set(previousLedger?.files ?? []);
21
- if (args.manifest.infra.deployment === undefined) {
22
- const removed = await removeFiles(args.projectPath, previousFiles);
23
- await removeInfraLedger(args.projectPath);
24
- return {
25
- generated: 0,
26
- removed,
27
- warnings: supportWarnings,
28
- };
29
- }
30
- const generated = (args.generateInfrastructureImpl ?? generateInfrastructure)(args.manifest.infra, {
31
- namespaceHint: args.projectId,
32
- appManifest: args.manifest,
33
- });
34
- const combinedWarnings = uniqueStrings([...supportWarnings, ...generated.warnings]);
35
- const nextFiles = new Set();
36
- for (const file of generated.files) {
37
- const outputPath = resolveProjectFile(args.projectPath, file.path);
38
- await fs.mkdir(path.dirname(outputPath), { recursive: true });
39
- await fs.writeFile(outputPath, file.content, 'utf8');
40
- if (file.executable === true) {
41
- await fs.chmod(outputPath, 0o755);
42
- }
43
- nextFiles.add(file.path);
44
- }
45
- const staleFiles = new Set([...previousFiles].filter((filePath) => !nextFiles.has(filePath)));
46
- const removed = await removeFiles(args.projectPath, staleFiles);
47
- await writeInfraLedger(args.projectPath, {
48
- schemaVersion: 1,
49
- generatedAt: new Date().toISOString(),
50
- target: generated.meta.target,
51
- files: [...nextFiles].sort(),
52
- warnings: combinedWarnings,
53
- });
54
- return {
55
- generated: generated.files.length,
56
- removed,
57
- warnings: combinedWarnings,
58
- };
59
- }
60
- export async function inspectProjectInfrastructure(args) {
61
- const supportWarnings = validateInfraSupport(args.manifest.infra);
62
- if (args.projectId === STUDIO_PROJECT_ID) {
63
- return {
64
- generated: false,
65
- generatedAt: null,
66
- hasDeployment: false,
67
- target: null,
68
- trackedFiles: 0,
69
- warnings: supportWarnings,
70
- skipped: {
71
- reason: 'apps/studio is the dashboard and is not a generated app target.',
72
- },
73
- };
74
- }
75
- const ledger = await readInfraLedger(args.projectPath);
76
- return {
77
- generated: ledger !== null,
78
- generatedAt: ledger?.generatedAt ?? null,
79
- hasDeployment: args.manifest.infra.deployment !== undefined,
80
- target: args.manifest.infra.deployment?.target ?? ledger?.target ?? null,
81
- trackedFiles: ledger?.files.length ?? 0,
82
- warnings: uniqueStrings([...supportWarnings, ...(ledger?.warnings ?? [])]),
83
- };
84
- }
85
- export async function resolveProjectInfrastructureTarget(args) {
86
- const manifestTarget = args.manifest.infra.deployment?.target;
87
- if (manifestTarget !== undefined) {
88
- return manifestTarget;
89
- }
90
- const ledger = await readInfraLedger(args.projectPath);
91
- return ledger?.target ?? null;
92
- }
93
- export function resolveProjectFile(projectPath, filePath) {
94
- const rootPath = path.resolve(projectPath);
95
- const resolvedPath = path.resolve(rootPath, filePath);
96
- const relativePath = path.relative(rootPath, resolvedPath);
97
- if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
98
- throw new Error(`Invalid infra output path outside project root: ${filePath}`);
99
- }
100
- return resolvedPath;
101
- }
102
- async function readInfraLedger(projectPath) {
103
- const ledgerPath = path.join(projectPath, INFRA_LEDGER_RELATIVE_PATH);
104
- try {
105
- const rawLedger = await fs.readFile(ledgerPath, 'utf8');
106
- const parsedLedger = JSON.parse(rawLedger);
107
- return isInfraLedger(parsedLedger) ? parsedLedger : null;
108
- }
109
- catch {
110
- return null;
111
- }
112
- }
113
- async function writeInfraLedger(projectPath, ledger) {
114
- const ledgerPath = path.join(projectPath, INFRA_LEDGER_RELATIVE_PATH);
115
- await fs.mkdir(path.dirname(ledgerPath), { recursive: true });
116
- await fs.writeFile(ledgerPath, `${JSON.stringify(ledger, null, 2)}\n`, 'utf8');
117
- }
118
- async function removeInfraLedger(projectPath) {
119
- await fs.rm(path.join(projectPath, INFRA_LEDGER_RELATIVE_PATH), { force: true });
120
- }
121
- async function removeFiles(projectPath, files) {
122
- let removedFiles = 0;
123
- for (const filePath of files) {
124
- await fs.rm(resolveProjectFile(projectPath, filePath), { force: true });
125
- removedFiles += 1;
126
- }
127
- return removedFiles;
128
- }
129
- function isInfraLedger(value) {
130
- return (isRecord(value) &&
131
- value.schemaVersion === 1 &&
132
- typeof value.generatedAt === 'string' &&
133
- typeof value.target === 'string' &&
134
- Array.isArray(value.files) &&
135
- value.files.every((filePath) => typeof filePath === 'string') &&
136
- Array.isArray(value.warnings) &&
137
- value.warnings.every((warning) => typeof warning === 'string'));
138
- }
139
- function isRecord(value) {
140
- return typeof value === 'object' && value !== null;
141
- }
142
- function uniqueStrings(values) {
143
- return [...new Set(values)];
144
- }
145
- //# sourceMappingURL=projectInfrastructure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectInfrastructure.js","sourceRoot":"","sources":["../src/projectInfrastructure.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppManifest } from '@ankhorage/contracts';\nimport { promises as fs } from 'fs';\nimport path from 'path';\n\nimport { generateInfrastructure } from './index.js';\nimport { validateInfraSupport } from './infraValidation.js';\n\nconst INFRA_LEDGER_RELATIVE_PATH = '.ankh/infra-ledger.json';\nconst STUDIO_PROJECT_ID = 'studio';\n\ninterface InfraLedger {\n readonly schemaVersion: 1;\n readonly generatedAt: string;\n readonly target: string;\n readonly files: readonly string[];\n readonly warnings: readonly string[];\n}\n\nexport interface InfraSyncResult {\n readonly generated: number;\n readonly removed: number;\n readonly warnings: readonly string[];\n readonly skipped?: {\n readonly reason: string;\n };\n}\n\nexport interface InfraProjectInspection {\n readonly generated: boolean;\n readonly generatedAt: string | null;\n readonly hasDeployment: boolean;\n readonly target: string | null;\n readonly trackedFiles: number;\n readonly warnings: readonly string[];\n readonly skipped?: {\n readonly reason: string;\n };\n}\n\nexport async function syncProjectInfrastructure(args: {\n readonly generateInfrastructureImpl?: typeof generateInfrastructure;\n readonly manifest: AppManifest;\n readonly projectId: string;\n readonly projectPath: string;\n}): Promise<InfraSyncResult> {\n const supportWarnings = validateInfraSupport(args.manifest.infra);\n\n if (args.projectId === STUDIO_PROJECT_ID) {\n return {\n generated: 0,\n removed: 0,\n warnings: supportWarnings,\n skipped: {\n reason: 'apps/studio is the dashboard and is not a generated app target.',\n },\n };\n }\n\n const previousLedger = await readInfraLedger(args.projectPath);\n const previousFiles = new Set(previousLedger?.files ?? []);\n\n if (args.manifest.infra.deployment === undefined) {\n const removed = await removeFiles(args.projectPath, previousFiles);\n await removeInfraLedger(args.projectPath);\n return {\n generated: 0,\n removed,\n warnings: supportWarnings,\n };\n }\n\n const generated = (args.generateInfrastructureImpl ?? generateInfrastructure)(\n args.manifest.infra,\n {\n namespaceHint: args.projectId,\n appManifest: args.manifest,\n },\n );\n const combinedWarnings = uniqueStrings([...supportWarnings, ...generated.warnings]);\n const nextFiles = new Set<string>();\n\n for (const file of generated.files) {\n const outputPath = resolveProjectFile(args.projectPath, file.path);\n await fs.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.writeFile(outputPath, file.content, 'utf8');\n\n if (file.executable === true) {\n await fs.chmod(outputPath, 0o755);\n }\n\n nextFiles.add(file.path);\n }\n\n const staleFiles = new Set([...previousFiles].filter((filePath) => !nextFiles.has(filePath)));\n const removed = await removeFiles(args.projectPath, staleFiles);\n\n await writeInfraLedger(args.projectPath, {\n schemaVersion: 1,\n generatedAt: new Date().toISOString(),\n target: generated.meta.target,\n files: [...nextFiles].sort(),\n warnings: combinedWarnings,\n });\n\n return {\n generated: generated.files.length,\n removed,\n warnings: combinedWarnings,\n };\n}\n\nexport async function inspectProjectInfrastructure(args: {\n readonly manifest: AppManifest;\n readonly projectId: string;\n readonly projectPath: string;\n}): Promise<InfraProjectInspection> {\n const supportWarnings = validateInfraSupport(args.manifest.infra);\n\n if (args.projectId === STUDIO_PROJECT_ID) {\n return {\n generated: false,\n generatedAt: null,\n hasDeployment: false,\n target: null,\n trackedFiles: 0,\n warnings: supportWarnings,\n skipped: {\n reason: 'apps/studio is the dashboard and is not a generated app target.',\n },\n };\n }\n\n const ledger = await readInfraLedger(args.projectPath);\n return {\n generated: ledger !== null,\n generatedAt: ledger?.generatedAt ?? null,\n hasDeployment: args.manifest.infra.deployment !== undefined,\n target: args.manifest.infra.deployment?.target ?? ledger?.target ?? null,\n trackedFiles: ledger?.files.length ?? 0,\n warnings: uniqueStrings([...supportWarnings, ...(ledger?.warnings ?? [])]),\n };\n}\n\nexport async function resolveProjectInfrastructureTarget(args: {\n readonly manifest: AppManifest;\n readonly projectPath: string;\n}): Promise<string | null> {\n const manifestTarget = args.manifest.infra.deployment?.target;\n if (manifestTarget !== undefined) {\n return manifestTarget;\n }\n\n const ledger = await readInfraLedger(args.projectPath);\n return ledger?.target ?? null;\n}\n\nexport function resolveProjectFile(projectPath: string, filePath: string): string {\n const rootPath = path.resolve(projectPath);\n const resolvedPath = path.resolve(rootPath, filePath);\n const relativePath = path.relative(rootPath, resolvedPath);\n\n if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {\n throw new Error(`Invalid infra output path outside project root: ${filePath}`);\n }\n\n return resolvedPath;\n}\n\nasync function readInfraLedger(projectPath: string): Promise<InfraLedger | null> {\n const ledgerPath = path.join(projectPath, INFRA_LEDGER_RELATIVE_PATH);\n\n try {\n const rawLedger = await fs.readFile(ledgerPath, 'utf8');\n const parsedLedger: unknown = JSON.parse(rawLedger);\n return isInfraLedger(parsedLedger) ? parsedLedger : null;\n } catch {\n return null;\n }\n}\n\nasync function writeInfraLedger(projectPath: string, ledger: InfraLedger): Promise<void> {\n const ledgerPath = path.join(projectPath, INFRA_LEDGER_RELATIVE_PATH);\n await fs.mkdir(path.dirname(ledgerPath), { recursive: true });\n await fs.writeFile(ledgerPath, `${JSON.stringify(ledger, null, 2)}\\n`, 'utf8');\n}\n\nasync function removeInfraLedger(projectPath: string): Promise<void> {\n await fs.rm(path.join(projectPath, INFRA_LEDGER_RELATIVE_PATH), { force: true });\n}\n\nasync function removeFiles(projectPath: string, files: ReadonlySet<string>): Promise<number> {\n let removedFiles = 0;\n\n for (const filePath of files) {\n await fs.rm(resolveProjectFile(projectPath, filePath), { force: true });\n removedFiles += 1;\n }\n\n return removedFiles;\n}\n\nfunction isInfraLedger(value: unknown): value is InfraLedger {\n return (\n isRecord(value) &&\n value.schemaVersion === 1 &&\n typeof value.generatedAt === 'string' &&\n typeof value.target === 'string' &&\n Array.isArray(value.files) &&\n value.files.every((filePath) => typeof filePath === 'string') &&\n Array.isArray(value.warnings) &&\n value.warnings.every((warning) => typeof warning === 'string')\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction uniqueStrings(values: readonly string[]): readonly string[] {\n return [...new Set(values)];\n}\n"]}
package/dist/runtime.d.ts DELETED
@@ -1,54 +0,0 @@
1
- import type { InfraCommandContext } from './commandContext.js';
2
- export type InfraLifecycleScript = 'destroy' | 'down' | 'port-forward' | 'reset' | 'status' | 'up';
3
- export interface InfraScriptOutput {
4
- readonly stderr: string;
5
- readonly stdout: string;
6
- }
7
- export interface InfraPortForwardInfo {
8
- readonly localPort: number;
9
- readonly url: string;
10
- }
11
- export declare class InfraScriptExecutionError extends Error {
12
- readonly exitCode: number | null;
13
- readonly stderr: string;
14
- readonly stdout: string;
15
- constructor(args: {
16
- readonly exitCode: number | null;
17
- readonly message: string;
18
- readonly stderr: string;
19
- readonly stdout: string;
20
- });
21
- }
22
- export declare function runProjectInfrastructureLifecycle(args: {
23
- readonly args?: readonly string[];
24
- readonly env?: Readonly<Record<string, string | undefined>>;
25
- readonly onStderr?: (chunk: string) => void;
26
- readonly onStdout?: (chunk: string) => void;
27
- readonly projectId: string;
28
- readonly projectPath: string;
29
- readonly script: InfraLifecycleScript;
30
- readonly target: string;
31
- }): Promise<InfraScriptOutput>;
32
- export declare function resolveProjectInfrastructurePortForward(args: {
33
- readonly projectPath: string;
34
- readonly target: string;
35
- }): Promise<InfraPortForwardInfo>;
36
- /** Ensures the generated host forwards required by a running application are active. */
37
- export declare function ensureProjectInfrastructureRuntime(args: {
38
- readonly projectId: string;
39
- readonly projectPath: string;
40
- readonly target: string;
41
- }): Promise<InfraScriptOutput>;
42
- export declare function runProjectInfraScript(args: {
43
- readonly context: InfraCommandContext;
44
- readonly projectId: string;
45
- readonly projectPath: string;
46
- readonly script: InfraLifecycleScript;
47
- readonly target: string;
48
- }): Promise<void>;
49
- export declare function resolveProjectInfraScriptPath(args: {
50
- readonly projectPath: string;
51
- readonly script: InfraLifecycleScript;
52
- readonly target: string;
53
- }): string;
54
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEnG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,IAAI,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB;CAOF;AAED,wBAAsB,iCAAiC,CAAC,IAAI,EAAE;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAe7B;AAED,wBAAsB,uCAAuC,CAAC,IAAI,EAAE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkBhC;AAED,wFAAwF;AACxF,wBAAsB,kCAAkC,CAAC,IAAI,EAAE;IAC7D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwB7B;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAET"}