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

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 (263) hide show
  1. package/dist/{EndpointGenerator-BDa6pPgE.cjs → EndpointGenerator-B2MUa4M2.cjs} +2 -2
  2. package/dist/{EndpointGenerator-BDa6pPgE.cjs.map → EndpointGenerator-B2MUa4M2.cjs.map} +1 -1
  3. package/dist/{EndpointGenerator-CP_z_E3e.mjs → EndpointGenerator-Z_BUTocT.mjs} +2 -2
  4. package/dist/{EndpointGenerator-CP_z_E3e.mjs.map → EndpointGenerator-Z_BUTocT.mjs.map} +1 -1
  5. package/dist/{GoDaddyProvider-BJ9j9mR7.cjs → GoDaddyProvider-0z5RAN1k.cjs} +3 -3
  6. package/dist/{GoDaddyProvider-BJ9j9mR7.cjs.map → GoDaddyProvider-0z5RAN1k.cjs.map} +1 -1
  7. package/dist/{GoDaddyProvider-wIKYdm7V.mjs → GoDaddyProvider-55x4o-4z.mjs} +3 -3
  8. package/dist/{GoDaddyProvider-wIKYdm7V.mjs.map → GoDaddyProvider-55x4o-4z.mjs.map} +1 -1
  9. package/dist/{HostingerProvider-BNpS9aRJ.mjs → HostingerProvider-Cjh_2Ml6.mjs} +2 -2
  10. package/dist/{HostingerProvider-BNpS9aRJ.mjs.map → HostingerProvider-Cjh_2Ml6.mjs.map} +1 -1
  11. package/dist/{HostingerProvider-DR1iws1P.cjs → HostingerProvider-OdQmKXE3.cjs} +2 -2
  12. package/dist/{HostingerProvider-DR1iws1P.cjs.map → HostingerProvider-OdQmKXE3.cjs.map} +1 -1
  13. package/dist/{LegacyStateStore-CkXUJP7i.mjs → LegacyStateStore-C-vumKSN.mjs} +3 -3
  14. package/dist/{LegacyStateStore-CkXUJP7i.mjs.map → LegacyStateStore-C-vumKSN.mjs.map} +1 -1
  15. package/dist/{LegacyStateStore-D1S87I_B.cjs → LegacyStateStore-DRpB-yC5.cjs} +3 -3
  16. package/dist/{LegacyStateStore-D1S87I_B.cjs.map → LegacyStateStore-DRpB-yC5.cjs.map} +1 -1
  17. package/dist/{LocalStateStore-DmXfpvu4.cjs → LocalStateStore-C3ummuDT.cjs} +2 -2
  18. package/dist/{LocalStateStore-DmXfpvu4.cjs.map → LocalStateStore-C3ummuDT.cjs.map} +1 -1
  19. package/dist/{LocalStateStore-BWoWeSq0.mjs → LocalStateStore-CtOjpV1w.mjs} +2 -2
  20. package/dist/{LocalStateStore-BWoWeSq0.mjs.map → LocalStateStore-CtOjpV1w.mjs.map} +1 -1
  21. package/dist/{OpenApiTsGenerator-CsrukCE-.mjs → OpenApiTsGenerator-MtnMQL_g.mjs} +2 -2
  22. package/dist/{OpenApiTsGenerator-CsrukCE-.mjs.map → OpenApiTsGenerator-MtnMQL_g.mjs.map} +1 -1
  23. package/dist/{OpenApiTsGenerator-FNhY7Ssz.cjs → OpenApiTsGenerator-t3_E98Fi.cjs} +2 -2
  24. package/dist/{OpenApiTsGenerator-FNhY7Ssz.cjs.map → OpenApiTsGenerator-t3_E98Fi.cjs.map} +1 -1
  25. package/dist/{S3StateStore-D19JSGE9.mjs → S3StateStore-BC4Jm3Tw.mjs} +2 -2
  26. package/dist/{S3StateStore-D19JSGE9.mjs.map → S3StateStore-BC4Jm3Tw.mjs.map} +1 -1
  27. package/dist/{S3StateStore-BEdsjjP4.cjs → S3StateStore-BeArp0aF.cjs} +2 -2
  28. package/dist/{S3StateStore-BEdsjjP4.cjs.map → S3StateStore-BeArp0aF.cjs.map} +1 -1
  29. package/dist/{SSMStateStore-7xKw0Zz9.mjs → SSMStateStore-Crl76aYZ.mjs} +2 -2
  30. package/dist/{SSMStateStore-7xKw0Zz9.mjs.map → SSMStateStore-Crl76aYZ.mjs.map} +1 -1
  31. package/dist/{SSMStateStore--2bcxoiH.cjs → SSMStateStore-DcstR6cW.cjs} +2 -2
  32. package/dist/{SSMStateStore--2bcxoiH.cjs.map → SSMStateStore-DcstR6cW.cjs.map} +1 -1
  33. package/dist/{SubscriberGenerator-C8CPxrCK.cjs → SubscriberGenerator-C3QTae-R.cjs} +237 -54
  34. package/dist/SubscriberGenerator-C3QTae-R.cjs.map +1 -0
  35. package/dist/{SubscriberGenerator-y3pncae_.mjs → SubscriberGenerator-COAVPgM-.mjs} +227 -56
  36. package/dist/SubscriberGenerator-COAVPgM-.mjs.map +1 -0
  37. package/dist/{add-DlFUKdjX.cjs → add-BFjb6mMq.cjs} +7 -7
  38. package/dist/{add-DlFUKdjX.cjs.map → add-BFjb6mMq.cjs.map} +1 -1
  39. package/dist/{add-Bu6FkaTn.mjs → add-CIjmgzkb.mjs} +6 -6
  40. package/dist/{add-Bu6FkaTn.mjs.map → add-CIjmgzkb.mjs.map} +1 -1
  41. package/dist/{bundler-Bg0lPDoi.cjs → bundler-CiUoIsku.cjs} +5 -5
  42. package/dist/{bundler-Bg0lPDoi.cjs.map → bundler-CiUoIsku.cjs.map} +1 -1
  43. package/dist/{bundler-CgE5XTyr.mjs → bundler-D6KFNpQk.mjs} +5 -5
  44. package/dist/{bundler-CgE5XTyr.mjs.map → bundler-D6KFNpQk.mjs.map} +1 -1
  45. package/dist/{cli-z5S3bHyK.mjs → cli-DNtSTtMc.mjs} +4 -4
  46. package/dist/{cli-z5S3bHyK.mjs.map → cli-DNtSTtMc.mjs.map} +1 -1
  47. package/dist/{cli-Cvjlnpon.cjs → cli-r4eUr98C.cjs} +4 -4
  48. package/dist/{cli-Cvjlnpon.cjs.map → cli-r4eUr98C.cjs.map} +1 -1
  49. package/dist/{compose-bKLAtHLj.cjs → compose-BfXXWJSp.cjs} +362 -59
  50. package/dist/compose-BfXXWJSp.cjs.map +1 -0
  51. package/dist/{compose-CgBPA44v.mjs → compose-DJvvmF3X.mjs} +336 -33
  52. package/dist/compose-DJvvmF3X.mjs.map +1 -0
  53. package/dist/{config-D48erO2j.d.mts → config-IgK6YaGp.d.cts} +3 -4
  54. package/dist/config-IgK6YaGp.d.cts.map +1 -0
  55. package/dist/{config-DHDtsQrB.d.cts → config-kE-p5hxq.d.mts} +3 -4
  56. package/dist/config-kE-p5hxq.d.mts.map +1 -0
  57. package/dist/config.cjs +2 -2
  58. package/dist/config.d.cts +3 -3
  59. package/dist/config.d.mts +3 -3
  60. package/dist/config.mjs +2 -2
  61. package/dist/{credentialSchemas-B67WJOOm.cjs → credentialSchemas-AhIBuQxQ.cjs} +2 -2
  62. package/dist/{credentialSchemas-B67WJOOm.cjs.map → credentialSchemas-AhIBuQxQ.cjs.map} +1 -1
  63. package/dist/{credentialSchemas-DDOLRCLF.mjs → credentialSchemas-DLKbxYBy.mjs} +2 -2
  64. package/dist/{credentialSchemas-DDOLRCLF.mjs.map → credentialSchemas-DLKbxYBy.mjs.map} +1 -1
  65. package/dist/{credentials-Zqr3QQYB.cjs → credentials-D7XJypNd.cjs} +173 -3
  66. package/dist/credentials-D7XJypNd.cjs.map +1 -0
  67. package/dist/{credentials-B5N5yKk6.mjs → credentials-DpfnUvIR.mjs} +132 -4
  68. package/dist/credentials-DpfnUvIR.mjs.map +1 -0
  69. package/dist/deploy/public.cjs +16 -17
  70. package/dist/deploy/public.cjs.map +1 -1
  71. package/dist/deploy/public.d.cts +3 -5
  72. package/dist/deploy/public.d.cts.map +1 -1
  73. package/dist/deploy/public.d.mts +3 -5
  74. package/dist/deploy/public.d.mts.map +1 -1
  75. package/dist/deploy/public.mjs +11 -12
  76. package/dist/deploy/public.mjs.map +1 -1
  77. package/dist/{deploy-CI85F6dr.cjs → deploy-BbI1UMh3.cjs} +477 -156
  78. package/dist/deploy-BbI1UMh3.cjs.map +1 -0
  79. package/dist/{deploy-Ddy8UBoE.mjs → deploy-CiRYwFmr.mjs} +456 -117
  80. package/dist/deploy-CiRYwFmr.mjs.map +1 -0
  81. package/dist/{discover-C5roJuc9.mjs → discover-BvJOVsYG.mjs} +66 -14
  82. package/dist/discover-BvJOVsYG.mjs.map +1 -0
  83. package/dist/{discover-DozUKs8f.cjs → discover-ojkcbxHw.cjs} +88 -12
  84. package/dist/discover-ojkcbxHw.cjs.map +1 -0
  85. package/dist/{dokploy-CiozgdKO.cjs → dokploy-C0aQrCgs.cjs} +2 -2
  86. package/dist/{dokploy-CiozgdKO.cjs.map → dokploy-C0aQrCgs.cjs.map} +1 -1
  87. package/dist/{dokploy-Boj1NSHV.mjs → dokploy-MM7c3IE0.mjs} +2 -2
  88. package/dist/{dokploy-Boj1NSHV.mjs.map → dokploy-MM7c3IE0.mjs.map} +1 -1
  89. package/dist/{drivers-DbjiYpW6.cjs → drivers-CQ32PB5w.cjs} +2 -2
  90. package/dist/{drivers-DbjiYpW6.cjs.map → drivers-CQ32PB5w.cjs.map} +1 -1
  91. package/dist/{drivers-BjGDYfnC.mjs → drivers-Chb5Akov.mjs} +2 -2
  92. package/dist/{drivers-BjGDYfnC.mjs.map → drivers-Chb5Akov.mjs.map} +1 -1
  93. package/dist/{eas-DCg41jKK.mjs → eas-1Ee6kql0.mjs} +2 -2
  94. package/dist/{eas-DCg41jKK.mjs.map → eas-1Ee6kql0.mjs.map} +1 -1
  95. package/dist/{eas-BmBjIFf_.cjs → eas-CJoys9yh.cjs} +2 -2
  96. package/dist/{eas-BmBjIFf_.cjs.map → eas-CJoys9yh.cjs.map} +1 -1
  97. package/dist/{emit-C1e8qD08.mjs → emit-CNpuV_6Q.mjs} +17 -1
  98. package/dist/emit-CNpuV_6Q.mjs.map +1 -0
  99. package/dist/{emit-Dmc1nvdS.cjs → emit-qvHxMV9b.cjs} +17 -1
  100. package/dist/emit-qvHxMV9b.cjs.map +1 -0
  101. package/dist/{encryption-QOQbGXgV.mjs → encryption-B8Bk1Mvu.mjs} +3 -3
  102. package/dist/{encryption-QOQbGXgV.mjs.map → encryption-B8Bk1Mvu.mjs.map} +1 -1
  103. package/dist/{encryption-CwLWV2ig.cjs → encryption-Bo9VlRnl.cjs} +3 -3
  104. package/dist/{encryption-CwLWV2ig.cjs.map → encryption-Bo9VlRnl.cjs.map} +1 -1
  105. package/dist/{engine-HVqo3mQu.mjs → engine-BuinpJfS.mjs} +7 -8
  106. package/dist/{engine-HVqo3mQu.mjs.map → engine-BuinpJfS.mjs.map} +1 -1
  107. package/dist/{engine-D7YNY3v7.cjs → engine-esxTxcIx.cjs} +10 -11
  108. package/dist/{engine-D7YNY3v7.cjs.map → engine-esxTxcIx.cjs.map} +1 -1
  109. package/dist/{github-CO8W9SDs.cjs → github-BEA4K3_X.cjs} +80 -47
  110. package/dist/github-BEA4K3_X.cjs.map +1 -0
  111. package/dist/{github-CQt3xc3o.mjs → github-BUlKJfOV.mjs} +78 -45
  112. package/dist/github-BUlKJfOV.mjs.map +1 -0
  113. package/dist/{googlePlay-Cfu17aEp.mjs → googlePlay-CK05QiTq.mjs} +4 -4
  114. package/dist/{googlePlay-Cfu17aEp.mjs.map → googlePlay-CK05QiTq.mjs.map} +1 -1
  115. package/dist/{googlePlay-DSuF6jbF.cjs → googlePlay-CiqAS2ma.cjs} +5 -5
  116. package/dist/{googlePlay-DSuF6jbF.cjs.map → googlePlay-CiqAS2ma.cjs.map} +1 -1
  117. package/dist/{index-8OfpOtSI.d.cts → index-4CO0HD27.d.cts} +2 -2
  118. package/dist/{index-8OfpOtSI.d.cts.map → index-4CO0HD27.d.cts.map} +1 -1
  119. package/dist/{index-Dpji6Bxq.d.mts → index-DhUf0B0m.d.mts} +2 -2
  120. package/dist/{index-Dpji6Bxq.d.mts.map → index-DhUf0B0m.d.mts.map} +1 -1
  121. package/dist/index.cjs +81 -82
  122. package/dist/index.cjs.map +1 -1
  123. package/dist/index.mjs +64 -65
  124. package/dist/index.mjs.map +1 -1
  125. package/dist/{local-BwC2v2Y8.mjs → local-B7Zv1NoA.mjs} +2 -2
  126. package/dist/{local-BwC2v2Y8.mjs.map → local-B7Zv1NoA.mjs.map} +1 -1
  127. package/dist/{local-DNhnkugT.cjs → local-OPC9BCZt.cjs} +3 -3
  128. package/dist/{local-DNhnkugT.cjs.map → local-OPC9BCZt.cjs.map} +1 -1
  129. package/dist/{migrate-CGkir5LM.mjs → migrate-BzCHT9qs.mjs} +3 -3
  130. package/dist/{migrate-CGkir5LM.mjs.map → migrate-BzCHT9qs.mjs.map} +1 -1
  131. package/dist/{migrate-CXsMaHbb.cjs → migrate-C-hmbjpG.cjs} +3 -3
  132. package/dist/{migrate-CXsMaHbb.cjs.map → migrate-C-hmbjpG.cjs.map} +1 -1
  133. package/dist/{migrate-Bkz8BGaZ.mjs → migrate-CnbvrVag.mjs} +4 -4
  134. package/dist/{migrate-Bkz8BGaZ.mjs.map → migrate-CnbvrVag.mjs.map} +1 -1
  135. package/dist/{migrate-dbAI2XF8.cjs → migrate-DeQJBexh.cjs} +4 -4
  136. package/dist/{migrate-dbAI2XF8.cjs.map → migrate-DeQJBexh.cjs.map} +1 -1
  137. package/dist/openapi.cjs +3 -3
  138. package/dist/openapi.d.cts +1 -1
  139. package/dist/openapi.d.mts +1 -1
  140. package/dist/openapi.mjs +3 -3
  141. package/dist/{publish-eUcWvSdP.mjs → publish-BISBrrqR.mjs} +2 -2
  142. package/dist/{publish-eUcWvSdP.mjs.map → publish-BISBrrqR.mjs.map} +1 -1
  143. package/dist/{publish-Bbd-2PI2.cjs → publish-DtSIB-hZ.cjs} +2 -2
  144. package/dist/{publish-Bbd-2PI2.cjs.map → publish-DtSIB-hZ.cjs.map} +1 -1
  145. package/dist/{ready-BOfogqzr.mjs → ready-DqsyadOs.mjs} +6 -6
  146. package/dist/{ready-BOfogqzr.mjs.map → ready-DqsyadOs.mjs.map} +1 -1
  147. package/dist/{ready-BFFP838V.cjs → ready-IVGu-q18.cjs} +6 -6
  148. package/dist/{ready-BFFP838V.cjs.map → ready-IVGu-q18.cjs.map} +1 -1
  149. package/dist/reconcile/public.cjs +2 -2
  150. package/dist/reconcile/public.d.cts +1 -2
  151. package/dist/reconcile/public.d.cts.map +1 -1
  152. package/dist/reconcile/public.d.mts +1 -2
  153. package/dist/reconcile/public.d.mts.map +1 -1
  154. package/dist/reconcile/public.mjs +2 -2
  155. package/dist/{resolve-DSilYpzm.mjs → resolve-BT7fkPN5.mjs} +4 -4
  156. package/dist/{resolve-DSilYpzm.mjs.map → resolve-BT7fkPN5.mjs.map} +1 -1
  157. package/dist/{resolve-CyprRcQo.cjs → resolve-C7GKQcE4.cjs} +4 -4
  158. package/dist/{resolve-CyprRcQo.cjs.map → resolve-C7GKQcE4.cjs.map} +1 -1
  159. package/dist/{rollback-DfwsnwGO.cjs → rollback-BEiB-Pje.cjs} +7 -7
  160. package/dist/{rollback-DfwsnwGO.cjs.map → rollback-BEiB-Pje.cjs.map} +1 -1
  161. package/dist/{rollback-C4ri3h7i.mjs → rollback-DbP0KuDw.mjs} +7 -7
  162. package/dist/{rollback-C4ri3h7i.mjs.map → rollback-DbP0KuDw.mjs.map} +1 -1
  163. package/dist/{runtime-ACdfK59n.d.cts → runtime-BFJQNqwd.d.mts} +2 -2
  164. package/dist/{runtime-ACdfK59n.d.cts.map → runtime-BFJQNqwd.d.mts.map} +1 -1
  165. package/dist/{runtime-YyQuekxi.d.mts → runtime-BJO-FFef.d.cts} +2 -2
  166. package/dist/{runtime-YyQuekxi.d.mts.map → runtime-BJO-FFef.d.cts.map} +1 -1
  167. package/dist/{s3-DQXZdmCM.mjs → s3-B4FTQQkV.mjs} +2 -2
  168. package/dist/{s3-DQXZdmCM.mjs.map → s3-B4FTQQkV.mjs.map} +1 -1
  169. package/dist/{s3-CrPoA89T.cjs → s3-DwKLXwUT.cjs} +2 -2
  170. package/dist/{s3-CrPoA89T.cjs.map → s3-DwKLXwUT.cjs.map} +1 -1
  171. package/dist/sandbox/credentials-worker.cjs +2 -2
  172. package/dist/sandbox/credentials-worker.mjs +2 -2
  173. package/dist/sandbox/discover-worker.cjs +1 -1
  174. package/dist/sandbox/discover-worker.mjs +1 -1
  175. package/dist/sandbox/migrate-worker.cjs +1 -1
  176. package/dist/sandbox/migrate-worker.mjs +1 -1
  177. package/dist/{seeds-CFG-f24B.cjs → seeds-DOfxmDRO.cjs} +362 -34
  178. package/dist/seeds-DOfxmDRO.cjs.map +1 -0
  179. package/dist/{seeds-oY0qDqui.mjs → seeds-rG-Evfz9.mjs} +341 -31
  180. package/dist/seeds-rG-Evfz9.mjs.map +1 -0
  181. package/dist/{serverSetup-CQZt0OT6.cjs → serverSetup-CWWVcU6Y.cjs} +6 -6
  182. package/dist/{serverSetup-CQZt0OT6.cjs.map → serverSetup-CWWVcU6Y.cjs.map} +1 -1
  183. package/dist/{serverSetup-D8nngcNL.mjs → serverSetup-xGw1fxuZ.mjs} +6 -6
  184. package/dist/{serverSetup-D8nngcNL.mjs.map → serverSetup-xGw1fxuZ.mjs.map} +1 -1
  185. package/dist/{sniffer-BAmtXzou.cjs → sniffer-C7O9Pna_.cjs} +9 -9
  186. package/dist/{sniffer-BAmtXzou.cjs.map → sniffer-C7O9Pna_.cjs.map} +1 -1
  187. package/dist/{sniffer-Cgx608Tl.mjs → sniffer-DVPgfyHr.mjs} +9 -9
  188. package/dist/{sniffer-Cgx608Tl.mjs.map → sniffer-DVPgfyHr.mjs.map} +1 -1
  189. package/dist/{dns-CfEZHt7r.cjs → snsSubscriptions-CSkteK2J.cjs} +520 -3
  190. package/dist/snsSubscriptions-CSkteK2J.cjs.map +1 -0
  191. package/dist/{dns-BgxvvcQa.mjs → snsSubscriptions-CvBIGGp0.mjs} +431 -6
  192. package/dist/snsSubscriptions-CvBIGGp0.mjs.map +1 -0
  193. package/dist/{sst-C1pxbFEd.mjs → sst-CTqZZl1_.mjs} +3 -4
  194. package/dist/{sst-C1pxbFEd.mjs.map → sst-CTqZZl1_.mjs.map} +1 -1
  195. package/dist/{sst-B-Uz4cvm.cjs → sst-lEkBwzGc.cjs} +4 -5
  196. package/dist/{sst-B-Uz4cvm.cjs.map → sst-lEkBwzGc.cjs.map} +1 -1
  197. package/dist/{stage-BKDdQm65.mjs → stage-2EKpzPQ1.mjs} +6 -6
  198. package/dist/{stage-BKDdQm65.mjs.map → stage-2EKpzPQ1.mjs.map} +1 -1
  199. package/dist/{stage-CJysBXWB.cjs → stage-fRfFtLwj.cjs} +7 -7
  200. package/dist/{stage-CJysBXWB.cjs.map → stage-fRfFtLwj.cjs.map} +1 -1
  201. package/dist/{stages-D4SnG5yl.cjs → stages-B7mCWI_R.cjs} +2 -2
  202. package/dist/{stages-D4SnG5yl.cjs.map → stages-B7mCWI_R.cjs.map} +1 -1
  203. package/dist/{stages-Cb9rqRbN.mjs → stages-DSltTW2d.mjs} +2 -2
  204. package/dist/{stages-Cb9rqRbN.mjs.map → stages-DSltTW2d.mjs.map} +1 -1
  205. package/dist/target/public.cjs +1 -1
  206. package/dist/target/public.d.cts +2 -2
  207. package/dist/target/public.d.mts +2 -2
  208. package/dist/target/public.mjs +1 -1
  209. package/dist/{terminal-CW_dWeTe.mjs → terminal-BAVrDhhN.mjs} +3 -3
  210. package/dist/{terminal-CW_dWeTe.mjs.map → terminal-BAVrDhhN.mjs.map} +1 -1
  211. package/dist/{terminal-DJlqcW_U.cjs → terminal-D1aeTkgv.cjs} +3 -3
  212. package/dist/{terminal-DJlqcW_U.cjs.map → terminal-D1aeTkgv.cjs.map} +1 -1
  213. package/dist/{types-HqVPddRK.d.mts → types-CFU2uvrz.d.cts} +263 -4
  214. package/dist/types-CFU2uvrz.d.cts.map +1 -0
  215. package/dist/{types-B6UXlEkf.d.cts → types-D3BeGucy.d.mts} +262 -5
  216. package/dist/types-D3BeGucy.d.mts.map +1 -0
  217. package/dist/vitest.cjs +1 -1
  218. package/dist/vitest.mjs +1 -1
  219. package/dist/workspace/index.cjs +1 -1
  220. package/dist/workspace/index.d.cts +2 -2
  221. package/dist/workspace/index.d.mts +2 -2
  222. package/dist/workspace/index.mjs +1 -1
  223. package/dist/{workspace-BwqQnool.cjs → workspace-C82GLPnf.cjs} +8 -2
  224. package/dist/workspace-C82GLPnf.cjs.map +1 -0
  225. package/dist/{workspace-D1QbNd55.mjs → workspace-DUnnVjqC.mjs} +8 -2
  226. package/dist/workspace-DUnnVjqC.mjs.map +1 -0
  227. package/package.json +17 -16
  228. package/dist/SubscriberGenerator-C8CPxrCK.cjs.map +0 -1
  229. package/dist/SubscriberGenerator-y3pncae_.mjs.map +0 -1
  230. package/dist/compose-CgBPA44v.mjs.map +0 -1
  231. package/dist/compose-bKLAtHLj.cjs.map +0 -1
  232. package/dist/config-D48erO2j.d.mts.map +0 -1
  233. package/dist/config-DHDtsQrB.d.cts.map +0 -1
  234. package/dist/credentials-B5N5yKk6.mjs.map +0 -1
  235. package/dist/credentials-Zqr3QQYB.cjs.map +0 -1
  236. package/dist/deploy-CI85F6dr.cjs.map +0 -1
  237. package/dist/deploy-Ddy8UBoE.mjs.map +0 -1
  238. package/dist/discover-C5roJuc9.mjs.map +0 -1
  239. package/dist/discover-CSW_BMWa.d.cts +0 -125
  240. package/dist/discover-CSW_BMWa.d.cts.map +0 -1
  241. package/dist/discover-DozUKs8f.cjs.map +0 -1
  242. package/dist/discover-xtT7fgWg.d.mts +0 -125
  243. package/dist/discover-xtT7fgWg.d.mts.map +0 -1
  244. package/dist/dns-BgxvvcQa.mjs.map +0 -1
  245. package/dist/dns-CfEZHt7r.cjs.map +0 -1
  246. package/dist/emit-C1e8qD08.mjs.map +0 -1
  247. package/dist/emit-Dmc1nvdS.cjs.map +0 -1
  248. package/dist/github-CO8W9SDs.cjs.map +0 -1
  249. package/dist/github-CQt3xc3o.mjs.map +0 -1
  250. package/dist/run-BJLIerMM.mjs +0 -133
  251. package/dist/run-BJLIerMM.mjs.map +0 -1
  252. package/dist/run-fVZ-rLnc.cjs +0 -174
  253. package/dist/run-fVZ-rLnc.cjs.map +0 -1
  254. package/dist/sandbox-C4g1eG31.d.mts +0 -104
  255. package/dist/sandbox-C4g1eG31.d.mts.map +0 -1
  256. package/dist/sandbox-CdKgQ3XU.d.cts +0 -104
  257. package/dist/sandbox-CdKgQ3XU.d.cts.map +0 -1
  258. package/dist/seeds-CFG-f24B.cjs.map +0 -1
  259. package/dist/seeds-oY0qDqui.mjs.map +0 -1
  260. package/dist/types-B6UXlEkf.d.cts.map +0 -1
  261. package/dist/types-HqVPddRK.d.mts.map +0 -1
  262. package/dist/workspace-BwqQnool.cjs.map +0 -1
  263. package/dist/workspace-D1QbNd55.mjs.map +0 -1
