watchbell 1.7.0 → 1.7.1

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 (756) 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/required-server-files.json +1 -1
  6. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +13 -13
  7. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +52 -51
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  10. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +12 -12
  11. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +52 -51
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  14. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +11 -11
  15. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +52 -51
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  18. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +14 -14
  19. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +52 -51
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  22. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +12 -12
  23. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +52 -51
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  26. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +21 -21
  27. package/server/.next/server/app/(console)/(private)/ai/models/page.js +52 -51
  28. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  30. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +11 -11
  31. package/server/.next/server/app/(console)/(private)/ai/page.js +52 -51
  32. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  34. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +14 -14
  35. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +52 -51
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  38. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +17 -17
  39. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +52 -51
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  42. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +12 -12
  43. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +52 -51
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  46. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +12 -12
  47. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +52 -51
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  50. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +11 -11
  51. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +52 -51
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  54. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +12 -12
  55. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +52 -51
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  58. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +27 -27
  59. package/server/.next/server/app/(console)/alerts/page.js +52 -51
  60. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  61. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  62. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +34 -34
  63. package/server/.next/server/app/(console)/apps/[id]/page.js +52 -51
  64. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  65. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  66. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +14 -14
  67. package/server/.next/server/app/(console)/apps/page.js +52 -51
  68. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  69. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  70. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +14 -14
  71. package/server/.next/server/app/(console)/backups/page.js +52 -51
  72. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  73. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  74. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +11 -11
  75. package/server/.next/server/app/(console)/catalog/page.js +52 -51
  76. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  77. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  78. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +22 -22
  79. package/server/.next/server/app/(console)/connections/page.js +52 -51
  80. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  81. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  82. package/server/.next/server/app/(console)/containers/page/server-reference-manifest.json +14 -14
  83. package/server/.next/server/app/(console)/containers/page.js +52 -51
  84. package/server/.next/server/app/(console)/containers/page.js.nft.json +1 -1
  85. package/server/.next/server/app/(console)/containers/page_client-reference-manifest.js +1 -1
  86. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +11 -11
  87. package/server/.next/server/app/(console)/d1/page.js +52 -51
  88. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  89. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  90. package/server/.next/server/app/(console)/deploy/page/server-reference-manifest.json +11 -11
  91. package/server/.next/server/app/(console)/deploy/page.js +52 -51
  92. package/server/.next/server/app/(console)/deploy/page.js.nft.json +1 -1
  93. package/server/.next/server/app/(console)/deploy/page_client-reference-manifest.js +1 -1
  94. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +19 -19
  95. package/server/.next/server/app/(console)/deployments/page.js +52 -51
  96. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  97. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  98. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +18 -18
  99. package/server/.next/server/app/(console)/dns/page.js +52 -51
  100. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  101. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  102. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +13 -13
  103. package/server/.next/server/app/(console)/domains/page.js +52 -51
  104. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  105. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  106. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +11 -11
  107. package/server/.next/server/app/(console)/events/page.js +52 -51
  108. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  109. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  110. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +18 -18
  111. package/server/.next/server/app/(console)/firebase/page.js +52 -51
  112. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  113. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  114. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +12 -12
  115. package/server/.next/server/app/(console)/logs/page.js +52 -51
  116. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  117. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  118. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +12 -12
  119. package/server/.next/server/app/(console)/manage/sections/page.js +52 -51
  120. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  121. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  122. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +22 -22
  123. package/server/.next/server/app/(console)/neon/page.js +52 -51
  124. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  125. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  126. package/server/.next/server/app/(console)/os/page/server-reference-manifest.json +12 -12
  127. package/server/.next/server/app/(console)/os/page.js +52 -51
  128. package/server/.next/server/app/(console)/os/page.js.nft.json +1 -1
  129. package/server/.next/server/app/(console)/os/page_client-reference-manifest.js +1 -1
  130. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +19 -19
  131. package/server/.next/server/app/(console)/overview/page.js +52 -51
  132. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  133. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  134. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js +5 -5
  135. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js.nft.json +1 -1
  136. package/server/.next/server/app/(console)/reports/page/server-reference-manifest.json +35 -15
  137. package/server/.next/server/app/(console)/reports/page.js +52 -51
  138. package/server/.next/server/app/(console)/reports/page.js.nft.json +1 -1
  139. package/server/.next/server/app/(console)/reports/page_client-reference-manifest.js +1 -1
  140. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +12 -12
  141. package/server/.next/server/app/(console)/repos/[id]/page.js +52 -51
  142. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  143. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  144. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +11 -11
  145. package/server/.next/server/app/(console)/repos/page.js +52 -51
  146. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  147. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  148. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +23 -23
  149. package/server/.next/server/app/(console)/settings/page.js +52 -51
  150. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  151. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  152. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +18 -18
  153. package/server/.next/server/app/(console)/sql/page.js +52 -51
  154. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  155. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  156. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +11 -11
  157. package/server/.next/server/app/(console)/status/page.js +52 -51
  158. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  159. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  160. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +30 -30
  161. package/server/.next/server/app/(console)/supabase/page.js +52 -51
  162. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  163. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  164. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +11 -11
  165. package/server/.next/server/app/(console)/topology/page.js +52 -51
  166. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  167. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  168. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +11 -11
  169. package/server/.next/server/app/(console)/turso/page.js +52 -51
  170. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  171. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  172. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +11 -11
  173. package/server/.next/server/app/(console)/upstash/page.js +52 -51
  174. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  175. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  176. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +25 -25
  177. package/server/.next/server/app/(console)/uptime/page.js +52 -51
  178. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  179. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  180. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +16 -16
  181. package/server/.next/server/app/(console)/welcome/page.js +52 -51
  182. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  183. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  184. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  185. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  186. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  187. package/server/.next/server/app/_global-error.html +1 -1
  188. package/server/.next/server/app/_global-error.rsc +2 -2
  189. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  190. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  191. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  192. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  193. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  194. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  195. package/server/.next/server/app/_not-found.html +1 -1
  196. package/server/.next/server/app/_not-found.rsc +3 -3
  197. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  198. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  199. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  200. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  201. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  202. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  203. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +8 -8
  204. package/server/.next/server/app/api/collect/route.js +59 -59
  205. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  206. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +8 -8
  207. package/server/.next/server/app/api/daily/route.js +66 -66
  208. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  209. package/server/.next/server/app/api/ping/[...parts]/route.js +1 -1
  210. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  211. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  212. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +8 -8
  213. package/server/.next/server/app/api/telegram/webhook/route.js +50 -49
  214. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  215. package/server/.next/server/app/api/v1/advice/route.js +9 -9
  216. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  217. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  218. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  219. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  220. package/server/.next/server/app/api/v1/ai/questions/route.js +8 -8
  221. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  222. package/server/.next/server/app/api/v1/mcp/route.js +7 -7
  223. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  224. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  225. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  226. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +10 -10
  227. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  228. package/server/.next/server/app/api/v1/status/route.js +10 -10
  229. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  230. package/server/.next/server/app/api/watchdog/route.js +4 -4
  231. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  232. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  233. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  234. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  235. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  236. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  237. package/server/.next/server/app/brand-icon/route.js +6 -6
  238. package/server/.next/server/app/brand-icon/route.js.nft.json +1 -1
  239. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  240. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  241. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  242. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  243. package/server/.next/server/app/mfa/page.js +27 -26
  244. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  245. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  246. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  247. package/server/.next/server/app/mfa/setup/page.js +27 -26
  248. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  249. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  250. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  251. package/server/.next/server/app/page.js.nft.json +1 -1
  252. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  253. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  254. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  255. package/server/.next/server/app/s/[slug]/page.js +1 -1
  256. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  257. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  258. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  259. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  260. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  261. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  262. package/server/.next/server/app/signin/page.js +25 -24
  263. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  264. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  265. package/server/.next/server/chunks/{[externals]__0oqc6ym5k457v._.js → [externals]__0ws552tlu2170._.js} +1 -1
  266. package/server/.next/server/chunks/{[externals]__1aervsuoo1qe_._.js → [externals]__14rgrk9t-kxa1._.js} +1 -1
  267. package/server/.next/server/chunks/{[externals]__1oag9t_9gex2-._.js → [externals]__1pdwh-htbnox8._.js} +1 -1
  268. package/server/.next/server/chunks/[root-of-the-server]__0-amtx67pqi56._.js +3 -0
  269. package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +1 -1
  270. package/server/.next/server/chunks/{[root-of-the-server]__0_2fr1g7uby1m._.js → [root-of-the-server]__01nlh4ps9u-65._.js} +2 -2
  271. package/server/.next/server/chunks/{[root-of-the-server]__016wnct3b5iby._.js → [root-of-the-server]__01ur0kf75ampv._.js} +2 -2
  272. package/server/.next/server/chunks/{[root-of-the-server]__0ra_bw8zg6kmk._.js → [root-of-the-server]__028m_6oqyqmyy._.js} +2 -2
  273. package/server/.next/server/chunks/[root-of-the-server]__02v25dn1cwxz6._.js +1 -1
  274. package/server/.next/server/chunks/{[root-of-the-server]__1hcn00gn9mapd._.js → [root-of-the-server]__02wzui3ksepqf._.js} +2 -2
  275. package/server/.next/server/chunks/[root-of-the-server]__0326wv5xmnp48._.js +3 -0
  276. package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
  277. package/server/.next/server/chunks/{[root-of-the-server]__0tsly874_mafr._.js → [root-of-the-server]__03537tx7cun49._.js} +2 -2
  278. package/server/.next/server/chunks/{[root-of-the-server]__1p1e6x-mb7ro2._.js → [root-of-the-server]__0400g-0wvq3uf._.js} +2 -2
  279. package/server/.next/server/chunks/[root-of-the-server]__04htuwoulmp21._.js +3 -0
  280. package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +1 -1
  281. package/server/.next/server/chunks/{[root-of-the-server]__0ux78ppoct5b_._.js → [root-of-the-server]__06bn4cfh-g8-d._.js} +2 -2
  282. package/server/.next/server/chunks/{[root-of-the-server]__1ia-rts7ilt7c._.js → [root-of-the-server]__06ty1ktg427pm._.js} +2 -2
  283. package/server/.next/server/chunks/{[root-of-the-server]__0afpn-tk2qlu0._.js → [root-of-the-server]__076yrld-lo25r._.js} +2 -2
  284. package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +1 -1
  285. package/server/.next/server/chunks/{[root-of-the-server]__0xnag1k7mnvoh._.js → [root-of-the-server]__081k4lp976vd7._.js} +2 -2
  286. package/server/.next/server/chunks/[root-of-the-server]__08i6b8tzxads4._.js +3 -0
  287. package/server/.next/server/chunks/[root-of-the-server]__09oipjf2ew_pn._.js +3 -0
  288. package/server/.next/server/chunks/{[root-of-the-server]__1-bbb_srnbm5x._.js → [root-of-the-server]__0_c_c1bv7sopk._.js} +1 -1
  289. package/server/.next/server/chunks/{[root-of-the-server]__0mg6rmq22tf26._.js → [root-of-the-server]__0a34twsor45ml._.js} +1 -1
  290. package/server/.next/server/chunks/{[root-of-the-server]__07gjmfv5mi33j._.js → [root-of-the-server]__0bjh2kw90a-m_._.js} +1 -1
  291. package/server/.next/server/chunks/{[root-of-the-server]__0pm83e1a3wwlw._.js → [root-of-the-server]__0c41pzboxtjvz._.js} +1 -1
  292. package/server/.next/server/chunks/{[root-of-the-server]__0ng-t81zeeipc._.js → [root-of-the-server]__0dahxh87cvyn2._.js} +2 -2
  293. package/server/.next/server/chunks/[root-of-the-server]__0dd4hulw1w-4i._.js +3 -0
  294. package/server/.next/server/chunks/{[root-of-the-server]__0nyxfjn368366._.js → [root-of-the-server]__0dfkxg4ax2hqz._.js} +1 -1
  295. package/server/.next/server/chunks/[root-of-the-server]__0e3hcgbyb09-p._.js +3 -0
  296. package/server/.next/server/chunks/{[root-of-the-server]__0gv3v5775wfmw._.js → [root-of-the-server]__0fk1609_5zg7g._.js} +2 -2
  297. package/server/.next/server/chunks/[root-of-the-server]__0fl1uspuemkzr._.js +3 -0
  298. package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +1 -1
  299. package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +1 -1
  300. package/server/.next/server/chunks/{[root-of-the-server]__0jz91oppmwtiq._.js → [root-of-the-server]__0hm5-0_rh9r6m._.js} +2 -2
  301. package/server/.next/server/chunks/{[root-of-the-server]__1qelr0qe50xap._.js → [root-of-the-server]__0hwm4j4o2v8nc._.js} +2 -2
  302. package/server/.next/server/chunks/[root-of-the-server]__0k73a-s2lcpoz._.js +3 -0
  303. package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +1 -1
  304. package/server/.next/server/chunks/{[root-of-the-server]__0jevd1p5unnre._.js → [root-of-the-server]__0kzgu06ee59vd._.js} +2 -2
  305. package/server/.next/server/chunks/[root-of-the-server]__0mrbo2p5fy4ji._.js +3 -0
  306. package/server/.next/server/chunks/[root-of-the-server]__0nw8jgr3bsi8b._.js +3 -0
  307. package/server/.next/server/chunks/{[root-of-the-server]__0g0-q56cumuup._.js → [root-of-the-server]__0o4e39mvq8_el._.js} +1 -1
  308. package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +1 -1
  309. package/server/.next/server/chunks/{[root-of-the-server]__1le7r_1_00km1._.js → [root-of-the-server]__0opds07bp1fnb._.js} +2 -2
  310. package/server/.next/server/chunks/{[root-of-the-server]__070v8547b4qpa._.js → [root-of-the-server]__0pfcnbr0br6li._.js} +1 -1
  311. package/server/.next/server/chunks/{[root-of-the-server]__1-9vvc9y0qqhf._.js → [root-of-the-server]__0pi9id-ywuq6g._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__0aazgg7203ez1._.js → [root-of-the-server]__0s3zxs-_ayd-6._.js} +1 -1
  313. package/server/.next/server/chunks/{[root-of-the-server]__0eyd4kffoz9ex._.js → [root-of-the-server]__0sgy49rgsxyvy._.js} +1 -1
  314. package/server/.next/server/chunks/[root-of-the-server]__0sp5xoed3-994._.js +3 -0
  315. package/server/.next/server/chunks/{[root-of-the-server]__03y8yvaulshnn._.js → [root-of-the-server]__0swji6flwxtbv._.js} +2 -2
  316. package/server/.next/server/chunks/{[root-of-the-server]__0p_rkszoindlf._.js → [root-of-the-server]__0tyilr06jn8nb._.js} +1 -1
  317. package/server/.next/server/chunks/[root-of-the-server]__0uss50b85q1j1._.js +3 -0
  318. package/server/.next/server/chunks/{[root-of-the-server]__0w1iqt-rpp_3h._.js → [root-of-the-server]__0vco1v37du1ez._.js} +1 -1
  319. package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
  320. package/server/.next/server/chunks/{[root-of-the-server]__05s9-538s47_e._.js → [root-of-the-server]__0w_hiz5nrm8-4._.js} +1 -1
  321. package/server/.next/server/chunks/[root-of-the-server]__0xzl28izr2tiq._.js +3 -0
  322. package/server/.next/server/chunks/[root-of-the-server]__0xzreqng-t2g8._.js +3 -0
  323. package/server/.next/server/chunks/{[root-of-the-server]__0b7xflnrk4amk._.js → [root-of-the-server]__0z9of310ruzug._.js} +2 -2
  324. package/server/.next/server/chunks/[root-of-the-server]__0zu1odpvrptrt._.js +3 -0
  325. package/server/.next/server/chunks/{[root-of-the-server]__14cb1pomeg0x7._.js → [root-of-the-server]__1-3u16rnk101p._.js} +2 -2
  326. package/server/.next/server/chunks/[root-of-the-server]__1-pe9ipc3y6rn._.js +3 -0
  327. package/server/.next/server/chunks/[root-of-the-server]__1-tqm3jzny4zd._.js +3 -0
  328. package/server/.next/server/chunks/{[root-of-the-server]__1mqv7anx5l3yq._.js → [root-of-the-server]__108g59p2fl8tw._.js} +2 -2
  329. package/server/.next/server/chunks/[root-of-the-server]__12_wmn5mkj9v7._.js +3 -0
  330. package/server/.next/server/chunks/{[root-of-the-server]__0vuirlylhcyzm._.js → [root-of-the-server]__12bo9op0qkw9d._.js} +2 -2
  331. package/server/.next/server/chunks/{[root-of-the-server]__0p955ekgdwy_c._.js → [root-of-the-server]__12tontjm90s-j._.js} +2 -2
  332. package/server/.next/server/chunks/[root-of-the-server]__13-qqkdecmwba._.js +1 -1
  333. package/server/.next/server/chunks/{[root-of-the-server]__1qxm3lqqdbyy7._.js → [root-of-the-server]__140ixflf83vxj._.js} +2 -2
  334. package/server/.next/server/chunks/{[root-of-the-server]__1qqdsrhuw0z-w._.js → [root-of-the-server]__152e1b97gc8hw._.js} +2 -2
  335. package/server/.next/server/chunks/[root-of-the-server]__153lxhkj8-_vf._.js +3 -0
  336. package/server/.next/server/chunks/{[root-of-the-server]__1rusbj8ktmzj0._.js → [root-of-the-server]__15tr3yx8k9lyt._.js} +2 -2
  337. package/server/.next/server/chunks/{[root-of-the-server]__029099rqwqwff._.js → [root-of-the-server]__16-0nul8mfe2m._.js} +2 -2
  338. package/server/.next/server/chunks/{[root-of-the-server]__0qhyj1r9qcxp3._.js → [root-of-the-server]__172vz80sdr5ny._.js} +2 -2
  339. package/server/.next/server/chunks/[root-of-the-server]__177l2p7kcj-16._.js +1 -1
  340. package/server/.next/server/chunks/{[root-of-the-server]__0u4o6oo428rvf._.js → [root-of-the-server]__17bz0jxsns742._.js} +2 -2
  341. package/server/.next/server/chunks/{[root-of-the-server]__1gl0-1oziw-g0._.js → [root-of-the-server]__17jjm80vttqmq._.js} +2 -2
  342. package/server/.next/server/chunks/{[root-of-the-server]__1pu84qy7loc8o._.js → [root-of-the-server]__18eqxi2vwpdjm._.js} +2 -2
  343. package/server/.next/server/chunks/[root-of-the-server]__194y_mcnn0zs3._.js +3 -0
  344. package/server/.next/server/chunks/[root-of-the-server]__1_iy7tzpesarf._.js +1 -1
  345. package/server/.next/server/chunks/[root-of-the-server]__1_vfu21n1zq17._.js +3 -0
  346. package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +1 -1
  347. package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +1 -1
  348. package/server/.next/server/chunks/[root-of-the-server]__1cy1k8jbwoull._.js +3 -0
  349. package/server/.next/server/chunks/[root-of-the-server]__1d4wmw2wohveb._.js +3 -0
  350. package/server/.next/server/chunks/{[root-of-the-server]__02ctwy1u4z3fj._.js → [root-of-the-server]__1dp_mz2p02ze6._.js} +2 -2
  351. package/server/.next/server/chunks/{[root-of-the-server]__11yn1ky7yixd7._.js → [root-of-the-server]__1eng6c6q52y-6._.js} +2 -2
  352. package/server/.next/server/chunks/[root-of-the-server]__1etg41llk7f09._.js +3 -0
  353. package/server/.next/server/chunks/[root-of-the-server]__1f-rkijnm8me7._.js +3 -0
  354. package/server/.next/server/chunks/{[root-of-the-server]__0t6rge6laz89-._.js → [root-of-the-server]__1gfuhug61s-qy._.js} +2 -2
  355. package/server/.next/server/chunks/{[root-of-the-server]__1ywvdsk_bmws0._.js → [root-of-the-server]__1git7o20yf9nn._.js} +2 -2
  356. package/server/.next/server/chunks/[root-of-the-server]__1h496oc8wu4s6._.js +3 -0
  357. package/server/.next/server/chunks/[root-of-the-server]__1hertcbqi_w97._.js +3 -0
  358. package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +1 -1
  359. package/server/.next/server/chunks/[root-of-the-server]__1j-nkcwy3w6sy._.js +3 -0
  360. package/server/.next/server/chunks/[root-of-the-server]__1jcr8cc_tlvfc._.js +1 -1
  361. package/server/.next/server/chunks/[root-of-the-server]__1l3uz57-1a35s._.js +3 -0
  362. package/server/.next/server/chunks/[root-of-the-server]__1l9pn8y-o6xyp._.js +3 -0
  363. package/server/.next/server/chunks/[root-of-the-server]__1lp_rypkkdjp9._.js +3 -0
  364. package/server/.next/server/chunks/[root-of-the-server]__1m-z1ne4p7pi5._.js +3 -0
  365. package/server/.next/server/chunks/{[root-of-the-server]__12w6gylk59cym._.js → [root-of-the-server]__1ma2tpf6wh9p6._.js} +2 -2
  366. package/server/.next/server/chunks/[root-of-the-server]__1nohrxjajgm5c._.js +3 -0
  367. package/server/.next/server/chunks/[root-of-the-server]__1o2km61kftkj1._.js +3 -0
  368. package/server/.next/server/chunks/[root-of-the-server]__1pn773t93gvn-._.js +3 -0
  369. package/server/.next/server/chunks/[root-of-the-server]__1q0h-x-7ob6cu._.js +3 -0
  370. package/server/.next/server/chunks/[root-of-the-server]__1q2e13halne9s._.js +3 -0
  371. package/server/.next/server/chunks/[root-of-the-server]__1q7xy_u4inf4h._.js +3 -0
  372. package/server/.next/server/chunks/[root-of-the-server]__1qtorf4s2dfeg._.js +3 -0
  373. package/server/.next/server/chunks/[root-of-the-server]__1sm4p209f_yie._.js +3 -0
  374. package/server/.next/server/chunks/[root-of-the-server]__1uhgqik99k1y6._.js +3 -0
  375. package/server/.next/server/chunks/[root-of-the-server]__1uq4f0bdphqs2._.js +3 -0
  376. package/server/.next/server/chunks/{[root-of-the-server]__1gufo2kz88z04._.js → [root-of-the-server]__1usilhckla3wj._.js} +1 -1
  377. package/server/.next/server/chunks/[root-of-the-server]__1v_8mu8mt1n5i._.js +3 -0
  378. package/server/.next/server/chunks/{[root-of-the-server]__1yk1psrx0yy4n._.js → [root-of-the-server]__1vtlx_63lj4tg._.js} +2 -2
  379. package/server/.next/server/chunks/[root-of-the-server]__1wxj0f-l93gkh._.js +3 -0
  380. package/server/.next/server/chunks/[root-of-the-server]__1x4u0cdsl_81t._.js +1 -1
  381. package/server/.next/server/chunks/{[root-of-the-server]__1lvf4tk_1td0a._.js → [root-of-the-server]__1x7en4waq21dd._.js} +2 -2
  382. package/server/.next/server/chunks/[root-of-the-server]__1xzg_370-w-6t._.js +3 -0
  383. package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +1 -1
  384. package/server/.next/server/chunks/_01epotkqa90nv._.js +1 -1
  385. package/server/.next/server/chunks/_03wces6vk33l0._.js +3 -0
  386. package/server/.next/server/chunks/_08q7x7rdbiaql._.js +9 -9
  387. package/server/.next/server/chunks/_09iin0yvuppj0._.js +3 -0
  388. package/server/.next/server/chunks/{_1w9di5m91vtjk._.js → _0buibatfr6-k_._.js} +3 -3
  389. package/server/.next/server/chunks/_0d29nzne5jrwy._.js +9 -9
  390. package/server/.next/server/chunks/{_1txqs5b7jg9so._.js → _0hekve2tk2eyv._.js} +3 -3
  391. package/server/.next/server/chunks/_0huryxihjw6tl._.js +9 -9
  392. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  393. package/server/.next/server/chunks/_0ou2tylxx1ltw._.js +2 -2
  394. package/server/.next/server/chunks/{_0lboyl6w4kfx4._.js → _0s_2fgaxby9fy._.js} +3 -3
  395. package/server/.next/server/chunks/_0z4b07-oa6ms9._.js +3 -0
  396. package/server/.next/server/chunks/_10mj3f1wis1ld._.js +1 -1
  397. package/server/.next/server/chunks/_139_9h76gakgh._.js +3 -0
  398. package/server/.next/server/chunks/_14jiq00zwwqdl._.js +3 -0
  399. package/server/.next/server/chunks/_15f0c7f46zkh3._.js +1 -1
  400. package/server/.next/server/chunks/_1e4rch26scbhq._.js +9 -9
  401. package/server/.next/server/chunks/_1iunyzyr-tfdj._.js +9 -9
  402. package/server/.next/server/chunks/_1jor4_sz1x8mt._.js +3 -0
  403. package/server/.next/server/chunks/_1m3zrm9-rc926._.js +3 -0
  404. package/server/.next/server/chunks/_1mwwg18ni-phb._.js +3 -0
  405. package/server/.next/server/chunks/_1ohb_bmawpjlz._.js +2 -2
  406. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  407. package/server/.next/server/chunks/src_0071b0w5aco6_._.js +3 -0
  408. package/server/.next/server/chunks/src_1-6a00bmwlymu._.js +3 -0
  409. package/server/.next/server/chunks/src_1-dy6ie3_ezvm._.js +3 -0
  410. package/server/.next/server/chunks/{src_1s913pql1_n-f._.js → src_13ij0feyzy7me._.js} +2 -2
  411. package/server/.next/server/chunks/{src_1_y0pxtbr6e04._.js → src_14vh1kj98t0xu._.js} +2 -2
  412. package/server/.next/server/chunks/src_1_s_jyur8tzy3._.js +3 -0
  413. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  414. package/server/.next/server/chunks/src_1dio7z4_so000._.js +3 -0
  415. package/server/.next/server/chunks/src_1hpbxjbqlnuob._.js +3 -0
  416. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  417. package/server/.next/server/chunks/{src_1mwttl5ainte0._.js → src_20eae99bkrgpt._.js} +2 -2
  418. package/server/.next/server/chunks/src_lib_0-fln6xaazo-9._.js +12 -0
  419. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
  420. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  421. package/server/.next/server/chunks/src_lib_0pyyxm3m1rttg._.js +1 -1
  422. package/server/.next/server/chunks/src_lib_13irheo9qqhgx._.js +1 -1
  423. package/server/.next/server/chunks/src_lib_1jlvdx5ho171c._.js +12 -0
  424. package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  425. package/server/.next/server/chunks/src_lib_branding_ts_03ns4y_8z0-6e._.js +1 -1
  426. package/server/.next/server/chunks/src_lib_branding_ts_0jfv9nur5alvy._.js +1 -1
  427. package/server/.next/server/chunks/src_lib_collector_auth_ts_0lqx92__e4zij._.js +4 -4
  428. package/server/.next/server/chunks/src_lib_data_report-db_ts_0b5f4dpxn08gk._.js +1 -1
  429. package/server/.next/server/chunks/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +4 -4
  430. package/server/.next/server/chunks/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  431. package/server/.next/server/chunks/src_lib_data_settings-db_ts_2060-w9nbvitr._.js +3 -0
  432. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +8 -8
  433. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +1 -1
  434. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +1 -1
  435. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +1 -1
  436. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  437. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  438. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  439. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  440. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  441. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  442. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  443. package/server/.next/server/chunks/ssr/{[externals]__0byytapt83qke._.js → [externals]__1299yq-rye4ww._.js} +1 -1
  444. package/server/.next/server/chunks/ssr/{[externals]__1baveo0r8_hf1._.js → [externals]__134px-n77ygse._.js} +1 -1
  445. package/server/.next/server/chunks/ssr/{[externals]__02peoq6kft9oz._.js → [externals]__1s9zy_6f7xfd5._.js} +1 -1
  446. package/server/.next/server/chunks/ssr/{[externals]__0gb_9a2m3eqk5._.js → [externals]__1t5grpj1lrsbr._.js} +1 -1
  447. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  448. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1pr-neo8jutji._.js → [root-of-the-server]__03iw2anbe7pxg._.js} +2 -2
  449. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1_axyb404w3bf._.js → [root-of-the-server]__059q8f4tia03z._.js} +2 -2
  450. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05uxv6qwfpp79._.js → [root-of-the-server]__05ot6j41b9i8j._.js} +2 -2
  451. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  452. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12c2r19g75dyy._.js → [root-of-the-server]__0_wsm-adqpmgy._.js} +1 -1
  453. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1_q3kww244pif._.js → [root-of-the-server]__0buxkrf7nrji8._.js} +2 -2
  454. package/server/.next/server/chunks/ssr/{[root-of-the-server]__041mpme_x36vq._.js → [root-of-the-server]__0f6ao2fs70kab._.js} +1 -1
  455. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0rrnk3_fb0l_9._.js → [root-of-the-server]__0f8ibnqfh_mp0._.js} +2 -2
  456. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h8-rlmhjyebb._.js +3 -0
  457. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  458. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kejvdc7h-pgz._.js +3 -0
  459. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  460. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1ev5rocipbkjw._.js → [root-of-the-server]__0kjdpn_g9gvwr._.js} +2 -2
  461. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  462. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1z_pt3d8lty_n._.js → [root-of-the-server]__0msczl_qf2eml._.js} +2 -2
  463. package/server/.next/server/chunks/ssr/[root-of-the-server]__0mvauw9r_4qss._.js +1 -1
  464. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  465. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  466. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1xkfr7qk7oxjf._.js → [root-of-the-server]__0s9z1kusbxvae._.js} +2 -2
  467. package/server/.next/server/chunks/ssr/{[root-of-the-server]__13x0qmv4fm_1p._.js → [root-of-the-server]__0wlctoz_-yuyh._.js} +1 -1
  468. package/server/.next/server/chunks/ssr/[root-of-the-server]__0y6psx1_d7fkt._.js +3 -0
  469. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1zsqu1mecqptt._.js → [root-of-the-server]__0yr0heg1b0y5t._.js} +2 -2
  470. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1z3vauqrf2l-_._.js → [root-of-the-server]__0yvm5q_auexh3._.js} +2 -2
  471. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0qhbs-or7q-om._.js → [root-of-the-server]__0zgo5h9mstjc8._.js} +1 -1
  472. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mbb917mrz5c-._.js → [root-of-the-server]__107qfgl2c58q0._.js} +1 -1
  473. package/server/.next/server/chunks/ssr/[root-of-the-server]__10ahcnczmy5hx._.js +3 -0
  474. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1n-rcmbkk7duv._.js → [root-of-the-server]__12cdcpj45tu6j._.js} +2 -2
  475. package/server/.next/server/chunks/ssr/[root-of-the-server]__18dcfrlpoapw9._.js +1 -1
  476. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  477. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1k8mxdm-cxfg_._.js → [root-of-the-server]__1a3_aiqflmt4f._.js} +2 -2
  478. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0vqae5m2ntd34._.js → [root-of-the-server]__1brzt_134_2iy._.js} +2 -2
  479. package/server/.next/server/chunks/ssr/[root-of-the-server]__1g6kynby65m0v._.js +1 -1
  480. package/server/.next/server/chunks/ssr/[root-of-the-server]__1sw2q1p1t59y8._.js +1 -1
  481. package/server/.next/server/chunks/ssr/[root-of-the-server]__1t9_ue4abugtn._.js +3 -0
  482. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  483. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vgliw2256_6l._.js +1 -1
  484. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1gkcoq0cmmax1._.js → [root-of-the-server]__1zki66ic3cluq._.js} +2 -2
  485. package/server/.next/server/chunks/ssr/_008i8a0_8skrp._.js +1 -1
  486. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  487. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  488. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  489. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  490. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  491. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  492. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  493. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  494. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  495. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  496. package/server/.next/server/chunks/ssr/_0gmw45sb1llld._.js +1 -1
  497. package/server/.next/server/chunks/ssr/_0hqya_yuov5jw._.js +1 -1
  498. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  499. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  500. package/server/.next/server/chunks/ssr/_0iy27gi4y9-fe._.js +1 -1
  501. package/server/.next/server/chunks/ssr/{_0xkl4rb1wydtd._.js → _0k6kbi721s28p._.js} +2 -2
  502. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  503. package/server/.next/server/chunks/ssr/_0kk0of-t4vhyh._.js +1 -1
  504. package/server/.next/server/chunks/ssr/{_0lg6_we0pe3nk._.js → _0l0eho21fo-8l._.js} +2 -2
  505. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  506. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  507. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  508. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  509. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  510. package/server/.next/server/chunks/ssr/_0uz60lk-7e_cj._.js +2 -2
  511. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  512. package/server/.next/server/chunks/ssr/{_1ge8mluhma23o._.js → _0x4ybc829r3ta._.js} +2 -2
  513. package/server/.next/server/chunks/ssr/_0xmud7u5hdnqu._.js +2 -2
  514. package/server/.next/server/chunks/ssr/_1-4401bfn50mf._.js +1 -1
  515. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  516. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  517. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  518. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  519. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  520. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  521. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  522. package/server/.next/server/chunks/ssr/{_0kq3wqx86yyhb._.js → _1cdlzhw6tkrhd._.js} +2 -2
  523. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  524. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  525. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  526. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  527. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  528. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  529. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  530. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  531. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  532. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  533. package/server/.next/server/chunks/ssr/_1ong0a252wcvc._.js +8 -8
  534. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  535. package/server/.next/server/chunks/ssr/_1q3fi6a4gklq6._.js +1 -1
  536. package/server/.next/server/chunks/ssr/_1ul3og9l7vp32._.js +2 -2
  537. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  538. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  539. package/server/.next/server/chunks/ssr/{_170okt24rw1yx._.js → _1zsfeuyrhcwmh._.js} +2 -2
  540. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  541. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  542. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  543. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_1myo_rodrlg3a.js +2 -2
  544. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  545. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  546. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_containers_page_actions_1ainjsbrnl360.js +1 -1
  547. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  548. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  549. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  550. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  551. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  552. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1363m-cfkgyvr.js +1 -1
  553. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  554. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  555. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  556. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  557. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1q6iypbn6yagc._.js → src_000iv6actp3t_._.js} +2 -2
  558. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  559. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  560. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  561. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  562. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +1 -1
  563. package/server/.next/server/chunks/ssr/src_0ovx2ogvlz2eh._.js +1 -1
  564. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  565. package/server/.next/server/chunks/ssr/{src_18ofj2_oxqb0g._.js → src_0torilf0s7p-e._.js} +2 -2
  566. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  567. package/server/.next/server/chunks/ssr/{src_1ldp01vcphvw5._.js → src_1_b884ul0envr._.js} +2 -2
  568. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  569. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  570. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  571. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  572. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  573. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  574. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  575. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  576. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  577. package/server/.next/server/chunks/ssr/{src_app_(console)_0eh38ymzn-s-m._.js → src_app_(console)_0e1l3e9r_60s4._.js} +2 -2
  578. package/server/.next/server/chunks/ssr/{src_app_(console)_03s-e0b0zsqqr._.js → src_app_(console)_124kgxvmqm7j4._.js} +2 -2
  579. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -2
  580. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_08in-j3xp5mbn._.js +1 -1
  581. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  582. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  583. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  584. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  585. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  586. package/server/.next/server/chunks/ssr/src_app_(console)_containers_containers-view_tsx_1xkcrw5gx53xo._.js +1 -1
  587. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  588. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  589. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  590. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  591. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  592. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  593. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  594. package/server/.next/server/chunks/ssr/src_app_(console)_os_os-view_tsx_0xr69f5vtstls._.js +1 -1
  595. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  596. package/server/.next/server/chunks/ssr/src_app_(console)_reports_reports-view_tsx_1l0apba6g810q._.js +1 -1
  597. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  598. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  599. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  600. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
  601. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  602. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  603. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  604. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  605. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  606. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  607. package/server/.next/server/chunks/ssr/src_app_signin_1_sp0qx8_z7c9._.js +1 -1
  608. package/server/.next/server/chunks/ssr/{src_app_signin_1-h17es4-y1-k._.js → src_app_signin_1qq0_77_vdutm._.js} +2 -2
  609. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  610. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
  611. package/server/.next/server/chunks/ssr/src_lib_0jnv54-8idu07._.js +1 -1
  612. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
  613. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  614. package/server/.next/server/chunks/ssr/src_lib_branding_ts_03ns4y_8z0-6e._.js +1 -1
  615. package/server/.next/server/chunks/ssr/src_lib_branding_ts_1p22ju9pii41w._.js +3 -0
  616. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +1 -1
  617. package/server/.next/server/chunks/ssr/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +2 -2
  618. package/server/.next/server/chunks/ssr/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  619. package/server/.next/server/chunks/ssr/{src_lib_demo_0r3c3k5102jja._.js → src_lib_demo_03sepqqjq9usk._.js} +2 -2
  620. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +5 -5
  621. package/server/.next/server/chunks/ssr/src_lib_view_usage_ts_1h1tj0m3n2vul._.js +1 -1
  622. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  623. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  624. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  625. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  626. package/server/.next/server/middleware-build-manifest.js +3 -3
  627. package/server/.next/server/pages/404.html +1 -1
  628. package/server/.next/server/pages/500.html +1 -1
  629. package/server/.next/server/preview-props.json +3 -3
  630. package/server/.next/server/server-reference-manifest.js +1 -1
  631. package/server/.next/server/server-reference-manifest.json +178 -158
  632. package/server/.next/static/chunks/{2co8kv2tj776w.js → 0-v128fmc05bf.js} +1 -1
  633. package/server/.next/static/chunks/{1416wraxs5p8g.js → 02db293pqegsb.js} +1 -1
  634. package/server/.next/static/chunks/{2i5_2zcei6rqr.js → 03t36gu4t__cw.js} +1 -1
  635. package/server/.next/static/chunks/{3bvj3-0xltkjo.js → 07p13q6tuqr2r.js} +1 -1
  636. package/server/.next/static/chunks/{3ic9vbadne9of.js → 09qtiybhnydd3.js} +1 -1
  637. package/server/.next/static/chunks/{2txgb9zusks-w.js → 0_5leiwhgv7d6.js} +1 -1
  638. package/server/.next/static/chunks/{1nv_9c1bate-f.js → 0_ebioh9utve_.js} +1 -1
  639. package/server/.next/static/chunks/{1_uuog1-u6y0t.js → 0_hd-kx6h59a8.js} +1 -1
  640. package/server/.next/static/chunks/{2azwg3my8wh40.js → 0if7r4ximmzwb.js} +1 -1
  641. package/server/.next/static/chunks/{2n198u7xx1koh.js → 0ohm_qoe5thrr.js} +1 -1
  642. package/server/.next/static/chunks/0ssmmtio659vh.js +1 -0
  643. package/server/.next/static/chunks/{07_cb192ydsaj.js → 0t0igs6uqhbf0.js} +1 -1
  644. package/server/.next/static/chunks/{0zwq-z8jt5hpz.js → 0ut06v9sng9g4.js} +1 -1
  645. package/server/.next/static/chunks/{0s00_-em3cj00.js → 0w--mj7tf-9f-.js} +1 -1
  646. package/server/.next/static/chunks/131egbz-4xsjl.js +1 -0
  647. package/server/.next/static/chunks/{3ic7ri5b4ifjp.js → 14dbn6_jif37v.js} +2 -2
  648. package/server/.next/static/chunks/{1vt_t7dg_-pyu.js → 15l58okvbrc4_.js} +1 -1
  649. package/server/.next/static/chunks/{378ttzg87hows.js → 1_nuygyg_kes5.js} +2 -2
  650. package/server/.next/static/chunks/{3-us-wg44ohoc.js → 1bsq3x1wh49bp.js} +1 -1
  651. package/server/.next/static/chunks/{3n98m8tj20wcf.js → 1esunqtpnjwkw.js} +1 -1
  652. package/server/.next/static/chunks/{1j_hduntj28ij.js → 1gizey8idqrkt.js} +1 -1
  653. package/server/.next/static/chunks/{0gxxyq5l_0rp2.js → 1itgjll79qm1l.js} +1 -1
  654. package/server/.next/static/chunks/{3dktq-qmj2q5b.js → 1o27sfcuph25w.js} +1 -1
  655. package/server/.next/static/chunks/{31fs88f_h861n.js → 1pz19kzjaj8uw.js} +1 -1
  656. package/server/.next/static/chunks/{0a9mqrzg8420n.js → 1qzun1-bna-sy.js} +1 -1
  657. package/server/.next/static/chunks/{3mgd5b39ghc-w.js → 1ugo5ye01racz.js} +1 -1
  658. package/server/.next/static/chunks/{2gk24b05q4q57.js → 1z5s55o29xqyu.js} +1 -1
  659. package/server/.next/static/chunks/21gu7xcv8ix3_.js +1 -0
  660. package/server/.next/static/chunks/{3aglnkhgcl_kq.js → 21p4xz6ysy8mv.js} +1 -1
  661. package/server/.next/static/chunks/{0ynyx3s7s4mv7.js → 22bdke6t-doqh.js} +1 -1
  662. package/server/.next/static/chunks/{1nqpnndfmw0tc.js → 28ljlwfuuz5a1.js} +1 -1
  663. package/server/.next/static/chunks/29lr_ae0uli9o.js +1 -0
  664. package/server/.next/static/chunks/{1yyigrxptb7jm.js → 2jkqfajf-i0r6.js} +2 -2
  665. package/server/.next/static/chunks/{2sr03gtef27q0.js → 2mhli3hpy5vr9.js} +1 -1
  666. package/server/.next/static/chunks/{3u1v2wpzthilq.js → 2ns8p-8ngmi9h.js} +1 -1
  667. package/server/.next/static/chunks/{0valedxcn7j8k.js → 2vdwhg5fnxmu-.js} +2 -2
  668. package/server/.next/static/chunks/{1azdri14ocjgg.js → 2xgya43mybqsr.js} +11 -11
  669. package/server/.next/static/chunks/{3cti7pgg_jjlx.js → 2yv02i0h6tppe.js} +1 -1
  670. package/server/.next/static/chunks/{3-789qaoce7ff.js → 31gsdl-_t96jr.js} +1 -1
  671. package/server/.next/static/chunks/{2db0smm21dva_.js → 3_lq_n61v4j3r.js} +1 -1
  672. package/server/.next/static/chunks/{0_xoojw9q_nof.js → 3a11wypkvc5ey.js} +1 -1
  673. package/server/.next/static/chunks/{0dn6fty1ilg-n.js → 3g0p8ugqre9ft.js} +1 -1
  674. package/server/.next/static/chunks/{28_88x_e_ynaj.js → 3jq1ae0_9wu-o.js} +1 -1
  675. package/server/.next/static/chunks/3o358k-0653gr.js +1 -0
  676. package/server/.next/static/chunks/{05c15dcfh7cxm.js → 3pnzdk7snuzti.js} +1 -1
  677. package/server/.next/static/chunks/4114b2ynqr24j.js +1 -0
  678. package/server/.next/static/chunks/{28qjoy38cp5by.js → 41r6z31pmixbr.js} +1 -1
  679. package/server/.next/static/chunks/{3lw5n6yzs0665.js → 43wc7pgukn2dp.js} +1 -1
  680. package/server/.next/static/chunks/{1cd-2y1kwqosv.js → 4451kr05p691g.js} +1 -1
  681. package/server/.next/static/chunks/{1w51uxl19faw3.js → 44t_7rpq23-bz.js} +1 -1
  682. package/server/server.js +1 -1
  683. package/server/.next/server/chunks/[root-of-the-server]__00s0famyfjv1y._.js +0 -3
  684. package/server/.next/server/chunks/[root-of-the-server]__03z520-siwkv_._.js +0 -3
  685. package/server/.next/server/chunks/[root-of-the-server]__06od3qx7q00rc._.js +0 -3
  686. package/server/.next/server/chunks/[root-of-the-server]__09bwtkv2iniyt._.js +0 -3
  687. package/server/.next/server/chunks/[root-of-the-server]__0bb8xnocnnbt8._.js +0 -3
  688. package/server/.next/server/chunks/[root-of-the-server]__0c0drtvym6hf4._.js +0 -3
  689. package/server/.next/server/chunks/[root-of-the-server]__0frz3wu-qcv-d._.js +0 -3
  690. package/server/.next/server/chunks/[root-of-the-server]__0hm-azhxs9ted._.js +0 -3
  691. package/server/.next/server/chunks/[root-of-the-server]__0n-u6p8-hd-89._.js +0 -3
  692. package/server/.next/server/chunks/[root-of-the-server]__0p2n1_qp53y51._.js +0 -3
  693. package/server/.next/server/chunks/[root-of-the-server]__0p8j8b2tg73dq._.js +0 -3
  694. package/server/.next/server/chunks/[root-of-the-server]__0q9s7rbt0e-cf._.js +0 -3
  695. package/server/.next/server/chunks/[root-of-the-server]__0ra3lgjt0yuyy._.js +0 -3
  696. package/server/.next/server/chunks/[root-of-the-server]__0sgumm0843o2j._.js +0 -3
  697. package/server/.next/server/chunks/[root-of-the-server]__0vjvvirn6-fx-._.js +0 -3
  698. package/server/.next/server/chunks/[root-of-the-server]__0welpj78704um._.js +0 -3
  699. package/server/.next/server/chunks/[root-of-the-server]__0ymf9ppvpsffe._.js +0 -3
  700. package/server/.next/server/chunks/[root-of-the-server]__0zxrhqtvpoio4._.js +0 -3
  701. package/server/.next/server/chunks/[root-of-the-server]__10-4cctiab73h._.js +0 -3
  702. package/server/.next/server/chunks/[root-of-the-server]__11300e77grhx6._.js +0 -3
  703. package/server/.next/server/chunks/[root-of-the-server]__11tzj3jzqzk6v._.js +0 -3
  704. package/server/.next/server/chunks/[root-of-the-server]__12m0p1vyef6d5._.js +0 -3
  705. package/server/.next/server/chunks/[root-of-the-server]__13i4zx_j8zugt._.js +0 -3
  706. package/server/.next/server/chunks/[root-of-the-server]__1420nm1i823v8._.js +0 -3
  707. package/server/.next/server/chunks/[root-of-the-server]__1cnmxehqzmqq_._.js +0 -3
  708. package/server/.next/server/chunks/[root-of-the-server]__1f84fftr_6_6n._.js +0 -3
  709. package/server/.next/server/chunks/[root-of-the-server]__1i_vd8w3df3i6._.js +0 -3
  710. package/server/.next/server/chunks/[root-of-the-server]__1igmx9-fdh2wd._.js +0 -3
  711. package/server/.next/server/chunks/[root-of-the-server]__1kp2wois-47bg._.js +0 -3
  712. package/server/.next/server/chunks/[root-of-the-server]__1lcszcm98v484._.js +0 -3
  713. package/server/.next/server/chunks/[root-of-the-server]__1mufebnwyxlwx._.js +0 -3
  714. package/server/.next/server/chunks/[root-of-the-server]__1o0lvy6ek0v5d._.js +0 -3
  715. package/server/.next/server/chunks/[root-of-the-server]__1qwy7s_95k9k-._.js +0 -3
  716. package/server/.next/server/chunks/[root-of-the-server]__1rxaooz-d8jfs._.js +0 -3
  717. package/server/.next/server/chunks/[root-of-the-server]__1s8f1ovcj5r99._.js +0 -3
  718. package/server/.next/server/chunks/[root-of-the-server]__1tdb11b6vn4qm._.js +0 -3
  719. package/server/.next/server/chunks/[root-of-the-server]__1ti5-6okt7fur._.js +0 -3
  720. package/server/.next/server/chunks/[root-of-the-server]__1w_ga9n2lj53n._.js +0 -3
  721. package/server/.next/server/chunks/[root-of-the-server]__1xe_98y-j38aq._.js +0 -3
  722. package/server/.next/server/chunks/[root-of-the-server]__1z9kl-irij2lu._.js +0 -3
  723. package/server/.next/server/chunks/[root-of-the-server]__1zmoy4u_xb_yi._.js +0 -3
  724. package/server/.next/server/chunks/[root-of-the-server]__1zq2zv2ogn3ot._.js +0 -3
  725. package/server/.next/server/chunks/[root-of-the-server]__202mmzv3u-hk1._.js +0 -3
  726. package/server/.next/server/chunks/[root-of-the-server]__20tvyorpg49kd._.js +0 -3
  727. package/server/.next/server/chunks/_04oi0m63biyjd._.js +0 -3
  728. package/server/.next/server/chunks/_0bki3kju_1u1f._.js +0 -3
  729. package/server/.next/server/chunks/_0djze-128wsu0._.js +0 -3
  730. package/server/.next/server/chunks/_0hm72d9am2vfs._.js +0 -3
  731. package/server/.next/server/chunks/_1nuny071s602h._.js +0 -3
  732. package/server/.next/server/chunks/_1sx70w_rurjin._.js +0 -3
  733. package/server/.next/server/chunks/_1tl0532dffdm-._.js +0 -3
  734. package/server/.next/server/chunks/src_0frmhaaejchbk._.js +0 -3
  735. package/server/.next/server/chunks/src_0kihmyo3yghxy._.js +0 -3
  736. package/server/.next/server/chunks/src_16t2uefmdlh8d._.js +0 -3
  737. package/server/.next/server/chunks/src_17j4dgvb7rx7k._.js +0 -3
  738. package/server/.next/server/chunks/src_20xyhmuf0y6_v._.js +0 -3
  739. package/server/.next/server/chunks/src_lib_0hw2g5g295xx0._.js +0 -12
  740. package/server/.next/server/chunks/src_lib_1hveabvnpk83x._.js +0 -12
  741. package/server/.next/server/chunks/src_lib_collector_deploy-days_ts_087kwe68m4i93._.js +0 -3
  742. package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +0 -3
  743. package/server/.next/server/chunks/ssr/[root-of-the-server]__01o65-2jgmg9x._.js +0 -3
  744. package/server/.next/server/chunks/ssr/[root-of-the-server]__0q7rssq_3unbc._.js +0 -3
  745. package/server/.next/server/chunks/ssr/[root-of-the-server]__11yadiuejywcz._.js +0 -3
  746. package/server/.next/server/chunks/ssr/_0j_qqta7rirh5._.js +0 -3
  747. package/server/.next/server/chunks/ssr/src_09q8lx_19nta6._.js +0 -3
  748. package/server/.next/static/chunks/10y41_ed7ty6e.js +0 -1
  749. package/server/.next/static/chunks/16gt7hkgltvf7.js +0 -1
  750. package/server/.next/static/chunks/1sjgdu3r0baj-.js +0 -1
  751. package/server/.next/static/chunks/1velx-cd3d5y1.js +0 -1
  752. package/server/.next/static/chunks/1xydxxektmjgr.js +0 -1
  753. package/server/.next/static/chunks/2jflssspiz3-i.js +0 -1
  754. /package/server/.next/static/{NUZVcU60U-vXVedu_GB0w → GBOxoOLq1PhjMCzrjHGdg}/_buildManifest.js +0 -0
  755. /package/server/.next/static/{NUZVcU60U-vXVedu_GB0w → GBOxoOLq1PhjMCzrjHGdg}/_clientMiddlewareManifest.js +0 -0
  756. /package/server/.next/static/{NUZVcU60U-vXVedu_GB0w → GBOxoOLq1PhjMCzrjHGdg}/_ssgManifest.js +0 -0
