@geekmidas/cli 10.0.0-alpha.124 → 10.0.0-alpha.126

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 (241) hide show
  1. package/dist/{EndpointGenerator-B2MUa4M2.cjs → EndpointGenerator-BGxf9jWE.cjs} +8 -4
  2. package/dist/{EndpointGenerator-B2MUa4M2.cjs.map → EndpointGenerator-BGxf9jWE.cjs.map} +1 -1
  3. package/dist/{EndpointGenerator-Z_BUTocT.mjs → EndpointGenerator-errMeldx.mjs} +8 -4
  4. package/dist/{EndpointGenerator-Z_BUTocT.mjs.map → EndpointGenerator-errMeldx.mjs.map} +1 -1
  5. package/dist/{GoDaddyProvider-55x4o-4z.mjs → GoDaddyProvider-CvRVmN4W.mjs} +2 -2
  6. package/dist/{GoDaddyProvider-55x4o-4z.mjs.map → GoDaddyProvider-CvRVmN4W.mjs.map} +1 -1
  7. package/dist/{GoDaddyProvider-0z5RAN1k.cjs → GoDaddyProvider-DFfpzCOP.cjs} +2 -2
  8. package/dist/{GoDaddyProvider-0z5RAN1k.cjs.map → GoDaddyProvider-DFfpzCOP.cjs.map} +1 -1
  9. package/dist/{LegacyStateStore-DRpB-yC5.cjs → LegacyStateStore-BFrCHrFQ.cjs} +3 -3
  10. package/dist/{LegacyStateStore-DRpB-yC5.cjs.map → LegacyStateStore-BFrCHrFQ.cjs.map} +1 -1
  11. package/dist/{LegacyStateStore-C-vumKSN.mjs → LegacyStateStore-CgfENrXF.mjs} +3 -3
  12. package/dist/{LegacyStateStore-C-vumKSN.mjs.map → LegacyStateStore-CgfENrXF.mjs.map} +1 -1
  13. package/dist/{LocalStateStore-C3ummuDT.cjs → LocalStateStore-BU5z_IOE.cjs} +2 -2
  14. package/dist/{LocalStateStore-C3ummuDT.cjs.map → LocalStateStore-BU5z_IOE.cjs.map} +1 -1
  15. package/dist/{LocalStateStore-CtOjpV1w.mjs → LocalStateStore-DxoNpiBg.mjs} +2 -2
  16. package/dist/{LocalStateStore-CtOjpV1w.mjs.map → LocalStateStore-DxoNpiBg.mjs.map} +1 -1
  17. package/dist/{OpenApiTsGenerator-MtnMQL_g.mjs → OpenApiTsGenerator-W_HRXH1X.mjs} +2 -2
  18. package/dist/{OpenApiTsGenerator-MtnMQL_g.mjs.map → OpenApiTsGenerator-W_HRXH1X.mjs.map} +1 -1
  19. package/dist/{OpenApiTsGenerator-t3_E98Fi.cjs → OpenApiTsGenerator-cQgtxWQo.cjs} +2 -2
  20. package/dist/{OpenApiTsGenerator-t3_E98Fi.cjs.map → OpenApiTsGenerator-cQgtxWQo.cjs.map} +1 -1
  21. package/dist/{S3StateStore-BC4Jm3Tw.mjs → S3StateStore-CGMSDilh.mjs} +2 -2
  22. package/dist/{S3StateStore-BC4Jm3Tw.mjs.map → S3StateStore-CGMSDilh.mjs.map} +1 -1
  23. package/dist/{S3StateStore-BeArp0aF.cjs → S3StateStore-DiekMLpn.cjs} +2 -2
  24. package/dist/{S3StateStore-BeArp0aF.cjs.map → S3StateStore-DiekMLpn.cjs.map} +1 -1
  25. package/dist/{SSMStateStore-DcstR6cW.cjs → SSMStateStore-BDCOFdKq.cjs} +2 -2
  26. package/dist/{SSMStateStore-DcstR6cW.cjs.map → SSMStateStore-BDCOFdKq.cjs.map} +1 -1
  27. package/dist/{SSMStateStore-Crl76aYZ.mjs → SSMStateStore-Cq2H9MlF.mjs} +2 -2
  28. package/dist/{SSMStateStore-Crl76aYZ.mjs.map → SSMStateStore-Cq2H9MlF.mjs.map} +1 -1
  29. package/dist/{SubscriberGenerator-COAVPgM-.mjs → SubscriberGenerator-BALddfuW.mjs} +4 -62
  30. package/dist/SubscriberGenerator-BALddfuW.mjs.map +1 -0
  31. package/dist/{SubscriberGenerator-C3QTae-R.cjs → SubscriberGenerator-LgyTxZ8r.cjs} +3 -91
  32. package/dist/SubscriberGenerator-LgyTxZ8r.cjs.map +1 -0
  33. package/dist/{add-BFjb6mMq.cjs → add-BsiBYkAW.cjs} +6 -6
  34. package/dist/{add-BFjb6mMq.cjs.map → add-BsiBYkAW.cjs.map} +1 -1
  35. package/dist/{add-CIjmgzkb.mjs → add-CamA9Uqv.mjs} +6 -6
  36. package/dist/{add-CIjmgzkb.mjs.map → add-CamA9Uqv.mjs.map} +1 -1
  37. package/dist/{bundler-D6KFNpQk.mjs → bundler-2V2PR_E-.mjs} +5 -5
  38. package/dist/{bundler-D6KFNpQk.mjs.map → bundler-2V2PR_E-.mjs.map} +1 -1
  39. package/dist/{bundler-CiUoIsku.cjs → bundler-CijtdIZ2.cjs} +5 -5
  40. package/dist/{bundler-CiUoIsku.cjs.map → bundler-CijtdIZ2.cjs.map} +1 -1
  41. package/dist/{cli-r4eUr98C.cjs → cli-7gc1QG8X.cjs} +3 -3
  42. package/dist/{cli-r4eUr98C.cjs.map → cli-7gc1QG8X.cjs.map} +1 -1
  43. package/dist/{cli-DNtSTtMc.mjs → cli-PiyYqHGx.mjs} +3 -3
  44. package/dist/{cli-DNtSTtMc.mjs.map → cli-PiyYqHGx.mjs.map} +1 -1
  45. package/dist/{compose-BfXXWJSp.cjs → compose-8e2xJ61E.cjs} +236 -39
  46. package/dist/compose-8e2xJ61E.cjs.map +1 -0
  47. package/dist/{compose-DJvvmF3X.mjs → compose-CvHIjMDd.mjs} +235 -38
  48. package/dist/compose-CvHIjMDd.mjs.map +1 -0
  49. package/dist/{config-IgK6YaGp.d.cts → config-CdytFgSR.d.cts} +3 -3
  50. package/dist/{config-IgK6YaGp.d.cts.map → config-CdytFgSR.d.cts.map} +1 -1
  51. package/dist/{config-kE-p5hxq.d.mts → config-_y1FGBWR.d.mts} +3 -3
  52. package/dist/{config-kE-p5hxq.d.mts.map → config-_y1FGBWR.d.mts.map} +1 -1
  53. package/dist/config.cjs +2 -2
  54. package/dist/config.d.cts +3 -3
  55. package/dist/config.d.mts +3 -3
  56. package/dist/config.mjs +2 -2
  57. package/dist/{credentialSchemas-AhIBuQxQ.cjs → credentialSchemas-DFxvGEwa.cjs} +2 -2
  58. package/dist/{credentialSchemas-AhIBuQxQ.cjs.map → credentialSchemas-DFxvGEwa.cjs.map} +1 -1
  59. package/dist/{credentialSchemas-DLKbxYBy.mjs → credentialSchemas-DaMpt-Dx.mjs} +2 -2
  60. package/dist/{credentialSchemas-DLKbxYBy.mjs.map → credentialSchemas-DaMpt-Dx.mjs.map} +1 -1
  61. package/dist/{databases-BPOgTn1u.mjs → databases-6GD0tI2F.mjs} +65 -3
  62. package/dist/databases-6GD0tI2F.mjs.map +1 -0
  63. package/dist/{databases-fOaoBInm.cjs → databases-CuVGf7-M.cjs} +75 -1
  64. package/dist/databases-CuVGf7-M.cjs.map +1 -0
  65. package/dist/deploy/public.cjs +8 -8
  66. package/dist/deploy/public.d.cts +3 -3
  67. package/dist/deploy/public.d.cts.map +1 -1
  68. package/dist/deploy/public.d.mts +3 -3
  69. package/dist/deploy/public.d.mts.map +1 -1
  70. package/dist/deploy/public.mjs +8 -8
  71. package/dist/{deploy-CiRYwFmr.mjs → deploy-CIPwTJ47.mjs} +797 -25
  72. package/dist/deploy-CIPwTJ47.mjs.map +1 -0
  73. package/dist/{deploy-BbI1UMh3.cjs → deploy-wSlIRPn5.cjs} +796 -24
  74. package/dist/deploy-wSlIRPn5.cjs.map +1 -0
  75. package/dist/{discover-BvJOVsYG.mjs → discover-CzGM5P3p.mjs} +71 -1
  76. package/dist/discover-CzGM5P3p.mjs.map +1 -0
  77. package/dist/{discover-ojkcbxHw.cjs → discover-DL6h-J97.cjs} +71 -1
  78. package/dist/discover-DL6h-J97.cjs.map +1 -0
  79. package/dist/{dokploy-C0aQrCgs.cjs → dokploy-BKbUrz05.cjs} +2 -2
  80. package/dist/{dokploy-C0aQrCgs.cjs.map → dokploy-BKbUrz05.cjs.map} +1 -1
  81. package/dist/{dokploy-MM7c3IE0.mjs → dokploy-BZf1AHd0.mjs} +2 -2
  82. package/dist/{dokploy-MM7c3IE0.mjs.map → dokploy-BZf1AHd0.mjs.map} +1 -1
  83. package/dist/{drivers-CQ32PB5w.cjs → drivers-C47nm-wB.cjs} +91 -4
  84. package/dist/drivers-C47nm-wB.cjs.map +1 -0
  85. package/dist/{drivers-Chb5Akov.mjs → drivers-CDjpjakg.mjs} +60 -3
  86. package/dist/drivers-CDjpjakg.mjs.map +1 -0
  87. package/dist/{eas-1Ee6kql0.mjs → eas-CxX2RCE_.mjs} +2 -2
  88. package/dist/{eas-1Ee6kql0.mjs.map → eas-CxX2RCE_.mjs.map} +1 -1
  89. package/dist/{eas-CJoys9yh.cjs → eas-DzDMGzfc.cjs} +2 -2
  90. package/dist/{eas-CJoys9yh.cjs.map → eas-DzDMGzfc.cjs.map} +1 -1
  91. package/dist/{emit-qvHxMV9b.cjs → emit-CYloptRS.cjs} +18 -1
  92. package/dist/emit-CYloptRS.cjs.map +1 -0
  93. package/dist/{emit-CNpuV_6Q.mjs → emit-CiJGdy_f.mjs} +18 -1
  94. package/dist/emit-CiJGdy_f.mjs.map +1 -0
  95. package/dist/{encryption-B8Bk1Mvu.mjs → encryption-BFSrt89F.mjs} +3 -3
  96. package/dist/{encryption-B8Bk1Mvu.mjs.map → encryption-BFSrt89F.mjs.map} +1 -1
  97. package/dist/{encryption-Bo9VlRnl.cjs → encryption-RNcBnG4Z.cjs} +3 -3
  98. package/dist/{encryption-Bo9VlRnl.cjs.map → encryption-RNcBnG4Z.cjs.map} +1 -1
  99. package/dist/{engine-esxTxcIx.cjs → engine-Dqe9KQCm.cjs} +142 -15
  100. package/dist/engine-Dqe9KQCm.cjs.map +1 -0
  101. package/dist/{engine-BuinpJfS.mjs → engine-_0pjyCd_.mjs} +142 -15
  102. package/dist/engine-_0pjyCd_.mjs.map +1 -0
  103. package/dist/{github-BEA4K3_X.cjs → github-Csev5EFf.cjs} +41 -6
  104. package/dist/github-Csev5EFf.cjs.map +1 -0
  105. package/dist/{github-BUlKJfOV.mjs → github-Dck0nLW9.mjs} +41 -6
  106. package/dist/github-Dck0nLW9.mjs.map +1 -0
  107. package/dist/{googlePlay-CiqAS2ma.cjs → googlePlay-DBtDAGBk.cjs} +3 -3
  108. package/dist/{googlePlay-CiqAS2ma.cjs.map → googlePlay-DBtDAGBk.cjs.map} +1 -1
  109. package/dist/{googlePlay-CK05QiTq.mjs → googlePlay-DTuvDHi5.mjs} +3 -3
  110. package/dist/{googlePlay-CK05QiTq.mjs.map → googlePlay-DTuvDHi5.mjs.map} +1 -1
  111. package/dist/{index-DhUf0B0m.d.mts → index-DrkV7N5w.d.mts} +2 -2
  112. package/dist/{index-4CO0HD27.d.cts.map → index-DrkV7N5w.d.mts.map} +1 -1
  113. package/dist/{index-4CO0HD27.d.cts → index-yaXZ9m-J.d.cts} +2 -2
  114. package/dist/{index-DhUf0B0m.d.mts.map → index-yaXZ9m-J.d.cts.map} +1 -1
  115. package/dist/index.cjs +150 -67
  116. package/dist/index.cjs.map +1 -1
  117. package/dist/index.mjs +149 -66
  118. package/dist/index.mjs.map +1 -1
  119. package/dist/{migrate-C-hmbjpG.cjs → migrate-3ZEoqx5q.cjs} +3 -3
  120. package/dist/{migrate-C-hmbjpG.cjs.map → migrate-3ZEoqx5q.cjs.map} +1 -1
  121. package/dist/{migrate-BzCHT9qs.mjs → migrate-BABIuzQj.mjs} +3 -3
  122. package/dist/{migrate-BzCHT9qs.mjs.map → migrate-BABIuzQj.mjs.map} +1 -1
  123. package/dist/{migrate-CnbvrVag.mjs → migrate-DZeNpuX2.mjs} +8 -6
  124. package/dist/migrate-DZeNpuX2.mjs.map +1 -0
  125. package/dist/{migrate-DeQJBexh.cjs → migrate-pGiUqvBi.cjs} +8 -6
  126. package/dist/migrate-pGiUqvBi.cjs.map +1 -0
  127. package/dist/openapi.cjs +3 -3
  128. package/dist/openapi.d.cts +1 -1
  129. package/dist/openapi.d.mts +1 -1
  130. package/dist/openapi.mjs +3 -3
  131. package/dist/{publish-BISBrrqR.mjs → publish-BsnDeOVL.mjs} +2 -2
  132. package/dist/{publish-BISBrrqR.mjs.map → publish-BsnDeOVL.mjs.map} +1 -1
  133. package/dist/{publish-DtSIB-hZ.cjs → publish-CS6xDvGT.cjs} +2 -2
  134. package/dist/{publish-DtSIB-hZ.cjs.map → publish-CS6xDvGT.cjs.map} +1 -1
  135. package/dist/{ready-IVGu-q18.cjs → ready-CxPJm0Hc.cjs} +6 -6
  136. package/dist/{ready-IVGu-q18.cjs.map → ready-CxPJm0Hc.cjs.map} +1 -1
  137. package/dist/{ready-DqsyadOs.mjs → ready-DrvaAwKv.mjs} +6 -6
  138. package/dist/{ready-DqsyadOs.mjs.map → ready-DrvaAwKv.mjs.map} +1 -1
  139. package/dist/reconcile/public.cjs +2 -2
  140. package/dist/reconcile/public.d.cts +1 -1
  141. package/dist/reconcile/public.d.cts.map +1 -1
  142. package/dist/reconcile/public.d.mts +1 -1
  143. package/dist/reconcile/public.d.mts.map +1 -1
  144. package/dist/reconcile/public.mjs +2 -2
  145. package/dist/{resolve-BT7fkPN5.mjs → resolve-fCGJmM-R.mjs} +3 -3
  146. package/dist/{resolve-BT7fkPN5.mjs.map → resolve-fCGJmM-R.mjs.map} +1 -1
  147. package/dist/{resolve-C7GKQcE4.cjs → resolve-zqCMFio0.cjs} +3 -3
  148. package/dist/{resolve-C7GKQcE4.cjs.map → resolve-zqCMFio0.cjs.map} +1 -1
  149. package/dist/{rollback-DbP0KuDw.mjs → rollback-BkhVrtAf.mjs} +5 -5
  150. package/dist/{rollback-DbP0KuDw.mjs.map → rollback-BkhVrtAf.mjs.map} +1 -1
  151. package/dist/{rollback-BEiB-Pje.cjs → rollback-qc79mj6L.cjs} +5 -5
  152. package/dist/{rollback-BEiB-Pje.cjs.map → rollback-qc79mj6L.cjs.map} +1 -1
  153. package/dist/{runtime-BFJQNqwd.d.mts → runtime-DCkfI2E7.d.mts} +2 -2
  154. package/dist/{runtime-BFJQNqwd.d.mts.map → runtime-DCkfI2E7.d.mts.map} +1 -1
  155. package/dist/{runtime-BJO-FFef.d.cts → runtime-Ie4znWIB.d.cts} +2 -2
  156. package/dist/{runtime-BJO-FFef.d.cts.map → runtime-Ie4znWIB.d.cts.map} +1 -1
  157. package/dist/{s3-B4FTQQkV.mjs → s3-BZzSnker.mjs} +2 -2
  158. package/dist/{s3-B4FTQQkV.mjs.map → s3-BZzSnker.mjs.map} +1 -1
  159. package/dist/{s3-DwKLXwUT.cjs → s3-pqgmCTOq.cjs} +2 -2
  160. package/dist/{s3-DwKLXwUT.cjs.map → s3-pqgmCTOq.cjs.map} +1 -1
  161. package/dist/sandbox/credentials-worker.cjs +2 -2
  162. package/dist/sandbox/credentials-worker.mjs +2 -2
  163. package/dist/sandbox/discover-worker.cjs +1 -1
  164. package/dist/sandbox/discover-worker.mjs +1 -1
  165. package/dist/sandbox/migrate-worker.cjs +5 -4
  166. package/dist/sandbox/migrate-worker.cjs.map +1 -1
  167. package/dist/sandbox/migrate-worker.mjs +5 -4
  168. package/dist/sandbox/migrate-worker.mjs.map +1 -1
  169. package/dist/{seeds-DOfxmDRO.cjs → seeds-3awh33Wz.cjs} +607 -45
  170. package/dist/seeds-3awh33Wz.cjs.map +1 -0
  171. package/dist/{seeds-rG-Evfz9.mjs → seeds-Cfejy8wj.mjs} +517 -39
  172. package/dist/seeds-Cfejy8wj.mjs.map +1 -0
  173. package/dist/{serverSetup-CWWVcU6Y.cjs → serverSetup-BFQuwUeL.cjs} +6 -6
  174. package/dist/{serverSetup-CWWVcU6Y.cjs.map → serverSetup-BFQuwUeL.cjs.map} +1 -1
  175. package/dist/{serverSetup-xGw1fxuZ.mjs → serverSetup-C8ZbHTm_.mjs} +6 -6
  176. package/dist/{serverSetup-xGw1fxuZ.mjs.map → serverSetup-C8ZbHTm_.mjs.map} +1 -1
  177. package/dist/{sniffer-DVPgfyHr.mjs → sniffer-CCkdzjiU.mjs} +8 -8
  178. package/dist/{sniffer-DVPgfyHr.mjs.map → sniffer-CCkdzjiU.mjs.map} +1 -1
  179. package/dist/{sniffer-C7O9Pna_.cjs → sniffer-Cq1nhxIB.cjs} +8 -8
  180. package/dist/{sniffer-C7O9Pna_.cjs.map → sniffer-Cq1nhxIB.cjs.map} +1 -1
  181. package/dist/{snsSubscriptions-CSkteK2J.cjs → snsSubscriptions-DYyYP0Xf.cjs} +15 -3
  182. package/dist/snsSubscriptions-DYyYP0Xf.cjs.map +1 -0
  183. package/dist/{snsSubscriptions-CvBIGGp0.mjs → snsSubscriptions-R_AKBZYK.mjs} +4 -4
  184. package/dist/snsSubscriptions-R_AKBZYK.mjs.map +1 -0
  185. package/dist/{stage-fRfFtLwj.cjs → stage-BkgbVJ9Z.cjs} +6 -6
  186. package/dist/{stage-fRfFtLwj.cjs.map → stage-BkgbVJ9Z.cjs.map} +1 -1
  187. package/dist/{stage-2EKpzPQ1.mjs → stage-DCaxqm-G.mjs} +6 -6
  188. package/dist/{stage-2EKpzPQ1.mjs.map → stage-DCaxqm-G.mjs.map} +1 -1
  189. package/dist/{stages-B7mCWI_R.cjs → stages-3yUZaZeA.cjs} +2 -2
  190. package/dist/{stages-B7mCWI_R.cjs.map → stages-3yUZaZeA.cjs.map} +1 -1
  191. package/dist/{stages-DSltTW2d.mjs → stages-DTTv0NZW.mjs} +2 -2
  192. package/dist/{stages-DSltTW2d.mjs.map → stages-DTTv0NZW.mjs.map} +1 -1
  193. package/dist/target/public.cjs +1 -1
  194. package/dist/target/public.d.cts +2 -2
  195. package/dist/target/public.d.mts +2 -2
  196. package/dist/target/public.mjs +1 -1
  197. package/dist/{terminal-D1aeTkgv.cjs → terminal-PKhPAajN.cjs} +2 -2
  198. package/dist/{terminal-D1aeTkgv.cjs.map → terminal-PKhPAajN.cjs.map} +1 -1
  199. package/dist/{terminal-BAVrDhhN.mjs → terminal-bqY33lpN.mjs} +2 -2
  200. package/dist/{terminal-BAVrDhhN.mjs.map → terminal-bqY33lpN.mjs.map} +1 -1
  201. package/dist/{types-CFU2uvrz.d.cts → types-Bmjs4jZV.d.mts} +8 -2
  202. package/dist/{types-D3BeGucy.d.mts.map → types-Bmjs4jZV.d.mts.map} +1 -1
  203. package/dist/{types-D3BeGucy.d.mts → types-D0IsQxES.d.cts} +9 -1
  204. package/dist/{types-CFU2uvrz.d.cts.map → types-D0IsQxES.d.cts.map} +1 -1
  205. package/dist/vitest.cjs +1 -1
  206. package/dist/vitest.mjs +1 -1
  207. package/dist/workspace/index.cjs +1 -1
  208. package/dist/workspace/index.d.cts +2 -2
  209. package/dist/workspace/index.d.mts +2 -2
  210. package/dist/workspace/index.mjs +1 -1
  211. package/dist/{workspace-DUnnVjqC.mjs → workspace-DBHF9Gba.mjs} +5 -3
  212. package/dist/workspace-DBHF9Gba.mjs.map +1 -0
  213. package/dist/{workspace-C82GLPnf.cjs → workspace-Du4Afb03.cjs} +5 -3
  214. package/dist/workspace-Du4Afb03.cjs.map +1 -0
  215. package/package.json +17 -15
  216. package/dist/SubscriberGenerator-C3QTae-R.cjs.map +0 -1
  217. package/dist/SubscriberGenerator-COAVPgM-.mjs.map +0 -1
  218. package/dist/compose-BfXXWJSp.cjs.map +0 -1
  219. package/dist/compose-DJvvmF3X.mjs.map +0 -1
  220. package/dist/databases-BPOgTn1u.mjs.map +0 -1
  221. package/dist/databases-fOaoBInm.cjs.map +0 -1
  222. package/dist/deploy-BbI1UMh3.cjs.map +0 -1
  223. package/dist/deploy-CiRYwFmr.mjs.map +0 -1
  224. package/dist/discover-BvJOVsYG.mjs.map +0 -1
  225. package/dist/discover-ojkcbxHw.cjs.map +0 -1
  226. package/dist/drivers-CQ32PB5w.cjs.map +0 -1
  227. package/dist/drivers-Chb5Akov.mjs.map +0 -1
  228. package/dist/emit-CNpuV_6Q.mjs.map +0 -1
  229. package/dist/emit-qvHxMV9b.cjs.map +0 -1
  230. package/dist/engine-BuinpJfS.mjs.map +0 -1
  231. package/dist/engine-esxTxcIx.cjs.map +0 -1
  232. package/dist/github-BEA4K3_X.cjs.map +0 -1
  233. package/dist/github-BUlKJfOV.mjs.map +0 -1
  234. package/dist/migrate-CnbvrVag.mjs.map +0 -1
  235. package/dist/migrate-DeQJBexh.cjs.map +0 -1
  236. package/dist/seeds-DOfxmDRO.cjs.map +0 -1
  237. package/dist/seeds-rG-Evfz9.mjs.map +0 -1
  238. package/dist/snsSubscriptions-CSkteK2J.cjs.map +0 -1
  239. package/dist/snsSubscriptions-CvBIGGp0.mjs.map +0 -1
  240. package/dist/workspace-C82GLPnf.cjs.map +0 -1
  241. package/dist/workspace-DUnnVjqC.mjs.map +0 -1