@@ -1,13 +1,16 @@
1
1
  import { t as GkmError } from "./errors-D8Gwp5kU.mjs";
2
- import { dt as checkStageBackups, ft as SERVER_IPV4_KEY, mt as cnameTarget, pt as SERVER_IPV6_KEY } from "./workspace-D1QbNd55.mjs";
3
- import { An as localRolePassword, O as DnsRecordsUnreadable, f as extractSubdomain, k as createDnsProvider, m as normalizeDnsConfig, mn as postgresRoleSlug, p as findRootDomain, qn as postgresImage, un as quoteIdentifier } from "./seeds-oY0qDqui.mjs";
2
+ import { r as storedCredentials } from "./credentials-DpfnUvIR.mjs";
3
+ import { dt as checkStageBackups, ft as SERVER_IPV4_KEY, mt as cnameTarget, pt as SERVER_IPV6_KEY } from "./workspace-DUnnVjqC.mjs";
4
+ import { O as DnsRecordsUnreadable, Xn as postgresImage, dn as quoteIdentifier, f as extractSubdomain, hn as postgresRoleSlug, jn as localRolePassword, k as createDnsProvider, m as normalizeDnsConfig, p as findRootDomain } from "./seeds-rG-Evfz9.mjs";
5
+ import { t as appKey } from "./derive-B4vDpzgP.mjs";
4
6
  import { createRequire } from "node:module";