@@ -4,6 +4,6 @@
4
4
  where (ops.settings.value->>'until')::timestamptz < ${e.toISOString()}::timestamptz
5
5
  returning key`);return(0,J.f)(s).length>0?t:null}async function G(e){await (0,r.f)().execute(a.B`
6
6
  update ops.settings set value = jsonb_build_object('until', '1970-01-01T00:00:00Z'), updated_at = now()
7
- where key = 'collector.lease' and value->>'owner' = ${e}`)}var K=e.i(679270);let Z=/^v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:-([0-9A-Za-z.-]{1,64}))?(?:\+[0-9A-Za-z.-]{1,64})?$/,H=/^\d{4}-\d{2}-\d{2}$/;function X(e){let t="string"==typeof e?Z.exec(e.trim()):null;if(!t)return null;let[a,r,n]=[t[1],t[2],t[3]].map(Number);return{major:a,minor:r,patch:n,pre:t[4]??null,text:`${a}.${r}.${n}${t[4]?`-${t[4]}`:""}`}}function Q(e,t){return e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:e.pre===t.pre?0:null===e.pre?1:null===t.pre||e.pre<t.pre?-1:1}function ee(e){let t=(e&&"object"==typeof e?e:null)?.result?.releases;if(!Array.isArray(t)||0===t.length)return null;let a=[];for(let e of t){if(!e||"object"!=typeof e||"string"!=typeof e.name||"boolean"!=typeof e.isEol||null!=e.eolFrom&&("string"!=typeof e.eolFrom||!H.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var et=e.i(583521);let ea="runtime.node";function er(e=process.env){let t=(0,et.N)(e,"NO_UPDATE_CHECK"),a=t?.value.trim()??"";return{off:""!==a&&!/^(0|false|no|off)$/i.test(a),name:t?.name??"WATCHBELL_NO_UPDATE_CHECK"}}async function en(e,t,a,r){let n;try{n=await a(e,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(r),cache:"no-store"})}catch{return{ok:!1,error:`Couldn't reach ${t}`}}if(!n.ok)return{ok:!1,error:`${t} returned an error (${n.status})`};try{return{ok:!0,body:await n.json()}}catch{return{ok:!1,error:`${t} answered in a format the console doesn't recognise`}}}async function es(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([en("https://nodejs.org/dist/index.json","nodejs.org",t,a),en("https://endoflife.date/api/v1/products/nodejs/","endoflife.date",t,a)]),s=r.ok?function(e){if(!Array.isArray(e)||0===e.length)return null;let t=[],a=new Map;for(let r of e){if(!r||"object"!=typeof r||"boolean"!=typeof r.security)return null;let e=X(r.version);if(!e||null!==e.pre||!String(r.version).startsWith("v"))return null;r.security&&t.push(e);let n=a.get(e.major);(!n||Q(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>Q(t,e)),{security:t.map(e=>e.text),latest:Object.fromEntries([...a].sort((e,t)=>t[0]-e[0]).map(([e,t])=>[String(e),t.text]))}}(r.body):null,i=n.ok?ee(n.body):null,o=e=>`${e} answered in a format the console doesn't recognise`;return{index:s,indexError:r.ok?s?null:o("nodejs.org"):r.error,cycles:i,cyclesError:n.ok?i?null:o("endoflife.date"):n.error}}let ei=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function el(){var e;let[a]=await (0,r.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,ea)).limit(1);return a?(e=a.value)&&"object"==typeof e?{index:function(e){let t=e&&"object"==typeof e?e:null;if(!t||!Array.isArray(t.security)||!t.latest||"object"!=typeof t.latest)return null;let a=t.security.map(X),r=Object.entries(t.latest).map(([e,t])=>[e,X(t)]);return a.some(e=>!e)||r.some(([e,t])=>!t||String(t.major)!==e)?null:{security:a.map(e=>e.text),latest:Object.fromEntries(r.map(([e,t])=>[e,t.text]))}}(e.index),indexCheckedAt:ei(e.indexCheckedAt),indexError:eo(e.indexError),cycles:ee({result:{releases:e.cycles}}),cyclesCheckedAt:ei(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function eu(e,t,a,n=process.env){let i;if(er(n).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await es({timeoutMs:Math.min(8e3,o)}),u=await el();l.indexError&&a.push(`node: ${l.indexError}`),l.cyclesError&&a.push(`node: ${l.cyclesError}`);let d=(i=e.toISOString(),{index:l.index??u?.index??null,indexCheckedAt:i,indexError:l.indexError,cycles:l.cycles??u?.cycles??null,cyclesCheckedAt:i,cyclesError:l.cyclesError});await (0,r.f)().insert(s.settings).values({key:ea,value:d}).onConflictDoUpdate({target:s.settings.key,set:{value:d,updatedAt:e}})}var ed=e.i(77193);let ec=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ef=e=>"string"==typeof e&&ec.test(e);async function ep(e={}){let t,a=e.fetch??fetch;try{t=await a("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(e.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!t.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${t.status})`};try{let e=await t.json();return ef(e.version)?{ok:!0,version:e.version}:{ok:!1,error:"registry.npmjs.org answered without a version"}}catch{return{ok:!1,error:"registry.npmjs.org answered in a format the console doesn't recognise"}}}async function ew(e,t,a,n=process.env,i){let o=function(e=process.env,t="1.7.0"){let a=e.WATCHBELL_VERSION?.trim();if(ef(a))return a;let r=t?.trim();return ef(r)?r:null}(n);if(!o||"selfhost"!==(0,ed.c)(n)||er(n).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ep({fetch:i,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(s.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(s.settings).values({key:"watchbell.seenVersion",value:{version:o}}).onConflictDoNothing({target:s.settings.key})}var em=e.i(515743),eh=e.i(336030),eg=e.i(905685),ey=e.i(751762);e.i(794713);let eb="collector.lastRun",ek="vercel.backoffUntil",ev="vercel.currentMiss",eI={supabase:x.N,supabaseUsage:x.y,neon:x.h,firebase:x.g,firebaseUsage:x.x,extraDbs:C};async function eA(){let e=await (0,r.f)().select({key:s.settings.key,value:s.settings.value}).from(s.settings).where((0,t.y)(s.settings.key,[eb,S.Z])).limit(2);return{lastRun:e.find(e=>e.key===eb)?.value??{},afterDeploy:e.find(e=>e.key===S.Z)?.value??null}}async function eS(e){await (0,r.f)().insert(s.settings).values({key:eb,value:e}).onConflictDoUpdate({target:s.settings.key,set:{value:e,updatedAt:new Date}})}let e$=e=>(0,p.f)(e);async function eD(e,n,i,o,l=[]){let u=(await (0,r.f)().select({m:s.monitors,app:s.resources}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)((0,t.u)(s.monitors.kind,"http"),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).orderBy(a.B`${s.monitors.lastCheckedAt} asc nulls first`,s.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,V.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,n,Date.now());return null===t?Promise.resolve(null):(0,V.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,em.C)(e)})}),c=u.flatMap((e,t)=>d[t]?[{...e,r:d[t]}]:[]);if(c.length<u.length&&i.push(`checks: ${u.length-c.length} monitors skipped, time budget used`),!c.length)return 0;let f=[];for(let t of c)await (0,eh.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(s.checks).values(f.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,A.x)(l,{monitorId:t.id,appId:a.id},e)}))),await e$(f.map(({m:t,app:a,r})=>(0,eg.F)({resourceId:a.id,path:(0,D.K)(t.url),prev:t.state,next:(0,eg.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ex=["checks","heartbeats"];async function eE(e,t,a=f.f){if(!ex.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ey.f)(e)}`),[]}}async function ej(e){let[a]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ek)).limit(1),n=a?.value?.until;return!!n&&e.getTime()<new Date(n).getTime()}async function eM(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let a={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,r.f)().insert(s.settings).values({key:ek,value:a}).onConflictDoUpdate({target:s.settings.key,set:{value:a,updatedAt:t}}),!0}let eO=e=>a.B`coalesce(${s.deployments.externalId} = ${e}::text, false)`;async function eN(e,n,i,o,l=k.m){let u=[];try{for(let l of e){let e=n.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,D.a)(e.map(e=>({id:e.id,createdAt:e.createdAt??new Date(0)})),(l.externalId?i.get(l.externalId):null)??null),f=await (0,r.f)().update(s.deployments).set({isCurrent:eO(d),isPreviousProduction:eO(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(s.deployments.resourceId,l.id),(0,t.F)(a.B`${s.deployments.isCurrent} is distinct from ${eO(d)}`,a.B`${s.deployments.isPreviousProduction} is distinct from ${eO(c)}`))).returning({id:s.deployments.externalId}),p=(0,S.X)({appId:l.id,currentId:d,changedIds:f.map(e=>e.id),createdAt:e.find(e=>e.id===d)?.createdAt??null,state:o.afterDeploy,now:o.now});p&&u.push({appId:l.id,deploymentId:p})}}finally{if(u.length)try{await l(u,o.now)}catch(e){o.errors.push(`vercel/${o.label}: after-deploy security check not scheduled: ${(0,ey.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eC(e,t,a,r,n=new Map,s=y.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ey.f)(e)}`)}}async function eT(e,a,n,i){if(await ej(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(s.accounts).where((0,t.b)((0,t.u)(s.accounts.provider,"vercel"),(0,t.u)(s.accounts.status,"ok"))))){let d=(0,w.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){n.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,u.id),(0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),p=await (0,$.X)(d);if(!p.ok){let a=(0,o.E)({ok:!1,kind:p.kind,error:p.error});if(a&&await (0,r.f)().update(s.accounts).set({...a,updatedAt:e}).where((0,t.u)(s.accounts.id,u.id)),n.push(`vercel/${u.label}: ${p.error}`),await eM(p,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of p.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void n.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,$.W)(d,o),(0,$.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(n.push(`vercel/${o.name}: ${t.error}`),await eM(t,e))return;continue}let p=new Map(l.data.map(e=>[e.id,e.currentDeploymentId])),w=u.data.filter(e=>f.has(e.projectId)),m=eR(w),h=new Map((w.length?await (0,r.f)().select({externalId:s.deployments.externalId,state:s.deployments.state,target:s.deployments.target,branch:s.deployments.branch,commitSha:s.deployments.commitSha,commitMessage:s.deployments.commitMessage,source:s.deployments.source,url:s.deployments.url,buildingAt:s.deployments.buildingAt,readyAt:s.deployments.readyAt}).from(s.deployments).where((0,t.y)(s.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),n=h.get(t.id),i={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,D.E)(n,i)){let n={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(n).onConflictDoUpdate({target:s.deployments.externalId,set:n})}g.push((0,eg.L)(n?.state,t,a.id,e))}await e$(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:s.deployments.resourceId,id:s.deployments.externalId,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ev)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(s.settings).values({key:ev,value:(0,D.Y)(k?.value,v,e)}).onConflictDoUpdate({target:s.settings.key,set:{value:(0,D.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,D.Q)(y,p,b,(0,D.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,$.S)(d,o,t.deploymentId);if(!i.ok){if(n.push(`vercel/${o.name}: current deployment: ${i.error}`),await eM(i,e))return void await I();v.push(t.deploymentId);continue}let l=i.data;for(let[e,t]of eR([l]))m.set(e,t);let u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(u).onConflictDoUpdate({target:s.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):v.push(t.deploymentId)}await I(),await eN(y,b,p,{now:e,afterDeploy:i,errors:n,label:o.name}),await eC(y,e,n,o.name,m)}}}async function eP(e){let n=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!n.length)return;let o=await (0,r.f)().select().from(s.monitors).where((0,t.b)((0,t.y)(s.monitors.resourceId,n.map(e=>e.id)),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:s.deployments.resourceId}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,n.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"building"),(0,t.B)(s.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,x.q)(n.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(s.snapshots).where((0,t.y)(s.snapshots.resourceId,n.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(n.map(e=>[e.id,e])),f=(0,i.P)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,i.R)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n))await (0,r.f)().update(s.resources).set({meta:a.B`${s.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(s.resources.id,e));for(let t of n){let n=o.filter(e=>e.resourceId===t.id),i=(0,eg.V)({monitors:n.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=n.find(e=>"err"===e.state)??n.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:n.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(s.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:s.snapshots.resourceId,set:{state:i,data:a.B`${s.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function ez(e,t={}){let a={writeLastRun:eS,refreshApps:eP,refreshNetwork:K.x,invalidate:l.f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,ey.f)(t)}`)}if(e.done.some(e=>K.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,ey.f)(t)}`)}}finally{a.invalidate((0,u.o)(e.tried??e.done))}}async function eB(e,t,a,r={evaluate:d.$,deliver:h.q,digest:h.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,ey.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ey.f)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,Y.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,ey.f)(e)}`)}return n}async function e_(e,t,a,r){let n=[],s=[];for(let i of e){if(Date.now()>t){a.push(`${i}: skipped, time budget used`);continue}if((0,Y.z)(i,t,Date.now())){s.push(i);try{await r(i),n.push(i)}catch(e){a.push(`${i}: ${(0,ey.f)(e)}`)}}}return{done:n,tried:s}}async function eU(e){let a,i=new Date,o=await q(i);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(s.collectorRuns).values({startedAt:i,trigger:"builtin"===e?"manual":e}).returning({id:s.collectorRuns.id})}catch(e){throw await G(o).catch(()=>void 0),e}let l=[],u=[],d=0,f=i.getTime()+Y.p,p=process.cpuUsage(),w=()=>{let e=process.cpuUsage(p);return Math.round((e.user+e.system)/1e3)},h=e=>console.info(`collector ${e} +${Date.now()-i.getTime()}ms cpu ${w()}ms`);try{h("start");let{lastRun:t,afterDeploy:a}=await eA(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,g.I)(),{due:s,early:o}=(0,Y._)((0,Y.S)(t,i,r,n),(0,k.Y)(a),n),p=!1,w=e=>o||!p?e.filter(e=>"security"!==e):e,y=s.filter(e=>Y.u.includes(e)),I=y.includes("alerts")?f-Y.X:f,$=await eE(s,l);h(`due ${s.join(",")}`);let{done:D,tried:x}=await e_(s.filter(e=>!Y.u.includes(e)),I,l,async e=>{if(h(`task ${e}`),"heartbeats"===e){let e=new Date;d+=await (0,c.r)(e,(t,a)=>null!==(0,A.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(d+=await eD(new Date,I,l,r,$)),"vercel"===e&&await eT(new Date,I,l,(0,S.Y)(a));let t=eI[e];t&&await t({now:new Date,deadline:I,errors:l,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,I,l),"domains"===e&&await (0,K.H)(new Date,I,l),"tls"===e&&await (0,K.V)(new Date,I,l),"rdap"===e&&await (0,K.W)(new Date,I,l),"eol"===e&&await (0,K.i)(new Date,I,l),"node"===e&&(await eu(new Date,I,l),await ew(new Date,I,l)),"status"===e&&await (0,v.i)(new Date),"logs"===e&&await (0,m._)(new Date,I,l),"pageviews"===e&&await (0,b.f)(new Date,I,l),"security"===e&&(p=(await (0,k.U)({now:i,deadline:I,errors:l,paused:n,early:o})).complete)});u.push(...D),h("main done"),await ez({lastRun:t,done:w(u),tried:x,started:i,errors:l}),h("settled");let E=await eB(y,f,l);h("post done"),E.length&&await eS({...t,...Object.fromEntries(w([...u,...E]).map(e=>[e,i.toISOString()]))}),u.push(...E)}catch(e){l.push(`run: ${(0,ey.f)(e)}`)}finally{let e=Date.now()-i.getTime();await (0,r.f)().update(s.collectorRuns).set({finishedAt:new Date,ok:0===l.length,errorSummary:l.join("\n").slice(0,2e3)||null,durationMs:e,tasks:u,checks:d}).where((0,t.u)(s.collectorRuns.id,a.id)).catch(()=>void 0),await G(o).catch(()=>void 0),process.env.VERCEL&&await (0,n.f)(w())}return{skipped:!1,ok:0===l.length,tasks:u,checks:d,durationMs:Date.now()-i.getTime(),errors:l}}e.s(["f",0,eU],956846)},703352,948736,873354,655060,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(502240);async function i(e,o,l=new Map){if(!e.length)return 0;let u=await (0,r.f)().select({app:n.deployments.resourceId,id:n.deployments.externalId,source:n.deployments.source,branch:n.deployments.branch,sha:n.deployments.commitSha}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,e.map(e=>e.id)),(0,t.u)(n.deployments.isCurrent,!0))),d=0;for(let i of e){let e,c=u.find(e=>e.app===i.id);if(!c)continue;let f=(0,s.O)(i.meta?.productionSource),p=l.get(c.id),w={source:c.source??null,branch:c.branch??null,sha:c.sha??null};if(!(e=p?(0,s.s)({...w,branchFrom:p.branchFrom??null,gitDirty:!0===p.gitDirty}):f?.id===c.id?{kind:f.kind,...f.ref?{ref:f.ref}:{},...f.sha?{sha:f.sha}:{}}:"git"===w.source||"cli"===w.source?(0,s.s)(w):null)){if(f?.at&&f.id!==c.id){let e={...f};delete e.at,await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:e})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}continue}e={...e,id:c.id};let m=!!f?.at&&o.getTime()-Date.parse(f.at)<s.u;if((0,s.v)(f,e)&&m)continue;let h={...e,at:o.toISOString()};await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:h})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}return d}e.s(["f",0,i],703352);var o=e.i(442473),l=e.i(381725),u=e.i(767512),d=e.i(971724),c=e.i(206033),f=e.i(455744),p=e.i(469755),w=e.i(105954),m=e.i(857897);let h=/not enabled/i,g=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),y="Vercel Web Analytics answered in a format the console doesn't recognise.",b=d.z.object({data:d.z.object({pageviews:c.z.number().finite().nonnegative(),visitors:c.z.number().finite().nonnegative()})}),k=d.z.object({data:f.z.array(p.z.unknown())}),v=d.z.object({timestamp:w.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),m.z.NEVER):a}),pageviews:c.z.number().finite().nonnegative().nullish().catch(null)});async function I(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),i=r.fetch??fetch,l=new AbortController,u=setTimeout(()=>l.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),d=r.signal?AbortSignal.any([l.signal,r.signal]):l.signal,c=(0,o.X)(d);async function f(o,u){let f=new URLSearchParams({projectId:a,teamId:t,...u,since:n,until:s});try{let t=await Promise.race([i(`https://api.vercel.com/v1/query/web-analytics/visits/${o}?${f}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:d,cache:"no-store"}),c]),a=null,r=!1;if(401===t.status||403===t.status)a=g("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=g("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),c]).catch(()=>"");h.test(e)?r=!0:a=g("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=g("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),c])}}catch(e){if(d.aborted)throw e;return{kind:"fail",fail:g("format",y)}}}catch{return{kind:"fail",fail:d.aborted?l.signal.aborted&&!r.signal?.aborted?g("transient","Vercel Web Analytics didn't answer in time."):g("transient","Reading Vercel Web Analytics was cancelled."):g("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([f("count",{}),f("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?k.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:g("format",y),i=a.find(e=>"transient"===e.kind);if(i)return i;if(s)return s;if(!n?.success)return g("format",y);let o="body"===e.kind?b.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=v.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return g("format",y);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(o?.success)return{ok:!0,enabled:!0,total:o.data.data.pageviews,visitors:o.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(u),l.abort()}}var A=e.i(943816);async function S(e,t,a){let r=await (0,l.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,o.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await I(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,u.r)(r.appId,{pageviews:(0,A.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}e.s(["f",0,S],948736);var $=e.i(422067),D=e.i(433609),x=e.i(800523),E=e.i(479301);let j="security.afterDeploy",M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=e=>"string"==typeof e&&e.length>0&&e.length<=100;function N(e){let t={pending:{},checked:{}};if(!M(e))return t;if(M(e.pending))for(let[a,r]of Object.entries(e.pending)){if(!(0,E.f)(a)||!M(r)||!O(r.id)||"string"!=typeof r.at||Number.isNaN(Date.parse(r.at)))continue;let e="number"==typeof r.attempts&&Number.isInteger(r.attempts)&&r.attempts>=0?Math.min(r.attempts,3):0;t.pending[a]={id:r.id,at:r.at,attempts:e,...!0===r.next?{next:!0}:{},...!0===r.deps?{deps:!0}:{}}}if(M(e.checked))for(let[a,r]of Object.entries(e.checked))(0,E.f)(a)&&O(r)&&(t.checked[a]=r);return t}let R=e=>Object.keys(e.pending).length>0;function C(e,t,a){let r={pending:{...e.pending},checked:{...e.checked}},n=!1;for(let e of t)(0,E.f)(e.appId)&&O(e.deploymentId)&&r.checked[e.appId]!==e.deploymentId&&r.pending[e.appId]?.id!==e.deploymentId&&(r.pending[e.appId]={id:e.deploymentId,at:a.toISOString(),attempts:0},n=!0);return{state:r,changed:n}}function T(e,t){let a,r={...e.pending},n={...e.checked};for(let e of t){let t=r[e];t&&(delete r[e],delete n[e],n[e]=t.id)}return{pending:r,checked:(a=Object.entries(n)).length<=500?n:Object.fromEntries(a.slice(a.length-500))}}function P(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?T(e,a):e}let z=(e,t)=>Object.entries(e.pending).filter(([,e])=>!e[t]).map(([e])=>e);function B(e,t){let a={},r=[];for(let[n,s]of Object.entries(e.pending)){let e={...s};t.hosting&&!e.next&&(t.nextDone?.has(n)?e.next=!0:t.nextStarted?.has(n)&&(e.attempts=Math.min(e.attempts+1,3))),t.devops&&!e.deps&&t.depsDone?.has(n)&&(e.deps=!0),a[n]=e,((e.next||!t.hosting)&&(e.deps||!t.devops)||e.attempts>=3)&&r.push(n)}return T({pending:a,checked:e.checked},r)}e.s(["Z",0,j,"X",0,function(e){var t,a;let r=e.currentId;return r&&e.state.checked[e.appId]!==r&&e.state.pending[e.appId]?.id!==r&&(t=e.changedIds,((a=r)&&t.includes(a)?a:null)||e.createdAt&&e.now.getTime()-e.createdAt.getTime()<=216e5)?r:null},"a",0,P,"A",0,R,"B",0,C,"p",0,z,"Y",0,N,"E",0,B],873354);var _=e.i(970465);let U="security.slot",W=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0&&e.length<=100).slice(0,1e3):[],F=(e,t)=>[...new Set([...e,...t])].slice(0,1e3),V=e=>async()=>{let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,e)).limit(1);return a?.value??null},L=e=>async t=>{await (0,r.f)().insert(n.settings).values({key:e,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})},J={read:V(j),write:L(j),readSlot:V(U),writeSlot:L(U),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=N(await t.read()),r=P(a,e.now),n=!e.paused.has("hosting"),s=!e.paused.has("devops"),i=n?z(r,"next"):[],o=s?z(r,"deps"):[],l=e.early?null:function(e,t){let a=e&&"object"==typeof e&&!Array.isArray(e)?e:{};if(a.slot!==t)return{slot:t,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let r="number"==typeof a.runs&&Number.isInteger(a.runs)&&a.runs>=0?a.runs:0,n={};if(a.cut&&"object"==typeof a.cut&&!Array.isArray(a.cut))for(let[e,t]of Object.entries(a.cut).slice(0,1e3))e.length<=100&&"number"==typeof t&&Number.isInteger(t)&&t>0&&(n[e]=Math.min(t,2));return{slot:t,runs:r,next:W(a.next),repos:W(a.repos),cut:n,nextDone:!0===a.nextDone,depsDone:!0===a.depsDone}}(await t.readSlot(),new Date((0,$.G)("security",e.now)).toISOString()),u=!!l&&n&&!l.nextDone,d=!!l&&s&&!l.depsDone,c=n&&(i.length>0||u),f=s&&(o.length>0||d),p={hosting:n,devops:s,nextDone:new Set,nextStarted:new Set,depsDone:new Set},w=async()=>{let a=Math.min(Date.now()+_.y,!l&&f?e.deadline-2*D.d:e.deadline),r=u?[...l.next,...Object.entries(l.cut).filter(([,e])=>e>=2).map(([e])=>e)]:[],n=u?{first:i,skip:[...new Set(r)].filter(e=>!i.includes(e))}:{only:i},s=await t.nextCheck(a,n);for(let t of s.failed)e.errors.push(`security ${t}`);for(let e of s.done)p.nextDone.add(e);for(let e of i)s.listed.includes(e)||p.nextDone.add(e);for(let e of s.started)p.nextStarted.add(e);if(u){let e=new Set(s.done);for(let t of(l.next=F(l.next,s.done),s.started))e.has(t)||(l.cut[t]=Math.min((l.cut[t]??0)+1,2));l.nextDone=s.listed.every(t=>e.has(t)||(l.cut[t]??0)>=2)}},m=async()=>{let a=await t.depsStep(Math.min(Date.now()+D.o,e.deadline),d?{marked:o,onlyMarked:!1,skip:l.repos}:{marked:o,onlyMarked:!0});for(let t of(a.problem&&e.errors.push(`security deps: ${a.problem}`),a.settled))p.depsDone.add(t);d&&(l.repos=F(l.repos,a.done),l.depsDone=a.complete)};try{l&&l.runs++,l?(f&&await m(),c&&await w()):(c&&await w(),f&&await m())}finally{let e=null;if(l)try{await t.writeSlot(l)}catch(t){e=t}try{let e=B(r,p);JSON.stringify(e)!==JSON.stringify(a)&&await t.write(e)}catch(t){e??=t}if(e)throw e}return{complete:!l||(l.nextDone||!n)&&(l.depsDone||!s)||l.runs>=20}}async function q(e,t,a=J){if(!e.length)return!1;let{state:r,changed:n}=C(N(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>R(N(e)),"U",0,Y],655060)}]})();
7
+ where key = 'collector.lease' and value->>'owner' = ${e}`)}var K=e.i(679270);let Z=/^v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:-([0-9A-Za-z.-]{1,64}))?(?:\+[0-9A-Za-z.-]{1,64})?$/,H=/^\d{4}-\d{2}-\d{2}$/;function X(e){let t="string"==typeof e?Z.exec(e.trim()):null;if(!t)return null;let[a,r,n]=[t[1],t[2],t[3]].map(Number);return{major:a,minor:r,patch:n,pre:t[4]??null,text:`${a}.${r}.${n}${t[4]?`-${t[4]}`:""}`}}function Q(e,t){return e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:e.pre===t.pre?0:null===e.pre?1:null===t.pre||e.pre<t.pre?-1:1}function ee(e){let t=(e&&"object"==typeof e?e:null)?.result?.releases;if(!Array.isArray(t)||0===t.length)return null;let a=[];for(let e of t){if(!e||"object"!=typeof e||"string"!=typeof e.name||"boolean"!=typeof e.isEol||null!=e.eolFrom&&("string"!=typeof e.eolFrom||!H.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var et=e.i(583521);let ea="runtime.node";function er(e=process.env){let t=(0,et.N)(e,"NO_UPDATE_CHECK"),a=t?.value.trim()??"";return{off:""!==a&&!/^(0|false|no|off)$/i.test(a),name:t?.name??"WATCHBELL_NO_UPDATE_CHECK"}}async function en(e,t,a,r){let n;try{n=await a(e,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(r),cache:"no-store"})}catch{return{ok:!1,error:`Couldn't reach ${t}`}}if(!n.ok)return{ok:!1,error:`${t} returned an error (${n.status})`};try{return{ok:!0,body:await n.json()}}catch{return{ok:!1,error:`${t} answered in a format the console doesn't recognise`}}}async function es(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([en("https://nodejs.org/dist/index.json","nodejs.org",t,a),en("https://endoflife.date/api/v1/products/nodejs/","endoflife.date",t,a)]),s=r.ok?function(e){if(!Array.isArray(e)||0===e.length)return null;let t=[],a=new Map;for(let r of e){if(!r||"object"!=typeof r||"boolean"!=typeof r.security)return null;let e=X(r.version);if(!e||null!==e.pre||!String(r.version).startsWith("v"))return null;r.security&&t.push(e);let n=a.get(e.major);(!n||Q(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>Q(t,e)),{security:t.map(e=>e.text),latest:Object.fromEntries([...a].sort((e,t)=>t[0]-e[0]).map(([e,t])=>[String(e),t.text]))}}(r.body):null,i=n.ok?ee(n.body):null,o=e=>`${e} answered in a format the console doesn't recognise`;return{index:s,indexError:r.ok?s?null:o("nodejs.org"):r.error,cycles:i,cyclesError:n.ok?i?null:o("endoflife.date"):n.error}}let ei=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function el(){var e;let[a]=await (0,r.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,ea)).limit(1);return a?(e=a.value)&&"object"==typeof e?{index:function(e){let t=e&&"object"==typeof e?e:null;if(!t||!Array.isArray(t.security)||!t.latest||"object"!=typeof t.latest)return null;let a=t.security.map(X),r=Object.entries(t.latest).map(([e,t])=>[e,X(t)]);return a.some(e=>!e)||r.some(([e,t])=>!t||String(t.major)!==e)?null:{security:a.map(e=>e.text),latest:Object.fromEntries(r.map(([e,t])=>[e,t.text]))}}(e.index),indexCheckedAt:ei(e.indexCheckedAt),indexError:eo(e.indexError),cycles:ee({result:{releases:e.cycles}}),cyclesCheckedAt:ei(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function eu(e,t,a,n=process.env){let i;if(er(n).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await es({timeoutMs:Math.min(8e3,o)}),u=await el();l.indexError&&a.push(`node: ${l.indexError}`),l.cyclesError&&a.push(`node: ${l.cyclesError}`);let d=(i=e.toISOString(),{index:l.index??u?.index??null,indexCheckedAt:i,indexError:l.indexError,cycles:l.cycles??u?.cycles??null,cyclesCheckedAt:i,cyclesError:l.cyclesError});await (0,r.f)().insert(s.settings).values({key:ea,value:d}).onConflictDoUpdate({target:s.settings.key,set:{value:d,updatedAt:e}})}var ed=e.i(77193);let ec=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ef=e=>"string"==typeof e&&ec.test(e);async function ep(e={}){let t,a=e.fetch??fetch;try{t=await a("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(e.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!t.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${t.status})`};try{let e=await t.json();return ef(e.version)?{ok:!0,version:e.version}:{ok:!1,error:"registry.npmjs.org answered without a version"}}catch{return{ok:!1,error:"registry.npmjs.org answered in a format the console doesn't recognise"}}}async function ew(e,t,a,n=process.env,i){let o=function(e=process.env,t="1.7.1"){let a=e.WATCHBELL_VERSION?.trim();if(ef(a))return a;let r=t?.trim();return ef(r)?r:null}(n);if(!o||"selfhost"!==(0,ed.c)(n)||er(n).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ep({fetch:i,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(s.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(s.settings).values({key:"watchbell.seenVersion",value:{version:o}}).onConflictDoNothing({target:s.settings.key})}var em=e.i(515743),eh=e.i(336030),eg=e.i(905685),ey=e.i(751762);e.i(794713);let eb="collector.lastRun",ek="vercel.backoffUntil",ev="vercel.currentMiss",eI={supabase:x.N,supabaseUsage:x.y,neon:x.h,firebase:x.g,firebaseUsage:x.x,extraDbs:C};async function eA(){let e=await (0,r.f)().select({key:s.settings.key,value:s.settings.value}).from(s.settings).where((0,t.y)(s.settings.key,[eb,S.Z])).limit(2);return{lastRun:e.find(e=>e.key===eb)?.value??{},afterDeploy:e.find(e=>e.key===S.Z)?.value??null}}async function eS(e){await (0,r.f)().insert(s.settings).values({key:eb,value:e}).onConflictDoUpdate({target:s.settings.key,set:{value:e,updatedAt:new Date}})}let e$=e=>(0,p.f)(e);async function eD(e,n,i,o,l=[]){let u=(await (0,r.f)().select({m:s.monitors,app:s.resources}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)((0,t.u)(s.monitors.kind,"http"),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).orderBy(a.B`${s.monitors.lastCheckedAt} asc nulls first`,s.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,V.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,n,Date.now());return null===t?Promise.resolve(null):(0,V.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,em.C)(e)})}),c=u.flatMap((e,t)=>d[t]?[{...e,r:d[t]}]:[]);if(c.length<u.length&&i.push(`checks: ${u.length-c.length} monitors skipped, time budget used`),!c.length)return 0;let f=[];for(let t of c)await (0,eh.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(s.checks).values(f.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,A.x)(l,{monitorId:t.id,appId:a.id},e)}))),await e$(f.map(({m:t,app:a,r})=>(0,eg.F)({resourceId:a.id,path:(0,D.K)(t.url),prev:t.state,next:(0,eg.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ex=["checks","heartbeats"];async function eE(e,t,a=f.f){if(!ex.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ey.f)(e)}`),[]}}async function ej(e){let[a]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ek)).limit(1),n=a?.value?.until;return!!n&&e.getTime()<new Date(n).getTime()}async function eM(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let a={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,r.f)().insert(s.settings).values({key:ek,value:a}).onConflictDoUpdate({target:s.settings.key,set:{value:a,updatedAt:t}}),!0}let eO=e=>a.B`coalesce(${s.deployments.externalId} = ${e}::text, false)`;async function eN(e,n,i,o,l=k.m){let u=[];try{for(let l of e){let e=n.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,D.a)(e.map(e=>({id:e.id,createdAt:e.createdAt??new Date(0)})),(l.externalId?i.get(l.externalId):null)??null),f=await (0,r.f)().update(s.deployments).set({isCurrent:eO(d),isPreviousProduction:eO(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(s.deployments.resourceId,l.id),(0,t.F)(a.B`${s.deployments.isCurrent} is distinct from ${eO(d)}`,a.B`${s.deployments.isPreviousProduction} is distinct from ${eO(c)}`))).returning({id:s.deployments.externalId}),p=(0,S.X)({appId:l.id,currentId:d,changedIds:f.map(e=>e.id),createdAt:e.find(e=>e.id===d)?.createdAt??null,state:o.afterDeploy,now:o.now});p&&u.push({appId:l.id,deploymentId:p})}}finally{if(u.length)try{await l(u,o.now)}catch(e){o.errors.push(`vercel/${o.label}: after-deploy security check not scheduled: ${(0,ey.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eC(e,t,a,r,n=new Map,s=y.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ey.f)(e)}`)}}async function eT(e,a,n,i){if(await ej(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(s.accounts).where((0,t.b)((0,t.u)(s.accounts.provider,"vercel"),(0,t.u)(s.accounts.status,"ok"))))){let d=(0,w.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){n.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,u.id),(0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),p=await (0,$.X)(d);if(!p.ok){let a=(0,o.E)({ok:!1,kind:p.kind,error:p.error});if(a&&await (0,r.f)().update(s.accounts).set({...a,updatedAt:e}).where((0,t.u)(s.accounts.id,u.id)),n.push(`vercel/${u.label}: ${p.error}`),await eM(p,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of p.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void n.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,$.W)(d,o),(0,$.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(n.push(`vercel/${o.name}: ${t.error}`),await eM(t,e))return;continue}let p=new Map(l.data.map(e=>[e.id,e.currentDeploymentId])),w=u.data.filter(e=>f.has(e.projectId)),m=eR(w),h=new Map((w.length?await (0,r.f)().select({externalId:s.deployments.externalId,state:s.deployments.state,target:s.deployments.target,branch:s.deployments.branch,commitSha:s.deployments.commitSha,commitMessage:s.deployments.commitMessage,source:s.deployments.source,url:s.deployments.url,buildingAt:s.deployments.buildingAt,readyAt:s.deployments.readyAt}).from(s.deployments).where((0,t.y)(s.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),n=h.get(t.id),i={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,D.E)(n,i)){let n={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(n).onConflictDoUpdate({target:s.deployments.externalId,set:n})}g.push((0,eg.L)(n?.state,t,a.id,e))}await e$(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:s.deployments.resourceId,id:s.deployments.externalId,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ev)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(s.settings).values({key:ev,value:(0,D.Y)(k?.value,v,e)}).onConflictDoUpdate({target:s.settings.key,set:{value:(0,D.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,D.Q)(y,p,b,(0,D.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,$.S)(d,o,t.deploymentId);if(!i.ok){if(n.push(`vercel/${o.name}: current deployment: ${i.error}`),await eM(i,e))return void await I();v.push(t.deploymentId);continue}let l=i.data;for(let[e,t]of eR([l]))m.set(e,t);let u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(u).onConflictDoUpdate({target:s.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):v.push(t.deploymentId)}await I(),await eN(y,b,p,{now:e,afterDeploy:i,errors:n,label:o.name}),await eC(y,e,n,o.name,m)}}}async function eP(e){let n=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!n.length)return;let o=await (0,r.f)().select().from(s.monitors).where((0,t.b)((0,t.y)(s.monitors.resourceId,n.map(e=>e.id)),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:s.deployments.resourceId}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,n.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"building"),(0,t.B)(s.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,x.q)(n.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(s.snapshots).where((0,t.y)(s.snapshots.resourceId,n.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(n.map(e=>[e.id,e])),f=(0,i.P)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,i.R)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n))await (0,r.f)().update(s.resources).set({meta:a.B`${s.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(s.resources.id,e));for(let t of n){let n=o.filter(e=>e.resourceId===t.id),i=(0,eg.V)({monitors:n.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=n.find(e=>"err"===e.state)??n.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:n.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(s.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:s.snapshots.resourceId,set:{state:i,data:a.B`${s.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function ez(e,t={}){let a={writeLastRun:eS,refreshApps:eP,refreshNetwork:K.x,invalidate:l.f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,ey.f)(t)}`)}if(e.done.some(e=>K.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,ey.f)(t)}`)}}finally{a.invalidate((0,u.o)(e.tried??e.done))}}async function eB(e,t,a,r={evaluate:d.$,deliver:h.q,digest:h.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,ey.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ey.f)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,Y.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,ey.f)(e)}`)}return n}async function e_(e,t,a,r){let n=[],s=[];for(let i of e){if(Date.now()>t){a.push(`${i}: skipped, time budget used`);continue}if((0,Y.z)(i,t,Date.now())){s.push(i);try{await r(i),n.push(i)}catch(e){a.push(`${i}: ${(0,ey.f)(e)}`)}}}return{done:n,tried:s}}async function eU(e){let a,i=new Date,o=await q(i);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(s.collectorRuns).values({startedAt:i,trigger:"builtin"===e?"manual":e}).returning({id:s.collectorRuns.id})}catch(e){throw await G(o).catch(()=>void 0),e}let l=[],u=[],d=0,f=i.getTime()+Y.p,p=process.cpuUsage(),w=()=>{let e=process.cpuUsage(p);return Math.round((e.user+e.system)/1e3)},h=e=>console.info(`collector ${e} +${Date.now()-i.getTime()}ms cpu ${w()}ms`);try{h("start");let{lastRun:t,afterDeploy:a}=await eA(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,g.I)(),{due:s,early:o}=(0,Y._)((0,Y.S)(t,i,r,n),(0,k.Y)(a),n),p=!1,w=e=>o||!p?e.filter(e=>"security"!==e):e,y=s.filter(e=>Y.u.includes(e)),I=y.includes("alerts")?f-Y.X:f,$=await eE(s,l);h(`due ${s.join(",")}`);let{done:D,tried:x}=await e_(s.filter(e=>!Y.u.includes(e)),I,l,async e=>{if(h(`task ${e}`),"heartbeats"===e){let e=new Date;d+=await (0,c.r)(e,(t,a)=>null!==(0,A.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(d+=await eD(new Date,I,l,r,$)),"vercel"===e&&await eT(new Date,I,l,(0,S.Y)(a));let t=eI[e];t&&await t({now:new Date,deadline:I,errors:l,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,I,l),"domains"===e&&await (0,K.H)(new Date,I,l),"tls"===e&&await (0,K.V)(new Date,I,l),"rdap"===e&&await (0,K.W)(new Date,I,l),"eol"===e&&await (0,K.i)(new Date,I,l),"node"===e&&(await eu(new Date,I,l),await ew(new Date,I,l)),"status"===e&&await (0,v.i)(new Date),"logs"===e&&await (0,m._)(new Date,I,l),"pageviews"===e&&await (0,b.f)(new Date,I,l),"security"===e&&(p=(await (0,k.U)({now:i,deadline:I,errors:l,paused:n,early:o})).complete)});u.push(...D),h("main done"),await ez({lastRun:t,done:w(u),tried:x,started:i,errors:l}),h("settled");let E=await eB(y,f,l);h("post done"),E.length&&await eS({...t,...Object.fromEntries(w([...u,...E]).map(e=>[e,i.toISOString()]))}),u.push(...E)}catch(e){l.push(`run: ${(0,ey.f)(e)}`)}finally{let e=Date.now()-i.getTime();await (0,r.f)().update(s.collectorRuns).set({finishedAt:new Date,ok:0===l.length,errorSummary:l.join("\n").slice(0,2e3)||null,durationMs:e,tasks:u,checks:d}).where((0,t.u)(s.collectorRuns.id,a.id)).catch(()=>void 0),await G(o).catch(()=>void 0),process.env.VERCEL&&await (0,n.f)(w())}return{skipped:!1,ok:0===l.length,tasks:u,checks:d,durationMs:Date.now()-i.getTime(),errors:l}}e.s(["f",0,eU],956846)},703352,948736,873354,655060,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(502240);async function i(e,o,l=new Map){if(!e.length)return 0;let u=await (0,r.f)().select({app:n.deployments.resourceId,id:n.deployments.externalId,source:n.deployments.source,branch:n.deployments.branch,sha:n.deployments.commitSha}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,e.map(e=>e.id)),(0,t.u)(n.deployments.isCurrent,!0))),d=0;for(let i of e){let e,c=u.find(e=>e.app===i.id);if(!c)continue;let f=(0,s.O)(i.meta?.productionSource),p=l.get(c.id),w={source:c.source??null,branch:c.branch??null,sha:c.sha??null};if(!(e=p?(0,s.s)({...w,branchFrom:p.branchFrom??null,gitDirty:!0===p.gitDirty}):f?.id===c.id?{kind:f.kind,...f.ref?{ref:f.ref}:{},...f.sha?{sha:f.sha}:{}}:"git"===w.source||"cli"===w.source?(0,s.s)(w):null)){if(f?.at&&f.id!==c.id){let e={...f};delete e.at,await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:e})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}continue}e={...e,id:c.id};let m=!!f?.at&&o.getTime()-Date.parse(f.at)<s.u;if((0,s.v)(f,e)&&m)continue;let h={...e,at:o.toISOString()};await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:h})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}return d}e.s(["f",0,i],703352);var o=e.i(442473),l=e.i(381725),u=e.i(767512),d=e.i(971724),c=e.i(206033),f=e.i(455744),p=e.i(469755),w=e.i(105954),m=e.i(857897);let h=/not enabled/i,g=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),y="Vercel Web Analytics answered in a format the console doesn't recognise.",b=d.z.object({data:d.z.object({pageviews:c.z.number().finite().nonnegative(),visitors:c.z.number().finite().nonnegative()})}),k=d.z.object({data:f.z.array(p.z.unknown())}),v=d.z.object({timestamp:w.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),m.z.NEVER):a}),pageviews:c.z.number().finite().nonnegative().nullish().catch(null)});async function I(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),i=r.fetch??fetch,l=new AbortController,u=setTimeout(()=>l.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),d=r.signal?AbortSignal.any([l.signal,r.signal]):l.signal,c=(0,o.X)(d);async function f(o,u){let f=new URLSearchParams({projectId:a,teamId:t,...u,since:n,until:s});try{let t=await Promise.race([i(`https://api.vercel.com/v1/query/web-analytics/visits/${o}?${f}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:d,cache:"no-store"}),c]),a=null,r=!1;if(401===t.status||403===t.status)a=g("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=g("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),c]).catch(()=>"");h.test(e)?r=!0:a=g("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=g("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),c])}}catch(e){if(d.aborted)throw e;return{kind:"fail",fail:g("format",y)}}}catch{return{kind:"fail",fail:d.aborted?l.signal.aborted&&!r.signal?.aborted?g("transient","Vercel Web Analytics didn't answer in time."):g("transient","Reading Vercel Web Analytics was cancelled."):g("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([f("count",{}),f("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?k.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:g("format",y),i=a.find(e=>"transient"===e.kind);if(i)return i;if(s)return s;if(!n?.success)return g("format",y);let o="body"===e.kind?b.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=v.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return g("format",y);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(o?.success)return{ok:!0,enabled:!0,total:o.data.data.pageviews,visitors:o.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(u),l.abort()}}var A=e.i(943816);async function S(e,t,a){let r=await (0,l.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,o.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await I(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,u.r)(r.appId,{pageviews:(0,A.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}e.s(["f",0,S],948736);var $=e.i(422067),D=e.i(433609),x=e.i(800523),E=e.i(479301);let j="security.afterDeploy",M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=e=>"string"==typeof e&&e.length>0&&e.length<=100;function N(e){let t={pending:{},checked:{}};if(!M(e))return t;if(M(e.pending))for(let[a,r]of Object.entries(e.pending)){if(!(0,E.f)(a)||!M(r)||!O(r.id)||"string"!=typeof r.at||Number.isNaN(Date.parse(r.at)))continue;let e="number"==typeof r.attempts&&Number.isInteger(r.attempts)&&r.attempts>=0?Math.min(r.attempts,3):0;t.pending[a]={id:r.id,at:r.at,attempts:e,...!0===r.next?{next:!0}:{},...!0===r.deps?{deps:!0}:{}}}if(M(e.checked))for(let[a,r]of Object.entries(e.checked))(0,E.f)(a)&&O(r)&&(t.checked[a]=r);return t}let R=e=>Object.keys(e.pending).length>0;function C(e,t,a){let r={pending:{...e.pending},checked:{...e.checked}},n=!1;for(let e of t)(0,E.f)(e.appId)&&O(e.deploymentId)&&r.checked[e.appId]!==e.deploymentId&&r.pending[e.appId]?.id!==e.deploymentId&&(r.pending[e.appId]={id:e.deploymentId,at:a.toISOString(),attempts:0},n=!0);return{state:r,changed:n}}function T(e,t){let a,r={...e.pending},n={...e.checked};for(let e of t){let t=r[e];t&&(delete r[e],delete n[e],n[e]=t.id)}return{pending:r,checked:(a=Object.entries(n)).length<=500?n:Object.fromEntries(a.slice(a.length-500))}}function P(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?T(e,a):e}let z=(e,t)=>Object.entries(e.pending).filter(([,e])=>!e[t]).map(([e])=>e);function B(e,t){let a={},r=[];for(let[n,s]of Object.entries(e.pending)){let e={...s};t.hosting&&!e.next&&(t.nextDone?.has(n)?e.next=!0:t.nextStarted?.has(n)&&(e.attempts=Math.min(e.attempts+1,3))),t.devops&&!e.deps&&t.depsDone?.has(n)&&(e.deps=!0),a[n]=e,((e.next||!t.hosting)&&(e.deps||!t.devops)||e.attempts>=3)&&r.push(n)}return T({pending:a,checked:e.checked},r)}e.s(["Z",0,j,"X",0,function(e){var t,a;let r=e.currentId;return r&&e.state.checked[e.appId]!==r&&e.state.pending[e.appId]?.id!==r&&(t=e.changedIds,((a=r)&&t.includes(a)?a:null)||e.createdAt&&e.now.getTime()-e.createdAt.getTime()<=216e5)?r:null},"a",0,P,"A",0,R,"B",0,C,"p",0,z,"Y",0,N,"E",0,B],873354);var _=e.i(970465);let U="security.slot",W=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0&&e.length<=100).slice(0,1e3):[],F=(e,t)=>[...new Set([...e,...t])].slice(0,1e3),V=e=>async()=>{let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,e)).limit(1);return a?.value??null},L=e=>async t=>{await (0,r.f)().insert(n.settings).values({key:e,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})},J={read:V(j),write:L(j),readSlot:V(U),writeSlot:L(U),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=N(await t.read()),r=P(a,e.now),n=!e.paused.has("hosting"),s=!e.paused.has("devops"),i=n?z(r,"next"):[],o=s?z(r,"deps"):[],l=e.early?null:function(e,t){let a=e&&"object"==typeof e&&!Array.isArray(e)?e:{};if(a.slot!==t)return{slot:t,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let r="number"==typeof a.runs&&Number.isInteger(a.runs)&&a.runs>=0?a.runs:0,n={};if(a.cut&&"object"==typeof a.cut&&!Array.isArray(a.cut))for(let[e,t]of Object.entries(a.cut).slice(0,1e3))e.length<=100&&"number"==typeof t&&Number.isInteger(t)&&t>0&&(n[e]=Math.min(t,2));return{slot:t,runs:r,next:W(a.next),repos:W(a.repos),cut:n,nextDone:!0===a.nextDone,depsDone:!0===a.depsDone}}(await t.readSlot(),new Date((0,$.G)("security",e.now)).toISOString()),u=!!l&&n&&!l.nextDone,d=!!l&&s&&!l.depsDone,c=n&&(i.length>0||u),f=s&&(o.length>0||d),p={hosting:n,devops:s,nextDone:new Set,nextStarted:new Set,depsDone:new Set},w=async()=>{let a=Math.min(Date.now()+_.y,!l&&f?e.deadline-2*D.d:e.deadline),r=u?[...l.next,...Object.entries(l.cut).filter(([,e])=>e>=2).map(([e])=>e)]:[],n=u?{first:i,skip:[...new Set(r)].filter(e=>!i.includes(e))}:{only:i},s=await t.nextCheck(a,n);for(let t of s.failed)e.errors.push(`security ${t}`);for(let e of s.done)p.nextDone.add(e);for(let e of i)s.listed.includes(e)||p.nextDone.add(e);for(let e of s.started)p.nextStarted.add(e);if(u){let e=new Set(s.done);for(let t of(l.next=F(l.next,s.done),s.started))e.has(t)||(l.cut[t]=Math.min((l.cut[t]??0)+1,2));l.nextDone=s.listed.every(t=>e.has(t)||(l.cut[t]??0)>=2)}},m=async()=>{let a=await t.depsStep(Math.min(Date.now()+D.o,e.deadline),d?{marked:o,onlyMarked:!1,skip:l.repos}:{marked:o,onlyMarked:!0});for(let t of(a.problem&&e.errors.push(`security deps: ${a.problem}`),a.settled))p.depsDone.add(t);d&&(l.repos=F(l.repos,a.done),l.depsDone=a.complete)};try{l&&l.runs++,l?(f&&await m(),c&&await w()):(c&&await w(),f&&await m())}finally{let e=null;if(l)try{await t.writeSlot(l)}catch(t){e=t}try{let e=B(r,p);JSON.stringify(e)!==JSON.stringify(a)&&await t.write(e)}catch(t){e??=t}if(e)throw e}return{complete:!l||(l.nextDone||!n)&&(l.depsDone||!s)||l.runs>=20}}async function q(e,t,a=J){if(!e.length)return!1;let{state:r,changed:n}=C(N(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>R(N(e)),"U",0,Y],655060)}]})();
8
8
 
9
9
  //# sourceMappingURL=src_lib_0pyyxm3m1rttg._.js.map
@@ -4,6 +4,6 @@
4
4
  where (ops.settings.value->>'until')::timestamptz < ${e.toISOString()}::timestamptz
5
5
  returning key`);return(0,J.f)(s).length>0?t:null}async function G(e){await (0,r.f)().execute(a.B`
6
6
  update ops.settings set value = jsonb_build_object('until', '1970-01-01T00:00:00Z'), updated_at = now()
7
- where key = 'collector.lease' and value->>'owner' = ${e}`)}var K=e.i(679270);let Z=/^v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:-([0-9A-Za-z.-]{1,64}))?(?:\+[0-9A-Za-z.-]{1,64})?$/,H=/^\d{4}-\d{2}-\d{2}$/;function X(e){let t="string"==typeof e?Z.exec(e.trim()):null;if(!t)return null;let[a,r,n]=[t[1],t[2],t[3]].map(Number);return{major:a,minor:r,patch:n,pre:t[4]??null,text:`${a}.${r}.${n}${t[4]?`-${t[4]}`:""}`}}function Q(e,t){return e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:e.pre===t.pre?0:null===e.pre?1:null===t.pre||e.pre<t.pre?-1:1}function ee(e){let t=(e&&"object"==typeof e?e:null)?.result?.releases;if(!Array.isArray(t)||0===t.length)return null;let a=[];for(let e of t){if(!e||"object"!=typeof e||"string"!=typeof e.name||"boolean"!=typeof e.isEol||null!=e.eolFrom&&("string"!=typeof e.eolFrom||!H.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var et=e.i(583521);let ea="runtime.node";function er(e=process.env){let t=(0,et.N)(e,"NO_UPDATE_CHECK"),a=t?.value.trim()??"";return{off:""!==a&&!/^(0|false|no|off)$/i.test(a),name:t?.name??"WATCHBELL_NO_UPDATE_CHECK"}}async function en(e,t,a,r){let n;try{n=await a(e,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(r),cache:"no-store"})}catch{return{ok:!1,error:`Couldn't reach ${t}`}}if(!n.ok)return{ok:!1,error:`${t} returned an error (${n.status})`};try{return{ok:!0,body:await n.json()}}catch{return{ok:!1,error:`${t} answered in a format the console doesn't recognise`}}}async function es(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([en("https://nodejs.org/dist/index.json","nodejs.org",t,a),en("https://endoflife.date/api/v1/products/nodejs/","endoflife.date",t,a)]),s=r.ok?function(e){if(!Array.isArray(e)||0===e.length)return null;let t=[],a=new Map;for(let r of e){if(!r||"object"!=typeof r||"boolean"!=typeof r.security)return null;let e=X(r.version);if(!e||null!==e.pre||!String(r.version).startsWith("v"))return null;r.security&&t.push(e);let n=a.get(e.major);(!n||Q(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>Q(t,e)),{security:t.map(e=>e.text),latest:Object.fromEntries([...a].sort((e,t)=>t[0]-e[0]).map(([e,t])=>[String(e),t.text]))}}(r.body):null,i=n.ok?ee(n.body):null,o=e=>`${e} answered in a format the console doesn't recognise`;return{index:s,indexError:r.ok?s?null:o("nodejs.org"):r.error,cycles:i,cyclesError:n.ok?i?null:o("endoflife.date"):n.error}}let ei=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function el(){var e;let[a]=await (0,r.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,ea)).limit(1);return a?(e=a.value)&&"object"==typeof e?{index:function(e){let t=e&&"object"==typeof e?e:null;if(!t||!Array.isArray(t.security)||!t.latest||"object"!=typeof t.latest)return null;let a=t.security.map(X),r=Object.entries(t.latest).map(([e,t])=>[e,X(t)]);return a.some(e=>!e)||r.some(([e,t])=>!t||String(t.major)!==e)?null:{security:a.map(e=>e.text),latest:Object.fromEntries(r.map(([e,t])=>[e,t.text]))}}(e.index),indexCheckedAt:ei(e.indexCheckedAt),indexError:eo(e.indexError),cycles:ee({result:{releases:e.cycles}}),cyclesCheckedAt:ei(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function eu(e,t,a,n=process.env){let i;if(er(n).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await es({timeoutMs:Math.min(8e3,o)}),u=await el();l.indexError&&a.push(`node: ${l.indexError}`),l.cyclesError&&a.push(`node: ${l.cyclesError}`);let d=(i=e.toISOString(),{index:l.index??u?.index??null,indexCheckedAt:i,indexError:l.indexError,cycles:l.cycles??u?.cycles??null,cyclesCheckedAt:i,cyclesError:l.cyclesError});await (0,r.f)().insert(s.settings).values({key:ea,value:d}).onConflictDoUpdate({target:s.settings.key,set:{value:d,updatedAt:e}})}var ed=e.i(77193);let ec=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ef=e=>"string"==typeof e&&ec.test(e);async function ep(e={}){let t,a=e.fetch??fetch;try{t=await a("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(e.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!t.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${t.status})`};try{let e=await t.json();return ef(e.version)?{ok:!0,version:e.version}:{ok:!1,error:"registry.npmjs.org answered without a version"}}catch{return{ok:!1,error:"registry.npmjs.org answered in a format the console doesn't recognise"}}}async function ew(e,t,a,n=process.env,i){let o=function(e=process.env,t="1.7.0"){let a=e.WATCHBELL_VERSION?.trim();if(ef(a))return a;let r=t?.trim();return ef(r)?r:null}(n);if(!o||"selfhost"!==(0,ed.c)(n)||er(n).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ep({fetch:i,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(s.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(s.settings).values({key:"watchbell.seenVersion",value:{version:o}}).onConflictDoNothing({target:s.settings.key})}var em=e.i(515743),eh=e.i(336030),eg=e.i(905685),ey=e.i(751762);e.i(794713);let eb="collector.lastRun",ek="vercel.backoffUntil",ev="vercel.currentMiss",eI={supabase:x.N,supabaseUsage:x.y,neon:x.h,firebase:x.g,firebaseUsage:x.x,extraDbs:C};async function eA(){let e=await (0,r.f)().select({key:s.settings.key,value:s.settings.value}).from(s.settings).where((0,t.y)(s.settings.key,[eb,S.Z])).limit(2);return{lastRun:e.find(e=>e.key===eb)?.value??{},afterDeploy:e.find(e=>e.key===S.Z)?.value??null}}async function eS(e){await (0,r.f)().insert(s.settings).values({key:eb,value:e}).onConflictDoUpdate({target:s.settings.key,set:{value:e,updatedAt:new Date}})}let e$=e=>(0,p.f)(e);async function eD(e,n,i,o,l=[]){let u=(await (0,r.f)().select({m:s.monitors,app:s.resources}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)((0,t.u)(s.monitors.kind,"http"),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).orderBy(a.B`${s.monitors.lastCheckedAt} asc nulls first`,s.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,V.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,n,Date.now());return null===t?Promise.resolve(null):(0,V.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,em.C)(e)})}),c=u.flatMap((e,t)=>d[t]?[{...e,r:d[t]}]:[]);if(c.length<u.length&&i.push(`checks: ${u.length-c.length} monitors skipped, time budget used`),!c.length)return 0;let f=[];for(let t of c)await (0,eh.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(s.checks).values(f.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,A.x)(l,{monitorId:t.id,appId:a.id},e)}))),await e$(f.map(({m:t,app:a,r})=>(0,eg.F)({resourceId:a.id,path:(0,D.K)(t.url),prev:t.state,next:(0,eg.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ex=["checks","heartbeats"];async function eE(e,t,a=f.f){if(!ex.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ey.f)(e)}`),[]}}async function ej(e){let[a]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ek)).limit(1),n=a?.value?.until;return!!n&&e.getTime()<new Date(n).getTime()}async function eM(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let a={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,r.f)().insert(s.settings).values({key:ek,value:a}).onConflictDoUpdate({target:s.settings.key,set:{value:a,updatedAt:t}}),!0}let eO=e=>a.B`coalesce(${s.deployments.externalId} = ${e}::text, false)`;async function eN(e,n,i,o,l=k.m){let u=[];try{for(let l of e){let e=n.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,D.a)(e.map(e=>({id:e.id,createdAt:e.createdAt??new Date(0)})),(l.externalId?i.get(l.externalId):null)??null),f=await (0,r.f)().update(s.deployments).set({isCurrent:eO(d),isPreviousProduction:eO(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(s.deployments.resourceId,l.id),(0,t.F)(a.B`${s.deployments.isCurrent} is distinct from ${eO(d)}`,a.B`${s.deployments.isPreviousProduction} is distinct from ${eO(c)}`))).returning({id:s.deployments.externalId}),p=(0,S.X)({appId:l.id,currentId:d,changedIds:f.map(e=>e.id),createdAt:e.find(e=>e.id===d)?.createdAt??null,state:o.afterDeploy,now:o.now});p&&u.push({appId:l.id,deploymentId:p})}}finally{if(u.length)try{await l(u,o.now)}catch(e){o.errors.push(`vercel/${o.label}: after-deploy security check not scheduled: ${(0,ey.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eC(e,t,a,r,n=new Map,s=y.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ey.f)(e)}`)}}async function eT(e,a,n,i){if(await ej(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(s.accounts).where((0,t.b)((0,t.u)(s.accounts.provider,"vercel"),(0,t.u)(s.accounts.status,"ok"))))){let d=(0,w.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){n.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,u.id),(0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),p=await (0,$.X)(d);if(!p.ok){let a=(0,o.E)({ok:!1,kind:p.kind,error:p.error});if(a&&await (0,r.f)().update(s.accounts).set({...a,updatedAt:e}).where((0,t.u)(s.accounts.id,u.id)),n.push(`vercel/${u.label}: ${p.error}`),await eM(p,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of p.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void n.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,$.W)(d,o),(0,$.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(n.push(`vercel/${o.name}: ${t.error}`),await eM(t,e))return;continue}let p=new Map(l.data.map(e=>[e.id,e.currentDeploymentId])),w=u.data.filter(e=>f.has(e.projectId)),m=eR(w),h=new Map((w.length?await (0,r.f)().select({externalId:s.deployments.externalId,state:s.deployments.state,target:s.deployments.target,branch:s.deployments.branch,commitSha:s.deployments.commitSha,commitMessage:s.deployments.commitMessage,source:s.deployments.source,url:s.deployments.url,buildingAt:s.deployments.buildingAt,readyAt:s.deployments.readyAt}).from(s.deployments).where((0,t.y)(s.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),n=h.get(t.id),i={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,D.E)(n,i)){let n={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(n).onConflictDoUpdate({target:s.deployments.externalId,set:n})}g.push((0,eg.L)(n?.state,t,a.id,e))}await e$(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:s.deployments.resourceId,id:s.deployments.externalId,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ev)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(s.settings).values({key:ev,value:(0,D.Y)(k?.value,v,e)}).onConflictDoUpdate({target:s.settings.key,set:{value:(0,D.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,D.Q)(y,p,b,(0,D.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,$.S)(d,o,t.deploymentId);if(!i.ok){if(n.push(`vercel/${o.name}: current deployment: ${i.error}`),await eM(i,e))return void await I();v.push(t.deploymentId);continue}let l=i.data;for(let[e,t]of eR([l]))m.set(e,t);let u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(u).onConflictDoUpdate({target:s.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):v.push(t.deploymentId)}await I(),await eN(y,b,p,{now:e,afterDeploy:i,errors:n,label:o.name}),await eC(y,e,n,o.name,m)}}}async function eP(e){let n=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!n.length)return;let o=await (0,r.f)().select().from(s.monitors).where((0,t.b)((0,t.y)(s.monitors.resourceId,n.map(e=>e.id)),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:s.deployments.resourceId}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,n.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"building"),(0,t.B)(s.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,x.q)(n.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(s.snapshots).where((0,t.y)(s.snapshots.resourceId,n.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(n.map(e=>[e.id,e])),f=(0,i.P)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,i.R)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n))await (0,r.f)().update(s.resources).set({meta:a.B`${s.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(s.resources.id,e));for(let t of n){let n=o.filter(e=>e.resourceId===t.id),i=(0,eg.V)({monitors:n.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=n.find(e=>"err"===e.state)??n.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:n.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(s.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:s.snapshots.resourceId,set:{state:i,data:a.B`${s.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function ez(e,t={}){let a={writeLastRun:eS,refreshApps:eP,refreshNetwork:K.x,invalidate:l.f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,ey.f)(t)}`)}if(e.done.some(e=>K.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,ey.f)(t)}`)}}finally{a.invalidate((0,u.o)(e.tried??e.done))}}async function eB(e,t,a,r={evaluate:d.$,deliver:h.q,digest:h.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,ey.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ey.f)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,Y.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,ey.f)(e)}`)}return n}async function e_(e,t,a,r){let n=[],s=[];for(let i of e){if(Date.now()>t){a.push(`${i}: skipped, time budget used`);continue}if((0,Y.z)(i,t,Date.now())){s.push(i);try{await r(i),n.push(i)}catch(e){a.push(`${i}: ${(0,ey.f)(e)}`)}}}return{done:n,tried:s}}async function eU(e){let a,i=new Date,o=await q(i);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(s.collectorRuns).values({startedAt:i,trigger:"builtin"===e?"manual":e}).returning({id:s.collectorRuns.id})}catch(e){throw await G(o).catch(()=>void 0),e}let l=[],u=[],d=0,f=i.getTime()+Y.p,p=process.cpuUsage(),w=()=>{let e=process.cpuUsage(p);return Math.round((e.user+e.system)/1e3)},h=e=>console.info(`collector ${e} +${Date.now()-i.getTime()}ms cpu ${w()}ms`);try{h("start");let{lastRun:t,afterDeploy:a}=await eA(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,g.I)(),{due:s,early:o}=(0,Y._)((0,Y.S)(t,i,r,n),(0,k.Y)(a),n),p=!1,w=e=>o||!p?e.filter(e=>"security"!==e):e,y=s.filter(e=>Y.u.includes(e)),I=y.includes("alerts")?f-Y.X:f,$=await eE(s,l);h(`due ${s.join(",")}`);let{done:D,tried:x}=await e_(s.filter(e=>!Y.u.includes(e)),I,l,async e=>{if(h(`task ${e}`),"heartbeats"===e){let e=new Date;d+=await (0,c.r)(e,(t,a)=>null!==(0,A.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(d+=await eD(new Date,I,l,r,$)),"vercel"===e&&await eT(new Date,I,l,(0,S.Y)(a));let t=eI[e];t&&await t({now:new Date,deadline:I,errors:l,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,I,l),"domains"===e&&await (0,K.H)(new Date,I,l),"tls"===e&&await (0,K.V)(new Date,I,l),"rdap"===e&&await (0,K.W)(new Date,I,l),"eol"===e&&await (0,K.i)(new Date,I,l),"node"===e&&(await eu(new Date,I,l),await ew(new Date,I,l)),"status"===e&&await (0,v.i)(new Date),"logs"===e&&await (0,m._)(new Date,I,l),"pageviews"===e&&await (0,b.f)(new Date,I,l),"security"===e&&(p=(await (0,k.U)({now:i,deadline:I,errors:l,paused:n,early:o})).complete)});u.push(...D),h("main done"),await ez({lastRun:t,done:w(u),tried:x,started:i,errors:l}),h("settled");let E=await eB(y,f,l);h("post done"),E.length&&await eS({...t,...Object.fromEntries(w([...u,...E]).map(e=>[e,i.toISOString()]))}),u.push(...E)}catch(e){l.push(`run: ${(0,ey.f)(e)}`)}finally{let e=Date.now()-i.getTime();await (0,r.f)().update(s.collectorRuns).set({finishedAt:new Date,ok:0===l.length,errorSummary:l.join("\n").slice(0,2e3)||null,durationMs:e,tasks:u,checks:d}).where((0,t.u)(s.collectorRuns.id,a.id)).catch(()=>void 0),await G(o).catch(()=>void 0),process.env.VERCEL&&await (0,n.f)(w())}return{skipped:!1,ok:0===l.length,tasks:u,checks:d,durationMs:Date.now()-i.getTime(),errors:l}}e.s(["f",0,eU],956846)},703352,948736,873354,655060,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(502240);async function i(e,o,l=new Map){if(!e.length)return 0;let u=await (0,r.f)().select({app:n.deployments.resourceId,id:n.deployments.externalId,source:n.deployments.source,branch:n.deployments.branch,sha:n.deployments.commitSha}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,e.map(e=>e.id)),(0,t.u)(n.deployments.isCurrent,!0))),d=0;for(let i of e){let e,c=u.find(e=>e.app===i.id);if(!c)continue;let f=(0,s.O)(i.meta?.productionSource),p=l.get(c.id),w={source:c.source??null,branch:c.branch??null,sha:c.sha??null};if(!(e=p?(0,s.s)({...w,branchFrom:p.branchFrom??null,gitDirty:!0===p.gitDirty}):f?.id===c.id?{kind:f.kind,...f.ref?{ref:f.ref}:{},...f.sha?{sha:f.sha}:{}}:"git"===w.source||"cli"===w.source?(0,s.s)(w):null)){if(f?.at&&f.id!==c.id){let e={...f};delete e.at,await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:e})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}continue}e={...e,id:c.id};let m=!!f?.at&&o.getTime()-Date.parse(f.at)<s.u;if((0,s.v)(f,e)&&m)continue;let h={...e,at:o.toISOString()};await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:h})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}return d}e.s(["f",0,i],703352);var o=e.i(442473),l=e.i(381725),u=e.i(767512),d=e.i(971724),c=e.i(206033),f=e.i(455744),p=e.i(469755),w=e.i(105954),m=e.i(857897);let h=/not enabled/i,g=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),y="Vercel Web Analytics answered in a format the console doesn't recognise.",b=d.z.object({data:d.z.object({pageviews:c.z.number().finite().nonnegative(),visitors:c.z.number().finite().nonnegative()})}),k=d.z.object({data:f.z.array(p.z.unknown())}),v=d.z.object({timestamp:w.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),m.z.NEVER):a}),pageviews:c.z.number().finite().nonnegative().nullish().catch(null)});async function I(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),i=r.fetch??fetch,l=new AbortController,u=setTimeout(()=>l.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),d=r.signal?AbortSignal.any([l.signal,r.signal]):l.signal,c=(0,o.X)(d);async function f(o,u){let f=new URLSearchParams({projectId:a,teamId:t,...u,since:n,until:s});try{let t=await Promise.race([i(`https://api.vercel.com/v1/query/web-analytics/visits/${o}?${f}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:d,cache:"no-store"}),c]),a=null,r=!1;if(401===t.status||403===t.status)a=g("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=g("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),c]).catch(()=>"");h.test(e)?r=!0:a=g("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=g("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),c])}}catch(e){if(d.aborted)throw e;return{kind:"fail",fail:g("format",y)}}}catch{return{kind:"fail",fail:d.aborted?l.signal.aborted&&!r.signal?.aborted?g("transient","Vercel Web Analytics didn't answer in time."):g("transient","Reading Vercel Web Analytics was cancelled."):g("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([f("count",{}),f("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?k.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:g("format",y),i=a.find(e=>"transient"===e.kind);if(i)return i;if(s)return s;if(!n?.success)return g("format",y);let o="body"===e.kind?b.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=v.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return g("format",y);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(o?.success)return{ok:!0,enabled:!0,total:o.data.data.pageviews,visitors:o.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(u),l.abort()}}var A=e.i(943816);async function S(e,t,a){let r=await (0,l.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,o.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await I(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,u.r)(r.appId,{pageviews:(0,A.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}e.s(["f",0,S],948736);var $=e.i(422067),D=e.i(433609),x=e.i(800523),E=e.i(479301);let j="security.afterDeploy",M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=e=>"string"==typeof e&&e.length>0&&e.length<=100;function N(e){let t={pending:{},checked:{}};if(!M(e))return t;if(M(e.pending))for(let[a,r]of Object.entries(e.pending)){if(!(0,E.f)(a)||!M(r)||!O(r.id)||"string"!=typeof r.at||Number.isNaN(Date.parse(r.at)))continue;let e="number"==typeof r.attempts&&Number.isInteger(r.attempts)&&r.attempts>=0?Math.min(r.attempts,3):0;t.pending[a]={id:r.id,at:r.at,attempts:e,...!0===r.next?{next:!0}:{},...!0===r.deps?{deps:!0}:{}}}if(M(e.checked))for(let[a,r]of Object.entries(e.checked))(0,E.f)(a)&&O(r)&&(t.checked[a]=r);return t}let R=e=>Object.keys(e.pending).length>0;function C(e,t,a){let r={pending:{...e.pending},checked:{...e.checked}},n=!1;for(let e of t)(0,E.f)(e.appId)&&O(e.deploymentId)&&r.checked[e.appId]!==e.deploymentId&&r.pending[e.appId]?.id!==e.deploymentId&&(r.pending[e.appId]={id:e.deploymentId,at:a.toISOString(),attempts:0},n=!0);return{state:r,changed:n}}function T(e,t){let a,r={...e.pending},n={...e.checked};for(let e of t){let t=r[e];t&&(delete r[e],delete n[e],n[e]=t.id)}return{pending:r,checked:(a=Object.entries(n)).length<=500?n:Object.fromEntries(a.slice(a.length-500))}}function P(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?T(e,a):e}let z=(e,t)=>Object.entries(e.pending).filter(([,e])=>!e[t]).map(([e])=>e);function B(e,t){let a={},r=[];for(let[n,s]of Object.entries(e.pending)){let e={...s};t.hosting&&!e.next&&(t.nextDone?.has(n)?e.next=!0:t.nextStarted?.has(n)&&(e.attempts=Math.min(e.attempts+1,3))),t.devops&&!e.deps&&t.depsDone?.has(n)&&(e.deps=!0),a[n]=e,((e.next||!t.hosting)&&(e.deps||!t.devops)||e.attempts>=3)&&r.push(n)}return T({pending:a,checked:e.checked},r)}e.s(["Z",0,j,"X",0,function(e){var t,a;let r=e.currentId;return r&&e.state.checked[e.appId]!==r&&e.state.pending[e.appId]?.id!==r&&(t=e.changedIds,((a=r)&&t.includes(a)?a:null)||e.createdAt&&e.now.getTime()-e.createdAt.getTime()<=216e5)?r:null},"a",0,P,"A",0,R,"B",0,C,"p",0,z,"Y",0,N,"E",0,B],873354);var _=e.i(970465);let U="security.slot",W=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0&&e.length<=100).slice(0,1e3):[],F=(e,t)=>[...new Set([...e,...t])].slice(0,1e3),V=e=>async()=>{let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,e)).limit(1);return a?.value??null},L=e=>async t=>{await (0,r.f)().insert(n.settings).values({key:e,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})},J={read:V(j),write:L(j),readSlot:V(U),writeSlot:L(U),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=N(await t.read()),r=P(a,e.now),n=!e.paused.has("hosting"),s=!e.paused.has("devops"),i=n?z(r,"next"):[],o=s?z(r,"deps"):[],l=e.early?null:function(e,t){let a=e&&"object"==typeof e&&!Array.isArray(e)?e:{};if(a.slot!==t)return{slot:t,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let r="number"==typeof a.runs&&Number.isInteger(a.runs)&&a.runs>=0?a.runs:0,n={};if(a.cut&&"object"==typeof a.cut&&!Array.isArray(a.cut))for(let[e,t]of Object.entries(a.cut).slice(0,1e3))e.length<=100&&"number"==typeof t&&Number.isInteger(t)&&t>0&&(n[e]=Math.min(t,2));return{slot:t,runs:r,next:W(a.next),repos:W(a.repos),cut:n,nextDone:!0===a.nextDone,depsDone:!0===a.depsDone}}(await t.readSlot(),new Date((0,$.G)("security",e.now)).toISOString()),u=!!l&&n&&!l.nextDone,d=!!l&&s&&!l.depsDone,c=n&&(i.length>0||u),f=s&&(o.length>0||d),p={hosting:n,devops:s,nextDone:new Set,nextStarted:new Set,depsDone:new Set},w=async()=>{let a=Math.min(Date.now()+_.y,!l&&f?e.deadline-2*D.d:e.deadline),r=u?[...l.next,...Object.entries(l.cut).filter(([,e])=>e>=2).map(([e])=>e)]:[],n=u?{first:i,skip:[...new Set(r)].filter(e=>!i.includes(e))}:{only:i},s=await t.nextCheck(a,n);for(let t of s.failed)e.errors.push(`security ${t}`);for(let e of s.done)p.nextDone.add(e);for(let e of i)s.listed.includes(e)||p.nextDone.add(e);for(let e of s.started)p.nextStarted.add(e);if(u){let e=new Set(s.done);for(let t of(l.next=F(l.next,s.done),s.started))e.has(t)||(l.cut[t]=Math.min((l.cut[t]??0)+1,2));l.nextDone=s.listed.every(t=>e.has(t)||(l.cut[t]??0)>=2)}},m=async()=>{let a=await t.depsStep(Math.min(Date.now()+D.o,e.deadline),d?{marked:o,onlyMarked:!1,skip:l.repos}:{marked:o,onlyMarked:!0});for(let t of(a.problem&&e.errors.push(`security deps: ${a.problem}`),a.settled))p.depsDone.add(t);d&&(l.repos=F(l.repos,a.done),l.depsDone=a.complete)};try{l&&l.runs++,l?(f&&await m(),c&&await w()):(c&&await w(),f&&await m())}finally{let e=null;if(l)try{await t.writeSlot(l)}catch(t){e=t}try{let e=B(r,p);JSON.stringify(e)!==JSON.stringify(a)&&await t.write(e)}catch(t){e??=t}if(e)throw e}return{complete:!l||(l.nextDone||!n)&&(l.depsDone||!s)||l.runs>=20}}async function q(e,t,a=J){if(!e.length)return!1;let{state:r,changed:n}=C(N(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>R(N(e)),"U",0,Y],655060)}]})();
7
+ where key = 'collector.lease' and value->>'owner' = ${e}`)}var K=e.i(679270);let Z=/^v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:-([0-9A-Za-z.-]{1,64}))?(?:\+[0-9A-Za-z.-]{1,64})?$/,H=/^\d{4}-\d{2}-\d{2}$/;function X(e){let t="string"==typeof e?Z.exec(e.trim()):null;if(!t)return null;let[a,r,n]=[t[1],t[2],t[3]].map(Number);return{major:a,minor:r,patch:n,pre:t[4]??null,text:`${a}.${r}.${n}${t[4]?`-${t[4]}`:""}`}}function Q(e,t){return e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:e.pre===t.pre?0:null===e.pre?1:null===t.pre||e.pre<t.pre?-1:1}function ee(e){let t=(e&&"object"==typeof e?e:null)?.result?.releases;if(!Array.isArray(t)||0===t.length)return null;let a=[];for(let e of t){if(!e||"object"!=typeof e||"string"!=typeof e.name||"boolean"!=typeof e.isEol||null!=e.eolFrom&&("string"!=typeof e.eolFrom||!H.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var et=e.i(583521);let ea="runtime.node";function er(e=process.env){let t=(0,et.N)(e,"NO_UPDATE_CHECK"),a=t?.value.trim()??"";return{off:""!==a&&!/^(0|false|no|off)$/i.test(a),name:t?.name??"WATCHBELL_NO_UPDATE_CHECK"}}async function en(e,t,a,r){let n;try{n=await a(e,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(r),cache:"no-store"})}catch{return{ok:!1,error:`Couldn't reach ${t}`}}if(!n.ok)return{ok:!1,error:`${t} returned an error (${n.status})`};try{return{ok:!0,body:await n.json()}}catch{return{ok:!1,error:`${t} answered in a format the console doesn't recognise`}}}async function es(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([en("https://nodejs.org/dist/index.json","nodejs.org",t,a),en("https://endoflife.date/api/v1/products/nodejs/","endoflife.date",t,a)]),s=r.ok?function(e){if(!Array.isArray(e)||0===e.length)return null;let t=[],a=new Map;for(let r of e){if(!r||"object"!=typeof r||"boolean"!=typeof r.security)return null;let e=X(r.version);if(!e||null!==e.pre||!String(r.version).startsWith("v"))return null;r.security&&t.push(e);let n=a.get(e.major);(!n||Q(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>Q(t,e)),{security:t.map(e=>e.text),latest:Object.fromEntries([...a].sort((e,t)=>t[0]-e[0]).map(([e,t])=>[String(e),t.text]))}}(r.body):null,i=n.ok?ee(n.body):null,o=e=>`${e} answered in a format the console doesn't recognise`;return{index:s,indexError:r.ok?s?null:o("nodejs.org"):r.error,cycles:i,cyclesError:n.ok?i?null:o("endoflife.date"):n.error}}let ei=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function el(){var e;let[a]=await (0,r.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,ea)).limit(1);return a?(e=a.value)&&"object"==typeof e?{index:function(e){let t=e&&"object"==typeof e?e:null;if(!t||!Array.isArray(t.security)||!t.latest||"object"!=typeof t.latest)return null;let a=t.security.map(X),r=Object.entries(t.latest).map(([e,t])=>[e,X(t)]);return a.some(e=>!e)||r.some(([e,t])=>!t||String(t.major)!==e)?null:{security:a.map(e=>e.text),latest:Object.fromEntries(r.map(([e,t])=>[e,t.text]))}}(e.index),indexCheckedAt:ei(e.indexCheckedAt),indexError:eo(e.indexError),cycles:ee({result:{releases:e.cycles}}),cyclesCheckedAt:ei(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function eu(e,t,a,n=process.env){let i;if(er(n).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await es({timeoutMs:Math.min(8e3,o)}),u=await el();l.indexError&&a.push(`node: ${l.indexError}`),l.cyclesError&&a.push(`node: ${l.cyclesError}`);let d=(i=e.toISOString(),{index:l.index??u?.index??null,indexCheckedAt:i,indexError:l.indexError,cycles:l.cycles??u?.cycles??null,cyclesCheckedAt:i,cyclesError:l.cyclesError});await (0,r.f)().insert(s.settings).values({key:ea,value:d}).onConflictDoUpdate({target:s.settings.key,set:{value:d,updatedAt:e}})}var ed=e.i(77193);let ec=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ef=e=>"string"==typeof e&&ec.test(e);async function ep(e={}){let t,a=e.fetch??fetch;try{t=await a("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(e.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!t.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${t.status})`};try{let e=await t.json();return ef(e.version)?{ok:!0,version:e.version}:{ok:!1,error:"registry.npmjs.org answered without a version"}}catch{return{ok:!1,error:"registry.npmjs.org answered in a format the console doesn't recognise"}}}async function ew(e,t,a,n=process.env,i){let o=function(e=process.env,t="1.7.1"){let a=e.WATCHBELL_VERSION?.trim();if(ef(a))return a;let r=t?.trim();return ef(r)?r:null}(n);if(!o||"selfhost"!==(0,ed.c)(n)||er(n).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ep({fetch:i,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(s.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(s.settings).values({key:"watchbell.seenVersion",value:{version:o}}).onConflictDoNothing({target:s.settings.key})}var em=e.i(515743),eh=e.i(336030),eg=e.i(905685),ey=e.i(751762);e.i(794713);let eb="collector.lastRun",ek="vercel.backoffUntil",ev="vercel.currentMiss",eI={supabase:x.N,supabaseUsage:x.y,neon:x.h,firebase:x.g,firebaseUsage:x.x,extraDbs:C};async function eA(){let e=await (0,r.f)().select({key:s.settings.key,value:s.settings.value}).from(s.settings).where((0,t.y)(s.settings.key,[eb,S.Z])).limit(2);return{lastRun:e.find(e=>e.key===eb)?.value??{},afterDeploy:e.find(e=>e.key===S.Z)?.value??null}}async function eS(e){await (0,r.f)().insert(s.settings).values({key:eb,value:e}).onConflictDoUpdate({target:s.settings.key,set:{value:e,updatedAt:new Date}})}let e$=e=>(0,p.f)(e);async function eD(e,n,i,o,l=[]){let u=(await (0,r.f)().select({m:s.monitors,app:s.resources}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)((0,t.u)(s.monitors.kind,"http"),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).orderBy(a.B`${s.monitors.lastCheckedAt} asc nulls first`,s.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,V.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,n,Date.now());return null===t?Promise.resolve(null):(0,V.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,em.C)(e)})}),c=u.flatMap((e,t)=>d[t]?[{...e,r:d[t]}]:[]);if(c.length<u.length&&i.push(`checks: ${u.length-c.length} monitors skipped, time budget used`),!c.length)return 0;let f=[];for(let t of c)await (0,eh.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(s.checks).values(f.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,A.x)(l,{monitorId:t.id,appId:a.id},e)}))),await e$(f.map(({m:t,app:a,r})=>(0,eg.F)({resourceId:a.id,path:(0,D.K)(t.url),prev:t.state,next:(0,eg.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ex=["checks","heartbeats"];async function eE(e,t,a=f.f){if(!ex.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ey.f)(e)}`),[]}}async function ej(e){let[a]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ek)).limit(1),n=a?.value?.until;return!!n&&e.getTime()<new Date(n).getTime()}async function eM(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let a={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,r.f)().insert(s.settings).values({key:ek,value:a}).onConflictDoUpdate({target:s.settings.key,set:{value:a,updatedAt:t}}),!0}let eO=e=>a.B`coalesce(${s.deployments.externalId} = ${e}::text, false)`;async function eN(e,n,i,o,l=k.m){let u=[];try{for(let l of e){let e=n.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,D.a)(e.map(e=>({id:e.id,createdAt:e.createdAt??new Date(0)})),(l.externalId?i.get(l.externalId):null)??null),f=await (0,r.f)().update(s.deployments).set({isCurrent:eO(d),isPreviousProduction:eO(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(s.deployments.resourceId,l.id),(0,t.F)(a.B`${s.deployments.isCurrent} is distinct from ${eO(d)}`,a.B`${s.deployments.isPreviousProduction} is distinct from ${eO(c)}`))).returning({id:s.deployments.externalId}),p=(0,S.X)({appId:l.id,currentId:d,changedIds:f.map(e=>e.id),createdAt:e.find(e=>e.id===d)?.createdAt??null,state:o.afterDeploy,now:o.now});p&&u.push({appId:l.id,deploymentId:p})}}finally{if(u.length)try{await l(u,o.now)}catch(e){o.errors.push(`vercel/${o.label}: after-deploy security check not scheduled: ${(0,ey.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eC(e,t,a,r,n=new Map,s=y.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ey.f)(e)}`)}}async function eT(e,a,n,i){if(await ej(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(s.accounts).where((0,t.b)((0,t.u)(s.accounts.provider,"vercel"),(0,t.u)(s.accounts.status,"ok"))))){let d=(0,w.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){n.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,u.id),(0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),p=await (0,$.X)(d);if(!p.ok){let a=(0,o.E)({ok:!1,kind:p.kind,error:p.error});if(a&&await (0,r.f)().update(s.accounts).set({...a,updatedAt:e}).where((0,t.u)(s.accounts.id,u.id)),n.push(`vercel/${u.label}: ${p.error}`),await eM(p,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of p.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void n.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,$.W)(d,o),(0,$.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(n.push(`vercel/${o.name}: ${t.error}`),await eM(t,e))return;continue}let p=new Map(l.data.map(e=>[e.id,e.currentDeploymentId])),w=u.data.filter(e=>f.has(e.projectId)),m=eR(w),h=new Map((w.length?await (0,r.f)().select({externalId:s.deployments.externalId,state:s.deployments.state,target:s.deployments.target,branch:s.deployments.branch,commitSha:s.deployments.commitSha,commitMessage:s.deployments.commitMessage,source:s.deployments.source,url:s.deployments.url,buildingAt:s.deployments.buildingAt,readyAt:s.deployments.readyAt}).from(s.deployments).where((0,t.y)(s.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),n=h.get(t.id),i={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,D.E)(n,i)){let n={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(n).onConflictDoUpdate({target:s.deployments.externalId,set:n})}g.push((0,eg.L)(n?.state,t,a.id,e))}await e$(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:s.deployments.resourceId,id:s.deployments.externalId,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ev)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(s.settings).values({key:ev,value:(0,D.Y)(k?.value,v,e)}).onConflictDoUpdate({target:s.settings.key,set:{value:(0,D.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,D.Q)(y,p,b,(0,D.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,$.S)(d,o,t.deploymentId);if(!i.ok){if(n.push(`vercel/${o.name}: current deployment: ${i.error}`),await eM(i,e))return void await I();v.push(t.deploymentId);continue}let l=i.data;for(let[e,t]of eR([l]))m.set(e,t);let u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(u).onConflictDoUpdate({target:s.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):v.push(t.deploymentId)}await I(),await eN(y,b,p,{now:e,afterDeploy:i,errors:n,label:o.name}),await eC(y,e,n,o.name,m)}}}async function eP(e){let n=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!n.length)return;let o=await (0,r.f)().select().from(s.monitors).where((0,t.b)((0,t.y)(s.monitors.resourceId,n.map(e=>e.id)),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:s.deployments.resourceId}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,n.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"building"),(0,t.B)(s.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,x.q)(n.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(s.snapshots).where((0,t.y)(s.snapshots.resourceId,n.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(n.map(e=>[e.id,e])),f=(0,i.P)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,i.R)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),n))await (0,r.f)().update(s.resources).set({meta:a.B`${s.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(s.resources.id,e));for(let t of n){let n=o.filter(e=>e.resourceId===t.id),i=(0,eg.V)({monitors:n.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=n.find(e=>"err"===e.state)??n.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:n.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(s.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:s.snapshots.resourceId,set:{state:i,data:a.B`${s.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function ez(e,t={}){let a={writeLastRun:eS,refreshApps:eP,refreshNetwork:K.x,invalidate:l.f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,ey.f)(t)}`)}if(e.done.some(e=>K.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,ey.f)(t)}`)}}finally{a.invalidate((0,u.o)(e.tried??e.done))}}async function eB(e,t,a,r={evaluate:d.$,deliver:h.q,digest:h.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,ey.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ey.f)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,Y.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,ey.f)(e)}`)}return n}async function e_(e,t,a,r){let n=[],s=[];for(let i of e){if(Date.now()>t){a.push(`${i}: skipped, time budget used`);continue}if((0,Y.z)(i,t,Date.now())){s.push(i);try{await r(i),n.push(i)}catch(e){a.push(`${i}: ${(0,ey.f)(e)}`)}}}return{done:n,tried:s}}async function eU(e){let a,i=new Date,o=await q(i);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(s.collectorRuns).values({startedAt:i,trigger:"builtin"===e?"manual":e}).returning({id:s.collectorRuns.id})}catch(e){throw await G(o).catch(()=>void 0),e}let l=[],u=[],d=0,f=i.getTime()+Y.p,p=process.cpuUsage(),w=()=>{let e=process.cpuUsage(p);return Math.round((e.user+e.system)/1e3)},h=e=>console.info(`collector ${e} +${Date.now()-i.getTime()}ms cpu ${w()}ms`);try{h("start");let{lastRun:t,afterDeploy:a}=await eA(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,g.I)(),{due:s,early:o}=(0,Y._)((0,Y.S)(t,i,r,n),(0,k.Y)(a),n),p=!1,w=e=>o||!p?e.filter(e=>"security"!==e):e,y=s.filter(e=>Y.u.includes(e)),I=y.includes("alerts")?f-Y.X:f,$=await eE(s,l);h(`due ${s.join(",")}`);let{done:D,tried:x}=await e_(s.filter(e=>!Y.u.includes(e)),I,l,async e=>{if(h(`task ${e}`),"heartbeats"===e){let e=new Date;d+=await (0,c.r)(e,(t,a)=>null!==(0,A.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(d+=await eD(new Date,I,l,r,$)),"vercel"===e&&await eT(new Date,I,l,(0,S.Y)(a));let t=eI[e];t&&await t({now:new Date,deadline:I,errors:l,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,I,l),"domains"===e&&await (0,K.H)(new Date,I,l),"tls"===e&&await (0,K.V)(new Date,I,l),"rdap"===e&&await (0,K.W)(new Date,I,l),"eol"===e&&await (0,K.i)(new Date,I,l),"node"===e&&(await eu(new Date,I,l),await ew(new Date,I,l)),"status"===e&&await (0,v.i)(new Date),"logs"===e&&await (0,m._)(new Date,I,l),"pageviews"===e&&await (0,b.f)(new Date,I,l),"security"===e&&(p=(await (0,k.U)({now:i,deadline:I,errors:l,paused:n,early:o})).complete)});u.push(...D),h("main done"),await ez({lastRun:t,done:w(u),tried:x,started:i,errors:l}),h("settled");let E=await eB(y,f,l);h("post done"),E.length&&await eS({...t,...Object.fromEntries(w([...u,...E]).map(e=>[e,i.toISOString()]))}),u.push(...E)}catch(e){l.push(`run: ${(0,ey.f)(e)}`)}finally{let e=Date.now()-i.getTime();await (0,r.f)().update(s.collectorRuns).set({finishedAt:new Date,ok:0===l.length,errorSummary:l.join("\n").slice(0,2e3)||null,durationMs:e,tasks:u,checks:d}).where((0,t.u)(s.collectorRuns.id,a.id)).catch(()=>void 0),await G(o).catch(()=>void 0),process.env.VERCEL&&await (0,n.f)(w())}return{skipped:!1,ok:0===l.length,tasks:u,checks:d,durationMs:Date.now()-i.getTime(),errors:l}}e.s(["f",0,eU],956846)},703352,948736,873354,655060,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(502240);async function i(e,o,l=new Map){if(!e.length)return 0;let u=await (0,r.f)().select({app:n.deployments.resourceId,id:n.deployments.externalId,source:n.deployments.source,branch:n.deployments.branch,sha:n.deployments.commitSha}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,e.map(e=>e.id)),(0,t.u)(n.deployments.isCurrent,!0))),d=0;for(let i of e){let e,c=u.find(e=>e.app===i.id);if(!c)continue;let f=(0,s.O)(i.meta?.productionSource),p=l.get(c.id),w={source:c.source??null,branch:c.branch??null,sha:c.sha??null};if(!(e=p?(0,s.s)({...w,branchFrom:p.branchFrom??null,gitDirty:!0===p.gitDirty}):f?.id===c.id?{kind:f.kind,...f.ref?{ref:f.ref}:{},...f.sha?{sha:f.sha}:{}}:"git"===w.source||"cli"===w.source?(0,s.s)(w):null)){if(f?.at&&f.id!==c.id){let e={...f};delete e.at,await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:e})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}continue}e={...e,id:c.id};let m=!!f?.at&&o.getTime()-Date.parse(f.at)<s.u;if((0,s.v)(f,e)&&m)continue;let h={...e,at:o.toISOString()};await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:h})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}return d}e.s(["f",0,i],703352);var o=e.i(442473),l=e.i(381725),u=e.i(767512),d=e.i(971724),c=e.i(206033),f=e.i(455744),p=e.i(469755),w=e.i(105954),m=e.i(857897);let h=/not enabled/i,g=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),y="Vercel Web Analytics answered in a format the console doesn't recognise.",b=d.z.object({data:d.z.object({pageviews:c.z.number().finite().nonnegative(),visitors:c.z.number().finite().nonnegative()})}),k=d.z.object({data:f.z.array(p.z.unknown())}),v=d.z.object({timestamp:w.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),m.z.NEVER):a}),pageviews:c.z.number().finite().nonnegative().nullish().catch(null)});async function I(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),i=r.fetch??fetch,l=new AbortController,u=setTimeout(()=>l.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),d=r.signal?AbortSignal.any([l.signal,r.signal]):l.signal,c=(0,o.X)(d);async function f(o,u){let f=new URLSearchParams({projectId:a,teamId:t,...u,since:n,until:s});try{let t=await Promise.race([i(`https://api.vercel.com/v1/query/web-analytics/visits/${o}?${f}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:d,cache:"no-store"}),c]),a=null,r=!1;if(401===t.status||403===t.status)a=g("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=g("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),c]).catch(()=>"");h.test(e)?r=!0:a=g("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=g("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),c])}}catch(e){if(d.aborted)throw e;return{kind:"fail",fail:g("format",y)}}}catch{return{kind:"fail",fail:d.aborted?l.signal.aborted&&!r.signal?.aborted?g("transient","Vercel Web Analytics didn't answer in time."):g("transient","Reading Vercel Web Analytics was cancelled."):g("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([f("count",{}),f("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?k.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:g("format",y),i=a.find(e=>"transient"===e.kind);if(i)return i;if(s)return s;if(!n?.success)return g("format",y);let o="body"===e.kind?b.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=v.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return g("format",y);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(o?.success)return{ok:!0,enabled:!0,total:o.data.data.pageviews,visitors:o.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(u),l.abort()}}var A=e.i(943816);async function S(e,t,a){let r=await (0,l.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,o.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await I(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,u.r)(r.appId,{pageviews:(0,A.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}e.s(["f",0,S],948736);var $=e.i(422067),D=e.i(433609),x=e.i(800523),E=e.i(479301);let j="security.afterDeploy",M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=e=>"string"==typeof e&&e.length>0&&e.length<=100;function N(e){let t={pending:{},checked:{}};if(!M(e))return t;if(M(e.pending))for(let[a,r]of Object.entries(e.pending)){if(!(0,E.f)(a)||!M(r)||!O(r.id)||"string"!=typeof r.at||Number.isNaN(Date.parse(r.at)))continue;let e="number"==typeof r.attempts&&Number.isInteger(r.attempts)&&r.attempts>=0?Math.min(r.attempts,3):0;t.pending[a]={id:r.id,at:r.at,attempts:e,...!0===r.next?{next:!0}:{},...!0===r.deps?{deps:!0}:{}}}if(M(e.checked))for(let[a,r]of Object.entries(e.checked))(0,E.f)(a)&&O(r)&&(t.checked[a]=r);return t}let R=e=>Object.keys(e.pending).length>0;function C(e,t,a){let r={pending:{...e.pending},checked:{...e.checked}},n=!1;for(let e of t)(0,E.f)(e.appId)&&O(e.deploymentId)&&r.checked[e.appId]!==e.deploymentId&&r.pending[e.appId]?.id!==e.deploymentId&&(r.pending[e.appId]={id:e.deploymentId,at:a.toISOString(),attempts:0},n=!0);return{state:r,changed:n}}function T(e,t){let a,r={...e.pending},n={...e.checked};for(let e of t){let t=r[e];t&&(delete r[e],delete n[e],n[e]=t.id)}return{pending:r,checked:(a=Object.entries(n)).length<=500?n:Object.fromEntries(a.slice(a.length-500))}}function P(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?T(e,a):e}let z=(e,t)=>Object.entries(e.pending).filter(([,e])=>!e[t]).map(([e])=>e);function B(e,t){let a={},r=[];for(let[n,s]of Object.entries(e.pending)){let e={...s};t.hosting&&!e.next&&(t.nextDone?.has(n)?e.next=!0:t.nextStarted?.has(n)&&(e.attempts=Math.min(e.attempts+1,3))),t.devops&&!e.deps&&t.depsDone?.has(n)&&(e.deps=!0),a[n]=e,((e.next||!t.hosting)&&(e.deps||!t.devops)||e.attempts>=3)&&r.push(n)}return T({pending:a,checked:e.checked},r)}e.s(["Z",0,j,"X",0,function(e){var t,a;let r=e.currentId;return r&&e.state.checked[e.appId]!==r&&e.state.pending[e.appId]?.id!==r&&(t=e.changedIds,((a=r)&&t.includes(a)?a:null)||e.createdAt&&e.now.getTime()-e.createdAt.getTime()<=216e5)?r:null},"a",0,P,"A",0,R,"B",0,C,"p",0,z,"Y",0,N,"E",0,B],873354);var _=e.i(970465);let U="security.slot",W=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0&&e.length<=100).slice(0,1e3):[],F=(e,t)=>[...new Set([...e,...t])].slice(0,1e3),V=e=>async()=>{let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,e)).limit(1);return a?.value??null},L=e=>async t=>{await (0,r.f)().insert(n.settings).values({key:e,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})},J={read:V(j),write:L(j),readSlot:V(U),writeSlot:L(U),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=N(await t.read()),r=P(a,e.now),n=!e.paused.has("hosting"),s=!e.paused.has("devops"),i=n?z(r,"next"):[],o=s?z(r,"deps"):[],l=e.early?null:function(e,t){let a=e&&"object"==typeof e&&!Array.isArray(e)?e:{};if(a.slot!==t)return{slot:t,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let r="number"==typeof a.runs&&Number.isInteger(a.runs)&&a.runs>=0?a.runs:0,n={};if(a.cut&&"object"==typeof a.cut&&!Array.isArray(a.cut))for(let[e,t]of Object.entries(a.cut).slice(0,1e3))e.length<=100&&"number"==typeof t&&Number.isInteger(t)&&t>0&&(n[e]=Math.min(t,2));return{slot:t,runs:r,next:W(a.next),repos:W(a.repos),cut:n,nextDone:!0===a.nextDone,depsDone:!0===a.depsDone}}(await t.readSlot(),new Date((0,$.G)("security",e.now)).toISOString()),u=!!l&&n&&!l.nextDone,d=!!l&&s&&!l.depsDone,c=n&&(i.length>0||u),f=s&&(o.length>0||d),p={hosting:n,devops:s,nextDone:new Set,nextStarted:new Set,depsDone:new Set},w=async()=>{let a=Math.min(Date.now()+_.y,!l&&f?e.deadline-2*D.d:e.deadline),r=u?[...l.next,...Object.entries(l.cut).filter(([,e])=>e>=2).map(([e])=>e)]:[],n=u?{first:i,skip:[...new Set(r)].filter(e=>!i.includes(e))}:{only:i},s=await t.nextCheck(a,n);for(let t of s.failed)e.errors.push(`security ${t}`);for(let e of s.done)p.nextDone.add(e);for(let e of i)s.listed.includes(e)||p.nextDone.add(e);for(let e of s.started)p.nextStarted.add(e);if(u){let e=new Set(s.done);for(let t of(l.next=F(l.next,s.done),s.started))e.has(t)||(l.cut[t]=Math.min((l.cut[t]??0)+1,2));l.nextDone=s.listed.every(t=>e.has(t)||(l.cut[t]??0)>=2)}},m=async()=>{let a=await t.depsStep(Math.min(Date.now()+D.o,e.deadline),d?{marked:o,onlyMarked:!1,skip:l.repos}:{marked:o,onlyMarked:!0});for(let t of(a.problem&&e.errors.push(`security deps: ${a.problem}`),a.settled))p.depsDone.add(t);d&&(l.repos=F(l.repos,a.done),l.depsDone=a.complete)};try{l&&l.runs++,l?(f&&await m(),c&&await w()):(c&&await w(),f&&await m())}finally{let e=null;if(l)try{await t.writeSlot(l)}catch(t){e=t}try{let e=B(r,p);JSON.stringify(e)!==JSON.stringify(a)&&await t.write(e)}catch(t){e??=t}if(e)throw e}return{complete:!l||(l.nextDone||!n)&&(l.depsDone||!s)||l.runs>=20}}async function q(e,t,a=J){if(!e.length)return!1;let{state:r,changed:n}=C(N(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>R(N(e)),"U",0,Y],655060)}]})();
8
8
 
9
9
  //# sourceMappingURL=src_lib_13irheo9qqhgx._.js.map
@@ -0,0 +1,12 @@
1
+ (()=>{"use strict";module.exports=[649297,t=>{function e(t,e){return t.length?t[Math.min(t.length-1,Math.max(0,Math.ceil(e*t.length)-1))]:null}function a(t){let e=new Date(t);return e.setUTCMinutes(0,0,0),e}t.s(["b",0,a,"z",0,function(t){let a=t.filter(t=>!t.inMaintenance),r=a.map(t=>t.latencyMs).filter(t=>null!==t).sort((t,e)=>t-e);return{checks:a.length,failures:a.filter(t=>!t.ok).length,p50Ms:e(r,.5),p95Ms:e(r,.95),maxMs:r.length?r[r.length-1]:null,status5xx:a.filter(t=>null!==t.statusCode&&t.statusCode>=500).length,maintenance:t.length-a.length}},"r",0,function(t,e){let r=a(e).getTime()-6048e5;return new Date(Math.max(r,t?t.getTime()-36e5:r))}])},725321,392710,t=>{var e=t.i(75064),a=t.i(79322),r=t.i(492973);t.i(710075),t.i(788264);var s=t.i(246517),n=t.i(932378),i=t.i(260417),o=t.i(909592);let u="https://api.cloudflare.com/client/v4",l="Account → D1 → Read",c="Account → Account Analytics → Read",d=t=>encodeURIComponent(t),f=e.z.object({success:s.z.boolean(),result:n.z.unknown(),result_info:e.z.object({total_pages:i.z.number().optional()}).nullish()}),h=t=>({ok:!1,kind:"format",error:`Cloudflare answered ${t} in a format the console doesn't recognise.`}),m="Cloudflare didn't answer within 5 seconds.";async function g(t,e,a,r){let s;try{s=await (a.fetch??fetch)(`${u}${t}`,{method:"GET",headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:AbortSignal.timeout(a.timeoutMs??5e3),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?m:"Couldn't reach Cloudflare."}}if(403===s.status&&r)return await s.body?.cancel().catch(()=>void 0),{ok:!1,kind:"scope",status:403,error:`The token can't read this. Add "${r}" to the Cloudflare token.`};if(401===s.status||403===s.status)return await s.body?.cancel().catch(()=>void 0),{ok:!1,kind:"auth",status:s.status,error:`Cloudflare rejected this credential (${s.status}).`};if(429===s.status)return await s.body?.cancel().catch(()=>void 0),{ok:!1,kind:"transient",status:429,retryAfterS:60,error:"Cloudflare says there were too many requests."};if(!s.ok)return await s.body?.cancel().catch(()=>void 0),{ok:!1,kind:"transient",status:s.status,error:`Cloudflare returned an error (${s.status}).`};let n=f.safeParse(await s.json().catch(()=>null));return n.success&&n.data.success?{ok:!0,data:{result:n.data.result,totalPages:n.data.result_info?.total_pages??null}}:h("its answer")}async function b(t,a={}){let s=await g("/accounts?per_page=50",t,a,null);if(!s.ok)return s;let n=o.z.array(e.z.object({id:r.z.string(),name:r.z.string().default("")})).safeParse(s.data.result);return n.success?{ok:!0,data:n.data}:h("the account list")}let z=e.z.object({uuid:r.z.string(),name:r.z.string(),created_at:r.z.string().nullish(),jurisdiction:r.z.string().nullish()});async function k(t,e,a={}){let r=[];for(let s=1;s<=5;s++){let n=await g(`/accounts/${d(e)}/d1/database?per_page=100&page=${s}`,t,a,l);if(!n.ok)return n;let i=o.z.array(z).safeParse(n.data.result);if(!i.success)return h("the D1 database list");if(r.push(...i.data.map(t=>({uuid:t.uuid,name:t.name,createdAt:t.created_at??null,jurisdiction:t.jurisdiction??null}))),!n.data.totalPages||s>=n.data.totalPages||i.data.length<100)break}return{ok:!0,data:r}}let p=e.z.object({file_size:i.z.number().nullish(),num_tables:i.z.number().nullish(),read_replication:e.z.object({mode:r.z.string()}).nullish()});async function w(t,e,a,r={}){let s=await g(`/accounts/${d(e)}/d1/database/${d(a)}`,t,r,l);if(!s.ok)return s;let n=p.safeParse(s.data.result);return n.success?{ok:!0,data:{sizeBytes:n.data.file_size??null,numTables:n.data.num_tables??null,readReplication:n.data.read_replication?.mode??null}}:h("the D1 database")}let y=`query D1Usage($accountTag: string!, $date: Date!) {
2
+ viewer {
3
+ accounts(filter: { accountTag: $accountTag }) {
4
+ d1AnalyticsAdaptiveGroups(limit: 10000, filter: { date: $date }) {
5
+ sum { rowsRead rowsWritten readQueries writeQueries }
6
+ dimensions { databaseId }
7
+ }
8
+ }
9
+ }
10
+ }`,j=e.z.object({data:e.z.object({viewer:e.z.object({accounts:o.z.array(e.z.object({d1AnalyticsAdaptiveGroups:o.z.array(e.z.object({sum:e.z.object({rowsRead:i.z.number().default(0),rowsWritten:i.z.number().default(0),readQueries:i.z.number().default(0),writeQueries:i.z.number().default(0)}),dimensions:e.z.object({databaseId:r.z.string()})})).default([])}))}).nullish()}).nullish(),errors:o.z.array(e.z.object({message:r.z.string().default("")})).nullish()});async function A(t,e,a,r={}){let s;try{s=await (r.fetch??fetch)(`${u}/graphql`,{method:"POST",headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({query:y,variables:{accountTag:e,date:a}}),signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?m:"Couldn't reach Cloudflare."}}return 401===s.status||403===s.status?(await s.body?.cancel().catch(()=>void 0),{ok:!1,kind:"scope",status:s.status,error:`The token can't read D1 analytics. Add "${c}" to the Cloudflare token.`}):429===s.status?{ok:!1,kind:"transient",status:429,retryAfterS:60,error:"Cloudflare says there were too many requests."}:s.ok?function(t){let e=j.safeParse(t);if(!e.success)return h("the D1 analytics");let a=e.data.errors??[];if(a.length)return a.some(t=>/not authorized|permission|access|authenticat/i.test(t.message))?{ok:!1,kind:"scope",error:`The token can't read D1 analytics. Add "${c}" to the Cloudflare token.`}:{ok:!1,kind:"transient",error:"Cloudflare's analytics answered with an error."};let r=e.data.data?.viewer?.accounts.flatMap(t=>t.d1AnalyticsAdaptiveGroups)??[],s=new Map;for(let t of r){let e=s.get(t.dimensions.databaseId)??{databaseId:t.dimensions.databaseId,rowsRead:0,rowsWritten:0,readQueries:0,writeQueries:0};e.rowsRead+=t.sum.rowsRead,e.rowsWritten+=t.sum.rowsWritten,e.readQueries+=t.sum.readQueries,e.writeQueries+=t.sum.writeQueries,s.set(e.databaseId,e)}return{ok:!0,data:[...s.values()]}}(await s.json().catch(()=>null)):{ok:!1,kind:"transient",status:s.status,error:`Cloudflare returned an error (${s.status}).`}}t.s(["t",0,A,"m",0,w,"N",0,b,"L",0,k,"Y",0,t=>t.toISOString().slice(0,10)],392710),t.i(123076),t.i(216899),e.z.object({d1:a.z.enum(["ok","missing","error"]),analytics:a.z.enum(["ok","missing","error"]).nullable(),at:r.z.string(),note:r.z.string().nullable()}),t.s(["f",0,"d1.access"],725321)}]})();
11
+
12
+ //# sourceMappingURL=src_lib_1jlvdx5ho171c._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[927262,263410,15738,e=>{"use strict";let n=e=>(e??0).toLocaleString("en-US"),o={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${n(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${n(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`Slowest 5% of checks over ${n(e)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:e=>`TLS certificate expires in < ${n(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${n(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${n(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${n(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${n(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${n(e)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase CPU > ${n(e)}% for 15 min, RAM > ${n(Math.min(99,(e??80)+10))}%, disk > ${n(e)}% or connections > ${n(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${n(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${n(e)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},CiFailing:{key:"CiFailing",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"The latest GitHub Actions run on the default branch failed"},OsSecurityUpdate:{key:"OsSecurityUpdate",severity:"warning",threshold:7,bounds:[0,10],source:"own",needs:null,sampled:!1,condition:e=>`A waiting security update fixes a CVE scored ${(e??7).toFixed(1)}+ (CVSS), or a new kernel waits for a reboot`},ReportSendFailed:{key:"ReportSendFailed",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"A monthly client report couldn't be emailed after 3 tries"},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}},t=Object.keys(o),i=e=>"string"==typeof e&&e in o,a=["critical","warning","info"],r=["telegram","discord","webhook","smtp","email_digest"],s={MonitorDown:"Site down",CollectorStale:"Checks stopped",HighLatency:"Slow responses",DeploymentFailed:"Deploy failed",DatabasePaused:"Database paused",CertExpiringSoon:"Certificate expiring",DomainExpiringSoon:"Domain expiring",StorageAlmostFull:"Database almost full",NeonComputeHigh:"Neon hours running out",FirestoreQuotaHigh:"Firestore reads running out",AutoPauseRisk:"Supabase may pause",DnsProxiedToVercel:"Cloudflare proxy in front of Vercel",ComputeHigh:"Supabase under load",DbQuotaHigh:"Free quota running out",CredentialExpiring:"Token expiring",VulnerableDependency:"Vulnerable package",FrameworkVulnerable:"Next.js needs a security update",CiFailing:"CI is failing",OsSecurityUpdate:"Security updates waiting on this machine",ReportSendFailed:"Client report not sent",MonitorDomainMoved:"App moved to a new domain"};e.s(["_",0,o,"u",0,t,"$",0,s,"h",0,i,"N",0,function(e,t){let i=o[e],s={},l=a.find(e=>e===t.severity);l||(s.severity="Pick a severity.");let d=null;if(i.bounds){let e=String(t.threshold??"").replace(/,/g,"").trim(),o=/^\d+$/.test(e)?Number(e):0/0;!Number.isInteger(o)||o<i.bounds[0]||o>i.bounds[1]?s.threshold=`Enter a whole number from ${n(i.bounds[0])} to ${n(i.bounds[1])}.`:d=o}let u=Array.isArray(t.channels)?t.channels:[];return(u.every(e=>r.includes(e))||(s.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(s).length||!l)?{ok:!1,fieldErrors:s}:{ok:!0,value:{severity:l,threshold:d,channels:[...new Set(u)],enabled:!0===t.enabled}}},"v",0,e=>i(e)?s[e]:e],927262);var l=e.i(13552),d=e.i(986096),u=e.i(383217),c=e.i(574619),p=e.i(665105),m=e.i(99450),h=e.i(731793),y=e.i(837137);let g={createdAt:(0,m._)("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:(0,m._)("updated_at",{withTimezone:!0}).notNull().defaultNow()},f=y.ops.table("reports",{id:(0,h.q)("id").primaryKey().defaultRandom(),clientName:(0,p.f)("client_name").notNull(),title:(0,p.f)("title"),lang:(0,p.f)("lang").$type().notNull().default("en"),note:(0,p.f)("note"),emailOpening:(0,p.f)("email_opening"),recipients:(0,u.y)("recipients").$type().notNull().default([]),autoSend:(0,l.f)("auto_send").notNull().default(!1),sender:(0,p.f)("sender").$type(),...g}),b=y.ops.table("report_sites",{reportId:(0,h.q)("report_id").notNull().references(()=>f.id,{onDelete:"cascade"}),monitorId:(0,h.q)("monitor_id").notNull().references(()=>y.monitors.id,{onDelete:"cascade"}),displayName:(0,p.f)("display_name").notNull(),position:(0,d.f)("position").notNull().default(0)},e=>[(0,c._)({columns:[e.reportId,e.monitorId]})]),w=y.ops.table("report_sends",{reportId:(0,h.q)("report_id").notNull().references(()=>f.id,{onDelete:"cascade"}),month:(0,p.f)("month").notNull(),status:(0,p.f)("status").$type().notNull(),attempts:(0,d.f)("attempts").notNull().default(0),lastError:(0,p.f)("last_error"),claimedAt:(0,m._)("claimed_at",{withTimezone:!0}),sentAt:(0,m._)("sent_at",{withTimezone:!0})},e=>[(0,c._)({columns:[e.reportId,e.month]})]),D=y.ops.table("deploy_days",{resourceId:(0,h.q)("resource_id").notNull().references(()=>y.resources.id,{onDelete:"cascade"}),day:(0,p.f)("day").notNull(),ok:(0,d.f)("ok").notNull(),failed:(0,d.f)("failed").notNull()},e=>[(0,c._)({columns:[e.resourceId,e.day]})]);e.s(["p",0,D,"q",0,w,"Z",0,b,"I",0,f],263410),e.s(["e",0,function(e){let[n,o]=e.split("-").map(Number);return Array.from({length:new Date(Date.UTC(n,o,0)).getUTCDate()},(n,o)=>`${e}-${String(o+1).padStart(2,"0")}`)},"C",0,function(e,n){let o=new Intl.DateTimeFormat("en-CA",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e),t=e=>o.find(n=>n.type===e)?.value??"";return`${t("year")}-${t("month")}-${t("day")}`},"K",0,function(e,n){let o=Date.parse(`${e}T00:00:00Z`),t=new Intl.DateTimeFormat("en-CA",{timeZone:n,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).formatToParts(new Date(o)),i=e=>Number(t.find(n=>n.type===e)?.value);return new Date(o-(Date.UTC(i("year"),i("month")-1,i("day"),i("hour"),i("minute"),i("second"))-o))}],15738)}];
1
+ module.exports=[927262,263410,15738,49440,e=>{"use strict";let n=e=>(e??0).toLocaleString("en-US"),o={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${n(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${n(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`Slowest 5% of checks over ${n(e)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:e=>`TLS certificate expires in < ${n(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${n(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${n(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${n(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${n(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${n(e)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase CPU > ${n(e)}% for 15 min, RAM > ${n(Math.min(99,(e??80)+10))}%, disk > ${n(e)}% or connections > ${n(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${n(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${n(e)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},CiFailing:{key:"CiFailing",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"The latest GitHub Actions run on the default branch failed"},OsSecurityUpdate:{key:"OsSecurityUpdate",severity:"warning",threshold:7,bounds:[0,10],source:"own",needs:null,sampled:!1,condition:e=>`A waiting security update fixes a CVE scored ${(e??7).toFixed(1)}+ (CVSS), or a new kernel waits for a reboot`},ReportSendFailed:{key:"ReportSendFailed",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"A monthly client report couldn't be emailed after 3 tries"},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}},t=Object.keys(o),i=e=>"string"==typeof e&&e in o,r=["critical","warning","info"],a=["telegram","discord","webhook","smtp","email_digest"],s={MonitorDown:"Site down",CollectorStale:"Checks stopped",HighLatency:"Slow responses",DeploymentFailed:"Deploy failed",DatabasePaused:"Database paused",CertExpiringSoon:"Certificate expiring",DomainExpiringSoon:"Domain expiring",StorageAlmostFull:"Database almost full",NeonComputeHigh:"Neon hours running out",FirestoreQuotaHigh:"Firestore reads running out",AutoPauseRisk:"Supabase may pause",DnsProxiedToVercel:"Cloudflare proxy in front of Vercel",ComputeHigh:"Supabase under load",DbQuotaHigh:"Free quota running out",CredentialExpiring:"Token expiring",VulnerableDependency:"Vulnerable package",FrameworkVulnerable:"Next.js needs a security update",CiFailing:"CI is failing",OsSecurityUpdate:"Security updates waiting on this machine",ReportSendFailed:"Client report not sent",MonitorDomainMoved:"App moved to a new domain"};e.s(["_",0,o,"u",0,t,"$",0,s,"h",0,i,"N",0,function(e,t){let i=o[e],s={},l=r.find(e=>e===t.severity);l||(s.severity="Pick a severity.");let d=null;if(i.bounds){let e=String(t.threshold??"").replace(/,/g,"").trim(),o=/^\d+$/.test(e)?Number(e):0/0;!Number.isInteger(o)||o<i.bounds[0]||o>i.bounds[1]?s.threshold=`Enter a whole number from ${n(i.bounds[0])} to ${n(i.bounds[1])}.`:d=o}let u=Array.isArray(t.channels)?t.channels:[];return(u.every(e=>a.includes(e))||(s.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(s).length||!l)?{ok:!1,fieldErrors:s}:{ok:!0,value:{severity:l,threshold:d,channels:[...new Set(u)],enabled:!0===t.enabled}}},"v",0,e=>i(e)?s[e]:e],927262);var l=e.i(13552),d=e.i(986096),u=e.i(383217),c=e.i(574619),p=e.i(665105),m=e.i(99450),h=e.i(731793),y=e.i(837137);let f={createdAt:(0,m._)("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:(0,m._)("updated_at",{withTimezone:!0}).notNull().defaultNow()},g=y.ops.table("reports",{id:(0,h.q)("id").primaryKey().defaultRandom(),clientName:(0,p.f)("client_name").notNull(),title:(0,p.f)("title"),lang:(0,p.f)("lang").$type().notNull().default("en"),note:(0,p.f)("note"),emailOpening:(0,p.f)("email_opening"),recipients:(0,u.y)("recipients").$type().notNull().default([]),autoSend:(0,l.f)("auto_send").notNull().default(!1),sender:(0,p.f)("sender").$type(),...f}),b=y.ops.table("report_sites",{reportId:(0,h.q)("report_id").notNull().references(()=>g.id,{onDelete:"cascade"}),monitorId:(0,h.q)("monitor_id").notNull().references(()=>y.monitors.id,{onDelete:"cascade"}),displayName:(0,p.f)("display_name").notNull(),position:(0,d.f)("position").notNull().default(0)},e=>[(0,c._)({columns:[e.reportId,e.monitorId]})]),w=y.ops.table("report_sends",{reportId:(0,h.q)("report_id").notNull().references(()=>g.id,{onDelete:"cascade"}),month:(0,p.f)("month").notNull(),status:(0,p.f)("status").$type().notNull(),attempts:(0,d.f)("attempts").notNull().default(0),lastError:(0,p.f)("last_error"),claimedAt:(0,m._)("claimed_at",{withTimezone:!0}),sentAt:(0,m._)("sent_at",{withTimezone:!0})},e=>[(0,c._)({columns:[e.reportId,e.month]})]),D=y.ops.table("deploy_days",{resourceId:(0,h.q)("resource_id").notNull().references(()=>y.resources.id,{onDelete:"cascade"}),day:(0,p.f)("day").notNull(),ok:(0,d.f)("ok").notNull(),failed:(0,d.f)("failed").notNull()},e=>[(0,c._)({columns:[e.resourceId,e.day]})]);function k(e,n){let o=new Intl.DateTimeFormat("en-CA",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e),t=e=>o.find(n=>n.type===e)?.value??"";return`${t("year")}-${t("month")}-${t("day")}`}function v(e,n){let o=new Intl.DateTimeFormat("en-CA",{timeZone:n,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).formatToParts(new Date(e)),t=e=>Number(o.find(n=>n.type===e)?.value);return Date.UTC(t("year"),t("month")-1,t("day"),t("hour"),t("minute"),t("second"))-e}e.s(["p",0,D,"q",0,w,"Z",0,b,"I",0,g],263410),e.i(548734),e.i(186133),e.s(["e",0,function(e){let[n,o]=e.split("-").map(Number);return Array.from({length:new Date(Date.UTC(n,o,0)).getUTCDate()},(n,o)=>`${e}-${String(o+1).padStart(2,"0")}`)},"C",0,k,"K",0,function(e,n){let o=Date.parse(`${e}T00:00:00Z`),t=o-v(o,n);return new Date(o-v(t,n))}],15738),e.s(["f",0,function(e,n){let o=new Map;for(let t of e){let e=t.state.toUpperCase();if("READY"!==e&&"ERROR"!==e)continue;let i=k(t.createdAtProvider,n),r=`${t.resourceId}|${i}`,a=o.get(r)??{resourceId:t.resourceId,day:i,ok:0,failed:0};"READY"===e?a.ok++:a.failed++,o.set(r,a)}return[...o.values()].sort((e,n)=>e.resourceId.localeCompare(n.resourceId)||e.day.localeCompare(n.day))}],49440)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_alerts_catalog_ts_1ndg28acul64q._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[617084,e=>{"use strict";let t={name:null,accent:null,senderName:null,publicUrl:null,poweredBy:!0,hasLogo:!1},n="#ffffff",o="#111214",r=/^#[0-9a-f]{6}$/;function a(e){let t=[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)/255).map(e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4);return .2126*t[0]+.7152*t[1]+.0722*t[2]}function l(e,t){let[n,o]=[a(e.toLowerCase()),a(t.toLowerCase())].sort((e,t)=>t-e);return(n+.05)/(o+.05)}function c(e){let t={};if(null!==e.name&&(e.name.length>60||/[<>\r\n]/.test(e.name))&&(t.name="Up to 60 characters, no < or >."),null!==e.senderName&&(e.senderName.length>60||/[<>"\r\n]/.test(e.senderName))&&(t.senderName="Up to 60 characters, no <, > or quotes."),null!==e.publicUrl){let n=!1;try{let t=new URL(e.publicUrl);n="https:"===t.protocol||"http:"===t.protocol&&["localhost","127.0.0.1"].includes(t.hostname)}catch{n=!1}n||(t.publicUrl="An https:// address (http:// only for localhost).")}return null!==e.accent&&(r.test(e.accent)?4.5>l(e.accent,n)?t.accent=`Too pale to read on the light background (${l(e.accent,n).toFixed(1)}:1, needs 4.5:1).`:3>l(e.accent,o)&&(t.accent=`Too dark to see on the dark background (${l(e.accent,o).toFixed(1)}:1, needs 3:1).`):t.accent="A colour as #rrggbb."),t}let s=e=>"string"==typeof e&&e.trim()?e.trim():null;e.s(["k",0,"branding","l",0,t,"W",0,e=>/<([^>]+)>/.exec(e)?.[1]?.trim()??e.trim(),"u",0,function(e){return e.accent&&r.test(e.accent)?`:root:root, :root:root[data-theme="dark"] { --oc-brand: ${e.accent}; --oc-brand-hover: ${e.accent}; --oc-on-brand: #ffffff; }`:null},"r",0,function(e){return e.name?{title:{default:e.name,template:`%s \xb7 ${e.name}`},...e.hasLogo?{icons:{icon:"/brand-icon"}}:{}}:{}},"X",0,e=>e.name??"Watchbell","A",0,function(e){if(e.length<24||[137,80,78,71,13,10,26,10].some((t,n)=>e[n]!==t))return"The logo must be a PNG file.";if(e.length>262144)return"The logo must be 256 KB or smaller.";let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(16),o=t.getUint32(20);return!n||!o||Math.abs(n-o)/Math.max(n,o)>.1?"The logo must be square (or nearly).":Math.max(n,o)>512?"The logo can be at most 512 × 512 px.":null},"C",0,function(e,t){let n=(e??"Watchbell").replace(/["\r\n<>]/g,"").trim()||"Watchbell";return/^[\w.-]+$/.test(n)?`${n} <${t}>`:`"${n}" <${t}>`},"q",0,function(e){if(!e||"object"!=typeof e)return{...t};let n={name:s(e.name),accent:"string"==typeof e.accent&&r.test(e.accent)?e.accent:null,senderName:s(e.senderName),publicUrl:s(e.publicUrl),poweredBy:!1!==e.poweredBy,hasLogo:!0===e.hasLogo};for(let e of Object.keys(c(n)))n[e]=null;return n},"R",0,function(e){let t=s(e.publicUrl),n={name:s(e.name),accent:s(e.accent)?.toLowerCase()??null,senderName:s(e.senderName),publicUrl:t?t.replace(/\/+$/,""):null,poweredBy:"on"===e.poweredBy||!0===e.poweredBy||"true"===e.poweredBy,hasLogo:!1},o=c(n);return Object.keys(o).length?{ok:!1,fieldErrors:o}:{ok:!0,value:n}}])}];
1
+ module.exports=[617084,e=>{"use strict";let t={name:null,accent:null,senderName:null,publicUrl:null,poweredBy:!0,hasLogo:!1,logoVersion:null},n=/^[0-9a-f]{12}$/,o=e=>e?`/brand-icon?v=${e}`:"/brand-icon",r="#ffffff",l="#111214",a=/^#[0-9a-f]{6}$/;function c(e){let t=[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)/255).map(e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4);return .2126*t[0]+.7152*t[1]+.0722*t[2]}function s(e,t){let[n,o]=[c(e.toLowerCase()),c(t.toLowerCase())].sort((e,t)=>t-e);return(n+.05)/(o+.05)}function u(e){let t={};if(null!==e.name&&(e.name.length>60||/[<>\r\n]/.test(e.name))&&(t.name="Up to 60 characters, no < or >."),null!==e.senderName&&(e.senderName.length>60||/[<>"\r\n]/.test(e.senderName))&&(t.senderName="Up to 60 characters, no <, > or quotes."),null!==e.publicUrl){let n=!1;try{let t=new URL(e.publicUrl);n="https:"===t.protocol||"http:"===t.protocol&&["localhost","127.0.0.1"].includes(t.hostname)}catch{n=!1}n||(t.publicUrl="An https:// address (http:// only for localhost).")}return null!==e.accent&&(a.test(e.accent)?4.5>s(e.accent,r)?t.accent=`Too pale to read on the light background (${s(e.accent,r).toFixed(1)}:1, needs 4.5:1).`:3>s(e.accent,l)&&(t.accent=`Too dark to see on the dark background (${s(e.accent,l).toFixed(1)}:1, needs 3:1).`):t.accent="A colour as #rrggbb."),t}let i=e=>"string"==typeof e&&e.trim()?e.trim():null;e.s(["k",0,"branding","l",0,t,"W",0,e=>/<([^>]+)>/.exec(e)?.[1]?.trim()??e.trim(),"r",0,o,"u",0,function(e){return e.accent&&a.test(e.accent)?`:root:root, :root:root[data-theme="dark"] { --oc-brand: ${e.accent}; --oc-brand-hover: ${e.accent}; --oc-on-brand: #ffffff; }`:null},"s",0,function(e){return e.name?{title:{default:e.name,template:`%s \xb7 ${e.name}`},...e.hasLogo?{icons:{icon:o(e.logoVersion)}}:{}}:{}},"X",0,e=>e.name??"Watchbell","A",0,function(e){if(e.length<24||[137,80,78,71,13,10,26,10].some((t,n)=>e[n]!==t))return"The logo must be a PNG file.";if(e.length>262144)return"The logo must be 256 KB or smaller.";let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(16),o=t.getUint32(20);return!n||!o||Math.abs(n-o)/Math.max(n,o)>.1?"The logo must be square (or nearly).":Math.max(n,o)>512?"The logo can be at most 512 × 512 px.":null},"C",0,function(e,t){let n=(e??"Watchbell").replace(/["\r\n<>]/g,"").trim()||"Watchbell";return/^[\w.-]+$/.test(n)?`${n} <${t}>`:`"${n}" <${t}>`},"q",0,function(e){if(!e||"object"!=typeof e)return{...t};let o={name:i(e.name),accent:"string"==typeof e.accent&&a.test(e.accent)?e.accent:null,senderName:i(e.senderName),publicUrl:i(e.publicUrl),poweredBy:!1!==e.poweredBy,hasLogo:!0===e.hasLogo,logoVersion:"string"==typeof e.logoVersion&&n.test(e.logoVersion)?e.logoVersion:null};for(let e of Object.keys(u(o)))o[e]=null;return o},"R",0,function(e){let t=i(e.publicUrl),n={name:i(e.name),accent:i(e.accent)?.toLowerCase()??null,senderName:i(e.senderName),publicUrl:t?t.replace(/\/+$/,""):null,poweredBy:"on"===e.poweredBy||!0===e.poweredBy||"true"===e.poweredBy,hasLogo:!1,logoVersion:null},o=u(n);return Object.keys(o).length?{ok:!1,fieldErrors:o}:{ok:!0,value:n}}])}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_branding_ts_03ns4y_8z0-6e._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[936657,e=>{"use strict";let t={name:null,accent:null,senderName:null,publicUrl:null,poweredBy:!0,hasLogo:!1},n="#ffffff",l="#111214",r=/^#[0-9a-f]{6}$/;function c(e){let t=[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)/255).map(e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4);return .2126*t[0]+.7152*t[1]+.0722*t[2]}function o(e,t){let[n,l]=[c(e.toLowerCase()),c(t.toLowerCase())].sort((e,t)=>t-e);return(n+.05)/(l+.05)}let a=e=>"string"==typeof e&&e.trim()?e.trim():null;e.s(["k",0,"branding","l",0,t,"W",0,e=>/<([^>]+)>/.exec(e)?.[1]?.trim()??e.trim(),"X",0,e=>e.name??"Watchbell","C",0,function(e,t){let n=(e??"Watchbell").replace(/["\r\n<>]/g,"").trim()||"Watchbell";return/^[\w.-]+$/.test(n)?`${n} <${t}>`:`"${n}" <${t}>`},"q",0,function(e){if(!e||"object"!=typeof e)return{...t};let c={name:a(e.name),accent:"string"==typeof e.accent&&r.test(e.accent)?e.accent:null,senderName:a(e.senderName),publicUrl:a(e.publicUrl),poweredBy:!1!==e.poweredBy,hasLogo:!0===e.hasLogo};for(let e of Object.keys(function(e){let t={};if(null!==e.name&&(e.name.length>60||/[<>\r\n]/.test(e.name))&&(t.name="Up to 60 characters, no < or >."),null!==e.senderName&&(e.senderName.length>60||/[<>"\r\n]/.test(e.senderName))&&(t.senderName="Up to 60 characters, no <, > or quotes."),null!==e.publicUrl){let n=!1;try{let t=new URL(e.publicUrl);n="https:"===t.protocol||"http:"===t.protocol&&["localhost","127.0.0.1"].includes(t.hostname)}catch{n=!1}n||(t.publicUrl="An https:// address (http:// only for localhost).")}return null!==e.accent&&(r.test(e.accent)?4.5>o(e.accent,n)?t.accent=`Too pale to read on the light background (${o(e.accent,n).toFixed(1)}:1, needs 4.5:1).`:3>o(e.accent,l)&&(t.accent=`Too dark to see on the dark background (${o(e.accent,l).toFixed(1)}:1, needs 3:1).`):t.accent="A colour as #rrggbb."),t}(c)))c[e]=null;return c}])}];
1
+ module.exports=[936657,e=>{"use strict";let t={name:null,accent:null,senderName:null,publicUrl:null,poweredBy:!0,hasLogo:!1,logoVersion:null},n=/^[0-9a-f]{12}$/,o="#ffffff",l="#111214",r=/^#[0-9a-f]{6}$/;function c(e){let t=[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)/255).map(e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4);return .2126*t[0]+.7152*t[1]+.0722*t[2]}function a(e,t){let[n,o]=[c(e.toLowerCase()),c(t.toLowerCase())].sort((e,t)=>t-e);return(n+.05)/(o+.05)}let s=e=>"string"==typeof e&&e.trim()?e.trim():null;e.s(["k",0,"branding","l",0,t,"W",0,e=>/<([^>]+)>/.exec(e)?.[1]?.trim()??e.trim(),"r",0,e=>e?`/brand-icon?v=${e}`:"/brand-icon","X",0,e=>e.name??"Watchbell","C",0,function(e,t){let n=(e??"Watchbell").replace(/["\r\n<>]/g,"").trim()||"Watchbell";return/^[\w.-]+$/.test(n)?`${n} <${t}>`:`"${n}" <${t}>`},"q",0,function(e){if(!e||"object"!=typeof e)return{...t};let c={name:s(e.name),accent:"string"==typeof e.accent&&r.test(e.accent)?e.accent:null,senderName:s(e.senderName),publicUrl:s(e.publicUrl),poweredBy:!1!==e.poweredBy,hasLogo:!0===e.hasLogo,logoVersion:"string"==typeof e.logoVersion&&n.test(e.logoVersion)?e.logoVersion:null};for(let e of Object.keys(function(e){let t={};if(null!==e.name&&(e.name.length>60||/[<>\r\n]/.test(e.name))&&(t.name="Up to 60 characters, no < or >."),null!==e.senderName&&(e.senderName.length>60||/[<>"\r\n]/.test(e.senderName))&&(t.senderName="Up to 60 characters, no <, > or quotes."),null!==e.publicUrl){let n=!1;try{let t=new URL(e.publicUrl);n="https:"===t.protocol||"http:"===t.protocol&&["localhost","127.0.0.1"].includes(t.hostname)}catch{n=!1}n||(t.publicUrl="An https:// address (http:// only for localhost).")}return null!==e.accent&&(r.test(e.accent)?4.5>a(e.accent,o)?t.accent=`Too pale to read on the light background (${a(e.accent,o).toFixed(1)}:1, needs 4.5:1).`:3>a(e.accent,l)&&(t.accent=`Too dark to see on the dark background (${a(e.accent,l).toFixed(1)}:1, needs 3:1).`):t.accent="A colour as #rrggbb."),t}(c)))c[e]=null;return c}])}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_branding_ts_0jfv9nur5alvy._.js.map
@@ -1,17 +1,17 @@
1
1
  module.exports=[34559,819645,e=>{"use strict";var t=e.i(666680);e.s(["f",0,function(e,a){if(!e||!a||!e.startsWith("Bearer "))return!1;let r=(0,t.createHash)("sha256").update(e.slice(7)).digest(),i=(0,t.createHash)("sha256").update(a).digest();return(0,t.timingSafeEqual)(r,i)}],34559);var a=e.i(518899),r=e.i(924924),i=e.i(473283),n=e.i(407602);async function s(){let e=await (0,r.f)().execute(a.B`
2
2
  select pid, state, extract(epoch from now() - state_change)::int as idle_s,
3
3
  coalesce(extract(epoch from now() - query_start)::int, 0) as run_s, left(query, 400) as query
4
- from pg_stat_activity where usename = current_user and pid <> pg_backend_pid()`);return(0,i.f)(e).map(e=>{var t;let a;return{pid:Number(e.pid),state:e.state,idleS:Number(e.idle_s),runS:Number(e.run_s),table:(t=e.query,(a=/(?:from|into|update|join)\s+"?ops"?\."?([a-z_]+)"?/i.exec(t??""))?a[1]:null)}})}async function o(e=10,t=10){let l=await s(),d=function(e,t=10,a=10){let r=function(e){let t=new Set,a=[];for(let r of e.filter(e=>"idle"===e.state&&e.table).sort((e,t)=>e.idleS-t.idleS))t.has(r.table)?r.idleS>=60&&a.push(r):t.add(r.table);return a}(e),i=e.filter(e=>!r.includes(e)),n=Math.max(0,i.length+1-t);return n?[...r,...[...i.filter(e=>"idle"===e.state&&e.idleS>=a).sort((e,t)=>t.idleS-e.idleS),...i.filter(e=>"idle"!==e.state&&e.runS>60).sort((e,t)=>t.runS-e.runS)].slice(0,n)]:r}(l,e,t),u=0;if(d.length){let e=d.map(e=>e.pid).filter(e=>Number.isInteger(e)&&e>0),t=await (0,r.f)().execute(a.B`select pg_terminate_backend(pid) as ok from unnest(array[${a.B.raw(e.join(","))}]::int[]) as pid`);u=(0,i.f)(t).filter(e=>e.ok).length}let c=function(e){let t=new Map;for(let a of e)t.set(a.table??"unknown",(t.get(a.table??"unknown")??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} \xd7${t}`)}(d);return u>0&&(console.info(`pool guard: ${l.length+1} connections, closed ${u} (${c.join(", ")})`),await (0,n.f)({kind:"ok",message:`Pool guard: closed ${u} of ${l.length+1} database connections`,detail:c.join(", ").slice(0,300),resourceId:null,actorUserId:null}).catch(()=>void 0)),{total:l.length+1,trimmed:u,culprits:c}}var l=e.i(77193),d=e.i(111970),u=e.i(662860);let c=[{name:"pool-guard",run:async()=>{(0,l.r)()&&await o().catch(e=>console.warn("pool guard failed:",e instanceof Error?e.message.slice(0,160):"error"))}},{name:"supabase-metrics",run:async(e,t)=>{(await (0,d.I)()).has("database")||await (0,u.E)(e,t?.deadline??e.getTime()+3e4)}}];var f=e.i(875225),p=e.i(221994),h=e.i(936657),m=e.i(570118),w=e.i(483100),g=e.i(490675),y=e.i(547499),k=e.i(968068),b=e.i(633974),$=e.i(973990),v=e.i(218331),T=e.i(196514),D=e.i(709198),I=e.i(884471);async function S(e,t,i){return(await (0,r.f)().insert(p.q).values({reportId:e,month:t,status:"claimed",attempts:1,claimedAt:i}).onConflictDoUpdate({target:[p.q.reportId,p.q.month],set:{status:"claimed",claimedAt:i,attempts:a.B`${p.q.attempts} + 1`},setWhere:(0,f.b)((0,f.u)(p.q.status,"claimed"),(0,f.M)(p.q.claimedAt))}).returning({reportId:p.q.reportId})).length>0}async function z(e){return(await (0,r.f)().update(p.q).set({status:"failed",claimedAt:null,lastError:"The send stopped part-way and may have been sent. Check with the client before sending it yourself."}).where((0,f.b)((0,f.u)(p.q.status,"claimed"),(0,f.S)(p.q.claimedAt,new Date(e.getTime()-6e5)))).returning({reportId:p.q.reportId})).length}async function j(e,t,a,i){let n="sent"===a.status?{status:"sent",sentAt:i,lastError:null,claimedAt:null}:{status:"failed"===a.status?"failed":"claimed",claimedAt:null,lastError:a.error.slice(0,300)};await (0,r.f)().update(p.q).set(n).where((0,f.b)((0,f.u)(p.q.reportId,e),(0,f.u)(p.q.month,t)))}async function A(e){if("smtp"===e.sender){let t=await (0,w.u)("smtp");return t?.config?.host?(0,$.f)({...t.config,to:e.to.join(", ")},e.subject,e.text,{},{fromName:e.fromName,attachment:{filename:e.filename,contentType:"application/pdf",data:e.pdf}}):{ok:!1,kind:"config",error:"Email (SMTP) isn't connected."}}let t=(0,k.f)();if(!t.resendKey||!t.digestFrom)return{ok:!1,kind:"config",error:"Resend isn't set up (RESEND_API_KEY and DIGEST_FROM)."};let a=e.fromName?(0,h.C)(e.fromName,(0,h.W)(t.digestFrom)):t.digestFrom;return(0,b.f)(t.resendKey,{from:a,to:e.to,subject:e.subject,html:e.html,text:e.text,idempotencyKey:e.idempotencyKey,attachments:[{filename:e.filename,content:Buffer.from(e.pdf).toString("base64")}]})}let E={"not-found":"The report no longer exists.","no-sites":"The report has no websites.","month-too-old":"That month's data is no longer kept."};async function x(e,t={zone:(0,v.C)(),list:g.q,claim:S,settle:z,make:I.f,mail:A,brand:m.X,mark:j},a=1/0){var r;let i,n,{month:s,day:o,due:l}=(r=t.zone,n=Number((i=(0,T.C)(e,r)).slice(8,10)),{month:(e=>{let[t,a]=e.split("-").map(Number);return 1===a?`${t-1}-12`:`${t}-${String(a-1).padStart(2,"0")}`})(i.slice(0,7)),day:n,due:n>=1&&n<=3}),d={sent:0,failed:0,left:0};if(!l)return d;await t.settle(e);let u=(await t.list()).filter(e=>e.autoSend&&e.recipients.length>0&&e.sender);if(!u.length)return d;let c=await t.brand();for(let[r,i]of u.entries()){if(Date.now()>a){d.left=u.length-r;break}if(!await t.claim(i.id,s,e))continue;let n=e=>({status:o>=3?"failed":"retry",error:e}),l=await t.make(i.id,s,e,t.zone).catch(()=>({error:"not-found"}));if("error"in l){await t.mark(i.id,s,n(E[l.error]),e),d.failed++;continue}let f=await t.mail(function(e,t,a,r,i,n=e.recipients){let s=a.name??a.senderName??"Watchbell",o=(0,D.G)(e.lang,{clientName:e.clientName,month:t,opening:e.emailOpening,brand:s,title:e.title}),l=a.poweredBy?(0,D.O)(e.lang).poweredBy:null,d=a.hasLogo?(a.publicUrl??void 0??(0,y.f)().SITE_URL).replace(/\/+$/,""):"",u=a.hasLogo?`<p><img src="${d}/brand-icon" width="40" height="40" alt="" style="border-radius:6px"></p>`:"";return{sender:i,to:n,subject:o.subject,fromName:a.senderName,text:l?`${o.text}
4
+ from pg_stat_activity where usename = current_user and pid <> pg_backend_pid()`);return(0,i.f)(e).map(e=>{var t;let a;return{pid:Number(e.pid),state:e.state,idleS:Number(e.idle_s),runS:Number(e.run_s),table:(t=e.query,(a=/(?:from|into|update|join)\s+"?ops"?\."?([a-z_]+)"?/i.exec(t??""))?a[1]:null)}})}async function o(e=10,t=10){let l=await s(),d=function(e,t=10,a=10){let r=function(e){let t=new Set,a=[];for(let r of e.filter(e=>"idle"===e.state&&e.table).sort((e,t)=>e.idleS-t.idleS))t.has(r.table)?r.idleS>=60&&a.push(r):t.add(r.table);return a}(e),i=e.filter(e=>!r.includes(e)),n=Math.max(0,i.length+1-t);return n?[...r,...[...i.filter(e=>"idle"===e.state&&e.idleS>=a).sort((e,t)=>t.idleS-e.idleS),...i.filter(e=>"idle"!==e.state&&e.runS>60).sort((e,t)=>t.runS-e.runS)].slice(0,n)]:r}(l,e,t),u=0;if(d.length){let e=d.map(e=>e.pid).filter(e=>Number.isInteger(e)&&e>0),t=await (0,r.f)().execute(a.B`select pg_terminate_backend(pid) as ok from unnest(array[${a.B.raw(e.join(","))}]::int[]) as pid`);u=(0,i.f)(t).filter(e=>e.ok).length}let c=function(e){let t=new Map;for(let a of e)t.set(a.table??"unknown",(t.get(a.table??"unknown")??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} \xd7${t}`)}(d);return u>0&&(console.info(`pool guard: ${l.length+1} connections, closed ${u} (${c.join(", ")})`),await (0,n.f)({kind:"ok",message:`Pool guard: closed ${u} of ${l.length+1} database connections`,detail:c.join(", ").slice(0,300),resourceId:null,actorUserId:null}).catch(()=>void 0)),{total:l.length+1,trimmed:u,culprits:c}}var l=e.i(77193),d=e.i(111970),u=e.i(662860);let c=[{name:"pool-guard",run:async()=>{(0,l.r)()&&await o().catch(e=>console.warn("pool guard failed:",e instanceof Error?e.message.slice(0,160):"error"))}},{name:"supabase-metrics",run:async(e,t)=>{(await (0,d.I)()).has("database")||await (0,u.E)(e,t?.deadline??e.getTime()+3e4)}}];var f=e.i(875225),p=e.i(221994),h=e.i(936657),m=e.i(570118),w=e.i(483100),g=e.i(490675),y=e.i(547499),k=e.i(968068),b=e.i(633974),$=e.i(973990),v=e.i(218331),T=e.i(196514),D=e.i(709198),I=e.i(884471);async function S(e,t,i){return(await (0,r.f)().insert(p.q).values({reportId:e,month:t,status:"claimed",attempts:1,claimedAt:i}).onConflictDoUpdate({target:[p.q.reportId,p.q.month],set:{status:"claimed",claimedAt:i,attempts:a.B`${p.q.attempts} + 1`},setWhere:(0,f.b)((0,f.u)(p.q.status,"claimed"),(0,f.M)(p.q.claimedAt))}).returning({reportId:p.q.reportId})).length>0}async function z(e){return(await (0,r.f)().update(p.q).set({status:"failed",claimedAt:null,lastError:"The send stopped part-way and may have been sent. Check with the client before sending it yourself."}).where((0,f.b)((0,f.u)(p.q.status,"claimed"),(0,f.S)(p.q.claimedAt,new Date(e.getTime()-6e5)))).returning({reportId:p.q.reportId})).length}async function j(e,t,a,i){let n="sent"===a.status?{status:"sent",sentAt:i,lastError:null,claimedAt:null}:{status:"failed"===a.status?"failed":"claimed",claimedAt:null,lastError:a.error.slice(0,300)};await (0,r.f)().update(p.q).set(n).where((0,f.b)((0,f.u)(p.q.reportId,e),(0,f.u)(p.q.month,t)))}async function A(e){if("smtp"===e.sender){let t=await (0,w.u)("smtp");return t?.config?.host?(0,$.f)({...t.config,to:e.to.join(", ")},e.subject,e.text,{},{fromName:e.fromName,attachment:{filename:e.filename,contentType:"application/pdf",data:e.pdf}}):{ok:!1,kind:"config",error:"Email (SMTP) isn't connected."}}let t=(0,k.f)();if(!t.resendKey||!t.digestFrom)return{ok:!1,kind:"config",error:"Resend isn't set up (RESEND_API_KEY and DIGEST_FROM)."};let a=e.fromName?(0,h.C)(e.fromName,(0,h.W)(t.digestFrom)):t.digestFrom;return(0,b.f)(t.resendKey,{from:a,to:e.to,subject:e.subject,html:e.html,text:e.text,idempotencyKey:e.idempotencyKey,attachments:[{filename:e.filename,content:Buffer.from(e.pdf).toString("base64")}]})}let E={"not-found":"The report no longer exists.","no-sites":"The report has no websites.","month-too-old":"That month's data is no longer kept.","render-failed":"The PDF couldn't be made."},x=()=>({zone:(0,v.C)(),list:g.q,claim:S,settle:z,make:I.f,mail:A,brand:m.X,mark:j});async function R(e,t,a,r=x(),i=!0,n){if(!await r.claim(e.id,t,a))return{status:"busy"};let s=e=>({status:i?"failed":"retry",error:e}),o=await r.make(e.id,t,a,r.zone).catch(()=>({error:"render-failed"}));if("error"in o){let i=s(E[o.error]);return await r.mark(e.id,t,i,a),i}let l=await r.mail(function(e,t,a,r,i,n=e.recipients){let s=a.name??a.senderName??"Watchbell",o=(0,D.G)(e.lang,{clientName:e.clientName,month:t,opening:e.emailOpening,brand:s,title:e.title}),l=a.poweredBy?(0,D.O)(e.lang).poweredBy:null,d=a.hasLogo?(a.publicUrl??void 0??(0,y.f)().SITE_URL).replace(/\/+$/,""):"",u=a.hasLogo?`<p><img src="${d}${(0,h.r)(a.logoVersion)}" width="40" height="40" alt="" style="border-radius:6px"></p>`:"";return{sender:i,to:n,subject:o.subject,fromName:a.senderName,text:l?`${o.text}
5
5
  --
6
6
  ${l}
7
- `:o.text,html:`${u}${o.html}${l?`<p style="color:#8a8f9c;font-size:12px">${l}</p>`:""}`,pdf:r.bytes,filename:r.filename,idempotencyKey:`report-${e.id}-${t}`}}(i,s,c,l,i.sender)).catch(()=>({ok:!1,kind:"transient",error:"The mail couldn't be sent."}));f.ok?(await t.mark(i.id,s,{status:"sent"},e),d.sent++):(await t.mark(i.id,s,n(f.error),e),d.failed++)}return d}var R=e.i(826148),_=e.i(260338),F=e.i(537622),C=e.i(749124),N=e.i(618916),O=e.i(612478),P=e.i(814964),q=e.i(971724),B=e.i(455744),G=e.i(898305),U=e.i(105954),H=e.i(180473),M=e.i(206033),L=e.i(140561);let W="application/vnd.google-apps.folder",K="https://www.googleapis.com/drive/v3/files",Y="https://www.googleapis.com/upload/drive/v3/files",J="https://sheets.googleapis.com/v4/spreadsheets",V=q.z.object({error:q.z.object({errors:B.z.array(G.z.looseObject({reason:U.z.string().optional()})).optional(),status:U.z.string().optional()})});async function Q(e,t,a,r,i){let n,s,o=i.timeoutMs??1e4,l={Authorization:`Bearer ${a}`,Accept:"application/json"};r?.raw?(l["Content-Type"]=r.contentType??"application/octet-stream",n=new Uint8Array(r.raw)):r&&void 0!==r.json&&(l["Content-Type"]="application/json",n=JSON.stringify(r.json));try{s=await (i.fetch??fetch)(t,{method:e,headers:l,body:n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Google Drive didn't answer within ${Math.round(o/1e3)} seconds.`:"Couldn't reach Google Drive."}}let d=await s.json().catch(()=>null);if(s.ok)return{ok:!0,data:d};let u=V.safeParse(d),c=u.success?u.data.error.errors?.find(e=>e.reason)?.reason??u.data.error.status:void 0;return 401===s.status?{ok:!1,kind:"auth",status:401,error:"Google Drive rejected the access token (401)."}:404===s.status?{ok:!1,kind:"missing",status:404,error:"Google Drive doesn't know this file (404)."}:403===s.status&&"storageQuotaExceeded"===c?{ok:!1,kind:"full",status:403,error:"Your Google Drive is full. Free some space; the next run tries again."}:429===s.status||s.status>=500||403===s.status&&/rateLimit/i.test(c??"")?{ok:!1,kind:"transient",status:s.status,error:`Google Drive is busy (${s.status}). The next run tries again.`}:{ok:!1,kind:403===s.status?"denied":"format",status:s.status,error:`Google Drive refused the request (${s.status}${c?` ${c}`:""}).`}}let X=q.z.object({id:U.z.string().min(1)}),Z=e=>({ok:!1,kind:"format",error:`Google Drive answered ${e} in a format the console doesn't recognise.`});function ee(e,t){if(!e.ok)return e;let a=X.safeParse(e.data);return a.success?{ok:!0,data:a.data.id}:Z(t)}async function et(e,t,a={}){let r=`name = '${t.replace(/['\\]/g,"\\$&")}' and mimeType = '${W}' and trashed = false`,i=await Q("GET",`${K}?${new URLSearchParams({q:r,fields:"files(id,name)",spaces:"drive",pageSize:"10"})}`,e,null,a);if(!i.ok)return i;let n=q.z.object({files:B.z.array(X)}).safeParse(i.data);return n.success?{ok:!0,data:n.data.files[0]?.id??null}:Z("the folder search")}async function ea(e,t,a={}){let r=await Q("GET",`${K}/${encodeURIComponent(t)}?fields=id,trashed,name`,e,null,a);if(!r.ok)return"missing"===r.kind||"denied"===r.kind?{ok:!0,data:{usable:!1,name:null}}:r;let i=q.z.object({id:U.z.string(),trashed:H.z.boolean().optional(),name:U.z.string().optional()}).safeParse(r.data);return i.success?{ok:!0,data:{usable:!i.data.trashed,name:i.data.name?.trim()||null}}:Z("the folder")}async function er(e,t,a={}){return ee(await Q("POST",`${K}?fields=id`,e,{json:{name:t,mimeType:W}},a),"the new folder")}async function ei(e,t,a,r={}){return ee(await Q("POST",`${K}?fields=id`,e,{json:{name:t,mimeType:"application/vnd.google-apps.spreadsheet",parents:[a]}},r),"the new spreadsheet")}let en=e=>`'${e.replace(/'/g,"''")}'`;async function es(e,t,a,r={}){let i=await Q("GET",`${J}/${encodeURIComponent(t)}?fields=sheets.properties(sheetId,title)`,e,null,r);if(!i.ok)return i;let n=q.z.object({sheets:B.z.array(q.z.object({properties:q.z.object({sheetId:M.z.number(),title:U.z.string()})})).default([])}).safeParse(i.data);if(!n.success)return Z("the spreadsheet's tabs");let s=n.data.sheets.map(e=>e.properties),o=new Set(s.map(e=>e.title)),l=[],d=a.filter(e=>!o.has(e)),u=s[0];for(let e of(u&&d.length&&!a.includes(u.title)&&(l.push({updateSheetProperties:{properties:{sheetId:u.sheetId,title:d[0]},fields:"title"}}),d.shift()),d))l.push({addSheet:{properties:{title:e}}});if(!l.length)return{ok:!0,data:void 0};let c=await Q("POST",`${J}/${encodeURIComponent(t)}:batchUpdate`,e,{json:{requests:l}},r);return c.ok?{ok:!0,data:void 0}:c}async function eo(e,t,a,r={}){let i=encodeURIComponent(t),n=await Q("POST",`${J}/${i}/values:batchClear`,e,{json:{ranges:a.map(e=>en(e.title))}},r);if(!n.ok)return n;let s=a.map(e=>({range:`${en(e.title)}!A1`,majorDimension:"ROWS",values:e.rows.map(e=>e.map(e=>e??""))})),o=await Q("POST",`${J}/${i}/values:batchUpdate`,e,{json:{valueInputOption:"RAW",data:s}},r);return o.ok?{ok:!0,data:void 0}:o}let el="watchbell-backup-part";function ed(e,t,a){return Buffer.concat([Buffer.from(`--${el}\r
7
+ `:o.text,html:`${u}${o.html}${l?`<p style="color:#8a8f9c;font-size:12px">${l}</p>`:""}`,pdf:r.bytes,filename:r.filename,idempotencyKey:`report-${e.id}-${t}`}}(e,t,n??await r.brand(),o,e.sender)).catch(()=>({ok:!1,kind:"transient",error:"The mail couldn't be sent."})),d=l.ok?{status:"sent"}:s(l.error);return await r.mark(e.id,t,d,a),d}async function F(e,t=x(),a=1/0){var r;let i,n,{month:s,day:o,due:l}=(r=t.zone,n=Number((i=(0,T.C)(e,r)).slice(8,10)),{month:(e=>{let[t,a]=e.split("-").map(Number);return 1===a?`${t-1}-12`:`${t}-${String(a-1).padStart(2,"0")}`})(i.slice(0,7)),day:n,due:n>=1&&n<=3}),d={sent:0,failed:0,left:0};if(!l)return d;await t.settle(e);let u=(await t.list()).filter(e=>e.autoSend&&e.recipients.length>0&&e.sender);if(!u.length)return d;let c=await t.brand();for(let[r,i]of u.entries()){if(Date.now()>a){d.left=u.length-r;break}let n=await R(i,s,e,t,o>=3,c);"sent"===n.status?d.sent++:"busy"!==n.status&&d.failed++}return d}var _=e.i(826148),C=e.i(260338),N=e.i(537622),P=e.i(749124),O=e.i(618916),q=e.i(612478),B=e.i(814964),G=e.i(971724),U=e.i(455744),H=e.i(898305),M=e.i(105954),L=e.i(180473),W=e.i(206033),K=e.i(140561);let Y="application/vnd.google-apps.folder",J="https://www.googleapis.com/drive/v3/files",V="https://www.googleapis.com/upload/drive/v3/files",Q="https://sheets.googleapis.com/v4/spreadsheets",X=G.z.object({error:G.z.object({errors:U.z.array(H.z.looseObject({reason:M.z.string().optional()})).optional(),status:M.z.string().optional()})});async function Z(e,t,a,r,i){let n,s,o=i.timeoutMs??1e4,l={Authorization:`Bearer ${a}`,Accept:"application/json"};r?.raw?(l["Content-Type"]=r.contentType??"application/octet-stream",n=new Uint8Array(r.raw)):r&&void 0!==r.json&&(l["Content-Type"]="application/json",n=JSON.stringify(r.json));try{s=await (i.fetch??fetch)(t,{method:e,headers:l,body:n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Google Drive didn't answer within ${Math.round(o/1e3)} seconds.`:"Couldn't reach Google Drive."}}let d=await s.json().catch(()=>null);if(s.ok)return{ok:!0,data:d};let u=X.safeParse(d),c=u.success?u.data.error.errors?.find(e=>e.reason)?.reason??u.data.error.status:void 0;return 401===s.status?{ok:!1,kind:"auth",status:401,error:"Google Drive rejected the access token (401)."}:404===s.status?{ok:!1,kind:"missing",status:404,error:"Google Drive doesn't know this file (404)."}:403===s.status&&"storageQuotaExceeded"===c?{ok:!1,kind:"full",status:403,error:"Your Google Drive is full. Free some space; the next run tries again."}:429===s.status||s.status>=500||403===s.status&&/rateLimit/i.test(c??"")?{ok:!1,kind:"transient",status:s.status,error:`Google Drive is busy (${s.status}). The next run tries again.`}:{ok:!1,kind:403===s.status?"denied":"format",status:s.status,error:`Google Drive refused the request (${s.status}${c?` ${c}`:""}).`}}let ee=G.z.object({id:M.z.string().min(1)}),et=e=>({ok:!1,kind:"format",error:`Google Drive answered ${e} in a format the console doesn't recognise.`});function ea(e,t){if(!e.ok)return e;let a=ee.safeParse(e.data);return a.success?{ok:!0,data:a.data.id}:et(t)}async function er(e,t,a={}){let r=`name = '${t.replace(/['\\]/g,"\\$&")}' and mimeType = '${Y}' and trashed = false`,i=await Z("GET",`${J}?${new URLSearchParams({q:r,fields:"files(id,name)",spaces:"drive",pageSize:"10"})}`,e,null,a);if(!i.ok)return i;let n=G.z.object({files:U.z.array(ee)}).safeParse(i.data);return n.success?{ok:!0,data:n.data.files[0]?.id??null}:et("the folder search")}async function ei(e,t,a={}){let r=await Z("GET",`${J}/${encodeURIComponent(t)}?fields=id,trashed,name`,e,null,a);if(!r.ok)return"missing"===r.kind||"denied"===r.kind?{ok:!0,data:{usable:!1,name:null}}:r;let i=G.z.object({id:M.z.string(),trashed:L.z.boolean().optional(),name:M.z.string().optional()}).safeParse(r.data);return i.success?{ok:!0,data:{usable:!i.data.trashed,name:i.data.name?.trim()||null}}:et("the folder")}async function en(e,t,a={}){return ea(await Z("POST",`${J}?fields=id`,e,{json:{name:t,mimeType:Y}},a),"the new folder")}async function es(e,t,a,r={}){return ea(await Z("POST",`${J}?fields=id`,e,{json:{name:t,mimeType:"application/vnd.google-apps.spreadsheet",parents:[a]}},r),"the new spreadsheet")}let eo=e=>`'${e.replace(/'/g,"''")}'`;async function el(e,t,a,r={}){let i=await Z("GET",`${Q}/${encodeURIComponent(t)}?fields=sheets.properties(sheetId,title)`,e,null,r);if(!i.ok)return i;let n=G.z.object({sheets:U.z.array(G.z.object({properties:G.z.object({sheetId:W.z.number(),title:M.z.string()})})).default([])}).safeParse(i.data);if(!n.success)return et("the spreadsheet's tabs");let s=n.data.sheets.map(e=>e.properties),o=new Set(s.map(e=>e.title)),l=[],d=a.filter(e=>!o.has(e)),u=s[0];for(let e of(u&&d.length&&!a.includes(u.title)&&(l.push({updateSheetProperties:{properties:{sheetId:u.sheetId,title:d[0]},fields:"title"}}),d.shift()),d))l.push({addSheet:{properties:{title:e}}});if(!l.length)return{ok:!0,data:void 0};let c=await Z("POST",`${Q}/${encodeURIComponent(t)}:batchUpdate`,e,{json:{requests:l}},r);return c.ok?{ok:!0,data:void 0}:c}async function ed(e,t,a,r={}){let i=encodeURIComponent(t),n=await Z("POST",`${Q}/${i}/values:batchClear`,e,{json:{ranges:a.map(e=>eo(e.title))}},r);if(!n.ok)return n;let s=a.map(e=>({range:`${eo(e.title)}!A1`,majorDimension:"ROWS",values:e.rows.map(e=>e.map(e=>e??""))})),o=await Z("POST",`${Q}/${i}/values:batchUpdate`,e,{json:{valueInputOption:"RAW",data:s}},r);return o.ok?{ok:!0,data:void 0}:o}let eu="watchbell-backup-part";function ec(e,t,a){return Buffer.concat([Buffer.from(`--${eu}\r
8
8
  Content-Type: application/json; charset=UTF-8\r
9
9
  \r
10
10
  ${JSON.stringify(e)}\r
11
- --${el}\r
11
+ --${eu}\r
12
12
  Content-Type: ${a}\r
13
13
  \r
14
14
  `),t,Buffer.from(`\r
15
- --${el}--`)])}async function eu(e,t,a={}){let r=`multipart/related; boundary=${el}`,i=e=>{if(!e.ok)return e;let a=q.z.object({id:U.z.string().min(1),size:L.z.union([U.z.string(),M.z.number()]).optional()}).safeParse(e.data);return a.success?{ok:!0,data:{id:a.data.id,size:Number(a.data.size??t.content.length)||t.content.length}}:Z("the upload")};if(t.fileId){let n=ed({name:t.name,mimeType:t.mimeType},t.content,t.mimeType),s=await Q("PATCH",`${Y}/${encodeURIComponent(t.fileId)}?uploadType=multipart&fields=id,size`,e,{raw:n,contentType:r},a);if(s.ok||"missing"!==s.kind&&"denied"!==s.kind)return i(s)}let n=ed({name:t.name,mimeType:t.mimeType,parents:[t.folderId]},t.content,t.mimeType);return i(await Q("POST",`${Y}?uploadType=multipart&fields=id,size`,e,{raw:n,contentType:r},a))}async function ec(e,t,a={}){let r=await Q("PATCH",`${K}/${encodeURIComponent(t)}?fields=id,trashed`,e,{json:{trashed:!0}},a);return r.ok||"missing"===r.kind?{ok:!0,data:void 0}:r}var ef=e.i(992664);class ep extends Error{kind;constructor(e,t){super(t),this.kind=e}}async function eh(e){let{month:t,partial:a,now:r}=e,i=(0,ef.p)();if(!i)return{ok:!1,month:t,kind:"env",error:ef.S};let n=await O.N();if(!n)return{ok:!1,month:t,kind:"not-connected",error:"Google Drive isn't connected."};if(!n.refreshToken){let e="The stored Google Drive token can't be read (the encryption key changed). Reconnect Google Drive.";return await O.r(n.id,{status:"error",lastError:e}),{ok:!1,month:t,kind:"failed",error:e}}let s=await O.z(t),o={sheetFileId:s?.sheetFileId??null,csvFileId:s?.csvFileId??null,driveFolderId:s?.driveFolderId??null},l=s?.status??"error";await O.W(t,{status:l,attempts:(s?.attempts??0)+1,startedAt:r});let d=e=>(o={...o,...e},O.W(t,{status:l,...e})),u={fetch:e.fetch},c=()=>{if(Date.now()>e.deadline)throw new ep("time","Stopped at the daily job's time budget; the next daily run continues where this one stopped.")},f=e=>{if(!e.ok)throw new ep("failed",e.error);return e.data};try{let s=await (0,ef.B)(i,n.refreshToken,u);if(!s.ok){if("revoked"===s.kind)throw await O.r(n.id,{status:"error",lastError:ef.L}),new ep("revoked",ef.L);throw new ep("failed",s.error)}"error"===n.status&&await O.r(n.id,{status:"ok",lastError:null});let l=s.accessToken;c();let p=await O.M(),h=p?.id??null;if(p){let e=f(await ea(l,p.id,u));e.usable?e.name&&e.name!==p.name&&await O.s(p.id,e.name):h=null}if(!h){c();let e=f(await et(l,P.R,u)),t=e?null:f(await et(l,P.C,u));h=e??t??f(await er(l,P.R,u)),await O.s(h,t?P.C:P.R)}let m=await O.f(t,a,r);c(),o.sheetFileId||await d({sheetFileId:f(await ei(l,(0,P.F)(t),h,u)),driveFolderId:h}),c();let w=await es(l,o.sheetFileId,P.O,u);w.ok||"missing"!==w.kind&&"denied"!==w.kind||(await d({sheetFileId:f(await ei(l,(0,P.F)(t),h,u)),driveFolderId:h}),c(),w=await es(l,o.sheetFileId,P.O,u)),f(w),c(),f(await eo(l,o.sheetFileId,(0,P.m)(m),u)),c();let g=(0,P.b)((0,P.E)(m)),y=f(await eu(l,{name:(0,P.V)(t),mimeType:"application/gzip",folderId:h,content:g,fileId:o.csvFileId},u));await d({csvFileId:y.id}),await O.W(t,{status:a?"partial":"ok",sizeBytes:y.size,error:null,finishedAt:new Date});let k=a?null:await em(l,r,e.deadline,u);return{ok:!0,month:t,retention:k,message:`${(0,P.n)(t)}${a?" so far":""} saved to Google Drive.`}}catch(i){let e=i instanceof ep?i:new ep("failed","The backup failed. The next daily run tries again.");i instanceof ep||console.error("backup failed:",i instanceof Error?i.name:"unknown");let r=a&&"partial"===l?"partial":"error";return await O.W(t,{status:r,error:e.message.slice(0,500),finishedAt:new Date}).catch(()=>void 0),{ok:!1,month:t,kind:e.kind,error:e.message}}}async function em(e,t,a,r){let i=(0,P.c)(await O.e(),t),n=[];for(let s of i){if(Date.now()>a)break;let i=!0;for(let t of[s.sheetFileId,s.csvFileId])t&&((await ec(e,t,r)).ok||(i=!1));i&&(await O.W(s.month,{status:s.status,trashedAt:t}),n.push((0,P.n)(s.month)))}return n.length?`Moved to Drive trash: ${n.join(", ")}.`:null}async function ew(e,t,a={}){let r=await O.N();if(!r||"error"===r.status&&r.lastError?.startsWith("invalid_grant"))return null;let i=(0,P.p)(await O.e(),e);if(!i)return null;let n=await eh({month:i,partial:!1,now:e,deadline:t,...a});return n.ok?null:`${(0,P.n)(i)}: ${n.error}`}var eg=e.i(426099),ey=e.i(433609),ek=e.i(13733),eb=e.i(656083),e$=e.i(988294),ev=e.i(629955),eT=e.i(125160),eD=e.i(800523),eI=e.i(970465),eS=e.i(607910),ez=e.i(880420),ej=e.i(140318),eA=e.i(734533),eE=e.i(273083),ex=e.i(960049),eR=e.i(154491),e_=e.i(938739),eF=e.i(751762);let eC={github:"devops",deps:"devops",databases:"database",security:"hosting",os:"devops"};async function eN(e){let[t]=await (0,r.f)().select({hour:(0,_.y)(N.rollupsHourly.hour)}).from(N.rollupsHourly),a=(0,e_.r)(t?.hour??null,e),i=await (0,r.f)().select().from(N.checks).where((0,f.b)((0,f.B)(N.checks.at,a),(0,f.S)(N.checks.at,(0,e_.b)(e)))).orderBy(N.checks.at),n=new Map;for(let e of i){let t=`${e.monitorId}|${(0,e_.b)(e.at).toISOString()}`,a=n.get(t);a?a.push(e):n.set(t,[e])}for(let[e,t]of n){let[a,i]=e.split("|"),n=(0,e_.z)(t);await (0,r.f)().insert(N.rollupsHourly).values({monitorId:a,hour:new Date(i),...n}).onConflictDoUpdate({target:[N.rollupsHourly.monitorId,N.rollupsHourly.hour],set:n})}}async function eO(e){let t=await (0,ex.J)().catch(()=>eE.f);await (0,r.f)().delete(N.checks).where((0,f.S)(N.checks.at,new Date(e.getTime()-864e5*t.checks))),await (0,r.f)().delete(N.rollupsHourly).where((0,f.S)(N.rollupsHourly.hour,new Date(e.getTime()-864e5*t.rollupsHourly))),await (0,r.f)().delete(p.p).where((0,f.S)(p.p.day,(0,T.C)(new Date(e.getTime()-864e5*t.rollupsHourly),(0,v.C)()))),await (0,r.f)().delete(N.deployments).where((0,f.b)((0,f.S)(N.deployments.createdAtProvider,new Date(e.getTime()-864e5*t.deployments)),(0,f.u)(N.deployments.isCurrent,!1),(0,f.u)(N.deployments.isPreviousProduction,!1))),await (0,r.f)().delete(N.events).where((0,f.S)(N.events.at,new Date(e.getTime()-864e5*t.events))),await (0,r.f)().delete(N.alerts).where((0,f.b)((0,f.E)(N.alerts.resolvedAt),(0,f.S)(N.alerts.resolvedAt,new Date(e.getTime()-864e5*t.alerts)))),await (0,r.f)().delete(N.collectorRuns).where((0,f.S)(N.collectorRuns.startedAt,new Date(e.getTime()-864e5*t.collectorRuns))),await (0,r.f)().delete(N.storedLogs).where((0,f.S)(N.storedLogs.at,new Date(e.getTime()-864e5*t.storedLogs))),await (0,r.f)().delete(N.recommendationDismissals).where((0,f.S)(N.recommendationDismissals.dismissedAt,new Date(e.getTime()-864e5*t.recommendationDismissals)))}async function eP(){let e=new Date,[t]=await (0,r.f)().insert(N.collectorRuns).values({startedAt:e,trigger:"vercel_cron"}).returning({id:N.collectorRuns.id}),a=[],i=await (0,d.I)(),n=[["rollups",()=>eN(e)],["deploy-days",()=>(0,eA.W)(e)],["backup",async()=>{let t=await ew(e,e.getTime()+2e4);t&&a.push(`backup: ${t}`)}],["retention",()=>eO(e)],["reports",async()=>{let t=await x(e,void 0,e.getTime()+4e4);t.failed&&a.push(`reports: ${t.failed} monthly report${t.failed>1?"s":""} not sent yet (retried on the next run, up to the 3rd)`),t.left&&a.push(`reports: ${t.left} left for the next run, time budget used`)}],["sync",async()=>{let t=(await (0,r.f)().select({id:N.accounts.id,label:N.accounts.label,provider:N.accounts.provider}).from(N.accounts).where((0,f.y)(N.accounts.provider,eS.I))).filter(e=>!i.has(eR.D[e.provider]??"manage"));for(let[r,i]of t.entries()){if(Date.now()>e.getTime()+25e3){a.push(`sync: ${t.length-r} account${t.length-r>1?"s":""} left for the next run, time budget used`);break}let n=await (0,ez.k)(i.id);n.ok?(n.skippedTeams.length&&a.push(`sync ${i.provider}/${i.label}: skipped teams ${n.skippedTeams.join(", ")} (no access)`),n.overLimit&&a.push(`sync ${i.provider}/${i.label}: ${n.overLimit}`)):a.push(`sync ${i.provider}/${i.label}: ${n.error}`)}}],["github",async()=>{let t=await (0,ek.D)(Math.min(Date.now()+6e3,e.getTime()+35e3));t&&a.push(`github: ${t}`)}],["deps",async()=>{let t=await (0,ey.e)(Math.min(Date.now()+ey.o,e.getTime()+ey.R));t&&a.push(`deps: ${t}`)}],["databases",()=>(0,ej.f)({now:e,deadline:Math.min(Date.now()+15e3,e.getTime()+5e4),errors:a})],["keep-active",()=>(0,ev.V)(e,Math.min(Date.now()+5e3,e.getTime()+5e4),a)],["security",async()=>{for(let t of(await (0,eD.h)((0,eI.F)(e.getTime(),Date.now()))).failed)a.push(`security ${t}`)}],..."on"===(0,R.C)()?[["os",async()=>{let e=await (0,R.W)();if(e.ok){if("unsupported"!==e.data.status){e.data.error&&a.push(`os: ${e.data.error}`);let t=e.data.updates.filter(e=>e.error).length;t&&a.push(`os: Ubuntu's data couldn't be read for ${t} update${1===t?"":"s"}`),e.data.backlog.error&&a.push(`os: ${e.data.backlog.error}`)}}else a.push(`os: ${e.error}`)}]]:[],["advisor",async()=>{await (0,eg.O)(e)}]],s=[];try{for(let[e,t]of n)if(!i.has(eC[e]))try{await t(),s.push(e)}catch(t){a.push(`${e}: ${(0,eF.f)(t)}`)}await (0,eb.f)([{type:"system",kind:a.length?"warn":"info",message:a.length?"Daily jobs finished with problems":"Daily jobs finished",detail:"Rollups, the monthly backup when due, retention, a sync of every account, database sizes, the Next.js security check and the Advisor",resourceId:null}])}catch(e){a.push(`events: ${(0,eF.f)(e)}`)}finally{(0,F.f)(C.t),await (0,r.f)().update(N.collectorRuns).set({finishedAt:new Date,ok:0===a.length,errorSummary:a.join("\n").slice(0,2e3)||null,durationMs:Date.now()-e.getTime(),tasks:s}).where((0,f.u)(N.collectorRuns.id,t.id)).catch(()=>void 0)}await eq(a.length>0);let o=Date.now()-e.getTime();return{skipped:!1,ok:0===a.length,tasks:s,checks:0,durationMs:o,errors:a}}async function eq(e){let t=process.env.DAILY_HEARTBEAT_TOKEN;if(!t)return;let a=(0,eT.i)(t);if(!a)return void console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN holds no single hb_ token; set it to the heartbeat's token");let r=await (0,e$._)(a,e?"fail":"ok",new Date).catch(e=>(console.warn("daily heartbeat: the ping couldn't be stored:",e instanceof Error?e.name:"error"),null));r?.status==="unknown"?console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN matches no heartbeat monitor (was it regenerated?)"):r?.status==="limited"&&console.warn("daily heartbeat: the ping was rate limited")}async function eB(e,t,a=new Date){if(e.skipped||0===t.length)return e;let r=[...e.tasks],i=[...e.errors];for(let e of t)try{await e.run(a),r.push(e.name)}catch(t){i.push(`${e.name}: ${(0,eF.f)(t)}`)}return{...e,tasks:r,errors:i,ok:0===i.length}}e.i(956846);var eG=e.i(310603);async function eU(e){let t=[...c,...eG.extensions.minuteSteps??[]];if(!t.length)return;let a=new Date,r={deadline:e+6e4-5e3};for(let e of t)try{await e.run(a,r)}catch{console.warn(`minute step ${e.name} failed`)}}async function eH(){return eB(await eP(),eG.extensions.dailySteps??[])}e.s(["W",0,eH,"m",0,eU],819645)}];
15
+ --${eu}--`)])}async function ef(e,t,a={}){let r=`multipart/related; boundary=${eu}`,i=e=>{if(!e.ok)return e;let a=G.z.object({id:M.z.string().min(1),size:K.z.union([M.z.string(),W.z.number()]).optional()}).safeParse(e.data);return a.success?{ok:!0,data:{id:a.data.id,size:Number(a.data.size??t.content.length)||t.content.length}}:et("the upload")};if(t.fileId){let n=ec({name:t.name,mimeType:t.mimeType},t.content,t.mimeType),s=await Z("PATCH",`${V}/${encodeURIComponent(t.fileId)}?uploadType=multipart&fields=id,size`,e,{raw:n,contentType:r},a);if(s.ok||"missing"!==s.kind&&"denied"!==s.kind)return i(s)}let n=ec({name:t.name,mimeType:t.mimeType,parents:[t.folderId]},t.content,t.mimeType);return i(await Z("POST",`${V}?uploadType=multipart&fields=id,size`,e,{raw:n,contentType:r},a))}async function ep(e,t,a={}){let r=await Z("PATCH",`${J}/${encodeURIComponent(t)}?fields=id,trashed`,e,{json:{trashed:!0}},a);return r.ok||"missing"===r.kind?{ok:!0,data:void 0}:r}var eh=e.i(992664);class em extends Error{kind;constructor(e,t){super(t),this.kind=e}}async function ew(e){let{month:t,partial:a,now:r}=e,i=(0,eh.p)();if(!i)return{ok:!1,month:t,kind:"env",error:eh.S};let n=await q.N();if(!n)return{ok:!1,month:t,kind:"not-connected",error:"Google Drive isn't connected."};if(!n.refreshToken){let e="The stored Google Drive token can't be read (the encryption key changed). Reconnect Google Drive.";return await q.r(n.id,{status:"error",lastError:e}),{ok:!1,month:t,kind:"failed",error:e}}let s=await q.z(t),o={sheetFileId:s?.sheetFileId??null,csvFileId:s?.csvFileId??null,driveFolderId:s?.driveFolderId??null},l=s?.status??"error";await q.W(t,{status:l,attempts:(s?.attempts??0)+1,startedAt:r});let d=e=>(o={...o,...e},q.W(t,{status:l,...e})),u={fetch:e.fetch},c=()=>{if(Date.now()>e.deadline)throw new em("time","Stopped at the daily job's time budget; the next daily run continues where this one stopped.")},f=e=>{if(!e.ok)throw new em("failed",e.error);return e.data};try{let s=await (0,eh.B)(i,n.refreshToken,u);if(!s.ok){if("revoked"===s.kind)throw await q.r(n.id,{status:"error",lastError:eh.L}),new em("revoked",eh.L);throw new em("failed",s.error)}"error"===n.status&&await q.r(n.id,{status:"ok",lastError:null});let l=s.accessToken;c();let p=await q.M(),h=p?.id??null;if(p){let e=f(await ei(l,p.id,u));e.usable?e.name&&e.name!==p.name&&await q.s(p.id,e.name):h=null}if(!h){c();let e=f(await er(l,B.R,u)),t=e?null:f(await er(l,B.C,u));h=e??t??f(await en(l,B.R,u)),await q.s(h,t?B.C:B.R)}let m=await q.f(t,a,r);c(),o.sheetFileId||await d({sheetFileId:f(await es(l,(0,B.F)(t),h,u)),driveFolderId:h}),c();let w=await el(l,o.sheetFileId,B.O,u);w.ok||"missing"!==w.kind&&"denied"!==w.kind||(await d({sheetFileId:f(await es(l,(0,B.F)(t),h,u)),driveFolderId:h}),c(),w=await el(l,o.sheetFileId,B.O,u)),f(w),c(),f(await ed(l,o.sheetFileId,(0,B.m)(m),u)),c();let g=(0,B.b)((0,B.E)(m)),y=f(await ef(l,{name:(0,B.V)(t),mimeType:"application/gzip",folderId:h,content:g,fileId:o.csvFileId},u));await d({csvFileId:y.id}),await q.W(t,{status:a?"partial":"ok",sizeBytes:y.size,error:null,finishedAt:new Date});let k=a?null:await eg(l,r,e.deadline,u);return{ok:!0,month:t,retention:k,message:`${(0,B.n)(t)}${a?" so far":""} saved to Google Drive.`}}catch(i){let e=i instanceof em?i:new em("failed","The backup failed. The next daily run tries again.");i instanceof em||console.error("backup failed:",i instanceof Error?i.name:"unknown");let r=a&&"partial"===l?"partial":"error";return await q.W(t,{status:r,error:e.message.slice(0,500),finishedAt:new Date}).catch(()=>void 0),{ok:!1,month:t,kind:e.kind,error:e.message}}}async function eg(e,t,a,r){let i=(0,B.c)(await q.e(),t),n=[];for(let s of i){if(Date.now()>a)break;let i=!0;for(let t of[s.sheetFileId,s.csvFileId])t&&((await ep(e,t,r)).ok||(i=!1));i&&(await q.W(s.month,{status:s.status,trashedAt:t}),n.push((0,B.n)(s.month)))}return n.length?`Moved to Drive trash: ${n.join(", ")}.`:null}async function ey(e,t,a={}){let r=await q.N();if(!r||"error"===r.status&&r.lastError?.startsWith("invalid_grant"))return null;let i=(0,B.p)(await q.e(),e);if(!i)return null;let n=await ew({month:i,partial:!1,now:e,deadline:t,...a});return n.ok?null:`${(0,B.n)(i)}: ${n.error}`}var ek=e.i(426099),eb=e.i(433609),e$=e.i(13733),ev=e.i(656083),eT=e.i(988294),eD=e.i(629955),eI=e.i(125160),eS=e.i(800523),ez=e.i(970465),ej=e.i(607910),eA=e.i(880420),eE=e.i(140318),ex=e.i(734533),eR=e.i(273083),eF=e.i(960049),e_=e.i(154491),eC=e.i(938739),eN=e.i(751762);let eP={github:"devops",deps:"devops",databases:"database",security:"hosting",os:"devops"};async function eO(e){let[t]=await (0,r.f)().select({hour:(0,C.y)(O.rollupsHourly.hour)}).from(O.rollupsHourly),a=(0,eC.r)(t?.hour??null,e),i=await (0,r.f)().select().from(O.checks).where((0,f.b)((0,f.B)(O.checks.at,a),(0,f.S)(O.checks.at,(0,eC.b)(e)))).orderBy(O.checks.at),n=new Map;for(let e of i){let t=`${e.monitorId}|${(0,eC.b)(e.at).toISOString()}`,a=n.get(t);a?a.push(e):n.set(t,[e])}for(let[e,t]of n){let[a,i]=e.split("|"),n=(0,eC.z)(t);await (0,r.f)().insert(O.rollupsHourly).values({monitorId:a,hour:new Date(i),...n}).onConflictDoUpdate({target:[O.rollupsHourly.monitorId,O.rollupsHourly.hour],set:n})}}async function eq(e){let t=await (0,eF.J)().catch(()=>eR.f);await (0,r.f)().delete(O.checks).where((0,f.S)(O.checks.at,new Date(e.getTime()-864e5*t.checks))),await (0,r.f)().delete(O.rollupsHourly).where((0,f.S)(O.rollupsHourly.hour,new Date(e.getTime()-864e5*t.rollupsHourly))),await (0,r.f)().delete(p.p).where((0,f.S)(p.p.day,(0,T.C)(new Date(e.getTime()-864e5*t.rollupsHourly),(0,v.C)()))),await (0,r.f)().delete(O.deployments).where((0,f.b)((0,f.S)(O.deployments.createdAtProvider,new Date(e.getTime()-864e5*t.deployments)),(0,f.u)(O.deployments.isCurrent,!1),(0,f.u)(O.deployments.isPreviousProduction,!1))),await (0,r.f)().delete(O.events).where((0,f.S)(O.events.at,new Date(e.getTime()-864e5*t.events))),await (0,r.f)().delete(O.alerts).where((0,f.b)((0,f.E)(O.alerts.resolvedAt),(0,f.S)(O.alerts.resolvedAt,new Date(e.getTime()-864e5*t.alerts)))),await (0,r.f)().delete(O.collectorRuns).where((0,f.S)(O.collectorRuns.startedAt,new Date(e.getTime()-864e5*t.collectorRuns))),await (0,r.f)().delete(O.storedLogs).where((0,f.S)(O.storedLogs.at,new Date(e.getTime()-864e5*t.storedLogs))),await (0,r.f)().delete(O.recommendationDismissals).where((0,f.S)(O.recommendationDismissals.dismissedAt,new Date(e.getTime()-864e5*t.recommendationDismissals)))}async function eB(){let e=new Date,[t]=await (0,r.f)().insert(O.collectorRuns).values({startedAt:e,trigger:"vercel_cron"}).returning({id:O.collectorRuns.id}),a=[],i=await (0,d.I)(),n=[["rollups",()=>eO(e)],["deploy-days",()=>(0,ex.W)(e)],["backup",async()=>{let t=await ey(e,e.getTime()+2e4);t&&a.push(`backup: ${t}`)}],["retention",()=>eq(e)],["reports",async()=>{let t=await F(e,void 0,e.getTime()+4e4);t.failed&&a.push(`reports: ${t.failed} monthly report${t.failed>1?"s":""} not sent yet (retried on the next run, up to the 3rd)`),t.left&&a.push(`reports: ${t.left} left for the next run, time budget used`)}],["sync",async()=>{let t=(await (0,r.f)().select({id:O.accounts.id,label:O.accounts.label,provider:O.accounts.provider}).from(O.accounts).where((0,f.y)(O.accounts.provider,ej.I))).filter(e=>!i.has(e_.D[e.provider]??"manage"));for(let[r,i]of t.entries()){if(Date.now()>e.getTime()+25e3){a.push(`sync: ${t.length-r} account${t.length-r>1?"s":""} left for the next run, time budget used`);break}let n=await (0,eA.k)(i.id);n.ok?(n.skippedTeams.length&&a.push(`sync ${i.provider}/${i.label}: skipped teams ${n.skippedTeams.join(", ")} (no access)`),n.overLimit&&a.push(`sync ${i.provider}/${i.label}: ${n.overLimit}`)):a.push(`sync ${i.provider}/${i.label}: ${n.error}`)}}],["github",async()=>{let t=await (0,e$.D)(Math.min(Date.now()+6e3,e.getTime()+35e3));t&&a.push(`github: ${t}`)}],["deps",async()=>{let t=await (0,eb.e)(Math.min(Date.now()+eb.o,e.getTime()+eb.R));t&&a.push(`deps: ${t}`)}],["databases",()=>(0,eE.f)({now:e,deadline:Math.min(Date.now()+15e3,e.getTime()+5e4),errors:a})],["keep-active",()=>(0,eD.V)(e,Math.min(Date.now()+5e3,e.getTime()+5e4),a)],["security",async()=>{for(let t of(await (0,eS.h)((0,ez.F)(e.getTime(),Date.now()))).failed)a.push(`security ${t}`)}],..."on"===(0,_.C)()?[["os",async()=>{let e=await (0,_.W)();if(e.ok){if("unsupported"!==e.data.status){e.data.error&&a.push(`os: ${e.data.error}`);let t=e.data.updates.filter(e=>e.error).length;t&&a.push(`os: Ubuntu's data couldn't be read for ${t} update${1===t?"":"s"}`),e.data.backlog.error&&a.push(`os: ${e.data.backlog.error}`)}}else a.push(`os: ${e.error}`)}]]:[],["advisor",async()=>{await (0,ek.O)(e)}]],s=[];try{for(let[e,t]of n)if(!i.has(eP[e]))try{await t(),s.push(e)}catch(t){a.push(`${e}: ${(0,eN.f)(t)}`)}await (0,ev.f)([{type:"system",kind:a.length?"warn":"info",message:a.length?"Daily jobs finished with problems":"Daily jobs finished",detail:"Rollups, the monthly backup when due, retention, a sync of every account, database sizes, the Next.js security check and the Advisor",resourceId:null}])}catch(e){a.push(`events: ${(0,eN.f)(e)}`)}finally{(0,N.f)(P.t),await (0,r.f)().update(O.collectorRuns).set({finishedAt:new Date,ok:0===a.length,errorSummary:a.join("\n").slice(0,2e3)||null,durationMs:Date.now()-e.getTime(),tasks:s}).where((0,f.u)(O.collectorRuns.id,t.id)).catch(()=>void 0)}await eG(a.length>0);let o=Date.now()-e.getTime();return{skipped:!1,ok:0===a.length,tasks:s,checks:0,durationMs:o,errors:a}}async function eG(e){let t=process.env.DAILY_HEARTBEAT_TOKEN;if(!t)return;let a=(0,eI.i)(t);if(!a)return void console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN holds no single hb_ token; set it to the heartbeat's token");let r=await (0,eT._)(a,e?"fail":"ok",new Date).catch(e=>(console.warn("daily heartbeat: the ping couldn't be stored:",e instanceof Error?e.name:"error"),null));r?.status==="unknown"?console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN matches no heartbeat monitor (was it regenerated?)"):r?.status==="limited"&&console.warn("daily heartbeat: the ping was rate limited")}async function eU(e,t,a=new Date){if(e.skipped||0===t.length)return e;let r=[...e.tasks],i=[...e.errors];for(let e of t)try{await e.run(a),r.push(e.name)}catch(t){i.push(`${e.name}: ${(0,eN.f)(t)}`)}return{...e,tasks:r,errors:i,ok:0===i.length}}e.i(956846);var eH=e.i(310603);async function eM(e){let t=[...c,...eH.extensions.minuteSteps??[]];if(!t.length)return;let a=new Date,r={deadline:e+6e4-5e3};for(let e of t)try{await e.run(a,r)}catch{console.warn(`minute step ${e.name} failed`)}}async function eL(){return eU(await eB(),eH.extensions.dailySteps??[])}e.s(["W",0,eL,"m",0,eM],819645)}];
16
16
 
17
17
  //# sourceMappingURL=src_lib_collector_auth_ts_0lqx92__e4zij._.js.map