@@ -1,16 +1,16 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
2
2
  import { t as GkmError } from "./errors-D8Gwp5kU.mjs";
3
3
  import { c as runOutput, s as run } from "./credentials-DpfnUvIR.mjs";
4
- import { B as LOGS_PORT, I as otlpTelemetryEnv, L as resolveStageTelemetry, at as certificateFor, ft as SERVER_IPV4_KEY, ht as isReservedStageKey, it as ComposeTlsFileMissing, ot as proxyFor, z as telemetryEnv } from "./workspace-DUnnVjqC.mjs";
5
- import { A as stackBackups, C as siteNames, I as stageBackups, O as backupsRoleStatements, S as siteAuth, T as BACKUPS_SERVICE, a as subscriptionKey, c as HostNotPointingAtServer, d as requiredServerAddress, f as serverAddressHint, g as systemLookup, i as recordedPushSubscriptions, k as backupsService, m as stageDns, n as SUBSCRIPTION_TYPE, o as subscriptionResource, p as stackHosts, r as confirmPendingSubscriptions, s as topicConnection, t as PushSubscriptionsUnconfirmed, u as isLocalHost, w as withSitePasswords, x as passwordSites } from "./snsSubscriptions-CvBIGGp0.mjs";
4
+ import { B as LOGS_PORT, I as otlpTelemetryEnv, L as resolveStageTelemetry, at as certificateFor, ft as SERVER_IPV4_KEY, ht as isReservedStageKey, it as ComposeTlsFileMissing, ot as proxyFor, z as telemetryEnv } from "./workspace-DBHF9Gba.mjs";
5
+ import { A as backupsRoleStatements, C as passwordSites, D as BACKUPS_SERVICE, E as withSitePasswords, M as stackBackups, R as stageBackups, T as siteNames, a as subscriptionKey, c as HostNotPointingAtServer, f as requiredServerAddress, g as stageDns, h as stackHosts, i as recordedPushSubscriptions, j as backupsService, n as SUBSCRIPTION_TYPE, o as subscriptionResource, p as serverAddressHint, r as confirmPendingSubscriptions, s as topicConnection, t as PushSubscriptionsUnconfirmed, u as isLocalHost, v as systemLookup, w as siteAuth } from "./snsSubscriptions-R_AKBZYK.mjs";
6
6
  import { t as defineTarget } from "./define-6poNqm5O.mjs";