5
7
  import { dirname, join } from "node:path";
6
8
  import { existsSync, readFileSync } from "node:fs";
7
9
  import { isIPv4, isIPv6 } from "node:net";
8
- import { createHash } from "node:crypto";
9
- import { DEFAULT_POSTGRES_VERSION, kebabCase } from "@geekmidas/manifest";
10
+ import { createHash, randomBytes } from "node:crypto";
11
+ import { DEFAULT_POSTGRES_VERSION, environmentCase, kebabCase } from "@geekmidas/manifest";
10
12
  import { fileURLToPath } from "node:url";
13
+ import bcrypt from "bcryptjs";
11
14
  import { lookup } from "node:dns/promises";
12
15
  //#region src/providers/dns.ts
13
16
  /** Whether the workspace deploys through the compose target. */
@@ -319,6 +322,226 @@ function backupsRoleStatements(backups) {
319
322
  ];
320
323
  }
321
324
  //#endregion
325
+ //#region src/compose/sitePassword.ts
326
+ /**
327
+ * A deployed stage's sites behind a password — `deploy.sitePassword` — so a
328
+ * staging build is not public while it is being tried.
329
+ *
330
+ * The edge asks for it with HTTP basic auth, before a request reaches the
331
+ * site: the browser prompts, and nothing of the site loads until the stage's
332
+ * login is given. The user is the stage's name; the password is generated
333
+ * once per site and kept in the stage's secrets, where one set by hand wins.
334
+ * Only its bcrypt hash reaches the edge's config.
335
+ *
336
+ * Pure.
337
+ */
338
+ /** `deploy.sitePassword` names something that is not one of the stage's sites. */
339
+ var UnknownPasswordSite = class extends GkmError {
340
+ stage;
341
+ site;
342
+ sites;
343
+ constructor(stage, site, sites) {
344
+ super(`deploy.sitePassword.${stage} names '${site}', which is not a site of this workspace. ${sites.length > 0 ? `Its sites: ${sites.map((s) => `'${s}'`).join(", ")}.` : "It declares no site."} Name one of them, or set ${stage}: true for every site.`);
345
+ this.stage = stage;
346
+ this.site = site;
347
+ this.sites = sites;
348
+ this.name = "UnknownPasswordSite";
349
+ }
350
+ };
351
+ /** A site the stage puts behind a password, with none in the stage's secrets. */
352
+ var SitePasswordMissing = class extends GkmError {
353
+ stage;
354
+ key;
355
+ constructor(stage, key) {
356
+ super(`deploy.sitePassword puts a site of '${stage}' behind a password, and the stage has no ${key} in its secrets. Run gkm compose --stage ${stage} once to generate it, or set one: gkm secrets:set ${key} '…' --stage ${stage}`);
357
+ this.stage = stage;
358
+ this.key = key;
359
+ this.name = "SitePasswordMissing";
360
+ }
361
+ };
362
+ /**
363
+ * `deploy.sitePassword` names a stage that deploys through a target that
364
+ * cannot ask for a login. Refused rather than ignored: ignored, the stage
365
+ * would be public while its config says it is not.
366
+ */
367
+ var SitePasswordNeedsCompose = class extends GkmError {
368
+ stage;
369
+ target;
370
+ constructor(stage, target) {
371
+ super(`deploy.sitePassword puts '${stage}' behind a password, and it deploys through '${target}', which cannot ask for one yet — only compose does. Remove ${stage} from deploy.sitePassword, or deploy it with compose.`);
372
+ this.stage = stage;
373
+ this.target = target;
374
+ this.name = "SitePasswordNeedsCompose";
375
+ }
376
+ };
377
+ /**
378
+ * @throws {SitePasswordNeedsCompose} where `stage` asks for a site password
379
+ * and `target` is not compose
380
+ */
381
+ function assertSitePasswordTarget(workspace, stage, target) {
382
+ if (workspace.deploy?.sitePassword?.[stage] && target !== "compose") throw new SitePasswordNeedsCompose(stage, target);
383
+ }
384
+ /** The stage secret a site's password is kept in: `WEB_SITE_PASSWORD`. */
385
+ function sitePasswordKey(site) {
386
+ return `${environmentCase(site)}_SITE_PASSWORD`;
387
+ }
388
+ /** Every site the manifest declares, by app name. */
389
+ function siteNames(manifest) {
390
+ return Object.values(manifest).filter((declaration) => declaration.kind === "site").map((declaration) => appKey(declaration.id));
391
+ }
392
+ /**
393
+ * The sites `deploy.sitePassword` puts behind a password on `stage`, by app
394
+ * name: every one for `true`, the ones it names otherwise.
395
+ *
396
+ * @throws {UnknownPasswordSite} for a name that is not one of `sites`
397
+ */
398
+ function passwordSites(workspace, stage, sites) {
399
+ const choice = workspace.deploy?.sitePassword?.[stage];
400
+ if (!choice) return [];
401
+ if (choice === true) return [...sites];
402
+ const chosen = /* @__PURE__ */ new Set();
403
+ for (const name of choice) {
404
+ const site = appKey(name);
405
+ if (!sites.includes(site)) throw new UnknownPasswordSite(stage, name, sites);
406
+ chosen.add(site);
407
+ }
408
+ return [...chosen];
409
+ }
410
+ /** A password: 192 random bits, URL-safe, so it is typed or pasted as is. */
411
+ function generateSitePassword() {
412
+ return randomBytes(24).toString("base64url");
413
+ }
414
+ /**
415
+ * The stage's secrets with a generated password for each site, where it has
416
+ * none. Pure, like `withGeneratedSecrets`: the caller keeps the result once
417
+ * the run goes ahead.
418
+ */
419
+ function withSitePasswords(secrets, sites) {
420
+ const missing = sites.map(sitePasswordKey).filter((key) => !secrets.custom?.[key]);
421
+ if (missing.length === 0) return {
422
+ secrets,
423
+ generated: []
424
+ };
425
+ return {
426
+ secrets: {
427
+ ...secrets,
428
+ custom: {
429
+ ...secrets.custom,
430
+ ...Object.fromEntries(missing.map((key) => [key, generateSitePassword()]))
431
+ },
432
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
433
+ },
434
+ generated: missing
435
+ };
436
+ }
437
+ /**
438
+ * The login a site is served behind on `stage`.
439
+ *
440
+ * The hash's salt is derived from the password, so the same password always
441
+ * renders the same edge config: a deploy that changed nothing rewrites
442
+ * nothing, and the proxy is not reloaded for it. A per-hash random salt
443
+ * guards against a precomputed table of common passwords; a generated one is
444
+ * 192 random bits, which no table holds.
445
+ *
446
+ * @throws {SitePasswordMissing} where the stage's secrets hold none
447
+ */
448
+ function siteAuth(stage, site, custom) {
449
+ const key = sitePasswordKey(site);
450
+ const password = custom[key];
451
+ if (!password) throw new SitePasswordMissing(stage, key);
452
+ return {
453
+ user: stage,
454
+ password,
455
+ hash: bcrypt.hashSync(password, saltFor(password)),
456
+ key
457
+ };
458
+ }
459
+ /** bcrypt's own base-64 alphabet, in which a salt is written. */
460
+ const BCRYPT_ALPHABET = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
461
+ /**
462
+ * A bcrypt salt — `$2a$`, which Caddy and Traefik both read, at cost 10 —
463
+ * derived from the password.
464
+ */
465
+ function saltFor(password) {
466
+ const digest = createHash("sha256").update(password).digest();
467
+ let salt = "";
468
+ for (let i = 0; i < 22; i++) salt += BCRYPT_ALPHABET[digest[i] % 64];
469
+ return `$2a$10$${salt}`;
470
+ }
471
+ //#endregion
472
+ //#region src/providers/aws.ts
473
+ /**
474
+ * The AWS account a provider provisions in — the stage's, found the way the
475
+ * SSM and Secrets Manager stores find it.
476
+ *
477
+ * 1. `--profile`, resolved on its own: exported keys left over from another
478
+ * account never win over a profile someone named.
479
+ * 2. `AWS_PROFILE`, else `AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY` — the
480
+ * deploy's own `aws` credential kind (`storedCredentials`).
481
+ * 3. The SDK's default chain: `~/.aws` default profile, SSO, a role. In CI,
482
+ * whatever `aws-actions/configure-aws-credentials` exported.
483
+ *
484
+ * None of them: the provider has no provisioning credentials, and the stage
485
+ * is treated as `external`.
486
+ */
487
+ async function awsProvisioningCredentials(lookup) {
488
+ const region = lookup.env.AWS_REGION ?? lookup.env.AWS_DEFAULT_REGION;
489
+ const where = region ? { region } : {};
490
+ if (lookup.profile) return {
491
+ profile: lookup.profile,
492
+ ...where
493
+ };
494
+ const stored = await storedCredentials({
495
+ env: lookup.env,
496
+ ...lookup.home ? { home: lookup.home } : {}
497
+ }).get({
498
+ kind: "aws",
499
+ stage: lookup.stage
500
+ });
501
+ if (stored) return stored;
502
+ try {
503
+ const { fromNodeProviderChain } = await import("@aws-sdk/credential-providers");
504
+ await fromNodeProviderChain({
505
+ timeout: 1e3,
506
+ maxRetries: 0
507
+ })();
508
+ return {
509
+ chain: true,
510
+ ...where
511
+ };
512
+ } catch {
513
+ return;
514
+ }
515
+ }
516
+ /**
517
+ * An S3-compatible endpoint the environment points the SDK at — the AWS
518
+ * emulator in tests. The SDK reads it itself; it is read here too, because
519
+ * an emulator takes path-style requests, and a key written for one has to
520
+ * say where it is.
521
+ */
522
+ function awsEndpoint(env, service) {
523
+ return env[`AWS_ENDPOINT_URL_${service}`] ?? env.AWS_ENDPOINT_URL;
524
+ }
525
+ /** An SDK client's config for a provisioning credential. */
526
+ async function awsClientConfig(credential, region) {
527
+ if ("profile" in credential) {
528
+ const { fromIni } = await import("@aws-sdk/credential-providers");
529
+ return {
530
+ region,
531
+ credentials: fromIni({ profile: credential.profile })
532
+ };
533
+ }
534
+ if ("accessKeyId" in credential) return {
535
+ region,
536
+ credentials: {
537
+ accessKeyId: credential.accessKeyId,
538
+ secretAccessKey: credential.secretAccessKey,
539
+ ...credential.sessionToken ? { sessionToken: credential.sessionToken } : {}
540
+ }
541
+ };
542
+ return { region };
543
+ }
544
+ //#endregion
322
545
  //#region src/compose/dns.ts
