@ankhorage/infra 4.1.10 → 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 +24 -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 +21 -11
  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,163 +0,0 @@
1
- import { getLocalAuthRedirectPatterns, normalizeAuthCallbackRoute } from '../../../authRedirects';
2
- import type { InfraManifestInput } from '../../../types';
3
- import type { MinikubeAdapterArtifacts, MinikubeProviderLifecycle } from '../contracts';
4
-
5
- interface SupabaseOAuthRuntimeModel {
6
- callbackRoute: string;
7
- envPrefixes: readonly string[];
8
- localRedirectPatterns: readonly string[];
9
- }
10
-
11
- export function generateSupabaseOAuthRuntimeArtifacts(
12
- manifest: InfraManifestInput,
13
- ): MinikubeAdapterArtifacts {
14
- const oauthRuntime = resolveOAuthRuntimeModel(manifest);
15
- if (!oauthRuntime) {
16
- return {
17
- files: [],
18
- resources: [],
19
- providerLifecycle: [],
20
- envEntries: [],
21
- warnings: [],
22
- };
23
- }
24
-
25
- return {
26
- files: [
27
- {
28
- path: 'infra/minikube/auth/oauth-runtime.md',
29
- content: getOAuthRuntimeGuide(oauthRuntime),
30
- },
31
- ],
32
- resources: [],
33
- providerLifecycle: [getOAuthProviderLifecycle(oauthRuntime)],
34
- envEntries: [],
35
- warnings: [],
36
- };
37
- }
38
-
39
- function resolveOAuthRuntimeModel(manifest: InfraManifestInput): SupabaseOAuthRuntimeModel | null {
40
- const oauth = manifest.auth?.oauth;
41
- if (!oauth?.enabled) return null;
42
-
43
- const providers = oauth.providers.filter((provider) => provider.enabled !== false);
44
- if (providers.length === 0) return null;
45
-
46
- const callbackRoute = normalizeAuthCallbackRoute(oauth.callbackRoute);
47
- const envPrefixes = providers.map((provider) => {
48
- const prefix = provider.id
49
- .trim()
50
- .toUpperCase()
51
- .replace(/[^A-Z0-9]+/gu, '_')
52
- .replace(/^_+|_+$/gu, '');
53
- if (!prefix) {
54
- throw new Error(
55
- `OAuth provider "${provider.id}" cannot be mapped to GoTrue environment keys.`,
56
- );
57
- }
58
- return prefix;
59
- });
60
-
61
- return {
62
- callbackRoute,
63
- envPrefixes,
64
- localRedirectPatterns: getLocalAuthRedirectPatterns(callbackRoute),
65
- };
66
- }
67
-
68
- function getOAuthProviderLifecycle(
69
- oauthRuntime: SupabaseOAuthRuntimeModel,
70
- ): MinikubeProviderLifecycle {
71
- return {
72
- id: 'supabase-auth',
73
- namespace: 'supabase',
74
- endpoints: [],
75
- readinessChecks: [
76
- {
77
- label: 'GoTrue',
78
- namespace: 'supabase',
79
- resource: 'deployment/auth',
80
- timeoutSeconds: 600,
81
- },
82
- ],
83
- migrationCommands: [],
84
- reconciliationCommands: [
85
- {
86
- label: 'OAuth redirect and runtime rollout reconciliation',
87
- command: getOAuthRuntimeReconciliationCommand(oauthRuntime),
88
- },
89
- ],
90
- statusChecks: [
91
- {
92
- label: 'OAuth redirect configuration',
93
- command: getOAuthRuntimeStatusCommand(oauthRuntime),
94
- },
95
- ],
96
- };
97
- }
98
-
99
- function getOAuthRuntimeReconciliationCommand(oauthRuntime: SupabaseOAuthRuntimeModel): string {
100
- const localPatterns = oauthRuntime.localRedirectPatterns.join(',');
101
- const providerExports = oauthRuntime.envPrefixes
102
- .map(
103
- (prefix) => `export GOTRUE_EXTERNAL_${prefix}_REDIRECT_URI="\${oauth_provider_callback}"
104
- write_env_value GOTRUE_EXTERNAL_${prefix}_REDIRECT_URI "\${oauth_provider_callback}"`,
105
- )
106
- .join('\n');
107
-
108
- return `oauth_callback_route='${oauthRuntime.callbackRoute}'
109
- oauth_callback_path="\${oauth_callback_route#/}"
110
- oauth_site_url="\${SITE_URL%/}"
111
- oauth_provider_callback="\${API_EXTERNAL_URL%/}/callback"
112
- oauth_redirect_allow_list="\${oauth_site_url},\${oauth_site_url}/\${oauth_callback_path},${localPatterns}"
113
- if [[ -n "\${OAUTH_NATIVE_REDIRECT_URLS:-}" ]]; then
114
- oauth_redirect_allow_list="\${oauth_redirect_allow_list},\${OAUTH_NATIVE_REDIRECT_URLS}"
115
- fi
116
- export ADDITIONAL_REDIRECT_URLS="\${oauth_redirect_allow_list}"
117
- write_env_value ADDITIONAL_REDIRECT_URLS "\${oauth_redirect_allow_list}"
118
- ${providerExports}
119
- sync_supabase_secrets
120
- kubectl --context "\${PROFILE}" -n supabase rollout restart deployment/auth >/dev/null
121
- kubectl --context "\${PROFILE}" -n supabase rollout status deployment/auth --timeout=600s`;
122
- }
123
-
124
- function getOAuthRuntimeStatusCommand(oauthRuntime: SupabaseOAuthRuntimeModel): string {
125
- return `oauth_callback_route='${oauthRuntime.callbackRoute}'
126
- oauth_callback_path="\${oauth_callback_route#/}"
127
- if [[ -n "\${API_EXTERNAL_URL:-}" ]]; then
128
- echo "- provider supabase-auth/provider-callback: \${API_EXTERNAL_URL%/}/callback"
129
- else
130
- echo "- provider supabase-auth/provider-callback: unavailable"
131
- fi
132
- if [[ -n "\${SITE_URL:-}" ]]; then
133
- echo "- provider supabase-auth/app-callback: \${SITE_URL%/}/\${oauth_callback_path}"
134
- else
135
- echo "- provider supabase-auth/app-callback: unavailable"
136
- fi
137
- echo "- provider supabase-auth/local-callback-patterns: ${oauthRuntime.localRedirectPatterns.join(',')}"`;
138
- }
139
-
140
- function getOAuthRuntimeGuide(oauthRuntime: SupabaseOAuthRuntimeModel): string {
141
- const localPatterns = oauthRuntime.localRedirectPatterns
142
- .map((pattern) => `- \`${pattern}\``)
143
- .join('\n');
144
-
145
- return `# Supabase OAuth Runtime Reconciliation
146
-
147
- The provider callback is derived from the active project gateway as
148
- \`\${API_EXTERNAL_URL%/}/callback\`, which resolves to the project-owned
149
- \`/auth/v1/callback\` endpoint. GoTrue-to-app redirects use the configured callback route
150
- \`${oauthRuntime.callbackRoute}\`.
151
-
152
- Local Minikube reconciliation adds only callback-scoped loopback patterns:
153
-
154
- ${localPatterns}
155
-
156
- Native callback URIs may be supplied through \`OAUTH_NATIVE_REDIRECT_URLS\`. The generated
157
- provider lifecycle persists redirect metadata, re-syncs the canonical Supabase runtime
158
- ConfigMap and Secret sources, then forces \`deployment/auth\` to restart and waits up to 600
159
- seconds for the rollout. OAuth credential values remain sourced from trusted secret resolution
160
- and are never embedded in generated files. A failed rollout stops Infra Up before its success
161
- message.
162
- `;
163
- }
@@ -1,227 +0,0 @@
1
- import type { InfraManifest } from '@ankhorage/contracts';
2
- import { describe, expect, test } from 'bun:test';
3
-
4
- import { generateSupabaseAuthArtifacts } from './index';
5
-
6
- describe('generateSupabaseAuthArtifacts profile tables', () => {
7
- test('generates profile metadata env vars and SQL migration when profile table is declared', () => {
8
- const artifacts = generateSupabaseAuthArtifacts({
9
- namespace: 'scan-app',
10
- manifest: createManifest({
11
- profile: {
12
- fields: ['email', 'displayName', 'avatarUrl'],
13
- table: 'profiles',
14
- primaryKey: 'authUserId',
15
- createStrategy: 'trigger',
16
- updateStrategy: 'api',
17
- },
18
- }),
19
- });
20
-
21
- const runtimeConfig = artifacts.files.find(
22
- (file) =>
23
- file.path === 'infra/minikube/k8s/auth/supabase/app-runtime-auth.env.configmap.yaml',
24
- );
25
- expect(runtimeConfig?.content).toContain('AUTH_PROFILE_TABLE: "profiles"');
26
- expect(runtimeConfig?.content).toContain('AUTH_PROFILE_PRIMARY_KEY: "authUserId"');
27
- expect(runtimeConfig?.content).toContain('AUTH_PROFILE_CREATE_STRATEGY: "trigger"');
28
- expect(runtimeConfig?.content).toContain('AUTH_PROFILE_UPDATE_STRATEGY: "api"');
29
-
30
- const reconciliation = artifacts.files.find(
31
- (file) => file.path === 'infra/minikube/supabase/generated/auth_profiles.sql',
32
- );
33
- expect(reconciliation?.content).toContain('begin;');
34
- expect(reconciliation?.content).toContain('commit;');
35
- expect(reconciliation?.content).toContain('create table if not exists public."profiles"');
36
- expect(reconciliation?.content).toContain(
37
- 'id uuid primary key references auth.users(id) on delete cascade',
38
- );
39
- expect(reconciliation?.content).toContain(
40
- 'alter table public."profiles" add column if not exists "display_name" text',
41
- );
42
- expect(reconciliation?.content).toContain(
43
- 'alter table public."profiles" add column if not exists "avatar_url" text',
44
- );
45
- expect(reconciliation?.content).toContain(
46
- 'alter table public."profiles" drop column if exists role',
47
- );
48
- expect(reconciliation?.content).toContain(
49
- 'alter table public."profiles" drop column if exists "first_name"',
50
- );
51
- expect(reconciliation?.content).toContain(
52
- 'alter table public."profiles" enable row level security',
53
- );
54
- expect(reconciliation?.content).toContain(
55
- 'revoke all on table public."profiles" from anon, authenticated',
56
- );
57
- expect(reconciliation?.content).toContain(
58
- 'grant select on table public."profiles" to authenticated',
59
- );
60
- expect(reconciliation?.content).toContain(
61
- 'grant update ("email", "display_name", "avatar_url") on table public."profiles" to authenticated',
62
- );
63
- expect(reconciliation?.content).not.toContain('role text not null');
64
- expect(reconciliation?.content).not.toContain('grant update ("role")');
65
- expect(reconciliation?.content).toContain('create policy "profiles_select_own"');
66
- expect(reconciliation?.content).toContain('to authenticated');
67
- expect(reconciliation?.content).toContain('create policy "profiles_update_own"');
68
- expect(reconciliation?.content).toContain('using ((select auth.uid()) = id)');
69
- expect(reconciliation?.content).toContain('create schema if not exists ankhorage_internal');
70
- expect(reconciliation?.content).toContain('ankhorage_internal.generated_schema_state');
71
- expect(reconciliation?.content).toContain('table_name text');
72
- expect(reconciliation?.content).toContain('profile.table changed from % to %');
73
- expect(reconciliation?.content).toContain(
74
- 'existing auth.profile generated state is missing table identity',
75
- );
76
- expect(reconciliation?.content).toContain("'auth.profile'");
77
- expect(reconciliation?.content).toContain('create trigger "on_auth_user_created_profiles"');
78
- expect(reconciliation?.content).toContain('after insert on auth.users');
79
- expect(reconciliation?.content).toContain(
80
- 'execute function public."handle_new_profiles_user"()',
81
- );
82
- expect(reconciliation?.content).toContain(
83
- 'revoke execute on function public."handle_new_profiles_user"() from PUBLIC',
84
- );
85
- expect(reconciliation?.content).toContain('set search_path = pg_catalog, pg_temp');
86
- expect(reconciliation?.content).not.toContain('set search_path = public, auth, pg_temp');
87
- expect(reconciliation?.content).not.toContain('create table if not exists public.users');
88
- });
89
-
90
- test('does not generate profile reconciliation when profile table is omitted', () => {
91
- const artifacts = generateSupabaseAuthArtifacts({
92
- namespace: 'scan-app',
93
- manifest: createManifest({
94
- profile: {
95
- fields: ['email', 'displayName'],
96
- },
97
- }),
98
- });
99
-
100
- expect(artifacts.files.some((file) => file.path.includes('supabase/generated'))).toBe(false);
101
- expect(artifacts.files.some((file) => file.path.includes('supabase/migrations'))).toBe(false);
102
- });
103
-
104
- test('preserves an explicitly empty profile field list', () => {
105
- const artifacts = generateSupabaseAuthArtifacts({
106
- namespace: 'scan-app',
107
- manifest: createManifest({
108
- profile: {
109
- fields: [],
110
- table: 'profiles',
111
- },
112
- }),
113
- });
114
-
115
- const reconciliation = artifacts.files.find(
116
- (file) => file.path === 'infra/minikube/supabase/generated/auth_profiles.sql',
117
- );
118
-
119
- expect(reconciliation?.content).not.toContain('add column if not exists "email"');
120
- expect(reconciliation?.content).not.toContain('grant update (');
121
- expect(reconciliation?.content).toContain(
122
- 'alter table public."profiles" drop column if exists "email"',
123
- );
124
- expect(reconciliation?.content).toContain(
125
- 'alter table public."profiles" drop column if exists "first_name"',
126
- );
127
- });
128
-
129
- test('rejects unsupported configured profile fields', () => {
130
- expect(() =>
131
- generateSupabaseAuthArtifacts({
132
- namespace: 'scan-app',
133
- manifest: createManifest({
134
- profile: {
135
- fields: ['email', 'bio'],
136
- table: 'profiles',
137
- },
138
- }),
139
- }),
140
- ).toThrow('Unsupported Supabase profile field "bio"');
141
- });
142
-
143
- test('rejects blank configured profile fields', () => {
144
- expect(() =>
145
- generateSupabaseAuthArtifacts({
146
- namespace: 'scan-app',
147
- manifest: createManifest({
148
- profile: {
149
- fields: ['email', ' '],
150
- table: 'profiles',
151
- },
152
- }),
153
- }),
154
- ).toThrow('Profile fields must be non-empty');
155
- });
156
-
157
- test('uses a stable desired-state hash and canonical managed column ordering', () => {
158
- const first = generateSupabaseAuthArtifacts({
159
- namespace: 'scan-app',
160
- manifest: createManifest({
161
- profile: {
162
- fields: ['avatarUrl', 'email', 'displayName'],
163
- table: 'profiles',
164
- },
165
- }),
166
- });
167
- const second = generateSupabaseAuthArtifacts({
168
- namespace: 'scan-app',
169
- manifest: createManifest({
170
- profile: {
171
- fields: ['displayName', 'avatarUrl', 'email'],
172
- table: 'profiles',
173
- },
174
- }),
175
- });
176
-
177
- const firstSql = first.files.find(
178
- (file) => file.path === 'infra/minikube/supabase/generated/auth_profiles.sql',
179
- )?.content;
180
- const secondSql = second.files.find(
181
- (file) => file.path === 'infra/minikube/supabase/generated/auth_profiles.sql',
182
- )?.content;
183
-
184
- expect(firstSql).toBe(secondSql);
185
- expect(firstSql?.indexOf('"email"')).toBeLessThan(firstSql?.indexOf('"display_name"') ?? -1);
186
- expect(firstSql?.indexOf('"display_name"')).toBeLessThan(
187
- firstSql?.indexOf('"avatar_url"') ?? -1,
188
- );
189
- });
190
-
191
- test('rejects public.users as a generated profile table before SQL is emitted', () => {
192
- expect(() =>
193
- generateSupabaseAuthArtifacts({
194
- namespace: 'scan-app',
195
- manifest: createManifest({
196
- profile: {
197
- fields: ['email'],
198
- table: 'users',
199
- },
200
- }),
201
- }),
202
- ).toThrow('Invalid Supabase profile table identifier "users"');
203
- });
204
- });
205
-
206
- function createManifest(auth: Pick<NonNullable<InfraManifest['auth']>, 'profile'>): InfraManifest {
207
- return {
208
- deployment: {
209
- target: 'minikube',
210
- monitoring: false,
211
- },
212
- auth: {
213
- scope: 'global',
214
- provider: 'supabase',
215
- authorization: {
216
- kind: 'RBAC',
217
- engine: 'native',
218
- },
219
- ...auth,
220
- },
221
- database: {
222
- provider: 'supabase',
223
- tier: 'dev',
224
- },
225
- modules: [],
226
- };
227
- }
@@ -1,293 +0,0 @@
1
- import type { InfraManifestInput } from '../../../../types';
2
- import type { MinikubeAdapterArtifacts } from '../../contracts';
3
- import {
4
- getSupabaseProfileReconciliation,
5
- type ResolvedProfileModel,
6
- resolveSupabaseProfileModel,
7
- } from './profile';
8
-
9
- export function generateSupabaseAuthArtifacts(args: {
10
- manifest: InfraManifestInput;
11
- namespace: string;
12
- }): MinikubeAdapterArtifacts {
13
- const { manifest, namespace } = args;
14
-
15
- const root = 'infra/minikube/k8s/auth/supabase';
16
- const resourceRoot = 'auth/supabase';
17
- const docsRoot = 'infra/minikube/auth';
18
- const generatedRoot = 'infra/minikube/supabase/generated';
19
- const scope = manifest.auth?.scope ?? 'global';
20
- const authzEngine = manifest.auth?.authorization?.engine ?? 'native';
21
- const authzKind = manifest.auth?.authorization?.kind ?? 'RBAC';
22
- const authFieldModel = resolveAuthFieldModel(manifest);
23
- const profileModel = resolveSupabaseProfileModel(manifest);
24
-
25
- const warnings: string[] = [];
26
- if (scope !== 'global') {
27
- warnings.push(
28
- `Auth scope "${scope}" is not fully modeled yet for Supabase. Baseline resources assume global auth.`,
29
- );
30
- }
31
-
32
- return {
33
- files: [
34
- {
35
- path: `${root}/supabase-auth.configmap.yaml`,
36
- content: getSupabaseConfigMap({
37
- namespace,
38
- scope,
39
- authzEngine,
40
- authzKind,
41
- authFieldModel,
42
- profileModel,
43
- }),
44
- },
45
- {
46
- path: `${root}/app-runtime-auth.env.configmap.yaml`,
47
- content: getRuntimeAuthEnvConfigMap({
48
- namespace,
49
- scope,
50
- authzEngine,
51
- authzKind,
52
- authFieldModel,
53
- profileModel,
54
- }),
55
- },
56
- ...(profileModel.enabled
57
- ? [
58
- {
59
- path: `${generatedRoot}/auth_profiles.sql`,
60
- content: getSupabaseProfileReconciliation(profileModel),
61
- },
62
- ]
63
- : []),
64
- {
65
- path: `${docsRoot}/supabase-runtime-wiring.md`,
66
- content: getSupabaseRuntimeWiringGuide(profileModel),
67
- },
68
- ],
69
- resources: [
70
- `${resourceRoot}/supabase-auth.configmap.yaml`,
71
- `${resourceRoot}/app-runtime-auth.env.configmap.yaml`,
72
- ],
73
- providerLifecycle: [],
74
- envEntries: ['EXPO_PUBLIC_SUPABASE_URL=', 'EXPO_PUBLIC_SUPABASE_ANON_KEY='],
75
- warnings,
76
- };
77
- }
78
-
79
- function getSupabaseConfigMap(args: {
80
- namespace: string;
81
- scope: string;
82
- authzEngine: string;
83
- authzKind: string;
84
- authFieldModel: ResolvedAuthFieldModel;
85
- profileModel: ResolvedProfileModel;
86
- }) {
87
- const { namespace, scope, authzEngine, authzKind, authFieldModel, profileModel } = args;
88
-
89
- return `apiVersion: v1
90
- kind: ConfigMap
91
- metadata:
92
- name: supabase-auth-config
93
- namespace: ${namespace}
94
- data:
95
- AUTH_PROVIDER: "supabase"
96
- AUTH_SCOPE: "${scope}"
97
- AUTHZ_ENGINE: "${authzEngine}"
98
- AUTHZ_KIND: "${authzKind}"
99
- AUTH_SIGN_IN_IDENTIFIERS: "${escapeYamlDoubleQuoted(authFieldModel.signInIdentifiersCsv)}"
100
- AUTH_SIGN_UP_REQUIRED_FIELDS: "${escapeYamlDoubleQuoted(authFieldModel.signUpRequiredFieldsCsv)}"
101
- AUTH_SIGN_UP_OPTIONAL_FIELDS: "${escapeYamlDoubleQuoted(authFieldModel.signUpOptionalFieldsCsv)}"
102
- AUTH_SIGN_UP_POLICY: "${authFieldModel.signUpPolicy}"
103
- AUTH_PROFILE_FIELDS: "${escapeYamlDoubleQuoted(authFieldModel.profileFieldsCsv)}"
104
- AUTH_PROFILE_TABLE: "${escapeYamlDoubleQuoted(profileModel.table)}"
105
- AUTH_PROFILE_PRIMARY_KEY: "${profileModel.primaryKey}"
106
- AUTH_PROFILE_CREATE_STRATEGY: "${profileModel.createStrategy}"
107
- AUTH_PROFILE_UPDATE_STRATEGY: "${profileModel.updateStrategy}"
108
- `;
109
- }
110
-
111
- function getRuntimeAuthEnvConfigMap(args: {
112
- namespace: string;
113
- scope: string;
114
- authzEngine: string;
115
- authzKind: string;
116
- authFieldModel: ResolvedAuthFieldModel;
117
- profileModel: ResolvedProfileModel;
118
- }) {
119
- const { namespace, scope, authzEngine, authzKind, authFieldModel, profileModel } = args;
120
-
121
- return `apiVersion: v1
122
- kind: ConfigMap
123
- metadata:
124
- name: app-runtime-auth-env
125
- namespace: ${namespace}
126
- data:
127
- AUTH_REQUIRED: "true"
128
- AUTH_PROVIDER: "supabase"
129
- AUTH_SCOPE: "${scope}"
130
- AUTHZ_ENGINE: "${authzEngine}"
131
- AUTHZ_KIND: "${authzKind}"
132
- AUTH_SIGN_IN_IDENTIFIERS: "${escapeYamlDoubleQuoted(authFieldModel.signInIdentifiersCsv)}"
133
- AUTH_SIGN_UP_REQUIRED_FIELDS: "${escapeYamlDoubleQuoted(authFieldModel.signUpRequiredFieldsCsv)}"
134
- AUTH_SIGN_UP_OPTIONAL_FIELDS: "${escapeYamlDoubleQuoted(authFieldModel.signUpOptionalFieldsCsv)}"
135
- AUTH_SIGN_UP_POLICY: "${authFieldModel.signUpPolicy}"
136
- AUTH_PROFILE_FIELDS: "${escapeYamlDoubleQuoted(authFieldModel.profileFieldsCsv)}"
137
- AUTH_PROFILE_TABLE: "${escapeYamlDoubleQuoted(profileModel.table)}"
138
- AUTH_PROFILE_PRIMARY_KEY: "${profileModel.primaryKey}"
139
- AUTH_PROFILE_CREATE_STRATEGY: "${profileModel.createStrategy}"
140
- AUTH_PROFILE_UPDATE_STRATEGY: "${profileModel.updateStrategy}"
141
- AUTH_TOKEN_HEADER: "Authorization"
142
- AUTH_TOKEN_PREFIX: "Bearer"
143
- `;
144
- }
145
-
146
- function getSupabaseRuntimeWiringGuide(profileModel: ResolvedProfileModel) {
147
- const profileSection = profileModel.enabled
148
- ? `
149
- ## App Profile Table
150
-
151
- Identity remains provider-owned in \`auth.users\`. App-facing profile data is generated in
152
- \`public.${profileModel.table}\` and linked through \`${profileModel.table}.id -> auth.users.id\`.
153
-
154
- The generated profile reconciliation:
155
-
156
- - creates the profile table
157
- - enables row-level security
158
- - allows signed-in users to read and update their own profile row
159
- - drops stale Ankhorage-managed profile columns that are no longer configured
160
- - creates a trigger for new auth users when \`AUTH_PROFILE_CREATE_STRATEGY=trigger\`
161
- `
162
- : '';
163
-
164
- return `# Supabase Runtime Wiring
165
-
166
- This file documents the runtime conventions generated by the minikube Supabase adapter.
167
-
168
- ## Generated Kubernetes Objects
169
-
170
- - \`ConfigMap/supabase-auth-config\`: high-level auth metadata.
171
- - \`Secret/supabase-public-runtime\`: browser-safe Supabase URL and anon key material, generated by \`scripts/up.sh\` after local Supabase secrets exist.
172
- - \`ConfigMap/app-runtime-auth-env\`: auth runtime feature flags and authz metadata.
173
-
174
- ## App Runtime Convention
175
-
176
- Your app runtime deployment should import both:
177
-
178
- - \`app-runtime-auth-env\` (configMap)
179
- - \`supabase-public-runtime\` (secret)
180
-
181
- For local Expo/Metro development, \`scripts/up.sh\` also writes the same browser-safe
182
- \`EXPO_PUBLIC_SUPABASE_URL\` and \`EXPO_PUBLIC_SUPABASE_ANON_KEY\` values to
183
- \`\${APP_SOURCE_DIR}/.env.local\`, preserving unrelated entries. Restart Expo after
184
- Infra Up so those public values are embedded into the client bundle.
185
-
186
- Example deployment fragment:
187
-
188
- \`\`\`yaml
189
- envFrom:
190
- - configMapRef:
191
- name: app-runtime-auth-env
192
- - secretRef:
193
- name: supabase-public-runtime
194
- \`\`\`
195
-
196
- The generated base deployment at \`k8s/app/deployment.yaml\` already includes this wiring
197
- with \`optional: true\` for auth sources.
198
-
199
- ## Expected Environment Variables
200
-
201
- - \`AUTH_REQUIRED\`
202
- - \`AUTH_PROVIDER\`
203
- - \`AUTH_SCOPE\`
204
- - \`AUTHZ_ENGINE\`
205
- - \`AUTHZ_KIND\`
206
- - \`AUTH_SIGN_IN_IDENTIFIERS\`
207
- - \`AUTH_SIGN_UP_REQUIRED_FIELDS\`
208
- - \`AUTH_SIGN_UP_OPTIONAL_FIELDS\`
209
- - \`AUTH_SIGN_UP_POLICY\`
210
- - \`AUTH_PROFILE_FIELDS\`
211
- - \`AUTH_PROFILE_TABLE\`
212
- - \`AUTH_PROFILE_PRIMARY_KEY\`
213
- - \`AUTH_PROFILE_CREATE_STRATEGY\`
214
- - \`AUTH_PROFILE_UPDATE_STRATEGY\`
215
- - \`SUPABASE_URL\`
216
- - \`SUPABASE_ANON_KEY\`
217
- - \`EXPO_PUBLIC_SUPABASE_URL\`
218
- - \`EXPO_PUBLIC_SUPABASE_ANON_KEY\`
219
- ${profileSection}
220
- ## Runtime Secrets
221
-
222
- When Supabase is enabled, \`scripts/up.sh\` creates/updates \`Secret/supabase-public-runtime\`
223
- with browser-safe values for the app namespace and mirrors the Expo public values into the
224
- app \`.env.local\`. Privileged Supabase runtime secrets remain in the \`supabase\` namespace.
225
- `;
226
- }
227
-
228
- const DEFAULT_SIGN_IN_IDENTIFIERS = ['email'];
229
- const DEFAULT_SIGN_UP_REQUIRED_FIELDS = ['email', 'password'];
230
- const DEFAULT_SIGN_UP_OPTIONAL_FIELDS = ['firstName', 'lastName'];
231
- const DEFAULT_SIGN_UP_POLICY = 'autoSignIn';
232
- interface ResolvedAuthFieldModel {
233
- signInIdentifiersCsv: string;
234
- signUpRequiredFieldsCsv: string;
235
- signUpOptionalFieldsCsv: string;
236
- signUpPolicy: string;
237
- profileFieldsCsv: string;
238
- }
239
-
240
- function resolveAuthFieldModel(manifest: InfraManifestInput): ResolvedAuthFieldModel {
241
- const signInIdentifiers = normalizeFieldList(
242
- manifest.auth?.signIn?.identifiers,
243
- DEFAULT_SIGN_IN_IDENTIFIERS,
244
- );
245
- const signUpRequiredFields = normalizeFieldList(
246
- manifest.auth?.signUp?.requiredFields,
247
- DEFAULT_SIGN_UP_REQUIRED_FIELDS,
248
- );
249
- const signUpOptionalFields = normalizeFieldList(
250
- manifest.auth?.signUp?.optionalFields,
251
- DEFAULT_SIGN_UP_OPTIONAL_FIELDS,
252
- ).filter((field) => !signUpRequiredFields.includes(field));
253
- const signUpPolicy = manifest.auth?.signUp?.signUpPolicy ?? DEFAULT_SIGN_UP_POLICY;
254
- const profileFields = normalizeFieldList(manifest.auth?.profile?.fields, [
255
- 'email',
256
- 'firstName',
257
- 'lastName',
258
- ]);
259
-
260
- return {
261
- signInIdentifiersCsv: signInIdentifiers.join(','),
262
- signUpRequiredFieldsCsv: signUpRequiredFields.join(','),
263
- signUpOptionalFieldsCsv: signUpOptionalFields.join(','),
264
- signUpPolicy,
265
- profileFieldsCsv: profileFields.join(','),
266
- };
267
- }
268
-
269
- function normalizeFieldList(
270
- values: readonly string[] | undefined,
271
- fallback: readonly string[],
272
- ): string[] {
273
- const source = values ?? fallback;
274
- const next: string[] = [];
275
-
276
- for (const value of source) {
277
- const normalized = value.trim();
278
- if (!normalized || next.includes(normalized)) {
279
- continue;
280
- }
281
- next.push(normalized);
282
- }
283
-
284
- if (next.length > 0) {
285
- return next;
286
- }
287
-
288
- return [...fallback];
289
- }
290
-
291
- function escapeYamlDoubleQuoted(value: string): string {
292
- return value.replaceAll('\\', '\\\\').replaceAll('"', '\\"');
293
- }