7
- import { $n as LOGS_SERVICE, $t as publicBuildValues, An as envFor, B as workerDockerfile, Bn as usesTelemetry, Bt as initStageSecrets, Cn as withGeneratedSecrets, Ct as composeFor, Dn as runsRedis, En as redisService, Gn as DEFAULT_IMAGES, Gt as composeBuildPaths, Hn as watchedBuckets, In as isTelemetryKey, Jn as portKeys, Jt as WORKER_PORT, Kt as imageLayout, L as appDockerfile, Ln as scopeTelemetryEnv, N as stageProviderNotes, Nn as planFor, On as stackRedis, S as recordRelease, Tn as STACK_CACHE, Un as EMULATOR_ACCESS_KEY_ID, Vn as minioWebhookEnv, Wn as hostFor, Xt as findBuildRoot, Zn as primaryPortKey, a as dnsResources, an as applyPolicies, ar as isMainFrontendApp, at as suppliedOnly, bt as bucketClient, c as currentActor, cn as bucketPolicies, ct as networkEnv, d as DeployJournal, er as logsAccess, et as devServicesUsed, ft as constructGlobs, gn as postgresSuperuser, in as applyNotifications, ir as NoDomainForStage, it as stageServiceDeclarations, jn as localRolePassword, kn as withRedisPassword, lt as workerEnvKeys, mn as loadLocalCredentials, n as reportDatabaseRuns, nn as applyBuckets, nr as stackLogs, o as forgetDnsResource, on as applyPostgres, or as resolveHost, ot as appEnvKeys, pn as LOCAL_RABBITMQ_USER, q as validateImageRef, qt as TURBO_VERSION, r as reportPlannedSeeds, rn as applyLifecycles, rr as withLogsPassword, s as recordDnsChanges, sn as bucketLifecycles, t as DeploySeedsFailed, tn as workerUnits, tr as logsService, tt as externalServices, un as postgresStatements, v as createComposeState, vt as LEGACY_LOCAL_LOGIN, wn as REDIS_SERVICE, xt as pgClient, yt as ensurePostgresLogin, z as ensureDockerignore, zn as telemetryOf } from "./seeds-rG-Evfz9.mjs";
7
+ import { $ as ORIGIN_VERIFY_HEADER, $n as telemetryOf, An as postgresSuperuser, At as LEGACY_LOCAL_LOGIN, B as processorDockerfile, Bn as redisService, Ct as backendsOf, Dn as LOCAL_RABBITMQ_USER, Ft as composeFor, Gn as localRolePassword, H as workerDockerfile, Hn as stackRedis, L as appDockerfile, Ln as withGeneratedSecrets, Mt as bucketClient, N as stageProviderNotes, Nt as pgClient, On as loadLocalCredentials, Qt as initStageSecrets, Rn as REDIS_SERVICE, S as recordRelease, Sn as bucketPolicies, Un as withRedisPassword, V as processorNative, Vn as runsRedis, Wn as envFor, Xn as isTelemetryKey, Zn as scopeTelemetryEnv, _n as applyLifecycles, _r as withLogsPassword, _t as appEnvKeys, a as dnsResources, an as PROCESSOR_PORT, ar as DEFAULT_IMAGES, bn as applyPostgres, br as resolveHost, bt as processorEnvKeys, c as currentActor, cr as portKeys, d as DeployJournal, dr as primaryPortKey, dt as devServicesUsed, er as usesTelemetry, fn as publicBuildValues, ft as externalServices, gn as applyBuckets, gr as stackLogs, gt as suppliedOnly, hn as workerUnits, hr as logsService, ht as stageServiceDeclarations, in as imageLayout, ir as hostFor, it as validateImageRef, jt as ensurePostgresLogin, ln as findBuildRoot, mn as processorUnits, mr as logsAccess, n as reportDatabaseRuns, nr as watchedBuckets, nt as originSecretKey, o as forgetDnsResource, on as TURBO_VERSION, pr as LOGS_SERVICE, qn as planFor, r as reportPlannedSeeds, rn as composeBuildPaths, rr as EMULATOR_ACCESS_KEY_ID, rt as processorOriginHost, s as recordDnsChanges, sn as WORKER_PORT, t as DeploySeedsFailed, tr as minioWebhookEnv, v as createComposeState, vn as applyNotifications, vr as NoDomainForStage, wn as postgresStatements, wt as constructGlobs, xn as bucketLifecycles, xt as workerEnvKeys, yn as applyPolicies, yr as isMainFrontendApp, yt as networkEnv, z as ensureDockerignore, zn as STACK_CACHE } from "./seeds-Cfejy8wj.mjs";
8
8
  import { t as appKey } from "./derive-B4vDpzgP.mjs";