323
546
  /**
324
547
  * A compose stage's DNS: the records its public hosts need, and the check that
@@ -1059,6 +1282,208 @@ async function stageDns(input) {
1059
1282
  };
1060
1283
  }
1061
1284
  //#endregion
1062
- export { deploysWithCompose as S, backupExpiries as _, serverAddressHint as a, runTime as b, stageDnsDomains as c, BACKUPS_URL_KEY as d, RUNNER_PATH as f, backupDatabases as g, stackBackups as h, requiredServerAddress as i, systemLookup as l, backupsService as m, dnsCredentials as n, stackHosts as o, backupsRoleStatements as p, isLocalHost as r, stageDns as s, HostNotPointingAtServer as t, BACKUPS_SERVICE as u, backupFile as v, stageBackups as x, backupsPrefix as y };
1285
+ //#region src/deploy/snsSubscriptions.ts
1286
+ /** The type every recorded subscription has in the stage's state. */
1287
+ const SUBSCRIPTION_TYPE = "sns-subscription";
1288
+ /** The state key a subscriber's SNS subscription is recorded under. */
1289
+ const subscriptionKey = (worker, name) => `${SUBSCRIPTION_TYPE}:${worker}/${name}`;
1290
+ /** What a recorded subscription is written to the stage's state as. */
1291
+ function subscriptionResource(subscription, arn) {
1292
+ const { name, ...data } = subscription;
1293
+ return {
1294
+ key: subscriptionKey(subscription.worker, name),
1295
+ type: SUBSCRIPTION_TYPE,
1296
+ id: arn,
1297
+ status: "ready",
1298
+ data: {
1299
+ ...data,
1300
+ ...data.events ? { events: [...data.events] } : {}
1301
+ }
1302
+ };
1303
+ }
1304
+ /** The subscription a record holds, as an endpoint to reconcile. */
1305
+ function specOf(record) {
1306
+ const events = record.data?.events;
1307
+ return {
1308
+ name: record.key.split("/").pop(),
1309
+ endpoint: String(record.data?.endpoint),
1310
+ ...record.data?.deadLetterQueueArn ? { deadLetterQueueArn: String(record.data.deadLetterQueueArn) } : {},
1311
+ ...Array.isArray(events) ? { events: events.map(String) } : {}
1312
+ };
1313
+ }
1314
+ /**
1315
+ * The subscriptions the deploy recorded, by worker and export — what each
1316
+ * worker is handed as `GKM_SNS_SUBSCRIPTIONS`.
1317
+ */
1318
+ function recordedPushSubscriptions(resources) {
1319
+ const byWorker = {};
1320
+ for (const record of Object.values(resources ?? {})) {
1321
+ if (record.type !== "sns-subscription" || !record.id) continue;
1322
+ const [worker, name] = record.key.slice(`${SUBSCRIPTION_TYPE}:`.length).split("/");
1323
+ if (!worker || !name) continue;
1324
+ byWorker[worker] = {
1325
+ ...byWorker[worker],
1326
+ [name]: record.id
1327
+ };
1328
+ }
1329
+ return byWorker;
1330
+ }
1331
+ /** A topic connection string the deploy cannot sign with. */
1332
+ var TopicSubscriptionUnsigned = class extends GkmError {
1333
+ connectionKey;
1334
+ constructor(connectionKey) {
1335
+ super(`'${connectionKey}' carries no keys, and the deploy found no AWS credentials of its own to subscribe the worker's routes with. Put accessKeyId and secretAccessKey in it — keys allowed sns:Subscribe, sns:ListSubscriptionsByTopic, sns:GetSubscriptionAttributes, sns:SetSubscriptionAttributes and sns:Unsubscribe on the topic — or sign in with \`gkm login\`.`);
1336
+ this.connectionKey = connectionKey;
1337
+ this.name = "TopicSubscriptionUnsigned";
1338
+ }
1339
+ };
1340
+ /**
1341
+ * A connection to the topic a stage's connection string names, signed with
1342
+ * its own keys — or, carrying none, the deploy's.
1343
+ *
1344
+ * The emulator the environment points the SDK at stands in for SNS, as it
1345
+ * does for every provider: a string with no `endpoint` is SNS itself.
1346
+ *
1347
+ * @throws {TopicSubscriptionUnsigned} with no keys from either
1348
+ */
1349
+ async function topicConnection(input) {
1350
+ const { SNSConnection, snsUrl } = await import("@geekmidas/events/sns");
1351
+ const { topicArn, region, endpoint } = snsUrl.parse(input.connectionString);
1352
+ const params = new URL(input.connectionString).searchParams;
1353
+ const accessKeyId = params.get("accessKeyId");
1354
+ const secretAccessKey = params.get("secretAccessKey");
1355
+ const where = region ?? topicArn.split(":")[3];
1356
+ let credentials;
1357
+ if (accessKeyId && secretAccessKey) {
1358
+ const sessionToken = params.get("sessionToken");
1359
+ credentials = {
1360
+ accessKeyId,
1361
+ secretAccessKey,
1362
+ ...sessionToken ? { sessionToken } : {}
1363
+ };
1364
+ } else {
1365
+ const provisioning = await awsProvisioningCredentials({
1366
+ stage: input.stage,
1367
+ env: input.env,
1368
+ ...input.home ? { home: input.home } : {}
1369
+ });
1370
+ if (!provisioning) throw new TopicSubscriptionUnsigned(input.connectionKey);
1371
+ credentials = (await awsClientConfig(provisioning, where ?? "us-east-1")).credentials;
1372
+ }
1373
+ const override = endpoint ?? awsEndpoint(input.env, "SNS");
1374
+ return new SNSConnection({
1375
+ topicArn,
1376
+ ...where ? { region: where } : {},
1377
+ ...override ? { endpoint: override } : {},
1378
+ ...credentials ? { credentials } : {}
1379
+ });
1380
+ }
1381
+ /** A subscription still waiting to be confirmed once its worker is up. */
1382
+ var PushSubscriptionsUnconfirmed = class extends GkmError {
1383
+ endpoints;
1384
+ constructor(endpoints) {
1385
+ super(`SNS still waits for ${endpoints.join(", ")} to confirm ${endpoints.length === 1 ? "its subscription" : "their subscriptions"}, so nothing is pushed there yet. Check the worker's logs for the confirmation it refused, and that its host answers from the internet; the next deploy sends the confirmation again.`);
1386
+ this.endpoints = endpoints;
1387
+ this.name = "PushSubscriptionsUnconfirmed";
1388
+ }
1389
+ };
1390
+ /**
1391
+ * Once the workers are up: every subscription recorded as pending is
1392
+ * subscribed again — SNS resends its confirmation to a worker now there to
1393
+ * answer it — and waited on until confirmed.
1394
+ *
1395
+ * The first deploy needs it: the subscription is made before the worker
1396
+ * starts, so SNS's first confirmation finds nobody.
1397
+ *
1398
+ * A bucket's subscriptions are reached with the deploy's provisioning
1399
+ * credentials; a hand-set topic's with the connection string they were made
1400
+ * with, read from the stage's secrets.
1401
+ *
1402
+ * @returns what is still pending when the wait ran out — none, normally.
1403
+ */
1404
+ async function confirmPendingSubscriptions(input) {
1405
+ const env = input.env ?? process.env;
1406
+ const records = Object.values(input.resources ?? {}).filter((r) => r.type === "sns-subscription" && r.id);
1407
+ if (!records.some((r) => r.data?.pending === true)) return [];
1408
+ const { SNSConnection, reconcileHttpSubscriptions } = await import("@geekmidas/events/sns");
1409
+ const { GetSubscriptionAttributesCommand } = await import("@aws-sdk/client-sns");
1410
+ const endpoint = awsEndpoint(env, "SNS");
1411
+ let provisioning = null;
1412
+ const groups = /* @__PURE__ */ new Map();
1413
+ for (const record of records) {
1414
+ const host = new URL(String(record.data?.endpoint)).host;
1415
+ const group = `${record.data?.topicArn}|${host}`;
1416
+ groups.set(group, [...groups.get(group) ?? [], record]);
1417
+ }
1418
+ const left = [];
1419
+ for (const [group, members] of groups) {
1420
+ const pending = members.filter((r) => r.data?.pending === true);
1421
+ if (pending.length === 0) continue;
1422
+ const [topicArn, host] = group.split("|");
1423
+ const unreachable = () => left.push(...pending.map((r) => String(r.data?.endpoint)));
1424
+ let connection;
1425
+ const connectionKey = members[0].data?.connectionKey;
1426
+ if (typeof connectionKey === "string") {
1427
+ const connectionString = input.secrets?.[connectionKey];
1428
+ if (!connectionString?.startsWith("sns:")) {
1429
+ unreachable();
1430
+ continue;
1431
+ }
1432
+ connection = await topicConnection({
1433
+ connectionKey,
1434
+ connectionString,
1435
+ stage: input.stage,
1436
+ env,
1437
+ ...input.home ? { home: input.home } : {}
1438
+ });
1439
+ } else {
1440
+ if (provisioning === null) provisioning = await awsProvisioningCredentials({
1441
+ stage: input.stage,
1442
+ env,
1443
+ ...input.home ? { home: input.home } : {}
1444
+ });
1445
+ if (!provisioning) {
1446
+ unreachable();
1447
+ continue;
1448
+ }
1449
+ const region = topicArn.split(":")[3];
1450
+ const { credentials } = await awsClientConfig(provisioning, region);
1451
+ connection = new SNSConnection({
1452
+ topicArn,
1453
+ region,
1454
+ ...endpoint ? { endpoint } : {},
1455
+ ...credentials ? { credentials } : {}
1456
+ });
1457
+ }
1458
+ await reconcileHttpSubscriptions(connection, {
1459
+ endpoints: members.map(specOf),
1460
+ ownedHost: host
1461
+ });
1462
+ const deadline = Date.now() + (input.timeoutMs ?? 6e4);
1463
+ for (const record of pending) {
1464
+ let confirmed = false;
1465
+ while (!confirmed) {
1466
+ const { Attributes = {} } = await connection.snsClient.send(new GetSubscriptionAttributesCommand({ SubscriptionArn: record.id }));
1467
+ confirmed = Attributes.PendingConfirmation !== "true";
1468
+ if (confirmed || Date.now() > deadline) break;
1469
+ await new Promise((resolve) => setTimeout(resolve, 1e3));
1470
+ }
1471
+ if (confirmed) {
1472
+ input.log?.(` ✓ ${record.data?.endpoint} confirmed its subscription`);
1473
+ await input.record?.({
1474
+ ...record,
1475
+ data: {
1476
+ ...record.data,
1477
+ pending: false
1478
+ }
1479
+ });
1480
+ } else left.push(String(record.data?.endpoint));
1481
+ }
1482
+ await connection.close();
1483
+ }
1484
+ return left;
1485
+ }
1486
+ //#endregion
1487
+ export { stackBackups as A, siteNames as C, RUNNER_PATH as D, BACKUPS_URL_KEY as E, runTime as F, stageBackups as I, deploysWithCompose as L, backupExpiries as M, backupFile as N, backupsRoleStatements as O, backupsPrefix as P, siteAuth as S, BACKUPS_SERVICE as T, awsClientConfig as _, subscriptionKey as a, assertSitePasswordTarget as b, HostNotPointingAtServer as c, requiredServerAddress as d, serverAddressHint as f, systemLookup as g, stageDnsDomains as h, recordedPushSubscriptions as i, backupDatabases as j, backupsService as k, dnsCredentials as l, stageDns as m, SUBSCRIPTION_TYPE as n, subscriptionResource as o, stackHosts as p, confirmPendingSubscriptions as r, topicConnection as s, PushSubscriptionsUnconfirmed as t, isLocalHost as u, awsEndpoint as v, withSitePasswords as w, passwordSites as x, awsProvisioningCredentials as y };
1063
1488
 
1064
- //# sourceMappingURL=dns-BgxvvcQa.mjs.map
1489
+ //# sourceMappingURL=snsSubscriptions-CvBIGGp0.mjs.map