watchbell 1.2.3 → 1.2.4

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 (643) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/build-manifest.json +3 -3
  4. package/server/.next/prerender-manifest.json +3 -3
  5. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +12 -12
  6. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +57 -56
  7. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  9. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +11 -11
  10. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +57 -56
  11. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +10 -10
  14. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +57 -56
  15. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  17. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +13 -13
  18. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +57 -56
  19. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +11 -11
  22. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +57 -56
  23. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +20 -20
  26. package/server/.next/server/app/(console)/(private)/ai/models/page.js +57 -56
  27. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +10 -10
  30. package/server/.next/server/app/(console)/(private)/ai/page.js +57 -56
  31. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +13 -13
  34. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +57 -56
  35. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  37. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +16 -16
  38. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +57 -56
  39. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +11 -11
  42. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +57 -56
  43. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +11 -11
  46. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +57 -56
  47. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  49. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +10 -10
  50. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +57 -56
  51. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  53. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +11 -11
  54. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +57 -56
  55. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  57. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +35 -25
  58. package/server/.next/server/app/(console)/alerts/page.js +57 -56
  59. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  60. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  61. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +27 -27
  62. package/server/.next/server/app/(console)/apps/[id]/page.js +57 -56
  63. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  64. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  65. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +13 -13
  66. package/server/.next/server/app/(console)/apps/page.js +57 -56
  67. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  68. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  69. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +13 -13
  70. package/server/.next/server/app/(console)/backups/page.js +57 -56
  71. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  72. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  73. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +10 -10
  74. package/server/.next/server/app/(console)/catalog/page.js +57 -56
  75. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  76. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  77. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +21 -21
  78. package/server/.next/server/app/(console)/connections/page.js +57 -56
  79. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  80. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  81. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +10 -10
  82. package/server/.next/server/app/(console)/d1/page.js +57 -56
  83. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  84. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  85. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +16 -16
  86. package/server/.next/server/app/(console)/deployments/page.js +57 -56
  87. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  88. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  89. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +17 -17
  90. package/server/.next/server/app/(console)/dns/page.js +57 -56
  91. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  92. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  93. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +12 -12
  94. package/server/.next/server/app/(console)/domains/page.js +57 -56
  95. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  96. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  97. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +10 -10
  98. package/server/.next/server/app/(console)/events/page.js +57 -56
  99. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  100. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  101. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +17 -17
  102. package/server/.next/server/app/(console)/firebase/page.js +57 -56
  103. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  104. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  105. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +11 -11
  106. package/server/.next/server/app/(console)/logs/page.js +57 -56
  107. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  108. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  109. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +11 -11
  110. package/server/.next/server/app/(console)/manage/sections/page.js +57 -56
  111. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  112. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  113. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +21 -21
  114. package/server/.next/server/app/(console)/neon/page.js +57 -56
  115. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  116. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  117. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +18 -18
  118. package/server/.next/server/app/(console)/overview/page.js +57 -56
  119. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  120. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  121. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +11 -11
  122. package/server/.next/server/app/(console)/repos/[id]/page.js +57 -56
  123. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  124. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  125. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +10 -10
  126. package/server/.next/server/app/(console)/repos/page.js +57 -56
  127. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  128. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  129. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +20 -20
  130. package/server/.next/server/app/(console)/settings/page.js +57 -56
  131. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  132. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  133. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +17 -17
  134. package/server/.next/server/app/(console)/sql/page.js +57 -56
  135. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  136. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  137. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +10 -10
  138. package/server/.next/server/app/(console)/status/page.js +57 -56
  139. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  140. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  141. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +29 -29
  142. package/server/.next/server/app/(console)/supabase/page.js +57 -56
  143. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  144. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  145. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +10 -10
  146. package/server/.next/server/app/(console)/topology/page.js +57 -56
  147. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  148. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  149. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +10 -10
  150. package/server/.next/server/app/(console)/turso/page.js +57 -56
  151. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  152. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  153. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +10 -10
  154. package/server/.next/server/app/(console)/upstash/page.js +57 -56
  155. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  156. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  157. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +24 -24
  158. package/server/.next/server/app/(console)/uptime/page.js +57 -56
  159. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  160. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  161. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +15 -15
  162. package/server/.next/server/app/(console)/welcome/page.js +57 -56
  163. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  164. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  165. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  166. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  167. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  168. package/server/.next/server/app/_global-error.html +1 -1
  169. package/server/.next/server/app/_global-error.rsc +3 -3
  170. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  171. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  172. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  173. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  174. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  175. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  176. package/server/.next/server/app/_not-found.html +1 -1
  177. package/server/.next/server/app/_not-found.rsc +4 -4
  178. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  179. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  180. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  181. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  182. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  183. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  184. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  185. package/server/.next/server/app/api/collect/route.js +38 -37
  186. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  187. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  188. package/server/.next/server/app/api/daily/route.js +38 -37
  189. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  190. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  191. package/server/.next/server/app/api/telegram/webhook/route.js +63 -62
  192. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  193. package/server/.next/server/app/api/v1/advice/route.js +2 -2
  194. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  195. package/server/.next/server/app/api/v1/ai/questions/route.js +2 -2
  196. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  197. package/server/.next/server/app/api/v1/mcp/route.js +2 -2
  198. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  199. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +2 -2
  200. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  201. package/server/.next/server/app/api/v1/status/route.js +2 -2
  202. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  203. package/server/.next/server/app/api/watchdog/route.js +2 -2
  204. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  205. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  206. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  207. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  208. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  209. package/server/.next/server/app/mfa/page.js +33 -21
  210. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  211. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  212. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  213. package/server/.next/server/app/mfa/setup/page.js +33 -21
  214. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  215. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  216. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  217. package/server/.next/server/app/page.js.nft.json +1 -1
  218. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  219. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  220. package/server/.next/server/app/s/[slug]/page.js +8 -7
  221. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  222. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  223. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  224. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  225. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  226. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  227. package/server/.next/server/app/signin/page.js +35 -21
  228. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  229. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  230. package/server/.next/server/chunks/{[externals]__0y_x27mdj85p4._.js → [externals]__0ia-wyj5qrosx._.js} +1 -1
  231. package/server/.next/server/chunks/{[externals]__1fzfzd0ia0sk6._.js → [externals]__0igl_rsv6z3fr._.js} +1 -1
  232. package/server/.next/server/chunks/{[externals]__1qqyrxnupegg3._.js → [externals]__0mh8e6gkgfswq._.js} +1 -1
  233. package/server/.next/server/chunks/{[root-of-the-server]__0hblpf7wqke-j._.js → [root-of-the-server]__0-ftc1hhcjcl2._.js} +2 -2
  234. package/server/.next/server/chunks/{[root-of-the-server]__0l9ja3579qrju._.js → [root-of-the-server]__0-st5xltl53h9._.js} +2 -2
  235. package/server/.next/server/chunks/{[root-of-the-server]__03i6yscmtbhhg._.js → [root-of-the-server]__0-u9oeob2sa7f._.js} +2 -2
  236. package/server/.next/server/chunks/{[root-of-the-server]__0bmyll20mg_gf._.js → [root-of-the-server]__0070gc9ml0mf7._.js} +1 -1
  237. package/server/.next/server/chunks/{[root-of-the-server]__07bw6o0jc31yr._.js → [root-of-the-server]__0185dne3slx7e._.js} +2 -2
  238. package/server/.next/server/chunks/{[root-of-the-server]__0v-gc-c_e8pwl._.js → [root-of-the-server]__040ix5fqb_zb-._.js} +2 -2
  239. package/server/.next/server/chunks/{[root-of-the-server]__1zvoez8iapsem._.js → [root-of-the-server]__05jzua9637vlo._.js} +2 -2
  240. package/server/.next/server/chunks/{[root-of-the-server]__1_or7dycvkseg._.js → [root-of-the-server]__06uaa_2zbg57p._.js} +1 -1
  241. package/server/.next/server/chunks/{[root-of-the-server]__1y2qf8ltxhk0o._.js → [root-of-the-server]__07byme21uj5ln._.js} +2 -2
  242. package/server/.next/server/chunks/{[root-of-the-server]__1lerees-l5-6c._.js → [root-of-the-server]__07g16s_wi2sai._.js} +2 -2
  243. package/server/.next/server/chunks/{[root-of-the-server]__1s4bwjevs4hd-._.js → [root-of-the-server]__08-puk3_gawjd._.js} +2 -2
  244. package/server/.next/server/chunks/{[root-of-the-server]__0gox66sv0bx47._.js → [root-of-the-server]__0_e2eoq7w3ff_._.js} +2 -2
  245. package/server/.next/server/chunks/{[root-of-the-server]__0zni_2pv2fdgb._.js → [root-of-the-server]__0cc32xnniktg9._.js} +2 -2
  246. package/server/.next/server/chunks/{[root-of-the-server]__213bsllf-9ztc._.js → [root-of-the-server]__0cz3da2wx3_wd._.js} +2 -2
  247. package/server/.next/server/chunks/{[root-of-the-server]__0noc6l63d3l9w._.js → [root-of-the-server]__0dvuy3ibsyiik._.js} +2 -2
  248. package/server/.next/server/chunks/{[root-of-the-server]__02n6y6aa6qp1b._.js → [root-of-the-server]__0e2utnqdim70d._.js} +2 -2
  249. package/server/.next/server/chunks/{[root-of-the-server]__0hnljrh9qi9t-._.js → [root-of-the-server]__0exicuoq6gmph._.js} +2 -2
  250. package/server/.next/server/chunks/{[root-of-the-server]__0nqbue6i0l3qs._.js → [root-of-the-server]__0ezd1s2862iob._.js} +2 -2
  251. package/server/.next/server/chunks/[root-of-the-server]__0gmn5s40au84-._.js +3 -0
  252. package/server/.next/server/chunks/[root-of-the-server]__0i75m0es1m3hf._.js +3 -0
  253. package/server/.next/server/chunks/{[root-of-the-server]__0btybbrsr4abf._.js → [root-of-the-server]__0ikiyg3u02ofv._.js} +1 -1
  254. package/server/.next/server/chunks/{[root-of-the-server]__16waq6rapvngp._.js → [root-of-the-server]__0ms1uw85c5wg2._.js} +2 -2
  255. package/server/.next/server/chunks/[root-of-the-server]__0o0z59_jylzvy._.js +3 -0
  256. package/server/.next/server/chunks/{[root-of-the-server]__07mzeijv31avl._.js → [root-of-the-server]__0oqltt9cni6m0._.js} +2 -2
  257. package/server/.next/server/chunks/{[root-of-the-server]__1lj1f2w2-w8nw._.js → [root-of-the-server]__0quiawzx_nww0._.js} +2 -2
  258. package/server/.next/server/chunks/{[root-of-the-server]__0wp6j3irilu76._.js → [root-of-the-server]__0r88w3qhrtzz_._.js} +1 -1
  259. package/server/.next/server/chunks/{[root-of-the-server]__0kp0yx909wtab._.js → [root-of-the-server]__0rb1-3538-pq9._.js} +1 -1
  260. package/server/.next/server/chunks/{[root-of-the-server]__0c-33noc8yn1-._.js → [root-of-the-server]__0sabwm3w1rm0q._.js} +1 -1
  261. package/server/.next/server/chunks/{[root-of-the-server]__0nrg8zzqizk69._.js → [root-of-the-server]__0tykhzqhwdx_k._.js} +2 -2
  262. package/server/.next/server/chunks/{[root-of-the-server]__0yuyew8m9dc6-._.js → [root-of-the-server]__0w_og0zl6hqzj._.js} +1 -1
  263. package/server/.next/server/chunks/[root-of-the-server]__0wdxw44t9l9o_._.js +3 -0
  264. package/server/.next/server/chunks/{[root-of-the-server]__1xl6_spngp6k3._.js → [root-of-the-server]__0x47i6wm-cd1z._.js} +2 -2
  265. package/server/.next/server/chunks/{[root-of-the-server]__0g1cifa7hd790._.js → [root-of-the-server]__0x6qqr79pq_j9._.js} +1 -1
  266. package/server/.next/server/chunks/{[root-of-the-server]__0hlyn_aj72sn5._.js → [root-of-the-server]__0xqgsjnebebv8._.js} +2 -2
  267. package/server/.next/server/chunks/{[root-of-the-server]__0r1men25anfgb._.js → [root-of-the-server]__0y99cuuxm0xs3._.js} +1 -1
  268. package/server/.next/server/chunks/[root-of-the-server]__0zflnh-2nol66._.js +3 -0
  269. package/server/.next/server/chunks/{[root-of-the-server]__0l6_iao04u72h._.js → [root-of-the-server]__0znmcklxfccvk._.js} +2 -2
  270. package/server/.next/server/chunks/[root-of-the-server]__10dp33pb5e0ml._.js +3 -0
  271. package/server/.next/server/chunks/[root-of-the-server]__12xl6ax-q8s93._.js +3 -0
  272. package/server/.next/server/chunks/{[root-of-the-server]__090in165mp6av._.js → [root-of-the-server]__14sac3h4sfhh7._.js} +1 -1
  273. package/server/.next/server/chunks/{[root-of-the-server]__0oy0hcm48kl-q._.js → [root-of-the-server]__16md_196q9s8a._.js} +2 -2
  274. package/server/.next/server/chunks/[root-of-the-server]__17xbg7cngebwp._.js +3 -0
  275. package/server/.next/server/chunks/{[root-of-the-server]__0hrtz5c_46jkw._.js → [root-of-the-server]__186-sa38csgot._.js} +1 -1
  276. package/server/.next/server/chunks/[root-of-the-server]__18lfi0w0e_h0k._.js +3 -0
  277. package/server/.next/server/chunks/{[root-of-the-server]__0ku7nva3gxa9p._.js → [root-of-the-server]__1a7_3nq1jjab-._.js} +2 -2
  278. package/server/.next/server/chunks/{[root-of-the-server]__16lfk1wg0ejaa._.js → [root-of-the-server]__1bce11artflky._.js} +2 -2
  279. package/server/.next/server/chunks/[root-of-the-server]__1c1wqmzm65xo8._.js +3 -0
  280. package/server/.next/server/chunks/{[root-of-the-server]__1adw_bv2u89kc._.js → [root-of-the-server]__1g4iy2tasmn0f._.js} +1 -1
  281. package/server/.next/server/chunks/[root-of-the-server]__1gry2nrq5xhxl._.js +3 -0
  282. package/server/.next/server/chunks/{[root-of-the-server]__0d99wclm2suox._.js → [root-of-the-server]__1gt_-h9n48pwi._.js} +2 -2
  283. package/server/.next/server/chunks/{[root-of-the-server]__0s5b-tdq7rndj._.js → [root-of-the-server]__1hl9k6e1o7xh2._.js} +2 -2
  284. package/server/.next/server/chunks/[root-of-the-server]__1kk_s-q90445m._.js +3 -0
  285. package/server/.next/server/chunks/{[root-of-the-server]__02ldm_7l9zld8._.js → [root-of-the-server]__1lfsf7un8kdbr._.js} +1 -1
  286. package/server/.next/server/chunks/[root-of-the-server]__1nusfevn1z4nm._.js +3 -0
  287. package/server/.next/server/chunks/{[root-of-the-server]__0x487cn6dsn12._.js → [root-of-the-server]__1ny8nr52qvr4i._.js} +2 -2
  288. package/server/.next/server/chunks/{[root-of-the-server]__125fkw52kl2ty._.js → [root-of-the-server]__1o9v_499yd5k8._.js} +2 -2
  289. package/server/.next/server/chunks/[root-of-the-server]__1oc55uo0ax787._.js +3 -0
  290. package/server/.next/server/chunks/{[root-of-the-server]__09odxyho_9vk_._.js → [root-of-the-server]__1qdbn4gdg7ndr._.js} +2 -2
  291. package/server/.next/server/chunks/[root-of-the-server]__1uqxnb7qfqcms._.js +3 -0
  292. package/server/.next/server/chunks/{[root-of-the-server]__1wpdlr4uh1un4._.js → [root-of-the-server]__1vqs8o9bv1wbk._.js} +2 -2
  293. package/server/.next/server/chunks/[root-of-the-server]__1vxtt1favjdfr._.js +3 -0
  294. package/server/.next/server/chunks/[root-of-the-server]__1xwgj26z5f7ih._.js +3 -0
  295. package/server/.next/server/chunks/{[root-of-the-server]__1ooxluowhatjt._.js → [root-of-the-server]__20ng0hgzxagf_._.js} +2 -2
  296. package/server/.next/server/chunks/{[root-of-the-server]__0032rbj2s87zo._.js → [root-of-the-server]__20r_62r36t28o._.js} +2 -2
  297. package/server/.next/server/chunks/[root-of-the-server]__20sv90-2ei08l._.js +3 -0
  298. package/server/.next/server/chunks/_01x32f51v50y7._.js +3 -0
  299. package/server/.next/server/chunks/{_1-pw7jw52sbti._.js → _06gv0srpbf_lk._.js} +1 -1
  300. package/server/.next/server/chunks/_0ffsv993spriq._.js +3 -0
  301. package/server/.next/server/chunks/_0hsj1tx2ynla-._.js +3 -0
  302. package/server/.next/server/chunks/{_1-pcsy2hkg0il._.js → _0ljdeybzgdyai._.js} +1 -1
  303. package/server/.next/server/chunks/_0ls7sornjrg95._.js +5 -0
  304. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  305. package/server/.next/server/chunks/{_0duxuj4kmjibl._.js → _0nt4ifc48vl34._.js} +24 -22
  306. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +3 -3
  307. package/server/.next/server/chunks/{_113ebzq_9i756._.js → _0rkn5gstaj2d0._.js} +24 -22
  308. package/server/.next/server/chunks/_0zj10_al6r59j._.js +1 -1
  309. package/server/.next/server/chunks/_1476vtrt9101m._.js +1 -1
  310. package/server/.next/server/chunks/{_1ihndlef8r00f._.js → _1_4jb754aeifp._.js} +24 -22
  311. package/server/.next/server/chunks/{_0q9a3ettj_h2s._.js → _1_9n8x5ncta29._.js} +2 -2
  312. package/server/.next/server/chunks/{_0ry4553j-m5fp._.js → _1cq1vvbp6pglr._.js} +3 -3
  313. package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +1 -1
  314. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +3 -3
  315. package/server/.next/server/chunks/{_1g8r-7wcf8sy3._.js → _1myv9csc_in08._.js} +3 -3
  316. package/server/.next/server/chunks/{_16urxazbgm48y._.js → _1n-fm2bdo9t2m._.js} +3 -3
  317. package/server/.next/server/chunks/{_1mwb214-ablfo._.js → _1qsryafbujfwn._.js} +24 -22
  318. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  319. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  320. package/server/.next/server/chunks/{src_00ixvrjrk_2h4._.js → src_0_l3dzp06o4x5._.js} +2 -2
  321. package/server/.next/server/chunks/{src_0tdn7mun5rvc6._.js → src_0m6xxpw2u-xv_._.js} +2 -2
  322. package/server/.next/server/chunks/{src_20ilndq84j3b3._.js → src_15fupbs9-n8q9._.js} +2 -2
  323. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  324. package/server/.next/server/chunks/src_1p24c-nz35cov._.js +3 -0
  325. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  326. package/server/.next/server/chunks/src_lib_001zhbfd1zeuk._.js +3 -0
  327. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +3 -0
  328. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  329. package/server/.next/server/chunks/{src_lib_206j7lyff31-g._.js → src_lib_0k_aposzvy1c8._.js} +2 -2
  330. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +20 -18
  331. package/server/.next/server/chunks/{src_lib_1-u7dbsavbtb0._.js → src_lib_0vjapfdxkooq5._.js} +2 -2
  332. package/server/.next/server/chunks/{src_lib_0krdzz8eu9xh3._.js → src_lib_0yn0bj14ih0id._.js} +2 -2
  333. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +20 -18
  334. package/server/.next/server/chunks/{src_lib_0ayxuk4ftzf2f._.js → src_lib_1qbgm0zu8q1rr._.js} +2 -2
  335. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +20 -18
  336. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +3 -0
  337. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  338. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  339. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  340. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  341. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  342. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  343. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  344. package/server/.next/server/chunks/ssr/{[externals]__078uqm46tk5mo._.js → [externals]__0irbihjwcc9is._.js} +1 -1
  345. package/server/.next/server/chunks/ssr/{[externals]__1_ttbfsdm3x1-._.js → [externals]__0vlxry7jq5j1j._.js} +1 -1
  346. package/server/.next/server/chunks/ssr/{[externals]__1devsqn7ez77y._.js → [externals]__0yyslm1ka5px3._.js} +1 -1
  347. package/server/.next/server/chunks/ssr/{[externals]__00tbi838eotwu._.js → [externals]__1mol6ksxmtkv6._.js} +1 -1
  348. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  349. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1a7x--bos5pv8._.js → [root-of-the-server]__056nm27ib-x1m._.js} +2 -2
  350. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0xpkzaqer75i-._.js → [root-of-the-server]__06b1pw15-_hv5._.js} +2 -2
  351. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  352. package/server/.next/server/chunks/ssr/{[root-of-the-server]__107gjehjdhw8p._.js → [root-of-the-server]__0eaqsql69fhf8._.js} +2 -2
  353. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ek1-s5z9ggq2._.js +3 -0
  354. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0jn0o2e32mwcp._.js → [root-of-the-server]__0hzlz_t5eect2._.js} +2 -2
  355. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  356. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  357. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  358. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ronqmm1xpldk._.js → [root-of-the-server]__0l_cl2qk_xmmr._.js} +2 -2
  359. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1adcmllk9wt5l._.js → [root-of-the-server]__0n-sc7pzu7fpz._.js} +1 -1
  360. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nxyo70ahj7tk._.js +3 -0
  361. package/server/.next/server/chunks/ssr/[root-of-the-server]__0oon1p2_04l7s._.js +3 -0
  362. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  363. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  364. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0an0wsglj2bhh._.js → [root-of-the-server]__0sj92w6mg92ds._.js} +2 -2
  365. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1uojs0x42k86p._.js → [root-of-the-server]__0wi2grctadbk8._.js} +1 -1
  366. package/server/.next/server/chunks/ssr/{[root-of-the-server]__19l_r5vy3kxo1._.js → [root-of-the-server]__0xjg51t1__v-s._.js} +1 -1
  367. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0d2ry7-u1cv8c._.js → [root-of-the-server]__0z_1k5876-_wx._.js} +2 -2
  368. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mumjk3h0om80._.js → [root-of-the-server]__1-d88ogkwql_b._.js} +2 -2
  369. package/server/.next/server/chunks/ssr/{[root-of-the-server]__191t_hhtr-k27._.js → [root-of-the-server]__110158s15r7mi._.js} +2 -2
  370. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0qwds8dkahd2_._.js → [root-of-the-server]__193nmh09rrpbx._.js} +1 -1
  371. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  372. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0x7w-5h8or6qr._.js → [root-of-the-server]__1_h_ya1h8efdj._.js} +2 -2
  373. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0paolyy3xkow9._.js → [root-of-the-server]__1a0b_dbx4uans._.js} +2 -2
  374. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ctkj-25wt37o._.js +4 -0
  375. package/server/.next/server/chunks/ssr/[root-of-the-server]__1e0l6kek0ufui._.js +3 -0
  376. package/server/.next/server/chunks/ssr/[root-of-the-server]__1hek7tjixcjch._.js +3 -0
  377. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0i0_6dnnf0hov._.js → [root-of-the-server]__1ijizmc3ga_6o._.js} +2 -2
  378. package/server/.next/server/chunks/ssr/[root-of-the-server]__1kfivch_kfesn._.js +4 -0
  379. package/server/.next/server/chunks/ssr/[root-of-the-server]__1o63-3k1wez40._.js +3 -0
  380. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ogwz1buruc_x._.js +3 -0
  381. package/server/.next/server/chunks/ssr/[root-of-the-server]__1sw2q1p1t59y8._.js +1 -1
  382. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  383. package/server/.next/server/chunks/ssr/[root-of-the-server]__1wr4__6rvsb3b._.js +3 -0
  384. package/server/.next/server/chunks/ssr/_0-wc6f6p0c8lv._.js +1 -1
  385. package/server/.next/server/chunks/ssr/_01x32f51v50y7._.js +3 -0
  386. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  387. package/server/.next/server/chunks/ssr/{_0kxkg0dbp42ai._.js → _08d4hz_ddxc02._.js} +2 -2
  388. package/server/.next/server/chunks/ssr/_08e6i1zuyz-ns._.js +3 -0
  389. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  390. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  391. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  392. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  393. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  394. package/server/.next/server/chunks/ssr/_0c7stbntpuyt_._.js +3 -0
  395. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  396. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  397. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  398. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  399. package/server/.next/server/chunks/ssr/{_1e47r3tlad52r._.js → _0e4xfzm8oecc-._.js} +2 -2
  400. package/server/.next/server/chunks/ssr/_0ffsv993spriq._.js +3 -0
  401. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  402. package/server/.next/server/chunks/ssr/_0hsj1tx2ynla-._.js +3 -0
  403. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  404. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  405. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  406. package/server/.next/server/chunks/ssr/{src_lib_0-nc33gvdtkg5._.js → _0ls7sornjrg95._.js} +2 -2
  407. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  408. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  409. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  410. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  411. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  412. package/server/.next/server/chunks/ssr/_0uvkx5n0kf7r2._.js +3 -0
  413. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  414. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  415. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  416. package/server/.next/server/chunks/ssr/_0zixhhc1lheoi._.js +2 -2
  417. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +3 -0
  418. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  419. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  420. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  421. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  422. package/server/.next/server/chunks/ssr/_1476vtrt9101m._.js +1 -1
  423. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  424. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  425. package/server/.next/server/chunks/ssr/{src_lib_1zgor_vrwl5kt._.js → _1b1t9p1xljuql._.js} +2 -2
  426. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  427. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  428. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  429. package/server/.next/server/chunks/ssr/{_0mp5aext18ijx._.js → _1e5kqt081d8yt._.js} +2 -2
  430. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  431. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  432. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  433. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  434. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  435. package/server/.next/server/chunks/ssr/{_0wb79bnj96x0g._.js → _1jclq5d7tposb._.js} +2 -2
  436. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  437. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  438. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  439. package/server/.next/server/chunks/ssr/_1o94cw0ml7xu7._.js +3 -0
  440. package/server/.next/server/chunks/ssr/_1ok868mr1th-7._.js +3 -0
  441. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  442. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  443. package/server/.next/server/chunks/ssr/{_0fq8thje0tuch._.js → _1rinsar6bp6ul._.js} +2 -2
  444. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  445. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  446. package/server/.next/server/chunks/ssr/_218164gkxgum_._.js +1 -1
  447. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  448. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  449. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  450. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_0y5m8cul6d7kk.js +1 -1
  451. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  452. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  453. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  454. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  455. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  456. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  457. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  458. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +1 -1
  459. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  460. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  461. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  462. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  463. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  464. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  465. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  466. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  467. package/server/.next/server/chunks/ssr/{src_1xjlp4oxlprxb._.js → src_0jxjbvkvg0bjg._.js} +2 -2
  468. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  469. package/server/.next/server/chunks/ssr/src_0txyv7r1zns16._.js +3 -0
  470. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  471. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  472. package/server/.next/server/chunks/ssr/{src_097wa6oc_utgr._.js → src_186l56gdeizg8._.js} +2 -2
  473. package/server/.next/server/chunks/ssr/{src_0i-1ohush6mui._.js → src_1p24c-nz35cov._.js} +2 -2
  474. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  475. package/server/.next/server/chunks/ssr/src_1xoua7wkmyfkn._.js +3 -0
  476. package/server/.next/server/chunks/ssr/src_1y827m5-ojdib._.js +6 -0
  477. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  478. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  479. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  480. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  481. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  482. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  483. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  484. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  485. package/server/.next/server/chunks/ssr/{src_app_(console)_0p2-zm5eewkqo._.js → src_app_(console)_1co5pna1vfflj._.js} +2 -2
  486. package/server/.next/server/chunks/ssr/src_app_(console)_1shtcv6hidi4-._.js +3 -0
  487. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -1
  488. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
  489. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  490. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  491. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  492. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  493. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  494. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  495. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  496. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  497. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  498. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  499. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  500. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  501. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  502. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  503. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  504. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  505. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  506. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  507. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  508. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  509. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  510. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  511. package/server/.next/server/chunks/ssr/{src_app_signin_11vigmz4xm91m._.js → src_app_signin_0ko968fxahf6u._.js} +2 -2
  512. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  513. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  514. package/server/.next/server/chunks/ssr/src_lib_001zhbfd1zeuk._.js +3 -0
  515. package/server/.next/server/chunks/ssr/src_lib_04orn7u7ufxp1._.js +3 -0
  516. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +3 -0
  517. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +23 -0
  518. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +3 -0
  519. package/server/.next/server/chunks/ssr/src_lib_1l8ej-zoyyegd._.js +3 -0
  520. package/server/.next/server/chunks/ssr/src_lib_1nkahiclbn55q._.js +3 -0
  521. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +3 -0
  522. package/server/.next/server/chunks/ssr/{src_lib_demo_07uq47fhms-3d._.js → src_lib_demo_0ftmf3wmtezvl._.js} +2 -2
  523. package/server/.next/server/chunks/ssr/src_lib_view_14iq8onyfo7nd._.js +3 -0
  524. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  525. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  526. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  527. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  528. package/server/.next/server/middleware-build-manifest.js +3 -3
  529. package/server/.next/server/pages/404.html +1 -1
  530. package/server/.next/server/pages/500.html +1 -1
  531. package/server/.next/server/preview-props.json +3 -3
  532. package/server/.next/server/server-reference-manifest.js +1 -1
  533. package/server/.next/server/server-reference-manifest.json +150 -140
  534. package/server/.next/static/chunks/{0dmql-jz-o69o.js → 0-6om8-d7itz8.js} +1 -1
  535. package/server/.next/static/chunks/{292uz-rsh422k.js → 00oeu_tbjky7m.js} +1 -1
  536. package/server/.next/static/chunks/{08f1euchlacye.js → 0181phyuecg9b.js} +1 -1
  537. package/server/.next/static/chunks/{1_93oj1b-nrla.js → 01u9q07wu6-x1.js} +1 -1
  538. package/server/.next/static/chunks/{2szc6dvuj3gxy.js → 0_5_9w6m-xwd0.js} +1 -1
  539. package/server/.next/static/chunks/{38conxv_f-pgo.js → 0hj1-5zruyih6.js} +1 -1
  540. package/server/.next/static/chunks/0krhehmzgigx5.js +1 -0
  541. package/server/.next/static/chunks/{0p6hja9octhrd.js → 0md0jy9rztofl.js} +1 -1
  542. package/server/.next/static/chunks/{1g_kip3m3h9q6.js → 0mp6prf1hx5mx.js} +1 -1
  543. package/server/.next/static/chunks/{2fze_cnwk8j76.js → 0t66sf4vvalei.js} +1 -1
  544. package/server/.next/static/chunks/{3xxcpv79l5tnh.js → 0v_-lu_cx7f91.js} +1 -1
  545. package/server/.next/static/chunks/{2z21xxtcmsmhe.js → 0xcpi35p5fa83.js} +1 -1
  546. package/server/.next/static/chunks/{2u3iceaxpiiws.js → 0z0may9twpt-j.js} +1 -1
  547. package/server/.next/static/chunks/{2l4upq4bwgvvu.js → 16yvy9zkjac5c.js} +1 -1
  548. package/server/.next/static/chunks/{1ss-6-h8nloc9.js → 18johpgap0xmw.js} +1 -1
  549. package/server/.next/static/chunks/{35to2q1uretcv.js → 18mkhwl0zlvnp.js} +1 -1
  550. package/server/.next/static/chunks/{315s21b2dd7lg.js → 1_8g4usrgjnnu.js} +1 -1
  551. package/server/.next/static/chunks/{12bbufru1ui37.js → 1gt3cagsbgx4w.js} +1 -1
  552. package/server/.next/static/chunks/{06a83nde7riq-.js → 1q-m7qgrvvzwb.js} +1 -1
  553. package/server/.next/static/chunks/{3efi_dyz4y0lj.js → 1rkrtrvwbbnjf.js} +1 -1
  554. package/server/.next/static/chunks/{29xg947lkf4-x.js → 1sc1vz_ygak9u.js} +1 -1
  555. package/server/.next/static/chunks/1tg1mstvws8rj.css +3 -0
  556. package/server/.next/static/chunks/{1t9f2pdc3crnr.js → 1ukyjy13dwy_z.js} +1 -1
  557. package/server/.next/static/chunks/{38-ay595f3xie.js → 1xm6ay06cjchs.js} +1 -1
  558. package/server/.next/static/chunks/{0qoql97izcn4l.js → 1y_6crandf_3f.js} +1 -1
  559. package/server/.next/static/chunks/{3cyesi3hi6l1g.js → 1ys80h6x541kn.js} +2 -2
  560. package/server/.next/static/chunks/{1i8i1ieoh738i.js → 2-m982u6v7z8m.js} +1 -1
  561. package/server/.next/static/chunks/{2rpa_j81h_45y.js → 2a3tky__z9q4j.js} +1 -1
  562. package/server/.next/static/chunks/{0x41o1ud_ksl1.js → 2cipdjdkoq312.js} +1 -1
  563. package/server/.next/static/chunks/{0wkv5e-c430ea.js → 2ect0ww0gtoad.js} +2 -2
  564. package/server/.next/static/chunks/{1bt81ubbahkh6.js → 2s-_9p0-395sm.js} +1 -1
  565. package/server/.next/static/chunks/{2pi0r5spn0slc.js → 2ue_c6tww95_c.js} +1 -1
  566. package/server/.next/static/chunks/{0buwzrf7dpagn.js → 2xio-kspedw69.js} +1 -1
  567. package/server/.next/static/chunks/{09e-vdlax9bp6.js → 2z6gojfx3lqvt.js} +1 -1
  568. package/server/.next/static/chunks/{3qjirj3rjf5mu.js → 31v3igne_z-0k.js} +1 -1
  569. package/server/.next/static/chunks/{088c6cw88jmlb.js → 33ddsp07_9o1d.js} +2 -2
  570. package/server/.next/static/chunks/340qccog2_uge.js +2 -0
  571. package/server/.next/static/chunks/35ua22np4u9jr.js +1 -0
  572. package/server/.next/static/chunks/{0jf5lpzwq4vh1.js → 38g-5wiggu6__.js} +1 -1
  573. package/server/.next/static/chunks/{23b9tctw1mn5a.js → 3a5a2iizetq9b.js} +1 -1
  574. package/server/.next/static/chunks/{2ac9gyn8mzqp4.js → 3f1td0b-oy-sr.js} +1 -1
  575. package/server/.next/static/chunks/{12zasgv1xisb5.js → 3imk3dh9_4wd5.js} +1 -1
  576. package/server/.next/static/chunks/{1s0s32oqy-54t.js → 3jhh47vezwohc.js} +1 -1
  577. package/server/.next/static/chunks/{1t8fe3w70uapo.js → 3letbzhf_1srv.js} +1 -1
  578. package/server/.next/static/chunks/{0a4b85ckxbprh.js → 3qedt96akbcad.js} +1 -1
  579. package/server/.next/static/chunks/{1wh-ps6a57yj1.js → 3wi930ujb_5_z.js} +1 -1
  580. package/server/.next/static/chunks/{04ospu_w--6p9.js → 40n6mtthd3_sh.js} +1 -1
  581. package/server/.next/server/chunks/[root-of-the-server]__0f5bt0o1k41ft._.js +0 -3
  582. package/server/.next/server/chunks/[root-of-the-server]__1-9hjrgvj0fpb._.js +0 -3
  583. package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +0 -3
  584. package/server/.next/server/chunks/[root-of-the-server]__14eyo4i2tm93k._.js +0 -3
  585. package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +0 -3
  586. package/server/.next/server/chunks/[root-of-the-server]__1c653f_8qzrpd._.js +0 -3
  587. package/server/.next/server/chunks/[root-of-the-server]__1dyith2r4bacm._.js +0 -3
  588. package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +0 -3
  589. package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +0 -3
  590. package/server/.next/server/chunks/[root-of-the-server]__1hv3hk5182t-o._.js +0 -3
  591. package/server/.next/server/chunks/[root-of-the-server]__1j6xniw630fg0._.js +0 -3
  592. package/server/.next/server/chunks/[root-of-the-server]__1nu5isiy7d832._.js +0 -3
  593. package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +0 -3
  594. package/server/.next/server/chunks/[root-of-the-server]__1uox9a0td-o0-._.js +0 -3
  595. package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +0 -3
  596. package/server/.next/server/chunks/[root-of-the-server]__1z_0gt-w6bx9v._.js +0 -3
  597. package/server/.next/server/chunks/[root-of-the-server]__1zrqz88a2lkx5._.js +0 -3
  598. package/server/.next/server/chunks/[root-of-the-server]__1zwi7po5_xe8-._.js +0 -3
  599. package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +0 -3
  600. package/server/.next/server/chunks/_1-ior_ot6mgxg._.js +0 -3
  601. package/server/.next/server/chunks/src_0i-1ohush6mui._.js +0 -3
  602. package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +0 -3
  603. package/server/.next/server/chunks/src_lib_0-nc33gvdtkg5._.js +0 -5
  604. package/server/.next/server/chunks/src_lib_0-xd6p5793qdu._.js +0 -3
  605. package/server/.next/server/chunks/src_lib_0qbcg988i_-ee._.js +0 -3
  606. package/server/.next/server/chunks/ssr/[root-of-the-server]__04nc91kiy757l._.js +0 -3
  607. package/server/.next/server/chunks/ssr/[root-of-the-server]__04zgt2t-w6-75._.js +0 -3
  608. package/server/.next/server/chunks/ssr/[root-of-the-server]__0a3n6wzq8xui9._.js +0 -3
  609. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ban7lwqlko9y._.js +0 -3
  610. package/server/.next/server/chunks/ssr/[root-of-the-server]__0klc2dyzyjeba._.js +0 -3
  611. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +0 -4
  612. package/server/.next/server/chunks/ssr/[root-of-the-server]__0vnfx03nb5vku._.js +0 -3
  613. package/server/.next/server/chunks/ssr/[root-of-the-server]__13fabu66slkfb._.js +0 -3
  614. package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +0 -4
  615. package/server/.next/server/chunks/ssr/[root-of-the-server]__1p2oghl9lfgmk._.js +0 -3
  616. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pwd99rch8xyl._.js +0 -3
  617. package/server/.next/server/chunks/ssr/[root-of-the-server]__2195hg4329yfp._.js +0 -3
  618. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +0 -3
  619. package/server/.next/server/chunks/ssr/_0ad3y3l77xkxe._.js +0 -3
  620. package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +0 -3
  621. package/server/.next/server/chunks/ssr/_0ufjz7kfd4jbd._.js +0 -3
  622. package/server/.next/server/chunks/ssr/_1-ior_ot6mgxg._.js +0 -3
  623. package/server/.next/server/chunks/ssr/_1uae0vl2c6fz7._.js +0 -3
  624. package/server/.next/server/chunks/ssr/_1y8wer5tpgiqw._.js +0 -3
  625. package/server/.next/server/chunks/ssr/_217qa04yo70zg._.js +0 -3
  626. package/server/.next/server/chunks/ssr/src_05kvmrkq5nfyh._.js +0 -3
  627. package/server/.next/server/chunks/ssr/src_0ixeyy74fe5jy._.js +0 -3
  628. package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +0 -3
  629. package/server/.next/server/chunks/ssr/src_1fomo1_as1-ea._.js +0 -3
  630. package/server/.next/server/chunks/ssr/src_1sv5tf2pk5-pn._.js +0 -3
  631. package/server/.next/server/chunks/ssr/src_app_(console)_1za4o0--zhso5._.js +0 -3
  632. package/server/.next/server/chunks/ssr/src_lib_0-xd6p5793qdu._.js +0 -3
  633. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +0 -21
  634. package/server/.next/server/chunks/ssr/src_lib_0qbcg988i_-ee._.js +0 -3
  635. package/server/.next/server/chunks/ssr/src_lib_18e550s395xn5._.js +0 -3
  636. package/server/.next/server/chunks/ssr/src_lib_1_5ea0kxdn6zt._.js +0 -3
  637. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +0 -6
  638. package/server/.next/static/chunks/0qsk0bb1x81nc.js +0 -1
  639. package/server/.next/static/chunks/2g9dossbqnlr7.js +0 -1
  640. package/server/.next/static/chunks/3ybb15n1q3f-o.css +0 -3
  641. /package/server/.next/static/{rBXBlxKpaOHcc5KZDIhAL → 2_t4xVgbum1rtVSQxAYYV}/_buildManifest.js +0 -0
  642. /package/server/.next/static/{rBXBlxKpaOHcc5KZDIhAL → 2_t4xVgbum1rtVSQxAYYV}/_clientMiddlewareManifest.js +0 -0
  643. /package/server/.next/static/{rBXBlxKpaOHcc5KZDIhAL → 2_t4xVgbum1rtVSQxAYYV}/_ssgManifest.js +0 -0
@@ -12,35 +12,37 @@ Read more at https://nextjs.org/docs/messages/missing-root-layout-tags"
12
12
  }
13
13
 
14
14
  Read more: https://nextjs.org/docs/messages/middleware-new-signature
15
- `)}}class o extends Error{constructor(){super("The request.page has been deprecated in favour of `URLPattern`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n ")}}class s extends Error{constructor(){super("The request.ua has been removed in favour of `userAgent` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n ")}}},723866,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"NextURL",{enumerable:!0,get:function(){return d}});let n=e.r(522846),a=e.r(202116),i=e.r(770517),o=e.r(454122),s=/^(?:127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)$/;function l(e,t){let r=new URL(String(e),t&&String(t));return s.test(r.hostname)&&(r.hostname="localhost"),r}let u=Symbol("NextURLInternal");class d{constructor(e,t,r){let n,a;"object"==typeof t&&"pathname"in t||"string"==typeof t?(n=t,a=r||{}):a=r||t||{},this[u]={url:l(e,n??a.base),options:a,basePath:""},this.analyze()}analyze(){var e,t,r,a,s;let l=(0,o.getNextPathnameInfo)(this[u].url.pathname,{nextConfig:this[u].options.nextConfig,parseData:!0,i18nProvider:this[u].options.i18nProvider}),d=(0,i.getHostname)(this[u].url,this[u].options.headers);this[u].domainLocale=this[u].options.i18nProvider?this[u].options.i18nProvider.detectDomainLocale(d):(0,n.detectDomainLocale)(null==(t=this[u].options.nextConfig)||null==(e=t.i18n)?void 0:e.domains,d);let c=(null==(r=this[u].domainLocale)?void 0:r.defaultLocale)||(null==(s=this[u].options.nextConfig)||null==(a=s.i18n)?void 0:a.defaultLocale);this[u].url.pathname=l.pathname,this[u].defaultLocale=c,this[u].basePath=l.basePath??"",this[u].buildId=l.buildId,this[u].locale=l.locale??c,this[u].trailingSlash=l.trailingSlash}formatPathname(){return(0,a.formatNextPathnameInfo)({basePath:this[u].basePath,buildId:this[u].buildId,defaultLocale:this[u].options.forceLocale?void 0:this[u].defaultLocale,locale:this[u].locale,pathname:this[u].url.pathname,trailingSlash:this[u].trailingSlash})}formatSearch(){return this[u].url.search}get buildId(){return this[u].buildId}set buildId(e){this[u].buildId=e}get locale(){return this[u].locale??""}set locale(e){var t,r;if(!this[u].locale||!(null==(r=this[u].options.nextConfig)||null==(t=r.i18n)?void 0:t.locales.includes(e)))throw TypeError(`The NextURL configuration includes no locale "${e}"`);this[u].locale=e}get defaultLocale(){return this[u].defaultLocale}get domainLocale(){return this[u].domainLocale}get searchParams(){return this[u].url.searchParams}get host(){return this[u].url.host}set host(e){this[u].url.host=e}get hostname(){return this[u].url.hostname}set hostname(e){this[u].url.hostname=e}get port(){return this[u].url.port}set port(e){this[u].url.port=e}get protocol(){return this[u].url.protocol}set protocol(e){this[u].url.protocol=e}get href(){let e=this.formatPathname(),t=this.formatSearch();return`${this.protocol}//${this.host}${e}${t}${this.hash}`}set href(e){this[u].url=l(e),this.analyze()}get origin(){return this[u].url.origin}get pathname(){return this[u].url.pathname}set pathname(e){this[u].url.pathname=e}get hash(){return this[u].url.hash}set hash(e){this[u].url.hash=e}get search(){return this[u].url.search}set search(e){this[u].url.search=e}get password(){return this[u].url.password}set password(e){this[u].url.password=e}get username(){return this[u].url.username}set username(e){this[u].url.username=e}get basePath(){return this[u].basePath}set basePath(e){this[u].basePath=e.startsWith("/")?e:`/${e}`}toString(){return this.href}toJSON(){return this.href}[Symbol.for("edge-runtime.inspect.custom")](){return{href:this.href,origin:this.origin,protocol:this.protocol,username:this.username,password:this.password,host:this.host,hostname:this.hostname,port:this.port,pathname:this.pathname,search:this.search,searchParams:this.searchParams,hash:this.hash}}clone(){return new d(String(this),this[u].options)}}},647573,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={NextRequestAdapter:function(){return f},ResponseAborted:function(){return d},ResponseAbortedName:function(){return u},createAbortController:function(){return c},signalFromNodeResponse:function(){return p}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(255841),o=e.r(287790),s=e.r(641165),l=e.r(110118),u="ResponseAborted";class d extends Error{constructor(...e){super(...e),this.name=u}}function c(e){let t=new AbortController;return e.once("close",()=>{e.writableFinished||t.abort(new d)}),t}function p(e){let{errored:t,destroyed:r}=e;if(t||r)return AbortSignal.abort(t??new d);let{signal:n}=c(e);return n}class f{static fromBaseNextRequest(e,t){if((0,l.isNodeNextRequest)(e))return f.fromNodeNextRequest(e,t);throw Error("Invariant: Unsupported NextRequest type")}static fromNodeNextRequest(e,t){let r,n=null;if("GET"!==e.method&&"HEAD"!==e.method&&e.body&&(n=e.body),e.url.startsWith("http"))r=new URL(e.url);else{let t=(0,i.getRequestMeta)(e,"initURL");r=t&&t.startsWith("http")?new URL(e.url,t):new URL(e.url,"http://n")}return new s.NextRequest(r,{method:e.method,headers:(0,o.fromNodeOutgoingHttpHeaders)(e.headers),duplex:"half",signal:t,...t.aborted?{}:{body:n}})}static fromWebNextRequest(e){let t=null;return"GET"!==e.method&&"HEAD"!==e.method&&(t=e.body),new s.NextRequest(e.url,{method:e.method,headers:(0,o.fromNodeOutgoingHttpHeaders)(e.headers),duplex:"half",signal:e.request.signal,...e.request.signal.aborted?{}:{body:t}})}}},641165,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={INTERNALS:function(){return u},NextRequest:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(723866),o=e.r(287790),s=e.r(560659),l=e.r(86547),u=Symbol("internal request");class d extends Request{constructor(e,t={}){let r="string"!=typeof e&&"url"in e?e.url:String(e);(0,o.validateURL)(r),t.body&&"half"!==t.duplex&&(t.duplex="half"),e instanceof Request?super(e,t):super(r,t);let n=new i.NextURL(r,{headers:(0,o.toNodeOutgoingHttpHeaders)(this.headers),nextConfig:t.nextConfig});this[u]={cookies:new l.RequestCookies(this.headers),nextUrl:n,url:n.toString()}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,nextUrl:this.nextUrl,url:this.url,bodyUsed:this.bodyUsed,cache:this.cache,credentials:this.credentials,destination:this.destination,headers:Object.fromEntries(this.headers),integrity:this.integrity,keepalive:this.keepalive,method:this.method,mode:this.mode,redirect:this.redirect,referrer:this.referrer,referrerPolicy:this.referrerPolicy,signal:this.signal}}get cookies(){return this[u].cookies}get nextUrl(){return this[u].nextUrl}get page(){throw new s.RemovedPageError}get ua(){throw new s.RemovedUAError}get url(){return this[u].url}}},199300,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={refresh:function(){return w},revalidatePath:function(){return v},revalidateTag:function(){return y},updateTag:function(){return b}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(258200),o=e.r(274391),s=e.r(419372),l=e.r(556704),u=e.r(832319),d=e.r(243727),c=e.r(585346),p=e.r(203982),f=e.r(341682),m=e.r(387637),h=e.r(748448),g=e.r(540678);function y(e,t){return t?"object"==typeof t&&(t=(0,g.validateAndNormalizeCacheLifeProfile)(t,{kind:"inline"})):console.warn('"revalidateTag" without the second argument is now deprecated, add second argument of "max" or use "updateTag". See more info here: https://nextjs.org/docs/messages/revalidate-tag-single-arg'),k([(0,m.encodeHeaderSafe)(e)],`revalidateTag(${JSON.stringify(e)})`,t)}function b(e){let t=l.workAsyncStorage.getStore();if(!t||t.page.endsWith("/route"))throw Error("updateTag can only be called from within a Server Action. To invalidate cache tags in Route Handlers or other contexts, use revalidateTag instead. See more info here: https://nextjs.org/docs/app/api-reference/functions/updateTag");return k([(0,m.encodeHeaderSafe)(e)],`updateTag(${JSON.stringify(e)})`,void 0)}function w(){let e=l.workAsyncStorage.getStore(),t=u.workUnitAsyncStorage.getStore();if(!e||e.page.endsWith("/route")||(null==t?void 0:t.phase)!=="action")throw Error("refresh can only be called from within a Server Action. See more info here: https://nextjs.org/docs/app/api-reference/functions/refresh");e&&(e.pathWasRevalidated=p.ActionDidRevalidateDynamicOnly)}function v(e,t){if(e.length>s.NEXT_CACHE_SOFT_TAG_MAX_LENGTH)return void console.warn(`Warning: revalidatePath received "${e}" which exceeded max length of ${s.NEXT_CACHE_SOFT_TAG_MAX_LENGTH}. See more info here https://nextjs.org/docs/app/api-reference/functions/revalidatePath`);let r=`${s.NEXT_CACHE_IMPLICIT_TAG_ID}${(0,m.encodeHeaderSafe)((0,f.removeTrailingSlash)(e))}`;t?r+=`${r.endsWith("/")?"":"/"}${t}`:(0,o.isDynamicRoute)(e)&&console.warn(`Warning: a dynamic page path "${e}" was passed to "revalidatePath", but the "type" parameter is missing. This has no effect by default, see more info here https://nextjs.org/docs/app/api-reference/functions/revalidatePath`);let n=[r];return r===`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/`?n.push(`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/index`):r===`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/index`&&n.push(`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/`),k(n,`revalidatePath(${JSON.stringify(e)})`)}function k(e,t,r){let n=l.workAsyncStorage.getStore();if(!n||!n.incrementalCache)throw Error(`Invariant: static generation store missing in ${t}`);let a=u.workUnitAsyncStorage.getStore();if(a){switch(a.type){case"build-time-generator":throw(0,h.createRevalidateInBuildTimeGeneratorError)(n.route,t,a.functionName);case"cache":case"private-cache":case"unstable-cache":throw(0,h.createRevalidateInCachedFunctionError)(n.route,t)}if("render"===a.phase)throw(0,h.createRevalidateDuringRenderError)(n.route,t);switch(a.type){case"prerender":case"prerender-runtime":let e=Error(`Route ${n.route} used ${t} without first calling \`await connection()\`.`);return(0,i.abortAndThrowOnSynchronousRequestDataAccess)(n.route,t,e,a);case"prerender-client":case"validation-client":throw new c.InvariantError(`${t} must not be used within a client component. Next.js should be preventing ${t} from being included in client components statically, but did not in this case.`);case"prerender-legacy":a.revalidate=0;let r=new d.DynamicServerError(`Route ${n.route} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw n.dynamicUsageDescription=t,n.dynamicUsageStack=r.stack,r}}n.pendingRevalidatedTags||(n.pendingRevalidatedTags=[]);let o=performance.timeOrigin+performance.now();for(let t of e){let e=n.pendingRevalidatedTags.findIndex(e=>e.tag===t&&("string"==typeof e.profile&&"string"==typeof r?e.profile===r:"object"==typeof e.profile&&"object"==typeof r?JSON.stringify(e.profile)===JSON.stringify(r):e.profile===r));-1===e?n.pendingRevalidatedTags.push({tag:t,profile:r,revalidatedAt:o}):n.pendingRevalidatedTags[e].revalidatedAt=o}let s=r&&"object"==typeof r?r:r&&"string"==typeof r&&(null==n?void 0:n.cacheLifeProfiles[r])?n.cacheLifeProfiles[r]:void 0;r&&(null==s?void 0:s.expire)!==0||(n.pathWasRevalidated=p.ActionDidRevalidateStaticAndDynamic)}},255706,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_cache",{enumerable:!0,get:function(){return c}});let n=e.r(419372),a=e.r(188232),i=e.r(387637),o=e.r(556704),s=e.r(832319),l=e.r(153960),u=0;async function d(e,t,r,a,i,o,s){await t.set(r,{kind:l.CachedRouteKind.FETCH,data:{headers:{},body:JSON.stringify(e),status:200,url:""},revalidate:"number"!=typeof i?n.CACHE_ONE_YEAR_SECONDS:i},{fetchCache:!0,tags:a,fetchIdx:o,fetchUrl:s})}function c(e,t,r={}){if(0===r.revalidate)throw Error(`Invariant revalidate: 0 can not be passed to unstable_cache(), must be "false" or "> 0" ${e.toString()}`);let n=r.tags?(0,a.validateTags)(r.tags,`unstable_cache ${e.toString()}`):[],p=(0,a.validateRevalidate)(r.revalidate,`unstable_cache ${e.name||e.toString()}`),f=`${e.toString()}-${Array.isArray(t)&&t.join(",")}`;return async(...t)=>{let r=o.workAsyncStorage.getStore(),a=s.workUnitAsyncStorage.getStore(),c=(null==r?void 0:r.incrementalCache)||globalThis.__incrementalCache;if(!c)throw Error(`Invariant: incrementalCache missing in unstable_cache ${e.toString()}`);let m=a?(0,s.getCacheSignal)(a):null;m&&m.beginRead();try{let o=r&&a?function(e,t){switch(t.type){case"request":let r=t.url.pathname,n=new URLSearchParams(t.url.search),a=[...n.keys()].sort((e,t)=>e.localeCompare(t)).map(e=>`${e}=${n.get(e)}`).join("&");return`${r}${a.length?"?":""}${a}`;case"prerender":case"prerender-client":case"validation-client":case"prerender-runtime":case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":case"build-time-generator":return e.route;default:return t}}(r,a):"",m=`${f}-${JSON.stringify(t)}`,h=await c.generateSimpleCacheKey(m),g=(0,i.encodeHeaderSafe)(`unstable_cache ${o} ${e.name?` ${e.name}`:h}`.toWellFormed()),y=(r?r.nextFetchId:u)??1,b=null==a?void 0:a.implicitTags,w={type:"unstable-cache",phase:"render",consumerWillServerCache:!0,implicitTags:b,draftMode:a&&r&&(0,s.getDraftModeProviderForCacheScope)(r,a),rootParams:void 0};if(r){r.nextFetchId=y+1;let i=!1;if(a)switch(a.type){case"cache":case"private-cache":case"prerender":case"prerender-runtime":case"prerender-legacy":"number"==typeof p&&(a.revalidate<p||(a.revalidate=p));let o=a.tags;if(null===o)a.tags=n.slice();else for(let e of n)o.includes(e)||o.push(e);break;case"unstable-cache":i=!0}if(!i&&"force-no-store"!==r.fetchCache&&!r.isOnDemandRevalidate&&!c.isOnDemandRevalidate&&!r.isDraftMode){let i=await c.get(h,{kind:l.IncrementalCacheKind.FETCH,revalidate:p,tags:n,softTags:null==b?void 0:b.tags,fetchIdx:y,fetchUrl:g});if(i&&i.value)if(i.value.kind!==l.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${m}`);else{let o=void 0!==i.value.data.body?JSON.parse(i.value.data.body):void 0;if(i.isStale){if(r.pendingRevalidates||(r.pendingRevalidates={}),!r.pendingRevalidates[m]){let i=s.workUnitAsyncStorage.run(w,e,...t).then(async e=>(await d(e,c,h,n,p,y,g),e)).catch(e=>(console.error(`revalidating cache with key: ${m}`,e),o));(0,s.willConsumerServerCache)(a)&&i.catch(()=>{}),r.pendingRevalidates[m]=i}if((0,s.willConsumerServerCache)(a))return await r.pendingRevalidates[m]}return o}}let u=await s.workUnitAsyncStorage.run(w,e,...t);return r.isDraftMode||(r.pendingRevalidates||(r.pendingRevalidates={}),r.pendingRevalidates[m]=d(u,c,h,n,p,y,g)),u}{if(u+=1,!c.isOnDemandRevalidate){let e=await c.get(h,{kind:l.IncrementalCacheKind.FETCH,revalidate:p,tags:n,fetchIdx:y,fetchUrl:g,softTags:null==b?void 0:b.tags});if(e&&e.value){if(e.value.kind!==l.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${m}`);else if(!e.isStale)return void 0!==e.value.data.body?JSON.parse(e.value.data.body):void 0}}let r=await s.workUnitAsyncStorage.run(w,e,...t);return await d(r,c,h,n,p,y,g),r}}finally{m&&m.endRead()}}}},910582,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_noStore",{enumerable:!0,get:function(){return o}});let n=e.r(556704),a=e.r(832319),i=e.r(258200);function o(){let e=n.workAsyncStorage.getStore(),t=a.workUnitAsyncStorage.getStore();if(e){if(!e.forceStatic){if(e.isUnstableNoStore=!0,t)switch(t.type){case"prerender":case"prerender-client":case"validation-client":case"prerender-runtime":return}(0,i.markCurrentScopeAsDynamic)(e,t,"unstable_noStore()")}}}},287790,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={fromNodeOutgoingHttpHeaders:function(){return o},normalizeNextQueryParam:function(){return d},splitCookiesString:function(){return s},toNodeOutgoingHttpHeaders:function(){return l},validateURL:function(){return u}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(419372);function o(e){let t=new Headers;for(let[r,n]of Object.entries(e))for(let e of Array.isArray(n)?n:[n])void 0!==e&&("number"==typeof e&&(e=e.toString()),t.append(r,e));return t}function s(e){var t,r,n,a,i,o=[],s=0;function l(){for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length}for(;s<e.length;){for(t=s,i=!1;l();)if(","===(r=e.charAt(s))){for(n=s,s+=1,l(),a=s;s<e.length&&"="!==(r=e.charAt(s))&&";"!==r&&","!==r;)s+=1;s<e.length&&"="===e.charAt(s)?(i=!0,s=a,o.push(e.substring(t,n)),t=s):s=n+1}else s+=1;(!i||s>=e.length)&&o.push(e.substring(t,e.length))}return o}function l(e){let t={},r=[];if(e)for(let[n,a]of e.entries())"set-cookie"===n.toLowerCase()?(r.push(...s(a)),t[n]=1===r.length?r[0]:r):t[n]=a;return t}function u(e){try{return String(new URL(String(e)))}catch(t){throw Error(`URL is malformed "${String(e)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,{cause:t})}}function d(e){for(let t of[i.NEXT_QUERY_PARAM_PREFIX,i.NEXT_INTERCEPTION_MARKER_PREFIX])if(e!==t&&e.startsWith(t))return e.substring(t.length);return null}},452369,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"MISSING_ROOT_TAGS_ERROR",{enumerable:!0,get:function(){return n}});let n="NEXT_MISSING_ROOT_TAGS";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},770517,(e,t,r)=>{function n(e,t){let r;if(t?.host&&!Array.isArray(t.host))r=t.host.toString().split(":",1)[0];else{if(!e.hostname)return;r=e.hostname}return r.toLowerCase()}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getHostname",{enumerable:!0,get:function(){return n}})},593249,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={djb2Hash:function(){return i},hexHash:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function i(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)|0;return t>>>0}function o(e){return i(e).toString(36).slice(0,5)}},522846,(e,t,r)=>{function n(e,t,r){if(e){for(let n of(r&&(r=r.toLowerCase()),e))if(t===n.domain?.split(":",1)[0].toLowerCase()||r===n.defaultLocale.toLowerCase()||n.locales?.some(e=>e.toLowerCase()===r))return n}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"detectDomainLocale",{enumerable:!0,get:function(){return n}})},385630,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let o=i[1].toLowerCase(),s=a.indexOf(o);return s<0?{pathname:e}:(r=t[s],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},983782,(e,t,r)=>{function n(e){return null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isThenable",{enumerable:!0,get:function(){return n}})},151417,(e,t,r)=>{function n(e){return e.startsWith("/")?e:`/${e}`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},438924,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={getRequestInsightKey:function(){return o},getRequestInsightKind:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function i(e){return e.kind??"request"}function o(e){return`${i(e)}:${e.requestId}`}},997602,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(455454),a=e.r(667138);function i(e,t,r,i){if(!t||t===r)return e;let o=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(o,"/api")||(0,a.pathHasPrefix)(o,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},455454,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(49454);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${t}${r}${a}${i}`}},447990,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(49454);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},537433,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={compareAppPaths:function(){return l},normalizeAppPath:function(){return s},normalizeRscURL:function(){return c},selectAppPageEntry:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(151417),o=e.r(483655);function s(e){return(0,i.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:`${e}/${t}`,""))}function l(e,t){let r=e.includes("/@"),n=t.includes("/@");return r&&!n?-1:!r&&n?1:e.localeCompare(t)}function u(e){return s(e).replace(/%5F/g,"_")}function d(e,t,r=u){let n;for(let a of t)r(a)===e&&(void 0===n||0>l(n,a))&&(n=a);if(void 0===n)throw Error(`Invariant: no direct app page entry found for ${e}`);return n}function c(e){return e.replace(/\.rsc($|\?)/,"$1")}},231679,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={computeCacheBustingSearchParam:function(){return d},computeLegacyCacheBustingSearchParam:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(593249),o=new TextEncoder;function s(e){return void 0===e?"0":Array.isArray(e)?e.join(","):e}function l(e,t,r,n){return(void 0===e||"0"===e)&&void 0===t&&void 0===r&&void 0===n?null:[e??"0",s(t),s(r),s(n)].join(",")}async function u(e){var t=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",o.encode(e))).subarray(0,12);let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function d(e,t,r,n){let a=l(e,t,r,n);return null===a?"":u(a)}function c(e,t,r,n){let a=l(e,t,r,n);return null===a?"":(0,i.hexHash)(a)}},202116,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(341682),a=e.r(455454),i=e.r(447990),o=e.r(997602);function s(e){let t=(0,o.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},454122,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(385630),a=e.r(472389),i=e.r(667138);function o(e,t){let{basePath:r,i18n:o,trailingSlash:s}=t.nextConfig??{},l={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};r&&(0,i.pathHasPrefix)(l.pathname,r)&&(l.pathname=(0,a.removePathPrefix)(l.pathname,r),l.basePath=r);let u=l.pathname;if(l.pathname.startsWith("/_next/data/")&&l.pathname.endsWith(".json")){let e=l.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");l.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(l.pathname=u)}if(o){let e=t.i18nProvider?t.i18nProvider.analyze(l.pathname):(0,n.normalizeLocalePath)(l.pathname,o.locales);l.locale=e.detectedLocale,l.pathname=e.pathname??l.pathname,!e.detectedLocale&&l.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,o.locales)).detectedLocale&&(l.locale=e.detectedLocale)}return l}},274391,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return i.getSortedRouteObjects},getSortedRoutes:function(){return i.getSortedRoutes},isDynamicRoute:function(){return o.isDynamicRoute}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(684109),o=e.r(97764)},265710,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return p},findMissingCanonicalInterceptionRoutes:function(){return f},isInterceptionRouteAppPath:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(537433),o=["(..)(..)","(.)","(..)","(...)"];function s(e){let t=e.split("/").filter(Boolean),r=t.at(-1),n=void 0!==r&&r.startsWith("[[...")&&r.endsWith("]]"),a=void 0!==r&&r.startsWith("[...")&&r.endsWith("]"),i=n||a,o=i?t.slice(0,-1):t;return{prefix:o.map(e=>e.startsWith("[")&&e.endsWith("]")?null:e),minLength:o.length+(a&&!n?1:0),unbounded:i}}function l(e,t){return e.unbounded?t>=e.minLength:t===e.minLength}function u(e,t){return e.prefix.every((e,r)=>{if(null===e)return!0;let n=t.prefix[r];return null!=n&&e===n})}function d(e,t,r){return l(e,r)&&l(t,r)&&u(e,t)}function c(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function p(e){let t,r,n;for(let a of e.split("/"))if(r=o.find(e=>a.startsWith(e))){[t,n]=e.split(r,2);break}if(!t||!r||!n)throw Error(`Invalid interception route: ${e}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`);switch(t=(0,i.normalizeAppPath)(t),r){case"(.)":n="/"===t?`/${n}`:t+"/"+n;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);n=t.split("/").slice(0,-1).concat(n).join("/");break;case"(...)":n="/"+n;break;case"(..)(..)":let a=t.split("/");if(a.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);n=a.slice(0,-2).concat(n).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:n}}function f(e){let t=Object.keys(e).filter(e=>!c(e)).map(s);return Object.keys(e).filter(c).map(e=>({interceptionRoute:e,canonicalRoute:p(e).interceptedRoute})).filter(({canonicalRoute:e})=>!function(e,t){let r=s(e);if(!r.unbounded)return t.some(e=>d(e,r,r.minLength));let n=1/0;for(let e of t)e.unbounded&&u(e,r)&&(n=Math.min(n,Math.max(r.minLength,e.minLength)));if(1/0===n)return!1;for(let e=r.minLength;e<n;e++)if(!t.some(t=>d(t,r,e)))return!1;return!0}(e,t)).sort((e,t)=>e.interceptionRoute.localeCompare(t.interceptionRoute))}},97764,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isDynamicRoute",{enumerable:!0,get:function(){return o}});let n=e.r(265710),a=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,i=/\/\[[^/]+\](?=\/|$)/;function o(e,t=!0){return((0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),t)?i.test(e):a.test(e)}},49454,(e,t,r)=>{function n(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r<t);return n||t>-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"parsePath",{enumerable:!0,get:function(){return n}})},667138,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"pathHasPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(49454);function a(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},472389,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(667138);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},341682,(e,t,r)=>{function n(e){return 47===e.charCodeAt(e.length-1)&&e.length>1?e.slice(0,-1):e}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removeTrailingSlash",{enumerable:!0,get:function(){return n}})},684109,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return s},getSortedRoutes:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});class i{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e="/"){let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(`${e}${t}/`)).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(`${e}[${this.slugName}]/`)),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error(`You cannot define a route with the same specificity as a optional catch-all route ("${t}" and "${t}[[...${this.optionalRestSlugName}]]").`);r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(`${e}[...${this.restSlugName}]/`)),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(`${e}[[...${this.optionalRestSlugName}]]/`)),r}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Error("Catch-all must be the last part of the URL.");let n=e[0];if(n.startsWith("[")&&n.endsWith("]")){let i=n.slice(1,-1),o=!1;if(i.startsWith("[")&&i.endsWith("]")&&(i=i.slice(1,-1),o=!0),i.startsWith("…"))throw Error(`Detected a three-dot character ('…') at ('${i}'). Did you mean ('...')?`);if(i.startsWith("...")&&(i=i.substring(3),r=!0),i.startsWith("[")||i.endsWith("]"))throw Error(`Segment names may not start or end with extra brackets ('${i}').`);if(i.startsWith("."))throw Error(`Segment names may not start with erroneous periods ('${i}').`);function a(e,r){if(null!==e&&e!==r)throw Error(`You cannot use different slug names for the same dynamic path ('${e}' !== '${r}').`);t.forEach(e=>{if(e===r)throw Error(`You cannot have the same slug name "${r}" repeat within a single dynamic path`);if(e.replace(/\W/g,"")===n.replace(/\W/g,""))throw Error(`You cannot have the slug names "${e}" and "${r}" differ only by non-word symbols within a single dynamic path`)}),t.push(r)}if(r)if(o){if(null!=this.restSlugName)throw Error(`You cannot use both an required and optional catch-all route at the same level ("[...${this.restSlugName}]" and "${e[0]}" ).`);a(this.optionalRestSlugName,i),this.optionalRestSlugName=i,n="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error(`You cannot use both an optional and required catch-all route at the same level ("[[...${this.optionalRestSlugName}]]" and "${e[0]}").`);a(this.restSlugName,i),this.restSlugName=i,n="[...]"}else{if(o)throw Error(`Optional route parameters are not yet supported ("${e[0]}").`);a(this.slugName,i),this.slugName=i,n="[]"}}this.children.has(n)||this.children.set(n,new i),this.children.get(n)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function o(e){let t=new i;return e.forEach(e=>t.insert(e)),t.smoosh()}function s(e,t){let r={},n=[];for(let a=0;a<e.length;a++){let i=t(e[a]);r[i]=a,n[a]=i}return o(n).map(t=>e[r[t]])}},684330,e=>{var t=e.i(794588);e.s(["z",0,t])},691313,e=>{var t=e.i(794588);e.s(["z",0,t])},112515,753535,e=>{e.s(["A",0,function(e){return null===e?"Can't read the stored credential. The encryption key changed. Replace the credential.":null},"E",0,function(e){return e.ok?{status:"ok",lastError:null}:"auth"===e.kind?{status:"error",lastError:e.error}:null}],112515);var t=e.i(336763),r=e.i(533102),n=e.i(406212),a=e.i(530298);async function i(e,t,i){await (0,n.db)().insert(a.snapshots).values({resourceId:e,data:t,collectedAt:i,stateSince:i}).onConflictDoUpdate({target:a.snapshots.resourceId,set:{data:r.sql`${a.snapshots.data} || ${JSON.stringify(t)}::jsonb`,collectedAt:i}})}async function o(e,r,i){await (0,n.db)().update(a.snapshots).set({state:r,stateSince:i}).where((0,t.eq)(a.snapshots.resourceId,e))}e.s(["r",0,i,"a",0,o],753535)},484745,853190,e=>{var t=e.i(728335);let r=e=>`${e} hari`,n=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${r(e)}.`,a={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},i={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},o={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,r)=>`${t}: nggak ada ping selama ${r.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,r)=>`${t}: ${a[r]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,r,n)=>`${t}: ${n} cek gagal berturut-turut (${r}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,r)=>`${t}: ${r} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,r,n)=>`${t}: ${n} cek gagal berturut-turut (${r}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(e,t,r)=>`${t} pindah ke ${r}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(e,t,r,n)=>`${t} udah bukan domain ${r}; production sekarang di ${n}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(e,t,r)=>`Monitor ngecek ${t}, domain ${r}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,r)=>`p95 ${t} ms selama 10 menit terakhir (batas ${r} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,r)=>n(r,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,r)=>n(r,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,r,n,a)=>`${t} pakai ${r} MB dari ${n} MB (${a}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,r,n)=>`${t} udah pakai ${r} dari ${n} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,r,n,a)=>`${t} udah baca ${r} dari ${n} dokumen hari ini (${a}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${r(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,r,n)=>`${t}: ${r.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${n}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,r)=>`${t}: ${r.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,r)=>`Credential ${t} ${r} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,r,a)=>n(a,`Credential ${t} ${r}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,r,n)=>`${t} paket rentan (${r.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>i[e])}): ${n.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(e,t,r)=>`${t} pakai Next.js ${r} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(e,t,r,n,a,o,s)=>`Next.js ${t} punya ${r} kerentanan yang diketahui (${i[n]}), ${a?`udah di-fix di ${a}${o?` (${"one fix needs"===o?"satu fix":"sebagian fix"} butuh Next.js ${s})`:""}`:"belum ada fix"}.`]]};function s(e,t){for(let[r,n]of Object.hasOwn(o,e)?o[e]:[]){let e=r.exec(t);if(e)return n(...e)}return t}e.s(["f",0,s],853190);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},u={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},d={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"gara-gara",incident:"lagi ada insiden",step:"Langkah"}},c=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),p={critical:0,warning:1,info:2};function f(e,t){let r=e.filter(e=>"resolve"!==e.kind).length,n=e.length-r;return[r?`${r} ${d[t].firing}`:"",n?`${n} ${d[t].resolved}`:""].filter(Boolean).join(", ")}function m(e,t,r,n,a,i){let o=[...e].sort((e,t)=>("resolve"===e.kind)-("resolve"===t.kind)||p[e.severity]-p[t.severity]),s=[n],l=n.length+a.length+40;for(let e=0;e<o.length;e++){let n=r(o[e]);if(l+n.length+1>t){s.push(i(o.length-e));break}s.push(n),l+=n.length+1}return s.push(a),s.join("\n").slice(0,t)}let h={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}};e.s(["Z",0,u,"l",0,function(e,r,n,a="en"){let i=`${n.replace(/\/+$/,"")}/alerts`,o=d[a],p=e=>`${l[a][e.kind]} \xb7 ${u[a][e.severity]} \xb7 `,g=e=>"id"===a?s(e.ruleKey,e.message):e.message,y=e=>"resolve"===e.kind?null:((e,t="en")=>{let r=Object.hasOwn(h[t],e)?h[t][e]:void 0;return r?`${d[t].step}: ${r}`:null})(e.ruleKey,a),b=e=>[e.causedBy?`${o.causedBy} ${e.causedBy}`:"",e.provider?`${e.provider} ${o.incident}`:""].filter(Boolean).join(" · "),w=e=>`
16
- +${e} ${o.more}`;return{telegram:m(e,4096,e=>`
17
- <b>${p(e)}${c(e.ruleKey)} \xb7 ${c(e.title)}</b>
18
- ${c(g(e))}${b(e)?`
19
- <i>${c(b(e))}</i>`:""}${y(e)?`
20
- 👉 ${c(y(e))}`:""}
21
- ${o.since} ${(0,t.clock)(e.startedAt)} ${(0,t.zoneLabel)(e.startedAt)}`,`<b>Watchbell</b>: ${f(e,a)} \xb7 ${(0,t.clock)(r)} ${(0,t.zoneLabel)(r)}`,`
22
- <a href="${c(i)}">${o.open}</a>`,w),discord:m(e,2e3,e=>`
23
- **${p(e)}${e.ruleKey} \xb7 ${e.title.replace(/[*_`~|\[\]<>]/g,"")}**
24
- ${g(e).replace(/[*_`~|\[\]<>]/g,"")}${b(e)?`
25
- _${b(e)}_`:""}${y(e)?`
26
- 👉 ${y(e)}`:""}`,`**Watchbell**: ${f(e,a)} \xb7 ${(0,t.clock)(r)} ${(0,t.zoneLabel)(r)}`,`
27
- ${i}`,w)}},"H",0,c],484745)},511394,665870,944097,e=>{var t=e.i(516506),r=e.i(164617),n=e.i(887103),a=e.i(819263),i=e.i(631065),o=e.i(663948),s=e.i(79068),l=e.i(461315);let u=["next","eslint-config-next"],d={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function c(e,t){if(!e||!(0,l.C)(e))return null;let r=t.map(e=>e.fixed).filter(t=>!!t&&(0,l.C)(t)&&(0,o.f)(t,e)>0);if(!r.length)return null;let n=r.filter(t=>(0,s.J)(e,t));return(n.length?n:r).reduce((e,t)=>(0,o.f)(t,e)>0?t:e)}function p(e,t){let r=c(e,t),n=r?t.map(e=>e.fixed).filter(e=>!!e&&(0,l.C)(e)&&(0,o.f)(e,r)>0):[],a=n.reduce((e,t)=>null===e||(0,o.f)(t,e)>0?t:e,null),s=a?` (${1===n.length?"one fix needs":"some fixes need"} Next.js ${a.split(".")[0]})`:"";return`Next.js ${e??"(unknown version)"} has ${(0,i.q)(t.length)} (${(0,i.N)(t).toLowerCase()}), ${r?`fixed in ${r}${s}`:"no fix yet"}.`}e.s(["P",0,p,"p",0,function(e){if(!e||"vulnerable"!==e.status||!e.findings.length||!e.version)return null;let t=c(e.version,e.findings);if(!t)return null;let r=d[(0,i.N)(e.findings)],n=[...new Set(e.findings.map(e=>e.id))],a=[...new Set(e.findings.flatMap(e=>e.cve?[e.cve]:[]))];return{from:e.version,to:t,upgrades:[{package:"next",to:t,vulnIds:n,cves:a,severity:r},{package:"eslint-config-next",to:t,vulnIds:[],cves:[],severity:r,companionOf:"next"}],installed:new Map(u.map(t=>[t,e.version]))}},"F",0,function(e){let t=e.find(e=>"next"===e.package&&!e.companionOf);return!t||e.some(e=>"eslint-config-next"===e.package)?e:[...e,{package:"eslint-config-next",to:t.to,vulnIds:[],cves:[],severity:t.severity,companionOf:"next"}]}],665870);let f=e=>Math.round(e).toLocaleString("en-US"),m=(e,t)=>Math.floor((e.getTime()-t.getTime())/864e5),h=(e,t)=>`${e} ${t}${1===e?"":"s"}`,g=e=>{try{let t=new URL(e);return`${t.host}${t.pathname}`}catch{return e}},y=e=>{try{return new URL(e).host}catch{return e}},b=e=>{try{return new URL(e).pathname}catch{return"/"}},w="Down · ",v=(e,t,r)=>({rule:e,subject:t,status:"unknown",resourceId:null,accountId:null,title:t,message:"",provider:null,sampleAt:null,...r}),k=e=>"firestore"===e.provider?"firebase":"d1"===e.provider?"cloudflare":e.provider,_=new Set(["turso","upstash","d1"]),A={MonitorDown:(e,t)=>e.monitors.map(e=>{let n=v("MonitorDown",e.id,{resourceId:e.appId,title:`${e.appName} ${"heartbeat"===e.kind?e.url:b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt}),a=t??3;if("heartbeat"===e.kind){let t;return{...n,status:"err"===e.state?"firing":"ok"===e.state?"ok":"unknown",message:`${e.appName} \xb7 ${e.url}: ${t=e.lastError,t?.startsWith(w)?t.slice(w.length):"no ping in time"}.`}}return e.movedTo?{...n,status:"ok",message:`${y(e.url)} moved to ${e.movedTo}; MonitorDomainMoved takes over.`}:e.failStreak>=a?{...n,status:"firing",message:(0,r.H)(e)?`${g(e.url)} failed its check (${(0,r.H)(e)}) on ${a} consecutive checks.`:`${g(e.url)} returned ${e.lastStatus?`HTTP ${e.lastStatus}`:"no answer"} on ${a} consecutive checks.`}:{...n,status:0===e.failStreak&&e.lastCheckedAt?"ok":"unknown",message:`${g(e.url)} answers again.`}}),MonitorDomainMoved:e=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let t=v("MonitorDomainMoved",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel"});return e.movedTo?{...t,status:"firing",message:`${y(e.url)} is no longer a domain of ${e.appName}; production is on ${e.movedTo}.`}:{...t,status:"ok",message:`The monitor checks ${y(e.url)}, a domain of ${e.appName}.`}}),CollectorStale:(e,t)=>{let r=e.lastMinuteRunAt;return[v("CollectorStale","collector",{status:!r||e.now.getTime()-r.getTime()>(t??5)*6e4?"firing":"ok",title:"collector",message:r?`The last minute run finished ${f((e.now.getTime()-r.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(e,t)=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let r=v("HighLatency",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt});if(e.checksLast10<5||null===e.p95Last10)return r;let n=t??1500;return{...r,status:e.p95Last10>n?"firing":"ok",message:`p95 ${f(e.p95Last10)} ms over the last 10 minutes (limit ${f(n)} ms).`}}),DeploymentFailed:e=>e.apps.map(e=>{let t=v("DeploymentFailed",e.id,{resourceId:e.id,title:e.name,provider:"vercel"}),r=e.latestProduction;return r?"error"===r.state?{...t,status:"firing",message:`Production deployment ${r.sha?r.sha.slice(0,7):"(no commit)"} failed.`}:{...t,status:"building"===r.state?"unknown":"ok"}:{...t,status:"ok"}}),DatabasePaused:e=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(e=>v("DatabasePaused",e.id,{resourceId:e.id,title:e.name,provider:"supabase",status:"unknown"===e.state?"unknown":"paused"===e.state?"firing":"ok",message:`Supabase project ${e.name} is paused.`})),CertExpiringSoon:(e,t)=>e.domains&&e.domains.map(r=>{let n=v("CertExpiringSoon",r.id,{resourceId:r.id,title:r.name,provider:"cloudflare"});if(!r.tlsNotAfter)return n;let a=m(r.tlsNotAfter,e.now);return{...n,status:a<(t??14)?"firing":"ok",message:`The TLS certificate of ${r.name} expires in ${h(a,"day")}.`}}),DomainExpiringSoon:(e,t)=>e.domains&&e.domains.map(r=>{let n=v("DomainExpiringSoon",r.id,{resourceId:r.id,title:r.name,provider:"cloudflare"});if(!r.expiresAt)return n;let a=m(r.expiresAt,e.now);return{...n,status:a<(t??30)?"firing":"ok",message:`${r.name} expires in ${h(a,"day")}.`}}),StorageAlmostFull:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"!==e.provider).map(e=>{let r=v("StorageAlmostFull",e.id,{resourceId:e.id,title:e.name,provider:k(e)});if(null===e.sizeBytes||!e.sizeLimitBytes)return r;let n=e.sizeBytes/e.sizeLimitBytes*100;return{...r,status:n>(t??80)?"firing":"ok",message:`${e.name} uses ${f(e.sizeBytes/1e6)} MB of ${f(e.sizeLimitBytes/1e6)} MB (${f(n)}%).`}}),NeonComputeHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"neon"===e.provider).map(e=>{let r=v("NeonComputeHigh",e.id,{resourceId:e.id,title:e.name,provider:"neon"});return null===e.cuHours?r:{...r,status:e.cuHours>(t??80)?"firing":"ok",message:`${e.name} used ${f(e.cuHours)} of ${f(e.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"===e.provider).map(e=>{let r=v("FirestoreQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:"firebase"});if(e.quotaExhausted)return{...r,status:"firing",message:`${e.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===e.readsToday||!e.readsLimit)return!1===e.quotaExhausted?{...r,status:"ok"}:r;let n=e.readsToday/e.readsLimit*100;return{...r,status:n>(t??80)?"firing":"ok",message:`${e.name} read ${f(e.readsToday)} of ${f(e.readsLimit)} documents today (${f(n)}%).`}}),AutoPauseRisk:(e,t)=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(r=>{let n=v("AutoPauseRisk",r.id,{resourceId:r.id,title:r.name,provider:"supabase"});if("paused"===r.state)return{...n,status:"ok"};if(!r.lastApiAt)return n;let a=Math.floor((e.now.getTime()-r.lastApiAt.getTime())/864e5);return{...n,status:a>=(t??4)?"firing":"ok",message:`No API traffic for ${h(a,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:e=>e.dns&&e.dns.map(e=>v("DnsProxiedToVercel",e.id,{resourceId:e.resourceId,title:e.name,provider:"cloudflare",status:e.proxied&&e.pointsToVercel?"firing":"ok",message:`${e.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>_.has(e.provider)).map(e=>{let r=v("DbQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:k(e)});return null==e.quotaPct?r:{...r,status:e.quotaPct>(t??80)?"firing":"ok",message:`${e.name}: ${e.quotaLabel??"usage"} at ${f(e.quotaPct)}% of the free plan.`}}),ComputeHigh:(e,t)=>e.compute?e.compute.map(r=>{let a=v("ComputeHigh",r.id,{resourceId:r.id,title:r.name,provider:"supabase",sampleAt:r.latest?new Date(r.latest.at):null}),i=(0,n.B)(r.latest,(0,n.V)(t),e.now);return null===i?a:{...a,status:i.length?"firing":"ok",message:i.length?`${r.name}: ${i.join(", ")}.`:`${r.name} compute is back under the limits.`}}):null,CredentialExpiring:(e,t)=>e.accounts.map(r=>{let n=v("CredentialExpiring",r.id,{accountId:r.id,title:`${r.provider} \xb7 ${r.label}`,provider:r.provider});if("drive"===r.provider&&"error"===r.status&&r.lastError?.includes("invalid_grant"))return{...n,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!r.expiresAt)return{...n,status:"ok"};let a=m(r.expiresAt,e.now);return{...n,status:a<(t??14)?"firing":"ok",message:a<0?`The ${r.provider} credential ${r.label} has expired.`:`The ${r.provider} credential ${r.label} expires in ${h(a,"day")}.`}}),VulnerableDependency:e=>e.deps?e.deps.flatMap(t=>{let r=e.apps.find(e=>e.id===t.appId);if(!r)return[];let n=v("VulnerableDependency",t.appId,{resourceId:t.appId,title:r.name,provider:"github"});if(t.error)return[n];let i=(0,a.g)(t.vulns);return i?[{...n,status:"firing",message:(0,a.L)(t.vulns),..."critical"===i?{severity:"critical"}:{}}]:[{...n,status:"ok",message:`${r.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:e=>e.frameworks?e.frameworks.flatMap(t=>{let r=e.apps.find(e=>e.id===t.appId);if(!r)return[];let n=v("FrameworkVulnerable",t.appId,{resourceId:t.appId,title:r.name});return"ok"===t.status?[{...n,status:"ok",message:`${r.name} runs Next.js ${t.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===t.status&&t.findings.length?[{...n,status:"firing",message:p(t.version,t.findings),..."CRITICAL"===(0,i.N)(t.findings)?{severity:"critical"}:{}}]:[n]}):null};e.s(["f",0,function(e,r,n){let a=[],i=new Set;for(let o of r){if(!o.enabled||n&&!n.includes(o.key)||!t._[o.key])continue;let r=A[o.key](e,o.threshold);r&&(i.add(o.key),a.push(...r))}return{observations:a,evaluated:i}}],511394);let I=["MonitorDown","HighLatency"],S=["telegram","discord","webhook","smtp"],$=e=>e.channels.some(e=>S.includes(e));function T(e,t){return t.collectorStale&&"CollectorStale"!==e.rule?"CollectorStale":e.resourceId&&I.includes(e.rule)?t.mutedApps.get(e.resourceId)??null:null}let R=(e,t)=>"critical"===t&&"warning"===e?"critical":e,x=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime(),E=(e,t)=>`${e}|${t}`;e.s(["f",0,function(e,r,n,a,i){let o={open:[],touch:[],resolve:[]},s=new Map(a.map(e=>[e.key,e])),l=new Map(r.map(e=>[E(e.rule,e.subject),e])),u=new Set(e.map(e=>E(e.ruleKey,e.subject))),d=e=>o.resolve.push({id:e.id,pending:e.notifiedOpen?"resolve":null});for(let r of e){let e=s.get(r.ruleKey),a=l.get(E(r.ruleKey,r.subject));if(!e||!e.enabled){o.resolve.push({id:r.id,pending:null});continue}if(!n.has(r.ruleKey))continue;if(!a){o.resolve.push({id:r.id,pending:null});continue}if("unknown"===a.status)continue;let u=a.provider?i.incidents.get(a.provider)??null:null;if("firing"===a.status){let t=T(a,i),n=r.notifiedOpen&&null!==r.lastNotifiedAt&&i.now.getTime()-r.lastNotifiedAt.getTime()>=216e5,s={id:r.id,okStreak:0,lastSampleAt:a.sampleAt??r.lastSampleAt,lastSeenAt:i.now,message:a.message,causedBy:t,providerIncident:u},l=!r.notifiedOpen&&(!r.pendingSince||i.now.getTime()-r.pendingSince.getTime()>=216e5);(n||l)&&!x(r,i.now)&&!t&&null===r.pending&&$(e)&&(s.pending=n?"repeat":"open"),o.touch.push(s);continue}if(!t._[r.ruleKey].sampled||null===a.sampleAt){d(r);continue}if(!(null===r.lastSampleAt||a.sampleAt.getTime()>r.lastSampleAt.getTime()))continue;let c=r.okStreak+1;c>=2?d(r):o.touch.push({id:r.id,okStreak:c,lastSampleAt:a.sampleAt})}for(let e of r){if("firing"!==e.status||u.has(E(e.rule,e.subject))||i.maintenance.has(e.subject)||e.resourceId&&i.maintenance.has(e.resourceId))continue;let t=s.get(e.rule);if(!t)continue;let r=T(e,i);o.open.push({ruleKey:e.rule,subject:e.subject,resourceId:e.resourceId,accountId:e.accountId,severity:R(t.severity,e.severity),title:e.title,message:e.message,startedAt:i.now,lastSeenAt:i.now,lastSampleAt:e.sampleAt,causedBy:r,providerIncident:e.provider?i.incidents.get(e.provider)??null:null,pending:r||!$(t)?null:"open"})}return o}],944097)},129080,247714,e=>{var t=e.i(707866),r=e.i(35048),n=e.i(516464),a=e.i(788264),i=e.i(88316),o=e.i(549889),s=e.i(292178);e.s(["d",0,function(e,o){let l={id:e.id,name:e.name,state:e.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===e.kind){let t=(0,a.k)(a.B,e.data),r=(0,s.Z)(t.lastTrafficAt),n=(0,s.Z)(t.trafficAt),o=r??(n&&!t.trafficError?new Date(n.getTime()-6048e5):null);return{...l,provider:"supabase",sizeBytes:t.sizeBytes??null,sizeLimitBytes:i.R,lastApiAt:o}}if("neon_project"===e.kind){let t=(0,a.k)(a.s,e.data),r=(t.branches??[]).map(e=>e.logicalSize).filter(e=>"number"==typeof e);return{...l,provider:"neon",cuHours:null==t.computeSeconds?null:t.computeSeconds/3600,cuLimit:n.a.cuHours,sizeBytes:r.length?r.reduce((e,t)=>e+t,0):null,sizeLimitBytes:n.a.storageBytes}}if("firestore"===e.kind){let t=(0,a.k)(a.w,e.data),n=(0,s.Z)(t.opsAt),i=null!=t.reads&&n&&n.getTime()>=(0,r.a)(o).getTime()?t.reads:null,u=null!=t.latencyMs||null!=t.pingError;return{...l,provider:"firestore",readsToday:i,readsLimit:r.T.reads,quotaExhausted:u?"RESOURCE_EXHAUSTED"===t.pingReason:null}}if("turso_database"===e.kind){let r=(0,a.k)(a.N,e.data),n=(0,t.u)((0,t.G)(r,o));return{...l,provider:"turso",sizeBytes:r.orgStorageBytes??null,sizeLimitBytes:t.g.storageBytes,quotaPct:n?.pct??null,quotaLabel:n?`${n.label} ${n.text}`:null}}if("upstash_redis"===e.kind){let r=(0,a.k)(a.e,e.data),n=(0,t.u)((0,t.$)(r,o));return{...l,provider:"upstash",sizeBytes:r.storageBytes??null,sizeLimitBytes:t.W.storageBytes,quotaPct:n?.pct??null,quotaLabel:n?`${n.label} ${n.text}`:null}}if("d1_database"===e.kind){let r=(0,a.k)(a.x,e.data),n=(0,t.u)((0,t.I)(r,o));return{...l,provider:"d1",sizeBytes:r.sizeBytes??null,sizeLimitBytes:t.M.dbBytes,quotaPct:n?.pct??null,quotaLabel:n?`${n.label} ${n.text}`:null}}return null},"S",0,function(e,t){let r=e.filter(e=>Array.isArray(e.data.records));if(!r.length)return null;let n=e.map(e=>e.name),a=[];for(let e of r){let r=t.filter(t=>(0,s.J)(t.name,n)===e.name.toLowerCase().replace(/\.$/,"")),i=[...new Set(r.flatMap(e=>(0,o.q)(e.data).vercel?.recommendedIps??[]))];for(let t of(0,o.q)(e.data).records){if(!(0,s.l)(t,i))continue;let n=t.name.toLowerCase().replace(/\.$/,""),o=r.find(e=>e.name.toLowerCase().replace(/\.$/,"")===n);a.push({id:`${e.id}:${t.id}`,resourceId:o?.id??e.id,name:t.name,proxied:t.proxied,pointsToVercel:!0})}}return a},"r",0,function(e,t){return e.length||t.length?[...e.map(e=>({id:e.id,name:e.name,tlsNotAfter:null,expiresAt:(0,s.Z)((0,o.q)(e.data).rdap?.expiresAt)})),...t.map(e=>({id:e.id,name:e.name,tlsNotAfter:(0,s.Z)((0,o.q)(e.data).tls?.notAfter),expiresAt:null}))]:null}],129080);var l=e.i(336763),u=e.i(396918),d=e.i(406212),c=e.i(530298);async function p(){let[e]=await (0,d.db)().select({at:c.collectorRuns.finishedAt}).from(c.collectorRuns).where((0,l.and)((0,l.isNotNull)(c.collectorRuns.finishedAt),(0,l.inArray)(c.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,u.desc)(c.collectorRuns.finishedAt)).limit(1);return e?.at??null}async function f(){let[e]=await (0,d.db)().select({at:c.collectorRuns.finishedAt}).from(c.collectorRuns).where((0,l.and)((0,l.isNotNull)(c.collectorRuns.finishedAt),(0,l.inArray)(c.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,u.desc)(c.collectorRuns.finishedAt)).limit(1);return e?.at??null}e.s(["D",0,p,"d",0,f],247714)},188477,e=>{let t=/^[A-Za-z0-9_.-]{1,64}$/,r={supabase:"db:supabase",neon:"db:neon",firebase:"db:firebase",extraDbs:"db:extra",zones:"net:zones",domains:"net:domains",status:"status"},n=Object.values(r),a={supabase_project:r.supabase,neon_project:r.neon,firestore:r.firebase,turso_database:r.extraDbs,upstash_redis:r.extraDbs,d1_database:r.extraDbs},i={supabase:[r.supabase],supabaseUsage:[r.supabase],neon:[r.neon],firebase:[r.firebase],firebaseUsage:[r.firebase],extraDbs:[r.extraDbs],cloudflare:[r.zones,r.domains],domains:[r.zones,r.domains],tls:[r.zones,r.domains],rdap:[r.zones,r.domains],eol:[r.zones,r.domains],status:[r.status]},o="__ocDate",s="__ocMap";e.s(["t",0,n,"k",0,300,"G",0,a,"m",0,r,"l",0,function(e){let r=[e.VERCEL_DEPLOYMENT_ID,e.VERCEL_GIT_COMMIT_SHA,e.NEXT_DEPLOYMENT_ID].find(e=>void 0!==e&&""!==e);return`${void 0!==r&&t.test(r)?r:"local"}.v5`},"Q",0,function e(t){return t instanceof Date?{[o]:t.toISOString()}:t instanceof Map?{[s]:[...t.entries()].map(([t,r])=>[e(t),e(r)])}:Array.isArray(t)?t.map(e):t&&"object"==typeof t?Object.fromEntries(Object.entries(t).filter(([,e])=>void 0!==e).map(([t,r])=>[t,e(r)])):void 0===t?null:t},"o",0,function(e){return[...new Set(e.flatMap(e=>i[e]??[]))]},"z",0,function(e){let t=e=>Array.isArray(e)?e.map(t):e&&"object"==typeof e?"string"==typeof e[o]&&1===Object.keys(e).length?new Date(e[o]):Array.isArray(e[s])&&1===Object.keys(e).length?new Map(e[s].map(([e,r])=>[t(e),t(r)])):Object.fromEntries(Object.entries(e).map(([e,r])=>[e,t(r)])):e;return t(e)}])},599040,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(978071),a=e.i(542746),i=e.i(90879);let o=t.z.object({COLLECTOR_SECRET:r.z.string().min(32),CRON_SECRET:r.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:r.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:r.z.string().min(10)}),s=o.extend({QSTASH_CURRENT_SIGNING_KEY:n.z.union([a.z.literal(""),r.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:n.z.union([a.z.literal(""),r.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,i.mode)(e)?s:o).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},122603,149398,809816,e=>{var t=e.i(300794);let r=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[\d{1,6}\])*$/,n=new Set(["__proto__","prototype","constructor"]),a=e=>e.length>40?`${e.slice(0,39)}…`:e;function i(e,t,i){let o;if("contains"===e.kind)return t.includes(e.text)?null:i?"Keyword not found in the first 256 KB":"Keyword not found";try{o=JSON.parse(t)}catch{return i?"Response is larger than 256 KB":"Response isn't JSON"}let s=function(e){if(!r.test(e))return null;let t=[];for(let r of e.matchAll(/([A-Za-z_$][\w$]*)|\[(\d+)\]/g))t.push(void 0!==r[1]?r[1]:Number(r[2]));return t.some(e=>"string"==typeof e&&n.has(e))?null:t}(e.path);if(!s)return`JSON ${e.path} is missing`;let l=function(e,t){let r=e;for(let e of t)if("number"==typeof e){if(!Array.isArray(r)||e>=r.length)return{found:!1};r=r[e]}else{if(!r||"object"!=typeof r||Array.isArray(r)||!Object.hasOwn(r,e))return{found:!1};r=r[e]}return{found:!0,value:r}}(o,s);return l.found?("string"==typeof l.value?l.value:JSON.stringify(l.value))===e.equals?null:`JSON ${e.path} is ${a(JSON.stringify(l.value)??"undefined")}, expected "${a(e.equals)}"`:`JSON ${e.path} is missing`}e.s(["Q",0,262144,"$",0,i,"C",0,function(e){return e.bodyContains?{kind:"contains",text:e.bodyContains}:e.jsonPath&&null!==e.jsonEquals?{kind:"json",path:e.jsonPath,equals:e.jsonEquals}:null}],149398);let o=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function s(e){let t=o.exec(e);if(!t)return null;let r=t.slice(1).map(Number);return r.every(e=>e<=255)?r:null}function l([e,t,r]){return 0===e||10===e||127===e||e>=224||100===e&&t>=64&&t<=127||169===e&&254===t||172===e&&t>=16&&t<=31||192===e&&0===t&&0===r||192===e&&168===t||198===e&&(18===t||19===t)}function u(e){let t=e.split("%")[0].toLowerCase();if(!t.includes(":"))return null;if(-1!==t.lastIndexOf(".")){let e=t.lastIndexOf(":"),r=s(t.slice(e+1));if(!r)return null;t=`${t.slice(0,e+1)}${(r[0]<<8|r[1]).toString(16)}:${(r[2]<<8|r[3]).toString(16)}`}let r=t.split("::");if(r.length>2)return null;let n=e=>""===e?[]:e.split(":"),a=n(r[0]),i=2===r.length?n(r[1]):[],o=8-a.length-i.length;if(1===r.length?0!==o:o<1)return null;let l=[...a,...Array(2===r.length?o:0).fill("0"),...i];return 8===l.length&&l.every(e=>/^[0-9a-f]{1,4}$/.test(e))?l.map(e=>parseInt(e,16)):null}function d(e){if(e.slice(0,6).every(e=>0===e)||e.slice(0,5).every(e=>0===e)&&65535===e[5]||e.slice(0,4).every(e=>0===e)&&65535===e[4]&&0===e[5]||100===e[0]&&65435===e[1]&&e.slice(2,6).every(e=>0===e)||100===e[0]&&65435===e[1]&&1===e[2])return!0;if(8194===e[0]){let t,r;return l([(t=e[1])>>8,255&t,(r=e[2])>>8,255&r])}return(65024&e[0])==64512||(65472&e[0])==65152||(65472&e[0])==65216||(65280&e[0])==65280}function c(e){let t=s(e);if(t)return l(t);let r=u(e);return!r||d(r)}function p(e){let t=e.trim().toLowerCase();if(t.startsWith("[")&&t.endsWith("]")){let e=u(t.slice(1,-1));return!e||d(e)}if(t.endsWith(".")&&(t=t.slice(0,-1)),!t)return!0;let r=s(t);if(r)return l(r);let n=t.slice(t.lastIndexOf(".")+1);return!(!/^(\d+|0x[0-9a-f]*)$/.test(n)&&t.includes("."))||"localhost"===t||/\.(localhost|local|internal)$/.test(t)||t.endsWith(".home.arpa")}function f(e){return"https:"!==e.protocol||e.username||e.password?"scheme":""!==e.port&&"443"!==e.port||p(e.hostname)?"blocked":null}e.s(["N",0,p,"W",0,c,"_",0,f],809816);let m=new Set([301,302,303,307,308]),h={ok:!1,statusCode:null,latencyMs:null,error:"Blocked address"};async function g(e){return(await (0,t.lookup)(e,{all:!0,verbatim:!0})).map(e=>e.address)}let y=e=>e.startsWith("[")||/^\d+\.\d+\.\d+\.\d+$/.test(e),b=e=>e.toLowerCase().replace(/^www\./,"");async function w(e,t,r,n){let a,i=t.lookup??g;try{a=new URL(e)}catch{return{refused:"blocked"}}let o=a;for(let e=0;;e++){var s,l;if(f(a))return{refused:"blocked"};if(t.sameOrigin&&(s=a,l="www"===t.sameOrigin,s.origin!==o.origin&&(!l||s.protocol!==o.protocol||s.port!==o.port||b(s.hostname)!==b(o.hostname))))return{refused:"origin"};if(!y(a.hostname)){let e=await Promise.race([i(a.hostname),n]);if(!e.length)throw Error("no address");if(e.some(c))return{refused:"blocked"}}r.throwIfAborted();let u=await (t.fetch??fetch)(a.toString(),{method:"GET",redirect:"manual",cache:"no-store",headers:{...t.headers,"User-Agent":t.userAgent??"OpsConsole-Uptime/1.0 (+https://watchbell.west-solutions.web.id)"},signal:r}),d=m.has(u.status)?u.headers.get("location"):null;if(null===d)return{res:u,url:a};if(await u.body?.cancel().catch(()=>void 0),e>=20)return{refused:"redirects"};try{a=new URL(d,a)}catch{return{refused:"blocked"}}}}function v(e){let t=new Promise((t,r)=>{e.aborted?r(e.reason):e.addEventListener("abort",()=>r(e.reason),{once:!0})});return t.catch(()=>void 0),t}function k(e,t){if(e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name))return`No answer within ${_(t)}`;let r=e instanceof TypeError&&e.cause instanceof Error?e.cause.message:"";return/redirect/i.test(r)?"Too many redirects":"Couldn't connect"}let _=e=>e<1e3?`${e} ms`:`${Math.round(e/1e3)} s`,A="Redirected to another site",I={blocked:"Blocked address",redirects:"Too many redirects",origin:A},S="DEPLOYMENT_NOT_FOUND";async function $(e,t={}){let r=t.timeoutMs??5e3,n=t.clock??(()=>performance.now()),a=n(),o=AbortSignal.timeout(r);try{let s,l=await w(e,t,o,v(o));if("refused"in l)return"blocked"===l.refused?h:{ok:!1,statusCode:null,latencyMs:null,error:I[l.refused]};let u=Math.round(n()-a),d=l.res.status===(t.expectedStatus??200);if(!d||!t.body){let e;return await l.res.body?.cancel().catch(()=>void 0),{ok:d,statusCode:l.res.status,latencyMs:u,error:d?null:`HTTP ${l.res.status}${(e=l.res,/^vercel$/i.test(e.headers.get("server")?.trim()??"")&&e.headers.get("x-vercel-error")?.trim()===S)?` \xb7 ${S}`:""}`}}try{s=await R(l.res,262144,v(o))}catch(e){return{ok:!1,statusCode:l.res.status,latencyMs:u,error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Body not read within ${_(r)}`:"Body couldn't be read"}}let c=i(t.body,new TextDecoder().decode(s.bytes),s.truncated);return{ok:null===c,statusCode:l.res.status,latencyMs:u,error:c}}catch(e){return{ok:!1,statusCode:null,latencyMs:null,error:k(e,r)}}}async function T(e,t={}){let r=t.timeoutMs??1e4,n=t.maxBytes??3145728,a=t.signal?AbortSignal.any([AbortSignal.timeout(r),t.signal]):AbortSignal.timeout(r),i=v(a);try{let r=await w(e,t,a,i);if("refused"in r)return{ok:!1,error:I[r.refused]};let{bytes:o,truncated:s}=await R(r.res,n,i),l=new TextDecoder().decode(o);return{ok:!0,status:r.res.status,url:r.url.toString(),body:l,truncated:s}}catch(e){return{ok:!1,error:k(e,r)}}}async function R(e,t,r){let n=e.body?.getReader(),a=[],i=0,o=!1;if(n)try{for(;;){let{done:e,value:s}=await Promise.race([n.read(),r]);if(e)break;let l=t-i;if(s.byteLength>l){a.push(s.subarray(0,l)),o=!0;break}if(a.push(s),(i+=s.byteLength)===t){o=!(await Promise.race([n.read(),r])).done;break}}}finally{n.cancel().catch(()=>void 0)}return{bytes:Buffer.concat(a),truncated:o}}async function x(e,t,r){let n=Array(e.length),a=0;async function i(){for(;a<e.length;){let t=a++;n[t]=await r(e[t])}}return await Promise.all(Array.from({length:Math.min(Math.max(1,t),e.length)},i)),n}e.s(["l",0,A,"X",0,v,"b",0,$,"P",0,x,"z",0,R,"K",0,T],122603)},467404,628852,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(816173);let i=(e,r)=>null===r?(0,t.isNull)(e):(0,t.eq)(e,r);async function o(e,o,s){let l=(0,a.G)(e.failStreak,o);return(await (0,r.db)().update(n.monitors).set({state:l.state,failStreak:l.failStreak,lastCheckedAt:s,lastStatus:o.statusCode,lastLatencyMs:o.latencyMs,lastError:o.error,...l.state!==e.state?{stateSince:s}:{},updatedAt:s}).where((0,t.and)((0,t.eq)(n.monitors.id,e.id),null===e.lastCheckedAt?(0,t.isNull)(n.monitors.lastCheckedAt):(0,t.eq)(n.monitors.lastCheckedAt,e.lastCheckedAt),(0,t.eq)(n.monitors.state,e.state),(0,t.eq)(n.monitors.failStreak,e.failStreak),(0,t.eq)(n.monitors.url,e.url),(0,t.eq)(n.monitors.expectedStatus,e.expectedStatus),i(n.monitors.bodyContains,e.bodyContains),i(n.monitors.jsonPath,e.jsonPath),i(n.monitors.jsonEquals,e.jsonEquals))).returning({id:n.monitors.id})).length>0}e.s(["T",0,i,"j",0,o],467404);let s={heartbeats:60,checks:60,vercel:60,supabase:300,supabaseUsage:3600,neon:300,firebase:300,firebaseUsage:3600,extraDbs:3600,cloudflare:3600,domains:21600,tls:3600,rdap:3600,eol:86400,status:300,logs:300,pageviews:1800,node:43200,security:21600,alerts:60,digest:300},l={supabase:0,digest:0,neon:60,firebase:120,status:180,logs:240,pageviews:1620,supabaseUsage:660,extraDbs:960,firebaseUsage:1320,cloudflare:1980,tls:2460,rdap:3120,domains:5280,eol:13560,node:13380,security:16560};function u(e,t){let r=1e3*s[e],n=(l[e]??0)*1e3;return Math.floor((t.getTime()+5e3-n)/r)*r+n}let d={status:6e3,logs:9e3,pageviews:9e3,digest:6e3,eol:6e3,node:6e3,security:11e3},c={heartbeats:"hosting",checks:"hosting",vercel:"hosting",cloudflare:"hosting",domains:"hosting",tls:"hosting",rdap:"hosting",logs:"hosting",pageviews:"hosting",supabase:"database",supabaseUsage:"database",neon:"database",firebase:"database",firebaseUsage:"database",extraDbs:"database",eol:null,node:null,status:null,alerts:null,digest:null,security:null},p={security:["hosting","devops"]},f=["supabase"];function m(e,t){return e.filter(e=>{let r=p[e];if(r)return r.some(e=>!t.has(e));let n=c[e];return null===n||!t.has(n)||f.includes(e)})}e.s(["X",0,3e3,"p",0,2e4,"d",0,55e3,"u",0,["alerts","digest"],"O",0,5e4,"P",0,function(e,t,r){let n=Math.min(e,t-r);return n<1e3?null:n},"S",0,function(e,t,r,n=new Set){let a=0;return m(Object.keys(s),n).filter(n=>{let i=e[n]?new Date(e[n]).getTime():null;if(s[n]<=60)return null===i||!!r||t.getTime()-i>=1e3*s[n]-1e4;let o=u(n,t);return(null===i||!(i>=o-5e3))&&(!(null===i||t.getTime()+5e3-o>=6e4)||!(a>=2)&&(a++,!0))})},"$",0,(e,t)=>{let r=c[e];return null!==r&&t.has(r)&&f.includes(e)},"B",0,function(e,t,r){return!r||!e||t.getTime()-e.getTime()>=5e4},"G",0,u,"z",0,function(e,t,r){return t-r>=(d[e]??0)},"_",0,function(e,t,r=new Set){if(!t||e.includes("security")||!m(["security"],r).length)return{due:[...e],early:!1};let n=Object.keys(s),a=e.findIndex(e=>n.indexOf(e)>n.indexOf("security")),i=[...e];return i.splice(a<0?i.length:a,0,"security"),{due:i,early:!0}}],628852)},732077,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(483324),i=e.i(348657);let o="deps.lockfileDispatched";async function s(){let[e]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,a.h)).limit(1);return(0,a.g)(e?.value).repo}async function l(e,u,d=new Date){try{let l=await s();if(!l)return{sent:!1,why:"no actions repository"};let c=(0,a.C)(u);if(!c)return{sent:!1,why:"invalid"};let p=await (0,i.B)(e,l,c);if(!p.ok)return{sent:!1,why:p.error};let[f]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,o)).limit(1),m=f?.value&&"object"==typeof f.value?f.value:{},h={...Object.fromEntries(Object.entries(m).filter(([,e])=>d.getTime()-Date.parse(e)<864e5)),[`${u.repo}#${u.branch}`]:d.toISOString()};return await (0,r.db)().insert(n.settings).values({key:o,value:h}).onConflictDoUpdate({target:n.settings.key,set:{value:h,updatedAt:d}}),{sent:!0}}catch(e){return console.warn("deps: lockfile dispatch failed:",e instanceof Error?e.name:"error"),{sent:!1,why:"error"}}}async function u(e,i,s=new Date){try{let[l]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,o)).limit(1),u=l?.value?.[`${e}#${i}`];return!!u&&s.getTime()-Date.parse(u)<a.w}catch{return!1}}e.s(["W",0,u,"U",0,l])},123603,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(129080),s=e.i(247714),l=e.i(366171),u=e.i(978196),d=e.i(889234),c=e.i(584820);async function p(){return(0,a.db)().select({appId:i.links.fromResourceId,dbId:i.links.toResourceId}).from(i.links).where((0,t.eq)(i.links.kind,"uses_db")).limit(500)}async function f(e){let f=(0,t.and)((0,t.eq)(i.resources.monitored,!0),(0,t.isNull)(i.resources.goneAt)),[m,h,g,y,b]=await Promise.all([(0,s.d)(),(0,s.D)(),(0,a.db)().select({m:i.monitors,appName:i.resources.name,appMeta:i.resources.meta}).from(i.monitors).innerJoin(i.resources,(0,t.eq)(i.resources.id,i.monitors.resourceId)).where((0,t.and)(f,(0,t.eq)(i.monitors.paused,!1),(0,t.eq)(i.monitors.ownerPaused,!1))),(0,a.db)().select({id:i.resources.id,name:i.resources.name,meta:i.resources.meta}).from(i.resources).where((0,t.and)(f,(0,t.eq)(i.resources.kind,"app"))),(0,a.db)().select({id:i.accounts.id,provider:i.accounts.provider,label:i.accounts.label,expiresAt:i.accounts.expiresAt,status:i.accounts.status,lastError:i.accounts.lastError}).from(i.accounts)]),w=g.map(e=>e.m.id),v=w.length?await (0,a.db)().select({id:i.checks.monitorId,n:n.sql`count(*)::int`,p95:n.sql`percentile_cont(0.95) within group (order by ${i.checks.latencyMs})::float8`}).from(i.checks).where((0,t.and)((0,t.inArray)(i.checks.monitorId,w),(0,t.gte)(i.checks.at,new Date(e.getTime()-6e5)),(0,t.eq)(i.checks.inMaintenance,!1))).groupBy(i.checks.monitorId):[],k=y.map(e=>e.id),_=k.length?await (0,a.db)().selectDistinctOn([i.deployments.resourceId],{appId:i.deployments.resourceId,state:i.deployments.state,sha:i.deployments.commitSha,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,t.and)((0,t.inArray)(i.deployments.resourceId,k),(0,t.eq)(i.deployments.target,"production"))).orderBy(i.deployments.resourceId,(0,r.desc)(i.deployments.createdAtProvider)):[],A=await (0,a.db)().select({id:i.resources.id,name:i.resources.name,kind:i.resources.kind,state:i.snapshots.state,data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.eq)(i.snapshots.resourceId,i.resources.id)).where((0,t.and)(f,(0,t.inArray)(i.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),I=e=>A.filter(t=>t.kind===e),S=A.filter(e=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(e.kind)),$=I("zone"),T=I("domain"),R=await p(),x=await (0,l.Y)().catch(()=>null),E=k.length?await (0,d.a)(k).catch(()=>null):null,N=k.length?await (0,c.F)(k).catch(()=>null):null;return{now:e,lastMinuteRunAt:m,lastAnyRunAt:h,monitors:g.map(({m:e,appName:t,appMeta:r})=>{let n=v.find(t=>t.id===e.id),a="heartbeat"===e.kind;return{id:e.id,appId:e.resourceId,appName:t,url:a?e.name??"heartbeat":e.url,kind:a?"heartbeat":"http",state:e.state,failStreak:e.failStreak,lastStatus:e.lastStatus,lastError:e.lastError,lastCheckedAt:e.lastCheckedAt,p95Last10:n?.p95??null,checksLast10:n?.n??0,movedTo:a?null:(0,u.u)(e.url,{name:t,meta:r},y.filter(t=>t.id!==e.resourceId),{lastError:e.lastError})?.to??null}}),apps:y.map(e=>{let t=_.find(t=>t.appId===e.id);return{id:e.id,name:e.name,latestProduction:t?{state:t.state,sha:t.sha,createdAt:t.createdAt}:null}}),accounts:b,dbs:S.length?S.map(t=>(0,o.d)(t,e)).filter(e=>null!==e):null,domains:(0,o.r)($,T),dns:(0,o.S)($,T),links:R,compute:x,deps:E&&E.length?E:null,frameworks:N&&N.length?N:null}}e.s(["f",0,f])},234195,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(516506),s=e.i(511394),l=e.i(944097),u=e.i(764266),d=e.i(873083),c=e.i(123603),p=e.i(706959),f=e.i(638809);let m={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function h(){return(await (0,a.db)().select().from(i.alertRules)).filter(e=>(0,o.h)(e.key)).map(e=>({key:e.key,severity:e.severity,threshold:e.threshold,enabled:e.enabled,channels:e.channels}))}async function g(e,r={}){let[n,y,b,w,v,k]=await Promise.all([(0,c.f)(e),h(),(0,a.db)().select().from(i.alerts).where((0,t.isNull)(i.alerts.resolvedAt)),(0,a.db)().select({provider:i.providerStatus.provider,state:i.providerStatus.state}).from(i.providerStatus),(0,p.f)(),(0,f.I)()]),_=new Map(n.accounts.map(e=>[e.id,e.provider])),A=b.filter(e=>!(0,d.O)(k,e.ruleKey,e.accountId?_.get(e.accountId):null)),I=(0,s.f)(n,y,r.only),S=I.evaluated,$=I.observations.filter(e=>!(0,d.O)(k,e.rule,e.provider)),T=y.find(e=>"CollectorStale"===e.key),R=void 0===n.lastAnyRunAt?n.lastMinuteRunAt:n.lastAnyRunAt,x=!!T?.enabled&&(!R||e.getTime()-R.getTime()>(T.threshold??5)*6e4),E=new Map((n.dbs??[]).filter(e=>"paused"===e.state).map(e=>[e.id,e.name])),N=new Map(n.links.filter(e=>E.has(e.dbId)).map(e=>[e.appId,`DatabasePaused \xb7 ${E.get(e.dbId)}`])),P=new Map(w.filter(e=>"warn"===e.state||"err"===e.state).map(e=>["gcp"===e.provider?"firebase":e.provider,m[e.provider]??e.provider])),O=(0,u.u)(v,n.monitors.map(e=>({id:e.id,appId:e.appId})),e,n.apps.map(e=>e.id)),C=A.filter(e=>(0,o.h)(e.ruleKey)).map(e=>({id:e.id,ruleKey:e.ruleKey,subject:e.subject,okStreak:e.okStreak,lastSampleAt:e.lastSampleAt,silencedUntil:e.silencedUntil,silencedUntilResolved:e.silencedUntilResolved,notifiedOpen:e.notifiedOpen,lastNotifiedAt:e.lastNotifiedAt,pending:e.pending,pendingSince:e.pendingSince})),j=(0,l.f)(C,$,S,y,{now:e,collectorStale:x,mutedApps:N,incidents:P,maintenance:O});return j.open.length||j.touch.length||j.resolve.length?(await (0,a.db)().transaction(async r=>{for(let t of j.open)await r.insert(i.alerts).values({...t,pendingSince:t.pending?e:null}).onConflictDoNothing();for(let n of j.touch){let{id:a,pending:o,...s}=n;await r.update(i.alerts).set({...s,...o?{pending:o,pendingSince:e}:{}}).where((0,t.and)((0,t.eq)(i.alerts.id,a),(0,t.isNull)(i.alerts.resolvedAt)))}for(let n of j.resolve)await r.update(i.alerts).set({resolvedAt:e,pending:n.pending,pendingSince:n.pending?e:null}).where((0,t.and)((0,t.eq)(i.alerts.id,n.id),(0,t.isNull)(i.alerts.resolvedAt)))}),{opened:j.open.length,resolved:j.resolve.length}):{opened:0,resolved:0}}let y=n.sql`case ${i.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function b(e=new Set){return(await (0,a.db)().select({a:i.alerts,name:i.resources.name,kind:i.resources.kind}).from(i.alerts).leftJoin(i.resources,(0,t.eq)(i.resources.id,i.alerts.resourceId)).where((0,t.and)((0,t.isNull)(i.alerts.resolvedAt),(0,f.s)(e))).orderBy(y,(0,r.desc)(i.alerts.startedAt)).limit(200)).map(({a:e,name:t,kind:r})=>({...e,resourceName:t??null,resourceKind:r??null}))}async function w(){return b(await (0,f.I)())}e.s(["$",0,g,"q",0,b,"i",0,w])},503313,e=>{var t=e.i(396918),r=e.i(336763),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(760859);async function s(){let[e,s]=await Promise.all([(0,a.db)().select({id:i.resources.id,kind:i.resources.kind,name:i.resources.name,firstSeenAt:i.resources.firstSeenAt,parentId:i.resources.parentId,team:n.sql`${i.resources.meta}->>'teamSlug'`}).from(i.resources).where((0,r.inArray)(i.resources.kind,["app","supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"])).orderBy((0,t.asc)(i.resources.firstSeenAt),(0,t.asc)(i.resources.id)).limit(2e3),(0,a.db)().select({id:i.accounts.id,label:i.accounts.label,createdAt:i.accounts.createdAt}).from(i.accounts).orderBy((0,t.asc)(i.accounts.createdAt),(0,t.asc)(i.accounts.id)).limit(200)]);return(0,o.n)(e,s)}e.s(["f",0,s])},595262,e=>{var t=e.i(333407);async function r(e){await (0,t.f)([{type:"action",kind:e.kind,message:e.message,detail:e.detail??null,resourceId:e.resourceId,actorUserId:e.actorUserId,at:new Date}])}e.s(["f",0,r])},589878,e=>{var t=e.i(668304),r=e.i(188477),n=e.i(90879),a=e.i(503313),i=e.i(586307),o=e.i(827439),s=e.i(147100);let l=(0,r.l)(process.env);function u(e,a,i){let o=(0,t.unstable_cache)(async(...e)=>(0,r.Q)(await a(...e)),["ops",l,...e],{revalidate:r.k,tags:i});return async(...e)=>(0,n.isCloud)()?(0,r.z)(await o(...e)):a(...e)}Object.fromEntries(Object.keys(r.G).map(e=>[e,u(["listDatabases",e],()=>i.R(e),[r.G[e]])])),u(["supabaseSlotInputs"],()=>i.V(),[r.m.supabase]),u(["databaseOptions"],()=>i.S(),[r.m.supabase,r.m.neon,r.m.firebase,r.m.extraDbs]),u(["listDomains"],()=>o.p(),[r.m.domains,r.m.zones]),u(["listZoneOptions"],()=>o.c(),[r.m.zones]),u(["getZoneView"],e=>o.j(e),[r.m.zones]);let d=u(["aliasBook"],()=>a.f(),[r.m.supabase,r.m.neon,r.m.firebase,r.m.extraDbs,r.m.zones,r.m.domains]);u(["providerStatus"],()=>s.B(),[r.m.status]),e.s(["f",0,d])},586307,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(203868),i=e.i(788264),o=e.i(857799),s=e.i(70377);async function l(e){let a=await (0,r.db)().select({r:n.resources,s:n.snapshots,account:n.accounts.label}).from(n.resources).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.eq)(n.resources.kind,e),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt))).orderBy(n.resources.name).limit(s.O.databases);if(!a.length)return[];let i=await (0,r.db)().select({dbId:n.links.toResourceId,id:n.resources.id,name:n.resources.name}).from(n.links).innerJoin(n.resources,(0,t.eq)(n.resources.id,n.links.fromResourceId)).where((0,t.and)((0,t.eq)(n.links.kind,"uses_db"),(0,t.inArray)(n.links.toResourceId,a.map(e=>e.r.id)))).orderBy(n.resources.name).limit(s.O.apps);return a.map(({r:t,s:r,account:n})=>({id:t.id,name:t.name,externalId:t.externalId,kind:e,account:n,state:r?.state??"unknown",stateSince:r?.stateSince??null,collectedAt:r?.collectedAt??null,data:r?.data??{},usedBy:i.filter(e=>e.dbId===t.id).map(({id:e,name:t})=>({id:e,name:t}))}))}async function u(){let e=await (0,r.db)().select({r:n.resources,s:n.snapshots,account:n.accounts.label}).from(n.resources).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.eq)(n.resources.kind,"supabase_project"),(0,t.isNull)(n.resources.goneAt))).limit(s.O.databases),a=new Map;for(let{s:t}of e){let e=(0,i.k)(i.B,t?.data);e.orgSlug&&void 0!==e.freeOrg&&a.set(e.orgSlug,e.freeOrg)}return e.map(({r:e,s:t,account:r})=>{let n=(0,i.k)(i.B,t?.data),o=n.orgSlug??("string"==typeof e.meta.orgSlug?e.meta.orgSlug:null);return{id:e.id,account:r,name:e.name,status:n.status??("string"==typeof e.meta.status?e.meta.status:"UNKNOWN"),freeOrg:n.freeOrg??(o?a.get(o)??null:null)}})}async function d(){return(await (0,r.db)().select({id:n.resources.id,name:n.resources.name,kind:n.resources.kind,externalId:n.resources.externalId,account:n.accounts.label,data:n.snapshots.data}).from(n.resources).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.inArray)(n.resources.kind,[...o.H]),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt))).orderBy(n.resources.name).limit(s.O.databases)).map(e=>(0,a.f)({...e,kind:e.kind}))}async function c(e){return e.length?new Map((await (0,r.db)().select({app:n.links.fromResourceId,id:n.resources.id,externalId:n.resources.externalId,name:n.resources.name,kind:n.resources.kind,account:n.accounts.label,state:n.snapshots.state}).from(n.links).innerJoin(n.resources,(0,t.eq)(n.resources.id,n.links.toResourceId)).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.eq)(n.links.kind,"uses_db"),(0,t.inArray)(n.links.fromResourceId,e),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt))).limit(s.O.apps)).map(e=>[e.app,{id:e.id,externalId:e.externalId,name:e.name,kind:e.kind,account:e.account,state:e.state??"unknown"}])):new Map}e.i(595262),e.s(["S",0,d,"F",0,c,"R",0,l,"V",0,u])},889234,e=>{var t=e.i(79068),r=e.i(336763),n=e.i(396918),a=e.i(533102),i=e.i(406212),o=e.i(530298),s=e.i(803237),l=e.i(93387),u=e.i(802641),d=e.i(461315),c=e.i(382966),p=e.i(618664),f=e.i(974034),m=e.i(819263),h=e.i(38607),g=e.i(736337),y=e.i(958948);async function b(){let[e]=await (0,i.db)().select().from(o.accounts).where((0,r.eq)(o.accounts.provider,"github")).orderBy((0,n.asc)(o.accounts.createdAt)).limit(1);if(!e)return{error:"GitHub isn't connected."};let t=(0,s.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,l.serverEnv)().OPS_ENCRYPTION_KEY);return t?{token:t,accountId:e.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function w(){let[e]=await (0,i.db)().select({value:o.settings.value}).from(o.settings).where((0,r.eq)(o.settings.key,"deps.scanAll")).limit(1);return e?.value===!0}let v=e=>{let t=(0,g.w)(e);return{dir:(0,f.Q)((e??{}).rootDirectory),unsupported:(0,f.l)((e??{}).rootDirectoryUnsupported),branch:(0,g.i)((0,g.V)(e),null),...t?{fallback:t}:{}}};async function k(e){let t=[...new Set(e.filter(u.f))],n=new Map;if(!t.length)return n;let a=await (0,i.db)().select({repoId:o.appRepos.repoId,name:o.resources.name,monitored:o.resources.monitored,meta:o.resources.meta}).from(o.appRepos).innerJoin(o.resources,(0,r.eq)(o.resources.id,o.appRepos.appId)).where((0,r.and)((0,r.inArray)(o.appRepos.repoId,t),(0,r.isNull)(o.resources.goneAt))).limit(1e3);for(let e of(a.sort((e,t)=>Number(!!t.monitored)-Number(!!e.monitored)||(e.name<t.name?-1:+(e.name>t.name))),a))n.has(e.repoId)||n.set(e.repoId,v(e.meta));return n}async function _(){let e={id:o.githubRepos.id,fullName:o.githubRepos.fullName,defaultBranch:o.githubRepos.defaultBranch,scannedAt:o.dependencyScans.scannedAt},t=(0,r.and)((0,r.isNull)(o.githubRepos.goneAt),(0,r.eq)(o.githubRepos.archived,!1)),n=await w()?await (0,i.db)().select(e).from(o.githubRepos).leftJoin(o.dependencyScans,(0,r.eq)(o.dependencyScans.repoId,o.githubRepos.id)).where(t).limit(500):await (0,i.db)().selectDistinct(e).from(o.appRepos).innerJoin(o.githubRepos,(0,r.eq)(o.githubRepos.id,o.appRepos.repoId)).leftJoin(o.dependencyScans,(0,r.eq)(o.dependencyScans.repoId,o.githubRepos.id)).where(t).limit(500),a=n.length?await k(n.map(e=>e.id)):new Map;return(0,m.M)(n.map(e=>{let t=a.get(e.id);return{...e,rootDir:t?.dir??null,rootDirUnsupported:t?.unsupported??null,prodBranch:t?.branch??null,...t?.fallback?{prodFallback:t.fallback}:{}}}))}let A=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e;async function I(e,t){let r=new Date;await (0,i.db)().insert(o.dependencyScans).values({repoId:e,...t,updatedAt:r}).onConflictDoUpdate({target:o.dependencyScans.repoId,set:{...t,updatedAt:r}})}async function S(e){return(0,i.db)().select({id:o.dependencyVulns.id,package:o.dependencyVulns.package,installedVersion:o.dependencyVulns.installedVersion,vulnId:o.dependencyVulns.vulnId,severity:o.dependencyVulns.severity,fixedVersion:o.dependencyVulns.fixedVersion,summary:o.dependencyVulns.summary,aliases:o.dependencyVulns.aliases,dev:o.dependencyVulns.dev,direct:o.dependencyVulns.direct,source:o.dependencyVulns.source}).from(o.dependencyVulns).where((0,r.and)((0,r.eq)(o.dependencyVulns.repoId,e),(0,r.isNull)(o.dependencyVulns.resolvedAt))).limit(2e3)}function $(e,t){for(let r of d.a){let n=e.find(e=>e.name===r.path);if(n)return{path:(0,f.H)(t,r.path),kind:r.kind,sha:n.sha}}return null}async function T(e,n,a,s={}){let l=()=>({...s,timeoutMs:Math.max(1e3,Math.min(a-Date.now(),1e4))}),u=async e=>(await I(n.id,{error:A(e,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:e}),b=n.defaultBranch??"HEAD",w=null;for(let t of[n.prodBranch,n.prodFallback]){if(t&&t===n.defaultBranch)break;let r=(0,g.i)(t,n.defaultBranch);if(!r)continue;let a=await (0,h.V)(e,n.fullName,r,l());if(!a.ok)return u(a.error);if(a.data){w=r;break}}let v=null!==w;w&&(b=w);let k=v?`Scanned ${w}, the branch production is built from.`:null,_=(0,f.Q)(n.rootDir),R=_?null:(0,f.l)(n.rootDirUnsupported),x=R?`The Vercel Root Directory "${R}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,E=await (0,h.W)(e,n.fullName,b,l(),_);if(!E.ok)return u(_&&"missing"===E.kind?`The folder ${(0,f.x)(_)} isn't in ${n.fullName} on ${b}.`:E.error);let N=$(E.data,_),P=E.data.find(e=>"package.json"===e.name)??null,O=!1,C=null;if(_&&P&&!N){let t=await (0,h.W)(e,n.fullName,b,l());if(!t.ok)return u(t.error);O=null!==(N=$(C=t.data,null))}let j=N?N.sha:P?`pkg:${P.sha}`:null,D=j&&_?`${_}:${j}${O&&P?`+${P.sha}`:""}`:j&&R?`odd:${j}`:j,M=D&&v?`br:${w}:${D}`:D,[z]=await (0,i.db)().select().from(o.dependencyScans).where((0,r.eq)(o.dependencyScans.repoId,n.id)).limit(1),q=new Date;if(!(0,m.U)(z??null,M,q,s.force))return{status:"unchanged"};if(!M){let e=await S(n.id);return e.length&&await (0,i.db)().update(o.dependencyVulns).set({resolvedAt:q}).where((0,r.inArray)(o.dependencyVulns.id,e.map(e=>e.id))),await I(n.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:q,queriedAt:q,error:null,note:A([k,x,`No package.json or lockfile ${_?"in":"at"} ${(0,f.x)(_)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let L=(0,f.H)(_,"package.json"),U=P?await (0,h.Z)(e,n.fullName,L,b,y.$,l()):null;if(U&&!U.ok)return u(U.error);let H=U?.ok&&U.data?(0,d.b)(U.data):null,B=null,V="package-json",G=O&&N?`Scanned ${(0,f.x)(_)} with the repository root's ${N.path} (workspaces).`:null;if(N){if(2e3>a-Date.now())return u("Time budget used before the lockfile was read; the next run tries again.");let t=await (0,h.Z)(e,n.fullName,N.path,b,h.y,{...s,timeoutMs:Math.max(1e3,Math.min(a-Date.now(),2e4))});if(!t.ok)return u(t.error);let r=!0;if(O&&_&&t.data&&!(0,f.p)(N.kind,t.data,_)){let t=C?.some(e=>"package.json"===e.name)?await (0,h.Z)(e,n.fullName,"package.json",b,y.$,l()):null;if(t&&!t.ok)return u(t.error);r=(0,f.F)(t?.data??null,_)}r?(B=t.data?(0,d.D)(N.kind,t.data):null,V=N.kind,B||(G=[G,`${N.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(G=`The repository root's ${N.path} isn't a workspace that includes ${_}, so the versions come from ${L} ranges (approximate).`,N=null)}if(B){let e=(0,t.m)(B,H);B=e.deps,e.stale.length&&(G=[G,(0,t.M)(e.stale)].filter(Boolean).join(" "))}else B=H?(0,d.e)(H):[],V="package-json",G??=N?null:"No lockfile: the versions come from package.json ranges (approximate).";let K=await S(n.id),F=[];if(B.length){let e=await (0,p.K)(B,{fetch:s.fetch,deadline:a});if(!e.ok)return u(e.error);let t=(0,m.A)(K,!0===s.force),r=await (0,p.J)((0,m.z)(B,e.ids,t),{fetch:s.fetch,deadline:a});if(!r.ok)return u(r.error);F=(0,c.i)(B,e.ids,r.map,t)}if(a-Date.now()>1500){let t=await (0,h.t)(e,n.fullName,l());t.ok&&"alerts"in t.data?F=(0,m.R)(F,t.data.alerts,B):t.ok&&(G=[G,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let W=(0,m.h)(K,F,(0,d.K)(H));G=[k,x,G].filter(Boolean).join(" ")||null;let X=new Date;return await (0,i.db)().transaction(async e=>{for(let t of(W.insert.length&&await e.insert(o.dependencyVulns).values(W.insert.map(e=>({repoId:n.id,package:e.package,installedVersion:e.installedVersion,vulnId:e.vulnId,aliases:e.aliases,severity:e.severity,fixedVersion:e.fixedVersion,summary:e.summary,direct:e.direct,dev:e.dev,source:e.source,firstSeenAt:X,lastSeenAt:X}))).onConflictDoNothing(),W.update))await e.update(o.dependencyVulns).set({severity:t.severity,fixedVersion:t.fixedVersion,summary:t.summary,aliases:t.aliases,dev:t.dev,direct:t.direct,lastSeenAt:X}).where((0,r.eq)(o.dependencyVulns.id,t.id));W.resolve.length&&await e.update(o.dependencyVulns).set({resolvedAt:X}).where((0,r.and)((0,r.inArray)(o.dependencyVulns.id,W.resolve),(0,r.isNull)(o.dependencyVulns.resolvedAt))),await e.insert(o.dependencyScans).values({repoId:n.id,lockfilePath:N?.path??(P?L:null),lockfileSha:M,packageCount:B.length,scannedAt:X,queriedAt:X,error:null,note:G?A(G,300):null,updatedAt:X}).onConflictDoUpdate({target:o.dependencyScans.repoId,set:{lockfilePath:N?.path??(P?L:null),lockfileSha:M,packageCount:B.length,scannedAt:X,queriedAt:X,error:null,note:G?A(G,300):null,updatedAt:X}})}),{status:"scanned",vulns:W.insert.length+W.update.length,packages:B.length,note:"package-json"===V?G:null}}async function R(e,t={}){var n,a;let s,l,u,d,c=await b();if("error"in c)return{error:c.error};let{first:p,only:f,skip:m,...h}=t,g=(n=await _(),s=(a={first:p,only:f,skip:m}).only?new Set(a.only):null,l=new Set(a.skip??[]),u=(s?n.filter(e=>s.has(e.id)):n).filter(e=>!l.has(e.id)),d=new Set(a.first??[]),[...u.filter(e=>d.has(e.id)),...u.filter(e=>!d.has(e.id))]),y={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:g.map(e=>e.id)};for(let[t,r]of g.entries()){if(e-Date.now()<4e3){y.left=g.length-t;break}y.done.push(r.id);try{let t=await T(c.token,r,e,h);"scanned"===t.status?y.scanned++:"unchanged"===t.status?y.unchanged++:y.failed.push(`${r.fullName}: ${t.error}`)}catch(e){y.failed.push(`${r.fullName}: ${e instanceof Error?e.name:"error"}`)}}return await (0,i.db)().delete(o.dependencyVulns).where((0,r.and)((0,r.isNotNull)(o.dependencyVulns.resolvedAt),(0,r.lt)(o.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),y}let x=async()=>(await (0,i.db)().select({id:o.accounts.id}).from(o.accounts).where((0,r.eq)(o.accounts.provider,"github")).limit(1)).length>0;function E(e){let t=e.failed.filter(e=>!/didn't answer in time|no time left|time budget|rate limit/i.test(e)),r=e.failed.length-t.length+(e.left??0);r&&console.info(`deps: ${r} repositor${1===r?"y":"ies"} wait for the next run`);let n=t.slice(0,3);return t.length>3&&n.push(`+${t.length-3} more`),n.length?n.join("; "):null}async function N(e){if(!await x())return null;if(e-Date.now()<4e3)return console.info("deps: no time left today; the scan resumes tomorrow"),null;let t=await R(e);if("error"in t){let e;return(e=t.error,/didn't answer in time|no time left|time budget|rate limit/i.test(e))?null:t.error}return E(t)}async function P(e,t,n={}){let{marked:a,onlyMarked:s}=t;if(!await x())return{problem:null,settled:[...a],done:[],complete:!0};let l=a.filter(u.f),d=l.length?await (0,i.db)().select({appId:o.appRepos.appId,repoId:o.appRepos.repoId}).from(o.appRepos).where((0,r.inArray)(o.appRepos.appId,l)).limit(5*l.length):[],c=[...new Set(d.map(e=>e.repoId))],p=e=>d.filter(t=>t.appId===e).map(e=>e.repoId),f=a.filter(e=>!p(e).length);if(s&&!c.length)return{problem:null,settled:[...a],done:[],complete:!0};if(e-Date.now()<4e3)return{problem:null,settled:f,done:[],complete:!1};let m=(t.skip??[]).filter(e=>!c.includes(e)),h=await R(e,{...n,first:c,...s?{only:c}:{skip:m}});if("error"in h){let e;return{problem:(e=h.error,/didn't answer in time|no time left|time budget|rate limit/i.test(e))?null:h.error,settled:[...a],done:[],complete:!0}}let g=new Set([...h.done,...c.filter(e=>!h.listed.includes(e))]);return{problem:E(h),settled:a.filter(e=>p(e).every(e=>g.has(e))),done:h.done,complete:0===h.left}}async function O(e){let t=e.filter(u.f);if(!t.length)return[];let n=await (0,i.db)().select({appId:o.appRepos.appId,repoId:o.appRepos.repoId,error:o.dependencyScans.error}).from(o.appRepos).innerJoin(o.dependencyScans,(0,r.eq)(o.dependencyScans.repoId,o.appRepos.repoId)).where((0,r.and)((0,r.inArray)(o.appRepos.appId,t),(0,r.isNotNull)(o.dependencyScans.scannedAt)));if(!n.length)return[];let a=await (0,i.db)().select({repoId:o.dependencyVulns.repoId,package:o.dependencyVulns.package,installedVersion:o.dependencyVulns.installedVersion,fixedVersion:o.dependencyVulns.fixedVersion,severity:o.dependencyVulns.severity,summary:o.dependencyVulns.summary,dev:o.dependencyVulns.dev,direct:o.dependencyVulns.direct}).from(o.dependencyVulns).where((0,r.and)((0,r.inArray)(o.dependencyVulns.repoId,[...new Set(n.map(e=>e.repoId))]),(0,r.isNull)(o.dependencyVulns.resolvedAt))).limit(1e4);return n.map(e=>({appId:e.appId,repoId:e.repoId,error:e.error,vulns:a.filter(t=>t.repoId===e.repoId).map(e=>({package:e.package,installedVersion:e.installedVersion,fixedVersion:e.fixedVersion,severity:e.severity,summary:e.summary,dev:e.dev,direct:e.direct}))}))}async function C(e,t=new Set){let n=e.filter(u.f),s=new Map;if(!n.length)return s;let l=await (0,i.db)().select({appId:o.appRepos.appId,repoId:o.appRepos.repoId}).from(o.appRepos).where((0,r.inArray)(o.appRepos.appId,n));if(!l.length)return s;let d=await (0,i.db)().select({repoId:o.dependencyVulns.repoId,package:o.dependencyVulns.package,installedVersion:o.dependencyVulns.installedVersion,fixedVersion:o.dependencyVulns.fixedVersion,vulnId:o.dependencyVulns.vulnId,aliases:o.dependencyVulns.aliases,severity:o.dependencyVulns.severity,direct:o.dependencyVulns.direct}).from(o.dependencyVulns).where((0,r.and)((0,r.inArray)(o.dependencyVulns.repoId,[...new Set(l.map(e=>e.repoId))]),(0,r.isNull)(o.dependencyVulns.resolvedAt),(0,r.eq)(o.dependencyVulns.direct,!0),(0,r.isNotNull)(o.dependencyVulns.fixedVersion))).limit(2e3),c=d.some(e=>"next"===e.package)?new Set((await (0,i.db)().selectDistinct({appId:o.dependencyPrs.appId}).from(o.dependencyPrs).where((0,r.and)((0,r.inArray)(o.dependencyPrs.appId,n),(0,r.notInArray)(o.dependencyPrs.stage,["merged","closed"]),(0,r.gte)(o.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),a.sql`${o.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(n.length)).map(e=>e.appId)):new Set;for(let e of l){let r=t.has(e.appId)||c.has(e.appId);(0,m.B)(d.filter(t=>t.repoId===e.repoId&&!(r&&"next"===t.package))).length&&s.set(e.appId,e.repoId)}return s}e.s(["R",0,4e4,"o",0,12e3,"d",0,4e3,"e",0,N,"O",0,P,"C",0,C,"a",0,O])},908223,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(406212),a=e.i(530298),i=e.i(803237),o=e.i(79068),s=e.i(821342),l=e.i(665870),u=e.i(974034),d=e.i(461315),c=e.i(964964),p=e.i(819263),f=e.i(93387),m=e.i(802641),h=e.i(736337),g=e.i(348657),y=e.i(934152),b=e.i(406197),w=e.i(732077);let v=e=>({done:!1,message:e});async function k(){let[e]=await (0,n.db)().select().from(a.accounts).where((0,t.eq)(a.accounts.provider,"github_write")).orderBy((0,r.asc)(a.accounts.createdAt)).limit(1);if(!e)return null;let o=(0,i.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,f.serverEnv)().OPS_ENCRYPTION_KEY);return o?{id:e.id,token:o}:"unreadable"}let _={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function A(e){let[r]=await (0,n.db)().select({version:a.appSecurity.version,status:a.appSecurity.status,findings:a.appSecurity.findings}).from(a.appSecurity).where((0,t.eq)(a.appSecurity.resourceId,e)).limit(1);return r?(0,l.p)({version:r.version,status:r.status,findings:Array.isArray(r.findings)?r.findings:[]}):null}async function I(e){let r=await (0,n.db)().select({package:a.dependencyVulns.package,installedVersion:a.dependencyVulns.installedVersion,fixedVersion:a.dependencyVulns.fixedVersion,vulnId:a.dependencyVulns.vulnId,aliases:a.dependencyVulns.aliases,severity:a.dependencyVulns.severity,direct:a.dependencyVulns.direct,dev:a.dependencyVulns.dev}).from(a.dependencyVulns).where((0,t.and)((0,t.eq)(a.dependencyVulns.repoId,e),(0,t.isNull)(a.dependencyVulns.resolvedAt))).limit(2e3);return{upgrades:(0,p.B)(r),installed:(0,o.D)(r)}}async function S(e,t,r,n,a){for(let i of(0,h.a)(n,r)){if(i===r)break;let n=await (0,g.M)(e,t,i,a);if(!n.ok)return n;if(n.data)return{ok:!0,data:{base:i,head:n}}}return{ok:!0,data:{base:r,head:await (0,g.M)(e,t,r,a)}}}async function $(r,i,p,f=b.W,T={}){let R;if(!(0,m.f)(i)||!(0,m.f)(p))return f(v("Something in that request wasn't valid."),r,"");let x=await (0,b.q)(r.id,"github_bump_pr",i);if(x)return f(v(x),r,"");let E=await k();if(null===E)return f(v('A GitHub PR-write token is needed: connect "GitHub (PR write)" on Connections (fine-grained, this repository only, Contents and Pull requests: Read and write; Commit statuses: Read for automatic merges), then ask again.'),r,"");if("unreadable"===E)return f(v("Can't read the stored GitHub PR-write credential. Replace it on Connections."),r,"");let[N]=await (0,n.db)().select({app:a.resources.name,meta:a.resources.meta,fullName:a.githubRepos.fullName,owner:a.githubRepos.owner,goneAt:a.githubRepos.goneAt,lockfilePath:a.dependencyScans.lockfilePath,lockfileSha:a.dependencyScans.lockfileSha}).from(a.appRepos).innerJoin(a.githubRepos,(0,t.eq)(a.githubRepos.id,a.appRepos.repoId)).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.appRepos.appId)).leftJoin(a.dependencyScans,(0,t.eq)(a.dependencyScans.repoId,a.appRepos.repoId)).where((0,t.and)((0,t.eq)(a.appRepos.appId,i),(0,t.eq)(a.appRepos.repoId,p))).limit(1);if(!N||N.goneAt)return f(v(y.G),r,E.id);let P=N.meta??{},O=(0,u.l)(P.rootDirectoryUnsupported);if(O)return f(v(`The Vercel Root Directory "${O}" of ${N.app} couldn't be used (Watchbell reads plain folder names, at most 4 deep). Update its package.json yourself.`),r,E.id);let C=(0,u.Q)(P.rootDirectory),j=(0,u.H)(C,"package.json"),D=C?`in ${C}`:"at the repository root";if(T.framework){let e=await A(i);if(!e)return f(v(`Nothing to update in ${N.app}: its Next.js check shows no advisory with a fixed version.`),r,E.id);R=e}else if(!(R=await I(p)).upgrades.length)return f(v(`Nothing to update in ${N.app}: no direct package has a fixed version for its open advisories.`),r,E.id);let M=R.upgrades;if(T.auto){let e=(0,o.a)(M,R.installed,T.auto.severities);if(!e.ok)return f(v(`Automatic PR not opened: ${_[e.why]}. The proposal waits for your approval.`),r,E.id);M=e.upgrades}M=(0,l.F)(M);let{auto:z,proposalId:q,framework:L,...U}=T,H={timeoutMs:8e3,...U},B=await (0,g.H)(E.token,N.fullName,H);if(!B.ok)return f({done:!1,failed:B,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);let V=await S(E.token,N.fullName,B.data.defaultBranch,P,H);if(!V.ok)return f({done:!1,failed:V,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);let G=V.data.base,K=(0,h.B)(P.productionSource,G,new Date);if(K&&z)return f(v(`Automatic PR not opened: ${K} The proposal waits for your approval.`),r,E.id);let F=L?null:(0,h.y)(N.lockfileSha,B.data.defaultBranch,C);if(F&&F!==G)return f(v(`The dependency scan of ${N.app} read ${F}, but this pull request would go to ${G}. Scan again (Dependencies › Scan now on the app page), then ask again.`),r,E.id);let W=V.data.head;if(!W.ok)return f({done:!1,failed:W,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);if(!W.data)return f(v(`The default branch ${G} wasn't found.`),r,E.id);let X=await (0,g.E)(E.token,N.fullName,W.data,H,j);if(!X.ok)return f({done:!1,failed:X,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);if(!X.data)return f(v(`There is no package.json ${D}.`),r,E.id);let J=(0,s.k)(X.data.text,M);if(!J?.length||L&&!J.some(e=>"next"===e.package))return f(v(`${j} in ${N.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),r,E.id);if(z){let e=J.find(e=>{let t=(0,d.Y)(e.from);return!t||!(0,o.J)(t,e.fixed)});if(e)return f(v(`Automatic PR not opened: ${e.package} ${e.from} → ${e.to} jumps a major version. The proposal waits for your approval.`),r,E.id)}let Y=(0,s.M)(X.data.text,J);if(!Y)return f(v("package.json couldn't be edited safely."),r,E.id);let Z=(0,s.U)(J,C);if(!(0,s.c)(Z,G))return f(v("Refused: the PR branch would be the default branch."),r,E.id);let Q=await (0,g.x)(E.token,N.fullName,N.owner,Z,G,H);if(Q.ok&&Q.data)return{ok:!0,message:`Pull request #${Q.data.number} for these updates is already open.`};let ee=await (0,g.e)(E.token,N.fullName,H);if(!ee.ok)return f({done:!1,failed:ee,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);if(ee.data.length){let e=new Map((await (0,n.db)().select({number:a.dependencyPrs.number,packages:a.dependencyPrs.packages}).from(a.dependencyPrs).where((0,t.and)((0,t.eq)(a.dependencyPrs.repoId,p),(0,t.inArray)(a.dependencyPrs.number,ee.data.map(e=>e.number))))).map(e=>[e.number,e.packages])),i=(0,o.U)(J.map(e=>e.package),ee.data.map(t=>({number:t.number,branch:t.branch,title:t.title,packages:e.get(t.number)??null})),C);if(i)return f(v(`Pull request #${i.number} for the same package is already open in ${N.app}. Merge or close it first.`),r,E.id)}let et=await (0,g.M)(E.token,N.fullName,Z,H);if(et.ok&&et.data)return f(v(`Branch ${Z} already exists without an open pull request. Delete it on GitHub, then ask again.`),r,E.id);let er=N.lockfilePath??(C?(0,u.H)(C,"package-lock.json"):null),en=d.a.find(e=>e.path===er?.split("/").pop())?.kind??null,ea=e=>f({done:!1,failed:e,audit:{message:`Package update PR failed \xb7 ${N.app} \xb7 ${Z}`,resourceId:i}},r,E.id),ei=await (0,g.k)(E.token,N.fullName,Z,W.data,G,H);if(!ei.ok)return ea(ei);let eo=await (0,g.D)(E.token,N.fullName,Z,G,Y,X.data.sha,(0,s.G)(J),H,j);if(!eo.ok)return ea(eo);let es=(0,s.f)(J,C),el=(K?`> [!WARNING]
15
+ `)}}class o extends Error{constructor(){super("The request.page has been deprecated in favour of `URLPattern`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n ")}}class s extends Error{constructor(){super("The request.ua has been removed in favour of `userAgent` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n ")}}},723866,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"NextURL",{enumerable:!0,get:function(){return d}});let n=e.r(522846),a=e.r(202116),i=e.r(770517),o=e.r(454122),s=/^(?:127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)$/;function l(e,t){let r=new URL(String(e),t&&String(t));return s.test(r.hostname)&&(r.hostname="localhost"),r}let u=Symbol("NextURLInternal");class d{constructor(e,t,r){let n,a;"object"==typeof t&&"pathname"in t||"string"==typeof t?(n=t,a=r||{}):a=r||t||{},this[u]={url:l(e,n??a.base),options:a,basePath:""},this.analyze()}analyze(){var e,t,r,a,s;let l=(0,o.getNextPathnameInfo)(this[u].url.pathname,{nextConfig:this[u].options.nextConfig,parseData:!0,i18nProvider:this[u].options.i18nProvider}),d=(0,i.getHostname)(this[u].url,this[u].options.headers);this[u].domainLocale=this[u].options.i18nProvider?this[u].options.i18nProvider.detectDomainLocale(d):(0,n.detectDomainLocale)(null==(t=this[u].options.nextConfig)||null==(e=t.i18n)?void 0:e.domains,d);let c=(null==(r=this[u].domainLocale)?void 0:r.defaultLocale)||(null==(s=this[u].options.nextConfig)||null==(a=s.i18n)?void 0:a.defaultLocale);this[u].url.pathname=l.pathname,this[u].defaultLocale=c,this[u].basePath=l.basePath??"",this[u].buildId=l.buildId,this[u].locale=l.locale??c,this[u].trailingSlash=l.trailingSlash}formatPathname(){return(0,a.formatNextPathnameInfo)({basePath:this[u].basePath,buildId:this[u].buildId,defaultLocale:this[u].options.forceLocale?void 0:this[u].defaultLocale,locale:this[u].locale,pathname:this[u].url.pathname,trailingSlash:this[u].trailingSlash})}formatSearch(){return this[u].url.search}get buildId(){return this[u].buildId}set buildId(e){this[u].buildId=e}get locale(){return this[u].locale??""}set locale(e){var t,r;if(!this[u].locale||!(null==(r=this[u].options.nextConfig)||null==(t=r.i18n)?void 0:t.locales.includes(e)))throw TypeError(`The NextURL configuration includes no locale "${e}"`);this[u].locale=e}get defaultLocale(){return this[u].defaultLocale}get domainLocale(){return this[u].domainLocale}get searchParams(){return this[u].url.searchParams}get host(){return this[u].url.host}set host(e){this[u].url.host=e}get hostname(){return this[u].url.hostname}set hostname(e){this[u].url.hostname=e}get port(){return this[u].url.port}set port(e){this[u].url.port=e}get protocol(){return this[u].url.protocol}set protocol(e){this[u].url.protocol=e}get href(){let e=this.formatPathname(),t=this.formatSearch();return`${this.protocol}//${this.host}${e}${t}${this.hash}`}set href(e){this[u].url=l(e),this.analyze()}get origin(){return this[u].url.origin}get pathname(){return this[u].url.pathname}set pathname(e){this[u].url.pathname=e}get hash(){return this[u].url.hash}set hash(e){this[u].url.hash=e}get search(){return this[u].url.search}set search(e){this[u].url.search=e}get password(){return this[u].url.password}set password(e){this[u].url.password=e}get username(){return this[u].url.username}set username(e){this[u].url.username=e}get basePath(){return this[u].basePath}set basePath(e){this[u].basePath=e.startsWith("/")?e:`/${e}`}toString(){return this.href}toJSON(){return this.href}[Symbol.for("edge-runtime.inspect.custom")](){return{href:this.href,origin:this.origin,protocol:this.protocol,username:this.username,password:this.password,host:this.host,hostname:this.hostname,port:this.port,pathname:this.pathname,search:this.search,searchParams:this.searchParams,hash:this.hash}}clone(){return new d(String(this),this[u].options)}}},647573,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={NextRequestAdapter:function(){return f},ResponseAborted:function(){return d},ResponseAbortedName:function(){return u},createAbortController:function(){return c},signalFromNodeResponse:function(){return p}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(255841),o=e.r(287790),s=e.r(641165),l=e.r(110118),u="ResponseAborted";class d extends Error{constructor(...e){super(...e),this.name=u}}function c(e){let t=new AbortController;return e.once("close",()=>{e.writableFinished||t.abort(new d)}),t}function p(e){let{errored:t,destroyed:r}=e;if(t||r)return AbortSignal.abort(t??new d);let{signal:n}=c(e);return n}class f{static fromBaseNextRequest(e,t){if((0,l.isNodeNextRequest)(e))return f.fromNodeNextRequest(e,t);throw Error("Invariant: Unsupported NextRequest type")}static fromNodeNextRequest(e,t){let r,n=null;if("GET"!==e.method&&"HEAD"!==e.method&&e.body&&(n=e.body),e.url.startsWith("http"))r=new URL(e.url);else{let t=(0,i.getRequestMeta)(e,"initURL");r=t&&t.startsWith("http")?new URL(e.url,t):new URL(e.url,"http://n")}return new s.NextRequest(r,{method:e.method,headers:(0,o.fromNodeOutgoingHttpHeaders)(e.headers),duplex:"half",signal:t,...t.aborted?{}:{body:n}})}static fromWebNextRequest(e){let t=null;return"GET"!==e.method&&"HEAD"!==e.method&&(t=e.body),new s.NextRequest(e.url,{method:e.method,headers:(0,o.fromNodeOutgoingHttpHeaders)(e.headers),duplex:"half",signal:e.request.signal,...e.request.signal.aborted?{}:{body:t}})}}},641165,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={INTERNALS:function(){return u},NextRequest:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(723866),o=e.r(287790),s=e.r(560659),l=e.r(86547),u=Symbol("internal request");class d extends Request{constructor(e,t={}){let r="string"!=typeof e&&"url"in e?e.url:String(e);(0,o.validateURL)(r),t.body&&"half"!==t.duplex&&(t.duplex="half"),e instanceof Request?super(e,t):super(r,t);let n=new i.NextURL(r,{headers:(0,o.toNodeOutgoingHttpHeaders)(this.headers),nextConfig:t.nextConfig});this[u]={cookies:new l.RequestCookies(this.headers),nextUrl:n,url:n.toString()}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,nextUrl:this.nextUrl,url:this.url,bodyUsed:this.bodyUsed,cache:this.cache,credentials:this.credentials,destination:this.destination,headers:Object.fromEntries(this.headers),integrity:this.integrity,keepalive:this.keepalive,method:this.method,mode:this.mode,redirect:this.redirect,referrer:this.referrer,referrerPolicy:this.referrerPolicy,signal:this.signal}}get cookies(){return this[u].cookies}get nextUrl(){return this[u].nextUrl}get page(){throw new s.RemovedPageError}get ua(){throw new s.RemovedUAError}get url(){return this[u].url}}},199300,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={refresh:function(){return w},revalidatePath:function(){return v},revalidateTag:function(){return y},updateTag:function(){return b}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(258200),o=e.r(274391),s=e.r(419372),l=e.r(556704),u=e.r(832319),d=e.r(243727),c=e.r(585346),p=e.r(203982),f=e.r(341682),m=e.r(387637),h=e.r(748448),g=e.r(540678);function y(e,t){return t?"object"==typeof t&&(t=(0,g.validateAndNormalizeCacheLifeProfile)(t,{kind:"inline"})):console.warn('"revalidateTag" without the second argument is now deprecated, add second argument of "max" or use "updateTag". See more info here: https://nextjs.org/docs/messages/revalidate-tag-single-arg'),k([(0,m.encodeHeaderSafe)(e)],`revalidateTag(${JSON.stringify(e)})`,t)}function b(e){let t=l.workAsyncStorage.getStore();if(!t||t.page.endsWith("/route"))throw Error("updateTag can only be called from within a Server Action. To invalidate cache tags in Route Handlers or other contexts, use revalidateTag instead. See more info here: https://nextjs.org/docs/app/api-reference/functions/updateTag");return k([(0,m.encodeHeaderSafe)(e)],`updateTag(${JSON.stringify(e)})`,void 0)}function w(){let e=l.workAsyncStorage.getStore(),t=u.workUnitAsyncStorage.getStore();if(!e||e.page.endsWith("/route")||(null==t?void 0:t.phase)!=="action")throw Error("refresh can only be called from within a Server Action. See more info here: https://nextjs.org/docs/app/api-reference/functions/refresh");e&&(e.pathWasRevalidated=p.ActionDidRevalidateDynamicOnly)}function v(e,t){if(e.length>s.NEXT_CACHE_SOFT_TAG_MAX_LENGTH)return void console.warn(`Warning: revalidatePath received "${e}" which exceeded max length of ${s.NEXT_CACHE_SOFT_TAG_MAX_LENGTH}. See more info here https://nextjs.org/docs/app/api-reference/functions/revalidatePath`);let r=`${s.NEXT_CACHE_IMPLICIT_TAG_ID}${(0,m.encodeHeaderSafe)((0,f.removeTrailingSlash)(e))}`;t?r+=`${r.endsWith("/")?"":"/"}${t}`:(0,o.isDynamicRoute)(e)&&console.warn(`Warning: a dynamic page path "${e}" was passed to "revalidatePath", but the "type" parameter is missing. This has no effect by default, see more info here https://nextjs.org/docs/app/api-reference/functions/revalidatePath`);let n=[r];return r===`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/`?n.push(`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/index`):r===`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/index`&&n.push(`${s.NEXT_CACHE_IMPLICIT_TAG_ID}/`),k(n,`revalidatePath(${JSON.stringify(e)})`)}function k(e,t,r){let n=l.workAsyncStorage.getStore();if(!n||!n.incrementalCache)throw Error(`Invariant: static generation store missing in ${t}`);let a=u.workUnitAsyncStorage.getStore();if(a){switch(a.type){case"build-time-generator":throw(0,h.createRevalidateInBuildTimeGeneratorError)(n.route,t,a.functionName);case"cache":case"private-cache":case"unstable-cache":throw(0,h.createRevalidateInCachedFunctionError)(n.route,t)}if("render"===a.phase)throw(0,h.createRevalidateDuringRenderError)(n.route,t);switch(a.type){case"prerender":case"prerender-runtime":let e=Error(`Route ${n.route} used ${t} without first calling \`await connection()\`.`);return(0,i.abortAndThrowOnSynchronousRequestDataAccess)(n.route,t,e,a);case"prerender-client":case"validation-client":throw new c.InvariantError(`${t} must not be used within a client component. Next.js should be preventing ${t} from being included in client components statically, but did not in this case.`);case"prerender-legacy":a.revalidate=0;let r=new d.DynamicServerError(`Route ${n.route} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw n.dynamicUsageDescription=t,n.dynamicUsageStack=r.stack,r}}n.pendingRevalidatedTags||(n.pendingRevalidatedTags=[]);let o=performance.timeOrigin+performance.now();for(let t of e){let e=n.pendingRevalidatedTags.findIndex(e=>e.tag===t&&("string"==typeof e.profile&&"string"==typeof r?e.profile===r:"object"==typeof e.profile&&"object"==typeof r?JSON.stringify(e.profile)===JSON.stringify(r):e.profile===r));-1===e?n.pendingRevalidatedTags.push({tag:t,profile:r,revalidatedAt:o}):n.pendingRevalidatedTags[e].revalidatedAt=o}let s=r&&"object"==typeof r?r:r&&"string"==typeof r&&(null==n?void 0:n.cacheLifeProfiles[r])?n.cacheLifeProfiles[r]:void 0;r&&(null==s?void 0:s.expire)!==0||(n.pathWasRevalidated=p.ActionDidRevalidateStaticAndDynamic)}},255706,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_cache",{enumerable:!0,get:function(){return c}});let n=e.r(419372),a=e.r(188232),i=e.r(387637),o=e.r(556704),s=e.r(832319),l=e.r(153960),u=0;async function d(e,t,r,a,i,o,s){await t.set(r,{kind:l.CachedRouteKind.FETCH,data:{headers:{},body:JSON.stringify(e),status:200,url:""},revalidate:"number"!=typeof i?n.CACHE_ONE_YEAR_SECONDS:i},{fetchCache:!0,tags:a,fetchIdx:o,fetchUrl:s})}function c(e,t,r={}){if(0===r.revalidate)throw Error(`Invariant revalidate: 0 can not be passed to unstable_cache(), must be "false" or "> 0" ${e.toString()}`);let n=r.tags?(0,a.validateTags)(r.tags,`unstable_cache ${e.toString()}`):[],p=(0,a.validateRevalidate)(r.revalidate,`unstable_cache ${e.name||e.toString()}`),f=`${e.toString()}-${Array.isArray(t)&&t.join(",")}`;return async(...t)=>{let r=o.workAsyncStorage.getStore(),a=s.workUnitAsyncStorage.getStore(),c=(null==r?void 0:r.incrementalCache)||globalThis.__incrementalCache;if(!c)throw Error(`Invariant: incrementalCache missing in unstable_cache ${e.toString()}`);let m=a?(0,s.getCacheSignal)(a):null;m&&m.beginRead();try{let o=r&&a?function(e,t){switch(t.type){case"request":let r=t.url.pathname,n=new URLSearchParams(t.url.search),a=[...n.keys()].sort((e,t)=>e.localeCompare(t)).map(e=>`${e}=${n.get(e)}`).join("&");return`${r}${a.length?"?":""}${a}`;case"prerender":case"prerender-client":case"validation-client":case"prerender-runtime":case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":case"build-time-generator":return e.route;default:return t}}(r,a):"",m=`${f}-${JSON.stringify(t)}`,h=await c.generateSimpleCacheKey(m),g=(0,i.encodeHeaderSafe)(`unstable_cache ${o} ${e.name?` ${e.name}`:h}`.toWellFormed()),y=(r?r.nextFetchId:u)??1,b=null==a?void 0:a.implicitTags,w={type:"unstable-cache",phase:"render",consumerWillServerCache:!0,implicitTags:b,draftMode:a&&r&&(0,s.getDraftModeProviderForCacheScope)(r,a),rootParams:void 0};if(r){r.nextFetchId=y+1;let i=!1;if(a)switch(a.type){case"cache":case"private-cache":case"prerender":case"prerender-runtime":case"prerender-legacy":"number"==typeof p&&(a.revalidate<p||(a.revalidate=p));let o=a.tags;if(null===o)a.tags=n.slice();else for(let e of n)o.includes(e)||o.push(e);break;case"unstable-cache":i=!0}if(!i&&"force-no-store"!==r.fetchCache&&!r.isOnDemandRevalidate&&!c.isOnDemandRevalidate&&!r.isDraftMode){let i=await c.get(h,{kind:l.IncrementalCacheKind.FETCH,revalidate:p,tags:n,softTags:null==b?void 0:b.tags,fetchIdx:y,fetchUrl:g});if(i&&i.value)if(i.value.kind!==l.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${m}`);else{let o=void 0!==i.value.data.body?JSON.parse(i.value.data.body):void 0;if(i.isStale){if(r.pendingRevalidates||(r.pendingRevalidates={}),!r.pendingRevalidates[m]){let i=s.workUnitAsyncStorage.run(w,e,...t).then(async e=>(await d(e,c,h,n,p,y,g),e)).catch(e=>(console.error(`revalidating cache with key: ${m}`,e),o));(0,s.willConsumerServerCache)(a)&&i.catch(()=>{}),r.pendingRevalidates[m]=i}if((0,s.willConsumerServerCache)(a))return await r.pendingRevalidates[m]}return o}}let u=await s.workUnitAsyncStorage.run(w,e,...t);return r.isDraftMode||(r.pendingRevalidates||(r.pendingRevalidates={}),r.pendingRevalidates[m]=d(u,c,h,n,p,y,g)),u}{if(u+=1,!c.isOnDemandRevalidate){let e=await c.get(h,{kind:l.IncrementalCacheKind.FETCH,revalidate:p,tags:n,fetchIdx:y,fetchUrl:g,softTags:null==b?void 0:b.tags});if(e&&e.value){if(e.value.kind!==l.CachedRouteKind.FETCH)console.error(`Invariant invalid cacheEntry returned for ${m}`);else if(!e.isStale)return void 0!==e.value.data.body?JSON.parse(e.value.data.body):void 0}}let r=await s.workUnitAsyncStorage.run(w,e,...t);return await d(r,c,h,n,p,y,g),r}}finally{m&&m.endRead()}}}},910582,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_noStore",{enumerable:!0,get:function(){return o}});let n=e.r(556704),a=e.r(832319),i=e.r(258200);function o(){let e=n.workAsyncStorage.getStore(),t=a.workUnitAsyncStorage.getStore();if(e){if(!e.forceStatic){if(e.isUnstableNoStore=!0,t)switch(t.type){case"prerender":case"prerender-client":case"validation-client":case"prerender-runtime":return}(0,i.markCurrentScopeAsDynamic)(e,t,"unstable_noStore()")}}}},287790,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={fromNodeOutgoingHttpHeaders:function(){return o},normalizeNextQueryParam:function(){return d},splitCookiesString:function(){return s},toNodeOutgoingHttpHeaders:function(){return l},validateURL:function(){return u}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(419372);function o(e){let t=new Headers;for(let[r,n]of Object.entries(e))for(let e of Array.isArray(n)?n:[n])void 0!==e&&("number"==typeof e&&(e=e.toString()),t.append(r,e));return t}function s(e){var t,r,n,a,i,o=[],s=0;function l(){for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length}for(;s<e.length;){for(t=s,i=!1;l();)if(","===(r=e.charAt(s))){for(n=s,s+=1,l(),a=s;s<e.length&&"="!==(r=e.charAt(s))&&";"!==r&&","!==r;)s+=1;s<e.length&&"="===e.charAt(s)?(i=!0,s=a,o.push(e.substring(t,n)),t=s):s=n+1}else s+=1;(!i||s>=e.length)&&o.push(e.substring(t,e.length))}return o}function l(e){let t={},r=[];if(e)for(let[n,a]of e.entries())"set-cookie"===n.toLowerCase()?(r.push(...s(a)),t[n]=1===r.length?r[0]:r):t[n]=a;return t}function u(e){try{return String(new URL(String(e)))}catch(t){throw Error(`URL is malformed "${String(e)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,{cause:t})}}function d(e){for(let t of[i.NEXT_QUERY_PARAM_PREFIX,i.NEXT_INTERCEPTION_MARKER_PREFIX])if(e!==t&&e.startsWith(t))return e.substring(t.length);return null}},452369,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"MISSING_ROOT_TAGS_ERROR",{enumerable:!0,get:function(){return n}});let n="NEXT_MISSING_ROOT_TAGS";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},770517,(e,t,r)=>{function n(e,t){let r;if(t?.host&&!Array.isArray(t.host))r=t.host.toString().split(":",1)[0];else{if(!e.hostname)return;r=e.hostname}return r.toLowerCase()}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getHostname",{enumerable:!0,get:function(){return n}})},593249,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={djb2Hash:function(){return i},hexHash:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function i(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)|0;return t>>>0}function o(e){return i(e).toString(36).slice(0,5)}},522846,(e,t,r)=>{function n(e,t,r){if(e){for(let n of(r&&(r=r.toLowerCase()),e))if(t===n.domain?.split(":",1)[0].toLowerCase()||r===n.defaultLocale.toLowerCase()||n.locales?.some(e=>e.toLowerCase()===r))return n}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"detectDomainLocale",{enumerable:!0,get:function(){return n}})},385630,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let o=i[1].toLowerCase(),s=a.indexOf(o);return s<0?{pathname:e}:(r=t[s],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},983782,(e,t,r)=>{function n(e){return null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isThenable",{enumerable:!0,get:function(){return n}})},151417,(e,t,r)=>{function n(e){return e.startsWith("/")?e:`/${e}`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},438924,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={getRequestInsightKey:function(){return o},getRequestInsightKind:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function i(e){return e.kind??"request"}function o(e){return`${i(e)}:${e.requestId}`}},997602,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(455454),a=e.r(667138);function i(e,t,r,i){if(!t||t===r)return e;let o=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(o,"/api")||(0,a.pathHasPrefix)(o,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},455454,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(49454);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${t}${r}${a}${i}`}},447990,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(49454);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},537433,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={compareAppPaths:function(){return l},normalizeAppPath:function(){return s},normalizeRscURL:function(){return c},selectAppPageEntry:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(151417),o=e.r(483655);function s(e){return(0,i.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:`${e}/${t}`,""))}function l(e,t){let r=e.includes("/@"),n=t.includes("/@");return r&&!n?-1:!r&&n?1:e.localeCompare(t)}function u(e){return s(e).replace(/%5F/g,"_")}function d(e,t,r=u){let n;for(let a of t)r(a)===e&&(void 0===n||0>l(n,a))&&(n=a);if(void 0===n)throw Error(`Invariant: no direct app page entry found for ${e}`);return n}function c(e){return e.replace(/\.rsc($|\?)/,"$1")}},231679,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={computeCacheBustingSearchParam:function(){return d},computeLegacyCacheBustingSearchParam:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(593249),o=new TextEncoder;function s(e){return void 0===e?"0":Array.isArray(e)?e.join(","):e}function l(e,t,r,n){return(void 0===e||"0"===e)&&void 0===t&&void 0===r&&void 0===n?null:[e??"0",s(t),s(r),s(n)].join(",")}async function u(e){var t=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",o.encode(e))).subarray(0,12);let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function d(e,t,r,n){let a=l(e,t,r,n);return null===a?"":u(a)}function c(e,t,r,n){let a=l(e,t,r,n);return null===a?"":(0,i.hexHash)(a)}},202116,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(341682),a=e.r(455454),i=e.r(447990),o=e.r(997602);function s(e){let t=(0,o.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},454122,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(385630),a=e.r(472389),i=e.r(667138);function o(e,t){let{basePath:r,i18n:o,trailingSlash:s}=t.nextConfig??{},l={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};r&&(0,i.pathHasPrefix)(l.pathname,r)&&(l.pathname=(0,a.removePathPrefix)(l.pathname,r),l.basePath=r);let u=l.pathname;if(l.pathname.startsWith("/_next/data/")&&l.pathname.endsWith(".json")){let e=l.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");l.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(l.pathname=u)}if(o){let e=t.i18nProvider?t.i18nProvider.analyze(l.pathname):(0,n.normalizeLocalePath)(l.pathname,o.locales);l.locale=e.detectedLocale,l.pathname=e.pathname??l.pathname,!e.detectedLocale&&l.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,o.locales)).detectedLocale&&(l.locale=e.detectedLocale)}return l}},274391,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return i.getSortedRouteObjects},getSortedRoutes:function(){return i.getSortedRoutes},isDynamicRoute:function(){return o.isDynamicRoute}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(684109),o=e.r(97764)},265710,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return p},findMissingCanonicalInterceptionRoutes:function(){return f},isInterceptionRouteAppPath:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(537433),o=["(..)(..)","(.)","(..)","(...)"];function s(e){let t=e.split("/").filter(Boolean),r=t.at(-1),n=void 0!==r&&r.startsWith("[[...")&&r.endsWith("]]"),a=void 0!==r&&r.startsWith("[...")&&r.endsWith("]"),i=n||a,o=i?t.slice(0,-1):t;return{prefix:o.map(e=>e.startsWith("[")&&e.endsWith("]")?null:e),minLength:o.length+(a&&!n?1:0),unbounded:i}}function l(e,t){return e.unbounded?t>=e.minLength:t===e.minLength}function u(e,t){return e.prefix.every((e,r)=>{if(null===e)return!0;let n=t.prefix[r];return null!=n&&e===n})}function d(e,t,r){return l(e,r)&&l(t,r)&&u(e,t)}function c(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function p(e){let t,r,n;for(let a of e.split("/"))if(r=o.find(e=>a.startsWith(e))){[t,n]=e.split(r,2);break}if(!t||!r||!n)throw Error(`Invalid interception route: ${e}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`);switch(t=(0,i.normalizeAppPath)(t),r){case"(.)":n="/"===t?`/${n}`:t+"/"+n;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);n=t.split("/").slice(0,-1).concat(n).join("/");break;case"(...)":n="/"+n;break;case"(..)(..)":let a=t.split("/");if(a.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);n=a.slice(0,-2).concat(n).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:n}}function f(e){let t=Object.keys(e).filter(e=>!c(e)).map(s);return Object.keys(e).filter(c).map(e=>({interceptionRoute:e,canonicalRoute:p(e).interceptedRoute})).filter(({canonicalRoute:e})=>!function(e,t){let r=s(e);if(!r.unbounded)return t.some(e=>d(e,r,r.minLength));let n=1/0;for(let e of t)e.unbounded&&u(e,r)&&(n=Math.min(n,Math.max(r.minLength,e.minLength)));if(1/0===n)return!1;for(let e=r.minLength;e<n;e++)if(!t.some(t=>d(t,r,e)))return!1;return!0}(e,t)).sort((e,t)=>e.interceptionRoute.localeCompare(t.interceptionRoute))}},97764,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isDynamicRoute",{enumerable:!0,get:function(){return o}});let n=e.r(265710),a=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,i=/\/\[[^/]+\](?=\/|$)/;function o(e,t=!0){return((0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),t)?i.test(e):a.test(e)}},49454,(e,t,r)=>{function n(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r<t);return n||t>-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"parsePath",{enumerable:!0,get:function(){return n}})},667138,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"pathHasPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(49454);function a(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},472389,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(667138);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},341682,(e,t,r)=>{function n(e){return 47===e.charCodeAt(e.length-1)&&e.length>1?e.slice(0,-1):e}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removeTrailingSlash",{enumerable:!0,get:function(){return n}})},684109,(e,t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return s},getSortedRoutes:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});class i{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e="/"){let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(`${e}${t}/`)).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(`${e}[${this.slugName}]/`)),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error(`You cannot define a route with the same specificity as a optional catch-all route ("${t}" and "${t}[[...${this.optionalRestSlugName}]]").`);r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(`${e}[...${this.restSlugName}]/`)),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(`${e}[[...${this.optionalRestSlugName}]]/`)),r}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Error("Catch-all must be the last part of the URL.");let n=e[0];if(n.startsWith("[")&&n.endsWith("]")){let i=n.slice(1,-1),o=!1;if(i.startsWith("[")&&i.endsWith("]")&&(i=i.slice(1,-1),o=!0),i.startsWith("…"))throw Error(`Detected a three-dot character ('…') at ('${i}'). Did you mean ('...')?`);if(i.startsWith("...")&&(i=i.substring(3),r=!0),i.startsWith("[")||i.endsWith("]"))throw Error(`Segment names may not start or end with extra brackets ('${i}').`);if(i.startsWith("."))throw Error(`Segment names may not start with erroneous periods ('${i}').`);function a(e,r){if(null!==e&&e!==r)throw Error(`You cannot use different slug names for the same dynamic path ('${e}' !== '${r}').`);t.forEach(e=>{if(e===r)throw Error(`You cannot have the same slug name "${r}" repeat within a single dynamic path`);if(e.replace(/\W/g,"")===n.replace(/\W/g,""))throw Error(`You cannot have the slug names "${e}" and "${r}" differ only by non-word symbols within a single dynamic path`)}),t.push(r)}if(r)if(o){if(null!=this.restSlugName)throw Error(`You cannot use both an required and optional catch-all route at the same level ("[...${this.restSlugName}]" and "${e[0]}" ).`);a(this.optionalRestSlugName,i),this.optionalRestSlugName=i,n="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error(`You cannot use both an optional and required catch-all route at the same level ("[[...${this.optionalRestSlugName}]]" and "${e[0]}").`);a(this.restSlugName,i),this.restSlugName=i,n="[...]"}else{if(o)throw Error(`Optional route parameters are not yet supported ("${e[0]}").`);a(this.slugName,i),this.slugName=i,n="[]"}}this.children.has(n)||this.children.set(n,new i),this.children.get(n)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function o(e){let t=new i;return e.forEach(e=>t.insert(e)),t.smoosh()}function s(e,t){let r={},n=[];for(let a=0;a<e.length;a++){let i=t(e[a]);r[i]=a,n[a]=i}return o(n).map(t=>e[r[t]])}},684330,e=>{var t=e.i(794588);e.s(["z",0,t])},691313,e=>{var t=e.i(794588);e.s(["z",0,t])},112515,753535,e=>{e.s(["A",0,function(e){return null===e?"Can't read the stored credential. The encryption key changed. Replace the credential.":null},"E",0,function(e){return e.ok?{status:"ok",lastError:null}:"auth"===e.kind?{status:"error",lastError:e.error}:null}],112515);var t=e.i(336763),r=e.i(533102),n=e.i(406212),a=e.i(530298);async function i(e,t,i){await (0,n.db)().insert(a.snapshots).values({resourceId:e,data:t,collectedAt:i,stateSince:i}).onConflictDoUpdate({target:a.snapshots.resourceId,set:{data:r.sql`${a.snapshots.data} || ${JSON.stringify(t)}::jsonb`,collectedAt:i}})}async function o(e,r,i){await (0,n.db)().update(a.snapshots).set({state:r,stateSince:i}).where((0,t.eq)(a.snapshots.resourceId,e))}e.s(["r",0,i,"a",0,o],753535)},484745,853190,e=>{var t=e.i(728335),r=e.i(554013);let n=e=>`${e} hari`,a=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${n(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},o={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},s={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,r)=>`${t}: nggak ada ping selama ${r.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,r)=>`${t}: ${i[r]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,r,n)=>`${t}: ${n} cek gagal berturut-turut (${r}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,r)=>`${t}: ${r} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,r,n)=>`${t}: ${n} cek gagal berturut-turut (${r}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(e,t,r)=>`${t} pindah ke ${r}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(e,t,r,n)=>`${t} udah bukan domain ${r}; production sekarang di ${n}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(e,t,r)=>`Monitor ngecek ${t}, domain ${r}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,r)=>`p95 ${t} ms selama 10 menit terakhir (batas ${r} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,r)=>a(r,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,r)=>a(r,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,r,n,a)=>`${t} pakai ${r} MB dari ${n} MB (${a}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,r,n)=>`${t} udah pakai ${r} dari ${n} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,r,n,a)=>`${t} udah baca ${r} dari ${n} dokumen hari ini (${a}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${n(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,r,n)=>`${t}: ${r.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${n}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,r)=>`${t}: ${r.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,r)=>`Credential ${t} ${r} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,r,n)=>a(n,`Credential ${t} ${r}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,r,n)=>`${t} paket rentan (${r.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>o[e])}): ${n.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(e,t,r)=>`${t} pakai Next.js ${r} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(e,t,r,n,a,i,s)=>`Next.js ${t} punya ${r} kerentanan yang diketahui (${o[n]}), ${a?`udah di-fix di ${a}${i?` (${"one fix needs"===i?"satu fix":"sebagian fix"} butuh Next.js ${s})`:""}`:"belum ada fix"}.`]]};function l(e,t){for(let[r,n]of Object.hasOwn(s,e)?s[e]:[]){let e=r.exec(t);if(e)return n(...e)}return t}e.s(["f",0,l],853190);let u={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},d={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},c={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step",test:"test"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"karena",incident:"lagi ada insiden",step:"Yang perlu kamu lakukan",test:"tes"}},p=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),f={critical:0,warning:1,info:2};function m(e,t){let r=e.filter(e=>"resolve"!==e.kind).length,n=e.length-r;return[r?`${r} ${c[t].firing}`:"",n?`${n} ${c[t].resolved}`:""].filter(Boolean).join(", ")}function h(e,t,r,n,a,i){let o=[...e].sort((e,t)=>("resolve"===e.kind)-("resolve"===t.kind)||f[e.severity]-f[t.severity]),s=[n],l=n.length+a.length+40;for(let e=0;e<o.length;e++){let n=r(o[e]);if(l+n.length+1>t){s.push(i(o.length-e));break}s.push(n),l+=n.length+1}return s.push(a),s.join("\n").slice(0,t)}let g={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}},y=(e,t="en")=>Object.hasOwn(g[t],e)?g[t][e]??null:null;e.s(["Z",0,d,"l",0,function(e,n,a,i="en",o={},s={}){let f=`${a.replace(/\/+$/,"")}/alerts`,g=c[i],b=e=>`${u[i][e.kind]} \xb7 ${d[i][e.severity]} \xb7 `,w=e=>s.test?r.I[i]:"id"===i?l(e.ruleKey,e.message):e.message,v=s.test?`Watchbell (${g.test})`:"Watchbell",k=e=>"resolve"===e.kind?null:((e,t="en")=>{let r=y(e,t);return r?`${c[t].step}: ${r}`:null})(e.ruleKey,i),_=e=>[e.causedBy?`${g.causedBy} ${e.causedBy}`:"",e.provider?`${e.provider} ${g.incident}`:""].filter(Boolean).join(" · "),A=e=>`
16
+ +${e} ${g.more}`,I=(e,n)=>{let a=Object.hasOwn(o,e.ruleKey)?o[e.ruleKey]?.[i]:void 0;if(!a)return null;let[s="",...l]=(0,r.l)(a,{status:u[i][e.kind],severity:d[i][e.severity],rule:e.ruleKey,target:n(e.title),detail:n(w(e)),cause:n(_(e)),step:"resolve"===e.kind?"":y(e.ruleKey,i)??"",since:`${(0,t.clock)(e.startedAt)} ${(0,t.zoneLabel)(e.startedAt)}`,threshold:null==e.threshold?"":e.threshold.toLocaleString("en-US")}).split("\n");return[s,l.join("\n")]},S=e=>e.replace(/[*_`~|\[\]<>]/g,"");return{telegram:h(e,4096,e=>{let r=I(e,e=>e);return r?`
17
+ <b>${p(r[0])}</b>${r[1]?`
18
+ ${p(r[1])}`:""}`:`
19
+ <b>${b(e)}${p(e.ruleKey)} \xb7 ${p(e.title)}</b>
20
+ ${p(w(e))}${_(e)?`
21
+ <i>${p(_(e))}</i>`:""}${k(e)?`
22
+ 👉 ${p(k(e))}`:""}
23
+ ${g.since} ${(0,t.clock)(e.startedAt)} ${(0,t.zoneLabel)(e.startedAt)}`},`<b>${v}</b>: ${m(e,i)} \xb7 ${(0,t.clock)(n)} ${(0,t.zoneLabel)(n)}`,`
24
+ <a href="${p(f)}">${g.open}</a>`,A),discord:h(e,2e3,e=>{let t=I(e,S);return t?`
25
+ **${t[0]}**${t[1]?`
26
+ ${t[1]}`:""}`:`
27
+ **${b(e)}${e.ruleKey} \xb7 ${S(e.title)}**
28
+ ${S(w(e))}${_(e)?`
29
+ _${_(e)}_`:""}${k(e)?`
30
+ 👉 ${k(e)}`:""}`},`**${v}**: ${m(e,i)} \xb7 ${(0,t.clock)(n)} ${(0,t.zoneLabel)(n)}`,`
31
+ ${f}`,A)}},"H",0,p],484745)},511394,665870,944097,e=>{var t=e.i(516506),r=e.i(164617),n=e.i(887103),a=e.i(819263),i=e.i(631065),o=e.i(663948),s=e.i(79068),l=e.i(461315);let u=["next","eslint-config-next"],d={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function c(e,t){if(!e||!(0,l.C)(e))return null;let r=t.map(e=>e.fixed).filter(t=>!!t&&(0,l.C)(t)&&(0,o.f)(t,e)>0);if(!r.length)return null;let n=r.filter(t=>(0,s.J)(e,t));return(n.length?n:r).reduce((e,t)=>(0,o.f)(t,e)>0?t:e)}function p(e,t){let r=c(e,t),n=r?t.map(e=>e.fixed).filter(e=>!!e&&(0,l.C)(e)&&(0,o.f)(e,r)>0):[],a=n.reduce((e,t)=>null===e||(0,o.f)(t,e)>0?t:e,null),s=a?` (${1===n.length?"one fix needs":"some fixes need"} Next.js ${a.split(".")[0]})`:"";return`Next.js ${e??"(unknown version)"} has ${(0,i.q)(t.length)} (${(0,i.N)(t).toLowerCase()}), ${r?`fixed in ${r}${s}`:"no fix yet"}.`}e.s(["P",0,p,"p",0,function(e){if(!e||"vulnerable"!==e.status||!e.findings.length||!e.version)return null;let t=c(e.version,e.findings);if(!t)return null;let r=d[(0,i.N)(e.findings)],n=[...new Set(e.findings.map(e=>e.id))],a=[...new Set(e.findings.flatMap(e=>e.cve?[e.cve]:[]))];return{from:e.version,to:t,upgrades:[{package:"next",to:t,vulnIds:n,cves:a,severity:r},{package:"eslint-config-next",to:t,vulnIds:[],cves:[],severity:r,companionOf:"next"}],installed:new Map(u.map(t=>[t,e.version]))}},"F",0,function(e){let t=e.find(e=>"next"===e.package&&!e.companionOf);return!t||e.some(e=>"eslint-config-next"===e.package)?e:[...e,{package:"eslint-config-next",to:t.to,vulnIds:[],cves:[],severity:t.severity,companionOf:"next"}]}],665870);let f=e=>Math.round(e).toLocaleString("en-US"),m=(e,t)=>Math.floor((e.getTime()-t.getTime())/864e5),h=(e,t)=>`${e} ${t}${1===e?"":"s"}`,g=e=>{try{let t=new URL(e);return`${t.host}${t.pathname}`}catch{return e}},y=e=>{try{return new URL(e).host}catch{return e}},b=e=>{try{return new URL(e).pathname}catch{return"/"}},w="Down · ",v=(e,t,r)=>({rule:e,subject:t,status:"unknown",resourceId:null,accountId:null,title:t,message:"",provider:null,sampleAt:null,...r}),k=e=>"firestore"===e.provider?"firebase":"d1"===e.provider?"cloudflare":e.provider,_=new Set(["turso","upstash","d1"]),A={MonitorDown:(e,t)=>e.monitors.map(e=>{let n=v("MonitorDown",e.id,{resourceId:e.appId,title:`${e.appName} ${"heartbeat"===e.kind?e.url:b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt}),a=t??3;if("heartbeat"===e.kind){let t;return{...n,status:"err"===e.state?"firing":"ok"===e.state?"ok":"unknown",message:`${e.appName} \xb7 ${e.url}: ${t=e.lastError,t?.startsWith(w)?t.slice(w.length):"no ping in time"}.`}}return e.movedTo?{...n,status:"ok",message:`${y(e.url)} moved to ${e.movedTo}; MonitorDomainMoved takes over.`}:e.failStreak>=a?{...n,status:"firing",message:(0,r.H)(e)?`${g(e.url)} failed its check (${(0,r.H)(e)}) on ${a} consecutive checks.`:`${g(e.url)} returned ${e.lastStatus?`HTTP ${e.lastStatus}`:"no answer"} on ${a} consecutive checks.`}:{...n,status:0===e.failStreak&&e.lastCheckedAt?"ok":"unknown",message:`${g(e.url)} answers again.`}}),MonitorDomainMoved:e=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let t=v("MonitorDomainMoved",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel"});return e.movedTo?{...t,status:"firing",message:`${y(e.url)} is no longer a domain of ${e.appName}; production is on ${e.movedTo}.`}:{...t,status:"ok",message:`The monitor checks ${y(e.url)}, a domain of ${e.appName}.`}}),CollectorStale:(e,t)=>{let r=e.lastMinuteRunAt;return[v("CollectorStale","collector",{status:!r||e.now.getTime()-r.getTime()>(t??5)*6e4?"firing":"ok",title:"collector",message:r?`The last minute run finished ${f((e.now.getTime()-r.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(e,t)=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let r=v("HighLatency",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt});if(e.checksLast10<5||null===e.p95Last10)return r;let n=t??1500;return{...r,status:e.p95Last10>n?"firing":"ok",message:`p95 ${f(e.p95Last10)} ms over the last 10 minutes (limit ${f(n)} ms).`}}),DeploymentFailed:e=>e.apps.map(e=>{let t=v("DeploymentFailed",e.id,{resourceId:e.id,title:e.name,provider:"vercel"}),r=e.latestProduction;return r?"error"===r.state?{...t,status:"firing",message:`Production deployment ${r.sha?r.sha.slice(0,7):"(no commit)"} failed.`}:{...t,status:"building"===r.state?"unknown":"ok"}:{...t,status:"ok"}}),DatabasePaused:e=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(e=>v("DatabasePaused",e.id,{resourceId:e.id,title:e.name,provider:"supabase",status:"unknown"===e.state?"unknown":"paused"===e.state?"firing":"ok",message:`Supabase project ${e.name} is paused.`})),CertExpiringSoon:(e,t)=>e.domains&&e.domains.map(r=>{let n=v("CertExpiringSoon",r.id,{resourceId:r.id,title:r.name,provider:"cloudflare"});if(!r.tlsNotAfter)return n;let a=m(r.tlsNotAfter,e.now);return{...n,status:a<(t??14)?"firing":"ok",message:`The TLS certificate of ${r.name} expires in ${h(a,"day")}.`}}),DomainExpiringSoon:(e,t)=>e.domains&&e.domains.map(r=>{let n=v("DomainExpiringSoon",r.id,{resourceId:r.id,title:r.name,provider:"cloudflare"});if(!r.expiresAt)return n;let a=m(r.expiresAt,e.now);return{...n,status:a<(t??30)?"firing":"ok",message:`${r.name} expires in ${h(a,"day")}.`}}),StorageAlmostFull:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"!==e.provider).map(e=>{let r=v("StorageAlmostFull",e.id,{resourceId:e.id,title:e.name,provider:k(e)});if(null===e.sizeBytes||!e.sizeLimitBytes)return r;let n=e.sizeBytes/e.sizeLimitBytes*100;return{...r,status:n>(t??80)?"firing":"ok",message:`${e.name} uses ${f(e.sizeBytes/1e6)} MB of ${f(e.sizeLimitBytes/1e6)} MB (${f(n)}%).`}}),NeonComputeHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"neon"===e.provider).map(e=>{let r=v("NeonComputeHigh",e.id,{resourceId:e.id,title:e.name,provider:"neon"});return null===e.cuHours?r:{...r,status:e.cuHours>(t??80)?"firing":"ok",message:`${e.name} used ${f(e.cuHours)} of ${f(e.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"===e.provider).map(e=>{let r=v("FirestoreQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:"firebase"});if(e.quotaExhausted)return{...r,status:"firing",message:`${e.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===e.readsToday||!e.readsLimit)return!1===e.quotaExhausted?{...r,status:"ok"}:r;let n=e.readsToday/e.readsLimit*100;return{...r,status:n>(t??80)?"firing":"ok",message:`${e.name} read ${f(e.readsToday)} of ${f(e.readsLimit)} documents today (${f(n)}%).`}}),AutoPauseRisk:(e,t)=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(r=>{let n=v("AutoPauseRisk",r.id,{resourceId:r.id,title:r.name,provider:"supabase"});if("paused"===r.state)return{...n,status:"ok"};if(!r.lastApiAt)return n;let a=Math.floor((e.now.getTime()-r.lastApiAt.getTime())/864e5);return{...n,status:a>=(t??4)?"firing":"ok",message:`No API traffic for ${h(a,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:e=>e.dns&&e.dns.map(e=>v("DnsProxiedToVercel",e.id,{resourceId:e.resourceId,title:e.name,provider:"cloudflare",status:e.proxied&&e.pointsToVercel?"firing":"ok",message:`${e.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>_.has(e.provider)).map(e=>{let r=v("DbQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:k(e)});return null==e.quotaPct?r:{...r,status:e.quotaPct>(t??80)?"firing":"ok",message:`${e.name}: ${e.quotaLabel??"usage"} at ${f(e.quotaPct)}% of the free plan.`}}),ComputeHigh:(e,t)=>e.compute?e.compute.map(r=>{let a=v("ComputeHigh",r.id,{resourceId:r.id,title:r.name,provider:"supabase",sampleAt:r.latest?new Date(r.latest.at):null}),i=(0,n.B)(r.latest,(0,n.V)(t),e.now);return null===i?a:{...a,status:i.length?"firing":"ok",message:i.length?`${r.name}: ${i.join(", ")}.`:`${r.name} compute is back under the limits.`}}):null,CredentialExpiring:(e,t)=>e.accounts.map(r=>{let n=v("CredentialExpiring",r.id,{accountId:r.id,title:`${r.provider} \xb7 ${r.label}`,provider:r.provider});if("drive"===r.provider&&"error"===r.status&&r.lastError?.includes("invalid_grant"))return{...n,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!r.expiresAt)return{...n,status:"ok"};let a=m(r.expiresAt,e.now);return{...n,status:a<(t??14)?"firing":"ok",message:a<0?`The ${r.provider} credential ${r.label} has expired.`:`The ${r.provider} credential ${r.label} expires in ${h(a,"day")}.`}}),VulnerableDependency:e=>e.deps?e.deps.flatMap(t=>{let r=e.apps.find(e=>e.id===t.appId);if(!r)return[];let n=v("VulnerableDependency",t.appId,{resourceId:t.appId,title:r.name,provider:"github"});if(t.error)return[n];let i=(0,a.g)(t.vulns);return i?[{...n,status:"firing",message:(0,a.L)(t.vulns),..."critical"===i?{severity:"critical"}:{}}]:[{...n,status:"ok",message:`${r.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:e=>e.frameworks?e.frameworks.flatMap(t=>{let r=e.apps.find(e=>e.id===t.appId);if(!r)return[];let n=v("FrameworkVulnerable",t.appId,{resourceId:t.appId,title:r.name});return"ok"===t.status?[{...n,status:"ok",message:`${r.name} runs Next.js ${t.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===t.status&&t.findings.length?[{...n,status:"firing",message:p(t.version,t.findings),..."CRITICAL"===(0,i.N)(t.findings)?{severity:"critical"}:{}}]:[n]}):null};e.s(["f",0,function(e,r,n){let a=[],i=new Set;for(let o of r){if(!o.enabled||n&&!n.includes(o.key)||!t._[o.key])continue;let r=A[o.key](e,o.threshold);r&&(i.add(o.key),a.push(...r))}return{observations:a,evaluated:i}}],511394);let I=["MonitorDown","HighLatency"],S=["telegram","discord","webhook","smtp"],$=e=>e.channels.some(e=>S.includes(e));function T(e,t){return t.collectorStale&&"CollectorStale"!==e.rule?"CollectorStale":e.resourceId&&I.includes(e.rule)?t.mutedApps.get(e.resourceId)??null:null}let R=(e,t)=>"critical"===t&&"warning"===e?"critical":e,x=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime(),E=(e,t)=>`${e}|${t}`;e.s(["f",0,function(e,r,n,a,i){let o={open:[],touch:[],resolve:[]},s=new Map(a.map(e=>[e.key,e])),l=new Map(r.map(e=>[E(e.rule,e.subject),e])),u=new Set(e.map(e=>E(e.ruleKey,e.subject))),d=e=>o.resolve.push({id:e.id,pending:e.notifiedOpen?"resolve":null});for(let r of e){let e=s.get(r.ruleKey),a=l.get(E(r.ruleKey,r.subject));if(!e||!e.enabled){o.resolve.push({id:r.id,pending:null});continue}if(!n.has(r.ruleKey))continue;if(!a){o.resolve.push({id:r.id,pending:null});continue}if("unknown"===a.status)continue;let u=a.provider?i.incidents.get(a.provider)??null:null;if("firing"===a.status){let t=T(a,i),n=r.notifiedOpen&&null!==r.lastNotifiedAt&&i.now.getTime()-r.lastNotifiedAt.getTime()>=216e5,s={id:r.id,okStreak:0,lastSampleAt:a.sampleAt??r.lastSampleAt,lastSeenAt:i.now,message:a.message,causedBy:t,providerIncident:u},l=!r.notifiedOpen&&(!r.pendingSince||i.now.getTime()-r.pendingSince.getTime()>=216e5);(n||l)&&!x(r,i.now)&&!t&&null===r.pending&&$(e)&&(s.pending=n?"repeat":"open"),o.touch.push(s);continue}if(!t._[r.ruleKey].sampled||null===a.sampleAt){d(r);continue}if(!(null===r.lastSampleAt||a.sampleAt.getTime()>r.lastSampleAt.getTime()))continue;let c=r.okStreak+1;c>=2?d(r):o.touch.push({id:r.id,okStreak:c,lastSampleAt:a.sampleAt})}for(let e of r){if("firing"!==e.status||u.has(E(e.rule,e.subject))||i.maintenance.has(e.subject)||e.resourceId&&i.maintenance.has(e.resourceId))continue;let t=s.get(e.rule);if(!t)continue;let r=T(e,i);o.open.push({ruleKey:e.rule,subject:e.subject,resourceId:e.resourceId,accountId:e.accountId,severity:R(t.severity,e.severity),title:e.title,message:e.message,startedAt:i.now,lastSeenAt:i.now,lastSampleAt:e.sampleAt,causedBy:r,providerIncident:e.provider?i.incidents.get(e.provider)??null:null,pending:r||!$(t)?null:"open"})}return o}],944097)},129080,247714,e=>{var t=e.i(707866),r=e.i(35048),n=e.i(516464),a=e.i(788264),i=e.i(88316),o=e.i(549889),s=e.i(292178);e.s(["d",0,function(e,o){let l={id:e.id,name:e.name,state:e.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===e.kind){let t=(0,a.k)(a.B,e.data),r=(0,s.Z)(t.lastTrafficAt),n=(0,s.Z)(t.trafficAt),o=r??(n&&!t.trafficError?new Date(n.getTime()-6048e5):null);return{...l,provider:"supabase",sizeBytes:t.sizeBytes??null,sizeLimitBytes:i.R,lastApiAt:o}}if("neon_project"===e.kind){let t=(0,a.k)(a.s,e.data),r=(t.branches??[]).map(e=>e.logicalSize).filter(e=>"number"==typeof e);return{...l,provider:"neon",cuHours:null==t.computeSeconds?null:t.computeSeconds/3600,cuLimit:n.a.cuHours,sizeBytes:r.length?r.reduce((e,t)=>e+t,0):null,sizeLimitBytes:n.a.storageBytes}}if("firestore"===e.kind){let t=(0,a.k)(a.w,e.data),n=(0,s.Z)(t.opsAt),i=null!=t.reads&&n&&n.getTime()>=(0,r.a)(o).getTime()?t.reads:null,u=null!=t.latencyMs||null!=t.pingError;return{...l,provider:"firestore",readsToday:i,readsLimit:r.T.reads,quotaExhausted:u?"RESOURCE_EXHAUSTED"===t.pingReason:null}}if("turso_database"===e.kind){let r=(0,a.k)(a.N,e.data),n=(0,t.u)((0,t.G)(r,o));return{...l,provider:"turso",sizeBytes:r.orgStorageBytes??null,sizeLimitBytes:t.g.storageBytes,quotaPct:n?.pct??null,quotaLabel:n?`${n.label} ${n.text}`:null}}if("upstash_redis"===e.kind){let r=(0,a.k)(a.e,e.data),n=(0,t.u)((0,t.$)(r,o));return{...l,provider:"upstash",sizeBytes:r.storageBytes??null,sizeLimitBytes:t.W.storageBytes,quotaPct:n?.pct??null,quotaLabel:n?`${n.label} ${n.text}`:null}}if("d1_database"===e.kind){let r=(0,a.k)(a.x,e.data),n=(0,t.u)((0,t.I)(r,o));return{...l,provider:"d1",sizeBytes:r.sizeBytes??null,sizeLimitBytes:t.M.dbBytes,quotaPct:n?.pct??null,quotaLabel:n?`${n.label} ${n.text}`:null}}return null},"S",0,function(e,t){let r=e.filter(e=>Array.isArray(e.data.records));if(!r.length)return null;let n=e.map(e=>e.name),a=[];for(let e of r){let r=t.filter(t=>(0,s.J)(t.name,n)===e.name.toLowerCase().replace(/\.$/,"")),i=[...new Set(r.flatMap(e=>(0,o.q)(e.data).vercel?.recommendedIps??[]))];for(let t of(0,o.q)(e.data).records){if(!(0,s.l)(t,i))continue;let n=t.name.toLowerCase().replace(/\.$/,""),o=r.find(e=>e.name.toLowerCase().replace(/\.$/,"")===n);a.push({id:`${e.id}:${t.id}`,resourceId:o?.id??e.id,name:t.name,proxied:t.proxied,pointsToVercel:!0})}}return a},"r",0,function(e,t){return e.length||t.length?[...e.map(e=>({id:e.id,name:e.name,tlsNotAfter:null,expiresAt:(0,s.Z)((0,o.q)(e.data).rdap?.expiresAt)})),...t.map(e=>({id:e.id,name:e.name,tlsNotAfter:(0,s.Z)((0,o.q)(e.data).tls?.notAfter),expiresAt:null}))]:null}],129080);var l=e.i(336763),u=e.i(396918),d=e.i(406212),c=e.i(530298);async function p(){let[e]=await (0,d.db)().select({at:c.collectorRuns.finishedAt}).from(c.collectorRuns).where((0,l.and)((0,l.isNotNull)(c.collectorRuns.finishedAt),(0,l.inArray)(c.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,u.desc)(c.collectorRuns.finishedAt)).limit(1);return e?.at??null}async function f(){let[e]=await (0,d.db)().select({at:c.collectorRuns.finishedAt}).from(c.collectorRuns).where((0,l.and)((0,l.isNotNull)(c.collectorRuns.finishedAt),(0,l.inArray)(c.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,u.desc)(c.collectorRuns.finishedAt)).limit(1);return e?.at??null}e.s(["D",0,p,"d",0,f],247714)},554013,e=>{let t=["status","severity","rule","target","detail","cause","step","since","threshold"],r=["id","en"],n=/\{([a-zA-Z_]+)\}/g;e.s(["I",0,{en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},"z",0,"alerts.messageTemplates","_",0,function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{};let a={};for(let[i,o]of Object.entries(e)){if(!o||"object"!=typeof o)continue;let e={};for(let a of r){let r=o[a];"string"==typeof r&&r.trim()&&null===function(e){if(e.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,r]of e.matchAll(n))if(!t.includes(r))return`{${r}} isn't a field. Use ${t.map(e=>`{${e}}`).join(", ")}.`;return null}(r)&&(e[a]=r)}Object.keys(e).length&&(a[i]=e)}return a},"l",0,function(e,t){return e.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim().split("\n").flatMap(e=>{let r=[...e.matchAll(n)].map(e=>e[1]).filter(e=>Object.hasOwn(t,e));return r.length&&r.every(e=>!t[e].trim())?[]:[e.replace(n,(e,r)=>Object.hasOwn(t,r)?t[r]:e)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()}])},188477,e=>{let t=/^[A-Za-z0-9_.-]{1,64}$/,r={supabase:"db:supabase",neon:"db:neon",firebase:"db:firebase",extraDbs:"db:extra",zones:"net:zones",domains:"net:domains",status:"status"},n=Object.values(r),a={supabase_project:r.supabase,neon_project:r.neon,firestore:r.firebase,turso_database:r.extraDbs,upstash_redis:r.extraDbs,d1_database:r.extraDbs},i={supabase:[r.supabase],supabaseUsage:[r.supabase],neon:[r.neon],firebase:[r.firebase],firebaseUsage:[r.firebase],extraDbs:[r.extraDbs],cloudflare:[r.zones,r.domains],domains:[r.zones,r.domains],tls:[r.zones,r.domains],rdap:[r.zones,r.domains],eol:[r.zones,r.domains],status:[r.status]},o="__ocDate",s="__ocMap";e.s(["t",0,n,"k",0,300,"G",0,a,"m",0,r,"l",0,function(e){let r=[e.VERCEL_DEPLOYMENT_ID,e.VERCEL_GIT_COMMIT_SHA,e.NEXT_DEPLOYMENT_ID].find(e=>void 0!==e&&""!==e);return`${void 0!==r&&t.test(r)?r:"local"}.v5`},"Q",0,function e(t){return t instanceof Date?{[o]:t.toISOString()}:t instanceof Map?{[s]:[...t.entries()].map(([t,r])=>[e(t),e(r)])}:Array.isArray(t)?t.map(e):t&&"object"==typeof t?Object.fromEntries(Object.entries(t).filter(([,e])=>void 0!==e).map(([t,r])=>[t,e(r)])):void 0===t?null:t},"o",0,function(e){return[...new Set(e.flatMap(e=>i[e]??[]))]},"z",0,function(e){let t=e=>Array.isArray(e)?e.map(t):e&&"object"==typeof e?"string"==typeof e[o]&&1===Object.keys(e).length?new Date(e[o]):Array.isArray(e[s])&&1===Object.keys(e).length?new Map(e[s].map(([e,r])=>[t(e),t(r)])):Object.fromEntries(Object.entries(e).map(([e,r])=>[e,t(r)])):e;return t(e)}])},599040,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(978071),a=e.i(542746),i=e.i(90879);let o=t.z.object({COLLECTOR_SECRET:r.z.string().min(32),CRON_SECRET:r.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:r.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:r.z.string().min(10)}),s=o.extend({QSTASH_CURRENT_SIGNING_KEY:n.z.union([a.z.literal(""),r.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:n.z.union([a.z.literal(""),r.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,i.mode)(e)?s:o).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},122603,149398,809816,e=>{var t=e.i(300794);let r=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[\d{1,6}\])*$/,n=new Set(["__proto__","prototype","constructor"]),a=e=>e.length>40?`${e.slice(0,39)}…`:e;function i(e,t,i){let o;if("contains"===e.kind)return t.includes(e.text)?null:i?"Keyword not found in the first 256 KB":"Keyword not found";try{o=JSON.parse(t)}catch{return i?"Response is larger than 256 KB":"Response isn't JSON"}let s=function(e){if(!r.test(e))return null;let t=[];for(let r of e.matchAll(/([A-Za-z_$][\w$]*)|\[(\d+)\]/g))t.push(void 0!==r[1]?r[1]:Number(r[2]));return t.some(e=>"string"==typeof e&&n.has(e))?null:t}(e.path);if(!s)return`JSON ${e.path} is missing`;let l=function(e,t){let r=e;for(let e of t)if("number"==typeof e){if(!Array.isArray(r)||e>=r.length)return{found:!1};r=r[e]}else{if(!r||"object"!=typeof r||Array.isArray(r)||!Object.hasOwn(r,e))return{found:!1};r=r[e]}return{found:!0,value:r}}(o,s);return l.found?("string"==typeof l.value?l.value:JSON.stringify(l.value))===e.equals?null:`JSON ${e.path} is ${a(JSON.stringify(l.value)??"undefined")}, expected "${a(e.equals)}"`:`JSON ${e.path} is missing`}e.s(["Q",0,262144,"$",0,i,"C",0,function(e){return e.bodyContains?{kind:"contains",text:e.bodyContains}:e.jsonPath&&null!==e.jsonEquals?{kind:"json",path:e.jsonPath,equals:e.jsonEquals}:null}],149398);let o=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function s(e){let t=o.exec(e);if(!t)return null;let r=t.slice(1).map(Number);return r.every(e=>e<=255)?r:null}function l([e,t,r]){return 0===e||10===e||127===e||e>=224||100===e&&t>=64&&t<=127||169===e&&254===t||172===e&&t>=16&&t<=31||192===e&&0===t&&0===r||192===e&&168===t||198===e&&(18===t||19===t)}function u(e){let t=e.split("%")[0].toLowerCase();if(!t.includes(":"))return null;if(-1!==t.lastIndexOf(".")){let e=t.lastIndexOf(":"),r=s(t.slice(e+1));if(!r)return null;t=`${t.slice(0,e+1)}${(r[0]<<8|r[1]).toString(16)}:${(r[2]<<8|r[3]).toString(16)}`}let r=t.split("::");if(r.length>2)return null;let n=e=>""===e?[]:e.split(":"),a=n(r[0]),i=2===r.length?n(r[1]):[],o=8-a.length-i.length;if(1===r.length?0!==o:o<1)return null;let l=[...a,...Array(2===r.length?o:0).fill("0"),...i];return 8===l.length&&l.every(e=>/^[0-9a-f]{1,4}$/.test(e))?l.map(e=>parseInt(e,16)):null}function d(e){if(e.slice(0,6).every(e=>0===e)||e.slice(0,5).every(e=>0===e)&&65535===e[5]||e.slice(0,4).every(e=>0===e)&&65535===e[4]&&0===e[5]||100===e[0]&&65435===e[1]&&e.slice(2,6).every(e=>0===e)||100===e[0]&&65435===e[1]&&1===e[2])return!0;if(8194===e[0]){let t,r;return l([(t=e[1])>>8,255&t,(r=e[2])>>8,255&r])}return(65024&e[0])==64512||(65472&e[0])==65152||(65472&e[0])==65216||(65280&e[0])==65280}function c(e){let t=s(e);if(t)return l(t);let r=u(e);return!r||d(r)}function p(e){let t=e.trim().toLowerCase();if(t.startsWith("[")&&t.endsWith("]")){let e=u(t.slice(1,-1));return!e||d(e)}if(t.endsWith(".")&&(t=t.slice(0,-1)),!t)return!0;let r=s(t);if(r)return l(r);let n=t.slice(t.lastIndexOf(".")+1);return!(!/^(\d+|0x[0-9a-f]*)$/.test(n)&&t.includes("."))||"localhost"===t||/\.(localhost|local|internal)$/.test(t)||t.endsWith(".home.arpa")}function f(e){return"https:"!==e.protocol||e.username||e.password?"scheme":""!==e.port&&"443"!==e.port||p(e.hostname)?"blocked":null}e.s(["N",0,p,"W",0,c,"_",0,f],809816);let m=new Set([301,302,303,307,308]),h={ok:!1,statusCode:null,latencyMs:null,error:"Blocked address"};async function g(e){return(await (0,t.lookup)(e,{all:!0,verbatim:!0})).map(e=>e.address)}let y=e=>e.startsWith("[")||/^\d+\.\d+\.\d+\.\d+$/.test(e),b=e=>e.toLowerCase().replace(/^www\./,"");async function w(e,t,r,n){let a,i=t.lookup??g;try{a=new URL(e)}catch{return{refused:"blocked"}}let o=a;for(let e=0;;e++){var s,l;if(f(a))return{refused:"blocked"};if(t.sameOrigin&&(s=a,l="www"===t.sameOrigin,s.origin!==o.origin&&(!l||s.protocol!==o.protocol||s.port!==o.port||b(s.hostname)!==b(o.hostname))))return{refused:"origin"};if(!y(a.hostname)){let e=await Promise.race([i(a.hostname),n]);if(!e.length)throw Error("no address");if(e.some(c))return{refused:"blocked"}}r.throwIfAborted();let u=await (t.fetch??fetch)(a.toString(),{method:"GET",redirect:"manual",cache:"no-store",headers:{...t.headers,"User-Agent":t.userAgent??"OpsConsole-Uptime/1.0 (+https://watchbell.west-solutions.web.id)"},signal:r}),d=m.has(u.status)?u.headers.get("location"):null;if(null===d)return{res:u,url:a};if(await u.body?.cancel().catch(()=>void 0),e>=20)return{refused:"redirects"};try{a=new URL(d,a)}catch{return{refused:"blocked"}}}}function v(e){let t=new Promise((t,r)=>{e.aborted?r(e.reason):e.addEventListener("abort",()=>r(e.reason),{once:!0})});return t.catch(()=>void 0),t}function k(e,t){if(e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name))return`No answer within ${_(t)}`;let r=e instanceof TypeError&&e.cause instanceof Error?e.cause.message:"";return/redirect/i.test(r)?"Too many redirects":"Couldn't connect"}let _=e=>e<1e3?`${e} ms`:`${Math.round(e/1e3)} s`,A="Redirected to another site",I={blocked:"Blocked address",redirects:"Too many redirects",origin:A},S="DEPLOYMENT_NOT_FOUND";async function $(e,t={}){let r=t.timeoutMs??5e3,n=t.clock??(()=>performance.now()),a=n(),o=AbortSignal.timeout(r);try{let s,l=await w(e,t,o,v(o));if("refused"in l)return"blocked"===l.refused?h:{ok:!1,statusCode:null,latencyMs:null,error:I[l.refused]};let u=Math.round(n()-a),d=l.res.status===(t.expectedStatus??200);if(!d||!t.body){let e;return await l.res.body?.cancel().catch(()=>void 0),{ok:d,statusCode:l.res.status,latencyMs:u,error:d?null:`HTTP ${l.res.status}${(e=l.res,/^vercel$/i.test(e.headers.get("server")?.trim()??"")&&e.headers.get("x-vercel-error")?.trim()===S)?` \xb7 ${S}`:""}`}}try{s=await R(l.res,262144,v(o))}catch(e){return{ok:!1,statusCode:l.res.status,latencyMs:u,error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Body not read within ${_(r)}`:"Body couldn't be read"}}let c=i(t.body,new TextDecoder().decode(s.bytes),s.truncated);return{ok:null===c,statusCode:l.res.status,latencyMs:u,error:c}}catch(e){return{ok:!1,statusCode:null,latencyMs:null,error:k(e,r)}}}async function T(e,t={}){let r=t.timeoutMs??1e4,n=t.maxBytes??3145728,a=t.signal?AbortSignal.any([AbortSignal.timeout(r),t.signal]):AbortSignal.timeout(r),i=v(a);try{let r=await w(e,t,a,i);if("refused"in r)return{ok:!1,error:I[r.refused]};let{bytes:o,truncated:s}=await R(r.res,n,i),l=new TextDecoder().decode(o);return{ok:!0,status:r.res.status,url:r.url.toString(),body:l,truncated:s}}catch(e){return{ok:!1,error:k(e,r)}}}async function R(e,t,r){let n=e.body?.getReader(),a=[],i=0,o=!1;if(n)try{for(;;){let{done:e,value:s}=await Promise.race([n.read(),r]);if(e)break;let l=t-i;if(s.byteLength>l){a.push(s.subarray(0,l)),o=!0;break}if(a.push(s),(i+=s.byteLength)===t){o=!(await Promise.race([n.read(),r])).done;break}}}finally{n.cancel().catch(()=>void 0)}return{bytes:Buffer.concat(a),truncated:o}}async function x(e,t,r){let n=Array(e.length),a=0;async function i(){for(;a<e.length;){let t=a++;n[t]=await r(e[t])}}return await Promise.all(Array.from({length:Math.min(Math.max(1,t),e.length)},i)),n}e.s(["l",0,A,"X",0,v,"b",0,$,"P",0,x,"z",0,R,"K",0,T],122603)},467404,628852,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(816173);let i=(e,r)=>null===r?(0,t.isNull)(e):(0,t.eq)(e,r);async function o(e,o,s){let l=(0,a.G)(e.failStreak,o);return(await (0,r.db)().update(n.monitors).set({state:l.state,failStreak:l.failStreak,lastCheckedAt:s,lastStatus:o.statusCode,lastLatencyMs:o.latencyMs,lastError:o.error,...l.state!==e.state?{stateSince:s}:{},updatedAt:s}).where((0,t.and)((0,t.eq)(n.monitors.id,e.id),null===e.lastCheckedAt?(0,t.isNull)(n.monitors.lastCheckedAt):(0,t.eq)(n.monitors.lastCheckedAt,e.lastCheckedAt),(0,t.eq)(n.monitors.state,e.state),(0,t.eq)(n.monitors.failStreak,e.failStreak),(0,t.eq)(n.monitors.url,e.url),(0,t.eq)(n.monitors.expectedStatus,e.expectedStatus),i(n.monitors.bodyContains,e.bodyContains),i(n.monitors.jsonPath,e.jsonPath),i(n.monitors.jsonEquals,e.jsonEquals))).returning({id:n.monitors.id})).length>0}e.s(["T",0,i,"j",0,o],467404);let s={heartbeats:60,checks:60,vercel:60,supabase:300,supabaseUsage:3600,neon:300,firebase:300,firebaseUsage:3600,extraDbs:3600,cloudflare:3600,domains:21600,tls:3600,rdap:3600,eol:86400,status:300,logs:300,pageviews:1800,node:43200,security:21600,alerts:60,digest:300},l={supabase:0,digest:0,neon:60,firebase:120,status:180,logs:240,pageviews:1620,supabaseUsage:660,extraDbs:960,firebaseUsage:1320,cloudflare:1980,tls:2460,rdap:3120,domains:5280,eol:13560,node:13380,security:16560};function u(e,t){let r=1e3*s[e],n=(l[e]??0)*1e3;return Math.floor((t.getTime()+5e3-n)/r)*r+n}let d={status:6e3,logs:9e3,pageviews:9e3,digest:6e3,eol:6e3,node:6e3,security:11e3},c={heartbeats:"hosting",checks:"hosting",vercel:"hosting",cloudflare:"hosting",domains:"hosting",tls:"hosting",rdap:"hosting",logs:"hosting",pageviews:"hosting",supabase:"database",supabaseUsage:"database",neon:"database",firebase:"database",firebaseUsage:"database",extraDbs:"database",eol:null,node:null,status:null,alerts:null,digest:null,security:null},p={security:["hosting","devops"]},f=["supabase"];function m(e,t){return e.filter(e=>{let r=p[e];if(r)return r.some(e=>!t.has(e));let n=c[e];return null===n||!t.has(n)||f.includes(e)})}e.s(["X",0,3e3,"p",0,2e4,"d",0,55e3,"u",0,["alerts","digest"],"O",0,5e4,"P",0,function(e,t,r){let n=Math.min(e,t-r);return n<1e3?null:n},"S",0,function(e,t,r,n=new Set){let a=0;return m(Object.keys(s),n).filter(n=>{let i=e[n]?new Date(e[n]).getTime():null;if(s[n]<=60)return null===i||!!r||t.getTime()-i>=1e3*s[n]-1e4;let o=u(n,t);return(null===i||!(i>=o-5e3))&&(!(null===i||t.getTime()+5e3-o>=6e4)||!(a>=2)&&(a++,!0))})},"$",0,(e,t)=>{let r=c[e];return null!==r&&t.has(r)&&f.includes(e)},"B",0,function(e,t,r){return!r||!e||t.getTime()-e.getTime()>=5e4},"G",0,u,"z",0,function(e,t,r){return t-r>=(d[e]??0)},"_",0,function(e,t,r=new Set){if(!t||e.includes("security")||!m(["security"],r).length)return{due:[...e],early:!1};let n=Object.keys(s),a=e.findIndex(e=>n.indexOf(e)>n.indexOf("security")),i=[...e];return i.splice(a<0?i.length:a,0,"security"),{due:i,early:!0}}],628852)},732077,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(483324),i=e.i(348657);let o="deps.lockfileDispatched";async function s(){let[e]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,a.h)).limit(1);return(0,a.g)(e?.value).repo}async function l(e,u,d=new Date){try{let l=await s();if(!l)return{sent:!1,why:"no actions repository"};let c=(0,a.C)(u);if(!c)return{sent:!1,why:"invalid"};let p=await (0,i.B)(e,l,c);if(!p.ok)return{sent:!1,why:p.error};let[f]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,o)).limit(1),m=f?.value&&"object"==typeof f.value?f.value:{},h={...Object.fromEntries(Object.entries(m).filter(([,e])=>d.getTime()-Date.parse(e)<864e5)),[`${u.repo}#${u.branch}`]:d.toISOString()};return await (0,r.db)().insert(n.settings).values({key:o,value:h}).onConflictDoUpdate({target:n.settings.key,set:{value:h,updatedAt:d}}),{sent:!0}}catch(e){return console.warn("deps: lockfile dispatch failed:",e instanceof Error?e.name:"error"),{sent:!1,why:"error"}}}async function u(e,i,s=new Date){try{let[l]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,o)).limit(1),u=l?.value?.[`${e}#${i}`];return!!u&&s.getTime()-Date.parse(u)<a.w}catch{return!1}}e.s(["W",0,u,"U",0,l])},123603,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(129080),s=e.i(247714),l=e.i(366171),u=e.i(978196),d=e.i(889234),c=e.i(584820);async function p(){return(0,a.db)().select({appId:i.links.fromResourceId,dbId:i.links.toResourceId}).from(i.links).where((0,t.eq)(i.links.kind,"uses_db")).limit(500)}async function f(e){let f=(0,t.and)((0,t.eq)(i.resources.monitored,!0),(0,t.isNull)(i.resources.goneAt)),[m,h,g,y,b]=await Promise.all([(0,s.d)(),(0,s.D)(),(0,a.db)().select({m:i.monitors,appName:i.resources.name,appMeta:i.resources.meta}).from(i.monitors).innerJoin(i.resources,(0,t.eq)(i.resources.id,i.monitors.resourceId)).where((0,t.and)(f,(0,t.eq)(i.monitors.paused,!1),(0,t.eq)(i.monitors.ownerPaused,!1))),(0,a.db)().select({id:i.resources.id,name:i.resources.name,meta:i.resources.meta}).from(i.resources).where((0,t.and)(f,(0,t.eq)(i.resources.kind,"app"))),(0,a.db)().select({id:i.accounts.id,provider:i.accounts.provider,label:i.accounts.label,expiresAt:i.accounts.expiresAt,status:i.accounts.status,lastError:i.accounts.lastError}).from(i.accounts)]),w=g.map(e=>e.m.id),v=w.length?await (0,a.db)().select({id:i.checks.monitorId,n:n.sql`count(*)::int`,p95:n.sql`percentile_cont(0.95) within group (order by ${i.checks.latencyMs})::float8`}).from(i.checks).where((0,t.and)((0,t.inArray)(i.checks.monitorId,w),(0,t.gte)(i.checks.at,new Date(e.getTime()-6e5)),(0,t.eq)(i.checks.inMaintenance,!1))).groupBy(i.checks.monitorId):[],k=y.map(e=>e.id),_=k.length?await (0,a.db)().selectDistinctOn([i.deployments.resourceId],{appId:i.deployments.resourceId,state:i.deployments.state,sha:i.deployments.commitSha,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,t.and)((0,t.inArray)(i.deployments.resourceId,k),(0,t.eq)(i.deployments.target,"production"))).orderBy(i.deployments.resourceId,(0,r.desc)(i.deployments.createdAtProvider)):[],A=await (0,a.db)().select({id:i.resources.id,name:i.resources.name,kind:i.resources.kind,state:i.snapshots.state,data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.eq)(i.snapshots.resourceId,i.resources.id)).where((0,t.and)(f,(0,t.inArray)(i.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),I=e=>A.filter(t=>t.kind===e),S=A.filter(e=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(e.kind)),$=I("zone"),T=I("domain"),R=await p(),x=await (0,l.Y)().catch(()=>null),E=k.length?await (0,d.a)(k).catch(()=>null):null,N=k.length?await (0,c.F)(k).catch(()=>null):null;return{now:e,lastMinuteRunAt:m,lastAnyRunAt:h,monitors:g.map(({m:e,appName:t,appMeta:r})=>{let n=v.find(t=>t.id===e.id),a="heartbeat"===e.kind;return{id:e.id,appId:e.resourceId,appName:t,url:a?e.name??"heartbeat":e.url,kind:a?"heartbeat":"http",state:e.state,failStreak:e.failStreak,lastStatus:e.lastStatus,lastError:e.lastError,lastCheckedAt:e.lastCheckedAt,p95Last10:n?.p95??null,checksLast10:n?.n??0,movedTo:a?null:(0,u.u)(e.url,{name:t,meta:r},y.filter(t=>t.id!==e.resourceId),{lastError:e.lastError})?.to??null}}),apps:y.map(e=>{let t=_.find(t=>t.appId===e.id);return{id:e.id,name:e.name,latestProduction:t?{state:t.state,sha:t.sha,createdAt:t.createdAt}:null}}),accounts:b,dbs:S.length?S.map(t=>(0,o.d)(t,e)).filter(e=>null!==e):null,domains:(0,o.r)($,T),dns:(0,o.S)($,T),links:R,compute:x,deps:E&&E.length?E:null,frameworks:N&&N.length?N:null}}e.s(["f",0,f])},234195,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(516506),s=e.i(511394),l=e.i(944097),u=e.i(554013),d=e.i(764266),c=e.i(873083),p=e.i(123603),f=e.i(706959),m=e.i(638809);let h={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function g(){return(await (0,a.db)().select().from(i.alertRules)).filter(e=>(0,o.h)(e.key)).map(e=>({key:e.key,severity:e.severity,threshold:e.threshold,enabled:e.enabled,channels:e.channels}))}async function y(e,r={}){let[n,u,b,w,v,k]=await Promise.all([(0,p.f)(e),g(),(0,a.db)().select().from(i.alerts).where((0,t.isNull)(i.alerts.resolvedAt)),(0,a.db)().select({provider:i.providerStatus.provider,state:i.providerStatus.state}).from(i.providerStatus),(0,f.f)(),(0,m.I)()]),_=new Map(n.accounts.map(e=>[e.id,e.provider])),A=b.filter(e=>!(0,c.O)(k,e.ruleKey,e.accountId?_.get(e.accountId):null)),I=(0,s.f)(n,u,r.only),S=I.evaluated,$=I.observations.filter(e=>!(0,c.O)(k,e.rule,e.provider)),T=u.find(e=>"CollectorStale"===e.key),R=void 0===n.lastAnyRunAt?n.lastMinuteRunAt:n.lastAnyRunAt,x=!!T?.enabled&&(!R||e.getTime()-R.getTime()>(T.threshold??5)*6e4),E=new Map((n.dbs??[]).filter(e=>"paused"===e.state).map(e=>[e.id,e.name])),N=new Map(n.links.filter(e=>E.has(e.dbId)).map(e=>[e.appId,`DatabasePaused \xb7 ${E.get(e.dbId)}`])),P=new Map(w.filter(e=>"warn"===e.state||"err"===e.state).map(e=>["gcp"===e.provider?"firebase":e.provider,h[e.provider]??e.provider])),O=(0,d.u)(v,n.monitors.map(e=>({id:e.id,appId:e.appId})),e,n.apps.map(e=>e.id)),C=A.filter(e=>(0,o.h)(e.ruleKey)).map(e=>({id:e.id,ruleKey:e.ruleKey,subject:e.subject,okStreak:e.okStreak,lastSampleAt:e.lastSampleAt,silencedUntil:e.silencedUntil,silencedUntilResolved:e.silencedUntilResolved,notifiedOpen:e.notifiedOpen,lastNotifiedAt:e.lastNotifiedAt,pending:e.pending,pendingSince:e.pendingSince})),j=(0,l.f)(C,$,S,u,{now:e,collectorStale:x,mutedApps:N,incidents:P,maintenance:O});return j.open.length||j.touch.length||j.resolve.length?(await (0,a.db)().transaction(async r=>{for(let t of j.open)await r.insert(i.alerts).values({...t,pendingSince:t.pending?e:null}).onConflictDoNothing();for(let n of j.touch){let{id:a,pending:o,...s}=n;await r.update(i.alerts).set({...s,...o?{pending:o,pendingSince:e}:{}}).where((0,t.and)((0,t.eq)(i.alerts.id,a),(0,t.isNull)(i.alerts.resolvedAt)))}for(let n of j.resolve)await r.update(i.alerts).set({resolvedAt:e,pending:n.pending,pendingSince:n.pending?e:null}).where((0,t.and)((0,t.eq)(i.alerts.id,n.id),(0,t.isNull)(i.alerts.resolvedAt)))}),{opened:j.open.length,resolved:j.resolve.length}):{opened:0,resolved:0}}let b=n.sql`case ${i.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function w(e=new Set){return(await (0,a.db)().select({a:i.alerts,name:i.resources.name,kind:i.resources.kind}).from(i.alerts).leftJoin(i.resources,(0,t.eq)(i.resources.id,i.alerts.resourceId)).where((0,t.and)((0,t.isNull)(i.alerts.resolvedAt),(0,m.s)(e))).orderBy(b,(0,r.desc)(i.alerts.startedAt)).limit(200)).map(({a:e,name:t,kind:r})=>({...e,resourceName:t??null,resourceKind:r??null}))}async function v(){return w(await (0,m.I)())}async function k(){try{let[e]=await (0,a.db)().select({value:i.settings.value}).from(i.settings).where((0,t.eq)(i.settings.key,u.z)).limit(1);return(0,u._)(e?.value)}catch{return{}}}e.s(["$",0,y,"q",0,w,"i",0,v,"w",0,k])},503313,e=>{var t=e.i(396918),r=e.i(336763),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(760859);async function s(){let[e,s]=await Promise.all([(0,a.db)().select({id:i.resources.id,kind:i.resources.kind,name:i.resources.name,firstSeenAt:i.resources.firstSeenAt,parentId:i.resources.parentId,team:n.sql`${i.resources.meta}->>'teamSlug'`}).from(i.resources).where((0,r.inArray)(i.resources.kind,["app","supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"])).orderBy((0,t.asc)(i.resources.firstSeenAt),(0,t.asc)(i.resources.id)).limit(2e3),(0,a.db)().select({id:i.accounts.id,label:i.accounts.label,createdAt:i.accounts.createdAt}).from(i.accounts).orderBy((0,t.asc)(i.accounts.createdAt),(0,t.asc)(i.accounts.id)).limit(200)]);return(0,o.n)(e,s)}e.s(["f",0,s])},595262,e=>{var t=e.i(333407);async function r(e){await (0,t.f)([{type:"action",kind:e.kind,message:e.message,detail:e.detail??null,resourceId:e.resourceId,actorUserId:e.actorUserId,at:new Date}])}e.s(["f",0,r])},589878,e=>{var t=e.i(668304),r=e.i(188477),n=e.i(90879),a=e.i(503313),i=e.i(586307),o=e.i(827439),s=e.i(147100);let l=(0,r.l)(process.env);function u(e,a,i){let o=(0,t.unstable_cache)(async(...e)=>(0,r.Q)(await a(...e)),["ops",l,...e],{revalidate:r.k,tags:i});return async(...e)=>(0,n.isCloud)()?(0,r.z)(await o(...e)):a(...e)}Object.fromEntries(Object.keys(r.G).map(e=>[e,u(["listDatabases",e],()=>i.R(e),[r.G[e]])])),u(["supabaseSlotInputs"],()=>i.V(),[r.m.supabase]),u(["databaseOptions"],()=>i.S(),[r.m.supabase,r.m.neon,r.m.firebase,r.m.extraDbs]),u(["listDomains"],()=>o.p(),[r.m.domains,r.m.zones]),u(["listZoneOptions"],()=>o.c(),[r.m.zones]),u(["getZoneView"],e=>o.j(e),[r.m.zones]);let d=u(["aliasBook"],()=>a.f(),[r.m.supabase,r.m.neon,r.m.firebase,r.m.extraDbs,r.m.zones,r.m.domains]);u(["providerStatus"],()=>s.B(),[r.m.status]),e.s(["f",0,d])},586307,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(203868),i=e.i(788264),o=e.i(857799),s=e.i(70377);async function l(e){let a=await (0,r.db)().select({r:n.resources,s:n.snapshots,account:n.accounts.label}).from(n.resources).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.eq)(n.resources.kind,e),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt))).orderBy(n.resources.name).limit(s.O.databases);if(!a.length)return[];let i=await (0,r.db)().select({dbId:n.links.toResourceId,id:n.resources.id,name:n.resources.name}).from(n.links).innerJoin(n.resources,(0,t.eq)(n.resources.id,n.links.fromResourceId)).where((0,t.and)((0,t.eq)(n.links.kind,"uses_db"),(0,t.inArray)(n.links.toResourceId,a.map(e=>e.r.id)))).orderBy(n.resources.name).limit(s.O.apps);return a.map(({r:t,s:r,account:n})=>({id:t.id,name:t.name,externalId:t.externalId,kind:e,account:n,state:r?.state??"unknown",stateSince:r?.stateSince??null,collectedAt:r?.collectedAt??null,data:r?.data??{},usedBy:i.filter(e=>e.dbId===t.id).map(({id:e,name:t})=>({id:e,name:t}))}))}async function u(){let e=await (0,r.db)().select({r:n.resources,s:n.snapshots,account:n.accounts.label}).from(n.resources).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.eq)(n.resources.kind,"supabase_project"),(0,t.isNull)(n.resources.goneAt))).limit(s.O.databases),a=new Map;for(let{s:t}of e){let e=(0,i.k)(i.B,t?.data);e.orgSlug&&void 0!==e.freeOrg&&a.set(e.orgSlug,e.freeOrg)}return e.map(({r:e,s:t,account:r})=>{let n=(0,i.k)(i.B,t?.data),o=n.orgSlug??("string"==typeof e.meta.orgSlug?e.meta.orgSlug:null);return{id:e.id,account:r,name:e.name,status:n.status??("string"==typeof e.meta.status?e.meta.status:"UNKNOWN"),freeOrg:n.freeOrg??(o?a.get(o)??null:null)}})}async function d(){return(await (0,r.db)().select({id:n.resources.id,name:n.resources.name,kind:n.resources.kind,externalId:n.resources.externalId,account:n.accounts.label,data:n.snapshots.data}).from(n.resources).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.inArray)(n.resources.kind,[...o.H]),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt))).orderBy(n.resources.name).limit(s.O.databases)).map(e=>(0,a.f)({...e,kind:e.kind}))}async function c(e){return e.length?new Map((await (0,r.db)().select({app:n.links.fromResourceId,id:n.resources.id,externalId:n.resources.externalId,name:n.resources.name,kind:n.resources.kind,account:n.accounts.label,state:n.snapshots.state}).from(n.links).innerJoin(n.resources,(0,t.eq)(n.resources.id,n.links.toResourceId)).innerJoin(n.accounts,(0,t.eq)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.eq)(n.snapshots.resourceId,n.resources.id)).where((0,t.and)((0,t.eq)(n.links.kind,"uses_db"),(0,t.inArray)(n.links.fromResourceId,e),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt))).limit(s.O.apps)).map(e=>[e.app,{id:e.id,externalId:e.externalId,name:e.name,kind:e.kind,account:e.account,state:e.state??"unknown"}])):new Map}e.i(595262),e.s(["S",0,d,"F",0,c,"R",0,l,"V",0,u])},889234,e=>{var t=e.i(79068),r=e.i(336763),n=e.i(396918),a=e.i(533102),i=e.i(406212),o=e.i(530298),s=e.i(803237),l=e.i(93387),u=e.i(802641),d=e.i(461315),c=e.i(382966),p=e.i(618664),f=e.i(974034),m=e.i(819263),h=e.i(38607),g=e.i(736337),y=e.i(958948);async function b(){let[e]=await (0,i.db)().select().from(o.accounts).where((0,r.eq)(o.accounts.provider,"github")).orderBy((0,n.asc)(o.accounts.createdAt)).limit(1);if(!e)return{error:"GitHub isn't connected."};let t=(0,s.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,l.serverEnv)().OPS_ENCRYPTION_KEY);return t?{token:t,accountId:e.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function w(){let[e]=await (0,i.db)().select({value:o.settings.value}).from(o.settings).where((0,r.eq)(o.settings.key,"deps.scanAll")).limit(1);return e?.value===!0}let v=e=>{let t=(0,g.w)(e);return{dir:(0,f.Q)((e??{}).rootDirectory),unsupported:(0,f.l)((e??{}).rootDirectoryUnsupported),branch:(0,g.i)((0,g.V)(e),null),...t?{fallback:t}:{}}};async function k(e){let t=[...new Set(e.filter(u.f))],n=new Map;if(!t.length)return n;let a=await (0,i.db)().select({repoId:o.appRepos.repoId,name:o.resources.name,monitored:o.resources.monitored,meta:o.resources.meta}).from(o.appRepos).innerJoin(o.resources,(0,r.eq)(o.resources.id,o.appRepos.appId)).where((0,r.and)((0,r.inArray)(o.appRepos.repoId,t),(0,r.isNull)(o.resources.goneAt))).limit(1e3);for(let e of(a.sort((e,t)=>Number(!!t.monitored)-Number(!!e.monitored)||(e.name<t.name?-1:+(e.name>t.name))),a))n.has(e.repoId)||n.set(e.repoId,v(e.meta));return n}async function _(){let e={id:o.githubRepos.id,fullName:o.githubRepos.fullName,defaultBranch:o.githubRepos.defaultBranch,scannedAt:o.dependencyScans.scannedAt},t=(0,r.and)((0,r.isNull)(o.githubRepos.goneAt),(0,r.eq)(o.githubRepos.archived,!1)),n=await w()?await (0,i.db)().select(e).from(o.githubRepos).leftJoin(o.dependencyScans,(0,r.eq)(o.dependencyScans.repoId,o.githubRepos.id)).where(t).limit(500):await (0,i.db)().selectDistinct(e).from(o.appRepos).innerJoin(o.githubRepos,(0,r.eq)(o.githubRepos.id,o.appRepos.repoId)).leftJoin(o.dependencyScans,(0,r.eq)(o.dependencyScans.repoId,o.githubRepos.id)).where(t).limit(500),a=n.length?await k(n.map(e=>e.id)):new Map;return(0,m.M)(n.map(e=>{let t=a.get(e.id);return{...e,rootDir:t?.dir??null,rootDirUnsupported:t?.unsupported??null,prodBranch:t?.branch??null,...t?.fallback?{prodFallback:t.fallback}:{}}}))}let A=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e;async function I(e,t){let r=new Date;await (0,i.db)().insert(o.dependencyScans).values({repoId:e,...t,updatedAt:r}).onConflictDoUpdate({target:o.dependencyScans.repoId,set:{...t,updatedAt:r}})}async function S(e){return(0,i.db)().select({id:o.dependencyVulns.id,package:o.dependencyVulns.package,installedVersion:o.dependencyVulns.installedVersion,vulnId:o.dependencyVulns.vulnId,severity:o.dependencyVulns.severity,fixedVersion:o.dependencyVulns.fixedVersion,summary:o.dependencyVulns.summary,aliases:o.dependencyVulns.aliases,dev:o.dependencyVulns.dev,direct:o.dependencyVulns.direct,source:o.dependencyVulns.source}).from(o.dependencyVulns).where((0,r.and)((0,r.eq)(o.dependencyVulns.repoId,e),(0,r.isNull)(o.dependencyVulns.resolvedAt))).limit(2e3)}function $(e,t){for(let r of d.a){let n=e.find(e=>e.name===r.path);if(n)return{path:(0,f.H)(t,r.path),kind:r.kind,sha:n.sha}}return null}async function T(e,n,a,s={}){let l=()=>({...s,timeoutMs:Math.max(1e3,Math.min(a-Date.now(),1e4))}),u=async e=>(await I(n.id,{error:A(e,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:e}),b=n.defaultBranch??"HEAD",w=null;for(let t of[n.prodBranch,n.prodFallback]){if(t&&t===n.defaultBranch)break;let r=(0,g.i)(t,n.defaultBranch);if(!r)continue;let a=await (0,h.V)(e,n.fullName,r,l());if(!a.ok)return u(a.error);if(a.data){w=r;break}}let v=null!==w;w&&(b=w);let k=v?`Scanned ${w}, the branch production is built from.`:null,_=(0,f.Q)(n.rootDir),R=_?null:(0,f.l)(n.rootDirUnsupported),x=R?`The Vercel Root Directory "${R}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,E=await (0,h.W)(e,n.fullName,b,l(),_);if(!E.ok)return u(_&&"missing"===E.kind?`The folder ${(0,f.x)(_)} isn't in ${n.fullName} on ${b}.`:E.error);let N=$(E.data,_),P=E.data.find(e=>"package.json"===e.name)??null,O=!1,C=null;if(_&&P&&!N){let t=await (0,h.W)(e,n.fullName,b,l());if(!t.ok)return u(t.error);O=null!==(N=$(C=t.data,null))}let j=N?N.sha:P?`pkg:${P.sha}`:null,D=j&&_?`${_}:${j}${O&&P?`+${P.sha}`:""}`:j&&R?`odd:${j}`:j,M=D&&v?`br:${w}:${D}`:D,[z]=await (0,i.db)().select().from(o.dependencyScans).where((0,r.eq)(o.dependencyScans.repoId,n.id)).limit(1),q=new Date;if(!(0,m.U)(z??null,M,q,s.force))return{status:"unchanged"};if(!M){let e=await S(n.id);return e.length&&await (0,i.db)().update(o.dependencyVulns).set({resolvedAt:q}).where((0,r.inArray)(o.dependencyVulns.id,e.map(e=>e.id))),await I(n.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:q,queriedAt:q,error:null,note:A([k,x,`No package.json or lockfile ${_?"in":"at"} ${(0,f.x)(_)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let L=(0,f.H)(_,"package.json"),U=P?await (0,h.Z)(e,n.fullName,L,b,y.$,l()):null;if(U&&!U.ok)return u(U.error);let H=U?.ok&&U.data?(0,d.b)(U.data):null,B=null,V="package-json",G=O&&N?`Scanned ${(0,f.x)(_)} with the repository root's ${N.path} (workspaces).`:null;if(N){if(2e3>a-Date.now())return u("Time budget used before the lockfile was read; the next run tries again.");let t=await (0,h.Z)(e,n.fullName,N.path,b,h.y,{...s,timeoutMs:Math.max(1e3,Math.min(a-Date.now(),2e4))});if(!t.ok)return u(t.error);let r=!0;if(O&&_&&t.data&&!(0,f.p)(N.kind,t.data,_)){let t=C?.some(e=>"package.json"===e.name)?await (0,h.Z)(e,n.fullName,"package.json",b,y.$,l()):null;if(t&&!t.ok)return u(t.error);r=(0,f.F)(t?.data??null,_)}r?(B=t.data?(0,d.D)(N.kind,t.data):null,V=N.kind,B||(G=[G,`${N.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(G=`The repository root's ${N.path} isn't a workspace that includes ${_}, so the versions come from ${L} ranges (approximate).`,N=null)}if(B){let e=(0,t.m)(B,H);B=e.deps,e.stale.length&&(G=[G,(0,t.M)(e.stale)].filter(Boolean).join(" "))}else B=H?(0,d.e)(H):[],V="package-json",G??=N?null:"No lockfile: the versions come from package.json ranges (approximate).";let K=await S(n.id),F=[];if(B.length){let e=await (0,p.K)(B,{fetch:s.fetch,deadline:a});if(!e.ok)return u(e.error);let t=(0,m.A)(K,!0===s.force),r=await (0,p.J)((0,m.z)(B,e.ids,t),{fetch:s.fetch,deadline:a});if(!r.ok)return u(r.error);F=(0,c.i)(B,e.ids,r.map,t)}if(a-Date.now()>1500){let t=await (0,h.t)(e,n.fullName,l());t.ok&&"alerts"in t.data?F=(0,m.R)(F,t.data.alerts,B):t.ok&&(G=[G,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let W=(0,m.h)(K,F,(0,d.K)(H));G=[k,x,G].filter(Boolean).join(" ")||null;let X=new Date;return await (0,i.db)().transaction(async e=>{for(let t of(W.insert.length&&await e.insert(o.dependencyVulns).values(W.insert.map(e=>({repoId:n.id,package:e.package,installedVersion:e.installedVersion,vulnId:e.vulnId,aliases:e.aliases,severity:e.severity,fixedVersion:e.fixedVersion,summary:e.summary,direct:e.direct,dev:e.dev,source:e.source,firstSeenAt:X,lastSeenAt:X}))).onConflictDoNothing(),W.update))await e.update(o.dependencyVulns).set({severity:t.severity,fixedVersion:t.fixedVersion,summary:t.summary,aliases:t.aliases,dev:t.dev,direct:t.direct,lastSeenAt:X}).where((0,r.eq)(o.dependencyVulns.id,t.id));W.resolve.length&&await e.update(o.dependencyVulns).set({resolvedAt:X}).where((0,r.and)((0,r.inArray)(o.dependencyVulns.id,W.resolve),(0,r.isNull)(o.dependencyVulns.resolvedAt))),await e.insert(o.dependencyScans).values({repoId:n.id,lockfilePath:N?.path??(P?L:null),lockfileSha:M,packageCount:B.length,scannedAt:X,queriedAt:X,error:null,note:G?A(G,300):null,updatedAt:X}).onConflictDoUpdate({target:o.dependencyScans.repoId,set:{lockfilePath:N?.path??(P?L:null),lockfileSha:M,packageCount:B.length,scannedAt:X,queriedAt:X,error:null,note:G?A(G,300):null,updatedAt:X}})}),{status:"scanned",vulns:W.insert.length+W.update.length,packages:B.length,note:"package-json"===V?G:null}}async function R(e,t={}){var n,a;let s,l,u,d,c=await b();if("error"in c)return{error:c.error};let{first:p,only:f,skip:m,...h}=t,g=(n=await _(),s=(a={first:p,only:f,skip:m}).only?new Set(a.only):null,l=new Set(a.skip??[]),u=(s?n.filter(e=>s.has(e.id)):n).filter(e=>!l.has(e.id)),d=new Set(a.first??[]),[...u.filter(e=>d.has(e.id)),...u.filter(e=>!d.has(e.id))]),y={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:g.map(e=>e.id)};for(let[t,r]of g.entries()){if(e-Date.now()<4e3){y.left=g.length-t;break}y.done.push(r.id);try{let t=await T(c.token,r,e,h);"scanned"===t.status?y.scanned++:"unchanged"===t.status?y.unchanged++:y.failed.push(`${r.fullName}: ${t.error}`)}catch(e){y.failed.push(`${r.fullName}: ${e instanceof Error?e.name:"error"}`)}}return await (0,i.db)().delete(o.dependencyVulns).where((0,r.and)((0,r.isNotNull)(o.dependencyVulns.resolvedAt),(0,r.lt)(o.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),y}let x=async()=>(await (0,i.db)().select({id:o.accounts.id}).from(o.accounts).where((0,r.eq)(o.accounts.provider,"github")).limit(1)).length>0;function E(e){let t=e.failed.filter(e=>!/didn't answer in time|no time left|time budget|rate limit/i.test(e)),r=e.failed.length-t.length+(e.left??0);r&&console.info(`deps: ${r} repositor${1===r?"y":"ies"} wait for the next run`);let n=t.slice(0,3);return t.length>3&&n.push(`+${t.length-3} more`),n.length?n.join("; "):null}async function N(e){if(!await x())return null;if(e-Date.now()<4e3)return console.info("deps: no time left today; the scan resumes tomorrow"),null;let t=await R(e);if("error"in t){let e;return(e=t.error,/didn't answer in time|no time left|time budget|rate limit/i.test(e))?null:t.error}return E(t)}async function P(e,t,n={}){let{marked:a,onlyMarked:s}=t;if(!await x())return{problem:null,settled:[...a],done:[],complete:!0};let l=a.filter(u.f),d=l.length?await (0,i.db)().select({appId:o.appRepos.appId,repoId:o.appRepos.repoId}).from(o.appRepos).where((0,r.inArray)(o.appRepos.appId,l)).limit(5*l.length):[],c=[...new Set(d.map(e=>e.repoId))],p=e=>d.filter(t=>t.appId===e).map(e=>e.repoId),f=a.filter(e=>!p(e).length);if(s&&!c.length)return{problem:null,settled:[...a],done:[],complete:!0};if(e-Date.now()<4e3)return{problem:null,settled:f,done:[],complete:!1};let m=(t.skip??[]).filter(e=>!c.includes(e)),h=await R(e,{...n,first:c,...s?{only:c}:{skip:m}});if("error"in h){let e;return{problem:(e=h.error,/didn't answer in time|no time left|time budget|rate limit/i.test(e))?null:h.error,settled:[...a],done:[],complete:!0}}let g=new Set([...h.done,...c.filter(e=>!h.listed.includes(e))]);return{problem:E(h),settled:a.filter(e=>p(e).every(e=>g.has(e))),done:h.done,complete:0===h.left}}async function O(e){let t=e.filter(u.f);if(!t.length)return[];let n=await (0,i.db)().select({appId:o.appRepos.appId,repoId:o.appRepos.repoId,error:o.dependencyScans.error}).from(o.appRepos).innerJoin(o.dependencyScans,(0,r.eq)(o.dependencyScans.repoId,o.appRepos.repoId)).where((0,r.and)((0,r.inArray)(o.appRepos.appId,t),(0,r.isNotNull)(o.dependencyScans.scannedAt)));if(!n.length)return[];let a=await (0,i.db)().select({repoId:o.dependencyVulns.repoId,package:o.dependencyVulns.package,installedVersion:o.dependencyVulns.installedVersion,fixedVersion:o.dependencyVulns.fixedVersion,severity:o.dependencyVulns.severity,summary:o.dependencyVulns.summary,dev:o.dependencyVulns.dev,direct:o.dependencyVulns.direct}).from(o.dependencyVulns).where((0,r.and)((0,r.inArray)(o.dependencyVulns.repoId,[...new Set(n.map(e=>e.repoId))]),(0,r.isNull)(o.dependencyVulns.resolvedAt))).limit(1e4);return n.map(e=>({appId:e.appId,repoId:e.repoId,error:e.error,vulns:a.filter(t=>t.repoId===e.repoId).map(e=>({package:e.package,installedVersion:e.installedVersion,fixedVersion:e.fixedVersion,severity:e.severity,summary:e.summary,dev:e.dev,direct:e.direct}))}))}async function C(e,t=new Set){let n=e.filter(u.f),s=new Map;if(!n.length)return s;let l=await (0,i.db)().select({appId:o.appRepos.appId,repoId:o.appRepos.repoId}).from(o.appRepos).where((0,r.inArray)(o.appRepos.appId,n));if(!l.length)return s;let d=await (0,i.db)().select({repoId:o.dependencyVulns.repoId,package:o.dependencyVulns.package,installedVersion:o.dependencyVulns.installedVersion,fixedVersion:o.dependencyVulns.fixedVersion,vulnId:o.dependencyVulns.vulnId,aliases:o.dependencyVulns.aliases,severity:o.dependencyVulns.severity,direct:o.dependencyVulns.direct}).from(o.dependencyVulns).where((0,r.and)((0,r.inArray)(o.dependencyVulns.repoId,[...new Set(l.map(e=>e.repoId))]),(0,r.isNull)(o.dependencyVulns.resolvedAt),(0,r.eq)(o.dependencyVulns.direct,!0),(0,r.isNotNull)(o.dependencyVulns.fixedVersion))).limit(2e3),c=d.some(e=>"next"===e.package)?new Set((await (0,i.db)().selectDistinct({appId:o.dependencyPrs.appId}).from(o.dependencyPrs).where((0,r.and)((0,r.inArray)(o.dependencyPrs.appId,n),(0,r.notInArray)(o.dependencyPrs.stage,["merged","closed"]),(0,r.gte)(o.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),a.sql`${o.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(n.length)).map(e=>e.appId)):new Set;for(let e of l){let r=t.has(e.appId)||c.has(e.appId);(0,m.B)(d.filter(t=>t.repoId===e.repoId&&!(r&&"next"===t.package))).length&&s.set(e.appId,e.repoId)}return s}e.s(["R",0,4e4,"o",0,12e3,"d",0,4e3,"e",0,N,"O",0,P,"C",0,C,"a",0,O])},908223,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(406212),a=e.i(530298),i=e.i(803237),o=e.i(79068),s=e.i(821342),l=e.i(665870),u=e.i(974034),d=e.i(461315),c=e.i(964964),p=e.i(819263),f=e.i(93387),m=e.i(802641),h=e.i(736337),g=e.i(348657),y=e.i(934152),b=e.i(406197),w=e.i(732077);let v=e=>({done:!1,message:e});async function k(){let[e]=await (0,n.db)().select().from(a.accounts).where((0,t.eq)(a.accounts.provider,"github_write")).orderBy((0,r.asc)(a.accounts.createdAt)).limit(1);if(!e)return null;let o=(0,i.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,f.serverEnv)().OPS_ENCRYPTION_KEY);return o?{id:e.id,token:o}:"unreadable"}let _={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function A(e){let[r]=await (0,n.db)().select({version:a.appSecurity.version,status:a.appSecurity.status,findings:a.appSecurity.findings}).from(a.appSecurity).where((0,t.eq)(a.appSecurity.resourceId,e)).limit(1);return r?(0,l.p)({version:r.version,status:r.status,findings:Array.isArray(r.findings)?r.findings:[]}):null}async function I(e){let r=await (0,n.db)().select({package:a.dependencyVulns.package,installedVersion:a.dependencyVulns.installedVersion,fixedVersion:a.dependencyVulns.fixedVersion,vulnId:a.dependencyVulns.vulnId,aliases:a.dependencyVulns.aliases,severity:a.dependencyVulns.severity,direct:a.dependencyVulns.direct,dev:a.dependencyVulns.dev}).from(a.dependencyVulns).where((0,t.and)((0,t.eq)(a.dependencyVulns.repoId,e),(0,t.isNull)(a.dependencyVulns.resolvedAt))).limit(2e3);return{upgrades:(0,p.B)(r),installed:(0,o.D)(r)}}async function S(e,t,r,n,a){for(let i of(0,h.a)(n,r)){if(i===r)break;let n=await (0,g.M)(e,t,i,a);if(!n.ok)return n;if(n.data)return{ok:!0,data:{base:i,head:n}}}return{ok:!0,data:{base:r,head:await (0,g.M)(e,t,r,a)}}}async function $(r,i,p,f=b.W,T={}){let R;if(!(0,m.f)(i)||!(0,m.f)(p))return f(v("Something in that request wasn't valid."),r,"");let x=await (0,b.q)(r.id,"github_bump_pr",i);if(x)return f(v(x),r,"");let E=await k();if(null===E)return f(v('A GitHub PR-write token is needed: connect "GitHub (PR write)" on Connections (fine-grained, this repository only, Contents and Pull requests: Read and write; Commit statuses: Read for automatic merges), then ask again.'),r,"");if("unreadable"===E)return f(v("Can't read the stored GitHub PR-write credential. Replace it on Connections."),r,"");let[N]=await (0,n.db)().select({app:a.resources.name,meta:a.resources.meta,fullName:a.githubRepos.fullName,owner:a.githubRepos.owner,goneAt:a.githubRepos.goneAt,lockfilePath:a.dependencyScans.lockfilePath,lockfileSha:a.dependencyScans.lockfileSha}).from(a.appRepos).innerJoin(a.githubRepos,(0,t.eq)(a.githubRepos.id,a.appRepos.repoId)).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.appRepos.appId)).leftJoin(a.dependencyScans,(0,t.eq)(a.dependencyScans.repoId,a.appRepos.repoId)).where((0,t.and)((0,t.eq)(a.appRepos.appId,i),(0,t.eq)(a.appRepos.repoId,p))).limit(1);if(!N||N.goneAt)return f(v(y.G),r,E.id);let P=N.meta??{},O=(0,u.l)(P.rootDirectoryUnsupported);if(O)return f(v(`The Vercel Root Directory "${O}" of ${N.app} couldn't be used (Watchbell reads plain folder names, at most 4 deep). Update its package.json yourself.`),r,E.id);let C=(0,u.Q)(P.rootDirectory),j=(0,u.H)(C,"package.json"),D=C?`in ${C}`:"at the repository root";if(T.framework){let e=await A(i);if(!e)return f(v(`Nothing to update in ${N.app}: its Next.js check shows no advisory with a fixed version.`),r,E.id);R=e}else if(!(R=await I(p)).upgrades.length)return f(v(`Nothing to update in ${N.app}: no direct package has a fixed version for its open advisories.`),r,E.id);let M=R.upgrades;if(T.auto){let e=(0,o.a)(M,R.installed,T.auto.severities);if(!e.ok)return f(v(`Automatic PR not opened: ${_[e.why]}. The proposal waits for your approval.`),r,E.id);M=e.upgrades}M=(0,l.F)(M);let{auto:z,proposalId:q,framework:L,...U}=T,H={timeoutMs:8e3,...U},B=await (0,g.H)(E.token,N.fullName,H);if(!B.ok)return f({done:!1,failed:B,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);let V=await S(E.token,N.fullName,B.data.defaultBranch,P,H);if(!V.ok)return f({done:!1,failed:V,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);let G=V.data.base,K=(0,h.B)(P.productionSource,G,new Date);if(K&&z)return f(v(`Automatic PR not opened: ${K} The proposal waits for your approval.`),r,E.id);let F=L?null:(0,h.y)(N.lockfileSha,B.data.defaultBranch,C);if(F&&F!==G)return f(v(`The dependency scan of ${N.app} read ${F}, but this pull request would go to ${G}. Scan again (Dependencies › Scan now on the app page), then ask again.`),r,E.id);let W=V.data.head;if(!W.ok)return f({done:!1,failed:W,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);if(!W.data)return f(v(`The default branch ${G} wasn't found.`),r,E.id);let X=await (0,g.E)(E.token,N.fullName,W.data,H,j);if(!X.ok)return f({done:!1,failed:X,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);if(!X.data)return f(v(`There is no package.json ${D}.`),r,E.id);let J=(0,s.k)(X.data.text,M);if(!J?.length||L&&!J.some(e=>"next"===e.package))return f(v(`${j} in ${N.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),r,E.id);if(z){let e=J.find(e=>{let t=(0,d.Y)(e.from);return!t||!(0,o.J)(t,e.fixed)});if(e)return f(v(`Automatic PR not opened: ${e.package} ${e.from} → ${e.to} jumps a major version. The proposal waits for your approval.`),r,E.id)}let Y=(0,s.M)(X.data.text,J);if(!Y)return f(v("package.json couldn't be edited safely."),r,E.id);let Z=(0,s.U)(J,C);if(!(0,s.c)(Z,G))return f(v("Refused: the PR branch would be the default branch."),r,E.id);let Q=await (0,g.x)(E.token,N.fullName,N.owner,Z,G,H);if(Q.ok&&Q.data)return{ok:!0,message:`Pull request #${Q.data.number} for these updates is already open.`};let ee=await (0,g.e)(E.token,N.fullName,H);if(!ee.ok)return f({done:!1,failed:ee,audit:{message:`Package update PR failed \xb7 ${N.app}`,resourceId:i}},r,E.id);if(ee.data.length){let e=new Map((await (0,n.db)().select({number:a.dependencyPrs.number,packages:a.dependencyPrs.packages}).from(a.dependencyPrs).where((0,t.and)((0,t.eq)(a.dependencyPrs.repoId,p),(0,t.inArray)(a.dependencyPrs.number,ee.data.map(e=>e.number))))).map(e=>[e.number,e.packages])),i=(0,o.U)(J.map(e=>e.package),ee.data.map(t=>({number:t.number,branch:t.branch,title:t.title,packages:e.get(t.number)??null})),C);if(i)return f(v(`Pull request #${i.number} for the same package is already open in ${N.app}. Merge or close it first.`),r,E.id)}let et=await (0,g.M)(E.token,N.fullName,Z,H);if(et.ok&&et.data)return f(v(`Branch ${Z} already exists without an open pull request. Delete it on GitHub, then ask again.`),r,E.id);let er=N.lockfilePath??(C?(0,u.H)(C,"package-lock.json"):null),en=d.a.find(e=>e.path===er?.split("/").pop())?.kind??null,ea=e=>f({done:!1,failed:e,audit:{message:`Package update PR failed \xb7 ${N.app} \xb7 ${Z}`,resourceId:i}},r,E.id),ei=await (0,g.k)(E.token,N.fullName,Z,W.data,G,H);if(!ei.ok)return ea(ei);let eo=await (0,g.D)(E.token,N.fullName,Z,G,Y,X.data.sha,(0,s.G)(J),H,j);if(!eo.ok)return ea(eo);let es=(0,s.f)(J,C),el=(K?`> [!WARNING]
28
32
  > ${K} Check where production is built from before you merge; Watchbell won't merge this pull request itself.
29
33
 
30
34
  `:"")+(0,s.y)(J,en,!!z,C),eu=await (0,g.y)(E.token,N.fullName,Z,G,es,el,H,{draft:!!K}),ed=!!K;if(K&&!eu.ok&&422===eu.status&&(eu=await (0,g.y)(E.token,N.fullName,Z,G,es,el,H),ed=!1),!eu.ok)return ea(eu);let ec=K?ed?` Opened as a draft: ${K}`:` Opened as a normal pull request (this repository can't have drafts), with the warning on top: ${K}`:"",ep=J.map(e=>`${e.package} ${e.from} → ${e.to}`).join(", "),ef=await (0,g.M)(E.token,N.fullName,Z,H).catch(()=>null),em=!1;if(ef?.ok&&ef.data){await (0,n.db)().insert(a.dependencyPrs).values({repoId:p,appId:i,proposalId:q??null,number:eu.data.number,branch:Z,baseBranch:G,headSha:ef.data,title:es.slice(0,200),packages:J.map(e=>e.package),auto:!!z,stage:"checks",stageText:(0,c.m)(eu.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:t}=await e.A(27505),r=await t.runner?.queueLockfileJob({repoId:p,branch:Z,headSha:ef.data,prNumber:eu.data.number,lockfilePath:er,targets:J.map(e=>({name:e.package,version:e.fixed}))}).catch(()=>(console.warn("deps: queueing the lockfile job failed"),null)),o=await (0,w.U)(E.token,{repo:N.fullName,branch:Z,lockfilePath:er,prNumber:eu.data.number});em=r?.queued===!0||o.sent}return f({done:!0,message:`Pull request #${eu.data.number} opened for ${N.app}: ${ep}.${em?"":` Run npm install${C?` in ${C}`:""} on the branch before merging.`}${ec}`,audit:{message:`Package update PR opened \xb7 ${N.app} \xb7 #${eu.data.number}`,resourceId:i,detail:ep}},r,E.id)}async function T(e,t,r){if(!(0,m.f)(e)||r&&!(0,m.f)(r.appId))return{ok:!1,why:"target"};let n=await k();if(!n||"unreadable"===n)return{ok:!1,why:"no write token"};let a=r?await A(r.appId):await I(e);if(!a)return{ok:!1,why:"nothing"};let i=(0,o.a)(a.upgrades,a.installed,t);return i.ok?{ok:!0}:{ok:!1,why:i.why}}async function R(e,r){let i=e.filter(e=>(0,m.f)(e.appId)&&(0,m.f)(e.repoId)),o=new Map;if(!i.length)return o;let s=await (0,n.db)().select({appId:a.appRepos.appId,repoId:a.appRepos.repoId,meta:a.resources.meta,defaultBranch:a.githubRepos.defaultBranch}).from(a.appRepos).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.appRepos.appId)).innerJoin(a.githubRepos,(0,t.eq)(a.githubRepos.id,a.appRepos.repoId)).where((0,t.inArray)(a.appRepos.appId,[...new Set(i.map(e=>e.appId))])).limit(4*i.length);for(let e of i){let t=s.find(t=>t.appId===e.appId&&t.repoId===e.repoId),n=t?.meta??{},a=t?(0,h.B)(n.productionSource,(0,h.q)(n,t.defaultBranch??null),r):null;a&&o.set(e.appId,a)}return o}async function x(e,r=[]){let i=e.filter(m.f),o=new Map;if(!i.length)return o;let s=await (0,n.db)().select({appId:a.appRepos.appId,repoId:a.appRepos.repoId,version:a.appSecurity.version,status:a.appSecurity.status,findings:a.appSecurity.findings}).from(a.appRepos).innerJoin(a.githubRepos,(0,t.eq)(a.githubRepos.id,a.appRepos.repoId)).innerJoin(a.appSecurity,(0,t.eq)(a.appSecurity.resourceId,a.appRepos.appId)).where((0,t.and)((0,t.inArray)(a.appRepos.appId,i),(0,t.isNull)(a.githubRepos.goneAt),(0,t.eq)(a.appSecurity.status,"vulnerable"))).limit(i.length),u=new Set(r),d=s.filter(e=>u.has(e.appId)),c=d.length?new Set((await (0,n.db)().selectDistinct({repoId:a.dependencyVulns.repoId}).from(a.dependencyVulns).where((0,t.and)((0,t.inArray)(a.dependencyVulns.repoId,[...new Set(d.map(e=>e.repoId))]),(0,t.isNull)(a.dependencyVulns.resolvedAt),(0,t.eq)(a.dependencyVulns.package,"next"),(0,t.eq)(a.dependencyVulns.direct,!0),(0,t.isNotNull)(a.dependencyVulns.fixedVersion))).limit(d.length)).map(e=>e.repoId)):new Set;for(let e of s){if(u.has(e.appId)&&c.has(e.repoId))continue;let t=(0,l.p)({version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[]});t&&o.set(e.appId,{repoId:e.repoId,from:t.from,to:t.to})}return o}e.s(["J",0,T,"W",0,$,"h",0,x,"H",0,R,"G",0,k])},333407,e=>{var t=e.i(533102),r=e.i(406212),n=e.i(530298);let a={monitor:{"Monitor down":"MonitorDown","Monitor degraded":"MonitorDegraded","Monitor recovered":"MonitorRecovered"},deployment:{"Deployment started":"DeployStarted","Deployment ready":"DeployReady","Deployment failed":"DeployFailed","Deployment canceled":"DeployCanceled"},system:{"Collector stopped":"CollectorStopped","Daily jobs finished":"DailyFinished","Daily jobs finished with problems":"DailyProblems"}};async function i(e,o=(0,r.db)()){for(let r of e){if(!r)continue;let e=r.at??new Date,i=r.reason?r.reason:"action"===r.type?"Action":a[r.type]?.[r.message]??null;if(null!==i&&"Action"!==i){let a=new Date(e.getTime()-36e5);if((await o.update(n.events).set({count:t.sql`${n.events.count} + 1`,lastAt:t.sql`greatest(coalesce(${n.events.lastAt}, ${n.events.at}), ${e.toISOString()}::timestamptz)`,detail:r.detail,kind:r.kind}).where(t.sql`${n.events.id} = (select id from ops.events where reason = ${i} and resource_id is not distinct from ${r.resourceId}::uuid
31
35
  and message = ${r.message}
32
- and coalesce(last_at, at) >= ${a.toISOString()}::timestamptz order by coalesce(last_at, at) desc limit 1)`).returning({id:n.events.id})).length)continue}await o.insert(n.events).values({at:e,resourceId:r.resourceId,type:r.type,kind:r.kind,message:r.message,detail:r.detail,actorUserId:r.actorUserId??null,reason:i,count:1})}}e.s(["f",0,i],333407)},459702,355620,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(816173),i=e.i(628852),o=e.i(333407),s=e.i(368230),l=e.i(58992),u=e.i(659916),d=e.i(533102);async function c(e,a){let[i]=await (0,r.db)().insert(n.rateLimits).values({key:e,windowStart:a,count:1}).onConflictDoUpdate({target:[n.rateLimits.key,n.rateLimits.windowStart],set:{count:d.sql`${n.rateLimits.count} + 1`}}).returning({count:n.rateLimits.count});if(1===i.count)try{await (0,r.db)().delete(n.rateLimits).where((0,t.lt)(n.rateLimits.windowStart,new Date(Date.now()-864e5)))}catch{console.warn("rate limit sweep failed")}return i.count}function p(e,t){return(0,u.A)(e,t,{hit:c})}async function f(e,a,i){let o=(0,l.f)(e),[s]=await (0,r.db)().select({id:n.monitors.id}).from(n.monitors).where((0,t.and)((0,t.eq)(n.monitors.tokenHash,o),(0,t.eq)(n.monitors.kind,"heartbeat"))).limit(1);if(!s)return{status:"unknown"};let d=await p(u.t.ping,o);return d.allowed?(await (0,r.db)().update(n.monitors).set({lastPingAt:i,lastPingKind:a,updatedAt:i}).where((0,t.eq)(n.monitors.id,s.id)),{status:"ok"}):{status:"limited",retryAfter:d.retryAfter}}async function m(e,l=()=>!1,u=!1,d){let c=(await (0,r.db)().select({m:n.monitors}).from(n.monitors).innerJoin(n.resources,(0,t.eq)(n.resources.id,n.monitors.resourceId)).where((0,t.and)((0,t.eq)(n.monitors.kind,"heartbeat"),(0,t.eq)(n.monitors.paused,!1),(0,t.eq)(n.monitors.ownerPaused,!1),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt),...d?[(0,t.eq)(n.monitors.id,d)]:[]))).filter(({m:t})=>void 0!==d||(0,i.B)(t.lastCheckedAt,e,u)),p=[],f=[];for(let{m:o}of c){let u=o.periodS??3600,c=o.graceS??600,m=(0,s.C)({lastPingAt:o.lastPingAt,lastPingKind:o.lastPingKind,periodS:u,graceS:c,createdAt:o.createdAt},e);if("unknown"===m.state)continue;let h=m.state!==o.state;(await (0,r.db)().update(n.monitors).set({state:m.state,failStreak:m.failStreak,lastCheckedAt:e,lastError:"ok"===m.state?null:m.text,...h?{stateSince:e}:{},updatedAt:e}).where((0,t.and)((0,t.eq)(n.monitors.id,o.id),(0,t.eq)(n.monitors.state,o.state),(0,t.eq)(n.monitors.ownerPaused,!1),(0,t.eq)(n.monitors.paused,!1),null===o.lastPingAt?(0,t.isNull)(n.monitors.lastPingAt):(0,t.eq)(n.monitors.lastPingAt,o.lastPingAt),null===o.periodS?(0,t.isNull)(n.monitors.periodS):(0,t.eq)(n.monitors.periodS,o.periodS),null===o.graceS?(0,t.isNull)(n.monitors.graceS):(0,t.eq)(n.monitors.graceS,o.graceS))).returning({id:n.monitors.id})).length&&((void 0===d||(0,i.B)(o.lastCheckedAt,e,!0))&&f.push({monitorId:o.id,at:e,ok:"err"!==m.state,statusCode:null,latencyMs:null,error:"ok"===m.state?null:m.text,inMaintenance:l(o.id,o.resourceId)}),p.push((0,a.F)({resourceId:o.resourceId,path:o.name??"heartbeat",prev:o.state,next:m.state,code:null,error:m.text,at:e,heartbeat:!0})))}return f.length&&await (0,r.db)().insert(n.checks).values(f),await (0,o.f)(p),f.length}e.s(["f",0,p],355620),e.s(["_",0,f,"r",0,m],459702)},200346,655704,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(406212),a=e.i(530298),i=e.i(803237),o=e.i(333407),s=e.i(406197);let l="Pause requested · ";function u(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let r=e.lastTraffic??e.trackedSince;return t.getTime()-r.getTime()>=432e6}function d(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,d,"v",0,u],655704);var c=e.i(788264),p=e.i(88316),f=e.i(93387),m=e.i(934152),h=e.i(686454);async function g(e){let r=await (0,n.db)().select({data:a.snapshots.data}).from(a.resources).innerJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"supabase_project"))),i=new Map;for(let{data:e}of r){let t=(0,c.k)(c.B,e);t.orgSlug&&void 0!==t.freeOrg&&i.set(t.orgSlug,t.freeOrg)}return i}let y=e=>`${e} day${1===e?"":"s"}`,b=e=>e instanceof Error?e.name:"unknown";async function w(e,r,i){try{let o=await (0,n.db)().select({k:a.keepActive,r:a.resources,s:a.snapshots,a:a.accounts}).from(a.keepActive).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.keepActive.resourceId)).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.keepActive.keep,!0),(0,t.eq)(a.resources.kind,"supabase_project"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt),(0,t.eq)(a.accounts.status,"ok"))).limit(100),s=(0,f.serverEnv)().OPS_ENCRYPTION_KEY;for(let[t,{k:n,r:a,s:l,a:u}]of o.entries()){let d=r-Date.now()-500;if(d<250)return void i.push(`keep-active: ${o.length-t} left for the next run, time budget used`);if(!(n.lastKeepAliveAt&&e.getTime()-n.lastKeepAliveAt.getTime()<72e6))try{await v(a,l,u,e,s,d,i)}catch(e){console.warn("keep-active failed:",b(e)),i.push(`keep-active/${a.name}: ${b(e)}`)}}}catch(e){console.warn("keep-active failed:",b(e)),i.push(`keep-active: ${b(e)}`)}}async function v(e,r,s,l,d,f,g){let b=(0,c.k)(c.B,r?.data),w=b.lastTrafficAt?new Date(b.lastTrafficAt):b.trafficAt?new Date(new Date(b.trafficAt).getTime()-6048e5):null;if(!u({status:b.status??"",keep:!0,lastTraffic:w,trackedSince:e.firstSeenAt},l))return;let v=Math.floor((l.getTime()-(w??e.firstSeenAt).getTime())/864e5),k=(0,i.V)({ciphertext:s.credentialCiphertext,iv:s.credentialIv},d);if(!k)return void g.push(`keep-active/${s.label}: credential can't be read`);let _=await (0,h.i)(k,e.externalId,{timeoutMs:Math.min(5e3,f)});if(_.ok)await (0,n.db)().update(a.keepActive).set({lastKeepAliveAt:l}).where((0,t.eq)(a.keepActive.resourceId,e.id)),await (0,o.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${y(v)})`,detail:null}]);else{let t=Math.max(1,p.e-v);await (0,o.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${y(t)}`,detail:"scope"===_.kind?"This token can't run the read-only query (Database read).":(0,m.S)(_.error)}]),g.push(`keep-active/${e.name}: ${_.error}`)}}async function k(e){let[i]=await (0,n.db)().select({at:a.events.at}).from(a.events).where((0,t.and)((0,t.eq)(a.events.reason,"Action"),(0,t.eq)(a.events.resourceId,e),(0,t.eq)(a.events.type,"action"),(0,t.inArray)(a.events.kind,["ok","err"]),(0,t.isNotNull)(a.events.actorUserId),(0,t.like)(a.events.message,`${l}%`))).orderBy((0,r.desc)(a.events.at)).limit(1);return i?.at??null}async function _(){return(await (0,n.db)().select({id:a.keepActive.resourceId}).from(a.keepActive).where((0,t.eq)(a.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,r,l=1/0){let u=r.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),c=()=>l-Date.now()-500;if(!u.length||250>c())return;let y=await (0,n.db)().select({k:a.keepActive,id:a.resources.id,name:a.resources.name,ref:a.resources.externalId,accountId:a.resources.accountId,label:a.accounts.label,lastTestAt:a.accounts.lastTestAt,ciphertext:a.accounts.credentialCiphertext,iv:a.accounts.credentialIv}).from(a.keepActive).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.keepActive.resourceId)).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).where((0,t.and)((0,t.eq)(a.keepActive.autoRestore,!0),(0,t.inArray)(a.keepActive.resourceId,u.map(e=>e.resourceId)),(0,t.eq)(a.resources.kind,"supabase_project"),(0,t.isNull)(a.resources.goneAt)));if(!y.length)return;let w=await (0,s.f)([...new Set(y.map(e=>e.accountId))]),v=new Map,_=new Map;for(let l of y)try{let u=r.filter(e=>e.accountId===l.accountId),y=u.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!v.has(l.accountId)){let e=await g(l.accountId);v.set(l.accountId,e),_.set(l.accountId,(0,p._)(u.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let b=!1===v.get(l.accountId).get(y),A=b?1/0:_.get(l.accountId),I=w.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),$=I?.write==="denied"&&new Date(I.at).getTime()>S,T=d({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:$},e);if(!T.act){"no-slot"===T.reason&&await (0,o.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let R=await k(l.id);if(R&&R.getTime()>l.k.updatedAt.getTime())continue;let x=c();if(x<250)return;await (0,n.db)().update(a.keepActive).set({lastAutoRestoreAt:e}).where((0,t.eq)(a.keepActive.resourceId,l.id));let E=(0,i.V)({ciphertext:l.ciphertext,iv:l.iv},(0,f.serverEnv)().OPS_ENCRYPTION_KEY);if(!E)continue;let N=await (0,h.G)(E,l.ref,{timeoutMs:Math.min(5e3,x)});N.ok?(b||_.set(l.accountId,_.get(l.accountId)-1),await (0,s.y)(l.accountId,"ok"),await (0,o.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===N.kind&&await (0,s.y)(l.accountId,"denied"),await (0,o.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===N.kind?`${(0,m.b)("supabase",{})} Auto-restore stops until then.`:(0,m.S)(N.error)}]))}catch(e){console.warn("auto-restore failed:",b(e))}}async function I(e,r,i=s.W,o=new Date){let l=await (0,s.q)(e.id,"keep-alive",r);if(l)return{ok:!1,error:l};let u=await (0,s.p)(r,"supabase_project");if(!u)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[d]=await (0,n.db)().select({last:a.keepActive.lastKeepAliveAt}).from(a.keepActive).where((0,t.eq)(a.keepActive.resourceId,r)).limit(1);if(d?.last&&o.getTime()-d.last.getTime()<72e6)return i({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,u.account.id);let c=u.resource.name,p=await (0,h.i)(u.token,u.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,n.db)().insert(a.keepActive).values({resourceId:r,lastKeepAliveAt:o}).onConflictDoUpdate({target:a.keepActive.resourceId,set:{lastKeepAliveAt:o}}),i(p.ok?{done:!0,message:`Keep-alive sent to ${c}.`,audit:{message:`Keep-alive sent \xb7 ${c}`,resourceId:r}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${c}`,resourceId:r}},e,u.account.id)}e.s(["m",0,g,"z",0,A,"g",0,_,"v",0,I,"V",0,w,"G",0,function(e,t,r){return!1===t.get(r)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],200346)},706959,e=>{var t,r=e.i(396918),n=e.i(533102),a=e.i(100261),i=e.i(406212),o=e.i(530298);e.i(27479);var s=e.i(764266);s.J;let l=e=>({id:e.id,scope:e.scope,appId:e.resourceId,monitorId:e.monitorId,startsAt:e.startsAt,durationMin:e.durationMin,weekly:e.weekly,note:e.note}),u=n.sql`(${o.maintenanceWindows.weekly} or ${o.maintenanceWindows.startsAt} + ${o.maintenanceWindows.durationMin} * interval '1 minute' > now())`;async function d(){return(await (0,i.db)().select().from(o.maintenanceWindows).where(u).orderBy((0,r.asc)(o.maintenanceWindows.startsAt),(0,r.asc)(o.maintenanceWindows.id)).limit(s.J)).map(l)}t=o.resources,new Proxy(t,new a.TableAliasProxyHandler("mon_app",!1)),e.s(["f",0,d],706959)},827439,706539,380719,668141,242960,991219,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(406212),a=e.i(530298),i=e.i(533102),o=e.i(112515),s=e.i(803237),l=e.i(333407),u=e.i(753535),d=e.i(93387),c=e.i(549889),p=e.i(491370),f=e.i(292178),m=e.i(377323),h=e.i(259246),g=e.i(198552),y=e.i(228516),b=e.i(437122),w=e.i(319718),v=e.i(941536),k=e.i(686454),_=e.i(582888),A=e.i(811539),I=e.i(978196),S=e.i(736337),$=e.i(149398),T=e.i(27479),R=e.i(122603),x=e.i(105464),E=e.i(467404),N=e.i(816173),P=e.i(628852);e.i(58992);var O=e.i(764266),C=e.i(90879),j=e.i(164617),D=e.i(412948),M=e.i(785194),z=e.i(70377);e.i(459702);var q=e.i(706959),L=e.i(157406),U=e.i(728335);let H=(e,t)=>"string"==typeof t?i.sql`to_char(${e} at time zone ${t}, 'YYYY-MM-DD')`:i.sql`to_char((${e} at time zone 'UTC') + ${i.sql.raw(`interval '${Math.trunc(t.offsetMinutes)} minutes'`)}, 'YYYY-MM-DD')`,B=i.sql.raw("2"),V=i.sql`percentile_cont(0.95) within group (order by ${a.checks.latencyMs})`,G=i.sql`percentile_cont(0.5) within group (order by ${a.checks.latencyMs})`;i.sql`(count(*) filter (where not ${a.checks.ok}))::int`;let K=(0,t.eq)(a.checks.inMaintenance,!1);async function F(){let[e]=await (0,n.db)().select({h:(0,L.max)(a.rollupsHourly.hour)}).from(a.rollupsHourly);return e?.h?new Date(e.h.getTime()+36e5):null}async function W(e,t,r=(0,U.timeZone)()){if(!e.length)return new Map;try{return await X(e,t,r)}catch(a){if(!function(e){let t=e;for(let e=0;e<4&&t&&"object"==typeof t;e++,t=t.cause){let{code:e,message:r}=t;if("22023"===e&&"string"==typeof r&&/time zone .* not recognized/i.test(r))return!0}return!1}(a))throw a;let n=globalThis;return n.__watchbellPgZoneWarned||(n.__watchbellPgZoneWarned=!0,console.warn(`Watchbell: the database doesn't know the time zone ${r}; uptime days use its current UTC offset instead.`)),X(e,t,{offsetMinutes:(0,U.utcOffsetMinutes)(t)})}}async function X(e,r,o){let s=(0,U.dayStart)((0,M.W)(r,M.F)[0]),l=await F(),u=new Date(Math.max(s.getTime(),l?.getTime()??0,r.getTime()-z.A.rawChecksMs)),d=H(a.rollupsHourly.hour,o),c=H(a.checks.at,o),[p,f]=await Promise.all([l?(0,n.db)().select({monitorId:a.rollupsHourly.monitorId,day:d,checks:i.sql`sum(${a.rollupsHourly.checks})::int`,failures:i.sql`sum(${a.rollupsHourly.failures})::int`,maint:i.sql`sum(${a.rollupsHourly.maintenance})::int`}).from(a.rollupsHourly).where((0,t.and)((0,t.inArray)(a.rollupsHourly.monitorId,e),(0,t.gte)(a.rollupsHourly.hour,s),(0,t.lt)(a.rollupsHourly.hour,l))).groupBy(a.rollupsHourly.monitorId,B):Promise.resolve([]),(0,n.db)().select({monitorId:a.checks.monitorId,day:c,checks:i.sql`(count(*) filter (where not ${a.checks.inMaintenance}))::int`,failures:i.sql`(count(*) filter (where not ${a.checks.ok} and not ${a.checks.inMaintenance}))::int`,maint:i.sql`(count(*) filter (where ${a.checks.inMaintenance}))::int`}).from(a.checks).where((0,t.and)((0,t.inArray)(a.checks.monitorId,e),(0,t.gte)(a.checks.at,u))).groupBy(a.checks.monitorId,B)]);return(0,M.C)([...p,...f])}async function J(e,r){let o;if(!e.length)return new Map;let s=z.A.responseHours,l=(0,M.D)(r,36e5,s),u=(o=a.checks.at,i.sql`(extract(epoch from date_bin(${i.sql.raw("'1 hour'")}::interval, ${o}, timestamptz '2000-01-01 00:00:00+00')) * 1000)::float8`),d=(0,t.and)((0,t.inArray)(a.monitors.resourceId,e),(0,t.gte)(a.checks.at,new Date(l)),K),[c,p]=await Promise.all([(0,n.db)().select({appId:a.monitors.resourceId,t:u,v:V}).from(a.checks).innerJoin(a.monitors,(0,t.eq)(a.monitors.id,a.checks.monitorId)).where(d).groupBy(a.monitors.resourceId,u),(0,n.db)().select({appId:a.monitors.resourceId,v:V,m:G}).from(a.checks).innerJoin(a.monitors,(0,t.eq)(a.monitors.id,a.checks.monitorId)).where(d).groupBy(a.monitors.resourceId)]);return new Map(e.map(e=>[e,{hourly:(0,M.f)(c.filter(t=>t.appId===e),l,36e5,s),p95:p.find(t=>t.appId===e)?.v??null,p50:p.find(t=>t.appId===e)?.m??null}]))}function Y(e){let t="heartbeat"===e.kind;return{id:e.id,appId:e.resourceId,url:e.url,path:t?e.name??"heartbeat":(0,T.K)(e.url),state:e.state,lastStatus:e.lastStatus,lastLatencyMs:e.lastLatencyMs,failStreak:e.failStreak,paused:e.paused,ownerPaused:e.ownerPaused,lastCheckedAt:e.lastCheckedAt,expectedStatus:e.expectedStatus,timeoutMs:e.timeoutMs,intervalS:e.intervalS,bodyContains:e.bodyContains,jsonPath:e.jsonPath,jsonEquals:e.jsonEquals,lastError:e.lastError,kind:t?"heartbeat":"http",name:e.name??null,periodS:e.periodS??null,graceS:e.graceS??null,lastPingAt:e.lastPingAt??null,stateSince:e.stateSince??null}}async function Z(e){let i=await (0,n.db)().select({m:a.monitors,appName:a.resources.name,goneAt:a.resources.goneAt,appMeta:a.resources.meta}).from(a.monitors).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.monitors.resourceId)).where((0,t.and)((0,t.eq)(a.resources.kind,"app"),(0,t.eq)(a.resources.monitored,!0))).orderBy(a.resources.name,(0,r.desc)(a.monitors.kind),a.monitors.url).limit(z.O.monitors),o=await W(i.map(e=>e.m.id),e),s=await Q(i.map(e=>({id:e.m.id,kind:e.m.kind,url:e.m.url,appId:e.m.resourceId,appName:e.appName,appMeta:e.appMeta,lastError:e.m.lastError})));return i.map(({m:t,appName:r,goneAt:n})=>({...Y(t),appName:r,appGone:null!==n,days:o.get(t.id),uptime30:(0,M.Y)((0,M.w)(o.get(t.id),e,M.I)),move:s.get(t.id)??null}))}async function Q(e){if(!e.some(e=>null!==(0,I.Y)(e.appMeta)))return new Map;let r=await (0,n.db)().select({id:a.resources.id,name:a.resources.name,meta:a.resources.meta}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.kind,"app"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(500);return(0,I.P)(e,r)}i.sql`(count(*) filter (where ${a.checks.statusCode} >= 500))::int`,i.sql`count(*)::int`,e.s(["P",0,J,"_",0,W],706539);let ee={ok:!1,error:"That monitor no longer exists."},et={ok:!1,error:"This app already has a monitor for that address."},er={ok:!1,error:"That app isn't watched. Tick it in Connections → Sync first."},en="This app no longer exists at Vercel.",ea={ok:!1,error:en},ei={ok:!1,error:"Someone else changed this monitor just now. Reopen it and try again."},eo={ok:!1,error:"That monitor is a heartbeat. Edit it from its own menu."},es={ok:!1,error:"The console doesn't check a heartbeat. It waits for your job's ping."};async function el(e){return(0,n.db)().transaction(async t=>(await t.execute(i.sql`select pg_advisory_xact_lock(hashtext('ops.monitors'))`),e(t)))}async function eu(e=(0,n.db)()){let[r]=await e.select({n:i.sql`count(*)::int`}).from(a.monitors).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.monitors.resourceId)).where((0,t.and)((0,t.eq)(a.monitors.kind,"http"),(0,t.eq)(a.monitors.paused,!1),(0,t.eq)(a.monitors.ownerPaused,!1),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt)));return r?.n??0}async function ed(e){let[r]=await (0,n.db)().select({m:a.monitors,watched:a.resources.monitored,goneAt:a.resources.goneAt}).from(a.monitors).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.monitors.resourceId)).where((0,t.eq)(a.monitors.id,e)).limit(1);return r??null}async function ec(e,r){let i,o=await ed(e);if(!o)return ee;if("heartbeat"===o.m.kind)return eo;if(o.goneAt)return ea;if(!o.watched)return er;let[s]=await (0,n.db)().select({id:a.monitors.id}).from(a.monitors).where((0,t.and)((0,t.eq)(a.monitors.resourceId,o.m.resourceId),(0,t.eq)(a.monitors.url,r.url),(0,t.ne)(a.monitors.id,e))).limit(1);if(s)return et;let l=new Date,u={url:o.m.url,expectedStatus:o.m.expectedStatus,timeoutMs:o.m.timeoutMs,bodyContains:o.m.bodyContains,jsonPath:o.m.jsonPath,jsonEquals:o.m.jsonEquals},d=(0,j.V)(u,r)?{state:"unknown",failStreak:0,stateSince:l,lastCheckedAt:null,lastStatus:null,lastLatencyMs:null,lastError:null}:{};try{i=await (0,n.db)().update(a.monitors).set({url:r.url,expectedStatus:r.expectedStatus,timeoutMs:r.timeoutMs,bodyContains:r.bodyContains,jsonPath:r.jsonPath,jsonEquals:r.jsonEquals,...d,updatedAt:l}).where((0,t.and)((0,t.eq)(a.monitors.id,e),(0,t.eq)(a.monitors.url,o.m.url),(0,t.eq)(a.monitors.expectedStatus,o.m.expectedStatus),(0,E.T)(a.monitors.bodyContains,o.m.bodyContains),(0,E.T)(a.monitors.jsonPath,o.m.jsonPath),(0,E.T)(a.monitors.jsonEquals,o.m.jsonEquals))).returning({id:a.monitors.id})}catch(t){let e;if("23505"===("string"==typeof(e=t?.code??t?.cause?.code)?e:void 0))return et;throw t}if(!i.length)return await ed(e)?ei:ee;let c=u.url!==r.url;return{ok:!0,message:o.m.ownerPaused?`Saved ${(0,D.F)(r.url)}. It's checked again once you resume it.`:`Checking ${(0,D.F)(r.url)} from the next run.`,audit:{message:`Monitor edited: ${(0,D.F)(r.url)}`,...c?{detail:`was ${(0,D.F)(u.url)}`}:{},resourceId:o.m.resourceId}}}function ep(e,t){return!e.lastCheckedAt||t.getTime()-e.lastCheckedAt.getTime()>=P.O?null:{ok:!0,message:(0,j.T)({...e,lastCheckedAt:e.lastCheckedAt},t),passed:e.lastStatus===e.expectedStatus&&!e.lastError}}async function ef(e){let t=await ed(e);if(!t)return ee;if("heartbeat"===t.m.kind)return es;let r=t.goneAt?en:t.watched?(0,j.i)(t.m)?null:"Paused monitors aren't checked. Resume it first.":"Its app isn't watched. Tick it in Connections → Sync first.";if(r)return{ok:!1,error:r};let i=ep(t.m,new Date);if(i)return i;let o=await (0,q.f)(),s=(0,C.isDemo)()?(0,x.M)(t.m.expectedStatus):await (0,R.b)(t.m.url,{expectedStatus:t.m.expectedStatus,timeoutMs:t.m.timeoutMs,body:(0,$.C)(t.m)}),u=new Date;if(!await (0,E.j)(t.m,s,u)){let t=await ed(e);return t?ep(t.m,new Date)??{ok:!1,error:"The monitor changed while it was being checked. Try again."}:ee}let d=null!==(0,O.x)(o,{monitorId:e,appId:t.m.resourceId},u);await (0,n.db)().insert(a.checks).values({monitorId:e,at:u,ok:s.ok,statusCode:s.statusCode,latencyMs:s.latencyMs,error:s.error,inMaintenance:d});let c=(0,N.G)(t.m.failStreak,s),p=(0,N.F)({resourceId:t.m.resourceId,path:(0,T.K)(t.m.url),prev:t.m.state,next:c.state,code:s.statusCode,error:s.error,at:u});return await (0,l.f)([p]),{ok:!0,message:(0,j.X)(s),passed:s.ok,audit:{message:`Check now: ${(0,D.F)(t.m.url)}`,resourceId:t.m.resourceId}}}e.s(["Q",0,eu,"X",0,ef,"d",0,Z,"J",0,Q,"M",0,Y,"q",0,ec,"e",0,el],380719);var em=e.i(88316);function eh(e,t,r){let n=new Map(e.map(e=>[e.externalId,e])),a=new Set(t.map(e=>e.externalId)),i=new Set(r.keepTeamIds??[]);return{update:t.filter(e=>n.has(e.externalId)).map(e=>({id:n.get(e.externalId).id,name:e.name,meta:e.meta})),insert:t.filter(e=>!n.has(e.externalId)).map(e=>({...e,monitored:r.watchNew})),gone:e.filter(e=>!a.has(e.externalId)&&!(null!==e.teamId&&i.has(e.teamId))).map(e=>e.id)}}function eg(e,t){return!e.monitored&&t.getTime()-e.firstSeenAt.getTime()<864e5}let ey={vercel:"app",supabase:"supabase_project",neon:"neon_project",firebase:"firestore",cloudflare:"zone",turso:"turso_database",upstash:"upstash_redis"},eb=Object.keys(ey),ew=e=>Object.hasOwn(ey,e)?ey[e]:null,ev=e=>"string"==typeof e&&e?e:null;function ek(e,t){return"app"===e?`Vercel project${ev(t.teamName)?` \xb7 ${t.teamName}`:""}`:"zone"===e?`Cloudflare zone \xb7 ${ev(t.status)??"unknown"}`:"supabase_project"===e?["Supabase project",ev(t.status)?(0,em.P)(String(t.status)).label:null,ev(t.region)].filter(Boolean).join(" · "):"neon_project"===e?["Neon project",ev(t.region)].filter(Boolean).join(" · "):"turso_database"===e?["Turso database",ev(t.group)?`group ${t.group}`:null,ev(t.region)].filter(Boolean).join(" · "):"upstash_redis"===e?["Upstash Redis",ev(t.region)].filter(Boolean).join(" · "):"Firebase project"}let e_=e=>"app"===e?"app":"zone"===e?"dom":"firestore"===e?"fs":"db";async function eA(e){let[r]=await (0,n.db)().select().from(a.accounts).where((0,t.eq)(a.accounts.id,e)).limit(1);if(!r)return null;let i=(0,s.V)({ciphertext:r.credentialCiphertext,iv:r.credentialIv},(0,d.serverEnv)().OPS_ENCRYPTION_KEY);return{account:r,token:i,problem:(0,o.A)(i)}}async function eI(e,r){let i=new Date;return(await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,r),(0,t.isNull)(a.resources.goneAt))).orderBy(a.resources.name).limit(500)).map(e=>({id:e.id,name:e.name,sub:ek(e.kind,e.meta),monitored:e.monitored,fresh:eg(e,i),badge:e_(e.kind)}))}async function eS(e,r){let i=await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"app"))),o=i.filter(e=>e.monitored&&!e.goneAt),s=i.filter(e=>!e.monitored||e.goneAt);if(s.length&&await (0,n.db)().update(a.monitors).set({paused:!0,updatedAt:new Date}).where((0,t.inArray)(a.monitors.resourceId,s.map(e=>e.id))),!o.length)return 0;let l=await (0,n.db)().select({id:a.monitors.id,resourceId:a.monitors.resourceId,paused:a.monitors.paused,ownerPaused:a.monitors.ownerPaused,kind:a.monitors.kind}).from(a.monitors).where((0,t.inArray)(a.monitors.resourceId,o.map(e=>e.id))),u=(0,j.Y)(l.filter(e=>"heartbeat"===e.kind));u.length&&await (0,n.db)().update(a.monitors).set({paused:!1,updatedAt:new Date}).where((0,t.inArray)(a.monitors.id,u));let d=l.filter(e=>"heartbeat"!==e.kind),c=(0,j.Y)(d),p=new Set(l.map(e=>e.resourceId)),f=[];for(let e of o.filter(e=>!p.has(e.id))){let t=String(e.meta.teamId??""),n="string"==typeof e.meta.primaryDomain&&e.meta.primaryDomain?e.meta.primaryDomain:null,a=n?{ok:!0,data:n}:r?await (0,g.q)(r,t,e.externalId,e.name):null;f.push({appId:e.id,url:`https://${a?.ok?a.data:`${e.name}.vercel.app`}/`})}return c.length||f.length?el(async e=>{let r=Math.max(0,j.G-await eu(e)),n=new Set,i=c.slice(0,r),o=c.slice(i.length);r-=i.length;let s=new Date;if(i.length&&await e.update(a.monitors).set({paused:!1,updatedAt:s}).where((0,t.inArray)(a.monitors.id,i)),o.length)for(let r of(await e.update(a.monitors).set({paused:!1,ownerPaused:!0,updatedAt:s}).where((0,t.inArray)(a.monitors.id,o)),d.filter(e=>o.includes(e.id))))n.add(r.resourceId);for(let t of f){let i=r>0;i?r-=1:n.add(t.appId),await e.insert(a.monitors).values({resourceId:t.appId,url:t.url,ownerPaused:!i}).onConflictDoNothing()}return n.size}):0}async function e$(e,r,o,s){let l=Array.isArray(o.productionAliases)?o.productionAliases.filter(e=>"string"==typeof e):[],u=(0,I.Q)(s,r,l,o);await (0,n.db)().update(a.resources).set({meta:i.sql`${a.resources.meta} || ${JSON.stringify(u)}::jsonb`}).where((0,t.eq)(a.resources.id,e))}async function eT(e,r){for(let i of(await (0,n.db)().select({id:a.resources.id,name:a.resources.name,externalId:a.resources.externalId,meta:a.resources.meta,monitored:a.resources.monitored,goneAt:a.resources.goneAt}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"app")))).filter(e=>e.monitored&&!e.goneAt)){let e=await (0,g.M)(r,String(i.meta.teamId??""),i.externalId);if(e.ok)await e$(i.id,i.name,i.meta,e.data);else if("auth"===e.kind||429===e.status)return}}async function eR(e,r,i,o){let s=eh((await (0,n.db)().select({id:a.resources.id,externalId:a.resources.externalId,monitored:a.resources.monitored}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"zone")))).map(e=>({...e,teamId:null})),i.map(e=>({externalId:e.id,name:e.name,meta:{status:e.status,accountId:e.accountId,accountName:e.accountName}})),{watchNew:r});await (0,n.db)().transaction(async r=>{for(let e of s.update)await r.update(a.resources).set({name:e.name,meta:e.meta,lastSeenAt:o,goneAt:null,updatedAt:o}).where((0,t.eq)(a.resources.id,e.id));s.insert.length&&await r.insert(a.resources).values(s.insert.map(t=>({accountId:e,kind:"zone",externalId:t.externalId,name:t.name,meta:t.meta,monitored:t.monitored}))).onConflictDoNothing({target:[a.resources.accountId,a.resources.kind,a.resources.externalId]}),s.gone.length&&await r.update(a.resources).set({goneAt:o,updatedAt:o}).where((0,t.and)((0,t.inArray)(a.resources.id,s.gone),(0,t.isNull)(a.resources.goneAt)))})}async function ex(e,r,i){let s=await (0,h.F)(r);if(!s.ok){let r=(0,o.E)({ok:!1,kind:"scope"===s.kind?"auth":s.kind,error:s.error});return r&&await (0,n.db)().update(a.accounts).set({...r,updatedAt:new Date}).where((0,t.eq)(a.accounts.id,e)),{ok:!1,error:s.error}}let l=new Date;await eR(e,i,s.data,l);let u=await (0,h.d)(r);return await (0,n.db)().update(a.accounts).set({lastSyncAt:l,status:"ok",lastError:null,updatedAt:l,...u.ok?{expiresAt:u.data.expiresAt}:{}}).where((0,t.eq)(a.accounts.id,e)),{ok:!0}}async function eE(e,t){let r=e=>({ok:!1,kind:"auth"===e.kind||"scope"===e.kind?"auth":"format"===e.kind?"format":"transient",error:e.error});if("vercel"===e){let e=await (0,g.G)(t);return e.ok?{ok:!0,found:e.data.apps,skippedTeams:e.data.skippedTeams,skippedTeamIds:e.data.skippedTeamIds}:{ok:!1,kind:e.kind,error:e.error}}if("supabase"===e){let e=await (0,k.W)(t);return e.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:e.data.filter(e=>"REMOVED"!==e.status).map(e=>({externalId:e.ref,name:e.name,meta:{orgSlug:e.orgSlug,region:e.region,pgVersion:e.pgVersion,createdAt:e.createdAt,status:e.status}}))}:r(e)}if("neon"===e){let e=await (0,v.m)(t);return e.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:e.data.map(e=>({externalId:e.id,name:e.name,meta:{orgId:e.orgId,region:e.region,pgVersion:e.pgVersion,createdAt:e.createdAt}}))}:r(e)}if("turso"===e){let e=await (0,_.t)(t);return e.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:e.data.map(e=>({externalId:e.id,name:e.name,meta:{org:e.org,group:e.group,region:e.primaryRegion}}))}:r(e)}if("upstash"===e){let e=(0,A.L)(t);if(!e)return{ok:!1,kind:"format",error:"The stored Upstash credential can't be read. Replace it."};let n=await (0,A.M)(e);return n.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:n.data.map(e=>({externalId:e.id,name:e.name,meta:{region:e.region,type:e.type}}))}:r(n)}let n=(0,w.p)(t);if(!n)return{ok:!1,kind:"format",error:"The stored service account can't be read. Replace the credential."};let a=await (0,w.X)(n);if(!a.ok)return r(a);let i=await (0,b.z)(n,a.data);return i.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:i.data.map(e=>({externalId:e.projectId,name:e.displayName,meta:{projectId:e.projectId}}))}:r(i)}async function eN(e){let r=await eA(e);if(!r)return{ok:!1,error:"That account no longer exists."};let{account:i,token:s,problem:l}=r,u=ew(i.provider);if(!u)return{ok:!1,error:"Sync for this provider arrives in a later stage."};if(l||!s)return{ok:!1,error:l??"The credential can't be read."};if("cloudflare"===i.provider){let t=await ex(e,s,i.watchNew);return t.ok?{ok:!0,rows:await eI(e,u),skippedTeams:[],overLimit:null}:t}let d=await eE(i.provider,s);if(!d.ok){let r=(0,o.E)({ok:!1,kind:d.kind,error:d.error});return r&&await (0,n.db)().update(a.accounts).set({...r,updatedAt:new Date}).where((0,t.eq)(a.accounts.id,e)),{ok:!1,error:d.error}}let c=(await (0,n.db)().select({id:a.resources.id,externalId:a.resources.externalId,monitored:a.resources.monitored,meta:a.resources.meta}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,u)))).map(e=>({id:e.id,externalId:e.externalId,monitored:e.monitored,teamId:"string"==typeof e.meta.teamId?e.meta.teamId:null,meta:e.meta})),p=new Map(c.map(e=>[e.id,e.meta])),f=eh(c,d.found,{watchNew:i.watchNew,keepTeamIds:d.skippedTeamIds}),m="vercel"===i.provider?await (0,g.o)(s):null,h=new Date;await (0,n.db)().transaction(async r=>{for(let e of f.update){var n;await r.update(a.resources).set({name:e.name,meta:{...e.meta,...(n=p.get(e.id))&&"string"==typeof n.primaryDomain?{domains:n.domains,primaryDomain:n.primaryDomain,pastDomains:n.pastDomains??[]}:{},...(0,S.K)(p.get(e.id))},lastSeenAt:h,goneAt:null,updatedAt:h}).where((0,t.eq)(a.resources.id,e.id))}f.insert.length&&await r.insert(a.resources).values(f.insert.map(t=>({accountId:e,kind:u,externalId:t.externalId,name:t.name,meta:t.meta,monitored:t.monitored}))).onConflictDoNothing({target:[a.resources.accountId,a.resources.kind,a.resources.externalId]}),f.gone.length&&await r.update(a.resources).set({goneAt:h,updatedAt:h}).where((0,t.and)((0,t.inArray)(a.resources.id,f.gone),(0,t.isNull)(a.resources.goneAt))),await r.update(a.accounts).set({lastSyncAt:h,status:"ok",lastError:null,updatedAt:h,...m?.ok?{expiresAt:m.data}:{}}).where((0,t.eq)(a.accounts.id,e))}),"vercel"===i.provider&&await eT(e,s);let y="vercel"===i.provider?await eS(e,s):0;return{ok:!0,rows:await eI(e,u),skippedTeams:d.skippedTeams,overLimit:(0,j.S)(y)}}e.s(["I",0,eb,"d",0,e_,"T",0,eg,"J",0,eh,"K",0,ew,"S",0,ek],668141),e.s(["F",0,e$,"k",0,eN,"s",0,eR],242960);let eP=i.sql`excluded.meta`;async function eO(e){let r=(0,d.serverEnv)().OPS_ENCRYPTION_KEY;return(await (0,n.db)().select().from(a.accounts).where((0,t.and)((0,t.eq)(a.accounts.provider,e),(0,t.eq)(a.accounts.status,"ok")))).map(e=>{let t=(0,s.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},r);return{acc:e,token:(0,o.A)(t)?null:t}})}async function eC(e,r,i){for(let{acc:s,token:l}of(await eO("cloudflare"))){if(!l){i.push(`cloudflare/${s.label}: credential can't be read`);continue}let d=await (0,h.F)(l);if(!d.ok){let r=(0,o.E)({ok:!1,kind:"scope"===d.kind?"auth":d.kind,error:d.error});if(r&&await (0,n.db)().update(a.accounts).set({...r,updatedAt:e}).where((0,t.eq)(a.accounts.id,s.id)),i.push(`cloudflare/${s.label}: ${d.error}`),429===d.status)return;continue}for(let o of(await eR(s.id,s.watchNew,d.data,e),await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,s.id),(0,t.eq)(a.resources.kind,"zone"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))))){if(r-Date.now()<6e3)return void i.push("cloudflare: skipped remaining zones, time budget used");let t=d.data.find(e=>e.id===o.externalId),[n,a,s]=await Promise.all([(0,h.p)(l,o.externalId),(0,h.v)(l,o.externalId),(0,h.w)(l,o.externalId)]),c=[n,a,s].flatMap(e=>e.ok?[]:[e]),p={zone:{status:t?.status??null,paused:t?.paused??!1,nameServers:t?.nameServers??[],accountId:t?.accountId??null,checkedAt:e.toISOString()},ssl:a.ok?{mode:a.data,error:null}:{mode:null,error:a.error},cfErrors:c.map(e=>e.error)};for(let t of(n.ok?Object.assign(p,{records:n.data.records,recordsTruncated:n.data.truncated}):"scope"===n.kind&&Object.assign(p,{records:[],recordsTruncated:!1}),s.ok?p.certs=s.data:"scope"===s.kind&&(p.certs=[]),await (0,u.r)(o.id,p,e),c))"scope"!==t.kind&&i.push(`cloudflare/${o.name}: ${t.error}`);if(c.some(e=>429===e.status))return}}}async function ej(e,r,i){for(let{acc:o,token:s}of(await eO("vercel"))){if(!s)continue;let l=await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,o.id),(0,t.eq)(a.resources.kind,"app"))),d=l.filter(e=>e.monitored&&!e.goneAt),c=l.filter(e=>!e.monitored||e.goneAt).map(e=>e.id);for(let l of(c.length&&await (0,n.db)().update(a.resources).set({monitored:!1,updatedAt:e}).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.inArray)(a.resources.parentId,c))),d)){if(Date.now()>r)return void i.push("domains: skipped remaining apps, time budget used");let d=String(l.meta.teamId??""),c=await (0,g.M)(s,d,l.externalId);if(!c.ok){if(i.push(`domains/${l.name}: ${c.error}`),429===c.status)return;if("auth"===c.kind)break;continue}await e$(l.id,l.name,l.meta,c.data);let p=c.data.filter(e=>!e.gitBranch),m=p.length?await (0,n.db)().insert(a.resources).values(p.map(t=>({accountId:o.id,kind:"domain",externalId:t.name,name:t.name,parentId:l.id,monitored:!0,meta:{redirect:t.redirect,verified:t.verified,projectId:l.externalId},lastSeenAt:e}))).onConflictDoUpdate({target:[a.resources.accountId,a.resources.kind,a.resources.externalId],set:{parentId:l.id,monitored:!0,goneAt:null,lastSeenAt:e,updatedAt:e,meta:eP}}).returning({id:a.resources.id,name:a.resources.name}):[];for(let o of(await (0,n.db)().update(a.resources).set({goneAt:e,updatedAt:e}).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.parentId,l.id),(0,t.isNull)(a.resources.goneAt),p.length?(0,t.notInArray)(a.resources.externalId,p.map(e=>e.name)):void 0)),m.filter(e=>!(0,f.e)(e.name)))){if(Date.now()>r)return;let t=await (0,g.Q)(s,d,o.name);t.ok?await (0,u.r)(o.id,{vercel:{...t.data,checkedAt:e.toISOString()}},e):"transient"===t.kind&&i.push(`domains/${o.name}: ${t.error}`)}}}}async function eD(){return(0,n.db)().select({r:a.resources,s:a.snapshots}).from(a.resources).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt)))}async function eM(){return(0,n.db)().select({r:a.resources,s:a.snapshots}).from(a.resources).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"zone"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt)))}let ez=(e,t)=>((0,f.Z)(e)?.getTime()??0)-((0,f.Z)(t)?.getTime()??0);async function eq(e,r,i){let[o]=await (0,n.db)().select({data:a.snapshots.data}).from(a.snapshots).where((0,t.eq)(a.snapshots.resourceId,e)).limit(1),s=await (0,m.f)(r,{timeoutMs:5e3});await (0,u.r)(e,{tls:(0,c.o)(s,(0,c.q)(o?.data).tls,i)},i)}async function eL(e,t,r){let n=(await eD()).filter(({r:t,s:r})=>!(0,f.e)(t.name)&&(0,f.Y)((0,c.q)(r?.data).tls?.checkedAt,e)).sort((e,t)=>ez((0,c.q)(e.s?.data).tls?.checkedAt,(0,c.q)(t.s?.data).tls?.checkedAt)).slice(0,f.H);await (0,R.P)(n,4,async({r:n})=>{if(!(t-Date.now()<6e3))try{await eq(n.id,n.name,e)}catch{r.push(`tls/${n.name}: couldn't save the result`)}})}async function eU(e,r,i,o){let[s]=await (0,n.db)().select({data:a.snapshots.data}).from(a.snapshots).where((0,t.eq)(a.snapshots.resourceId,e)).limit(1),l=(0,c.q)(s?.data).rdap,d=o;if(!d){let e=await (0,p.Y)();if(!e.ok)return e.error;d=e.services}let f=(0,p.T)(d,r),m=f?await (0,p.u)(r,f):{ok:!1,error:"The registry has no RDAP server"};return await (0,u.r)(e,{rdap:(0,c.n)(m,l,i)},i),m.ok?null:m.error}async function eH(e,t,r){let n=(await eM()).filter(({r:t,s:r})=>t.monitored&&(0,f.Y)((0,c.q)(r?.data).rdap?.checkedAt,e)).sort((e,t)=>ez((0,c.q)(e.s?.data).rdap?.checkedAt,(0,c.q)(t.s?.data).rdap?.checkedAt)).slice(0,f.H);if(!n.length)return;let a=await (0,p.Y)();if(!a.ok)return void r.push(`rdap: ${a.error}`);for(let{r:i}of n){if(t-Date.now()<6e3)return;let n=await eU(i.id,i.name,e,a.services);n&&"The registry has no RDAP server"!==n&&r.push(`rdap/${i.name}: ${n}`)}}async function eB(e,t,r){let i=t-Date.now();if(i<1e3)throw Error("skipped, time budget used");let o=await (0,y.z)({timeoutMs:Math.min(8e3,i)});if(!o.ok)return void r.push(`eol: ${o.error}`);let s={cycles:o.cycles,checkedAt:e.toISOString()};await (0,n.db)().insert(a.settings).values({key:y.T,value:s}).onConflictDoUpdate({target:a.settings.key,set:{value:s,updatedAt:e}})}async function eV(e){let t=await eM(),r=[];for(let{r:n,s:a}of t.filter(e=>e.s)){let t=(0,c.q)(a.data),i=(0,f.G)({status:t.zone?.status??null,paused:t.zone?.paused??!1,rdap:t.rdap},e);(i.state!==a.state||JSON.stringify(i.reasons)!==JSON.stringify(t.reasons))&&(await (0,u.r)(n.id,{reasons:i.reasons},e),i.state!==a.state&&await (0,u.a)(n.id,i.state,e),r.push((0,f.n)({resourceId:n.id,name:n.name,prev:a.state,next:i.state,reasons:i.reasons,at:e})))}let n=t.filter(e=>e.r.monitored).map(e=>e.r.name);for(let{r:a,s:i}of(await eD())){let o=(0,c.q)(i?.data),s=(0,f.J)(a.name,n),l=s?(0,c.q)(t.find(e=>e.r.name===s)?.s?.data):null,d=(0,f.k)({host:a.name,tls:o.tls,vercel:o.vercel,records:l?(0,f.Q)(a.name,l.records):[],zoneRdap:l?.rdap??null},e),p=i?.state??null;(d.state!==p||JSON.stringify(d.reasons)!==JSON.stringify(o.reasons))&&(await (0,u.r)(a.id,{reasons:d.reasons},e),d.state!==p&&await (0,u.a)(a.id,d.state,e),r.push((0,f.n)({resourceId:a.id,name:a.name,prev:p,next:d.state,reasons:d.reasons,at:e})))}await (0,l.f)(r)}async function eG(){return(0,n.db)().select({r:a.resources,s:a.snapshots,label:a.accounts.label}).from(a.resources).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"zone"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).orderBy((0,r.asc)(a.resources.name)).limit(200)}async function eK(){let e=await (0,n.db)().select({r:a.resources,s:a.snapshots}).from(a.resources).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).orderBy((0,r.asc)(a.resources.name)).limit(200);if(!e.length)return[];let i=[...new Set(e.map(e=>e.r.parentId).filter(e=>!!e))],o=i.length?await (0,n.db)().select({id:a.resources.id,name:a.resources.name,monitored:a.resources.monitored,goneAt:a.resources.goneAt}).from(a.resources).where((0,t.inArray)(a.resources.id,i)):[],s=new Set(o.filter(e=>e.monitored&&!e.goneAt).map(e=>e.id)),l=await eG(),u=l.map(e=>e.r.name);return e.filter(({r:e})=>!e.parentId||s.has(e.parentId)).map(({r:e,s:t})=>{let r=(0,c.q)(t?.data),n=(0,f.J)(e.name,u),a=l.find(e=>e.r.name===n),i=(0,c.q)(a?.s?.data);return{id:e.id,name:e.name,appId:e.parentId,appName:o.find(t=>t.id===e.parentId)?.name??null,zoneId:a?.r.id??null,zoneName:n,isVercel:(0,f.e)(e.name),state:t?.state??"unknown",reasons:r.reasons,tls:r.tls,vercel:r.vercel,records:a?(0,f.Q)(e.name,i.records):[],rdap:a?i.rdap:null,cfAccountId:a?i.zone?.accountId??null:null}})}async function eF(){return(await eG()).map(e=>({id:e.r.id,name:e.r.name}))}async function eW(e){let t=await eG(),r=(e?t.find(t=>t.r.id===e):null)??t[0];if(!r)return null;let n=(0,c.q)(r.s?.data);return{id:r.r.id,name:r.r.name,accountId:r.r.accountId,accountLabel:r.label,state:r.s?.state??"unknown",reasons:n.reasons,facts:n}}async function eX(){let[e]=await (0,n.db)().select({value:a.settings.value}).from(a.settings).where((0,t.eq)(a.settings.key,y.T)).limit(1),r=e?.value,i=r?(0,y.b)({result:{releases:r.cycles?.map(e=>({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom,latest:e.latest?{name:e.latest}:null}))}}):null;return i&&"string"==typeof r?.checkedAt?{cycles:i,checkedAt:r.checkedAt}:null}async function eJ(e){let[r]=await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.id,e),(0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(1);if(!r)return{ok:!1,error:"That domain is no longer watched."};if((0,f.e)(r.name))return{ok:!1,error:"vercel.app domains are Vercel's own. There is nothing to check."};let i=new Date;await eq(r.id,r.name,i);let o=await eG(),s=(0,f.J)(r.name,o.map(e=>e.r.name)),l=o.find(e=>e.r.name===s),u=l?await eU(l.r.id,l.r.name,i):null;return await eV(i),{ok:!0,message:u?`Checked ${r.name}. Domain expiry: ${u}.`:`Checked ${r.name}.`,audit:{message:`Re-check: ${r.name}`,resourceId:r.id}}}e.s(["p",0,["cloudflare","domains","tls","rdap","eol"],"r",0,eU,"x",0,eV,"h",0,eC,"H",0,ej,"i",0,eB,"W",0,eH,"V",0,eL,"j",0,eq],991219),e.s(["j",0,eW,"p",0,eK,"c",0,eF,"P",0,eX,"_",0,eJ],827439)},373200,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(484745),s=e.i(803237),l=e.i(333407),u=e.i(503313),d=e.i(638809),c=e.i(147100),p=e.i(93387),f=e.i(262412),m=e.i(416041),h=e.i(313302),g=e.i(896478),y=e.i(96658),b=e.i(908480),w=e.i(717614),v=e.i(601225),k=e.i(583319),_=e.i(760859),A=e.i(728335),I=e.i(70377);let S="digest.lastSentDay",$="digest.state";async function T(e){let[r]=await (0,a.db)().select().from(i.channels).where((0,t.eq)(i.channels.kind,e)).limit(1);if(!r)return null;try{return{row:r,config:JSON.parse((0,s.K)({ciphertext:r.configCiphertext,iv:r.configIv},(0,p.serverEnv)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function R(){let e=(0,y.notifyEnv)(),[t,r,n,a]=await Promise.all([T("telegram"),T("discord"),T("webhook"),T("smtp")]),i=new Set;e.telegramToken&&t?.row.enabled&&t.config?.chatId&&i.add("telegram"),r?.row.enabled&&r.config?.url&&i.add("discord"),n?.row.enabled&&n.config?.url&&i.add("webhook"),a?.row.enabled&&a.config?.host&&i.add("smtp");let o=`${(0,p.serverEnv)().SITE_URL.replace(/\/+$/,"")}/alerts`;return{send:(i,s,l)=>"telegram"===i?(0,v.I)(e.telegramToken,t.config.chatId,s):"webhook"===i?(0,m.E)(n.config,(0,m.J)(s,l??[],new Date,o)):"smtp"===i?(0,h.f)(a.config,(s.split("\n")[0]??"").replace(/[*_`~]/g,"").slice(0,150)||"Watchbell alert",`${s}
33
-
34
- ${o}`):(0,f.f)(r.config.url,s),configured:i}}async function x(){let e=(0,y.notifyEnv)().telegramToken;if(!e)return null;let t=await T("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function E(){let e=await T("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let N="notify.telegramThreads",P=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function O(e,t,r){let o=e.filter(e=>P.test(e));if(!o.length||!Number.isSafeInteger(t)||t<=0)return;let s=Object.fromEntries(o.map(e=>[e,{m:t,at:r.getTime()}])),l=r.getTime()-6048e5,u=n.sql`case when jsonb_typeof(${i.settings.value}) = 'object' then ${i.settings.value} else '{}'::jsonb end`;await (0,a.db)().insert(i.settings).values({key:N,value:s}).onConflictDoUpdate({target:i.settings.key,set:{value:n.sql`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(s)}::jsonb || ${u}) as e
35
- where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${l})`,updatedAt:r}})}async function C(e){if(!e||!P.test(e))return null;try{let[r]=await (0,a.db)().select({value:i.settings.value}).from(i.settings).where((0,t.eq)(i.settings.key,N)).limit(1),n=r?.value&&"object"==typeof r.value?r.value[e]:null;return"number"==typeof n?.m&&Number.isSafeInteger(n.m)&&n.m>0?n.m:null}catch{return null}}let j=()=>(0,u.f)().catch(()=>_.a);async function D(e,s,l={}){var u;if(s-Date.now()<6e3)return{sent:0,dropped:0};let c=await (0,d.I)(),f=await (0,a.db)().select({a:i.alerts,channels:i.alertRules.channels}).from(i.alerts).innerJoin(i.alertRules,(0,t.eq)(i.alertRules.key,i.alerts.ruleKey)).where((0,t.and)((0,t.isNotNull)(i.alerts.pending),n.sql`(${i.alerts.pending} = 'resolve') = (${i.alerts.resolvedAt} is not null)`,(0,d.s)(c))).orderBy((0,r.asc)(i.alerts.pendingSince)).limit(50);if(!f.length)return{sent:0,dropped:0};let m=new Set((await (0,a.db)().update(i.alerts).set({claimedAt:e}).where((u=f.map(e=>e.a.id),(0,t.and)((0,t.inArray)(i.alerts.id,u),(0,t.isNotNull)(i.alerts.pending),(0,t.or)((0,t.isNull)(i.alerts.claimedAt),(0,t.lt)(i.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:i.alerts.id})).map(e=>e.id)),h=f.filter(e=>m.has(e.a.id));if(!h.length)return{sent:0,dropped:0};let{send:g,configured:y}=l.sender??await R(),w=new Set(h.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,k]=await Promise.all([j(),(0,b.B)()]),A=new Set;for(let r of["telegram","discord","webhook","smtp"]){if(!y.has(r))continue;let n=h.filter(e=>e.channels.includes(r)&&!w.has(e.a.id));if(!n.length)continue;let s=n.map(({a:e})=>{let t="telegram"===r?e:(0,_.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:t.title,message:t.message,startedAt:e.startedAt,causedBy:t.causedBy,provider:e.providerIncident}}),l=(0,o.l)(s,e,(0,p.serverEnv)().SITE_URL,"webhook"===r?"en":"smtp"===r?k.email:k[r]),u=await g(r,(0,_.G)("telegram"===r?l.telegram:l.discord),"webhook"===r?s.map(e=>({...e,title:(0,_.G)(e.title),message:(0,_.G)(e.message)})):void 0);await (0,a.db)().update(i.channels).set(u.ok?{lastSentAt:e,lastError:null}:{lastError:u.error}).where((0,t.eq)(i.channels.kind,r)),u.ok&&n.forEach(({a:e})=>A.add(e.id)),u.ok&&"telegram"===r&&u.messageId&&await O(n.filter(({a:e})=>"open"===e.pending).map(({a:e})=>e.id),u.messageId,e).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let I=0,S=0,$=[];for(let{a:r,channels:n}of h){let o=n.some(e=>y.has(e)),s=null!==r.pendingSince&&e.getTime()-r.pendingSince.getTime()>18e5;A.has(r.id)?(I++,await (0,a.db)().update(i.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===r.pending?{notifiedOpen:!0}:{}}).where((0,t.eq)(i.alerts.id,r.id))):w.has(r.id)||!o||s?(S++,await (0,a.db)().update(i.alerts).set({pending:null,claimedAt:null}).where((0,t.eq)(i.alerts.id,r.id))):$.push(r.id)}return $.length&&await (0,a.db)().update(i.alerts).set({claimedAt:null}).where((0,t.inArray)(i.alerts.id,$)),{sent:I,dropped:S}}async function M(e){let o=new Date(e.getTime()-864e5),s=await (0,d.I)(),l=n.sql`case ${i.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[u,p,f,m,h]=await Promise.all([(0,a.db)().select({ruleKey:i.alerts.ruleKey,severity:i.alerts.severity,title:i.alerts.title,message:i.alerts.message,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt}).from(i.alerts).where((0,t.and)((0,t.isNull)(i.alerts.resolvedAt),(0,d.s)(s))).orderBy(l,(0,r.desc)(i.alerts.startedAt)).limit(50),(0,a.db)().select({n:n.sql`count(*)::int`}).from(i.alerts).where((0,t.gte)(i.alerts.startedAt,o)),(0,a.db)().select({ruleKey:i.alerts.ruleKey,title:i.alerts.title,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,t.and)((0,t.isNotNull)(i.alerts.resolvedAt),(0,t.gte)(i.alerts.resolvedAt,o))).orderBy((0,r.desc)(i.alerts.resolvedAt)).limit(20),(0,a.db)().select({id:i.resources.id,name:i.resources.name}).from(i.resources).where((0,t.and)((0,t.eq)(i.resources.kind,"app"),(0,t.eq)(i.resources.monitored,!0),(0,t.isNull)(i.resources.goneAt))).orderBy(i.resources.name).limit(I.O.apps),(0,c.h)(e)]),g=m.map(e=>e.id),[y,b]=g.length?await Promise.all([(0,a.db)().select({id:i.monitors.resourceId,total:n.sql`count(*)::int`,bad:n.sql`(count(*) filter (where not ${i.checks.ok}))::int`}).from(i.checks).innerJoin(i.monitors,(0,t.eq)(i.monitors.id,i.checks.monitorId)).where((0,t.and)((0,t.inArray)(i.monitors.resourceId,g),(0,t.gte)(i.checks.at,o),(0,t.eq)(i.checks.inMaintenance,!1))).groupBy(i.monitors.resourceId),(0,a.db)().select({id:i.storedLogs.resourceId,n:n.sql`count(*)::int`}).from(i.storedLogs).where((0,t.and)((0,t.inArray)(i.storedLogs.resourceId,g),(0,t.gte)(i.storedLogs.at,o))).groupBy(i.storedLogs.resourceId)]):[[],[]],w=new Map(y.map(e=>[e.id,e])),v=new Map(b.map(e=>[e.id,e.n])),A=await j();return{now:e,opened:p[0]?.n??0,firing:u.map(({resourceId:e,...t})=>{let r=(0,_.o)({...t,resourceId:e,causedBy:null},A);return{...t,title:r.title,message:r.message}}),resolved:f.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,_.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},A).title,took:(0,k.f)(e.startedAt,e.resolvedAt)}]:[]),apps:m.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:v.get(e.id)??0}}),providers:h.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function z(e,r,n){await (0,a.db)().update(i.channels).set(r.ok?{lastSentAt:n,lastError:null}:{lastError:r.error}).where((0,t.eq)(i.channels.kind,e))}async function q(e){let[t,r]=await Promise.all([M(e),(0,b.H)("email")]);return(0,g.J)({...t,siteUrl:(0,p.serverEnv)().SITE_URL},r)}async function L(e,r={}){let n=await (0,a.db)().select().from(i.settings).where((0,t.inArray)(i.settings.key,[S,$])),o=n.find(e=>e.key===S)?.value,s="string"==typeof o?o:null;if(!(0,g.A)(e,s))return;let u=(0,y.notifyEnv)(),d=await T("email_digest");if(!u.resendKey||!u.digestFrom||!d?.row.enabled||!d.config?.to)return;let{resendKey:c,digestFrom:p}=u,f=d.config.to,m=(0,A.dayKey)(e),h=await (0,g.K)(e,{lastSentDay:s,state:n.find(e=>e.key===$)?.value??null,build:r.build??(()=>q(e)),send:r.send??(e=>(0,w.f)(c,{from:p,to:f,...e,idempotencyKey:`digest-${m}`}))});h.acted&&(h.result&&await z("email_digest",h.result,e),h.state?await (0,a.db)().insert(i.settings).values({key:$,value:h.state}).onConflictDoUpdate({target:i.settings.key,set:{value:h.state,updatedAt:e}}):await (0,a.db)().delete(i.settings).where((0,t.eq)(i.settings.key,$)),h.sentDay&&await (0,a.db)().insert(i.settings).values({key:S,value:h.sentDay}).onConflictDoUpdate({target:i.settings.key,set:{value:h.sentDay,updatedAt:e}}),h.event&&await (0,l.f)([{type:"system",kind:"warn",message:h.event.message,detail:h.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,D,"G",0,E,"P",0,z,"J",0,L,"Q",0,x,"M",0,C])},406197,934152,e=>{var t=e.i(336763),r=e.i(668304),n=e.i(406212),a=e.i(530298),i=e.i(803237),o=e.i(595262),s=e.i(93387),l=e.i(802641),u=e.i(659916);function d(e,t){return"member"===e?`Too many actions. Try again in ${(0,u.H)(t)}.`:"That was just done. Wait a minute before trying again."}function c(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,d,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,c],934152);var p=e.i(355620);let f="access.";async function m(e,r){if(!(0,l.f)(e))return null;let[o]=await (0,n.db)().select({r:a.resources,a:a.accounts}).from(a.resources).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).where((0,t.and)((0,t.eq)(a.resources.id,e),(0,t.eq)(a.resources.kind,r),(0,t.isNull)(a.resources.goneAt))).limit(1);if(!o)return null;let u=(0,i.V)({ciphertext:o.a.credentialCiphertext,iv:o.a.credentialIv},(0,s.serverEnv)().OPS_ENCRYPTION_KEY);return u?{resource:o.r,account:{id:o.a.id,label:o.a.label,provider:o.a.provider,scopeNote:o.a.scopeNote},token:u}:null}async function h(e,t,r){let n=await (0,p.f)(u.t.providerAction,e);if(!n.allowed)return d("member",n.retryAfter);let a=await (0,p.f)(u.t.actionTarget,`${t}:${r}`);return a.allowed?null:d("target",a.retryAfter)}async function g(e,t,r){let i={write:t,at:new Date().toISOString(),...r?{scope:r}:{}};await (0,n.db)().insert(a.settings).values({key:`${f}${e}`,value:i}).onConflictDoUpdate({target:a.settings.key,set:{value:i,updatedAt:new Date}})}async function y(e){let r=new Map,i=e.filter(l.f);if(0===i.length)return r;for(let e of(await (0,n.db)().select().from(a.settings).where((0,t.inArray)(a.settings.key,i.map(e=>`${f}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&r.set(e.key.slice(f.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return r}async function b(e,t,n,a={}){if(!("audit"in e))return{ok:!1,error:e.message};let i="failed"in e?e.failed:null,s="failed"in e?"":e.message,l=i?i.error:"failed"in e?void 0:e.audit.detail;try{await (0,o.f)({kind:i?"err":"ok",message:`${a.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:c(l)}:{}})}catch{console.warn("audit event failed")}if(!i||"scope"===i.kind)try{await g(n,i?"denied":"ok")}catch{console.warn("access write failed")}return!1!==a.refresh&&(0,r.refresh)(),i?{ok:!1,error:i.error}:{ok:!0,message:s}}e.s(["W",0,b,"p",0,m,"y",0,g,"q",0,h,"f",0,y],406197)},147100,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(333407),i=e.i(122603);let o={vercel:{label:"Vercel",feedText:"vercel-status.com · Statuspage",page:"https://www.vercel-status.com"},supabase:{label:"Supabase",feedText:"status.supabase.com · summary.json",page:"https://status.supabase.com"},neon:{label:"Neon",feedText:"neonstatus.com · Status.io API",page:"https://neonstatus.com"},cloudflare:{label:"Cloudflare",feedText:"cloudflarestatus.com · Statuspage",page:"https://www.cloudflarestatus.com"},firebase:{label:"Firebase",feedText:"status.firebase.google.com · incidents.json",page:"https://status.firebase.google.com"},gcp:{label:"Google Cloud",feedText:"status.cloud.google.com · incidents.json",page:"https://status.cloud.google.com"}},s=["vercel","supabase","neon","cloudflare","firebase","gcp"],l=e=>e&&"object"==typeof e&&!Array.isArray(e)?e:null,u=e=>"string"==typeof e?e:null,d=e=>Array.isArray(e)?e.map(l).filter(e=>null!==e):[],c=(e,t=160)=>e.length>t?`${e.slice(0,t-1)}…`:e,p=["stspg.io","vercel-status.com","cloudflarestatus.com","supabase.com","neonstatus.com","status.io","status.firebase.google.com","status.cloud.google.com"];function f(e){if("string"!=typeof e)return null;try{let t=new URL(e);return"https:"===t.protocol&&!t.username&&!t.password&&p.some(e=>t.hostname===e||t.hostname.endsWith(`.${e}`))?t.toString():null}catch{return null}}let m={none:"ok",minor:"warn",major:"err",critical:"err",maintenance:"info"},h=["none","minor","major","critical"],g={none:"warn",minor:"warn",major:"err",critical:"err"},y={none:"Open incident",minor:"Minor incident",major:"Major incident",critical:"Critical incident"},b=/firestore|authentication|hosting/i,w=/management api|mgmt api|dashboard|billing|support|docs|marketplace|branching|^cli\b|analytics/i,v=e=>e.slice(0,3).join(", ");function k(e,t={}){let r=l(e.status),n=u(r?.indicator);if(!r||!n||!(n in m))return null;let a=d(e.incidents),i=a.slice(0,5).map(e=>{let r=d(e.components).map(e=>u(e.name)).filter(e=>!!e).map(e=>c(e,60));return{name:c(u(e.name)??"Incident"),impact:u(e.impact)??"unknown",startedAt:u(e.started_at)??u(e.created_at),url:f(e.shortlink),...r.length?{products:r}:{},...u(e.updated_at)?{updatedAt:u(e.updated_at)}:{},...t.controlPlane?{relevant:r.length?!r.every(e=>t.controlPlane.test(e)):!t.controlPlane.test(u(e.name)??"")}:{}}});if(t.controlPlane&&i.length&&i.every(e=>!1===e.relevant)){let e=i[0],t=e.products?.length?`${v(e.products)}: `:"",r=" (projects and databases aren't affected)";return{state:"info",indicator:"info",description:`${c(`${t}${e.name}`,160-r.length)}${r}`,incidents:i}}let o=(t.colos??[]).map(e=>e.replace(/\W/g,"")).filter(Boolean),s=o.length?RegExp(`\\b(${o.join("|")})\\b`):null,p=d(e.maintenances).filter(e=>["in_progress","verifying"].includes(u(e.status)??"")&&(!s||s.test(u(e.name)??""))),b=c(u(r.description)??""),w=()=>{let e=p[0];return{state:"info",indicator:"maintenance",description:c(`Scheduled maintenance \xb7 ${u(e.name)??""}`),incidents:p.slice(0,5).map(e=>({name:c(u(e.name)??"Maintenance"),impact:"maintenance",startedAt:u(e.scheduled_for),url:f(e.shortlink)}))}};if(a.length){let e=(t.controlPlane?a.filter((e,t)=>i[t]?.relevant!==!1):a).map(e=>u(e.impact)??"").filter(e=>h.includes(e)).sort((e,t)=>h.indexOf(t)-h.indexOf(e))[0]??"minor",r=g[e],o=t.controlPlane?i.find(e=>!1!==e.relevant&&e.products?.length):void 0,s=o?c(`${v(o.products)}: ${o.name}`):r===m[n]&&"none"!==n?b:y[e];return{state:r,indicator:e,description:s,incidents:i}}let _=Array.isArray(e.components)?d(e.components):null;if(o.length&&_){let e=RegExp(`\\((${o.join("|")})\\)\\s*$`),t=_.filter(t=>e.test(u(t.name)??"")&&(u(t.status)??"operational")!=="operational");if(t.length){let r=t.find(e=>"major_outage"===u(e.status))??t[0],n="major_outage"===u(r.status);return{state:n?"err":"warn",indicator:n?"major":"minor",description:c(`${e.exec(u(r.name)??"")?.[1]} data centre: ${(u(r.status)??"").replace(/_/g," ")}`),incidents:i}}return p.length?w():{state:"ok",indicator:"none",description:`No open incidents near ${o.join(", ")}`,incidents:i}}return"none"===n&&p.length?w():{state:m[n],indicator:n,description:b,incidents:i}}let _=[[500,"err"],[300,"warn"],[200,"info"],[100,"ok"]];async function A(e,t){let r,n=AbortSignal.timeout(5e3);try{r=await t(e,{headers:{Accept:"application/json","User-Agent":"OpsConsole-Status/1.0"},signal:n,cache:"no-store"})}catch{return{ok:!1}}if(!r.ok)return await r.body?.cancel().catch(()=>void 0),{ok:!1,status:r.status};try{let{bytes:e,truncated:t}=await (0,i.z)(r,1048576,(0,i.X)(n));if(t)return{ok:!1,format:!0};return{ok:!0,json:JSON.parse(new TextDecoder().decode(e))}}catch{return{ok:!1,format:!0}}}let I=e=>`https://${e}/api/v2`;async function S(e,t,r={}){let n=r.fetch??fetch,a=o[e].label,i=e=>({ok:!1,error:e.format?`The ${a} status feed answered in a format the console doesn't recognise.`:e.status?`The ${a} status feed answered ${e.status}.`:`The ${a} status feed didn't answer.`}),s=null;if("vercel"===e||"supabase"===e){let t=await A(`${I("vercel"===e?"www.vercel-status.com":"status.supabase.com")}/summary.json`,n);if(!t.ok)return i(t);let r=l(t.json);s=r&&k({status:r.status,incidents:r.incidents,maintenances:r.scheduled_maintenances},"supabase"===e?{controlPlane:w}:{})}else if("cloudflare"===e){let e=I("www.cloudflarestatus.com"),[t,a,o,u]=await Promise.all([A(`${e}/status.json`,n),A(`${e}/incidents/unresolved.json`,n),A(`${e}/scheduled-maintenances/active.json`,n),A(`${e}/components.json`,n)]);if(!t.ok)return i(t);s=k({status:l(t.json)?.status,incidents:a.ok?l(a.json)?.incidents:[],maintenances:o.ok?l(o.json)?.scheduled_maintenances:[],components:u.ok?l(u.json)?.components:void 0},{colos:r.colos??["SIN","CGK"]})}else if("neon"===e){let e=await A("https://api.status.io/1.0/status/6878fc85709daa75be6c7e3c",n);if(!e.ok)return i(e);s=function(e){let t=l(l(l(e)?.result)?.status_overall),r="number"==typeof t?.status_code?t.status_code:null;if(!t||null===r)return null;let n=_.find(([e])=>r>=e)?.[1]??"ok",a=d(l(l(e)?.result)?.incidents).slice(0,5).map(e=>({name:c(u(e.name)??"Incident"),impact:"incident",startedAt:u(e.datetime_open),url:"https://neonstatus.com"}));return{state:n,indicator:String(r),description:c(u(t.status)??""),incidents:a}}(e.json)}else{let r="firebase"===e?"status.firebase.google.com":"status.cloud.google.com",a=await A(`https://${r}/incidents.json`,n);if(!a.ok)return i(a);s=function(e,t,r={}){if(!Array.isArray(e))return null;let n=r.host??"status.cloud.google.com",a=d(e).filter(e=>{let r=u(e.end);return null!==u(e.begin)&&(!r||new Date(r).getTime()>t.getTime())}),i=a.filter(e=>!r.relevant||d(e.affected_products).some(e=>r.relevant.test(u(e.title)??"")));if(!i.length){let e=a.length;return{state:"ok",indicator:"none",description:e&&r.relevant?`No incidents affecting Firebase (${e} elsewhere)`:"No open incidents",incidents:[]}}let o=e=>d(e.affected_products).map(e=>u(e.title)).filter(e=>!!e).map(e=>c(e,60)),s=e=>!r.used||o(e).some(e=>r.used.test(e)),l=i.slice(0,5).map(e=>{let t=o(e);return{name:c(u(e.external_desc)??"Incident"),impact:u(e.status_impact)??"unknown",startedAt:u(e.begin),url:u(e.uri)?f(`https://${n}/${u(e.uri)}`):null,...t.length?{products:t}:{},...u(e.modified)?{updatedAt:u(e.modified)}:{},...r.used?{relevant:s(e)}:{}}}),p=i.filter(s),m=e=>{let t=o(e),n=u(e.external_desc)??"Incident";return r.used&&t.length?`${v(t)}: ${n}`:n};if(!p.length){let e=" (not Firestore, Authentication or Hosting)";return{state:"info",indicator:"info",description:`${c(m(i[0]),160-e.length)}${e}`,incidents:l}}let h=p.some(e=>"SERVICE_OUTAGE"===e.status_impact),g=p.every(e=>"SERVICE_INFORMATION"===e.status_impact);return{state:h?"err":g?"info":"warn",indicator:h?"major":g?"info":"minor",description:c(m(p[0])),incidents:l}}(a.json,t,"gcp"===e?{relevant:/firestore|firebase|identity|monitoring/i,host:r}:{host:r,used:b})}return s?{ok:!0,reading:{provider:e,...s}}:i({format:!0})}var $=e.i(728335);async function T(e){let[i]=await (0,r.db)().select().from(n.settings).where((0,t.eq)(n.settings.key,"status.cloudflareColos")).limit(1),l=Array.isArray(i?.value)?i.value.filter(e=>"string"==typeof e):void 0,u=new Map((await (0,r.db)().select().from(n.providerStatus)).map(e=>[e.provider,e])),d=await Promise.all(s.map(t=>S(t,e,{colos:l}))),c=[];for(let[t,a]of s.entries()){let i=d[t],s=u.get(a);if(i.ok){let{state:t,indicator:l,description:u,incidents:d}=i.reading;await (0,r.db)().insert(n.providerStatus).values({provider:a,state:t,indicator:l,description:u,incidents:d,checkedAt:e,lastOkAt:e,error:null}).onConflictDoUpdate({target:n.providerStatus.provider,set:{state:t,indicator:l,description:u,incidents:d,checkedAt:e,lastOkAt:e,error:null}});let p=s?.state??"unknown",f=e=>"warn"===e||"err"===e;f(t)&&!f(p)&&c.push({type:"system",kind:t,message:`${o[a].label} reports an incident`,detail:u,resourceId:null,reason:"ProviderIncident"}),!f(t)&&f(p)&&c.push({type:"system",kind:"ok",message:`${o[a].label} incident resolved`,detail:u,resourceId:null,reason:"ProviderRecovered"})}else{let t=!s?.lastOkAt||e.getTime()-s.lastOkAt.getTime()>18e5;await (0,r.db)().insert(n.providerStatus).values({provider:a,state:"unknown",checkedAt:e,error:i.error}).onConflictDoUpdate({target:n.providerStatus.provider,set:{checkedAt:e,error:i.error,...t?{state:"unknown"}:{}}})}}await (0,a.f)(c)}async function R(){return(0,r.db)().select().from(n.providerStatus)}async function x(e){var t,r;let n;return t=await R(),r=e,n=new Map(t.map(e=>[e.provider,e])),s.map(e=>{let t=n.get(e),a={provider:e,...o[e]};if(!t)return{...a,state:"unknown",text:"Not read yet",incidents:[],checked:"—"};let i=null!==t.error,s="unknown"===t.state?`Feed didn't answer \xb7 last read ${t.lastOkAt?(0,$.ago)(t.lastOkAt,r):"never"}`:t.description||("ok"===t.state?"No open incidents":"Incident");return{...a,state:t.state,text:s,incidents:t.incidents,checked:(0,$.ago)(i&&t.lastOkAt?t.lastOkAt:t.checkedAt,r)}})}e.s(["h",0,x,"B",0,R,"i",0,T],147100)},638809,e=>{var t=e.i(336763),r=e.i(533102),n=e.i(910931),a=e.i(406212),i=e.i(200123),o=e.i(530298);let s=["vercel","supabase","neon","firebase","turso","upstash","cloudflare","github","github_write"];var l=e.i(873083),u=e.i(476866);let d=["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],c=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}},p=(0,n.cache)(async()=>{let e=r.sql.join(d.map(e=>r.sql`${e}`),r.sql`, `),t=await (0,a.db)().execute(r.sql`select
36
+ and coalesce(last_at, at) >= ${a.toISOString()}::timestamptz order by coalesce(last_at, at) desc limit 1)`).returning({id:n.events.id})).length)continue}await o.insert(n.events).values({at:e,resourceId:r.resourceId,type:r.type,kind:r.kind,message:r.message,detail:r.detail,actorUserId:r.actorUserId??null,reason:i,count:1})}}e.s(["f",0,i],333407)},459702,355620,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(816173),i=e.i(628852),o=e.i(333407),s=e.i(368230),l=e.i(58992),u=e.i(659916),d=e.i(533102);async function c(e,a){let[i]=await (0,r.db)().insert(n.rateLimits).values({key:e,windowStart:a,count:1}).onConflictDoUpdate({target:[n.rateLimits.key,n.rateLimits.windowStart],set:{count:d.sql`${n.rateLimits.count} + 1`}}).returning({count:n.rateLimits.count});if(1===i.count)try{await (0,r.db)().delete(n.rateLimits).where((0,t.lt)(n.rateLimits.windowStart,new Date(Date.now()-864e5)))}catch{console.warn("rate limit sweep failed")}return i.count}function p(e,t){return(0,u.A)(e,t,{hit:c})}async function f(e,a,i){let o=(0,l.f)(e),[s]=await (0,r.db)().select({id:n.monitors.id}).from(n.monitors).where((0,t.and)((0,t.eq)(n.monitors.tokenHash,o),(0,t.eq)(n.monitors.kind,"heartbeat"))).limit(1);if(!s)return{status:"unknown"};let d=await p(u.t.ping,o);return d.allowed?(await (0,r.db)().update(n.monitors).set({lastPingAt:i,lastPingKind:a,updatedAt:i}).where((0,t.eq)(n.monitors.id,s.id)),{status:"ok"}):{status:"limited",retryAfter:d.retryAfter}}async function m(e,l=()=>!1,u=!1,d){let c=(await (0,r.db)().select({m:n.monitors}).from(n.monitors).innerJoin(n.resources,(0,t.eq)(n.resources.id,n.monitors.resourceId)).where((0,t.and)((0,t.eq)(n.monitors.kind,"heartbeat"),(0,t.eq)(n.monitors.paused,!1),(0,t.eq)(n.monitors.ownerPaused,!1),(0,t.eq)(n.resources.monitored,!0),(0,t.isNull)(n.resources.goneAt),...d?[(0,t.eq)(n.monitors.id,d)]:[]))).filter(({m:t})=>void 0!==d||(0,i.B)(t.lastCheckedAt,e,u)),p=[],f=[];for(let{m:o}of c){let u=o.periodS??3600,c=o.graceS??600,m=(0,s.C)({lastPingAt:o.lastPingAt,lastPingKind:o.lastPingKind,periodS:u,graceS:c,createdAt:o.createdAt},e);if("unknown"===m.state)continue;let h=m.state!==o.state;(await (0,r.db)().update(n.monitors).set({state:m.state,failStreak:m.failStreak,lastCheckedAt:e,lastError:"ok"===m.state?null:m.text,...h?{stateSince:e}:{},updatedAt:e}).where((0,t.and)((0,t.eq)(n.monitors.id,o.id),(0,t.eq)(n.monitors.state,o.state),(0,t.eq)(n.monitors.ownerPaused,!1),(0,t.eq)(n.monitors.paused,!1),null===o.lastPingAt?(0,t.isNull)(n.monitors.lastPingAt):(0,t.eq)(n.monitors.lastPingAt,o.lastPingAt),null===o.periodS?(0,t.isNull)(n.monitors.periodS):(0,t.eq)(n.monitors.periodS,o.periodS),null===o.graceS?(0,t.isNull)(n.monitors.graceS):(0,t.eq)(n.monitors.graceS,o.graceS))).returning({id:n.monitors.id})).length&&((void 0===d||(0,i.B)(o.lastCheckedAt,e,!0))&&f.push({monitorId:o.id,at:e,ok:"err"!==m.state,statusCode:null,latencyMs:null,error:"ok"===m.state?null:m.text,inMaintenance:l(o.id,o.resourceId)}),p.push((0,a.F)({resourceId:o.resourceId,path:o.name??"heartbeat",prev:o.state,next:m.state,code:null,error:m.text,at:e,heartbeat:!0})))}return f.length&&await (0,r.db)().insert(n.checks).values(f),await (0,o.f)(p),f.length}e.s(["f",0,p],355620),e.s(["_",0,f,"r",0,m],459702)},200346,655704,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(406212),a=e.i(530298),i=e.i(803237),o=e.i(333407),s=e.i(406197);let l="Pause requested · ";function u(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let r=e.lastTraffic??e.trackedSince;return t.getTime()-r.getTime()>=432e6}function d(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,d,"v",0,u],655704);var c=e.i(788264),p=e.i(88316),f=e.i(93387),m=e.i(934152),h=e.i(686454);async function g(e){let r=await (0,n.db)().select({data:a.snapshots.data}).from(a.resources).innerJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"supabase_project"))),i=new Map;for(let{data:e}of r){let t=(0,c.k)(c.B,e);t.orgSlug&&void 0!==t.freeOrg&&i.set(t.orgSlug,t.freeOrg)}return i}let y=e=>`${e} day${1===e?"":"s"}`,b=e=>e instanceof Error?e.name:"unknown";async function w(e,r,i){try{let o=await (0,n.db)().select({k:a.keepActive,r:a.resources,s:a.snapshots,a:a.accounts}).from(a.keepActive).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.keepActive.resourceId)).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.keepActive.keep,!0),(0,t.eq)(a.resources.kind,"supabase_project"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt),(0,t.eq)(a.accounts.status,"ok"))).limit(100),s=(0,f.serverEnv)().OPS_ENCRYPTION_KEY;for(let[t,{k:n,r:a,s:l,a:u}]of o.entries()){let d=r-Date.now()-500;if(d<250)return void i.push(`keep-active: ${o.length-t} left for the next run, time budget used`);if(!(n.lastKeepAliveAt&&e.getTime()-n.lastKeepAliveAt.getTime()<72e6))try{await v(a,l,u,e,s,d,i)}catch(e){console.warn("keep-active failed:",b(e)),i.push(`keep-active/${a.name}: ${b(e)}`)}}}catch(e){console.warn("keep-active failed:",b(e)),i.push(`keep-active: ${b(e)}`)}}async function v(e,r,s,l,d,f,g){let b=(0,c.k)(c.B,r?.data),w=b.lastTrafficAt?new Date(b.lastTrafficAt):b.trafficAt?new Date(new Date(b.trafficAt).getTime()-6048e5):null;if(!u({status:b.status??"",keep:!0,lastTraffic:w,trackedSince:e.firstSeenAt},l))return;let v=Math.floor((l.getTime()-(w??e.firstSeenAt).getTime())/864e5),k=(0,i.V)({ciphertext:s.credentialCiphertext,iv:s.credentialIv},d);if(!k)return void g.push(`keep-active/${s.label}: credential can't be read`);let _=await (0,h.i)(k,e.externalId,{timeoutMs:Math.min(5e3,f)});if(_.ok)await (0,n.db)().update(a.keepActive).set({lastKeepAliveAt:l}).where((0,t.eq)(a.keepActive.resourceId,e.id)),await (0,o.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${y(v)})`,detail:null}]);else{let t=Math.max(1,p.e-v);await (0,o.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${y(t)}`,detail:"scope"===_.kind?"This token can't run the read-only query (Database read).":(0,m.S)(_.error)}]),g.push(`keep-active/${e.name}: ${_.error}`)}}async function k(e){let[i]=await (0,n.db)().select({at:a.events.at}).from(a.events).where((0,t.and)((0,t.eq)(a.events.reason,"Action"),(0,t.eq)(a.events.resourceId,e),(0,t.eq)(a.events.type,"action"),(0,t.inArray)(a.events.kind,["ok","err"]),(0,t.isNotNull)(a.events.actorUserId),(0,t.like)(a.events.message,`${l}%`))).orderBy((0,r.desc)(a.events.at)).limit(1);return i?.at??null}async function _(){return(await (0,n.db)().select({id:a.keepActive.resourceId}).from(a.keepActive).where((0,t.eq)(a.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,r,l=1/0){let u=r.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),c=()=>l-Date.now()-500;if(!u.length||250>c())return;let y=await (0,n.db)().select({k:a.keepActive,id:a.resources.id,name:a.resources.name,ref:a.resources.externalId,accountId:a.resources.accountId,label:a.accounts.label,lastTestAt:a.accounts.lastTestAt,ciphertext:a.accounts.credentialCiphertext,iv:a.accounts.credentialIv}).from(a.keepActive).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.keepActive.resourceId)).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).where((0,t.and)((0,t.eq)(a.keepActive.autoRestore,!0),(0,t.inArray)(a.keepActive.resourceId,u.map(e=>e.resourceId)),(0,t.eq)(a.resources.kind,"supabase_project"),(0,t.isNull)(a.resources.goneAt)));if(!y.length)return;let w=await (0,s.f)([...new Set(y.map(e=>e.accountId))]),v=new Map,_=new Map;for(let l of y)try{let u=r.filter(e=>e.accountId===l.accountId),y=u.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!v.has(l.accountId)){let e=await g(l.accountId);v.set(l.accountId,e),_.set(l.accountId,(0,p._)(u.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let b=!1===v.get(l.accountId).get(y),A=b?1/0:_.get(l.accountId),I=w.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),$=I?.write==="denied"&&new Date(I.at).getTime()>S,T=d({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:$},e);if(!T.act){"no-slot"===T.reason&&await (0,o.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let R=await k(l.id);if(R&&R.getTime()>l.k.updatedAt.getTime())continue;let x=c();if(x<250)return;await (0,n.db)().update(a.keepActive).set({lastAutoRestoreAt:e}).where((0,t.eq)(a.keepActive.resourceId,l.id));let E=(0,i.V)({ciphertext:l.ciphertext,iv:l.iv},(0,f.serverEnv)().OPS_ENCRYPTION_KEY);if(!E)continue;let N=await (0,h.G)(E,l.ref,{timeoutMs:Math.min(5e3,x)});N.ok?(b||_.set(l.accountId,_.get(l.accountId)-1),await (0,s.y)(l.accountId,"ok"),await (0,o.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===N.kind&&await (0,s.y)(l.accountId,"denied"),await (0,o.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===N.kind?`${(0,m.b)("supabase",{})} Auto-restore stops until then.`:(0,m.S)(N.error)}]))}catch(e){console.warn("auto-restore failed:",b(e))}}async function I(e,r,i=s.W,o=new Date){let l=await (0,s.q)(e.id,"keep-alive",r);if(l)return{ok:!1,error:l};let u=await (0,s.p)(r,"supabase_project");if(!u)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[d]=await (0,n.db)().select({last:a.keepActive.lastKeepAliveAt}).from(a.keepActive).where((0,t.eq)(a.keepActive.resourceId,r)).limit(1);if(d?.last&&o.getTime()-d.last.getTime()<72e6)return i({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,u.account.id);let c=u.resource.name,p=await (0,h.i)(u.token,u.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,n.db)().insert(a.keepActive).values({resourceId:r,lastKeepAliveAt:o}).onConflictDoUpdate({target:a.keepActive.resourceId,set:{lastKeepAliveAt:o}}),i(p.ok?{done:!0,message:`Keep-alive sent to ${c}.`,audit:{message:`Keep-alive sent \xb7 ${c}`,resourceId:r}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${c}`,resourceId:r}},e,u.account.id)}e.s(["m",0,g,"z",0,A,"g",0,_,"v",0,I,"V",0,w,"G",0,function(e,t,r){return!1===t.get(r)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],200346)},706959,e=>{var t,r=e.i(396918),n=e.i(533102),a=e.i(100261),i=e.i(406212),o=e.i(530298);e.i(27479);var s=e.i(764266);s.J;let l=e=>({id:e.id,scope:e.scope,appId:e.resourceId,monitorId:e.monitorId,startsAt:e.startsAt,durationMin:e.durationMin,weekly:e.weekly,note:e.note}),u=n.sql`(${o.maintenanceWindows.weekly} or ${o.maintenanceWindows.startsAt} + ${o.maintenanceWindows.durationMin} * interval '1 minute' > now())`;async function d(){return(await (0,i.db)().select().from(o.maintenanceWindows).where(u).orderBy((0,r.asc)(o.maintenanceWindows.startsAt),(0,r.asc)(o.maintenanceWindows.id)).limit(s.J)).map(l)}t=o.resources,new Proxy(t,new a.TableAliasProxyHandler("mon_app",!1)),e.s(["f",0,d],706959)},827439,706539,380719,668141,242960,991219,e=>{var t=e.i(336763),r=e.i(396918),n=e.i(406212),a=e.i(530298),i=e.i(533102),o=e.i(112515),s=e.i(803237),l=e.i(333407),u=e.i(753535),d=e.i(93387),c=e.i(549889),p=e.i(491370),f=e.i(292178),m=e.i(377323),h=e.i(259246),g=e.i(198552),y=e.i(228516),b=e.i(437122),w=e.i(319718),v=e.i(941536),k=e.i(686454),_=e.i(582888),A=e.i(811539),I=e.i(978196),S=e.i(736337),$=e.i(149398),T=e.i(27479),R=e.i(122603),x=e.i(105464),E=e.i(467404),N=e.i(816173),P=e.i(628852);e.i(58992);var O=e.i(764266),C=e.i(90879),j=e.i(164617),D=e.i(412948),M=e.i(785194),z=e.i(70377);e.i(459702);var q=e.i(706959),L=e.i(157406),U=e.i(728335);let H=(e,t)=>"string"==typeof t?i.sql`to_char(${e} at time zone ${t}, 'YYYY-MM-DD')`:i.sql`to_char((${e} at time zone 'UTC') + ${i.sql.raw(`interval '${Math.trunc(t.offsetMinutes)} minutes'`)}, 'YYYY-MM-DD')`,B=i.sql.raw("2"),V=i.sql`percentile_cont(0.95) within group (order by ${a.checks.latencyMs})`,G=i.sql`percentile_cont(0.5) within group (order by ${a.checks.latencyMs})`;i.sql`(count(*) filter (where not ${a.checks.ok}))::int`;let K=(0,t.eq)(a.checks.inMaintenance,!1);async function F(){let[e]=await (0,n.db)().select({h:(0,L.max)(a.rollupsHourly.hour)}).from(a.rollupsHourly);return e?.h?new Date(e.h.getTime()+36e5):null}async function W(e,t,r=(0,U.timeZone)()){if(!e.length)return new Map;try{return await X(e,t,r)}catch(a){if(!function(e){let t=e;for(let e=0;e<4&&t&&"object"==typeof t;e++,t=t.cause){let{code:e,message:r}=t;if("22023"===e&&"string"==typeof r&&/time zone .* not recognized/i.test(r))return!0}return!1}(a))throw a;let n=globalThis;return n.__watchbellPgZoneWarned||(n.__watchbellPgZoneWarned=!0,console.warn(`Watchbell: the database doesn't know the time zone ${r}; uptime days use its current UTC offset instead.`)),X(e,t,{offsetMinutes:(0,U.utcOffsetMinutes)(t)})}}async function X(e,r,o){let s=(0,U.dayStart)((0,M.W)(r,M.F)[0]),l=await F(),u=new Date(Math.max(s.getTime(),l?.getTime()??0,r.getTime()-z.A.rawChecksMs)),d=H(a.rollupsHourly.hour,o),c=H(a.checks.at,o),[p,f]=await Promise.all([l?(0,n.db)().select({monitorId:a.rollupsHourly.monitorId,day:d,checks:i.sql`sum(${a.rollupsHourly.checks})::int`,failures:i.sql`sum(${a.rollupsHourly.failures})::int`,maint:i.sql`sum(${a.rollupsHourly.maintenance})::int`}).from(a.rollupsHourly).where((0,t.and)((0,t.inArray)(a.rollupsHourly.monitorId,e),(0,t.gte)(a.rollupsHourly.hour,s),(0,t.lt)(a.rollupsHourly.hour,l))).groupBy(a.rollupsHourly.monitorId,B):Promise.resolve([]),(0,n.db)().select({monitorId:a.checks.monitorId,day:c,checks:i.sql`(count(*) filter (where not ${a.checks.inMaintenance}))::int`,failures:i.sql`(count(*) filter (where not ${a.checks.ok} and not ${a.checks.inMaintenance}))::int`,maint:i.sql`(count(*) filter (where ${a.checks.inMaintenance}))::int`}).from(a.checks).where((0,t.and)((0,t.inArray)(a.checks.monitorId,e),(0,t.gte)(a.checks.at,u))).groupBy(a.checks.monitorId,B)]);return(0,M.C)([...p,...f])}async function J(e,r){let o;if(!e.length)return new Map;let s=z.A.responseHours,l=(0,M.D)(r,36e5,s),u=(o=a.checks.at,i.sql`(extract(epoch from date_bin(${i.sql.raw("'1 hour'")}::interval, ${o}, timestamptz '2000-01-01 00:00:00+00')) * 1000)::float8`),d=(0,t.and)((0,t.inArray)(a.monitors.resourceId,e),(0,t.gte)(a.checks.at,new Date(l)),K),[c,p]=await Promise.all([(0,n.db)().select({appId:a.monitors.resourceId,t:u,v:V}).from(a.checks).innerJoin(a.monitors,(0,t.eq)(a.monitors.id,a.checks.monitorId)).where(d).groupBy(a.monitors.resourceId,u),(0,n.db)().select({appId:a.monitors.resourceId,v:V,m:G}).from(a.checks).innerJoin(a.monitors,(0,t.eq)(a.monitors.id,a.checks.monitorId)).where(d).groupBy(a.monitors.resourceId)]);return new Map(e.map(e=>[e,{hourly:(0,M.f)(c.filter(t=>t.appId===e),l,36e5,s),p95:p.find(t=>t.appId===e)?.v??null,p50:p.find(t=>t.appId===e)?.m??null}]))}function Y(e){let t="heartbeat"===e.kind;return{id:e.id,appId:e.resourceId,url:e.url,path:t?e.name??"heartbeat":(0,T.K)(e.url),state:e.state,lastStatus:e.lastStatus,lastLatencyMs:e.lastLatencyMs,failStreak:e.failStreak,paused:e.paused,ownerPaused:e.ownerPaused,lastCheckedAt:e.lastCheckedAt,expectedStatus:e.expectedStatus,timeoutMs:e.timeoutMs,intervalS:e.intervalS,bodyContains:e.bodyContains,jsonPath:e.jsonPath,jsonEquals:e.jsonEquals,lastError:e.lastError,kind:t?"heartbeat":"http",name:e.name??null,periodS:e.periodS??null,graceS:e.graceS??null,lastPingAt:e.lastPingAt??null,stateSince:e.stateSince??null}}async function Z(e){let i=await (0,n.db)().select({m:a.monitors,appName:a.resources.name,goneAt:a.resources.goneAt,appMeta:a.resources.meta}).from(a.monitors).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.monitors.resourceId)).where((0,t.and)((0,t.eq)(a.resources.kind,"app"),(0,t.eq)(a.resources.monitored,!0))).orderBy(a.resources.name,(0,r.desc)(a.monitors.kind),a.monitors.url).limit(z.O.monitors),o=await W(i.map(e=>e.m.id),e),s=await Q(i.map(e=>({id:e.m.id,kind:e.m.kind,url:e.m.url,appId:e.m.resourceId,appName:e.appName,appMeta:e.appMeta,lastError:e.m.lastError})));return i.map(({m:t,appName:r,goneAt:n})=>({...Y(t),appName:r,appGone:null!==n,days:o.get(t.id),uptime30:(0,M.Y)((0,M.w)(o.get(t.id),e,M.I)),move:s.get(t.id)??null}))}async function Q(e){if(!e.some(e=>null!==(0,I.Y)(e.appMeta)))return new Map;let r=await (0,n.db)().select({id:a.resources.id,name:a.resources.name,meta:a.resources.meta}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.kind,"app"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(500);return(0,I.P)(e,r)}i.sql`(count(*) filter (where ${a.checks.statusCode} >= 500))::int`,i.sql`count(*)::int`,e.s(["P",0,J,"_",0,W],706539);let ee={ok:!1,error:"That monitor no longer exists."},et={ok:!1,error:"This app already has a monitor for that address."},er={ok:!1,error:"That app isn't watched. Tick it in Connections → Sync first."},en="This app no longer exists at Vercel.",ea={ok:!1,error:en},ei={ok:!1,error:"Someone else changed this monitor just now. Reopen it and try again."},eo={ok:!1,error:"That monitor is a heartbeat. Edit it from its own menu."},es={ok:!1,error:"The console doesn't check a heartbeat. It waits for your job's ping."};async function el(e){return(0,n.db)().transaction(async t=>(await t.execute(i.sql`select pg_advisory_xact_lock(hashtext('ops.monitors'))`),e(t)))}async function eu(e=(0,n.db)()){let[r]=await e.select({n:i.sql`count(*)::int`}).from(a.monitors).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.monitors.resourceId)).where((0,t.and)((0,t.eq)(a.monitors.kind,"http"),(0,t.eq)(a.monitors.paused,!1),(0,t.eq)(a.monitors.ownerPaused,!1),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt)));return r?.n??0}async function ed(e){let[r]=await (0,n.db)().select({m:a.monitors,watched:a.resources.monitored,goneAt:a.resources.goneAt}).from(a.monitors).innerJoin(a.resources,(0,t.eq)(a.resources.id,a.monitors.resourceId)).where((0,t.eq)(a.monitors.id,e)).limit(1);return r??null}async function ec(e,r){let i,o=await ed(e);if(!o)return ee;if("heartbeat"===o.m.kind)return eo;if(o.goneAt)return ea;if(!o.watched)return er;let[s]=await (0,n.db)().select({id:a.monitors.id}).from(a.monitors).where((0,t.and)((0,t.eq)(a.monitors.resourceId,o.m.resourceId),(0,t.eq)(a.monitors.url,r.url),(0,t.ne)(a.monitors.id,e))).limit(1);if(s)return et;let l=new Date,u={url:o.m.url,expectedStatus:o.m.expectedStatus,timeoutMs:o.m.timeoutMs,bodyContains:o.m.bodyContains,jsonPath:o.m.jsonPath,jsonEquals:o.m.jsonEquals},d=(0,j.V)(u,r)?{state:"unknown",failStreak:0,stateSince:l,lastCheckedAt:null,lastStatus:null,lastLatencyMs:null,lastError:null}:{};try{i=await (0,n.db)().update(a.monitors).set({url:r.url,expectedStatus:r.expectedStatus,timeoutMs:r.timeoutMs,bodyContains:r.bodyContains,jsonPath:r.jsonPath,jsonEquals:r.jsonEquals,...d,updatedAt:l}).where((0,t.and)((0,t.eq)(a.monitors.id,e),(0,t.eq)(a.monitors.url,o.m.url),(0,t.eq)(a.monitors.expectedStatus,o.m.expectedStatus),(0,E.T)(a.monitors.bodyContains,o.m.bodyContains),(0,E.T)(a.monitors.jsonPath,o.m.jsonPath),(0,E.T)(a.monitors.jsonEquals,o.m.jsonEquals))).returning({id:a.monitors.id})}catch(t){let e;if("23505"===("string"==typeof(e=t?.code??t?.cause?.code)?e:void 0))return et;throw t}if(!i.length)return await ed(e)?ei:ee;let c=u.url!==r.url;return{ok:!0,message:o.m.ownerPaused?`Saved ${(0,D.F)(r.url)}. It's checked again once you resume it.`:`Checking ${(0,D.F)(r.url)} from the next run.`,audit:{message:`Monitor edited: ${(0,D.F)(r.url)}`,...c?{detail:`was ${(0,D.F)(u.url)}`}:{},resourceId:o.m.resourceId}}}function ep(e,t){return!e.lastCheckedAt||t.getTime()-e.lastCheckedAt.getTime()>=P.O?null:{ok:!0,message:(0,j.T)({...e,lastCheckedAt:e.lastCheckedAt},t),passed:e.lastStatus===e.expectedStatus&&!e.lastError}}async function ef(e){let t=await ed(e);if(!t)return ee;if("heartbeat"===t.m.kind)return es;let r=t.goneAt?en:t.watched?(0,j.i)(t.m)?null:"Paused monitors aren't checked. Resume it first.":"Its app isn't watched. Tick it in Connections → Sync first.";if(r)return{ok:!1,error:r};let i=ep(t.m,new Date);if(i)return i;let o=await (0,q.f)(),s=(0,C.isDemo)()?(0,x.M)(t.m.expectedStatus):await (0,R.b)(t.m.url,{expectedStatus:t.m.expectedStatus,timeoutMs:t.m.timeoutMs,body:(0,$.C)(t.m)}),u=new Date;if(!await (0,E.j)(t.m,s,u)){let t=await ed(e);return t?ep(t.m,new Date)??{ok:!1,error:"The monitor changed while it was being checked. Try again."}:ee}let d=null!==(0,O.x)(o,{monitorId:e,appId:t.m.resourceId},u);await (0,n.db)().insert(a.checks).values({monitorId:e,at:u,ok:s.ok,statusCode:s.statusCode,latencyMs:s.latencyMs,error:s.error,inMaintenance:d});let c=(0,N.G)(t.m.failStreak,s),p=(0,N.F)({resourceId:t.m.resourceId,path:(0,T.K)(t.m.url),prev:t.m.state,next:c.state,code:s.statusCode,error:s.error,at:u});return await (0,l.f)([p]),{ok:!0,message:(0,j.X)(s),passed:s.ok,audit:{message:`Check now: ${(0,D.F)(t.m.url)}`,resourceId:t.m.resourceId}}}e.s(["Q",0,eu,"X",0,ef,"d",0,Z,"J",0,Q,"M",0,Y,"q",0,ec,"e",0,el],380719);var em=e.i(88316);function eh(e,t,r){let n=new Map(e.map(e=>[e.externalId,e])),a=new Set(t.map(e=>e.externalId)),i=new Set(r.keepTeamIds??[]);return{update:t.filter(e=>n.has(e.externalId)).map(e=>({id:n.get(e.externalId).id,name:e.name,meta:e.meta})),insert:t.filter(e=>!n.has(e.externalId)).map(e=>({...e,monitored:r.watchNew})),gone:e.filter(e=>!a.has(e.externalId)&&!(null!==e.teamId&&i.has(e.teamId))).map(e=>e.id)}}function eg(e,t){return!e.monitored&&t.getTime()-e.firstSeenAt.getTime()<864e5}let ey={vercel:"app",supabase:"supabase_project",neon:"neon_project",firebase:"firestore",cloudflare:"zone",turso:"turso_database",upstash:"upstash_redis"},eb=Object.keys(ey),ew=e=>Object.hasOwn(ey,e)?ey[e]:null,ev=e=>"string"==typeof e&&e?e:null;function ek(e,t){return"app"===e?`Vercel project${ev(t.teamName)?` \xb7 ${t.teamName}`:""}`:"zone"===e?`Cloudflare zone \xb7 ${ev(t.status)??"unknown"}`:"supabase_project"===e?["Supabase project",ev(t.status)?(0,em.P)(String(t.status)).label:null,ev(t.region)].filter(Boolean).join(" · "):"neon_project"===e?["Neon project",ev(t.region)].filter(Boolean).join(" · "):"turso_database"===e?["Turso database",ev(t.group)?`group ${t.group}`:null,ev(t.region)].filter(Boolean).join(" · "):"upstash_redis"===e?["Upstash Redis",ev(t.region)].filter(Boolean).join(" · "):"Firebase project"}let e_=e=>"app"===e?"app":"zone"===e?"dom":"firestore"===e?"fs":"db";async function eA(e){let[r]=await (0,n.db)().select().from(a.accounts).where((0,t.eq)(a.accounts.id,e)).limit(1);if(!r)return null;let i=(0,s.V)({ciphertext:r.credentialCiphertext,iv:r.credentialIv},(0,d.serverEnv)().OPS_ENCRYPTION_KEY);return{account:r,token:i,problem:(0,o.A)(i)}}async function eI(e,r){let i=new Date;return(await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,r),(0,t.isNull)(a.resources.goneAt))).orderBy(a.resources.name).limit(500)).map(e=>({id:e.id,name:e.name,sub:ek(e.kind,e.meta),monitored:e.monitored,fresh:eg(e,i),badge:e_(e.kind)}))}async function eS(e,r){let i=await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"app"))),o=i.filter(e=>e.monitored&&!e.goneAt),s=i.filter(e=>!e.monitored||e.goneAt);if(s.length&&await (0,n.db)().update(a.monitors).set({paused:!0,updatedAt:new Date}).where((0,t.inArray)(a.monitors.resourceId,s.map(e=>e.id))),!o.length)return 0;let l=await (0,n.db)().select({id:a.monitors.id,resourceId:a.monitors.resourceId,paused:a.monitors.paused,ownerPaused:a.monitors.ownerPaused,kind:a.monitors.kind}).from(a.monitors).where((0,t.inArray)(a.monitors.resourceId,o.map(e=>e.id))),u=(0,j.Y)(l.filter(e=>"heartbeat"===e.kind));u.length&&await (0,n.db)().update(a.monitors).set({paused:!1,updatedAt:new Date}).where((0,t.inArray)(a.monitors.id,u));let d=l.filter(e=>"heartbeat"!==e.kind),c=(0,j.Y)(d),p=new Set(l.map(e=>e.resourceId)),f=[];for(let e of o.filter(e=>!p.has(e.id))){let t=String(e.meta.teamId??""),n="string"==typeof e.meta.primaryDomain&&e.meta.primaryDomain?e.meta.primaryDomain:null,a=n?{ok:!0,data:n}:r?await (0,g.q)(r,t,e.externalId,e.name):null;f.push({appId:e.id,url:`https://${a?.ok?a.data:`${e.name}.vercel.app`}/`})}return c.length||f.length?el(async e=>{let r=Math.max(0,j.G-await eu(e)),n=new Set,i=c.slice(0,r),o=c.slice(i.length);r-=i.length;let s=new Date;if(i.length&&await e.update(a.monitors).set({paused:!1,updatedAt:s}).where((0,t.inArray)(a.monitors.id,i)),o.length)for(let r of(await e.update(a.monitors).set({paused:!1,ownerPaused:!0,updatedAt:s}).where((0,t.inArray)(a.monitors.id,o)),d.filter(e=>o.includes(e.id))))n.add(r.resourceId);for(let t of f){let i=r>0;i?r-=1:n.add(t.appId),await e.insert(a.monitors).values({resourceId:t.appId,url:t.url,ownerPaused:!i}).onConflictDoNothing()}return n.size}):0}async function e$(e,r,o,s){let l=Array.isArray(o.productionAliases)?o.productionAliases.filter(e=>"string"==typeof e):[],u=(0,I.Q)(s,r,l,o);await (0,n.db)().update(a.resources).set({meta:i.sql`${a.resources.meta} || ${JSON.stringify(u)}::jsonb`}).where((0,t.eq)(a.resources.id,e))}async function eT(e,r){for(let i of(await (0,n.db)().select({id:a.resources.id,name:a.resources.name,externalId:a.resources.externalId,meta:a.resources.meta,monitored:a.resources.monitored,goneAt:a.resources.goneAt}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"app")))).filter(e=>e.monitored&&!e.goneAt)){let e=await (0,g.M)(r,String(i.meta.teamId??""),i.externalId);if(e.ok)await e$(i.id,i.name,i.meta,e.data);else if("auth"===e.kind||429===e.status)return}}async function eR(e,r,i,o){let s=eh((await (0,n.db)().select({id:a.resources.id,externalId:a.resources.externalId,monitored:a.resources.monitored}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,"zone")))).map(e=>({...e,teamId:null})),i.map(e=>({externalId:e.id,name:e.name,meta:{status:e.status,accountId:e.accountId,accountName:e.accountName}})),{watchNew:r});await (0,n.db)().transaction(async r=>{for(let e of s.update)await r.update(a.resources).set({name:e.name,meta:e.meta,lastSeenAt:o,goneAt:null,updatedAt:o}).where((0,t.eq)(a.resources.id,e.id));s.insert.length&&await r.insert(a.resources).values(s.insert.map(t=>({accountId:e,kind:"zone",externalId:t.externalId,name:t.name,meta:t.meta,monitored:t.monitored}))).onConflictDoNothing({target:[a.resources.accountId,a.resources.kind,a.resources.externalId]}),s.gone.length&&await r.update(a.resources).set({goneAt:o,updatedAt:o}).where((0,t.and)((0,t.inArray)(a.resources.id,s.gone),(0,t.isNull)(a.resources.goneAt)))})}async function ex(e,r,i){let s=await (0,h.F)(r);if(!s.ok){let r=(0,o.E)({ok:!1,kind:"scope"===s.kind?"auth":s.kind,error:s.error});return r&&await (0,n.db)().update(a.accounts).set({...r,updatedAt:new Date}).where((0,t.eq)(a.accounts.id,e)),{ok:!1,error:s.error}}let l=new Date;await eR(e,i,s.data,l);let u=await (0,h.d)(r);return await (0,n.db)().update(a.accounts).set({lastSyncAt:l,status:"ok",lastError:null,updatedAt:l,...u.ok?{expiresAt:u.data.expiresAt}:{}}).where((0,t.eq)(a.accounts.id,e)),{ok:!0}}async function eE(e,t){let r=e=>({ok:!1,kind:"auth"===e.kind||"scope"===e.kind?"auth":"format"===e.kind?"format":"transient",error:e.error});if("vercel"===e){let e=await (0,g.G)(t);return e.ok?{ok:!0,found:e.data.apps,skippedTeams:e.data.skippedTeams,skippedTeamIds:e.data.skippedTeamIds}:{ok:!1,kind:e.kind,error:e.error}}if("supabase"===e){let e=await (0,k.W)(t);return e.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:e.data.filter(e=>"REMOVED"!==e.status).map(e=>({externalId:e.ref,name:e.name,meta:{orgSlug:e.orgSlug,region:e.region,pgVersion:e.pgVersion,createdAt:e.createdAt,status:e.status}}))}:r(e)}if("neon"===e){let e=await (0,v.m)(t);return e.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:e.data.map(e=>({externalId:e.id,name:e.name,meta:{orgId:e.orgId,region:e.region,pgVersion:e.pgVersion,createdAt:e.createdAt}}))}:r(e)}if("turso"===e){let e=await (0,_.t)(t);return e.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:e.data.map(e=>({externalId:e.id,name:e.name,meta:{org:e.org,group:e.group,region:e.primaryRegion}}))}:r(e)}if("upstash"===e){let e=(0,A.L)(t);if(!e)return{ok:!1,kind:"format",error:"The stored Upstash credential can't be read. Replace it."};let n=await (0,A.M)(e);return n.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:n.data.map(e=>({externalId:e.id,name:e.name,meta:{region:e.region,type:e.type}}))}:r(n)}let n=(0,w.p)(t);if(!n)return{ok:!1,kind:"format",error:"The stored service account can't be read. Replace the credential."};let a=await (0,w.X)(n);if(!a.ok)return r(a);let i=await (0,b.z)(n,a.data);return i.ok?{ok:!0,skippedTeams:[],skippedTeamIds:[],found:i.data.map(e=>({externalId:e.projectId,name:e.displayName,meta:{projectId:e.projectId}}))}:r(i)}async function eN(e){let r=await eA(e);if(!r)return{ok:!1,error:"That account no longer exists."};let{account:i,token:s,problem:l}=r,u=ew(i.provider);if(!u)return{ok:!1,error:"Sync for this provider arrives in a later stage."};if(l||!s)return{ok:!1,error:l??"The credential can't be read."};if("cloudflare"===i.provider){let t=await ex(e,s,i.watchNew);return t.ok?{ok:!0,rows:await eI(e,u),skippedTeams:[],overLimit:null}:t}let d=await eE(i.provider,s);if(!d.ok){let r=(0,o.E)({ok:!1,kind:d.kind,error:d.error});return r&&await (0,n.db)().update(a.accounts).set({...r,updatedAt:new Date}).where((0,t.eq)(a.accounts.id,e)),{ok:!1,error:d.error}}let c=(await (0,n.db)().select({id:a.resources.id,externalId:a.resources.externalId,monitored:a.resources.monitored,meta:a.resources.meta}).from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,e),(0,t.eq)(a.resources.kind,u)))).map(e=>({id:e.id,externalId:e.externalId,monitored:e.monitored,teamId:"string"==typeof e.meta.teamId?e.meta.teamId:null,meta:e.meta})),p=new Map(c.map(e=>[e.id,e.meta])),f=eh(c,d.found,{watchNew:i.watchNew,keepTeamIds:d.skippedTeamIds}),m="vercel"===i.provider?await (0,g.o)(s):null,h=new Date;await (0,n.db)().transaction(async r=>{for(let e of f.update){var n;await r.update(a.resources).set({name:e.name,meta:{...e.meta,...(n=p.get(e.id))&&"string"==typeof n.primaryDomain?{domains:n.domains,primaryDomain:n.primaryDomain,pastDomains:n.pastDomains??[]}:{},...(0,S.K)(p.get(e.id))},lastSeenAt:h,goneAt:null,updatedAt:h}).where((0,t.eq)(a.resources.id,e.id))}f.insert.length&&await r.insert(a.resources).values(f.insert.map(t=>({accountId:e,kind:u,externalId:t.externalId,name:t.name,meta:t.meta,monitored:t.monitored}))).onConflictDoNothing({target:[a.resources.accountId,a.resources.kind,a.resources.externalId]}),f.gone.length&&await r.update(a.resources).set({goneAt:h,updatedAt:h}).where((0,t.and)((0,t.inArray)(a.resources.id,f.gone),(0,t.isNull)(a.resources.goneAt))),await r.update(a.accounts).set({lastSyncAt:h,status:"ok",lastError:null,updatedAt:h,...m?.ok?{expiresAt:m.data}:{}}).where((0,t.eq)(a.accounts.id,e))}),"vercel"===i.provider&&await eT(e,s);let y="vercel"===i.provider?await eS(e,s):0;return{ok:!0,rows:await eI(e,u),skippedTeams:d.skippedTeams,overLimit:(0,j.S)(y)}}e.s(["I",0,eb,"d",0,e_,"T",0,eg,"J",0,eh,"K",0,ew,"S",0,ek],668141),e.s(["F",0,e$,"k",0,eN,"s",0,eR],242960);let eP=i.sql`excluded.meta`;async function eO(e){let r=(0,d.serverEnv)().OPS_ENCRYPTION_KEY;return(await (0,n.db)().select().from(a.accounts).where((0,t.and)((0,t.eq)(a.accounts.provider,e),(0,t.eq)(a.accounts.status,"ok")))).map(e=>{let t=(0,s.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},r);return{acc:e,token:(0,o.A)(t)?null:t}})}async function eC(e,r,i){for(let{acc:s,token:l}of(await eO("cloudflare"))){if(!l){i.push(`cloudflare/${s.label}: credential can't be read`);continue}let d=await (0,h.F)(l);if(!d.ok){let r=(0,o.E)({ok:!1,kind:"scope"===d.kind?"auth":d.kind,error:d.error});if(r&&await (0,n.db)().update(a.accounts).set({...r,updatedAt:e}).where((0,t.eq)(a.accounts.id,s.id)),i.push(`cloudflare/${s.label}: ${d.error}`),429===d.status)return;continue}for(let o of(await eR(s.id,s.watchNew,d.data,e),await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,s.id),(0,t.eq)(a.resources.kind,"zone"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))))){if(r-Date.now()<6e3)return void i.push("cloudflare: skipped remaining zones, time budget used");let t=d.data.find(e=>e.id===o.externalId),[n,a,s]=await Promise.all([(0,h.p)(l,o.externalId),(0,h.v)(l,o.externalId),(0,h.w)(l,o.externalId)]),c=[n,a,s].flatMap(e=>e.ok?[]:[e]),p={zone:{status:t?.status??null,paused:t?.paused??!1,nameServers:t?.nameServers??[],accountId:t?.accountId??null,checkedAt:e.toISOString()},ssl:a.ok?{mode:a.data,error:null}:{mode:null,error:a.error},cfErrors:c.map(e=>e.error)};for(let t of(n.ok?Object.assign(p,{records:n.data.records,recordsTruncated:n.data.truncated}):"scope"===n.kind&&Object.assign(p,{records:[],recordsTruncated:!1}),s.ok?p.certs=s.data:"scope"===s.kind&&(p.certs=[]),await (0,u.r)(o.id,p,e),c))"scope"!==t.kind&&i.push(`cloudflare/${o.name}: ${t.error}`);if(c.some(e=>429===e.status))return}}}async function ej(e,r,i){for(let{acc:o,token:s}of(await eO("vercel"))){if(!s)continue;let l=await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.accountId,o.id),(0,t.eq)(a.resources.kind,"app"))),d=l.filter(e=>e.monitored&&!e.goneAt),c=l.filter(e=>!e.monitored||e.goneAt).map(e=>e.id);for(let l of(c.length&&await (0,n.db)().update(a.resources).set({monitored:!1,updatedAt:e}).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.inArray)(a.resources.parentId,c))),d)){if(Date.now()>r)return void i.push("domains: skipped remaining apps, time budget used");let d=String(l.meta.teamId??""),c=await (0,g.M)(s,d,l.externalId);if(!c.ok){if(i.push(`domains/${l.name}: ${c.error}`),429===c.status)return;if("auth"===c.kind)break;continue}await e$(l.id,l.name,l.meta,c.data);let p=c.data.filter(e=>!e.gitBranch),m=p.length?await (0,n.db)().insert(a.resources).values(p.map(t=>({accountId:o.id,kind:"domain",externalId:t.name,name:t.name,parentId:l.id,monitored:!0,meta:{redirect:t.redirect,verified:t.verified,projectId:l.externalId},lastSeenAt:e}))).onConflictDoUpdate({target:[a.resources.accountId,a.resources.kind,a.resources.externalId],set:{parentId:l.id,monitored:!0,goneAt:null,lastSeenAt:e,updatedAt:e,meta:eP}}).returning({id:a.resources.id,name:a.resources.name}):[];for(let o of(await (0,n.db)().update(a.resources).set({goneAt:e,updatedAt:e}).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.parentId,l.id),(0,t.isNull)(a.resources.goneAt),p.length?(0,t.notInArray)(a.resources.externalId,p.map(e=>e.name)):void 0)),m.filter(e=>!(0,f.e)(e.name)))){if(Date.now()>r)return;let t=await (0,g.Q)(s,d,o.name);t.ok?await (0,u.r)(o.id,{vercel:{...t.data,checkedAt:e.toISOString()}},e):"transient"===t.kind&&i.push(`domains/${o.name}: ${t.error}`)}}}}async function eD(){return(0,n.db)().select({r:a.resources,s:a.snapshots}).from(a.resources).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt)))}async function eM(){return(0,n.db)().select({r:a.resources,s:a.snapshots}).from(a.resources).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"zone"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt)))}let ez=(e,t)=>((0,f.Z)(e)?.getTime()??0)-((0,f.Z)(t)?.getTime()??0);async function eq(e,r,i){let[o]=await (0,n.db)().select({data:a.snapshots.data}).from(a.snapshots).where((0,t.eq)(a.snapshots.resourceId,e)).limit(1),s=await (0,m.f)(r,{timeoutMs:5e3});await (0,u.r)(e,{tls:(0,c.o)(s,(0,c.q)(o?.data).tls,i)},i)}async function eL(e,t,r){let n=(await eD()).filter(({r:t,s:r})=>!(0,f.e)(t.name)&&(0,f.Y)((0,c.q)(r?.data).tls?.checkedAt,e)).sort((e,t)=>ez((0,c.q)(e.s?.data).tls?.checkedAt,(0,c.q)(t.s?.data).tls?.checkedAt)).slice(0,f.H);await (0,R.P)(n,4,async({r:n})=>{if(!(t-Date.now()<6e3))try{await eq(n.id,n.name,e)}catch{r.push(`tls/${n.name}: couldn't save the result`)}})}async function eU(e,r,i,o){let[s]=await (0,n.db)().select({data:a.snapshots.data}).from(a.snapshots).where((0,t.eq)(a.snapshots.resourceId,e)).limit(1),l=(0,c.q)(s?.data).rdap,d=o;if(!d){let e=await (0,p.Y)();if(!e.ok)return e.error;d=e.services}let f=(0,p.T)(d,r),m=f?await (0,p.u)(r,f):{ok:!1,error:"The registry has no RDAP server"};return await (0,u.r)(e,{rdap:(0,c.n)(m,l,i)},i),m.ok?null:m.error}async function eH(e,t,r){let n=(await eM()).filter(({r:t,s:r})=>t.monitored&&(0,f.Y)((0,c.q)(r?.data).rdap?.checkedAt,e)).sort((e,t)=>ez((0,c.q)(e.s?.data).rdap?.checkedAt,(0,c.q)(t.s?.data).rdap?.checkedAt)).slice(0,f.H);if(!n.length)return;let a=await (0,p.Y)();if(!a.ok)return void r.push(`rdap: ${a.error}`);for(let{r:i}of n){if(t-Date.now()<6e3)return;let n=await eU(i.id,i.name,e,a.services);n&&"The registry has no RDAP server"!==n&&r.push(`rdap/${i.name}: ${n}`)}}async function eB(e,t,r){let i=t-Date.now();if(i<1e3)throw Error("skipped, time budget used");let o=await (0,y.z)({timeoutMs:Math.min(8e3,i)});if(!o.ok)return void r.push(`eol: ${o.error}`);let s={cycles:o.cycles,checkedAt:e.toISOString()};await (0,n.db)().insert(a.settings).values({key:y.T,value:s}).onConflictDoUpdate({target:a.settings.key,set:{value:s,updatedAt:e}})}async function eV(e){let t=await eM(),r=[];for(let{r:n,s:a}of t.filter(e=>e.s)){let t=(0,c.q)(a.data),i=(0,f.G)({status:t.zone?.status??null,paused:t.zone?.paused??!1,rdap:t.rdap},e);(i.state!==a.state||JSON.stringify(i.reasons)!==JSON.stringify(t.reasons))&&(await (0,u.r)(n.id,{reasons:i.reasons},e),i.state!==a.state&&await (0,u.a)(n.id,i.state,e),r.push((0,f.n)({resourceId:n.id,name:n.name,prev:a.state,next:i.state,reasons:i.reasons,at:e})))}let n=t.filter(e=>e.r.monitored).map(e=>e.r.name);for(let{r:a,s:i}of(await eD())){let o=(0,c.q)(i?.data),s=(0,f.J)(a.name,n),l=s?(0,c.q)(t.find(e=>e.r.name===s)?.s?.data):null,d=(0,f.k)({host:a.name,tls:o.tls,vercel:o.vercel,records:l?(0,f.Q)(a.name,l.records):[],zoneRdap:l?.rdap??null},e),p=i?.state??null;(d.state!==p||JSON.stringify(d.reasons)!==JSON.stringify(o.reasons))&&(await (0,u.r)(a.id,{reasons:d.reasons},e),d.state!==p&&await (0,u.a)(a.id,d.state,e),r.push((0,f.n)({resourceId:a.id,name:a.name,prev:p,next:d.state,reasons:d.reasons,at:e})))}await (0,l.f)(r)}async function eG(){return(0,n.db)().select({r:a.resources,s:a.snapshots,label:a.accounts.label}).from(a.resources).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"zone"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).orderBy((0,r.asc)(a.resources.name)).limit(200)}async function eK(){let e=await (0,n.db)().select({r:a.resources,s:a.snapshots}).from(a.resources).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).orderBy((0,r.asc)(a.resources.name)).limit(200);if(!e.length)return[];let i=[...new Set(e.map(e=>e.r.parentId).filter(e=>!!e))],o=i.length?await (0,n.db)().select({id:a.resources.id,name:a.resources.name,monitored:a.resources.monitored,goneAt:a.resources.goneAt}).from(a.resources).where((0,t.inArray)(a.resources.id,i)):[],s=new Set(o.filter(e=>e.monitored&&!e.goneAt).map(e=>e.id)),l=await eG(),u=l.map(e=>e.r.name);return e.filter(({r:e})=>!e.parentId||s.has(e.parentId)).map(({r:e,s:t})=>{let r=(0,c.q)(t?.data),n=(0,f.J)(e.name,u),a=l.find(e=>e.r.name===n),i=(0,c.q)(a?.s?.data);return{id:e.id,name:e.name,appId:e.parentId,appName:o.find(t=>t.id===e.parentId)?.name??null,zoneId:a?.r.id??null,zoneName:n,isVercel:(0,f.e)(e.name),state:t?.state??"unknown",reasons:r.reasons,tls:r.tls,vercel:r.vercel,records:a?(0,f.Q)(e.name,i.records):[],rdap:a?i.rdap:null,cfAccountId:a?i.zone?.accountId??null:null}})}async function eF(){return(await eG()).map(e=>({id:e.r.id,name:e.r.name}))}async function eW(e){let t=await eG(),r=(e?t.find(t=>t.r.id===e):null)??t[0];if(!r)return null;let n=(0,c.q)(r.s?.data);return{id:r.r.id,name:r.r.name,accountId:r.r.accountId,accountLabel:r.label,state:r.s?.state??"unknown",reasons:n.reasons,facts:n}}async function eX(){let[e]=await (0,n.db)().select({value:a.settings.value}).from(a.settings).where((0,t.eq)(a.settings.key,y.T)).limit(1),r=e?.value,i=r?(0,y.b)({result:{releases:r.cycles?.map(e=>({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom,latest:e.latest?{name:e.latest}:null}))}}):null;return i&&"string"==typeof r?.checkedAt?{cycles:i,checkedAt:r.checkedAt}:null}async function eJ(e){let[r]=await (0,n.db)().select().from(a.resources).where((0,t.and)((0,t.eq)(a.resources.id,e),(0,t.eq)(a.resources.kind,"domain"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(1);if(!r)return{ok:!1,error:"That domain is no longer watched."};if((0,f.e)(r.name))return{ok:!1,error:"vercel.app domains are Vercel's own. There is nothing to check."};let i=new Date;await eq(r.id,r.name,i);let o=await eG(),s=(0,f.J)(r.name,o.map(e=>e.r.name)),l=o.find(e=>e.r.name===s),u=l?await eU(l.r.id,l.r.name,i):null;return await eV(i),{ok:!0,message:u?`Checked ${r.name}. Domain expiry: ${u}.`:`Checked ${r.name}.`,audit:{message:`Re-check: ${r.name}`,resourceId:r.id}}}e.s(["p",0,["cloudflare","domains","tls","rdap","eol"],"r",0,eU,"x",0,eV,"h",0,eC,"H",0,ej,"i",0,eB,"W",0,eH,"V",0,eL,"j",0,eq],991219),e.s(["j",0,eW,"p",0,eK,"c",0,eF,"P",0,eX,"_",0,eJ],827439)},373200,262412,e=>{e.i(547963);var t=e.i(336763),r=e.i(396918),n=e.i(533102),a=e.i(406212),i=e.i(530298),o=e.i(484745),s=e.i(803237),l=e.i(333407),u=e.i(234195),d=e.i(503313),c=e.i(638809),p=e.i(147100),f=e.i(93387),m=e.i(105464),h=e.i(90879);let g=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function y(e,t,r={}){let n;if((0,h.isDemo)())return{ok:!1,kind:"config",error:m.Y};if(g.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{n=await (r.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:t.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===n.status||n.ok)return{ok:!0};if(429===n.status){let e=await n.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===n.status||401===n.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:n.status>=500?"transient":"config",error:`Discord returned an error (${n.status}).`}}e.s(["f",0,y],262412);var b=e.i(666680),w=e.i(300794),v=e.i(809816);let k={open:"firing",repeat:"repeat",resolve:"resolved"};async function _(e){return(await (0,w.lookup)(e,{all:!0})).map(e=>e.address)}async function A(e,t,r={}){let n,a;if((0,h.isDemo)())return{ok:!1,kind:"config",error:m.Y};if(function(e){let t;try{t=new URL(e.trim())}catch{return"Paste the whole address, starting with https://."}let r=(0,v._)(t);return"scheme"===r?"Use an https:// address without a user name or password in it.":"blocked"===r?"Use an address on the public internet, on port 443. Watchbell doesn't post into private networks.":null}(e.url))return{ok:!1,kind:"config",error:"The saved webhook address isn't allowed any more."};let i=new URL(e.url.trim());try{let e=await (r.lookup??_)(i.hostname);if(!e.length||e.some(v.W))return{ok:!1,kind:"config",error:"The webhook host resolves to a private address; Watchbell won't post there."}}catch{return{ok:!1,kind:"transient",error:"The webhook host didn't resolve."}}let o=JSON.stringify(t),s=String(Math.floor(Date.parse(t.sentAt)/1e3)),l={"Content-Type":"application/json","User-Agent":"Watchbell-Webhook/1.0","X-Watchbell-Timestamp":s};e.secret&&(l["X-Watchbell-Signature"]=(a=e.secret,`sha256=${(0,b.createHmac)("sha256",a).update(`${s}.${o}`).digest("hex")}`));try{n=await (r.fetch??fetch)(i.toString(),{method:"POST",headers:l,body:o,redirect:"manual",cache:"no-store",signal:AbortSignal.timeout(r.timeoutMs??5e3)})}catch{return{ok:!1,kind:"transient",error:"The webhook didn't answer."}}if(await n.body?.cancel().catch(()=>void 0),n.ok)return{ok:!0};if(n.status>=300&&n.status<400)return{ok:!1,kind:"config",error:"The webhook answered with a redirect; Watchbell doesn't follow them. Use the final address."};if(429===n.status){let e=Math.min(600,Math.max(1,Number(n.headers.get("retry-after"))||30));return{ok:!1,kind:"transient",retryAfterS:e,error:`The webhook asked to wait ${e} s.`}}return{ok:!1,kind:n.status>=500?"transient":"config",error:`The webhook returned an error (${n.status}).`}}var I=e.i(761095),S=e.i(685560),$=e.i(291815);function T(e){let t=new Set;return e.split(/[\s,;]+/).filter(e=>e&&!t.has(e.toLowerCase())&&t.add(e.toLowerCase()))}let R=[465,587,2525],x=$.z.email();class E{socket;buf;lines;ready;waiters;onData;constructor(e){this.socket=e,this.buf="",this.lines=[],this.ready=[],this.waiters=[],this.onData=e=>this.read(e),e.on("data",this.onData)}attach(e){this.socket.off("data",this.onData),this.socket=e,e.on("data",this.onData)}read(e){let t;for(this.buf+=e.toString("utf8");(t=this.buf.indexOf("\n"))>=0;){let e=this.buf.slice(0,t).replace(/\r$/,"");if(this.buf=this.buf.slice(t+1),this.lines.push(e),/^\d{3}( |$)/.test(e)){let t={code:Number(e.slice(0,3)),text:this.lines.join("\n")};this.lines=[];let r=this.waiters.shift();r?r(t):this.ready.push(t)}}}next(){let e=this.ready.shift();return e?Promise.resolve(e):new Promise(e=>this.waiters.push(e))}send(e){this.socket.write(`${e}\r
37
+ `)}}class N extends Error{kind;constructor(e,t){super(e),this.kind=t}}async function P(e,t,r,n={}){let a;if((0,h.isDemo)())return{ok:!1,kind:"config",error:m.Y};if(Object.keys(function(e){let t={},r=e.host.trim().toLowerCase();/^[a-z0-9.-]{3,253}$/.test(r)&&r.includes(".")?(0,v.N)(r)&&(t.host="Use a mail server on the public internet. Watchbell doesn't connect into private networks."):t.host="Enter the server name, for example smtp.office365.com.",R.includes(e.port)||(t.port="Use port 587 (STARTTLS), 465 (TLS) or 2525."),(!e.user.trim()||e.user.length>200)&&(t.user="Enter the user name the server expects (often the whole address)."),(!e.pass||e.pass.length>500)&&(t.pass="Enter the password or app password."),x.safeParse(e.from.trim()).success||(t.from="Enter the address the mail comes from.");let n=T(e.to);if(n.length)if(n.length>10)t.to="Up to 10 addresses.";else{let e=n.find(e=>!x.safeParse(e).success);e&&(t.to=`${e} isn't a valid address.`)}else t.to="Enter the address that gets the alerts.";return t}(e)).length)return{ok:!1,kind:"config",error:"The saved mail server settings aren't valid any more."};let i=e.host.trim().toLowerCase();try{let e=await (n.lookup??(async e=>(await (0,w.lookup)(e,{all:!0})).map(e=>e.address)))(i);if(!e.length||e.some(v.W))return{ok:!1,kind:"config",error:"The mail server resolves to a private address; Watchbell won't connect there."};a=e[0]}catch{return{ok:!1,kind:"transient",error:"The mail server's name didn't resolve."}}let o=465===e.port,s=null,l=new Promise((e,t)=>setTimeout(()=>t(new N("The mail server took too long to answer.","transient")),n.timeoutMs??15e3).unref?.()),u=async()=>{var l,u,d,c;let p,f;try{s=await (n.connect??((e,t,r,n)=>new Promise((a,i)=>{let o=n?S.default.connect({host:e,port:t,servername:r}):I.default.connect({host:e,port:t});o.once(n?"secureConnect":"connect",()=>a(o)),o.once("error",i)})))(a,e.port,i,o)}catch{throw new N(`Couldn't connect to ${i}:${e.port}.`,"transient")}let m=new E(s),h=async(e,t,r="config")=>{let n=await m.next();if(!e.includes(n.code))throw new N(`The mail server refused ${t} (${n.code}).`,n.code>=400&&n.code<500?"transient":r);return n};await h([220],"the connection","transient"),m.send("EHLO watchbell");let g=await h([250],"EHLO");if(!o){if(!/^250[- ]STARTTLS\b/im.test(g.text))throw new N("The mail server doesn't offer STARTTLS on this port, so the password would go in clear. Use port 465 or a server with STARTTLS.","config");m.send("STARTTLS"),await h([220],"STARTTLS"),s=await (n.upgrade??((e,t)=>new Promise((r,n)=>{let a=S.default.connect({socket:e,servername:t});a.once("secureConnect",()=>r(a)),a.once("error",n)})))(s,i),m.attach(s),m.send("EHLO watchbell"),g=await h([250],"EHLO after STARTTLS")}m.send(`AUTH PLAIN ${Buffer.from(`\0${e.user}\0${e.pass}`,"utf8").toString("base64")}`),await h([235],"the user name or password"),m.send(`MAIL FROM:<${e.from.trim()}>`),await h([250],"the sender address");let y=T(e.to);for(let[e,t]of y.entries())m.send(`RCPT TO:<${t}>`),await h([250,251],y.length>1?`recipient ${e+1} of ${y.length}`:"the recipient address");m.send("DATA"),await h([354],"the message"),s.write(`${(l=e,u=t,d=r,c=new Date,f=Buffer.from(d.replace(/\r?\n/g,"\r\n"),"utf8").toString("base64").replace(/.{1,76}/g,"$&\r\n"),[`From: Watchbell <${l.from.trim()}>`,`To: ${T(l.to).map(e=>`<${e}>`).join(", ")}`,`Subject: ${(p=u.replace(/[\r\n]+/g," ").slice(0,200),/^[\x20-\x7e]*$/.test(p)?p:`=?UTF-8?B?${Buffer.from(p,"utf8").toString("base64")}?=`)}`,`Date: ${c.toUTCString()}`,`Message-ID: <${(0,b.randomUUID)()}@watchbell>`,"MIME-Version: 1.0","Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",f].join("\r\n"))}\r
38
+ .\r
39
+ `),await h([250],"the message"),m.send("QUIT"),await Promise.race([m.next(),new Promise(e=>setTimeout(e,2e3))])};try{return await Promise.race([u(),l]),{ok:!0}}catch(e){return e instanceof N?{ok:!1,kind:e.kind,error:e.message}:{ok:!1,kind:"transient",error:"The mail server closed the connection."}}finally{s?.destroy()}}var O=e.i(853190),C=e.i(728335),j=e.i(412948),D=e.i(760859);function M(e,t){return(0,C.newDaySince)(e,t)&&(0,C.zonedParts)(e).hour>=7}let z={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:e=>e.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:e=>`${e} error tersimpan`}},q={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},L=[5,15,30,60];async function U(e,t){let r={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!M(e,t.lastSentDay))return r;let n=(0,C.dayKey)(e),a=t.state&&t.state.day===n?t.state:null;if(a?.stopped)return{...r,state:a};if(a&&a.attempts>0){let t=(L[a.attempts-1]??L[L.length-1])*6e4;if(a.lastAttemptAt&&e.getTime()-new Date(a.lastAttemptAt).getTime()<t)return{...r,state:a}}a??={day:n,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let i=await t.send({subject:a.subject,html:a.html,text:a.text});if(i.ok)return{acted:!0,state:null,sentDay:n,event:null,result:i};let o=a.attempts+1,s="config"===i.kind||o>=5,l="config"===i.kind?`${i.error}. Fix it and the next digest goes out tomorrow.`:`${i.error} Gave up after ${o} attempts today.`;return{acted:!0,sentDay:null,result:i,state:{...a,attempts:o,lastAttemptAt:e.toISOString(),stopped:s,lastError:i.error},event:s?{message:"Daily digest not sent",detail:l}:null}}var H=e.i(96658),B=e.i(908480);async function V(e,t,r={}){let n;if((0,h.isDemo)())return{ok:!1,kind:"config",error:m.Y};try{n=await (r.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":t.idempotencyKey},body:JSON.stringify({from:t.from,to:[t.to],subject:t.subject,html:t.html,text:t.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(n.ok)return{ok:!0};let a=await n.json().catch(()=>null);return 429===n.status||n.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${n.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(a?.message??n.status).slice(0,200)}`}}var G=e.i(601225),K=e.i(70377);let F="digest.lastSentDay",W="digest.state";async function X(e){let[r]=await (0,a.db)().select().from(i.channels).where((0,t.eq)(i.channels.kind,e)).limit(1);if(!r)return null;try{return{row:r,config:JSON.parse((0,s.K)({ciphertext:r.configCiphertext,iv:r.configIv},(0,f.serverEnv)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function J(){let e=(0,H.notifyEnv)(),[t,r,n,a]=await Promise.all([X("telegram"),X("discord"),X("webhook"),X("smtp")]),i=new Set;e.telegramToken&&t?.row.enabled&&t.config?.chatId&&i.add("telegram"),r?.row.enabled&&r.config?.url&&i.add("discord"),n?.row.enabled&&n.config?.url&&i.add("webhook"),a?.row.enabled&&a.config?.host&&i.add("smtp");let o=`${(0,f.serverEnv)().SITE_URL.replace(/\/+$/,"")}/alerts`;return{send:(i,s,l)=>{var u,d;return"telegram"===i?(0,G.I)(e.telegramToken,t.config.chatId,s):"webhook"===i?A(n.config,(u=l??[],d=new Date,{source:"watchbell",event:u.length?"alerts":"test",sentAt:d.toISOString(),text:s.slice(0,4e3),link:o,alerts:u.slice(0,20).map(e=>({status:k[e.kind],rule:e.ruleKey,severity:e.severity,title:e.title,message:e.message,startedAt:e.startedAt.toISOString(),causedBy:e.causedBy,provider:e.provider}))})):"smtp"===i?P(a.config,(s.split("\n")[0]??"").replace(/[*_`~]/g,"").slice(0,150)||"Watchbell alert",s.replace(/\*\*(.+?)\*\*/g,"$1").replace(/(^|[\s(])_(\S(?:.*?\S)?)_(?=[\s).,!?:;]|$)/gm,"$1$2").replace(/`([^`\n]+)`/g,"$1")):y(r.config.url,s)},configured:i}}async function Y(){let e=(0,H.notifyEnv)().telegramToken;if(!e)return null;let t=await X("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function Z(){let e=await X("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let Q="notify.telegramThreads",ee=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function et(e,t,r){let o=e.filter(e=>ee.test(e));if(!o.length||!Number.isSafeInteger(t)||t<=0)return;let s=Object.fromEntries(o.map(e=>[e,{m:t,at:r.getTime()}])),l=r.getTime()-6048e5,u=n.sql`case when jsonb_typeof(${i.settings.value}) = 'object' then ${i.settings.value} else '{}'::jsonb end`;await (0,a.db)().insert(i.settings).values({key:Q,value:s}).onConflictDoUpdate({target:i.settings.key,set:{value:n.sql`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(s)}::jsonb || ${u}) as e
40
+ where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${l})`,updatedAt:r}})}async function er(e){if(!e||!ee.test(e))return null;try{let[r]=await (0,a.db)().select({value:i.settings.value}).from(i.settings).where((0,t.eq)(i.settings.key,Q)).limit(1),n=r?.value&&"object"==typeof r.value?r.value[e]:null;return"number"==typeof n?.m&&Number.isSafeInteger(n.m)&&n.m>0?n.m:null}catch{return null}}let en=()=>(0,d.f)().catch(()=>D.a);async function ea(e,s,l={}){var d;if(s-Date.now()<6e3)return{sent:0,dropped:0};let p=await (0,c.I)(),m=await (0,a.db)().select({a:i.alerts,channels:i.alertRules.channels,threshold:i.alertRules.threshold}).from(i.alerts).innerJoin(i.alertRules,(0,t.eq)(i.alertRules.key,i.alerts.ruleKey)).where((0,t.and)((0,t.isNotNull)(i.alerts.pending),n.sql`(${i.alerts.pending} = 'resolve') = (${i.alerts.resolvedAt} is not null)`,(0,c.s)(p))).orderBy((0,r.asc)(i.alerts.pendingSince)).limit(50);if(!m.length)return{sent:0,dropped:0};let h=new Set((await (0,a.db)().update(i.alerts).set({claimedAt:e}).where((d=m.map(e=>e.a.id),(0,t.and)((0,t.inArray)(i.alerts.id,d),(0,t.isNotNull)(i.alerts.pending),(0,t.or)((0,t.isNull)(i.alerts.claimedAt),(0,t.lt)(i.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:i.alerts.id})).map(e=>e.id)),g=m.filter(e=>h.has(e.a.id));if(!g.length)return{sent:0,dropped:0};let{send:y,configured:b}=l.sender??await J(),w=new Set(g.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,k,_]=await Promise.all([en(),(0,B.B)(),(0,u.w)()]),A=new Set;for(let r of["telegram","discord","webhook","smtp"]){if(!b.has(r))continue;let n=g.filter(e=>e.channels.includes(r)&&!w.has(e.a.id));if(!n.length)continue;let s=n.map(({a:e,threshold:t})=>{let n="telegram"===r?e:(0,D.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:n.title,message:n.message,startedAt:e.startedAt,causedBy:n.causedBy,provider:e.providerIncident,threshold:t}}),l=(0,o.l)(s,e,(0,f.serverEnv)().SITE_URL,"webhook"===r?"en":"smtp"===r?k.email:k[r],_),u=await y(r,(0,D.G)("telegram"===r?l.telegram:l.discord),"webhook"===r?s.map(e=>({...e,title:(0,D.G)(e.title),message:(0,D.G)(e.message)})):void 0);await (0,a.db)().update(i.channels).set(u.ok?{lastSentAt:e,lastError:null}:{lastError:u.error}).where((0,t.eq)(i.channels.kind,r)),u.ok&&n.forEach(({a:e})=>A.add(e.id)),u.ok&&"telegram"===r&&u.messageId&&await et(n.filter(({a:e})=>"open"===e.pending).map(({a:e})=>e.id),u.messageId,e).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let I=0,S=0,$=[];for(let{a:r,channels:n}of g){let o=n.some(e=>b.has(e)),s=null!==r.pendingSince&&e.getTime()-r.pendingSince.getTime()>18e5;A.has(r.id)?(I++,await (0,a.db)().update(i.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===r.pending?{notifiedOpen:!0}:{}}).where((0,t.eq)(i.alerts.id,r.id))):w.has(r.id)||!o||s?(S++,await (0,a.db)().update(i.alerts).set({pending:null,claimedAt:null}).where((0,t.eq)(i.alerts.id,r.id))):$.push(r.id)}return $.length&&await (0,a.db)().update(i.alerts).set({claimedAt:null}).where((0,t.inArray)(i.alerts.id,$)),{sent:I,dropped:S}}async function ei(e){let o=new Date(e.getTime()-864e5),s=await (0,c.I)(),l=n.sql`case ${i.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[u,d,f,m,h]=await Promise.all([(0,a.db)().select({ruleKey:i.alerts.ruleKey,severity:i.alerts.severity,title:i.alerts.title,message:i.alerts.message,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt}).from(i.alerts).where((0,t.and)((0,t.isNull)(i.alerts.resolvedAt),(0,c.s)(s))).orderBy(l,(0,r.desc)(i.alerts.startedAt)).limit(50),(0,a.db)().select({n:n.sql`count(*)::int`}).from(i.alerts).where((0,t.gte)(i.alerts.startedAt,o)),(0,a.db)().select({ruleKey:i.alerts.ruleKey,title:i.alerts.title,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,t.and)((0,t.isNotNull)(i.alerts.resolvedAt),(0,t.gte)(i.alerts.resolvedAt,o))).orderBy((0,r.desc)(i.alerts.resolvedAt)).limit(20),(0,a.db)().select({id:i.resources.id,name:i.resources.name}).from(i.resources).where((0,t.and)((0,t.eq)(i.resources.kind,"app"),(0,t.eq)(i.resources.monitored,!0),(0,t.isNull)(i.resources.goneAt))).orderBy(i.resources.name).limit(K.O.apps),(0,p.h)(e)]),g=m.map(e=>e.id),[y,b]=g.length?await Promise.all([(0,a.db)().select({id:i.monitors.resourceId,total:n.sql`count(*)::int`,bad:n.sql`(count(*) filter (where not ${i.checks.ok}))::int`}).from(i.checks).innerJoin(i.monitors,(0,t.eq)(i.monitors.id,i.checks.monitorId)).where((0,t.and)((0,t.inArray)(i.monitors.resourceId,g),(0,t.gte)(i.checks.at,o),(0,t.eq)(i.checks.inMaintenance,!1))).groupBy(i.monitors.resourceId),(0,a.db)().select({id:i.storedLogs.resourceId,n:n.sql`count(*)::int`}).from(i.storedLogs).where((0,t.and)((0,t.inArray)(i.storedLogs.resourceId,g),(0,t.gte)(i.storedLogs.at,o))).groupBy(i.storedLogs.resourceId)]):[[],[]],w=new Map(y.map(e=>[e.id,e])),v=new Map(b.map(e=>[e.id,e.n])),k=await en();return{now:e,opened:d[0]?.n??0,firing:u.map(({resourceId:e,...t})=>{let r=(0,D.o)({...t,resourceId:e,causedBy:null},k);return{...t,title:r.title,message:r.message}}),resolved:f.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,D.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},k).title,took:function(e,t){let r=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(r<60)return`${r} min`;let n=Math.floor(r/60);return n<24?`${n} h ${r%60} min`:`${Math.floor(n/24)} d ${n%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:m.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:v.get(e.id)??0}}),providers:h.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function eo(e,r,n){await (0,a.db)().update(i.channels).set(r.ok?{lastSentAt:n,lastError:null}:{lastError:r.error}).where((0,t.eq)(i.channels.kind,e))}async function es(e){let[t,r]=await Promise.all([ei(e),(0,B.H)("email")]);return function(e,t="en"){let r=z[t],n=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,a=((e,t)=>{let{day:r,month:n}=(0,C.calendarDate)(e);return`${r} ${"id"===t?q[n]??n:n}`})(e.now,t),i=`${e.firing.length} ${r.firing}, ${e.opened} ${r.opened}, ${e.resolved.length} ${r.resolved}`,s=`Watchbell \xb7 ${a} \xb7 ${i}`,l=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),u=e.firing.map(e=>`${o.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,O.f)(e.ruleKey,e.message):e.message}`),d=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${r.after} ${r.took(e.took)})`),c=l.map(e=>`${e.name}: ${null===e.uptime?r.noChecks:`${(0,j.C)(e.uptime)} ${r.up}`}, ${r.errors(e.errors)}`),p=e.providers.map(e=>`${e.label}: ${e.text}`),f=[`Watchbell \xb7 ${a}`,`${i} ${r.last24}`,"",r.stillHead,...u.length?u.map(e=>`- ${e}`):[r.noFiring],"",r.resolvedHead,...d.length?d.map(e=>`- ${e}`):[r.noResolved],...c.length?["",r.appsHead,...c.map(e=>`- ${e}`)]:[],...p.length?["",r.providersHead,...p.map(e=>`- ${e}`)]:[],"",`${r.open}: ${n}`].join("\n"),m=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,o.H)(e)}</h3>`,h=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,o.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,o.H)(t)}</p>`,g=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,o.H)(a)}</h2>`,`<p style="margin:0;color:#596170">${(0,o.H)(`${i} ${r.last24}`)}</p>`,m(r.stillHead),h(u,r.noFiring),m(r.resolvedHead),h(d,r.noResolved),...c.length?[m(r.appsHead),h(c,"")]:[],...p.length?[m(r.providersHead),h(p,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,o.H)(n).replace(/"/g,"&quot;")}" style="color:#2f4372">${(0,o.H)(r.open)}</a></p>`,"</div>"].join("");return{subject:(0,D.G)(s),html:(0,D.G)(g),text:(0,D.G)(f)}}({...t,siteUrl:(0,f.serverEnv)().SITE_URL},r)}async function el(e,r={}){let n=await (0,a.db)().select().from(i.settings).where((0,t.inArray)(i.settings.key,[F,W])),o=n.find(e=>e.key===F)?.value,s="string"==typeof o?o:null;if(!M(e,s))return;let u=(0,H.notifyEnv)(),d=await X("email_digest");if(!u.resendKey||!u.digestFrom||!d?.row.enabled||!d.config?.to)return;let{resendKey:c,digestFrom:p}=u,f=d.config.to,m=(0,C.dayKey)(e),h=await U(e,{lastSentDay:s,state:n.find(e=>e.key===W)?.value??null,build:r.build??(()=>es(e)),send:r.send??(e=>V(c,{from:p,to:f,...e,idempotencyKey:`digest-${m}`}))});h.acted&&(h.result&&await eo("email_digest",h.result,e),h.state?await (0,a.db)().insert(i.settings).values({key:W,value:h.state}).onConflictDoUpdate({target:i.settings.key,set:{value:h.state,updatedAt:e}}):await (0,a.db)().delete(i.settings).where((0,t.eq)(i.settings.key,W)),h.sentDay&&await (0,a.db)().insert(i.settings).values({key:F,value:h.sentDay}).onConflictDoUpdate({target:i.settings.key,set:{value:h.sentDay,updatedAt:e}}),h.event&&await (0,l.f)([{type:"system",kind:"warn",message:h.event.message,detail:h.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,ea,"G",0,Z,"P",0,eo,"J",0,el,"Q",0,Y,"M",0,er],373200)},406197,934152,e=>{var t=e.i(336763),r=e.i(668304),n=e.i(406212),a=e.i(530298),i=e.i(803237),o=e.i(595262),s=e.i(93387),l=e.i(802641),u=e.i(659916);function d(e,t){return"member"===e?`Too many actions. Try again in ${(0,u.H)(t)}.`:"That was just done. Wait a minute before trying again."}function c(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,d,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,c],934152);var p=e.i(355620);let f="access.";async function m(e,r){if(!(0,l.f)(e))return null;let[o]=await (0,n.db)().select({r:a.resources,a:a.accounts}).from(a.resources).innerJoin(a.accounts,(0,t.eq)(a.accounts.id,a.resources.accountId)).where((0,t.and)((0,t.eq)(a.resources.id,e),(0,t.eq)(a.resources.kind,r),(0,t.isNull)(a.resources.goneAt))).limit(1);if(!o)return null;let u=(0,i.V)({ciphertext:o.a.credentialCiphertext,iv:o.a.credentialIv},(0,s.serverEnv)().OPS_ENCRYPTION_KEY);return u?{resource:o.r,account:{id:o.a.id,label:o.a.label,provider:o.a.provider,scopeNote:o.a.scopeNote},token:u}:null}async function h(e,t,r){let n=await (0,p.f)(u.t.providerAction,e);if(!n.allowed)return d("member",n.retryAfter);let a=await (0,p.f)(u.t.actionTarget,`${t}:${r}`);return a.allowed?null:d("target",a.retryAfter)}async function g(e,t,r){let i={write:t,at:new Date().toISOString(),...r?{scope:r}:{}};await (0,n.db)().insert(a.settings).values({key:`${f}${e}`,value:i}).onConflictDoUpdate({target:a.settings.key,set:{value:i,updatedAt:new Date}})}async function y(e){let r=new Map,i=e.filter(l.f);if(0===i.length)return r;for(let e of(await (0,n.db)().select().from(a.settings).where((0,t.inArray)(a.settings.key,i.map(e=>`${f}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&r.set(e.key.slice(f.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return r}async function b(e,t,n,a={}){if(!("audit"in e))return{ok:!1,error:e.message};let i="failed"in e?e.failed:null,s="failed"in e?"":e.message,l=i?i.error:"failed"in e?void 0:e.audit.detail;try{await (0,o.f)({kind:i?"err":"ok",message:`${a.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:c(l)}:{}})}catch{console.warn("audit event failed")}if(!i||"scope"===i.kind)try{await g(n,i?"denied":"ok")}catch{console.warn("access write failed")}return!1!==a.refresh&&(0,r.refresh)(),i?{ok:!1,error:i.error}:{ok:!0,message:s}}e.s(["W",0,b,"p",0,m,"y",0,g,"q",0,h,"f",0,y],406197)},147100,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(333407),i=e.i(122603);let o={vercel:{label:"Vercel",feedText:"vercel-status.com · Statuspage",page:"https://www.vercel-status.com"},supabase:{label:"Supabase",feedText:"status.supabase.com · summary.json",page:"https://status.supabase.com"},neon:{label:"Neon",feedText:"neonstatus.com · Status.io API",page:"https://neonstatus.com"},cloudflare:{label:"Cloudflare",feedText:"cloudflarestatus.com · Statuspage",page:"https://www.cloudflarestatus.com"},firebase:{label:"Firebase",feedText:"status.firebase.google.com · incidents.json",page:"https://status.firebase.google.com"},gcp:{label:"Google Cloud",feedText:"status.cloud.google.com · incidents.json",page:"https://status.cloud.google.com"}},s=["vercel","supabase","neon","cloudflare","firebase","gcp"],l=e=>e&&"object"==typeof e&&!Array.isArray(e)?e:null,u=e=>"string"==typeof e?e:null,d=e=>Array.isArray(e)?e.map(l).filter(e=>null!==e):[],c=(e,t=160)=>e.length>t?`${e.slice(0,t-1)}…`:e,p=["stspg.io","vercel-status.com","cloudflarestatus.com","supabase.com","neonstatus.com","status.io","status.firebase.google.com","status.cloud.google.com"];function f(e){if("string"!=typeof e)return null;try{let t=new URL(e);return"https:"===t.protocol&&!t.username&&!t.password&&p.some(e=>t.hostname===e||t.hostname.endsWith(`.${e}`))?t.toString():null}catch{return null}}let m={none:"ok",minor:"warn",major:"err",critical:"err",maintenance:"info"},h=["none","minor","major","critical"],g={none:"warn",minor:"warn",major:"err",critical:"err"},y={none:"Open incident",minor:"Minor incident",major:"Major incident",critical:"Critical incident"},b=/firestore|authentication|hosting/i,w=/management api|mgmt api|dashboard|billing|support|docs|marketplace|branching|^cli\b|analytics/i,v=e=>e.slice(0,3).join(", ");function k(e,t={}){let r=l(e.status),n=u(r?.indicator);if(!r||!n||!(n in m))return null;let a=d(e.incidents),i=a.slice(0,5).map(e=>{let r=d(e.components).map(e=>u(e.name)).filter(e=>!!e).map(e=>c(e,60));return{name:c(u(e.name)??"Incident"),impact:u(e.impact)??"unknown",startedAt:u(e.started_at)??u(e.created_at),url:f(e.shortlink),...r.length?{products:r}:{},...u(e.updated_at)?{updatedAt:u(e.updated_at)}:{},...t.controlPlane?{relevant:r.length?!r.every(e=>t.controlPlane.test(e)):!t.controlPlane.test(u(e.name)??"")}:{}}});if(t.controlPlane&&i.length&&i.every(e=>!1===e.relevant)){let e=i[0],t=e.products?.length?`${v(e.products)}: `:"",r=" (projects and databases aren't affected)";return{state:"info",indicator:"info",description:`${c(`${t}${e.name}`,160-r.length)}${r}`,incidents:i}}let o=(t.colos??[]).map(e=>e.replace(/\W/g,"")).filter(Boolean),s=o.length?RegExp(`\\b(${o.join("|")})\\b`):null,p=d(e.maintenances).filter(e=>["in_progress","verifying"].includes(u(e.status)??"")&&(!s||s.test(u(e.name)??""))),b=c(u(r.description)??""),w=()=>{let e=p[0];return{state:"info",indicator:"maintenance",description:c(`Scheduled maintenance \xb7 ${u(e.name)??""}`),incidents:p.slice(0,5).map(e=>({name:c(u(e.name)??"Maintenance"),impact:"maintenance",startedAt:u(e.scheduled_for),url:f(e.shortlink)}))}};if(a.length){let e=(t.controlPlane?a.filter((e,t)=>i[t]?.relevant!==!1):a).map(e=>u(e.impact)??"").filter(e=>h.includes(e)).sort((e,t)=>h.indexOf(t)-h.indexOf(e))[0]??"minor",r=g[e],o=t.controlPlane?i.find(e=>!1!==e.relevant&&e.products?.length):void 0,s=o?c(`${v(o.products)}: ${o.name}`):r===m[n]&&"none"!==n?b:y[e];return{state:r,indicator:e,description:s,incidents:i}}let _=Array.isArray(e.components)?d(e.components):null;if(o.length&&_){let e=RegExp(`\\((${o.join("|")})\\)\\s*$`),t=_.filter(t=>e.test(u(t.name)??"")&&(u(t.status)??"operational")!=="operational");if(t.length){let r=t.find(e=>"major_outage"===u(e.status))??t[0],n="major_outage"===u(r.status);return{state:n?"err":"warn",indicator:n?"major":"minor",description:c(`${e.exec(u(r.name)??"")?.[1]} data centre: ${(u(r.status)??"").replace(/_/g," ")}`),incidents:i}}return p.length?w():{state:"ok",indicator:"none",description:`No open incidents near ${o.join(", ")}`,incidents:i}}return"none"===n&&p.length?w():{state:m[n],indicator:n,description:b,incidents:i}}let _=[[500,"err"],[300,"warn"],[200,"info"],[100,"ok"]];async function A(e,t){let r,n=AbortSignal.timeout(5e3);try{r=await t(e,{headers:{Accept:"application/json","User-Agent":"OpsConsole-Status/1.0"},signal:n,cache:"no-store"})}catch{return{ok:!1}}if(!r.ok)return await r.body?.cancel().catch(()=>void 0),{ok:!1,status:r.status};try{let{bytes:e,truncated:t}=await (0,i.z)(r,1048576,(0,i.X)(n));if(t)return{ok:!1,format:!0};return{ok:!0,json:JSON.parse(new TextDecoder().decode(e))}}catch{return{ok:!1,format:!0}}}let I=e=>`https://${e}/api/v2`;async function S(e,t,r={}){let n=r.fetch??fetch,a=o[e].label,i=e=>({ok:!1,error:e.format?`The ${a} status feed answered in a format the console doesn't recognise.`:e.status?`The ${a} status feed answered ${e.status}.`:`The ${a} status feed didn't answer.`}),s=null;if("vercel"===e||"supabase"===e){let t=await A(`${I("vercel"===e?"www.vercel-status.com":"status.supabase.com")}/summary.json`,n);if(!t.ok)return i(t);let r=l(t.json);s=r&&k({status:r.status,incidents:r.incidents,maintenances:r.scheduled_maintenances},"supabase"===e?{controlPlane:w}:{})}else if("cloudflare"===e){let e=I("www.cloudflarestatus.com"),[t,a,o,u]=await Promise.all([A(`${e}/status.json`,n),A(`${e}/incidents/unresolved.json`,n),A(`${e}/scheduled-maintenances/active.json`,n),A(`${e}/components.json`,n)]);if(!t.ok)return i(t);s=k({status:l(t.json)?.status,incidents:a.ok?l(a.json)?.incidents:[],maintenances:o.ok?l(o.json)?.scheduled_maintenances:[],components:u.ok?l(u.json)?.components:void 0},{colos:r.colos??["SIN","CGK"]})}else if("neon"===e){let e=await A("https://api.status.io/1.0/status/6878fc85709daa75be6c7e3c",n);if(!e.ok)return i(e);s=function(e){let t=l(l(l(e)?.result)?.status_overall),r="number"==typeof t?.status_code?t.status_code:null;if(!t||null===r)return null;let n=_.find(([e])=>r>=e)?.[1]??"ok",a=d(l(l(e)?.result)?.incidents).slice(0,5).map(e=>({name:c(u(e.name)??"Incident"),impact:"incident",startedAt:u(e.datetime_open),url:"https://neonstatus.com"}));return{state:n,indicator:String(r),description:c(u(t.status)??""),incidents:a}}(e.json)}else{let r="firebase"===e?"status.firebase.google.com":"status.cloud.google.com",a=await A(`https://${r}/incidents.json`,n);if(!a.ok)return i(a);s=function(e,t,r={}){if(!Array.isArray(e))return null;let n=r.host??"status.cloud.google.com",a=d(e).filter(e=>{let r=u(e.end);return null!==u(e.begin)&&(!r||new Date(r).getTime()>t.getTime())}),i=a.filter(e=>!r.relevant||d(e.affected_products).some(e=>r.relevant.test(u(e.title)??"")));if(!i.length){let e=a.length;return{state:"ok",indicator:"none",description:e&&r.relevant?`No incidents affecting Firebase (${e} elsewhere)`:"No open incidents",incidents:[]}}let o=e=>d(e.affected_products).map(e=>u(e.title)).filter(e=>!!e).map(e=>c(e,60)),s=e=>!r.used||o(e).some(e=>r.used.test(e)),l=i.slice(0,5).map(e=>{let t=o(e);return{name:c(u(e.external_desc)??"Incident"),impact:u(e.status_impact)??"unknown",startedAt:u(e.begin),url:u(e.uri)?f(`https://${n}/${u(e.uri)}`):null,...t.length?{products:t}:{},...u(e.modified)?{updatedAt:u(e.modified)}:{},...r.used?{relevant:s(e)}:{}}}),p=i.filter(s),m=e=>{let t=o(e),n=u(e.external_desc)??"Incident";return r.used&&t.length?`${v(t)}: ${n}`:n};if(!p.length){let e=" (not Firestore, Authentication or Hosting)";return{state:"info",indicator:"info",description:`${c(m(i[0]),160-e.length)}${e}`,incidents:l}}let h=p.some(e=>"SERVICE_OUTAGE"===e.status_impact),g=p.every(e=>"SERVICE_INFORMATION"===e.status_impact);return{state:h?"err":g?"info":"warn",indicator:h?"major":g?"info":"minor",description:c(m(p[0])),incidents:l}}(a.json,t,"gcp"===e?{relevant:/firestore|firebase|identity|monitoring/i,host:r}:{host:r,used:b})}return s?{ok:!0,reading:{provider:e,...s}}:i({format:!0})}var $=e.i(728335);async function T(e){let[i]=await (0,r.db)().select().from(n.settings).where((0,t.eq)(n.settings.key,"status.cloudflareColos")).limit(1),l=Array.isArray(i?.value)?i.value.filter(e=>"string"==typeof e):void 0,u=new Map((await (0,r.db)().select().from(n.providerStatus)).map(e=>[e.provider,e])),d=await Promise.all(s.map(t=>S(t,e,{colos:l}))),c=[];for(let[t,a]of s.entries()){let i=d[t],s=u.get(a);if(i.ok){let{state:t,indicator:l,description:u,incidents:d}=i.reading;await (0,r.db)().insert(n.providerStatus).values({provider:a,state:t,indicator:l,description:u,incidents:d,checkedAt:e,lastOkAt:e,error:null}).onConflictDoUpdate({target:n.providerStatus.provider,set:{state:t,indicator:l,description:u,incidents:d,checkedAt:e,lastOkAt:e,error:null}});let p=s?.state??"unknown",f=e=>"warn"===e||"err"===e;f(t)&&!f(p)&&c.push({type:"system",kind:t,message:`${o[a].label} reports an incident`,detail:u,resourceId:null,reason:"ProviderIncident"}),!f(t)&&f(p)&&c.push({type:"system",kind:"ok",message:`${o[a].label} incident resolved`,detail:u,resourceId:null,reason:"ProviderRecovered"})}else{let t=!s?.lastOkAt||e.getTime()-s.lastOkAt.getTime()>18e5;await (0,r.db)().insert(n.providerStatus).values({provider:a,state:"unknown",checkedAt:e,error:i.error}).onConflictDoUpdate({target:n.providerStatus.provider,set:{checkedAt:e,error:i.error,...t?{state:"unknown"}:{}}})}}await (0,a.f)(c)}async function R(){return(0,r.db)().select().from(n.providerStatus)}async function x(e){var t,r;let n;return t=await R(),r=e,n=new Map(t.map(e=>[e.provider,e])),s.map(e=>{let t=n.get(e),a={provider:e,...o[e]};if(!t)return{...a,state:"unknown",text:"Not read yet",incidents:[],checked:"—"};let i=null!==t.error,s="unknown"===t.state?`Feed didn't answer \xb7 last read ${t.lastOkAt?(0,$.ago)(t.lastOkAt,r):"never"}`:t.description||("ok"===t.state?"No open incidents":"Incident");return{...a,state:t.state,text:s,incidents:t.incidents,checked:(0,$.ago)(i&&t.lastOkAt?t.lastOkAt:t.checkedAt,r)}})}e.s(["h",0,x,"B",0,R,"i",0,T],147100)},638809,e=>{var t=e.i(336763),r=e.i(533102),n=e.i(910931),a=e.i(406212),i=e.i(200123),o=e.i(530298);let s=["vercel","supabase","neon","firebase","turso","upstash","cloudflare","github","github_write"];var l=e.i(873083),u=e.i(476866);let d=["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],c=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}},p=(0,n.cache)(async()=>{let e=r.sql.join(d.map(e=>r.sql`${e}`),r.sql`, `),t=await (0,a.db)().execute(r.sql`select
36
41
  (select coalesce(jsonb_agg(distinct ${o.accounts.provider}::text), '[]'::jsonb) from ${o.accounts}) as providers,
37
42
  exists(select 1 from ${o.resources} where ${o.resources.kind}::text in (${e}) and ${o.resources.goneAt} is null) as databases,
38
- ${(0,u.W)()} as off`),[n]=(0,i.f)(t),p=c(n?.providers);return{providers:(Array.isArray(p)?p:[]).filter(e=>s.includes(e)),databases:n?.databases===!0||n?.databases==="t",off:(0,l.N)(c(n?.off))}});async function f(){try{return(0,l.I)((await p()).off)}catch{return new Set}}e.s(["s",0,function(e){let n=function(e){if(!e.size)return;let{ruleKeys:n,providers:a}=(0,l.s)(e),i=[];if(n.length&&i.push(r.sql`${o.alerts.ruleKey} in (${r.sql.join(n.map(e=>r.sql`${e}`),r.sql`, `)})`),a.length){let e=r.sql.join(a.map(e=>r.sql`${e}`),r.sql`, `);i.push(r.sql`(${o.alerts.ruleKey} = 'CredentialExpiring' and ${o.alerts.accountId} in (select ${o.accounts.id} from ${o.accounts} where ${o.accounts.provider}::text in (${e})))`)}return i.length?(0,t.or)(...i):void 0}(e);return n?(0,t.not)(n):void 0},"I",0,f],638809)},584820,e=>{var t=e.i(336763),r=e.i(533102),n=e.i(406212),a=e.i(530298),i=e.i(122603),o=e.i(541211),s=e.i(333407),l=e.i(902509),u=e.i(631065),d=e.i(802641),c=e.i(978196),p=e.i(412948),f=e.i(70377);function m(e){return{version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[],reason:e.reason,checkedAt:e.checkedAt}}async function h(e={}){let i=e.only;if(i&&!i.length)return[];let o=e.first??[],s=e.skip??[],l=await (0,n.db)().select({id:a.resources.id,name:a.resources.name,meta:a.resources.meta,sec:a.appSecurity}).from(a.resources).leftJoin(a.appSecurity,(0,t.eq)(a.appSecurity.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"app"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt),i?(0,t.inArray)(a.resources.id,i):void 0,s.length?(0,t.notInArray)(a.resources.id,[...s]):void 0)).orderBy(...o.length?[r.sql`case when ${(0,t.inArray)(a.resources.id,o)} then 0 else 1 end`]:[],r.sql`${a.appSecurity.checkedAt} asc nulls first`,a.resources.name).limit(f.O.apps);if(!l.length)return[];o.length&&l.sort((e,t)=>Number(!o.includes(e.id))-Number(!o.includes(t.id)));let u=await (0,n.db)().select({resourceId:a.monitors.resourceId,url:a.monitors.url}).from(a.monitors).where((0,t.inArray)(a.monitors.resourceId,l.map(e=>e.id))).orderBy(a.monitors.createdAt).limit(f.O.monitors);return l.map(e=>({id:e.id,name:e.name,prev:e.sec?m(e.sec):null,host:(0,c.Y)(e.meta)?.primaryDomain??(0,p.m)(e.name,u.filter(t=>t.resourceId===e.id).map(e=>e.url))}))}async function g(e,i){await (0,n.db)().transaction(async n=>{await n.execute(r.sql`select pg_advisory_xact_lock(hashtext(${`app_security:${e.id}`}))`);let[o]=await n.select().from(a.appSecurity).where((0,t.eq)(a.appSecurity.resourceId,e.id)).limit(1),l=o?m(o):null;if(l&&l.checkedAt.getTime()>=i.checkedAt.getTime())return;let d="unknown"===i.status||"error"===i.status?{...i,version:l?l.version:i.version,findings:l?l.findings:i.findings}:i,c={framework:"next",version:d.version,status:d.status,findings:d.findings,reason:d.reason,checkedAt:d.checkedAt};await n.insert(a.appSecurity).values({resourceId:e.id,...c}).onConflictDoUpdate({target:a.appSecurity.resourceId,set:c,setWhere:r.sql`${a.appSecurity.checkedAt} < excluded.checked_at`});let p=(0,u.t)(e.name,l,d);p&&await (0,s.f)([{type:"system",kind:p.kind,message:p.message,detail:p.detail,resourceId:e.id,at:d.checkedAt,reason:"ok"===p.kind?"NextClean":"NextVulnerable"}],n)})}async function y(e,t={}){let r=await h(t),n=0,a=0,s=[],u=[],d=[];return await (0,i.P)(r,3,async t=>{if(e-Date.now()<3e3)return void a++;d.push(t.id);try{let r=await (0,l.P)(t.host,t.prev,{deadline:e});if(!r)return void a++;await g(t,r),n++,u.push(t.id)}catch(e){s.push(`${t.name}: ${(0,o.safeError)(e)}`),u.push(t.id)}}),{checked:n,skipped:a,failed:s,done:u,listed:r.map(e=>e.id),started:d}}async function b(e){let r=e.filter(d.f);return r.length?(await (0,n.db)().select().from(a.appSecurity).where((0,t.inArray)(a.appSecurity.resourceId,r)).limit(r.length)).map(e=>{let t=m(e);return{appId:e.resourceId,version:t.version,status:t.status,findings:t.findings}}):[]}e.s(["F",0,b,"h",0,y,"Z",0,m])},366171,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(295017),a=e.i(530298),i=e.i(803237),o=e.i(887103),s=e.i(93387);let l="Supabase Metrics API",u=null,d={fetchMetrics:async function e(t,r,n={}){let a;if(!("string"==typeof t&&/^[a-z0-9]{8,40}$/.test(t)))return{ok:!1,kind:"format",error:"That isn't a Supabase project ref."};let i=n.timeoutMs??8e3;try{a=await (n.fetch??fetch)(`https://${t}.supabase.co/customer/v1/privileged/metrics`,{headers:{Authorization:`Basic ${Buffer.from(`service_role:${r}`).toString("base64")}`,Accept:"text/plain"},signal:AbortSignal.timeout(i),cache:"no-store",redirect:"manual"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`${l} didn't answer within ${Math.round(i/1e3)} seconds.`:`Couldn't reach the ${l}.`}}if(401===a.status||403===a.status)return{ok:!1,kind:"auth",status:a.status,error:`Supabase rejected the metrics key (${a.status}). Replace it with a current Secret API key.`};if(404===a.status)return{ok:!1,kind:"missing",status:404,error:"Supabase has no metrics endpoint for this project (404)."};if(429===a.status)return{ok:!1,kind:"transient",status:429,retryAfterS:60,error:`${l} says there were too many requests.`};if(!a.ok)return{ok:!1,kind:"transient",status:a.status,error:`${l} returned an error (${a.status}).`};let o=await a.text().catch(()=>null);return null===o||o.length>4e6||!/^(#|[A-Za-z_:])/m.test(o)?{ok:!1,kind:"format",error:`${l} answered in a format the console doesn't recognise.`}:{ok:!0,data:o}},key:()=>(0,s.serverEnv)().OPS_ENCRYPTION_KEY},c=e=>e instanceof Error?e.name:"unknown";async function p(e,i,s=d){if(!(0,o.T)(e,u))return null;u=e.getTime();let l=0,f=0;try{for(let{k:o,ref:u,state:d}of(await (0,r.db)().select({k:n.A,ref:a.resources.externalId,state:a.snapshots.state}).from(n.A).innerJoin(a.resources,(0,t.eq)(a.resources.id,n.A.resourceId)).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"supabase_project"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(20))){let t=i-Date.now()-500;if(t<1e3)break;try{await m(o,u,d,e,Math.min(8e3,t),s)?l++:f++}catch(e){f++,console.warn("supabase-metrics: one project failed:",c(e))}}await (0,r.db)().delete(n.l).where((0,t.lt)(n.l.hour,new Date(e.getTime()-24*o.x*36e5)))}catch(e){console.warn("supabase-metrics failed:",c(e))}return{scraped:l,failed:f}}async function f(e,a,i){return await (0,r.db)().update(n.A).set({lastTryAt:a,lastError:i.slice(0,300)}).where((0,t.eq)(n.A.resourceId,e)),!1}async function m(e,a,s,l,u,d){if("paused"===s)return f(e.resourceId,l,"The project is paused.");let c=(0,i.V)({ciphertext:e.keyCiphertext,iv:e.keyIv},d.key());if(!c)return f(e.resourceId,l,"The stored key can't be read. Add it again.");let p=await d.fetchMetrics(a,c,{timeoutMs:u});if(!p.ok)return f(e.resourceId,l,p.error);let m=(0,o.E)(e.latest??null,(0,o.c)((0,o.a)(p.data),a),l);await (0,r.db)().update(n.A).set({latest:m,lastTryAt:l,lastOkAt:l,lastError:null}).where((0,t.eq)(n.A.resourceId,e.resourceId));let h=(0,o.b)(l),[g]=await (0,r.db)().select().from(n.l).where((0,t.and)((0,t.eq)(n.l.resourceId,e.resourceId),(0,t.eq)(n.l.hour,h))).limit(1),y=(0,o.n)(g??null,m);return await (0,r.db)().insert(n.l).values({resourceId:e.resourceId,hour:h,...y}).onConflictDoUpdate({target:[n.l.resourceId,n.l.hour],set:y}),!0}async function h(){let e=await (0,r.db)().select({id:a.resources.id,name:a.resources.name,latest:n.A.latest}).from(n.A).innerJoin(a.resources,(0,t.eq)(a.resources.id,n.A.resourceId)).where((0,t.and)((0,t.eq)(a.resources.kind,"supabase_project"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(20);return e.length?e.map(e=>({id:e.id,name:e.name,latest:e.latest??null})):null}e.s(["Y",0,h,"E",0,p],366171)},707866,e=>{let t={databases:100,storageBytes:0x140000000,rowsRead:5e8,rowsWritten:1e7},r={storageBytes:262144e3,monthlyCommands:5e5,monthlyBandwidthBytes:0x280000000},n={databases:10,dbBytes:524288e3,accountBytes:0x140000000,rowsReadPerDay:5e6,rowsWrittenPerDay:1e5},a=(e,t)=>Math.round(e/t*1e3)/10,i=(e,t)=>!!e&&e.slice(0,7)===t.toISOString().slice(0,7);e.s(["M",0,n,"g",0,t,"W",0,r,"I",0,function(e,t){let r=e.usageDay===t.toISOString().slice(0,10);return[...r&&null!=e.accountRowsRead?[{label:"Rows read today",pct:a(e.accountRowsRead,n.rowsReadPerDay),text:"of 5M (account)",kind:"quota"}]:[],...r&&null!=e.accountRowsWritten?[{label:"Rows written today",pct:a(e.accountRowsWritten,n.rowsWrittenPerDay),text:"of 100k (account)",kind:"quota"}]:[],...null!=e.sizeBytes?[{label:"Size",pct:a(e.sizeBytes,n.dbBytes),text:"of 500 MB",kind:"storage"}]:[]]},"c",0,function(e){return(e.accountRowsRead??0)>=n.rowsReadPerDay?{state:"err",label:"Daily rows-read limit reached"}:(e.accountRowsWritten??0)>=n.rowsWrittenPerDay?{state:"err",label:"Daily rows-written limit reached"}:{state:"ok",label:"Available"}},"u",0,function(e){return e.filter(e=>"quota"===e.kind&&null!==e.pct).sort((e,t)=>(t.pct??0)-(e.pct??0))[0]??null},"G",0,function(e,r){return i(e.usageAt,r)?[...null!=e.orgRowsRead?[{label:"Rows read",pct:a(e.orgRowsRead,t.rowsRead),text:"of 500M this month (org)",kind:"quota"}]:[],...null!=e.orgRowsWritten?[{label:"Rows written",pct:a(e.orgRowsWritten,t.rowsWritten),text:"of 10M this month (org)",kind:"quota"}]:[],...null!=e.orgStorageBytes?[{label:"Storage",pct:a(e.orgStorageBytes,t.storageBytes),text:"of 5 GB (org)",kind:"storage"}]:[]]:[]},"h",0,function(e){return e.blockReads||e.orgBlockedReads?{state:"err",label:"Reads blocked"}:e.blockWrites||e.orgBlockedWrites?{state:"err",label:"Writes blocked"}:{state:"ok",label:"Available"}},"$",0,function(e,t){let n=i(e.statsAt,t);return[...n&&null!=e.monthlyRequests?[{label:"Commands",pct:a(e.monthlyRequests,r.monthlyCommands),text:"of 500k this month",kind:"quota"}]:[],...n&&null!=e.monthlyBandwidthBytes?[{label:"Bandwidth",pct:a(e.monthlyBandwidthBytes,r.monthlyBandwidthBytes),text:"of 10 GB this month",kind:"quota"}]:[],...null!=e.storageBytes?[{label:"Data size",pct:a(e.storageBytes,r.storageBytes),text:"of 250 MB",kind:"storage"}]:[]]},"t",0,function(e){let t=(e??"").toLowerCase();return"active"===t?{state:"ok",label:"Active"}:t.includes("suspend")||t.includes("block")||t.includes("disabled")?{state:"err",label:"Suspended"}:t.includes("delet")?{state:"off",label:"Deleting"}:{state:"unknown",label:e?`State: ${e}`:"Unknown"}}])},35048,e=>{e.s(["T",0,{reads:5e4,writes:2e4,deletes:2e4},"g",0,function(e){var t;if(e.ok)return e.data.noDatabase?{state:"off",label:"No Firestore database"}:{state:"ok",label:`Reachable \xb7 ${e.data.latencyMs} ms`};return"RESOURCE_EXHAUSTED"===(t=e).reason?{state:"err",label:"Daily quota used up"}:"SERVICE_DISABLED"===t.reason?{state:"err",label:"Firestore API is off in this project"}:"scope"===t.kind||"PERMISSION_DENIED"===t.reason||"scope"===t.reason?{state:"err",label:"No access: needs datastore.viewer"}:{state:"unknown",label:"Unknown"}},"a",0,function(e){let t=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",hour:"numeric",minute:"numeric",second:"numeric",hourCycle:"h23"}).formatToParts(e),r=e=>Number(t.find(t=>t.type===e)?.value??0),n=(3600*r("hour")+60*r("minute")+r("second"))*1e3+e.getUTCMilliseconds();return new Date(e.getTime()-n)}])},203868,e=>{var t=e.i(788264);e.s(["f",0,function(e){let r={id:e.id,name:e.name,kind:e.kind,account:e.account};if("supabase_project"===e.kind)return{...r,region:(0,t.k)(t.B,e.data).region??null,ident:`ref ${e.externalId}`};if("neon_project"===e.kind){let n=(0,t.k)(t.s,e.data),a=n.branches?.find(e=>e.isDefault)?.id,i=n.endpoints?.find(e=>e.branchId===a)??n.endpoints?.[0];return{...r,region:n.region??null,ident:i?`${i.id} \xb7 project ${e.externalId}`:`project ${e.externalId}`}}if("turso_database"===e.kind){let n=(0,t.k)(t.N,e.data);return{...r,region:n.primaryRegion??null,ident:n.org?`org ${n.org}`:null}}return"upstash_redis"===e.kind?{...r,region:(0,t.k)(t.e,e.data).region??null,ident:`id ${e.externalId}`}:"d1_database"===e.kind?{...r,region:null,ident:`id ${e.externalId}`}:{...r,region:null,ident:`project ${e.externalId}`}}])},483324,e=>{let t=/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/,r=/^watchpost\/deps-[0-9a-f]{8}$/,n=/^(?:[A-Za-z0-9._-]+\/){0,4}package-lock\.json$/,a=e=>"string"==typeof e&&t.test(e)&&!e.includes("..");e.s(["h",0,"deps.lockfileActions","w",0,6e5,"C",0,function(e){let t=e.lockfilePath??"package-lock.json";return!a(e.repo)||!r.test(e.branch)||!n.test(t)||t.includes("..")||!Number.isInteger(e.prNumber)||e.prNumber<1?null:{repo:e.repo,branch:e.branch,lockfile:t,pr:e.prNumber}},"g",0,function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e.repo:null;return{repo:a(t)?t:null}}])},79068,e=>{var t=e.i(663948),r=e.i(461315);let n=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function a(e,r){let a=n.exec(e.trim()),i=n.exec(r.trim());return!!a&&!!i&&a[1]===i[1]&&("0"!==a[1]||a[2]===i[2])&&(0,t.f)(r,e)>=0}let i=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,o=e=>i.exec(e)?.[1]??null;e.s(["M",0,e=>`Lockfile tertinggal — jalankan npm install (${e.slice(0,5).join(", ")}${e.length>5?`, +${e.length-5}`:""}).`,"a",0,function(e,t,r){if(!e.length)return{ok:!1,why:"nothing"};let n=e.filter(e=>r.includes(e.severity)&&!("moderate"===e.severity&&e.dev));if(!n.length)return{ok:!1,why:"severity"};for(let e of n){let r=t.get(e.package);if(!r||!a(r,e.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:n}},"m",0,function(e,n){if(!n)return{deps:e,stale:[]};let a=[...Object.entries(n.dependencies).map(([e,t])=>[e,t,!1]),...Object.entries(n.optionalDependencies).map(([e,t])=>[e,t,!1]),...Object.entries(n.devDependencies).map(([e,t])=>[e,t,!0])],i=[...e],o=[];for(let[e,n,s]of a){let a=(0,r.Y)(n);if(!a||!(0,r.C)(a))continue;let l=i.filter(t=>t.name===e);!l.length||l.some(e=>(0,t.f)(e.version,a)>=0)||((i=i.filter(t=>t.name!==e)).push({name:e,version:a,dev:l.every(e=>e.dev)&&s}),o.push(e))}return{deps:i,stale:o}},"D",0,function(e){let r=new Map;for(let n of e){if(!n.direct)continue;let e=r.get(n.package);(!e||0>(0,t.f)(n.installedVersion,e))&&r.set(n.package,n.installedVersion)}return r},"U",0,function(e,t,r=null){for(let n of t){if(o(n.title)!==r)continue;let t=function(e){if(e.packages?.length)return e.packages;let t=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(e.title);return t?[t[1]]:"all"}(n);if("all"===t||e.some(e=>t.includes(e)))return n}return null},"J",0,a])},736337,e=>{var t=e.i(958948);function r(e,r){return"string"==typeof e&&e!==r&&(0,t.c)(e)?e:null}let n=/^[0-9a-f]{7,40}$/i;function a(e){if(!e||"object"!=typeof e||Array.isArray(e))return null;let r="string"==typeof e.ref&&(0,t.c)(e.ref)?e.ref:null;if("string"==typeof e.ref&&!r)return null;let a="string"==typeof e.sha&&n.test(e.sha)?e.sha:null,i="string"==typeof e.at&&Number.isFinite(Date.parse(e.at))?e.at:null,o="string"==typeof e.id&&/^[A-Za-z0-9_-]{1,80}$/.test(e.id)?e.id:null,s={...a?{sha:a}:{},...i?{at:i}:{},...o?{id:o}:{}};return"git"===e.kind&&r?{kind:"git",ref:r,...s}:"cli"===e.kind?{kind:"cli",...r?{ref:r}:{},...s}:null}function i(e){let t=a(e?.productionSource);return t?.kind==="git"?t.ref:e?.productionBranch}e.s(["u",0,6e5,"a",0,function(e,r){let n=a(e?.productionSource),i=[];for(let a of[n?.kind==="git"?n.ref:null,e?.productionBranch,r])if(!("string"!=typeof a||!(0,t.c)(a)||i.includes(a))&&(i.push(a),a===r))break;return i},"q",0,function(e,n){let i=a(e?.productionSource);return i?.kind==="git"?i.ref:r(e?.productionBranch,n)??n??("string"==typeof e?.productionBranch&&(0,t.c)(e.productionBranch)?e.productionBranch:null)},"K",0,function(e){let t=a(e?.productionSource);return t?{productionSource:t}:{}},"i",0,r,"B",0,function(e,t,r){let n=a(e);if(!n)return null;let i=t??"a stale branch";return!n.at||r.getTime()-Date.parse(n.at)>18e5?`Watchbell can't confirm what production is built from (no reading in the last 30 minutes). Merging this PR could deploy ${i} to production and replace what is live.`:"cli"===n.kind?`Production was deployed from the CLI${t?`, not built from ${t}`:""}. Merging this PR would deploy ${i} to production and replace what is live.`:t&&n.ref!==t?`Production was built from ${n.ref}, not ${t}. Merging this PR would deploy ${t} to production and replace what is live.`:null},"s",0,function(e){let r=e.branch&&(0,t.c)(e.branch)?e.branch:null,a=e.sha&&n.test(e.sha)?e.sha:null;return"cli"===e.source||!0===e.gitDirty||"cli"===e.branchFrom&&"git"!==e.source?{kind:"cli",...r?{ref:r}:{},...r&&a?{sha:a}:{}}:r?{kind:"git",ref:r,...a?{sha:a}:{}}:null},"O",0,a,"v",0,(e,t)=>(e?.kind??null)===(t?.kind??null)&&(e?.ref??null)===(t?.ref??null)&&(e?.sha??null)===(t?.sha??null)&&(e?.id??null)===(t?.id??null),"V",0,i,"w",0,function(e){let r=i(e),n=e?.productionBranch;return"string"==typeof n&&n!==r&&(0,t.c)(n)?n:null},"y",0,function(e,r,n=null){if(!e||"br"===n)return null;let a=/^br:([^:]+):/.exec(e);return a?(0,t.c)(a[1])?a[1]:null:r}])},821342,e=>{var t=e.i(663948),r=e.i(461315),n=e.i(547963);let a=["dependencies","devDependencies","optionalDependencies"],i="watchpost/deps-",o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=e=>{let t=e.filter(e=>!e.companionOf);return t.length?t:e},l={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};e.s(["M",0,function(e,t){let r;try{r=JSON.parse(e)}catch{return null}if(!o(r))return null;for(let e of t){let t=r[e.group];if(!o(t)||t[e.package]!==e.from)return null;t[e.package]=e.to}let n=/^[{[]\r?\n([ \t]+)\S/.exec(e),a=n?n[1]:" ",i=e.includes("\r\n")?"\r\n":"\n",s=JSON.stringify(r,null,a);return"\r\n"===i&&(s=s.replace(/\n/g,"\r\n")),/\r?\n$/.test(e)?s+i:s},"U",0,function(e,t=null){let r=e.map(e=>`${e.package}@${e.to}`).sort().join(",");return`${i}${function(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193)>>>0;return t.toString(16).padStart(8,"0")}(t?`${t}|${r}`:r)}`},"G",0,function(e){let t=s(e);return 1===t.length?`chore(deps): update ${t[0].package} to ${t[0].fixed} (security fix)`:`chore(deps): update ${t.length} packages for security fixes`},"c",0,(e,t)=>e.startsWith(i)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(e)&&e!==t,"k",0,function(e,n){let i;try{i=JSON.parse(e)}catch{return null}if(!o(i))return null;let s=[];for(let e of n)if((0,r.L)(e.package)&&(0,r.C)(e.to))for(let n of a){let a=i[n];if(!o(a)||"string"!=typeof a[e.package])continue;let l=a[e.package],u=(0,r.Y)(l),d=function(e,t){let n=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(e);return n&&(0,r.C)(t)?`${n[1]??""}${t}`:null}(l,e.to);!u||!d||(0,t.f)(u,e.to)>=0||s.push({package:e.package,group:n,from:l,to:d,fixed:e.to,vulnIds:e.vulnIds,cves:e.cves,...e.companionOf?{companionOf:e.companionOf}:{}})}return s},"y",0,function(e,t,r=!1,a=null){let i=l[t??"npm"]??"npm install",o=`run \`${i}\`${a?` in \`${a}\``:""}`,s=e.filter(e=>!e.companionOf),u=e.filter(e=>e.companionOf),d=s.map(e=>{let t=[...e.cves,...e.vulnIds.filter(t=>!e.cves.includes(t))].slice(0,4).map(e=>`[${e}](https://osv.dev/vulnerability/${encodeURIComponent(e)})`).join(", ");return`| \`${e.package}\` | \`${e.from}\` | \`${e.to}\` | ${t||"-"} |`});return[r?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":n.J.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...d,"",...u.map(e=>`Updated to match ${e.companionOf} (no advisory of its own): \`${e.package}\` \`${e.from}\` → \`${e.to}\`.`),...u.length?[""]:[],"### Important: the lockfile is not updated","",r?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards ${o} on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, ${o}, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(e,t=null){let r=s(e),n=t?` in ${t}`:"",a=1===r.length?`Watchbell: update ${r[0].package} to ${r[0].fixed}${n} (security fix)`:`Watchbell: update ${r.length} vulnerable packages${n} (${r.slice(0,2).map(e=>e.package).join(", ")}${r.length>2?", …":""})`;return a.length>200?`${a.slice(0,199)}…`:a}])},461315,e=>{let t=/^(?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9._~-][a-z0-9._~-]*$/i,r=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,n=e=>e.length<=214&&t.test(e),a=e=>e.length<=100&&r.test(e),i=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function o(e){let t=new Map;for(let r of e){if(!n(r.name)||!a(r.version))continue;let e=`${r.name}@${r.version}`,i=t.get(e);if(i?i.dev=i.dev&&r.dev:t.set(e,{...r}),t.size>=1e4)break}return[...t.values()].sort((e,t)=>e.name===t.name?e.version<t.version?-1:1:e.name<t.name?-1:1)}function s(e){try{return JSON.parse(e)}catch{return null}}let l=e=>{let t=e.lastIndexOf("node_modules/");return t<0?null:e.slice(t+13)||null},u=e=>e.trim().replace(/^['"]|['"]$/g,""),d=e=>i(e)?Object.fromEntries(Object.entries(e).filter(e=>"string"==typeof e[1])):{};function c(e){let t=/^\s*(?:\^|~|>=|=|v)?\s*v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?(-[0-9A-Za-z.-]+)?\s*$/.exec(e);if(!t)return null;let r=e=>e&&/^\d+$/.test(e)?e:"0";return`${t[1]}.${r(t[2])}.${r(t[3])}${t[4]??""}`}e.s(["a",0,[{path:"package-lock.json",kind:"npm"},{path:"npm-shrinkwrap.json",kind:"npm"},{path:"pnpm-lock.yaml",kind:"pnpm"},{path:"yarn.lock",kind:"yarn"},{path:"bun.lock",kind:"bun"}],"e",0,function(e){let t=[],r=(e,r)=>{for(let[n,a]of Object.entries(e)){let e=c(a);e&&t.push({name:n,version:e,dev:r})}};return r(e.dependencies,!1),r(e.optionalDependencies,!1),r(e.devDependencies,!0),o(t)},"K",0,function(e){return e?new Set([...Object.keys(e.dependencies),...Object.keys(e.devDependencies),...Object.keys(e.optionalDependencies)]):new Set},"L",0,n,"C",0,a,"Y",0,c,"D",0,function(e,t){switch(e){case"npm":let r=s(t);if(!i(r))return null;let a=[];if(i(r.packages)){for(let[e,t]of Object.entries(r.packages)){if(!e||!i(t)||!0===t.link||"string"!=typeof t.version)continue;let r="string"==typeof t.name&&e.includes("node_modules/")?t.name:l(e);r&&a.push({name:r,version:t.version,dev:!0===t.dev})}return o(a)}if(i(r.dependencies)){let e=(t,r)=>{if(!(r>40))for(let[n,o]of Object.entries(t))i(o)&&("string"==typeof o.version&&a.push({name:n,version:o.version,dev:!0===o.dev}),i(o.dependencies)&&e(o.dependencies,r+1))};return e(r.dependencies,0),o(a)}return null;case"pnpm":return function(e){let t=e.split(/\r?\n/);if(!t.some(e=>/^lockfileVersion:/.test(e)))return null;let r=[],a=!1,i=null;for(let e of t){if(/^\S/.test(e)){a=/^packages:\s*$/.test(e),i=null;continue}if(!a)continue;let t=/^ {2}(\S.*?):\s*$/.exec(e);if(t){let e=function(e){let t=u(e).replace(/^\//,""),r=t.indexOf("(");r>0&&(t=t.slice(0,r));let a=t.lastIndexOf("@");if(a>0&&!t.slice(a+1).includes("/")&&n(t.slice(0,a)))return{name:t.slice(0,a),version:t.slice(a+1).split("_")[0]};let i=t.lastIndexOf("/");return i<=0?null:{name:t.slice(0,i),version:t.slice(i+1).split("_")[0]}}(t[1]);(i=e?{...e,dev:!1}:null)&&r.push(i);continue}i&&/^ {4}dev: true\s*$/.test(e)&&(i.dev=!0)}return o(r)}(t);case"yarn":return function(e){let t=e.split(/\r?\n/),r=[],n=null,a=!1;for(let e of t){if(!e.trim()||e.trimStart().startsWith("#"))continue;if(/^\S/.test(e)){let t=e.replace(/:\s*$/,"");n=t.startsWith("__metadata")||/@(?:workspace|link|portal|file):/.test(t)?null:function(e){let t=u(e),r=t.indexOf("@",+!!t.startsWith("@"));return r>0?t.slice(0,r):null}(t.split(/,\s*/)[0]),a=!0;continue}let t=/^ {2}version:?\s+"?([^"\s]+)"?\s*$/.exec(e);t&&n&&(r.push({name:n,version:t[1],dev:!1}),n=null)}return a?o(r):null}(t);case"bun":let d=s(t.replace(/,(\s*[}\]])/g,"$1"));if(!i(d)||!i(d.packages))return null;let c=[];for(let e of Object.values(d.packages)){if(!Array.isArray(e)||"string"!=typeof e[0])continue;let t=e[0],r=t.lastIndexOf("@");r<=0||c.push({name:t.slice(0,r),version:t.slice(r+1),dev:!1})}return o(c)}},"b",0,function(e){let t=s(e);return i(t)?{dependencies:d(t.dependencies),devDependencies:d(t.devDependencies),optionalDependencies:d(t.optionalDependencies)}:null}])},618664,52535,e=>{var t=e.i(122603),r=e.i(631065),n=e.i(663948);let a=["CRITICAL","HIGH","MODERATE","LOW","UNKNOWN"],i=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),o=e=>Array.isArray(e)?e:[],s=e=>"string"==typeof e&&e?e:null,l=e=>i(e.package)&&"next"===e.package.name&&"npm"===e.package.ecosystem,u="OSV.dev sent an answer we couldn't read";async function d(e,f={}){let m=f.timeoutMs??1e4,h=f.maxBytes??2097152,g=AbortSignal.timeout(m),y=(0,t.X)(g),b=`OSV.dev didn't answer within ${p(m)}`,w=[],v=null;for(let r=0;r<3;r++){var k;let r,n;try{r=await (f.fetch??fetch)("https://api.osv.dev/v1/query",{method:"POST",headers:{"content-type":"application/json","user-agent":"OpsConsole-Security/1.0 (+https://watchbell.west-solutions.web.id)"},body:JSON.stringify({package:{name:"next",ecosystem:"npm"},version:e,...v?{page_token:v}:{}}),redirect:"error",cache:"no-store",signal:g})}catch(e){return{ok:!1,error:c(e)?b:"Couldn't reach OSV.dev"}}if(!r.ok)return await r.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${r.status}`};try{let{bytes:e,truncated:a}=await (0,t.z)(r,h,y);if(a)return{ok:!1,error:"OSV.dev sent too large an answer"};n=JSON.parse(new TextDecoder().decode(e))}catch(e){return{ok:!1,error:c(e)?b:u}}let a=i(k=n)?void 0===k.vulns?[]:Array.isArray(k.vulns)?k.vulns:null:null;if(null===a)return{ok:!1,error:u};if(w.push(...a),!(v=i(n)?s(n.next_page_token):null))break}let _=function(e,t){let u=[],d=0;for(let r of e){if(!i(r))continue;let e=s(r.id);e&&(d++,r.withdrawn||u.push({id:e.slice(0,64),cve:o(r.aliases).map(s).find(e=>!!e&&/^CVE-\d{4}-\d+$/.test(e))??null,summary:(s(r.summary)??"").replace(/\s+/g," ").trim().slice(0,200),severity:function(e){let t=i(e.database_specific)?s(e.database_specific.severity)?.toUpperCase():void 0;return"MEDIUM"===t?"MODERATE":a.includes(t??"")?t:"UNKNOWN"}(r),fixed:function(e,t){let r=null;for(let a of o(e))if(i(a)&&l(a))for(let e of o(a.ranges)){if(!i(e)||"SEMVER"!==e.type&&"ECOSYSTEM"!==e.type)continue;let a=null;for(let l of o(e.events)){if(!i(l))continue;let e=s(l.introduced),o=s(l.fixed);e?a=e:o&&null!==a?((0,n.f)(t,a)>=0&&0>(0,n.f)(t,o)&&(null===r||0>(0,n.f)(o,r))&&(r=o),a=null):(s(l.last_affected)||s(l.limit))&&(a=null)}}return r}(r.affected,t)}))}return e.length>0&&0===d?null:(0,r.I)(u).slice(0,50)}(w,e);return null===_?{ok:!1,error:u}:{ok:!0,findings:_}}let c=e=>e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name),p=e=>e<1e3?`${e} ms`:`${Math.round(e/1e3)} s`;e.s(["y",0,d,"t",0,c],52535);var f=e.i(382966);let m="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function h(e,t,r,n){let a=n.deadline-Date.now();if(a<500)return{ok:!1,error:"No time left for OSV.dev"};let i=AbortSignal.timeout(a);return y(e,{method:"POST",headers:{"content-type":"application/json","user-agent":m},body:JSON.stringify(t),signal:i},r,i,n)}async function g(e,t,r){let n=r.deadline-Date.now();if(n<500)return{ok:!1,error:"No time left for OSV.dev"};let a=AbortSignal.timeout(Math.min(n,8e3));return y(e,{method:"GET",headers:{"user-agent":m},signal:a},t,a,r)}async function y(e,r,n,a,i){let o;try{o=await (i.fetch??fetch)(e,{...r,redirect:"error",cache:"no-store"})}catch(e){return{ok:!1,error:c(e)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!o.ok)return await o.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${o.status}`};try{let{bytes:e,truncated:r}=await (0,t.z)(o,n,(0,t.X)(a));if(r)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(e))}}catch(e){return{ok:!1,error:c(e)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function b(e,t){let r=[];for(let n of(0,f.f)(e)){let e=await h(f.n,n,4194304,t);if(!e.ok)return e;let a=(0,f.j)(e.body,n.queries.length);if(!a)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};r.push(...a)}return{ok:!0,ids:r}}async function w(e,t){let r=[...new Set(e)].filter(f.G);if(r.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${r.length})`};let n=new Map,a=null;for(let e=0;e<r.length&&!a;e+=8)await Promise.all(r.slice(e,e+8).map(async e=>{let r=await g(`${f.W}${encodeURIComponent(e)}`,1048576,t),i=r.ok?(0,f.O)(r.body):null;i?n.set(e,i):a??=r.ok?"OSV.dev sent an advisory we couldn't read":r.error}));return a?{ok:!1,error:a}:{ok:!0,map:n}}e.s(["J",0,w,"K",0,b],618664)},382966,e=>{var t=e.i(663948);let r=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),n=e=>Array.isArray(e)?e:[],a=e=>"string"==typeof e&&e?e:null,i=e=>/^[A-Za-z0-9][A-Za-z0-9._:-]{1,63}$/.test(e),o={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",MEDIUM:"moderate",LOW:"low"},s=e=>e>=9?"critical":e>=7?"high":e>=4?"moderate":e>0?"low":"unknown",l=(e,t)=>r(e.package)&&e.package.name===t&&"npm"===e.package.ecosystem;e.s(["S",0,20,"n",0,"https://api.osv.dev/v1/querybatch","W",0,"https://api.osv.dev/v1/vulns/","h",0,200,"f",0,function(e){let t=[];for(let r=0;r<e.length;r+=1e3)t.push({queries:e.slice(r,r+1e3).map(e=>({package:{name:e.name,ecosystem:"npm"},version:e.version}))});return t},"i",0,function(e,i,o,s=new Map){let u=[];return e.forEach((e,d)=>{for(let c of i[d]??[]){let i=s.get(`${e.name}@${e.version}|${c}`);if(i){u.push({...i,dev:e.dev});continue}let d=o.get(c);d&&!d.withdrawn&&u.push({package:e.name,installedVersion:e.version,vulnId:d.id,aliases:d.aliases,severity:d.severity,fixedVersion:function(e,i,o){let s=null;for(let u of n(e))if(r(u)&&l(u,i))for(let e of n(u.ranges)){if(!r(e)||"SEMVER"!==e.type&&"ECOSYSTEM"!==e.type)continue;let i=null;for(let l of n(e.events)){if(!r(l))continue;let e=a(l.introduced),n=a(l.fixed);e?i=e:n&&null!==i?((0,t.f)(o,i)>=0&&0>(0,t.f)(o,n)&&(null===s||0>(0,t.f)(n,s))&&(s=n),i=null):(a(l.last_affected)||a(l.limit))&&(i=null)}}return s}(d.affected,e.name,e.version),summary:d.summary,dev:e.dev,source:"osv"})}}),u},"G",0,i,"O",0,function(e){if(!r(e))return null;let t=a(e.id);return t&&i(t)?{id:t,aliases:[...new Set(n(e.aliases).map(a).filter(e=>!!e&&i(e)))].slice(0,20),summary:(a(e.summary)??a(e.details)?.split(/\n/)[0]??"").replace(/\s+/g," ").trim().slice(0,200),severity:function(e){let t=r(e.database_specific)?a(e.database_specific.severity)?.toUpperCase():null;if(t&&o[t])return o[t];for(let t of n(e.severity)){if(!r(t)||"CVSS_V3"!==t.type&&"CVSS_V31"!==t.type)continue;let e=a(t.score)?function(e){let t,r=/^CVSS:3\.[01]\/(.+)$/.exec(e.trim());if(!r)return null;let n={};for(let e of r[1].split("/")){let[t,r]=e.split(":");t&&r&&(n[t]=r)}let a={N:.85,A:.62,L:.55,P:.2},i={L:.77,H:.44},o={N:.85,R:.62},s={H:.56,L:.22,N:0},l="C"===n.S,u=l?{N:.85,L:.68,H:.5}:{N:.85,L:.62,H:.27};if(![a[n.AV],i[n.AC],u[n.PR],o[n.UI],s[n.C],s[n.I],s[n.A]].every(e=>"number"==typeof e)||"U"!==n.S&&"C"!==n.S)return null;let d=1-(1-s[n.C])*(1-s[n.I])*(1-s[n.A]),c=l?7.52*(d-.029)-3.25*(d-.02)**15:6.42*d,p=8.22*a[n.AV]*i[n.AC]*u[n.PR]*o[n.UI];return c<=0?0:(t=Math.round(1e5*Math.min(l?1.08*(c+p):c+p,10)))%1e4==0?t/1e5:(Math.floor(t/1e4)+1)/10}(a(t.score)):null;if(null!==e)return s(e)}return(a(e.id)??"").startsWith("MAL-")?"critical":"unknown"}(e),withdrawn:!!a(e.withdrawn),affected:e.affected}:null},"j",0,function(e,t){return r(e)&&Array.isArray(e.results)&&e.results.length===t?e.results.map(e=>r(e)?n(e.vulns).map(e=>r(e)?a(e.id):null).filter(e=>!!e&&i(e)):[]):null}])},819263,e=>{var t=e.i(663948),r=e.i(461315),n=e.i(382966);let a=["critical","high","moderate","low","unknown"],i=e=>a.indexOf(e),o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=e=>"string"==typeof e&&e?e:null,l={critical:"critical",high:"high",medium:"moderate",moderate:"moderate",low:"low"},u=e=>`${e.package}@${e.installedVersion}|${e.vulnId}`,d=e=>{let t;return!e.dev&&(i(e.severity)<=i("high")||(t=e.summary,/\bRCE\b|remote code execution/i.test(t))||"moderate"===e.severity&&!0===e.direct)};e.s(["g",0,function(e){let t=e.filter(d);return t.some(e=>{let t;return"critical"===e.severity||(t=e.summary,/\bRCE\b|remote code execution/i.test(t))})?"critical":t.length?"warning":null},"L",0,function(e){let t=e.filter(d),r=[...t].sort((e,t)=>i(e.severity)-i(t.severity)||(e.package<t.package?-1:1)),n=[];for(let e of r){let t=`${e.package} ${e.installedVersion}${e.fixedVersion?` → ${e.fixedVersion}`:" (no fix yet)"}`;n.includes(t)||n.push(t)}let a=new Set(t.map(e=>e.package)).size,o=function(e){let t={critical:0,high:0,moderate:0,low:0,unknown:0};for(let r of e)t[r.severity]++;return t}(t),s=["critical","high","moderate","low","unknown"].filter(e=>o[e]>0).map(e=>`${o[e]} ${e}`).join(", "),l=`${a} vulnerable package${1===a?"":"s"} (${s}): ${n.slice(0,4).join(", ")}${n.length>4?`, +${n.length-4} more`:""}.`;return l.length>300?`${l.slice(0,299)}…`:l},"z",0,function(e,t,r){let n=new Set;return e.forEach((e,a)=>{for(let i of t[a]??[])r.has(`${e.name}@${e.version}|${i}`)||n.add(i)}),[...n]},"A",0,function(e,t){let r=new Map;if(t)return r;for(let t of e)t.fixedVersion&&"dependabot"!==t.source&&r.set(u(t),{package:t.package,installedVersion:t.installedVersion,vulnId:t.vulnId,aliases:t.aliases,severity:t.severity,fixedVersion:t.fixedVersion,summary:t.summary,dev:t.dev,source:"osv"});return r},"R",0,function(e,r,n){let a=[...e];for(let e of r)if(!a.some(t=>t.package===e.package&&(t.vulnId===e.ghsaId||t.aliases.includes(e.ghsaId)||null!==e.cveId&&t.aliases.includes(e.cveId)))&&e.range)for(let r of n)r.name===e.package&&function(e,r){let n=r.split(",").map(e=>e.trim()).filter(Boolean);return!!n.length&&n.every(r=>{let n=/^(<=|>=|<|>|=)\s*v?(\S+)$/.exec(r);if(!n)return!1;let a=(0,t.f)(e,n[2]);return"<"===n[1]?a<0:"<="===n[1]?a<=0:">"===n[1]?a>0:">="===n[1]?a>=0:0===a})}(r.version,e.range)&&a.push({package:e.package,installedVersion:r.version,vulnId:e.ghsaId,aliases:e.cveId?[e.cveId]:[],severity:e.severity,fixedVersion:e.fixed,summary:e.summary,dev:e.dev||r.dev,source:"dependabot"});return a},"E",0,function(e){if(!Array.isArray(e))return null;let t=[];for(let a of e){if(!o(a)||"open"!==a.state||!o(a.dependency)||!o(a.security_advisory))continue;let e=o(a.dependency.package)&&"npm"===a.dependency.package.ecosystem?s(a.dependency.package.name):null,i=s(a.security_advisory.ghsa_id);if(!e||!(0,r.L)(e)||!i||!(0,n.G)(i))continue;let u=o(a.security_vulnerability)?a.security_vulnerability:{},d=o(u.first_patched_version)?s(u.first_patched_version.identifier):null,c=s(a.security_advisory.cve_id);t.push({package:e,ghsaId:i,cveId:c&&/^CVE-\d{4}-\d+$/.test(c)?c:null,summary:(s(a.security_advisory.summary)??"").replace(/\s+/g," ").trim().slice(0,n.h),severity:l[(s(u.severity)??s(a.security_advisory.severity)??"").toLowerCase()]??"unknown",range:s(u.vulnerable_version_range),fixed:d&&d.length<=100?d:null,dev:"development"===a.dependency.scope})}return t},"h",0,function(e,t,r){let a=new Map(e.map(e=>[u(e),e])),i=new Set,o={insert:[],update:[],resolve:[]};for(let e of t){let t=u(e);if(i.has(t))continue;i.add(t);let s={...e,aliases:e.aliases.slice(0,n.S),summary:e.summary.slice(0,n.h),direct:r.has(e.package)},l=a.get(t);l?o.update.push({id:l.id,severity:s.severity,fixedVersion:s.fixedVersion,summary:s.summary,aliases:s.aliases,dev:s.dev,direct:s.direct}):o.insert.push(s)}return o.resolve=e.filter(e=>!i.has(u(e))).map(e=>e.id),o},"U",0,function(e,t,r,n=!1){return!!n||!e||!e.scannedAt||(e.error?r.getTime()-e.scannedAt.getTime()>=72e6||e.lockfileSha!==t:e.lockfileSha!==t||!e.queriedAt||r.getTime()-e.queriedAt.getTime()>=6048e5)},"M",0,function(e){return[...e].sort((e,t)=>(e.scannedAt?.getTime()??-1)-(t.scannedAt?.getTime()??-1)||(e.id<t.id?-1:1))},"B",0,function(e){let r=new Map,n=new Set;for(let a of e){if(!a.direct||!a.fixedVersion||0>=(0,t.f)(a.fixedVersion,a.installedVersion))continue;!0!==a.dev&&n.add(a.package);let e=r.get(a.package)??{package:a.package,to:a.fixedVersion,vulnIds:[],cves:[],severity:a.severity};for(let r of((0,t.f)(a.fixedVersion,e.to)>0&&(e.to=a.fixedVersion),e.vulnIds.includes(a.vulnId)||e.vulnIds.push(a.vulnId),a.aliases))/^CVE-/.test(r)&&!e.cves.includes(r)&&e.cves.push(r);i(a.severity)<i(e.severity)&&(e.severity=a.severity),r.set(a.package,e)}for(let e of r.values())n.has(e.package)||(e.dev=!0);return[...r.values()].sort((e,t)=>i(e.severity)-i(t.severity)||(e.package<t.package?-1:1))}])},964964,e=>{let t={checks:"waiting for CI",preview:"waiting for preview",smoke:"smoke test",merging:"merging…",merged:"merged ✅","ready-manual":"ready to merge (manual)",failed:"needs a look ⚠️",timeout:"needs a look ⚠️",closed:"closed"},r=new Set(["success","neutral","skipped"]),n=e=>"completed"!==e.status?"pending":r.has(e.conclusion??"")?"success":"failure",a={name:"watchbell[bot]",email:"watchbell-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchbell)"},i={name:"watchpost[bot]",email:"watchpost-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchpost)"},o=e=>[a,i].some(t=>e.name===t.name&&e.email.toLowerCase()===t.email&&e.message.trim()===t.message),s=/^[\^~]?[0-9][0-9A-Za-z.+-]*$/,l=e=>Array.isArray(e)?e.map(l):e&&"object"==typeof e?Object.fromEntries(Object.keys(e).sort().map(t=>[t,l(e[t])])):e,u=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,d=/^sha512-[A-Za-z0-9+/]{86}==$/,c="(?:@[a-z0-9][a-z0-9._~-]*/)?[a-z0-9][a-z0-9._~-]*",p=RegExp(`^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*/)*?node_modules/${c}(?:/node_modules/${c})*$`,"i"),f=new Set(["dev","optional","devOptional","peer"]),m=e=>!!e&&"object"==typeof e&&!Array.isArray(e),h=e=>e.slice(e.lastIndexOf("node_modules/")+13),g=(e,t,r)=>`${e}/${t}/-/${t.split("/").pop()}-${r}.tgz`,y=(e,t)=>JSON.stringify(l(e))===JSON.stringify(l(t)),b=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!f.has(e))),w=e=>{try{let t=JSON.parse(e);return m(t)&&m(t.packages)?t:null}catch{return null}};e.s(["y",0,20,"X",0,["checks","preview","smoke","merging"],"w",0,15e3,"R",0,27e5,"j",0,function(e){let t=(e.checkRuns??e.actionRuns??[]).map(n);return(e.combined&&e.combined.total>0&&t.push("success"===e.combined.state?"success":"pending"===e.combined.state?"pending":"failure"),t.includes("failure"))?"failure":t.includes("pending")?"pending":"success"},"L",0,function(e){if(!e.length||e.some(e=>e.authWall))return null;let t=e.find(e=>null===e.status||e.status<200||e.status>399);return t?{mode:"http",result:"fail",reason:null===t.status?`${t.path} didn't answer within 15 seconds`:`${t.path} answered ${t.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(e,t,r){return(401===e||403===e)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(t)||/_vercel_sso/i.test(r.get("set-cookie")??"")||"vercel"===(r.get("server")??"").toLowerCase())},"T",0,function(e,t,r){if([e,t].some(e=>null!==e&&(e=>{if(e.length>0x1900000)return!0;if(3*e.length<=0x1900000)return!1;let t=0;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);n<128?t+=1:n<2048?t+=2:n>=55296&&n<56320&&(64512&e.charCodeAt(r+1))==56320?(t+=4,r++):t+=3}return t>0x1900000})(e)))return`lockfile too large to check (over 25 MB): ${r}`.slice(0,150);try{return function(e,t,r){let n=e=>`unexpected lockfile change ${e}`.slice(0,150),a=null===t?null:w(t),i=null===e?{packages:{}}:w(e);if(!a||!i)return n(r);if(2!==a.lockfileVersion&&3!==a.lockfileVersion||null!==e&&a.lockfileVersion!==i.lockfileVersion)return n("lockfileVersion");let o=new Set;for(let[e,t]of Object.entries(i.packages)){if(!p.test(e)||!m(t)||"string"!=typeof t.resolved||"string"!=typeof t.version)continue;let r=g("","string"==typeof t.name?t.name:h(e),t.version);t.resolved.startsWith("https://")&&t.resolved.endsWith(r)&&o.add(t.resolved.slice(0,-r.length))}for(let[e,t]of(o.size||o.add("https://registry.npmjs.org"),Object.entries(a.packages))){let a=Object.hasOwn(i.packages,e)?i.packages[e]:void 0;if(void 0!==a&&y(a,t))continue;let s=m(a)?a:null;if(""===e||!e.includes("node_modules/")){let a=""===e?m(t)&&"string"==typeof t.name?t.name:r:e;if(!m(t)||""!==e&&!s||"resolved"in t||"link"in t)return n(a);continue}if(!p.test(e)||!m(t))return n(p.test(e)?h(e):e);let l=h(e);if(void 0!==t.name&&t.name!==l&&(!s||s.name!==t.name))return n(l);let c="string"==typeof t.name?t.name:l,f=t.version;if(void 0!==t.link||"string"!=typeof f||!u.test(f)||"string"!=typeof t.integrity||!d.test(t.integrity)||"string"!=typeof t.resolved||![...o].some(e=>t.resolved===g(e,c,f))||s&&s.version===f&&!y(b(s),b(t)))return n(l)}return null}(e,t,r)}catch{return`unexpected lockfile change ${r} (couldn't be checked)`.slice(0,150)}},"H",0,e=>!!e.lockfileRequired&&!!e.lockfile&&!e.files.some(t=>t.filename===e.lockfile),"n",0,function(e,t,r){return null!==r&&r>0?{mode:"logs",result:"fail",reason:`${r} errors in the preview logs`}:t.getTime()-e.getTime()<18e4||null===r?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"C",0,function(e,t,r){let n,a;try{n=JSON.parse(e),a=JSON.parse(t)}catch{return"unexpected change: package.json isn't valid JSON"}if(!n||!a||"object"!=typeof n||"object"!=typeof a)return"unexpected change: package.json isn't an object";let i=e=>{let t=structuredClone(e);for(let e of["dependencies","devDependencies"]){let n=t[e];if(n&&"object"==typeof n)for(let e of r)delete n[e]}return t};if(JSON.stringify(l(i(n)))!==JSON.stringify(l(i(a))))return"unexpected change in package.json beyond the bumped versions";for(let e of["dependencies","devDependencies"]){let t=n[e]??{},i=a[e]??{};for(let e of r){if(e in t!=e in i)return`unexpected change in package.json: ${e} added or removed`;if(e in i&&i[e]!==t[e]&&("string"!=typeof i[e]||!s.test(i[e])))return`unexpected change in package.json: ${e} isn't a plain version`}}return null},"E",0,function(e){let t=["/"];for(let r of e){let e;try{e=new URL(r).pathname||"/"}catch{continue}!t.includes(e)&&t.length<4&&t.push(e)}return t},"m",0,(e,r,n)=>{let a=`PR #${e}: ${t[r]}${n?` — ${n}`:""}`;return a.length>200?`${a.slice(0,199)}…`:a},"k",0,function(e){let t=new Set([e.manifest,...e.lockfile?[e.lockfile]:[]]);for(let r of e.files)for(let e of[r.filename,r.previous])if(e&&!t.has(e))return`unexpected change in ${e}`.slice(0,150);if(!e.files.some(t=>t.filename===e.manifest))return`unexpected change: ${e.manifest} isn't changed`.slice(0,150);if(e.manifestProblem)return e.manifestProblem.slice(0,150);if(e.lockfileProblem)return e.lockfileProblem.slice(0,150);if(!e.tokenLogin||!e.commits.length||e.commits.length>20)return"couldn't confirm who wrote the PR's commits";if(e.headSha&&e.commits[e.commits.length-1].sha!==e.headSha)return"the PR's head moved while it was checked";for(let t of e.commits){if(null!==t.login&&t.login.toLowerCase()===e.tokenLogin.toLowerCase())continue;let r=t.sha.slice(0,7);if(!o(t)||!t.files||!e.lockfile)return`unexpected commit ${r} by ${t.login??t.name}`.slice(0,150);let n=t.files.find(t=>t!==e.lockfile);if(n)return`unexpected change in ${n} by commit ${r}`.slice(0,150)}return null},"f",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<1e5))&&(Math.floor(r/6e4)%2==0||null!==t&&r-t>=24e4)},"M",0,function(e){if(e.pr.merged)return{kind:"done",stage:"merged"};if("closed"===e.pr.state)return{kind:"done",stage:"closed"};if(void 0!==e.pr.base&&void 0!==e.recordedBase&&e.pr.base!==e.recordedBase)return{kind:"stop",stage:"failed",reason:`the PR's base changed to ${e.pr.base}`};if(e.pr.headSha!==e.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:e.pr.headSha};let t=e.now.getTime()-e.openedAt.getTime()>27e5;return"failure"===e.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===e.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"canceled"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel canceled the preview (an Ignored Build Step that skips previews does this), so the update wasn't smoke-tested; check it and merge by hand"}:"pending"===e.checks||null===e.pr.mergeable?t?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==e.preview.state?t?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:e.smoke&&"wait"!==e.smoke.result?"fail"===e.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${e.smoke.reason??"?"}`}:e.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:t?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}])},978196,e=>{var t=e.i(198552);let r=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0).map(e=>e.toLowerCase()):[];function n(e){let t="string"==typeof e?.primaryDomain&&e.primaryDomain?e.primaryDomain.toLowerCase():null;return t?{primaryDomain:t,domains:r(e?.domains),pastDomains:r(e?.pastDomains)}:null}function a(e){try{let t=new URL(e);return"https:"===t.protocol||"http:"===t.protocol?t.hostname.toLowerCase():null}catch{return null}}let i=e=>/ · DEPLOYMENT_NOT_FOUND$/.test(e.lastError??"");function o(e,t,r=[],s={}){let l=a(e),u=n(t.meta);return!(!l||!u||function(e,t,r=[]){let a=n(t.meta);if(!a)return!0;let i=e.toLowerCase();if(i===a.primaryDomain||a.domains.includes(i))return!0;let o=t.name.toLowerCase();return!!(!(i.endsWith(".vercel.app")&&r.some(e=>{let t=e.name.toLowerCase();return t!==o&&t.startsWith(`${o}-`)&&(i===`${t}.vercel.app`||i.startsWith(`${t}-`))}))&&(i===`${o}.vercel.app`||i.endsWith(".vercel.app")&&i.startsWith(`${o}-`)))||r.some(e=>{let t=n(e.meta);return null!==t&&(t.primaryDomain===i||t.domains.includes(i))})}(l,t,r))&&(u.pastDomains.includes(l)||i(s))?{from:l,to:u.primaryDomain}:null}e.s(["Q",0,function(e,n,a=[],i){let o=[...new Set(e.map(e=>e.name.toLowerCase()))],s=new Set(o),l=[...new Set([...r(i?.pastDomains),...r(i?.domains)])].filter(e=>!s.has(e)).slice(-20);return{domains:o,primaryDomain:(0,t.n)(e,n,a).toLowerCase(),pastDomains:l}},"u",0,o,"P",0,function(e,t){let r=new Map;for(let n of e){if("heartbeat"===n.kind)continue;let e=o(n.url,{name:n.appName,meta:n.appMeta},t.filter(e=>e.id!==n.appId),{lastError:n.lastError});e&&r.set(n.id,e)}return r},"w",0,function(e,t){let r=new URL(e);if(r.protocol="https:",r.hostname=t,r.port="",r.hostname!==t.toLowerCase())throw Error("The new domain isn't a valid host name.");return r.toString()},"R",0,function(e,t){let r=new Map;for(let s of e){if("heartbeat"===s.kind||!i({lastError:s.lastError}))continue;let e=n(s.appMeta),l=a(s.url);if(!e||!l)continue;let u=r.get(s.appId)??e.pastDomains;!u.includes(l)&&o(s.url,{name:s.appName,meta:s.appMeta},t.filter(e=>e.id!==s.appId),{lastError:s.lastError})&&r.set(s.appId,[...u,l].slice(-20))}return r},"Y",0,n])},58992,e=>{var t=e.i(666680);e.s(["f",0,function(e){return(0,t.createHash)("sha256").update(e).digest("hex")}])},368230,e=>{var t=e.i(816173);let r=e=>{let t=Math.max(1,Math.floor(e/6e4));if(t<60)return`${t} min`;let r=Math.floor(t/60);return r<48?`${r} h`:`${Math.floor(r/24)} days`};e.s(["C",0,function(e,n){let a=e=>({state:"err",text:`Down \xb7 ${e}`,failStreak:t.I}),i=1e3*e.periodS,o=1e3*e.graceS;if(!e.lastPingAt)return n.getTime()-e.createdAt.getTime()<=i+o?{state:"unknown",text:"Waiting for the first ping",failStreak:0}:a("never pinged");let s=n.getTime()-e.lastPingAt.getTime();return"fail"===e.lastPingKind?a("the job reported a failure"):"start"===e.lastPingKind&&s>o?a("started but didn't finish"):s<=i?{state:"ok",text:`Up \xb7 pinged ${r(s)} ago`,failStreak:0}:s<=i+o?{state:"warn",text:`Late \xb7 last ping ${r(s)} ago`,failStreak:1}:a(`no ping for ${r(s)}`)},"i",0,function(e){let t=String(e??"").match(/(?<![0-9a-z_])hb_[0-9a-f]{32}(?![0-9a-zA-Z])/g)??[];return 1===t.length?t[0]:null}])},802641,e=>{let t=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;e.s(["f",0,e=>"string"==typeof e&&t.test(e)])},857799,e=>{let t={supabase_project:"supabase",neon_project:"neon",firestore:"firebase",turso_database:"turso",upstash_redis:"upstash",d1_database:"d1"};e.s(["H",0,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],"N",0,e=>`/${t[e]}`,"Z",0,e=>t[e]])},765503,e=>{let t=[[/(?:\b|(?<=%2F))hb(?:_|%5F)[0-9a-f]{32}\b/gi,"hb_[hidden]"],[/(\/api(?:\/|%2F)ping(?:\/|%2F))(?!hb_\[hidden\])[^/?#\s]+/gi,"$1[hidden]"],[/\b(postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|rediss):\/\/\S+/gi,"$1://[hidden]"],[/\b(https?):\/\/[^\s/@:]+:[^\s/@]+@/gi,"$1://[hidden]@"],[/\b(Bearer|Basic)\s+[^\s"',;]+/gi,"$1 [hidden]"],[/\b((?:access_|refresh_|id_)?token|secret|password|passwd|pwd|api[_-]?key|apikey|authorization|cookie|session|private_key)(["']?\s*[:=]\s*["']?)(?!Bearer\b|Basic\b)([^\s"'&,;}]+)/gi,"$1$2[hidden]"],[/\beyJ[\w-]{8,}\.[\w-]{8,}\.[\w-]{8,}/g,"[jwt]"],[/\b[\w.+-]+@[\w-]+(?:\.[\w-]+)+\b/g,"[email]"],[/\b[A-Fa-f0-9]{40,}\b/g,"[redacted]"],[/\b(?=[A-Za-z0-9_-]*\d)(?=[A-Za-z0-9_-]*[A-Za-z])[A-Za-z0-9_-]{40,}\b/g,"[redacted]"]];function r(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}e.s(["l",0,r,"n",0,function(e){return null===e?null:r(e.split(/[?#]/)[0]||"/",512)},"h",0,function(e){return t.reduce((e,[t,r])=>e.replace(t,r),e)}])},764266,e=>{var t=e.i(728335);let r=(e,r)=>0===r?e.startsAt.getTime():(0,t.addLocalDays)(e.startsAt,7*r).getTime();function n(e,t){let n,a=t.getTime(),i=e.startsAt.getTime();if(a<i)return null;let o=(n=e.weekly?function(e,t){let n=Math.floor((t-e.startsAt.getTime())/6048e5),a=r(e,n);for(;n>0&&a>t;)a=r(e,--n);for(let i=r(e,n+1);i<=t;i=r(e,n+1))n++,a=i;return{k:n,start:a}}(e,a).start:i,{start:new Date(n),end:new Date(n+6e4*e.durationMin)});return a<o.end.getTime()?o:null}function a(e,t){return"all"===e.scope||"app"===e.scope&&e.appId===t.appId||"monitor"===e.scope&&e.monitorId===t.monitorId}e.s(["J",0,20,"x",0,function(e,t,r){let i=null;for(let o of e){let e=a(o,t)?n(o,r):null;e&&(!i||e.end>i.end)&&(i={window:o,end:e.end})}return i},"u",0,function(e,t,r,i=[]){let o=new Set,s=e.filter(e=>null!==n(e,r));for(let e of s)if("app"===e.scope&&e.appId&&o.add(e.appId),"all"===e.scope)for(let e of i)o.add(e);for(let e of t)for(let t of s)a(t,{monitorId:e.id,appId:e.appId})&&(o.add(e.id),"monitor"!==t.scope&&o.add(e.appId));return o}])},549889,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(246517),a=e.i(909592),i=e.i(260417);let o=t.z.object({notAfter:r.z.string().nullable(),issuer:r.z.string().nullable(),authorized:n.z.boolean().nullable(),error:r.z.string().nullable(),checkedAt:r.z.string()}),s=t.z.object({misconfigured:n.z.boolean(),configuredBy:r.z.string().nullable(),recommendedIps:a.z.array(r.z.string()).default([]),checkedAt:r.z.string()}),l=t.z.object({expiresAt:r.z.string().nullable(),registrar:r.z.string().nullable(),error:r.z.string().nullable(),checkedAt:r.z.string()}),u=t.z.object({id:r.z.string(),type:r.z.string(),name:r.z.string(),content:r.z.string(),proxied:n.z.boolean(),ttl:i.z.number(),comment:r.z.string().nullable()}),d=t.z.object({status:r.z.string().nullable(),paused:n.z.boolean(),nameServers:a.z.array(r.z.string()),accountId:r.z.string().nullable(),checkedAt:r.z.string().nullable()}),c=t.z.object({mode:r.z.string().nullable(),error:r.z.string().nullable()}),p=t.z.object({type:r.z.string(),status:r.z.string(),hosts:a.z.array(r.z.string()),expiresOn:r.z.string().nullable()}),f=(e,t)=>{let r=e.safeParse(t);return r.success?r.data:null},m=(e,t)=>Array.isArray(t)?t.flatMap(t=>{let r=e.safeParse(t);return r.success?[r.data]:[]}):[],h=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e):[];e.s(["q",0,function(e){let t=e??{};return{tls:f(o,t.tls),vercel:f(s,t.vercel),rdap:f(l,t.rdap),records:m(u,t.records),recordsTruncated:!0===t.recordsTruncated,zone:f(d,t.zone),ssl:f(c,t.ssl),certs:m(p,t.certs),cfErrors:h(t.cfErrors),reasons:h(t.reasons)}},"n",0,function(e,t,r){let n=r.toISOString();return e.ok?{expiresAt:e.expiresAt,registrar:e.registrar,error:null,checkedAt:n}:{expiresAt:t?.expiresAt??null,registrar:t?.registrar??null,error:e.error,checkedAt:n}},"o",0,function(e,t,r){let n=r.toISOString();return e.ok?{notAfter:e.notAfter.toISOString(),issuer:e.issuer,authorized:e.authorized,error:null,checkedAt:n}:{notAfter:t?.notAfter??null,issuer:t?.issuer??null,authorized:null,error:e.error,checkedAt:n}}])},491370,377323,259246,e=>{var t=e.i(75064),r=e.i(542746),n=e.i(909592),a=e.i(492973),i=e.i(932378),o=e.i(691313),s=e.i(761095),l=e.i(122603),u=e.i(809816);let d=e=>e.toLowerCase().replace(/\.$/,"");function c(e){try{let t=new URL(e);return null===(0,u._)(t)&&!(0,s.isIP)(t.hostname.replace(/^[|]$/g,""))}catch{return!1}}let p=t.z.object({objectClassName:r.z.literal("domain"),events:n.z.array(t.z.object({eventAction:a.z.string(),eventDate:a.z.string()})).default([]),entities:n.z.array(t.z.object({roles:n.z.array(a.z.string()).default([]),vcardArray:i.z.unknown().optional()})).default([])});async function f(e,t,r){let n=await (0,l.K)(e,{fetch:r.fetch,lookup:r.lookup,timeoutMs:r.timeoutMs??8e3,maxBytes:524288,headers:{Accept:t},userAgent:"OpsConsole-Network/1.0 (+https://watchbell.west-solutions.web.id)"});if(!n.ok)return{ok:!1,error:"Blocked address"===n.error?"The registry's RDAP address isn't a public https address":"Couldn't reach the registry's RDAP server"};if(n.truncated)return{ok:!1,error:"The answer was too large"};if(200!==n.status)return{ok:!0,status:n.status,body:null};try{return{ok:!0,status:n.status,body:JSON.parse(n.body)}}catch{return{ok:!1,error:"The registry answered in a format the console doesn't recognise"}}}let m=t.z.object({services:n.z.array(o.z.tuple([n.z.array(a.z.string()),n.z.array(a.z.string())]))});async function h(e={}){let t=await f("https://data.iana.org/rdap/dns.json","application/json",e);if(!t.ok)return{ok:!1,error:"Couldn't read IANA's RDAP list"};if(200!==t.status)return{ok:!1,error:`IANA's RDAP list returned an error (${t.status})`};let r=m.safeParse(t.body);return r.success?{ok:!0,services:r.data.services}:{ok:!1,error:"IANA's RDAP list is in a format the console doesn't recognise"}}async function g(e,t,r={}){let n=`${t.endsWith("/")?t:`${t}/`}domain/${encodeURIComponent(d(e))}`,a=await f(n,"application/rdap+json, application/json",r);if(!a.ok)return a;if(404===a.status)return{ok:!1,error:"The registry doesn't know this domain"};if(200!==a.status)return{ok:!1,error:`The registry's RDAP server returned an error (${a.status})`};let i=function(e){let t=p.safeParse(e);if(!t.success)return null;let r=t.data.events.find(e=>"expiration"===e.eventAction),n=r?new Date(r.eventDate):null,a=t.data.entities.find(e=>e.roles.includes("registrar"));return{expiresAt:n&&!Number.isNaN(n.getTime())?n.toISOString():null,registrar:a?function(e){if(!Array.isArray(e)||!Array.isArray(e[1]))return null;let t=e[1].find(e=>Array.isArray(e)&&"fn"===e[0]);return"string"==typeof t?.[3]&&t[3]?t[3]:null}(a.vcardArray):null}}(a.body);return i?{ok:!0,...i}:{ok:!1,error:"The registry answered in a format the console doesn't recognise"}}e.s(["Y",0,h,"u",0,g,"T",0,function(e,t){let r=d(t).split(".");for(let t=0;t<r.length;t++){let n=r.slice(t).join("."),a=e.find(([e])=>e.map(d).includes(n));if(a)return a[1].find(c)??null}return null}],491370);var y=e.i(300794),b=e.i(685560);let w={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};async function v(e,t={}){let r,n=t.timeoutMs??5e3,a=e.toLowerCase().replace(/\.$/,"");if((0,s.isIP)(a)||(0,u.N)(a))return{ok:!1,error:"Blocked address"};try{r=await (t.lookup??(async e=>(await (0,y.lookup)(e,{all:!0,verbatim:!0})).map(e=>e.address)))(a)}catch{return{ok:!1,error:"The name doesn't resolve"}}if(!r.length)return{ok:!1,error:"The name doesn't resolve"};if(r.some(u.W))return{ok:!1,error:"Blocked address"};let i=t.connect??b.connect,o=r.find(e=>4===(0,s.isIP)(e))??r[0];return new Promise(e=>{let t,r=!1,s=(t,n)=>{r||(r=!0,clearTimeout(l),n?.destroy(),e(t))},l=setTimeout(()=>s({ok:!1,error:`No answer within ${Math.round(n/1e3)} s`},t),n);try{t=i({host:o,port:443,servername:a,rejectUnauthorized:!1,timeout:n,ALPNProtocols:["http/1.1"]})}catch{return s({ok:!1,error:"Couldn't connect"})}let u=t;u.on("secureConnect",()=>{let e,t,r=u.getPeerCertificate(),n=function(e){if("string"!=typeof e)return null;let t=/^([A-Z][a-z]{2})\s+(\d{1,2})\s+(\d{2}):(\d{2}):(\d{2})\s+(\d{4})\s+GMT$/.exec(e.trim());return t&&void 0!==w[t[1]]?new Date(Date.UTC(Number(t[6]),w[t[1]],Number(t[2]),Number(t[3]),Number(t[4]),Number(t[5]))):null}(r.valid_to);if(!n)return s({ok:!1,error:"The certificate has no readable expiry date"},u);let a=u.authorized?null:String(u.authorizationError??"untrusted");s({ok:!0,notAfter:n,issuer:(e=r.issuer,"string"==typeof(t=e?.O??e?.CN)&&t?t:null),authorized:u.authorized,authError:a},u)}),u.on("timeout",()=>s({ok:!1,error:`No answer within ${Math.round(n/1e3)} s`},u)),u.on("error",()=>s({ok:!1,error:"Couldn't connect"},u))})}e.s(["f",0,v],377323);var k=e.i(246517),_=e.i(260417);let A=t.z.object({success:k.z.boolean(),result:i.z.unknown(),result_info:t.z.object({page:_.z.number().optional(),total_pages:_.z.number().optional()}).nullish()});async function I(e,t,r,n){let a;try{a=await (r.fetch??fetch)(`https://api.cloudflare.com/client/v4${e}`,{method:"GET",headers:{Authorization:`Bearer ${t}`,Accept:"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?"Cloudflare didn't answer within 5 seconds.":"Couldn't reach Cloudflare."}}if(403===a.status&&n)return await a.body?.cancel().catch(()=>void 0),{ok:!1,kind:"scope",status:403,error:`The token can't read this. Add "${n}" to the Cloudflare token.`};if(401===a.status||403===a.status)return await a.body?.cancel().catch(()=>void 0),{ok:!1,kind:"auth",status:a.status,error:`Cloudflare rejected this credential (${a.status}).`};if(429===a.status){let e=Number(a.headers.get("Retry-After"));return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60,error:"Cloudflare says there were too many requests."}}if(!a.ok)return{ok:!1,kind:"transient",status:a.status,error:`Cloudflare returned an error (${a.status}).`};let i=A.safeParse(await a.json().catch(()=>null));return i.success&&i.data.success?{ok:!0,data:{result:i.data.result,totalPages:i.data.result_info?.total_pages??null}}:S("its answer")}let S=e=>({ok:!1,kind:"format",error:`Cloudflare answered ${e} in a format the console doesn't recognise.`}),$=e=>encodeURIComponent(e),T=t.z.object({id:a.z.string(),name:a.z.string(),status:a.z.string(),paused:k.z.boolean().default(!1),name_servers:n.z.array(a.z.string()).default([]),account:t.z.object({id:a.z.string(),name:a.z.string().nullish()}).nullish()});async function R(e,t={}){let r=[];for(let a=1;a<=10;a++){let i=await I(`/zones?per_page=50&page=${a}`,e,t,null);if(!i.ok)return i;let o=n.z.array(T).safeParse(i.data.result);if(!o.success)return S("the zone list");for(let e of o.data)r.push({id:e.id,name:e.name,status:e.status,paused:e.paused,nameServers:e.name_servers,accountId:e.account?.id??null,accountName:e.account?.name??null});if(!i.data.totalPages||a>=i.data.totalPages)break}return{ok:!0,data:r}}let x=t.z.object({id:a.z.string(),type:a.z.string(),name:a.z.string(),content:a.z.string().default(""),proxied:k.z.boolean().default(!1),ttl:_.z.number().default(1),comment:a.z.string().nullish()});async function E(e,t,r={}){let a=[];for(let i=1;i<=4;i++){let o=await I(`/zones/${$(t)}/dns_records?per_page=500&page=${i}`,e,r,"DNS Read");if(!o.ok)return o;let s=n.z.array(x).safeParse(o.data.result);if(!s.success)return S("the DNS records");if(a.push(...s.data.map(e=>({id:e.id,type:e.type,name:e.name,content:e.content,proxied:e.proxied,ttl:e.ttl,comment:e.comment??null}))),!o.data.totalPages||i>=o.data.totalPages)return{ok:!0,data:{records:a,truncated:!1}}}return{ok:!0,data:{records:a,truncated:!0}}}async function N(e,r,n={}){let i=await I(`/zones/${$(r)}/settings/ssl`,e,n,"Zone Settings Read");if(!i.ok)return i;let o=t.z.object({value:a.z.string()}).safeParse(i.data.result);return o.success?{ok:!0,data:o.data.value}:S("the SSL/TLS mode")}t.z.object({errors:n.z.array(t.z.object({code:_.z.number().int()})).min(1)});let P=t.z.object({type:a.z.string(),status:a.z.string(),hosts:n.z.array(a.z.string()).default([]),certificates:n.z.array(t.z.object({expires_on:a.z.string().nullish()})).default([])});async function O(e,t,r={}){let a=await I(`/zones/${$(t)}/ssl/certificate_packs?status=all&per_page=50`,e,r,"SSL and Certificates Read");if(!a.ok)return a;let i=n.z.array(P).safeParse(a.data.result);return i.success?{ok:!0,data:i.data.map(e=>{let t=e.certificates.map(e=>e.expires_on).filter(e=>!!e).sort();return{type:e.type,status:e.status,hosts:e.hosts,expiresOn:t[0]??null}})}:S("the edge certificates")}async function C(e,r={}){let n=await I("/user/tokens/verify",e,r,null);if(!n.ok)return n;let i=t.z.object({status:a.z.string(),expires_on:a.z.string().nullish()}).safeParse(n.data.result);if(!i.success)return S("the token details");let o=i.data.expires_on?new Date(i.data.expires_on):null;return{ok:!0,data:{status:i.data.status,expiresAt:o&&!Number.isNaN(o.getTime())?o:null}}}e.s(["w",0,O,"p",0,E,"F",0,R,"v",0,N,"d",0,C],259246)},262412,416041,313302,896478,717614,583319,e=>{var t=e.i(105464),r=e.i(90879);let n=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function a(e,i,o={}){let s;if((0,r.isDemo)())return{ok:!1,kind:"config",error:t.Y};if(n.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{s=await (o.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(o.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:i.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===s.status||s.ok)return{ok:!0};if(429===s.status){let e=await s.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===s.status||401===s.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:s.status>=500?"transient":"config",error:`Discord returned an error (${s.status}).`}}e.s(["f",0,a],262412);var i=e.i(666680),o=e.i(300794),s=e.i(809816);let l={open:"firing",repeat:"repeat",resolve:"resolved"};async function u(e){return(await (0,o.lookup)(e,{all:!0})).map(e=>e.address)}async function d(e,n,a={}){let o,l;if((0,r.isDemo)())return{ok:!1,kind:"config",error:t.Y};if(function(e){let t;try{t=new URL(e.trim())}catch{return"Paste the whole address, starting with https://."}let r=(0,s._)(t);return"scheme"===r?"Use an https:// address without a user name or password in it.":"blocked"===r?"Use an address on the public internet, on port 443. Watchbell doesn't post into private networks.":null}(e.url))return{ok:!1,kind:"config",error:"The saved webhook address isn't allowed any more."};let c=new URL(e.url.trim());try{let e=await (a.lookup??u)(c.hostname);if(!e.length||e.some(s.W))return{ok:!1,kind:"config",error:"The webhook host resolves to a private address; Watchbell won't post there."}}catch{return{ok:!1,kind:"transient",error:"The webhook host didn't resolve."}}let p=JSON.stringify(n),f=String(Math.floor(Date.parse(n.sentAt)/1e3)),m={"Content-Type":"application/json","User-Agent":"Watchbell-Webhook/1.0","X-Watchbell-Timestamp":f};e.secret&&(m["X-Watchbell-Signature"]=(l=e.secret,`sha256=${(0,i.createHmac)("sha256",l).update(`${f}.${p}`).digest("hex")}`));try{o=await (a.fetch??fetch)(c.toString(),{method:"POST",headers:m,body:p,redirect:"manual",cache:"no-store",signal:AbortSignal.timeout(a.timeoutMs??5e3)})}catch{return{ok:!1,kind:"transient",error:"The webhook didn't answer."}}if(await o.body?.cancel().catch(()=>void 0),o.ok)return{ok:!0};if(o.status>=300&&o.status<400)return{ok:!1,kind:"config",error:"The webhook answered with a redirect; Watchbell doesn't follow them. Use the final address."};if(429===o.status){let e=Math.min(600,Math.max(1,Number(o.headers.get("retry-after"))||30));return{ok:!1,kind:"transient",retryAfterS:e,error:`The webhook asked to wait ${e} s.`}}return{ok:!1,kind:o.status>=500?"transient":"config",error:`The webhook returned an error (${o.status}).`}}e.s(["E",0,d,"J",0,function(e,t,r,n){return{source:"watchbell",event:t.length?"alerts":"test",sentAt:r.toISOString(),text:e.slice(0,4e3),link:n,alerts:t.slice(0,20).map(e=>({status:l[e.kind],rule:e.ruleKey,severity:e.severity,title:e.title,message:e.message,startedAt:e.startedAt.toISOString(),causedBy:e.causedBy,provider:e.provider}))}}],416041);var c=e.i(761095),p=e.i(685560),f=e.i(291815);let m=[465,587,2525],h=f.z.email();class g{socket;buf;lines;ready;waiters;onData;constructor(e){this.socket=e,this.buf="",this.lines=[],this.ready=[],this.waiters=[],this.onData=e=>this.read(e),e.on("data",this.onData)}attach(e){this.socket.off("data",this.onData),this.socket=e,e.on("data",this.onData)}read(e){let t;for(this.buf+=e.toString("utf8");(t=this.buf.indexOf("\n"))>=0;){let e=this.buf.slice(0,t).replace(/\r$/,"");if(this.buf=this.buf.slice(t+1),this.lines.push(e),/^\d{3}( |$)/.test(e)){let t={code:Number(e.slice(0,3)),text:this.lines.join("\n")};this.lines=[];let r=this.waiters.shift();r?r(t):this.ready.push(t)}}}next(){let e=this.ready.shift();return e?Promise.resolve(e):new Promise(e=>this.waiters.push(e))}send(e){this.socket.write(`${e}\r
39
- `)}}class y extends Error{kind;constructor(e,t){super(e),this.kind=t}}async function b(e,n,a,l={}){let u,d,f;if((0,r.isDemo)())return{ok:!1,kind:"config",error:t.Y};if(Object.keys((d={},f=e.host.trim().toLowerCase(),/^[a-z0-9.-]{3,253}$/.test(f)&&f.includes(".")?(0,s.N)(f)&&(d.host="Use a mail server on the public internet. Watchbell doesn't connect into private networks."):d.host="Enter the server name, for example smtp.office365.com.",!m.includes(e.port)&&(d.port="Use port 587 (STARTTLS), 465 (TLS) or 2525."),(!e.user.trim()||e.user.length>200)&&(d.user="Enter the user name the server expects (often the whole address)."),(!e.pass||e.pass.length>500)&&(d.pass="Enter the password or app password."),!h.safeParse(e.from.trim()).success&&(d.from="Enter the address the mail comes from."),!h.safeParse(e.to.trim()).success&&(d.to="Enter the address that gets the alerts."),d)).length)return{ok:!1,kind:"config",error:"The saved mail server settings aren't valid any more."};let w=e.host.trim().toLowerCase();try{let e=await (l.lookup??(async e=>(await (0,o.lookup)(e,{all:!0})).map(e=>e.address)))(w);if(!e.length||e.some(s.W))return{ok:!1,kind:"config",error:"The mail server resolves to a private address; Watchbell won't connect there."};u=e[0]}catch{return{ok:!1,kind:"transient",error:"The mail server's name didn't resolve."}}let v=465===e.port,k=null,_=new Promise((e,t)=>setTimeout(()=>t(new y("The mail server took too long to answer.","transient")),l.timeoutMs??15e3).unref?.()),A=async()=>{var t,r,o,s;let d,f;try{k=await (l.connect??((e,t,r,n)=>new Promise((a,i)=>{let o=n?p.default.connect({host:e,port:t,servername:r}):c.default.connect({host:e,port:t});o.once(n?"secureConnect":"connect",()=>a(o)),o.once("error",i)})))(u,e.port,w,v)}catch{throw new y(`Couldn't connect to ${w}:${e.port}.`,"transient")}let m=new g(k),h=async(e,t,r="config")=>{let n=await m.next();if(!e.includes(n.code))throw new y(`The mail server refused ${t} (${n.code}).`,n.code>=400&&n.code<500?"transient":r);return n};await h([220],"the connection","transient"),m.send("EHLO watchbell");let b=await h([250],"EHLO");if(!v){if(!/^250[- ]STARTTLS\b/im.test(b.text))throw new y("The mail server doesn't offer STARTTLS on this port, so the password would go in clear. Use port 465 or a server with STARTTLS.","config");m.send("STARTTLS"),await h([220],"STARTTLS"),k=await (l.upgrade??((e,t)=>new Promise((r,n)=>{let a=p.default.connect({socket:e,servername:t});a.once("secureConnect",()=>r(a)),a.once("error",n)})))(k,w),m.attach(k),m.send("EHLO watchbell"),b=await h([250],"EHLO after STARTTLS")}m.send(`AUTH PLAIN ${Buffer.from(`\0${e.user}\0${e.pass}`,"utf8").toString("base64")}`),await h([235],"the user name or password"),m.send(`MAIL FROM:<${e.from.trim()}>`),await h([250],"the sender address"),m.send(`RCPT TO:<${e.to.trim()}>`),await h([250,251],"the recipient address"),m.send("DATA"),await h([354],"the message"),k.write(`${(t=e,r=n,o=a,s=new Date,f=Buffer.from(o.replace(/\r?\n/g,"\r\n"),"utf8").toString("base64").replace(/.{1,76}/g,"$&\r\n"),[`From: Watchbell <${t.from.trim()}>`,`To: <${t.to.trim()}>`,`Subject: ${(d=r.replace(/[\r\n]+/g," ").slice(0,200),/^[\x20-\x7e]*$/.test(d)?d:`=?UTF-8?B?${Buffer.from(d,"utf8").toString("base64")}?=`)}`,`Date: ${s.toUTCString()}`,`Message-ID: <${(0,i.randomUUID)()}@watchbell>`,"MIME-Version: 1.0","Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",f].join("\r\n"))}\r
40
- .\r
41
- `),await h([250],"the message"),m.send("QUIT"),await Promise.race([m.next(),new Promise(e=>setTimeout(e,2e3))])};try{return await Promise.race([A(),_]),{ok:!0}}catch(e){return e instanceof y?{ok:!1,kind:e.kind,error:e.message}:{ok:!1,kind:"transient",error:"The mail server closed the connection."}}finally{k?.destroy()}}e.s(["f",0,b],313302);var w=e.i(484745),v=e.i(853190),k=e.i(728335),_=e.i(412948),A=e.i(760859);function I(e,t){return(0,k.newDaySince)(e,t)&&(0,k.zonedParts)(e).hour>=7}let S={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:e=>e.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:e=>`${e} error tersimpan`}},$={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},T=[5,15,30,60];async function R(e,t){let r={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!I(e,t.lastSentDay))return r;let n=(0,k.dayKey)(e),a=t.state&&t.state.day===n?t.state:null;if(a?.stopped)return{...r,state:a};if(a&&a.attempts>0){let t=(T[a.attempts-1]??T[T.length-1])*6e4;if(a.lastAttemptAt&&e.getTime()-new Date(a.lastAttemptAt).getTime()<t)return{...r,state:a}}a??={day:n,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let i=await t.send({subject:a.subject,html:a.html,text:a.text});if(i.ok)return{acted:!0,state:null,sentDay:n,event:null,result:i};let o=a.attempts+1,s="config"===i.kind||o>=5,l="config"===i.kind?`${i.error}. Fix it and the next digest goes out tomorrow.`:`${i.error} Gave up after ${o} attempts today.`;return{acted:!0,sentDay:null,result:i,state:{...a,attempts:o,lastAttemptAt:e.toISOString(),stopped:s,lastError:i.error},event:s?{message:"Daily digest not sent",detail:l}:null}}async function x(e,n,a={}){let i;if((0,r.isDemo)())return{ok:!1,kind:"config",error:t.Y};try{i=await (a.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":n.idempotencyKey},body:JSON.stringify({from:n.from,to:[n.to],subject:n.subject,html:n.html,text:n.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(i.ok)return{ok:!0};let o=await i.json().catch(()=>null);return 429===i.status||i.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${i.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??i.status).slice(0,200)}`}}e.s(["J",0,function(e,t="en"){let r=S[t],n=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,a=((e,t)=>{let{day:r,month:n}=(0,k.calendarDate)(e);return`${r} ${"id"===t?$[n]??n:n}`})(e.now,t),i=`${e.firing.length} ${r.firing}, ${e.opened} ${r.opened}, ${e.resolved.length} ${r.resolved}`,o=`Watchbell \xb7 ${a} \xb7 ${i}`,s=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),l=e.firing.map(e=>`${w.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,v.f)(e.ruleKey,e.message):e.message}`),u=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${r.after} ${r.took(e.took)})`),d=s.map(e=>`${e.name}: ${null===e.uptime?r.noChecks:`${(0,_.C)(e.uptime)} ${r.up}`}, ${r.errors(e.errors)}`),c=e.providers.map(e=>`${e.label}: ${e.text}`),p=[`Watchbell \xb7 ${a}`,`${i} ${r.last24}`,"",r.stillHead,...l.length?l.map(e=>`- ${e}`):[r.noFiring],"",r.resolvedHead,...u.length?u.map(e=>`- ${e}`):[r.noResolved],...d.length?["",r.appsHead,...d.map(e=>`- ${e}`)]:[],...c.length?["",r.providersHead,...c.map(e=>`- ${e}`)]:[],"",`${r.open}: ${n}`].join("\n"),f=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,w.H)(e)}</h3>`,m=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,w.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,w.H)(t)}</p>`,h=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,w.H)(a)}</h2>`,`<p style="margin:0;color:#596170">${(0,w.H)(`${i} ${r.last24}`)}</p>`,f(r.stillHead),m(l,r.noFiring),f(r.resolvedHead),m(u,r.noResolved),...d.length?[f(r.appsHead),m(d,"")]:[],...c.length?[f(r.providersHead),m(c,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,w.H)(n).replace(/"/g,"&quot;")}" style="color:#2f4372">${(0,w.H)(r.open)}</a></p>`,"</div>"].join("");return{subject:(0,A.G)(o),html:(0,A.G)(h),text:(0,A.G)(p)}},"A",0,I,"K",0,R],896478),e.s(["f",0,x],717614),e.s(["f",0,function(e,t){let r=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(r<60)return`${r} min`;let n=Math.floor(r/60);return n<24?`${n} h ${r%60} min`:`${Math.floor(n/24)} d ${n%24} h`}],583319)},437122,319718,941536,686454,582888,811539,e=>{var t=e.i(75064),r=e.i(909592),n=e.i(492973),a=e.i(978071),i=e.i(260417),o=e.i(684330),s=e.i(79322);let l=t.z.object({error:t.z.object({status:n.z.string().optional(),message:n.z.string().optional(),details:r.z.array(o.z.looseObject({reason:n.z.string().optional()})).optional()})}),u=t.z.object({message:n.z.string()}),d=t.z.object({missing_permissions:r.z.array(n.z.string()).min(1)}),c=t.z.object({error:s.z.enum(["invalid_grant","invalid_client","unauthorized_client"])});async function p(e,t,r,n={}){let a,i,o=n.timeoutMs??5e3,s={Accept:"application/json"};r.token?s.Authorization=`Bearer ${r.token}`:r.basic&&(s.Authorization=`Basic ${Buffer.from(`${r.basic.user}:${r.basic.pass}`).toString("base64")}`),r.form?a=r.form:void 0!==r.body&&(s["Content-Type"]="application/json",a=JSON.stringify(r.body));try{i=await (n.fetch??fetch)(t,{method:r.method??"GET",headers:s,body:a,signal:AbortSignal.timeout(o),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?`${e} didn't answer within ${Math.round(o/1e3)} seconds.`:`Couldn't reach ${e}.`}}let f=await i.json().catch(()=>null);if(i.ok)return{ok:!0,data:f};let m=l.safeParse(f),h=m.success?m.data.error.details?.find(e=>e.reason)?.reason??m.data.error.status:void 0,g=m.success?void 0:u.safeParse(f),y=m.success?m.data.error.message?.slice(0,300):g?.success?g.data.message.slice(0,600):void 0,b={status:i.status,...h?{reason:h}:{},...y?{message:y}:{}};if(403===i.status){let t=d.safeParse(f);if(t.success){let e=t.data.missing_permissions;return{ok:!1,kind:"scope",...b,missing:e,error:`Missing permission${e.length>1?"s":""}: ${e.join(", ")}.`}}if(m.success)return{ok:!1,kind:"scope",...b,error:`${e} refused this request (${h??"PERMISSION_DENIED"}).`}}if(401===i.status||403===i.status||400===i.status&&c.safeParse(f).success)return{ok:!1,kind:"auth",...b,error:`${e} rejected this credential (${i.status}).`};if(404===i.status)return{ok:!1,kind:"missing",...b,error:`${e} doesn't know this resource (404).`};if(429===i.status){let t=Number(i.headers.get("Retry-After"));return{ok:!1,kind:"transient",...b,retryAfterS:Number.isFinite(t)&&t>0?t:60,error:"RESOURCE_EXHAUSTED"===h?`${e} says a quota is used up.`:`${e} says there were too many requests.`}}return{ok:!1,kind:"transient",...b,error:`${e} returned an error (${i.status}).`}}let f=(e,t)=>({ok:!1,kind:"format",error:`${e} answered ${t} in a format the console doesn't recognise.`});async function m(e,a={}){let i=await p("Firebase","https://firebase.googleapis.com/v1beta1/projects?pageSize=100",{token:e},a);if(!i.ok)return i;let o=t.z.object({results:r.z.array(t.z.object({projectId:n.z.string(),displayName:n.z.string().optional(),state:n.z.string().optional()})).optional()}).safeParse(i.data);return o.success?{ok:!0,data:(o.data.results??[]).filter(e=>"DELETED"!==e.state).map(e=>({projectId:e.projectId,displayName:e.displayName??e.projectId}))}:f("Firebase","the project list")}async function h(e,t,r={}){var n=e,a=await m(t,r);if(!a.ok&&"scope"!==a.kind)return a;let i=a.ok?a.data:[];return{ok:!0,data:i.some(e=>e.projectId===n.project_id)?i:[{projectId:n.project_id,displayName:n.project_id},...i]}}async function g(e,t,r={}){let n=performance.now(),a=await p("Firestore",`https://firestore.googleapis.com/v1/projects/${encodeURIComponent(t)}/databases/(default)/documents/ops/ping`,{token:e},r),i=Math.round(performance.now()-n);if(a.ok)return{ok:!0,data:{reachable:!0,noDatabase:!1,latencyMs:i}};if("missing"===a.kind){let e=/database .*does not exist/i.test(a.message??"");return{ok:!0,data:{reachable:!e,noDatabase:e,latencyMs:i}}}return a}async function y(e,r,o={}){let s=await p("Firebase Auth",`https://identitytoolkit.googleapis.com/v1/projects/${encodeURIComponent(r)}/accounts:query`,{method:"POST",token:e,body:{returnUserInfo:!1}},o);if(!s.ok)return s;let l=t.z.object({recordsCount:a.z.union([n.z.string(),i.z.number()]).optional()}).safeParse(s.data),u=l.success?Number(l.data.recordsCount??0):0/0;return Number.isFinite(u)?{ok:!0,data:u}:f("Firebase Auth","the user count")}let b=t.z.object({timeSeries:r.z.array(t.z.object({points:r.z.array(t.z.object({value:t.z.object({int64Value:a.z.union([n.z.string(),i.z.number()]).optional()})})).optional()})).optional()});async function w(e,t,r,n,a,i){let o=new URLSearchParams({filter:`metric.type="firestore.googleapis.com/document/${r}_ops_count"`,"interval.startTime":n.toISOString(),"interval.endTime":a.toISOString(),"aggregation.alignmentPeriod":`${Math.max(60,Math.ceil((a.getTime()-n.getTime())/1e3))}s`,"aggregation.perSeriesAligner":"ALIGN_SUM","aggregation.crossSeriesReducer":"REDUCE_SUM"}),s=await p("Cloud Monitoring",`https://monitoring.googleapis.com/v3/projects/${encodeURIComponent(t)}/timeSeries?${o}`,{token:e},i);if(!s.ok)return s;let l=b.safeParse(s.data);return l.success?{ok:!0,data:(l.data.timeSeries??[]).flatMap(e=>e.points??[]).reduce((e,t)=>e+Number(t.value.int64Value??0),0)}:f("Cloud Monitoring","the Firestore usage")}async function v(e,t,r,n,a={}){let[i,o,s]=await Promise.all(["read","write","delete"].map(i=>w(e,t,i,r,n,a)));for(let e of[i,o,s])if(!e.ok)return e;return{ok:!0,data:{reads:i.data,writes:o.data,deletes:s.data}}}e.s(["q",0,y,"z",0,h,"W",0,v,"G",0,g],437122);var k=e.i(666680),_=e.i(542746),A=e.i(291815);let I=t.z.object({type:_.z.literal("service_account"),project_id:n.z.string().min(1),client_email:A.z.email(),private_key:n.z.string().includes("PRIVATE KEY"),private_key_id:n.z.string().optional()}),S="https://oauth2.googleapis.com/token",$=["https://www.googleapis.com/auth/datastore","https://www.googleapis.com/auth/identitytoolkit","https://www.googleapis.com/auth/monitoring.read","https://www.googleapis.com/auth/firebase.readonly"],T=e=>Buffer.from(e).toString("base64url");async function R(e,r={}){let a;try{var i;let t,n,o;i=Math.floor((r.now??new Date).getTime()/1e3),t=T(JSON.stringify({alg:"RS256",typ:"JWT",...e.private_key_id?{kid:e.private_key_id}:{}})),n=T(JSON.stringify({iss:e.client_email,scope:$.join(" "),aud:S,iat:i,exp:i+3600})),o=(0,k.createSign)("RSA-SHA256").update(`${t}.${n}`).sign(e.private_key),a=`${t}.${n}.${T(o)}`}catch{return{ok:!1,kind:"auth",error:"The private key in this service account can't be used. Paste the whole JSON file again."}}let o=new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:a}),s=await p("Google",S,{method:"POST",form:o},r);if(!s.ok)return"auth"===s.kind?{...s,error:"Google rejected this service account (its key was deleted or disabled). Create a new key."}:s;let l=t.z.object({access_token:n.z.string().min(1)}).safeParse(s.data);return l.success?{ok:!0,data:l.data.access_token}:f("Google","the access token")}e.s(["X",0,R,"p",0,function(e){try{let t=I.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}],319718);var x=e.i(246517);let E="https://console.neon.tech/api/v2",N="Neon";async function P(e,a={}){let i=await p(N,`${E}/users/me/organizations`,{token:e},a);if(!i.ok)return i;let o=t.z.object({organizations:r.z.array(t.z.object({id:n.z.string(),name:n.z.string()}))}).safeParse(i.data);return o.success?{ok:!0,data:o.data.organizations}:f(N,"the organization list")}let O=t.z.object({id:n.z.string(),name:n.z.string(),region_id:n.z.string(),pg_version:i.z.number().nullish(),created_at:n.z.string(),org_id:n.z.string().nullish()});async function C(e,a,i={}){let o,s=[];for(let l=0;l<5;l++){let l=new URLSearchParams({limit:String(100)});a&&l.set("org_id",a),o&&l.set("cursor",o);let u=await p(N,`${E}/projects?${l}`,{token:e},i);if(!u.ok)return u;let d=t.z.object({projects:r.z.array(O),pagination:t.z.object({cursor:n.z.string().nullish()}).nullish()}).safeParse(u.data);if(!d.success)return f(N,"the project list");for(let e of d.data.projects)s.push({id:e.id,name:e.name,region:e.region_id,pgVersion:e.pg_version??null,orgId:e.org_id??a,createdAt:e.created_at});if(o=d.data.pagination?.cursor??void 0,d.data.projects.length<100||!o)break}return{ok:!0,data:s}}async function j(e,t={}){let r=await P(e,t);if(!r.ok&&"missing"!==r.kind&&"scope"!==r.kind)return r;let n=r.ok&&r.data.length?r.data.map(e=>e.id):[null],a=[];for(let r of n){let n=await C(e,r,t);if(!n.ok)return n;a.push(...n.data)}return{ok:!0,data:a}}let D=t.z.object({project:t.z.object({region_id:n.z.string(),pg_version:i.z.number().nullish(),compute_time_seconds:i.z.number().nullish(),data_transfer_bytes:i.z.number().nullish(),active_time_seconds:i.z.number().nullish(),consumption_period_start:n.z.string().nullish(),consumption_period_end:n.z.string().nullish(),compute_last_active_at:n.z.string().nullish()})});async function M(e,t,r={}){let n=await p(N,`${E}/projects/${encodeURIComponent(t)}`,{token:e},r);if(!n.ok)return n;let a=D.safeParse(n.data);if(!a.success)return f(N,"the project");let i=a.data.project;return{ok:!0,data:{computeSeconds:i.compute_time_seconds??0,transferBytes:i.data_transfer_bytes??0,activeSeconds:i.active_time_seconds??null,periodStart:i.consumption_period_start??null,periodEnd:i.consumption_period_end??null,region:i.region_id,pgVersion:i.pg_version??null,lastActive:i.compute_last_active_at??null}}}let z=t.z.object({id:n.z.string(),branch_id:n.z.string(),current_state:n.z.string(),pending_state:n.z.string().nullish(),disabled:x.z.boolean().nullish(),autoscaling_limit_min_cu:i.z.number(),autoscaling_limit_max_cu:i.z.number(),last_active:n.z.string().nullish()}),q=e=>({id:e.id,branchId:e.branch_id,state:e.current_state,pendingState:e.pending_state??null,disabled:e.disabled??!1,minCu:e.autoscaling_limit_min_cu,maxCu:e.autoscaling_limit_max_cu,lastActive:e.last_active??null});async function L(e,n,a={}){let i=await p(N,`${E}/projects/${encodeURIComponent(n)}/endpoints`,{token:e},a);if(!i.ok)return i;let o=t.z.object({endpoints:r.z.array(z)}).safeParse(i.data);return o.success?{ok:!0,data:o.data.endpoints.map(q)}:f(N,"the compute list")}async function U(e,r,n,a={}){let i=await p(N,`${E}/projects/${encodeURIComponent(r)}/endpoints/${encodeURIComponent(n)}`,{token:e},a);if(!i.ok)return i;let o=t.z.object({endpoint:z}).safeParse(i.data);return o.success?{ok:!0,data:q(o.data.endpoint)}:f(N,"the compute")}async function H(e,t,r,n={}){let a=await p(N,`${E}/projects/${encodeURIComponent(t)}/endpoints/${encodeURIComponent(r)}/start`,{method:"POST",token:e},n);return a.ok?{ok:!0,data:null}:423===a.status?{ok:!1,kind:"busy",status:423,error:"Neon is busy with another operation. Try again in a minute."}:403===a.status?{ok:!1,kind:"scope",status:403,error:`${N} refused this request (403).`}:a}let B=t.z.object({id:n.z.string(),name:n.z.string(),default:x.z.boolean().nullish(),primary:x.z.boolean().nullish(),logical_size:i.z.number().nullish()});async function V(e,n,a={}){let i=await p(N,`${E}/projects/${encodeURIComponent(n)}/branches`,{token:e},a);if(!i.ok)return i;let o=t.z.object({branches:r.z.array(B)}).safeParse(i.data);return o.success?{ok:!0,data:o.data.branches.map(e=>({id:e.id,name:e.name,isDefault:e.default??e.primary??!1,logicalSize:e.logical_size??null}))}:f(N,"the branch list")}e.s(["m",0,j,"c",0,U,"Z",0,M,"e",0,V,"k",0,L,"d",0,H],941536);var G=e.i(932378);let K="https://api.supabase.com",F="Supabase",W=["auth","rest","realtime","storage","db"],X=t.z.object({ref:n.z.string(),name:n.z.string(),region:n.z.string(),created_at:n.z.string(),status:n.z.string(),organization_slug:n.z.string().optional(),organization_id:n.z.string().optional(),database:t.z.object({version:n.z.string().optional()}).nullish()}),J=e=>({ref:e.ref,name:e.name,orgSlug:e.organization_slug??e.organization_id??"",region:e.region,createdAt:e.created_at,status:e.status,pgVersion:e.database?.version??null});async function Y(e,t={}){let n=await p(F,`${K}/v1/projects`,{token:e},t);if(!n.ok)return n;let a=r.z.array(X).safeParse(n.data);return a.success?{ok:!0,data:a.data.map(J)}:f(F,"the project list")}async function Z(e,t,r={}){let n=await p(F,`${K}/v1/projects/${encodeURIComponent(t)}`,{token:e},r);if(!n.ok)return n;let a=X.safeParse(n.data);return a.success?{ok:!0,data:J(a.data)}:f(F,"the project")}async function Q(e,t,r,n){let a=await p(F,`${K}/v1/projects/${encodeURIComponent(e)}/${t}`,{method:"POST",token:r},n);return a.ok?{ok:!0,data:null}:403===a.status&&"scope"!==a.kind?{...a,kind:"scope",error:"Missing permission: project_admin_write."}:a}async function ee(e,t,r={}){let n=await p(F,`${K}/v1/projects/${encodeURIComponent(t)}/database/query/read-only`,{method:"POST",token:e,body:{query:"select 1"}},r);return n.ok?{ok:!0,data:null}:n}async function et(e,r,a={}){let i=await p(F,`${K}/v1/organizations/${encodeURIComponent(r)}`,{token:e},a);if(!i.ok)return i;let o=t.z.object({plan:n.z.string().optional()}).safeParse(i.data);return o.success?{ok:!0,data:o.data.plan??null}:f(F,"the organization")}async function er(e,a,i={}){let o=new URLSearchParams(W.map(e=>["services",e])),s=await p(F,`${K}/v1/projects/${encodeURIComponent(a)}/health?${o}`,{token:e},i);if(!s.ok)return s;let l=r.z.array(t.z.object({name:n.z.string(),status:n.z.string(),error:n.z.string().optional()})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({name:e.name,status:e.status,error:e.error??null}))}:f(F,"service health")}let en=t.z.object({result:r.z.array(t.z.object({timestamp:n.z.string(),total_auth_requests:i.z.number(),total_realtime_requests:i.z.number(),total_rest_requests:i.z.number(),total_storage_requests:i.z.number()})).optional(),error:G.z.unknown().optional()});async function ea(e,t,r={}){let n=await p(F,`${K}/v1/projects/${encodeURIComponent(t)}/analytics/endpoints/usage.api-counts?interval=7day`,{token:e},r);if(!n.ok)return n;let a=en.safeParse(n.data);return a.success?a.data.error?{ok:!1,kind:"transient",error:"Supabase couldn't read the API request counts this time."}:{ok:!0,data:(a.data.result??[]).map(e=>({at:new Date(e.timestamp),total:e.total_auth_requests+e.total_realtime_requests+e.total_rest_requests+e.total_storage_requests}))}:f(F,"the API request counts")}async function ei(e,o,s={}){let l=await p(F,`${K}/v1/projects/${encodeURIComponent(o)}/database/query/read-only`,{method:"POST",token:e,body:{query:"select pg_database_size(current_database())::bigint as bytes"}},s);if(!l.ok)return l;let u=r.z.array(t.z.object({bytes:a.z.union([i.z.number(),n.z.string()])})).min(1).safeParse(l.data),d=u.success?Number(u.data[0].bytes):0/0;return Number.isFinite(d)?{ok:!0,data:d}:f(F,"the database size")}e.s(["Z",0,ea,"r",0,ei,"e",0,Z,"i",0,ee,"W",0,Y,"K",0,et,"c",0,(e,t,r={})=>Q(t,"pause",e,r),"G",0,(e,t,r={})=>Q(t,"restore",e,r),"F",0,er],686454);let eo="https://api.turso.tech/v1",es="Turso",el=t.z.object({slug:n.z.string(),name:n.z.string().default(""),plan_id:n.z.string().nullish(),blocked_reads:x.z.boolean().nullish(),blocked_writes:x.z.boolean().nullish()});async function eu(e,t={}){let n=await p(es,`${eo}/organizations`,{token:e},t);if(!n.ok)return n;let a=r.z.array(el).safeParse(n.data);return a.success?{ok:!0,data:a.data.map(e=>({slug:e.slug,name:e.name||e.slug,plan:e.plan_id??null,blockedReads:e.blocked_reads??!1,blockedWrites:e.blocked_writes??!1}))}:f(es,"the organization list")}let ed=t.z.object({Name:n.z.string(),DbId:n.z.string(),group:n.z.string().nullish(),primaryRegion:n.z.string().nullish(),block_reads:x.z.boolean().nullish(),block_writes:x.z.boolean().nullish()});async function ec(e,n,a={}){let i=await p(es,`${eo}/organizations/${encodeURIComponent(n)}/databases`,{token:e},a);if(!i.ok)return i;let o=t.z.object({databases:r.z.array(ed)}).safeParse(i.data);return o.success?{ok:!0,data:o.data.databases.map(e=>({id:e.DbId,name:e.Name,org:n,group:e.group??null,primaryRegion:e.primaryRegion??null,blockReads:e.block_reads??!1,blockWrites:e.block_writes??!1}))}:f(es,"the database list")}async function ep(e,t={}){let r=await eu(e,t);if(!r.ok)return r;let n=[];for(let a of r.data.slice(0,10)){let r=await ec(e,a.slug,t);if(!r.ok)return r;n.push(...r.data)}return{ok:!0,data:n}}let ef=t.z.object({rows_read:i.z.number().default(0),rows_written:i.z.number().default(0),storage_bytes:i.z.number().default(0)}),em=t.z.object({organization:t.z.object({usage:ef.extend({databases:i.z.number().nullish()})}),databases:r.z.array(t.z.object({uuid:n.z.string(),total:ef.nullish()})).nullish()}),eh=e=>({rowsRead:e.rows_read,rowsWritten:e.rows_written,storageBytes:e.storage_bytes});async function eg(e,t,r={}){let n=await p(es,`${eo}/organizations/${encodeURIComponent(t)}/usage`,{token:e},r);return n.ok?function(e){let t=em.safeParse(e);if(!t.success)return f(es,"the usage");let r=new Map;for(let e of t.data.databases??[])e.total&&r.set(e.uuid,eh(e.total));return{ok:!0,data:{org:{...eh(t.data.organization.usage),databases:t.data.organization.usage.databases??null},byDb:r}}}(n.data):n}e.s(["t",0,ep,"X",0,ec,"u",0,eu,"d",0,eg],582888);let ey="https://api.upstash.com/v2",eb="Upstash",ew=e=>({basic:{user:e.email,pass:e.apiKey}}),ev=t.z.object({database_id:n.z.string(),database_name:n.z.string(),region:n.z.string().nullish(),primary_region:n.z.string().nullish(),state:n.z.string().nullish(),type:n.z.string().nullish()});async function ek(e,t={}){let n=await p(eb,`${ey}/redis/databases`,ew(e),t);if(!n.ok)return n;let a=r.z.array(ev).safeParse(n.data??[]);return a.success?{ok:!0,data:a.data.map(e=>({id:e.database_id,name:e.database_name,region:"global"===e.region&&e.primary_region?`global \xb7 ${e.primary_region}`:e.region??e.primary_region??null,state:e.state??null,type:e.type??null}))}:f(eb,"the database list")}let e_=i.z.number().nullish(),eA=t.z.object({daily_net_commands:e_,total_monthly_requests:e_,current_storage:e_,total_monthly_bandwidth:e_});async function eI(e,t,r={}){var n;let a,i=await p(eb,`${ey}/redis/stats/${encodeURIComponent(t)}`,ew(e),r);return i.ok?(n=i.data,(a=eA.safeParse(n)).success?{ok:!0,data:{dailyCommands:a.data.daily_net_commands??null,monthlyRequests:a.data.total_monthly_requests??null,storageBytes:a.data.current_storage??null,monthlyBandwidthBytes:a.data.total_monthly_bandwidth??null}}:f(eb,"the database stats")):i}e.s(["M",0,ek,"L",0,function(e){let t=e.trim(),r=t.search(/[:\s]/);if(r<=0)return null;let n=t.slice(0,r).trim(),a=t.slice(r+1).trim();return!/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/.test(n)||a.length<20||/\s/.test(a)?null:{email:n,apiKey:a}},"Z",0,eI],811539)},38607,e=>{var t=e.i(909592),r=e.i(75064),n=e.i(492973),a=e.i(260417),i=e.i(819263),o=e.i(974034),s=e.i(958948);let l=t.z.array(r.z.object({name:n.z.string(),type:n.z.string(),sha:n.z.string(),size:a.z.number().optional()}));async function u(e,t,r,n={},a=null){if(!(0,s.M)(t)||!(0,s.c)(r))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==a&&(0,o.Q)(a)!==a)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let i=a?a.split("/").map(encodeURIComponent).join("/"):"",d=await (0,s.j)(`/repos/${(0,s.f)(t)}/contents/${i}?ref=${encodeURIComponent(r)}`,e,n);if(!d.ok)return d;let c=l.safeParse(d.data);return c.success?{ok:!0,data:c.data.filter(e=>"file"===e.type&&/^[0-9a-f]{40}$/.test(e.sha)).map(e=>({name:e.name,sha:e.sha,size:e.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function d(e,t,r,n={}){if(!(0,s.M)(t)||!(0,s.c)(r))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let a=await (0,s.j)(`/repos/${(0,s.f)(t)}/git/ref/heads/${r.split("/").map(encodeURIComponent).join("/")}`,e,n);return a.ok?{ok:!0,data:!0}:"missing"===a.kind?{ok:!0,data:!1}:a}async function c(e,t,r={}){if(!(0,s.M)(t))return{ok:!1,kind:"format",error:"That isn't a repository name."};let n=await (0,s.j)(`/repos/${(0,s.f)(t)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,e,r);if(!n.ok)return"scope"===n.kind||"missing"===n.kind?{ok:!0,data:{denied:!0}}:n;let a=(0,i.E)(n.data);return a?{ok:!0,data:{alerts:a}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}e.s(["y",0,0xf00000,"V",0,d,"t",0,c,"Z",0,function(e,t,r,n,a,i={}){return(0,s.V)(e,t,r,n,a,i)},"W",0,u])},348657,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(246517),a=e.i(542746),i=e.i(260417),o=e.i(909592),s=e.i(79322),l=e.i(821342),u=e.i(958948);async function d(e,t,r,n,a,i=!1){let o,s=a.timeoutMs??8e3;try{o=await (a.fetch??fetch)(`https://api.github.com${t}`,{method:e,headers:{Authorization:`Bearer ${r}`,Accept:i?"application/vnd.github.raw+json":"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==n?{"Content-Type":"application/json"}:{}},body:void 0!==n?JSON.stringify(n):void 0,signal:AbortSignal.timeout(s),cache:"no-store",redirect:"error"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(s/1e3)} seconds.`:"Couldn't reach GitHub."}}let l=await o.text().catch(()=>"");if(i&&o.ok)return{ok:!0,status:o.status,data:l};let u=null;try{u=l?JSON.parse(l):null}catch{u=null}if(o.ok)return{ok:!0,status:o.status,data:u};let c=o.status;return 401===c?{ok:!1,kind:"auth",status:c,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===c||403===c&&"0"===o.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:c,error:"GitHub's rate limit is used up for now. Try again later."}:403===c?{ok:!1,kind:"scope",status:c,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===c?{ok:!1,kind:"missing",status:c,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===c||422===c?{ok:!1,kind:"format",status:c,error:`GitHub refused the change (${c}).`}:{ok:!1,kind:"transient",status:c,error:`GitHub returned an error (${c}).`}}let c=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`}),p={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function f(e,a,i={}){if(!(0,u.M)(a))return p;let o=await d("GET",`/repos/${(0,u.f)(a)}`,e,void 0,i);if(!o.ok)return o;let s=t.z.object({default_branch:r.z.string(),permissions:t.z.object({push:n.z.boolean()}).partial().optional()}).safeParse(o.data);return s.success&&(0,u.c)(s.data.default_branch)?{ok:!0,data:{defaultBranch:s.data.default_branch,canPush:s.data.permissions?.push??null}}:c("the repository")}async function m(e,n,a,i={}){if(!(0,u.M)(n)||!(0,u.c)(a))return p;let o=await d("GET",`/repos/${(0,u.f)(n)}/git/ref/heads/${a.split("/").map(encodeURIComponent).join("/")}`,e,void 0,i);if(!o.ok)return"missing"===o.kind?{ok:!0,data:null}:o;let s=t.z.object({object:t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(o.data);return s.success?{ok:!0,data:s.data.object.sha}:c("the branch")}let h=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}package\.json$/,g=e=>h.test(e)&&!e.split("/").some(e=>"."===e||".."===e),y=(e,t)=>`/repos/${(0,u.f)(e)}/contents/${t.split("/").map(encodeURIComponent).join("/")}`;async function b(e,n,i,o={},s="package.json"){if(!(0,u.M)(n)||!(0,u.c)(i)||!g(s))return p;let l=await d("GET",`${y(n,s)}?ref=${encodeURIComponent(i)}`,e,void 0,o);if(!l.ok)return"missing"===l.kind?{ok:!0,data:null}:l;let f=t.z.object({sha:r.z.string(),encoding:a.z.literal("base64"),content:r.z.string()}).safeParse(l.data);return f.success?{ok:!0,data:{sha:f.data.sha,text:Buffer.from(f.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:c("package.json")}let w=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}(?:package-lock|npm-shrinkwrap)\.json$/,v=e=>w.test(e)&&!e.split("/").some(e=>"."===e||".."===e);async function k(e,t,r,n,a={}){if(!(0,u.M)(t)||!(0,u.c)(r)||!v(n))return p;let i=await d("GET",`${y(t,n)}?ref=${encodeURIComponent(r)}`,e,void 0,{timeoutMs:2e4,...a},!0);return i.ok?"string"==typeof i.data?{ok:!0,data:i.data}:c("the lockfile"):"missing"===i.kind?{ok:!0,data:null}:i}async function _(e,t,r,n,a,i={}){if(!(0,u.M)(t)||!(0,l.c)(r,a)||!/^[0-9a-f]{40}$/.test(n))return p;let o=await d("POST",`/repos/${(0,u.f)(t)}/git/refs`,e,{ref:`refs/heads/${r}`,sha:n},i);return o.ok?{ok:!0,data:!0}:o}async function A(e,t,r,n,a,i,o,s={},c="package.json"){if(!(0,u.M)(t)||!(0,l.c)(r,n)||!g(c))return p;let f=await d("PUT",y(t,c),e,{message:o,content:Buffer.from(a,"utf8").toString("base64"),sha:i,branch:r},s);return f.ok?{ok:!0,data:!0}:f}let I=t.z.object({number:i.z.number(),html_url:r.z.string().startsWith("https://github.com/")});async function S(e,t,r,n,a,i={}){if(!(0,u.M)(t)||!(0,l.c)(n,a))return p;let s=new URLSearchParams({state:"open",head:`${r}:${n}`,per_page:"1"}),f=await d("GET",`/repos/${(0,u.f)(t)}/pulls?${s}`,e,void 0,i);if(!f.ok)return f;let m=o.z.array(I).safeParse(f.data);if(!m.success)return c("the pull requests");let h=m.data[0];return{ok:!0,data:h?{number:h.number,url:h.html_url}:null}}async function $(e,t,r,n,a,i,o={},s={}){if(!(0,u.M)(t)||!(0,l.c)(r,n)||!(0,u.c)(n))return p;let f=await d("POST",`/repos/${(0,u.f)(t)}/pulls`,e,{title:a,head:r,base:n,body:i,maintainer_can_modify:!0,...s.draft?{draft:!0}:{}},o);if(!f.ok)return f;let m=I.safeParse(f.data);return m.success?{ok:!0,data:{number:m.data.number,url:m.data.html_url}}:c("the new pull request")}let T=o.z.array(t.z.object({number:i.z.number(),title:r.z.string(),head:t.z.object({ref:r.z.string(),sha:r.z.string(),repo:t.z.object({full_name:r.z.string()}).nullable()}),base:t.z.object({ref:r.z.string()})}));async function R(e,t,r={}){if(!(0,u.M)(t))return p;let n=await d("GET",`/repos/${(0,u.f)(t)}/pulls?state=open&per_page=100`,e,void 0,r);if(!n.ok)return n;let a=T.safeParse(n.data);return a.success?{ok:!0,data:a.data.filter(e=>/^watchpost\/deps-[0-9a-f]{8}$/.test(e.head.ref)&&e.head.repo?.full_name===t).map(e=>({number:e.number,branch:e.head.ref,title:e.title,headSha:e.head.sha,base:e.base.ref}))}:c("the pull requests")}async function x(e,a,i,o={}){if(!(0,u.M)(a)||!Number.isInteger(i)||i<=0)return p;let l=await d("GET",`/repos/${(0,u.f)(a)}/pulls/${i}`,e,void 0,o);if(!l.ok)return l;let f=t.z.object({state:s.z.enum(["open","closed"]),merged:n.z.boolean().optional(),mergeable:n.z.boolean().nullable().optional(),head:t.z.object({ref:r.z.string(),sha:r.z.string().regex(/^[0-9a-f]{40}$/)}),base:t.z.object({ref:r.z.string()})}).safeParse(l.data);return f.success?{ok:!0,data:{state:f.data.state,merged:!0===f.data.merged,mergeable:f.data.mergeable??null,headSha:f.data.head.sha,branch:f.data.head.ref,base:f.data.base.ref}}:c("the pull request")}async function E(e,n,a,s={}){if(!(0,u.M)(n)||!/^[0-9a-f]{40}$/.test(a))return p;let[l,c]=await Promise.all([d("GET",`/repos/${(0,u.f)(n)}/commits/${a}/check-runs?per_page=100`,e,void 0,s),d("GET",`/repos/${(0,u.f)(n)}/commits/${a}/status`,e,void 0,s)]),f=e=>!e.ok&&("scope"===e.kind||"missing"===e.kind);if(!l.ok&&!f(l))return l;if(!c.ok&&!f(c))return c;let m=l.ok?t.z.object({check_runs:o.z.array(t.z.object({status:r.z.string(),conclusion:r.z.string().nullable()}))}).safeParse(l.data):null,h=c.ok?t.z.object({state:r.z.string(),total_count:i.z.number()}).safeParse(c.data):null;return{ok:!0,data:{checkRuns:m?.success?m.data.check_runs.map(e=>({status:e.status,conclusion:e.conclusion})):null,combined:h?.success?{state:h.data.state,total:h.data.total_count}:null}}}async function N(e,a,i,o,s,f,m,h={}){if(!(0,u.M)(a)||!(0,l.c)(o,s)||!/^[0-9a-f]{40}$/.test(f)||!Number.isInteger(i)||i<=0)return p;let g=await d("PUT",`/repos/${(0,u.f)(a)}/pulls/${i}/merge`,e,{merge_method:"squash",sha:f,commit_title:`Watchbell: ${m.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},h);if(!g.ok)return 405===g.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===g.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:g;let y=t.z.object({merged:n.z.boolean(),sha:r.z.string()}).safeParse(g.data);return y.success&&y.data.merged?{ok:!0,data:{sha:y.data.sha}}:c("the merge")}async function P(e,n,a,i={}){if(!(0,u.M)(n)||!Number.isInteger(a)||a<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${a}/files?per_page=100`,e,void 0,i);if(!s.ok)return s;let l=o.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({filename:e.filename,previous:e.previous_filename??null}))}:c("the PR's files")}let O=t.z.object({name:r.z.string().optional(),email:r.z.string().optional()}).nullable().optional();async function C(e,n,a,i={}){if(!(0,u.M)(n)||!Number.isInteger(a)||a<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${a}/commits?per_page=100`,e,void 0,i);if(!s.ok)return s;let l=o.z.array(t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/),author:t.z.object({login:r.z.string()}).nullable().optional(),commit:t.z.object({message:r.z.string(),author:O})})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({sha:e.sha,login:e.author?.login??null,name:e.commit.author?.name??"",email:e.commit.author?.email??"",message:e.commit.message}))}:c("the PR's commits")}async function j(e,n,a,i={}){if(!(0,u.M)(n)||!/^[0-9a-f]{40}$/.test(a))return p;let s=await d("GET",`/repos/${(0,u.f)(n)}/commits/${a}`,e,void 0,i);if(!s.ok)return s;let l=t.z.object({files:o.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()}))}).safeParse(s.data);return l.success?{ok:!0,data:l.data.files.flatMap(e=>[e.filename,...e.previous_filename?[e.previous_filename]:[]])}:c("the commit")}async function D(e,n={}){let a=await d("GET","/user",e,void 0,n);if(!a.ok)return a;let i=t.z.object({login:r.z.string().min(1)}).safeParse(a.data);return i.success?{ok:!0,data:i.data.login}:c("the token's user")}async function M(e,t,r,n={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(t))return p;let a=await d("POST",`/repos/${t}/dispatches`,e,{event_type:"watchpost-lockfile",client_payload:r},n);return a.ok?{ok:!0,data:!0}:a}e.s(["M",0,m,"s",0,E,"h",0,j,"k",0,_,"y",0,$,"B",0,M,"$",0,v,"l",0,k,"E",0,b,"C",0,N,"x",0,S,"e",0,R,"P",0,C,"O",0,P,"b",0,x,"D",0,A,"H",0,f,"z",0,D])},958948,e=>{var t=e.i(75064),r=e.i(260417),n=e.i(492973),a=e.i(246517),i=e.i(909592);let o=e=>/^[A-Za-z0-9_.-]{1,100}\/[A-Za-z0-9_.-]{1,100}$/.test(e)&&!e.includes(".."),s=e=>e.split("/").map(encodeURIComponent).join("/");async function l(e,t,r,n="application/vnd.github+json"){let a,i=r.timeoutMs??5e3;try{a=await (r.fetch??fetch)(`https://api.github.com${e}`,{headers:{Authorization:`Bearer ${t}`,Accept:n,"X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell"},signal:AbortSignal.timeout(i),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(i/1e3)} seconds.`:"Couldn't reach GitHub."}}let o=await a.text().catch(()=>"");if(a.ok){let e=null;if(n.endsWith("+json")&&!n.includes(".raw"))try{e=JSON.parse(o)}catch{e=null}return{ok:!0,data:e,text:o,headers:a.headers}}let s=a.status;if(401===s)return{ok:!1,kind:"auth",status:s,error:"GitHub rejected this token (401). It may have expired or been revoked."};if((403===s||429===s)&&("0"===a.headers.get("x-ratelimit-remaining")||429===s)){let e=Number(a.headers.get("x-ratelimit-reset"));return{ok:!1,kind:"transient",status:s,retryAfterS:Number.isFinite(e)&&e>0?Math.max(1,e-Math.floor(Date.now()/1e3)):60,error:"GitHub's rate limit is used up for now. The next run tries again."}}return 403===s?{ok:!1,kind:"scope",status:s,error:"This token can't read that (403). It needs Metadata, Contents and Actions read on the repository."}:404===s?{ok:!1,kind:"missing",status:s,error:"GitHub doesn't show this to the token (404)."}:{ok:!1,kind:"transient",status:s,error:`GitHub returned an error (${s}).`}}let u=t.z.object({id:r.z.number(),name:n.z.string(),full_name:n.z.string(),owner:t.z.object({login:n.z.string()}),default_branch:n.z.string().nullish(),private:a.z.boolean(),archived:a.z.boolean().optional(),html_url:n.z.string().nullish(),pushed_at:n.z.string().nullish()}),d=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`});async function c(e,r={}){let a=await l("/user",e,r);return a.ok?t.z.object({login:n.z.string()}).safeParse(a.data).success?{ok:!0,data:{expiresAt:function(e){let t=e.get("github-authentication-token-expiration")?.trim();if(!t)return null;let r=/^(\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2}:\d{2})\s*(UTC|Z|[+-]\d{2}:?\d{2})?$/.exec(t);if(!r)return null;let n=r[3]&&"UTC"!==r[3]&&"Z"!==r[3]?r[3].includes(":")?r[3]:`${r[3].slice(0,3)}:${r[3].slice(3)}`:"Z",a=new Date(`${r[1]}T${r[2]}${n}`);return Number.isNaN(a.getTime())?null:a}(a.headers)}}:d("the token check"):a}async function p(e,t={}){let r=[];for(let n=1;n<=3;n++){let a=await l(`/user/repos?per_page=100&page=${n}&sort=pushed&affiliation=owner,collaborator,organization_member`,e,t);if(!a.ok)return a;let s=i.z.array(u).safeParse(a.data);if(!s.success)return d("the repository list");for(let e of s.data){if(!o(e.full_name))continue;let t=e.pushed_at?new Date(e.pushed_at):null;r.push({id:String(e.id),owner:e.owner.login,name:e.name,fullName:e.full_name,defaultBranch:e.default_branch??null,private:e.private,archived:e.archived??!1,htmlUrl:e.html_url??null,pushedAt:t&&!Number.isNaN(t.getTime())?t:null})}if(s.data.length<100)return{ok:!0,data:{repos:r,truncated:!1}}}return{ok:!0,data:{repos:r,truncated:!0}}}async function f(e,t,r={}){if(!o(t))return{ok:!0,data:null};let n=await l(`/repos/${s(t)}/contents/package.json`,e,r,"application/vnd.github.raw+json");if(!n.ok)return"missing"===n.kind?{ok:!0,data:null}:n;if(n.text.length>262144)return{ok:!0,data:null};try{let e=JSON.parse(n.text).name;return{ok:!0,data:"string"==typeof e&&e.trim()&&e.length<=214?e.trim():null}}catch{return{ok:!0,data:null}}}let m=t.z.object({total_count:r.z.number(),workflow_runs:i.z.array(t.z.object({status:n.z.string().nullish(),conclusion:n.z.string().nullish(),name:n.z.string().nullish(),display_title:n.z.string().nullish(),head_branch:n.z.string().nullish(),head_sha:n.z.string().nullish(),html_url:n.z.string().nullish(),run_number:r.z.number().nullish(),updated_at:n.z.string().nullish(),created_at:n.z.string().nullish()}))});async function h(e,t,r,n={}){if(!o(t))return{ok:!1,kind:"format",error:"That isn't a repository name."};let a=new URLSearchParams({per_page:"1",exclude_pull_requests:"true",...r?{branch:r}:{}}),i=await l(`/repos/${s(t)}/actions/runs?${a}`,e,n);if(!i.ok)return i;let u=m.safeParse(i.data);if(!u.success)return d("the Actions runs");let c=u.data.workflow_runs[0];return c?{ok:!0,data:{status:c.status??"unknown",conclusion:c.conclusion??null,name:c.name??c.display_title??null,branch:c.head_branch??null,sha:c.head_sha??null,url:c.html_url?.startsWith("https://github.com/")?c.html_url:null,at:c.updated_at??c.created_at??null,runNumber:c.run_number??null}}:{ok:!0,data:{none:!0}}}let g=e=>/^[A-Za-z0-9._\/-]{1,200}$/.test(e)&&!e.includes("..")&&!e.startsWith("/")&&!e.endsWith("/");async function y(e,t,r,n,a,i={}){if(!o(t)||!g(n)||!r||r.split("/").includes("..")||r.startsWith("/"))return{ok:!1,kind:"format",error:"That isn't a file in a repository."};let u=r.split("/").map(encodeURIComponent).join("/"),d=await l(`/repos/${s(t)}/contents/${u}?ref=${encodeURIComponent(n)}`,e,i,"application/vnd.github.raw+json");return d.ok?Buffer.byteLength(d.text,"utf8")>a||d.text.includes("\0")||(d.text.match(/�/g)?.length??0)>8?{ok:!0,data:null}:{ok:!0,data:d.text}:d}async function b(e,r,a,u={}){if(!o(r)||!/^[0-9a-f]{40}$/.test(a))return{ok:!1,kind:"format",error:"That isn't a repository or commit."};let c=await l(`/repos/${s(r)}/actions/runs?head_sha=${a}&per_page=50`,e,u);if(!c.ok)return c;let p=t.z.object({workflow_runs:i.z.array(t.z.object({status:n.z.string().nullish(),conclusion:n.z.string().nullish()}))}).safeParse(c.data);return p.success?{ok:!0,data:p.data.workflow_runs.map(e=>({status:e.status??"queued",conclusion:e.conclusion??null}))}:d("the Actions runs")}t.z.object({sha:n.z.string().optional(),truncated:a.z.boolean().optional(),tree:i.z.array(t.z.object({path:n.z.string(),type:n.z.string(),size:r.z.number().optional()}))}),e.s(["$",0,262144,"V",0,y,"j",0,l,"k",0,c,"M",0,o,"c",0,g,"W",0,h,"o",0,p,"q",0,f,"f",0,s,"L",0,b])},198552,974034,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(909592),a=e.i(260417),i=e.i(710075),o=e.i(932378),s=e.i(246517);let l=/^[A-Za-z0-9._-]{1,100}$/,u=e=>e.trim().replace(/^\.\//,"").split("/").filter(e=>""!==e&&"."!==e);function d(e){if("string"!=typeof e)return null;let t=u(e);if(!t.length||t.length>4||t.some(e=>".."===e||!l.test(e)))return null;let r=t.join("/");return r.length<=150?r:null}function c(e){if("string"!=typeof e||!u(e).length||null!==d(e))return null;let t=e.replace(/[\u0000-\u001f\u007f-\u009f]/g,"").trim();return t?t.length>80?`${t.slice(0,79)}…`:t:null}function p(e){let t=e.trim().replace(/^\.\//,"").replace(/\/+$/,"").split("**").map(e=>e.split("*").map(e=>e.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join("[^/]*")).join(".*");return RegExp(`^${t}$`)}e.s(["Q",0,d,"x",0,e=>e?`${e} (the Vercel project's Root Directory)`:"the repository root","H",0,(e,t)=>e?`${e}/${t}`:t,"p",0,function(e,t,r){if("npm"===e)try{let e=JSON.parse(t);return!!e.packages&&"object"==typeof e.packages&&Object.hasOwn(e.packages,r)}catch{return!1}if("pnpm"===e){let e=t.search(/^importers:\s*$/m);if(e<0)return!1;let n=t.slice(e).split(/\n(?=\S)/)[0],a=r.replace(/[.+?^${}()|[\]\\]/g,"\\$&");return RegExp(`^ {2}['"]?${a}['"]?:\\s*$`,"m").test(n)}return!1},"l",0,c,"F",0,function(e,t){let r;if(!e)return!1;try{r=JSON.parse(e)}catch{return!1}let n=r&&"object"==typeof r&&!Array.isArray(r)?r.workspaces:void 0,a=(Array.isArray(n)?n:n&&"object"==typeof n&&Array.isArray(n.packages)?n.packages:[]).filter(e=>"string"==typeof e&&""!==e.trim()),i=a.filter(e=>e.trim().startsWith("!")).map(e=>e.trim().slice(1));return a.some(e=>!e.trim().startsWith("!")&&p(e).test(t))&&!i.some(e=>p(e).test(t))}],974034);let f="https://api.vercel.com";async function m(e,t,r){let n;try{n=await (r.fetch??fetch)(`${f}${e}`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?"Vercel didn't answer within 5 seconds.":"Couldn't reach Vercel."}}if(401===n.status||403===n.status)return{ok:!1,kind:"auth",status:n.status,error:`Vercel rejected this credential (${n.status}).`};if(429===n.status){let e=Number(n.headers.get("Retry-After"));return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60,error:"Vercel says there were too many requests."}}return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,kind:"transient",status:n.status,error:`Vercel returned an error (${n.status}).`}}async function h(e,n,a,i,o){let s;try{s=await (o.fetch??fetch)(`${f}${n}`,{method:e,headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...void 0===i?{}:{"Content-Type":"application/json"}},...void 0===i?{}:{body:JSON.stringify(i)},signal:AbortSignal.timeout(o.timeoutMs??5e3),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?"Vercel didn't answer within 5 seconds; the action may still have happened. Check the deployments in a minute.":"Couldn't reach Vercel."}}if(401===s.status)return{ok:!1,kind:"auth",status:401,error:"Vercel rejected this credential (401)."};if(403===s.status)return{ok:!1,kind:"scope",status:403,error:"Vercel refused this token for that project (403)."};if(429===s.status){let e;return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(e=Number(s.headers.get("Retry-After")))&&e>0?e:60,error:"Vercel says there were too many requests."}}let l=await s.json().catch(()=>null);if(!s.ok){let e=t.z.object({error:t.z.object({code:r.z.string().regex(/^[A-Za-z0-9_-]{1,60}$/)})}).safeParse(l);return{ok:!1,kind:"transient",status:s.status,error:`Vercel refused this (${s.status}${e.success?`, ${e.data.error.code}`:""}).`}}return{ok:!0,data:l}}let g=e=>`teamId=${encodeURIComponent(e)}`,y=encodeURIComponent,b=e=>({ok:!1,kind:"format",error:`Vercel answered ${e} in a format the console doesn't recognise.`});function w(e,t,r=[]){let n=e.filter(e=>!1!==e.verified&&!e.redirect&&!e.gitBranch&&!e.customEnvironmentId),a=new Set(r.map(e=>e.toLowerCase())),i=n.map((t,r)=>{let n;return{name:t.name,key:[...(n=t.name,[+!e.some(e=>e.redirect?.toLowerCase()===n.toLowerCase()),+!!n.endsWith(".vercel.app"),+!a.has(n.toLowerCase()),n.length]),r]}}).sort((e,t)=>{for(let r=0;r<e.key.length;r++)if(e.key[r]!==t.key[r])return e.key[r]-t.key[r];return 0});return i[0]?.name??`${t}.vercel.app`}let v=t.z.object({teams:n.z.array(t.z.object({id:r.z.string(),slug:r.z.string(),name:r.z.string().nullish()}))});async function k(e,t={}){let r=await m("/v2/teams?limit=100",e,t);if(!r.ok)return r;let n=v.safeParse(r.data);return n.success?{ok:!0,data:n.data.teams.map(e=>({id:e.id,slug:e.slug,name:e.name??e.slug}))}:b("the team list")}async function _(e,r={}){let n=await m("/v5/user/tokens/current",e,r);if(!n.ok)return n;let i=t.z.object({token:t.z.object({expiresAt:a.z.number().nullish()})}).safeParse(n.data);return i.success?{ok:!0,data:i.data.token.expiresAt?new Date(i.data.token.expiresAt):null}:b("the token details")}let A=t.z.object({id:r.z.string(),readyState:r.z.string().nullish(),createdAt:a.z.number().nullish().catch(null),alias:n.z.array(r.z.string()).nullish().catch(null)}).nullish(),I=t.z.object({type:r.z.string(),jobStatus:r.z.string(),toDeploymentId:r.z.string(),requestedAt:a.z.number()}).nullish().catch(null);function S(e,t){let r=e?.readyState==="READY"?e.id:null;return t&&"succeeded"===t.jobStatus&&("rollback"===t.type||"promote"===t.type&&"number"==typeof e?.createdAt&&e.createdAt<=t.requestedAt)?t.toDeploymentId:r}let $=t.z.object({id:r.z.string(),name:r.z.string(),framework:r.z.string().nullish(),createdAt:a.z.number(),link:t.z.object({productionBranch:r.z.string().nullish(),type:r.z.string().nullish(),org:r.z.string().nullish(),repo:r.z.string().nullish()}).nullish(),resourceConfig:t.z.object({functionDefaultRegions:n.z.array(r.z.string()).nullish()}).nullish(),targets:t.z.object({production:A}).nullish(),lastAliasRequest:I,rootDirectory:r.z.string().nullish().catch(null)}),T=t.z.object({projects:n.z.array($),pagination:t.z.object({next:a.z.number().nullish()}).nullish()});async function R(e,t,r={}){let n,a=[];for(let i=0;i<10;i++){let i=await m(`/v10/projects?teamId=${encodeURIComponent(t.id)}&limit=100${n?`&until=${n}`:""}`,e,r);if(!i.ok)return i;let o=T.safeParse(i.data);if(!o.success)return b("the project list");for(let e of o.data.projects)a.push({id:e.id,name:e.name,team:t,framework:e.framework??null,createdAt:new Date(e.createdAt),productionBranch:e.link?.productionBranch??null,currentDeploymentId:S(e.targets?.production,e.lastAliasRequest),repo:e.link?.type&&e.link.org&&e.link.repo?{type:e.link.type,org:e.link.org,repo:e.link.repo}:null,functionRegions:e.resourceConfig?.functionDefaultRegions??[],rootDirectory:d(e.rootDirectory),rootDirectoryUnsupported:c(e.rootDirectory),productionAliases:e.targets?.production?.alias??[]});if(!(n=o.data.pagination?.next))break}return{ok:!0,data:a}}let x=t.z.object({uid:r.z.string(),projectId:r.z.string(),state:r.z.string().nullish(),readyState:r.z.string().nullish(),target:r.z.string().nullish(),source:r.z.string().nullish(),url:r.z.string().nullish(),createdAt:a.z.number().nullish(),created:a.z.number().nullish(),buildingAt:a.z.number().nullish(),ready:a.z.number().nullish(),meta:i.z.record(r.z.string(),o.z.unknown()).nullish(),gitSource:t.z.object({ref:r.z.string().nullish(),sha:r.z.string().nullish()}).nullish().catch(null)}),E=e=>"string"==typeof e&&e.length?e:null,N=e=>e?new Date(e):null;function P(e,t){var r,n;let a,i,o=e.readyState??e.state??"BUILDING",s=e.meta??{};return{id:t,projectId:e.projectId,state:"READY"===o?"ready":"ERROR"===o?"error":"CANCELED"===o?"canceled":"building",rawState:o,target:"production"===e.target?"production":"preview",branch:E(s.githubCommitRef)??E(s.gitCommitRef)??E(s.gitlabCommitRef)??E(s.bitbucketCommitRef)??E(e.gitSource?.ref),sha:E(s.githubCommitSha)??E(s.gitCommitSha)??E(s.gitlabCommitSha)??E(s.bitbucketCommitSha)??E(e.gitSource?.sha),message:E(s.githubCommitMessage)??E(s.gitCommitMessage)??E(s.gitlabCommitMessage)??E(s.bitbucketCommitMessage),source:e.source??null,url:e.url??null,createdAt:new Date(e.createdAt??e.created??0),buildingAt:N(e.buildingAt),readyAt:N(e.ready),...(r=s,n=e.gitSource?.ref,a=E(r.githubCommitRef)?"github":E(r.gitlabCommitRef)?"gitlab":E(r.bitbucketCommitRef)?"bitbucket":E(n)?"gitSource":E(r.gitCommitRef)?"cli":null,i="1"===r.gitDirty||1===r.gitDirty||!0===r.gitDirty,{...a?{branchFrom:a}:{},...i?{gitDirty:!0}:{}})}}async function O(e,r,a,i={}){let o=await m(`/v7/deployments?teamId=${encodeURIComponent(r.id)}&limit=${a.limit??100}${a.since?`&since=${a.since}`:""}`,e,i);if(!o.ok)return o;let s=t.z.object({deployments:n.z.array(x)}).safeParse(o.data);return s.success?{ok:!0,data:s.data.deployments.map(e=>P(e,e.uid))}:b("the deployment list")}let C=x.omit({uid:!0,projectId:!0}).extend({id:r.z.string(),projectId:r.z.string().nullish()});async function j(e,t,r,n={}){let a=await m(`/v13/deployments/${encodeURIComponent(r)}?teamId=${encodeURIComponent(t.id)}`,e,n);if(!a.ok)return a;let i=C.safeParse(a.data);return i.success?{ok:!0,data:P({...i.data,uid:i.data.id,projectId:i.data.projectId??""},i.data.id)}:b("the deployment")}let D=t.z.object({name:r.z.string(),targets:t.z.object({production:A}).nullish(),lastAliasRequest:I});async function M(e,t,r,n={}){let a=await m(`/v9/projects/${y(r)}?${g(t)}`,e,n);if(!a.ok)return a;let i=D.safeParse(a.data);return i.success?{ok:!0,data:{name:i.data.name,currentId:S(i.data.targets?.production,i.data.lastAliasRequest)}}:b("the project")}let z=t.z.object({deployments:n.z.array(x.extend({projectId:r.z.string().nullish()}))});async function q(e,t,r,n,a,i){let o=`projectId=${y(r)}&target=production&state=${n}&limit=${a}&${g(t)}`,s=await m(`/v6/deployments?${o}`,e,i);if(!s.ok)return s;let l=z.safeParse(s.data);return l.success?{ok:!0,data:l.data.deployments.map(e=>P({...e,projectId:e.projectId??r},e.uid))}:b("the deployment list")}async function L(e,t,r,n={}){return q(e,t,r,"READY",5,n)}async function U(e,t,r,n={}){let a=await q(e,t,r,"BUILDING,QUEUED,INITIALIZING",1,n);return a.ok?{ok:!0,data:a.data[0]??null}:a}async function H(e,n,a,i={}){let o=await h("POST",`/v13/deployments?${g(n)}`,e,{name:a.name,project:a.projectId,deploymentId:a.deploymentId,target:"production"},i);if(!o.ok)return o;let s=t.z.object({id:r.z.string()}).safeParse(o.data);return{ok:!0,data:{id:s.success?s.data.id:""}}}async function B(e,t,r,n,a={}){let i=await h("POST",`/v1/projects/${y(r)}/rollback/${y(n)}?${g(t)}`,e,void 0,a);return i.ok?{ok:!0,data:null}:i}let V=t.z.object({domains:n.z.array(t.z.object({name:r.z.string(),redirect:r.z.string().nullish(),verified:s.z.boolean().optional(),gitBranch:r.z.string().nullish(),customEnvironmentId:r.z.string().nullish().catch(null)})),pagination:t.z.object({next:a.z.number().nullish()}).nullish()});async function G(e,t,r,n={}){let a,i=[];for(let o=0;o<10;o++){let o=await m(`/v9/projects/${encodeURIComponent(r)}/domains?teamId=${encodeURIComponent(t)}&limit=100${a?`&until=${a}`:""}`,e,n);if(!o.ok)return o;let s=V.safeParse(o.data);if(!s.success)return b("the domain list");for(let e of s.data.domains)i.push({name:e.name,redirect:e.redirect??null,verified:!1!==e.verified,gitBranch:e.gitBranch??null,customEnvironmentId:e.customEnvironmentId??null});if(!(a=s.data.pagination?.next))return{ok:!0,data:i}}return{ok:!1,kind:"transient",error:"The project has more than 1000 domains; Watchbell kept the domains it had."}}async function K(e,t,r,n,a={},i=[]){let o=await G(e,t,r,a);return o.ok?{ok:!0,data:w(o.data,n,i)}:o}let F=t.z.object({misconfigured:s.z.boolean(),configuredBy:r.z.string().nullish(),recommendedIPv4:n.z.array(t.z.object({value:n.z.array(r.z.string())})).default([])});async function W(e,t,r,n={}){let a=await m(`/v6/domains/${encodeURIComponent(r)}/config?teamId=${encodeURIComponent(t)}`,e,n);if(!a.ok)return a;let i=F.safeParse(a.data);return i.success?{ok:!0,data:{misconfigured:i.data.misconfigured,configuredBy:i.data.configuredBy??null,recommendedIps:i.data.recommendedIPv4.flatMap(e=>e.value)}}:b("the domain configuration")}async function X(e,t={}){let r=await k(e,t);if(!r.ok)return r;let n=[],a=[],i=[];for(let o of r.data){let r=await R(e,o,t);if(!r.ok){if(403===r.status){a.push(o.name),i.push(o.id);continue}return r}for(let e of r.data)n.push({externalId:e.id,name:e.name,meta:{teamId:o.id,teamSlug:o.slug,teamName:o.name,framework:e.framework,productionBranch:e.productionBranch,createdAt:e.createdAt.toISOString(),repo:e.repo?`${e.repo.org}/${e.repo.repo}`:null,repoType:e.repo?.type??null,functionRegions:e.functionRegions,rootDirectory:e.rootDirectory,...e.rootDirectoryUnsupported?{rootDirectoryUnsupported:e.rootDirectoryUnsupported}:{},...e.productionAliases.length?{productionAliases:e.productionAliases}:{}}})}return a.length===r.data.length?{ok:!1,kind:"auth",error:"This token can't read any of your Vercel teams. Create a token with access to them."}:{ok:!0,data:{apps:n,skippedTeams:a,skippedTeamIds:i}}}async function J(e,r,a,i,o={}){if(!/^[0-9a-f]{40}$/.test(i))return b("the commit");let s=new URLSearchParams({teamId:r,projectId:a,sha:i,limit:"10"}),l=await m(`/v6/deployments?${s}`,e,o);if(!l.ok)return l;let u=t.z.object({deployments:n.z.array(x)}).safeParse(l.data);return u.success?{ok:!0,data:u.data.deployments.map(e=>P(e,e.uid)).filter(e=>e.projectId===a&&(null===e.sha||e.sha===i)).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())}:b("the deployment list")}async function Y(e,t,r,n={}){let a=await m(`/v9/projects/${y(r)}?${g(t)}`,e,n);if(!a.ok)return a;let i=D.safeParse(a.data);if(!i.success)return b("the project");let o=i.data.targets?.production??null,s=i.data.lastAliasRequest??null;return{ok:!0,data:{currentId:S(o,s),latest:o?{id:o.id,readyState:o.readyState??null,createdAt:o.createdAt??null}:null,promote:s&&"promote"===s.type&&"succeeded"===s.jobStatus?{toDeploymentId:s.toDeploymentId,requestedAt:s.requestedAt}:null}}}e.s(["n",0,w,"c",0,M,"C",0,J,"G",0,X,"Q",0,W,"S",0,j,"K",0,O,"M",0,G,"W",0,R,"X",0,k,"r",0,L,"q",0,K,"k",0,Y,"L",0,H,"E",0,B,"N",0,U,"o",0,_],198552)},902509,e=>{var t=e.i(122603);let r=String.raw`\d+\.\d+\.\d+(?:-[0-9A-Za-z.]+)?`,n="[\"'`]";function a(e){let t=/^(\d+)\.\d+\.\d+(?:-[0-9A-Za-z.]+)?$/.exec(e);return null!==t&&Number(t[1])>=9&&1e3>Number(t[1])}let i={"&amp;":"&","&quot;":'"',"&#39;":"'","&#x27;":"'","&#x2F;":"/","&#47;":"/"},o=e=>e.replace(/&(?:amp|quot|#39|#x27|#x2F|#47);/gi,e=>i[e]??i[e.toLowerCase()]??e),s=RegExp(String.raw`\bnext\s*=\s*\{\s*version\s*:\s*${n}(${r})${n}`,"g"),l=RegExp(String.raw`version\s*:\s*${n}(${r})${n}\s*,\s*appDir\s*:`,"g"),u=RegExp(String.raw`appDir\s*:\s*[^,{}()]{1,16},\s*version\s*:\s*${n}(${r})${n}`,"g"),d=/\bnext\s*=\s*\{\s*version\s*(?::\s*([A-Za-z_$][\w$]*)\s*)?[,}]/g,c=e=>e.replace(/[$]/g,"\\$");var p=e.i(52535);async function f(e,i,m={}){let h=m.deadline??1/0,g=m.now??(()=>new Date),y=e=>Math.floor(Math.min(e,h)-Date.now()),b=Date.now()+15e3;if(0>=y(b))return null;let w=(e,t)=>({version:i?.version??null,status:e,findings:i?.findings??[],reason:t,checkedAt:g()}),v=(e,r)=>(0,t.K)(e,{maxBytes:3145728,timeoutMs:y(b),lookup:m.lookup,fetch:m.fetch,userAgent:"OpsConsole-Security/1.0 (+https://watchbell.west-solutions.web.id)",sameOrigin:r}),k=await v(`https://${e}/`,"www");if(!k.ok&&k.error===t.l)return w("unknown","the site redirects to another host");if(!k.ok||200!==k.status)return Date.now()>=h?null:w("error",`Couldn't load the site: ${k.ok?`HTTP ${k.status}`:k.error}`);let _=(function(e,t){let r;try{r=new URL(t)}catch{return[]}let n=new Set,a=[];for(let t of e.matchAll(/<script\b[^>]*?\ssrc\s*=\s*(["'])(.*?)\1/gi)){let e;try{e=new URL(o(t[2].trim()),r)}catch{continue}if("https:"===e.protocol&&e.origin===r.origin&&e.pathname.startsWith("/_next/static/")&&(e.hash="",!n.has(e.href))){var i;n.add(e.href),a.push({href:e.href,rank:(i=e.pathname,/\/main-app[-.]/.test(i)?0:/\/(main|app-index)[-.]/.test(i)?1:/\/(webpack|polyfills|framework)[-.]/.test(i)?3:2),i:a.length})}}return a.sort((e,t)=>e.rank-t.rank||e.i-t.i).map(e=>e.href)})(k.body,k.url).slice(0,12);if(0===_.length)return w("unknown",k.body.includes("/_next/")?"version not exposed":"not a Next.js site");let A=null,I=0,S=!1;for(let e of _){if(0>=y(b)){S=!0;break}let t=await v(e,!0);if(t.ok&&200===t.status&&(I++,A=function(e){for(let t of e.matchAll(s))if(a(t[1]))return t[1];for(let t of[l,u])for(let r of e.matchAll(t))if(a(r[1]))return r[1];for(let t of e.matchAll(d)){let i=t[1]??"version",o=RegExp(String.raw`(?:^|[^\w$.])${c(i)}\s*=\s*${n}(${r})${n}`,"g"),s=null;for(let r of e.matchAll(o)){if((r.index??0)>=(t.index??0))break;s=r[1]}if(s&&a(s))return s}return null}(t.body)))break}if(!A)return Date.now()>=h?null:S||0>=y(b)?w("error","Reading the site's scripts took longer than 15 s"):0===I?w("error","Couldn't load the site's scripts"):w("unknown","version not exposed");let $=y(Date.now()+1e4);if($<=0)return null;let T=await (0,p.y)(A,{timeoutMs:$,fetch:m.fetch});return T.ok?{version:A,status:T.findings.length?"vulnerable":"ok",findings:T.findings,reason:null,checkedAt:g()}:Date.now()>=h?null:w("error",T.error)}e.s(["y",0,35e3,"P",0,f,"F",0,function(e,t){return Math.min(t+35e3,e+55e3)}],902509)},228516,e=>{var t=e.i(75064),r=e.i(909592),n=e.i(492973),a=e.i(246517);let i=t.z.object({result:t.z.object({releases:r.z.array(t.z.object({name:n.z.string(),isEol:a.z.boolean(),eolFrom:n.z.string().nullish(),latest:t.z.object({name:n.z.string()}).nullish()})).min(1)})});function o(e){let t=i.safeParse(e);return t.success?t.data.result.releases.map(e=>({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null,latest:e.latest?.name??null})):null}async function s(e={}){let t;try{t=await (e.fetch??fetch)("https://endoflife.date/api/v1/products/nextjs/",{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(e.timeoutMs??8e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach endoflife.date"}}if(!t.ok)return{ok:!1,error:`endoflife.date returned an error (${t.status})`};let r=o(await t.json().catch(()=>null));return r?{ok:!0,cycles:r}:{ok:!1,error:"endoflife.date answered in a format the console doesn't recognise"}}e.s(["T",0,"eol.nextjs","z",0,s,"b",0,o])},631065,e=>{let t={CRITICAL:4,HIGH:3,MODERATE:2,LOW:1,UNKNOWN:0};function r(e){return e.reduce((e,r)=>t[r.severity]>t[e]?r.severity:e,"UNKNOWN")}let n=e=>`${e} known vulnerabilit${1===e?"y":"ies"}`;e.s(["t",0,function(e,a,i){let o=new Set((a?.findings??[]).map(e=>e.id));if("vulnerable"===i.status&&i.findings.length>0){if(i.findings.every(e=>o.has(e.id)))return null;let a=r(i.findings);return{kind:t[a]>=t.HIGH?"err":"warn",message:`${e} runs Next.js ${i.version} with ${n(i.findings.length)} (${a.toLowerCase()})`,detail:i.findings.map(e=>e.id).join(", ").slice(0,1e3)}}return"ok"===i.status&&o.size>0?{kind:"ok",message:`${e} no longer has known Next.js vulnerabilities (now ${i.version})`,detail:null}:null},"I",0,function(e){return[...e].sort((e,r)=>t[r.severity]-t[e.severity]||(e.id<r.id?-1:+(e.id>r.id)))},"q",0,n,"N",0,r])},663948,e=>{function t(e){let[t,...r]=e.trim().split("-"),n=t.split(".").map(e=>Number.parseInt(e,10)||0);return{nums:[n[0]??0,n[1]??0,n[2]??0],pre:r.length?r.join("-").split("."):[]}}e.s(["f",0,function(e,r){let n=t(e),a=t(r);for(let e=0;e<3;e++)if(n.nums[e]!==a.nums[e])return n.nums[e]-a.nums[e];return function(e,t){if(!e.length||!t.length)return e.length?-1:+!!t.length;for(let r=0;r<Math.max(e.length,t.length);r++){if(void 0===e[r])return -1;if(void 0===t[r])return 1;let n=/^\d+$/.test(e[r])?Number(e[r]):null,a=/^\d+$/.test(t[r])?Number(t[r]):null;if(null!==n&&null!==a){if(n!==a)return n-a}else if(null!==n||null!==a)return null!==n?-1:1;else if(e[r]!==t[r])return e[r]<t[r]?-1:1}return 0}(n.pre,a.pre)}])},760859,e=>{let t=new Set(["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","db","fs"]);function r(e){let t=e+1,r="";for(;t>0;)r=String.fromCharCode(97+(t-1)%26)+r,t=Math.floor((t-1)/26);return r}let n=e=>(e instanceof Date?e:new Date(e)).getTime(),a=(e,t)=>n(e.firstSeenAt)-n(t.firstSeenAt)||(e.id<t.id?-1:+(e.id>t.id));function i(e,t){return[...e].sort(a).map((e,n)=>({id:e.id,name:e.name,alias:`${t}-${r(n)}`}))}function o(e,t){return e.db.find(e=>e.id===t)?.alias??"db-?"}let s=/[\p{L}\p{N}._%+-]+@[\p{L}\p{N}-]+(?:\.[\p{L}\p{N}-]+)*\.[\p{L}]{2,}/gu;function l(e){return e.replace(s,"[email hidden]")}let u=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d="[\\p{L}\\p{N}_-]",c=new WeakMap;function p(e,t,r){let n;if(!e)return e;let a=r?t.db.find(e=>e.id===r):void 0,i=a&&a.name.trim().length>=2?e.replace((n=a.name,RegExp(`(?<!${d})${u(n)}(?!${d})`,"giu")),a.alias):e,o=function(e){if(c.has(e))return c.get(e);let t=new Set(e.app.map(e=>e.name.toLowerCase())),r=[...new Set(e.db.map(e=>e.name).filter(e=>e.trim().length>=2&&!t.has(e.toLowerCase())))].sort((e,t)=>t.length-e.length),n=new Map;for(let t of e.db)n.has(t.name.toLowerCase())||n.set(t.name.toLowerCase(),t.alias);let a=r.length?{re:RegExp(`(?<!${d})(?:${r.map(u).join("|")})(?!${d})`,"giu"),alias:n}:null;return c.set(e,a),a}(t);return o&&(i=i.replace(o.re,e=>o.alias.get(e.toLowerCase())??e)),l(i)}let f=String.raw`[\p{L}\p{N}_.-]`,m=String.raw`(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])`;new WeakMap;let h=new WeakMap;e.s(["a",0,{db:[],app:[]},"r",0,(e,t)=>e.app.find(e=>e.name===t)?.alias??"app-?","n",0,function(e,o=[]){let s=e.filter(e=>"app"===e.kind),l=i(s,"app"),u=[...o].sort((e,t)=>n(e.createdAt)-n(t.createdAt)||(e.id<t.id?-1:+(e.id>t.id))).map((e,t)=>({id:e.id,name:e.label,alias:`account-${t+1}`}));return{db:i(e.filter(e=>{let r;return null!=(r=e.kind)&&t.has(r)}),"db"),app:l,account:u,host:function(e,t){let n=[],i=new Set,o=(e,t,r)=>{let a=t.toLowerCase();i.has(a)||(i.add(a),n.push({id:e,name:a,alias:r}))},s=new Map(t.map(e=>[e.id,e])),l=e.filter(e=>"domain"===e.kind).sort(a),u=new Map;for(let e of l){let t=e.parentId?s.get(e.parentId):void 0;if(!t)continue;let r=(u.get(t.id)??0)+1;u.set(t.id,r),o(e.id,e.name,`${t.alias}${r>1?`-${r}`:""}.example`)}for(let e of t)o(`${e.id}:vercel`,`${e.name}.vercel.app`,`${e.alias}${u.has(e.id)?"-vercel":""}.example`);return e.filter(e=>"zone"===e.kind||"domain"===e.kind&&!(e.parentId&&s.has(e.parentId))).sort(a).filter(e=>!i.has(e.name.toLowerCase())).forEach((e,t)=>o(e.id,e.name,`site-${r(t)}.example`)),n}(e,l),team:function(e){let t=[];for(let r of[...e].sort(a)){let e=r.team?.trim();e&&!t.some(t=>t.name===e)&&t.push({id:`team:${e}`,name:e,alias:`team-${t.length+1}`})}return t}(s)}},"X",0,o,"o",0,function(e,t){let r;return{...e,title:(r=e.resourceId)&&t.db.some(e=>e.id===r)?o(t,e.resourceId):p(e.title,t,e.resourceId),message:p(e.message,t,e.resourceId),causedBy:p(e.causedBy,t)}},"G",0,l,"J",0,p,"d",0,function(e,t){let r=/^db-unlinked:(.+)$/.exec(e.key)?.[1];return{...e,subject:r?o(t,r):p(e.subject,t),title:p(e.title,t,r),why:p(e.why,t,r),fix:p(e.fix,t,r)}},"q",0,function(e,t){if(!e)return e;let r=function(e){let t=h.get(e);if(t)return t;let r=new Map((e.host??[]).map(e=>[e.alias.toLowerCase(),e.name])),n=new Map;for(let t of[...e.app,...e.db])t.name.trim()&&!n.has(t.alias.toLowerCase())&&n.set(t.alias.toLowerCase(),t.name);let a=e=>[...e].sort((e,t)=>t.length-e.length).map(u).join("|"),i={host:r.size?RegExp(String.raw`(?<![\p{L}\p{N}_-])(?:${a(r.keys())})${m}`,"giu"):null,hostName:r,names:n.size?RegExp(`(?<!${f})(?:${a(n.keys())})${m}`,"giu"):null,realName:n};return h.set(e,i),i}(t),n=e;return r.host&&(n=n.replace(r.host,e=>r.hostName.get(e.toLowerCase())??e)),r.names&&(n=n.replace(r.names,e=>r.realName.get(e.toLowerCase())??e)),l(n)}])},785194,e=>{var t=e.i(728335);function r(e,r){let[n,a,i]=(0,t.dayKey)(e).split("-").map(Number);return Array.from({length:r},(e,t)=>new Date(Date.UTC(n,a-1,i-(r-1-t))).toISOString().slice(0,10))}let n=Date.UTC(2e3,0,1);e.s(["F",0,90,"I",0,30,"W",0,r,"D",0,function(e,t,r){return n+Math.floor((e.getTime()-n)/t)*t-(r-1)*t},"w",0,function(e,t,n){return r(t,n).map(t=>e?.get(t))},"C",0,function(e){let t=new Map;for(let r of e){let e=t.get(r.monitorId);e||(e=new Map,t.set(r.monitorId,e));let n=e.get(r.day);e.set(r.day,{day:r.day,checks:(n?.checks??0)+r.checks,failures:(n?.failures??0)+r.failures,maint:(n?.maint??0)+(r.maint??0)})}return t},"f",0,function(e,t,r,n,a=null){let i=Array.from({length:n},()=>a);for(let a of e){let e=Math.round((a.t-t)/r);e>=0&&e<n&&(i[e]=a.v)}return i},"Y",0,function(e){let t=0,r=0;for(let n of e)n&&(t+=n.checks,r+=n.failures);return t?(t-r)/t*100:null}])},70377,e=>{e.s(["O",0,{events:200,deployments:200,apps:200,monitors:200,domains:200,databases:200,recentEvents:5,ongoingBuilds:5},"A",0,{rawChecksMs:6048e5,healthBuckets:30,metricBuckets:48,responseHours:24}])},549556,e=>{var t=e.i(516506),r=e.i(547963);let n={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},a={MonitorDown:"workloads",HighLatency:"workloads",DeploymentFailed:"workloads",DatabasePaused:"databases",StorageAlmostFull:"databases",NeonComputeHigh:"databases",FirestoreQuotaHigh:"databases",AutoPauseRisk:"databases",ComputeHigh:"databases",DbQuotaHigh:"databases",CertExpiringSoon:"network",DomainExpiringSoon:"network",DnsProxiedToVercel:"network",CollectorStale:"observe",CredentialExpiring:"admin",VulnerableDependency:"workloads",FrameworkVulnerable:"workloads",MonitorDomainMoved:"workloads"},i=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved"]);e.s(["p",0,function(e){if((0,t.h)(e.ruleKey))return i.has(e.ruleKey)&&null!==e.resourceKind&&"app"!==e.resourceKind?"observe":a[e.ruleKey];let r=new Set(e.ruleKey.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),n=(...e)=>e.some(e=>r.has(e));return n("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":n("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":n("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":n("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===e.resourceKind?"workloads":"observe"},"y",0,e=>r.X.proposedBy(n[e])])},756652,11339,e=>{var t=e.i(989578),r=e.i(633075),n=e.i(549556),a=e.i(564769),i=e.i(92748);let o=["LogErrorSpike","LogErrors","LogDbErrors"],s="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(s,"i");let l=/^dpl_[A-Za-z0-9]{8,40}$/,u=/^ep-[a-z0-9-]{3,60}$/,d=/^[a-z0-9]{8,40}$/;function c(e,n,a){let i=n?(0,t.g)(n,a,120):"";return(0,r.l)((0,t.g)(i?`${e}. Most common: ${i}`:e,a,r.j)||e,r.j)}let p=e=>`${e.ruleKey}:${e.resourceId??""}:${e.action}`,f=new Set(["pending","approved","running"]);e.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,s,"G",0,20,"T",0,o,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(e,t,r){let n=new Set(t.filter(e=>f.has(e.status)||null!==e.closedAt&&r.getTime()-e.closedAt.getTime()<72e5).map(p)),a=new Set;return e.filter(e=>{let t=p(e);return!(n.has(t)||a.has(t))&&(a.add(t),!0)})},"t",0,function(e,t,o){return(function(e,t,n){let a=[],o=n.getTime(),s=null!==e.liveAt&&o-e.liveAt.getTime()<72e5&&e.liveAt.getTime()<=o,p=e.previousNext?.status??"unknown";if(s&&e.errorsSinceLive>=Math.max(10,Math.ceil(5*e.baselineErrors/24))&&e.currentId&&e.previousId&&l.test(e.previousId)&&e.previousId!==e.currentId&&"vulnerable"!==p){let n=c(`${e.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((o-e.liveAt.getTime())/6e4))} min ago (${e.baselineErrors} in the 24 h before)`,e.topSinceLive,t);a.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:e.appId,targetRef:e.previousId,reason:"ok"===p?n:(0,r.l)(`${i.B} ${n}`)})}let f=null!==e.lastDeployAt&&o-e.lastDeployAt.getTime()<72e5;if(e.errors30>=20&&!f&&e.httpMonitorId&&a.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:e.appId,targetRef:e.httpMonitorId,reason:c(`${e.errors30} errors in the last 30 min`,e.top30,t)}),e.dbErrors30>=3&&e.db){let r=c(`${e.dbErrors30} database connection errors in the last 30 min`,e.topDb,t),n=e.db;("neon_project"===n.kind||"neon_branch"===n.kind)&&n.wakeEndpoint&&u.test(n.wakeEndpoint)?a.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.wakeEndpoint,reason:r}):"supabase_project"===n.kind&&n.supabasePaused&&n.supabaseRef&&d.test(n.supabaseRef)&&a.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.supabaseRef,reason:r})}return a})(e,t,o).map(i=>{let s="app"===i.resourceKind?(0,r.J)("app",e.appId,e.appName,t):(0,r.J)(i.resourceKind,i.resourceId,null,t);return{alertId:null,ruleKey:i.ruleKey,room:i.room,action:i.action,risk:a.H[i.action].risk,title:(0,r.M)(i.action,s),reason:i.reason,resourceKind:i.resourceKind,resourceId:i.resourceId,resourceName:s,targetRef:i.targetRef,proposedBy:(0,n.y)(i.room),expiresAt:new Date(o.getTime()+a.V)}})},"D",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<27e4))&&(Math.floor(r/6e4)%5==0||null!==t&&r-t>=6e5)},"W",0,function(e,t){let r=new Set(t.map(p));return e.filter(e=>{let t;return"pending"===e.status&&(t=e.ruleKey,o.includes(t))&&!r.has(p(e))}).map(e=>e.id)}],756652);let m=new Set(["MonitorDown","LogErrorSpike"]);e.s(["r",0,72e5,"M",0,m,"s",0,function(e,t){let r=e=>({ok:!1,why:e});if(!e.setting.enabled)return r("off");if(!e.ruleKey||!m.has(e.ruleKey))return r("rule");let n=e.deploy;if(!n||!n.liveAt)return r("no live deploy");let a=t.getTime()-n.liveAt.getTime();return a<0||a>6e4*e.setting.windowMin?r("outside the window"):n.previousId&&e.targetRef===n.previousId&&n.previousId!==n.currentId?n.newestProdCreatedAt&&n.currentCreatedAt.getTime()<n.newestProdCreatedAt.getTime()?r("live deploy is a rollback"):e.rolledOrPromotedLately?r("live deploy came from a rollback or promote"):"ready"!==(n.previousState??"").toLowerCase()?r("previous not ready"):!n.previousCreatedAt||t.getTime()-n.previousCreatedAt.getTime()>2592e6?r("previous too old"):"vulnerable"===e.previousNext?r("previous Next.js has advisories"):"ok"!==e.previousNext?r("previous Next.js unknown"):e.autoLately?r("auto-rollback within 2 h"):e.sameDeployBefore?r("already rolled back once"):e.inFlight?r("another auto-rollback is running"):{ok:!0}:r("target changed")},"u",0,(e,t,n)=>(0,r.l)(`Automatic: the new deploy ${e} errored in the first ${t} minutes. ${n}`),"E",0,e=>e.currentSha&&/^[0-9a-f]{7,40}$/i.test(e.currentSha)?e.currentSha.slice(0,7):e.currentId.slice(0,16)],11339)},108621,e=>{var t=e.i(547963),r=e.i(589878),n=e.i(373200),a=e.i(262412),i=e.i(484745),o=e.i(93387),s=e.i(908480),l=e.i(601225),u=e.i(760859),d=e.i(989578),c=e.i(809303),p=e.i(564769);let f={target:n.Q,book:()=>(0,r.f)(),siteUrl:()=>(0,o.serverEnv)().SITE_URL,autoRun:()=>(0,c.I)(),send:(e,t,r,n,a)=>(0,l.I)(e,t,r,{...n?{replyMarkup:n}:{},...a?{replyTo:a}:{}}),record:(e,t)=>(0,n.P)("telegram",e,t),lang:()=>(0,s.H)("telegram"),discord:()=>(0,n.G)(),sendDiscord:(e,t)=>(0,a.f)(e,t,{timeoutMs:_}),recordDiscord:(e,t)=>(0,n.P)("discord",e,t),discordLang:()=>(0,s.H)("discord"),buttons:()=>e.A(176751).then(e=>e.approvalButtons()),thread:e=>(0,n.M)(e)},m={en:{pending:"Status: ⏳ waiting",dev:"🧑‍💻 Dev is checking the code",proposer:t.X.notifyFallback.en,app:"app",safe:"safe",risky:"needs care",proposes:"proposes",why:"Why",risk:"Risk",open:"Open in Auto-actions",waitingN:"new proposals waiting for approval:",moreN:"more proposals",automatic:"Automatic",rollbackWhy:"the app errored after the new deploy",succeeded:"Succeeded",failed:"Failed",stopFallback:"something failed"},id:{pending:"Status: ⏳ menunggu",dev:"🧑‍💻 Dev lagi cek kodenya",proposer:t.X.notifyFallback.id,app:"aplikasi",safe:"aman",risky:"perlu hati-hati",proposes:"usul",why:"Kenapa",risk:"Risiko",open:"Buka di Auto-actions",waitingN:"usulan baru menunggu persetujuan:",moreN:"usulan lagi",automatic:"Otomatis",rollbackWhy:"app-nya error setelah deploy baru",succeeded:"Berhasil",failed:"Gagal",stopFallback:"ada yang gagal"}},h={recheck:"Cek ulang sekarang",neon_wake:"Bangunin Neon",supabase_keepalive:"Kirim keep-alive Supabase",supabase_restore:"Restore project Supabase",vercel_redeploy:"Redeploy production",vercel_rollback:"Rollback ke deploy sebelumnya",github_bump_pr:"Bikin PR update paket",domain_recheck:"Cek ulang sertifikat domain",daily_rerun:"Jalanin ulang daily job",monitor_update_url:"Arahin monitor ke domain baru"},g=(e="en")=>(0,s.t)(m,e,"dev"),y=(e,t)=>("id"===t?h[e.action]:void 0)??p.H[e.action]?.label??e.actionLabel,b=(e,t)=>(0,s.t)(m,t,"risky"===e.risk||p.H[e.action]?.risk==="risky"?"risky":"safe"),w=(e,t)=>`${e.replace(/\/+$/,"")}/auto-actions${t?`?proposal=${encodeURIComponent(t)}`:""}`;function v(e,t,r,n=!1,a="en"){let o=e=>(0,s.t)(m,a,e),l=(0,d.R)(e.proposedBy,t,60)||o("proposer"),u=(0,d.R)(e.title,t,120),c=(0,d.R)(e.reason,t,200)||"-";return[`🧑‍✈️ ${(0,i.H)(l)} ${o("proposes")}: ${(0,i.H)(y(e,a))} — ${(0,i.H)(u)}`,`${o("why")}: ${(0,i.H)(c)}`,`${o("risk")}: ${b(e,a)}`,...n?[g(a)]:[],`${o("open")}: ${(0,i.H)(w(r,e.id))}`].join("\n")}let k=new Set(["recheck","domain_recheck"]),_=3e3,A={en:{proposed:"📝 Proposed",approved:"✅ Approved by the owner",rejected:"🚫 Rejected by the owner",done:"⚙️ Ran",failed:"❌ Failed",waiting:"waiting for approval on Telegram.",newN:"new proposals"},id:{proposed:"📝 Usulan",approved:"✅ Disetujui owner",rejected:"🚫 Ditolak owner",done:"⚙️ Dijalankan",failed:"❌ Gagal",waiting:"nunggu persetujuan di Telegram.",newN:"usulan baru"}};function I(e,t,r,n="en"){let a=e=>(0,s.t)(A,n,e);if(Array.isArray(t))return`📝 ${t.length} ${a("newN")} — ${a("waiting")}`;let i=((0,d.g)(t.title,r,120)||y(t,n)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===e)return`${a("proposed")}: ${i} — ${a("waiting")}`;if("approved"===e||"rejected"===e)return`${a(e)}: ${i}`;let o=t.result?(0,d.g)(t.result,r,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${a(e)}: ${i}${o?` — ${o}`:""}`}async function S(e,r,n){try{let a,i=await r.discord();if(!i)return;let o=await r.book().catch(()=>u.a),s=await r.discordLang().catch(()=>"en"),l=e(o,s);if(!l.length)return;try{a=await r.sendDiscord(i.url,l.join("\n"))}catch{a={ok:!1,kind:"transient",error:"Discord didn't answer."}}await r.recordDiscord(a,n).catch(()=>console.warn(`${t.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${t.X.logTag}/discord: sending the action history failed`)}}async function $(e,t,r={},n={}){let a={...f,...r};await R(()=>S((r,n)=>[I(e,t,r,n)],a,n.now??new Date),n.timeoutMs??_)}async function T(e,r,n){let a=await r.target();if(!a)return;let i=await r.book().catch(()=>u.a),o=await r.lang().catch(()=>"en");for(let s of(await e(i,o))){let e;try{e="string"==typeof s?await r.send(a.token,a.chatId,s):await r.send(a.token,a.chatId,s.text,s.keyboard,s.replyTo??void 0)}catch{e={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await r.record(e,n).catch(()=>console.warn(`${t.X.logTag}/telegram: recording the result failed`))}}async function R(e,r){try{var n;let t;await (n=e(),Promise.race([n,new Promise((e,n)=>{t=setTimeout(()=>n(Object.assign(Error("timeout"),{name:"TimeoutError"})),r)})]).finally(()=>clearTimeout(t)))}catch(e){console.warn(`${t.X.logTag}/telegram: sending the proposal notice failed:`,e instanceof Error?e.name:"error")}}let x=async(e,t)=>t&&e.thread?e.thread(t).catch(()=>null):null;async function E(e,t={},r={}){if(!e.length)return;let n={...f,...t};await R(async()=>{let t=await n.autoRun().catch(()=>null),a=e.filter(e=>{var r;return r=t??{},"pending"===e.status&&!e.auto&&(p.H[e.action]?.risk!=="safe"||"risky"===e.risk||!r[e.action])});if(!a.length)return;let o=a.length>3||!n.buttons?null:await n.buttons().catch(()=>null),l=r.now??new Date;await Promise.all([T(async(e,t)=>a.length>3?[function(e,t,r,n=new Set,a="en"){let o=e=>(0,s.t)(m,a,e),l=e.slice(0,10).map(e=>{let s=(0,d.R)(e.proposedBy,t,60)||o("proposer");return`• ${(0,i.H)(s)}: ${(0,i.H)(y(e,a))} — ${(0,i.H)((0,d.R)(e.title,t,120))} (${b(e,a)})${n.has(e.id)?` \xb7 ${g(a)}`:""}
43
+ ${(0,u.W)()} as off`),[n]=(0,i.f)(t),p=c(n?.providers);return{providers:(Array.isArray(p)?p:[]).filter(e=>s.includes(e)),databases:n?.databases===!0||n?.databases==="t",off:(0,l.N)(c(n?.off))}});async function f(){try{return(0,l.I)((await p()).off)}catch{return new Set}}e.s(["s",0,function(e){let n=function(e){if(!e.size)return;let{ruleKeys:n,providers:a}=(0,l.s)(e),i=[];if(n.length&&i.push(r.sql`${o.alerts.ruleKey} in (${r.sql.join(n.map(e=>r.sql`${e}`),r.sql`, `)})`),a.length){let e=r.sql.join(a.map(e=>r.sql`${e}`),r.sql`, `);i.push(r.sql`(${o.alerts.ruleKey} = 'CredentialExpiring' and ${o.alerts.accountId} in (select ${o.accounts.id} from ${o.accounts} where ${o.accounts.provider}::text in (${e})))`)}return i.length?(0,t.or)(...i):void 0}(e);return n?(0,t.not)(n):void 0},"I",0,f],638809)},584820,e=>{var t=e.i(336763),r=e.i(533102),n=e.i(406212),a=e.i(530298),i=e.i(122603),o=e.i(541211),s=e.i(333407),l=e.i(902509),u=e.i(631065),d=e.i(802641),c=e.i(978196),p=e.i(412948),f=e.i(70377);function m(e){return{version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[],reason:e.reason,checkedAt:e.checkedAt}}async function h(e={}){let i=e.only;if(i&&!i.length)return[];let o=e.first??[],s=e.skip??[],l=await (0,n.db)().select({id:a.resources.id,name:a.resources.name,meta:a.resources.meta,sec:a.appSecurity}).from(a.resources).leftJoin(a.appSecurity,(0,t.eq)(a.appSecurity.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"app"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt),i?(0,t.inArray)(a.resources.id,i):void 0,s.length?(0,t.notInArray)(a.resources.id,[...s]):void 0)).orderBy(...o.length?[r.sql`case when ${(0,t.inArray)(a.resources.id,o)} then 0 else 1 end`]:[],r.sql`${a.appSecurity.checkedAt} asc nulls first`,a.resources.name).limit(f.O.apps);if(!l.length)return[];o.length&&l.sort((e,t)=>Number(!o.includes(e.id))-Number(!o.includes(t.id)));let u=await (0,n.db)().select({resourceId:a.monitors.resourceId,url:a.monitors.url}).from(a.monitors).where((0,t.inArray)(a.monitors.resourceId,l.map(e=>e.id))).orderBy(a.monitors.createdAt).limit(f.O.monitors);return l.map(e=>({id:e.id,name:e.name,prev:e.sec?m(e.sec):null,host:(0,c.Y)(e.meta)?.primaryDomain??(0,p.m)(e.name,u.filter(t=>t.resourceId===e.id).map(e=>e.url))}))}async function g(e,i){await (0,n.db)().transaction(async n=>{await n.execute(r.sql`select pg_advisory_xact_lock(hashtext(${`app_security:${e.id}`}))`);let[o]=await n.select().from(a.appSecurity).where((0,t.eq)(a.appSecurity.resourceId,e.id)).limit(1),l=o?m(o):null;if(l&&l.checkedAt.getTime()>=i.checkedAt.getTime())return;let d="unknown"===i.status||"error"===i.status?{...i,version:l?l.version:i.version,findings:l?l.findings:i.findings}:i,c={framework:"next",version:d.version,status:d.status,findings:d.findings,reason:d.reason,checkedAt:d.checkedAt};await n.insert(a.appSecurity).values({resourceId:e.id,...c}).onConflictDoUpdate({target:a.appSecurity.resourceId,set:c,setWhere:r.sql`${a.appSecurity.checkedAt} < excluded.checked_at`});let p=(0,u.t)(e.name,l,d);p&&await (0,s.f)([{type:"system",kind:p.kind,message:p.message,detail:p.detail,resourceId:e.id,at:d.checkedAt,reason:"ok"===p.kind?"NextClean":"NextVulnerable"}],n)})}async function y(e,t={}){let r=await h(t),n=0,a=0,s=[],u=[],d=[];return await (0,i.P)(r,3,async t=>{if(e-Date.now()<3e3)return void a++;d.push(t.id);try{let r=await (0,l.P)(t.host,t.prev,{deadline:e});if(!r)return void a++;await g(t,r),n++,u.push(t.id)}catch(e){s.push(`${t.name}: ${(0,o.safeError)(e)}`),u.push(t.id)}}),{checked:n,skipped:a,failed:s,done:u,listed:r.map(e=>e.id),started:d}}async function b(e){let r=e.filter(d.f);return r.length?(await (0,n.db)().select().from(a.appSecurity).where((0,t.inArray)(a.appSecurity.resourceId,r)).limit(r.length)).map(e=>{let t=m(e);return{appId:e.resourceId,version:t.version,status:t.status,findings:t.findings}}):[]}e.s(["F",0,b,"h",0,y,"Z",0,m])},366171,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(295017),a=e.i(530298),i=e.i(803237),o=e.i(887103),s=e.i(93387);let l="Supabase Metrics API",u=null,d={fetchMetrics:async function e(t,r,n={}){let a;if(!("string"==typeof t&&/^[a-z0-9]{8,40}$/.test(t)))return{ok:!1,kind:"format",error:"That isn't a Supabase project ref."};let i=n.timeoutMs??8e3;try{a=await (n.fetch??fetch)(`https://${t}.supabase.co/customer/v1/privileged/metrics`,{headers:{Authorization:`Basic ${Buffer.from(`service_role:${r}`).toString("base64")}`,Accept:"text/plain"},signal:AbortSignal.timeout(i),cache:"no-store",redirect:"manual"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`${l} didn't answer within ${Math.round(i/1e3)} seconds.`:`Couldn't reach the ${l}.`}}if(401===a.status||403===a.status)return{ok:!1,kind:"auth",status:a.status,error:`Supabase rejected the metrics key (${a.status}). Replace it with a current Secret API key.`};if(404===a.status)return{ok:!1,kind:"missing",status:404,error:"Supabase has no metrics endpoint for this project (404)."};if(429===a.status)return{ok:!1,kind:"transient",status:429,retryAfterS:60,error:`${l} says there were too many requests.`};if(!a.ok)return{ok:!1,kind:"transient",status:a.status,error:`${l} returned an error (${a.status}).`};let o=await a.text().catch(()=>null);return null===o||o.length>4e6||!/^(#|[A-Za-z_:])/m.test(o)?{ok:!1,kind:"format",error:`${l} answered in a format the console doesn't recognise.`}:{ok:!0,data:o}},key:()=>(0,s.serverEnv)().OPS_ENCRYPTION_KEY},c=e=>e instanceof Error?e.name:"unknown";async function p(e,i,s=d){if(!(0,o.T)(e,u))return null;u=e.getTime();let l=0,f=0;try{for(let{k:o,ref:u,state:d}of(await (0,r.db)().select({k:n.A,ref:a.resources.externalId,state:a.snapshots.state}).from(n.A).innerJoin(a.resources,(0,t.eq)(a.resources.id,n.A.resourceId)).leftJoin(a.snapshots,(0,t.eq)(a.snapshots.resourceId,a.resources.id)).where((0,t.and)((0,t.eq)(a.resources.kind,"supabase_project"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(20))){let t=i-Date.now()-500;if(t<1e3)break;try{await m(o,u,d,e,Math.min(8e3,t),s)?l++:f++}catch(e){f++,console.warn("supabase-metrics: one project failed:",c(e))}}await (0,r.db)().delete(n.l).where((0,t.lt)(n.l.hour,new Date(e.getTime()-24*o.x*36e5)))}catch(e){console.warn("supabase-metrics failed:",c(e))}return{scraped:l,failed:f}}async function f(e,a,i){return await (0,r.db)().update(n.A).set({lastTryAt:a,lastError:i.slice(0,300)}).where((0,t.eq)(n.A.resourceId,e)),!1}async function m(e,a,s,l,u,d){if("paused"===s)return f(e.resourceId,l,"The project is paused.");let c=(0,i.V)({ciphertext:e.keyCiphertext,iv:e.keyIv},d.key());if(!c)return f(e.resourceId,l,"The stored key can't be read. Add it again.");let p=await d.fetchMetrics(a,c,{timeoutMs:u});if(!p.ok)return f(e.resourceId,l,p.error);let m=(0,o.E)(e.latest??null,(0,o.c)((0,o.a)(p.data),a),l);await (0,r.db)().update(n.A).set({latest:m,lastTryAt:l,lastOkAt:l,lastError:null}).where((0,t.eq)(n.A.resourceId,e.resourceId));let h=(0,o.b)(l),[g]=await (0,r.db)().select().from(n.l).where((0,t.and)((0,t.eq)(n.l.resourceId,e.resourceId),(0,t.eq)(n.l.hour,h))).limit(1),y=(0,o.n)(g??null,m);return await (0,r.db)().insert(n.l).values({resourceId:e.resourceId,hour:h,...y}).onConflictDoUpdate({target:[n.l.resourceId,n.l.hour],set:y}),!0}async function h(){let e=await (0,r.db)().select({id:a.resources.id,name:a.resources.name,latest:n.A.latest}).from(n.A).innerJoin(a.resources,(0,t.eq)(a.resources.id,n.A.resourceId)).where((0,t.and)((0,t.eq)(a.resources.kind,"supabase_project"),(0,t.eq)(a.resources.monitored,!0),(0,t.isNull)(a.resources.goneAt))).limit(20);return e.length?e.map(e=>({id:e.id,name:e.name,latest:e.latest??null})):null}e.s(["Y",0,h,"E",0,p],366171)},707866,e=>{let t={databases:100,storageBytes:0x140000000,rowsRead:5e8,rowsWritten:1e7},r={storageBytes:262144e3,monthlyCommands:5e5,monthlyBandwidthBytes:0x280000000},n={databases:10,dbBytes:524288e3,accountBytes:0x140000000,rowsReadPerDay:5e6,rowsWrittenPerDay:1e5},a=(e,t)=>Math.round(e/t*1e3)/10,i=(e,t)=>!!e&&e.slice(0,7)===t.toISOString().slice(0,7);e.s(["M",0,n,"g",0,t,"W",0,r,"I",0,function(e,t){let r=e.usageDay===t.toISOString().slice(0,10);return[...r&&null!=e.accountRowsRead?[{label:"Rows read today",pct:a(e.accountRowsRead,n.rowsReadPerDay),text:"of 5M (account)",kind:"quota"}]:[],...r&&null!=e.accountRowsWritten?[{label:"Rows written today",pct:a(e.accountRowsWritten,n.rowsWrittenPerDay),text:"of 100k (account)",kind:"quota"}]:[],...null!=e.sizeBytes?[{label:"Size",pct:a(e.sizeBytes,n.dbBytes),text:"of 500 MB",kind:"storage"}]:[]]},"c",0,function(e){return(e.accountRowsRead??0)>=n.rowsReadPerDay?{state:"err",label:"Daily rows-read limit reached"}:(e.accountRowsWritten??0)>=n.rowsWrittenPerDay?{state:"err",label:"Daily rows-written limit reached"}:{state:"ok",label:"Available"}},"u",0,function(e){return e.filter(e=>"quota"===e.kind&&null!==e.pct).sort((e,t)=>(t.pct??0)-(e.pct??0))[0]??null},"G",0,function(e,r){return i(e.usageAt,r)?[...null!=e.orgRowsRead?[{label:"Rows read",pct:a(e.orgRowsRead,t.rowsRead),text:"of 500M this month (org)",kind:"quota"}]:[],...null!=e.orgRowsWritten?[{label:"Rows written",pct:a(e.orgRowsWritten,t.rowsWritten),text:"of 10M this month (org)",kind:"quota"}]:[],...null!=e.orgStorageBytes?[{label:"Storage",pct:a(e.orgStorageBytes,t.storageBytes),text:"of 5 GB (org)",kind:"storage"}]:[]]:[]},"h",0,function(e){return e.blockReads||e.orgBlockedReads?{state:"err",label:"Reads blocked"}:e.blockWrites||e.orgBlockedWrites?{state:"err",label:"Writes blocked"}:{state:"ok",label:"Available"}},"$",0,function(e,t){let n=i(e.statsAt,t);return[...n&&null!=e.monthlyRequests?[{label:"Commands",pct:a(e.monthlyRequests,r.monthlyCommands),text:"of 500k this month",kind:"quota"}]:[],...n&&null!=e.monthlyBandwidthBytes?[{label:"Bandwidth",pct:a(e.monthlyBandwidthBytes,r.monthlyBandwidthBytes),text:"of 10 GB this month",kind:"quota"}]:[],...null!=e.storageBytes?[{label:"Data size",pct:a(e.storageBytes,r.storageBytes),text:"of 250 MB",kind:"storage"}]:[]]},"t",0,function(e){let t=(e??"").toLowerCase();return"active"===t?{state:"ok",label:"Active"}:t.includes("suspend")||t.includes("block")||t.includes("disabled")?{state:"err",label:"Suspended"}:t.includes("delet")?{state:"off",label:"Deleting"}:{state:"unknown",label:e?`State: ${e}`:"Unknown"}}])},35048,e=>{e.s(["T",0,{reads:5e4,writes:2e4,deletes:2e4},"g",0,function(e){var t;if(e.ok)return e.data.noDatabase?{state:"off",label:"No Firestore database"}:{state:"ok",label:`Reachable \xb7 ${e.data.latencyMs} ms`};return"RESOURCE_EXHAUSTED"===(t=e).reason?{state:"err",label:"Daily quota used up"}:"SERVICE_DISABLED"===t.reason?{state:"err",label:"Firestore API is off in this project"}:"scope"===t.kind||"PERMISSION_DENIED"===t.reason||"scope"===t.reason?{state:"err",label:"No access: needs datastore.viewer"}:{state:"unknown",label:"Unknown"}},"a",0,function(e){let t=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",hour:"numeric",minute:"numeric",second:"numeric",hourCycle:"h23"}).formatToParts(e),r=e=>Number(t.find(t=>t.type===e)?.value??0),n=(3600*r("hour")+60*r("minute")+r("second"))*1e3+e.getUTCMilliseconds();return new Date(e.getTime()-n)}])},203868,e=>{var t=e.i(788264);e.s(["f",0,function(e){let r={id:e.id,name:e.name,kind:e.kind,account:e.account};if("supabase_project"===e.kind)return{...r,region:(0,t.k)(t.B,e.data).region??null,ident:`ref ${e.externalId}`};if("neon_project"===e.kind){let n=(0,t.k)(t.s,e.data),a=n.branches?.find(e=>e.isDefault)?.id,i=n.endpoints?.find(e=>e.branchId===a)??n.endpoints?.[0];return{...r,region:n.region??null,ident:i?`${i.id} \xb7 project ${e.externalId}`:`project ${e.externalId}`}}if("turso_database"===e.kind){let n=(0,t.k)(t.N,e.data);return{...r,region:n.primaryRegion??null,ident:n.org?`org ${n.org}`:null}}return"upstash_redis"===e.kind?{...r,region:(0,t.k)(t.e,e.data).region??null,ident:`id ${e.externalId}`}:"d1_database"===e.kind?{...r,region:null,ident:`id ${e.externalId}`}:{...r,region:null,ident:`project ${e.externalId}`}}])},483324,e=>{let t=/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/,r=/^watchpost\/deps-[0-9a-f]{8}$/,n=/^(?:[A-Za-z0-9._-]+\/){0,4}package-lock\.json$/,a=e=>"string"==typeof e&&t.test(e)&&!e.includes("..");e.s(["h",0,"deps.lockfileActions","w",0,6e5,"C",0,function(e){let t=e.lockfilePath??"package-lock.json";return!a(e.repo)||!r.test(e.branch)||!n.test(t)||t.includes("..")||!Number.isInteger(e.prNumber)||e.prNumber<1?null:{repo:e.repo,branch:e.branch,lockfile:t,pr:e.prNumber}},"g",0,function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e.repo:null;return{repo:a(t)?t:null}}])},79068,e=>{var t=e.i(663948),r=e.i(461315);let n=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function a(e,r){let a=n.exec(e.trim()),i=n.exec(r.trim());return!!a&&!!i&&a[1]===i[1]&&("0"!==a[1]||a[2]===i[2])&&(0,t.f)(r,e)>=0}let i=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,o=e=>i.exec(e)?.[1]??null;e.s(["M",0,e=>`Lockfile tertinggal — jalankan npm install (${e.slice(0,5).join(", ")}${e.length>5?`, +${e.length-5}`:""}).`,"a",0,function(e,t,r){if(!e.length)return{ok:!1,why:"nothing"};let n=e.filter(e=>r.includes(e.severity)&&!("moderate"===e.severity&&e.dev));if(!n.length)return{ok:!1,why:"severity"};for(let e of n){let r=t.get(e.package);if(!r||!a(r,e.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:n}},"m",0,function(e,n){if(!n)return{deps:e,stale:[]};let a=[...Object.entries(n.dependencies).map(([e,t])=>[e,t,!1]),...Object.entries(n.optionalDependencies).map(([e,t])=>[e,t,!1]),...Object.entries(n.devDependencies).map(([e,t])=>[e,t,!0])],i=[...e],o=[];for(let[e,n,s]of a){let a=(0,r.Y)(n);if(!a||!(0,r.C)(a))continue;let l=i.filter(t=>t.name===e);!l.length||l.some(e=>(0,t.f)(e.version,a)>=0)||((i=i.filter(t=>t.name!==e)).push({name:e,version:a,dev:l.every(e=>e.dev)&&s}),o.push(e))}return{deps:i,stale:o}},"D",0,function(e){let r=new Map;for(let n of e){if(!n.direct)continue;let e=r.get(n.package);(!e||0>(0,t.f)(n.installedVersion,e))&&r.set(n.package,n.installedVersion)}return r},"U",0,function(e,t,r=null){for(let n of t){if(o(n.title)!==r)continue;let t=function(e){if(e.packages?.length)return e.packages;let t=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(e.title);return t?[t[1]]:"all"}(n);if("all"===t||e.some(e=>t.includes(e)))return n}return null},"J",0,a])},736337,e=>{var t=e.i(958948);function r(e,r){return"string"==typeof e&&e!==r&&(0,t.c)(e)?e:null}let n=/^[0-9a-f]{7,40}$/i;function a(e){if(!e||"object"!=typeof e||Array.isArray(e))return null;let r="string"==typeof e.ref&&(0,t.c)(e.ref)?e.ref:null;if("string"==typeof e.ref&&!r)return null;let a="string"==typeof e.sha&&n.test(e.sha)?e.sha:null,i="string"==typeof e.at&&Number.isFinite(Date.parse(e.at))?e.at:null,o="string"==typeof e.id&&/^[A-Za-z0-9_-]{1,80}$/.test(e.id)?e.id:null,s={...a?{sha:a}:{},...i?{at:i}:{},...o?{id:o}:{}};return"git"===e.kind&&r?{kind:"git",ref:r,...s}:"cli"===e.kind?{kind:"cli",...r?{ref:r}:{},...s}:null}function i(e){let t=a(e?.productionSource);return t?.kind==="git"?t.ref:e?.productionBranch}e.s(["u",0,6e5,"a",0,function(e,r){let n=a(e?.productionSource),i=[];for(let a of[n?.kind==="git"?n.ref:null,e?.productionBranch,r])if(!("string"!=typeof a||!(0,t.c)(a)||i.includes(a))&&(i.push(a),a===r))break;return i},"q",0,function(e,n){let i=a(e?.productionSource);return i?.kind==="git"?i.ref:r(e?.productionBranch,n)??n??("string"==typeof e?.productionBranch&&(0,t.c)(e.productionBranch)?e.productionBranch:null)},"K",0,function(e){let t=a(e?.productionSource);return t?{productionSource:t}:{}},"i",0,r,"B",0,function(e,t,r){let n=a(e);if(!n)return null;let i=t??"a stale branch";return!n.at||r.getTime()-Date.parse(n.at)>18e5?`Watchbell can't confirm what production is built from (no reading in the last 30 minutes). Merging this PR could deploy ${i} to production and replace what is live.`:"cli"===n.kind?`Production was deployed from the CLI${t?`, not built from ${t}`:""}. Merging this PR would deploy ${i} to production and replace what is live.`:t&&n.ref!==t?`Production was built from ${n.ref}, not ${t}. Merging this PR would deploy ${t} to production and replace what is live.`:null},"s",0,function(e){let r=e.branch&&(0,t.c)(e.branch)?e.branch:null,a=e.sha&&n.test(e.sha)?e.sha:null;return"cli"===e.source||!0===e.gitDirty||"cli"===e.branchFrom&&"git"!==e.source?{kind:"cli",...r?{ref:r}:{},...r&&a?{sha:a}:{}}:r?{kind:"git",ref:r,...a?{sha:a}:{}}:null},"O",0,a,"v",0,(e,t)=>(e?.kind??null)===(t?.kind??null)&&(e?.ref??null)===(t?.ref??null)&&(e?.sha??null)===(t?.sha??null)&&(e?.id??null)===(t?.id??null),"V",0,i,"w",0,function(e){let r=i(e),n=e?.productionBranch;return"string"==typeof n&&n!==r&&(0,t.c)(n)?n:null},"y",0,function(e,r,n=null){if(!e||"br"===n)return null;let a=/^br:([^:]+):/.exec(e);return a?(0,t.c)(a[1])?a[1]:null:r}])},821342,e=>{var t=e.i(663948),r=e.i(461315),n=e.i(547963);let a=["dependencies","devDependencies","optionalDependencies"],i="watchpost/deps-",o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=e=>{let t=e.filter(e=>!e.companionOf);return t.length?t:e},l={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};e.s(["M",0,function(e,t){let r;try{r=JSON.parse(e)}catch{return null}if(!o(r))return null;for(let e of t){let t=r[e.group];if(!o(t)||t[e.package]!==e.from)return null;t[e.package]=e.to}let n=/^[{[]\r?\n([ \t]+)\S/.exec(e),a=n?n[1]:" ",i=e.includes("\r\n")?"\r\n":"\n",s=JSON.stringify(r,null,a);return"\r\n"===i&&(s=s.replace(/\n/g,"\r\n")),/\r?\n$/.test(e)?s+i:s},"U",0,function(e,t=null){let r=e.map(e=>`${e.package}@${e.to}`).sort().join(",");return`${i}${function(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193)>>>0;return t.toString(16).padStart(8,"0")}(t?`${t}|${r}`:r)}`},"G",0,function(e){let t=s(e);return 1===t.length?`chore(deps): update ${t[0].package} to ${t[0].fixed} (security fix)`:`chore(deps): update ${t.length} packages for security fixes`},"c",0,(e,t)=>e.startsWith(i)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(e)&&e!==t,"k",0,function(e,n){let i;try{i=JSON.parse(e)}catch{return null}if(!o(i))return null;let s=[];for(let e of n)if((0,r.L)(e.package)&&(0,r.C)(e.to))for(let n of a){let a=i[n];if(!o(a)||"string"!=typeof a[e.package])continue;let l=a[e.package],u=(0,r.Y)(l),d=function(e,t){let n=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(e);return n&&(0,r.C)(t)?`${n[1]??""}${t}`:null}(l,e.to);!u||!d||(0,t.f)(u,e.to)>=0||s.push({package:e.package,group:n,from:l,to:d,fixed:e.to,vulnIds:e.vulnIds,cves:e.cves,...e.companionOf?{companionOf:e.companionOf}:{}})}return s},"y",0,function(e,t,r=!1,a=null){let i=l[t??"npm"]??"npm install",o=`run \`${i}\`${a?` in \`${a}\``:""}`,s=e.filter(e=>!e.companionOf),u=e.filter(e=>e.companionOf),d=s.map(e=>{let t=[...e.cves,...e.vulnIds.filter(t=>!e.cves.includes(t))].slice(0,4).map(e=>`[${e}](https://osv.dev/vulnerability/${encodeURIComponent(e)})`).join(", ");return`| \`${e.package}\` | \`${e.from}\` | \`${e.to}\` | ${t||"-"} |`});return[r?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":n.J.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...d,"",...u.map(e=>`Updated to match ${e.companionOf} (no advisory of its own): \`${e.package}\` \`${e.from}\` → \`${e.to}\`.`),...u.length?[""]:[],"### Important: the lockfile is not updated","",r?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards ${o} on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, ${o}, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(e,t=null){let r=s(e),n=t?` in ${t}`:"",a=1===r.length?`Watchbell: update ${r[0].package} to ${r[0].fixed}${n} (security fix)`:`Watchbell: update ${r.length} vulnerable packages${n} (${r.slice(0,2).map(e=>e.package).join(", ")}${r.length>2?", …":""})`;return a.length>200?`${a.slice(0,199)}…`:a}])},461315,e=>{let t=/^(?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9._~-][a-z0-9._~-]*$/i,r=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,n=e=>e.length<=214&&t.test(e),a=e=>e.length<=100&&r.test(e),i=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function o(e){let t=new Map;for(let r of e){if(!n(r.name)||!a(r.version))continue;let e=`${r.name}@${r.version}`,i=t.get(e);if(i?i.dev=i.dev&&r.dev:t.set(e,{...r}),t.size>=1e4)break}return[...t.values()].sort((e,t)=>e.name===t.name?e.version<t.version?-1:1:e.name<t.name?-1:1)}function s(e){try{return JSON.parse(e)}catch{return null}}let l=e=>{let t=e.lastIndexOf("node_modules/");return t<0?null:e.slice(t+13)||null},u=e=>e.trim().replace(/^['"]|['"]$/g,""),d=e=>i(e)?Object.fromEntries(Object.entries(e).filter(e=>"string"==typeof e[1])):{};function c(e){let t=/^\s*(?:\^|~|>=|=|v)?\s*v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?(-[0-9A-Za-z.-]+)?\s*$/.exec(e);if(!t)return null;let r=e=>e&&/^\d+$/.test(e)?e:"0";return`${t[1]}.${r(t[2])}.${r(t[3])}${t[4]??""}`}e.s(["a",0,[{path:"package-lock.json",kind:"npm"},{path:"npm-shrinkwrap.json",kind:"npm"},{path:"pnpm-lock.yaml",kind:"pnpm"},{path:"yarn.lock",kind:"yarn"},{path:"bun.lock",kind:"bun"}],"e",0,function(e){let t=[],r=(e,r)=>{for(let[n,a]of Object.entries(e)){let e=c(a);e&&t.push({name:n,version:e,dev:r})}};return r(e.dependencies,!1),r(e.optionalDependencies,!1),r(e.devDependencies,!0),o(t)},"K",0,function(e){return e?new Set([...Object.keys(e.dependencies),...Object.keys(e.devDependencies),...Object.keys(e.optionalDependencies)]):new Set},"L",0,n,"C",0,a,"Y",0,c,"D",0,function(e,t){switch(e){case"npm":let r=s(t);if(!i(r))return null;let a=[];if(i(r.packages)){for(let[e,t]of Object.entries(r.packages)){if(!e||!i(t)||!0===t.link||"string"!=typeof t.version)continue;let r="string"==typeof t.name&&e.includes("node_modules/")?t.name:l(e);r&&a.push({name:r,version:t.version,dev:!0===t.dev})}return o(a)}if(i(r.dependencies)){let e=(t,r)=>{if(!(r>40))for(let[n,o]of Object.entries(t))i(o)&&("string"==typeof o.version&&a.push({name:n,version:o.version,dev:!0===o.dev}),i(o.dependencies)&&e(o.dependencies,r+1))};return e(r.dependencies,0),o(a)}return null;case"pnpm":return function(e){let t=e.split(/\r?\n/);if(!t.some(e=>/^lockfileVersion:/.test(e)))return null;let r=[],a=!1,i=null;for(let e of t){if(/^\S/.test(e)){a=/^packages:\s*$/.test(e),i=null;continue}if(!a)continue;let t=/^ {2}(\S.*?):\s*$/.exec(e);if(t){let e=function(e){let t=u(e).replace(/^\//,""),r=t.indexOf("(");r>0&&(t=t.slice(0,r));let a=t.lastIndexOf("@");if(a>0&&!t.slice(a+1).includes("/")&&n(t.slice(0,a)))return{name:t.slice(0,a),version:t.slice(a+1).split("_")[0]};let i=t.lastIndexOf("/");return i<=0?null:{name:t.slice(0,i),version:t.slice(i+1).split("_")[0]}}(t[1]);(i=e?{...e,dev:!1}:null)&&r.push(i);continue}i&&/^ {4}dev: true\s*$/.test(e)&&(i.dev=!0)}return o(r)}(t);case"yarn":return function(e){let t=e.split(/\r?\n/),r=[],n=null,a=!1;for(let e of t){if(!e.trim()||e.trimStart().startsWith("#"))continue;if(/^\S/.test(e)){let t=e.replace(/:\s*$/,"");n=t.startsWith("__metadata")||/@(?:workspace|link|portal|file):/.test(t)?null:function(e){let t=u(e),r=t.indexOf("@",+!!t.startsWith("@"));return r>0?t.slice(0,r):null}(t.split(/,\s*/)[0]),a=!0;continue}let t=/^ {2}version:?\s+"?([^"\s]+)"?\s*$/.exec(e);t&&n&&(r.push({name:n,version:t[1],dev:!1}),n=null)}return a?o(r):null}(t);case"bun":let d=s(t.replace(/,(\s*[}\]])/g,"$1"));if(!i(d)||!i(d.packages))return null;let c=[];for(let e of Object.values(d.packages)){if(!Array.isArray(e)||"string"!=typeof e[0])continue;let t=e[0],r=t.lastIndexOf("@");r<=0||c.push({name:t.slice(0,r),version:t.slice(r+1),dev:!1})}return o(c)}},"b",0,function(e){let t=s(e);return i(t)?{dependencies:d(t.dependencies),devDependencies:d(t.devDependencies),optionalDependencies:d(t.optionalDependencies)}:null}])},618664,52535,e=>{var t=e.i(122603),r=e.i(631065),n=e.i(663948);let a=["CRITICAL","HIGH","MODERATE","LOW","UNKNOWN"],i=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),o=e=>Array.isArray(e)?e:[],s=e=>"string"==typeof e&&e?e:null,l=e=>i(e.package)&&"next"===e.package.name&&"npm"===e.package.ecosystem,u="OSV.dev sent an answer we couldn't read";async function d(e,f={}){let m=f.timeoutMs??1e4,h=f.maxBytes??2097152,g=AbortSignal.timeout(m),y=(0,t.X)(g),b=`OSV.dev didn't answer within ${p(m)}`,w=[],v=null;for(let r=0;r<3;r++){var k;let r,n;try{r=await (f.fetch??fetch)("https://api.osv.dev/v1/query",{method:"POST",headers:{"content-type":"application/json","user-agent":"OpsConsole-Security/1.0 (+https://watchbell.west-solutions.web.id)"},body:JSON.stringify({package:{name:"next",ecosystem:"npm"},version:e,...v?{page_token:v}:{}}),redirect:"error",cache:"no-store",signal:g})}catch(e){return{ok:!1,error:c(e)?b:"Couldn't reach OSV.dev"}}if(!r.ok)return await r.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${r.status}`};try{let{bytes:e,truncated:a}=await (0,t.z)(r,h,y);if(a)return{ok:!1,error:"OSV.dev sent too large an answer"};n=JSON.parse(new TextDecoder().decode(e))}catch(e){return{ok:!1,error:c(e)?b:u}}let a=i(k=n)?void 0===k.vulns?[]:Array.isArray(k.vulns)?k.vulns:null:null;if(null===a)return{ok:!1,error:u};if(w.push(...a),!(v=i(n)?s(n.next_page_token):null))break}let _=function(e,t){let u=[],d=0;for(let r of e){if(!i(r))continue;let e=s(r.id);e&&(d++,r.withdrawn||u.push({id:e.slice(0,64),cve:o(r.aliases).map(s).find(e=>!!e&&/^CVE-\d{4}-\d+$/.test(e))??null,summary:(s(r.summary)??"").replace(/\s+/g," ").trim().slice(0,200),severity:function(e){let t=i(e.database_specific)?s(e.database_specific.severity)?.toUpperCase():void 0;return"MEDIUM"===t?"MODERATE":a.includes(t??"")?t:"UNKNOWN"}(r),fixed:function(e,t){let r=null;for(let a of o(e))if(i(a)&&l(a))for(let e of o(a.ranges)){if(!i(e)||"SEMVER"!==e.type&&"ECOSYSTEM"!==e.type)continue;let a=null;for(let l of o(e.events)){if(!i(l))continue;let e=s(l.introduced),o=s(l.fixed);e?a=e:o&&null!==a?((0,n.f)(t,a)>=0&&0>(0,n.f)(t,o)&&(null===r||0>(0,n.f)(o,r))&&(r=o),a=null):(s(l.last_affected)||s(l.limit))&&(a=null)}}return r}(r.affected,t)}))}return e.length>0&&0===d?null:(0,r.I)(u).slice(0,50)}(w,e);return null===_?{ok:!1,error:u}:{ok:!0,findings:_}}let c=e=>e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name),p=e=>e<1e3?`${e} ms`:`${Math.round(e/1e3)} s`;e.s(["y",0,d,"t",0,c],52535);var f=e.i(382966);let m="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function h(e,t,r,n){let a=n.deadline-Date.now();if(a<500)return{ok:!1,error:"No time left for OSV.dev"};let i=AbortSignal.timeout(a);return y(e,{method:"POST",headers:{"content-type":"application/json","user-agent":m},body:JSON.stringify(t),signal:i},r,i,n)}async function g(e,t,r){let n=r.deadline-Date.now();if(n<500)return{ok:!1,error:"No time left for OSV.dev"};let a=AbortSignal.timeout(Math.min(n,8e3));return y(e,{method:"GET",headers:{"user-agent":m},signal:a},t,a,r)}async function y(e,r,n,a,i){let o;try{o=await (i.fetch??fetch)(e,{...r,redirect:"error",cache:"no-store"})}catch(e){return{ok:!1,error:c(e)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!o.ok)return await o.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${o.status}`};try{let{bytes:e,truncated:r}=await (0,t.z)(o,n,(0,t.X)(a));if(r)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(e))}}catch(e){return{ok:!1,error:c(e)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function b(e,t){let r=[];for(let n of(0,f.f)(e)){let e=await h(f.n,n,4194304,t);if(!e.ok)return e;let a=(0,f.j)(e.body,n.queries.length);if(!a)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};r.push(...a)}return{ok:!0,ids:r}}async function w(e,t){let r=[...new Set(e)].filter(f.G);if(r.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${r.length})`};let n=new Map,a=null;for(let e=0;e<r.length&&!a;e+=8)await Promise.all(r.slice(e,e+8).map(async e=>{let r=await g(`${f.W}${encodeURIComponent(e)}`,1048576,t),i=r.ok?(0,f.O)(r.body):null;i?n.set(e,i):a??=r.ok?"OSV.dev sent an advisory we couldn't read":r.error}));return a?{ok:!1,error:a}:{ok:!0,map:n}}e.s(["J",0,w,"K",0,b],618664)},382966,e=>{var t=e.i(663948);let r=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),n=e=>Array.isArray(e)?e:[],a=e=>"string"==typeof e&&e?e:null,i=e=>/^[A-Za-z0-9][A-Za-z0-9._:-]{1,63}$/.test(e),o={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",MEDIUM:"moderate",LOW:"low"},s=e=>e>=9?"critical":e>=7?"high":e>=4?"moderate":e>0?"low":"unknown",l=(e,t)=>r(e.package)&&e.package.name===t&&"npm"===e.package.ecosystem;e.s(["S",0,20,"n",0,"https://api.osv.dev/v1/querybatch","W",0,"https://api.osv.dev/v1/vulns/","h",0,200,"f",0,function(e){let t=[];for(let r=0;r<e.length;r+=1e3)t.push({queries:e.slice(r,r+1e3).map(e=>({package:{name:e.name,ecosystem:"npm"},version:e.version}))});return t},"i",0,function(e,i,o,s=new Map){let u=[];return e.forEach((e,d)=>{for(let c of i[d]??[]){let i=s.get(`${e.name}@${e.version}|${c}`);if(i){u.push({...i,dev:e.dev});continue}let d=o.get(c);d&&!d.withdrawn&&u.push({package:e.name,installedVersion:e.version,vulnId:d.id,aliases:d.aliases,severity:d.severity,fixedVersion:function(e,i,o){let s=null;for(let u of n(e))if(r(u)&&l(u,i))for(let e of n(u.ranges)){if(!r(e)||"SEMVER"!==e.type&&"ECOSYSTEM"!==e.type)continue;let i=null;for(let l of n(e.events)){if(!r(l))continue;let e=a(l.introduced),n=a(l.fixed);e?i=e:n&&null!==i?((0,t.f)(o,i)>=0&&0>(0,t.f)(o,n)&&(null===s||0>(0,t.f)(n,s))&&(s=n),i=null):(a(l.last_affected)||a(l.limit))&&(i=null)}}return s}(d.affected,e.name,e.version),summary:d.summary,dev:e.dev,source:"osv"})}}),u},"G",0,i,"O",0,function(e){if(!r(e))return null;let t=a(e.id);return t&&i(t)?{id:t,aliases:[...new Set(n(e.aliases).map(a).filter(e=>!!e&&i(e)))].slice(0,20),summary:(a(e.summary)??a(e.details)?.split(/\n/)[0]??"").replace(/\s+/g," ").trim().slice(0,200),severity:function(e){let t=r(e.database_specific)?a(e.database_specific.severity)?.toUpperCase():null;if(t&&o[t])return o[t];for(let t of n(e.severity)){if(!r(t)||"CVSS_V3"!==t.type&&"CVSS_V31"!==t.type)continue;let e=a(t.score)?function(e){let t,r=/^CVSS:3\.[01]\/(.+)$/.exec(e.trim());if(!r)return null;let n={};for(let e of r[1].split("/")){let[t,r]=e.split(":");t&&r&&(n[t]=r)}let a={N:.85,A:.62,L:.55,P:.2},i={L:.77,H:.44},o={N:.85,R:.62},s={H:.56,L:.22,N:0},l="C"===n.S,u=l?{N:.85,L:.68,H:.5}:{N:.85,L:.62,H:.27};if(![a[n.AV],i[n.AC],u[n.PR],o[n.UI],s[n.C],s[n.I],s[n.A]].every(e=>"number"==typeof e)||"U"!==n.S&&"C"!==n.S)return null;let d=1-(1-s[n.C])*(1-s[n.I])*(1-s[n.A]),c=l?7.52*(d-.029)-3.25*(d-.02)**15:6.42*d,p=8.22*a[n.AV]*i[n.AC]*u[n.PR]*o[n.UI];return c<=0?0:(t=Math.round(1e5*Math.min(l?1.08*(c+p):c+p,10)))%1e4==0?t/1e5:(Math.floor(t/1e4)+1)/10}(a(t.score)):null;if(null!==e)return s(e)}return(a(e.id)??"").startsWith("MAL-")?"critical":"unknown"}(e),withdrawn:!!a(e.withdrawn),affected:e.affected}:null},"j",0,function(e,t){return r(e)&&Array.isArray(e.results)&&e.results.length===t?e.results.map(e=>r(e)?n(e.vulns).map(e=>r(e)?a(e.id):null).filter(e=>!!e&&i(e)):[]):null}])},819263,e=>{var t=e.i(663948),r=e.i(461315),n=e.i(382966);let a=["critical","high","moderate","low","unknown"],i=e=>a.indexOf(e),o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=e=>"string"==typeof e&&e?e:null,l={critical:"critical",high:"high",medium:"moderate",moderate:"moderate",low:"low"},u=e=>`${e.package}@${e.installedVersion}|${e.vulnId}`,d=e=>{let t;return!e.dev&&(i(e.severity)<=i("high")||(t=e.summary,/\bRCE\b|remote code execution/i.test(t))||"moderate"===e.severity&&!0===e.direct)};e.s(["g",0,function(e){let t=e.filter(d);return t.some(e=>{let t;return"critical"===e.severity||(t=e.summary,/\bRCE\b|remote code execution/i.test(t))})?"critical":t.length?"warning":null},"L",0,function(e){let t=e.filter(d),r=[...t].sort((e,t)=>i(e.severity)-i(t.severity)||(e.package<t.package?-1:1)),n=[];for(let e of r){let t=`${e.package} ${e.installedVersion}${e.fixedVersion?` → ${e.fixedVersion}`:" (no fix yet)"}`;n.includes(t)||n.push(t)}let a=new Set(t.map(e=>e.package)).size,o=function(e){let t={critical:0,high:0,moderate:0,low:0,unknown:0};for(let r of e)t[r.severity]++;return t}(t),s=["critical","high","moderate","low","unknown"].filter(e=>o[e]>0).map(e=>`${o[e]} ${e}`).join(", "),l=`${a} vulnerable package${1===a?"":"s"} (${s}): ${n.slice(0,4).join(", ")}${n.length>4?`, +${n.length-4} more`:""}.`;return l.length>300?`${l.slice(0,299)}…`:l},"z",0,function(e,t,r){let n=new Set;return e.forEach((e,a)=>{for(let i of t[a]??[])r.has(`${e.name}@${e.version}|${i}`)||n.add(i)}),[...n]},"A",0,function(e,t){let r=new Map;if(t)return r;for(let t of e)t.fixedVersion&&"dependabot"!==t.source&&r.set(u(t),{package:t.package,installedVersion:t.installedVersion,vulnId:t.vulnId,aliases:t.aliases,severity:t.severity,fixedVersion:t.fixedVersion,summary:t.summary,dev:t.dev,source:"osv"});return r},"R",0,function(e,r,n){let a=[...e];for(let e of r)if(!a.some(t=>t.package===e.package&&(t.vulnId===e.ghsaId||t.aliases.includes(e.ghsaId)||null!==e.cveId&&t.aliases.includes(e.cveId)))&&e.range)for(let r of n)r.name===e.package&&function(e,r){let n=r.split(",").map(e=>e.trim()).filter(Boolean);return!!n.length&&n.every(r=>{let n=/^(<=|>=|<|>|=)\s*v?(\S+)$/.exec(r);if(!n)return!1;let a=(0,t.f)(e,n[2]);return"<"===n[1]?a<0:"<="===n[1]?a<=0:">"===n[1]?a>0:">="===n[1]?a>=0:0===a})}(r.version,e.range)&&a.push({package:e.package,installedVersion:r.version,vulnId:e.ghsaId,aliases:e.cveId?[e.cveId]:[],severity:e.severity,fixedVersion:e.fixed,summary:e.summary,dev:e.dev||r.dev,source:"dependabot"});return a},"E",0,function(e){if(!Array.isArray(e))return null;let t=[];for(let a of e){if(!o(a)||"open"!==a.state||!o(a.dependency)||!o(a.security_advisory))continue;let e=o(a.dependency.package)&&"npm"===a.dependency.package.ecosystem?s(a.dependency.package.name):null,i=s(a.security_advisory.ghsa_id);if(!e||!(0,r.L)(e)||!i||!(0,n.G)(i))continue;let u=o(a.security_vulnerability)?a.security_vulnerability:{},d=o(u.first_patched_version)?s(u.first_patched_version.identifier):null,c=s(a.security_advisory.cve_id);t.push({package:e,ghsaId:i,cveId:c&&/^CVE-\d{4}-\d+$/.test(c)?c:null,summary:(s(a.security_advisory.summary)??"").replace(/\s+/g," ").trim().slice(0,n.h),severity:l[(s(u.severity)??s(a.security_advisory.severity)??"").toLowerCase()]??"unknown",range:s(u.vulnerable_version_range),fixed:d&&d.length<=100?d:null,dev:"development"===a.dependency.scope})}return t},"h",0,function(e,t,r){let a=new Map(e.map(e=>[u(e),e])),i=new Set,o={insert:[],update:[],resolve:[]};for(let e of t){let t=u(e);if(i.has(t))continue;i.add(t);let s={...e,aliases:e.aliases.slice(0,n.S),summary:e.summary.slice(0,n.h),direct:r.has(e.package)},l=a.get(t);l?o.update.push({id:l.id,severity:s.severity,fixedVersion:s.fixedVersion,summary:s.summary,aliases:s.aliases,dev:s.dev,direct:s.direct}):o.insert.push(s)}return o.resolve=e.filter(e=>!i.has(u(e))).map(e=>e.id),o},"U",0,function(e,t,r,n=!1){return!!n||!e||!e.scannedAt||(e.error?r.getTime()-e.scannedAt.getTime()>=72e6||e.lockfileSha!==t:e.lockfileSha!==t||!e.queriedAt||r.getTime()-e.queriedAt.getTime()>=6048e5)},"M",0,function(e){return[...e].sort((e,t)=>(e.scannedAt?.getTime()??-1)-(t.scannedAt?.getTime()??-1)||(e.id<t.id?-1:1))},"B",0,function(e){let r=new Map,n=new Set;for(let a of e){if(!a.direct||!a.fixedVersion||0>=(0,t.f)(a.fixedVersion,a.installedVersion))continue;!0!==a.dev&&n.add(a.package);let e=r.get(a.package)??{package:a.package,to:a.fixedVersion,vulnIds:[],cves:[],severity:a.severity};for(let r of((0,t.f)(a.fixedVersion,e.to)>0&&(e.to=a.fixedVersion),e.vulnIds.includes(a.vulnId)||e.vulnIds.push(a.vulnId),a.aliases))/^CVE-/.test(r)&&!e.cves.includes(r)&&e.cves.push(r);i(a.severity)<i(e.severity)&&(e.severity=a.severity),r.set(a.package,e)}for(let e of r.values())n.has(e.package)||(e.dev=!0);return[...r.values()].sort((e,t)=>i(e.severity)-i(t.severity)||(e.package<t.package?-1:1))}])},964964,e=>{let t={checks:"waiting for CI",preview:"waiting for preview",smoke:"smoke test",merging:"merging…",merged:"merged ✅","ready-manual":"ready to merge (manual)",failed:"needs a look ⚠️",timeout:"needs a look ⚠️",closed:"closed"},r=new Set(["success","neutral","skipped"]),n=e=>"completed"!==e.status?"pending":r.has(e.conclusion??"")?"success":"failure",a={name:"watchbell[bot]",email:"watchbell-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchbell)"},i={name:"watchpost[bot]",email:"watchpost-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchpost)"},o=e=>[a,i].some(t=>e.name===t.name&&e.email.toLowerCase()===t.email&&e.message.trim()===t.message),s=/^[\^~]?[0-9][0-9A-Za-z.+-]*$/,l=e=>Array.isArray(e)?e.map(l):e&&"object"==typeof e?Object.fromEntries(Object.keys(e).sort().map(t=>[t,l(e[t])])):e,u=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,d=/^sha512-[A-Za-z0-9+/]{86}==$/,c="(?:@[a-z0-9][a-z0-9._~-]*/)?[a-z0-9][a-z0-9._~-]*",p=RegExp(`^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*/)*?node_modules/${c}(?:/node_modules/${c})*$`,"i"),f=new Set(["dev","optional","devOptional","peer"]),m=e=>!!e&&"object"==typeof e&&!Array.isArray(e),h=e=>e.slice(e.lastIndexOf("node_modules/")+13),g=(e,t,r)=>`${e}/${t}/-/${t.split("/").pop()}-${r}.tgz`,y=(e,t)=>JSON.stringify(l(e))===JSON.stringify(l(t)),b=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!f.has(e))),w=e=>{try{let t=JSON.parse(e);return m(t)&&m(t.packages)?t:null}catch{return null}};e.s(["y",0,20,"X",0,["checks","preview","smoke","merging"],"w",0,15e3,"R",0,27e5,"j",0,function(e){let t=(e.checkRuns??e.actionRuns??[]).map(n);return(e.combined&&e.combined.total>0&&t.push("success"===e.combined.state?"success":"pending"===e.combined.state?"pending":"failure"),t.includes("failure"))?"failure":t.includes("pending")?"pending":"success"},"L",0,function(e){if(!e.length||e.some(e=>e.authWall))return null;let t=e.find(e=>null===e.status||e.status<200||e.status>399);return t?{mode:"http",result:"fail",reason:null===t.status?`${t.path} didn't answer within 15 seconds`:`${t.path} answered ${t.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(e,t,r){return(401===e||403===e)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(t)||/_vercel_sso/i.test(r.get("set-cookie")??"")||"vercel"===(r.get("server")??"").toLowerCase())},"T",0,function(e,t,r){if([e,t].some(e=>null!==e&&(e=>{if(e.length>0x1900000)return!0;if(3*e.length<=0x1900000)return!1;let t=0;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);n<128?t+=1:n<2048?t+=2:n>=55296&&n<56320&&(64512&e.charCodeAt(r+1))==56320?(t+=4,r++):t+=3}return t>0x1900000})(e)))return`lockfile too large to check (over 25 MB): ${r}`.slice(0,150);try{return function(e,t,r){let n=e=>`unexpected lockfile change ${e}`.slice(0,150),a=null===t?null:w(t),i=null===e?{packages:{}}:w(e);if(!a||!i)return n(r);if(2!==a.lockfileVersion&&3!==a.lockfileVersion||null!==e&&a.lockfileVersion!==i.lockfileVersion)return n("lockfileVersion");let o=new Set;for(let[e,t]of Object.entries(i.packages)){if(!p.test(e)||!m(t)||"string"!=typeof t.resolved||"string"!=typeof t.version)continue;let r=g("","string"==typeof t.name?t.name:h(e),t.version);t.resolved.startsWith("https://")&&t.resolved.endsWith(r)&&o.add(t.resolved.slice(0,-r.length))}for(let[e,t]of(o.size||o.add("https://registry.npmjs.org"),Object.entries(a.packages))){let a=Object.hasOwn(i.packages,e)?i.packages[e]:void 0;if(void 0!==a&&y(a,t))continue;let s=m(a)?a:null;if(""===e||!e.includes("node_modules/")){let a=""===e?m(t)&&"string"==typeof t.name?t.name:r:e;if(!m(t)||""!==e&&!s||"resolved"in t||"link"in t)return n(a);continue}if(!p.test(e)||!m(t))return n(p.test(e)?h(e):e);let l=h(e);if(void 0!==t.name&&t.name!==l&&(!s||s.name!==t.name))return n(l);let c="string"==typeof t.name?t.name:l,f=t.version;if(void 0!==t.link||"string"!=typeof f||!u.test(f)||"string"!=typeof t.integrity||!d.test(t.integrity)||"string"!=typeof t.resolved||![...o].some(e=>t.resolved===g(e,c,f))||s&&s.version===f&&!y(b(s),b(t)))return n(l)}return null}(e,t,r)}catch{return`unexpected lockfile change ${r} (couldn't be checked)`.slice(0,150)}},"H",0,e=>!!e.lockfileRequired&&!!e.lockfile&&!e.files.some(t=>t.filename===e.lockfile),"n",0,function(e,t,r){return null!==r&&r>0?{mode:"logs",result:"fail",reason:`${r} errors in the preview logs`}:t.getTime()-e.getTime()<18e4||null===r?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"C",0,function(e,t,r){let n,a;try{n=JSON.parse(e),a=JSON.parse(t)}catch{return"unexpected change: package.json isn't valid JSON"}if(!n||!a||"object"!=typeof n||"object"!=typeof a)return"unexpected change: package.json isn't an object";let i=e=>{let t=structuredClone(e);for(let e of["dependencies","devDependencies"]){let n=t[e];if(n&&"object"==typeof n)for(let e of r)delete n[e]}return t};if(JSON.stringify(l(i(n)))!==JSON.stringify(l(i(a))))return"unexpected change in package.json beyond the bumped versions";for(let e of["dependencies","devDependencies"]){let t=n[e]??{},i=a[e]??{};for(let e of r){if(e in t!=e in i)return`unexpected change in package.json: ${e} added or removed`;if(e in i&&i[e]!==t[e]&&("string"!=typeof i[e]||!s.test(i[e])))return`unexpected change in package.json: ${e} isn't a plain version`}}return null},"E",0,function(e){let t=["/"];for(let r of e){let e;try{e=new URL(r).pathname||"/"}catch{continue}!t.includes(e)&&t.length<4&&t.push(e)}return t},"m",0,(e,r,n)=>{let a=`PR #${e}: ${t[r]}${n?` — ${n}`:""}`;return a.length>200?`${a.slice(0,199)}…`:a},"k",0,function(e){let t=new Set([e.manifest,...e.lockfile?[e.lockfile]:[]]);for(let r of e.files)for(let e of[r.filename,r.previous])if(e&&!t.has(e))return`unexpected change in ${e}`.slice(0,150);if(!e.files.some(t=>t.filename===e.manifest))return`unexpected change: ${e.manifest} isn't changed`.slice(0,150);if(e.manifestProblem)return e.manifestProblem.slice(0,150);if(e.lockfileProblem)return e.lockfileProblem.slice(0,150);if(!e.tokenLogin||!e.commits.length||e.commits.length>20)return"couldn't confirm who wrote the PR's commits";if(e.headSha&&e.commits[e.commits.length-1].sha!==e.headSha)return"the PR's head moved while it was checked";for(let t of e.commits){if(null!==t.login&&t.login.toLowerCase()===e.tokenLogin.toLowerCase())continue;let r=t.sha.slice(0,7);if(!o(t)||!t.files||!e.lockfile)return`unexpected commit ${r} by ${t.login??t.name}`.slice(0,150);let n=t.files.find(t=>t!==e.lockfile);if(n)return`unexpected change in ${n} by commit ${r}`.slice(0,150)}return null},"f",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<1e5))&&(Math.floor(r/6e4)%2==0||null!==t&&r-t>=24e4)},"M",0,function(e){if(e.pr.merged)return{kind:"done",stage:"merged"};if("closed"===e.pr.state)return{kind:"done",stage:"closed"};if(void 0!==e.pr.base&&void 0!==e.recordedBase&&e.pr.base!==e.recordedBase)return{kind:"stop",stage:"failed",reason:`the PR's base changed to ${e.pr.base}`};if(e.pr.headSha!==e.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:e.pr.headSha};let t=e.now.getTime()-e.openedAt.getTime()>27e5;return"failure"===e.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===e.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"canceled"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel canceled the preview (an Ignored Build Step that skips previews does this), so the update wasn't smoke-tested; check it and merge by hand"}:"pending"===e.checks||null===e.pr.mergeable?t?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==e.preview.state?t?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:e.smoke&&"wait"!==e.smoke.result?"fail"===e.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${e.smoke.reason??"?"}`}:e.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:t?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}])},978196,e=>{var t=e.i(198552);let r=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0).map(e=>e.toLowerCase()):[];function n(e){let t="string"==typeof e?.primaryDomain&&e.primaryDomain?e.primaryDomain.toLowerCase():null;return t?{primaryDomain:t,domains:r(e?.domains),pastDomains:r(e?.pastDomains)}:null}function a(e){try{let t=new URL(e);return"https:"===t.protocol||"http:"===t.protocol?t.hostname.toLowerCase():null}catch{return null}}let i=e=>/ · DEPLOYMENT_NOT_FOUND$/.test(e.lastError??"");function o(e,t,r=[],s={}){let l=a(e),u=n(t.meta);return!(!l||!u||function(e,t,r=[]){let a=n(t.meta);if(!a)return!0;let i=e.toLowerCase();if(i===a.primaryDomain||a.domains.includes(i))return!0;let o=t.name.toLowerCase();return!!(!(i.endsWith(".vercel.app")&&r.some(e=>{let t=e.name.toLowerCase();return t!==o&&t.startsWith(`${o}-`)&&(i===`${t}.vercel.app`||i.startsWith(`${t}-`))}))&&(i===`${o}.vercel.app`||i.endsWith(".vercel.app")&&i.startsWith(`${o}-`)))||r.some(e=>{let t=n(e.meta);return null!==t&&(t.primaryDomain===i||t.domains.includes(i))})}(l,t,r))&&(u.pastDomains.includes(l)||i(s))?{from:l,to:u.primaryDomain}:null}e.s(["Q",0,function(e,n,a=[],i){let o=[...new Set(e.map(e=>e.name.toLowerCase()))],s=new Set(o),l=[...new Set([...r(i?.pastDomains),...r(i?.domains)])].filter(e=>!s.has(e)).slice(-20);return{domains:o,primaryDomain:(0,t.n)(e,n,a).toLowerCase(),pastDomains:l}},"u",0,o,"P",0,function(e,t){let r=new Map;for(let n of e){if("heartbeat"===n.kind)continue;let e=o(n.url,{name:n.appName,meta:n.appMeta},t.filter(e=>e.id!==n.appId),{lastError:n.lastError});e&&r.set(n.id,e)}return r},"w",0,function(e,t){let r=new URL(e);if(r.protocol="https:",r.hostname=t,r.port="",r.hostname!==t.toLowerCase())throw Error("The new domain isn't a valid host name.");return r.toString()},"R",0,function(e,t){let r=new Map;for(let s of e){if("heartbeat"===s.kind||!i({lastError:s.lastError}))continue;let e=n(s.appMeta),l=a(s.url);if(!e||!l)continue;let u=r.get(s.appId)??e.pastDomains;!u.includes(l)&&o(s.url,{name:s.appName,meta:s.appMeta},t.filter(e=>e.id!==s.appId),{lastError:s.lastError})&&r.set(s.appId,[...u,l].slice(-20))}return r},"Y",0,n])},58992,e=>{var t=e.i(666680);e.s(["f",0,function(e){return(0,t.createHash)("sha256").update(e).digest("hex")}])},368230,e=>{var t=e.i(816173);let r=e=>{let t=Math.max(1,Math.floor(e/6e4));if(t<60)return`${t} min`;let r=Math.floor(t/60);return r<48?`${r} h`:`${Math.floor(r/24)} days`};e.s(["C",0,function(e,n){let a=e=>({state:"err",text:`Down \xb7 ${e}`,failStreak:t.I}),i=1e3*e.periodS,o=1e3*e.graceS;if(!e.lastPingAt)return n.getTime()-e.createdAt.getTime()<=i+o?{state:"unknown",text:"Waiting for the first ping",failStreak:0}:a("never pinged");let s=n.getTime()-e.lastPingAt.getTime();return"fail"===e.lastPingKind?a("the job reported a failure"):"start"===e.lastPingKind&&s>o?a("started but didn't finish"):s<=i?{state:"ok",text:`Up \xb7 pinged ${r(s)} ago`,failStreak:0}:s<=i+o?{state:"warn",text:`Late \xb7 last ping ${r(s)} ago`,failStreak:1}:a(`no ping for ${r(s)}`)},"i",0,function(e){let t=String(e??"").match(/(?<![0-9a-z_])hb_[0-9a-f]{32}(?![0-9a-zA-Z])/g)??[];return 1===t.length?t[0]:null}])},802641,e=>{let t=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;e.s(["f",0,e=>"string"==typeof e&&t.test(e)])},857799,e=>{let t={supabase_project:"supabase",neon_project:"neon",firestore:"firebase",turso_database:"turso",upstash_redis:"upstash",d1_database:"d1"};e.s(["H",0,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],"N",0,e=>`/${t[e]}`,"Z",0,e=>t[e]])},765503,e=>{let t=[[/(?:\b|(?<=%2F))hb(?:_|%5F)[0-9a-f]{32}\b/gi,"hb_[hidden]"],[/(\/api(?:\/|%2F)ping(?:\/|%2F))(?!hb_\[hidden\])[^/?#\s]+/gi,"$1[hidden]"],[/\b(postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|rediss):\/\/\S+/gi,"$1://[hidden]"],[/\b(https?):\/\/[^\s/@:]+:[^\s/@]+@/gi,"$1://[hidden]@"],[/\b(Bearer|Basic)\s+[^\s"',;]+/gi,"$1 [hidden]"],[/\b((?:access_|refresh_|id_)?token|secret|password|passwd|pwd|api[_-]?key|apikey|authorization|cookie|session|private_key)(["']?\s*[:=]\s*["']?)(?!Bearer\b|Basic\b)([^\s"'&,;}]+)/gi,"$1$2[hidden]"],[/\beyJ[\w-]{8,}\.[\w-]{8,}\.[\w-]{8,}/g,"[jwt]"],[/\b[\w.+-]+@[\w-]+(?:\.[\w-]+)+\b/g,"[email]"],[/\b[A-Fa-f0-9]{40,}\b/g,"[redacted]"],[/\b(?=[A-Za-z0-9_-]*\d)(?=[A-Za-z0-9_-]*[A-Za-z])[A-Za-z0-9_-]{40,}\b/g,"[redacted]"]];function r(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}e.s(["l",0,r,"n",0,function(e){return null===e?null:r(e.split(/[?#]/)[0]||"/",512)},"h",0,function(e){return t.reduce((e,[t,r])=>e.replace(t,r),e)}])},764266,e=>{var t=e.i(728335);let r=(e,r)=>0===r?e.startsAt.getTime():(0,t.addLocalDays)(e.startsAt,7*r).getTime();function n(e,t){let n,a=t.getTime(),i=e.startsAt.getTime();if(a<i)return null;let o=(n=e.weekly?function(e,t){let n=Math.floor((t-e.startsAt.getTime())/6048e5),a=r(e,n);for(;n>0&&a>t;)a=r(e,--n);for(let i=r(e,n+1);i<=t;i=r(e,n+1))n++,a=i;return{k:n,start:a}}(e,a).start:i,{start:new Date(n),end:new Date(n+6e4*e.durationMin)});return a<o.end.getTime()?o:null}function a(e,t){return"all"===e.scope||"app"===e.scope&&e.appId===t.appId||"monitor"===e.scope&&e.monitorId===t.monitorId}e.s(["J",0,20,"x",0,function(e,t,r){let i=null;for(let o of e){let e=a(o,t)?n(o,r):null;e&&(!i||e.end>i.end)&&(i={window:o,end:e.end})}return i},"u",0,function(e,t,r,i=[]){let o=new Set,s=e.filter(e=>null!==n(e,r));for(let e of s)if("app"===e.scope&&e.appId&&o.add(e.appId),"all"===e.scope)for(let e of i)o.add(e);for(let e of t)for(let t of s)a(t,{monitorId:e.id,appId:e.appId})&&(o.add(e.id),"monitor"!==t.scope&&o.add(e.appId));return o}])},549889,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(246517),a=e.i(909592),i=e.i(260417);let o=t.z.object({notAfter:r.z.string().nullable(),issuer:r.z.string().nullable(),authorized:n.z.boolean().nullable(),error:r.z.string().nullable(),checkedAt:r.z.string()}),s=t.z.object({misconfigured:n.z.boolean(),configuredBy:r.z.string().nullable(),recommendedIps:a.z.array(r.z.string()).default([]),checkedAt:r.z.string()}),l=t.z.object({expiresAt:r.z.string().nullable(),registrar:r.z.string().nullable(),error:r.z.string().nullable(),checkedAt:r.z.string()}),u=t.z.object({id:r.z.string(),type:r.z.string(),name:r.z.string(),content:r.z.string(),proxied:n.z.boolean(),ttl:i.z.number(),comment:r.z.string().nullable()}),d=t.z.object({status:r.z.string().nullable(),paused:n.z.boolean(),nameServers:a.z.array(r.z.string()),accountId:r.z.string().nullable(),checkedAt:r.z.string().nullable()}),c=t.z.object({mode:r.z.string().nullable(),error:r.z.string().nullable()}),p=t.z.object({type:r.z.string(),status:r.z.string(),hosts:a.z.array(r.z.string()),expiresOn:r.z.string().nullable()}),f=(e,t)=>{let r=e.safeParse(t);return r.success?r.data:null},m=(e,t)=>Array.isArray(t)?t.flatMap(t=>{let r=e.safeParse(t);return r.success?[r.data]:[]}):[],h=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e):[];e.s(["q",0,function(e){let t=e??{};return{tls:f(o,t.tls),vercel:f(s,t.vercel),rdap:f(l,t.rdap),records:m(u,t.records),recordsTruncated:!0===t.recordsTruncated,zone:f(d,t.zone),ssl:f(c,t.ssl),certs:m(p,t.certs),cfErrors:h(t.cfErrors),reasons:h(t.reasons)}},"n",0,function(e,t,r){let n=r.toISOString();return e.ok?{expiresAt:e.expiresAt,registrar:e.registrar,error:null,checkedAt:n}:{expiresAt:t?.expiresAt??null,registrar:t?.registrar??null,error:e.error,checkedAt:n}},"o",0,function(e,t,r){let n=r.toISOString();return e.ok?{notAfter:e.notAfter.toISOString(),issuer:e.issuer,authorized:e.authorized,error:null,checkedAt:n}:{notAfter:t?.notAfter??null,issuer:t?.issuer??null,authorized:null,error:e.error,checkedAt:n}}])},491370,377323,259246,e=>{var t=e.i(75064),r=e.i(542746),n=e.i(909592),a=e.i(492973),i=e.i(932378),o=e.i(691313),s=e.i(761095),l=e.i(122603),u=e.i(809816);let d=e=>e.toLowerCase().replace(/\.$/,"");function c(e){try{let t=new URL(e);return null===(0,u._)(t)&&!(0,s.isIP)(t.hostname.replace(/^[|]$/g,""))}catch{return!1}}let p=t.z.object({objectClassName:r.z.literal("domain"),events:n.z.array(t.z.object({eventAction:a.z.string(),eventDate:a.z.string()})).default([]),entities:n.z.array(t.z.object({roles:n.z.array(a.z.string()).default([]),vcardArray:i.z.unknown().optional()})).default([])});async function f(e,t,r){let n=await (0,l.K)(e,{fetch:r.fetch,lookup:r.lookup,timeoutMs:r.timeoutMs??8e3,maxBytes:524288,headers:{Accept:t},userAgent:"OpsConsole-Network/1.0 (+https://watchbell.west-solutions.web.id)"});if(!n.ok)return{ok:!1,error:"Blocked address"===n.error?"The registry's RDAP address isn't a public https address":"Couldn't reach the registry's RDAP server"};if(n.truncated)return{ok:!1,error:"The answer was too large"};if(200!==n.status)return{ok:!0,status:n.status,body:null};try{return{ok:!0,status:n.status,body:JSON.parse(n.body)}}catch{return{ok:!1,error:"The registry answered in a format the console doesn't recognise"}}}let m=t.z.object({services:n.z.array(o.z.tuple([n.z.array(a.z.string()),n.z.array(a.z.string())]))});async function h(e={}){let t=await f("https://data.iana.org/rdap/dns.json","application/json",e);if(!t.ok)return{ok:!1,error:"Couldn't read IANA's RDAP list"};if(200!==t.status)return{ok:!1,error:`IANA's RDAP list returned an error (${t.status})`};let r=m.safeParse(t.body);return r.success?{ok:!0,services:r.data.services}:{ok:!1,error:"IANA's RDAP list is in a format the console doesn't recognise"}}async function g(e,t,r={}){let n=`${t.endsWith("/")?t:`${t}/`}domain/${encodeURIComponent(d(e))}`,a=await f(n,"application/rdap+json, application/json",r);if(!a.ok)return a;if(404===a.status)return{ok:!1,error:"The registry doesn't know this domain"};if(200!==a.status)return{ok:!1,error:`The registry's RDAP server returned an error (${a.status})`};let i=function(e){let t=p.safeParse(e);if(!t.success)return null;let r=t.data.events.find(e=>"expiration"===e.eventAction),n=r?new Date(r.eventDate):null,a=t.data.entities.find(e=>e.roles.includes("registrar"));return{expiresAt:n&&!Number.isNaN(n.getTime())?n.toISOString():null,registrar:a?function(e){if(!Array.isArray(e)||!Array.isArray(e[1]))return null;let t=e[1].find(e=>Array.isArray(e)&&"fn"===e[0]);return"string"==typeof t?.[3]&&t[3]?t[3]:null}(a.vcardArray):null}}(a.body);return i?{ok:!0,...i}:{ok:!1,error:"The registry answered in a format the console doesn't recognise"}}e.s(["Y",0,h,"u",0,g,"T",0,function(e,t){let r=d(t).split(".");for(let t=0;t<r.length;t++){let n=r.slice(t).join("."),a=e.find(([e])=>e.map(d).includes(n));if(a)return a[1].find(c)??null}return null}],491370);var y=e.i(300794),b=e.i(685560);let w={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};async function v(e,t={}){let r,n=t.timeoutMs??5e3,a=e.toLowerCase().replace(/\.$/,"");if((0,s.isIP)(a)||(0,u.N)(a))return{ok:!1,error:"Blocked address"};try{r=await (t.lookup??(async e=>(await (0,y.lookup)(e,{all:!0,verbatim:!0})).map(e=>e.address)))(a)}catch{return{ok:!1,error:"The name doesn't resolve"}}if(!r.length)return{ok:!1,error:"The name doesn't resolve"};if(r.some(u.W))return{ok:!1,error:"Blocked address"};let i=t.connect??b.connect,o=r.find(e=>4===(0,s.isIP)(e))??r[0];return new Promise(e=>{let t,r=!1,s=(t,n)=>{r||(r=!0,clearTimeout(l),n?.destroy(),e(t))},l=setTimeout(()=>s({ok:!1,error:`No answer within ${Math.round(n/1e3)} s`},t),n);try{t=i({host:o,port:443,servername:a,rejectUnauthorized:!1,timeout:n,ALPNProtocols:["http/1.1"]})}catch{return s({ok:!1,error:"Couldn't connect"})}let u=t;u.on("secureConnect",()=>{let e,t,r=u.getPeerCertificate(),n=function(e){if("string"!=typeof e)return null;let t=/^([A-Z][a-z]{2})\s+(\d{1,2})\s+(\d{2}):(\d{2}):(\d{2})\s+(\d{4})\s+GMT$/.exec(e.trim());return t&&void 0!==w[t[1]]?new Date(Date.UTC(Number(t[6]),w[t[1]],Number(t[2]),Number(t[3]),Number(t[4]),Number(t[5]))):null}(r.valid_to);if(!n)return s({ok:!1,error:"The certificate has no readable expiry date"},u);let a=u.authorized?null:String(u.authorizationError??"untrusted");s({ok:!0,notAfter:n,issuer:(e=r.issuer,"string"==typeof(t=e?.O??e?.CN)&&t?t:null),authorized:u.authorized,authError:a},u)}),u.on("timeout",()=>s({ok:!1,error:`No answer within ${Math.round(n/1e3)} s`},u)),u.on("error",()=>s({ok:!1,error:"Couldn't connect"},u))})}e.s(["f",0,v],377323);var k=e.i(246517),_=e.i(260417);let A=t.z.object({success:k.z.boolean(),result:i.z.unknown(),result_info:t.z.object({page:_.z.number().optional(),total_pages:_.z.number().optional()}).nullish()});async function I(e,t,r,n){let a;try{a=await (r.fetch??fetch)(`https://api.cloudflare.com/client/v4${e}`,{method:"GET",headers:{Authorization:`Bearer ${t}`,Accept:"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?"Cloudflare didn't answer within 5 seconds.":"Couldn't reach Cloudflare."}}if(403===a.status&&n)return await a.body?.cancel().catch(()=>void 0),{ok:!1,kind:"scope",status:403,error:`The token can't read this. Add "${n}" to the Cloudflare token.`};if(401===a.status||403===a.status)return await a.body?.cancel().catch(()=>void 0),{ok:!1,kind:"auth",status:a.status,error:`Cloudflare rejected this credential (${a.status}).`};if(429===a.status){let e=Number(a.headers.get("Retry-After"));return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60,error:"Cloudflare says there were too many requests."}}if(!a.ok)return{ok:!1,kind:"transient",status:a.status,error:`Cloudflare returned an error (${a.status}).`};let i=A.safeParse(await a.json().catch(()=>null));return i.success&&i.data.success?{ok:!0,data:{result:i.data.result,totalPages:i.data.result_info?.total_pages??null}}:S("its answer")}let S=e=>({ok:!1,kind:"format",error:`Cloudflare answered ${e} in a format the console doesn't recognise.`}),$=e=>encodeURIComponent(e),T=t.z.object({id:a.z.string(),name:a.z.string(),status:a.z.string(),paused:k.z.boolean().default(!1),name_servers:n.z.array(a.z.string()).default([]),account:t.z.object({id:a.z.string(),name:a.z.string().nullish()}).nullish()});async function R(e,t={}){let r=[];for(let a=1;a<=10;a++){let i=await I(`/zones?per_page=50&page=${a}`,e,t,null);if(!i.ok)return i;let o=n.z.array(T).safeParse(i.data.result);if(!o.success)return S("the zone list");for(let e of o.data)r.push({id:e.id,name:e.name,status:e.status,paused:e.paused,nameServers:e.name_servers,accountId:e.account?.id??null,accountName:e.account?.name??null});if(!i.data.totalPages||a>=i.data.totalPages)break}return{ok:!0,data:r}}let x=t.z.object({id:a.z.string(),type:a.z.string(),name:a.z.string(),content:a.z.string().default(""),proxied:k.z.boolean().default(!1),ttl:_.z.number().default(1),comment:a.z.string().nullish()});async function E(e,t,r={}){let a=[];for(let i=1;i<=4;i++){let o=await I(`/zones/${$(t)}/dns_records?per_page=500&page=${i}`,e,r,"DNS Read");if(!o.ok)return o;let s=n.z.array(x).safeParse(o.data.result);if(!s.success)return S("the DNS records");if(a.push(...s.data.map(e=>({id:e.id,type:e.type,name:e.name,content:e.content,proxied:e.proxied,ttl:e.ttl,comment:e.comment??null}))),!o.data.totalPages||i>=o.data.totalPages)return{ok:!0,data:{records:a,truncated:!1}}}return{ok:!0,data:{records:a,truncated:!0}}}async function N(e,r,n={}){let i=await I(`/zones/${$(r)}/settings/ssl`,e,n,"Zone Settings Read");if(!i.ok)return i;let o=t.z.object({value:a.z.string()}).safeParse(i.data.result);return o.success?{ok:!0,data:o.data.value}:S("the SSL/TLS mode")}t.z.object({errors:n.z.array(t.z.object({code:_.z.number().int()})).min(1)});let P=t.z.object({type:a.z.string(),status:a.z.string(),hosts:n.z.array(a.z.string()).default([]),certificates:n.z.array(t.z.object({expires_on:a.z.string().nullish()})).default([])});async function O(e,t,r={}){let a=await I(`/zones/${$(t)}/ssl/certificate_packs?status=all&per_page=50`,e,r,"SSL and Certificates Read");if(!a.ok)return a;let i=n.z.array(P).safeParse(a.data.result);return i.success?{ok:!0,data:i.data.map(e=>{let t=e.certificates.map(e=>e.expires_on).filter(e=>!!e).sort();return{type:e.type,status:e.status,hosts:e.hosts,expiresOn:t[0]??null}})}:S("the edge certificates")}async function C(e,r={}){let n=await I("/user/tokens/verify",e,r,null);if(!n.ok)return n;let i=t.z.object({status:a.z.string(),expires_on:a.z.string().nullish()}).safeParse(n.data.result);if(!i.success)return S("the token details");let o=i.data.expires_on?new Date(i.data.expires_on):null;return{ok:!0,data:{status:i.data.status,expiresAt:o&&!Number.isNaN(o.getTime())?o:null}}}e.s(["w",0,O,"p",0,E,"F",0,R,"v",0,N,"d",0,C],259246)},437122,319718,941536,686454,582888,811539,e=>{var t=e.i(75064),r=e.i(909592),n=e.i(492973),a=e.i(978071),i=e.i(260417),o=e.i(684330),s=e.i(79322);let l=t.z.object({error:t.z.object({status:n.z.string().optional(),message:n.z.string().optional(),details:r.z.array(o.z.looseObject({reason:n.z.string().optional()})).optional()})}),u=t.z.object({message:n.z.string()}),d=t.z.object({missing_permissions:r.z.array(n.z.string()).min(1)}),c=t.z.object({error:s.z.enum(["invalid_grant","invalid_client","unauthorized_client"])});async function p(e,t,r,n={}){let a,i,o=n.timeoutMs??5e3,s={Accept:"application/json"};r.token?s.Authorization=`Bearer ${r.token}`:r.basic&&(s.Authorization=`Basic ${Buffer.from(`${r.basic.user}:${r.basic.pass}`).toString("base64")}`),r.form?a=r.form:void 0!==r.body&&(s["Content-Type"]="application/json",a=JSON.stringify(r.body));try{i=await (n.fetch??fetch)(t,{method:r.method??"GET",headers:s,body:a,signal:AbortSignal.timeout(o),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?`${e} didn't answer within ${Math.round(o/1e3)} seconds.`:`Couldn't reach ${e}.`}}let f=await i.json().catch(()=>null);if(i.ok)return{ok:!0,data:f};let m=l.safeParse(f),h=m.success?m.data.error.details?.find(e=>e.reason)?.reason??m.data.error.status:void 0,g=m.success?void 0:u.safeParse(f),y=m.success?m.data.error.message?.slice(0,300):g?.success?g.data.message.slice(0,600):void 0,b={status:i.status,...h?{reason:h}:{},...y?{message:y}:{}};if(403===i.status){let t=d.safeParse(f);if(t.success){let e=t.data.missing_permissions;return{ok:!1,kind:"scope",...b,missing:e,error:`Missing permission${e.length>1?"s":""}: ${e.join(", ")}.`}}if(m.success)return{ok:!1,kind:"scope",...b,error:`${e} refused this request (${h??"PERMISSION_DENIED"}).`}}if(401===i.status||403===i.status||400===i.status&&c.safeParse(f).success)return{ok:!1,kind:"auth",...b,error:`${e} rejected this credential (${i.status}).`};if(404===i.status)return{ok:!1,kind:"missing",...b,error:`${e} doesn't know this resource (404).`};if(429===i.status){let t=Number(i.headers.get("Retry-After"));return{ok:!1,kind:"transient",...b,retryAfterS:Number.isFinite(t)&&t>0?t:60,error:"RESOURCE_EXHAUSTED"===h?`${e} says a quota is used up.`:`${e} says there were too many requests.`}}return{ok:!1,kind:"transient",...b,error:`${e} returned an error (${i.status}).`}}let f=(e,t)=>({ok:!1,kind:"format",error:`${e} answered ${t} in a format the console doesn't recognise.`});async function m(e,a={}){let i=await p("Firebase","https://firebase.googleapis.com/v1beta1/projects?pageSize=100",{token:e},a);if(!i.ok)return i;let o=t.z.object({results:r.z.array(t.z.object({projectId:n.z.string(),displayName:n.z.string().optional(),state:n.z.string().optional()})).optional()}).safeParse(i.data);return o.success?{ok:!0,data:(o.data.results??[]).filter(e=>"DELETED"!==e.state).map(e=>({projectId:e.projectId,displayName:e.displayName??e.projectId}))}:f("Firebase","the project list")}async function h(e,t,r={}){var n=e,a=await m(t,r);if(!a.ok&&"scope"!==a.kind)return a;let i=a.ok?a.data:[];return{ok:!0,data:i.some(e=>e.projectId===n.project_id)?i:[{projectId:n.project_id,displayName:n.project_id},...i]}}async function g(e,t,r={}){let n=performance.now(),a=await p("Firestore",`https://firestore.googleapis.com/v1/projects/${encodeURIComponent(t)}/databases/(default)/documents/ops/ping`,{token:e},r),i=Math.round(performance.now()-n);if(a.ok)return{ok:!0,data:{reachable:!0,noDatabase:!1,latencyMs:i}};if("missing"===a.kind){let e=/database .*does not exist/i.test(a.message??"");return{ok:!0,data:{reachable:!e,noDatabase:e,latencyMs:i}}}return a}async function y(e,r,o={}){let s=await p("Firebase Auth",`https://identitytoolkit.googleapis.com/v1/projects/${encodeURIComponent(r)}/accounts:query`,{method:"POST",token:e,body:{returnUserInfo:!1}},o);if(!s.ok)return s;let l=t.z.object({recordsCount:a.z.union([n.z.string(),i.z.number()]).optional()}).safeParse(s.data),u=l.success?Number(l.data.recordsCount??0):0/0;return Number.isFinite(u)?{ok:!0,data:u}:f("Firebase Auth","the user count")}let b=t.z.object({timeSeries:r.z.array(t.z.object({points:r.z.array(t.z.object({value:t.z.object({int64Value:a.z.union([n.z.string(),i.z.number()]).optional()})})).optional()})).optional()});async function w(e,t,r,n,a,i){let o=new URLSearchParams({filter:`metric.type="firestore.googleapis.com/document/${r}_ops_count"`,"interval.startTime":n.toISOString(),"interval.endTime":a.toISOString(),"aggregation.alignmentPeriod":`${Math.max(60,Math.ceil((a.getTime()-n.getTime())/1e3))}s`,"aggregation.perSeriesAligner":"ALIGN_SUM","aggregation.crossSeriesReducer":"REDUCE_SUM"}),s=await p("Cloud Monitoring",`https://monitoring.googleapis.com/v3/projects/${encodeURIComponent(t)}/timeSeries?${o}`,{token:e},i);if(!s.ok)return s;let l=b.safeParse(s.data);return l.success?{ok:!0,data:(l.data.timeSeries??[]).flatMap(e=>e.points??[]).reduce((e,t)=>e+Number(t.value.int64Value??0),0)}:f("Cloud Monitoring","the Firestore usage")}async function v(e,t,r,n,a={}){let[i,o,s]=await Promise.all(["read","write","delete"].map(i=>w(e,t,i,r,n,a)));for(let e of[i,o,s])if(!e.ok)return e;return{ok:!0,data:{reads:i.data,writes:o.data,deletes:s.data}}}e.s(["q",0,y,"z",0,h,"W",0,v,"G",0,g],437122);var k=e.i(666680),_=e.i(542746),A=e.i(291815);let I=t.z.object({type:_.z.literal("service_account"),project_id:n.z.string().min(1),client_email:A.z.email(),private_key:n.z.string().includes("PRIVATE KEY"),private_key_id:n.z.string().optional()}),S="https://oauth2.googleapis.com/token",$=["https://www.googleapis.com/auth/datastore","https://www.googleapis.com/auth/identitytoolkit","https://www.googleapis.com/auth/monitoring.read","https://www.googleapis.com/auth/firebase.readonly"],T=e=>Buffer.from(e).toString("base64url");async function R(e,r={}){let a;try{var i;let t,n,o;i=Math.floor((r.now??new Date).getTime()/1e3),t=T(JSON.stringify({alg:"RS256",typ:"JWT",...e.private_key_id?{kid:e.private_key_id}:{}})),n=T(JSON.stringify({iss:e.client_email,scope:$.join(" "),aud:S,iat:i,exp:i+3600})),o=(0,k.createSign)("RSA-SHA256").update(`${t}.${n}`).sign(e.private_key),a=`${t}.${n}.${T(o)}`}catch{return{ok:!1,kind:"auth",error:"The private key in this service account can't be used. Paste the whole JSON file again."}}let o=new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:a}),s=await p("Google",S,{method:"POST",form:o},r);if(!s.ok)return"auth"===s.kind?{...s,error:"Google rejected this service account (its key was deleted or disabled). Create a new key."}:s;let l=t.z.object({access_token:n.z.string().min(1)}).safeParse(s.data);return l.success?{ok:!0,data:l.data.access_token}:f("Google","the access token")}e.s(["X",0,R,"p",0,function(e){try{let t=I.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}],319718);var x=e.i(246517);let E="https://console.neon.tech/api/v2",N="Neon";async function P(e,a={}){let i=await p(N,`${E}/users/me/organizations`,{token:e},a);if(!i.ok)return i;let o=t.z.object({organizations:r.z.array(t.z.object({id:n.z.string(),name:n.z.string()}))}).safeParse(i.data);return o.success?{ok:!0,data:o.data.organizations}:f(N,"the organization list")}let O=t.z.object({id:n.z.string(),name:n.z.string(),region_id:n.z.string(),pg_version:i.z.number().nullish(),created_at:n.z.string(),org_id:n.z.string().nullish()});async function C(e,a,i={}){let o,s=[];for(let l=0;l<5;l++){let l=new URLSearchParams({limit:String(100)});a&&l.set("org_id",a),o&&l.set("cursor",o);let u=await p(N,`${E}/projects?${l}`,{token:e},i);if(!u.ok)return u;let d=t.z.object({projects:r.z.array(O),pagination:t.z.object({cursor:n.z.string().nullish()}).nullish()}).safeParse(u.data);if(!d.success)return f(N,"the project list");for(let e of d.data.projects)s.push({id:e.id,name:e.name,region:e.region_id,pgVersion:e.pg_version??null,orgId:e.org_id??a,createdAt:e.created_at});if(o=d.data.pagination?.cursor??void 0,d.data.projects.length<100||!o)break}return{ok:!0,data:s}}async function j(e,t={}){let r=await P(e,t);if(!r.ok&&"missing"!==r.kind&&"scope"!==r.kind)return r;let n=r.ok&&r.data.length?r.data.map(e=>e.id):[null],a=[];for(let r of n){let n=await C(e,r,t);if(!n.ok)return n;a.push(...n.data)}return{ok:!0,data:a}}let D=t.z.object({project:t.z.object({region_id:n.z.string(),pg_version:i.z.number().nullish(),compute_time_seconds:i.z.number().nullish(),data_transfer_bytes:i.z.number().nullish(),active_time_seconds:i.z.number().nullish(),consumption_period_start:n.z.string().nullish(),consumption_period_end:n.z.string().nullish(),compute_last_active_at:n.z.string().nullish()})});async function M(e,t,r={}){let n=await p(N,`${E}/projects/${encodeURIComponent(t)}`,{token:e},r);if(!n.ok)return n;let a=D.safeParse(n.data);if(!a.success)return f(N,"the project");let i=a.data.project;return{ok:!0,data:{computeSeconds:i.compute_time_seconds??0,transferBytes:i.data_transfer_bytes??0,activeSeconds:i.active_time_seconds??null,periodStart:i.consumption_period_start??null,periodEnd:i.consumption_period_end??null,region:i.region_id,pgVersion:i.pg_version??null,lastActive:i.compute_last_active_at??null}}}let z=t.z.object({id:n.z.string(),branch_id:n.z.string(),current_state:n.z.string(),pending_state:n.z.string().nullish(),disabled:x.z.boolean().nullish(),autoscaling_limit_min_cu:i.z.number(),autoscaling_limit_max_cu:i.z.number(),last_active:n.z.string().nullish()}),q=e=>({id:e.id,branchId:e.branch_id,state:e.current_state,pendingState:e.pending_state??null,disabled:e.disabled??!1,minCu:e.autoscaling_limit_min_cu,maxCu:e.autoscaling_limit_max_cu,lastActive:e.last_active??null});async function L(e,n,a={}){let i=await p(N,`${E}/projects/${encodeURIComponent(n)}/endpoints`,{token:e},a);if(!i.ok)return i;let o=t.z.object({endpoints:r.z.array(z)}).safeParse(i.data);return o.success?{ok:!0,data:o.data.endpoints.map(q)}:f(N,"the compute list")}async function U(e,r,n,a={}){let i=await p(N,`${E}/projects/${encodeURIComponent(r)}/endpoints/${encodeURIComponent(n)}`,{token:e},a);if(!i.ok)return i;let o=t.z.object({endpoint:z}).safeParse(i.data);return o.success?{ok:!0,data:q(o.data.endpoint)}:f(N,"the compute")}async function H(e,t,r,n={}){let a=await p(N,`${E}/projects/${encodeURIComponent(t)}/endpoints/${encodeURIComponent(r)}/start`,{method:"POST",token:e},n);return a.ok?{ok:!0,data:null}:423===a.status?{ok:!1,kind:"busy",status:423,error:"Neon is busy with another operation. Try again in a minute."}:403===a.status?{ok:!1,kind:"scope",status:403,error:`${N} refused this request (403).`}:a}let B=t.z.object({id:n.z.string(),name:n.z.string(),default:x.z.boolean().nullish(),primary:x.z.boolean().nullish(),logical_size:i.z.number().nullish()});async function V(e,n,a={}){let i=await p(N,`${E}/projects/${encodeURIComponent(n)}/branches`,{token:e},a);if(!i.ok)return i;let o=t.z.object({branches:r.z.array(B)}).safeParse(i.data);return o.success?{ok:!0,data:o.data.branches.map(e=>({id:e.id,name:e.name,isDefault:e.default??e.primary??!1,logicalSize:e.logical_size??null}))}:f(N,"the branch list")}e.s(["m",0,j,"c",0,U,"Z",0,M,"e",0,V,"k",0,L,"d",0,H],941536);var G=e.i(932378);let K="https://api.supabase.com",F="Supabase",W=["auth","rest","realtime","storage","db"],X=t.z.object({ref:n.z.string(),name:n.z.string(),region:n.z.string(),created_at:n.z.string(),status:n.z.string(),organization_slug:n.z.string().optional(),organization_id:n.z.string().optional(),database:t.z.object({version:n.z.string().optional()}).nullish()}),J=e=>({ref:e.ref,name:e.name,orgSlug:e.organization_slug??e.organization_id??"",region:e.region,createdAt:e.created_at,status:e.status,pgVersion:e.database?.version??null});async function Y(e,t={}){let n=await p(F,`${K}/v1/projects`,{token:e},t);if(!n.ok)return n;let a=r.z.array(X).safeParse(n.data);return a.success?{ok:!0,data:a.data.map(J)}:f(F,"the project list")}async function Z(e,t,r={}){let n=await p(F,`${K}/v1/projects/${encodeURIComponent(t)}`,{token:e},r);if(!n.ok)return n;let a=X.safeParse(n.data);return a.success?{ok:!0,data:J(a.data)}:f(F,"the project")}async function Q(e,t,r,n){let a=await p(F,`${K}/v1/projects/${encodeURIComponent(e)}/${t}`,{method:"POST",token:r},n);return a.ok?{ok:!0,data:null}:403===a.status&&"scope"!==a.kind?{...a,kind:"scope",error:"Missing permission: project_admin_write."}:a}async function ee(e,t,r={}){let n=await p(F,`${K}/v1/projects/${encodeURIComponent(t)}/database/query/read-only`,{method:"POST",token:e,body:{query:"select 1"}},r);return n.ok?{ok:!0,data:null}:n}async function et(e,r,a={}){let i=await p(F,`${K}/v1/organizations/${encodeURIComponent(r)}`,{token:e},a);if(!i.ok)return i;let o=t.z.object({plan:n.z.string().optional()}).safeParse(i.data);return o.success?{ok:!0,data:o.data.plan??null}:f(F,"the organization")}async function er(e,a,i={}){let o=new URLSearchParams(W.map(e=>["services",e])),s=await p(F,`${K}/v1/projects/${encodeURIComponent(a)}/health?${o}`,{token:e},i);if(!s.ok)return s;let l=r.z.array(t.z.object({name:n.z.string(),status:n.z.string(),error:n.z.string().optional()})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({name:e.name,status:e.status,error:e.error??null}))}:f(F,"service health")}let en=t.z.object({result:r.z.array(t.z.object({timestamp:n.z.string(),total_auth_requests:i.z.number(),total_realtime_requests:i.z.number(),total_rest_requests:i.z.number(),total_storage_requests:i.z.number()})).optional(),error:G.z.unknown().optional()});async function ea(e,t,r={}){let n=await p(F,`${K}/v1/projects/${encodeURIComponent(t)}/analytics/endpoints/usage.api-counts?interval=7day`,{token:e},r);if(!n.ok)return n;let a=en.safeParse(n.data);return a.success?a.data.error?{ok:!1,kind:"transient",error:"Supabase couldn't read the API request counts this time."}:{ok:!0,data:(a.data.result??[]).map(e=>({at:new Date(e.timestamp),total:e.total_auth_requests+e.total_realtime_requests+e.total_rest_requests+e.total_storage_requests}))}:f(F,"the API request counts")}async function ei(e,o,s={}){let l=await p(F,`${K}/v1/projects/${encodeURIComponent(o)}/database/query/read-only`,{method:"POST",token:e,body:{query:"select pg_database_size(current_database())::bigint as bytes"}},s);if(!l.ok)return l;let u=r.z.array(t.z.object({bytes:a.z.union([i.z.number(),n.z.string()])})).min(1).safeParse(l.data),d=u.success?Number(u.data[0].bytes):0/0;return Number.isFinite(d)?{ok:!0,data:d}:f(F,"the database size")}e.s(["Z",0,ea,"r",0,ei,"e",0,Z,"i",0,ee,"W",0,Y,"K",0,et,"c",0,(e,t,r={})=>Q(t,"pause",e,r),"G",0,(e,t,r={})=>Q(t,"restore",e,r),"F",0,er],686454);let eo="https://api.turso.tech/v1",es="Turso",el=t.z.object({slug:n.z.string(),name:n.z.string().default(""),plan_id:n.z.string().nullish(),blocked_reads:x.z.boolean().nullish(),blocked_writes:x.z.boolean().nullish()});async function eu(e,t={}){let n=await p(es,`${eo}/organizations`,{token:e},t);if(!n.ok)return n;let a=r.z.array(el).safeParse(n.data);return a.success?{ok:!0,data:a.data.map(e=>({slug:e.slug,name:e.name||e.slug,plan:e.plan_id??null,blockedReads:e.blocked_reads??!1,blockedWrites:e.blocked_writes??!1}))}:f(es,"the organization list")}let ed=t.z.object({Name:n.z.string(),DbId:n.z.string(),group:n.z.string().nullish(),primaryRegion:n.z.string().nullish(),block_reads:x.z.boolean().nullish(),block_writes:x.z.boolean().nullish()});async function ec(e,n,a={}){let i=await p(es,`${eo}/organizations/${encodeURIComponent(n)}/databases`,{token:e},a);if(!i.ok)return i;let o=t.z.object({databases:r.z.array(ed)}).safeParse(i.data);return o.success?{ok:!0,data:o.data.databases.map(e=>({id:e.DbId,name:e.Name,org:n,group:e.group??null,primaryRegion:e.primaryRegion??null,blockReads:e.block_reads??!1,blockWrites:e.block_writes??!1}))}:f(es,"the database list")}async function ep(e,t={}){let r=await eu(e,t);if(!r.ok)return r;let n=[];for(let a of r.data.slice(0,10)){let r=await ec(e,a.slug,t);if(!r.ok)return r;n.push(...r.data)}return{ok:!0,data:n}}let ef=t.z.object({rows_read:i.z.number().default(0),rows_written:i.z.number().default(0),storage_bytes:i.z.number().default(0)}),em=t.z.object({organization:t.z.object({usage:ef.extend({databases:i.z.number().nullish()})}),databases:r.z.array(t.z.object({uuid:n.z.string(),total:ef.nullish()})).nullish()}),eh=e=>({rowsRead:e.rows_read,rowsWritten:e.rows_written,storageBytes:e.storage_bytes});async function eg(e,t,r={}){let n=await p(es,`${eo}/organizations/${encodeURIComponent(t)}/usage`,{token:e},r);return n.ok?function(e){let t=em.safeParse(e);if(!t.success)return f(es,"the usage");let r=new Map;for(let e of t.data.databases??[])e.total&&r.set(e.uuid,eh(e.total));return{ok:!0,data:{org:{...eh(t.data.organization.usage),databases:t.data.organization.usage.databases??null},byDb:r}}}(n.data):n}e.s(["t",0,ep,"X",0,ec,"u",0,eu,"d",0,eg],582888);let ey="https://api.upstash.com/v2",eb="Upstash",ew=e=>({basic:{user:e.email,pass:e.apiKey}}),ev=t.z.object({database_id:n.z.string(),database_name:n.z.string(),region:n.z.string().nullish(),primary_region:n.z.string().nullish(),state:n.z.string().nullish(),type:n.z.string().nullish()});async function ek(e,t={}){let n=await p(eb,`${ey}/redis/databases`,ew(e),t);if(!n.ok)return n;let a=r.z.array(ev).safeParse(n.data??[]);return a.success?{ok:!0,data:a.data.map(e=>({id:e.database_id,name:e.database_name,region:"global"===e.region&&e.primary_region?`global \xb7 ${e.primary_region}`:e.region??e.primary_region??null,state:e.state??null,type:e.type??null}))}:f(eb,"the database list")}let e_=i.z.number().nullish(),eA=t.z.object({daily_net_commands:e_,total_monthly_requests:e_,current_storage:e_,total_monthly_bandwidth:e_});async function eI(e,t,r={}){var n;let a,i=await p(eb,`${ey}/redis/stats/${encodeURIComponent(t)}`,ew(e),r);return i.ok?(n=i.data,(a=eA.safeParse(n)).success?{ok:!0,data:{dailyCommands:a.data.daily_net_commands??null,monthlyRequests:a.data.total_monthly_requests??null,storageBytes:a.data.current_storage??null,monthlyBandwidthBytes:a.data.total_monthly_bandwidth??null}}:f(eb,"the database stats")):i}e.s(["M",0,ek,"L",0,function(e){let t=e.trim(),r=t.search(/[:\s]/);if(r<=0)return null;let n=t.slice(0,r).trim(),a=t.slice(r+1).trim();return!/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/.test(n)||a.length<20||/\s/.test(a)?null:{email:n,apiKey:a}},"Z",0,eI],811539)},38607,e=>{var t=e.i(909592),r=e.i(75064),n=e.i(492973),a=e.i(260417),i=e.i(819263),o=e.i(974034),s=e.i(958948);let l=t.z.array(r.z.object({name:n.z.string(),type:n.z.string(),sha:n.z.string(),size:a.z.number().optional()}));async function u(e,t,r,n={},a=null){if(!(0,s.M)(t)||!(0,s.c)(r))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==a&&(0,o.Q)(a)!==a)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let i=a?a.split("/").map(encodeURIComponent).join("/"):"",d=await (0,s.j)(`/repos/${(0,s.f)(t)}/contents/${i}?ref=${encodeURIComponent(r)}`,e,n);if(!d.ok)return d;let c=l.safeParse(d.data);return c.success?{ok:!0,data:c.data.filter(e=>"file"===e.type&&/^[0-9a-f]{40}$/.test(e.sha)).map(e=>({name:e.name,sha:e.sha,size:e.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function d(e,t,r,n={}){if(!(0,s.M)(t)||!(0,s.c)(r))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let a=await (0,s.j)(`/repos/${(0,s.f)(t)}/git/ref/heads/${r.split("/").map(encodeURIComponent).join("/")}`,e,n);return a.ok?{ok:!0,data:!0}:"missing"===a.kind?{ok:!0,data:!1}:a}async function c(e,t,r={}){if(!(0,s.M)(t))return{ok:!1,kind:"format",error:"That isn't a repository name."};let n=await (0,s.j)(`/repos/${(0,s.f)(t)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,e,r);if(!n.ok)return"scope"===n.kind||"missing"===n.kind?{ok:!0,data:{denied:!0}}:n;let a=(0,i.E)(n.data);return a?{ok:!0,data:{alerts:a}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}e.s(["y",0,0xf00000,"V",0,d,"t",0,c,"Z",0,function(e,t,r,n,a,i={}){return(0,s.V)(e,t,r,n,a,i)},"W",0,u])},348657,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(246517),a=e.i(542746),i=e.i(260417),o=e.i(909592),s=e.i(79322),l=e.i(821342),u=e.i(958948);async function d(e,t,r,n,a,i=!1){let o,s=a.timeoutMs??8e3;try{o=await (a.fetch??fetch)(`https://api.github.com${t}`,{method:e,headers:{Authorization:`Bearer ${r}`,Accept:i?"application/vnd.github.raw+json":"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==n?{"Content-Type":"application/json"}:{}},body:void 0!==n?JSON.stringify(n):void 0,signal:AbortSignal.timeout(s),cache:"no-store",redirect:"error"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(s/1e3)} seconds.`:"Couldn't reach GitHub."}}let l=await o.text().catch(()=>"");if(i&&o.ok)return{ok:!0,status:o.status,data:l};let u=null;try{u=l?JSON.parse(l):null}catch{u=null}if(o.ok)return{ok:!0,status:o.status,data:u};let c=o.status;return 401===c?{ok:!1,kind:"auth",status:c,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===c||403===c&&"0"===o.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:c,error:"GitHub's rate limit is used up for now. Try again later."}:403===c?{ok:!1,kind:"scope",status:c,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===c?{ok:!1,kind:"missing",status:c,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===c||422===c?{ok:!1,kind:"format",status:c,error:`GitHub refused the change (${c}).`}:{ok:!1,kind:"transient",status:c,error:`GitHub returned an error (${c}).`}}let c=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`}),p={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function f(e,a,i={}){if(!(0,u.M)(a))return p;let o=await d("GET",`/repos/${(0,u.f)(a)}`,e,void 0,i);if(!o.ok)return o;let s=t.z.object({default_branch:r.z.string(),permissions:t.z.object({push:n.z.boolean()}).partial().optional()}).safeParse(o.data);return s.success&&(0,u.c)(s.data.default_branch)?{ok:!0,data:{defaultBranch:s.data.default_branch,canPush:s.data.permissions?.push??null}}:c("the repository")}async function m(e,n,a,i={}){if(!(0,u.M)(n)||!(0,u.c)(a))return p;let o=await d("GET",`/repos/${(0,u.f)(n)}/git/ref/heads/${a.split("/").map(encodeURIComponent).join("/")}`,e,void 0,i);if(!o.ok)return"missing"===o.kind?{ok:!0,data:null}:o;let s=t.z.object({object:t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(o.data);return s.success?{ok:!0,data:s.data.object.sha}:c("the branch")}let h=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}package\.json$/,g=e=>h.test(e)&&!e.split("/").some(e=>"."===e||".."===e),y=(e,t)=>`/repos/${(0,u.f)(e)}/contents/${t.split("/").map(encodeURIComponent).join("/")}`;async function b(e,n,i,o={},s="package.json"){if(!(0,u.M)(n)||!(0,u.c)(i)||!g(s))return p;let l=await d("GET",`${y(n,s)}?ref=${encodeURIComponent(i)}`,e,void 0,o);if(!l.ok)return"missing"===l.kind?{ok:!0,data:null}:l;let f=t.z.object({sha:r.z.string(),encoding:a.z.literal("base64"),content:r.z.string()}).safeParse(l.data);return f.success?{ok:!0,data:{sha:f.data.sha,text:Buffer.from(f.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:c("package.json")}let w=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}(?:package-lock|npm-shrinkwrap)\.json$/,v=e=>w.test(e)&&!e.split("/").some(e=>"."===e||".."===e);async function k(e,t,r,n,a={}){if(!(0,u.M)(t)||!(0,u.c)(r)||!v(n))return p;let i=await d("GET",`${y(t,n)}?ref=${encodeURIComponent(r)}`,e,void 0,{timeoutMs:2e4,...a},!0);return i.ok?"string"==typeof i.data?{ok:!0,data:i.data}:c("the lockfile"):"missing"===i.kind?{ok:!0,data:null}:i}async function _(e,t,r,n,a,i={}){if(!(0,u.M)(t)||!(0,l.c)(r,a)||!/^[0-9a-f]{40}$/.test(n))return p;let o=await d("POST",`/repos/${(0,u.f)(t)}/git/refs`,e,{ref:`refs/heads/${r}`,sha:n},i);return o.ok?{ok:!0,data:!0}:o}async function A(e,t,r,n,a,i,o,s={},c="package.json"){if(!(0,u.M)(t)||!(0,l.c)(r,n)||!g(c))return p;let f=await d("PUT",y(t,c),e,{message:o,content:Buffer.from(a,"utf8").toString("base64"),sha:i,branch:r},s);return f.ok?{ok:!0,data:!0}:f}let I=t.z.object({number:i.z.number(),html_url:r.z.string().startsWith("https://github.com/")});async function S(e,t,r,n,a,i={}){if(!(0,u.M)(t)||!(0,l.c)(n,a))return p;let s=new URLSearchParams({state:"open",head:`${r}:${n}`,per_page:"1"}),f=await d("GET",`/repos/${(0,u.f)(t)}/pulls?${s}`,e,void 0,i);if(!f.ok)return f;let m=o.z.array(I).safeParse(f.data);if(!m.success)return c("the pull requests");let h=m.data[0];return{ok:!0,data:h?{number:h.number,url:h.html_url}:null}}async function $(e,t,r,n,a,i,o={},s={}){if(!(0,u.M)(t)||!(0,l.c)(r,n)||!(0,u.c)(n))return p;let f=await d("POST",`/repos/${(0,u.f)(t)}/pulls`,e,{title:a,head:r,base:n,body:i,maintainer_can_modify:!0,...s.draft?{draft:!0}:{}},o);if(!f.ok)return f;let m=I.safeParse(f.data);return m.success?{ok:!0,data:{number:m.data.number,url:m.data.html_url}}:c("the new pull request")}let T=o.z.array(t.z.object({number:i.z.number(),title:r.z.string(),head:t.z.object({ref:r.z.string(),sha:r.z.string(),repo:t.z.object({full_name:r.z.string()}).nullable()}),base:t.z.object({ref:r.z.string()})}));async function R(e,t,r={}){if(!(0,u.M)(t))return p;let n=await d("GET",`/repos/${(0,u.f)(t)}/pulls?state=open&per_page=100`,e,void 0,r);if(!n.ok)return n;let a=T.safeParse(n.data);return a.success?{ok:!0,data:a.data.filter(e=>/^watchpost\/deps-[0-9a-f]{8}$/.test(e.head.ref)&&e.head.repo?.full_name===t).map(e=>({number:e.number,branch:e.head.ref,title:e.title,headSha:e.head.sha,base:e.base.ref}))}:c("the pull requests")}async function x(e,a,i,o={}){if(!(0,u.M)(a)||!Number.isInteger(i)||i<=0)return p;let l=await d("GET",`/repos/${(0,u.f)(a)}/pulls/${i}`,e,void 0,o);if(!l.ok)return l;let f=t.z.object({state:s.z.enum(["open","closed"]),merged:n.z.boolean().optional(),mergeable:n.z.boolean().nullable().optional(),head:t.z.object({ref:r.z.string(),sha:r.z.string().regex(/^[0-9a-f]{40}$/)}),base:t.z.object({ref:r.z.string()})}).safeParse(l.data);return f.success?{ok:!0,data:{state:f.data.state,merged:!0===f.data.merged,mergeable:f.data.mergeable??null,headSha:f.data.head.sha,branch:f.data.head.ref,base:f.data.base.ref}}:c("the pull request")}async function E(e,n,a,s={}){if(!(0,u.M)(n)||!/^[0-9a-f]{40}$/.test(a))return p;let[l,c]=await Promise.all([d("GET",`/repos/${(0,u.f)(n)}/commits/${a}/check-runs?per_page=100`,e,void 0,s),d("GET",`/repos/${(0,u.f)(n)}/commits/${a}/status`,e,void 0,s)]),f=e=>!e.ok&&("scope"===e.kind||"missing"===e.kind);if(!l.ok&&!f(l))return l;if(!c.ok&&!f(c))return c;let m=l.ok?t.z.object({check_runs:o.z.array(t.z.object({status:r.z.string(),conclusion:r.z.string().nullable()}))}).safeParse(l.data):null,h=c.ok?t.z.object({state:r.z.string(),total_count:i.z.number()}).safeParse(c.data):null;return{ok:!0,data:{checkRuns:m?.success?m.data.check_runs.map(e=>({status:e.status,conclusion:e.conclusion})):null,combined:h?.success?{state:h.data.state,total:h.data.total_count}:null}}}async function N(e,a,i,o,s,f,m,h={}){if(!(0,u.M)(a)||!(0,l.c)(o,s)||!/^[0-9a-f]{40}$/.test(f)||!Number.isInteger(i)||i<=0)return p;let g=await d("PUT",`/repos/${(0,u.f)(a)}/pulls/${i}/merge`,e,{merge_method:"squash",sha:f,commit_title:`Watchbell: ${m.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},h);if(!g.ok)return 405===g.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===g.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:g;let y=t.z.object({merged:n.z.boolean(),sha:r.z.string()}).safeParse(g.data);return y.success&&y.data.merged?{ok:!0,data:{sha:y.data.sha}}:c("the merge")}async function P(e,n,a,i={}){if(!(0,u.M)(n)||!Number.isInteger(a)||a<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${a}/files?per_page=100`,e,void 0,i);if(!s.ok)return s;let l=o.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({filename:e.filename,previous:e.previous_filename??null}))}:c("the PR's files")}let O=t.z.object({name:r.z.string().optional(),email:r.z.string().optional()}).nullable().optional();async function C(e,n,a,i={}){if(!(0,u.M)(n)||!Number.isInteger(a)||a<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${a}/commits?per_page=100`,e,void 0,i);if(!s.ok)return s;let l=o.z.array(t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/),author:t.z.object({login:r.z.string()}).nullable().optional(),commit:t.z.object({message:r.z.string(),author:O})})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({sha:e.sha,login:e.author?.login??null,name:e.commit.author?.name??"",email:e.commit.author?.email??"",message:e.commit.message}))}:c("the PR's commits")}async function j(e,n,a,i={}){if(!(0,u.M)(n)||!/^[0-9a-f]{40}$/.test(a))return p;let s=await d("GET",`/repos/${(0,u.f)(n)}/commits/${a}`,e,void 0,i);if(!s.ok)return s;let l=t.z.object({files:o.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()}))}).safeParse(s.data);return l.success?{ok:!0,data:l.data.files.flatMap(e=>[e.filename,...e.previous_filename?[e.previous_filename]:[]])}:c("the commit")}async function D(e,n={}){let a=await d("GET","/user",e,void 0,n);if(!a.ok)return a;let i=t.z.object({login:r.z.string().min(1)}).safeParse(a.data);return i.success?{ok:!0,data:i.data.login}:c("the token's user")}async function M(e,t,r,n={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(t))return p;let a=await d("POST",`/repos/${t}/dispatches`,e,{event_type:"watchpost-lockfile",client_payload:r},n);return a.ok?{ok:!0,data:!0}:a}e.s(["M",0,m,"s",0,E,"h",0,j,"k",0,_,"y",0,$,"B",0,M,"$",0,v,"l",0,k,"E",0,b,"C",0,N,"x",0,S,"e",0,R,"P",0,C,"O",0,P,"b",0,x,"D",0,A,"H",0,f,"z",0,D])},958948,e=>{var t=e.i(75064),r=e.i(260417),n=e.i(492973),a=e.i(246517),i=e.i(909592);let o=e=>/^[A-Za-z0-9_.-]{1,100}\/[A-Za-z0-9_.-]{1,100}$/.test(e)&&!e.includes(".."),s=e=>e.split("/").map(encodeURIComponent).join("/");async function l(e,t,r,n="application/vnd.github+json"){let a,i=r.timeoutMs??5e3;try{a=await (r.fetch??fetch)(`https://api.github.com${e}`,{headers:{Authorization:`Bearer ${t}`,Accept:n,"X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell"},signal:AbortSignal.timeout(i),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(i/1e3)} seconds.`:"Couldn't reach GitHub."}}let o=await a.text().catch(()=>"");if(a.ok){let e=null;if(n.endsWith("+json")&&!n.includes(".raw"))try{e=JSON.parse(o)}catch{e=null}return{ok:!0,data:e,text:o,headers:a.headers}}let s=a.status;if(401===s)return{ok:!1,kind:"auth",status:s,error:"GitHub rejected this token (401). It may have expired or been revoked."};if((403===s||429===s)&&("0"===a.headers.get("x-ratelimit-remaining")||429===s)){let e=Number(a.headers.get("x-ratelimit-reset"));return{ok:!1,kind:"transient",status:s,retryAfterS:Number.isFinite(e)&&e>0?Math.max(1,e-Math.floor(Date.now()/1e3)):60,error:"GitHub's rate limit is used up for now. The next run tries again."}}return 403===s?{ok:!1,kind:"scope",status:s,error:"This token can't read that (403). It needs Metadata, Contents and Actions read on the repository."}:404===s?{ok:!1,kind:"missing",status:s,error:"GitHub doesn't show this to the token (404)."}:{ok:!1,kind:"transient",status:s,error:`GitHub returned an error (${s}).`}}let u=t.z.object({id:r.z.number(),name:n.z.string(),full_name:n.z.string(),owner:t.z.object({login:n.z.string()}),default_branch:n.z.string().nullish(),private:a.z.boolean(),archived:a.z.boolean().optional(),html_url:n.z.string().nullish(),pushed_at:n.z.string().nullish()}),d=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`});async function c(e,r={}){let a=await l("/user",e,r);return a.ok?t.z.object({login:n.z.string()}).safeParse(a.data).success?{ok:!0,data:{expiresAt:function(e){let t=e.get("github-authentication-token-expiration")?.trim();if(!t)return null;let r=/^(\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2}:\d{2})\s*(UTC|Z|[+-]\d{2}:?\d{2})?$/.exec(t);if(!r)return null;let n=r[3]&&"UTC"!==r[3]&&"Z"!==r[3]?r[3].includes(":")?r[3]:`${r[3].slice(0,3)}:${r[3].slice(3)}`:"Z",a=new Date(`${r[1]}T${r[2]}${n}`);return Number.isNaN(a.getTime())?null:a}(a.headers)}}:d("the token check"):a}async function p(e,t={}){let r=[];for(let n=1;n<=3;n++){let a=await l(`/user/repos?per_page=100&page=${n}&sort=pushed&affiliation=owner,collaborator,organization_member`,e,t);if(!a.ok)return a;let s=i.z.array(u).safeParse(a.data);if(!s.success)return d("the repository list");for(let e of s.data){if(!o(e.full_name))continue;let t=e.pushed_at?new Date(e.pushed_at):null;r.push({id:String(e.id),owner:e.owner.login,name:e.name,fullName:e.full_name,defaultBranch:e.default_branch??null,private:e.private,archived:e.archived??!1,htmlUrl:e.html_url??null,pushedAt:t&&!Number.isNaN(t.getTime())?t:null})}if(s.data.length<100)return{ok:!0,data:{repos:r,truncated:!1}}}return{ok:!0,data:{repos:r,truncated:!0}}}async function f(e,t,r={}){if(!o(t))return{ok:!0,data:null};let n=await l(`/repos/${s(t)}/contents/package.json`,e,r,"application/vnd.github.raw+json");if(!n.ok)return"missing"===n.kind?{ok:!0,data:null}:n;if(n.text.length>262144)return{ok:!0,data:null};try{let e=JSON.parse(n.text).name;return{ok:!0,data:"string"==typeof e&&e.trim()&&e.length<=214?e.trim():null}}catch{return{ok:!0,data:null}}}let m=t.z.object({total_count:r.z.number(),workflow_runs:i.z.array(t.z.object({status:n.z.string().nullish(),conclusion:n.z.string().nullish(),name:n.z.string().nullish(),display_title:n.z.string().nullish(),head_branch:n.z.string().nullish(),head_sha:n.z.string().nullish(),html_url:n.z.string().nullish(),run_number:r.z.number().nullish(),updated_at:n.z.string().nullish(),created_at:n.z.string().nullish()}))});async function h(e,t,r,n={}){if(!o(t))return{ok:!1,kind:"format",error:"That isn't a repository name."};let a=new URLSearchParams({per_page:"1",exclude_pull_requests:"true",...r?{branch:r}:{}}),i=await l(`/repos/${s(t)}/actions/runs?${a}`,e,n);if(!i.ok)return i;let u=m.safeParse(i.data);if(!u.success)return d("the Actions runs");let c=u.data.workflow_runs[0];return c?{ok:!0,data:{status:c.status??"unknown",conclusion:c.conclusion??null,name:c.name??c.display_title??null,branch:c.head_branch??null,sha:c.head_sha??null,url:c.html_url?.startsWith("https://github.com/")?c.html_url:null,at:c.updated_at??c.created_at??null,runNumber:c.run_number??null}}:{ok:!0,data:{none:!0}}}let g=e=>/^[A-Za-z0-9._\/-]{1,200}$/.test(e)&&!e.includes("..")&&!e.startsWith("/")&&!e.endsWith("/");async function y(e,t,r,n,a,i={}){if(!o(t)||!g(n)||!r||r.split("/").includes("..")||r.startsWith("/"))return{ok:!1,kind:"format",error:"That isn't a file in a repository."};let u=r.split("/").map(encodeURIComponent).join("/"),d=await l(`/repos/${s(t)}/contents/${u}?ref=${encodeURIComponent(n)}`,e,i,"application/vnd.github.raw+json");return d.ok?Buffer.byteLength(d.text,"utf8")>a||d.text.includes("\0")||(d.text.match(/�/g)?.length??0)>8?{ok:!0,data:null}:{ok:!0,data:d.text}:d}async function b(e,r,a,u={}){if(!o(r)||!/^[0-9a-f]{40}$/.test(a))return{ok:!1,kind:"format",error:"That isn't a repository or commit."};let c=await l(`/repos/${s(r)}/actions/runs?head_sha=${a}&per_page=50`,e,u);if(!c.ok)return c;let p=t.z.object({workflow_runs:i.z.array(t.z.object({status:n.z.string().nullish(),conclusion:n.z.string().nullish()}))}).safeParse(c.data);return p.success?{ok:!0,data:p.data.workflow_runs.map(e=>({status:e.status??"queued",conclusion:e.conclusion??null}))}:d("the Actions runs")}t.z.object({sha:n.z.string().optional(),truncated:a.z.boolean().optional(),tree:i.z.array(t.z.object({path:n.z.string(),type:n.z.string(),size:r.z.number().optional()}))}),e.s(["$",0,262144,"V",0,y,"j",0,l,"k",0,c,"M",0,o,"c",0,g,"W",0,h,"o",0,p,"q",0,f,"f",0,s,"L",0,b])},198552,974034,e=>{var t=e.i(75064),r=e.i(492973),n=e.i(909592),a=e.i(260417),i=e.i(710075),o=e.i(932378),s=e.i(246517);let l=/^[A-Za-z0-9._-]{1,100}$/,u=e=>e.trim().replace(/^\.\//,"").split("/").filter(e=>""!==e&&"."!==e);function d(e){if("string"!=typeof e)return null;let t=u(e);if(!t.length||t.length>4||t.some(e=>".."===e||!l.test(e)))return null;let r=t.join("/");return r.length<=150?r:null}function c(e){if("string"!=typeof e||!u(e).length||null!==d(e))return null;let t=e.replace(/[\u0000-\u001f\u007f-\u009f]/g,"").trim();return t?t.length>80?`${t.slice(0,79)}…`:t:null}function p(e){let t=e.trim().replace(/^\.\//,"").replace(/\/+$/,"").split("**").map(e=>e.split("*").map(e=>e.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join("[^/]*")).join(".*");return RegExp(`^${t}$`)}e.s(["Q",0,d,"x",0,e=>e?`${e} (the Vercel project's Root Directory)`:"the repository root","H",0,(e,t)=>e?`${e}/${t}`:t,"p",0,function(e,t,r){if("npm"===e)try{let e=JSON.parse(t);return!!e.packages&&"object"==typeof e.packages&&Object.hasOwn(e.packages,r)}catch{return!1}if("pnpm"===e){let e=t.search(/^importers:\s*$/m);if(e<0)return!1;let n=t.slice(e).split(/\n(?=\S)/)[0],a=r.replace(/[.+?^${}()|[\]\\]/g,"\\$&");return RegExp(`^ {2}['"]?${a}['"]?:\\s*$`,"m").test(n)}return!1},"l",0,c,"F",0,function(e,t){let r;if(!e)return!1;try{r=JSON.parse(e)}catch{return!1}let n=r&&"object"==typeof r&&!Array.isArray(r)?r.workspaces:void 0,a=(Array.isArray(n)?n:n&&"object"==typeof n&&Array.isArray(n.packages)?n.packages:[]).filter(e=>"string"==typeof e&&""!==e.trim()),i=a.filter(e=>e.trim().startsWith("!")).map(e=>e.trim().slice(1));return a.some(e=>!e.trim().startsWith("!")&&p(e).test(t))&&!i.some(e=>p(e).test(t))}],974034);let f="https://api.vercel.com";async function m(e,t,r){let n;try{n=await (r.fetch??fetch)(`${f}${e}`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?"Vercel didn't answer within 5 seconds.":"Couldn't reach Vercel."}}if(401===n.status||403===n.status)return{ok:!1,kind:"auth",status:n.status,error:`Vercel rejected this credential (${n.status}).`};if(429===n.status){let e=Number(n.headers.get("Retry-After"));return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60,error:"Vercel says there were too many requests."}}return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,kind:"transient",status:n.status,error:`Vercel returned an error (${n.status}).`}}async function h(e,n,a,i,o){let s;try{s=await (o.fetch??fetch)(`${f}${n}`,{method:e,headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...void 0===i?{}:{"Content-Type":"application/json"}},...void 0===i?{}:{body:JSON.stringify(i)},signal:AbortSignal.timeout(o.timeoutMs??5e3),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?"Vercel didn't answer within 5 seconds; the action may still have happened. Check the deployments in a minute.":"Couldn't reach Vercel."}}if(401===s.status)return{ok:!1,kind:"auth",status:401,error:"Vercel rejected this credential (401)."};if(403===s.status)return{ok:!1,kind:"scope",status:403,error:"Vercel refused this token for that project (403)."};if(429===s.status){let e;return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(e=Number(s.headers.get("Retry-After")))&&e>0?e:60,error:"Vercel says there were too many requests."}}let l=await s.json().catch(()=>null);if(!s.ok){let e=t.z.object({error:t.z.object({code:r.z.string().regex(/^[A-Za-z0-9_-]{1,60}$/)})}).safeParse(l);return{ok:!1,kind:"transient",status:s.status,error:`Vercel refused this (${s.status}${e.success?`, ${e.data.error.code}`:""}).`}}return{ok:!0,data:l}}let g=e=>`teamId=${encodeURIComponent(e)}`,y=encodeURIComponent,b=e=>({ok:!1,kind:"format",error:`Vercel answered ${e} in a format the console doesn't recognise.`});function w(e,t,r=[]){let n=e.filter(e=>!1!==e.verified&&!e.redirect&&!e.gitBranch&&!e.customEnvironmentId),a=new Set(r.map(e=>e.toLowerCase())),i=n.map((t,r)=>{let n;return{name:t.name,key:[...(n=t.name,[+!e.some(e=>e.redirect?.toLowerCase()===n.toLowerCase()),+!!n.endsWith(".vercel.app"),+!a.has(n.toLowerCase()),n.length]),r]}}).sort((e,t)=>{for(let r=0;r<e.key.length;r++)if(e.key[r]!==t.key[r])return e.key[r]-t.key[r];return 0});return i[0]?.name??`${t}.vercel.app`}let v=t.z.object({teams:n.z.array(t.z.object({id:r.z.string(),slug:r.z.string(),name:r.z.string().nullish()}))});async function k(e,t={}){let r=await m("/v2/teams?limit=100",e,t);if(!r.ok)return r;let n=v.safeParse(r.data);return n.success?{ok:!0,data:n.data.teams.map(e=>({id:e.id,slug:e.slug,name:e.name??e.slug}))}:b("the team list")}async function _(e,r={}){let n=await m("/v5/user/tokens/current",e,r);if(!n.ok)return n;let i=t.z.object({token:t.z.object({expiresAt:a.z.number().nullish()})}).safeParse(n.data);return i.success?{ok:!0,data:i.data.token.expiresAt?new Date(i.data.token.expiresAt):null}:b("the token details")}let A=t.z.object({id:r.z.string(),readyState:r.z.string().nullish(),createdAt:a.z.number().nullish().catch(null),alias:n.z.array(r.z.string()).nullish().catch(null)}).nullish(),I=t.z.object({type:r.z.string(),jobStatus:r.z.string(),toDeploymentId:r.z.string(),requestedAt:a.z.number()}).nullish().catch(null);function S(e,t){let r=e?.readyState==="READY"?e.id:null;return t&&"succeeded"===t.jobStatus&&("rollback"===t.type||"promote"===t.type&&"number"==typeof e?.createdAt&&e.createdAt<=t.requestedAt)?t.toDeploymentId:r}let $=t.z.object({id:r.z.string(),name:r.z.string(),framework:r.z.string().nullish(),createdAt:a.z.number(),link:t.z.object({productionBranch:r.z.string().nullish(),type:r.z.string().nullish(),org:r.z.string().nullish(),repo:r.z.string().nullish()}).nullish(),resourceConfig:t.z.object({functionDefaultRegions:n.z.array(r.z.string()).nullish()}).nullish(),targets:t.z.object({production:A}).nullish(),lastAliasRequest:I,rootDirectory:r.z.string().nullish().catch(null)}),T=t.z.object({projects:n.z.array($),pagination:t.z.object({next:a.z.number().nullish()}).nullish()});async function R(e,t,r={}){let n,a=[];for(let i=0;i<10;i++){let i=await m(`/v10/projects?teamId=${encodeURIComponent(t.id)}&limit=100${n?`&until=${n}`:""}`,e,r);if(!i.ok)return i;let o=T.safeParse(i.data);if(!o.success)return b("the project list");for(let e of o.data.projects)a.push({id:e.id,name:e.name,team:t,framework:e.framework??null,createdAt:new Date(e.createdAt),productionBranch:e.link?.productionBranch??null,currentDeploymentId:S(e.targets?.production,e.lastAliasRequest),repo:e.link?.type&&e.link.org&&e.link.repo?{type:e.link.type,org:e.link.org,repo:e.link.repo}:null,functionRegions:e.resourceConfig?.functionDefaultRegions??[],rootDirectory:d(e.rootDirectory),rootDirectoryUnsupported:c(e.rootDirectory),productionAliases:e.targets?.production?.alias??[]});if(!(n=o.data.pagination?.next))break}return{ok:!0,data:a}}let x=t.z.object({uid:r.z.string(),projectId:r.z.string(),state:r.z.string().nullish(),readyState:r.z.string().nullish(),target:r.z.string().nullish(),source:r.z.string().nullish(),url:r.z.string().nullish(),createdAt:a.z.number().nullish(),created:a.z.number().nullish(),buildingAt:a.z.number().nullish(),ready:a.z.number().nullish(),meta:i.z.record(r.z.string(),o.z.unknown()).nullish(),gitSource:t.z.object({ref:r.z.string().nullish(),sha:r.z.string().nullish()}).nullish().catch(null)}),E=e=>"string"==typeof e&&e.length?e:null,N=e=>e?new Date(e):null;function P(e,t){var r,n;let a,i,o=e.readyState??e.state??"BUILDING",s=e.meta??{};return{id:t,projectId:e.projectId,state:"READY"===o?"ready":"ERROR"===o?"error":"CANCELED"===o?"canceled":"building",rawState:o,target:"production"===e.target?"production":"preview",branch:E(s.githubCommitRef)??E(s.gitCommitRef)??E(s.gitlabCommitRef)??E(s.bitbucketCommitRef)??E(e.gitSource?.ref),sha:E(s.githubCommitSha)??E(s.gitCommitSha)??E(s.gitlabCommitSha)??E(s.bitbucketCommitSha)??E(e.gitSource?.sha),message:E(s.githubCommitMessage)??E(s.gitCommitMessage)??E(s.gitlabCommitMessage)??E(s.bitbucketCommitMessage),source:e.source??null,url:e.url??null,createdAt:new Date(e.createdAt??e.created??0),buildingAt:N(e.buildingAt),readyAt:N(e.ready),...(r=s,n=e.gitSource?.ref,a=E(r.githubCommitRef)?"github":E(r.gitlabCommitRef)?"gitlab":E(r.bitbucketCommitRef)?"bitbucket":E(n)?"gitSource":E(r.gitCommitRef)?"cli":null,i="1"===r.gitDirty||1===r.gitDirty||!0===r.gitDirty,{...a?{branchFrom:a}:{},...i?{gitDirty:!0}:{}})}}async function O(e,r,a,i={}){let o=await m(`/v7/deployments?teamId=${encodeURIComponent(r.id)}&limit=${a.limit??100}${a.since?`&since=${a.since}`:""}`,e,i);if(!o.ok)return o;let s=t.z.object({deployments:n.z.array(x)}).safeParse(o.data);return s.success?{ok:!0,data:s.data.deployments.map(e=>P(e,e.uid))}:b("the deployment list")}let C=x.omit({uid:!0,projectId:!0}).extend({id:r.z.string(),projectId:r.z.string().nullish()});async function j(e,t,r,n={}){let a=await m(`/v13/deployments/${encodeURIComponent(r)}?teamId=${encodeURIComponent(t.id)}`,e,n);if(!a.ok)return a;let i=C.safeParse(a.data);return i.success?{ok:!0,data:P({...i.data,uid:i.data.id,projectId:i.data.projectId??""},i.data.id)}:b("the deployment")}let D=t.z.object({name:r.z.string(),targets:t.z.object({production:A}).nullish(),lastAliasRequest:I});async function M(e,t,r,n={}){let a=await m(`/v9/projects/${y(r)}?${g(t)}`,e,n);if(!a.ok)return a;let i=D.safeParse(a.data);return i.success?{ok:!0,data:{name:i.data.name,currentId:S(i.data.targets?.production,i.data.lastAliasRequest)}}:b("the project")}let z=t.z.object({deployments:n.z.array(x.extend({projectId:r.z.string().nullish()}))});async function q(e,t,r,n,a,i){let o=`projectId=${y(r)}&target=production&state=${n}&limit=${a}&${g(t)}`,s=await m(`/v6/deployments?${o}`,e,i);if(!s.ok)return s;let l=z.safeParse(s.data);return l.success?{ok:!0,data:l.data.deployments.map(e=>P({...e,projectId:e.projectId??r},e.uid))}:b("the deployment list")}async function L(e,t,r,n={}){return q(e,t,r,"READY",5,n)}async function U(e,t,r,n={}){let a=await q(e,t,r,"BUILDING,QUEUED,INITIALIZING",1,n);return a.ok?{ok:!0,data:a.data[0]??null}:a}async function H(e,n,a,i={}){let o=await h("POST",`/v13/deployments?${g(n)}`,e,{name:a.name,project:a.projectId,deploymentId:a.deploymentId,target:"production"},i);if(!o.ok)return o;let s=t.z.object({id:r.z.string()}).safeParse(o.data);return{ok:!0,data:{id:s.success?s.data.id:""}}}async function B(e,t,r,n,a={}){let i=await h("POST",`/v1/projects/${y(r)}/rollback/${y(n)}?${g(t)}`,e,void 0,a);return i.ok?{ok:!0,data:null}:i}let V=t.z.object({domains:n.z.array(t.z.object({name:r.z.string(),redirect:r.z.string().nullish(),verified:s.z.boolean().optional(),gitBranch:r.z.string().nullish(),customEnvironmentId:r.z.string().nullish().catch(null)})),pagination:t.z.object({next:a.z.number().nullish()}).nullish()});async function G(e,t,r,n={}){let a,i=[];for(let o=0;o<10;o++){let o=await m(`/v9/projects/${encodeURIComponent(r)}/domains?teamId=${encodeURIComponent(t)}&limit=100${a?`&until=${a}`:""}`,e,n);if(!o.ok)return o;let s=V.safeParse(o.data);if(!s.success)return b("the domain list");for(let e of s.data.domains)i.push({name:e.name,redirect:e.redirect??null,verified:!1!==e.verified,gitBranch:e.gitBranch??null,customEnvironmentId:e.customEnvironmentId??null});if(!(a=s.data.pagination?.next))return{ok:!0,data:i}}return{ok:!1,kind:"transient",error:"The project has more than 1000 domains; Watchbell kept the domains it had."}}async function K(e,t,r,n,a={},i=[]){let o=await G(e,t,r,a);return o.ok?{ok:!0,data:w(o.data,n,i)}:o}let F=t.z.object({misconfigured:s.z.boolean(),configuredBy:r.z.string().nullish(),recommendedIPv4:n.z.array(t.z.object({value:n.z.array(r.z.string())})).default([])});async function W(e,t,r,n={}){let a=await m(`/v6/domains/${encodeURIComponent(r)}/config?teamId=${encodeURIComponent(t)}`,e,n);if(!a.ok)return a;let i=F.safeParse(a.data);return i.success?{ok:!0,data:{misconfigured:i.data.misconfigured,configuredBy:i.data.configuredBy??null,recommendedIps:i.data.recommendedIPv4.flatMap(e=>e.value)}}:b("the domain configuration")}async function X(e,t={}){let r=await k(e,t);if(!r.ok)return r;let n=[],a=[],i=[];for(let o of r.data){let r=await R(e,o,t);if(!r.ok){if(403===r.status){a.push(o.name),i.push(o.id);continue}return r}for(let e of r.data)n.push({externalId:e.id,name:e.name,meta:{teamId:o.id,teamSlug:o.slug,teamName:o.name,framework:e.framework,productionBranch:e.productionBranch,createdAt:e.createdAt.toISOString(),repo:e.repo?`${e.repo.org}/${e.repo.repo}`:null,repoType:e.repo?.type??null,functionRegions:e.functionRegions,rootDirectory:e.rootDirectory,...e.rootDirectoryUnsupported?{rootDirectoryUnsupported:e.rootDirectoryUnsupported}:{},...e.productionAliases.length?{productionAliases:e.productionAliases}:{}}})}return a.length===r.data.length?{ok:!1,kind:"auth",error:"This token can't read any of your Vercel teams. Create a token with access to them."}:{ok:!0,data:{apps:n,skippedTeams:a,skippedTeamIds:i}}}async function J(e,r,a,i,o={}){if(!/^[0-9a-f]{40}$/.test(i))return b("the commit");let s=new URLSearchParams({teamId:r,projectId:a,sha:i,limit:"10"}),l=await m(`/v6/deployments?${s}`,e,o);if(!l.ok)return l;let u=t.z.object({deployments:n.z.array(x)}).safeParse(l.data);return u.success?{ok:!0,data:u.data.deployments.map(e=>P(e,e.uid)).filter(e=>e.projectId===a&&(null===e.sha||e.sha===i)).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())}:b("the deployment list")}async function Y(e,t,r,n={}){let a=await m(`/v9/projects/${y(r)}?${g(t)}`,e,n);if(!a.ok)return a;let i=D.safeParse(a.data);if(!i.success)return b("the project");let o=i.data.targets?.production??null,s=i.data.lastAliasRequest??null;return{ok:!0,data:{currentId:S(o,s),latest:o?{id:o.id,readyState:o.readyState??null,createdAt:o.createdAt??null}:null,promote:s&&"promote"===s.type&&"succeeded"===s.jobStatus?{toDeploymentId:s.toDeploymentId,requestedAt:s.requestedAt}:null}}}e.s(["n",0,w,"c",0,M,"C",0,J,"G",0,X,"Q",0,W,"S",0,j,"K",0,O,"M",0,G,"W",0,R,"X",0,k,"r",0,L,"q",0,K,"k",0,Y,"L",0,H,"E",0,B,"N",0,U,"o",0,_],198552)},902509,e=>{var t=e.i(122603);let r=String.raw`\d+\.\d+\.\d+(?:-[0-9A-Za-z.]+)?`,n="[\"'`]";function a(e){let t=/^(\d+)\.\d+\.\d+(?:-[0-9A-Za-z.]+)?$/.exec(e);return null!==t&&Number(t[1])>=9&&1e3>Number(t[1])}let i={"&amp;":"&","&quot;":'"',"&#39;":"'","&#x27;":"'","&#x2F;":"/","&#47;":"/"},o=e=>e.replace(/&(?:amp|quot|#39|#x27|#x2F|#47);/gi,e=>i[e]??i[e.toLowerCase()]??e),s=RegExp(String.raw`\bnext\s*=\s*\{\s*version\s*:\s*${n}(${r})${n}`,"g"),l=RegExp(String.raw`version\s*:\s*${n}(${r})${n}\s*,\s*appDir\s*:`,"g"),u=RegExp(String.raw`appDir\s*:\s*[^,{}()]{1,16},\s*version\s*:\s*${n}(${r})${n}`,"g"),d=/\bnext\s*=\s*\{\s*version\s*(?::\s*([A-Za-z_$][\w$]*)\s*)?[,}]/g,c=e=>e.replace(/[$]/g,"\\$");var p=e.i(52535);async function f(e,i,m={}){let h=m.deadline??1/0,g=m.now??(()=>new Date),y=e=>Math.floor(Math.min(e,h)-Date.now()),b=Date.now()+15e3;if(0>=y(b))return null;let w=(e,t)=>({version:i?.version??null,status:e,findings:i?.findings??[],reason:t,checkedAt:g()}),v=(e,r)=>(0,t.K)(e,{maxBytes:3145728,timeoutMs:y(b),lookup:m.lookup,fetch:m.fetch,userAgent:"OpsConsole-Security/1.0 (+https://watchbell.west-solutions.web.id)",sameOrigin:r}),k=await v(`https://${e}/`,"www");if(!k.ok&&k.error===t.l)return w("unknown","the site redirects to another host");if(!k.ok||200!==k.status)return Date.now()>=h?null:w("error",`Couldn't load the site: ${k.ok?`HTTP ${k.status}`:k.error}`);let _=(function(e,t){let r;try{r=new URL(t)}catch{return[]}let n=new Set,a=[];for(let t of e.matchAll(/<script\b[^>]*?\ssrc\s*=\s*(["'])(.*?)\1/gi)){let e;try{e=new URL(o(t[2].trim()),r)}catch{continue}if("https:"===e.protocol&&e.origin===r.origin&&e.pathname.startsWith("/_next/static/")&&(e.hash="",!n.has(e.href))){var i;n.add(e.href),a.push({href:e.href,rank:(i=e.pathname,/\/main-app[-.]/.test(i)?0:/\/(main|app-index)[-.]/.test(i)?1:/\/(webpack|polyfills|framework)[-.]/.test(i)?3:2),i:a.length})}}return a.sort((e,t)=>e.rank-t.rank||e.i-t.i).map(e=>e.href)})(k.body,k.url).slice(0,12);if(0===_.length)return w("unknown",k.body.includes("/_next/")?"version not exposed":"not a Next.js site");let A=null,I=0,S=!1;for(let e of _){if(0>=y(b)){S=!0;break}let t=await v(e,!0);if(t.ok&&200===t.status&&(I++,A=function(e){for(let t of e.matchAll(s))if(a(t[1]))return t[1];for(let t of[l,u])for(let r of e.matchAll(t))if(a(r[1]))return r[1];for(let t of e.matchAll(d)){let i=t[1]??"version",o=RegExp(String.raw`(?:^|[^\w$.])${c(i)}\s*=\s*${n}(${r})${n}`,"g"),s=null;for(let r of e.matchAll(o)){if((r.index??0)>=(t.index??0))break;s=r[1]}if(s&&a(s))return s}return null}(t.body)))break}if(!A)return Date.now()>=h?null:S||0>=y(b)?w("error","Reading the site's scripts took longer than 15 s"):0===I?w("error","Couldn't load the site's scripts"):w("unknown","version not exposed");let $=y(Date.now()+1e4);if($<=0)return null;let T=await (0,p.y)(A,{timeoutMs:$,fetch:m.fetch});return T.ok?{version:A,status:T.findings.length?"vulnerable":"ok",findings:T.findings,reason:null,checkedAt:g()}:Date.now()>=h?null:w("error",T.error)}e.s(["y",0,35e3,"P",0,f,"F",0,function(e,t){return Math.min(t+35e3,e+55e3)}],902509)},228516,e=>{var t=e.i(75064),r=e.i(909592),n=e.i(492973),a=e.i(246517);let i=t.z.object({result:t.z.object({releases:r.z.array(t.z.object({name:n.z.string(),isEol:a.z.boolean(),eolFrom:n.z.string().nullish(),latest:t.z.object({name:n.z.string()}).nullish()})).min(1)})});function o(e){let t=i.safeParse(e);return t.success?t.data.result.releases.map(e=>({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null,latest:e.latest?.name??null})):null}async function s(e={}){let t;try{t=await (e.fetch??fetch)("https://endoflife.date/api/v1/products/nextjs/",{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(e.timeoutMs??8e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach endoflife.date"}}if(!t.ok)return{ok:!1,error:`endoflife.date returned an error (${t.status})`};let r=o(await t.json().catch(()=>null));return r?{ok:!0,cycles:r}:{ok:!1,error:"endoflife.date answered in a format the console doesn't recognise"}}e.s(["T",0,"eol.nextjs","z",0,s,"b",0,o])},631065,e=>{let t={CRITICAL:4,HIGH:3,MODERATE:2,LOW:1,UNKNOWN:0};function r(e){return e.reduce((e,r)=>t[r.severity]>t[e]?r.severity:e,"UNKNOWN")}let n=e=>`${e} known vulnerabilit${1===e?"y":"ies"}`;e.s(["t",0,function(e,a,i){let o=new Set((a?.findings??[]).map(e=>e.id));if("vulnerable"===i.status&&i.findings.length>0){if(i.findings.every(e=>o.has(e.id)))return null;let a=r(i.findings);return{kind:t[a]>=t.HIGH?"err":"warn",message:`${e} runs Next.js ${i.version} with ${n(i.findings.length)} (${a.toLowerCase()})`,detail:i.findings.map(e=>e.id).join(", ").slice(0,1e3)}}return"ok"===i.status&&o.size>0?{kind:"ok",message:`${e} no longer has known Next.js vulnerabilities (now ${i.version})`,detail:null}:null},"I",0,function(e){return[...e].sort((e,r)=>t[r.severity]-t[e.severity]||(e.id<r.id?-1:+(e.id>r.id)))},"q",0,n,"N",0,r])},663948,e=>{function t(e){let[t,...r]=e.trim().split("-"),n=t.split(".").map(e=>Number.parseInt(e,10)||0);return{nums:[n[0]??0,n[1]??0,n[2]??0],pre:r.length?r.join("-").split("."):[]}}e.s(["f",0,function(e,r){let n=t(e),a=t(r);for(let e=0;e<3;e++)if(n.nums[e]!==a.nums[e])return n.nums[e]-a.nums[e];return function(e,t){if(!e.length||!t.length)return e.length?-1:+!!t.length;for(let r=0;r<Math.max(e.length,t.length);r++){if(void 0===e[r])return -1;if(void 0===t[r])return 1;let n=/^\d+$/.test(e[r])?Number(e[r]):null,a=/^\d+$/.test(t[r])?Number(t[r]):null;if(null!==n&&null!==a){if(n!==a)return n-a}else if(null!==n||null!==a)return null!==n?-1:1;else if(e[r]!==t[r])return e[r]<t[r]?-1:1}return 0}(n.pre,a.pre)}])},760859,e=>{let t=new Set(["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","db","fs"]);function r(e){let t=e+1,r="";for(;t>0;)r=String.fromCharCode(97+(t-1)%26)+r,t=Math.floor((t-1)/26);return r}let n=e=>(e instanceof Date?e:new Date(e)).getTime(),a=(e,t)=>n(e.firstSeenAt)-n(t.firstSeenAt)||(e.id<t.id?-1:+(e.id>t.id));function i(e,t){return[...e].sort(a).map((e,n)=>({id:e.id,name:e.name,alias:`${t}-${r(n)}`}))}function o(e,t){return e.db.find(e=>e.id===t)?.alias??"db-?"}let s=/[\p{L}\p{N}._%+-]+@[\p{L}\p{N}-]+(?:\.[\p{L}\p{N}-]+)*\.[\p{L}]{2,}/gu;function l(e){return e.replace(s,"[email hidden]")}let u=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d="[\\p{L}\\p{N}_-]",c=new WeakMap;function p(e,t,r){let n;if(!e)return e;let a=r?t.db.find(e=>e.id===r):void 0,i=a&&a.name.trim().length>=2?e.replace((n=a.name,RegExp(`(?<!${d})${u(n)}(?!${d})`,"giu")),a.alias):e,o=function(e){if(c.has(e))return c.get(e);let t=new Set(e.app.map(e=>e.name.toLowerCase())),r=[...new Set(e.db.map(e=>e.name).filter(e=>e.trim().length>=2&&!t.has(e.toLowerCase())))].sort((e,t)=>t.length-e.length),n=new Map;for(let t of e.db)n.has(t.name.toLowerCase())||n.set(t.name.toLowerCase(),t.alias);let a=r.length?{re:RegExp(`(?<!${d})(?:${r.map(u).join("|")})(?!${d})`,"giu"),alias:n}:null;return c.set(e,a),a}(t);return o&&(i=i.replace(o.re,e=>o.alias.get(e.toLowerCase())??e)),l(i)}let f=String.raw`[\p{L}\p{N}_.-]`,m=String.raw`(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])`;new WeakMap;let h=new WeakMap;e.s(["a",0,{db:[],app:[]},"r",0,(e,t)=>e.app.find(e=>e.name===t)?.alias??"app-?","n",0,function(e,o=[]){let s=e.filter(e=>"app"===e.kind),l=i(s,"app"),u=[...o].sort((e,t)=>n(e.createdAt)-n(t.createdAt)||(e.id<t.id?-1:+(e.id>t.id))).map((e,t)=>({id:e.id,name:e.label,alias:`account-${t+1}`}));return{db:i(e.filter(e=>{let r;return null!=(r=e.kind)&&t.has(r)}),"db"),app:l,account:u,host:function(e,t){let n=[],i=new Set,o=(e,t,r)=>{let a=t.toLowerCase();i.has(a)||(i.add(a),n.push({id:e,name:a,alias:r}))},s=new Map(t.map(e=>[e.id,e])),l=e.filter(e=>"domain"===e.kind).sort(a),u=new Map;for(let e of l){let t=e.parentId?s.get(e.parentId):void 0;if(!t)continue;let r=(u.get(t.id)??0)+1;u.set(t.id,r),o(e.id,e.name,`${t.alias}${r>1?`-${r}`:""}.example`)}for(let e of t)o(`${e.id}:vercel`,`${e.name}.vercel.app`,`${e.alias}${u.has(e.id)?"-vercel":""}.example`);return e.filter(e=>"zone"===e.kind||"domain"===e.kind&&!(e.parentId&&s.has(e.parentId))).sort(a).filter(e=>!i.has(e.name.toLowerCase())).forEach((e,t)=>o(e.id,e.name,`site-${r(t)}.example`)),n}(e,l),team:function(e){let t=[];for(let r of[...e].sort(a)){let e=r.team?.trim();e&&!t.some(t=>t.name===e)&&t.push({id:`team:${e}`,name:e,alias:`team-${t.length+1}`})}return t}(s)}},"X",0,o,"o",0,function(e,t){let r;return{...e,title:(r=e.resourceId)&&t.db.some(e=>e.id===r)?o(t,e.resourceId):p(e.title,t,e.resourceId),message:p(e.message,t,e.resourceId),causedBy:p(e.causedBy,t)}},"G",0,l,"J",0,p,"d",0,function(e,t){let r=/^db-unlinked:(.+)$/.exec(e.key)?.[1];return{...e,subject:r?o(t,r):p(e.subject,t),title:p(e.title,t,r),why:p(e.why,t,r),fix:p(e.fix,t,r)}},"q",0,function(e,t){if(!e)return e;let r=function(e){let t=h.get(e);if(t)return t;let r=new Map((e.host??[]).map(e=>[e.alias.toLowerCase(),e.name])),n=new Map;for(let t of[...e.app,...e.db])t.name.trim()&&!n.has(t.alias.toLowerCase())&&n.set(t.alias.toLowerCase(),t.name);let a=e=>[...e].sort((e,t)=>t.length-e.length).map(u).join("|"),i={host:r.size?RegExp(String.raw`(?<![\p{L}\p{N}_-])(?:${a(r.keys())})${m}`,"giu"):null,hostName:r,names:n.size?RegExp(`(?<!${f})(?:${a(n.keys())})${m}`,"giu"):null,realName:n};return h.set(e,i),i}(t),n=e;return r.host&&(n=n.replace(r.host,e=>r.hostName.get(e.toLowerCase())??e)),r.names&&(n=n.replace(r.names,e=>r.realName.get(e.toLowerCase())??e)),l(n)}])},785194,e=>{var t=e.i(728335);function r(e,r){let[n,a,i]=(0,t.dayKey)(e).split("-").map(Number);return Array.from({length:r},(e,t)=>new Date(Date.UTC(n,a-1,i-(r-1-t))).toISOString().slice(0,10))}let n=Date.UTC(2e3,0,1);e.s(["F",0,90,"I",0,30,"W",0,r,"D",0,function(e,t,r){return n+Math.floor((e.getTime()-n)/t)*t-(r-1)*t},"w",0,function(e,t,n){return r(t,n).map(t=>e?.get(t))},"C",0,function(e){let t=new Map;for(let r of e){let e=t.get(r.monitorId);e||(e=new Map,t.set(r.monitorId,e));let n=e.get(r.day);e.set(r.day,{day:r.day,checks:(n?.checks??0)+r.checks,failures:(n?.failures??0)+r.failures,maint:(n?.maint??0)+(r.maint??0)})}return t},"f",0,function(e,t,r,n,a=null){let i=Array.from({length:n},()=>a);for(let a of e){let e=Math.round((a.t-t)/r);e>=0&&e<n&&(i[e]=a.v)}return i},"Y",0,function(e){let t=0,r=0;for(let n of e)n&&(t+=n.checks,r+=n.failures);return t?(t-r)/t*100:null}])},70377,e=>{e.s(["O",0,{events:200,deployments:200,apps:200,monitors:200,domains:200,databases:200,recentEvents:5,ongoingBuilds:5},"A",0,{rawChecksMs:6048e5,healthBuckets:30,metricBuckets:48,responseHours:24}])},549556,e=>{var t=e.i(516506),r=e.i(547963);let n={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},a={MonitorDown:"workloads",HighLatency:"workloads",DeploymentFailed:"workloads",DatabasePaused:"databases",StorageAlmostFull:"databases",NeonComputeHigh:"databases",FirestoreQuotaHigh:"databases",AutoPauseRisk:"databases",ComputeHigh:"databases",DbQuotaHigh:"databases",CertExpiringSoon:"network",DomainExpiringSoon:"network",DnsProxiedToVercel:"network",CollectorStale:"observe",CredentialExpiring:"admin",VulnerableDependency:"workloads",FrameworkVulnerable:"workloads",MonitorDomainMoved:"workloads"},i=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved"]);e.s(["p",0,function(e){if((0,t.h)(e.ruleKey))return i.has(e.ruleKey)&&null!==e.resourceKind&&"app"!==e.resourceKind?"observe":a[e.ruleKey];let r=new Set(e.ruleKey.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),n=(...e)=>e.some(e=>r.has(e));return n("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":n("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":n("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":n("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===e.resourceKind?"workloads":"observe"},"y",0,e=>r.X.proposedBy(n[e])])},756652,11339,e=>{var t=e.i(989578),r=e.i(633075),n=e.i(549556),a=e.i(564769),i=e.i(92748);let o=["LogErrorSpike","LogErrors","LogDbErrors"],s="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(s,"i");let l=/^dpl_[A-Za-z0-9]{8,40}$/,u=/^ep-[a-z0-9-]{3,60}$/,d=/^[a-z0-9]{8,40}$/;function c(e,n,a){let i=n?(0,t.g)(n,a,120):"";return(0,r.l)((0,t.g)(i?`${e}. Most common: ${i}`:e,a,r.j)||e,r.j)}let p=e=>`${e.ruleKey}:${e.resourceId??""}:${e.action}`,f=new Set(["pending","approved","running"]);e.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,s,"G",0,20,"T",0,o,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(e,t,r){let n=new Set(t.filter(e=>f.has(e.status)||null!==e.closedAt&&r.getTime()-e.closedAt.getTime()<72e5).map(p)),a=new Set;return e.filter(e=>{let t=p(e);return!(n.has(t)||a.has(t))&&(a.add(t),!0)})},"t",0,function(e,t,o){return(function(e,t,n){let a=[],o=n.getTime(),s=null!==e.liveAt&&o-e.liveAt.getTime()<72e5&&e.liveAt.getTime()<=o,p=e.previousNext?.status??"unknown";if(s&&e.errorsSinceLive>=Math.max(10,Math.ceil(5*e.baselineErrors/24))&&e.currentId&&e.previousId&&l.test(e.previousId)&&e.previousId!==e.currentId&&"vulnerable"!==p){let n=c(`${e.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((o-e.liveAt.getTime())/6e4))} min ago (${e.baselineErrors} in the 24 h before)`,e.topSinceLive,t);a.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:e.appId,targetRef:e.previousId,reason:"ok"===p?n:(0,r.l)(`${i.B} ${n}`)})}let f=null!==e.lastDeployAt&&o-e.lastDeployAt.getTime()<72e5;if(e.errors30>=20&&!f&&e.httpMonitorId&&a.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:e.appId,targetRef:e.httpMonitorId,reason:c(`${e.errors30} errors in the last 30 min`,e.top30,t)}),e.dbErrors30>=3&&e.db){let r=c(`${e.dbErrors30} database connection errors in the last 30 min`,e.topDb,t),n=e.db;("neon_project"===n.kind||"neon_branch"===n.kind)&&n.wakeEndpoint&&u.test(n.wakeEndpoint)?a.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.wakeEndpoint,reason:r}):"supabase_project"===n.kind&&n.supabasePaused&&n.supabaseRef&&d.test(n.supabaseRef)&&a.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.supabaseRef,reason:r})}return a})(e,t,o).map(i=>{let s="app"===i.resourceKind?(0,r.J)("app",e.appId,e.appName,t):(0,r.J)(i.resourceKind,i.resourceId,null,t);return{alertId:null,ruleKey:i.ruleKey,room:i.room,action:i.action,risk:a.H[i.action].risk,title:(0,r.M)(i.action,s),reason:i.reason,resourceKind:i.resourceKind,resourceId:i.resourceId,resourceName:s,targetRef:i.targetRef,proposedBy:(0,n.y)(i.room),expiresAt:new Date(o.getTime()+a.V)}})},"D",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<27e4))&&(Math.floor(r/6e4)%5==0||null!==t&&r-t>=6e5)},"W",0,function(e,t){let r=new Set(t.map(p));return e.filter(e=>{let t;return"pending"===e.status&&(t=e.ruleKey,o.includes(t))&&!r.has(p(e))}).map(e=>e.id)}],756652);let m=new Set(["MonitorDown","LogErrorSpike"]);e.s(["r",0,72e5,"M",0,m,"s",0,function(e,t){let r=e=>({ok:!1,why:e});if(!e.setting.enabled)return r("off");if(!e.ruleKey||!m.has(e.ruleKey))return r("rule");let n=e.deploy;if(!n||!n.liveAt)return r("no live deploy");let a=t.getTime()-n.liveAt.getTime();return a<0||a>6e4*e.setting.windowMin?r("outside the window"):n.previousId&&e.targetRef===n.previousId&&n.previousId!==n.currentId?n.newestProdCreatedAt&&n.currentCreatedAt.getTime()<n.newestProdCreatedAt.getTime()?r("live deploy is a rollback"):e.rolledOrPromotedLately?r("live deploy came from a rollback or promote"):"ready"!==(n.previousState??"").toLowerCase()?r("previous not ready"):!n.previousCreatedAt||t.getTime()-n.previousCreatedAt.getTime()>2592e6?r("previous too old"):"vulnerable"===e.previousNext?r("previous Next.js has advisories"):"ok"!==e.previousNext?r("previous Next.js unknown"):e.autoLately?r("auto-rollback within 2 h"):e.sameDeployBefore?r("already rolled back once"):e.inFlight?r("another auto-rollback is running"):{ok:!0}:r("target changed")},"u",0,(e,t,n)=>(0,r.l)(`Automatic: the new deploy ${e} errored in the first ${t} minutes. ${n}`),"E",0,e=>e.currentSha&&/^[0-9a-f]{7,40}$/i.test(e.currentSha)?e.currentSha.slice(0,7):e.currentId.slice(0,16)],11339)},108621,e=>{var t=e.i(547963),r=e.i(589878),n=e.i(373200),a=e.i(262412),i=e.i(484745),o=e.i(93387),s=e.i(908480),l=e.i(601225),u=e.i(760859),d=e.i(989578),c=e.i(809303),p=e.i(564769);let f={target:n.Q,book:()=>(0,r.f)(),siteUrl:()=>(0,o.serverEnv)().SITE_URL,autoRun:()=>(0,c.I)(),send:(e,t,r,n,a)=>(0,l.I)(e,t,r,{...n?{replyMarkup:n}:{},...a?{replyTo:a}:{}}),record:(e,t)=>(0,n.P)("telegram",e,t),lang:()=>(0,s.H)("telegram"),discord:()=>(0,n.G)(),sendDiscord:(e,t)=>(0,a.f)(e,t,{timeoutMs:_}),recordDiscord:(e,t)=>(0,n.P)("discord",e,t),discordLang:()=>(0,s.H)("discord"),buttons:()=>e.A(176751).then(e=>e.approvalButtons()),thread:e=>(0,n.M)(e)},m={en:{pending:"Status: ⏳ waiting",dev:"🧑‍💻 Dev is checking the code",proposer:t.X.notifyFallback.en,app:"app",safe:"safe",risky:"needs care",proposes:"proposes",why:"Why",risk:"Risk",open:"Open in Auto-actions",waitingN:"new proposals waiting for approval:",moreN:"more proposals",automatic:"Automatic",rollbackWhy:"the app errored after the new deploy",succeeded:"Succeeded",failed:"Failed",stopFallback:"something failed"},id:{pending:"Status: ⏳ menunggu",dev:"🧑‍💻 Dev lagi cek kodenya",proposer:t.X.notifyFallback.id,app:"aplikasi",safe:"aman",risky:"perlu hati-hati",proposes:"usul",why:"Kenapa",risk:"Risiko",open:"Buka di Auto-actions",waitingN:"usulan baru menunggu persetujuan:",moreN:"usulan lagi",automatic:"Otomatis",rollbackWhy:"app-nya error setelah deploy baru",succeeded:"Berhasil",failed:"Gagal",stopFallback:"ada yang gagal"}},h={recheck:"Cek ulang sekarang",neon_wake:"Bangunin Neon",supabase_keepalive:"Kirim keep-alive Supabase",supabase_restore:"Restore project Supabase",vercel_redeploy:"Redeploy production",vercel_rollback:"Rollback ke deploy sebelumnya",github_bump_pr:"Bikin PR update paket",domain_recheck:"Cek ulang sertifikat domain",daily_rerun:"Jalanin ulang daily job",monitor_update_url:"Arahin monitor ke domain baru"},g=(e="en")=>(0,s.t)(m,e,"dev"),y=(e,t)=>("id"===t?h[e.action]:void 0)??p.H[e.action]?.label??e.actionLabel,b=(e,t)=>(0,s.t)(m,t,"risky"===e.risk||p.H[e.action]?.risk==="risky"?"risky":"safe"),w=(e,t)=>`${e.replace(/\/+$/,"")}/auto-actions${t?`?proposal=${encodeURIComponent(t)}`:""}`;function v(e,t,r,n=!1,a="en"){let o=e=>(0,s.t)(m,a,e),l=(0,d.R)(e.proposedBy,t,60)||o("proposer"),u=(0,d.R)(e.title,t,120),c=(0,d.R)(e.reason,t,200)||"-";return[`🧑‍✈️ ${(0,i.H)(l)} ${o("proposes")}: ${(0,i.H)(y(e,a))} — ${(0,i.H)(u)}`,`${o("why")}: ${(0,i.H)(c)}`,`${o("risk")}: ${b(e,a)}`,...n?[g(a)]:[],`${o("open")}: ${(0,i.H)(w(r,e.id))}`].join("\n")}let k=new Set(["recheck","domain_recheck"]),_=3e3,A={en:{proposed:"📝 Proposed",approved:"✅ Approved by the owner",rejected:"🚫 Rejected by the owner",done:"⚙️ Ran",failed:"❌ Failed",waiting:"waiting for approval on Telegram.",newN:"new proposals"},id:{proposed:"📝 Usulan",approved:"✅ Disetujui owner",rejected:"🚫 Ditolak owner",done:"⚙️ Dijalankan",failed:"❌ Gagal",waiting:"nunggu persetujuan di Telegram.",newN:"usulan baru"}};function I(e,t,r,n="en"){let a=e=>(0,s.t)(A,n,e);if(Array.isArray(t))return`📝 ${t.length} ${a("newN")} — ${a("waiting")}`;let i=((0,d.g)(t.title,r,120)||y(t,n)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===e)return`${a("proposed")}: ${i} — ${a("waiting")}`;if("approved"===e||"rejected"===e)return`${a(e)}: ${i}`;let o=t.result?(0,d.g)(t.result,r,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${a(e)}: ${i}${o?` — ${o}`:""}`}async function S(e,r,n){try{let a,i=await r.discord();if(!i)return;let o=await r.book().catch(()=>u.a),s=await r.discordLang().catch(()=>"en"),l=e(o,s);if(!l.length)return;try{a=await r.sendDiscord(i.url,l.join("\n"))}catch{a={ok:!1,kind:"transient",error:"Discord didn't answer."}}await r.recordDiscord(a,n).catch(()=>console.warn(`${t.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${t.X.logTag}/discord: sending the action history failed`)}}async function $(e,t,r={},n={}){let a={...f,...r};await R(()=>S((r,n)=>[I(e,t,r,n)],a,n.now??new Date),n.timeoutMs??_)}async function T(e,r,n){let a=await r.target();if(!a)return;let i=await r.book().catch(()=>u.a),o=await r.lang().catch(()=>"en");for(let s of(await e(i,o))){let e;try{e="string"==typeof s?await r.send(a.token,a.chatId,s):await r.send(a.token,a.chatId,s.text,s.keyboard,s.replyTo??void 0)}catch{e={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await r.record(e,n).catch(()=>console.warn(`${t.X.logTag}/telegram: recording the result failed`))}}async function R(e,r){try{var n;let t;await (n=e(),Promise.race([n,new Promise((e,n)=>{t=setTimeout(()=>n(Object.assign(Error("timeout"),{name:"TimeoutError"})),r)})]).finally(()=>clearTimeout(t)))}catch(e){console.warn(`${t.X.logTag}/telegram: sending the proposal notice failed:`,e instanceof Error?e.name:"error")}}let x=async(e,t)=>t&&e.thread?e.thread(t).catch(()=>null):null;async function E(e,t={},r={}){if(!e.length)return;let n={...f,...t};await R(async()=>{let t=await n.autoRun().catch(()=>null),a=e.filter(e=>{var r;return r=t??{},"pending"===e.status&&!e.auto&&(p.H[e.action]?.risk!=="safe"||"risky"===e.risk||!r[e.action])});if(!a.length)return;let o=a.length>3||!n.buttons?null:await n.buttons().catch(()=>null),l=r.now??new Date;await Promise.all([T(async(e,t)=>a.length>3?[function(e,t,r,n=new Set,a="en"){let o=e=>(0,s.t)(m,a,e),l=e.slice(0,10).map(e=>{let s=(0,d.R)(e.proposedBy,t,60)||o("proposer");return`• ${(0,i.H)(s)}: ${(0,i.H)(y(e,a))} — ${(0,i.H)((0,d.R)(e.title,t,120))} (${b(e,a)})${n.has(e.id)?` \xb7 ${g(a)}`:""}
42
44
  ${(0,i.H)(w(r,e.id))}`}),u=e.length>10?[`+${e.length-10} ${o("moreN")}`]:[];return[`🧑‍✈️ ${e.length} ${o("waitingN")}`,...l,...u,`${o("open")}: ${(0,i.H)(w(r))}`].join("\n")}(a,e,n.siteUrl(),r.devQueued,t)]:Promise.all(a.map(async a=>{let i=v(a,e,n.siteUrl(),r.devQueued?.has(a.id)??!1,t),l=await x(n,r.alertIds?.get(a.id));return o?{text:`${i}
43
45
  ${((e="en")=>(0,s.t)(m,e,"pending"))(t)}`,keyboard:o(a),replyTo:l}:{text:i,replyTo:l}})),n,l),S((e,t)=>a.length>3?[I("proposed",a,e,t)]:a.map(r=>I("proposed",r,e,t)),n,l)])},r.timeoutMs??8e3)}async function N(e,t={},r={}){if(!e.auto||"done"!==e.status&&"failed"!==e.status)return;let n={...f,...t},a=r.now??new Date;await R(()=>Promise.all([T(async(t,a)=>{let o=function(e,t,r="en"){if(!e.auto||"done"!==e.status&&"failed"!==e.status||e.auto&&"done"===e.status&&k.has(e.action))return null;let n="done"===e.status?"✅":"❌",a=e.result?(0,d.R)(e.result,t,200):"";return`${n} ${(0,s.t)(m,r,"automatic")}: ${(0,i.H)(y(e,r))} — ${(0,i.H)((0,d.R)(e.title,t,120))}${a?`: ${(0,i.H)(a)}`:""}`}(e,t,a);return o?[{text:o,replyTo:await x(n,r.alertId)}]:[]},n,a),S((t,r)=>[I("done"===e.status?"done":"failed",e,t,r)],n,a)]).then(()=>void 0),r.timeoutMs??8e3)}async function P(e,t,r={},n={}){if("done"!==e.status&&"failed"!==e.status)return;let a={...f,...r},o=n.now??new Date;await R(()=>Promise.all([T(async(r,o)=>[{text:function(e,t,r,n="en"){let a=e=>(0,s.t)(m,n,e),o=(0,d.R)(e.resourceName??a("app"),r,60)||a("app"),l=(0,d.R)(t.reason,r,200).replace(/[.!?…]+$/,"")||a("rollbackWhy"),u=e.result?(0,d.R)(e.result,r,200):"";return["id"===n?`⏪ Otomatis rollback ${(0,i.H)(o)}: ${(0,i.H)(l)}. Deploy baru ${(0,i.H)((0,d.R)(t.newRef,r,40))} dibalikin ke deploy sebelumnya. Benerin dulu, terus deploy ulang.`:`⏪ Automatic rollback of ${(0,i.H)(o)}: ${(0,i.H)(l)}. The new deploy ${(0,i.H)((0,d.R)(t.newRef,r,40))} was rolled back to the previous one. Fix it first, then deploy again.`,`${"done"===e.status?"✅":"❌"} ${a("done"===e.status?"succeeded":"failed")}${u?`: ${(0,i.H)(u)}`:""}`].join("\n")}(e,t,r,o),replyTo:await x(a,n.alertId)}],a,o),S((t,r)=>[I("done"===e.status?"done":"failed",e,t,r)],a,o)]).then(()=>void 0),n.timeoutMs??8e3)}async function O(e,t={},r={}){let n={...f,...t};await R(()=>T((t,r)=>[function(e,t,r="en"){let n="id"===r,a=(0,d.R)(e.app,t,60)||(0,s.t)(m,r,"app"),o=e.packages.slice(0,4).join(", ")+(e.packages.length>4?`, +${e.packages.length-4}`:"");if("merged"===e.kind)return n?`✅ PR #${e.number} di ${(0,i.H)(a)} di-merge otomatis (${(0,i.H)(o)}). Deploy production jalan lewat Vercel; auto-rollback jaga ${e.windowMin??30} menit pertama.`:`✅ PR #${e.number} in ${(0,i.H)(a)} was merged automatically (${(0,i.H)(o)}). The production deploy runs through Vercel; auto-rollback watches the first ${e.windowMin??30} minutes.`;if("ready-manual"===e.kind)return n?`🔐 PR #${e.number} di ${(0,i.H)(a)} siap di-merge, tapi auto-rollback mati — merge manual ya.`:`🔐 PR #${e.number} in ${(0,i.H)(a)} is ready to merge, but auto-rollback is off — please merge it manually.`;let l=(0,d.R)(e.reason??"",t,200)||(0,s.t)(m,r,"stopFallback");return n?`⚠️ PR #${e.number} di ${(0,i.H)(a)} butuh dicek: ${(0,i.H)(l)}. PR-nya dibiarin terbuka.`:`⚠️ PR #${e.number} in ${(0,i.H)(a)} needs a look: ${(0,i.H)(l)}. The PR was left open.`}(e,t,r)],n,r.now??new Date),r.timeoutMs??8e3)}e.s(["h",0,_,"q",0,P,"y",0,O,"v",0,$,"i",0,E,"b",0,N,"a",0,v])},809303,e=>{var t=e.i(336763),r=e.i(406212),n=e.i(530298),a=e.i(595262),i=e.i(564769);let o="office.autoRun",s=Object.keys(i.H);s.filter(e=>"safe"===i.H[e].risk),Object.fromEntries(s.map(e=>[e,!1]));let l={read:async()=>{let[e]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,o)).limit(1);return e?.value??null},write:async e=>{await (0,r.db)().insert(n.settings).values({key:o,value:e}).onConflictDoUpdate({target:n.settings.key,set:{value:e,updatedAt:new Date}})},audit:e=>(0,a.f)({kind:"ok",message:e.message,detail:e.detail.slice(0,500),resourceId:null,actorUserId:e.actorUserId})};async function u(e={}){var t;let r;return r=(t=await ({...l,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{},Object.fromEntries(s.map(e=>[e,"safe"===i.H[e].risk&&!0===r[e]]))}let d="office.autoRollback",c={...l,read:async()=>{let[e]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,d)).limit(1);return e?.value??null},write:async e=>{await (0,r.db)().insert(n.settings).values({key:d,value:e}).onConflictDoUpdate({target:n.settings.key,set:{value:e,updatedAt:new Date}})}};async function p(e={}){var t;let r,n;return{enabled:!0===(r=(t=await ({...c,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{}).enabled,windowMin:"number"==typeof(n=r.windowMin)&&Number.isInteger(n)&&n>=10&&n<=120?r.windowMin:30}}let f="office.autoSecurity",m=["critical","high","moderate"],h={enabled:!0,severities:["critical","high","moderate"],sameMajorOnly:!0},g={...l,read:async()=>{let[e]=await (0,r.db)().select({value:n.settings.value}).from(n.settings).where((0,t.eq)(n.settings.key,f)).limit(1);return e?.value??null},write:async e=>{await (0,r.db)().insert(n.settings).values({key:f,value:e}).onConflictDoUpdate({target:n.settings.key,set:{value:e,updatedAt:new Date}})}};async function y(e={}){return function(e){let t;if(null==e)return{...h,severities:[...h.severities]};let r="object"!=typeof e||Array.isArray(e)?{}:e,n=(Array.isArray(t=r.severities)&&t.every(e=>m.includes(e))?m.filter(e=>t.includes(e)):null)??["critical","high"],a="boolean"==typeof r.moderate?r.moderate:n.includes("high");return{enabled:!0===r.enabled,severities:m.filter(e=>"moderate"===e?a:n.includes(e)),sameMajorOnly:!0}}(await ({...g,...e}).read())}e.s(["r",0,s,"n",0,120,"l",0,10,"K",0,p,"I",0,u,"X",0,y])},564769,e=>{e.s(["H",0,{recheck:{risk:"safe",label:"Check again now",uses:"monitor-actions checkNow"},neon_wake:{risk:"safe",label:"Wake Neon",uses:"Stage 6 Neon wake"},supabase_keepalive:{risk:"safe",label:"Send Supabase keep-alive",uses:"Stage 6 Keep active"},supabase_restore:{risk:"risky",label:"Restore Supabase project",uses:"Stage 6 Supabase restore"},vercel_redeploy:{risk:"risky",label:"Redeploy production",uses:"vercel-actions redeployAction"},vercel_rollback:{risk:"risky",label:"Roll back to previous deployment",uses:"vercel-actions rollbackAction"},github_bump_pr:{risk:"risky",label:"Open package update PR",uses:"lib/data/deps-pr.ts bumpPrAs (GitHub PR-write token)"},domain_recheck:{risk:"safe",label:"Re-check domain certificate",uses:"domains actions recheck (network-db recheckDomain)"},daily_rerun:{risk:"risky",label:"Rerun daily job",uses:"GET /api/daily with the cron secret (collector runDailyAll)"},monitor_update_url:{risk:"safe",label:"Update monitor",uses:"Uptime Update monitor (monitor-move-db moveMonitorToDomain)"}},"V",0,72e5])},633075,92748,e=>{var t=e.i(760859),r=e.i(549556),n=e.i(547963),a=e.i(989578),i=e.i(564769),o=e.i(461315),s=e.i(663948),l=e.i(728335);let u=new Set(["nextjs","blitzjs"]),d={status:"unknown",version:null},c={status:"ok",version:null},p=/(?:Next\.js|\(now) (\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/,f=e=>!!e&&!u.has(e),m=(e,t)=>null===e.version&&!e.findings.length&&"vulnerable"!==e.status&&("not a Next.js site"===e.reason||f(t));function h(e,t){return"vulnerable"===e.status||e.findings.length?{status:"vulnerable",version:e.version}:"ok"===e.status||e.version?{status:"ok",version:e.version}:m(e,t)?c:d}let g=e=>`${(0,l.dayMonth)(e)} ${(0,l.clock)(e)} ${(0,l.zoneLabel)(e)}`,y=e=>"HighLatency"===e?"Slow":"Down",b=(e,t,r,n=!1)=>{let a;if(!r||t.getTime()<r.getTime())return`${y(e)} since ${g(t)}, not tied to a deploy${r?` (live since ${g(r)})`:""}: check the app.`;let i=(a=Math.max(1,Math.round((t.getTime()-r.getTime())/6e4)))<120?`${a} min`:a<2880?`${Math.round(a/60)} h`:`${Math.round(a/1440)} days`;return n?`${y(e)} since ${g(t)}, ${i} after the deploy went live, outside the rollback window: check the app or roll back by hand.`:`${y(e)} since ${g(t)}, started ${i} after the deploy went live: check the app.`},w=e=>e?`No rollback: the previous deployment runs Next.js ${e}, which has known advisories.`:"No rollback: the previous deployment's Next.js has known advisories.",v="Previous deployment's Next.js version is unknown: check it has no known advisories before approving.";e.s(["A",0,6048e5,"Y",0,["NextVulnerable","NextClean"],"B",0,v,"D",0,b,"Q",0,function(e){let t,r=e.currentLiveAt?.getTime(),n=e.previousLiveAt?.getTime(),a=e.check;if(!a)return f(e.framework)?c:d;if(m(a,e.framework))return c;if(void 0===r||void 0===n||n>=r)return d;let i=a.checkedAt.getTime();if(i>=n&&i<r)return h(a,e.framework);if(i<n||r-n<36e5)return d;let l=e.events.filter(e=>"NextVulnerable"===e.reason||"NextClean"===e.reason),u=l.filter(e=>e.at.getTime()<r).sort((e,t)=>t.at.getTime()-e.at.getTime())[0],g=l.filter(e=>e.at.getTime()>=r).sort((e,t)=>e.at.getTime()-t.at.getTime())[0];if(u){var y;let e;t={status:"NextVulnerable"===u.reason?"vulnerable":"ok",version:u.at.getTime()>=n?(y=u.message,(e=p.exec(y)?.[1]??null)&&(0,o.C)(e)?e:null):null}}else t=g?"NextClean"===g.reason?{status:"vulnerable",version:null}:d:{status:h(a,e.framework).status,version:null};if("ok"===t.status&&"ok"!==a.status&&a.findings.length){let e;if(!t.version)return d;if(e=t.version,a.findings.some(t=>!!t.fixed&&(0,o.C)(t.fixed)&&0>(0,s.f)(e,t.fixed)))return{status:"vulnerable",version:t.version}}return t},"g",0,function(e,t,r={}){let n=e.getTime(),a="MonitorDown"===r.ruleKey;if(a&&!r.liveAt)return e;let i=r.liveAt?r.liveAt.getTime()-9e5:0,o=r.gapMs??864e5;for(let e of[...t].sort((e,t)=>t.startedAt.getTime()-e.startedAt.getTime()))!(e.startedAt.getTime()>=n)&&(a?null===e.resolvedAt||e.resolvedAt.getTime()>=i:null===e.resolvedAt||e.resolvedAt.getTime()>=n-o)&&(n=e.startedAt.getTime());return new Date(n)},"e",0,w],92748);let k=200,_=n.X.auditPrefix,A=/^dpl_[A-Za-z0-9]{8,40}$/,I=/^ep-[a-z0-9-]{3,60}$/,S=/^[a-z0-9]{8,40}$/,$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,T=(e,t=k)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e,R=e=>/[.!?…]$/.test(e)?e:`${e}.`;function x(e,r,n,i){return"app"===e&&n?(0,t.r)(i,n):("supabase_project"===e||"neon_project"===e||"neon_branch"===e||"firestore"===e)&&r?(0,t.X)(i,r):n&&(0,a.g)(n,i,120)||null}let E={recheck:e=>`Check ${e} again now`,neon_wake:e=>`Wake the Neon compute of ${e}`,supabase_keepalive:e=>`Send a keep-alive to ${e}`,supabase_restore:e=>`Restore Supabase project ${e}`,vercel_redeploy:e=>`Redeploy production ${e}`,vercel_rollback:e=>`Roll ${e} back to the previous deployment`,github_bump_pr:e=>`Open a PR updating vulnerable packages in ${e}`,domain_recheck:e=>`Re-check the certificate of ${e}`,daily_rerun:()=>"Rerun the daily job",monitor_update_url:e=>`Point the ${e} monitor at its new domain`},N=(e,t)=>T(E[e](t??"this resource")),P=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime(),O={status:"unknown",version:null};e.s(["e",0,"office-auto","v",0,_,"L",0,6e5,"j",0,k,"I",0,(e,t)=>"safe"===i.H[e].risk&&!0===t[e],"l",0,T,"z",0,function(e,t){let r=e.filter(e=>!P(e,t)),n=e=>[...new Set(e.filter(e=>!!e&&$.test(e)))],a=r.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind);return{monitorIds:n([...a,...r.filter(e=>"MonitorDomainMoved"===e.ruleKey&&"app"===e.resourceKind)].map(e=>e.subject)),monitorApps:n(a.map(e=>e.resourceId)),deployApps:n(r.filter(e=>("DeploymentFailed"===e.ruleKey||"MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind).map(e=>e.resourceId)),supabaseIds:n(r.filter(e=>("DatabasePaused"===e.ruleKey||"AutoPauseRisk"===e.ruleKey)&&"supabase_project"===e.resourceKind).map(e=>e.resourceId)),depApps:n(r.filter(e=>"VulnerableDependency"===e.ruleKey&&"app"===e.resourceKind).map(e=>e.resourceId)),frameworkApps:n(r.filter(e=>"FrameworkVulnerable"===e.ruleKey&&"app"===e.resourceKind).map(e=>e.resourceId))}},"M",0,N,"t",0,function(e,n,o,s){let l,u,d;if(P(e,s))return[];let c=(l=(0,t.o)(e,o),u=(0,a.g)(l.title,o,80),d=(0,a.g)(l.message,o,k),T([u&&R(u),d&&R(d)].filter(Boolean).join(" ")||`${e.ruleKey}.`));return(function(e,t,r){let n="app"===e.resourceKind&&e.resourceId?e.resourceId:null;switch(e.ruleKey){case"DeploymentFailed":{let e=n?t.deploys.get(n):void 0;if(!n||!e?.currentId||!A.test(e.currentId))return[];let r=[{action:"vercel_redeploy",resourceKind:"app",resourceId:n,targetRef:e.currentId}],a=t.previousNext?.get(n)??O;return e.previousId&&A.test(e.previousId)&&e.previousId!==e.currentId&&("vulnerable"===a.status?r[0].note=w(a.version):r.push({action:"vercel_rollback",resourceKind:"app",resourceId:n,targetRef:e.previousId,..."unknown"===a.status?{note:v}:{}})),r}case"DatabasePaused":case"AutoPauseRisk":{if("supabase_project"!==e.resourceKind||!e.resourceId)return[];let r=t.supabaseRefs.get(e.resourceId);if(!r||!S.test(r))return[];return[{action:"DatabasePaused"===e.ruleKey?"supabase_restore":"supabase_keepalive",resourceKind:"supabase_project",resourceId:e.resourceId,targetRef:r}]}case"VulnerableDependency":{let e=n?t.fixableRepos?.get(n):void 0;return n&&e&&$.test(e)?[{action:"github_bump_pr",resourceKind:"app",resourceId:n,targetRef:e}]:[]}case"FrameworkVulnerable":{let e=n?t.frameworkFixes?.get(n):void 0;return n&&e&&$.test(e.repoId)?[{action:"github_bump_pr",resourceKind:"app",resourceId:n,targetRef:e.repoId}]:[]}case"MonitorDomainMoved":return n&&$.test(e.subject)&&t.monitorMoves?.has(e.subject)?[{action:"monitor_update_url",resourceKind:"app",resourceId:n,targetRef:e.subject}]:[];case"MonitorDown":case"HighLatency":{let a=[];n&&$.test(e.subject)&&"http"===t.monitorKinds.get(e.subject)&&a.push({action:"recheck",resourceKind:"app",resourceId:n,targetRef:e.subject}),"MonitorDown"===e.ruleKey&&e.resourceId&&$.test(e.subject)&&t.dailyHeartbeatId===e.subject&&a.push({action:"daily_rerun",room:"observe",resourceKind:e.resourceKind,resourceId:e.resourceId,targetRef:e.subject});let i=n?t.neonSuspended.get(n):void 0;if(i&&I.test(i.endpointId)&&a.push({action:"neon_wake",room:"databases",resourceKind:i.resourceKind,resourceId:i.resourceId,targetRef:i.endpointId}),t.monitorMoves?.has(e.subject))return a;let o=n?t.deploys.get(n):void 0,s=t.problemSince?.get(e.id)??e.startedAt??null,l=o?.liveAt??null,u=s&&l?s.getTime()>=l.getTime():null,d=n&&t.previousNext?.get(n)||O,c=t.rollbackWindowMs??18e5,p=!!n&&!0===u&&function(e,t,r){if(!e?.currentId||!e.previousId||!e.liveAt||!A.test(e.previousId)||e.previousId===e.currentId)return!1;let n=r.getTime()-e.liveAt.getTime();return n>=0&&n<=t}(o,c,r);if(p&&"vulnerable"!==d.status)return a.push({action:"vercel_rollback",resourceKind:"app",resourceId:n,targetRef:o.previousId,..."unknown"===d.status?{note:v}:{}}),a;let f=p?w(d.version):void 0;if("MonitorDown"===e.ruleKey&&n&&o?.currentId&&A.test(o.currentId)&&"http"===t.monitorKinds.get(e.subject)&&!1!==u)return a.push({action:"vercel_redeploy",resourceKind:"app",resourceId:n,targetRef:o.currentId,...f?{note:f}:{}}),a;let m=!!l&&r.getTime()-l.getTime()>c,h=f??(s&&l&&o?.currentId?b(e.ruleKey,s,l,m):void 0),g=a.find(e=>"recheck"===e.action);return g&&h&&(g.note=h),a}case"CertExpiringSoon":return"domain"===e.resourceKind&&e.resourceId&&$.test(e.resourceId)?[{action:"domain_recheck",resourceKind:"domain",resourceId:e.resourceId,targetRef:e.resourceId}]:[];default:return[]}})(e,n,s).map(l=>{var u;let d,p,f,m,h=l.room??(0,r.p)(e),g="neon_wake"===l.action?x(l.resourceKind,l.resourceId,null,o):x(e.resourceKind,e.resourceId,e.resourceName,o),y="FrameworkVulnerable"===e.ruleKey&&"github_bump_pr"===l.action,b="monitor_update_url"===l.action?n.monitorMoves?.get(l.targetRef):void 0,w=y?(u=l.resourceId?n.frameworkFixes?.get(l.resourceId):void 0,d=g??"this app",T(u?`Next.js ${u.from} in ${d} has known vulnerabilities: the PR updates next (and eslint-config-next when listed) to ${u.to}.`:`Next.js in ${d} has known vulnerabilities with a fixed version.`)):"github_bump_pr"===l.action?(f=(p=(0,a.g)((0,t.o)(e,o).message,o,k)).includes(": ")?p.slice(p.indexOf(": ")+2):"",m=`Vulnerable packages in ${g??"this app"} have a fix`,T(f?`${m}: ${f}`:`${m}.`)):l.note?T(`${l.note} ${c}`):c,v="github_bump_pr"===l.action&&l.resourceId?n.productionMismatch?.get(l.resourceId):void 0;return{alertId:e.id,ruleKey:e.ruleKey,room:h,action:l.action,risk:i.H[l.action].risk,title:y?T(`Open a PR updating Next.js in ${g??"this app"}`):b?T(`Point the ${g??"app's"} monitor at ${b.to}`):N(l.action,g),reason:v?T(`${(0,a.g)(v,o,k)} ${w}`):w,resourceKind:l.resourceKind,resourceId:l.resourceId,resourceName:g,targetRef:l.targetRef,proposedBy:(0,r.y)(h),expiresAt:new Date(s.getTime()+i.V)}})},"x",0,function(e,t){let r=e.ok?e.message||"Done.":e.error||"It didn't run.";return T((0,a.g)(r,t,k)||(e.ok?"Done.":"It didn't run."))},"J",0,x,"E",0,function(e){return{id:e.id,room:e.room,action:e.action,actionLabel:i.H[e.action].label,risk:i.H[e.action].risk,title:e.title,reason:e.reason,resourceName:e.resourceName,proposedBy:e.proposedBy,status:e.status,auto:e.auto,result:e.result,createdAt:e.createdAt.toISOString(),decidedAt:e.decidedAt?e.decidedAt.toISOString():null,expiresAt:e.expiresAt.toISOString()}},"Z",0,function(e,t,r){let n=r??t?.find(e=>e.isDefault)?.id??null,a=(e??[]).find(e=>!n||e.branchId===n);return a&&!a.disabled&&"idle"===a.state&&"active"!==a.pendingState&&I.test(a.id)?a.id:null}],633075)},452475,653587,e=>{let t;var r,n=e.i(666680),a=e.i(336763),i=e.i(406212),o=e.i(484745),s=e.i(547963),l=e.i(595262),u=e.i(503313),d=e.i(692697),c=e.i(93387),p=e.i(908480),f=e.i(760859),m=e.i(518581),h=e.i(989578),g=e.i(633075),y=e.i(396918),b=e.i(533102),w=e.i(530298),v=e.i(234195),k=e.i(889234),_=e.i(638809),A=e.i(873083),I=e.i(368230),S=e.i(58992),$=e.i(978196),T=e.i(788264),R=e.i(756652),x=e.i(11339),E=e.i(108621),N=e.i(599040),P=e.i(908223),O=e.i(200346),C=e.i(380719),j=e.i(412948);async function D(e,t=C.q){let r,[n]=await (0,i.db)().select({m:w.monitors,appName:w.resources.name,appMeta:w.resources.meta}).from(w.monitors).innerJoin(w.resources,(0,a.eq)(w.resources.id,w.monitors.resourceId)).where((0,a.eq)(w.monitors.id,e)).limit(1);if(!n)return{ok:!1,error:"That monitor no longer exists."};if("heartbeat"===n.m.kind)return{ok:!1,error:"That monitor is a heartbeat; it has no address to update."};let o=await (0,i.db)().select({id:w.resources.id,name:w.resources.name,meta:w.resources.meta}).from(w.resources).where((0,a.and)((0,a.eq)(w.resources.kind,"app"),(0,a.eq)(w.resources.monitored,!0),(0,a.isNull)(w.resources.goneAt),(0,a.ne)(w.resources.id,n.m.resourceId))).limit(500),s=(0,$.u)(n.m.url,{name:n.appName,meta:n.appMeta},o,{lastError:n.m.lastError});if(!s)return{ok:!1,error:"Nothing shows this monitor's domain moved (it is still the app's, or never was), so there is nothing to update."};try{r=(0,$.w)(n.m.url,s.to)}catch{return{ok:!1,error:"The app's domain isn't a valid host name, so the monitor was left as it is."}}let l=await t(e,{url:r,expectedStatus:n.m.expectedStatus,timeoutMs:n.m.timeoutMs,bodyContains:n.m.bodyContains,jsonPath:n.m.jsonPath,jsonEquals:n.m.jsonEquals});return l.ok?{ok:!0,message:`Monitor now checks ${r}.`,audit:{message:`Monitor moved to the app's new domain: ${(0,j.F)(r)}`,detail:`was ${(0,j.F)(n.m.url)}`,resourceId:n.m.resourceId}}:l}var M=e.i(827439),z=e.i(802641);async function q(e){if(!(0,z.f)(e))return null;let[t]=await (0,i.db)().select({id:w.resources.id,kind:w.resources.kind,externalId:w.resources.externalId,parentId:w.resources.parentId}).from(w.resources).where((0,a.and)((0,a.eq)(w.resources.id,e),(0,a.inArray)(w.resources.kind,["neon_project","neon_branch"]),(0,a.isNull)(w.resources.goneAt))).limit(1);if(!t)return null;let r="neon_branch"===t.kind?t.parentId:t.id;if(!r)return null;let[n]=await (0,i.db)().select({data:w.snapshots.data}).from(w.snapshots).where((0,a.eq)(w.snapshots.resourceId,r)).limit(1),o=(0,T.k)(T.s,n?.data);return{projectResourceId:r,branchExternalId:"neon_branch"===t.kind?t.externalId:null,computeSeconds:o.computeSeconds??null,periodEnd:o.periodEnd??null}}var L=e.i(406197),U=e.i(516464),H=e.i(934152),B=e.i(941536);let V=`This project used its ${U.a.cuHours} CU-hours; the compute won't start until the quota resets.`;async function G(e,t,r){var n;if(n=new Date,!((t.computeSeconds??0)<3600*U.a.cuHours)&&(!t.periodEnd||new Date(t.periodEnd).getTime()>n.getTime()))return{done:!1,message:V};let a=e.resource.externalId,i=await (0,B.c)(e.token,a,r);if(!i.ok)return{done:!1,message:"missing"===i.kind?H.G:i.error};if(i.data.id!==r||t.branchExternalId&&i.data.branchId!==t.branchExternalId)return{done:!1,message:H.G};if(i.data.disabled)return{done:!1,message:"Neon has disabled this compute, so it can't be started from here."};if("active"===i.data.state)return{done:!1,message:"Already running."};if("init"===i.data.state||"active"===i.data.pendingState)return{done:!1,message:"Already starting."};let o=await (0,B.d)(e.token,a,r);if(o.ok)return{done:!0,message:`Waking ${r}. Ready in a few seconds.`,audit:{message:`Wake requested \xb7 ${r}`,resourceId:e.resource.id}};let s="scope"===o.kind?(0,H.b)("neon",{project:e.resource.name}):"missing"===o.kind?H.G:o.error;return{done:!1,failed:{ok:!1,kind:o.kind,error:s,...o.status?{status:o.status}:{}},audit:{message:`Wake failed \xb7 ${r}`,resourceId:e.resource.id}}}async function K(e,t){let r=t.resource.name;if(e.ok||r.trim().length<2||!e.error.includes(r))return e;let n=await (0,u.f)().catch(()=>null);return{...e,error:n?(0,f.J)(e.error,n,t.resource.id):e.error.split(r).join("db-?")}}async function F(e,t,r,n=L.W){let a=await (0,L.q)(e.id,"wake",r);if(a)return{ok:!1,error:a};let i=await q(t),o=i?await (0,L.p)(i.projectResourceId,"neon_project"):null;return i&&o?K(await n(await G(o,i,r),e,o.account.id),o):{ok:!1,error:H.G}}var W=e.i(655704),X=e.i(88316),J=e.i(686454);let Y=e=>`Supabase is busy with this project (${(0,X.P)(e).label.toLowerCase()}). Try again in a few minutes.`,Z=(e,t,r)=>({done:!1,failed:{ok:!1,kind:e.kind,error:"scope"===e.kind?(0,H.b)("supabase",{}):e.error,...e.status?{status:e.status}:{}},audit:{message:t,resourceId:r}});async function Q(e,t,r,n,a=L.W){let i,o=await (0,L.q)(t.id,e,r);if(o)return{ok:!1,error:o};let s=await (0,L.p)(r,"supabase_project");if(!s)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};if(s.resource.externalId!==n)return{ok:!1,error:H.G};let l=s.resource.externalId,u=s.resource.name,d=await (0,J.e)(s.token,l);if(!d.ok)return a({done:!1,message:"scope"===d.kind||"auth"===d.kind?d.error:`Couldn't read this project's status at Supabase: ${d.error}`},t,s.account.id);let c=d.data.status;if("pause"===e){if("INACTIVE"===c||"PAUSING"===c||"GOING_DOWN"===c)return a({done:!1,message:"Already paused."},t,s.account.id);if(!c.startsWith("ACTIVE_"))return a({done:!1,message:Y(c)},t,s.account.id);let e=await (0,J.c)(s.token,l);i=e.ok?{done:!0,message:`Pausing ${u}. It takes about 2 minutes.`,audit:{message:`${W.B}${u}`,resourceId:r}}:"transient"===e.kind&&void 0===e.status?{done:!1,failed:{ok:!1,kind:"transient",error:`${e.error} The pause may still have happened; check the project in a few minutes before restoring it.`},audit:{message:`${W.B}${u}`,resourceId:r}}:Z(e,`Pause failed \xb7 ${u}`,r)}else{if(c.startsWith("ACTIVE_")||"RESTORING"===c||"COMING_UP"===c)return a({done:!1,message:"Already active or restoring."},t,s.account.id);if("INACTIVE"!==c)return a({done:!1,message:Y(c)},t,s.account.id);let e=await (0,J.W)(s.token);if(!e.ok)return a({done:!1,message:`Couldn't count this account's free slots just now: ${e.error}`},t,s.account.id);let n=await (0,O.m)(s.account.id);if(0>=(0,O.G)(e.data,n,d.data.orgSlug))return a({done:!1,message:"This account already uses both free slots. Pause one of its active projects first; Restore stays blocked until it shows Paused."},t,s.account.id);let o=await (0,J.G)(s.token,l);i=o.ok?{done:!0,message:`Restoring ${u}. It takes about 2 minutes.`,audit:{message:`Restore requested \xb7 ${u}`,resourceId:r}}:Z(o,`Restore failed \xb7 ${u}`,r)}return a(i,t,s.account.id)}var ee=e.i(198552);function et(e,t,r){if("building"===e.state)return"building";if(null!==t&&e.id===t)return"current";if("error"===e.state)return"failed";if("preview"===e.target)return"ready"===e.state?"preview":"other";if("ready"!==e.state||null===t)return"other";let n=r.find(e=>e.id===t);if(!n)return"other";if(e.createdAt.getTime()>n.createdAt.getTime())return"staged";let a=r.filter(e=>"ready"===e.state&&e.id!==t&&e.createdAt.getTime()<n.createdAt.getTime()).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0];return a?.id===e.id?"previous":"other"}let er=e=>({done:!1,message:e}),en=(e,t)=>e?.sha?e.sha.slice(0,7):t;async function ea(e,t,r){let n=await (0,L.q)(e.id,t,r);if(n)return n;let a=await (0,L.p)(r,"app"),i=a?.resource.meta.teamId;if(!a||"string"!=typeof i||!i||!a.resource.externalId)return"This app or its Vercel credential isn't available any more. Reload the page.";let o=a.resource.meta.teamSlug;return{member:e,t:a,appId:r,app:a.resource.name,teamId:i,teamSlug:"string"==typeof o?o:"",projectId:a.resource.externalId}}async function ei(e){let[t,r]=await Promise.all([(0,ee.c)(e.t.token,e.teamId,e.projectId),(0,ee.r)(e.t.token,e.teamId,e.projectId)]);return t.ok?r.ok?{ok:!0,data:{name:t.data.name,currentId:t.data.currentId??r.data[0]?.id??null,production:r.data}}:r:t}async function eo(e,t,r,n,a=L.W){return a(t.ok?{done:!0,message:r.message,audit:{message:r.audit,resourceId:e.appId}}:{done:!1,failed:"scope"===t.kind?{ok:!1,kind:"scope",status:t.status,error:(0,H.b)("vercel",{team:e.teamSlug})}:404===t.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===t.kind?"auth":"format"===t.kind?"format":"transient",...t.status?{status:t.status}:{},error:t.error},audit:{message:n,resourceId:e.appId}},e.member,e.t.account.id)}async function es(e,t,r,n=L.W){{let a=await ea(e,"redeploy",t);if("string"==typeof a)return n(er(a),e,"");let i=await ei(a);if(!i.ok)return n(er(i.error),e,a.t.account.id);if(i.data.currentId!==r)return n(er(H.G),e,a.t.account.id);if(i.data.production.some(e=>"staged"===et(e,i.data.currentId,i.data.production)))return n(er("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),e,a.t.account.id);let o=await (0,ee.N)(a.t.token,a.teamId,a.projectId);if(!o.ok)return n(er(o.error),e,a.t.account.id);if(o.data)return n(er(`A production build of ${a.app} is already running.`),e,a.t.account.id);let s=en(i.data.production.find(e=>e.id===r),r),l=await (0,ee.L)(a.t.token,a.teamId,{projectId:a.projectId,name:i.data.name,deploymentId:r});return eo(a,l,{message:`Redeploy requested. Vercel is building ${a.app} again.`,audit:`Redeploy requested \xb7 ${a.app} \xb7 ${s}`},`Redeploy failed \xb7 ${a.app} \xb7 ${s}`,n)}}async function el(e,t,r,n=L.W){{let a=await ea(e,"rollback",t);if("string"==typeof a)return n(er(a),e,"");let i=await ei(a);if(!i.ok)return n(er(i.error),e,a.t.account.id);if(i.data.currentId===r)return n(er("Already live."),e,a.t.account.id);let o=i.data.production.find(e=>e.id===r);if(!o||"previous"!==et(o,i.data.currentId,i.data.production))return n(er("Hobby can only roll back to the previous production deployment."),e,a.t.account.id);let s=en(o,r),l=await (0,ee.E)(a.t.token,a.teamId,a.projectId,r);return eo(a,l,{message:`Rolled back ${a.app} to ${s}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${a.app} → ${s}`},`Roll back failed \xb7 ${a.app} → ${s}`,n)}}var eu=e.i(659916),ed=e.i(355620),ec=e.i(105464),ep=e.i(90879),ef=e.i(809303),em=e.i(564769);let eh={checkMonitorNow:C.X,keepAliveNow:O.v,wakeAs:F,supabaseAct:Q,redeployAs:es,rollbackAs:el,finish:L.W,recordAction:l.f,limit:ed.f,bumpPrAs:P.W,autoSecurity:()=>(0,ef.X)(),recheckDomain:M._,moveMonitorToDomain:D};async function eg(){let[e]=await (0,i.db)().select({at:w.collectorRuns.startedAt}).from(w.collectorRuns).where(b.sql`(${w.collectorRuns.trigger} = 'vercel_cron' or (${w.collectorRuns.trigger} = 'manual' and ${w.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,y.desc)(w.collectorRuns.startedAt)).limit(1);return e?.at??null}async function ey(e){let t=await (e.lastDailyRunAt??eg)(),r=(e.now??(()=>new Date))();if(t&&r.getTime()-t.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let n=(e.dailyTarget??function(){let e=(0,N.f)();return e?{url:`${(0,c.serverEnv)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:e.CRON_SECRET}:null})();if(!n)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let t=await (e.fetch??fetch)(n.url,{headers:{Authorization:`Bearer ${n.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!t.ok||t.status>=300)return{ok:!1,error:`The daily job route answered ${t.status}.`};return{ok:!0,message:`Daily job ran again (${t.status}).`}}catch(e){if(e instanceof Error&&("TimeoutError"===e.name||"AbortError"===e.name))return{ok:!0,message:"Daily job started; it's still running — the heartbeat turns Up when it finishes."};throw e}}let eb="The proposal's target is missing, so it can't run.";async function ew(e,t,r=eh){let n="auto"===t,a=n?{id:g.e,userId:null}:{id:t.id,userId:t.userId},i=(e,t,a)=>r.finish(e,t,a,{refresh:!1,...n?{auditPrefix:g.v}:{}});try{if(!e.resourceId||!e.targetRef)return{ok:!1,error:eb};if((0,ep.isDemo)()&&"recheck"!==e.action)return await r.recordAction({kind:"ok",message:`${n?g.v:""}${em.H[e.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:e.resourceId,actorUserId:a.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:ec.r};switch(e.action){case"recheck":{let t=await r.limit(eu.t.check,a.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,eu.H)(t.retryAfter)}.`};let i=await r.checkMonitorNow(e.targetRef);if(!i.ok)return{ok:!1,error:i.error};if(i.audit)try{await r.recordAction({kind:!1===i.passed?"err":"ok",...i.audit,message:`${n?g.v:""}${i.audit.message}`,actorUserId:a.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:i.message}}case"domain_recheck":{let t=await r.limit(eu.t.domainCheck,a.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,eu.H)(t.retryAfter)}.`};let i=await (r.recheckDomain??M._)(e.targetRef);if(!i.ok)return i;return await r.recordAction({kind:"ok",...i.audit,message:`${n?g.v:""}${i.audit.message}`,actorUserId:a.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"monitor_update_url":{let t=await r.limit(eu.t.monitorWrite,a.id);if(!t.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,eu.H)(t.retryAfter)}.`};let i=await (r.moveMonitorToDomain??D)(e.targetRef);if(!i.ok)return i;return i.audit&&await r.recordAction({kind:"ok",...i.audit,message:`${n?g.v:""}${i.audit.message}`,actorUserId:a.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"daily_rerun":return await ey(r);case"neon_wake":return await r.wakeAs(a,e.resourceId,e.targetRef,i);case"supabase_keepalive":return await r.keepAliveNow(a,e.resourceId,i);case"supabase_restore":return await r.supabaseAct("restore",a,e.resourceId,e.targetRef,i);case"vercel_redeploy":return await r.redeployAs(a,e.resourceId,e.targetRef,i);case"vercel_rollback":return await r.rollbackAs(a,e.resourceId,e.targetRef,i);case"github_bump_pr":{let t=n?await (r.autoSecurity??ef.X)():null;if(n&&!t?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (r.bumpPrAs??P.W)(a,e.resourceId,e.targetRef,i,{proposalId:e.proposalId??null,...t?{auto:{severities:t.severities}}:{},..."FrameworkVulnerable"===e.ruleKey?{framework:!0}:{}})}default:return{ok:!1,error:eb}}}catch(e){return console.warn(`${s.X.logTag}/proposals run failed:`,e instanceof Error?e.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}var ev=e.i(92748);let ek={id:m.O.id,room:m.O.room,action:m.O.action,risk:m.O.risk,title:m.O.title,reason:m.O.reason,resourceName:m.O.resourceName,proposedBy:m.O.proposedBy,status:m.O.status,auto:m.O.auto,result:m.O.result,createdAt:m.O.createdAt,decidedAt:m.O.decidedAt,expiresAt:m.O.expiresAt},e_={...ek,resourceId:m.O.resourceId,targetRef:m.O.targetRef,ruleKey:m.O.ruleKey,alertId:m.O.alertId};async function eA(e,t,r){let n=(0,g.z)(e,t),o=new Set(n.deployApps),s=e.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&e.resourceId&&o.has(e.resourceId)&&e.startedAt),[l,u,d,c,p,f,m,h,y]=await Promise.all([n.monitorIds.length?(0,i.db)().select({id:w.monitors.id,kind:w.monitors.kind,url:w.monitors.url,lastError:w.monitors.lastError,appId:w.monitors.resourceId,appName:w.resources.name,appMeta:w.resources.meta}).from(w.monitors).innerJoin(w.resources,(0,a.eq)(w.resources.id,w.monitors.resourceId)).where((0,a.inArray)(w.monitors.id,n.monitorIds)):[],n.deployApps.length?(0,i.db)().select({app:w.deployments.resourceId,id:w.deployments.externalId,isCurrent:w.deployments.isCurrent,isPrevious:w.deployments.isPreviousProduction,readyAt:w.deployments.readyAt,createdAt:w.deployments.createdAtProvider}).from(w.deployments).where((0,a.and)((0,a.inArray)(w.deployments.resourceId,n.deployApps),(0,a.or)((0,a.eq)(w.deployments.isCurrent,!0),(0,a.eq)(w.deployments.isPreviousProduction,!0)))):[],n.supabaseIds.length?(0,i.db)().select({id:w.resources.id,ref:w.resources.externalId}).from(w.resources).where((0,a.and)((0,a.inArray)(w.resources.id,n.supabaseIds),(0,a.eq)(w.resources.kind,"supabase_project"),b.sql`${w.resources.goneAt} is null`)):[],n.monitorApps.length?ex(n.monitorApps):new Map,n.depApps.length?eT(e,n.depApps).catch(()=>new Set).then(e=>(0,k.C)(n.depApps,e)).catch(()=>new Map):new Map,n.monitorIds.length?eR(n.monitorIds):null,n.frameworkApps.length?(0,P.h)(n.frameworkApps,n.depApps).catch(()=>new Map):new Map,s.length?eI(s.map(e=>e.subject),t).catch(()=>[]):[],eS(n.deployApps)]),v=l.some(e=>null!==(0,$.Y)(e.appMeta)),_=v?await (0,i.db)().select({id:w.resources.id,name:w.resources.name,meta:w.resources.meta}).from(w.resources).where((0,a.and)((0,a.eq)(w.resources.kind,"app"),(0,a.eq)(w.resources.monitored,!0),(0,a.isNull)(w.resources.goneAt))).limit(500):[],A=v?(0,$.P)(l,_):new Map,I=[...[...p].map(([e,t])=>({appId:e,repoId:t})),...[...m].map(([e,t])=>({appId:e,repoId:t.repoId}))],S=I.length?await Promise.resolve().then(()=>(0,P.H)(I,t)).catch(()=>new Map):new Map,T=new Map,R=new Map;for(let e of u){let t=T.get(e.app)??{currentId:null,previousId:null,liveAt:null};e.isCurrent?(t.currentId=e.id,t.liveAt=e.readyAt??e.createdAt??null):e.isPrevious&&(t.previousId=e.id,R.set(e.app,e.readyAt??e.createdAt??null)),T.set(e.app,t)}let x=new Map;for(let[e,t]of T)t.previousId&&x.set(e,e$(y,e,t.liveAt,R.get(e)??null));let E=new Map(s.map(e=>[e.id,(0,ev.g)(e.startedAt,h.filter(t=>t.ruleKey===e.ruleKey&&t.subject===e.subject),{ruleKey:e.ruleKey,liveAt:T.get(e.resourceId)?.liveAt??null})]));return{monitorKinds:new Map(l.map(e=>[e.id,String(e.kind)])),deploys:T,...void 0!==r?{rollbackWindowMs:r}:{},supabaseRefs:new Map(d.map(e=>[e.id,e.ref])),neonSuspended:c,fixableRepos:p,dailyHeartbeatId:f,frameworkFixes:m,monitorMoves:A,problemSince:E,previousNext:x,...S.size?{productionMismatch:S}:{}}}async function eI(e,t){return(0,i.db)().select({ruleKey:w.alerts.ruleKey,subject:w.alerts.subject,startedAt:w.alerts.startedAt,resolvedAt:w.alerts.resolvedAt}).from(w.alerts).where((0,a.and)((0,a.inArray)(w.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,a.inArray)(w.alerts.subject,[...new Set(e)]),(0,a.isNotNull)(w.alerts.resolvedAt),(0,a.gte)(w.alerts.resolvedAt,new Date(t.getTime()-ev.A)))).orderBy((0,y.desc)(w.alerts.startedAt)).limit(500)}async function eS(e){let t={checks:new Map,events:new Map,frameworks:new Map};if(!e.length)return t;try{let[r,n,o]=await Promise.all([(0,i.db)().select({app:w.appSecurity.resourceId,version:w.appSecurity.version,status:w.appSecurity.status,findings:w.appSecurity.findings,checkedAt:w.appSecurity.checkedAt,reason:w.appSecurity.reason}).from(w.appSecurity).where((0,a.inArray)(w.appSecurity.resourceId,e)).limit(e.length),(0,i.db)().select({app:w.events.resourceId,at:w.events.at,reason:w.events.reason,message:w.events.message}).from(w.events).where((0,a.and)((0,a.inArray)(w.events.reason,[...ev.Y]),(0,a.inArray)(w.events.resourceId,e))).orderBy((0,y.desc)(w.events.at)).limit(Math.min(500,50*e.length)),(0,i.db)().select({app:w.resources.id,meta:w.resources.meta}).from(w.resources).where((0,a.inArray)(w.resources.id,e)).limit(e.length)]);for(let e of r)t.checks.set(e.app,{version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[],checkedAt:e.checkedAt,reason:e.reason});for(let e of n)e.app&&t.events.set(e.app,[...t.events.get(e.app)??[],{at:e.at,reason:e.reason,message:e.message}]);for(let e of o){let r=e.meta&&"object"==typeof e.meta?e.meta.framework:null;t.frameworks.set(e.app,"string"==typeof r?r:null)}}catch{return{checks:new Map,events:new Map,frameworks:new Map}}return t}let e$=(e,t,r,n)=>(0,ev.Q)({currentLiveAt:r,previousLiveAt:n,check:e.checks.get(t)??null,events:e.events.get(t)??[],framework:e.frameworks.get(t)??null});async function eT(e,t){let r=new Set(t),n=e.filter(e=>"FrameworkVulnerable"===e.ruleKey&&"app"===e.resourceKind&&e.resourceId&&r.has(e.resourceId)).map(e=>e.id);return n.length?new Set((await (0,i.db)().selectDistinct({resourceId:m.O.resourceId}).from(m.O).where((0,a.and)((0,a.eq)(m.O.ruleKey,"FrameworkVulnerable"),(0,a.eq)(m.O.action,"github_bump_pr"),(0,a.inArray)(m.O.status,["pending","approved","running","done"]),(0,a.inArray)(m.O.alertId,n),(0,a.inArray)(m.O.resourceId,[...r]))).limit(n.length)).flatMap(e=>e.resourceId?[e.resourceId]:[])):new Set}async function eR(e){let t=(0,I.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!t)return null;let[r]=await (0,i.db)().select({id:w.monitors.id}).from(w.monitors).where((0,a.and)((0,a.inArray)(w.monitors.id,e),(0,a.eq)(w.monitors.kind,"heartbeat"),(0,a.eq)(w.monitors.tokenHash,(0,S.f)(t)))).limit(1).catch(()=>[]);return r?.id??null}async function ex(e){let t=await (0,i.db)().select({app:w.links.fromResourceId,id:w.resources.id,kind:w.resources.kind,externalId:w.resources.externalId,parentId:w.resources.parentId}).from(w.links).innerJoin(w.resources,(0,a.eq)(w.resources.id,w.links.toResourceId)).where((0,a.and)((0,a.inArray)(w.links.fromResourceId,e),(0,a.eq)(w.links.kind,"uses_db"),(0,a.inArray)(w.resources.kind,["neon_project","neon_branch"]),b.sql`${w.resources.goneAt} is null`)),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,o=[...new Set(t.map(n).filter(e=>!!e))];if(!o.length)return r;let s=new Map((await (0,i.db)().select({id:w.snapshots.resourceId,data:w.snapshots.data}).from(w.snapshots).where((0,a.inArray)(w.snapshots.resourceId,o))).map(e=>[e.id,(0,T.k)(T.s,e.data)]));for(let e of t){let t=n(e),a=t?s.get(t):void 0,i=a?(0,g.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null):null;i&&r.set(e.app,{resourceId:e.id,resourceKind:e.kind,endpointId:i})}return r}async function eE(e){if(!e.length)return[];let t=new Set((await (0,i.db)().select({alertId:m.O.alertId,action:m.O.action}).from(m.O).where((0,a.inArray)(m.O.alertId,[...new Set(e.map(e=>e.alertId))]))).map(e=>`${e.alertId}:${e.action}`)),r=e.filter(e=>!t.has(`${e.alertId}:${e.action}`));return r.length?(0,i.db)().insert(m.O).values(r.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(e_):[]}async function eN(e,t,r,n){let[o]=await (0,i.db)().update(m.O).set({status:"approve"===t?"approved":"rejected",decidedBy:r,decidedAt:n}).where((0,a.and)((0,a.eq)(m.O.id,e),(0,a.eq)(m.O.status,"pending"),b.sql`${m.O.expiresAt} > ${n.toISOString()}::timestamptz`)).returning(e_);if(o)return{status:"ok",proposal:(0,g.E)(o),row:o};let[s]=await (0,i.db)().select(ek).from(m.O).where((0,a.eq)(m.O.id,e)).limit(1);return s?{status:"conflict",proposal:(0,g.E)(s)}:{status:"missing"}}async function eP(e,t){let[r]=await (0,i.db)().update(m.O).set({status:"running",claimedAt:t}).where((0,a.and)((0,a.eq)(m.O.id,e),(0,a.eq)(m.O.status,"approved"))).returning(e_);return r??null}async function eO(e,t,r,n){let[o]=await (0,i.db)().update(m.O).set({status:t?"done":"failed",result:r,finishedAt:n}).where((0,a.and)((0,a.eq)(m.O.id,e),(0,a.eq)(m.O.status,"running"))).returning(e_);return o??null}let eC={run:(e,t)=>ew(e,t),book:()=>(0,u.f)()};async function ej(e,t,r,n=eC){let a=await eP(e,r);if(!a)return null;let i=await n.run({action:a.action,resourceId:a.resourceId,targetRef:a.targetRef,proposalId:a.id,ruleKey:a.ruleKey??null},t),o=await n.book().catch(()=>f.a),s=await eO(e,i.ok,(0,g.x)(i,o),new Date);return s?(0,g.E)(s):null}async function eD(e,t){let r=await (0,i.db)().update(m.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,a.and)((0,a.eq)(m.O.status,"pending"),(0,a.or)((0,a.lt)(m.O.expiresAt,new Date(t.getTime()+1)),(0,a.and)((0,a.isNotNull)(m.O.alertId),e.length?(0,a.notInArray)(m.O.alertId,e):b.sql`true`)))).returning({id:m.O.id});return await (0,i.db)().update(m.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:t}).where((0,a.and)((0,a.eq)(m.O.status,"running"),(0,a.lt)(m.O.claimedAt,new Date(t.getTime()-g.L)))),r.length}async function eM(e){await (0,i.db)().delete(m.O).where((0,a.and)((0,a.lt)(m.O.createdAt,new Date(e.getTime()-2592e6)),(0,a.notInArray)(m.O.status,["pending","approved","running"])))}let ez=b.sql`(${w.storedLogs.level} in ('error', 'fatal') or coalesce(${w.storedLogs.statusCode}, 0) >= 500)`,eq=b.sql`coalesce(${w.deployments.readyAt}, ${w.deployments.createdAtProvider})`;async function eL(e){let t=await (0,i.db)().select({app:w.links.fromResourceId,id:w.resources.id,kind:w.resources.kind,externalId:w.resources.externalId,parentId:w.resources.parentId}).from(w.links).innerJoin(w.resources,(0,a.eq)(w.resources.id,w.links.toResourceId)).where((0,a.and)((0,a.inArray)(w.links.fromResourceId,e),(0,a.eq)(w.links.kind,"uses_db"),(0,a.inArray)(w.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,a.isNull)(w.resources.goneAt))),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,o=[...new Set(t.map(n).filter(e=>!!e))],s=new Map((o.length?await (0,i.db)().select({id:w.snapshots.resourceId,data:w.snapshots.data}).from(w.snapshots).where((0,a.inArray)(w.snapshots.resourceId,o)):[]).map(e=>[e.id,e.data]));for(let e of t){let t=s.get(n(e)??"");if("supabase_project"===e.kind){let n=(0,T.k)(T.B,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:null,supabaseRef:e.externalId,supabasePaused:"INACTIVE"===n.status})}else{let n=(0,T.k)(T.s,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:(0,g.Z)(n.endpoints,n.branches,"neon_branch"===e.kind?e.externalId:null),supabaseRef:null,supabasePaused:!1})}}return r}let eU={apps:async function(e){let t=new Date(e.getTime()-R.I-R.s),r=b.sql`${w.storedLogs.at} >= ${new Date(e.getTime()-R.H).toISOString()}::timestamptz`,n=b.sql`${w.storedLogs.message} ~* ${R.N}`,o=b.sql`left(${w.storedLogs.message}, 200)`,s=(await (0,i.db)().select({appId:w.storedLogs.resourceId,appName:b.sql`max(${w.resources.name})`,liveAt:b.sql`max(${eq})`.mapWith(w.deployments.readyAt),currentId:b.sql`max(${w.deployments.externalId})`,errorsSinceLive:b.sql`count(*) filter (where ${ez} and ${w.storedLogs.at} >= ${eq})`.mapWith(Number),baselineErrors:b.sql`count(*) filter (where ${ez} and ${w.storedLogs.at} >= ${eq} - interval '24 hours' and ${w.storedLogs.at} < ${eq})`.mapWith(Number),topSinceLive:b.sql`mode() within group (order by ${o}) filter (where ${ez} and ${w.storedLogs.at} >= ${eq})`,errors30:b.sql`count(*) filter (where ${ez} and ${r})`.mapWith(Number),top30:b.sql`mode() within group (order by ${o}) filter (where ${ez} and ${r})`,dbErrors30:b.sql`count(*) filter (where ${r} and ${n})`.mapWith(Number),topDb:b.sql`mode() within group (order by ${o}) filter (where ${r} and ${n})`}).from(w.storedLogs).innerJoin(w.resources,(0,a.eq)(w.resources.id,w.storedLogs.resourceId)).leftJoin(w.deployments,(0,a.and)((0,a.eq)(w.deployments.resourceId,w.storedLogs.resourceId),(0,a.eq)(w.deployments.isCurrent,!0))).where((0,a.and)((0,a.gte)(w.storedLogs.at,t),(0,a.eq)(w.resources.kind,"app"),(0,a.isNull)(w.resources.goneAt))).groupBy(w.storedLogs.resourceId)).filter(e=>e.errorsSinceLive>=R.w||e.errors30>=R.G||e.dbErrors30>=R.V);if(!s.length)return[];let l=s.map(e=>e.appId),[u,d,c]=await Promise.all([(0,i.db)().select({app:w.deployments.resourceId,previousId:b.sql`max(${w.deployments.externalId}) filter (where ${w.deployments.isPreviousProduction})`,previousLiveAt:b.sql`max(${eq}) filter (where ${w.deployments.isPreviousProduction})`.mapWith(w.deployments.readyAt),lastDeployAt:b.sql`max(${w.deployments.createdAtProvider}) filter (where ${w.deployments.target} = 'production')`.mapWith(w.deployments.createdAtProvider)}).from(w.deployments).where((0,a.and)((0,a.inArray)(w.deployments.resourceId,l),(0,a.or)((0,a.eq)(w.deployments.isPreviousProduction,!0),(0,a.gte)(w.deployments.createdAtProvider,new Date(e.getTime()-R.v))))).groupBy(w.deployments.resourceId),(0,i.db)().select({app:w.monitors.resourceId,id:w.monitors.id}).from(w.monitors).where((0,a.and)((0,a.inArray)(w.monitors.resourceId,l),(0,a.eq)(w.monitors.kind,"http"),(0,a.eq)(w.monitors.paused,!1),(0,a.eq)(w.monitors.ownerPaused,!1))).orderBy(w.monitors.createdAt),eL(l)]),p=new Map(u.map(e=>[e.app,e])),f=new Map;for(let e of d)f.has(e.app)||f.set(e.app,e.id);let m=s.filter(e=>e.errorsSinceLive>=R.w&&e.liveAt&&p.get(e.appId)?.previousId).map(e=>e.appId),h=m.length?await eS(m):null;return s.map(e=>({...e,appName:e.appName??"",previousId:p.get(e.appId)?.previousId??null,lastDeployAt:p.get(e.appId)?.lastDeployAt??null,httpMonitorId:f.get(e.appId)??null,db:c.get(e.appId)??null,...h&&m.includes(e.appId)?{previousNext:e$(h,e.appId,e.liveAt,p.get(e.appId)?.previousLiveAt??null)}:{}}))},rows:async function(e){let t=b.sql`coalesce(${m.O.finishedAt}, ${m.O.decidedAt}, ${m.O.expiresAt})`;return(0,i.db)().select({id:m.O.id,ruleKey:m.O.ruleKey,resourceId:m.O.resourceId,action:m.O.action,status:m.O.status,closedAt:t.mapWith(m.O.finishedAt)}).from(m.O).where((0,a.and)((0,a.isNull)(m.O.alertId),(0,a.inArray)(m.O.ruleKey,[...R.T]),(0,a.or)((0,a.inArray)(m.O.status,["pending","approved","running"]),b.sql`${t} > ${new Date(e.getTime()-R.b).toISOString()}::timestamptz`)))}};async function eH(e,t,r=eU){let[n,o]=await Promise.all([r.apps(e),r.rows(e)]),s=n.flatMap(r=>(0,R.t)(r,t,e)),l=(0,R.W)(o,s),u=0;l.length&&(u=(await (0,i.db)().update(m.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:e}).where((0,a.and)((0,a.inArray)(m.O.id,l),(0,a.eq)(m.O.status,"pending"))).returning({id:m.O.id})).length);let d=(0,R.x)(s,o,e);return d.length?{created:await (0,i.db)().insert(m.O).values(d.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(e_),expired:u}:{created:[],expired:u}}let eB=null;async function eV(e,t){return(0,R.D)(e,eB)?(eB=e.getTime(),eH(e,await t())):{created:[],expired:0}}async function eG(e,t){return(await (0,i.db)().update(m.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.and)((0,a.eq)(m.O.id,e),(0,a.eq)(m.O.status,"pending"),(0,a.eq)(m.O.risk,"safe"))).returning({id:m.O.id})).length>0}async function eK(e,t){let r=new Date(t.getTime()-x.r),[n,o,s,l,u]=await Promise.all([(0,i.db)().select({app:w.deployments.resourceId,id:w.deployments.externalId,sha:w.deployments.commitSha,state:w.deployments.state,isCurrent:w.deployments.isCurrent,isPrevious:w.deployments.isPreviousProduction,readyAt:w.deployments.readyAt,createdAt:w.deployments.createdAtProvider}).from(w.deployments).where((0,a.and)((0,a.inArray)(w.deployments.resourceId,e),(0,a.or)((0,a.eq)(w.deployments.isCurrent,!0),(0,a.eq)(w.deployments.isPreviousProduction,!0)))),(0,i.db)().select({app:w.deployments.resourceId,at:b.sql`max(${w.deployments.createdAtProvider})`.mapWith(w.deployments.createdAtProvider)}).from(w.deployments).where((0,a.and)((0,a.inArray)(w.deployments.resourceId,e),(0,a.eq)(w.deployments.target,"production"),(0,a.eq)(w.deployments.state,"ready"))).groupBy(w.deployments.resourceId),(0,i.db)().select({app:w.events.resourceId}).from(w.events).where((0,a.and)((0,a.eq)(w.events.type,"action"),(0,a.inArray)(w.events.resourceId,e),(0,a.gte)(w.events.at,r),b.sql`${w.events.message} ~ ${eF}`)),(0,i.db)().select({app:m.O.resourceId,targetRef:m.O.targetRef,status:m.O.status,decidedAt:m.O.decidedAt}).from(m.O).where((0,a.and)((0,a.eq)(m.O.action,"vercel_rollback"),(0,a.eq)(m.O.auto,!0),(0,a.gte)(m.O.createdAt,new Date(t.getTime()-26784e5)))),eS(e)]),d=new Map;for(let t of e){let e=n.find(e=>e.app===t&&e.isCurrent),a=n.find(e=>e.app===t&&e.isPrevious&&!e.isCurrent),i=l.filter(e=>e.app===t);d.set(t,{deploy:e?{currentId:e.id,currentSha:e.sha,liveAt:e.readyAt??e.createdAt,currentCreatedAt:e.createdAt,newestProdCreatedAt:o.find(e=>e.app===t)?.at??null,previousId:a?.id??null,previousState:a?.state??null,previousCreatedAt:a?.createdAt??null}:null,rolledOrPromotedLately:s.some(e=>e.app===t),autoLately:i.some(e=>null!==e.decidedAt&&e.decidedAt.getTime()>=r.getTime()),sameDeployBefore:!!a&&i.some(e=>e.targetRef===a.id),previousNext:e&&a?e$(u,t,e.readyAt??e.createdAt,a.readyAt??a.createdAt).status:"unknown"})}return{apps:d,inFlight:l.some(e=>"approved"===e.status||"running"===e.status)}}let eF="(Rolled back|Promoted|Preview promoted) ·";async function eW(e,t,r){return(await (0,i.db)().update(m.O).set({status:"approved",auto:!0,decidedAt:r,reason:t}).where((0,a.and)((0,a.eq)(m.O.id,e),(0,a.eq)(m.O.status,"pending"),(0,a.eq)(m.O.action,"vercel_rollback"),b.sql`not exists (select 1 from ops.action_proposals x where x.action = 'vercel_rollback' and x.auto and x.status in ('approved', 'running'))`)).returning({id:m.O.id})).length>0}async function eX(e,t,r,n){let a=e.filter(e=>"vercel_rollback"===e.action&&e.ruleKey&&x.M.has(e.ruleKey)&&e.resourceId);if(!a.length||!n.autoRollback||!n.rollbackContext||!n.approveAutoRollback)return[];let i=await n.autoRollback().catch(()=>null);if(!i?.enabled||15e3>r())return[];let o=[];try{let e=await n.rollbackContext([...new Set(a.map(e=>e.resourceId))],t),l=e.inFlight;for(let u of a){let a=e.apps.get(u.resourceId);if(!a||12e3>r())continue;let d=(0,x.s)({setting:i,ruleKey:u.ruleKey??null,targetRef:u.targetRef,inFlight:l,...a},t);if(!d.ok){console.log(`${s.X.logTag}/auto-rollback: skipped (${d.why})`);continue}let c=(0,x.E)(a.deploy);if(!await n.approveAutoRollback(u.id,(0,x.u)(c,i.windowMin,u.reason),new Date))continue;l=!0;let p=await n.execute(u.id,new Date);if(p){o.push(p),await (n.notifyRollback??E.q)(p,{reason:u.reason,newRef:c},{},{alertId:u.alertId??null}).catch(()=>void 0);break}}}catch(e){console.warn(`${s.X.logTag}/auto-rollback failed:`,e instanceof Error?e.name:"error")}return o}async function eJ(e,t){return(await (0,i.db)().update(m.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.and)((0,a.eq)(m.O.id,e),(0,a.eq)(m.O.status,"pending"),(0,a.eq)(m.O.action,"github_bump_pr"))).returning({id:m.O.id})).length>0}async function eY(e,t,r){let n=e.filter(e=>"github_bump_pr"===e.action&&e.targetRef);if(!n.length||!r.autoSecurity||!r.bumpReady||!r.approveAutoBump)return[];let a=await r.autoSecurity().catch(()=>null);if(!a?.enabled||!a.severities.length)return[];let i=[];for(let e of n){if(15e3>t())break;try{if(e.resourceId&&r.prodMismatch?await r.prodMismatch(e.resourceId,e.targetRef).catch(()=>"unknown"):null){console.log(`${s.X.logTag}/auto-security: waits for the owner (production source)`);continue}let t="FrameworkVulnerable"===e.ruleKey&&e.resourceId?await r.bumpReady(e.targetRef,a.severities,{appId:e.resourceId}):await r.bumpReady(e.targetRef,a.severities);if(!t.ok){console.log(`${s.X.logTag}/auto-security: waits for the owner (${t.why})`);continue}if(!await r.approveAutoBump(e.id,new Date))continue;let n=await r.execute(e.id,new Date);n&&i.push(n)}catch(e){console.warn(`${s.X.logTag}/auto-security failed:`,e instanceof Error?e.name:"error")}}return i}async function eZ(e,t){return(await (0,P.H)([{appId:e,repoId:t}],new Date)).get(e)??null}async function eQ(e){return new Map((await (0,i.db)().select({id:w.accounts.id,provider:w.accounts.provider}).from(w.accounts).where((0,a.inArray)(w.accounts.id,e))).map(e=>[e.id,e.provider]))}let e0={firing:()=>(0,v.q)(),book:()=>(0,u.f)(),facts:eA,create:eE,expire:eD,autoRun:ef.I,approveAuto:eG,execute:(e,t)=>ej(e,"auto",t),notifyNew:E.i,notifyResult:E.b,logs:eV,autoRollback:()=>(0,ef.K)(),rollbackContext:eK,approveAutoRollback:eW,notifyRollback:E.q,autoSecurity:()=>(0,ef.X)(),bumpReady:P.J,approveAutoBump:eJ,paused:_.I,providers:eQ,prodMismatch:eZ};async function e1(e,t={},r=e0){let n={created:0,expired:0,autoRan:0},a=()=>(t.deadline??1/0)-Date.now(),i=await r.firing();n.expired=await r.expire(i.map(e=>e.id),e);let o=r.paused?await r.paused().catch(()=>new Set):new Set,l=[...new Set(i.flatMap(e=>e.accountId?[e.accountId]:[]))],u=o.size&&l.length&&r.providers?await r.providers(l).catch(()=>new Map):new Map,d=i.filter(e=>!(0,A.O)(o,e.ruleKey,e.accountId?u.get(e.accountId):null)),c=null,p=()=>c??=r.book().catch(()=>f.a),m=[],h=(0,g.z)(d,e);if(Object.values(h).some(e=>e.length>0)){let t=h.deployApps.length&&r.autoRollback?await r.autoRollback().catch(()=>null):null,n=await r.facts(d,e,t?6e4*t.windowMin:void 0),a=await p(),i=d.flatMap(t=>(0,g.t)(t,n,a,e)).filter(e=>!("github_bump_pr"===e.action&&o.has("devops")));m.push(...await r.create(i))}if(a()>1e4&&!o.has("hosting"))try{let t=await r.logs(e,p);m.push(...t.created),n.expired+=t.expired}catch(e){console.warn(`${s.X.logTag}/proposals logs failed:`,e instanceof Error?e.name:"error")}if(n.created=m.length,!m.length)return n;let y=await r.autoRun().catch(()=>null),b=await eX(m,e,a,r);n.autoRan+=b.length;let w=await eY(m.filter(e=>!b.some(t=>t.id===e.id)),a,r),v=new Set(b.map(e=>e.id)),k=[...w];for(let e of(n.autoRan+=w.length,w))v.add(e.id);for(let e of m){if(v.has(e.id)||!y||!(0,g.I)(e.action,y)||8e3>a()||!await r.approveAuto(e.id,new Date))continue;let t=await r.execute(e.id,new Date);t&&(k.push(t),n.autoRan++)}let _=new Set([...k.map(e=>e.id),...v]),I=m.filter(e=>"LogErrorSpike"===e.ruleKey&&e.resourceId).map(e=>({proposalId:e.id,appId:e.resourceId})),S=I.length&&r.queueDev?await r.queueDev(I,e).catch(()=>new Set):new Set,$=new Map(m.map(e=>[e.id,e.alertId??null]));for(let e of(await r.notifyNew(m.filter(e=>!_.has(e.id)).map(g.E),{},{devQueued:S,alertIds:$}).catch(()=>void 0),k))await r.notifyResult(e,{},{alertId:$.get(e.id)??null}).catch(()=>void 0);return n}let e3=(r={},t={...e0,queueDev:r.queueDev},async(e,r)=>{try{let n=await e1(e,r??{},t);(n.created||n.expired||n.autoRan)&&console.log(`${s.X.logTag}/proposals: ${n.created} new, ${n.expired} expired, ${n.autoRan} auto-ran`)}catch(e){console.warn(`${s.X.logTag}/proposals failed:`,e instanceof Error?e.name:"error")}});e.s(["V",0,eN,"N",0,ej,"Z",0,e3,"t",0,eM],653587);let e2={decide:eN,execute:(e,t,r)=>ej(e,t,r),history:(e,t)=>(0,E.v)(e,t)},e4=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,e6={en:{approve:"✅ Approve",reject:"❌ Reject",sure:"⚠️ Sure? Approve",cancel:"Cancel",invalid:"This button is not valid.",gone:"This proposal is already decided / expired",confirmFirst:"This action is risky. Tap ⚠️ Sure? Approve within 2 minutes.",confirmLate:"The confirmation expired. Tap ✅ Approve again.",cancelled:"Cancelled. The proposal is still waiting.",running:"Approved. Running…",rejected:"Rejected.",failed:"Could not process it. Try again from Auto-actions."},id:{approve:"✅ Setujui",reject:"❌ Tolak",sure:"⚠️ Yakin? Setujui",cancel:"Batal",invalid:"Tombol ini nggak valid.",gone:"Usulan ini udah diputuskan / kedaluwarsa",confirmFirst:"Aksi ini berisiko. Tap ⚠️ Yakin? Setujui dalam 2 menit.",confirmLate:"Konfirmasinya kedaluwarsa. Tap ✅ Setujui lagi.",cancelled:"Dibatalkan. Usulannya masih menunggu.",running:"Disetujui. Lagi jalan…",rejected:"Ditolak.",failed:"Gagal memproses. Coba lagi dari Auto-actions."}},e5=e=>(0,n.createHmac)("sha256",Buffer.from(e,"base64")).update("watchpost:telegram-callback:v1").digest(),e9=(e,t)=>(0,n.createHmac)("sha256",e).update(t,"utf8").digest("base64url").slice(0,16);function e8(e,t,r,n=null){let a=`p:${t}:${r}${"c"===r?`:${(n??0).toString(36)}`:""}`;return`${a}:${e9(e,a)}`}function e7(e,t){if("string"!=typeof t||t.length>64)return null;let r=t.lastIndexOf(":");if(r<0)return null;let a=t.slice(0,r),i=Buffer.from(t.slice(r+1),"utf8"),o=Buffer.from(e9(e,a),"utf8");if(i.length!==o.length||!(0,n.timingSafeEqual)(i,o))return null;let s=a.split(":");if("p"!==s[0]||!e4.test(s[1]??""))return null;let l=s[2];return"c"===l?4===s.length&&/^[0-9a-z]{1,10}$/.test(s[3])?{id:s[1],op:l,exp:parseInt(s[3],36)}:null:3===s.length&&["a","r","x"].includes(l)?{id:s[1],op:l,exp:null}:null}let te=(e,t,r="en")=>({inline_keyboard:[[{text:e6[r].approve,callback_data:e8(e,t,"a")},{text:e6[r].reject,callback_data:e8(e,t,"r")}]]}),tt=(e,t,r,n="en")=>({inline_keyboard:[[{text:e6[n].sure,callback_data:e8(e,t,"c",r)},{text:e6[n].cancel,callback_data:e8(e,t,"x")}]]}),tr={en:{pending:"⏳ waiting",approved:"⚙️ running",running:"⚙️ running",done:"✅ done",failed:"❌ failed",rejected:"🚫 rejected",expired:"⌛ expired"},id:{pending:"⏳ menunggu",approved:"⚙️ jalan",running:"⚙️ jalan",done:"✅ selesai",failed:"❌ gagal",rejected:"🚫 ditolak",expired:"⌛ kedaluwarsa"}};function tn(e,t,r="en"){let n=e.result&&("done"===e.status||"failed"===e.status||"expired"===e.status)?(0,h.R)(e.result,t,200):"";return`Status: ${tr[r][e.status]}${n?` — ${(0,o.H)(n)}`:""}`}let ta=(e,t,r,n="en")=>`${(0,E.a)(e,t,r,!1,n)}
44
46
  ${tn(e,t,n)}`,ti={key:()=>e5((0,c.serverEnv)().OPS_ENCRYPTION_KEY),get:async function(e){let[t]=await (0,i.db)().select({id:m.O.id,room:m.O.room,action:m.O.action,risk:m.O.risk,title:m.O.title,reason:m.O.reason,resourceName:m.O.resourceName,proposedBy:m.O.proposedBy,status:m.O.status,auto:m.O.auto,result:m.O.result,createdAt:m.O.createdAt,decidedAt:m.O.decidedAt,expiresAt:m.O.expiresAt}).from(m.O).where((0,a.eq)(m.O.id,e)).limit(1);return t?(0,g.E)(t):null},decide:async function e(t,r,n,a,i={},o=e2){let s=await o.decide(t,r,n.id,a);if("ok"!==s.status)return"missing"===s.status?{status:"missing"}:{status:"conflict",proposal:s.proposal};let l=[],u=async()=>{let e,t=o.history;if(!t||!l.length)return;let r=l.splice(0),n=new Promise(t=>{e=setTimeout(t,E.h)}),a=(async()=>{for(let[e,n]of r)await t(e,n).catch(()=>void 0)})();await Promise.race([a,n]).finally(()=>clearTimeout(e))};if("reject"===r)return l.push(["rejected",s.proposal]),{status:"ok",proposal:s.proposal,flushHistory:u};l.push(["approved",s.proposal]),i.onApproved&&await i.onApproved(s.proposal).catch(()=>void 0);let d=await o.execute(t,{id:n.id,userId:n.userId},new Date);return d&&("done"===d.status||"failed"===d.status)&&l.push([d.status,d]),{status:"ok",proposal:d??s.proposal,flushHistory:u}},book:()=>(0,u.f)(),siteUrl:()=>(0,c.serverEnv)().SITE_URL,lang:()=>(0,p.H)("telegram"),audit:e=>(0,l.f)({...e,resourceId:null})};async function to(e,t,r=ti){let{client:n,owner:a,now:i}=t,o=r.key(),l=await r.lang().catch(()=>"en"),u=e6[l],d=e7(o,e.data);if(!d)return void await n.answer(e.queryId,u.invalid);let c=null,p=async(t,a)=>n.editText(e.chatId,e.messageId,ta(t,await (c??=r.book().catch(()=>f.a)),r.siteUrl(),l),a),m=async t=>{await n.answer(e.queryId,u.gone),t?await p(t,null):await n.editKeyboard(e.chatId,e.messageId,{inline_keyboard:[]})},h=await r.get(d.id);if(!h||!("pending"===h.status&&Date.parse(h.expiresAt)>i.getTime()))return m(h);if("x"===d.op){await n.editKeyboard(e.chatId,e.messageId,te(o,h.id,l)),await n.answer(e.queryId,u.cancelled);return}if("a"===d.op&&("risky"===h.risk||em.H[h.action]?.risk==="risky")){await n.editKeyboard(e.chatId,e.messageId,tt(o,h.id,Math.floor((i.getTime()+12e4)/1e3),l)),await n.answer(e.queryId,u.confirmFirst);return}if("c"===d.op&&(d.exp??0)*1e3<i.getTime()){await n.editKeyboard(e.chatId,e.messageId,te(o,h.id,l)),await n.answer(e.queryId,u.confirmLate);return}let g="r"===d.op?"reject":"approve",y=!1;try{let t=await r.decide(h.id,g,{id:a.memberId,userId:a.userId},i,{onApproved:async t=>{y=!0,await n.answer(e.queryId,u.running),await p(t,null)}});if("missing"===t.status)return m(null);if("conflict"===t.status)return m(t.proposal);await r.audit({kind:"ok",message:s.X.telegramDecided("approve"===g?"approved":"rejected",t.proposal.title.slice(0,120)),actorUserId:a.userId}).catch(()=>console.warn("audit event failed")),y||await n.answer(e.queryId,"reject"===g?u.rejected:u.running),await p(t.proposal,null),await t.flushHistory?.()}catch(t){console.warn("telegram approvals: deciding failed:",t instanceof Error?t.name:"error"),y||await n.answer(e.queryId,u.failed)}}async function ts(){if(!await (0,d.webhookOn)()||!await (0,d.ownerLinked)())return null;let e=e5((0,c.serverEnv)().OPS_ENCRYPTION_KEY),t=await (0,p.H)("telegram");return r=>te(e,r.id,t)}e.s(["CONFIRM_MS",0,12e4,"TEXT",0,e6,"approvalButtons",0,ts,"approvalKeyboard",0,te,"callbackKey",0,e5,"confirmKeyboard",0,tt,"noticeText",0,ta,"proposalCallback",0,to,"signCallback",0,e8,"statusLine",0,tn,"verifyCallback",0,e7],452475)},898757,e=>{let t=["gemini","antigravity","@cf/google/gemma","claude"];function r(e,n=t){if(!e)return!1;let a=e.toLowerCase();return n.some(e=>e.length>0&&a.startsWith(e.toLowerCase()))}let n=/^[A-Za-z0-9@._:/+ ()[\]-]{1,120}$/,a=/^[a-z0-9@._:/+-]{1,120}$/;function i(e){if("string"!=typeof e)return null;let t=e.trim();if(!n.test(t))return null;let r=t.toLowerCase().replace(/[\s()[\]]+/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return a.test(r)?r:null}function o(e){let t=e.trim();if(t.startsWith("@"))return t;let r=t.indexOf("/");return r<0?t:t.slice(r+1)}e.s(["_",0,t,"L",0,"ai.defaultModel","e",0,a,"h",0,function(e,n=t){let a=i(e);return a&&r(o(a),n)?a:null},"S",0,r,"R",0,i,"M",0,o])},989578,e=>{var t=e.i(760859),r=e.i(756371),n=e.i(765503),a=e.i(898757);let i=/\b([a-z][a-z0-9+.-]{1,20}):\/\/[^\s"'<>`]*/gi,o=/\b(?:\d{1,3}\.){3}\d{1,3}\b/g,s=/\b(?:w[bp]_[A-Za-z0-9]{6,}|hb_[A-Za-z0-9[\]]{2,}|sk-[A-Za-z0-9_-]{6,}|gsk_[A-Za-z0-9]{6,}|AIza[0-9A-Za-z_-]{10,}|AQ\.[A-Za-z0-9_-]{10,})/g,l=/(?<![\p{L}\p{N}_.-])[a-z0-9-]+\.vercel\.app(?![\p{L}\p{N}_-])/giu,u=/@/g,d=new WeakMap;function c(e,t){return/^https?$/i.test(t)?"[link]":"[hidden]"}a._;let p="[\\p{L}\\p{N}_./-]",f=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),m=/(?<![\p{L}\p{N}_.@-])(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,24}(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])/giu,h=new WeakMap;function g(e,a){return String(e??"").replace(/\r\n?/g,"\n").split("\n").map(e=>{var g,y;let b,w,v,k=(g=(0,r.f)(e,a),b=g.replace(i,c),b=(0,t.J)(b,a),b=(b=(0,n.h)(b)).replace(s,"[hidden]"),(w=function(e){if(d.has(e))return d.get(e);let t=[...e.host??[]].filter(e=>e.name.includes(".")).sort((e,t)=>t.name.length-e.name.length),r=t.length?{re:RegExp(`(?<![\\p{L}\\p{N}_-])((?:[a-z0-9-]+\\.)*?)(${t.map(e=>e.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})(?![\\p{L}\\p{N}_-]|\\.[\\p{L}\\p{N}])`,"giu"),alias:new Map(t.map(e=>[e.name.toLowerCase(),e.alias]))}:null;return d.set(e,r),r}(a))&&(b=b.replace(w.re,(e,t,r)=>`${t}${w.alias.get(r.toLowerCase())??"site.example"}`)),b=b.replace(l,"preview.example").replace(o,"[ip]").replace(u," at "));return k=k.replace(m,e=>/\.example$/i.test(e)?e:"site.example"),(0,t.G)((y=k,(v=function(e){if(h.has(e))return h.get(e);let t=new Map(e.app.filter(e=>e.name.trim().length>=2).map(e=>[e.name.toLowerCase(),e.alias])),r=[...t.keys()].sort((e,t)=>t.length-e.length),n=r.length?{re:RegExp(`(?<!${p})(?:${r.map(f).join("|")})(?!${p})`,"giu"),alias:t}:null;return h.set(e,n),n}(a))?y.replace(v.re,e=>v.alias.get(e.toLowerCase())??e):y))}).join("\n")}let y=(e,t)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e;e.s(["g",0,(e,t,r)=>y(g(String(e??"").replace(/\s+/g," "),t).replace(/\s+/g," ").trim(),r),"R",0,(e,r,n)=>{let a;return y((a=String(e??"").replace(/\s+/g," "),(0,t.q)(g(a,r),r)).replace(/\s+/g," ").trim(),n)}],989578)},756371,e=>{var t=e.i(765503),r=e.i(760859);let n=/(?<![\p{L}\p{N}_])(?:w[bp]_[A-Za-z0-9]{6,}|hb_[0-9a-f]{6,}|sk-[A-Za-z0-9_-]{6,}|gsk_[A-Za-z0-9]{6,}|AIza[0-9A-Za-z_-]{8,}|AQ\.[A-Za-z0-9_-]{8,})/gu,a=/\b[a-z][a-z0-9+.-]*:\/\/[^\s/?#"'<>)]*(\/[^\s?#"'<>)]*)?(?:[?#][^\s"'<>)]*)?/gi,i="[\\p{L}\\p{N}_-]",o=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new WeakMap;RegExp(n.source,"u"),e.s(["f",0,function(e,l){let u=(0,t.h)(e);u=(0,r.J)(u,l);let d=function(e){if(s.has(e))return s.get(e);let t=new Map((e.account??[]).filter(e=>e.name.trim().length>=2).map(e=>[e.name.toLowerCase(),e.alias])),r=[...t.keys()].sort((e,t)=>t.length-e.length),n=r.length?{re:RegExp(`(?<!${i})(?:${r.map(o).join("|")})(?!${i})`,"giu"),alias:t}:null;return s.set(e,n),n}(l);return d&&(u=u.replace(d.re,e=>d.alias.get(e.toLowerCase())??e)),(u=(u=(u=u.replace(n,"[hidden]")).replace(/hb_\[hidden\]/g,"[hidden]")).replace(a,(e,t)=>t??"[url]")).replace(/@/g,"(at)")}])},518581,e=>{var t=e.i(533102),r=e.i(69659),n=e.i(748031),a=e.i(745644),i=e.i(723235),o=e.i(511302),s=e.i(553184),l=e.i(741630),u=e.i(370705),d=e.i(141757),c=e.i(10566),p=e.i(45115),f=e.i(530298);let m=f.ops.table("api_keys",{id:(0,p.q)("id").primaryKey().defaultRandom(),name:(0,d.f)("name").notNull(),prefix:(0,d.f)("prefix").notNull(),keyHash:(0,d.f)("key_hash").notNull(),scopes:(0,d.f)("scopes").array().notNull(),ratePerMin:(0,s.f)("rate_per_min").notNull().default(20),providerId:(0,p.q)("provider_id").references(()=>h.id,{onDelete:"set null"}),model:(0,d.f)("model"),expiresAt:(0,c._)("expires_at",{withTimezone:!0}),revokedAt:(0,c._)("revoked_at",{withTimezone:!0}),lastUsedAt:(0,c._)("last_used_at",{withTimezone:!0}),createdBy:(0,p.q)("created_by").notNull(),createdAt:(0,c._)("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[(0,o.v)("api_keys_hash_key").on(e.keyHash)]),h=f.ops.table("ai_providers",{id:(0,p.q)("id").primaryKey().defaultRandom(),kind:(0,d.f)("kind").$type().notNull(),name:(0,d.f)("name").notNull(),baseUrl:(0,d.f)("base_url").notNull(),ciphertext:(0,d.f)("ciphertext").notNull(),iv:(0,d.f)("iv").notNull(),keyVersion:(0,s.f)("key_version").notNull().default(1),keyHint:(0,d.f)("key_hint").notNull(),enabled:(0,a.f)("enabled").notNull().default(!0),isDefault:(0,a.f)("is_default").notNull().default(!1),models:(0,l.y)("models").$type().notNull().default([]),limits:(0,l.y)("limits").$type().notNull().default([]),lastTestAt:(0,c._)("last_test_at",{withTimezone:!0}),lastTestStatus:(0,s.f)("last_test_status"),lastError:(0,d.f)("last_error"),createdAt:(0,c._)("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:(0,c._)("updated_at",{withTimezone:!0}).notNull().defaultNow()});f.ops.table("ai_agents",{id:(0,p.q)("id").primaryKey().defaultRandom(),keyId:(0,p.q)("key_id").references(()=>m.id,{onDelete:"cascade"}),clientName:(0,d.f)("client_name").notNull(),clientVersion:(0,d.f)("client_version").notNull().default(""),via:(0,d.f)("via").notNull(),userAgent:(0,d.f)("user_agent").notNull().default(""),displayName:(0,d.f)("display_name"),firstSeenAt:(0,c._)("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:(0,c._)("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),requests:(0,r.f)("requests",{mode:"number"}).notNull().default(0),tokensIn:(0,r.f)("tokens_in",{mode:"number"}).notNull().default(0),tokensOut:(0,r.f)("tokens_out",{mode:"number"}).notNull().default(0),recent:(0,d.f)("recent").array().notNull().default([])}),f.ops.table("ai_usage",{id:(0,n.f)("id",{mode:"number"}).primaryKey(),at:(0,c._)("at",{withTimezone:!0}).notNull().defaultNow(),keyId:(0,p.q)("key_id"),agentId:(0,p.q)("agent_id"),providerId:(0,p.q)("provider_id"),model:(0,d.f)("model"),kind:(0,d.f)("kind").notNull(),tool:(0,d.f)("tool"),tokensIn:(0,s.f)("tokens_in"),tokensOut:(0,s.f)("tokens_out"),latencyMs:(0,s.f)("latency_ms").notNull(),status:(0,s.f)("status").notNull(),errorClass:(0,d.f)("error_class"),stream:(0,a.f)("stream").notNull().default(!1),tokensCached:(0,s.f)("tokens_cached"),tokensThinking:(0,s.f)("tokens_thinking")},e=>[(0,o.y)("ai_usage_at_idx").on(e.at),(0,o.y)("ai_usage_key_at_idx").on(e.keyId,e.at)]),f.ops.table("ai_quota",{providerId:(0,p.q)("provider_id").notNull().references(()=>h.id,{onDelete:"cascade"}),scope:(0,d.f)("scope").notNull(),metric:(0,d.f)("metric").notNull(),windowStart:(0,c._)("window_start",{withTimezone:!0}),used:(0,s.f)("used"),limit:(0,s.f)("limit"),remaining:(0,s.f)("remaining"),resetAt:(0,c._)("reset_at",{withTimezone:!0}),source:(0,d.f)("source").notNull(),updatedAt:(0,c._)("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[(0,u._)({columns:[e.providerId,e.scope,e.metric]})]);let g=f.ops.table("ai_notes",{id:(0,p.q)("id").primaryKey().defaultRandom(),keyId:(0,p.q)("key_id").references(()=>m.id,{onDelete:"set null"}),source:(0,d.f)("source").notNull(),appId:(0,d.f)("app_id"),severity:(0,d.f)("severity").$type().notNull(),title:(0,d.f)("title").notNull(),body:(0,d.f)("body").notNull(),model:(0,d.f)("model"),client:(0,d.f)("client"),createdAt:(0,c._)("created_at",{withTimezone:!0}).notNull().defaultNow(),dismissedAt:(0,c._)("dismissed_at",{withTimezone:!0}),dismissedBy:(0,p.q)("dismissed_by")},e=>[(0,o.y)("ai_notes_created_idx").on(e.createdAt)]),y=f.ops.table("ai_questions",{id:(0,p.q)("id").primaryKey().defaultRandom(),contextKind:(0,d.f)("context_kind").$type().notNull(),contextId:(0,p.q)("context_id"),question:(0,d.f)("question").notNull(),status:(0,d.f)("status").$type().notNull().default("pending"),answer:(0,d.f)("answer"),answeredByClient:(0,d.f)("answered_by_client"),answeredByModel:(0,d.f)("answered_by_model"),createdBy:(0,p.q)("created_by"),createdAt:(0,c._)("created_at",{withTimezone:!0}).notNull().defaultNow(),answeredAt:(0,c._)("answered_at",{withTimezone:!0}),requestedModel:(0,d.f)("requested_model"),purpose:(0,d.f)("purpose").$type().notNull().default("ask")},e=>[(0,o.y)("ai_questions_status_created_idx").on(e.status,e.createdAt)]);f.ops.table("office_events",{id:(0,n.f)("id",{mode:"number"}).primaryKey(),at:(0,c._)("at",{withTimezone:!0}).notNull().defaultNow(),session:(0,d.f)("session").notNull(),project:(0,d.f)("project"),agent:(0,d.f)("agent"),agentType:(0,d.f)("agent_type"),ev:(0,d.f)("ev").$type().notNull(),tool:(0,d.f)("tool"),summary:(0,d.f)("summary"),kind:(0,d.f)("kind"),spawn:(0,l.y)("spawn").$type(),usage:(0,l.y)("usage").$type(),keyId:(0,p.q)("key_id")},e=>[(0,o.y)("office_events_at_idx").on(e.at)]),f.ops.table("office_reports",{id:(0,p.q)("id").primaryKey().defaultRandom(),at:(0,c._)("at",{withTimezone:!0}).notNull().defaultNow(),source:(0,d.f)("source").$type().notNull(),title:(0,d.f)("title").notNull(),body:(0,d.f)("body").notNull(),rooms:(0,l.y)("rooms").$type(),model:(0,d.f)("model"),via:(0,d.f)("via").$type(),usage:(0,l.y)("usage").$type(),keyId:(0,p.q)("key_id"),readAt:(0,c._)("read_at",{withTimezone:!0})},e=>[(0,o.y)("office_reports_at_idx").on(e.at)]);let b=f.ops.table("action_proposals",{id:(0,p.q)("id").primaryKey().defaultRandom(),alertId:(0,p.q)("alert_id"),ruleKey:(0,d.f)("rule_key").notNull(),room:(0,d.f)("room").$type().notNull(),action:(0,d.f)("action").$type().notNull(),risk:(0,d.f)("risk").$type().notNull(),title:(0,d.f)("title").notNull(),reason:(0,d.f)("reason").notNull(),resourceKind:(0,d.f)("resource_kind"),resourceId:(0,p.q)("resource_id"),resourceName:(0,d.f)("resource_name"),targetRef:(0,d.f)("target_ref"),proposedBy:(0,d.f)("proposed_by").notNull(),status:(0,d.f)("status").$type().notNull().default("pending"),auto:(0,a.f)("auto").notNull().default(!1),result:(0,d.f)("result"),decidedBy:(0,p.q)("decided_by"),createdAt:(0,c._)("created_at",{withTimezone:!0}).notNull().defaultNow(),decidedAt:(0,c._)("decided_at",{withTimezone:!0}),expiresAt:(0,c._)("expires_at",{withTimezone:!0}).notNull(),claimedAt:(0,c._)("claimed_at",{withTimezone:!0}),finishedAt:(0,c._)("finished_at",{withTimezone:!0})},e=>[(0,o.v)("action_proposals_open_alert_action").on(e.alertId,e.action).where(t.sql`status in ('pending', 'approved', 'running')`),(0,o.y)("action_proposals_status_created_idx").on(e.status,e.createdAt)]);f.ops.table("dev_notes",{id:(0,p.q)("id").primaryKey().defaultRandom(),appId:(0,p.q)("app_id").notNull(),proposalId:(0,p.q)("proposal_id"),trigger:(0,d.f)("trigger").$type().notNull(),status:(0,d.f)("status").$type().notNull().default("queued"),repo:(0,d.f)("repo"),ref:(0,d.f)("ref"),question:(0,d.f)("question").notNull(),summary:(0,d.f)("summary"),cause:(0,d.f)("cause"),files:(0,l.y)("files").$type().notNull().default([]),patch:(0,d.f)("patch"),confidence:(0,d.f)("confidence").$type(),model:(0,d.f)("model"),error:(0,d.f)("error"),requestedBy:(0,p.q)("requested_by"),createdAt:(0,c._)("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:(0,c._)("started_at",{withTimezone:!0}),finishedAt:(0,c._)("finished_at",{withTimezone:!0})},e=>[(0,o.v)("dev_notes_proposal_one").on(e.proposalId).where(t.sql`proposal_id is not null`),(0,o.y)("dev_notes_created_idx").on(e.createdAt),(0,o.y)("dev_notes_app_status_idx").on(e.appId,e.status)]),f.ops.table("news_items",{id:(0,p.q)("id").primaryKey().defaultRandom(),day:(0,i.c)("day",{mode:"string"}).notNull(),topic:(0,d.f)("topic").$type().notNull(),title:(0,d.f)("title").notNull(),url:(0,d.f)("url").notNull(),source:(0,d.f)("source"),publishedAt:(0,c._)("published_at",{withTimezone:!0}),fetchedAt:(0,c._)("fetched_at",{withTimezone:!0}).notNull().defaultNow()},e=>[(0,o.v)("news_items_url_day").on(e.url,e.day),(0,o.y)("news_items_day_topic_idx").on(e.day,e.topic)]),e.s(["O",0,b,"c",0,g,"f",0,h,"S",0,y])}],668304,(e,t,r)=>{let n;n={unstable_cache:e.r(255706).unstable_cache,updateTag:e.r(199300).updateTag,revalidateTag:e.r(199300).revalidateTag,revalidatePath:e.r(199300).revalidatePath,refresh:e.r(199300).refresh,unstable_noStore:e.r(910582).unstable_noStore,io:e.r(601623).io,cacheLife:e.r(825183).cacheLife,cacheTag:e.r(246130).cacheTag,navigation:e.r(883969).navigation,prefetch:e.r(883969).prefetch};let a=!1,i=!1;n.unstable_cacheLife=function(){return a||(a=!0,console.error(Error("`unstable_cacheLife` was recently stabilized and should be imported as `cacheLife`. The `unstable` prefixed form will be removed in a future version of Next.js."))),n.cacheLife.apply(this,arguments)},n.unstable_cacheTag=function(){return i||(i=!0,console.error(Error("`unstable_cacheTag` was recently stabilized and should be imported as `cacheTag`. The `unstable` prefixed form will be removed in a future version of Next.js."))),n.cacheTag.apply(this,arguments)},t.exports=n,r.unstable_cache=n.unstable_cache,r.revalidatePath=n.revalidatePath,r.revalidateTag=n.revalidateTag,r.updateTag=n.updateTag,r.unstable_noStore=n.unstable_noStore,r.cacheLife=n.cacheLife,r.unstable_cacheLife=n.unstable_cacheLife,r.cacheTag=n.cacheTag,r.unstable_cacheTag=n.unstable_cacheTag,r.refresh=n.refresh,r.io=n.io,r.navigation=n.navigation,r.prefetch=n.prefetch},371039,(e,t,r)=>{(()=>{"use strict";let r,n,a,i,o;var s,l,u,d,c,p,f,m,h,g,y,b,w,v,k,_,A={912:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ContextAPI=void 0;let n=r(108),a=r(221),i=r(44),o="context",s=new n.NoopContextManager;t.ContextAPI=class e{static getInstance(){return this._instance||(this._instance=new e),this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(o,e,i.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(o)||s}disable(){this._getContextManager().disable(),(0,a.unregisterGlobal)(o,i.DiagAPI.instance())}}},44:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagAPI=void 0;let n=r(757),a=r(412),i=r(711),o=r(221);t.DiagAPI=class e{constructor(){function e(e){return function(...t){let r=(0,o.getGlobal)("diag");if(r)return r[e](...t)}}let t=this;t.setLogger=(e,r={logLevel:i.DiagLogLevel.INFO})=>{var n,s,l;if(e===t){let e=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error(null!=(n=e.stack)?n:e.message),!1}"number"==typeof r&&(r={logLevel:r});let u=(0,o.getGlobal)("diag"),d=(0,a.createLogLevelDiagLogger)(null!=(s=r.logLevel)?s:i.DiagLogLevel.INFO,e);if(u&&!r.suppressOverrideMessage){let e=null!=(l=Error().stack)?l:"<failed to generate stacktrace>";u.warn(`Current logger will be overwritten from ${e}`),d.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,o.registerGlobal)("diag",d,t,!0)},t.disable=()=>{(0,o.unregisterGlobal)("diag",t)},t.createComponentLogger=e=>new n.DiagComponentLogger(e),t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}static instance(){return this._instance||(this._instance=new e),this._instance}}},262:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetricsAPI=void 0;let n=r(586),a=r(221),i=r(44),o="metrics";t.MetricsAPI=class e{static getInstance(){return this._instance||(this._instance=new e),this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(o,e,i.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(o)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(o,i.DiagAPI.instance())}}},25:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PropagationAPI=void 0;let n=r(221),a=r(19),i=r(92),o=r(398),s=r(504),l=r(44),u="propagation",d=new a.NoopTextMapPropagator;t.PropagationAPI=class e{constructor(){this.createBaggage=s.createBaggage,this.getBaggage=o.getBaggage,this.getActiveBaggage=o.getActiveBaggage,this.setBaggage=o.setBaggage,this.deleteBaggage=o.deleteBaggage}static getInstance(){return this._instance||(this._instance=new e),this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,l.DiagAPI.instance())}inject(e,t,r=i.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=i.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,l.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||d}}},397:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceAPI=void 0;let n=r(221),a=r(498),i=r(477),o=r(793),s=r(44),l="trace";t.TraceAPI=class e{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider,this.wrapSpanContext=i.wrapSpanContext,this.isSpanContextValid=i.isSpanContextValid,this.deleteSpan=o.deleteSpan,this.getSpan=o.getSpan,this.getActiveSpan=o.getActiveSpan,this.getSpanContext=o.getSpanContext,this.setSpan=o.setSpan,this.setSpanContext=o.setSpanContext}static getInstance(){return this._instance||(this._instance=new e),this._instance}setGlobalTracerProvider(e){let t=(0,n.registerGlobal)(l,this._proxyTracerProvider,s.DiagAPI.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return(0,n.getGlobal)(l)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(l,s.DiagAPI.instance()),this._proxyTracerProvider=new a.ProxyTracerProvider}}},398:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;let n=r(912),a=(0,r(23).createContextKey)("OpenTelemetry Baggage Key");function i(e){return e.getValue(a)||void 0}t.getBaggage=i,t.getActiveBaggage=function(){return i(n.ContextAPI.getInstance().active())},t.setBaggage=function(e,t){return e.setValue(a,t)},t.deleteBaggage=function(e){return e.deleteValue(a)}},152:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaggageImpl=void 0,t.BaggageImpl=class e{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map(([e,t])=>[e,t])}setEntry(t,r){let n=new e(this._entries);return n._entries.set(t,r),n}removeEntry(t){let r=new e(this._entries);return r._entries.delete(t),r}removeEntries(...t){let r=new e(this._entries);for(let e of t)r._entries.delete(e);return r}clear(){return new e}}},647:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataSymbol=void 0,t.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")},504:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataFromString=t.createBaggage=void 0;let n=r(44),a=r(152),i=r(647),o=n.DiagAPI.instance();t.createBaggage=function(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))},t.baggageEntryMetadataFromString=function(e){return"string"!=typeof e&&(o.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=""),{__TYPE__:i.baggageEntryMetadataSymbol,toString:()=>e}}},778:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.context=void 0,t.context=r(912).ContextAPI.getInstance()},108:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopContextManager=void 0;let n=r(23);t.NoopContextManager=class{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}},23:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ROOT_CONTEXT=t.createContextKey=void 0,t.createContextKey=function(e){return Symbol.for(e)},t.ROOT_CONTEXT=new class e{constructor(t){let r=this;r._currentContext=t?new Map(t):new Map,r.getValue=e=>r._currentContext.get(e),r.setValue=(t,n)=>{let a=new e(r._currentContext);return a._currentContext.set(t,n),a},r.deleteValue=t=>{let n=new e(r._currentContext);return n._currentContext.delete(t),n}}}},304:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.diag=void 0,t.diag=r(44).DiagAPI.instance()},757:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagComponentLogger=void 0;let n=r(221);function a(e,t,r){let a=(0,n.getGlobal)("diag");if(a)return r.unshift(t),a[e](...r)}t.DiagComponentLogger=class{constructor(e){this._namespace=e.namespace||"DiagComponentLogger"}debug(...e){return a("debug",this._namespace,e)}error(...e){return a("error",this._namespace,e)}info(...e){return a("info",this._namespace,e)}warn(...e){return a("warn",this._namespace,e)}verbose(...e){return a("verbose",this._namespace,e)}}},83:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagConsoleLogger=void 0;let r=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];t.DiagConsoleLogger=class{constructor(){for(let e=0;e<r.length;e++)this[r[e].n]=function(e){return function(...t){if(console){let r=console[e];if("function"!=typeof r&&(r=console.log),"function"==typeof r)return r.apply(console,t)}}}(r[e].c)}}},412:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createLogLevelDiagLogger=void 0;let n=r(711);t.createLogLevelDiagLogger=function(e,t){function r(r,n){let a=t[r];return"function"==typeof a&&e>=n?a.bind(t):function(){}}return e<n.DiagLogLevel.NONE?e=n.DiagLogLevel.NONE:e>n.DiagLogLevel.ALL&&(e=n.DiagLogLevel.ALL),t=t||{},{error:r("error",n.DiagLogLevel.ERROR),warn:r("warn",n.DiagLogLevel.WARN),info:r("info",n.DiagLogLevel.INFO),debug:r("debug",n.DiagLogLevel.DEBUG),verbose:r("verbose",n.DiagLogLevel.VERBOSE)}}},711:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.DiagLogLevel=void 0,(r=t.DiagLogLevel||(t.DiagLogLevel={}))[r.NONE=0]="NONE",r[r.ERROR=30]="ERROR",r[r.WARN=50]="WARN",r[r.INFO=60]="INFO",r[r.DEBUG=70]="DEBUG",r[r.VERBOSE=80]="VERBOSE",r[r.ALL=9999]="ALL"},221:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;let n=r(678),a=r(652),i=r(662),o=a.VERSION.split(".")[0],s=Symbol.for(`opentelemetry.js.api.${o}`),l=n._globalThis;t.registerGlobal=function(e,t,r,n=!1){var i;let o=l[s]=null!=(i=l[s])?i:{version:a.VERSION};if(!n&&o[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return r.error(t.stack||t.message),!1}if(o.version!==a.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${o.version} for ${e} does not match previously registered API v${a.VERSION}`);return r.error(t.stack||t.message),!1}return o[e]=t,r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`),!0},t.getGlobal=function(e){var t,r;let n=null==(t=l[s])?void 0:t.version;if(n&&(0,i.isCompatible)(n))return null==(r=l[s])?void 0:r[e]},t.unregisterGlobal=function(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);let r=l[s];r&&delete r[e]}},662:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCompatible=t._makeCompatibilityCheck=void 0;let n=r(652),a=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function i(e){let t=new Set([e]),r=new Set,n=e.match(a);if(!n)return()=>!1;let i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=i.prerelease)return function(t){return t===e};function o(e){return r.add(e),!1}return function(e){if(t.has(e))return!0;if(r.has(e))return!1;let n=e.match(a);if(!n)return o(e);let s={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=s.prerelease||i.major!==s.major)return o(e);if(0===i.major)return i.minor===s.minor&&i.patch<=s.patch?(t.add(e),!0):o(e);return i.minor<=s.minor?(t.add(e),!0):o(e)}}t._makeCompatibilityCheck=i,t.isCompatible=i(n.VERSION)},120:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.metrics=void 0,t.metrics=r(262).MetricsAPI.getInstance()},532:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ValueType=void 0,(r=t.ValueType||(t.ValueType={}))[r.INT=0]="INT",r[r.DOUBLE=1]="DOUBLE"},440:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class r{createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=r;class n{}t.NoopMetric=n;class a extends n{add(e,t){}}t.NoopCounterMetric=a;class i extends n{add(e,t){}}t.NoopUpDownCounterMetric=i;class o extends n{record(e,t){}}t.NoopHistogramMetric=o;class s{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=s;class l extends s{}t.NoopObservableCounterMetric=l;class u extends s{}t.NoopObservableGaugeMetric=u;class d extends s{}t.NoopObservableUpDownCounterMetric=d,t.NOOP_METER=new r,t.NOOP_COUNTER_METRIC=new a,t.NOOP_HISTOGRAM_METRIC=new o,t.NOOP_UP_DOWN_COUNTER_METRIC=new i,t.NOOP_OBSERVABLE_COUNTER_METRIC=new l,t.NOOP_OBSERVABLE_GAUGE_METRIC=new u,t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new d,t.createNoopMeter=function(){return t.NOOP_METER}},586:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;let n=r(440);class a{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=a,t.NOOP_METER_PROVIDER=new a},678:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(59),t)},460:(t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r._globalThis=void 0,r._globalThis="object"==typeof globalThis?globalThis:e.g},59:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(460),t)},27:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.propagation=void 0,t.propagation=r(25).PropagationAPI.getInstance()},19:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTextMapPropagator=void 0,t.NoopTextMapPropagator=class{inject(e,t){}extract(e,t){return e}fields(){return[]}}},92:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTextMapSetter=t.defaultTextMapGetter=void 0,t.defaultTextMapGetter={get(e,t){if(null!=e)return e[t]},keys:e=>null==e?[]:Object.keys(e)},t.defaultTextMapSetter={set(e,t,r){null!=e&&(e[t]=r)}}},816:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.trace=void 0,t.trace=r(397).TraceAPI.getInstance()},374:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonRecordingSpan=void 0;let n=r(546);t.NonRecordingSpan=class{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}},637:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracer=void 0;let n=r(912),a=r(793),i=r(374),o=r(477),s=n.ContextAPI.getInstance();t.NoopTracer=class{startSpan(e,t,r=s.active()){var n;if(null==t?void 0:t.root)return new i.NonRecordingSpan;let l=r&&(0,a.getSpanContext)(r);return"object"==typeof(n=l)&&"string"==typeof n.spanId&&"string"==typeof n.traceId&&"number"==typeof n.traceFlags&&(0,o.isSpanContextValid)(l)?new i.NonRecordingSpan(l):new i.NonRecordingSpan}startActiveSpan(e,t,r,n){let i,o,l;if(arguments.length<2)return;2==arguments.length?l=t:3==arguments.length?(i=t,l=r):(i=t,o=r,l=n);let u=null!=o?o:s.active(),d=this.startSpan(e,i,u),c=(0,a.setSpan)(u,d);return s.with(c,l,void 0,d)}}},76:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracerProvider=void 0;let n=r(637);t.NoopTracerProvider=class{getTracer(e,t,r){return new n.NoopTracer}}},779:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracer=void 0;let n=new(r(637)).NoopTracer;t.ProxyTracer=class{constructor(e,t,r,n){this._provider=e,this.name=t,this.version=r,this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){let a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):n}}},498:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracerProvider=void 0;let n=r(779),a=new(r(76)).NoopTracerProvider;t.ProxyTracerProvider=class{getTracer(e,t,r){var a;return null!=(a=this.getDelegateTracer(e,t,r))?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return null!=(e=this._delegate)?e:a}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return null==(n=this._delegate)?void 0:n.getTracer(e,t,r)}}},312:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.SamplingDecision=void 0,(r=t.SamplingDecision||(t.SamplingDecision={}))[r.NOT_RECORD=0]="NOT_RECORD",r[r.RECORD=1]="RECORD",r[r.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"},793:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;let n=r(23),a=r(374),i=r(912),o=(0,n.createContextKey)("OpenTelemetry Context Key SPAN");function s(e){return e.getValue(o)||void 0}function l(e,t){return e.setValue(o,t)}t.getSpan=s,t.getActiveSpan=function(){return s(i.ContextAPI.getInstance().active())},t.setSpan=l,t.deleteSpan=function(e){return e.deleteValue(o)},t.setSpanContext=function(e,t){return l(e,new a.NonRecordingSpan(t))},t.getSpanContext=function(e){var t;return null==(t=s(e))?void 0:t.spanContext()}},285:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceStateImpl=void 0;let n=r(240);t.TraceStateImpl=class e{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let r=this._clone();return r._internalState.has(e)&&r._internalState.delete(e),r._internalState.set(e,t),r}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+"="+this.get(t)),e),[]).join(",")}_parse(e){!(e.length>512)&&(this._internalState=e.split(",").reverse().reduce((e,t)=>{let r=t.trim(),a=r.indexOf("=");if(-1!==a){let i=r.slice(0,a),o=r.slice(a+1,t.length);(0,n.validateKey)(i)&&(0,n.validateValue)(o)&&e.set(i,o)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let t=new e;return t._internalState=new Map(this._internalState),t}}},240:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateValue=t.validateKey=void 0;let r="[_0-9a-z-*/]",n=`[a-z]${r}{0,255}`,a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`,i=RegExp(`^(?:${n}|${a})$`),o=/^[ -~]{0,255}[!-~]$/,s=/,|=/;t.validateKey=function(e){return i.test(e)},t.validateValue=function(e){return o.test(e)&&!s.test(e)}},87:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTraceState=void 0;let n=r(285);t.createTraceState=function(e){return new n.TraceStateImpl(e)}},546:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;let n=r(731);t.INVALID_SPANID="0000000000000000",t.INVALID_TRACEID="00000000000000000000000000000000",t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},613:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.SpanKind=void 0,(r=t.SpanKind||(t.SpanKind={}))[r.INTERNAL=0]="INTERNAL",r[r.SERVER=1]="SERVER",r[r.CLIENT=2]="CLIENT",r[r.PRODUCER=3]="PRODUCER",r[r.CONSUMER=4]="CONSUMER"},477:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;let n=r(546),a=r(374),i=/^([0-9a-f]{32})$/i,o=/^[0-9a-f]{16}$/i;function s(e){return i.test(e)&&e!==n.INVALID_TRACEID}function l(e){return o.test(e)&&e!==n.INVALID_SPANID}t.isValidTraceId=s,t.isValidSpanId=l,t.isSpanContextValid=function(e){return s(e.traceId)&&l(e.spanId)},t.wrapSpanContext=function(e){return new a.NonRecordingSpan(e)}},854:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.SpanStatusCode=void 0,(r=t.SpanStatusCode||(t.SpanStatusCode={}))[r.UNSET=0]="UNSET",r[r.OK=1]="OK",r[r.ERROR=2]="ERROR"},731:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.TraceFlags=void 0,(r=t.TraceFlags||(t.TraceFlags={}))[r.NONE=0]="NONE",r[r.SAMPLED=1]="SAMPLED"},652:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="1.6.0"}},I={};function S(e){var t=I[e];if(void 0!==t)return t.exports;var r=I[e]={exports:{}},n=!0;try{A[e].call(r.exports,r,r.exports,S),n=!1}finally{n&&delete I[e]}return r.exports}S.ab="/ROOT/node_modules/next/dist/compiled/@opentelemetry/api/";var $={};Object.defineProperty($,"__esModule",{value:!0}),$.trace=$.propagation=$.metrics=$.diag=$.context=$.INVALID_SPAN_CONTEXT=$.INVALID_TRACEID=$.INVALID_SPANID=$.isValidSpanId=$.isValidTraceId=$.isSpanContextValid=$.createTraceState=$.TraceFlags=$.SpanStatusCode=$.SpanKind=$.SamplingDecision=$.ProxyTracerProvider=$.ProxyTracer=$.defaultTextMapSetter=$.defaultTextMapGetter=$.ValueType=$.createNoopMeter=$.DiagLogLevel=$.DiagConsoleLogger=$.ROOT_CONTEXT=$.createContextKey=$.baggageEntryMetadataFromString=void 0,s=S(504),Object.defineProperty($,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return s.baggageEntryMetadataFromString}}),l=S(23),Object.defineProperty($,"createContextKey",{enumerable:!0,get:function(){return l.createContextKey}}),Object.defineProperty($,"ROOT_CONTEXT",{enumerable:!0,get:function(){return l.ROOT_CONTEXT}}),u=S(83),Object.defineProperty($,"DiagConsoleLogger",{enumerable:!0,get:function(){return u.DiagConsoleLogger}}),d=S(711),Object.defineProperty($,"DiagLogLevel",{enumerable:!0,get:function(){return d.DiagLogLevel}}),c=S(440),Object.defineProperty($,"createNoopMeter",{enumerable:!0,get:function(){return c.createNoopMeter}}),p=S(532),Object.defineProperty($,"ValueType",{enumerable:!0,get:function(){return p.ValueType}}),f=S(92),Object.defineProperty($,"defaultTextMapGetter",{enumerable:!0,get:function(){return f.defaultTextMapGetter}}),Object.defineProperty($,"defaultTextMapSetter",{enumerable:!0,get:function(){return f.defaultTextMapSetter}}),m=S(779),Object.defineProperty($,"ProxyTracer",{enumerable:!0,get:function(){return m.ProxyTracer}}),h=S(498),Object.defineProperty($,"ProxyTracerProvider",{enumerable:!0,get:function(){return h.ProxyTracerProvider}}),g=S(312),Object.defineProperty($,"SamplingDecision",{enumerable:!0,get:function(){return g.SamplingDecision}}),y=S(613),Object.defineProperty($,"SpanKind",{enumerable:!0,get:function(){return y.SpanKind}}),b=S(854),Object.defineProperty($,"SpanStatusCode",{enumerable:!0,get:function(){return b.SpanStatusCode}}),w=S(731),Object.defineProperty($,"TraceFlags",{enumerable:!0,get:function(){return w.TraceFlags}}),v=S(87),Object.defineProperty($,"createTraceState",{enumerable:!0,get:function(){return v.createTraceState}}),k=S(477),Object.defineProperty($,"isSpanContextValid",{enumerable:!0,get:function(){return k.isSpanContextValid}}),Object.defineProperty($,"isValidTraceId",{enumerable:!0,get:function(){return k.isValidTraceId}}),Object.defineProperty($,"isValidSpanId",{enumerable:!0,get:function(){return k.isValidSpanId}}),_=S(546),Object.defineProperty($,"INVALID_SPANID",{enumerable:!0,get:function(){return _.INVALID_SPANID}}),Object.defineProperty($,"INVALID_TRACEID",{enumerable:!0,get:function(){return _.INVALID_TRACEID}}),Object.defineProperty($,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return _.INVALID_SPAN_CONTEXT}}),r=S(778),Object.defineProperty($,"context",{enumerable:!0,get:function(){return r.context}}),n=S(304),Object.defineProperty($,"diag",{enumerable:!0,get:function(){return n.diag}}),a=S(120),Object.defineProperty($,"metrics",{enumerable:!0,get:function(){return a.metrics}}),i=S(27),Object.defineProperty($,"propagation",{enumerable:!0,get:function(){return i.propagation}}),o=S(816),Object.defineProperty($,"trace",{enumerable:!0,get:function(){return o.trace}}),$.default={context:r.context,diag:n.diag,metrics:a.metrics,propagation:i.propagation,trace:o.trace},t.exports=$})()}];
45
47
 
46
- //# sourceMappingURL=_0duxuj4kmjibl._.js.map
48
+ //# sourceMappingURL=_0nt4ifc48vl34._.js.map