9
- import { a as SNS_SUBSCRIPTIONS_KEY, l as DEFAULT_EVENTS, o as objectsRoute, s as subscriberRoute } from "./SubscriberGenerator-COAVPgM-.mjs";
9
+ import { i as installedFrom, s as DEFAULT_EVENTS } from "./drivers-CDjpjakg.mjs";
10
10
  import { a as imageRef } from "./identity-CBXr4wNi.mjs";
11
- import { i as discover } from "./discover-BvJOVsYG.mjs";
12
- import { i as installedFrom } from "./drivers-Chb5Akov.mjs";
13
- import { f as plannedSeeds, o as SeedFailed, p as seedDatabases, u as migrateDatabases } from "./databases-BPOgTn1u.mjs";
11
+ import { i as discover } from "./discover-CzGM5P3p.mjs";
12
+ import { a as SNS_SUBSCRIPTIONS_KEY, o as objectsRoute, s as subscriberRoute } from "./SubscriberGenerator-BALddfuW.mjs";
13
+ import { f as plannedSeeds, o as SeedFailed, p as seedDatabases, u as migrateDatabases } from "./databases-6GD0tI2F.mjs";
14
14
  import { dirname, join } from "node:path";
15
15
  import { existsSync } from "node:fs";
16
16
  import { chmod, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
@@ -649,6 +649,21 @@ const sshAccess = {
649
649
  }
650
650
  };
