watchbell 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (643) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/build-manifest.json +3 -3
  4. package/server/.next/prerender-manifest.json +3 -3
  5. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +12 -12
  6. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +57 -56
  7. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  9. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +11 -11
  10. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +57 -56
  11. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +10 -10
  14. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +57 -56
  15. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  17. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +13 -13
  18. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +57 -56
  19. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +11 -11
  22. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +57 -56
  23. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +20 -20
  26. package/server/.next/server/app/(console)/(private)/ai/models/page.js +57 -56
  27. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +10 -10
  30. package/server/.next/server/app/(console)/(private)/ai/page.js +57 -56
  31. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +13 -13
  34. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +57 -56
  35. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  37. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +16 -16
  38. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +57 -56
  39. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +11 -11
  42. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +57 -56
  43. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +11 -11
  46. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +57 -56
  47. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  49. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +10 -10
  50. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +57 -56
  51. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  53. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +11 -11
  54. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +57 -56
  55. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  57. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +35 -25
  58. package/server/.next/server/app/(console)/alerts/page.js +57 -56
  59. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  60. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  61. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +27 -27
  62. package/server/.next/server/app/(console)/apps/[id]/page.js +57 -56
  63. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  64. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  65. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +13 -13
  66. package/server/.next/server/app/(console)/apps/page.js +57 -56
  67. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  68. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  69. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +13 -13
  70. package/server/.next/server/app/(console)/backups/page.js +57 -56
  71. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  72. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  73. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +10 -10
  74. package/server/.next/server/app/(console)/catalog/page.js +57 -56
  75. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  76. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  77. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +21 -21
  78. package/server/.next/server/app/(console)/connections/page.js +57 -56
  79. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  80. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  81. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +10 -10
  82. package/server/.next/server/app/(console)/d1/page.js +57 -56
  83. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  84. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  85. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +16 -16
  86. package/server/.next/server/app/(console)/deployments/page.js +57 -56
  87. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  88. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  89. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +17 -17
  90. package/server/.next/server/app/(console)/dns/page.js +57 -56
  91. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  92. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  93. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +12 -12
  94. package/server/.next/server/app/(console)/domains/page.js +57 -56
  95. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  96. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  97. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +10 -10
  98. package/server/.next/server/app/(console)/events/page.js +57 -56
  99. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  100. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  101. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +17 -17
  102. package/server/.next/server/app/(console)/firebase/page.js +57 -56
  103. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  104. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  105. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +11 -11
  106. package/server/.next/server/app/(console)/logs/page.js +57 -56
  107. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  108. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  109. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +11 -11
  110. package/server/.next/server/app/(console)/manage/sections/page.js +57 -56
  111. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  112. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  113. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +21 -21
  114. package/server/.next/server/app/(console)/neon/page.js +57 -56
  115. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  116. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  117. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +18 -18
  118. package/server/.next/server/app/(console)/overview/page.js +57 -56
  119. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  120. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  121. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +11 -11
  122. package/server/.next/server/app/(console)/repos/[id]/page.js +57 -56
  123. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  124. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  125. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +10 -10
  126. package/server/.next/server/app/(console)/repos/page.js +57 -56
  127. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  128. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  129. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +20 -20
  130. package/server/.next/server/app/(console)/settings/page.js +57 -56
  131. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  132. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  133. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +17 -17
  134. package/server/.next/server/app/(console)/sql/page.js +57 -56
  135. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  136. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  137. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +10 -10
  138. package/server/.next/server/app/(console)/status/page.js +57 -56
  139. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  140. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  141. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +29 -29
  142. package/server/.next/server/app/(console)/supabase/page.js +57 -56
  143. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  144. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  145. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +10 -10
  146. package/server/.next/server/app/(console)/topology/page.js +57 -56
  147. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  148. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  149. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +10 -10
  150. package/server/.next/server/app/(console)/turso/page.js +57 -56
  151. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  152. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  153. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +10 -10
  154. package/server/.next/server/app/(console)/upstash/page.js +57 -56
  155. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  156. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  157. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +24 -24
  158. package/server/.next/server/app/(console)/uptime/page.js +57 -56
  159. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  160. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  161. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +15 -15
  162. package/server/.next/server/app/(console)/welcome/page.js +57 -56
  163. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  164. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  165. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  166. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  167. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  168. package/server/.next/server/app/_global-error.html +1 -1
  169. package/server/.next/server/app/_global-error.rsc +3 -3
  170. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  171. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  172. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  173. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  174. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  175. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  176. package/server/.next/server/app/_not-found.html +1 -1
  177. package/server/.next/server/app/_not-found.rsc +4 -4
  178. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  179. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  180. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  181. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  182. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  183. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  184. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  185. package/server/.next/server/app/api/collect/route.js +38 -37
  186. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  187. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  188. package/server/.next/server/app/api/daily/route.js +38 -37
  189. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  190. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  191. package/server/.next/server/app/api/telegram/webhook/route.js +63 -62
  192. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  193. package/server/.next/server/app/api/v1/advice/route.js +2 -2
  194. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  195. package/server/.next/server/app/api/v1/ai/questions/route.js +2 -2
  196. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  197. package/server/.next/server/app/api/v1/mcp/route.js +2 -2
  198. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  199. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +2 -2
  200. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  201. package/server/.next/server/app/api/v1/status/route.js +2 -2
  202. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  203. package/server/.next/server/app/api/watchdog/route.js +2 -2
  204. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  205. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  206. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  207. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  208. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  209. package/server/.next/server/app/mfa/page.js +33 -21
  210. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  211. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  212. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  213. package/server/.next/server/app/mfa/setup/page.js +33 -21
  214. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  215. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  216. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  217. package/server/.next/server/app/page.js.nft.json +1 -1
  218. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  219. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  220. package/server/.next/server/app/s/[slug]/page.js +8 -7
  221. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  222. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  223. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  224. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  225. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  226. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  227. package/server/.next/server/app/signin/page.js +35 -21
  228. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  229. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  230. package/server/.next/server/chunks/{[externals]__0y_x27mdj85p4._.js → [externals]__0ia-wyj5qrosx._.js} +1 -1
  231. package/server/.next/server/chunks/{[externals]__1fzfzd0ia0sk6._.js → [externals]__0igl_rsv6z3fr._.js} +1 -1
  232. package/server/.next/server/chunks/{[externals]__1qqyrxnupegg3._.js → [externals]__0mh8e6gkgfswq._.js} +1 -1
  233. package/server/.next/server/chunks/{[root-of-the-server]__0hblpf7wqke-j._.js → [root-of-the-server]__0-ftc1hhcjcl2._.js} +2 -2
  234. package/server/.next/server/chunks/{[root-of-the-server]__0l9ja3579qrju._.js → [root-of-the-server]__0-st5xltl53h9._.js} +2 -2
  235. package/server/.next/server/chunks/{[root-of-the-server]__03i6yscmtbhhg._.js → [root-of-the-server]__0-u9oeob2sa7f._.js} +2 -2
  236. package/server/.next/server/chunks/{[root-of-the-server]__0bmyll20mg_gf._.js → [root-of-the-server]__0070gc9ml0mf7._.js} +1 -1
  237. package/server/.next/server/chunks/{[root-of-the-server]__07bw6o0jc31yr._.js → [root-of-the-server]__0185dne3slx7e._.js} +2 -2
  238. package/server/.next/server/chunks/{[root-of-the-server]__0v-gc-c_e8pwl._.js → [root-of-the-server]__040ix5fqb_zb-._.js} +2 -2
  239. package/server/.next/server/chunks/{[root-of-the-server]__1zvoez8iapsem._.js → [root-of-the-server]__05jzua9637vlo._.js} +2 -2
  240. package/server/.next/server/chunks/{[root-of-the-server]__1_or7dycvkseg._.js → [root-of-the-server]__06uaa_2zbg57p._.js} +1 -1
  241. package/server/.next/server/chunks/{[root-of-the-server]__1y2qf8ltxhk0o._.js → [root-of-the-server]__07byme21uj5ln._.js} +2 -2
  242. package/server/.next/server/chunks/{[root-of-the-server]__1lerees-l5-6c._.js → [root-of-the-server]__07g16s_wi2sai._.js} +2 -2
  243. package/server/.next/server/chunks/{[root-of-the-server]__1s4bwjevs4hd-._.js → [root-of-the-server]__08-puk3_gawjd._.js} +2 -2
  244. package/server/.next/server/chunks/{[root-of-the-server]__0gox66sv0bx47._.js → [root-of-the-server]__0_e2eoq7w3ff_._.js} +2 -2
  245. package/server/.next/server/chunks/{[root-of-the-server]__0zni_2pv2fdgb._.js → [root-of-the-server]__0cc32xnniktg9._.js} +2 -2
  246. package/server/.next/server/chunks/{[root-of-the-server]__213bsllf-9ztc._.js → [root-of-the-server]__0cz3da2wx3_wd._.js} +2 -2
  247. package/server/.next/server/chunks/{[root-of-the-server]__0noc6l63d3l9w._.js → [root-of-the-server]__0dvuy3ibsyiik._.js} +2 -2
  248. package/server/.next/server/chunks/{[root-of-the-server]__02n6y6aa6qp1b._.js → [root-of-the-server]__0e2utnqdim70d._.js} +2 -2
  249. package/server/.next/server/chunks/{[root-of-the-server]__0hnljrh9qi9t-._.js → [root-of-the-server]__0exicuoq6gmph._.js} +2 -2
  250. package/server/.next/server/chunks/{[root-of-the-server]__0nqbue6i0l3qs._.js → [root-of-the-server]__0ezd1s2862iob._.js} +2 -2
  251. package/server/.next/server/chunks/[root-of-the-server]__0gmn5s40au84-._.js +3 -0
  252. package/server/.next/server/chunks/[root-of-the-server]__0i75m0es1m3hf._.js +3 -0
  253. package/server/.next/server/chunks/{[root-of-the-server]__0btybbrsr4abf._.js → [root-of-the-server]__0ikiyg3u02ofv._.js} +1 -1
  254. package/server/.next/server/chunks/{[root-of-the-server]__16waq6rapvngp._.js → [root-of-the-server]__0ms1uw85c5wg2._.js} +2 -2
  255. package/server/.next/server/chunks/[root-of-the-server]__0o0z59_jylzvy._.js +3 -0
  256. package/server/.next/server/chunks/{[root-of-the-server]__07mzeijv31avl._.js → [root-of-the-server]__0oqltt9cni6m0._.js} +2 -2
  257. package/server/.next/server/chunks/{[root-of-the-server]__1lj1f2w2-w8nw._.js → [root-of-the-server]__0quiawzx_nww0._.js} +2 -2
  258. package/server/.next/server/chunks/{[root-of-the-server]__0wp6j3irilu76._.js → [root-of-the-server]__0r88w3qhrtzz_._.js} +1 -1
  259. package/server/.next/server/chunks/{[root-of-the-server]__0kp0yx909wtab._.js → [root-of-the-server]__0rb1-3538-pq9._.js} +1 -1
  260. package/server/.next/server/chunks/{[root-of-the-server]__0c-33noc8yn1-._.js → [root-of-the-server]__0sabwm3w1rm0q._.js} +1 -1
  261. package/server/.next/server/chunks/{[root-of-the-server]__0nrg8zzqizk69._.js → [root-of-the-server]__0tykhzqhwdx_k._.js} +2 -2
  262. package/server/.next/server/chunks/{[root-of-the-server]__0yuyew8m9dc6-._.js → [root-of-the-server]__0w_og0zl6hqzj._.js} +1 -1
  263. package/server/.next/server/chunks/[root-of-the-server]__0wdxw44t9l9o_._.js +3 -0
  264. package/server/.next/server/chunks/{[root-of-the-server]__1xl6_spngp6k3._.js → [root-of-the-server]__0x47i6wm-cd1z._.js} +2 -2
  265. package/server/.next/server/chunks/{[root-of-the-server]__0g1cifa7hd790._.js → [root-of-the-server]__0x6qqr79pq_j9._.js} +1 -1
  266. package/server/.next/server/chunks/{[root-of-the-server]__0hlyn_aj72sn5._.js → [root-of-the-server]__0xqgsjnebebv8._.js} +2 -2
  267. package/server/.next/server/chunks/{[root-of-the-server]__0r1men25anfgb._.js → [root-of-the-server]__0y99cuuxm0xs3._.js} +1 -1
  268. package/server/.next/server/chunks/[root-of-the-server]__0zflnh-2nol66._.js +3 -0
  269. package/server/.next/server/chunks/{[root-of-the-server]__0l6_iao04u72h._.js → [root-of-the-server]__0znmcklxfccvk._.js} +2 -2
  270. package/server/.next/server/chunks/[root-of-the-server]__10dp33pb5e0ml._.js +3 -0
  271. package/server/.next/server/chunks/[root-of-the-server]__12xl6ax-q8s93._.js +3 -0
  272. package/server/.next/server/chunks/{[root-of-the-server]__090in165mp6av._.js → [root-of-the-server]__14sac3h4sfhh7._.js} +1 -1
  273. package/server/.next/server/chunks/{[root-of-the-server]__0oy0hcm48kl-q._.js → [root-of-the-server]__16md_196q9s8a._.js} +2 -2
  274. package/server/.next/server/chunks/[root-of-the-server]__17xbg7cngebwp._.js +3 -0
  275. package/server/.next/server/chunks/{[root-of-the-server]__0hrtz5c_46jkw._.js → [root-of-the-server]__186-sa38csgot._.js} +1 -1
  276. package/server/.next/server/chunks/[root-of-the-server]__18lfi0w0e_h0k._.js +3 -0
  277. package/server/.next/server/chunks/{[root-of-the-server]__0ku7nva3gxa9p._.js → [root-of-the-server]__1a7_3nq1jjab-._.js} +2 -2
  278. package/server/.next/server/chunks/{[root-of-the-server]__16lfk1wg0ejaa._.js → [root-of-the-server]__1bce11artflky._.js} +2 -2
  279. package/server/.next/server/chunks/[root-of-the-server]__1c1wqmzm65xo8._.js +3 -0
  280. package/server/.next/server/chunks/{[root-of-the-server]__1adw_bv2u89kc._.js → [root-of-the-server]__1g4iy2tasmn0f._.js} +1 -1
  281. package/server/.next/server/chunks/[root-of-the-server]__1gry2nrq5xhxl._.js +3 -0
  282. package/server/.next/server/chunks/{[root-of-the-server]__0d99wclm2suox._.js → [root-of-the-server]__1gt_-h9n48pwi._.js} +2 -2
  283. package/server/.next/server/chunks/{[root-of-the-server]__0s5b-tdq7rndj._.js → [root-of-the-server]__1hl9k6e1o7xh2._.js} +2 -2
  284. package/server/.next/server/chunks/[root-of-the-server]__1kk_s-q90445m._.js +3 -0
  285. package/server/.next/server/chunks/{[root-of-the-server]__02ldm_7l9zld8._.js → [root-of-the-server]__1lfsf7un8kdbr._.js} +1 -1
  286. package/server/.next/server/chunks/[root-of-the-server]__1nusfevn1z4nm._.js +3 -0
  287. package/server/.next/server/chunks/{[root-of-the-server]__0x487cn6dsn12._.js → [root-of-the-server]__1ny8nr52qvr4i._.js} +2 -2
  288. package/server/.next/server/chunks/{[root-of-the-server]__125fkw52kl2ty._.js → [root-of-the-server]__1o9v_499yd5k8._.js} +2 -2
  289. package/server/.next/server/chunks/[root-of-the-server]__1oc55uo0ax787._.js +3 -0
  290. package/server/.next/server/chunks/{[root-of-the-server]__09odxyho_9vk_._.js → [root-of-the-server]__1qdbn4gdg7ndr._.js} +2 -2
  291. package/server/.next/server/chunks/[root-of-the-server]__1uqxnb7qfqcms._.js +3 -0
  292. package/server/.next/server/chunks/{[root-of-the-server]__1wpdlr4uh1un4._.js → [root-of-the-server]__1vqs8o9bv1wbk._.js} +2 -2
  293. package/server/.next/server/chunks/[root-of-the-server]__1vxtt1favjdfr._.js +3 -0
  294. package/server/.next/server/chunks/[root-of-the-server]__1xwgj26z5f7ih._.js +3 -0
  295. package/server/.next/server/chunks/{[root-of-the-server]__1ooxluowhatjt._.js → [root-of-the-server]__20ng0hgzxagf_._.js} +2 -2
  296. package/server/.next/server/chunks/{[root-of-the-server]__0032rbj2s87zo._.js → [root-of-the-server]__20r_62r36t28o._.js} +2 -2
  297. package/server/.next/server/chunks/[root-of-the-server]__20sv90-2ei08l._.js +3 -0
  298. package/server/.next/server/chunks/_01x32f51v50y7._.js +3 -0
  299. package/server/.next/server/chunks/{_1-pw7jw52sbti._.js → _06gv0srpbf_lk._.js} +1 -1
  300. package/server/.next/server/chunks/_0ffsv993spriq._.js +3 -0
  301. package/server/.next/server/chunks/_0hsj1tx2ynla-._.js +3 -0
  302. package/server/.next/server/chunks/{_1-pcsy2hkg0il._.js → _0ljdeybzgdyai._.js} +1 -1
  303. package/server/.next/server/chunks/_0ls7sornjrg95._.js +5 -0
  304. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  305. package/server/.next/server/chunks/{_0duxuj4kmjibl._.js → _0nt4ifc48vl34._.js} +24 -22
  306. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +3 -3
  307. package/server/.next/server/chunks/{_113ebzq_9i756._.js → _0rkn5gstaj2d0._.js} +24 -22
  308. package/server/.next/server/chunks/_0zj10_al6r59j._.js +1 -1
  309. package/server/.next/server/chunks/_1476vtrt9101m._.js +1 -1
  310. package/server/.next/server/chunks/{_1ihndlef8r00f._.js → _1_4jb754aeifp._.js} +24 -22
  311. package/server/.next/server/chunks/{_0q9a3ettj_h2s._.js → _1_9n8x5ncta29._.js} +2 -2
  312. package/server/.next/server/chunks/{_0ry4553j-m5fp._.js → _1cq1vvbp6pglr._.js} +3 -3
  313. package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +1 -1
  314. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +3 -3
  315. package/server/.next/server/chunks/{_1g8r-7wcf8sy3._.js → _1myv9csc_in08._.js} +3 -3
  316. package/server/.next/server/chunks/{_16urxazbgm48y._.js → _1n-fm2bdo9t2m._.js} +3 -3
  317. package/server/.next/server/chunks/{_1mwb214-ablfo._.js → _1qsryafbujfwn._.js} +24 -22
  318. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  319. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  320. package/server/.next/server/chunks/{src_00ixvrjrk_2h4._.js → src_0_l3dzp06o4x5._.js} +2 -2
  321. package/server/.next/server/chunks/{src_0tdn7mun5rvc6._.js → src_0m6xxpw2u-xv_._.js} +2 -2
  322. package/server/.next/server/chunks/{src_20ilndq84j3b3._.js → src_15fupbs9-n8q9._.js} +2 -2
  323. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  324. package/server/.next/server/chunks/src_1p24c-nz35cov._.js +3 -0
  325. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  326. package/server/.next/server/chunks/src_lib_001zhbfd1zeuk._.js +3 -0
  327. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +3 -0
  328. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  329. package/server/.next/server/chunks/{src_lib_206j7lyff31-g._.js → src_lib_0k_aposzvy1c8._.js} +2 -2
  330. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +20 -18
  331. package/server/.next/server/chunks/{src_lib_1-u7dbsavbtb0._.js → src_lib_0vjapfdxkooq5._.js} +2 -2
  332. package/server/.next/server/chunks/{src_lib_0krdzz8eu9xh3._.js → src_lib_0yn0bj14ih0id._.js} +2 -2
  333. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +20 -18
  334. package/server/.next/server/chunks/{src_lib_0ayxuk4ftzf2f._.js → src_lib_1qbgm0zu8q1rr._.js} +2 -2
  335. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +20 -18
  336. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +3 -0
  337. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  338. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  339. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  340. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  341. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  342. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  343. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  344. package/server/.next/server/chunks/ssr/{[externals]__078uqm46tk5mo._.js → [externals]__0irbihjwcc9is._.js} +1 -1
  345. package/server/.next/server/chunks/ssr/{[externals]__1_ttbfsdm3x1-._.js → [externals]__0vlxry7jq5j1j._.js} +1 -1
  346. package/server/.next/server/chunks/ssr/{[externals]__1devsqn7ez77y._.js → [externals]__0yyslm1ka5px3._.js} +1 -1
  347. package/server/.next/server/chunks/ssr/{[externals]__00tbi838eotwu._.js → [externals]__1mol6ksxmtkv6._.js} +1 -1
  348. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  349. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1a7x--bos5pv8._.js → [root-of-the-server]__056nm27ib-x1m._.js} +2 -2
  350. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0xpkzaqer75i-._.js → [root-of-the-server]__06b1pw15-_hv5._.js} +2 -2
  351. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  352. package/server/.next/server/chunks/ssr/{[root-of-the-server]__107gjehjdhw8p._.js → [root-of-the-server]__0eaqsql69fhf8._.js} +2 -2
  353. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ek1-s5z9ggq2._.js +3 -0
  354. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0jn0o2e32mwcp._.js → [root-of-the-server]__0hzlz_t5eect2._.js} +2 -2
  355. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  356. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  357. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  358. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ronqmm1xpldk._.js → [root-of-the-server]__0l_cl2qk_xmmr._.js} +2 -2
  359. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1adcmllk9wt5l._.js → [root-of-the-server]__0n-sc7pzu7fpz._.js} +1 -1
  360. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nxyo70ahj7tk._.js +3 -0
  361. package/server/.next/server/chunks/ssr/[root-of-the-server]__0oon1p2_04l7s._.js +3 -0
  362. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  363. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  364. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0an0wsglj2bhh._.js → [root-of-the-server]__0sj92w6mg92ds._.js} +2 -2
  365. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1uojs0x42k86p._.js → [root-of-the-server]__0wi2grctadbk8._.js} +1 -1
  366. package/server/.next/server/chunks/ssr/{[root-of-the-server]__19l_r5vy3kxo1._.js → [root-of-the-server]__0xjg51t1__v-s._.js} +1 -1
  367. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0d2ry7-u1cv8c._.js → [root-of-the-server]__0z_1k5876-_wx._.js} +2 -2
  368. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mumjk3h0om80._.js → [root-of-the-server]__1-d88ogkwql_b._.js} +2 -2
  369. package/server/.next/server/chunks/ssr/{[root-of-the-server]__191t_hhtr-k27._.js → [root-of-the-server]__110158s15r7mi._.js} +2 -2
  370. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0qwds8dkahd2_._.js → [root-of-the-server]__193nmh09rrpbx._.js} +1 -1
  371. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  372. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0x7w-5h8or6qr._.js → [root-of-the-server]__1_h_ya1h8efdj._.js} +2 -2
  373. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0paolyy3xkow9._.js → [root-of-the-server]__1a0b_dbx4uans._.js} +2 -2
  374. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ctkj-25wt37o._.js +4 -0
  375. package/server/.next/server/chunks/ssr/[root-of-the-server]__1e0l6kek0ufui._.js +3 -0
  376. package/server/.next/server/chunks/ssr/[root-of-the-server]__1hek7tjixcjch._.js +3 -0
  377. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0i0_6dnnf0hov._.js → [root-of-the-server]__1ijizmc3ga_6o._.js} +2 -2
  378. package/server/.next/server/chunks/ssr/[root-of-the-server]__1kfivch_kfesn._.js +4 -0
  379. package/server/.next/server/chunks/ssr/[root-of-the-server]__1o63-3k1wez40._.js +3 -0
  380. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ogwz1buruc_x._.js +3 -0
  381. package/server/.next/server/chunks/ssr/[root-of-the-server]__1sw2q1p1t59y8._.js +1 -1
  382. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  383. package/server/.next/server/chunks/ssr/[root-of-the-server]__1wr4__6rvsb3b._.js +3 -0
  384. package/server/.next/server/chunks/ssr/_0-wc6f6p0c8lv._.js +1 -1
  385. package/server/.next/server/chunks/ssr/_01x32f51v50y7._.js +3 -0
  386. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  387. package/server/.next/server/chunks/ssr/{_0kxkg0dbp42ai._.js → _08d4hz_ddxc02._.js} +2 -2
  388. package/server/.next/server/chunks/ssr/_08e6i1zuyz-ns._.js +3 -0
  389. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  390. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  391. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  392. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  393. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  394. package/server/.next/server/chunks/ssr/_0c7stbntpuyt_._.js +3 -0
  395. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  396. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  397. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  398. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  399. package/server/.next/server/chunks/ssr/{_1e47r3tlad52r._.js → _0e4xfzm8oecc-._.js} +2 -2
  400. package/server/.next/server/chunks/ssr/_0ffsv993spriq._.js +3 -0
  401. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  402. package/server/.next/server/chunks/ssr/_0hsj1tx2ynla-._.js +3 -0
  403. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  404. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  405. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  406. package/server/.next/server/chunks/ssr/{src_lib_0-nc33gvdtkg5._.js → _0ls7sornjrg95._.js} +2 -2
  407. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  408. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  409. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  410. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  411. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  412. package/server/.next/server/chunks/ssr/_0uvkx5n0kf7r2._.js +3 -0
  413. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  414. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  415. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  416. package/server/.next/server/chunks/ssr/_0zixhhc1lheoi._.js +2 -2
  417. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +3 -0
  418. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  419. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  420. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  421. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  422. package/server/.next/server/chunks/ssr/_1476vtrt9101m._.js +1 -1
  423. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  424. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  425. package/server/.next/server/chunks/ssr/{src_lib_1zgor_vrwl5kt._.js → _1b1t9p1xljuql._.js} +2 -2
  426. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  427. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  428. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  429. package/server/.next/server/chunks/ssr/{_0mp5aext18ijx._.js → _1e5kqt081d8yt._.js} +2 -2
  430. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  431. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  432. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  433. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  434. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  435. package/server/.next/server/chunks/ssr/{_0wb79bnj96x0g._.js → _1jclq5d7tposb._.js} +2 -2
  436. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  437. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  438. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  439. package/server/.next/server/chunks/ssr/_1o94cw0ml7xu7._.js +3 -0
  440. package/server/.next/server/chunks/ssr/_1ok868mr1th-7._.js +3 -0
  441. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  442. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  443. package/server/.next/server/chunks/ssr/{_0fq8thje0tuch._.js → _1rinsar6bp6ul._.js} +2 -2
  444. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  445. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  446. package/server/.next/server/chunks/ssr/_218164gkxgum_._.js +1 -1
  447. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  448. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  449. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  450. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_0y5m8cul6d7kk.js +1 -1
  451. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  452. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  453. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  454. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  455. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  456. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  457. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  458. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +1 -1
  459. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  460. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  461. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  462. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  463. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  464. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  465. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  466. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  467. package/server/.next/server/chunks/ssr/{src_1xjlp4oxlprxb._.js → src_0jxjbvkvg0bjg._.js} +2 -2
  468. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  469. package/server/.next/server/chunks/ssr/src_0txyv7r1zns16._.js +3 -0
  470. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  471. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  472. package/server/.next/server/chunks/ssr/{src_097wa6oc_utgr._.js → src_186l56gdeizg8._.js} +2 -2
  473. package/server/.next/server/chunks/ssr/{src_0i-1ohush6mui._.js → src_1p24c-nz35cov._.js} +2 -2
  474. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  475. package/server/.next/server/chunks/ssr/src_1xoua7wkmyfkn._.js +3 -0
  476. package/server/.next/server/chunks/ssr/src_1y827m5-ojdib._.js +6 -0
  477. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  478. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  479. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  480. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  481. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  482. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  483. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  484. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  485. package/server/.next/server/chunks/ssr/{src_app_(console)_0p2-zm5eewkqo._.js → src_app_(console)_1co5pna1vfflj._.js} +2 -2
  486. package/server/.next/server/chunks/ssr/src_app_(console)_1shtcv6hidi4-._.js +3 -0
  487. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -1
  488. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
  489. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  490. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  491. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  492. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  493. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  494. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  495. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  496. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  497. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  498. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  499. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  500. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  501. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  502. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  503. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  504. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  505. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  506. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  507. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  508. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  509. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  510. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  511. package/server/.next/server/chunks/ssr/{src_app_signin_11vigmz4xm91m._.js → src_app_signin_0ko968fxahf6u._.js} +2 -2
  512. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  513. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  514. package/server/.next/server/chunks/ssr/src_lib_001zhbfd1zeuk._.js +3 -0
  515. package/server/.next/server/chunks/ssr/src_lib_04orn7u7ufxp1._.js +3 -0
  516. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +3 -0
  517. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +23 -0
  518. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +3 -0
  519. package/server/.next/server/chunks/ssr/src_lib_1l8ej-zoyyegd._.js +3 -0
  520. package/server/.next/server/chunks/ssr/src_lib_1nkahiclbn55q._.js +3 -0
  521. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +3 -0
  522. package/server/.next/server/chunks/ssr/{src_lib_demo_07uq47fhms-3d._.js → src_lib_demo_0ftmf3wmtezvl._.js} +2 -2
  523. package/server/.next/server/chunks/ssr/src_lib_view_14iq8onyfo7nd._.js +3 -0
  524. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  525. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  526. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  527. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  528. package/server/.next/server/middleware-build-manifest.js +3 -3
  529. package/server/.next/server/pages/404.html +1 -1
  530. package/server/.next/server/pages/500.html +1 -1
  531. package/server/.next/server/preview-props.json +3 -3
  532. package/server/.next/server/server-reference-manifest.js +1 -1
  533. package/server/.next/server/server-reference-manifest.json +150 -140
  534. package/server/.next/static/chunks/{0dmql-jz-o69o.js → 0-6om8-d7itz8.js} +1 -1
  535. package/server/.next/static/chunks/{292uz-rsh422k.js → 00oeu_tbjky7m.js} +1 -1
  536. package/server/.next/static/chunks/{08f1euchlacye.js → 0181phyuecg9b.js} +1 -1
  537. package/server/.next/static/chunks/{1_93oj1b-nrla.js → 01u9q07wu6-x1.js} +1 -1
  538. package/server/.next/static/chunks/{2szc6dvuj3gxy.js → 0_5_9w6m-xwd0.js} +1 -1
  539. package/server/.next/static/chunks/{38conxv_f-pgo.js → 0hj1-5zruyih6.js} +1 -1
  540. package/server/.next/static/chunks/0krhehmzgigx5.js +1 -0
  541. package/server/.next/static/chunks/{0p6hja9octhrd.js → 0md0jy9rztofl.js} +1 -1
  542. package/server/.next/static/chunks/{1g_kip3m3h9q6.js → 0mp6prf1hx5mx.js} +1 -1
  543. package/server/.next/static/chunks/{2fze_cnwk8j76.js → 0t66sf4vvalei.js} +1 -1
  544. package/server/.next/static/chunks/{3xxcpv79l5tnh.js → 0v_-lu_cx7f91.js} +1 -1
  545. package/server/.next/static/chunks/{2z21xxtcmsmhe.js → 0xcpi35p5fa83.js} +1 -1
  546. package/server/.next/static/chunks/{2u3iceaxpiiws.js → 0z0may9twpt-j.js} +1 -1
  547. package/server/.next/static/chunks/{2l4upq4bwgvvu.js → 16yvy9zkjac5c.js} +1 -1
  548. package/server/.next/static/chunks/{1ss-6-h8nloc9.js → 18johpgap0xmw.js} +1 -1
  549. package/server/.next/static/chunks/{35to2q1uretcv.js → 18mkhwl0zlvnp.js} +1 -1
  550. package/server/.next/static/chunks/{315s21b2dd7lg.js → 1_8g4usrgjnnu.js} +1 -1
  551. package/server/.next/static/chunks/{12bbufru1ui37.js → 1gt3cagsbgx4w.js} +1 -1
  552. package/server/.next/static/chunks/{06a83nde7riq-.js → 1q-m7qgrvvzwb.js} +1 -1
  553. package/server/.next/static/chunks/{3efi_dyz4y0lj.js → 1rkrtrvwbbnjf.js} +1 -1
  554. package/server/.next/static/chunks/{29xg947lkf4-x.js → 1sc1vz_ygak9u.js} +1 -1
  555. package/server/.next/static/chunks/1tg1mstvws8rj.css +3 -0
  556. package/server/.next/static/chunks/{1t9f2pdc3crnr.js → 1ukyjy13dwy_z.js} +1 -1
  557. package/server/.next/static/chunks/{38-ay595f3xie.js → 1xm6ay06cjchs.js} +1 -1
  558. package/server/.next/static/chunks/{0qoql97izcn4l.js → 1y_6crandf_3f.js} +1 -1
  559. package/server/.next/static/chunks/{3cyesi3hi6l1g.js → 1ys80h6x541kn.js} +2 -2
  560. package/server/.next/static/chunks/{1i8i1ieoh738i.js → 2-m982u6v7z8m.js} +1 -1
  561. package/server/.next/static/chunks/{2rpa_j81h_45y.js → 2a3tky__z9q4j.js} +1 -1
  562. package/server/.next/static/chunks/{0x41o1ud_ksl1.js → 2cipdjdkoq312.js} +1 -1
  563. package/server/.next/static/chunks/{0wkv5e-c430ea.js → 2ect0ww0gtoad.js} +2 -2
  564. package/server/.next/static/chunks/{1bt81ubbahkh6.js → 2s-_9p0-395sm.js} +1 -1
  565. package/server/.next/static/chunks/{2pi0r5spn0slc.js → 2ue_c6tww95_c.js} +1 -1
  566. package/server/.next/static/chunks/{0buwzrf7dpagn.js → 2xio-kspedw69.js} +1 -1
  567. package/server/.next/static/chunks/{09e-vdlax9bp6.js → 2z6gojfx3lqvt.js} +1 -1
  568. package/server/.next/static/chunks/{3qjirj3rjf5mu.js → 31v3igne_z-0k.js} +1 -1
  569. package/server/.next/static/chunks/{088c6cw88jmlb.js → 33ddsp07_9o1d.js} +2 -2
  570. package/server/.next/static/chunks/340qccog2_uge.js +2 -0
  571. package/server/.next/static/chunks/35ua22np4u9jr.js +1 -0
  572. package/server/.next/static/chunks/{0jf5lpzwq4vh1.js → 38g-5wiggu6__.js} +1 -1
  573. package/server/.next/static/chunks/{23b9tctw1mn5a.js → 3a5a2iizetq9b.js} +1 -1
  574. package/server/.next/static/chunks/{2ac9gyn8mzqp4.js → 3f1td0b-oy-sr.js} +1 -1
  575. package/server/.next/static/chunks/{12zasgv1xisb5.js → 3imk3dh9_4wd5.js} +1 -1
  576. package/server/.next/static/chunks/{1s0s32oqy-54t.js → 3jhh47vezwohc.js} +1 -1
  577. package/server/.next/static/chunks/{1t8fe3w70uapo.js → 3letbzhf_1srv.js} +1 -1
  578. package/server/.next/static/chunks/{0a4b85ckxbprh.js → 3qedt96akbcad.js} +1 -1
  579. package/server/.next/static/chunks/{1wh-ps6a57yj1.js → 3wi930ujb_5_z.js} +1 -1
  580. package/server/.next/static/chunks/{04ospu_w--6p9.js → 40n6mtthd3_sh.js} +1 -1
  581. package/server/.next/server/chunks/[root-of-the-server]__0f5bt0o1k41ft._.js +0 -3
  582. package/server/.next/server/chunks/[root-of-the-server]__1-9hjrgvj0fpb._.js +0 -3
  583. package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +0 -3
  584. package/server/.next/server/chunks/[root-of-the-server]__14eyo4i2tm93k._.js +0 -3
  585. package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +0 -3
  586. package/server/.next/server/chunks/[root-of-the-server]__1c653f_8qzrpd._.js +0 -3
  587. package/server/.next/server/chunks/[root-of-the-server]__1dyith2r4bacm._.js +0 -3
  588. package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +0 -3
  589. package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +0 -3
  590. package/server/.next/server/chunks/[root-of-the-server]__1hv3hk5182t-o._.js +0 -3
  591. package/server/.next/server/chunks/[root-of-the-server]__1j6xniw630fg0._.js +0 -3
  592. package/server/.next/server/chunks/[root-of-the-server]__1nu5isiy7d832._.js +0 -3
  593. package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +0 -3
  594. package/server/.next/server/chunks/[root-of-the-server]__1uox9a0td-o0-._.js +0 -3
  595. package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +0 -3
  596. package/server/.next/server/chunks/[root-of-the-server]__1z_0gt-w6bx9v._.js +0 -3
  597. package/server/.next/server/chunks/[root-of-the-server]__1zrqz88a2lkx5._.js +0 -3
  598. package/server/.next/server/chunks/[root-of-the-server]__1zwi7po5_xe8-._.js +0 -3
  599. package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +0 -3
  600. package/server/.next/server/chunks/_1-ior_ot6mgxg._.js +0 -3
  601. package/server/.next/server/chunks/src_0i-1ohush6mui._.js +0 -3
  602. package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +0 -3
  603. package/server/.next/server/chunks/src_lib_0-nc33gvdtkg5._.js +0 -5
  604. package/server/.next/server/chunks/src_lib_0-xd6p5793qdu._.js +0 -3
  605. package/server/.next/server/chunks/src_lib_0qbcg988i_-ee._.js +0 -3
  606. package/server/.next/server/chunks/ssr/[root-of-the-server]__04nc91kiy757l._.js +0 -3
  607. package/server/.next/server/chunks/ssr/[root-of-the-server]__04zgt2t-w6-75._.js +0 -3
  608. package/server/.next/server/chunks/ssr/[root-of-the-server]__0a3n6wzq8xui9._.js +0 -3
  609. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ban7lwqlko9y._.js +0 -3
  610. package/server/.next/server/chunks/ssr/[root-of-the-server]__0klc2dyzyjeba._.js +0 -3
  611. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +0 -4
  612. package/server/.next/server/chunks/ssr/[root-of-the-server]__0vnfx03nb5vku._.js +0 -3
  613. package/server/.next/server/chunks/ssr/[root-of-the-server]__13fabu66slkfb._.js +0 -3
  614. package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +0 -4
  615. package/server/.next/server/chunks/ssr/[root-of-the-server]__1p2oghl9lfgmk._.js +0 -3
  616. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pwd99rch8xyl._.js +0 -3
  617. package/server/.next/server/chunks/ssr/[root-of-the-server]__2195hg4329yfp._.js +0 -3
  618. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +0 -3
  619. package/server/.next/server/chunks/ssr/_0ad3y3l77xkxe._.js +0 -3
  620. package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +0 -3
  621. package/server/.next/server/chunks/ssr/_0ufjz7kfd4jbd._.js +0 -3
  622. package/server/.next/server/chunks/ssr/_1-ior_ot6mgxg._.js +0 -3
  623. package/server/.next/server/chunks/ssr/_1uae0vl2c6fz7._.js +0 -3
  624. package/server/.next/server/chunks/ssr/_1y8wer5tpgiqw._.js +0 -3
  625. package/server/.next/server/chunks/ssr/_217qa04yo70zg._.js +0 -3
  626. package/server/.next/server/chunks/ssr/src_05kvmrkq5nfyh._.js +0 -3
  627. package/server/.next/server/chunks/ssr/src_0ixeyy74fe5jy._.js +0 -3
  628. package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +0 -3
  629. package/server/.next/server/chunks/ssr/src_1fomo1_as1-ea._.js +0 -3
  630. package/server/.next/server/chunks/ssr/src_1sv5tf2pk5-pn._.js +0 -3
  631. package/server/.next/server/chunks/ssr/src_app_(console)_1za4o0--zhso5._.js +0 -3
  632. package/server/.next/server/chunks/ssr/src_lib_0-xd6p5793qdu._.js +0 -3
  633. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +0 -21
  634. package/server/.next/server/chunks/ssr/src_lib_0qbcg988i_-ee._.js +0 -3
  635. package/server/.next/server/chunks/ssr/src_lib_18e550s395xn5._.js +0 -3
  636. package/server/.next/server/chunks/ssr/src_lib_1_5ea0kxdn6zt._.js +0 -3
  637. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +0 -6
  638. package/server/.next/static/chunks/0qsk0bb1x81nc.js +0 -1
  639. package/server/.next/static/chunks/2g9dossbqnlr7.js +0 -1
  640. package/server/.next/static/chunks/3ybb15n1q3f-o.css +0 -3
  641. /package/server/.next/static/{rBXBlxKpaOHcc5KZDIhAL → 2_t4xVgbum1rtVSQxAYYV}/_buildManifest.js +0 -0
  642. /package/server/.next/static/{rBXBlxKpaOHcc5KZDIhAL → 2_t4xVgbum1rtVSQxAYYV}/_clientMiddlewareManifest.js +0 -0
  643. /package/server/.next/static/{rBXBlxKpaOHcc5KZDIhAL → 2_t4xVgbum1rtVSQxAYYV}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[929994,a=>{"use strict";var b=a.i(187924),c=a.i(817748),d=a.i(901615),e=a.i(572131),f=a.i(823292),g=a.i(405050);let h=(0,g.createServerReference)("60c74e359c64af5a81f9968c432b903ac9ee92740c",g.callServer,void 0,g.findSourceMapURL,"createOptionsAction"),i=(0,g.createServerReference)("005442060b2bdbd48be0a46cef6f0a58abe388408a",g.callServer,void 0,g.findSourceMapURL,"disconnectGoogleCreate"),j=(0,g.createServerReference)("702eb3e98c473e986a28f848f70fe84966179665a2",g.callServer,void 0,g.findSourceMapURL,"requestCreateAction"),k=(0,g.createServerReference)("007247140dcdaaf151794f29e8264328528f391541",g.callServer,void 0,g.findSourceMapURL,"startGoogleCreateConnect");var l=a.i(771378),m=a.i(611619),n=a.i(619089),o=a.i(507504),p=a.i(814574);let q=["This asks Google for the cloud-platform permission: it is broad (it can manage every Google Cloud project you own), so the console uses it only to create a project and add Firebase to it after your approval, and never to change or delete anything.","Google shows an \"unverified app\" warning because Watchbell's OAuth client isn't verified for this scope. It is your own client for your own use: choose Advanced → Go to Watchbell.","While the OAuth consent screen is in Testing mode, Google ends this grant after 7 days; connect again when a create says so. Remove it any time in your Google Account → Security → Third-party access."];d.n.notSet("GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET",!0);var r=a.i(486583),s=a.i(620214);let t=(a,b=300)=>"string"==typeof a&&a.length<=b?a:"",u=(a,b)=>({ok:!1,field:a,error:b}),v=/^(?:\*|[a-z0-9_](?:[a-z0-9_-]{0,61}[a-z0-9_])?)$/,w=/^[a-z0-9][a-z0-9-]{0,62}$/,x=/^br-[a-z0-9-]{3,60}$/,y=[["ap-southeast-1","Southeast Asia (Singapore)"],["ap-northeast-1","Northeast Asia (Tokyo)"],["ap-northeast-2","Northeast Asia (Seoul)"],["ap-southeast-2","Oceania (Sydney)"],["ap-south-1","South Asia (Mumbai)"],["ap-east-1","East Asia (Hong Kong)"],["us-east-1","East US (North Virginia)"],["us-east-2","East US (Ohio)"],["us-west-1","West US (North California)"],["us-west-2","West US (Oregon)"],["ca-central-1","Canada (Central)"],["sa-east-1","South America (São Paulo)"],["eu-west-1","West EU (Ireland)"],["eu-west-2","West EU (London)"],["eu-west-3","West EU (Paris)"],["eu-north-1","North EU (Stockholm)"],["eu-central-1","Central EU (Frankfurt)"],["eu-central-2","Central EU (Zurich)"]],z=y.map(([a])=>a),A=/^[A-Za-z0-9][A-Za-z0-9 ._-]{0,62}$/,B=/^[\w-]{1,64}$/,C=/^[a-z][a-z0-9-]{4,28}[a-z0-9]$/,D=/^[A-Za-z0-9 '"!-]{4,30}$/;var E=a.i(762802);let F={dns_record:"The name must be new in this zone. Proxied is off unless you turn it on.",neon_branch:"The branch is created without a compute, so it uses no CU-hours until you wake it. Waking it later uses CU-hours (100 a month per project on the free plan).",supabase_project:"Only an organization on the free plan is allowed. The database password is generated when the Owner approves and shown once.",firebase_project:"A Google Cloud project without a billing account (the free Spark plan), then Firebase is added to it."};function G({type:a,target:c,targetName:d,onDone:g}){let i=(0,l.useMask)(),[k,m]=(0,e.useState)(null),[o,q]=(0,e.useState)(null),[y,E]=(0,e.useState)(c),[K,L]=(0,e.useState)({type:"CNAME",ttl:s.k,proxied:!1,region:"ap-southeast-1"}),[M,N]=(0,e.useState)(null),[O,P]=(0,e.useTransition)(),Q=(a,b)=>L(c=>({...c,[a]:b}));(0,e.useEffect)(()=>{let b=!0;return h(a,y).then(a=>{if(b)if(a.ok&&a.data){if(m(a.data),"neon_branch"===a.data.type){let b=(a.data.branches.find(a=>a.isDefault)??a.data.branches[0])?.id??"";L(a=>({...a,parentId:a.parentId??b}))}if("supabase_project"===a.data.type){a.data.accountId&&a.data.accountId!==y&&E(a.data.accountId);let b=a.data.orgs.find(a=>a.allowed);b&&L(a=>({...a,orgSlug:b.slug}))}}else q(a.ok?"Something went wrong.":a.error)}).catch(()=>b&&q("Couldn't load the choices. Try again.")),()=>{b=!1}},[a,y]);let R=a=>M?.field===a?M.text:void 0,S=k?.type==="firebase_project"&&(!k.envReady||!k.connected);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(p.F,{className:"text-base",children:i("text",`New ${r.S[a]}${"dns_record"===a||"neon_branch"===a?` in ${d}`:""}`)}),(0,b.jsxs)(p.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:[F[a]," This only asks: the Owner approves it with the authenticator code, then the console checks the free tier again and makes one create call at ",r.E[a],"."]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[o&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"danger",title:"Couldn't read the live choices",children:o})}),!k&&!o&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-ink-soft",children:"Reading the live choices…"}),"dns_record"===a&&(0,b.jsx)(H,{v:K,set:Q,fe:R,zone:d}),"neon_branch"===a&&k?.type==="neon_branch"&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[k.branches.length," of ",k.limit," branches used in this project."]}),(0,b.jsx)(n.O,{id:"cr-parent",label:"Copy from branch",error:R("parentId"),children:(0,b.jsx)("select",{id:"cr-parent",className:n.S,value:String(K.parentId??""),onChange:a=>Q("parentId",a.target.value),children:k.branches.map(a=>(0,b.jsxs)("option",{value:a.id,children:[i("text",a.name),a.isDefault?" (default)":""]},a.id))})}),(0,b.jsx)(n.O,{id:"cr-name",label:"New branch name",error:R("name"),help:"Lower-case letters, digits and hyphens, like preview-42.",children:(0,b.jsx)("input",{id:"cr-name",className:n.S,value:String(K.name??""),maxLength:63,spellCheck:!1,autoComplete:"off",onChange:a=>Q("name",a.target.value)})})]}),"supabase_project"===a&&k?.type==="supabase_project"&&(0,b.jsx)(I,{opts:k,v:K,set:Q,fe:R,account:y,setAccount:E}),"firebase_project"===a&&k?.type==="firebase_project"&&(0,b.jsx)(J,{opts:k,v:K,set:Q,fe:R}),M?.field==="form"&&(0,b.jsx)("p",{className:"mb-3 text-[12.5px] text-err",role:"alert",children:M.text})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(n.K,{onClick:g,disabled:O,children:"Cancel"}),(0,b.jsx)(n.K,{variant:"primary",onClick:function(){let b;(b="dns_record"===a?function(a,b){let c=a??{},d=t(c.type,10);if(!s.j.includes(d))return u("type","Only A, AAAA, CNAME and TXT records can be added here.");let e=function(a,b){let c=b.trim().toLowerCase().replace(/\.$/,""),d=a.trim().toLowerCase().replace(/\.$/,"");if(!d||!c||("@"===d?d=c:d===c||d.endsWith(`.${c}`)||(d=`${d}.${c}`),d.length>253))return null;let e=d===c?"":d.slice(0,-(c.length+1));return e&&!e.split(".").every((a,b)=>v.test(a)&&("*"!==a||0===b))?null:d}(t(c.name,260),b);if(!e)return u("name",`The name must be a host in ${b}, like shop or shop.${b}.`);let f="number"==typeof c.ttl?c.ttl:s.k,g=(0,s.V)({type:d,name:e},{content:t(c.content,4096),ttl:f,proxied:!0===c.proxied});return g.ok?{ok:!0,inputs:{zoneName:b.toLowerCase(),type:d,name:e,content:g.values.content,ttl:g.values.ttl,proxied:g.values.proxied}}:u(g.field,g.error)}(K,d):"neon_branch"===a?function(a,b){let c=a??{},d=t(c.name,80).trim();if(!w.test(d))return u("name","Use 1 to 63 lower-case letters, digits and hyphens, starting with a letter or digit.");let e=t(c.parentId,80);return x.test(e)?{ok:!0,inputs:{projectName:b,parentId:e,name:d}}:u("parentId","Pick the branch to copy from.")}(K,d):"supabase_project"===a?function(a){let b=a??{},c=t(b.orgSlug,80);if(!B.test(c))return u("orgSlug","Pick an organization.");let d=t(b.name,80).trim();if(!A.test(d))return u("name","Use 1 to 63 letters, digits, spaces, dots, hyphens or underscores.");let e=t(b.region,30);return z.includes(e)?{ok:!0,inputs:{orgSlug:c,name:d,region:e}}:u("region","Pick a region from the list.")}(K):function(a){let b=a??{},c=t(b.projectId,40).trim();if(!C.test(c)||/google|ssl|undefined|null/.test(c))return u("projectId",'6 to 30 lower-case letters, digits and hyphens, starting with a letter (Google refuses ids with "google").');let d=t(b.displayName,40).trim()||c.slice(0,30);return D.test(d)?{ok:!0,inputs:{projectId:c,displayName:d}}:u("displayName","4 to 30 letters, digits, spaces, hyphens, quotes or exclamation marks.")}(K)).ok?N(null):N({field:b.field,text:b.error}),b.ok&&P(async()=>{try{let b=await j(a,"supabase_project"===a?y:c,K);if(b.ok)f.c.success(i("text",b.message??"Asked.")),g();else{let a=b.fieldErrors?Object.keys(b.fieldErrors)[0]:"form";N({field:a,text:i("text",b.error)})}}catch{N({field:"form",text:"Watchbell didn't answer. Check that it's still running, then try again."})}})},disabled:O||!k||S,children:O?"Checking…":"Check and ask for approval"})]})]})}function H({v:a,set:c,fe:d,zone:e}){let f="TXT"!==a.type;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"grid grid-cols-[120px_minmax(0,1fr)] gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(n.O,{id:"cr-type",label:"Type",error:d("type"),children:(0,b.jsx)("select",{id:"cr-type",className:n.S,value:String(a.type),onChange:a=>c("type",a.target.value),children:["A","AAAA","CNAME","TXT"].map(a=>(0,b.jsx)("option",{children:a},a))})}),(0,b.jsx)(n.O,{id:"cr-name",label:"Name",error:d("name"),help:`A host in ${e}: shop becomes shop.${e}.`,children:(0,b.jsx)("input",{id:"cr-name",className:n.S,value:String(a.name??""),maxLength:253,spellCheck:!1,autoComplete:"off",onChange:a=>c("name",a.target.value)})})]}),(0,b.jsx)(n.O,{id:"cr-content",label:"Content",error:d("content"),help:"CNAME"===a.type?"For Vercel, copy the value shown on the project's Domains page.":void 0,children:(0,b.jsx)("input",{id:"cr-content",className:n.S,value:String(a.content??""),maxLength:2048,spellCheck:!1,autoComplete:"off",onChange:a=>c("content",a.target.value)})}),(0,b.jsx)(n.O,{id:"cr-ttl",label:"TTL",error:d("ttl"),children:(0,b.jsx)("select",{id:"cr-ttl",className:n.S,value:a.proxied?s.k:Number(a.ttl),disabled:!0===a.proxied,onChange:a=>c("ttl",Number(a.target.value)),children:s.i.map(a=>(0,b.jsx)("option",{value:a,children:(0,E.f)(a)},a))})}),f&&(0,b.jsxs)("label",{className:"mb-3.5 flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("input",{type:"checkbox",className:"accent-brand",checked:!0===a.proxied,onChange:a=>c("proxied",a.target.checked)}),"Proxied through Cloudflare (off by default; Vercel recommends DNS only)"]})]})}function I({opts:a,v:c,set:d,fe:e,account:f,setAccount:g}){let h=(0,l.useMask)(),i=a.active>=a.limit;return(0,b.jsxs)(b.Fragment,{children:[a.accounts.length>1&&(0,b.jsx)(n.O,{id:"cr-acc",label:"Supabase account",children:(0,b.jsx)("select",{id:"cr-acc",className:n.S,value:f,onChange:a=>g(a.target.value),children:a.accounts.map(a=>(0,b.jsx)("option",{value:a.id,children:h("account",a.label)},a.id))})}),0===a.accounts.length&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"info",title:"No Supabase account connected",children:"Connect one in Connections first."})}),a.error&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"danger",title:"Can't create with this token",children:a.error})}),(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[a.active," of ",a.limit," active free projects in use.",i?" Pause one first; paused projects don't count.":""]}),(0,b.jsx)(n.O,{id:"cr-org",label:"Organization",error:e("orgSlug"),help:"Paid or unknown plans are refused: a project there is billed from the first hour.",children:(0,b.jsx)("select",{id:"cr-org",className:n.S,value:String(c.orgSlug??""),onChange:a=>d("orgSlug",a.target.value),children:a.orgs.map(a=>(0,b.jsxs)("option",{value:a.slug,disabled:!a.allowed,children:[h("text",a.name)," · ",a.plan??"plan unknown",a.allowed?"":" (not allowed)"]},a.slug))})}),(0,b.jsx)(n.O,{id:"cr-name",label:"Project name",error:e("name"),children:(0,b.jsx)("input",{id:"cr-name",className:n.S,value:String(c.name??""),maxLength:63,autoComplete:"off",onChange:a=>d("name",a.target.value)})}),(0,b.jsx)(n.O,{id:"cr-region",label:"Region",error:e("region"),children:(0,b.jsx)("select",{id:"cr-region",className:n.S,value:String(c.region),onChange:a=>d("region",a.target.value),children:y.map(([a,c])=>(0,b.jsxs)("option",{value:a,children:[c," · ",a]},a))})}),(0,b.jsx)("p",{className:"mb-3 text-[12.5px] text-ink-soft",children:a.scopeNote})]})}function J({opts:a,v:c,set:e,fe:f}){return a.envReady?a.connected?(0,b.jsxs)(b.Fragment,{children:[a.error&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"danger",title:"Google",children:a.error})}),null!==a.projects&&(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[a.projects," active Google Cloud project",1===a.projects?"":"s",". Google's project quota without a billing account is about ",a.quotaHint," and isn't readable by API; deleted projects count for 30 days."]}),(0,b.jsx)(n.O,{id:"cr-pid",label:"Project id",error:f("projectId"),help:"6 to 30 lower-case letters, digits and hyphens. Permanent and global: pick one nobody has.",children:(0,b.jsx)("input",{id:"cr-pid",className:n.S,value:String(c.projectId??""),maxLength:30,spellCheck:!1,autoComplete:"off",onChange:a=>e("projectId",a.target.value)})}),(0,b.jsx)(n.O,{id:"cr-pname",label:"Display name",error:f("displayName"),children:(0,b.jsx)("input",{id:"cr-pname",className:n.S,value:String(c.displayName??""),maxLength:30,autoComplete:"off",onChange:a=>e("displayName",a.target.value)})})]}):(0,b.jsxs)("div",{className:"mb-3 flex flex-col gap-2",children:[(0,b.jsx)(n.M,{tone:"info",title:"Connect Google (create projects) first",children:"The Firebase service accounts are viewer-only, so creating needs your own Google grant."}),(0,b.jsx)(K,{})]}):(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"info",title:"Google OAuth isn't set up",children:d.n.notSet("GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET",!0)})})}function K({reconnect:a=!1}){return(0,b.jsx)(m.f,{trigger:(0,b.jsx)(n.K,{size:"sm",variant:"primary",children:a?"Reconnect Google (create projects)":"Connect Google (create projects)"}),title:"Connect Google (create projects)",body:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mb-2",children:"Google will ask you to approve one permission, separate from the Drive backup one:"}),(0,b.jsx)("p",{className:"mb-2 rounded-md border border-line bg-sunken px-3 py-2 text-ink-soft",children:"See, edit, configure, and delete your Google Cloud data (cloud-platform)."}),(0,b.jsx)("ul",{className:"list-disc space-y-1 pl-5 text-ink-soft",children:q.map(a=>(0,b.jsx)("li",{children:a},a))}),(0,b.jsxs)("p",{className:"mt-2 text-ink-soft",children:["Before the first connect, add this redirect URI to the OAuth client in the Google Cloud console: ",(0,b.jsx)("span",{className:"font-mono text-[12px]",children:"/auth/google/create/callback"})," on this site."]})]}),cta:"Continue to Google",onConfirm:async()=>{let a=await k();return a.ok&&a.data?(window.location.assign(a.data.url),{ok:!0,message:"Opening Google…"}):{ok:!1,message:a.ok?"Watchbell didn't answer. Check that it's still running, then try again.":a.error}}})}a.s(["CreateButton",0,function({type:a,target:d,targetName:f,label:g}){let[h,i]=(0,e.useState)(!1);return(0,o.useHoldRefresh)(h),(0,b.jsxs)(p.N,{open:h,onOpenChange:i,children:[(0,b.jsxs)(p.a,{render:(0,b.jsx)(n.K,{size:"sm"}),children:[(0,b.jsx)(c.f,{size:15,"aria-hidden":!0,className:"-ml-0.5 mr-1 inline"}),g]}),(0,b.jsx)(p.d,{className:"gap-0 p-0 sm:max-w-[560px]",showCloseButton:!1,children:h&&(0,b.jsx)(G,{type:a,target:d,targetName:f,onDone:()=>i(!1)})})]})},"DisconnectGoogleCreateButton",0,function(){return(0,b.jsx)(m.f,{trigger:(0,b.jsx)(n.K,{children:"Disconnect Google (create)"}),title:"Disconnect Google (create projects)?",body:"The console forgets the grant. Remove Watchbell's access in your Google Account → Security → Third-party access as well. Projects already created stay.",cta:"Disconnect",onConfirm:async()=>{let a=await i();return a.ok?{ok:!0,message:a.message??"Disconnected."}:{ok:!1,message:a.error}}})}],929994)}];
1
+ module.exports=[929994,a=>{"use strict";var b=a.i(187924),c=a.i(817748),d=a.i(901615),e=a.i(572131),f=a.i(823292),g=a.i(405050);let h=(0,g.createServerReference)("60a99acee563dae6858c3d105470c114da7edfbb38",g.callServer,void 0,g.findSourceMapURL,"createOptionsAction"),i=(0,g.createServerReference)("006de3bf8f32e81d0fd4bf6aa3a0fa124dcb22d0d8",g.callServer,void 0,g.findSourceMapURL,"disconnectGoogleCreate"),j=(0,g.createServerReference)("7088ae97dbe713832c3ed7d21bfbaeeba0ee55f892",g.callServer,void 0,g.findSourceMapURL,"requestCreateAction"),k=(0,g.createServerReference)("000fa03d6d8500a2fa2ad64a9c4af3762a11f2215d",g.callServer,void 0,g.findSourceMapURL,"startGoogleCreateConnect");var l=a.i(771378),m=a.i(611619),n=a.i(619089),o=a.i(507504),p=a.i(814574);let q=["This asks Google for the cloud-platform permission: it is broad (it can manage every Google Cloud project you own), so the console uses it only to create a project and add Firebase to it after your approval, and never to change or delete anything.","Google shows an \"unverified app\" warning because Watchbell's OAuth client isn't verified for this scope. It is your own client for your own use: choose Advanced → Go to Watchbell.","While the OAuth consent screen is in Testing mode, Google ends this grant after 7 days; connect again when a create says so. Remove it any time in your Google Account → Security → Third-party access."];d.n.notSet("GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET",!0);var r=a.i(486583),s=a.i(620214);let t=(a,b=300)=>"string"==typeof a&&a.length<=b?a:"",u=(a,b)=>({ok:!1,field:a,error:b}),v=/^(?:\*|[a-z0-9_](?:[a-z0-9_-]{0,61}[a-z0-9_])?)$/,w=/^[a-z0-9][a-z0-9-]{0,62}$/,x=/^br-[a-z0-9-]{3,60}$/,y=[["ap-southeast-1","Southeast Asia (Singapore)"],["ap-northeast-1","Northeast Asia (Tokyo)"],["ap-northeast-2","Northeast Asia (Seoul)"],["ap-southeast-2","Oceania (Sydney)"],["ap-south-1","South Asia (Mumbai)"],["ap-east-1","East Asia (Hong Kong)"],["us-east-1","East US (North Virginia)"],["us-east-2","East US (Ohio)"],["us-west-1","West US (North California)"],["us-west-2","West US (Oregon)"],["ca-central-1","Canada (Central)"],["sa-east-1","South America (São Paulo)"],["eu-west-1","West EU (Ireland)"],["eu-west-2","West EU (London)"],["eu-west-3","West EU (Paris)"],["eu-north-1","North EU (Stockholm)"],["eu-central-1","Central EU (Frankfurt)"],["eu-central-2","Central EU (Zurich)"]],z=y.map(([a])=>a),A=/^[A-Za-z0-9][A-Za-z0-9 ._-]{0,62}$/,B=/^[\w-]{1,64}$/,C=/^[a-z][a-z0-9-]{4,28}[a-z0-9]$/,D=/^[A-Za-z0-9 '"!-]{4,30}$/;var E=a.i(762802);let F={dns_record:"The name must be new in this zone. Proxied is off unless you turn it on.",neon_branch:"The branch is created without a compute, so it uses no CU-hours until you wake it. Waking it later uses CU-hours (100 a month per project on the free plan).",supabase_project:"Only an organization on the free plan is allowed. The database password is generated when the Owner approves and shown once.",firebase_project:"A Google Cloud project without a billing account (the free Spark plan), then Firebase is added to it."};function G({type:a,target:c,targetName:d,onDone:g}){let i=(0,l.useMask)(),[k,m]=(0,e.useState)(null),[o,q]=(0,e.useState)(null),[y,E]=(0,e.useState)(c),[K,L]=(0,e.useState)({type:"CNAME",ttl:s.k,proxied:!1,region:"ap-southeast-1"}),[M,N]=(0,e.useState)(null),[O,P]=(0,e.useTransition)(),Q=(a,b)=>L(c=>({...c,[a]:b}));(0,e.useEffect)(()=>{let b=!0;return h(a,y).then(a=>{if(b)if(a.ok&&a.data){if(m(a.data),"neon_branch"===a.data.type){let b=(a.data.branches.find(a=>a.isDefault)??a.data.branches[0])?.id??"";L(a=>({...a,parentId:a.parentId??b}))}if("supabase_project"===a.data.type){a.data.accountId&&a.data.accountId!==y&&E(a.data.accountId);let b=a.data.orgs.find(a=>a.allowed);b&&L(a=>({...a,orgSlug:b.slug}))}}else q(a.ok?"Something went wrong.":a.error)}).catch(()=>b&&q("Couldn't load the choices. Try again.")),()=>{b=!1}},[a,y]);let R=a=>M?.field===a?M.text:void 0,S=k?.type==="firebase_project"&&(!k.envReady||!k.connected);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(p.F,{className:"text-base",children:i("text",`New ${r.S[a]}${"dns_record"===a||"neon_branch"===a?` in ${d}`:""}`)}),(0,b.jsxs)(p.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:[F[a]," This only asks: the Owner approves it with the authenticator code, then the console checks the free tier again and makes one create call at ",r.E[a],"."]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[o&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"danger",title:"Couldn't read the live choices",children:o})}),!k&&!o&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-ink-soft",children:"Reading the live choices…"}),"dns_record"===a&&(0,b.jsx)(H,{v:K,set:Q,fe:R,zone:d}),"neon_branch"===a&&k?.type==="neon_branch"&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[k.branches.length," of ",k.limit," branches used in this project."]}),(0,b.jsx)(n.O,{id:"cr-parent",label:"Copy from branch",error:R("parentId"),children:(0,b.jsx)("select",{id:"cr-parent",className:n.S,value:String(K.parentId??""),onChange:a=>Q("parentId",a.target.value),children:k.branches.map(a=>(0,b.jsxs)("option",{value:a.id,children:[i("text",a.name),a.isDefault?" (default)":""]},a.id))})}),(0,b.jsx)(n.O,{id:"cr-name",label:"New branch name",error:R("name"),help:"Lower-case letters, digits and hyphens, like preview-42.",children:(0,b.jsx)("input",{id:"cr-name",className:n.S,value:String(K.name??""),maxLength:63,spellCheck:!1,autoComplete:"off",onChange:a=>Q("name",a.target.value)})})]}),"supabase_project"===a&&k?.type==="supabase_project"&&(0,b.jsx)(I,{opts:k,v:K,set:Q,fe:R,account:y,setAccount:E}),"firebase_project"===a&&k?.type==="firebase_project"&&(0,b.jsx)(J,{opts:k,v:K,set:Q,fe:R}),M?.field==="form"&&(0,b.jsx)("p",{className:"mb-3 text-[12.5px] text-err",role:"alert",children:M.text})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(n.K,{onClick:g,disabled:O,children:"Cancel"}),(0,b.jsx)(n.K,{variant:"primary",onClick:function(){let b;(b="dns_record"===a?function(a,b){let c=a??{},d=t(c.type,10);if(!s.j.includes(d))return u("type","Only A, AAAA, CNAME and TXT records can be added here.");let e=function(a,b){let c=b.trim().toLowerCase().replace(/\.$/,""),d=a.trim().toLowerCase().replace(/\.$/,"");if(!d||!c||("@"===d?d=c:d===c||d.endsWith(`.${c}`)||(d=`${d}.${c}`),d.length>253))return null;let e=d===c?"":d.slice(0,-(c.length+1));return e&&!e.split(".").every((a,b)=>v.test(a)&&("*"!==a||0===b))?null:d}(t(c.name,260),b);if(!e)return u("name",`The name must be a host in ${b}, like shop or shop.${b}.`);let f="number"==typeof c.ttl?c.ttl:s.k,g=(0,s.V)({type:d,name:e},{content:t(c.content,4096),ttl:f,proxied:!0===c.proxied});return g.ok?{ok:!0,inputs:{zoneName:b.toLowerCase(),type:d,name:e,content:g.values.content,ttl:g.values.ttl,proxied:g.values.proxied}}:u(g.field,g.error)}(K,d):"neon_branch"===a?function(a,b){let c=a??{},d=t(c.name,80).trim();if(!w.test(d))return u("name","Use 1 to 63 lower-case letters, digits and hyphens, starting with a letter or digit.");let e=t(c.parentId,80);return x.test(e)?{ok:!0,inputs:{projectName:b,parentId:e,name:d}}:u("parentId","Pick the branch to copy from.")}(K,d):"supabase_project"===a?function(a){let b=a??{},c=t(b.orgSlug,80);if(!B.test(c))return u("orgSlug","Pick an organization.");let d=t(b.name,80).trim();if(!A.test(d))return u("name","Use 1 to 63 letters, digits, spaces, dots, hyphens or underscores.");let e=t(b.region,30);return z.includes(e)?{ok:!0,inputs:{orgSlug:c,name:d,region:e}}:u("region","Pick a region from the list.")}(K):function(a){let b=a??{},c=t(b.projectId,40).trim();if(!C.test(c)||/google|ssl|undefined|null/.test(c))return u("projectId",'6 to 30 lower-case letters, digits and hyphens, starting with a letter (Google refuses ids with "google").');let d=t(b.displayName,40).trim()||c.slice(0,30);return D.test(d)?{ok:!0,inputs:{projectId:c,displayName:d}}:u("displayName","4 to 30 letters, digits, spaces, hyphens, quotes or exclamation marks.")}(K)).ok?N(null):N({field:b.field,text:b.error}),b.ok&&P(async()=>{try{let b=await j(a,"supabase_project"===a?y:c,K);if(b.ok)f.c.success(i("text",b.message??"Asked.")),g();else{let a=b.fieldErrors?Object.keys(b.fieldErrors)[0]:"form";N({field:a,text:i("text",b.error)})}}catch{N({field:"form",text:"Watchbell didn't answer. Check that it's still running, then try again."})}})},disabled:O||!k||S,children:O?"Checking…":"Check and ask for approval"})]})]})}function H({v:a,set:c,fe:d,zone:e}){let f="TXT"!==a.type;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"grid grid-cols-[120px_minmax(0,1fr)] gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(n.O,{id:"cr-type",label:"Type",error:d("type"),children:(0,b.jsx)("select",{id:"cr-type",className:n.S,value:String(a.type),onChange:a=>c("type",a.target.value),children:["A","AAAA","CNAME","TXT"].map(a=>(0,b.jsx)("option",{children:a},a))})}),(0,b.jsx)(n.O,{id:"cr-name",label:"Name",error:d("name"),help:`A host in ${e}: shop becomes shop.${e}.`,children:(0,b.jsx)("input",{id:"cr-name",className:n.S,value:String(a.name??""),maxLength:253,spellCheck:!1,autoComplete:"off",onChange:a=>c("name",a.target.value)})})]}),(0,b.jsx)(n.O,{id:"cr-content",label:"Content",error:d("content"),help:"CNAME"===a.type?"For Vercel, copy the value shown on the project's Domains page.":void 0,children:(0,b.jsx)("input",{id:"cr-content",className:n.S,value:String(a.content??""),maxLength:2048,spellCheck:!1,autoComplete:"off",onChange:a=>c("content",a.target.value)})}),(0,b.jsx)(n.O,{id:"cr-ttl",label:"TTL",error:d("ttl"),children:(0,b.jsx)("select",{id:"cr-ttl",className:n.S,value:a.proxied?s.k:Number(a.ttl),disabled:!0===a.proxied,onChange:a=>c("ttl",Number(a.target.value)),children:s.i.map(a=>(0,b.jsx)("option",{value:a,children:(0,E.f)(a)},a))})}),f&&(0,b.jsxs)("label",{className:"mb-3.5 flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("input",{type:"checkbox",className:"accent-brand",checked:!0===a.proxied,onChange:a=>c("proxied",a.target.checked)}),"Proxied through Cloudflare (off by default; Vercel recommends DNS only)"]})]})}function I({opts:a,v:c,set:d,fe:e,account:f,setAccount:g}){let h=(0,l.useMask)(),i=a.active>=a.limit;return(0,b.jsxs)(b.Fragment,{children:[a.accounts.length>1&&(0,b.jsx)(n.O,{id:"cr-acc",label:"Supabase account",children:(0,b.jsx)("select",{id:"cr-acc",className:n.S,value:f,onChange:a=>g(a.target.value),children:a.accounts.map(a=>(0,b.jsx)("option",{value:a.id,children:h("account",a.label)},a.id))})}),0===a.accounts.length&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"info",title:"No Supabase account connected",children:"Connect one in Connections first."})}),a.error&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"danger",title:"Can't create with this token",children:a.error})}),(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[a.active," of ",a.limit," active free projects in use.",i?" Pause one first; paused projects don't count.":""]}),(0,b.jsx)(n.O,{id:"cr-org",label:"Organization",error:e("orgSlug"),help:"Paid or unknown plans are refused: a project there is billed from the first hour.",children:(0,b.jsx)("select",{id:"cr-org",className:n.S,value:String(c.orgSlug??""),onChange:a=>d("orgSlug",a.target.value),children:a.orgs.map(a=>(0,b.jsxs)("option",{value:a.slug,disabled:!a.allowed,children:[h("text",a.name)," · ",a.plan??"plan unknown",a.allowed?"":" (not allowed)"]},a.slug))})}),(0,b.jsx)(n.O,{id:"cr-name",label:"Project name",error:e("name"),children:(0,b.jsx)("input",{id:"cr-name",className:n.S,value:String(c.name??""),maxLength:63,autoComplete:"off",onChange:a=>d("name",a.target.value)})}),(0,b.jsx)(n.O,{id:"cr-region",label:"Region",error:e("region"),children:(0,b.jsx)("select",{id:"cr-region",className:n.S,value:String(c.region),onChange:a=>d("region",a.target.value),children:y.map(([a,c])=>(0,b.jsxs)("option",{value:a,children:[c," · ",a]},a))})}),(0,b.jsx)("p",{className:"mb-3 text-[12.5px] text-ink-soft",children:a.scopeNote})]})}function J({opts:a,v:c,set:e,fe:f}){return a.envReady?a.connected?(0,b.jsxs)(b.Fragment,{children:[a.error&&(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"danger",title:"Google",children:a.error})}),null!==a.projects&&(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[a.projects," active Google Cloud project",1===a.projects?"":"s",". Google's project quota without a billing account is about ",a.quotaHint," and isn't readable by API; deleted projects count for 30 days."]}),(0,b.jsx)(n.O,{id:"cr-pid",label:"Project id",error:f("projectId"),help:"6 to 30 lower-case letters, digits and hyphens. Permanent and global: pick one nobody has.",children:(0,b.jsx)("input",{id:"cr-pid",className:n.S,value:String(c.projectId??""),maxLength:30,spellCheck:!1,autoComplete:"off",onChange:a=>e("projectId",a.target.value)})}),(0,b.jsx)(n.O,{id:"cr-pname",label:"Display name",error:f("displayName"),children:(0,b.jsx)("input",{id:"cr-pname",className:n.S,value:String(c.displayName??""),maxLength:30,autoComplete:"off",onChange:a=>e("displayName",a.target.value)})})]}):(0,b.jsxs)("div",{className:"mb-3 flex flex-col gap-2",children:[(0,b.jsx)(n.M,{tone:"info",title:"Connect Google (create projects) first",children:"The Firebase service accounts are viewer-only, so creating needs your own Google grant."}),(0,b.jsx)(K,{})]}):(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(n.M,{tone:"info",title:"Google OAuth isn't set up",children:d.n.notSet("GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET",!0)})})}function K({reconnect:a=!1}){return(0,b.jsx)(m.f,{trigger:(0,b.jsx)(n.K,{size:"sm",variant:"primary",children:a?"Reconnect Google (create projects)":"Connect Google (create projects)"}),title:"Connect Google (create projects)",body:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mb-2",children:"Google will ask you to approve one permission, separate from the Drive backup one:"}),(0,b.jsx)("p",{className:"mb-2 rounded-md border border-line bg-sunken px-3 py-2 text-ink-soft",children:"See, edit, configure, and delete your Google Cloud data (cloud-platform)."}),(0,b.jsx)("ul",{className:"list-disc space-y-1 pl-5 text-ink-soft",children:q.map(a=>(0,b.jsx)("li",{children:a},a))}),(0,b.jsxs)("p",{className:"mt-2 text-ink-soft",children:["Before the first connect, add this redirect URI to the OAuth client in the Google Cloud console: ",(0,b.jsx)("span",{className:"font-mono text-[12px]",children:"/auth/google/create/callback"})," on this site."]})]}),cta:"Continue to Google",onConfirm:async()=>{let a=await k();return a.ok&&a.data?(window.location.assign(a.data.url),{ok:!0,message:"Opening Google…"}):{ok:!1,message:a.ok?"Watchbell didn't answer. Check that it's still running, then try again.":a.error}}})}a.s(["CreateButton",0,function({type:a,target:d,targetName:f,label:g}){let[h,i]=(0,e.useState)(!1);return(0,o.useHoldRefresh)(h),(0,b.jsxs)(p.N,{open:h,onOpenChange:i,children:[(0,b.jsxs)(p.a,{render:(0,b.jsx)(n.K,{size:"sm"}),children:[(0,b.jsx)(c.f,{size:15,"aria-hidden":!0,className:"-ml-0.5 mr-1 inline"}),g]}),(0,b.jsx)(p.d,{className:"gap-0 p-0 sm:max-w-[560px]",showCloseButton:!1,children:h&&(0,b.jsx)(G,{type:a,target:d,targetName:f,onDone:()=>i(!1)})})]})},"DisconnectGoogleCreateButton",0,function(){return(0,b.jsx)(m.f,{trigger:(0,b.jsx)(n.K,{children:"Disconnect Google (create)"}),title:"Disconnect Google (create projects)?",body:"The console forgets the grant. Remove Watchbell's access in your Google Account → Security → Third-party access as well. Projects already created stay.",cta:"Disconnect",onConfirm:async()=>{let a=await i();return a.ok?{ok:!0,message:a.message??"Disconnected."}:{ok:!1,message:a.error}}})}],929994)}];
2
2
 
3
3
  //# sourceMappingURL=src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[247730,a=>{var b=a.i(530385),c=a.i(93321),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(556987);async function h(){let[a,h]=await Promise.all([(0,e.f)().select({id:f.resources.id,kind:f.resources.kind,name:f.resources.name,firstSeenAt:f.resources.firstSeenAt,parentId:f.resources.parentId,team:d.B`${f.resources.meta}->>'teamSlug'`}).from(f.resources).where((0,c.y)(f.resources.kind,["app","supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"])).orderBy((0,b.M)(f.resources.firstSeenAt),(0,b.M)(f.resources.id)).limit(2e3),(0,e.f)().select({id:f.accounts.id,label:f.accounts.label,createdAt:f.accounts.createdAt}).from(f.accounts).orderBy((0,b.M)(f.accounts.createdAt),(0,b.M)(f.accounts.id)).limit(200)]);return(0,g.n)(a,h)}a.s(["f",0,h])},751263,a=>{var b=a.i(760417);function c(a,c){return"string"==typeof a&&a!==c&&(0,b.c)(a)?a:null}let d=/^[0-9a-f]{7,40}$/i;function e(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let c="string"==typeof a.ref&&(0,b.c)(a.ref)?a.ref:null;if("string"==typeof a.ref&&!c)return null;let e="string"==typeof a.sha&&d.test(a.sha)?a.sha:null,f="string"==typeof a.at&&Number.isFinite(Date.parse(a.at))?a.at:null,g="string"==typeof a.id&&/^[A-Za-z0-9_-]{1,80}$/.test(a.id)?a.id:null,h={...e?{sha:e}:{},...f?{at:f}:{},...g?{id:g}:{}};return"git"===a.kind&&c?{kind:"git",ref:c,...h}:"cli"===a.kind?{kind:"cli",...c?{ref:c}:{},...h}:null}function f(a,d){let f=e(a?.productionSource);return f?.kind==="git"?f.ref:c(a?.productionBranch,d)??d??("string"==typeof a?.productionBranch&&(0,b.c)(a.productionBranch)?a.productionBranch:null)}function g(a,b,c){let d=e(a);if(!d)return null;let f=b??"a stale branch";return!d.at||c.getTime()-Date.parse(d.at)>18e5?`Watchbell can't confirm what production is built from (no reading in the last 30 minutes). Merging this PR could deploy ${f} to production and replace what is live.`:"cli"===d.kind?`Production was deployed from the CLI${b?`, not built from ${b}`:""}. Merging this PR would deploy ${f} to production and replace what is live.`:b&&d.ref!==b?`Production was built from ${d.ref}, not ${b}. Merging this PR would deploy ${b} to production and replace what is live.`:null}function h(a){let b=e(a?.productionSource);return b?.kind==="git"?b.ref:a?.productionBranch}a.s(["u",0,6e5,"a",0,function(a,c){let d=e(a?.productionSource),f=[];for(let e of[d?.kind==="git"?d.ref:null,a?.productionBranch,c])if(!("string"!=typeof e||!(0,b.c)(e)||f.includes(e))&&(f.push(e),e===c))break;return f},"q",0,f,"K",0,function(a){let b=e(a?.productionSource);return b?{productionSource:b}:{}},"i",0,c,"B",0,g,"g",0,function(a,b,c){let d=e(a);if(!d)return null;let h=g(a,f({productionSource:a,productionBranch:b},null),c);return{text:"git"===d.kind?`${d.ref} (git)`:d.ref?`CLI deploy (from ${d.ref})`:"CLI deploy",warning:h?`${h} Update PRs open as drafts for your approval and are never merged automatically.`:null}},"s",0,function(a){let c=a.branch&&(0,b.c)(a.branch)?a.branch:null,e=a.sha&&d.test(a.sha)?a.sha:null;return"cli"===a.source||!0===a.gitDirty||"cli"===a.branchFrom&&"git"!==a.source?{kind:"cli",...c?{ref:c}:{},...c&&e?{sha:e}:{}}:c?{kind:"git",ref:c,...e?{sha:e}:{}}:null},"O",0,e,"v",0,(a,b)=>(a?.kind??null)===(b?.kind??null)&&(a?.ref??null)===(b?.ref??null)&&(a?.sha??null)===(b?.sha??null)&&(a?.id??null)===(b?.id??null),"V",0,h,"w",0,function(a){let c=h(a),d=a?.productionBranch;return"string"==typeof d&&d!==c&&(0,b.c)(d)?d:null},"y",0,function(a,c,d=null){if(!a||"br"===d)return null;let e=/^br:([^:]+):/.exec(a);return e?(0,b.c)(e[1])?e[1]:null:c}])},188546,a=>{var b=a.i(26972),c=a.i(427221),d=a.i(83931),e=a.i(689963),f=a.i(811365);let g=b.z.object({notAfter:c.z.string().nullable(),issuer:c.z.string().nullable(),authorized:d.z.boolean().nullable(),error:c.z.string().nullable(),checkedAt:c.z.string()}),h=b.z.object({misconfigured:d.z.boolean(),configuredBy:c.z.string().nullable(),recommendedIps:e.z.array(c.z.string()).default([]),checkedAt:c.z.string()}),i=b.z.object({expiresAt:c.z.string().nullable(),registrar:c.z.string().nullable(),error:c.z.string().nullable(),checkedAt:c.z.string()}),j=b.z.object({id:c.z.string(),type:c.z.string(),name:c.z.string(),content:c.z.string(),proxied:d.z.boolean(),ttl:f.z.number(),comment:c.z.string().nullable()}),k=b.z.object({status:c.z.string().nullable(),paused:d.z.boolean(),nameServers:e.z.array(c.z.string()),accountId:c.z.string().nullable(),checkedAt:c.z.string().nullable()}),l=b.z.object({mode:c.z.string().nullable(),error:c.z.string().nullable()}),m=b.z.object({type:c.z.string(),status:c.z.string(),hosts:e.z.array(c.z.string()),expiresOn:c.z.string().nullable()}),n=(a,b)=>{let c=a.safeParse(b);return c.success?c.data:null},o=(a,b)=>Array.isArray(b)?b.flatMap(b=>{let c=a.safeParse(b);return c.success?[c.data]:[]}):[],p=a=>Array.isArray(a)?a.filter(a=>"string"==typeof a):[];a.s(["q",0,function(a){let b=a??{};return{tls:n(g,b.tls),vercel:n(h,b.vercel),rdap:n(i,b.rdap),records:o(j,b.records),recordsTruncated:!0===b.recordsTruncated,zone:n(k,b.zone),ssl:n(l,b.ssl),certs:o(m,b.certs),cfErrors:p(b.cfErrors),reasons:p(b.reasons)}},"n",0,function(a,b,c){let d=c.toISOString();return a.ok?{expiresAt:a.expiresAt,registrar:a.registrar,error:null,checkedAt:d}:{expiresAt:b?.expiresAt??null,registrar:b?.registrar??null,error:a.error,checkedAt:d}},"o",0,function(a,b,c){let d=c.toISOString();return a.ok?{notAfter:a.notAfter.toISOString(),issuer:a.issuer,authorized:a.authorized,error:null,checkedAt:d}:{notAfter:b?.notAfter??null,issuer:b?.issuer??null,authorized:null,error:a.error,checkedAt:d}}])}]})();
2
+
3
+ //# sourceMappingURL=src_lib_001zhbfd1zeuk._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[133289,a=>{var b=a.i(245710);a.s(["e",0,"Demo · no live collector","m",0,function(a,b){if(!a)return{state:"idle",text:"Collector hasn't run yet"};let c=Math.max(0,Math.round((b.getTime()-a.getTime())/1e3)),d=Math.floor(c/60);return c<60?{state:"ok",text:`Collector ran ${c}s ago`}:c<120?{state:"ok",text:`Collector ran ${d} min ago`}:c<300?{state:"warn",text:`Collector late \xb7 ran ${d} min ago`}:{state:"err",text:`Collector stopped ${d} min ago`}},"i",0,function(a,c,d){if(!a.finishedAt)return c.getTime()-a.startedAt.getTime()<12e4?{state:"build",text:"Running now"}:{state:"err",text:`Last run didn't finish (started ${(0,b.$)(a.startedAt,c)})`};let e=(0,b.$)(a.finishedAt,c);return!1===a.ok?{state:"warn",text:`Last run ${e} \xb7 finished with problems`}:c.getTime()-a.finishedAt.getTime()>=d?{state:"warn",text:`Last run ${e} \xb7 late`}:{state:"ok",text:`Last run ${e}`}}])},656298,a=>{function b(a){return"RESOURCE_EXHAUSTED"===a.reason?{state:"err",label:"Daily quota used up"}:"SERVICE_DISABLED"===a.reason?{state:"err",label:"Firestore API is off in this project"}:"scope"===a.kind||"PERMISSION_DENIED"===a.reason||"scope"===a.reason?{state:"err",label:"No access: needs datastore.viewer"}:{state:"unknown",label:"Unknown"}}a.s(["T",0,{reads:5e4,writes:2e4,deletes:2e4},"_",0,"The stored data size (1 GiB free) isn't read on any plan: the row's Open usage page shows it in the Firebase console.","f",0,"Storage (1 GiB): not read; the Firebase console's usage page shows it.","z",0,b,"g",0,function(a){return a.ok?a.data.noDatabase?{state:"off",label:"No Firestore database"}:{state:"ok",label:`Reachable \xb7 ${a.data.latencyMs} ms`}:b(a)},"a",0,function(a){let b=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",hour:"numeric",minute:"numeric",second:"numeric",hourCycle:"h23"}).formatToParts(a),c=a=>Number(b.find(b=>b.type===a)?.value??0),d=(3600*c("hour")+60*c("minute")+c("second"))*1e3+a.getUTCMilliseconds();return new Date(a.getTime()-d)}])},688275,a=>{let b={cuHours:100,storageBytes:0x40000000,transferBytes:0x140000000,branches:10,scaleToZeroMin:5};function c(a){return a.disabled?{state:"err",label:"Suspended"}:"init"===a.state||a.pendingState&&a.pendingState!==a.state?{state:"build",label:"Starting"}:"active"===a.state?{state:"ok",label:"Active"}:"idle"===a.state?{state:"idle",label:"Idle"}:{state:"unknown",label:"Unknown"}}a.s(["a",0,b,"c",0,(a,b)=>a===b?`${a} CU`:`${a}–${b} CU`,"g",0,a=>Math.round(a/360)/10,"T",0,c,"p",0,function(a){if((a.computeSeconds??0)>=3600*b.cuHours)return{state:"err",label:"CU-hours used up"};if(!a.endpoints.length)return{state:"unknown",label:"No compute"};let d=a.endpoints.map(c);return d.some(a=>"err"===a.state)?{state:"err",label:"Compute suspended"}:d.some(a=>"ok"===a.state)?{state:"ok",label:"Active"}:d.some(a=>"build"===a.state)?{state:"build",label:"Starting"}:d.every(a=>"idle"===a.state)?{state:"idle",label:"Idle"}:{state:"unknown",label:"Unknown"}}])},631107,a=>{var b=a.i(245710);let c=a=>"number"==typeof a&&Number.isFinite(a)&&a>=0?a:null;a.s(["Z",0,(a,b)=>b.getTime()-a.getTime()>72e5,"O",0,function(a){let c=Math.max(0,...a.map(a=>a.views));return a.map(a=>({key:a.at.toISOString(),pct:0===a.views||0===c?0:Math.max(4,Math.round(a.views/c*100)),title:`${(0,b.U)(a.at)} \xb7 ${a.views} view${1===a.views?"":"s"}`}))},"G",0,function(a){let b=a&&"object"==typeof a?a.pageviews:null;if(!b||"object"!=typeof b)return null;let d="string"==typeof b.readAt?Date.parse(b.readAt):0/0;if(Number.isNaN(d)||"boolean"!=typeof b.enabled)return null;if(!b.enabled)return{enabled:!1,readAt:new Date(d)};let e=c(b.total24h),f=null===b.visitors24h?null:c(b.visitors24h);if(null===e||null===f&&null!==b.visitors24h)return null;let g=36e5*Math.floor(d/36e5),h=new Map;for(let a of Array.isArray(b.hourly)?b.hourly:[]){if(!Array.isArray(a))continue;let b="string"==typeof a[0]?Date.parse(a[0]):0/0,d=c(a[1]);if(Number.isNaN(b)||null===d)continue;let e=36e5*Math.floor(b/36e5);h.set(e,(h.get(e)??0)+d)}return{enabled:!0,total:e,visitors:f,hours:Array.from({length:24},(a,b)=>{let c=g-(23-b)*36e5;return{at:new Date(c),views:h.get(c)??0}}),readAt:new Date(d)}},"R",0,function(a){return!a.gone&&a.teamId&&a.accountOk?a.hasProductionDeploy?null:"Not read: this app has no production deployment yet.":"Not read: this app isn't in a connected Vercel account."},"a",0,function(a,b){return a.enabled?{enabled:!0,total24h:a.total,visitors24h:a.visitors,readAt:b.toISOString(),hourly:a.hourly.slice(-24).map(a=>[a.at.toISOString(),a.views])}:{enabled:!1,readAt:b.toISOString()}}])}]})();
2
+
3
+ //# sourceMappingURL=src_lib_04orn7u7ufxp1._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[949663,912283,876808,747556,a=>{var b=a.i(927262),c=a.i(201516),d=a.i(273133),e=a.i(120213),f=a.i(84979),g=a.i(84877),h=a.i(679662);let i=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function j(a,b){let c=i.exec(a.trim()),d=i.exec(b.trim());return!!c&&!!d&&c[1]===d[1]&&("0"!==c[1]||c[2]===d[2])&&(0,g.f)(b,a)>=0}let k=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,l=a=>k.exec(a)?.[1]??null;a.s(["M",0,a=>`Lockfile tertinggal — jalankan npm install (${a.slice(0,5).join(", ")}${a.length>5?`, +${a.length-5}`:""}).`,"a",0,function(a,b,c){if(!a.length)return{ok:!1,why:"nothing"};let d=a.filter(a=>c.includes(a.severity)&&!("moderate"===a.severity&&a.dev));if(!d.length)return{ok:!1,why:"severity"};for(let a of d){let c=b.get(a.package);if(!c||!j(c,a.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:d}},"m",0,function(a,b){if(!b)return{deps:a,stale:[]};let c=[...Object.entries(b.dependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.optionalDependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.devDependencies).map(([a,b])=>[a,b,!0])],d=[...a],e=[];for(let[a,b,f]of c){let c=(0,h.Y)(b);if(!c||!(0,h.C)(c))continue;let i=d.filter(b=>b.name===a);!i.length||i.some(a=>(0,g.f)(a.version,c)>=0)||((d=d.filter(b=>b.name!==a)).push({name:a,version:c,dev:i.every(a=>a.dev)&&f}),e.push(a))}return{deps:d,stale:e}},"D",0,function(a){let b=new Map;for(let c of a){if(!c.direct)continue;let a=b.get(c.package);(!a||0>(0,g.f)(c.installedVersion,a))&&b.set(c.package,c.installedVersion)}return b},"U",0,function(a,b,c=null){for(let d of b){if(l(d.title)!==c)continue;let b=function(a){if(a.packages?.length)return a.packages;let b=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(a.title);return b?[b[1]]:"all"}(d);if("all"===b||a.some(a=>b.includes(a)))return d}return null},"J",0,j],912283);let m=["next","eslint-config-next"],n={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function o(a,b){if(!a||!(0,h.C)(a))return null;let c=b.map(a=>a.fixed).filter(b=>!!b&&(0,h.C)(b)&&(0,g.f)(b,a)>0);if(!c.length)return null;let d=c.filter(b=>j(a,b));return(d.length?d:c).reduce((a,b)=>(0,g.f)(b,a)>0?b:a)}function p(a,b){let c=o(a,b),d=c?b.map(a=>a.fixed).filter(a=>!!a&&(0,h.C)(a)&&(0,g.f)(a,c)>0):[],e=d.reduce((a,b)=>null===a||(0,g.f)(b,a)>0?b:a,null),i=e?` (${1===d.length?"one fix needs":"some fixes need"} Next.js ${e.split(".")[0]})`:"";return`Next.js ${a??"(unknown version)"} has ${(0,f.q)(b.length)} (${(0,f.N)(b).toLowerCase()}), ${c?`fixed in ${c}${i}`:"no fix yet"}.`}a.s(["P",0,p,"p",0,function(a){if(!a||"vulnerable"!==a.status||!a.findings.length||!a.version)return null;let b=o(a.version,a.findings);if(!b)return null;let c=n[(0,f.N)(a.findings)],d=[...new Set(a.findings.map(a=>a.id))],e=[...new Set(a.findings.flatMap(a=>a.cve?[a.cve]:[]))];return{from:a.version,to:b,upgrades:[{package:"next",to:b,vulnIds:d,cves:e,severity:c},{package:"eslint-config-next",to:b,vulnIds:[],cves:[],severity:c,companionOf:"next"}],installed:new Map(m.map(b=>[b,a.version]))}},"F",0,function(a){let b=a.find(a=>"next"===a.package&&!a.companionOf);return!b||a.some(a=>"eslint-config-next"===a.package)?a:[...a,{package:"eslint-config-next",to:b.to,vulnIds:[],cves:[],severity:b.severity,companionOf:"next"}]}],876808);let q=a=>Math.round(a).toLocaleString("en-US"),r=(a,b)=>Math.floor((a.getTime()-b.getTime())/864e5),s=(a,b)=>`${a} ${b}${1===a?"":"s"}`,t=a=>{try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},u=a=>{try{return new URL(a).host}catch{return a}},v=a=>{try{return new URL(a).pathname}catch{return"/"}},w="Down · ",x=(a,b,c)=>({rule:a,subject:b,status:"unknown",resourceId:null,accountId:null,title:b,message:"",provider:null,sampleAt:null,...c}),y=a=>"firestore"===a.provider?"firebase":"d1"===a.provider?"cloudflare":a.provider,z=new Set(["turso","upstash","d1"]),A={MonitorDown:(a,b)=>a.monitors.map(a=>{let d=x("MonitorDown",a.id,{resourceId:a.appId,title:`${a.appName} ${"heartbeat"===a.kind?a.url:v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt}),e=b??3;if("heartbeat"===a.kind){let b;return{...d,status:"err"===a.state?"firing":"ok"===a.state?"ok":"unknown",message:`${a.appName} \xb7 ${a.url}: ${b=a.lastError,b?.startsWith(w)?b.slice(w.length):"no ping in time"}.`}}return a.movedTo?{...d,status:"ok",message:`${u(a.url)} moved to ${a.movedTo}; MonitorDomainMoved takes over.`}:a.failStreak>=e?{...d,status:"firing",message:(0,c.H)(a)?`${t(a.url)} failed its check (${(0,c.H)(a)}) on ${e} consecutive checks.`:`${t(a.url)} returned ${a.lastStatus?`HTTP ${a.lastStatus}`:"no answer"} on ${e} consecutive checks.`}:{...d,status:0===a.failStreak&&a.lastCheckedAt?"ok":"unknown",message:`${t(a.url)} answers again.`}}),MonitorDomainMoved:a=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let b=x("MonitorDomainMoved",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel"});return a.movedTo?{...b,status:"firing",message:`${u(a.url)} is no longer a domain of ${a.appName}; production is on ${a.movedTo}.`}:{...b,status:"ok",message:`The monitor checks ${u(a.url)}, a domain of ${a.appName}.`}}),CollectorStale:(a,b)=>{let c=a.lastMinuteRunAt;return[x("CollectorStale","collector",{status:!c||a.now.getTime()-c.getTime()>(b??5)*6e4?"firing":"ok",title:"collector",message:c?`The last minute run finished ${q((a.now.getTime()-c.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(a,b)=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let c=x("HighLatency",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt});if(a.checksLast10<5||null===a.p95Last10)return c;let d=b??1500;return{...c,status:a.p95Last10>d?"firing":"ok",message:`p95 ${q(a.p95Last10)} ms over the last 10 minutes (limit ${q(d)} ms).`}}),DeploymentFailed:a=>a.apps.map(a=>{let b=x("DeploymentFailed",a.id,{resourceId:a.id,title:a.name,provider:"vercel"}),c=a.latestProduction;return c?"error"===c.state?{...b,status:"firing",message:`Production deployment ${c.sha?c.sha.slice(0,7):"(no commit)"} failed.`}:{...b,status:"building"===c.state?"unknown":"ok"}:{...b,status:"ok"}}),DatabasePaused:a=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(a=>x("DatabasePaused",a.id,{resourceId:a.id,title:a.name,provider:"supabase",status:"unknown"===a.state?"unknown":"paused"===a.state?"firing":"ok",message:`Supabase project ${a.name} is paused.`})),CertExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=x("CertExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.tlsNotAfter)return d;let e=r(c.tlsNotAfter,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:`The TLS certificate of ${c.name} expires in ${s(e,"day")}.`}}),DomainExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=x("DomainExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.expiresAt)return d;let e=r(c.expiresAt,a.now);return{...d,status:e<(b??30)?"firing":"ok",message:`${c.name} expires in ${s(e,"day")}.`}}),StorageAlmostFull:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"!==a.provider).map(a=>{let c=x("StorageAlmostFull",a.id,{resourceId:a.id,title:a.name,provider:y(a)});if(null===a.sizeBytes||!a.sizeLimitBytes)return c;let d=a.sizeBytes/a.sizeLimitBytes*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} uses ${q(a.sizeBytes/1e6)} MB of ${q(a.sizeLimitBytes/1e6)} MB (${q(d)}%).`}}),NeonComputeHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"neon"===a.provider).map(a=>{let c=x("NeonComputeHigh",a.id,{resourceId:a.id,title:a.name,provider:"neon"});return null===a.cuHours?c:{...c,status:a.cuHours>(b??80)?"firing":"ok",message:`${a.name} used ${q(a.cuHours)} of ${q(a.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"===a.provider).map(a=>{let c=x("FirestoreQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:"firebase"});if(a.quotaExhausted)return{...c,status:"firing",message:`${a.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===a.readsToday||!a.readsLimit)return!1===a.quotaExhausted?{...c,status:"ok"}:c;let d=a.readsToday/a.readsLimit*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} read ${q(a.readsToday)} of ${q(a.readsLimit)} documents today (${q(d)}%).`}}),AutoPauseRisk:(a,b)=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(c=>{let d=x("AutoPauseRisk",c.id,{resourceId:c.id,title:c.name,provider:"supabase"});if("paused"===c.state)return{...d,status:"ok"};if(!c.lastApiAt)return d;let e=Math.floor((a.now.getTime()-c.lastApiAt.getTime())/864e5);return{...d,status:e>=(b??4)?"firing":"ok",message:`No API traffic for ${s(e,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:a=>a.dns&&a.dns.map(a=>x("DnsProxiedToVercel",a.id,{resourceId:a.resourceId,title:a.name,provider:"cloudflare",status:a.proxied&&a.pointsToVercel?"firing":"ok",message:`${a.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>z.has(a.provider)).map(a=>{let c=x("DbQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:y(a)});return null==a.quotaPct?c:{...c,status:a.quotaPct>(b??80)?"firing":"ok",message:`${a.name}: ${a.quotaLabel??"usage"} at ${q(a.quotaPct)}% of the free plan.`}}),ComputeHigh:(a,b)=>a.compute?a.compute.map(c=>{let e=x("ComputeHigh",c.id,{resourceId:c.id,title:c.name,provider:"supabase",sampleAt:c.latest?new Date(c.latest.at):null}),f=(0,d.B)(c.latest,(0,d.V)(b),a.now);return null===f?e:{...e,status:f.length?"firing":"ok",message:f.length?`${c.name}: ${f.join(", ")}.`:`${c.name} compute is back under the limits.`}}):null,CredentialExpiring:(a,b)=>a.accounts.map(c=>{let d=x("CredentialExpiring",c.id,{accountId:c.id,title:`${c.provider} \xb7 ${c.label}`,provider:c.provider});if("drive"===c.provider&&"error"===c.status&&c.lastError?.includes("invalid_grant"))return{...d,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!c.expiresAt)return{...d,status:"ok"};let e=r(c.expiresAt,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:e<0?`The ${c.provider} credential ${c.label} has expired.`:`The ${c.provider} credential ${c.label} expires in ${s(e,"day")}.`}}),VulnerableDependency:a=>a.deps?a.deps.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=x("VulnerableDependency",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(b.error)return[d];let f=(0,e.g)(b.vulns);return f?[{...d,status:"firing",message:(0,e.L)(b.vulns),..."critical"===f?{severity:"critical"}:{}}]:[{...d,status:"ok",message:`${c.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:a=>a.frameworks?a.frameworks.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=x("FrameworkVulnerable",b.appId,{resourceId:b.appId,title:c.name});return"ok"===b.status?[{...d,status:"ok",message:`${c.name} runs Next.js ${b.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===b.status&&b.findings.length?[{...d,status:"firing",message:p(b.version,b.findings),..."CRITICAL"===(0,f.N)(b.findings)?{severity:"critical"}:{}}]:[d]}):null};a.s(["f",0,function(a,c,d){let e=[],f=new Set;for(let g of c){if(!g.enabled||d&&!d.includes(g.key)||!b._[g.key])continue;let c=A[g.key](a,g.threshold);c&&(f.add(g.key),e.push(...c))}return{observations:e,evaluated:f}}],949663);let B=["MonitorDown","HighLatency"],C=["telegram","discord","webhook","smtp"],D=a=>a.channels.some(a=>C.includes(a));function E(a,b){return b.collectorStale&&"CollectorStale"!==a.rule?"CollectorStale":a.resourceId&&B.includes(a.rule)?b.mutedApps.get(a.resourceId)??null:null}let F=(a,b)=>"critical"===b&&"warning"===a?"critical":a,G=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),H=(a,b)=>`${a}|${b}`;a.s(["f",0,function(a,c,d,e,f){let g={open:[],touch:[],resolve:[]},h=new Map(e.map(a=>[a.key,a])),i=new Map(c.map(a=>[H(a.rule,a.subject),a])),j=new Set(a.map(a=>H(a.ruleKey,a.subject))),k=a=>g.resolve.push({id:a.id,pending:a.notifiedOpen?"resolve":null});for(let c of a){let a=h.get(c.ruleKey),e=i.get(H(c.ruleKey,c.subject));if(!a||!a.enabled){g.resolve.push({id:c.id,pending:null});continue}if(!d.has(c.ruleKey))continue;if(!e){g.resolve.push({id:c.id,pending:null});continue}if("unknown"===e.status)continue;let j=e.provider?f.incidents.get(e.provider)??null:null;if("firing"===e.status){let b=E(e,f),d=c.notifiedOpen&&null!==c.lastNotifiedAt&&f.now.getTime()-c.lastNotifiedAt.getTime()>=216e5,h={id:c.id,okStreak:0,lastSampleAt:e.sampleAt??c.lastSampleAt,lastSeenAt:f.now,message:e.message,causedBy:b,providerIncident:j},i=!c.notifiedOpen&&(!c.pendingSince||f.now.getTime()-c.pendingSince.getTime()>=216e5);(d||i)&&!G(c,f.now)&&!b&&null===c.pending&&D(a)&&(h.pending=d?"repeat":"open"),g.touch.push(h);continue}if(!b._[c.ruleKey].sampled||null===e.sampleAt){k(c);continue}if(!(null===c.lastSampleAt||e.sampleAt.getTime()>c.lastSampleAt.getTime()))continue;let l=c.okStreak+1;l>=2?k(c):g.touch.push({id:c.id,okStreak:l,lastSampleAt:e.sampleAt})}for(let a of c){if("firing"!==a.status||j.has(H(a.rule,a.subject))||f.maintenance.has(a.subject)||a.resourceId&&f.maintenance.has(a.resourceId))continue;let b=h.get(a.rule);if(!b)continue;let c=E(a,f);g.open.push({ruleKey:a.rule,subject:a.subject,resourceId:a.resourceId,accountId:a.accountId,severity:F(b.severity,a.severity),title:a.title,message:a.message,startedAt:f.now,lastSeenAt:f.now,lastSampleAt:a.sampleAt,causedBy:c,providerIncident:a.provider?f.incidents.get(a.provider)??null:null,pending:c||!D(b)?null:"open"})}return g}],747556)},708621,a=>{let b=["status","severity","rule","target","detail","cause","step","since","threshold"],c=["id","en"],d={en:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nNext step: {step}\nsince {since}",id:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nYang perlu kamu lakukan: {step}\nsejak {since}"},e=/\{([a-zA-Z_]+)\}/g,f=a=>a.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function g(a){if(a.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,c]of a.matchAll(e))if(!b.includes(c))return`{${c}} isn't a field. Use ${b.map(a=>`{${a}}`).join(", ")}.`;return null}a.s(["I",0,{en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},"z",0,"alerts.messageTemplates","i",0,c,"_",0,function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e)continue;let a={};for(let b of c){let c=e[b];"string"==typeof c&&c.trim()&&null===g(c)&&(a[b]=c)}Object.keys(a).length&&(b[d]=a)}return b},"l",0,function(a,b){return f(a).split("\n").flatMap(a=>{let c=[...a.matchAll(e)].map(a=>a[1]).filter(a=>Object.hasOwn(b,a));return c.length&&c.every(a=>!b[a].trim())?[]:[a.replace(e,(a,c)=>Object.hasOwn(b,c)?b[c]:a)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()},"F",0,function(a,b){let c="string"==typeof a?f(a):"";return c&&c!==d[b]?c:null},"m",0,g])},455317,71575,569057,930270,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(927262),h=a.i(949663),i=a.i(747556),j=a.i(708621),k=a.i(519051),l=a.i(160147),m=a.i(245710);function n(a,b){return"1h"===a?{silencedUntil:new Date(b.getTime()+36e5),silencedUntilResolved:!1}:{silencedUntil:null,silencedUntilResolved:!0}}a.s(["_",0,[["critical","Critical"],["warning","Warning"],["info","Info"]],"O",0,function(a,b){return a.silencedUntilResolved?{state:"off",text:"Silenced until resolved"}:a.silencedUntil&&a.silencedUntil.getTime()>b.getTime()?{state:"off",text:`Silenced until ${(0,m.U)(a.silencedUntil)}`}:"open"===a.pending||"repeat"===a.pending?{state:"build",text:"Sending…"}:a.causedBy&&!a.notifiedOpen?{state:"off",text:"Muted"}:a.lastNotifiedAt?{state:"ok",text:`Sent ${(0,m.U)(a.lastNotifiedAt)}`}:{state:"off",text:"Digest only"}},"G",0,function(a){return a.enabled?a.firing?{state:"err",text:`Firing \xb7 ${a.firing}`}:a.hasData?{state:"off",text:"Inactive"}:{state:"unknown",text:"No data yet"}:{state:"off",text:"Disabled"}},"A",0,n,"M",0,function(a,b){let c=Math.max(1,Math.round((b.getTime()-a.getTime())/6e4));if(c<60)return`${c} min`;let d=Math.floor(c/60);return d<24?`${d} h ${c%60} min`:`${Math.floor(d/24)} d ${d%24} h`}],71575);var o=a.i(639271),p=a.i(656298),q=a.i(688275),r=a.i(893893),s=a.i(672319),t=a.i(188546),u=a.i(233711);async function v(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function w(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}a.s(["D",0,v,"d",0,w],569057);var x=a.i(367247),y=a.i(436357),z=a.i(912283),A=a.i(358179),B=a.i(492665),C=a.i(683439),D=a.i(679662),E=a.i(852539),F=a.i(33135),G=a.i(533957);let H="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function I(a,b,c,d){let e=d.deadline-Date.now();if(e<500)return{ok:!1,error:"No time left for OSV.dev"};let f=AbortSignal.timeout(e);return K(a,{method:"POST",headers:{"content-type":"application/json","user-agent":H},body:JSON.stringify(b),signal:f},c,f,d)}async function J(a,b,c){let d=c.deadline-Date.now();if(d<500)return{ok:!1,error:"No time left for OSV.dev"};let e=AbortSignal.timeout(Math.min(d,8e3));return K(a,{method:"GET",headers:{"user-agent":H},signal:e},b,e,c)}async function K(a,b,c,d,e){let f;try{f=await (e.fetch??fetch)(a,{...b,redirect:"error",cache:"no-store"})}catch(a){return{ok:!1,error:(0,G.t)(a)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!f.ok)return await f.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${f.status}`};try{let{bytes:a,truncated:b}=await (0,F.z)(f,c,(0,F.X)(d));if(b)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(a))}}catch(a){return{ok:!1,error:(0,G.t)(a)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function L(a,b){let c=[];for(let d of(0,E.f)(a)){let a=await I(E.n,d,4194304,b);if(!a.ok)return a;let e=(0,E.j)(a.body,d.queries.length);if(!e)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};c.push(...e)}return{ok:!0,ids:c}}async function M(a,b){let c=[...new Set(a)].filter(E.G);if(c.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${c.length})`};let d=new Map,e=null;for(let a=0;a<c.length&&!e;a+=8)await Promise.all(c.slice(a,a+8).map(async a=>{let c=await J(`${E.W}${encodeURIComponent(a)}`,1048576,b),f=c.ok?(0,E.O)(c.body):null;f?d.set(a,f):e??=c.ok?"OSV.dev sent an advisory we couldn't read":c.error}));return e?{ok:!1,error:e}:{ok:!0,map:d}}var N=a.i(521050),O=a.i(120213),P=a.i(689963),Q=a.i(26972),R=a.i(427221),S=a.i(811365),T=a.i(760417);let U=P.z.array(Q.z.object({name:R.z.string(),type:R.z.string(),sha:R.z.string(),size:S.z.number().optional()}));async function V(a,b,c,d={},e=null){if(!(0,T.M)(b)||!(0,T.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==e&&(0,N.Q)(e)!==e)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let f=e?e.split("/").map(encodeURIComponent).join("/"):"",g=await (0,T.j)(`/repos/${(0,T.f)(b)}/contents/${f}?ref=${encodeURIComponent(c)}`,a,d);if(!g.ok)return g;let h=U.safeParse(g.data);return h.success?{ok:!0,data:h.data.filter(a=>"file"===a.type&&/^[0-9a-f]{40}$/.test(a.sha)).map(a=>({name:a.name,sha:a.sha,size:a.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function W(a,b,c,d={}){if(!(0,T.M)(b)||!(0,T.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let e=await (0,T.j)(`/repos/${(0,T.f)(b)}/git/ref/heads/${c.split("/").map(encodeURIComponent).join("/")}`,a,d);return e.ok?{ok:!0,data:!0}:"missing"===e.kind?{ok:!0,data:!1}:e}function X(a,b,c,d,e,f={}){return(0,T.V)(a,b,c,d,e,f)}async function Y(a,b,c={}){if(!(0,T.M)(b))return{ok:!1,kind:"format",error:"That isn't a repository name."};let d=await (0,T.j)(`/repos/${(0,T.f)(b)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,a,c);if(!d.ok)return"scope"===d.kind||"missing"===d.kind?{ok:!0,data:{denied:!0}}:d;let e=(0,O.E)(d.data);return e?{ok:!0,data:{alerts:e}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var Z=a.i(751263);async function $(){let[a]=await (0,e.f)().select().from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);if(!a)return{error:"GitHub isn't connected."};let d=(0,A.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,B.f)().OPS_ENCRYPTION_KEY);return d?{token:d,accountId:a.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function _(){let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,"deps.scanAll")).limit(1);return a?.value===!0}let aa=a=>{let b=(0,Z.w)(a);return{dir:(0,N.Q)((a??{}).rootDirectory),unsupported:(0,N.l)((a??{}).rootDirectoryUnsupported),branch:(0,Z.i)((0,Z.V)(a),null),...b?{fallback:b}:{}}};async function ab(a){let c=[...new Set(a.filter(C.f))],d=new Map;if(!c.length)return d;let g=await (0,e.f)().select({repoId:f.appRepos.repoId,name:f.resources.name,monitored:f.resources.monitored,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.y)(f.appRepos.repoId,c),(0,b.M)(f.resources.goneAt))).limit(1e3);for(let a of(g.sort((a,b)=>Number(!!b.monitored)-Number(!!a.monitored)||(a.name<b.name?-1:+(a.name>b.name))),g))d.has(a.repoId)||d.set(a.repoId,aa(a.meta));return d}async function ac(){let a={id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,scannedAt:f.dependencyScans.scannedAt},c=(0,b.b)((0,b.M)(f.githubRepos.goneAt),(0,b.u)(f.githubRepos.archived,!1)),d=await _()?await (0,e.f)().select(a).from(f.githubRepos).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500):await (0,e.f)().selectDistinct(a).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500),g=d.length?await ab(d.map(a=>a.id)):new Map;return(0,O.M)(d.map(a=>{let b=g.get(a.id);return{...a,rootDir:b?.dir??null,rootDirUnsupported:b?.unsupported??null,prodBranch:b?.branch??null,...b?.fallback?{prodFallback:b.fallback}:{}}}))}let ad=(a,b)=>a.length>b?`${a.slice(0,b-1)}…`:a;async function ae(a,b){let c=new Date;await (0,e.f)().insert(f.dependencyScans).values({repoId:a,...b,updatedAt:c}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{...b,updatedAt:c}})}async function af(a){return(0,e.f)().select({id:f.dependencyVulns.id,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,source:f.dependencyVulns.source}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)}function ag(a,b){for(let c of D.a){let d=a.find(a=>a.name===c.path);if(d)return{path:(0,N.H)(b,c.path),kind:c.kind,sha:d.sha}}return null}async function ah(a,c,d,g={}){let h=()=>({...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),1e4))}),i=async a=>(await ae(c.id,{error:ad(a,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:a}),j=c.defaultBranch??"HEAD",k=null;for(let b of[c.prodBranch,c.prodFallback]){if(b&&b===c.defaultBranch)break;let d=(0,Z.i)(b,c.defaultBranch);if(!d)continue;let e=await W(a,c.fullName,d,h());if(!e.ok)return i(e.error);if(e.data){k=d;break}}let l=null!==k;k&&(j=k);let m=l?`Scanned ${k}, the branch production is built from.`:null,n=(0,N.Q)(c.rootDir),o=n?null:(0,N.l)(c.rootDirUnsupported),p=o?`The Vercel Root Directory "${o}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,q=await V(a,c.fullName,j,h(),n);if(!q.ok)return i(n&&"missing"===q.kind?`The folder ${(0,N.x)(n)} isn't in ${c.fullName} on ${j}.`:q.error);let r=ag(q.data,n),s=q.data.find(a=>"package.json"===a.name)??null,t=!1,u=null;if(n&&s&&!r){let b=await V(a,c.fullName,j,h());if(!b.ok)return i(b.error);t=null!==(r=ag(u=b.data,null))}let v=r?r.sha:s?`pkg:${s.sha}`:null,w=v&&n?`${n}:${v}${t&&s?`+${s.sha}`:""}`:v&&o?`odd:${v}`:v,x=w&&l?`br:${k}:${w}`:w,[y]=await (0,e.f)().select().from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,c.id)).limit(1),A=new Date;if(!(0,O.U)(y??null,x,A,g.force))return{status:"unchanged"};if(!x){let a=await af(c.id);return a.length&&await (0,e.f)().update(f.dependencyVulns).set({resolvedAt:A}).where((0,b.y)(f.dependencyVulns.id,a.map(a=>a.id))),await ae(c.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:A,queriedAt:A,error:null,note:ad([m,p,`No package.json or lockfile ${n?"in":"at"} ${(0,N.x)(n)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let B=(0,N.H)(n,"package.json"),C=s?await X(a,c.fullName,B,j,T.$,h()):null;if(C&&!C.ok)return i(C.error);let F=C?.ok&&C.data?(0,D.b)(C.data):null,G=null,H="package-json",I=t&&r?`Scanned ${(0,N.x)(n)} with the repository root's ${r.path} (workspaces).`:null;if(r){if(2e3>d-Date.now())return i("Time budget used before the lockfile was read; the next run tries again.");let b=await X(a,c.fullName,r.path,j,0xf00000,{...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),2e4))});if(!b.ok)return i(b.error);let e=!0;if(t&&n&&b.data&&!(0,N.p)(r.kind,b.data,n)){let b=u?.some(a=>"package.json"===a.name)?await X(a,c.fullName,"package.json",j,T.$,h()):null;if(b&&!b.ok)return i(b.error);e=(0,N.F)(b?.data??null,n)}e?(G=b.data?(0,D.D)(r.kind,b.data):null,H=r.kind,G||(I=[I,`${r.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(I=`The repository root's ${r.path} isn't a workspace that includes ${n}, so the versions come from ${B} ranges (approximate).`,r=null)}if(G){let a=(0,z.m)(G,F);G=a.deps,a.stale.length&&(I=[I,(0,z.M)(a.stale)].filter(Boolean).join(" "))}else G=F?(0,D.e)(F):[],H="package-json",I??=r?null:"No lockfile: the versions come from package.json ranges (approximate).";let J=await af(c.id),K=[];if(G.length){let a=await L(G,{fetch:g.fetch,deadline:d});if(!a.ok)return i(a.error);let b=(0,O.A)(J,!0===g.force),c=await M((0,O.z)(G,a.ids,b),{fetch:g.fetch,deadline:d});if(!c.ok)return i(c.error);K=(0,E.i)(G,a.ids,c.map,b)}if(d-Date.now()>1500){let b=await Y(a,c.fullName,h());b.ok&&"alerts"in b.data?K=(0,O.R)(K,b.data.alerts,G):b.ok&&(I=[I,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let P=(0,O.h)(J,K,(0,D.K)(F));I=[m,p,I].filter(Boolean).join(" ")||null;let Q=new Date;return await (0,e.f)().transaction(async a=>{for(let d of(P.insert.length&&await a.insert(f.dependencyVulns).values(P.insert.map(a=>({repoId:c.id,package:a.package,installedVersion:a.installedVersion,vulnId:a.vulnId,aliases:a.aliases,severity:a.severity,fixedVersion:a.fixedVersion,summary:a.summary,direct:a.direct,dev:a.dev,source:a.source,firstSeenAt:Q,lastSeenAt:Q}))).onConflictDoNothing(),P.update))await a.update(f.dependencyVulns).set({severity:d.severity,fixedVersion:d.fixedVersion,summary:d.summary,aliases:d.aliases,dev:d.dev,direct:d.direct,lastSeenAt:Q}).where((0,b.u)(f.dependencyVulns.id,d.id));P.resolve.length&&await a.update(f.dependencyVulns).set({resolvedAt:Q}).where((0,b.b)((0,b.y)(f.dependencyVulns.id,P.resolve),(0,b.M)(f.dependencyVulns.resolvedAt))),await a.insert(f.dependencyScans).values({repoId:c.id,lockfilePath:r?.path??(s?B:null),lockfileSha:x,packageCount:G.length,scannedAt:Q,queriedAt:Q,error:null,note:I?ad(I,300):null,updatedAt:Q}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{lockfilePath:r?.path??(s?B:null),lockfileSha:x,packageCount:G.length,scannedAt:Q,queriedAt:Q,error:null,note:I?ad(I,300):null,updatedAt:Q}})}),{status:"scanned",vulns:P.insert.length+P.update.length,packages:G.length,note:"package-json"===H?I:null}}async function ai(a,c={}){var d,g;let h,i,j,k,l=await $();if("error"in l)return{error:l.error};let{first:m,only:n,skip:o,...p}=c,q=(d=await ac(),h=(g={first:m,only:n,skip:o}).only?new Set(g.only):null,i=new Set(g.skip??[]),j=(h?d.filter(a=>h.has(a.id)):d).filter(a=>!i.has(a.id)),k=new Set(g.first??[]),[...j.filter(a=>k.has(a.id)),...j.filter(a=>!k.has(a.id))]),r={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:q.map(a=>a.id)};for(let[b,c]of q.entries()){if(a-Date.now()<4e3){r.left=q.length-b;break}r.done.push(c.id);try{let b=await ah(l.token,c,a,p);"scanned"===b.status?r.scanned++:"unchanged"===b.status?r.unchanged++:r.failed.push(`${c.fullName}: ${b.error}`)}catch(a){r.failed.push(`${c.fullName}: ${a instanceof Error?a.name:"error"}`)}}return await (0,e.f)().delete(f.dependencyVulns).where((0,b.b)((0,b.E)(f.dependencyVulns.resolvedAt),(0,b.S)(f.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),r}let aj=async()=>(await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).limit(1)).length>0;async function ak(a,c,d={}){let g,h,i,{marked:j,onlyMarked:k}=c;if(!await aj())return{problem:null,settled:[...j],done:[],complete:!0};let l=j.filter(C.f),m=l.length?await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,l)).limit(5*l.length):[],n=[...new Set(m.map(a=>a.repoId))],o=a=>m.filter(b=>b.appId===a).map(a=>a.repoId),p=j.filter(a=>!o(a).length);if(k&&!n.length)return{problem:null,settled:[...j],done:[],complete:!0};if(a-Date.now()<4e3)return{problem:null,settled:p,done:[],complete:!1};let q=(c.skip??[]).filter(a=>!n.includes(a)),r=await ai(a,{...d,first:n,...k?{only:n}:{skip:q}});if("error"in r){let a;return{problem:(a=r.error,/didn't answer in time|no time left|time budget|rate limit/i.test(a))?null:r.error,settled:[...j],done:[],complete:!0}}let s=new Set([...r.done,...n.filter(a=>!r.listed.includes(a))]);return{problem:(g=r.failed.filter(a=>!/didn't answer in time|no time left|time budget|rate limit/i.test(a)),(h=r.failed.length-g.length+(r.left??0))&&console.info(`deps: ${h} repositor${1===h?"y":"ies"} wait for the next run`),i=g.slice(0,3),g.length>3&&i.push(`+${g.length-3} more`),i.length?i.join("; "):null),settled:j.filter(a=>o(a).every(a=>s.has(a))),done:r.done,complete:0===r.left}}async function al(a){let d={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,C.f)(a))return d;let[g]=await (0,e.f)().select({id:f.githubRepos.id,fullName:f.githubRepos.fullName}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return d;let[[h],i,[j]]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,g.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3),(0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github_write")).limit(1)]);i.sort((a,b)=>(0,O.t)(a.severity)-(0,O.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1));let k=await (0,e.f)().select({number:f.dependencyPrs.number,stage:f.dependencyPrs.stage,stageText:f.dependencyPrs.stageText,openedAt:f.dependencyPrs.openedAt}).from(f.dependencyPrs).where((0,b.b)((0,b.u)(f.dependencyPrs.repoId,g.id),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,c.A)(f.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:g,scan:h??null,vulns:i,writeConnected:!!j,prs:(k??[]).map(a=>({...a,fullName:g.fullName}))}}async function am(a,c={}){if(!(0,C.f)(a))return{ok:!1,error:"That app no longer exists."};let[g]=await (0,e.f)().select({app:f.resources.name,id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,goneAt:f.githubRepos.goneAt,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return{ok:!1,error:"Link a repository first."};if(g.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let h=await $();if("error"in h)return{ok:!1,error:h.error};let i=aa(g.meta),j=await ah(h.token,{id:g.id,fullName:g.fullName,defaultBranch:g.defaultBranch,scannedAt:null,rootDir:i.dir,rootDirUnsupported:i.unsupported,prodBranch:i.branch,prodFallback:i.fallback??null},Date.now()+4e4,{...c,force:!0});if("failed"===j.status)return{ok:!1,error:`The scan failed: ${j.error}`};let[k]=await (0,e.f)().select({n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))),l=k?.n??0;return{ok:!0,app:g.app,repo:g.fullName,vulns:l,message:l?`${l} known vulnerabilit${1===l?"y":"ies"} in ${j.packages??0} packages.`:`No known vulnerabilities in ${j.packages??0} packages.`}}async function an(a){let c=a.filter(C.f);if(!c.length)return[];let d=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,error:f.dependencyScans.error}).from(f.appRepos).innerJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.appRepos.repoId)).where((0,b.b)((0,b.y)(f.appRepos.appId,c),(0,b.E)(f.dependencyScans.scannedAt)));if(!d.length)return[];let g=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,severity:f.dependencyVulns.severity,summary:f.dependencyVulns.summary,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(d.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(1e4);return d.map(a=>({appId:a.appId,repoId:a.repoId,error:a.error,vulns:g.filter(b=>b.repoId===a.repoId).map(a=>({package:a.package,installedVersion:a.installedVersion,fixedVersion:a.fixedVersion,severity:a.severity,summary:a.summary,dev:a.dev,direct:a.direct}))}))}async function ao(a,c=new Set){let g=a.filter(C.f),h=new Map;if(!g.length)return h;let i=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,g));if(!i.length)return h;let j=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,vulnId:f.dependencyVulns.vulnId,aliases:f.dependencyVulns.aliases,severity:f.dependencyVulns.severity,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(i.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt),(0,b.u)(f.dependencyVulns.direct,!0),(0,b.E)(f.dependencyVulns.fixedVersion))).limit(2e3),k=j.some(a=>"next"===a.package)?new Set((await (0,e.f)().selectDistinct({appId:f.dependencyPrs.appId}).from(f.dependencyPrs).where((0,b.b)((0,b.y)(f.dependencyPrs.appId,g),(0,b.$)(f.dependencyPrs.stage,["merged","closed"]),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),d.B`${f.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(g.length)).map(a=>a.appId)):new Set;for(let a of i){let b=c.has(a.appId)||k.has(a.appId);(0,O.B)(j.filter(c=>c.repoId===a.repoId&&!(b&&"next"===c.package))).length&&h.set(a.appId,a.repoId)}return h}a.s(["o",0,12e3,"d",0,4e3,"j",0,al,"O",0,ak,"C",0,ao,"a",0,an,"h",0,am],930270);var ap=a.i(242605);async function aq(){return(0,e.f)().select({appId:f.links.fromResourceId,dbId:f.links.toResourceId}).from(f.links).where((0,b.u)(f.links.kind,"uses_db")).limit(500)}async function ar(a){let g=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),[h,i,j,k,l]=await Promise.all([w(),v(),(0,e.f)().select({m:f.monitors,appName:f.resources.name,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(g,(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1))),(0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)(g,(0,b.u)(f.resources.kind,"app"))),(0,e.f)().select({id:f.accounts.id,provider:f.accounts.provider,label:f.accounts.label,expiresAt:f.accounts.expiresAt,status:f.accounts.status,lastError:f.accounts.lastError}).from(f.accounts)]),m=j.map(a=>a.m.id),n=m.length?await (0,e.f)().select({id:f.checks.monitorId,n:d.B`count(*)::int`,p95:d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})::float8`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,m),(0,b.B)(f.checks.at,new Date(a.getTime()-6e5)),(0,b.u)(f.checks.inMaintenance,!1))).groupBy(f.checks.monitorId):[],z=k.map(a=>a.id),A=z.length?await (0,e.f)().selectDistinctOn([f.deployments.resourceId],{appId:f.deployments.resourceId,state:f.deployments.state,sha:f.deployments.commitSha,createdAt:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.y)(f.deployments.resourceId,z),(0,b.u)(f.deployments.target,"production"))).orderBy(f.deployments.resourceId,(0,c.A)(f.deployments.createdAtProvider)):[],B=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,kind:f.resources.kind,state:f.snapshots.state,data:f.snapshots.data}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)(g,(0,b.y)(f.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),C=a=>B.filter(b=>b.kind===a),D=B.filter(a=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(a.kind)),E=C("zone"),F=C("domain"),G=await aq(),H=await (0,x.Y)().catch(()=>null),I=z.length?await an(z).catch(()=>null):null,J=z.length?await (0,ap.F)(z).catch(()=>null):null;return{now:a,lastMinuteRunAt:h,lastAnyRunAt:i,monitors:j.map(({m:a,appName:b,appMeta:c})=>{let d=n.find(b=>b.id===a.id),e="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,appName:b,url:e?a.name??"heartbeat":a.url,kind:e?"heartbeat":"http",state:a.state,failStreak:a.failStreak,lastStatus:a.lastStatus,lastError:a.lastError,lastCheckedAt:a.lastCheckedAt,p95Last10:d?.p95??null,checksLast10:d?.n??0,movedTo:e?null:(0,y.u)(a.url,{name:b,meta:c},k.filter(b=>b.id!==a.resourceId),{lastError:a.lastError})?.to??null}}),apps:k.map(a=>{let b=A.find(b=>b.appId===a.id);return{id:a.id,name:a.name,latestProduction:b?{state:b.state,sha:b.sha,createdAt:b.createdAt}:null}}),accounts:l,dbs:D.length?D.map(b=>(function(a,b){let c={id:a.id,name:a.name,state:a.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===a.kind){let b=(0,r.k)(r.B,a.data),d=(0,u.Z)(b.lastTrafficAt),e=(0,u.Z)(b.trafficAt),f=d??(e&&!b.trafficError?new Date(e.getTime()-6048e5):null);return{...c,provider:"supabase",sizeBytes:b.sizeBytes??null,sizeLimitBytes:s.R,lastApiAt:f}}if("neon_project"===a.kind){let b=(0,r.k)(r.s,a.data),d=(b.branches??[]).map(a=>a.logicalSize).filter(a=>"number"==typeof a);return{...c,provider:"neon",cuHours:null==b.computeSeconds?null:b.computeSeconds/3600,cuLimit:q.a.cuHours,sizeBytes:d.length?d.reduce((a,b)=>a+b,0):null,sizeLimitBytes:q.a.storageBytes}}if("firestore"===a.kind){let d=(0,r.k)(r.w,a.data),e=(0,u.Z)(d.opsAt),f=null!=d.reads&&e&&e.getTime()>=(0,p.a)(b).getTime()?d.reads:null,g=null!=d.latencyMs||null!=d.pingError;return{...c,provider:"firestore",readsToday:f,readsLimit:p.T.reads,quotaExhausted:g?"RESOURCE_EXHAUSTED"===d.pingReason:null}}if("turso_database"===a.kind){let d=(0,r.k)(r.N,a.data),e=(0,o.u)((0,o.G)(d,b));return{...c,provider:"turso",sizeBytes:d.orgStorageBytes??null,sizeLimitBytes:o.g.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("upstash_redis"===a.kind){let d=(0,r.k)(r.e,a.data),e=(0,o.u)((0,o.$)(d,b));return{...c,provider:"upstash",sizeBytes:d.storageBytes??null,sizeLimitBytes:o.W.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("d1_database"===a.kind){let d=(0,r.k)(r.x,a.data),e=(0,o.u)((0,o.I)(d,b));return{...c,provider:"d1",sizeBytes:d.sizeBytes??null,sizeLimitBytes:o.M.dbBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}return null})(b,a)).filter(a=>null!==a):null,domains:E.length||F.length?[...E.map(a=>({id:a.id,name:a.name,tlsNotAfter:null,expiresAt:(0,u.Z)((0,t.q)(a.data).rdap?.expiresAt)})),...F.map(a=>({id:a.id,name:a.name,tlsNotAfter:(0,u.Z)((0,t.q)(a.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(a,b){let c=a.filter(a=>Array.isArray(a.data.records));if(!c.length)return null;let d=a.map(a=>a.name),e=[];for(let a of c){let c=b.filter(b=>(0,u.J)(b.name,d)===a.name.toLowerCase().replace(/\.$/,"")),f=[...new Set(c.flatMap(a=>(0,t.q)(a.data).vercel?.recommendedIps??[]))];for(let b of(0,t.q)(a.data).records){if(!(0,u.l)(b,f))continue;let d=b.name.toLowerCase().replace(/\.$/,""),g=c.find(a=>a.name.toLowerCase().replace(/\.$/,"")===d);e.push({id:`${a.id}:${b.id}`,resourceId:g?.id??a.id,name:b.name,proxied:b.proxied,pointsToVercel:!0})}}return e}(E,F),links:G,compute:H,deps:I&&I.length?I:null,frameworks:J&&J.length?J:null}}var as=a.i(714530),at=a.i(396667);let au={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function av(){return(await (0,e.f)().select().from(f.alertRules)).filter(a=>(0,g.h)(a.key)).map(a=>({key:a.key,severity:a.severity,threshold:a.threshold,enabled:a.enabled,channels:a.channels}))}async function aw(a,c={}){let[d,j,m,n,o,p]=await Promise.all([ar(a),av(),(0,e.f)().select().from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)),(0,e.f)().select({provider:f.providerStatus.provider,state:f.providerStatus.state}).from(f.providerStatus),(0,as.w)(),(0,at.I)()]),q=new Map(d.accounts.map(a=>[a.id,a.provider])),r=m.filter(a=>!(0,l.O)(p,a.ruleKey,a.accountId?q.get(a.accountId):null)),s=(0,h.f)(d,j,c.only),t=s.evaluated,u=s.observations.filter(a=>!(0,l.O)(p,a.rule,a.provider)),v=j.find(a=>"CollectorStale"===a.key),w=void 0===d.lastAnyRunAt?d.lastMinuteRunAt:d.lastAnyRunAt,x=!!v?.enabled&&(!w||a.getTime()-w.getTime()>(v.threshold??5)*6e4),y=new Map((d.dbs??[]).filter(a=>"paused"===a.state).map(a=>[a.id,a.name])),z=new Map(d.links.filter(a=>y.has(a.dbId)).map(a=>[a.appId,`DatabasePaused \xb7 ${y.get(a.dbId)}`])),A=new Map(n.filter(a=>"warn"===a.state||"err"===a.state).map(a=>["gcp"===a.provider?"firebase":a.provider,au[a.provider]??a.provider])),B=(0,k.u)(o,d.monitors.map(a=>({id:a.id,appId:a.appId})),a,d.apps.map(a=>a.id)),C=r.filter(a=>(0,g.h)(a.ruleKey)).map(a=>({id:a.id,ruleKey:a.ruleKey,subject:a.subject,okStreak:a.okStreak,lastSampleAt:a.lastSampleAt,silencedUntil:a.silencedUntil,silencedUntilResolved:a.silencedUntilResolved,notifiedOpen:a.notifiedOpen,lastNotifiedAt:a.lastNotifiedAt,pending:a.pending,pendingSince:a.pendingSince})),D=(0,i.f)(C,u,t,j,{now:a,collectorStale:x,mutedApps:z,incidents:A,maintenance:B});return D.open.length||D.touch.length||D.resolve.length?(await (0,e.f)().transaction(async c=>{for(let b of D.open)await c.insert(f.alerts).values({...b,pendingSince:b.pending?a:null}).onConflictDoNothing();for(let d of D.touch){let{id:e,pending:g,...h}=d;await c.update(f.alerts).set({...h,...g?{pending:g,pendingSince:a}:{}}).where((0,b.b)((0,b.u)(f.alerts.id,e),(0,b.M)(f.alerts.resolvedAt)))}for(let d of D.resolve)await c.update(f.alerts).set({resolvedAt:a,pending:d.pending,pendingSince:d.pending?a:null}).where((0,b.b)((0,b.u)(f.alerts.id,d.id),(0,b.M)(f.alerts.resolvedAt)))}),{opened:D.open.length,resolved:D.resolve.length}):{opened:0,resolved:0}}async function ax(){let[a,c]=await Promise.all([(0,at.I)(),(0,e.f)().select({ruleKey:f.alerts.ruleKey,provider:f.accounts.provider,n:d.B`count(*)::int`}).from(f.alerts).leftJoin(f.accounts,(0,b.u)(f.accounts.id,f.alerts.accountId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,b.y)(f.alerts.severity,["critical","warning"]))).groupBy(f.alerts.ruleKey,f.accounts.provider)]);return c.reduce((b,c)=>b+((0,l.O)(a,c.ruleKey,c.provider)?0:Number(c.n)),0)}let ay=d.B`case ${f.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function az(a=new Set){return(await (0,e.f)().select({a:f.alerts,name:f.resources.name,kind:f.resources.kind}).from(f.alerts).leftJoin(f.resources,(0,b.u)(f.resources.id,f.alerts.resourceId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,at.s)(a))).orderBy(ay,(0,c.A)(f.alerts.startedAt)).limit(200)).map(({a,name:b,kind:c})=>({...a,resourceName:b??null,resourceKind:c??null}))}async function aA(){return az(await (0,at.I)())}async function aB(a){return(await (0,e.f)().select({id:f.alerts.id,ruleKey:f.alerts.ruleKey,severity:f.alerts.severity,title:f.alerts.title,resourceId:f.alerts.resourceId,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.E)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,new Date(a.getTime()-6048e5)))).orderBy((0,c.A)(f.alerts.resolvedAt)).limit(50)).flatMap(a=>a.resolvedAt?[{...a,resolvedAt:a.resolvedAt}]:[])}async function aC(){let[a,c,h]=await Promise.all([av(),(0,e.f)().select({key:f.alerts.ruleKey,n:d.B`count(*)::int`}).from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)).groupBy(f.alerts.ruleKey),(0,e.f)().select({kind:f.resources.kind}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).groupBy(f.resources.kind)]),i=new Set(h.map(a=>a.kind)),j={databases:["supabase_project","neon_project","firestore"].some(a=>i.has(a)),domains:i.has("domain")||i.has("zone"),dns:i.has("zone")};return g.u.flatMap(b=>{let d=a.find(a=>a.key===b);if(!d)return[];let e=g._[b].needs;return[{rule:d,firing:c.find(a=>a.key===b)?.n??0,hasData:null===e||j[e]}]})}async function aD(a,c,d,g){let h="off"===c?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...n(c,g),silencedBy:d},[i]=await (0,e.f)().update(f.alerts).set(h).where((0,b.b)((0,b.u)(f.alerts.id,a),(0,b.M)(f.alerts.resolvedAt))).returning({ruleKey:f.alerts.ruleKey,title:f.alerts.title,resourceId:f.alerts.resourceId});return i??null}async function aE(a,c){return(await (0,e.f)().update(f.alertRules).set({...c,updatedAt:new Date}).where((0,b.u)(f.alertRules.key,a)).returning({key:f.alertRules.key})).length>0}async function aF(){try{let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,j.z)).limit(1);return(0,j._)(a?.value)}catch{return{}}}async function aG(a,b){let c=await aF();Object.keys(b).length?c[a]=b:delete c[a],await (0,e.f)().insert(f.settings).values({key:j.z,value:c}).onConflictDoUpdate({target:f.settings.key,set:{value:c,updatedAt:new Date}})}a.s(["$",0,aw,"q",0,az,"I",0,aB,"i",0,aA,"X",0,ax,"w",0,aF,"y",0,aC,"z",0,aE,"_",0,aG,"N",0,aD],455317)}]})();
2
+
3
+ //# sourceMappingURL=src_lib_0eqv8l-v8d5ze._.js.map
@@ -0,0 +1,23 @@
1
+ (()=>{"use strict";module.exports=[192738,67890,a=>{var b=a.i(245710),c=a.i(708621);let d=a=>`${a} hari`,e=(a,b)=>0>Number(a)?`${b} udah habis.`:`${b} habis dalam ${d(a)}.`,f={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},g={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},h={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(a,b,c)=>`${b}: nggak ada ping selama ${c.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(a,b,c)=>`${b}: ${f[c]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(a,b,c,d)=>`${b}: ${d} cek gagal berturut-turut (${c}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(a,b,c)=>`${b}: ${c} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(a,b,c,d)=>`${b}: ${d} cek gagal berturut-turut (${c}).`],[/^(.+) answers again\.$/,(a,b)=>`${b} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(a,b,c)=>`${b} pindah ke ${c}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(a,b,c,d)=>`${b} udah bukan domain ${c}; production sekarang di ${d}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(a,b,c)=>`Monitor ngecek ${b}, domain ${c}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(a,b)=>`Collector terakhir selesai jalan ${b} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(a,b,c)=>`p95 ${b} ms selama 10 menit terakhir (batas ${c} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(a,b)=>`Deploy production ${b} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(a,b)=>`Project Supabase ${b} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(a,b,c)=>e(c,`Sertifikat TLS ${b}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(a,b,c)=>e(c,b)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(a,b,c,d,e)=>`${b} pakai ${c} MB dari ${d} MB (${e}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(a,b,c,d)=>`${b} udah pakai ${c} dari ${d} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(a,b)=>`${b} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(a,b,c,d,e)=>`${b} udah baca ${c} dari ${d} dokumen hari ini (${e}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(a,b)=>`Nggak ada traffic API selama ${d(b)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(a,b)=>`${b} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(a,b,c,d)=>`${b}: ${c.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${d}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(a,b)=>`Compute ${b} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(a,b,c)=>`${b}: ${c.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(a,b,c)=>`Credential ${b} ${c} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(a,b,c,d)=>e(d,`Credential ${b} ${c}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(a,b)=>`${b} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(a,b)=>`${b} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(a,b,c,d)=>`${b} paket rentan (${c.replace(/\b(critical|high|moderate|low|unknown)\b/g,a=>g[a])}): ${d.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(a,b,c)=>`${b} pakai Next.js ${c} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(a,b,c,d,e,f,h)=>`Next.js ${b} punya ${c} kerentanan yang diketahui (${g[d]}), ${e?`udah di-fix di ${e}${f?` (${"one fix needs"===f?"satu fix":"sebagian fix"} butuh Next.js ${h})`:""}`:"belum ada fix"}.`]]};function i(a,b){for(let[c,d]of Object.hasOwn(h,a)?h[a]:[]){let a=c.exec(b);if(a)return d(...a)}return b}a.s(["f",0,i],67890);let j={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},k={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},l={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step",test:"test"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"karena",incident:"lagi ada insiden",step:"Yang perlu kamu lakukan",test:"tes"}},m=a=>a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),n={critical:0,warning:1,info:2};function o(a,b){let c=a.filter(a=>"resolve"!==a.kind).length,d=a.length-c;return[c?`${c} ${l[b].firing}`:"",d?`${d} ${l[b].resolved}`:""].filter(Boolean).join(", ")}function p(a,b,c,d,e,f){let g=[...a].sort((a,b)=>("resolve"===a.kind)-("resolve"===b.kind)||n[a.severity]-n[b.severity]),h=[d],i=d.length+e.length+40;for(let a=0;a<g.length;a++){let d=c(g[a]);if(i+d.length+1>b){h.push(f(g.length-a));break}h.push(d),i+=d.length+1}return h.push(e),h.join("\n").slice(0,b)}let q={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}},r=(a,b="en")=>Object.hasOwn(q[b],a)?q[b][a]??null:null;a.s(["Z",0,k,"l",0,function(a,d,e,f="en",g={},h={}){let n=`${e.replace(/\/+$/,"")}/alerts`,q=l[f],s=a=>`${j[f][a.kind]} \xb7 ${k[f][a.severity]} \xb7 `,t=a=>h.test?c.I[f]:"id"===f?i(a.ruleKey,a.message):a.message,u=h.test?`Watchbell (${q.test})`:"Watchbell",v=a=>"resolve"===a.kind?null:((a,b="en")=>{let c=r(a,b);return c?`${l[b].step}: ${c}`:null})(a.ruleKey,f),w=a=>[a.causedBy?`${q.causedBy} ${a.causedBy}`:"",a.provider?`${a.provider} ${q.incident}`:""].filter(Boolean).join(" · "),x=a=>`
2
+ +${a} ${q.more}`,y=(a,d)=>{let e=Object.hasOwn(g,a.ruleKey)?g[a.ruleKey]?.[f]:void 0;if(!e)return null;let[h="",...i]=(0,c.l)(e,{status:j[f][a.kind],severity:k[f][a.severity],rule:a.ruleKey,target:d(a.title),detail:d(t(a)),cause:d(w(a)),step:"resolve"===a.kind?"":r(a.ruleKey,f)??"",since:`${(0,b.U)(a.startedAt)} ${(0,b.J)(a.startedAt)}`,threshold:null==a.threshold?"":a.threshold.toLocaleString("en-US")}).split("\n");return[h,i.join("\n")]},z=a=>a.replace(/[*_`~|\[\]<>]/g,"");return{telegram:p(a,4096,a=>{let c=y(a,a=>a);return c?`
3
+ <b>${m(c[0])}</b>${c[1]?`
4
+ ${m(c[1])}`:""}`:`
5
+ <b>${s(a)}${m(a.ruleKey)} \xb7 ${m(a.title)}</b>
6
+ ${m(t(a))}${w(a)?`
7
+ <i>${m(w(a))}</i>`:""}${v(a)?`
8
+ 👉 ${m(v(a))}`:""}
9
+ ${q.since} ${(0,b.U)(a.startedAt)} ${(0,b.J)(a.startedAt)}`},`<b>${u}</b>: ${o(a,f)} \xb7 ${(0,b.U)(d)} ${(0,b.J)(d)}`,`
10
+ <a href="${m(n)}">${q.open}</a>`,x),discord:p(a,2e3,a=>{let b=y(a,z);return b?`
11
+ **${b[0]}**${b[1]?`
12
+ ${b[1]}`:""}`:`
13
+ **${s(a)}${a.ruleKey} \xb7 ${z(a.title)}**
14
+ ${z(t(a))}${w(a)?`
15
+ _${w(a)}_`:""}${v(a)?`
16
+ 👉 ${v(a)}`:""}`},`**${u}**: ${o(a,f)} \xb7 ${(0,b.U)(d)} ${(0,b.J)(d)}`,`
17
+ ${n}`,x)}},"H",0,m,"a",0,r],192738)},49146,a=>{var b=a.i(462820),c=a.i(93321),d=a.i(530385),e=a.i(351674),f=a.i(548734),g=a.i(837137),h=a.i(192738),i=a.i(358179),j=a.i(601219),k=a.i(455317),l=a.i(247730),m=a.i(396667),n=a.i(46396),o=a.i(492665),p=a.i(390626),q=a.i(755453),r=a.i(352595),s=a.i(80997),t=a.i(718025),u=a.i(552543),v=a.i(288879),w=a.i(204784),x=a.i(446914),y=a.i(71575),z=a.i(556987),A=a.i(245710),B=a.i(910697);let C="digest.lastSentDay",D="digest.state";async function E(a){let[b]=await (0,f.f)().select().from(g.channels).where((0,c.u)(g.channels.kind,a)).limit(1);if(!b)return null;try{return{row:b,config:JSON.parse((0,i.K)({ciphertext:b.configCiphertext,iv:b.configIv},(0,o.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function F(a,b){let c=(0,i.l)(JSON.stringify(b),(0,o.f)().OPS_ENCRYPTION_KEY),d={configCiphertext:c.ciphertext,configIv:c.iv,keyVersion:c.keyVersion,enabled:!0,lastError:null,updatedAt:new Date};await (0,f.f)().insert(g.channels).values({kind:a,...d}).onConflictDoUpdate({target:g.channels.kind,set:d})}async function G(a,b){return(await (0,f.f)().update(g.channels).set({enabled:b,updatedAt:new Date}).where((0,c.u)(g.channels.kind,a)).returning({kind:g.channels.kind})).length>0}async function H(){let a=(0,t.f)(),[b,c,d,e]=await Promise.all([E("telegram"),E("discord"),E("webhook"),E("smtp")]),f=new Set;a.telegramToken&&b?.row.enabled&&b.config?.chatId&&f.add("telegram"),c?.row.enabled&&c.config?.url&&f.add("discord"),d?.row.enabled&&d.config?.url&&f.add("webhook"),e?.row.enabled&&e.config?.host&&f.add("smtp");let g=`${(0,o.f)().SITE_URL.replace(/\/+$/,"")}/alerts`;return{send:(f,h,i)=>"telegram"===f?(0,x.I)(a.telegramToken,b.config.chatId,h):"webhook"===f?(0,q.E)(d.config,(0,q.J)(h,i??[],new Date,g)):"smtp"===f?(0,r.r)(e.config,(h.split("\n")[0]??"").replace(/[*_`~]/g,"").slice(0,150)||"Watchbell alert",h.replace(/\*\*(.+?)\*\*/g,"$1").replace(/(^|[\s(])_(\S(?:.*?\S)?)_(?=[\s).,!?:;]|$)/gm,"$1$2").replace(/`([^`\n]+)`/g,"$1")):(0,p.$)(c.config.url,h),configured:f}}async function I(){let a=(0,t.f)().telegramToken;if(!a)return null;let b=await E("telegram");return b?.row.enabled&&b.config?.chatId?{token:a,chatId:b.config.chatId}:null}async function J(){let a=await E("discord");return a?.row.enabled&&a.config?.url?{url:a.config.url}:null}let K="notify.telegramThreads",L=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function M(a,b,c){let d=a.filter(a=>L.test(a));if(!d.length||!Number.isSafeInteger(b)||b<=0)return;let h=Object.fromEntries(d.map(a=>[a,{m:b,at:c.getTime()}])),i=c.getTime()-6048e5,j=e.B`case when jsonb_typeof(${g.settings.value}) = 'object' then ${g.settings.value} else '{}'::jsonb end`;await (0,f.f)().insert(g.settings).values({key:K,value:h}).onConflictDoUpdate({target:g.settings.key,set:{value:e.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(h)}::jsonb || ${j}) as e
18
+ where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${i})`,updatedAt:c}})}async function N(a){if(!a||!L.test(a))return null;try{let[b]=await (0,f.f)().select({value:g.settings.value}).from(g.settings).where((0,c.u)(g.settings.key,K)).limit(1),d=b?.value&&"object"==typeof b.value?b.value[a]:null;return"number"==typeof d?.m&&Number.isSafeInteger(d.m)&&d.m>0?d.m:null}catch{return null}}let O=()=>(0,l.f)().catch(()=>z.a);async function P(a,b,i={}){var j;if(b-Date.now()<6e3)return{sent:0,dropped:0};let l=await (0,m.I)(),n=await (0,f.f)().select({a:g.alerts,channels:g.alertRules.channels,threshold:g.alertRules.threshold}).from(g.alerts).innerJoin(g.alertRules,(0,c.u)(g.alertRules.key,g.alerts.ruleKey)).where((0,c.b)((0,c.E)(g.alerts.pending),e.B`(${g.alerts.pending} = 'resolve') = (${g.alerts.resolvedAt} is not null)`,(0,m.s)(l))).orderBy((0,d.M)(g.alerts.pendingSince)).limit(50);if(!n.length)return{sent:0,dropped:0};let p=new Set((await (0,f.f)().update(g.alerts).set({claimedAt:a}).where((j=n.map(a=>a.a.id),(0,c.b)((0,c.y)(g.alerts.id,j),(0,c.E)(g.alerts.pending),(0,c.F)((0,c.M)(g.alerts.claimedAt),(0,c.S)(g.alerts.claimedAt,new Date(a.getTime()-12e4)))))).returning({id:g.alerts.id})).map(a=>a.id)),q=n.filter(a=>p.has(a.a.id));if(!q.length)return{sent:0,dropped:0};let{send:r,configured:s}=i.sender??await H(),t=new Set(q.filter(({a:b})=>"resolve"!==b.pending&&(b.silencedUntilResolved||null!==b.silencedUntil&&b.silencedUntil.getTime()>a.getTime())).map(({a})=>a.id)),[v,w,x]=await Promise.all([O(),(0,u.B)(),(0,k.w)()]),y=new Set;for(let b of["telegram","discord","webhook","smtp"]){if(!s.has(b))continue;let d=q.filter(a=>a.channels.includes(b)&&!t.has(a.a.id));if(!d.length)continue;let e=d.map(({a,threshold:c})=>{let d="telegram"===b?a:(0,z.o)(a,v);return{kind:a.pending,ruleKey:a.ruleKey,severity:a.severity,title:d.title,message:d.message,startedAt:a.startedAt,causedBy:d.causedBy,provider:a.providerIncident,threshold:c}}),i=(0,h.l)(e,a,(0,o.f)().SITE_URL,"webhook"===b?"en":"smtp"===b?w.email:w[b],x),j=await r(b,(0,z.G)("telegram"===b?i.telegram:i.discord),"webhook"===b?e.map(a=>({...a,title:(0,z.G)(a.title),message:(0,z.G)(a.message)})):void 0);await (0,f.f)().update(g.channels).set(j.ok?{lastSentAt:a,lastError:null}:{lastError:j.error}).where((0,c.u)(g.channels.kind,b)),j.ok&&d.forEach(({a})=>y.add(a.id)),j.ok&&"telegram"===b&&j.messageId&&await M(d.filter(({a})=>"open"===a.pending).map(({a})=>a.id),j.messageId,a).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let A=0,B=0,C=[];for(let{a:b,channels:d}of q){let e=d.some(a=>s.has(a)),h=null!==b.pendingSince&&a.getTime()-b.pendingSince.getTime()>18e5;y.has(b.id)?(A++,await (0,f.f)().update(g.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:a,claimedAt:null,..."open"===b.pending?{notifiedOpen:!0}:{}}).where((0,c.u)(g.alerts.id,b.id))):t.has(b.id)||!e||h?(B++,await (0,f.f)().update(g.alerts).set({pending:null,claimedAt:null}).where((0,c.u)(g.alerts.id,b.id))):C.push(b.id)}return C.length&&await (0,f.f)().update(g.alerts).set({claimedAt:null}).where((0,c.y)(g.alerts.id,C)),{sent:A,dropped:B}}async function Q(a){let b=new Date(a.getTime()-864e5),h=await (0,m.I)(),i=e.B`case ${g.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[j,k,l,o,p]=await Promise.all([(0,f.f)().select({ruleKey:g.alerts.ruleKey,severity:g.alerts.severity,title:g.alerts.title,message:g.alerts.message,resourceId:g.alerts.resourceId,startedAt:g.alerts.startedAt}).from(g.alerts).where((0,c.b)((0,c.M)(g.alerts.resolvedAt),(0,m.s)(h))).orderBy(i,(0,d.A)(g.alerts.startedAt)).limit(50),(0,f.f)().select({n:e.B`count(*)::int`}).from(g.alerts).where((0,c.B)(g.alerts.startedAt,b)),(0,f.f)().select({ruleKey:g.alerts.ruleKey,title:g.alerts.title,resourceId:g.alerts.resourceId,startedAt:g.alerts.startedAt,resolvedAt:g.alerts.resolvedAt}).from(g.alerts).where((0,c.b)((0,c.E)(g.alerts.resolvedAt),(0,c.B)(g.alerts.resolvedAt,b))).orderBy((0,d.A)(g.alerts.resolvedAt)).limit(20),(0,f.f)().select({id:g.resources.id,name:g.resources.name}).from(g.resources).where((0,c.b)((0,c.u)(g.resources.kind,"app"),(0,c.u)(g.resources.monitored,!0),(0,c.M)(g.resources.goneAt))).orderBy(g.resources.name).limit(B.O.apps),(0,n.h)(a)]),q=o.map(a=>a.id),[r,s]=q.length?await Promise.all([(0,f.f)().select({id:g.monitors.resourceId,total:e.B`count(*)::int`,bad:e.B`(count(*) filter (where not ${g.checks.ok}))::int`}).from(g.checks).innerJoin(g.monitors,(0,c.u)(g.monitors.id,g.checks.monitorId)).where((0,c.b)((0,c.y)(g.monitors.resourceId,q),(0,c.B)(g.checks.at,b),(0,c.u)(g.checks.inMaintenance,!1))).groupBy(g.monitors.resourceId),(0,f.f)().select({id:g.storedLogs.resourceId,n:e.B`count(*)::int`}).from(g.storedLogs).where((0,c.b)((0,c.y)(g.storedLogs.resourceId,q),(0,c.B)(g.storedLogs.at,b))).groupBy(g.storedLogs.resourceId)]):[[],[]],t=new Map(r.map(a=>[a.id,a])),u=new Map(s.map(a=>[a.id,a.n])),v=await O();return{now:a,opened:k[0]?.n??0,firing:j.map(({resourceId:a,...b})=>{let c=(0,z.o)({...b,resourceId:a,causedBy:null},v);return{...b,title:c.title,message:c.message}}),resolved:l.flatMap(a=>a.resolvedAt?[{ruleKey:a.ruleKey,title:(0,z.o)({title:a.title,message:"",causedBy:null,resourceId:a.resourceId},v).title,took:(0,y.M)(a.startedAt,a.resolvedAt)}]:[]),apps:o.map(a=>{let b=t.get(a.id);return{name:a.name,uptime:b&&b.total>0?(b.total-b.bad)/b.total*100:null,errors:u.get(a.id)??0}}),providers:p.filter(a=>"ok"!==a.state).map(a=>({label:a.label,text:a.text}))}}async function R(a,b,d){await (0,f.f)().update(g.channels).set(b.ok?{lastSentAt:d,lastError:null}:{lastError:b.error}).where((0,c.u)(g.channels.kind,a))}async function S(a){let[b,c]=await Promise.all([Q(a),(0,u.I)("email")]);return(0,s.J)({...b,siteUrl:(0,o.f)().SITE_URL},c)}async function T(a,c){let d=(0,t.f)();if(!d.resendKey||!d.digestFrom)return{ok:!1,kind:"config",error:b.n.notSet("RESEND_API_KEY or DIGEST_FROM")};let e=await E("email_digest");if(!e?.config?.to)return{ok:!1,kind:"config",error:"The daily email digest isn't connected."};let f=await S(a),g=await (0,w.f)(d.resendKey,{from:d.digestFrom,to:e.config.to,subject:f.subject,html:f.html,text:f.text,idempotencyKey:c});return await R("email_digest",g,a),g}async function U(a,b={}){let d=await (0,f.f)().select().from(g.settings).where((0,c.y)(g.settings.key,[C,D])),e=d.find(a=>a.key===C)?.value,h="string"==typeof e?e:null;if(!(0,s.A)(a,h))return;let i=(0,t.f)(),k=await E("email_digest");if(!i.resendKey||!i.digestFrom||!k?.row.enabled||!k.config?.to)return;let{resendKey:l,digestFrom:m}=i,n=k.config.to,o=(0,A.x)(a),p=await (0,s.K)(a,{lastSentDay:h,state:d.find(a=>a.key===D)?.value??null,build:b.build??(()=>S(a)),send:b.send??(a=>(0,w.f)(l,{from:m,to:n,...a,idempotencyKey:`digest-${o}`}))});p.acted&&(p.result&&await R("email_digest",p.result,a),p.state?await (0,f.f)().insert(g.settings).values({key:D,value:p.state}).onConflictDoUpdate({target:g.settings.key,set:{value:p.state,updatedAt:a}}):await (0,f.f)().delete(g.settings).where((0,c.u)(g.settings.key,D)),p.sentDay&&await (0,f.f)().insert(g.settings).values({key:C,value:p.sentDay}).onConflictDoUpdate({target:g.settings.key,set:{value:p.sentDay,updatedAt:a}}),p.event&&await (0,j.f)([{type:"system",kind:"warn",message:p.event.message,detail:p.event.detail,resourceId:null,reason:"DigestFailed",at:a}]))}let V={en:{title:"Test message",message:"If you can read this, alerts reach you here."},id:{title:"Pesan tes",message:"Kalau pesan ini kebaca, alert udah nyampe ke sini."}};async function W(a,b,c={}){if("email_digest"===a)return T(b,`test-${b.getTime()}`);let{send:d,configured:e}=c.sender??await H();if(!e.has(a))return X(a);let f="webhook"===a?"en":await (0,u.I)("smtp"===a?"email":a),g=(0,h.l)([{kind:"open",ruleKey:"Test",severity:"info",...V[f],startedAt:b,causedBy:null,provider:null}],b,(0,o.f)().SITE_URL,f),i=await d(a,"telegram"===a?g.telegram:g.discord);return await R(a,i,b),i}let X=a=>({ok:!1,kind:"config",error:"telegram"===a?`Telegram isn't connected, or ${b.n.notSet("TELEGRAM_BOT_TOKEN")}`:"webhook"===a?"The webhook isn't connected.":"smtp"===a?"Email (SMTP) isn't connected.":"Discord isn't connected."});async function Y(a,b,c,d,e={}){let{send:f,configured:g}=e.sender??await H(),i=await (0,u.B)(),j=[];for(let e of a){if(!g.has(e)){j.push({kind:e,result:X(e)});continue}let a=(0,h.l)([b],d,(0,o.f)().SITE_URL,"webhook"===e?"en":"smtp"===e?i.email:i[e],c,{test:!0}),k=await f(e,(0,z.G)("telegram"===e?a.telegram:a.discord),"webhook"===e?[b]:void 0);await R(e,k,d),j.push({kind:e,result:k})}return j}async function Z(){let a=(0,t.f)(),c={telegram:a.telegramToken?null:b.n.notSet("TELEGRAM_BOT_TOKEN"),discord:null,webhook:null,smtp:null,email_digest:a.resendKey&&a.digestFrom?null:b.n.notSet("RESEND_API_KEY or DIGEST_FROM")},[d,e,f,g,h]=await Promise.all([E("telegram"),E("discord"),E("webhook"),E("smtp"),E("email_digest")]),i=(a,b)=>({kind:a,connected:null!==b,enabled:b?.row.enabled??!1,hint:b?(0,v.t)(a,b.config):null,lastSentAt:b?.row.lastSentAt??null,lastError:b?.row.lastError??null,envMissing:c[a]});return[i("telegram",d),i("discord",e),i("webhook",f),i("smtp",g),i("email_digest",h)]}a.s(["k",0,Z,"q",0,P,"G",0,J,"u",0,E,"P",0,R,"_",0,Y,"L",0,W,"y",0,G,"J",0,U,"Q",0,I,"M",0,N,"Y",0,F])},390626,755453,288879,352595,80997,718025,a=>{var b=a.i(19809),c=a.i(371289);let d=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;function e(a){return d.test(a.trim())?null:"Paste the whole webhook URL from Discord."}async function f(a,d,g={}){let h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(e(a))return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{h=await (g.fetch??fetch)(a,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(g.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:d.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===h.status||h.ok)return{ok:!0};if(429===h.status){let a=await h.json().catch(()=>null),b=Math.ceil(a?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:b,error:`Discord asked us to wait ${b} s.`}}return 404===h.status||401===h.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:h.status>=500?"transient":"config",error:`Discord returned an error (${h.status}).`}}a.s(["$",0,f,"e",0,e],390626);var g=a.i(666680),h=a.i(300794),i=a.i(261283);function j(a){let b;try{b=new URL(a.trim())}catch{return"Paste the whole address, starting with https://."}let c=(0,i._)(b);return"scheme"===c?"Use an https:// address without a user name or password in it.":"blocked"===c?"Use an address on the public internet, on port 443. Watchbell doesn't post into private networks.":null}let k={open:"firing",repeat:"repeat",resolve:"resolved"};async function l(a){return(await (0,h.lookup)(a,{all:!0})).map(a=>a.address)}async function m(a,d,e={}){let f,h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(j(a.url))return{ok:!1,kind:"config",error:"The saved webhook address isn't allowed any more."};let k=new URL(a.url.trim());try{let a=await (e.lookup??l)(k.hostname);if(!a.length||a.some(i.W))return{ok:!1,kind:"config",error:"The webhook host resolves to a private address; Watchbell won't post there."}}catch{return{ok:!1,kind:"transient",error:"The webhook host didn't resolve."}}let n=JSON.stringify(d),o=String(Math.floor(Date.parse(d.sentAt)/1e3)),p={"Content-Type":"application/json","User-Agent":"Watchbell-Webhook/1.0","X-Watchbell-Timestamp":o};a.secret&&(p["X-Watchbell-Signature"]=(h=a.secret,`sha256=${(0,g.createHmac)("sha256",h).update(`${o}.${n}`).digest("hex")}`));try{f=await (e.fetch??fetch)(k.toString(),{method:"POST",headers:p,body:n,redirect:"manual",cache:"no-store",signal:AbortSignal.timeout(e.timeoutMs??5e3)})}catch{return{ok:!1,kind:"transient",error:"The webhook didn't answer."}}if(await f.body?.cancel().catch(()=>void 0),f.ok)return{ok:!0};if(f.status>=300&&f.status<400)return{ok:!1,kind:"config",error:"The webhook answered with a redirect; Watchbell doesn't follow them. Use the final address."};if(429===f.status){let a=Math.min(600,Math.max(1,Number(f.headers.get("retry-after"))||30));return{ok:!1,kind:"transient",retryAfterS:a,error:`The webhook asked to wait ${a} s.`}}return{ok:!1,kind:f.status>=500?"transient":"config",error:`The webhook returned an error (${f.status}).`}}a.s(["k",0,function(a){return""===a||a.length>=16&&a.length<=200?null:"Use a secret of 16 to 200 characters, or leave it empty."},"E",0,m,"J",0,function(a,b,c,d){return{source:"watchbell",event:b.length?"alerts":"test",sentAt:c.toISOString(),text:a.slice(0,4e3),link:d,alerts:b.slice(0,20).map(a=>({status:k[a.kind],rule:a.ruleKey,severity:a.severity,title:a.title,message:a.message,startedAt:a.startedAt.toISOString(),causedBy:a.causedBy,provider:a.provider}))}},"I",0,j],755453);var n=a.i(761095),o=a.i(685560),p=a.i(61675);function q(a){let b=new Set;return a.split(/[\s,;]+/).filter(a=>a&&!b.has(a.toLowerCase())&&b.add(a.toLowerCase()))}a.s(["a",0,10,"t",0,function(a,b){if("telegram"===a)return`${b.chatLabel||"Chat"} \xb7 …${b.chatId.slice(-4)}`;if("discord"===a){let a=/\/webhooks\/(\d+)\//.exec(b.url)?.[1]??"";return`webhook …${a.slice(-4)}`}if("webhook"===a){let a="";try{a=new URL(b.url).hostname}catch{a="?"}return`${a}/…${b.secret?" · signed":""}`}if("smtp"===a){let a=q(b.to);return`${b.host}:${b.port} \xb7 to ${(a[0]??"").slice(0,2)}…@…${a.length>1?` +${a.length-1}`:""}`}return`${b.to.slice(0,2)}…@…`},"E",0,q],288879);let r=[465,587,2525],s=p.z.email();function t(a){let b={},c=a.host.trim().toLowerCase();/^[a-z0-9.-]{3,253}$/.test(c)&&c.includes(".")?(0,i.N)(c)&&(b.host="Use a mail server on the public internet. Watchbell doesn't connect into private networks."):b.host="Enter the server name, for example smtp.office365.com.",r.includes(a.port)||(b.port="Use port 587 (STARTTLS), 465 (TLS) or 2525."),(!a.user.trim()||a.user.length>200)&&(b.user="Enter the user name the server expects (often the whole address)."),(!a.pass||a.pass.length>500)&&(b.pass="Enter the password or app password."),s.safeParse(a.from.trim()).success||(b.from="Enter the address the mail comes from.");let d=q(a.to);if(d.length)if(d.length>10)b.to="Up to 10 addresses.";else{let a=d.find(a=>!s.safeParse(a).success);a&&(b.to=`${a} isn't a valid address.`)}else b.to="Enter the address that gets the alerts.";return b}class u{socket;buf;lines;ready;waiters;onData;constructor(a){this.socket=a,this.buf="",this.lines=[],this.ready=[],this.waiters=[],this.onData=a=>this.read(a),a.on("data",this.onData)}attach(a){this.socket.off("data",this.onData),this.socket=a,a.on("data",this.onData)}read(a){let b;for(this.buf+=a.toString("utf8");(b=this.buf.indexOf("\n"))>=0;){let a=this.buf.slice(0,b).replace(/\r$/,"");if(this.buf=this.buf.slice(b+1),this.lines.push(a),/^\d{3}( |$)/.test(a)){let b={code:Number(a.slice(0,3)),text:this.lines.join("\n")};this.lines=[];let c=this.waiters.shift();c?c(b):this.ready.push(b)}}}next(){let a=this.ready.shift();return a?Promise.resolve(a):new Promise(a=>this.waiters.push(a))}send(a){this.socket.write(`${a}\r
19
+ `)}}class v extends Error{kind;constructor(a,b){super(a),this.kind=b}}async function w(a,d,e,f={}){let j;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(Object.keys(t(a)).length)return{ok:!1,kind:"config",error:"The saved mail server settings aren't valid any more."};let k=a.host.trim().toLowerCase();try{let a=await (f.lookup??(async a=>(await (0,h.lookup)(a,{all:!0})).map(a=>a.address)))(k);if(!a.length||a.some(i.W))return{ok:!1,kind:"config",error:"The mail server resolves to a private address; Watchbell won't connect there."};j=a[0]}catch{return{ok:!1,kind:"transient",error:"The mail server's name didn't resolve."}}let l=465===a.port,m=null,p=new Promise((a,b)=>setTimeout(()=>b(new v("The mail server took too long to answer.","transient")),f.timeoutMs??15e3).unref?.()),r=async()=>{var b,c,h,i;let p,r;try{m=await (f.connect??((a,b,c,d)=>new Promise((e,f)=>{let g=d?o.default.connect({host:a,port:b,servername:c}):n.default.connect({host:a,port:b});g.once(d?"secureConnect":"connect",()=>e(g)),g.once("error",f)})))(j,a.port,k,l)}catch{throw new v(`Couldn't connect to ${k}:${a.port}.`,"transient")}let s=new u(m),t=async(a,b,c="config")=>{let d=await s.next();if(!a.includes(d.code))throw new v(`The mail server refused ${b} (${d.code}).`,d.code>=400&&d.code<500?"transient":c);return d};await t([220],"the connection","transient"),s.send("EHLO watchbell");let w=await t([250],"EHLO");if(!l){if(!/^250[- ]STARTTLS\b/im.test(w.text))throw new v("The mail server doesn't offer STARTTLS on this port, so the password would go in clear. Use port 465 or a server with STARTTLS.","config");s.send("STARTTLS"),await t([220],"STARTTLS"),m=await (f.upgrade??((a,b)=>new Promise((c,d)=>{let e=o.default.connect({socket:a,servername:b});e.once("secureConnect",()=>c(e)),e.once("error",d)})))(m,k),s.attach(m),s.send("EHLO watchbell"),w=await t([250],"EHLO after STARTTLS")}s.send(`AUTH PLAIN ${Buffer.from(`\0${a.user}\0${a.pass}`,"utf8").toString("base64")}`),await t([235],"the user name or password"),s.send(`MAIL FROM:<${a.from.trim()}>`),await t([250],"the sender address");let x=q(a.to);for(let[a,b]of x.entries())s.send(`RCPT TO:<${b}>`),await t([250,251],x.length>1?`recipient ${a+1} of ${x.length}`:"the recipient address");s.send("DATA"),await t([354],"the message"),m.write(`${(b=a,c=d,h=e,i=new Date,r=Buffer.from(h.replace(/\r?\n/g,"\r\n"),"utf8").toString("base64").replace(/.{1,76}/g,"$&\r\n"),[`From: Watchbell <${b.from.trim()}>`,`To: ${q(b.to).map(a=>`<${a}>`).join(", ")}`,`Subject: ${(p=c.replace(/[\r\n]+/g," ").slice(0,200),/^[\x20-\x7e]*$/.test(p)?p:`=?UTF-8?B?${Buffer.from(p,"utf8").toString("base64")}?=`)}`,`Date: ${i.toUTCString()}`,`Message-ID: <${(0,g.randomUUID)()}@watchbell>`,"MIME-Version: 1.0","Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",r].join("\r\n"))}\r
20
+ .\r
21
+ `),await t([250],"the message"),s.send("QUIT"),await Promise.race([s.next(),new Promise(a=>setTimeout(a,2e3))])};try{return await Promise.race([r(),p]),{ok:!0}}catch(a){return a instanceof v?{ok:!1,kind:a.kind,error:a.message}:{ok:!1,kind:"transient",error:"The mail server closed the connection."}}finally{m?.destroy()}}a.s(["r",0,w,"t",0,t],352595);var x=a.i(192738),y=a.i(67890),z=a.i(245710),A=a.i(469762),B=a.i(556987);function C(a,b){return(0,z.M)(a,b)&&(0,z.z)(a).hour>=7}let D={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:a=>a,noChecks:"no checks",errors:a=>`${a} stored error${1===a?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:a=>a.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:a=>`${a} error tersimpan`}},E={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},F=[5,15,30,60];async function G(a,b){let c={acted:!1,state:b.state,sentDay:null,event:null,result:null};if(!C(a,b.lastSentDay))return c;let d=(0,z.x)(a),e=b.state&&b.state.day===d?b.state:null;if(e?.stopped)return{...c,state:e};if(e&&e.attempts>0){let b=(F[e.attempts-1]??F[F.length-1])*6e4;if(e.lastAttemptAt&&a.getTime()-new Date(e.lastAttemptAt).getTime()<b)return{...c,state:e}}e??={day:d,...await b.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let f=await b.send({subject:e.subject,html:e.html,text:e.text});if(f.ok)return{acted:!0,state:null,sentDay:d,event:null,result:f};let g=e.attempts+1,h="config"===f.kind||g>=5,i="config"===f.kind?`${f.error}. Fix it and the next digest goes out tomorrow.`:`${f.error} Gave up after ${g} attempts today.`;return{acted:!0,sentDay:null,result:f,state:{...e,attempts:g,lastAttemptAt:a.toISOString(),stopped:h,lastError:f.error},event:h?{message:"Daily digest not sent",detail:i}:null}}a.s(["J",0,function(a,b="en"){let c=D[b],d=`${a.siteUrl.replace(/\/+$/,"")}/alerts`,e=((a,b)=>{let{day:c,month:d}=(0,z.e)(a);return`${c} ${"id"===b?E[d]??d:d}`})(a.now,b),f=`${a.firing.length} ${c.firing}, ${a.opened} ${c.opened}, ${a.resolved.length} ${c.resolved}`,g=`Watchbell \xb7 ${e} \xb7 ${f}`,h=[...a.apps].sort((a,b)=>(a.uptime??101)-(b.uptime??101)||b.errors-a.errors||a.name.localeCompare(b.name)),i=a.firing.map(a=>`${x.Z[b][a.severity]} \xb7 ${a.ruleKey} \xb7 ${a.title}: ${"id"===b?(0,y.f)(a.ruleKey,a.message):a.message}`),j=a.resolved.map(a=>`${a.ruleKey} \xb7 ${a.title} (${c.after} ${c.took(a.took)})`),k=h.map(a=>`${a.name}: ${null===a.uptime?c.noChecks:`${(0,A.C)(a.uptime)} ${c.up}`}, ${c.errors(a.errors)}`),l=a.providers.map(a=>`${a.label}: ${a.text}`),m=[`Watchbell \xb7 ${e}`,`${f} ${c.last24}`,"",c.stillHead,...i.length?i.map(a=>`- ${a}`):[c.noFiring],"",c.resolvedHead,...j.length?j.map(a=>`- ${a}`):[c.noResolved],...k.length?["",c.appsHead,...k.map(a=>`- ${a}`)]:[],...l.length?["",c.providersHead,...l.map(a=>`- ${a}`)]:[],"",`${c.open}: ${d}`].join("\n"),n=a=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,x.H)(a)}</h3>`,o=(a,b)=>a.length?`<ul style="margin:0;padding-left:18px">${a.map(a=>`<li style="margin:2px 0">${(0,x.H)(a)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,x.H)(b)}</p>`,p=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,x.H)(e)}</h2>`,`<p style="margin:0;color:#596170">${(0,x.H)(`${f} ${c.last24}`)}</p>`,n(c.stillHead),o(i,c.noFiring),n(c.resolvedHead),o(j,c.noResolved),...k.length?[n(c.appsHead),o(k,"")]:[],...l.length?[n(c.providersHead),o(l,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,x.H)(d).replace(/"/g,"&quot;")}" style="color:#2f4372">${(0,x.H)(c.open)}</a></p>`,"</div>"].join("");return{subject:(0,B.G)(g),html:(0,B.G)(p),text:(0,B.G)(m)}},"A",0,C,"K",0,G],80997),a.s(["f",0,function(a=process.env){let b=a.TELEGRAM_BOT_TOKEN?.trim()??"",c=a.RESEND_API_KEY?.trim()??"",d=a.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(b)?b:null,resendKey:c.startsWith("re_")?c:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(d)?d:null}}],718025)},552543,a=>{var b=a.i(186133);function c(a){let b=a&&"object"==typeof a?a:null,c=b?b.lang:a,d=a=>{var d;return"string"==typeof(d=b&&a in b?b[a]:c)&&"id"===d.trim().toLowerCase()?"id":"en"};return{telegram:d("telegram"),discord:d("discord"),email:d("email")}}async function d(){try{return c(await (0,b.l)())}catch{return c(null)}}async function e(a="telegram"){return(await d())[a]}a.s(["c",0,["telegram","discord","email"],"H",0,c,"I",0,e,"B",0,d,"t",0,function(a,b,c){return a[b][c]}])},204784,a=>{var b=a.i(19809),c=a.i(371289);async function d(a,e,f={}){let g;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};try{g=await (f.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":e.idempotencyKey},body:JSON.stringify({from:e.from,to:[e.to],subject:e.subject,html:e.html,text:e.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(g.ok)return{ok:!0};let h=await g.json().catch(()=>null);return 429===g.status||g.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${g.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(h?.message??g.status).slice(0,200)}`}}a.s(["f",0,d])},446914,a=>{var b=a.i(19809),c=a.i(462820),d=a.i(371289);async function e(a,c,f,g,h=5e3){let i;if((0,d.W)())return{ok:!1,code:null,description:b.Y,retryAfter:null};try{i=await g(`https://api.telegram.org/bot${a}/${c}`,{...f,signal:AbortSignal.timeout(h),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let j=await i.json().catch(()=>null);return j?.ok?{ok:!0,result:j.result}:{ok:!1,code:j?.error_code??i.status,description:String(j?.description??`HTTP ${i.status}`).slice(0,200),retryAfter:j?.parameters?.retry_after??null}}async function f(a,b,c,d={}){let g="number"==typeof d.replyTo&&Number.isSafeInteger(d.replyTo)&&d.replyTo>0?{reply_parameters:{message_id:d.replyTo,allow_sending_without_reply:!0}}:{},h=await e(a,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:b,text:c,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...d.replyMarkup?{reply_markup:d.replyMarkup}:{},...g})},d.fetch??fetch);if(h.ok){let a=h.result?.message_id;return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?{ok:!0,messageId:a}:{ok:!0}}return 429===h.code?{ok:!1,kind:"transient",retryAfterS:h.retryAfter??30,error:`Telegram asked us to wait ${h.retryAfter??30} s.`}:null===h.code||h.code>=500?{ok:!1,kind:"transient",error:null===h.code?h.description:`Telegram returned an error (${h.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${h.description}`}}async function g(a,b={}){let d=await e(a,"getUpdates?limit=20&timeout=0",{method:"GET"},b.fetch??fetch);if(!d.ok)return 409===d.code?{ok:!1,error:"This bot has a webhook set, so the console can't list chats. Remove the webhook or paste the chat id."}:401===d.code||404===d.code?{ok:!1,error:`Telegram rejected TELEGRAM_BOT_TOKEN. Check the value ${c.n.checkWhere}.`}:{ok:!1,error:"Couldn't reach Telegram. Try again."};let f=new Map;for(let a of Array.isArray(d.result)?d.result:[]){let b=a.message?.chat??a.my_chat_member?.chat??a.channel_post?.chat;b&&"number"==typeof b.id&&f.set(String(b.id),`${b.title??b.first_name??b.username??"Chat"} (${b.type??"chat"})`)}return{ok:!0,chats:[...f].map(([a,b])=>({id:a,label:b}))}}a.s(["N",0,g,"I",0,f,"z",0,e])}]})();
22
+
23
+ //# sourceMappingURL=src_lib_0nbad7vu413-f._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[949663,912283,876808,747556,a=>{var b=a.i(927262),c=a.i(201516),d=a.i(273133),e=a.i(120213),f=a.i(84979),g=a.i(84877),h=a.i(679662);let i=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function j(a,b){let c=i.exec(a.trim()),d=i.exec(b.trim());return!!c&&!!d&&c[1]===d[1]&&("0"!==c[1]||c[2]===d[2])&&(0,g.f)(b,a)>=0}let k=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,l=a=>k.exec(a)?.[1]??null;a.s(["M",0,a=>`Lockfile tertinggal — jalankan npm install (${a.slice(0,5).join(", ")}${a.length>5?`, +${a.length-5}`:""}).`,"a",0,function(a,b,c){if(!a.length)return{ok:!1,why:"nothing"};let d=a.filter(a=>c.includes(a.severity)&&!("moderate"===a.severity&&a.dev));if(!d.length)return{ok:!1,why:"severity"};for(let a of d){let c=b.get(a.package);if(!c||!j(c,a.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:d}},"m",0,function(a,b){if(!b)return{deps:a,stale:[]};let c=[...Object.entries(b.dependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.optionalDependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.devDependencies).map(([a,b])=>[a,b,!0])],d=[...a],e=[];for(let[a,b,f]of c){let c=(0,h.Y)(b);if(!c||!(0,h.C)(c))continue;let i=d.filter(b=>b.name===a);!i.length||i.some(a=>(0,g.f)(a.version,c)>=0)||((d=d.filter(b=>b.name!==a)).push({name:a,version:c,dev:i.every(a=>a.dev)&&f}),e.push(a))}return{deps:d,stale:e}},"D",0,function(a){let b=new Map;for(let c of a){if(!c.direct)continue;let a=b.get(c.package);(!a||0>(0,g.f)(c.installedVersion,a))&&b.set(c.package,c.installedVersion)}return b},"U",0,function(a,b,c=null){for(let d of b){if(l(d.title)!==c)continue;let b=function(a){if(a.packages?.length)return a.packages;let b=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(a.title);return b?[b[1]]:"all"}(d);if("all"===b||a.some(a=>b.includes(a)))return d}return null},"J",0,j],912283);let m=["next","eslint-config-next"],n={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function o(a,b){if(!a||!(0,h.C)(a))return null;let c=b.map(a=>a.fixed).filter(b=>!!b&&(0,h.C)(b)&&(0,g.f)(b,a)>0);if(!c.length)return null;let d=c.filter(b=>j(a,b));return(d.length?d:c).reduce((a,b)=>(0,g.f)(b,a)>0?b:a)}function p(a,b){let c=o(a,b),d=c?b.map(a=>a.fixed).filter(a=>!!a&&(0,h.C)(a)&&(0,g.f)(a,c)>0):[],e=d.reduce((a,b)=>null===a||(0,g.f)(b,a)>0?b:a,null),i=e?` (${1===d.length?"one fix needs":"some fixes need"} Next.js ${e.split(".")[0]})`:"";return`Next.js ${a??"(unknown version)"} has ${(0,f.q)(b.length)} (${(0,f.N)(b).toLowerCase()}), ${c?`fixed in ${c}${i}`:"no fix yet"}.`}a.s(["P",0,p,"p",0,function(a){if(!a||"vulnerable"!==a.status||!a.findings.length||!a.version)return null;let b=o(a.version,a.findings);if(!b)return null;let c=n[(0,f.N)(a.findings)],d=[...new Set(a.findings.map(a=>a.id))],e=[...new Set(a.findings.flatMap(a=>a.cve?[a.cve]:[]))];return{from:a.version,to:b,upgrades:[{package:"next",to:b,vulnIds:d,cves:e,severity:c},{package:"eslint-config-next",to:b,vulnIds:[],cves:[],severity:c,companionOf:"next"}],installed:new Map(m.map(b=>[b,a.version]))}},"F",0,function(a){let b=a.find(a=>"next"===a.package&&!a.companionOf);return!b||a.some(a=>"eslint-config-next"===a.package)?a:[...a,{package:"eslint-config-next",to:b.to,vulnIds:[],cves:[],severity:b.severity,companionOf:"next"}]}],876808);let q=a=>Math.round(a).toLocaleString("en-US"),r=(a,b)=>Math.floor((a.getTime()-b.getTime())/864e5),s=(a,b)=>`${a} ${b}${1===a?"":"s"}`,t=a=>{try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},u=a=>{try{return new URL(a).host}catch{return a}},v=a=>{try{return new URL(a).pathname}catch{return"/"}},w="Down · ",x=(a,b,c)=>({rule:a,subject:b,status:"unknown",resourceId:null,accountId:null,title:b,message:"",provider:null,sampleAt:null,...c}),y=a=>"firestore"===a.provider?"firebase":"d1"===a.provider?"cloudflare":a.provider,z=new Set(["turso","upstash","d1"]),A={MonitorDown:(a,b)=>a.monitors.map(a=>{let d=x("MonitorDown",a.id,{resourceId:a.appId,title:`${a.appName} ${"heartbeat"===a.kind?a.url:v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt}),e=b??3;if("heartbeat"===a.kind){let b;return{...d,status:"err"===a.state?"firing":"ok"===a.state?"ok":"unknown",message:`${a.appName} \xb7 ${a.url}: ${b=a.lastError,b?.startsWith(w)?b.slice(w.length):"no ping in time"}.`}}return a.movedTo?{...d,status:"ok",message:`${u(a.url)} moved to ${a.movedTo}; MonitorDomainMoved takes over.`}:a.failStreak>=e?{...d,status:"firing",message:(0,c.H)(a)?`${t(a.url)} failed its check (${(0,c.H)(a)}) on ${e} consecutive checks.`:`${t(a.url)} returned ${a.lastStatus?`HTTP ${a.lastStatus}`:"no answer"} on ${e} consecutive checks.`}:{...d,status:0===a.failStreak&&a.lastCheckedAt?"ok":"unknown",message:`${t(a.url)} answers again.`}}),MonitorDomainMoved:a=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let b=x("MonitorDomainMoved",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel"});return a.movedTo?{...b,status:"firing",message:`${u(a.url)} is no longer a domain of ${a.appName}; production is on ${a.movedTo}.`}:{...b,status:"ok",message:`The monitor checks ${u(a.url)}, a domain of ${a.appName}.`}}),CollectorStale:(a,b)=>{let c=a.lastMinuteRunAt;return[x("CollectorStale","collector",{status:!c||a.now.getTime()-c.getTime()>(b??5)*6e4?"firing":"ok",title:"collector",message:c?`The last minute run finished ${q((a.now.getTime()-c.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(a,b)=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let c=x("HighLatency",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt});if(a.checksLast10<5||null===a.p95Last10)return c;let d=b??1500;return{...c,status:a.p95Last10>d?"firing":"ok",message:`p95 ${q(a.p95Last10)} ms over the last 10 minutes (limit ${q(d)} ms).`}}),DeploymentFailed:a=>a.apps.map(a=>{let b=x("DeploymentFailed",a.id,{resourceId:a.id,title:a.name,provider:"vercel"}),c=a.latestProduction;return c?"error"===c.state?{...b,status:"firing",message:`Production deployment ${c.sha?c.sha.slice(0,7):"(no commit)"} failed.`}:{...b,status:"building"===c.state?"unknown":"ok"}:{...b,status:"ok"}}),DatabasePaused:a=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(a=>x("DatabasePaused",a.id,{resourceId:a.id,title:a.name,provider:"supabase",status:"unknown"===a.state?"unknown":"paused"===a.state?"firing":"ok",message:`Supabase project ${a.name} is paused.`})),CertExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=x("CertExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.tlsNotAfter)return d;let e=r(c.tlsNotAfter,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:`The TLS certificate of ${c.name} expires in ${s(e,"day")}.`}}),DomainExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=x("DomainExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.expiresAt)return d;let e=r(c.expiresAt,a.now);return{...d,status:e<(b??30)?"firing":"ok",message:`${c.name} expires in ${s(e,"day")}.`}}),StorageAlmostFull:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"!==a.provider).map(a=>{let c=x("StorageAlmostFull",a.id,{resourceId:a.id,title:a.name,provider:y(a)});if(null===a.sizeBytes||!a.sizeLimitBytes)return c;let d=a.sizeBytes/a.sizeLimitBytes*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} uses ${q(a.sizeBytes/1e6)} MB of ${q(a.sizeLimitBytes/1e6)} MB (${q(d)}%).`}}),NeonComputeHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"neon"===a.provider).map(a=>{let c=x("NeonComputeHigh",a.id,{resourceId:a.id,title:a.name,provider:"neon"});return null===a.cuHours?c:{...c,status:a.cuHours>(b??80)?"firing":"ok",message:`${a.name} used ${q(a.cuHours)} of ${q(a.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"===a.provider).map(a=>{let c=x("FirestoreQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:"firebase"});if(a.quotaExhausted)return{...c,status:"firing",message:`${a.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===a.readsToday||!a.readsLimit)return!1===a.quotaExhausted?{...c,status:"ok"}:c;let d=a.readsToday/a.readsLimit*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} read ${q(a.readsToday)} of ${q(a.readsLimit)} documents today (${q(d)}%).`}}),AutoPauseRisk:(a,b)=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(c=>{let d=x("AutoPauseRisk",c.id,{resourceId:c.id,title:c.name,provider:"supabase"});if("paused"===c.state)return{...d,status:"ok"};if(!c.lastApiAt)return d;let e=Math.floor((a.now.getTime()-c.lastApiAt.getTime())/864e5);return{...d,status:e>=(b??4)?"firing":"ok",message:`No API traffic for ${s(e,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:a=>a.dns&&a.dns.map(a=>x("DnsProxiedToVercel",a.id,{resourceId:a.resourceId,title:a.name,provider:"cloudflare",status:a.proxied&&a.pointsToVercel?"firing":"ok",message:`${a.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>z.has(a.provider)).map(a=>{let c=x("DbQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:y(a)});return null==a.quotaPct?c:{...c,status:a.quotaPct>(b??80)?"firing":"ok",message:`${a.name}: ${a.quotaLabel??"usage"} at ${q(a.quotaPct)}% of the free plan.`}}),ComputeHigh:(a,b)=>a.compute?a.compute.map(c=>{let e=x("ComputeHigh",c.id,{resourceId:c.id,title:c.name,provider:"supabase",sampleAt:c.latest?new Date(c.latest.at):null}),f=(0,d.B)(c.latest,(0,d.V)(b),a.now);return null===f?e:{...e,status:f.length?"firing":"ok",message:f.length?`${c.name}: ${f.join(", ")}.`:`${c.name} compute is back under the limits.`}}):null,CredentialExpiring:(a,b)=>a.accounts.map(c=>{let d=x("CredentialExpiring",c.id,{accountId:c.id,title:`${c.provider} \xb7 ${c.label}`,provider:c.provider});if("drive"===c.provider&&"error"===c.status&&c.lastError?.includes("invalid_grant"))return{...d,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!c.expiresAt)return{...d,status:"ok"};let e=r(c.expiresAt,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:e<0?`The ${c.provider} credential ${c.label} has expired.`:`The ${c.provider} credential ${c.label} expires in ${s(e,"day")}.`}}),VulnerableDependency:a=>a.deps?a.deps.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=x("VulnerableDependency",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(b.error)return[d];let f=(0,e.g)(b.vulns);return f?[{...d,status:"firing",message:(0,e.L)(b.vulns),..."critical"===f?{severity:"critical"}:{}}]:[{...d,status:"ok",message:`${c.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:a=>a.frameworks?a.frameworks.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=x("FrameworkVulnerable",b.appId,{resourceId:b.appId,title:c.name});return"ok"===b.status?[{...d,status:"ok",message:`${c.name} runs Next.js ${b.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===b.status&&b.findings.length?[{...d,status:"firing",message:p(b.version,b.findings),..."CRITICAL"===(0,f.N)(b.findings)?{severity:"critical"}:{}}]:[d]}):null};a.s(["f",0,function(a,c,d){let e=[],f=new Set;for(let g of c){if(!g.enabled||d&&!d.includes(g.key)||!b._[g.key])continue;let c=A[g.key](a,g.threshold);c&&(f.add(g.key),e.push(...c))}return{observations:e,evaluated:f}}],949663);let B=["MonitorDown","HighLatency"],C=["telegram","discord","webhook","smtp"],D=a=>a.channels.some(a=>C.includes(a));function E(a,b){return b.collectorStale&&"CollectorStale"!==a.rule?"CollectorStale":a.resourceId&&B.includes(a.rule)?b.mutedApps.get(a.resourceId)??null:null}let F=(a,b)=>"critical"===b&&"warning"===a?"critical":a,G=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),H=(a,b)=>`${a}|${b}`;a.s(["f",0,function(a,c,d,e,f){let g={open:[],touch:[],resolve:[]},h=new Map(e.map(a=>[a.key,a])),i=new Map(c.map(a=>[H(a.rule,a.subject),a])),j=new Set(a.map(a=>H(a.ruleKey,a.subject))),k=a=>g.resolve.push({id:a.id,pending:a.notifiedOpen?"resolve":null});for(let c of a){let a=h.get(c.ruleKey),e=i.get(H(c.ruleKey,c.subject));if(!a||!a.enabled){g.resolve.push({id:c.id,pending:null});continue}if(!d.has(c.ruleKey))continue;if(!e){g.resolve.push({id:c.id,pending:null});continue}if("unknown"===e.status)continue;let j=e.provider?f.incidents.get(e.provider)??null:null;if("firing"===e.status){let b=E(e,f),d=c.notifiedOpen&&null!==c.lastNotifiedAt&&f.now.getTime()-c.lastNotifiedAt.getTime()>=216e5,h={id:c.id,okStreak:0,lastSampleAt:e.sampleAt??c.lastSampleAt,lastSeenAt:f.now,message:e.message,causedBy:b,providerIncident:j},i=!c.notifiedOpen&&(!c.pendingSince||f.now.getTime()-c.pendingSince.getTime()>=216e5);(d||i)&&!G(c,f.now)&&!b&&null===c.pending&&D(a)&&(h.pending=d?"repeat":"open"),g.touch.push(h);continue}if(!b._[c.ruleKey].sampled||null===e.sampleAt){k(c);continue}if(!(null===c.lastSampleAt||e.sampleAt.getTime()>c.lastSampleAt.getTime()))continue;let l=c.okStreak+1;l>=2?k(c):g.touch.push({id:c.id,okStreak:l,lastSampleAt:e.sampleAt})}for(let a of c){if("firing"!==a.status||j.has(H(a.rule,a.subject))||f.maintenance.has(a.subject)||a.resourceId&&f.maintenance.has(a.resourceId))continue;let b=h.get(a.rule);if(!b)continue;let c=E(a,f);g.open.push({ruleKey:a.rule,subject:a.subject,resourceId:a.resourceId,accountId:a.accountId,severity:F(b.severity,a.severity),title:a.title,message:a.message,startedAt:f.now,lastSeenAt:f.now,lastSampleAt:a.sampleAt,causedBy:c,providerIncident:a.provider?f.incidents.get(a.provider)??null:null,pending:c||!D(b)?null:"open"})}return g}],747556)},708621,a=>{let b=["status","severity","rule","target","detail","cause","step","since","threshold"],c=["id","en"],d={en:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nNext step: {step}\nsince {since}",id:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nYang perlu kamu lakukan: {step}\nsejak {since}"},e=/\{([a-zA-Z_]+)\}/g,f=a=>a.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function g(a){if(a.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,c]of a.matchAll(e))if(!b.includes(c))return`{${c}} isn't a field. Use ${b.map(a=>`{${a}}`).join(", ")}.`;return null}a.s(["I",0,{en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},"z",0,"alerts.messageTemplates","i",0,c,"_",0,function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e)continue;let a={};for(let b of c){let c=e[b];"string"==typeof c&&c.trim()&&null===g(c)&&(a[b]=c)}Object.keys(a).length&&(b[d]=a)}return b},"l",0,function(a,b){return f(a).split("\n").flatMap(a=>{let c=[...a.matchAll(e)].map(a=>a[1]).filter(a=>Object.hasOwn(b,a));return c.length&&c.every(a=>!b[a].trim())?[]:[a.replace(e,(a,c)=>Object.hasOwn(b,c)?b[c]:a)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()},"F",0,function(a,b){let c="string"==typeof a?f(a):"";return c&&c!==d[b]?c:null},"m",0,g])},455317,71575,569057,930270,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(927262),h=a.i(949663),i=a.i(747556),j=a.i(708621),k=a.i(519051),l=a.i(160147),m=a.i(245710);function n(a,b){return"1h"===a?{silencedUntil:new Date(b.getTime()+36e5),silencedUntilResolved:!1}:{silencedUntil:null,silencedUntilResolved:!0}}a.s(["_",0,[["critical","Critical"],["warning","Warning"],["info","Info"]],"O",0,function(a,b){return a.silencedUntilResolved?{state:"off",text:"Silenced until resolved"}:a.silencedUntil&&a.silencedUntil.getTime()>b.getTime()?{state:"off",text:`Silenced until ${(0,m.U)(a.silencedUntil)}`}:"open"===a.pending||"repeat"===a.pending?{state:"build",text:"Sending…"}:a.causedBy&&!a.notifiedOpen?{state:"off",text:"Muted"}:a.lastNotifiedAt?{state:"ok",text:`Sent ${(0,m.U)(a.lastNotifiedAt)}`}:{state:"off",text:"Digest only"}},"G",0,function(a){return a.enabled?a.firing?{state:"err",text:`Firing \xb7 ${a.firing}`}:a.hasData?{state:"off",text:"Inactive"}:{state:"unknown",text:"No data yet"}:{state:"off",text:"Disabled"}},"A",0,n,"M",0,function(a,b){let c=Math.max(1,Math.round((b.getTime()-a.getTime())/6e4));if(c<60)return`${c} min`;let d=Math.floor(c/60);return d<24?`${d} h ${c%60} min`:`${Math.floor(d/24)} d ${d%24} h`}],71575);var o=a.i(639271),p=a.i(656298),q=a.i(688275),r=a.i(893893),s=a.i(672319),t=a.i(188546),u=a.i(233711);async function v(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function w(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}a.s(["D",0,v,"d",0,w],569057);var x=a.i(367247),y=a.i(436357),z=a.i(912283),A=a.i(358179),B=a.i(492665),C=a.i(683439),D=a.i(679662),E=a.i(852539),F=a.i(33135),G=a.i(533957);let H="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function I(a,b,c,d){let e=d.deadline-Date.now();if(e<500)return{ok:!1,error:"No time left for OSV.dev"};let f=AbortSignal.timeout(e);return K(a,{method:"POST",headers:{"content-type":"application/json","user-agent":H},body:JSON.stringify(b),signal:f},c,f,d)}async function J(a,b,c){let d=c.deadline-Date.now();if(d<500)return{ok:!1,error:"No time left for OSV.dev"};let e=AbortSignal.timeout(Math.min(d,8e3));return K(a,{method:"GET",headers:{"user-agent":H},signal:e},b,e,c)}async function K(a,b,c,d,e){let f;try{f=await (e.fetch??fetch)(a,{...b,redirect:"error",cache:"no-store"})}catch(a){return{ok:!1,error:(0,G.t)(a)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!f.ok)return await f.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${f.status}`};try{let{bytes:a,truncated:b}=await (0,F.z)(f,c,(0,F.X)(d));if(b)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(a))}}catch(a){return{ok:!1,error:(0,G.t)(a)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function L(a,b){let c=[];for(let d of(0,E.f)(a)){let a=await I(E.n,d,4194304,b);if(!a.ok)return a;let e=(0,E.j)(a.body,d.queries.length);if(!e)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};c.push(...e)}return{ok:!0,ids:c}}async function M(a,b){let c=[...new Set(a)].filter(E.G);if(c.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${c.length})`};let d=new Map,e=null;for(let a=0;a<c.length&&!e;a+=8)await Promise.all(c.slice(a,a+8).map(async a=>{let c=await J(`${E.W}${encodeURIComponent(a)}`,1048576,b),f=c.ok?(0,E.O)(c.body):null;f?d.set(a,f):e??=c.ok?"OSV.dev sent an advisory we couldn't read":c.error}));return e?{ok:!1,error:e}:{ok:!0,map:d}}var N=a.i(521050),O=a.i(120213),P=a.i(689963),Q=a.i(26972),R=a.i(427221),S=a.i(811365),T=a.i(760417);let U=P.z.array(Q.z.object({name:R.z.string(),type:R.z.string(),sha:R.z.string(),size:S.z.number().optional()}));async function V(a,b,c,d={},e=null){if(!(0,T.M)(b)||!(0,T.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==e&&(0,N.Q)(e)!==e)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let f=e?e.split("/").map(encodeURIComponent).join("/"):"",g=await (0,T.j)(`/repos/${(0,T.f)(b)}/contents/${f}?ref=${encodeURIComponent(c)}`,a,d);if(!g.ok)return g;let h=U.safeParse(g.data);return h.success?{ok:!0,data:h.data.filter(a=>"file"===a.type&&/^[0-9a-f]{40}$/.test(a.sha)).map(a=>({name:a.name,sha:a.sha,size:a.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function W(a,b,c,d={}){if(!(0,T.M)(b)||!(0,T.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let e=await (0,T.j)(`/repos/${(0,T.f)(b)}/git/ref/heads/${c.split("/").map(encodeURIComponent).join("/")}`,a,d);return e.ok?{ok:!0,data:!0}:"missing"===e.kind?{ok:!0,data:!1}:e}function X(a,b,c,d,e,f={}){return(0,T.V)(a,b,c,d,e,f)}async function Y(a,b,c={}){if(!(0,T.M)(b))return{ok:!1,kind:"format",error:"That isn't a repository name."};let d=await (0,T.j)(`/repos/${(0,T.f)(b)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,a,c);if(!d.ok)return"scope"===d.kind||"missing"===d.kind?{ok:!0,data:{denied:!0}}:d;let e=(0,O.E)(d.data);return e?{ok:!0,data:{alerts:e}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var Z=a.i(751263);async function $(){let[a]=await (0,e.f)().select().from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);if(!a)return{error:"GitHub isn't connected."};let d=(0,A.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,B.f)().OPS_ENCRYPTION_KEY);return d?{token:d,accountId:a.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function _(){let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,"deps.scanAll")).limit(1);return a?.value===!0}let aa=a=>{let b=(0,Z.w)(a);return{dir:(0,N.Q)((a??{}).rootDirectory),unsupported:(0,N.l)((a??{}).rootDirectoryUnsupported),branch:(0,Z.i)((0,Z.V)(a),null),...b?{fallback:b}:{}}};async function ab(a){let c=[...new Set(a.filter(C.f))],d=new Map;if(!c.length)return d;let g=await (0,e.f)().select({repoId:f.appRepos.repoId,name:f.resources.name,monitored:f.resources.monitored,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.y)(f.appRepos.repoId,c),(0,b.M)(f.resources.goneAt))).limit(1e3);for(let a of(g.sort((a,b)=>Number(!!b.monitored)-Number(!!a.monitored)||(a.name<b.name?-1:+(a.name>b.name))),g))d.has(a.repoId)||d.set(a.repoId,aa(a.meta));return d}async function ac(){let a={id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,scannedAt:f.dependencyScans.scannedAt},c=(0,b.b)((0,b.M)(f.githubRepos.goneAt),(0,b.u)(f.githubRepos.archived,!1)),d=await _()?await (0,e.f)().select(a).from(f.githubRepos).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500):await (0,e.f)().selectDistinct(a).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500),g=d.length?await ab(d.map(a=>a.id)):new Map;return(0,O.M)(d.map(a=>{let b=g.get(a.id);return{...a,rootDir:b?.dir??null,rootDirUnsupported:b?.unsupported??null,prodBranch:b?.branch??null,...b?.fallback?{prodFallback:b.fallback}:{}}}))}let ad=(a,b)=>a.length>b?`${a.slice(0,b-1)}…`:a;async function ae(a,b){let c=new Date;await (0,e.f)().insert(f.dependencyScans).values({repoId:a,...b,updatedAt:c}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{...b,updatedAt:c}})}async function af(a){return(0,e.f)().select({id:f.dependencyVulns.id,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,source:f.dependencyVulns.source}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)}function ag(a,b){for(let c of D.a){let d=a.find(a=>a.name===c.path);if(d)return{path:(0,N.H)(b,c.path),kind:c.kind,sha:d.sha}}return null}async function ah(a,c,d,g={}){let h=()=>({...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),1e4))}),i=async a=>(await ae(c.id,{error:ad(a,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:a}),j=c.defaultBranch??"HEAD",k=null;for(let b of[c.prodBranch,c.prodFallback]){if(b&&b===c.defaultBranch)break;let d=(0,Z.i)(b,c.defaultBranch);if(!d)continue;let e=await W(a,c.fullName,d,h());if(!e.ok)return i(e.error);if(e.data){k=d;break}}let l=null!==k;k&&(j=k);let m=l?`Scanned ${k}, the branch production is built from.`:null,n=(0,N.Q)(c.rootDir),o=n?null:(0,N.l)(c.rootDirUnsupported),p=o?`The Vercel Root Directory "${o}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,q=await V(a,c.fullName,j,h(),n);if(!q.ok)return i(n&&"missing"===q.kind?`The folder ${(0,N.x)(n)} isn't in ${c.fullName} on ${j}.`:q.error);let r=ag(q.data,n),s=q.data.find(a=>"package.json"===a.name)??null,t=!1,u=null;if(n&&s&&!r){let b=await V(a,c.fullName,j,h());if(!b.ok)return i(b.error);t=null!==(r=ag(u=b.data,null))}let v=r?r.sha:s?`pkg:${s.sha}`:null,w=v&&n?`${n}:${v}${t&&s?`+${s.sha}`:""}`:v&&o?`odd:${v}`:v,x=w&&l?`br:${k}:${w}`:w,[y]=await (0,e.f)().select().from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,c.id)).limit(1),A=new Date;if(!(0,O.U)(y??null,x,A,g.force))return{status:"unchanged"};if(!x){let a=await af(c.id);return a.length&&await (0,e.f)().update(f.dependencyVulns).set({resolvedAt:A}).where((0,b.y)(f.dependencyVulns.id,a.map(a=>a.id))),await ae(c.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:A,queriedAt:A,error:null,note:ad([m,p,`No package.json or lockfile ${n?"in":"at"} ${(0,N.x)(n)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let B=(0,N.H)(n,"package.json"),C=s?await X(a,c.fullName,B,j,T.$,h()):null;if(C&&!C.ok)return i(C.error);let F=C?.ok&&C.data?(0,D.b)(C.data):null,G=null,H="package-json",I=t&&r?`Scanned ${(0,N.x)(n)} with the repository root's ${r.path} (workspaces).`:null;if(r){if(2e3>d-Date.now())return i("Time budget used before the lockfile was read; the next run tries again.");let b=await X(a,c.fullName,r.path,j,0xf00000,{...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),2e4))});if(!b.ok)return i(b.error);let e=!0;if(t&&n&&b.data&&!(0,N.p)(r.kind,b.data,n)){let b=u?.some(a=>"package.json"===a.name)?await X(a,c.fullName,"package.json",j,T.$,h()):null;if(b&&!b.ok)return i(b.error);e=(0,N.F)(b?.data??null,n)}e?(G=b.data?(0,D.D)(r.kind,b.data):null,H=r.kind,G||(I=[I,`${r.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(I=`The repository root's ${r.path} isn't a workspace that includes ${n}, so the versions come from ${B} ranges (approximate).`,r=null)}if(G){let a=(0,z.m)(G,F);G=a.deps,a.stale.length&&(I=[I,(0,z.M)(a.stale)].filter(Boolean).join(" "))}else G=F?(0,D.e)(F):[],H="package-json",I??=r?null:"No lockfile: the versions come from package.json ranges (approximate).";let J=await af(c.id),K=[];if(G.length){let a=await L(G,{fetch:g.fetch,deadline:d});if(!a.ok)return i(a.error);let b=(0,O.A)(J,!0===g.force),c=await M((0,O.z)(G,a.ids,b),{fetch:g.fetch,deadline:d});if(!c.ok)return i(c.error);K=(0,E.i)(G,a.ids,c.map,b)}if(d-Date.now()>1500){let b=await Y(a,c.fullName,h());b.ok&&"alerts"in b.data?K=(0,O.R)(K,b.data.alerts,G):b.ok&&(I=[I,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let P=(0,O.h)(J,K,(0,D.K)(F));I=[m,p,I].filter(Boolean).join(" ")||null;let Q=new Date;return await (0,e.f)().transaction(async a=>{for(let d of(P.insert.length&&await a.insert(f.dependencyVulns).values(P.insert.map(a=>({repoId:c.id,package:a.package,installedVersion:a.installedVersion,vulnId:a.vulnId,aliases:a.aliases,severity:a.severity,fixedVersion:a.fixedVersion,summary:a.summary,direct:a.direct,dev:a.dev,source:a.source,firstSeenAt:Q,lastSeenAt:Q}))).onConflictDoNothing(),P.update))await a.update(f.dependencyVulns).set({severity:d.severity,fixedVersion:d.fixedVersion,summary:d.summary,aliases:d.aliases,dev:d.dev,direct:d.direct,lastSeenAt:Q}).where((0,b.u)(f.dependencyVulns.id,d.id));P.resolve.length&&await a.update(f.dependencyVulns).set({resolvedAt:Q}).where((0,b.b)((0,b.y)(f.dependencyVulns.id,P.resolve),(0,b.M)(f.dependencyVulns.resolvedAt))),await a.insert(f.dependencyScans).values({repoId:c.id,lockfilePath:r?.path??(s?B:null),lockfileSha:x,packageCount:G.length,scannedAt:Q,queriedAt:Q,error:null,note:I?ad(I,300):null,updatedAt:Q}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{lockfilePath:r?.path??(s?B:null),lockfileSha:x,packageCount:G.length,scannedAt:Q,queriedAt:Q,error:null,note:I?ad(I,300):null,updatedAt:Q}})}),{status:"scanned",vulns:P.insert.length+P.update.length,packages:G.length,note:"package-json"===H?I:null}}async function ai(a,c={}){var d,g;let h,i,j,k,l=await $();if("error"in l)return{error:l.error};let{first:m,only:n,skip:o,...p}=c,q=(d=await ac(),h=(g={first:m,only:n,skip:o}).only?new Set(g.only):null,i=new Set(g.skip??[]),j=(h?d.filter(a=>h.has(a.id)):d).filter(a=>!i.has(a.id)),k=new Set(g.first??[]),[...j.filter(a=>k.has(a.id)),...j.filter(a=>!k.has(a.id))]),r={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:q.map(a=>a.id)};for(let[b,c]of q.entries()){if(a-Date.now()<4e3){r.left=q.length-b;break}r.done.push(c.id);try{let b=await ah(l.token,c,a,p);"scanned"===b.status?r.scanned++:"unchanged"===b.status?r.unchanged++:r.failed.push(`${c.fullName}: ${b.error}`)}catch(a){r.failed.push(`${c.fullName}: ${a instanceof Error?a.name:"error"}`)}}return await (0,e.f)().delete(f.dependencyVulns).where((0,b.b)((0,b.E)(f.dependencyVulns.resolvedAt),(0,b.S)(f.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),r}let aj=async()=>(await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).limit(1)).length>0;async function ak(a,c,d={}){let g,h,i,{marked:j,onlyMarked:k}=c;if(!await aj())return{problem:null,settled:[...j],done:[],complete:!0};let l=j.filter(C.f),m=l.length?await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,l)).limit(5*l.length):[],n=[...new Set(m.map(a=>a.repoId))],o=a=>m.filter(b=>b.appId===a).map(a=>a.repoId),p=j.filter(a=>!o(a).length);if(k&&!n.length)return{problem:null,settled:[...j],done:[],complete:!0};if(a-Date.now()<4e3)return{problem:null,settled:p,done:[],complete:!1};let q=(c.skip??[]).filter(a=>!n.includes(a)),r=await ai(a,{...d,first:n,...k?{only:n}:{skip:q}});if("error"in r){let a;return{problem:(a=r.error,/didn't answer in time|no time left|time budget|rate limit/i.test(a))?null:r.error,settled:[...j],done:[],complete:!0}}let s=new Set([...r.done,...n.filter(a=>!r.listed.includes(a))]);return{problem:(g=r.failed.filter(a=>!/didn't answer in time|no time left|time budget|rate limit/i.test(a)),(h=r.failed.length-g.length+(r.left??0))&&console.info(`deps: ${h} repositor${1===h?"y":"ies"} wait for the next run`),i=g.slice(0,3),g.length>3&&i.push(`+${g.length-3} more`),i.length?i.join("; "):null),settled:j.filter(a=>o(a).every(a=>s.has(a))),done:r.done,complete:0===r.left}}async function al(a){let d={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,C.f)(a))return d;let[g]=await (0,e.f)().select({id:f.githubRepos.id,fullName:f.githubRepos.fullName}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return d;let[[h],i,[j]]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,g.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3),(0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github_write")).limit(1)]);i.sort((a,b)=>(0,O.t)(a.severity)-(0,O.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1));let k=await (0,e.f)().select({number:f.dependencyPrs.number,stage:f.dependencyPrs.stage,stageText:f.dependencyPrs.stageText,openedAt:f.dependencyPrs.openedAt}).from(f.dependencyPrs).where((0,b.b)((0,b.u)(f.dependencyPrs.repoId,g.id),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,c.A)(f.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:g,scan:h??null,vulns:i,writeConnected:!!j,prs:(k??[]).map(a=>({...a,fullName:g.fullName}))}}async function am(a,c={}){if(!(0,C.f)(a))return{ok:!1,error:"That app no longer exists."};let[g]=await (0,e.f)().select({app:f.resources.name,id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,goneAt:f.githubRepos.goneAt,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return{ok:!1,error:"Link a repository first."};if(g.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let h=await $();if("error"in h)return{ok:!1,error:h.error};let i=aa(g.meta),j=await ah(h.token,{id:g.id,fullName:g.fullName,defaultBranch:g.defaultBranch,scannedAt:null,rootDir:i.dir,rootDirUnsupported:i.unsupported,prodBranch:i.branch,prodFallback:i.fallback??null},Date.now()+4e4,{...c,force:!0});if("failed"===j.status)return{ok:!1,error:`The scan failed: ${j.error}`};let[k]=await (0,e.f)().select({n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))),l=k?.n??0;return{ok:!0,app:g.app,repo:g.fullName,vulns:l,message:l?`${l} known vulnerabilit${1===l?"y":"ies"} in ${j.packages??0} packages.`:`No known vulnerabilities in ${j.packages??0} packages.`}}async function an(a){let c=a.filter(C.f);if(!c.length)return[];let d=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,error:f.dependencyScans.error}).from(f.appRepos).innerJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.appRepos.repoId)).where((0,b.b)((0,b.y)(f.appRepos.appId,c),(0,b.E)(f.dependencyScans.scannedAt)));if(!d.length)return[];let g=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,severity:f.dependencyVulns.severity,summary:f.dependencyVulns.summary,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(d.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(1e4);return d.map(a=>({appId:a.appId,repoId:a.repoId,error:a.error,vulns:g.filter(b=>b.repoId===a.repoId).map(a=>({package:a.package,installedVersion:a.installedVersion,fixedVersion:a.fixedVersion,severity:a.severity,summary:a.summary,dev:a.dev,direct:a.direct}))}))}async function ao(a,c=new Set){let g=a.filter(C.f),h=new Map;if(!g.length)return h;let i=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,g));if(!i.length)return h;let j=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,vulnId:f.dependencyVulns.vulnId,aliases:f.dependencyVulns.aliases,severity:f.dependencyVulns.severity,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(i.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt),(0,b.u)(f.dependencyVulns.direct,!0),(0,b.E)(f.dependencyVulns.fixedVersion))).limit(2e3),k=j.some(a=>"next"===a.package)?new Set((await (0,e.f)().selectDistinct({appId:f.dependencyPrs.appId}).from(f.dependencyPrs).where((0,b.b)((0,b.y)(f.dependencyPrs.appId,g),(0,b.$)(f.dependencyPrs.stage,["merged","closed"]),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),d.B`${f.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(g.length)).map(a=>a.appId)):new Set;for(let a of i){let b=c.has(a.appId)||k.has(a.appId);(0,O.B)(j.filter(c=>c.repoId===a.repoId&&!(b&&"next"===c.package))).length&&h.set(a.appId,a.repoId)}return h}a.s(["o",0,12e3,"d",0,4e3,"j",0,al,"O",0,ak,"C",0,ao,"a",0,an,"h",0,am],930270);var ap=a.i(242605);async function aq(){return(0,e.f)().select({appId:f.links.fromResourceId,dbId:f.links.toResourceId}).from(f.links).where((0,b.u)(f.links.kind,"uses_db")).limit(500)}async function ar(a){let g=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),[h,i,j,k,l]=await Promise.all([w(),v(),(0,e.f)().select({m:f.monitors,appName:f.resources.name,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(g,(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1))),(0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)(g,(0,b.u)(f.resources.kind,"app"))),(0,e.f)().select({id:f.accounts.id,provider:f.accounts.provider,label:f.accounts.label,expiresAt:f.accounts.expiresAt,status:f.accounts.status,lastError:f.accounts.lastError}).from(f.accounts)]),m=j.map(a=>a.m.id),n=m.length?await (0,e.f)().select({id:f.checks.monitorId,n:d.B`count(*)::int`,p95:d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})::float8`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,m),(0,b.B)(f.checks.at,new Date(a.getTime()-6e5)),(0,b.u)(f.checks.inMaintenance,!1))).groupBy(f.checks.monitorId):[],z=k.map(a=>a.id),A=z.length?await (0,e.f)().selectDistinctOn([f.deployments.resourceId],{appId:f.deployments.resourceId,state:f.deployments.state,sha:f.deployments.commitSha,createdAt:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.y)(f.deployments.resourceId,z),(0,b.u)(f.deployments.target,"production"))).orderBy(f.deployments.resourceId,(0,c.A)(f.deployments.createdAtProvider)):[],B=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,kind:f.resources.kind,state:f.snapshots.state,data:f.snapshots.data}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)(g,(0,b.y)(f.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),C=a=>B.filter(b=>b.kind===a),D=B.filter(a=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(a.kind)),E=C("zone"),F=C("domain"),G=await aq(),H=await (0,x.Y)().catch(()=>null),I=z.length?await an(z).catch(()=>null):null,J=z.length?await (0,ap.F)(z).catch(()=>null):null;return{now:a,lastMinuteRunAt:h,lastAnyRunAt:i,monitors:j.map(({m:a,appName:b,appMeta:c})=>{let d=n.find(b=>b.id===a.id),e="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,appName:b,url:e?a.name??"heartbeat":a.url,kind:e?"heartbeat":"http",state:a.state,failStreak:a.failStreak,lastStatus:a.lastStatus,lastError:a.lastError,lastCheckedAt:a.lastCheckedAt,p95Last10:d?.p95??null,checksLast10:d?.n??0,movedTo:e?null:(0,y.u)(a.url,{name:b,meta:c},k.filter(b=>b.id!==a.resourceId),{lastError:a.lastError})?.to??null}}),apps:k.map(a=>{let b=A.find(b=>b.appId===a.id);return{id:a.id,name:a.name,latestProduction:b?{state:b.state,sha:b.sha,createdAt:b.createdAt}:null}}),accounts:l,dbs:D.length?D.map(b=>(function(a,b){let c={id:a.id,name:a.name,state:a.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===a.kind){let b=(0,r.k)(r.B,a.data),d=(0,u.Z)(b.lastTrafficAt),e=(0,u.Z)(b.trafficAt),f=d??(e&&!b.trafficError?new Date(e.getTime()-6048e5):null);return{...c,provider:"supabase",sizeBytes:b.sizeBytes??null,sizeLimitBytes:s.R,lastApiAt:f}}if("neon_project"===a.kind){let b=(0,r.k)(r.s,a.data),d=(b.branches??[]).map(a=>a.logicalSize).filter(a=>"number"==typeof a);return{...c,provider:"neon",cuHours:null==b.computeSeconds?null:b.computeSeconds/3600,cuLimit:q.a.cuHours,sizeBytes:d.length?d.reduce((a,b)=>a+b,0):null,sizeLimitBytes:q.a.storageBytes}}if("firestore"===a.kind){let d=(0,r.k)(r.w,a.data),e=(0,u.Z)(d.opsAt),f=null!=d.reads&&e&&e.getTime()>=(0,p.a)(b).getTime()?d.reads:null,g=null!=d.latencyMs||null!=d.pingError;return{...c,provider:"firestore",readsToday:f,readsLimit:p.T.reads,quotaExhausted:g?"RESOURCE_EXHAUSTED"===d.pingReason:null}}if("turso_database"===a.kind){let d=(0,r.k)(r.N,a.data),e=(0,o.u)((0,o.G)(d,b));return{...c,provider:"turso",sizeBytes:d.orgStorageBytes??null,sizeLimitBytes:o.g.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("upstash_redis"===a.kind){let d=(0,r.k)(r.e,a.data),e=(0,o.u)((0,o.$)(d,b));return{...c,provider:"upstash",sizeBytes:d.storageBytes??null,sizeLimitBytes:o.W.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("d1_database"===a.kind){let d=(0,r.k)(r.x,a.data),e=(0,o.u)((0,o.I)(d,b));return{...c,provider:"d1",sizeBytes:d.sizeBytes??null,sizeLimitBytes:o.M.dbBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}return null})(b,a)).filter(a=>null!==a):null,domains:E.length||F.length?[...E.map(a=>({id:a.id,name:a.name,tlsNotAfter:null,expiresAt:(0,u.Z)((0,t.q)(a.data).rdap?.expiresAt)})),...F.map(a=>({id:a.id,name:a.name,tlsNotAfter:(0,u.Z)((0,t.q)(a.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(a,b){let c=a.filter(a=>Array.isArray(a.data.records));if(!c.length)return null;let d=a.map(a=>a.name),e=[];for(let a of c){let c=b.filter(b=>(0,u.J)(b.name,d)===a.name.toLowerCase().replace(/\.$/,"")),f=[...new Set(c.flatMap(a=>(0,t.q)(a.data).vercel?.recommendedIps??[]))];for(let b of(0,t.q)(a.data).records){if(!(0,u.l)(b,f))continue;let d=b.name.toLowerCase().replace(/\.$/,""),g=c.find(a=>a.name.toLowerCase().replace(/\.$/,"")===d);e.push({id:`${a.id}:${b.id}`,resourceId:g?.id??a.id,name:b.name,proxied:b.proxied,pointsToVercel:!0})}}return e}(E,F),links:G,compute:H,deps:I&&I.length?I:null,frameworks:J&&J.length?J:null}}var as=a.i(714530),at=a.i(396667);let au={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function av(){return(await (0,e.f)().select().from(f.alertRules)).filter(a=>(0,g.h)(a.key)).map(a=>({key:a.key,severity:a.severity,threshold:a.threshold,enabled:a.enabled,channels:a.channels}))}async function aw(a,c={}){let[d,j,m,n,o,p]=await Promise.all([ar(a),av(),(0,e.f)().select().from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)),(0,e.f)().select({provider:f.providerStatus.provider,state:f.providerStatus.state}).from(f.providerStatus),(0,as.w)(),(0,at.I)()]),q=new Map(d.accounts.map(a=>[a.id,a.provider])),r=m.filter(a=>!(0,l.O)(p,a.ruleKey,a.accountId?q.get(a.accountId):null)),s=(0,h.f)(d,j,c.only),t=s.evaluated,u=s.observations.filter(a=>!(0,l.O)(p,a.rule,a.provider)),v=j.find(a=>"CollectorStale"===a.key),w=void 0===d.lastAnyRunAt?d.lastMinuteRunAt:d.lastAnyRunAt,x=!!v?.enabled&&(!w||a.getTime()-w.getTime()>(v.threshold??5)*6e4),y=new Map((d.dbs??[]).filter(a=>"paused"===a.state).map(a=>[a.id,a.name])),z=new Map(d.links.filter(a=>y.has(a.dbId)).map(a=>[a.appId,`DatabasePaused \xb7 ${y.get(a.dbId)}`])),A=new Map(n.filter(a=>"warn"===a.state||"err"===a.state).map(a=>["gcp"===a.provider?"firebase":a.provider,au[a.provider]??a.provider])),B=(0,k.u)(o,d.monitors.map(a=>({id:a.id,appId:a.appId})),a,d.apps.map(a=>a.id)),C=r.filter(a=>(0,g.h)(a.ruleKey)).map(a=>({id:a.id,ruleKey:a.ruleKey,subject:a.subject,okStreak:a.okStreak,lastSampleAt:a.lastSampleAt,silencedUntil:a.silencedUntil,silencedUntilResolved:a.silencedUntilResolved,notifiedOpen:a.notifiedOpen,lastNotifiedAt:a.lastNotifiedAt,pending:a.pending,pendingSince:a.pendingSince})),D=(0,i.f)(C,u,t,j,{now:a,collectorStale:x,mutedApps:z,incidents:A,maintenance:B});return D.open.length||D.touch.length||D.resolve.length?(await (0,e.f)().transaction(async c=>{for(let b of D.open)await c.insert(f.alerts).values({...b,pendingSince:b.pending?a:null}).onConflictDoNothing();for(let d of D.touch){let{id:e,pending:g,...h}=d;await c.update(f.alerts).set({...h,...g?{pending:g,pendingSince:a}:{}}).where((0,b.b)((0,b.u)(f.alerts.id,e),(0,b.M)(f.alerts.resolvedAt)))}for(let d of D.resolve)await c.update(f.alerts).set({resolvedAt:a,pending:d.pending,pendingSince:d.pending?a:null}).where((0,b.b)((0,b.u)(f.alerts.id,d.id),(0,b.M)(f.alerts.resolvedAt)))}),{opened:D.open.length,resolved:D.resolve.length}):{opened:0,resolved:0}}async function ax(){let[a,c]=await Promise.all([(0,at.I)(),(0,e.f)().select({ruleKey:f.alerts.ruleKey,provider:f.accounts.provider,n:d.B`count(*)::int`}).from(f.alerts).leftJoin(f.accounts,(0,b.u)(f.accounts.id,f.alerts.accountId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,b.y)(f.alerts.severity,["critical","warning"]))).groupBy(f.alerts.ruleKey,f.accounts.provider)]);return c.reduce((b,c)=>b+((0,l.O)(a,c.ruleKey,c.provider)?0:Number(c.n)),0)}let ay=d.B`case ${f.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function az(a=new Set){return(await (0,e.f)().select({a:f.alerts,name:f.resources.name,kind:f.resources.kind}).from(f.alerts).leftJoin(f.resources,(0,b.u)(f.resources.id,f.alerts.resourceId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,at.s)(a))).orderBy(ay,(0,c.A)(f.alerts.startedAt)).limit(200)).map(({a,name:b,kind:c})=>({...a,resourceName:b??null,resourceKind:c??null}))}async function aA(){return az(await (0,at.I)())}async function aB(a){return(await (0,e.f)().select({id:f.alerts.id,ruleKey:f.alerts.ruleKey,severity:f.alerts.severity,title:f.alerts.title,resourceId:f.alerts.resourceId,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.E)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,new Date(a.getTime()-6048e5)))).orderBy((0,c.A)(f.alerts.resolvedAt)).limit(50)).flatMap(a=>a.resolvedAt?[{...a,resolvedAt:a.resolvedAt}]:[])}async function aC(){let[a,c,h]=await Promise.all([av(),(0,e.f)().select({key:f.alerts.ruleKey,n:d.B`count(*)::int`}).from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)).groupBy(f.alerts.ruleKey),(0,e.f)().select({kind:f.resources.kind}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).groupBy(f.resources.kind)]),i=new Set(h.map(a=>a.kind)),j={databases:["supabase_project","neon_project","firestore"].some(a=>i.has(a)),domains:i.has("domain")||i.has("zone"),dns:i.has("zone")};return g.u.flatMap(b=>{let d=a.find(a=>a.key===b);if(!d)return[];let e=g._[b].needs;return[{rule:d,firing:c.find(a=>a.key===b)?.n??0,hasData:null===e||j[e]}]})}async function aD(a,c,d,g){let h="off"===c?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...n(c,g),silencedBy:d},[i]=await (0,e.f)().update(f.alerts).set(h).where((0,b.b)((0,b.u)(f.alerts.id,a),(0,b.M)(f.alerts.resolvedAt))).returning({ruleKey:f.alerts.ruleKey,title:f.alerts.title,resourceId:f.alerts.resourceId});return i??null}async function aE(a,c){return(await (0,e.f)().update(f.alertRules).set({...c,updatedAt:new Date}).where((0,b.u)(f.alertRules.key,a)).returning({key:f.alertRules.key})).length>0}async function aF(){try{let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,j.z)).limit(1);return(0,j._)(a?.value)}catch{return{}}}async function aG(a,b){let c=await aF();Object.keys(b).length?c[a]=b:delete c[a],await (0,e.f)().insert(f.settings).values({key:j.z,value:c}).onConflictDoUpdate({target:f.settings.key,set:{value:c,updatedAt:new Date}})}a.s(["$",0,aw,"q",0,az,"I",0,aB,"i",0,aA,"X",0,ax,"w",0,aF,"y",0,aC,"z",0,aE,"_",0,aG,"N",0,aD],455317)}]})();
2
+
3
+ //# sourceMappingURL=src_lib_1eioo4oodq-8h._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[646324,a=>{let b=a=>a?a.getTime():null;function c(a,b){return!a||"object"!=typeof a||Array.isArray(a)?{}:Object.fromEntries(Object.entries(a).filter(a=>"string"==typeof a[1]&&new Date(a[1]).getTime()>b.getTime()))}a.s(["Q",0,function(a,b,c,d=new Set){let e=new Set(c.map(a=>`${a.resourceId}/${a.id}`));return a.flatMap(a=>{let c=b.get(a.externalId);return!c||d.has(c)||e.has(`${a.id}/${c}`)?[]:[{appId:a.id,deploymentId:c}]})},"E",0,function(a,c){return!a||a.state!==c.state||a.target!==c.target||a.branch!==c.branch||a.commitSha!==c.commitSha||a.commitMessage!==c.commitMessage||a.source!==c.source||a.url!==c.url||b(a.buildingAt)!==b(c.buildingAt)||b(a.readyAt)!==b(c.readyAt)},"Y",0,function(a,b,d){let e=new Date(d.getTime()+216e5).toISOString();return{...c(a,d),...Object.fromEntries(b.map(a=>[a,e]))}},"K",0,function(a){try{return new URL(a).pathname}catch{return"/"}},"a",0,function(a,b){let c=[...new Map(a.map(a=>[a.id,a])).values()].sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime()),d=b??c[0]?.id??null,e=c.findIndex(a=>a.id===d);return{currentId:d,previousId:e>=0?c[e+1]?.id??null:null}},"S",0,(a,b)=>new Set(Object.keys(c(a,b)))])},683439,a=>{let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;a.s(["f",0,a=>"string"==typeof a&&b.test(a)])},469762,a=>{var b=a.i(245710);function c(a,b){let c=Math.max(0,b.getTime()-a.getTime());return c<6e4?"now":c<36e5?`${Math.floor(c/6e4)} min ago`:c<864e5?`${Math.floor(c/36e5)} h ago`:`${Math.floor(c/864e5)} d ago`}function d(a){let b=Math.max(0,Math.round(a/1e3));if(b<60)return`${b}s`;let c=Math.floor(b/60);return c<60?`${c}m ${String(b%60).padStart(2,"0")}s`:`${Math.floor(c/60)}h ${String(c%60).padStart(2,"0")}m`}a.s(["m",0,function(a,b){for(let a of b)try{let b=new URL(a);if("https:"!==b.protocol&&"http:"!==b.protocol||!b.host)continue;return b.host}catch{}return`${a}.vercel.app`},"W",0,function(a){return a?a.split(/\r?\n|\r/).map(a=>a.trim()).find(a=>""!==a)??"":""},"h",0,function(a,d){let e=d.getTime()-a.getTime();return e<36e5?c(a,d):(0,b.m)(a,d)?(0,b.U)(a):`${Math.max(1,Math.floor(e/864e5))} d ago`},"A",0,function(a,b){return"building"===a.state?`${d(b.getTime()-(a.buildingAt??a.createdAt).getTime())} elapsed`:a.readyAt&&a.buildingAt?d(a.readyAt.getTime()-a.buildingAt.getTime()):"—"},"v",0,function(a,c){return(0,b.m)(a,c)?(0,b.U)(a):`${(0,b.L)(a)} ${(0,b.U)(a)}`},"o",0,function(a,b){let c=Math.max(0,b.getTime()-a.getTime()),d=(a,b)=>`${a} ${b}${1===a?"":"s"}`;return c<36e5?d(Math.max(1,Math.floor(c/6e4)),"minute"):c<864e5?d(Math.floor(c/36e5),"hour"):d(Math.floor(c/864e5),"day")},"F",0,function(a){try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},"$",0,function(a,e){if(!a)return"—";if("building"===a.state)return`building ${d(e.getTime()-(a.buildingAt??a.createdAt).getTime())}`;let f=a.readyAt??a.createdAt;return"error"===a.state?`failed ${(0,b.m)(f,e)?(0,b.U)(f):c(f,e)}`:"canceled"===a.state?`canceled ${c(f,e)}`:c(f,e)},"H",0,function(a){let{day:c,month:d,year:e}=(0,b.e)(a);return`${c} ${d} ${e}`},"p",0,a=>null===a?"—":`${Math.round(a)} ms`,"C",0,a=>null===a?"—":`${(Math.floor(100*a+1e-6)/100).toFixed(2)}%`,"J",0,c,"_",0,a=>a?a.slice(0,7):"—"])},910697,a=>{a.s(["O",0,{events:200,deployments:200,apps:200,monitors:200,domains:200,databases:200,recentEvents:5,ongoingBuilds:5},"A",0,{rawChecksMs:6048e5,healthBuckets:30,metricBuckets:48,responseHours:24}])}]})();
2
+
3
+ //# sourceMappingURL=src_lib_1l8ej-zoyyegd._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[646324,a=>{let b=a=>a?a.getTime():null;function c(a,b){return!a||"object"!=typeof a||Array.isArray(a)?{}:Object.fromEntries(Object.entries(a).filter(a=>"string"==typeof a[1]&&new Date(a[1]).getTime()>b.getTime()))}a.s(["Q",0,function(a,b,c,d=new Set){let e=new Set(c.map(a=>`${a.resourceId}/${a.id}`));return a.flatMap(a=>{let c=b.get(a.externalId);return!c||d.has(c)||e.has(`${a.id}/${c}`)?[]:[{appId:a.id,deploymentId:c}]})},"E",0,function(a,c){return!a||a.state!==c.state||a.target!==c.target||a.branch!==c.branch||a.commitSha!==c.commitSha||a.commitMessage!==c.commitMessage||a.source!==c.source||a.url!==c.url||b(a.buildingAt)!==b(c.buildingAt)||b(a.readyAt)!==b(c.readyAt)},"Y",0,function(a,b,d){let e=new Date(d.getTime()+216e5).toISOString();return{...c(a,d),...Object.fromEntries(b.map(a=>[a,e]))}},"K",0,function(a){try{return new URL(a).pathname}catch{return"/"}},"a",0,function(a,b){let c=[...new Map(a.map(a=>[a.id,a])).values()].sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime()),d=b??c[0]?.id??null,e=c.findIndex(a=>a.id===d);return{currentId:d,previousId:e>=0?c[e+1]?.id??null:null}},"S",0,(a,b)=>new Set(Object.keys(c(a,b)))])},469762,a=>{var b=a.i(245710);function c(a,b){let c=Math.max(0,b.getTime()-a.getTime());return c<6e4?"now":c<36e5?`${Math.floor(c/6e4)} min ago`:c<864e5?`${Math.floor(c/36e5)} h ago`:`${Math.floor(c/864e5)} d ago`}function d(a){let b=Math.max(0,Math.round(a/1e3));if(b<60)return`${b}s`;let c=Math.floor(b/60);return c<60?`${c}m ${String(b%60).padStart(2,"0")}s`:`${Math.floor(c/60)}h ${String(c%60).padStart(2,"0")}m`}a.s(["m",0,function(a,b){for(let a of b)try{let b=new URL(a);if("https:"!==b.protocol&&"http:"!==b.protocol||!b.host)continue;return b.host}catch{}return`${a}.vercel.app`},"W",0,function(a){return a?a.split(/\r?\n|\r/).map(a=>a.trim()).find(a=>""!==a)??"":""},"h",0,function(a,d){let e=d.getTime()-a.getTime();return e<36e5?c(a,d):(0,b.m)(a,d)?(0,b.U)(a):`${Math.max(1,Math.floor(e/864e5))} d ago`},"A",0,function(a,b){return"building"===a.state?`${d(b.getTime()-(a.buildingAt??a.createdAt).getTime())} elapsed`:a.readyAt&&a.buildingAt?d(a.readyAt.getTime()-a.buildingAt.getTime()):"—"},"v",0,function(a,c){return(0,b.m)(a,c)?(0,b.U)(a):`${(0,b.L)(a)} ${(0,b.U)(a)}`},"o",0,function(a,b){let c=Math.max(0,b.getTime()-a.getTime()),d=(a,b)=>`${a} ${b}${1===a?"":"s"}`;return c<36e5?d(Math.max(1,Math.floor(c/6e4)),"minute"):c<864e5?d(Math.floor(c/36e5),"hour"):d(Math.floor(c/864e5),"day")},"F",0,function(a){try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},"$",0,function(a,e){if(!a)return"—";if("building"===a.state)return`building ${d(e.getTime()-(a.buildingAt??a.createdAt).getTime())}`;let f=a.readyAt??a.createdAt;return"error"===a.state?`failed ${(0,b.m)(f,e)?(0,b.U)(f):c(f,e)}`:"canceled"===a.state?`canceled ${c(f,e)}`:c(f,e)},"H",0,function(a){let{day:c,month:d,year:e}=(0,b.e)(a);return`${c} ${d} ${e}`},"p",0,a=>null===a?"—":`${Math.round(a)} ms`,"C",0,a=>null===a?"—":`${(Math.floor(100*a+1e-6)/100).toFixed(2)}%`,"J",0,c,"_",0,a=>a?a.slice(0,7):"—"])}]})();
2
+
3
+ //# sourceMappingURL=src_lib_1nkahiclbn55q._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[513701,a=>{"use strict";var b=a.i(93321),c=a.i(258261),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(245710),h=a.i(968715),i=a.i(910697);let j=(a,b)=>"string"==typeof b?d.B`to_char(${a} at time zone ${b}, 'YYYY-MM-DD')`:d.B`to_char((${a} at time zone 'UTC') + ${d.B.raw(`interval '${Math.trunc(b.offsetMinutes)} minutes'`)}, 'YYYY-MM-DD')`,k=d.B.raw("2"),l=(a,b)=>d.B`(extract(epoch from date_bin(${d.B.raw(`'${a}'`)}::interval, ${b}, timestamptz '2000-01-01 00:00:00+00')) * 1000)::float8`,m=d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})`,n=d.B`percentile_cont(0.5) within group (order by ${f.checks.latencyMs})`,o=d.B`(count(*) filter (where not ${f.checks.ok}))::int`,p=(0,b.u)(f.checks.inMaintenance,!1),q=d.B`(count(*) filter (where ${f.checks.statusCode} >= 500))::int`,r=d.B`count(*)::int`;async function s(){let[a]=await (0,e.f)().select({h:(0,c.y)(f.rollupsHourly.hour)}).from(f.rollupsHourly);return a?.h?new Date(a.h.getTime()+36e5):null}async function t(a,b,c=(0,g.C)()){if(!a.length)return new Map;try{return await u(a,b,c)}catch(e){if(!function(a){let b=a;for(let a=0;a<4&&b&&"object"==typeof b;a++,b=b.cause){let{code:a,message:c}=b;if("22023"===a&&"string"==typeof c&&/time zone .* not recognized/i.test(c))return!0}return!1}(e))throw e;let d=globalThis;return d.__watchbellPgZoneWarned||(d.__watchbellPgZoneWarned=!0,console.warn(`Watchbell: the database doesn't know the time zone ${c}; uptime days use its current UTC offset instead.`)),u(a,b,{offsetMinutes:(0,g.c)(b)})}}async function u(a,c,l){let m=(0,g.y)((0,h.W)(c,h.F)[0]),n=await s(),o=new Date(Math.max(m.getTime(),n?.getTime()??0,c.getTime()-i.A.rawChecksMs)),p=j(f.rollupsHourly.hour,l),q=j(f.checks.at,l),[r,t]=await Promise.all([n?(0,e.f)().select({monitorId:f.rollupsHourly.monitorId,day:p,checks:d.B`sum(${f.rollupsHourly.checks})::int`,failures:d.B`sum(${f.rollupsHourly.failures})::int`,maint:d.B`sum(${f.rollupsHourly.maintenance})::int`}).from(f.rollupsHourly).where((0,b.b)((0,b.y)(f.rollupsHourly.monitorId,a),(0,b.B)(f.rollupsHourly.hour,m),(0,b.S)(f.rollupsHourly.hour,n))).groupBy(f.rollupsHourly.monitorId,k):Promise.resolve([]),(0,e.f)().select({monitorId:f.checks.monitorId,day:q,checks:d.B`(count(*) filter (where not ${f.checks.inMaintenance}))::int`,failures:d.B`(count(*) filter (where not ${f.checks.ok} and not ${f.checks.inMaintenance}))::int`,maint:d.B`(count(*) filter (where ${f.checks.inMaintenance}))::int`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,a),(0,b.B)(f.checks.at,o))).groupBy(f.checks.monitorId,k)]);return(0,h.C)([...r,...t])}async function v(a,c){if(!a.length)return new Map;let d=i.A.responseHours,g=(0,h.D)(c,36e5,d),j=l("1 hour",f.checks.at),k=(0,b.b)((0,b.y)(f.monitors.resourceId,a),(0,b.B)(f.checks.at,new Date(g)),p),[o,q]=await Promise.all([(0,e.f)().select({appId:f.monitors.resourceId,t:j,v:m}).from(f.checks).innerJoin(f.monitors,(0,b.u)(f.monitors.id,f.checks.monitorId)).where(k).groupBy(f.monitors.resourceId,j),(0,e.f)().select({appId:f.monitors.resourceId,v:m,m:n}).from(f.checks).innerJoin(f.monitors,(0,b.u)(f.monitors.id,f.checks.monitorId)).where(k).groupBy(f.monitors.resourceId)]);return new Map(a.map(a=>[a,{hourly:(0,h.f)(o.filter(b=>b.appId===a),g,36e5,d),p95:q.find(b=>b.appId===a)?.v??null,p50:q.find(b=>b.appId===a)?.m??null}]))}async function w(a,c){let d=i.A.metricBuckets,g=(0,h.D)(c,18e5,d),j=l("30 minutes",f.checks.at),k=await (0,e.f)().select({t:j,p95:m,p50:n,s5xx:q}).from(f.checks).innerJoin(f.monitors,(0,b.u)(f.monitors.id,f.checks.monitorId)).where((0,b.b)((0,b.u)(f.monitors.resourceId,a),(0,b.B)(f.checks.at,new Date(g)),p)).groupBy(j);return{response:(0,h.f)(k.map(a=>({t:a.t,v:a.p95})),g,18e5,d),median:(0,h.f)(k.map(a=>({t:a.t,v:a.p50})),g,18e5,d),errors:(0,h.f)(k.map(a=>({t:a.t,v:a.s5xx})),g,18e5,d,0),first:g,sizeMs:18e5}}async function x(a,c){return(0,e.f)().select({at:f.deployments.createdAtProvider,sha:f.deployments.commitSha,state:f.deployments.state}).from(f.deployments).where((0,b.b)((0,b.u)(f.deployments.resourceId,a),(0,b.u)(f.deployments.target,"production"),(0,b.B)(f.deployments.createdAtProvider,c))).orderBy(f.deployments.createdAtProvider).limit(200)}async function y(a){let c=i.A.healthBuckets,d=(0,h.D)(a,288e4,c),g=new Date(d),j=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),k=l("48 minutes",f.checks.at),n=l("48 minutes",f.deployments.createdAtProvider),[s,[t],u]=await Promise.all([(0,e.f)().select({t:k,checks:r,failures:o,s5xx:q,p95:m}).from(f.checks).innerJoin(f.monitors,(0,b.u)(f.monitors.id,f.checks.monitorId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(j,(0,b.B)(f.checks.at,g),p)).groupBy(k),(0,e.f)().select({checks:r,failures:o,s5xx:q,p95:m}).from(f.checks).innerJoin(f.monitors,(0,b.u)(f.monitors.id,f.checks.monitorId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(j,(0,b.B)(f.checks.at,g),p)),(0,e.f)().select({t:n,n:r}).from(f.deployments).innerJoin(f.resources,(0,b.u)(f.resources.id,f.deployments.resourceId)).where((0,b.b)(j,(0,b.B)(f.deployments.createdAtProvider,g))).groupBy(n)]),v=(a,b)=>a?(a-b)/a*100:null;return{uptime:t?v(t.checks,t.failures):null,p95:t?.p95??null,s5xx:t?.s5xx??0,deploys:u.reduce((a,b)=>a+b.n,0),series:{uptime:(0,h.f)(s.map(a=>({t:a.t,v:v(a.checks,a.failures)})),d,288e4,c),p95:(0,h.f)(s.map(a=>({t:a.t,v:a.p95})),d,288e4,c),s5xx:(0,h.f)(s.map(a=>({t:a.t,v:a.s5xx})),d,288e4,c,0),deploys:(0,h.f)(u.map(a=>({t:a.t,v:a.n})),d,288e4,c,0)}}}a.s(["P",0,w,"Q",0,v,"j",0,y,"_",0,t,"M",0,x])}];
2
+
3
+ //# sourceMappingURL=src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[579739,a=>{"use strict";let b,c=()=>b??=Promise.all([a.A(372153),a.A(106706)]);async function d(a){let[{currentDemoVisitor:b},{withDemoDb:d}]=await c(),e=await b();return d(e.seed,a,e.email)}async function e(){let[{readDemoVisitor:a},{withDemoDb:b}]=await c(),d=await a();d&&await b(d.seed,async()=>void 0,d.email)}a.s(["demoPglite",0,{query:(a,b,c)=>d(d=>d.query(a,b,c)),exec:(a,b)=>d(c=>c.exec(a,b)),transaction:a=>d(b=>b.transaction(a))},"openDemoDb",0,e])},106706,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__107gjehjdhw8p._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(601533)))}];
1
+ module.exports=[579739,a=>{"use strict";let b,c=()=>b??=Promise.all([a.A(372153),a.A(106706)]);async function d(a){let[{currentDemoVisitor:b},{withDemoDb:d}]=await c(),e=await b();return d(e.seed,a,e.email)}async function e(){let[{readDemoVisitor:a},{withDemoDb:b}]=await c(),d=await a();d&&await b(d.seed,async()=>void 0,d.email)}a.s(["demoPglite",0,{query:(a,b,c)=>d(d=>d.query(a,b,c)),exec:(a,b)=>d(c=>c.exec(a,b)),transaction:a=>d(b=>b.transaction(a))},"openDemoDb",0,e])},106706,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0eaqsql69fhf8._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(601533)))}];
2
2
 
3
- //# sourceMappingURL=src_lib_demo_07uq47fhms-3d._.js.map
3
+ //# sourceMappingURL=src_lib_demo_0ftmf3wmtezvl._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[631107,a=>{var b=a.i(245710);let c=a=>"number"==typeof a&&Number.isFinite(a)&&a>=0?a:null;a.s(["Z",0,(a,b)=>b.getTime()-a.getTime()>72e5,"O",0,function(a){let c=Math.max(0,...a.map(a=>a.views));return a.map(a=>({key:a.at.toISOString(),pct:0===a.views||0===c?0:Math.max(4,Math.round(a.views/c*100)),title:`${(0,b.U)(a.at)} \xb7 ${a.views} view${1===a.views?"":"s"}`}))},"G",0,function(a){let b=a&&"object"==typeof a?a.pageviews:null;if(!b||"object"!=typeof b)return null;let d="string"==typeof b.readAt?Date.parse(b.readAt):0/0;if(Number.isNaN(d)||"boolean"!=typeof b.enabled)return null;if(!b.enabled)return{enabled:!1,readAt:new Date(d)};let e=c(b.total24h),f=null===b.visitors24h?null:c(b.visitors24h);if(null===e||null===f&&null!==b.visitors24h)return null;let g=36e5*Math.floor(d/36e5),h=new Map;for(let a of Array.isArray(b.hourly)?b.hourly:[]){if(!Array.isArray(a))continue;let b="string"==typeof a[0]?Date.parse(a[0]):0/0,d=c(a[1]);if(Number.isNaN(b)||null===d)continue;let e=36e5*Math.floor(b/36e5);h.set(e,(h.get(e)??0)+d)}return{enabled:!0,total:e,visitors:f,hours:Array.from({length:24},(a,b)=>{let c=g-(23-b)*36e5;return{at:new Date(c),views:h.get(c)??0}}),readAt:new Date(d)}},"R",0,function(a){return!a.gone&&a.teamId&&a.accountOk?a.hasProductionDeploy?null:"Not read: this app has no production deployment yet.":"Not read: this app isn't in a connected Vercel account."},"a",0,function(a,b){return a.enabled?{enabled:!0,total24h:a.total,visitors24h:a.visitors,readAt:b.toISOString(),hourly:a.hourly.slice(-24).map(a=>[a.at.toISOString(),a.views])}:{enabled:!1,readAt:b.toISOString()}}])},968715,a=>{var b=a.i(245710);function c(a,c){let[d,e,f]=(0,b.x)(a).split("-").map(Number);return Array.from({length:c},(a,b)=>new Date(Date.UTC(d,e-1,f-(c-1-b))).toISOString().slice(0,10))}let d=Date.UTC(2e3,0,1);a.s(["F",0,90,"I",0,30,"W",0,c,"D",0,function(a,b,c){return d+Math.floor((a.getTime()-d)/b)*b-(c-1)*b},"w",0,function(a,b,d){return c(b,d).map(b=>a?.get(b))},"C",0,function(a){let b=new Map;for(let c of a){let a=b.get(c.monitorId);a||(a=new Map,b.set(c.monitorId,a));let d=a.get(c.day);a.set(c.day,{day:c.day,checks:(d?.checks??0)+c.checks,failures:(d?.failures??0)+c.failures,maint:(d?.maint??0)+(c.maint??0)})}return b},"f",0,function(a,b,c,d,e=null){let f=Array.from({length:d},()=>e);for(let e of a){let a=Math.round((e.t-b)/c);a>=0&&a<d&&(f[a]=e.v)}return f},"j",0,function(a){let b={ok:0,warn:0,err:0,maint:0,paused:0};for(let c of a)!c.appGone&&("ok"===c.state||"warn"===c.state||"err"===c.state||"maint"===c.state?b[c.state]++:("paused"===c.state||"off"===c.state)&&b.paused++);return b},"h",0,function(a,b,d=90,e){return c(b,d).map((b,c)=>{let f,g=a?.get(b),h=g&&(0!==g.checks||g.maint)?0===g.checks?"maint":0===g.failures?"ok":g.failures<3?"warn":"err":"none",i=0==(f=d-1-c)?"Today":1===f?"1 day ago":`${f} days ago`,j=e?.get(b),k=g&&"none"!==h?"maint"===h?`${i} \xb7 maintenance, not counted`:`${i} \xb7 ${g.failures} failed of ${g.checks}`:`${i} \xb7 no data`;return{day:b,tone:h,title:j?`${k} \xb7 deployed ${j}`:k,deploy:j}})},"Y",0,function(a){let b=0,c=0;for(let d of a)d&&(b+=d.checks,c+=d.failures);return b?(b-c)/b*100:null}])}]})();
2
+
3
+ //# sourceMappingURL=src_lib_view_14iq8onyfo7nd._.js.map