651
651
  //#endregion
652
+ //#region src/compose/routes.ts
653
+ /** A route with handlers and a check that would have to hold for each of them. */
654
+ var EdgeRouteConflict = class extends Error {
655
+ route;
656
+ constructor(route) {
657
+ super(`The edge route '${route}' sends some paths to other upstreams and also restricts who or what it answers. The two are not combined: give the restricted paths a host of their own.`);
658
+ this.route = route;
659
+ this.name = "EdgeRouteConflict";
660
+ }
661
+ };
662
+ /** @throws {EdgeRouteConflict} */
663
+ function assertRouteRenderable(route) {
664
+ if (route.handlers?.length && (route.allow || route.paths || route.prefixes || route.requireHeader)) throw new EdgeRouteConflict(route.name);
665
+ }
666
+ //#endregion
652
667
  //#region src/compose/caddyfile.ts
653
668
  /**
654
669
  * The stack's own edge, rendered for Caddy: one site block per route.
@@ -684,26 +699,55 @@ function edgeCaddyfile(routes, options) {
684
699
  ` : tls.kind === "files" ? `
685
700
  tls ${tls.certFile} ${tls.keyFile}
686
701
  ` : "";
687
- const blocks = routes.map(({ host, upstreams, prefix, allow, auth, paths, streaming }) => `https://${host} {${certificate}
688
- # gkm's own header, which only a service of this stack may send: the auth
689
- # server rate-limits by the client address it carries.
690
- request_header -${CLIENT_IP_HEADER}
691
- ${allow ? `
702
+ const blocks = routes.map((route) => siteBlock(route, certificate));
703
+ return `${HEADER}${global ? `${global}\n\n` : ""}${blocks.join("\n\n")}\n`;
704
+ }
705
+ /** One route's site block. */
706
+ function siteBlock(route, certificate) {
707
+ assertRouteRenderable(route);
708
+ const { host, allow, auth, paths, prefixes, requireHeader, handlers } = route;
709
+ const allowed = [...paths ?? [], ...(prefixes ?? []).map((prefix) => `${prefix}*`)];
710
+ const checks = `${allow ? `
692
711
  # Only these addresses — the peer Caddy sees, never a header a client
693
712
  # could set. Everything else is refused before it reaches the upstream.
694
713
  @denied not remote_ip ${allow.join(" ")}
695
714
  respond @denied 403
715
+ ` : ""}${requireHeader ? `
716
+ # Only what the CDN sends: it adds this header to every request, and this
717
+ # host would be reached around the CDN otherwise.
718
+ @forged not header ${requireHeader.name} "${requireHeader.value}"
719
+ respond @forged 403
696
720
  ` : ""}${auth ? `
697
721
  # The stage's login, asked for before anything reaches the upstream.
698
722
  basic_auth {
699
723
  ${auth.user} ${auth.hash}
700
724
  }
701
- ` : ""}${paths ? `
725
+ ` : ""}${allowed.length ? `
702
726
  # Only these paths answer. Everything else on this host is refused before
703
727
  # it reaches the upstream.
704
- @elsewhere not path ${paths.join(" ")}
728
+ @elsewhere not path ${allowed.join(" ")}
705
729
  respond @elsewhere 404
706
- ` : ""}${prefix ? `
730
+ ` : ""}`;
731
+ const proxy = proxyBlock(route);
732
+ const body = handlers?.length ? `${handlers.map((handler, index) => `
733
+ # Answered by another service: ${handler.name}.
734
+ @handler${index} path ${handler.prefixes.map((prefix) => `${prefix}*`).join(" ")}
735
+ handle @handler${index} {
736
+ reverse_proxy ${handler.upstreams.map(address).join(" ")}
737
+ }
738
+ `).join("")}
739
+ handle {${proxy.replace(/\n/g, "\n ")}
740
+ }` : proxy;
741
+ return `https://${host} {${certificate}
742
+ # gkm's own header, which only a service of this stack may send: the auth
743
+ # server rate-limits by the client address it carries.
744
+ request_header -${CLIENT_IP_HEADER}
745
+ ${checks}${body}
746
+ }`;
747
+ }
748
+ /** Where a route's requests go, when no handler took them. */
749
+ function proxyBlock({ upstreams, prefix, streaming }) {
750
+ return prefix ? `
707
751
  # A bucket, served at a host of its own: the bucket is a prefix on MinIO,
708
752
  # which routes and signs on the Host header — so it is sent the upstream's.
709
753
  reverse_proxy ${upstreams.map(address).join(" ")} {
@@ -716,17 +760,16 @@ ${allow ? `
716
760
  # Never buffer: a streamed response — server-sent events, a Next.js
717
761
  # RSC payload — reaches the client as each chunk is written.
718
762
  flush_interval -1
719
- }` : ""}`}
720
- }`);
721
- return `${HEADER}${global ? `${global}\n\n` : ""}${blocks.join("\n\n")}\n`;
763
+ }` : ""}`;
722
764
  }
723
765
  const HEADER = `# Generated by gkm compose from the construct manifest — do not edit.
724
766
  #
725
767
  # One host per API and site, each in front of its own container, one per
726
- # file server in front of the stack's MinIO, one per worker SNS pushes to,
727
- # answering only those routes, and — when its logs are served publicly — one
728
- # for OpenObserve, to the addresses it allows. A site the stage puts behind a
729
- # password asks for its login first.
768
+ # file server in front of the stack's MinIO — its processors' paths sent to
769
+ # their own service — one per worker SNS pushes to and per processor unit a
770
+ # CDN reaches, answering only those paths, and — when its logs are served
771
+ # publicly — one for OpenObserve, to the addresses it allows. A site the
772
+ # stage puts behind a password asks for its login first.
730
773
  `;
731
774
  //#endregion
732
775
  //#region src/compose/images.ts
@@ -1029,9 +1072,24 @@ function traefikDynamic(routes, options) {
1029
1072
  middlewares[name(route, "prefix")] = { addPrefix: { prefix: route.prefix } };
1030
1073
  chain.push(name(route, "prefix"));
1031
1074
  }
1032
- const paths = route.paths ? ` && (${route.paths.map((path) => `Path(\`${path}\`)`).join(" || ")})` : "";
1075
+ assertRouteRenderable(route);
1076
+ const allowed = [...(route.paths ?? []).map((path) => `Path(\`${path}\`)`), ...(route.prefixes ?? []).map((prefix) => `PathPrefix(\`${prefix}\`)`)];
1077
+ const paths = allowed.length ? ` && (${allowed.join(" || ")})` : "";
1078
+ const header = route.requireHeader ? ` && Header(\`${route.requireHeader.name}\`, \`${route.requireHeader.value}\`)` : "";
1079
+ for (const handler of route.handlers ?? []) {
1080
+ const handlerName = name(route, handler.name);
1081
+ routers[handlerName] = {
1082
+ rule: `Host(\`${route.host}\`) && (${handler.prefixes.map((prefix) => `PathPrefix(\`${prefix}\`)`).join(" || ")})`,
1083
+ priority: 1e4,
1084
+ entryPoints: ["websecure"],
1085
+ service: handlerName,
1086
+ middlewares: [strip],
1087
+ tls: tls.kind === "acme" ? { certResolver: ACME_RESOLVER } : {}
1088
+ };
1089
+ services[handlerName] = { loadBalancer: { servers: handler.upstreams.map((upstream) => ({ url: url(upstream) })) } };
1090
+ }
1033
1091
  routers[name(route)] = {
1034
- rule: `Host(\`${route.host}\`)${paths}`,
1092
+ rule: `Host(\`${route.host}\`)${paths}${header}`,
1035
1093
  entryPoints: ["websecure"],
1036
1094
  service: name(route),
1037
1095
  middlewares: chain,
@@ -1173,6 +1231,19 @@ const LOG_ROTATION = {
1173
1231
  "max-file": "3"
1174
1232
  }
1175
1233
  };
1234
+ /** A CDN serves the bucket, and the secret it sends the processors is not in the stage. */
1235
+ var ProcessorOriginSecretMissing = class extends GkmError {
1236
+ fileServer;
1237
+ key;
1238
+ stage;
1239
+ constructor(fileServer, key, stage) {
1240
+ super(`'${fileServer}' has processors, and its bucket is not the stack's MinIO, so they are reached through the CDN in front of it — which sends ${key}, and stage '${stage}' has none. It is written by the deploy that creates the CDN (\`deploy.objects.${stage}\` on s3, cdn on): run gkm deploy --stage ${stage}.`);
1241
+ this.fileServer = fileServer;
1242
+ this.key = key;
1243
+ this.stage = stage;
1244
+ this.name = "ProcessorOriginSecretMissing";
1245
+ }
1246
+ };
1176
1247
  /**
1177
1248
  * The stack with Caddy's files inline: its Caddyfile and, where the stage has
1178
1249
  * one, its own certificate — `configs` with their `content`, which compose
@@ -1381,7 +1452,13 @@ function composeStack(input) {
1381
1452
  identity,
1382
1453
  images: input.images
1383
1454
  });
1384
- if (apps.length === 0 && workers.length === 0) throw new NothingToCompose(workspace.root);
1455
+ const processors = stackProcessors(processorUnits(workspace, manifest), {
1456
+ manifest,
1457
+ stage,
1458
+ identity,
1459
+ images: input.images
1460
+ });
1461
+ if (apps.length === 0 && workers.length === 0 && processors.length === 0) throw new NothingToCompose(workspace.root);
1385
1462
  const owners = /* @__PURE__ */ new Map();
1386
1463
  for (const resource of plan.resources) {
1387
1464
  owners.set(resource.envKey, resource);
@@ -1633,6 +1710,48 @@ function composeStack(input) {
1633
1710
  };
1634
1711
  for (const [key, value] of Object.entries(worker.env)) if (/[\r\n]/.test(value)) throw new EnvValueMultiline(worker.name, key);
1635
1712
  }
1713
+ for (const unit of processors) {
1714
+ const served = fileServers.get(unit.id);
1715
+ if (served) served.route = {
1716
+ ...served.route,
1717
+ handlers: [{
1718
+ name: unit.name,
1719
+ prefixes: unit.prefixes,
1720
+ upstreams: [{
1721
+ service: unit.name,
1722
+ port: unit.port
1723
+ }]
1724
+ }]
1725
+ };
1726
+ else if (!local && !input.buildOnly) {
1727
+ if (!domain) throw new NoDomainForStage(stage);
1728
+ const key = originSecretKey(unit.id);
1729
+ const secret = custom[key];
1730
+ if (!secret) throw new ProcessorOriginSecretMissing(unit.id, key, stage);
1731
+ unit.origin = {
1732
+ host: processorOriginHost(unit.id, domain),
1733
+ secret
1734
+ };
1735
+ }
1736
+ if (proxy === "traefik" && (served || unit.origin)) edgeServices.add(unit.name);
1737
+ if (input.buildOnly) continue;
1738
+ const keys = processorEnvKeys(manifest, unit.id, input.runnables) ?? /* @__PURE__ */ new Set();
1739
+ unit.env = {
1740
+ ...scopeTelemetryEnv(valuesFor({
1741
+ name: unit.name,
1742
+ id: unit.id,
1743
+ kind: "rest-api"
1744
+ }, keys), {
1745
+ uses: telemetryOf(manifest, unit.id) !== void 0,
1746
+ serviceName: unit.name,
1747
+ ...telemetryValues ? { telemetry: telemetryValues } : {}
1748
+ }),
1749
+ NODE_ENV: "production",
1750
+ PORT: String(unit.port),
1751
+ STAGE: stage
1752
+ };
1753
+ for (const [key, value] of Object.entries(unit.env)) if (/[\r\n]/.test(value)) throw new EnvValueMultiline(unit.name, key);
1754
+ }
1636
1755
  if (storage && !input.buildOnly) {
1637
1756
  const watched = watchedBuckets(manifest, input.subscribers ?? {});
1638
1757
  for (const [bucket, workerId] of watched) {
@@ -1675,6 +1794,7 @@ function composeStack(input) {
1675
1794
  infra,
1676
1795
  apps,
1677
1796
  workers,
1797
+ processors,
1678
1798
  credentials: credential.containers,
1679
1799
  ...storage ? { storage } : {},
1680
1800
  ...logs ? { logs } : {},
@@ -1710,6 +1830,21 @@ function composeStack(input) {
1710
1830
  health: app.kind === "site" ? "/" : "/health"
1711
1831
  })),
1712
1832
  ...[...fileServers.values()].map(({ route }) => route),
1833
+ ...processors.flatMap(({ name, port, prefixes, origin }) => origin ? [{
1834
+ name,
1835
+ host: origin.host,
1836
+ upstreams: [{
1837
+ service: name,
1838
+ port
1839
+ }],
1840
+ streaming: false,
1841
+ prefixes,
1842
+ requireHeader: {
1843
+ name: ORIGIN_VERIFY_HEADER,
1844
+ value: origin.secret
1845
+ },
1846
+ health: "/health"
1847
+ }] : []),
1713
1848
  ...workers.flatMap(({ name, port, push }) => push ? [{
1714
1849
  name,
1715
1850
  host: push.host,
@@ -1759,12 +1894,26 @@ function composeStack(input) {
1759
1894
  cache: STACK_CACHE
1760
1895
  });
1761
1896
  }
1897
+ for (const unit of processors) {
1898
+ if (!unit.build) continue;
1899
+ dockerfiles[unit.build.dockerfile] = processorDockerfile({
1900
+ id: unit.id,
1901
+ name: unit.name,
1902
+ app: unit.host
1903
+ }, workspace.apps[unit.host], {
1904
+ layout,
1905
+ workspaceRoot: workspace.root,
1906
+ native: unit.native,
1907
+ cache: STACK_CACHE
1908
+ });
1909
+ }
1762
1910
  return {
1763
1911
  project,
1764
1912
  stage,
1765
1913
  local,
1766
1914
  apps,
1767
1915
  workers,
1916
+ processors,
1768
1917
  mobileApps,
1769
1918
  infra,
1770
1919
  compose,
@@ -1904,6 +2053,25 @@ function assertHostsUnique(routes) {
1904
2053
  claimed.set(host, name);
1905
2054
  }
1906
2055
  }
2056
+ /** Each processor unit's image, and where it is built from. */
2057
+ function stackProcessors(units, options) {
2058
+ return units.map((unit) => {
2059
+ const server = options.manifest[unit.id];
2060
+ const processors = server?.kind === "file-server" ? server.processors ?? [] : [];
2061
+ return {
2062
+ app: unit.name,
2063
+ name: unit.name,
2064
+ id: unit.id,
2065
+ host: unit.app,
2066
+ port: PROCESSOR_PORT,
2067
+ prefixes: [...new Set(processors.map((p) => p.prefix))].sort(),
2068
+ native: processorNative(options.manifest, unit.id),
2069
+ ref: validateImageRef(imageRef(options.identity, unit.name, options.images.registry, options.images.tag)),
2070
+ tag: options.images.tag,
2071
+ ...options.images.mode === "build" ? { build: { dockerfile: `${stackDir(options.stage)}/Dockerfile.${unit.name}` } } : {}
2072
+ };
2073
+ });
2074
+ }
1907
2075
  /** Each worker's image, and where it is built from. */
1908
2076
  function stackWorkers(units, options) {
1909
2077
  return units.map((unit) => ({
@@ -1990,7 +2158,7 @@ function stackFile(options) {
1990
2158
  } : {},
1991
2159
  healthcheck: probe(app.port, app.kind === "site" ? "/" : "/health")
1992
2160
  };
1993
- for (const worker of options.workers) services[worker.name] = {
2161
+ for (const worker of [...options.workers, ...options.processors]) services[worker.name] = {
1994
2162
  image: worker.ref,
1995
2163
  ...worker.build ? { build: composeBuildPaths({
1996
2164
  composeDir: options.composeDir,
@@ -2011,7 +2179,11 @@ function stackFile(options) {
2011
2179
  restart: "unless-stopped",
2012
2180
  ports: [`${options.https}:443`, `${options.http}:80`],
2013
2181
  volumes: ["caddy-data:/data", "caddy-config:/config"],
2014
- depends_on: Object.fromEntries([...apps.map((app) => app.name), ...options.workers.filter((w) => w.push).map((w) => w.name)].map((name) => [name, HEALTHY])),
2182
+ depends_on: Object.fromEntries([
2183
+ ...apps.map((app) => app.name),
2184
+ ...options.workers.filter((w) => w.push).map((w) => w.name),
2185
+ ...options.processors.map((p) => p.name)
2186
+ ].map((name) => [name, HEALTHY])),
2015
2187
  healthcheck: {
2016
2188
  test: [
2017
2189
  "CMD",
@@ -2632,7 +2804,11 @@ async function validateCompose(ctx, deps, options = {}) {
2632
2804
  if (mode === "build") assertRedisClient(workspace, composed, manifest, runnables);
2633
2805
  const pinned = (unpinned) => options.pin ? withPinnedImages(unpinned, options.pin.file, options.pin.digests) : unpinned;
2634
2806
  const stack = pinned(composed);
2635
- if (mode === "pull" && !ctx.dryRun) await assertImagesExist(deps.docker, tag, [...stack.apps, ...stack.workers]);
2807
+ if (mode === "pull" && !ctx.dryRun) await assertImagesExist(deps.docker, tag, [
2808
+ ...stack.apps,
2809
+ ...stack.workers,
2810
+ ...stack.processors
2811
+ ]);
2636
2812
  if (stack.redis && !stack.local) ctx.secrets.mask(stack.redis.password);
2637
2813
  if (stack.logs && (!stack.local || stack.logs.passwordFromSecrets)) {
2638
2814
  ctx.secrets.mask(stack.logs.password);
@@ -2838,8 +3014,13 @@ async function stageSecrets(ctx, manifest) {
2838
3014
  function withPinnedImages(stack, file, digests) {
2839
3015
  const apps = pinImages(file, digests, stack.apps);
2840
3016
  const workers = pinImages(file, digests, stack.workers);
3017
+ const processors = pinImages(file, digests, stack.processors);
2841
3018
  const services = { ...stack.compose.services };
2842
- for (const image of [...apps, ...workers]) services[image.name] = {
3019
+ for (const image of [
3020
+ ...apps,
3021
+ ...workers,
3022
+ ...processors
3023
+ ]) services[image.name] = {
2843
3024
  ...services[image.name],
2844
3025
  image: image.ref
2845
3026
  };
@@ -2847,6 +3028,7 @@ function withPinnedImages(stack, file, digests) {
2847
3028
  ...stack,
2848
3029
  apps,
2849
3030
  workers,
3031
+ processors,
2850
3032
  compose: {
2851
3033
  ...stack.compose,
2852
3034
  services
@@ -2895,7 +3077,7 @@ async function planCompose(ctx, run) {
2895
3077
  action: run.previous[app.name] ? "reuse" : "create"
2896
3078
  });
2897
3079
  }
2898
- for (const worker of run.stack.workers) {
3080
+ for (const worker of [...run.stack.workers, ...run.stack.processors]) {
2899
3081
  planned({
2900
3082
  key: `image:${worker.name}`,
2901
3083
  resourceType: "image",
@@ -3109,7 +3291,8 @@ async function migrateAndSeed(ctx, run, deps, port) {
3109
3291
  const runs = await deps.migrate(options);
3110
3292
  const seeds = await deps.seed({
3111
3293
  ...options,
3112
- stage: ctx.stage
3294
+ stage: ctx.stage,
3295
+ backends: backendsOf(workspace)
3113
3296
  }).catch((error) => {
3114
3297
  if (error instanceof SeedFailed) throw new DeploySeedsFailed(ctx.stage, error.construct, error.seed, error);
3115
3298
  throw error;
@@ -3131,7 +3314,11 @@ async function migrateAndSeed(ctx, run, deps, port) {
3131
3314
  */
3132
3315
  async function buildCompose(ctx, run, deps) {
3133
3316
  const { stack, ref } = run;
3134
- const images = [...stack.apps, ...stack.workers];
3317
+ const images = [
3318
+ ...stack.apps,
3319
+ ...stack.workers,
3320
+ ...stack.processors
3321
+ ];
3135
3322
  const apps = images.map((image) => image.app);
3136
3323
  if (run.push) {
3137
3324
  run.files = await writeStack(ctx.cwd, run.dir, stack);
@@ -3203,7 +3390,7 @@ async function releaseCompose(ctx, run, deps) {
3203
3390
  url: app.url
3204
3391
  });
3205
3392
  }
3206
- for (const worker of stack.workers) applied(ctx, run, {
3393
+ for (const worker of [...stack.workers, ...stack.processors]) applied(ctx, run, {
3207
3394
  key: `service:${worker.name}`,
3208
3395
  resourceType: "service",
3209
3396
  action: "ensure",
@@ -3213,6 +3400,7 @@ async function releaseCompose(ctx, run, deps) {
3213
3400
  ctx.logger.info(`\n✅ ${stack.project} is running:`);
3214
3401
  for (const app of stack.apps) ctx.logger.info(` ${app.name.padEnd(12)} ${app.url}${app.auth ? ` 🔒 user: ${app.auth.user}, password: gkm secrets:show --stage ${ctx.stage} --reveal → ${app.auth.key}` : ""}`);
3215
3402
  for (const worker of stack.workers) ctx.logger.info(` ${worker.name.padEnd(12)} worker ${worker.id}`);
3403
+ for (const unit of stack.processors) ctx.logger.info(` ${unit.name.padEnd(12)} processors of ${unit.id}`);
3216
3404
  if (stack.local) ctx.logger.info(`\n🔐 Certificates are from Caddy's local CA: NODE_EXTRA_CA_CERTS=${join(stackDir(ctx.stage), "caddy-root.crt")}`);
3217
3405
  }
3218
3406
  /**
@@ -3223,7 +3411,11 @@ async function releaseCompose(ctx, run, deps) {
3223
3411
  async function recordImages(ctx, run) {
3224
3412
  const journal = await DeployJournal.open(ctx.state, ctx.stage, () => createComposeState(ctx.stage));
3225
3413
  const by = currentActor();
3226
- for (const app of [...run.stack.apps, ...run.stack.workers]) {
3414
+ for (const app of [
3415
+ ...run.stack.apps,
3416
+ ...run.stack.workers,
3417
+ ...run.stack.processors
3418
+ ]) {
3227
3419
  const image = run.images[app.app] ?? {
3228
3420
  ref: app.ref,
3229
3421
  tag: app.tag
@@ -3252,7 +3444,7 @@ async function verifyCompose(ctx, run, deps) {
3252
3444
  ca,
3253
3445
  edge
3254
3446
  })));
3255
- results.push(...await Promise.all(stack.workers.map((worker) => checkContainer(ctx, run, deps, worker.name))));
3447
+ results.push(...await Promise.all([...stack.workers, ...stack.processors].map((worker) => checkContainer(ctx, run, deps, worker.name))));
3256
3448
  if (stack.logs) results.push(await checkContainer(ctx, run, deps, LOGS_SERVICE));
3257
3449
  const down = results.filter((result) => !result.healthy).map(({ app, url, last }) => ({
3258
3450
  app,
@@ -3417,7 +3609,7 @@ function composeResult(ctx, run) {
3417
3609
  ...image?.digest ? { digest: image.digest } : {},
3418
3610
  url: app.url
3419
3611
  };
3420
- }), ...run.stack.workers.map((worker) => {
3612
+ }), ...[...run.stack.workers, ...run.stack.processors].map((worker) => {
3421
3613
  const image = run.images[worker.name];
3422
3614
  return {
3423
3615
  appName: worker.name,
@@ -3491,7 +3683,11 @@ async function writeStack(root, dir, stack) {
3491
3683
  recursive: true,
3492
3684
  force: true
3493
3685
  });
3494
- for (const app of [...stack.apps, ...stack.workers]) if (app.env) await write(join(dir, `${app.name}.env`), envFile(app.env), 384);
3686
+ for (const app of [
3687
+ ...stack.apps,
3688
+ ...stack.workers,
3689
+ ...stack.processors
3690
+ ]) if (app.env) await write(join(dir, `${app.name}.env`), envFile(app.env), 384);
3495
3691
  if (stack.logs && stack.compose.services["openobserve"]?.env_file) await write(join(dir, `${LOGS_SERVICE}.env`), envFile(stack.logs.env), 384);
3496
3692
  if (stack.redis && stack.compose.services["redis"]?.env_file) await write(join(dir, `${REDIS_SERVICE}.env`), envFile(stack.redis.env), 384);
3497
3693
  if (stack.backups) {
@@ -3529,6 +3725,7 @@ function printPlan(ctx, run) {
3529
3725
  if (run.server) ctx.logger.info(` → ${sshTarget(run.server)} (docker over ssh)`);
3530
3726
  for (const app of stack.apps) ctx.logger.info(` ${app.name.padEnd(12)} ${app.url.padEnd(40)} ${mode} ${app.ref}`);
3531
3727
  for (const worker of stack.workers) ctx.logger.info(` ${worker.name.padEnd(12)} ${`worker ${worker.id} (no route)`.padEnd(40)} ${mode} ${worker.ref}`);
3728
+ for (const unit of stack.processors) ctx.logger.info(` ${unit.name.padEnd(12)} ${`processors of ${unit.id}`.padEnd(40)} ${mode} ${unit.ref}`);
3532
3729
  if (stack.infra.length > 0) ctx.logger.info(` infrastructure: ${stack.infra.join(", ")}`);
3533
3730
  if (stack.backups) ctx.logger.info(` ${BACKUPS_SERVICE.padEnd(12)} ${stack.backups.databases.map((d) => d.file).join(", ")} — ${stack.backups.backups.describe}, to ${stack.backups.prefix}/`);
3534
3731
  ctx.logger.info(`\n📝 Wrote ${files.length} file(s) under ${stackDir(stack.stage)}/`);
@@ -3607,4 +3804,4 @@ function composeTarget(options = {}) {
3607
3804
  //#endregion
3608
3805
  export { dockerCompose as C, sshTarget as S, parseDigests as _, edgePorts as a, dockerHost as b, edgeRef as c, composeStack as d, derivedCredentials as f, edgeAlias as g, EDGE_PROJECT as h, ComposePushNeedsBuild as i, removeEdgeRoutes as l, stackPlan as m, compose_exports as n, stackOverrideFile as o, stackDir as p, ComposePinNeedsPull as r, deployedStackSecrets as s, composeTarget as t, composeProject as u, pinnedRef as v, projectNetwork as w, sshAccess as x, composeServer as y };
3609
3806
 
3610
- //# sourceMappingURL=compose-DJvvmF3X.mjs.map
3807
+ //# sourceMappingURL=compose-CvHIjMDd.mjs.map