better-supabase 0.16.0 → 0.18.0

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 (578) hide show
  1. package/dist/{access-sql-B-MkVARa.js → access-sql-CNIgUqWf.js} +2 -0
  2. package/dist/{adapter-Dyks1lX1.js → adapter-CfuBICuG.js} +3 -1
  3. package/dist/{ai-schedules-BmkARmQ9.d.ts → ai-schedules-DzLh6BYI.d.ts} +1 -1
  4. package/dist/ai-sdk/agents/index.d.ts +2 -2
  5. package/dist/ai-sdk/memory/index.js +1 -1
  6. package/dist/{api-hHwieEfz.d.ts → api-B6zteBya.d.ts} +2 -2
  7. package/dist/{app-tables-D29Rahtg.js → app-tables-DyswUg6J.js} +11 -2
  8. package/dist/{app-tables-yMQ4ubyY.d.ts → app-tables-XwCviyhP.d.ts} +1 -1
  9. package/dist/astro/index.d.ts +5 -5
  10. package/dist/astro/index.js +5 -5
  11. package/dist/{attachments-aJYgdYtB.js → attachments-M-Dy79Ry.js} +9 -2
  12. package/dist/{authorization-HZdJCaVm.d.ts → authorization-IiE__z2m.d.ts} +187 -89
  13. package/dist/{automations-CIwRq7zm.js → automations-B5P6vTvk.js} +2 -2
  14. package/dist/{automations-CD1XlL2W.js → automations-BKjJpktQ.js} +1 -1
  15. package/dist/{automations-Bc2ue55V.js → automations-FCnWy387.js} +2 -2
  16. package/dist/better-result/index.d.ts +2 -2
  17. package/dist/{bind-JGCPGUJh.d.ts → bind-pu5TLrla.d.ts} +4 -4
  18. package/dist/{block-env-y65GF_px.d.ts → block-env-CA65ulTD.d.ts} +4 -4
  19. package/dist/blocks/access-requests/index.d.ts +1 -1
  20. package/dist/blocks/access-requests/index.js +1 -1
  21. package/dist/blocks/activities/index.d.ts +1 -1
  22. package/dist/blocks/activities/index.js +1 -1
  23. package/dist/blocks/agents/index.d.ts +1 -1
  24. package/dist/blocks/agents/index.js +1 -1
  25. package/dist/blocks/ai-cache/index.d.ts +1 -1
  26. package/dist/blocks/ai-cache/index.js +1 -1
  27. package/dist/blocks/ai-chat/index.d.ts +4 -4
  28. package/dist/blocks/ai-chat/index.js +1 -1
  29. package/dist/blocks/ai-files/index.d.ts +1 -1
  30. package/dist/blocks/ai-files/index.js +1 -1
  31. package/dist/blocks/ai-keys/index.d.ts +1 -1
  32. package/dist/blocks/ai-keys/index.js +1 -1
  33. package/dist/blocks/ai-schedules/index.d.ts +2 -2
  34. package/dist/blocks/ai-schedules/index.js +1 -1
  35. package/dist/blocks/announcements/index.d.ts +4 -4
  36. package/dist/blocks/announcements/index.js +1 -1
  37. package/dist/blocks/api-keys/index.d.ts +2 -2
  38. package/dist/blocks/api-keys/index.js +1 -1
  39. package/dist/blocks/approvals/index.d.ts +1 -1
  40. package/dist/blocks/approvals/index.js +1 -1
  41. package/dist/blocks/assets/index.d.ts +1 -1
  42. package/dist/blocks/assets/index.js +1 -1
  43. package/dist/blocks/assignment/index.d.ts +1 -1
  44. package/dist/blocks/attachments/index.d.ts +40 -4
  45. package/dist/blocks/attachments/index.js +42 -4
  46. package/dist/blocks/audit/index.d.ts +5 -5
  47. package/dist/blocks/audit/index.js +2 -2
  48. package/dist/blocks/automations/index.d.ts +3 -3
  49. package/dist/blocks/automations/index.js +1 -1
  50. package/dist/blocks/billable-time/index.d.ts +1 -1
  51. package/dist/blocks/billing/index.d.ts +3 -3
  52. package/dist/blocks/billing/index.js +1 -1
  53. package/dist/blocks/bookings/index.d.ts +2 -2
  54. package/dist/blocks/bookings/index.js +1 -1
  55. package/dist/blocks/bulk/index.d.ts +1 -1
  56. package/dist/blocks/bulk/index.js +1 -1
  57. package/dist/blocks/calendar/index.d.ts +2 -2
  58. package/dist/blocks/calendar/index.js +1 -1
  59. package/dist/blocks/catalog/index.d.ts +1 -1
  60. package/dist/blocks/catalog/index.js +1 -1
  61. package/dist/blocks/channels/index.d.ts +1 -1
  62. package/dist/blocks/collections/index.d.ts +1 -1
  63. package/dist/blocks/collections/index.js +1 -1
  64. package/dist/blocks/comments/index.d.ts +5 -5
  65. package/dist/blocks/comments/index.js +1 -1
  66. package/dist/blocks/compliance/index.d.ts +1 -1
  67. package/dist/blocks/compliance/index.js +1 -1
  68. package/dist/blocks/connectors/index.d.ts +1 -1
  69. package/dist/blocks/connectors/index.js +1 -1
  70. package/dist/blocks/contacts/index.d.ts +1 -1
  71. package/dist/blocks/contacts/index.js +1 -1
  72. package/dist/blocks/content/index.d.ts +2 -2
  73. package/dist/blocks/content/index.js +1 -1
  74. package/dist/blocks/contracts/index.d.ts +1 -1
  75. package/dist/blocks/contracts/index.js +1 -1
  76. package/dist/blocks/courses/index.d.ts +2 -2
  77. package/dist/blocks/courses/index.js +1 -1
  78. package/dist/blocks/created-by/index.d.ts +4 -3
  79. package/dist/blocks/created-by/index.js +2 -2
  80. package/dist/blocks/custom-fields/index.d.ts +1 -1
  81. package/dist/blocks/custom-fields/index.js +1 -1
  82. package/dist/blocks/data-lifecycle/index.d.ts +1 -1
  83. package/dist/blocks/data-lifecycle/index.js +1 -1
  84. package/dist/blocks/deals/index.d.ts +1 -1
  85. package/dist/blocks/deals/index.js +1 -1
  86. package/dist/blocks/dispatch/index.d.ts +2 -2
  87. package/dist/blocks/dispatch/index.js +1 -1
  88. package/dist/blocks/documents/index.d.ts +1 -1
  89. package/dist/blocks/documents/index.js +1 -1
  90. package/dist/blocks/domains/index.d.ts +1 -1
  91. package/dist/blocks/domains/index.js +1 -1
  92. package/dist/blocks/donations/index.d.ts +1 -1
  93. package/dist/blocks/donations/index.js +1 -1
  94. package/dist/blocks/drive/index.d.ts +1 -1
  95. package/dist/blocks/drive/index.js +2 -2
  96. package/dist/blocks/employees/index.d.ts +2 -2
  97. package/dist/blocks/employees/index.js +1 -1
  98. package/dist/blocks/enrichment/index.d.ts +1 -1
  99. package/dist/blocks/enrollments/index.d.ts +1 -1
  100. package/dist/blocks/enrollments/index.js +1 -1
  101. package/dist/blocks/entitlements/index.d.ts +3 -3
  102. package/dist/blocks/expenses/index.d.ts +1 -1
  103. package/dist/blocks/expenses/index.js +1 -1
  104. package/dist/blocks/field-history/index.d.ts +1 -1
  105. package/dist/blocks/flags/index.d.ts +1 -1
  106. package/dist/blocks/flags/index.js +1 -1
  107. package/dist/blocks/forecasts/index.d.ts +1 -1
  108. package/dist/blocks/forms/index.d.ts +2 -2
  109. package/dist/blocks/forms/index.js +1 -1
  110. package/dist/blocks/goals/index.d.ts +1 -1
  111. package/dist/blocks/goals/index.js +1 -1
  112. package/dist/blocks/guests/index.d.ts +1 -1
  113. package/dist/blocks/hiring/index.d.ts +1 -1
  114. package/dist/blocks/hiring/index.js +1 -1
  115. package/dist/blocks/identities/index.d.ts +1 -1
  116. package/dist/blocks/identities/index.js +1 -1
  117. package/dist/blocks/imports/index.d.ts +1 -1
  118. package/dist/blocks/inbox/index.d.ts +5 -5
  119. package/dist/blocks/inbox/index.js +1 -1
  120. package/dist/blocks/incidents/index.d.ts +1 -1
  121. package/dist/blocks/incidents/index.js +1 -1
  122. package/dist/blocks/index.d.ts +4 -4
  123. package/dist/blocks/index.js +1 -1
  124. package/dist/blocks/inventory/index.d.ts +1 -1
  125. package/dist/blocks/inventory/index.js +1 -1
  126. package/dist/blocks/invoices/index.d.ts +1 -1
  127. package/dist/blocks/invoices/index.js +1 -1
  128. package/dist/blocks/knowledge/index.d.ts +1 -1
  129. package/dist/blocks/knowledge/index.js +1 -1
  130. package/dist/blocks/lead-scoring/index.d.ts +2 -2
  131. package/dist/blocks/lead-scoring/index.js +1 -1
  132. package/dist/blocks/leases/index.d.ts +1 -1
  133. package/dist/blocks/leases/index.js +1 -1
  134. package/dist/blocks/leave/index.d.ts +1 -1
  135. package/dist/blocks/leave/index.js +1 -1
  136. package/dist/blocks/ledger/index.d.ts +1 -1
  137. package/dist/blocks/mail-sync/index.d.ts +2 -2
  138. package/dist/blocks/mail-sync/index.js +1 -1
  139. package/dist/blocks/memberships/index.d.ts +3 -3
  140. package/dist/blocks/memberships/index.js +1 -1
  141. package/dist/blocks/memory/index.d.ts +1 -1
  142. package/dist/blocks/memory/index.js +1 -1
  143. package/dist/blocks/messaging/index.d.ts +5 -5
  144. package/dist/blocks/messaging/index.js +1 -1
  145. package/dist/blocks/metrics/index.d.ts +1 -1
  146. package/dist/blocks/metrics/index.js +1 -1
  147. package/dist/blocks/mfa/index.d.ts +2 -2
  148. package/dist/blocks/moderation/index.d.ts +1 -1
  149. package/dist/blocks/moderation/index.js +1 -1
  150. package/dist/blocks/notifications/index.d.ts +17 -6
  151. package/dist/blocks/notifications/index.js +110 -40
  152. package/dist/blocks/numbering/index.d.ts +1 -1
  153. package/dist/blocks/numbering/index.js +1 -1
  154. package/dist/blocks/oauth-server/index.d.ts +1 -1
  155. package/dist/blocks/oauth-server/index.js +1 -1
  156. package/dist/blocks/onboarding/index.d.ts +2 -2
  157. package/dist/blocks/onboarding/index.js +1 -1
  158. package/dist/blocks/orders/index.d.ts +2 -2
  159. package/dist/blocks/orders/index.js +1 -1
  160. package/dist/blocks/organizations/index.d.ts +38 -3
  161. package/dist/blocks/organizations/index.js +50 -5
  162. package/dist/blocks/outbox/index.d.ts +1 -1
  163. package/dist/blocks/outbox/index.js +1 -1
  164. package/dist/blocks/passes/index.d.ts +2 -2
  165. package/dist/blocks/passes/index.js +1 -1
  166. package/dist/blocks/permissions/index.d.ts +4 -4
  167. package/dist/blocks/permissions/index.js +2 -2
  168. package/dist/blocks/pipelines/index.d.ts +1 -1
  169. package/dist/blocks/pipelines/index.js +1 -1
  170. package/dist/blocks/posts/index.d.ts +2 -2
  171. package/dist/blocks/posts/index.js +1 -1
  172. package/dist/blocks/profiles/index.d.ts +1 -1
  173. package/dist/blocks/profiles/index.js +1 -1
  174. package/dist/blocks/promotions/index.d.ts +1 -1
  175. package/dist/blocks/promotions/index.js +1 -1
  176. package/dist/blocks/push/index.d.ts +76 -10
  177. package/dist/blocks/push/index.js +172 -43
  178. package/dist/blocks/queue/index.d.ts +1 -1
  179. package/dist/blocks/queue/index.js +1 -1
  180. package/dist/blocks/quotes/index.d.ts +1 -1
  181. package/dist/blocks/quotes/index.js +1 -1
  182. package/dist/blocks/rank/index.d.ts +1 -1
  183. package/dist/blocks/reactions/index.d.ts +4 -4
  184. package/dist/blocks/reactions/index.js +1 -1
  185. package/dist/blocks/relations/index.d.ts +1 -1
  186. package/dist/blocks/relations/index.js +1 -1
  187. package/dist/blocks/reminders/index.d.ts +1 -1
  188. package/dist/blocks/reminders/index.js +1 -1
  189. package/dist/blocks/reviews/index.d.ts +1 -1
  190. package/dist/blocks/reviews/index.js +1 -1
  191. package/dist/blocks/saved-views/index.d.ts +3 -3
  192. package/dist/blocks/saved-views/index.js +1 -1
  193. package/dist/blocks/scores/index.d.ts +1 -1
  194. package/dist/blocks/scores/index.js +1 -1
  195. package/dist/blocks/search/index.d.ts +3 -3
  196. package/dist/blocks/search/index.js +1 -1
  197. package/dist/blocks/security-events/index.d.ts +1 -1
  198. package/dist/blocks/security-events/index.js +1 -1
  199. package/dist/blocks/segments/index.d.ts +2 -2
  200. package/dist/blocks/segments/index.js +1 -1
  201. package/dist/blocks/sequences/index.d.ts +2 -2
  202. package/dist/blocks/sequences/index.js +1 -1
  203. package/dist/blocks/service-accounts/index.d.ts +1 -1
  204. package/dist/blocks/service-accounts/index.js +1 -1
  205. package/dist/blocks/sessions/index.d.ts +2 -2
  206. package/dist/blocks/sessions/index.js +1 -1
  207. package/dist/blocks/settings/index.d.ts +2 -2
  208. package/dist/blocks/settings/index.js +1 -1
  209. package/dist/blocks/share-links/index.d.ts +1 -1
  210. package/dist/blocks/share-links/index.js +1 -1
  211. package/dist/blocks/shipments/index.d.ts +2 -2
  212. package/dist/blocks/shipments/index.js +1 -1
  213. package/dist/blocks/signatures/index.d.ts +2 -2
  214. package/dist/blocks/signatures/index.js +1 -1
  215. package/dist/blocks/signing-keys/index.d.ts +1 -1
  216. package/dist/blocks/signing-keys/index.js +1 -1
  217. package/dist/blocks/sla/index.d.ts +1 -1
  218. package/dist/blocks/sla/index.js +1 -1
  219. package/dist/blocks/sso/index.d.ts +1 -1
  220. package/dist/blocks/sso/index.js +1 -1
  221. package/dist/blocks/state-machine/index.d.ts +1 -1
  222. package/dist/blocks/state-machine/index.js +1 -1
  223. package/dist/blocks/subjects/index.d.ts +2 -2
  224. package/dist/blocks/tags/index.d.ts +2 -2
  225. package/dist/blocks/tags/index.js +1 -1
  226. package/dist/blocks/tasks/index.d.ts +2 -2
  227. package/dist/blocks/tasks/index.js +1 -1
  228. package/dist/blocks/teams/index.d.ts +1 -1
  229. package/dist/blocks/teams/index.js +1 -1
  230. package/dist/blocks/templates/index.d.ts +2 -2
  231. package/dist/blocks/templates/index.js +1 -1
  232. package/dist/blocks/time-tracking/index.d.ts +1 -1
  233. package/dist/blocks/time-tracking/index.js +1 -1
  234. package/dist/blocks/timeline/index.d.ts +3 -3
  235. package/dist/blocks/trash/index.d.ts +1 -1
  236. package/dist/blocks/trash/index.js +1 -1
  237. package/dist/blocks/undo/index.d.ts +2 -2
  238. package/dist/blocks/updated-at/index.d.ts +7 -4
  239. package/dist/blocks/updated-at/index.js +2 -2
  240. package/dist/blocks/usage/index.d.ts +2 -2
  241. package/dist/blocks/usage/index.js +1 -1
  242. package/dist/blocks/vercel-marketplace/index.d.ts +1 -1
  243. package/dist/blocks/vercel-marketplace/index.js +1 -1
  244. package/dist/blocks/versions/index.d.ts +1 -1
  245. package/dist/blocks/versions/index.js +1 -1
  246. package/dist/blocks/waitlist/index.d.ts +1 -1
  247. package/dist/blocks/waitlist/index.js +1 -1
  248. package/dist/blocks/webhooks/index.d.ts +2 -2
  249. package/dist/blocks/webhooks/index.js +1 -1
  250. package/dist/blocks/workflow-editor/index.d.ts +4 -4
  251. package/dist/blocks/workflow-editor/index.js +1 -1
  252. package/dist/blocks/workflows/index.d.ts +4 -4
  253. package/dist/{channel-BjvGO39m.d.ts → channel-JcMd5lNP.d.ts} +30 -2
  254. package/dist/cli/{add-D7TkPdco.js → add-B1S3yK4L.js} +20 -13
  255. package/dist/cli/add-BQPJnapO.js +1 -0
  256. package/dist/cli/{add-I8OW-qJH.js → add-D7YIXslp.js} +2 -2
  257. package/dist/cli/{backfill-DIz5DnlQ.js → backfill-BwkyNhlC.js} +4 -4
  258. package/dist/cli/bin.js +1 -1
  259. package/dist/cli/{blocks-Bp5RPoft.js → blocks-CBqENu3C.js} +1 -1
  260. package/dist/cli/{blocks-xk-SE8gS.js → blocks-DDm1Zc2S.js} +2 -2
  261. package/dist/cli/{cache-AznIssjI.js → cache-DE2IH1-C.js} +1 -1
  262. package/dist/cli/{codemod-Aewxza6i.js → codemod-OHKhVV-v.js} +4 -4
  263. package/dist/cli/{command-CQ61x6gN.js → command-BWEEXmtz.js} +20 -0
  264. package/dist/cli/{completion-Dlu5AdUW.js → completion-8EDK21xj.js} +1 -1
  265. package/dist/cli/{completion-BwI0_Ap5.js → completion-BfnKI4QZ.js} +2 -2
  266. package/dist/cli/{completion-2Y3D_eNu.js → completion-Bt7LMypX.js} +2 -2
  267. package/dist/cli/{config-9t5ec_N7.js → config-BJSqMi04.js} +20 -6
  268. package/dist/cli/{config-CBqkQjjN.js → config-BlfVh0IP.js} +1 -1
  269. package/dist/cli/{config-CPux9Wa7.js → config-WKDixoGK.js} +1 -1
  270. package/dist/cli/{content-mapper-DCrz6OIv.js → content-mapper-CaygHH_k.js} +2 -2
  271. package/dist/cli/{db-DrBI_HNv.js → db-DYU5hUcd.js} +3 -3
  272. package/dist/cli/{doctor-DkOSLPEQ.js → doctor-D_nrsd9E.js} +186 -143
  273. package/dist/cli/{env-BBl5L8Bf.js → env-BCgVZkcb.js} +1 -1
  274. package/dist/cli/env-xhwXk5Ri.js +1 -0
  275. package/dist/cli/{gen-CFkYUnWq.js → gen-D7gMEwvg.js} +22 -15
  276. package/dist/cli/index.d.ts +2 -2
  277. package/dist/cli/index.js +8 -8
  278. package/dist/cli/{init-CHj9ad4S.js → init-ch-HWJyp.js} +7 -7
  279. package/dist/cli/{keys-DGEpMbeB.js → keys-CbaL0lnw.js} +1 -1
  280. package/dist/cli/{live-DGdLR41j.js → live-B38ePuRS.js} +2 -2
  281. package/dist/cli/{mcp-BZno503V.js → mcp-P9RP2SJ3.js} +3 -3
  282. package/dist/cli/{metadata-BfgHMe4q.js → metadata-BTihErEc.js} +3 -3
  283. package/dist/cli/{migration-safety-BnnXPAro.js → migration-safety-DYo1vVWC.js} +2 -2
  284. package/dist/cli/{module-migration-O_IxewFs.js → migrations-BoIyGczt.js} +3 -113
  285. package/dist/cli/module-migration-DXvo0EqU.js +119 -0
  286. package/dist/cli/{moved-CsfDQcyk.js → moved-DVwgE8lV.js} +1 -1
  287. package/dist/cli/{parse-B9Iv_-Pf.js → parse-B079x40m.js} +1 -1
  288. package/dist/cli/powersync-D-0yV_L_.js +283 -0
  289. package/dist/cli/powersync-DXVsKkAu.js +1 -0
  290. package/dist/cli/{print-DosQIFSy.js → print-CRon4lXf.js} +2 -1
  291. package/dist/cli/{remove-DK2G_KHm.js → remove-D89s99ha.js} +6 -6
  292. package/dist/cli/{render-5y5a1QZr.js → render-BJF9ytUi.js} +15 -6
  293. package/dist/cli/{run-BXx6D1aR.js → run-DmOTMa44.js} +2 -2
  294. package/dist/cli/{run-Bs4OKdDI.js → run-jeplMBOK.js} +29 -10
  295. package/dist/cli/{run-MRET30vh.js → run-x9ZY4Tm0.js} +38 -37
  296. package/dist/cli/{seed-Cz8PcXeT.js → seed-D9mt8bnW.js} +3 -3
  297. package/dist/cli/seed-EPO6AvLG.js +1 -0
  298. package/dist/cli/{shared-BLqbvY2x.js → shared-B38Chjgd.js} +1 -1
  299. package/dist/cli/{skills-toUan_OV.js → skills-FXAVPLzp.js} +1 -1
  300. package/dist/cli/{snapshot-uTUlEzY2.js → snapshot-BXmU3IXN.js} +3 -3
  301. package/dist/cli/{source-args-IpJRJO5t.js → source-args-DlckPVje.js} +1 -1
  302. package/dist/cli/{source-D2gJHKwC.js → source-irttnsEb.js} +1 -1
  303. package/dist/cli/{spec-Cm2einTO.js → spec-CDxfokey.js} +3 -3
  304. package/dist/cli/{spec-DUjOtciN.js → spec-DzD5wMVF.js} +1 -1
  305. package/dist/cli/{sql-layout-lUWenjJw.js → sql-layout-D8QrNvt4.js} +2 -2
  306. package/dist/cli/{stack-CWEHdO0b.js → stack-DgASZP0K.js} +1 -1
  307. package/dist/cli/{sync-CZMRB3aU.js → sync-s1iKFIos.js} +3 -2
  308. package/dist/cli/{upgrade-BFEIMC7U.js → upgrade-B4FPlK-_.js} +4 -3
  309. package/dist/cli/{upgrade-fVsJniXm.js → upgrade-CluxP3JJ.js} +3 -3
  310. package/dist/cli/{version-B2Dr6VmJ.js → version-TgFM8sOd.js} +1 -1
  311. package/dist/client/index.d.ts +5 -5
  312. package/dist/client/native/index.d.ts +4 -4
  313. package/dist/{composite-CfYyU3vs.d.ts → composite-C-8A8qzi.d.ts} +4 -4
  314. package/dist/{composite-B3TIjId4.js → composite-D24L5RIY.js} +2 -2
  315. package/dist/config/index.d.ts +3 -3
  316. package/dist/config/index.js +4 -4
  317. package/dist/{config-CcehOvbz.js → config-CD2OGfCG.js} +2 -1
  318. package/dist/{config-DWGgUQCh.js → config-mbVyJwSc.js} +7 -6
  319. package/dist/{context-8kb8m5uO.d.ts → context-D24k1Cpc.d.ts} +36 -4
  320. package/dist/{controller-BW-5Opig.d.ts → controller-BR7CZ1R9.d.ts} +1 -1
  321. package/dist/{conversion-3iv2r7YC.d.ts → conversion-BgtOfTaS.d.ts} +1 -1
  322. package/dist/create/index.d.ts +2 -2
  323. package/dist/create/index.js +5 -5
  324. package/dist/{define-C5AcEkEJ.d.ts → define-Cgru0_kF.d.ts} +1 -1
  325. package/dist/{define-block-C1RHXz7L.d.ts → define-block-CJWiDWa5.d.ts} +11 -4
  326. package/dist/edge/index.d.ts +7 -7
  327. package/dist/edge/index.js +7 -7
  328. package/dist/elysia/index.d.ts +1 -1
  329. package/dist/elysia/index.js +1 -1
  330. package/dist/{email-tt2QqiSc.d.ts → email-B3YxEzwC.d.ts} +1 -1
  331. package/dist/{entitlements-sO977DO-.d.ts → entitlements-DHcNt1aF.d.ts} +1 -1
  332. package/dist/{events-SqJLbb8q.js → events-DuLhzjP6.js} +2 -0
  333. package/dist/{executor-BcNWcD-4.d.ts → executor-BWFfz0ik.d.ts} +2 -2
  334. package/dist/expo/index.d.ts +3 -3
  335. package/dist/expo/index.js +3 -3
  336. package/dist/{extension-B-lajjex.js → extension-DTaHjwdc.js} +3 -2
  337. package/dist/{extension-B0EjCYhO.js → extension-mGylYROs.js} +2 -10
  338. package/dist/{field-errors-Dt86dCKk.d.ts → field-errors-DucQdLl7.d.ts} +6 -6
  339. package/dist/{framework-BozTXRzt.js → framework-CNhTg0th.js} +1 -1
  340. package/dist/{framework-BGdZVyPL.d.ts → framework-x9Y4uB1q.d.ts} +5 -5
  341. package/dist/h3/index.d.ts +1 -1
  342. package/dist/h3/index.js +1 -1
  343. package/dist/h3/v1/index.d.ts +1 -1
  344. package/dist/h3/v1/index.js +1 -1
  345. package/dist/hono/index.d.ts +6 -6
  346. package/dist/hono/index.js +7 -6
  347. package/dist/{index-Cc4mIQS8.d.ts → index-4WT_uRRL.d.ts} +20 -4
  348. package/dist/{index-CENWq3zb.d.ts → index-BAcQz5DS.d.ts} +1 -1
  349. package/dist/{index-CTu-3fJB.d.ts → index-BH3NYExp.d.ts} +3 -3
  350. package/dist/{index-CcAmFNVi.d.ts → index-C0t-vNIt.d.ts} +2 -2
  351. package/dist/{index-DZKCc2WM.d.ts → index-C6ruLtyx.d.ts} +3 -3
  352. package/dist/{index-Craf712U.d.ts → index-XAyzdLns.d.ts} +9 -9
  353. package/dist/{index-BxYOB1Oc.d.ts → index-iRkFvJ7J.d.ts} +1 -1
  354. package/dist/index.d.ts +2 -2
  355. package/dist/index.js +1 -1
  356. package/dist/{instances-BHjCZoF8.js → instances-DDt7NdVl.js} +1 -1
  357. package/dist/{kit-DOwKpSkA.d.ts → kit-CVgQCIBO.d.ts} +1 -1
  358. package/dist/{kit-5l-o8RxL.js → kit-DhlB-vv_.js} +1 -1
  359. package/dist/list/index.d.ts +1 -1
  360. package/dist/{list-query-DYhgRTd5.d.ts → list-query-DxjuIHEL.d.ts} +1 -1
  361. package/dist/mapper/bin.js +7 -6
  362. package/dist/mcp/index.d.ts +11 -5
  363. package/dist/mcp/index.js +6 -6
  364. package/dist/mcp/sdk/index.d.ts +3 -3
  365. package/dist/mcp/sdk/index.js +2 -2
  366. package/dist/{methods-B3o7BFOW.js → methods-Cund9ZBe.js} +1 -1
  367. package/dist/nestjs/index.d.ts +2 -2
  368. package/dist/nestjs/index.js +1 -1
  369. package/dist/next/index.d.ts +16 -16
  370. package/dist/next/index.js +6 -6
  371. package/dist/node/index.d.ts +2 -2
  372. package/dist/node/index.js +1 -1
  373. package/dist/{operations-CSc_IsHO.d.ts → operations-CAjMgNr9.d.ts} +1 -1
  374. package/dist/{options-CK5WiFwG.js → options-3OYOU56e.js} +1 -1
  375. package/dist/{options-xD4_FRUq.js → options-56zYYXxc.js} +1 -1
  376. package/dist/{options-_F-enoBs.d.ts → options-5WvWOkAm.d.ts} +1 -1
  377. package/dist/{options-SViK_2x2.js → options-62woPFn3.js} +1 -1
  378. package/dist/{options-1GgseJq5.js → options-7ixoOoap.js} +1 -1
  379. package/dist/{options-BZsoPJGX.js → options-9dSU5RML.js} +2 -2
  380. package/dist/{options-y_-AkVCs.d.ts → options-B0YZtAkb.d.ts} +1 -1
  381. package/dist/{options-HLwOuF2H.js → options-B2Kz_tCx.js} +2 -2
  382. package/dist/{options-CEMawFrr.js → options-B685YSzQ.js} +1 -1
  383. package/dist/{options-DWbA9buW.js → options-B692WoK6.js} +2 -2
  384. package/dist/options-BHU1wc74.js +5 -0
  385. package/dist/{options-CPK2nQER.js → options-BHy0Z5Zd.js} +2 -2
  386. package/dist/{options-Fz6xqu-b.js → options-BKDxrPvE.js} +2 -2
  387. package/dist/{options-BVg58avP.js → options-BLfymS4s.js} +2 -2
  388. package/dist/{options-CYV4iZiQ.js → options-BOCRbzh3.js} +1 -1
  389. package/dist/{options-C-dQHH5-.js → options-BQWJqwHO.js} +3 -2
  390. package/dist/{options-Cl9Ag2Pt.js → options-BQunK6_Y.js} +2 -2
  391. package/dist/{options-CljDnQt2.js → options-BQyrZjwM.js} +4 -1
  392. package/dist/options-BR9xTHZW.js +5 -0
  393. package/dist/{options-D40CQzji.js → options-BRUdd5jY.js} +1 -1
  394. package/dist/{options-CsGl5BLH.d.ts → options-BTmaRzx2.d.ts} +13 -5
  395. package/dist/{options-Li1Dyu88.d.ts → options-BUCQYAeJ.d.ts} +2 -2
  396. package/dist/{options-DChZoVfs.d.ts → options-B_NrjVDt.d.ts} +1 -0
  397. package/dist/{options-B5BU2Yg7.js → options-BawzwlmC.js} +2 -2
  398. package/dist/{options-BlzSfWxC.d.ts → options-BbLDAp7G.d.ts} +2 -2
  399. package/dist/{options-DTDxFT6J.js → options-Bc4xz5jQ.js} +2 -2
  400. package/dist/options-BfFC4iFE.js +8 -0
  401. package/dist/{options-Br1Xi2Hw.js → options-BfPsL7E2.js} +1 -1
  402. package/dist/{options-DYBQ973I.js → options-Bfmwwc78.js} +1 -1
  403. package/dist/{options-c5WCsky5.js → options-BhsdveDk.js} +2 -2
  404. package/dist/{options-B5woz53h.js → options-BomoTH-8.js} +2 -2
  405. package/dist/{options-DeNejBtq.js → options-BtjkzIVh.js} +1 -1
  406. package/dist/options-Bvi9bl4H.js +5 -0
  407. package/dist/{options-IHPg8ZoA.js → options-BwKNmaJo.js} +2 -2
  408. package/dist/{options-CtUUU71w.js → options-BxpLtyk-.js} +4 -6
  409. package/dist/{options-D_bBVCXg.js → options-BzB2QxL3.js} +1 -1
  410. package/dist/{options-CmraJhd9.js → options-C078wBP0.js} +1 -1
  411. package/dist/options-C1-pwEqm.js +5 -0
  412. package/dist/{options-BZOliZvb.js → options-C3AdsFJ6.js} +2 -2
  413. package/dist/options-C7C5OhmL.d.ts +8 -0
  414. package/dist/{options-B2swWnJW.js → options-C87u6eSa.js} +3 -2
  415. package/dist/{options-CVSWgZpY.js → options-CBAEGxwS.js} +1 -1
  416. package/dist/{options-CM6-18FQ.d.ts → options-CDSCkYxu.d.ts} +1 -0
  417. package/dist/{options-9gvPo1BC.js → options-CDUr8zzX.js} +1 -1
  418. package/dist/{options-DMR68VAC.js → options-CFjGxfa8.js} +2 -2
  419. package/dist/{options-Bf96aVk5.js → options-CI6P0xhV.js} +1 -1
  420. package/dist/{options-B5VUf4IT.js → options-CJFMK9A_.js} +1 -1
  421. package/dist/{options-CRz8Ht_4.js → options-CLpgx7en.js} +3 -2
  422. package/dist/{options-BesyRBnM.js → options-CTXHj9zr.js} +2 -2
  423. package/dist/{options-D2d1fFuw.js → options-CTl8T88w.js} +1 -1
  424. package/dist/{options-C3RgtOLo.js → options-CTv-xmbA.js} +2 -2
  425. package/dist/{options-Bpl-WFPk.js → options-CUIOOv4z.js} +1 -1
  426. package/dist/{options-o2kfYU2x.js → options-CZDmtsbV.js} +2 -2
  427. package/dist/{options-CF7nRWXS.js → options-CZTscdPB.js} +1 -1
  428. package/dist/{options-BlncUmIc.js → options-CZdKndeo.js} +2 -2
  429. package/dist/{options-DplE18Ko.d.ts → options-C_7g9TTq.d.ts} +1 -1
  430. package/dist/{options-C_pb1Nd3.js → options-Cb2FOFj5.js} +1 -1
  431. package/dist/{options-t_O5ldT6.js → options-CbOstLa7.js} +2 -2
  432. package/dist/{options-Bt0bYMLl.js → options-CcXgWlvm.js} +2 -2
  433. package/dist/{options-BMjcVuaI.js → options-CfVPctAw.js} +7 -0
  434. package/dist/{options-DWpz3V3F.js → options-ChiL-4ZS.js} +2 -2
  435. package/dist/{options-E7KcmHQv.js → options-Cjgaf8ub.js} +2 -2
  436. package/dist/{options-DrSkIBCD.js → options-CoSPgWKy.js} +1 -1
  437. package/dist/{options-Bp7sgKvl.js → options-CpZ2HlSU.js} +5 -3
  438. package/dist/{options-CN7PHkhU.js → options-CsSe8Nba.js} +1 -1
  439. package/dist/{options-B9q8CROT.js → options-CsvJR-r2.js} +1 -1
  440. package/dist/{options-oeAq4Ho5.js → options-Cucv6sWP.js} +2 -2
  441. package/dist/{options-BOOEzor9.js → options-CyjL9lTf.js} +2 -2
  442. package/dist/{options-pOVWwbAK.d.ts → options-D-OOO9V2.d.ts} +1 -1
  443. package/dist/{options-nFzfgtA6.js → options-D0Y6ZMe8.js} +1 -1
  444. package/dist/{options-BnZS7IK-.js → options-D0sj5abR.js} +2 -2
  445. package/dist/{options-0qvUckqt.js → options-D2s7fT1s.js} +2 -2
  446. package/dist/{options-BjtrC7o6.js → options-D32-YxnO.js} +1 -1
  447. package/dist/{options-B0EJULm5.js → options-D610Fa6T.js} +2 -2
  448. package/dist/{options-BvtnxHfK.js → options-D96dScev.js} +1 -1
  449. package/dist/{options-DgQo80Xh.js → options-DFpyP1bg.js} +2 -2
  450. package/dist/{options-BYOtaF7w.js → options-DJEcS4DX.js} +1 -1
  451. package/dist/{options-DPgdAXO5.js → options-DJbN3bi9.js} +2 -2
  452. package/dist/{options-EsUh744F.js → options-DKoQoRCy.js} +2 -2
  453. package/dist/{options-CvD9vNvx.js → options-DM1qaMMQ.js} +1 -1
  454. package/dist/{options-eBPsk4WI.js → options-DNgSwhsm.js} +2 -2
  455. package/dist/{options-2EMA_x6_.js → options-DOIwzRXL.js} +2 -2
  456. package/dist/{options-D6as77gU.d.ts → options-DRIgHh4O.d.ts} +2 -2
  457. package/dist/{options-DDzggjN7.js → options-DRrZmJyI.js} +2 -2
  458. package/dist/{options-DJ-aYPVN.js → options-DUMUsvml.js} +2 -2
  459. package/dist/{options-Cp0HyUEk.js → options-DWwL5Kaz.js} +1 -1
  460. package/dist/{options-BCrqe3HH.js → options-DZHZYlpD.js} +1 -1
  461. package/dist/{options-BQIYfx9F.js → options-DZLkeqWn.js} +2 -2
  462. package/dist/{options-RKYdmIdV.js → options-DZRpXKQE.js} +1 -1
  463. package/dist/{options-D0G06Zm9.js → options-D_9Vxx7f.js} +2 -2
  464. package/dist/{options-BMGClqoa.js → options-DcHl59RC.js} +1 -1
  465. package/dist/{options-CW9wTqOk.js → options-Dcaql09y.js} +1 -1
  466. package/dist/{options-CXFz0xxS.js → options-DcnBNYmV.js} +1 -1
  467. package/dist/{options-21s0dpnX.js → options-DdpM-fiP.js} +2 -2
  468. package/dist/{options-BbnPv6p7.js → options-DhdazgTZ.js} +2 -2
  469. package/dist/{options-C239TLRF.js → options-Dpy-Ruo-.js} +1 -1
  470. package/dist/{options-DWVYM8P0.d.ts → options-DsVuVRH3.d.ts} +1 -1
  471. package/dist/{options-BlOPivzq.js → options-DtAJxfHS.js} +1 -1
  472. package/dist/{options-DXnBN2E7.js → options-Dz9Yo52Z.js} +2 -2
  473. package/dist/{options-DcOx8_3X.d.ts → options-HnfETSHr.d.ts} +1 -1
  474. package/dist/{options-CoX6VKGb.js → options-LqUXTpML.js} +1 -1
  475. package/dist/options-MsloEAIB.js +5 -0
  476. package/dist/{options-DCduTMST.js → options-P2FxqYpd.js} +2 -2
  477. package/dist/options-_1gAIMq7.d.ts +60 -0
  478. package/dist/{options-B0FcEKtH.js → options-aT89JqlB.js} +1 -1
  479. package/dist/{options-Cyu0hgmN.js → options-cVKZu9b0.js} +2 -2
  480. package/dist/options-fMxhtuVR.js +5 -0
  481. package/dist/{options-BxcFLL1G.js → options-fkShrmGQ.js} +2 -2
  482. package/dist/{options-Ctac2R0Q.js → options-gUvfr3no.js} +2 -2
  483. package/dist/{options-DNKyN5uq.js → options-hynwKWuf.js} +2 -2
  484. package/dist/{options-CkScQRJR.js → options-lsxJYfYx.js} +2 -2
  485. package/dist/{options-CyAhRKKm.d.ts → options-o5wCw8H7.d.ts} +2 -2
  486. package/dist/{options-DARkpk2P.js → options-p49DFg3H.js} +2 -2
  487. package/dist/{options-zkyhM3qi.js → options-pYNpXKcg.js} +1 -1
  488. package/dist/{options-Cqq2jUww.js → options-qtETCHzW.js} +2 -2
  489. package/dist/options-rnKlqYEr.js +5 -0
  490. package/dist/{options-KV84gAxl.js → options-sU_zGkiV.js} +2 -2
  491. package/dist/{options-BfLmA375.js → options-xq4MXG1M.js} +2 -2
  492. package/dist/{options-BA6jV6py.js → options-zzlznRA7.js} +2 -2
  493. package/dist/orpc/index.d.ts +21 -10
  494. package/dist/orpc/index.js +60 -31
  495. package/dist/otel/index.d.ts +1 -1
  496. package/dist/otel/index.js +5 -5
  497. package/dist/{ports-mObLgH1z.d.ts → ports-g0H1Kzwr.d.ts} +1 -1
  498. package/dist/powersync/index.d.ts +136 -3
  499. package/dist/powersync/index.js +333 -1
  500. package/dist/preset/index.d.ts +3 -3
  501. package/dist/preset/index.js +3 -3
  502. package/dist/{preset-CsHnIBJF.js → preset-B3CukUhu.js} +4 -4
  503. package/dist/{push-token-BSSvsWXZ.d.ts → push-token-Cl2EihRc.d.ts} +1 -1
  504. package/dist/query/index.d.ts +1 -1
  505. package/dist/react/index.d.ts +5 -5
  506. package/dist/react/native/index.d.ts +1 -1
  507. package/dist/react/server.d.ts +6 -6
  508. package/dist/react-router/index.d.ts +5 -5
  509. package/dist/react-router/index.js +5 -5
  510. package/dist/realtime/index.d.ts +3 -3
  511. package/dist/realtime/index.js +1 -1
  512. package/dist/{record-form-D9ILuVtA.d.ts → record-form-zMwz0Ayt.d.ts} +1 -1
  513. package/dist/records/index.d.ts +7 -7
  514. package/dist/{refusal-ByBZcm0V.js → refusal-D48CMqpQ.js} +2 -2
  515. package/dist/{refusal-CSntB_x8.d.ts → refusal-OrlI3g4H.d.ts} +1 -1
  516. package/dist/{resource-DV2GC2dB.js → resource-R3KToNze.js} +1 -1
  517. package/dist/{resource-execute-Cpnob1Vj.d.ts → resource-execute-CKBtGL8-.d.ts} +1 -1
  518. package/dist/{resource-types-pMeLs68X.d.ts → resource-types-8Q5Klkpa.d.ts} +2 -2
  519. package/dist/{resources-C02l_YBJ.js → resources-DqIwoQsP.js} +1 -1
  520. package/dist/{resources-7iq2-5_A.d.ts → resources-DxpqenZA.d.ts} +1 -1
  521. package/dist/{respond-C3CcOZlA.js → respond-3RKp6VgU.js} +8 -1
  522. package/dist/{respond-Dn1_YhC1.d.ts → respond-oZeJ342J.d.ts} +6 -0
  523. package/dist/server/index.d.ts +9 -9
  524. package/dist/server/index.js +6 -6
  525. package/dist/{server-types-CK8mUIUT.d.ts → server-types-gR4Q1aM0.d.ts} +1 -1
  526. package/dist/{session-DWmFv3vB.d.ts → session-Fcft5A39.d.ts} +2 -2
  527. package/dist/{sign-in-B64114O4.js → sign-in-BLkRU3lc.js} +1 -1
  528. package/dist/solid/index.d.ts +6 -6
  529. package/dist/solid-start/index.d.ts +5 -5
  530. package/dist/solid-start/index.js +5 -5
  531. package/dist/spec/index.d.ts +2 -2
  532. package/dist/spec/index.js +1 -1
  533. package/dist/{spec-pins-DIx95afw.d.ts → spec-pins-BZkKfwY8.d.ts} +2 -0
  534. package/dist/{spec-pins-C1Vm8OBl.js → spec-pins-D3zDek-u.js} +1 -0
  535. package/dist/sql/index.d.ts +5 -5
  536. package/dist/sql/index.js +5 -5
  537. package/dist/{sql-Dl3Alk43.js → sql-fHTjZGqR.js} +4445 -3211
  538. package/dist/sql-type-iUSZpaUu.js +34 -0
  539. package/dist/sqlite/index.d.ts +1 -1
  540. package/dist/ssr/index.d.ts +1 -1
  541. package/dist/{statuses-DMMDwXpZ.js → statuses-Alll5Ip6.js} +2 -2
  542. package/dist/storage/index.js +1 -1
  543. package/dist/svelte/index.d.ts +6 -6
  544. package/dist/sveltekit/index.d.ts +6 -6
  545. package/dist/sveltekit/index.js +5 -5
  546. package/dist/{tags-qvVk79pp.d.ts → tags-sM-CH9Mn.d.ts} +1 -1
  547. package/dist/tanstack-db/index.d.ts +1 -1
  548. package/dist/tanstack-start/index.d.ts +5 -5
  549. package/dist/tanstack-start/index.js +5 -5
  550. package/dist/{tenant-DOKIJI62.d.ts → tenant-DyoVYFfC.d.ts} +1 -1
  551. package/dist/testing/index.d.ts +9 -9
  552. package/dist/testing/index.js +8 -5
  553. package/dist/{timeline-CvTuXYvn.d.ts → timeline-CMmo0R7g.d.ts} +3 -3
  554. package/dist/{topic-ikV_pLTX.js → topic-J9I3yu6f.js} +1 -1
  555. package/dist/{topic-CZXHhZye.d.ts → topic-nQYxoTaU.d.ts} +2 -2
  556. package/dist/{verify-CjvNLY7N.d.ts → verify-DEqY__0N.d.ts} +1 -1
  557. package/dist/vue/index.d.ts +6 -6
  558. package/dist/{watch-topic-BAxoPKZx.d.ts → watch-topic-UGSEWAqR.d.ts} +1 -1
  559. package/dist/workflow-sdk/world/index.js +1 -1
  560. package/dist/{workflow-sdk-Bw6_u0ar.js → workflow-sdk-DELaQEp3.js} +2 -0
  561. package/dist/yjs/index.d.ts +1 -1
  562. package/dist/yjs/index.js +1 -1
  563. package/package.json +1 -1
  564. package/schemas/config-v1.json +471 -69
  565. package/schemas/doctor-report-v1.json +1 -0
  566. package/dist/cli/add-Bfb_ISrO.js +0 -1
  567. package/dist/cli/env-CAU1nknN.js +0 -1
  568. package/dist/cli/seed-D6XijwbR.js +0 -1
  569. package/dist/options-63AKQNv0.js +0 -5
  570. package/dist/options-B-cxGmRA.js +0 -5
  571. package/dist/options-BPDiwSa-.js +0 -5
  572. package/dist/options-C6rEL6U5.js +0 -8
  573. package/dist/options-CE93HOYi.d.ts +0 -7
  574. package/dist/options-CTZNpb2n.js +0 -5
  575. package/dist/options-CrC78Tee.js +0 -5
  576. package/dist/options-DINdgVih.d.ts +0 -9
  577. package/dist/options-DWML05Cp.js +0 -5
  578. package/dist/options-Q1Bzgqpr.js +0 -5
@@ -6,7 +6,7 @@ import { a as ok, r as err, s as toDbError, t as AsyncResult } from "../../resul
6
6
  import { n as validate } from "../../standard-BA3mLh6w.js";
7
7
  import { a as methodNotAllowed, o as problemResponse } from "../../problem-Bf0cJ7tk.js";
8
8
  import { t as MAX_BATCH } from "../../batch-limit-DKVQDz4o.js";
9
- import { t as notificationsSqlOptions } from "../../options-Bt0bYMLl.js";
9
+ import { t as notificationsSqlOptions } from "../../options-CcXgWlvm.js";
10
10
  import { n as whileSignedIn, t as defineController } from "../../controller-BEliOBOv.js";
11
11
  import { B as dbTransport, C as optionalText, E as readBodyCapped, H as rpcTransport, L as toBlockError, U as sqlTransport, c as chunksOf, f as errorText, i as batchResultsOf, n as applyTemporal, o as blockCall, s as budget, v as nullableInstant, w as pageOf, y as nullableText } from "../../block-helpers-CtBdjgO4.js";
12
12
  import { i as wrapTransport, n as extendBlock, r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
@@ -70,7 +70,72 @@ function emailChannel(options) {
70
70
  };
71
71
  }
72
72
  //#endregion
73
+ //#region src/blocks/notifications/delivery-batch.ts
74
+ /**
75
+ * The data of `notification.delivered` and `notification.failed` for one
76
+ * delivery.
77
+ */
78
+ const deliveryData = (message, channel) => {
79
+ const notification = message.notification;
80
+ return {
81
+ notificationId: notification.eventId,
82
+ organizationId: notification.tenant,
83
+ type: notification.type,
84
+ channel,
85
+ deliveryId: message.deliveryId,
86
+ subjectType: notification.subject?.type ?? "notification",
87
+ subjectId: notification.subject?.id ?? notification.eventId
88
+ };
89
+ };
90
+ function deliveryChannels(options) {
91
+ const channels = options.channels ?? [];
92
+ if (options.email === void 0) return channels;
93
+ if (channels.some((channel) => channel.name === "email")) throw new TypeError("createNotifications: `email` adds the \"email\" channel; remove the channel named \"email\" from `channels`");
94
+ return [...channels, emailChannel(options.email)];
95
+ }
96
+ /**
97
+ * The event a delivery's audience check sees: the notification, as its
98
+ * recipients read it.
99
+ */
100
+ const subscriberEventOf = (notification) => ({
101
+ type: notification.type,
102
+ tenant: notification.tenant,
103
+ actorId: notification.actorId,
104
+ payload: notification.data,
105
+ subject: notification.subject ? `${notification.subject.type}/${notification.subject.id}` : null
106
+ });
107
+ /** Messages grouped by the recipient's locale, in claim order. */
108
+ const byLocale = (messages) => {
109
+ const groups = /* @__PURE__ */ new Map();
110
+ for (const message of messages) {
111
+ const group = groups.get(message.locale) ?? [];
112
+ group.push(message);
113
+ groups.set(message.locale, group);
114
+ }
115
+ return groups;
116
+ };
117
+ //#endregion
73
118
  //#region src/blocks/notifications/rows.ts
119
+ function objectOrNull(value) {
120
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? Object.fromEntries(Object.entries(value)) : null;
121
+ }
122
+ function actionsOf(value) {
123
+ if (!Array.isArray(value)) return [];
124
+ return value.flatMap((entry) => {
125
+ const action = objectOrNull(entry);
126
+ const key = action?.["key"];
127
+ const label = action?.["label"];
128
+ if (typeof key !== "string" || typeof label !== "string") return [];
129
+ const operation = action?.["operation"];
130
+ const payload = objectOrNull(action?.["payload"]);
131
+ return [{
132
+ key,
133
+ label,
134
+ ...typeof operation === "string" ? { operation } : {},
135
+ ...payload === null ? {} : { payload }
136
+ }];
137
+ });
138
+ }
74
139
  function toItem(row) {
75
140
  const type = nullableText(row["subject_type"]);
76
141
  const id = nullableText(row["subject_id"]);
@@ -89,10 +154,12 @@ function toItem(row) {
89
154
  },
90
155
  summary: nullableText(row["summary"]),
91
156
  actionPath: nullableText(row["action_path"]),
157
+ actions: actionsOf(row["actions"]),
92
158
  priority: nullableText(row["priority"]),
93
159
  createdAt: nullableInstant(row["created_at"]) ?? temporal().Now.instant(),
94
160
  readAt: nullableInstant(row["read_at"]),
95
161
  resolvedAt: nullableInstant(row["resolved_at"]),
162
+ resolution: objectOrNull(row["resolution"]),
96
163
  fields: rowFields(row["fields"])
97
164
  };
98
165
  }
@@ -198,39 +265,6 @@ const subjectDeliveryOf = (row) => ({
198
265
  }];
199
266
  })
200
267
  });
201
- /**
202
- * The data of `notification.delivered` and `notification.failed` for one
203
- * delivery.
204
- */
205
- const deliveryData = (message, channel) => {
206
- const notification = message.notification;
207
- return {
208
- notificationId: notification.eventId,
209
- organizationId: notification.tenant,
210
- type: notification.type,
211
- channel,
212
- deliveryId: message.deliveryId,
213
- subjectType: notification.subject?.type ?? "notification",
214
- subjectId: notification.subject?.id ?? notification.eventId
215
- };
216
- };
217
- function deliveryChannels(options) {
218
- const channels = options.channels ?? [];
219
- if (options.email === void 0) return channels;
220
- if (channels.some((channel) => channel.name === "email")) throw new TypeError("createNotifications: `email` adds the \"email\" channel; remove the channel named \"email\" from `channels`");
221
- return [...channels, emailChannel(options.email)];
222
- }
223
- /**
224
- * The event a delivery's audience check sees: the notification, as its
225
- * recipients read it.
226
- */
227
- const subscriberEventOf = (notification) => ({
228
- type: notification.type,
229
- tenant: notification.tenant,
230
- actorId: notification.actorId,
231
- payload: notification.data,
232
- subject: notification.subject ? `${notification.subject.type}/${notification.subject.id}` : null
233
- });
234
268
  function createNotifications(options) {
235
269
  applyTemporal(options);
236
270
  const fields = blockFields(options.fields, "notification fields");
@@ -346,8 +380,8 @@ function createNotifications(options) {
346
380
  attempts: Number(row["attempts"] ?? 1),
347
381
  userId: String(row["user_id"]),
348
382
  email: nullableText(row["email"]),
349
- notification,
350
- ...options.render ? { text: options.render(notification, {}) } : {}
383
+ locale: nullableText(row["locale"]),
384
+ notification
351
385
  },
352
386
  suppressed: nullableText(row["suppressed"])
353
387
  };
@@ -404,14 +438,48 @@ function createNotifications(options) {
404
438
  continue;
405
439
  }
406
440
  const allowed = new Set(checked.allowed.map((subscriber) => subscriber.message));
407
- for (const message of messages) outcomes.push(allowed.has(message) ? await deliverOne(channel, message, maxAttempts) : await skip(message, "audience"));
441
+ for (const message of messages) if (!allowed.has(message)) outcomes.push(await skip(message, "audience"));
442
+ for (const [locale, group] of byLocale(messages.filter((message) => allowed.has(message)))) {
443
+ const hydrated = await hydrateFor(group, locale);
444
+ for (const message of group) outcomes.push(await deliverOne(channel, message, maxAttempts, hydrated));
445
+ }
408
446
  }
409
447
  return outcomes;
410
448
  }
411
- async function deliverOne(channel, message, maxAttempts) {
449
+ /**
450
+ * `hydrate` once for a locale's messages. A throwing hydrate fails only those
451
+ * deliveries, inside `deliverOne`.
452
+ */
453
+ const hydrateFor = async (messages, locale) => {
454
+ if (!options.hydrate) return {
455
+ ok: true,
456
+ value: void 0
457
+ };
458
+ try {
459
+ return {
460
+ ok: true,
461
+ value: await options.hydrate(messages.map((message) => message.notification), locale === null ? {} : { locale })
462
+ };
463
+ } catch (cause) {
464
+ return {
465
+ ok: false,
466
+ cause
467
+ };
468
+ }
469
+ };
470
+ async function deliverOne(channel, message, maxAttempts, hydration) {
412
471
  const notification = message.notification;
413
472
  try {
414
- const result = await channel.send(message);
473
+ if (!hydration.ok) throw hydration.cause;
474
+ const text = options.render ? options.render(notification, {
475
+ ...message.locale === null ? {} : { locale: message.locale },
476
+ ...hydration.value === void 0 ? {} : { hydrated: hydration.value }
477
+ }) : void 0;
478
+ const result = await channel.send({
479
+ ...message,
480
+ ...text === void 0 ? {} : { text },
481
+ ...hydration.value === void 0 ? {} : { hydrated: hydration.value }
482
+ });
415
483
  const status = result?.status ?? "sent";
416
484
  await call("complete_notification_delivery", {
417
485
  delivery: message.deliveryId,
@@ -464,6 +532,7 @@ function createNotifications(options) {
464
532
  subject_label: input.subject?.label,
465
533
  summary: input.summary,
466
534
  action_path: input.actionPath,
535
+ actions: input.actions,
467
536
  priority: input.priority,
468
537
  key: input.key,
469
538
  channels: input.channels,
@@ -582,7 +651,8 @@ function createNotifications(options) {
582
651
  type: input.type,
583
652
  subject_type: input.subject.type,
584
653
  subject_id: input.subject.id,
585
- tenant: input.tenant ?? null
654
+ tenant: input.tenant ?? null,
655
+ ...input.resolution === void 0 ? {} : { resolution: input.resolution }
586
656
  }, updateOf);
587
657
  },
588
658
  subscribe(input) {
@@ -3,7 +3,7 @@ import { $ as SaasEventData, Ct as Events } from "../../events-vcqenSYU.js";
3
3
  import { n as Logger } from "../../logger-DWVYUmwi.js";
4
4
  import { t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
5
5
  import { n as BlockHooks } from "../../block-hooks-DZN2w69m.js";
6
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
6
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
7
7
  //#region src/blocks/numbering/numbering.d.ts
8
8
  interface NumberingOptions {
9
9
  readonly transport: BlockTransport;
@@ -1,4 +1,4 @@
1
- import { t as numberingSqlOptions } from "../../options-D_bBVCXg.js";
1
+ import { t as numberingSqlOptions } from "../../options-BzB2QxL3.js";
2
2
  import { o as blockCall } from "../../block-helpers-CtBdjgO4.js";
3
3
  import { r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
4
4
  import { n as event, t as defineEvents } from "../../event-map-CtPFhcOp.js";
@@ -5,7 +5,7 @@ import { n as Logger } from "../../logger-DWVYUmwi.js";
5
5
  import { n as BlockOptions } from "../../block-helpers-CRpAHrp_.js";
6
6
  import { s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
7
7
  import { n as BlockHooks } from "../../block-hooks-DZN2w69m.js";
8
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
8
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
9
9
  //#region src/blocks/oauth-server/oauth-server.d.ts
10
10
  declare const AUTH_METHODS: readonly ["none", "client_secret_basic", "client_secret_post"];
11
11
  declare const GRANT_TYPES: readonly ["authorization_code", "refresh_token", "client_credentials", "urn:ietf:params:oauth:grant-type:device_code"];
@@ -2,7 +2,7 @@ import { n as dbError } from "../../errors-BVFgt8BZ.js";
2
2
  import { t as temporal } from "../../temporal-required-Dy0GGD8E.js";
3
3
  import { t as AsyncResult } from "../../result-ntFBW2p2.js";
4
4
  import { a as toBase64Url } from "../../base64-B9Wlsdj7.js";
5
- import { t as oauthServerSqlOptions } from "../../options-CEMawFrr.js";
5
+ import { t as oauthServerSqlOptions } from "../../options-B685YSzQ.js";
6
6
  import { D as recordOf, F as stringsOf, I as textOf, N as sha256Hex, O as recordOrEmpty, T as randomToken, U as sqlTransport, d as enumOrThrow, h as instantOf, j as run, k as recordsOf, n as applyTemporal, o as blockCall, v as nullableInstant, y as nullableText } from "../../block-helpers-CtBdjgO4.js";
7
7
  import { r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
8
8
  import { n as event, t as defineEvents } from "../../event-map-CtPFhcOp.js";
@@ -4,8 +4,8 @@ import { n as Logger } from "../../logger-DWVYUmwi.js";
4
4
  import { n as BlockOptions } from "../../block-helpers-CRpAHrp_.js";
5
5
  import { a as dbTransport, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
6
6
  import { n as BlockHooks } from "../../block-hooks-DZN2w69m.js";
7
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
8
- import { n as Controller, t as AuthPort } from "../../controller-BW-5Opig.js";
7
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
8
+ import { n as Controller, t as AuthPort } from "../../controller-BR7CZ1R9.js";
9
9
  //#region src/blocks/onboarding/onboarding.d.ts
10
10
  type ChecklistScope = "user" | "organization";
11
11
  /** One step. `events` completes it when the outbox records one of those types. */
@@ -1,4 +1,4 @@
1
- import { t as onboardingSqlOptions } from "../../options-C_pb1Nd3.js";
1
+ import { t as onboardingSqlOptions } from "../../options-Cb2FOFj5.js";
2
2
  import { n as whileSignedIn, t as defineController } from "../../controller-BEliOBOv.js";
3
3
  import { B as dbTransport, C as optionalText, H as rpcTransport, I as textOf, S as optionalInstant, U as sqlTransport, k as recordsOf, n as applyTemporal, o as blockCall } from "../../block-helpers-CtBdjgO4.js";
4
4
  import { r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
@@ -8,9 +8,9 @@ import { n as BlockOptions } from "../../block-helpers-CRpAHrp_.js";
8
8
  import { a as dbTransport, i as RpcClient, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
9
9
  import { a as BlockTransportMiddleware, d as extendBlock, f as withBlockHooks, n as BlockHooks, p as wrapTransport } from "../../block-hooks-DZN2w69m.js";
10
10
  import { g as JobHandler } from "../../types-Czq9Xtpa.js";
11
- import { Bt as Action, c as BlockOf } from "../../define-block-C1RHXz7L.js";
11
+ import { Bt as Action, c as BlockOf } from "../../define-block-CJWiDWa5.js";
12
12
  import { n as Money } from "../../money-BNRdJQzA.js";
13
- import { n as ConversionContext, t as ConversionClients } from "../../conversion-3iv2r7YC.js";
13
+ import { n as ConversionContext, t as ConversionClients } from "../../conversion-BgtOfTaS.js";
14
14
  import { r as WebhookInput } from "../../signatures-Dkx9OE8j.js";
15
15
  import { i as PaymentEvent, n as Payment, o as PaymentProvider } from "../../payments-BYcN34Fp.js";
16
16
  import { n as MetricDefinition } from "../../metric-definition-EAYI1r2n.js";
@@ -1,7 +1,7 @@
1
1
  import { n as dbError } from "../../errors-BVFgt8BZ.js";
2
2
  import { n as isRecord } from "../../guards-6F2bCtQR.js";
3
3
  import { a as ok, r as err, t as AsyncResult } from "../../result-ntFBW2p2.js";
4
- import { t as ordersSqlOptions } from "../../options-BZOliZvb.js";
4
+ import { t as ordersSqlOptions } from "../../options-C3AdsFJ6.js";
5
5
  import { r as defineMetric } from "../../metric-definition-BjxVn4R5.js";
6
6
  import { A as requiredInstant, B as dbTransport, C as optionalText, D as recordOf, F as stringsOf, H as rpcTransport, I as textOf, S as optionalInstant, U as sqlTransport, d as enumOrThrow, k as recordsOf, m as instantArg, n as applyTemporal, o as blockCall, y as nullableText } from "../../block-helpers-CtBdjgO4.js";
7
7
  import { i as wrapTransport, n as extendBlock, r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
@@ -7,8 +7,9 @@ import { Ct as Events, W as InvitationEventData, Z as OrganizationEventData, o a
7
7
  import { r as BlockTemporalOptions } from "../../block-helpers-CRpAHrp_.js";
8
8
  import { a as dbTransport, i as RpcClient, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
9
9
  import { a as BlockTransportMiddleware, d as extendBlock, f as withBlockHooks, n as BlockHooks, p as wrapTransport } from "../../block-hooks-DZN2w69m.js";
10
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
11
- import { n as Controller, t as AuthPort } from "../../controller-BW-5Opig.js";
10
+ import { N as PlatformRolesOption } from "../../authorization-IiE__z2m.js";
11
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
12
+ import { n as Controller, t as AuthPort } from "../../controller-BR7CZ1R9.js";
12
13
  //#region src/sql/modules/invitations-tables.d.ts
13
14
  declare const INVITATION_ERRORS: {
14
15
  readonly INVITATION_FORBIDDEN: "42501";
@@ -24,6 +25,8 @@ declare const INVITATION_ERRORS: {
24
25
  readonly INVITATION_SELF: "42501";
25
26
  readonly INVITATION_INVITER_REVOKED: "42501";
26
27
  readonly INVITATION_SCOPE_UNSUPPORTED: "0A000";
28
+ readonly INVITATION_ON_ACCEPT_INVALID: "22023";
29
+ readonly INVITATION_TEAM_UNKNOWN: "23514";
27
30
  };
28
31
  type InvitationError = keyof typeof INVITATION_ERRORS;
29
32
  //#endregion
@@ -59,6 +62,14 @@ interface InviteRequest<I extends object = Record<never, never>> {
59
62
  * `options.invitationFields`.
60
63
  */
61
64
  readonly fields?: Partial<I> & Readonly<Record<string, unknown>>;
65
+ /**
66
+ * Roles and teams granted on accept, with
67
+ * `blocks.invitations.options.onAccept`.
68
+ */
69
+ readonly onAccept?: {
70
+ readonly roles?: readonly string[];
71
+ readonly teams?: readonly string[];
72
+ };
62
73
  }
63
74
  /**
64
75
  * An invitation. `I` types the extra columns `options.invitationFields`
@@ -137,13 +148,18 @@ interface OrganizationMembership {
137
148
  readonly name: string;
138
149
  readonly slug?: string;
139
150
  readonly role: string;
151
+ /** Every role, with `blocks.memberships.options.roles.many`. */
152
+ readonly roles?: readonly string[];
140
153
  readonly disabledAt?: Temporal.Instant;
141
154
  readonly [column: string]: unknown;
142
155
  }
143
156
  /** A row `list_members` returns. */
144
157
  interface OrganizationMember {
145
158
  readonly userId: string;
159
+ /** The highest-ranked role when a member holds several. */
146
160
  readonly role: string;
161
+ /** Every role, with `blocks.memberships.options.roles.many`. */
162
+ readonly roles?: readonly string[];
147
163
  readonly disabledAt?: Temporal.Instant;
148
164
  }
149
165
  /** An open invitation `list_organization_invitations` returns. */
@@ -230,6 +246,17 @@ interface Organizations<F extends object = Record<never, never>, I extends objec
230
246
  /** Why a slug can't be used, or `undefined` when it can. */
231
247
  slugProblem(slug: string, exceptOrganizationId?: string): AsyncResult<SlugProblem | undefined>;
232
248
  updateMemberRole(organizationId: string, userId: string, role: string): AsyncResult<true>;
249
+ /**
250
+ * Adds a role to a member, with `blocks.memberships.options.roles.many`.
251
+ * `false` when they already held it.
252
+ */
253
+ addMemberRole(organizationId: string, userId: string, role: string): AsyncResult<boolean>;
254
+ /**
255
+ * Removes one of a member's roles, with
256
+ * `blocks.memberships.options.roles.many`. `false` when they didn't hold it;
257
+ * the last role and the last owner are refused.
258
+ */
259
+ removeMemberRole(organizationId: string, userId: string, role: string): AsyncResult<boolean>;
233
260
  removeMember(organizationId: string, userId: string): AsyncResult<true>;
234
261
  suspendMember(organizationId: string, userId: string): AsyncResult<boolean>;
235
262
  resumeMember(organizationId: string, userId: string): AsyncResult<boolean>;
@@ -260,9 +287,15 @@ interface Organizations<F extends object = Record<never, never>, I extends objec
260
287
  acceptInvitation(token: string): AsyncResult<{
261
288
  readonly organizationId: string | null;
262
289
  }>;
290
+ /**
291
+ * Emits `invitation.accepted` with the organization joined. The token calls
292
+ * don't know the invitation id, so they record the event only in the outbox,
293
+ * as `revokeInvitation` does for the organization id.
294
+ */
263
295
  acceptInvitationById(invitationId: string): AsyncResult<{
264
296
  readonly organizationId: string | null;
265
297
  }>;
298
+ /** Emits `invitation.declined` when the invitation was open. */
266
299
  declineInvitationById(invitationId: string): AsyncResult<boolean>;
267
300
  myInvitations(): AsyncResult<readonly Invitation<I>[]>;
268
301
  }
@@ -281,6 +314,8 @@ type OrganizationsEvents = {
281
314
  readonly "organization.member_suspended": OrganizationEventData;
282
315
  readonly "organization.member_resumed": OrganizationEventData;
283
316
  readonly "organization.role_changed": OrganizationEventData;
317
+ readonly "organization.role_added": OrganizationEventData;
318
+ readonly "organization.role_removed": OrganizationEventData;
284
319
  readonly "organization.ownership_transferred": OrganizationEventData;
285
320
  readonly "organization.switched": OrganizationEventData;
286
321
  readonly "invitation.created": InvitationEventData;
@@ -477,4 +512,4 @@ export declare function createInvitationsController<T extends {
477
512
  readonly id: string;
478
513
  } = OrganizationInvitationRow>(options: InvitationsControllerOptions<T>): InvitationsController<T>;
479
514
  //#endregion
480
- export { type BlockHooks, type BlockTransport, type BlockTransportMiddleware, type CreateOrganizationOptions, type Invitation, type InvitationChange, type InvitationChanges, type InvitationDraft, type InvitationErrorHint, type InvitationPreview, type InvitationSent, type InvitationStatus, type InvitationsActions, type InvitationsController, type InvitationsControllerOptions, type InvitationsSnapshot, type InviteRequest, type MemberChange, type MembersActions, type MembersController, type MembersControllerOptions, type MembersSnapshot, type OrganizationAttributes, type OrganizationInvitationRow, type OrganizationMember, type OrganizationMembership, type OrganizationRowSource, type OrganizationSource, type Organizations, type OrganizationsActions, type OrganizationsController, type OrganizationsControllerOptions, type OrganizationsEvents, type OrganizationsOptions, type OrganizationsSnapshot, type RpcClient, type SlugProblem, type SwitchResult, dbTransport, extendBlock, rpcTransport, sqlTransport, withBlockHooks, wrapTransport };
515
+ export { type BlockHooks, type BlockTransport, type BlockTransportMiddleware, type CreateOrganizationOptions, type Invitation, type InvitationChange, type InvitationChanges, type InvitationDraft, type InvitationErrorHint, type InvitationPreview, type InvitationSent, type InvitationStatus, type InvitationsActions, type InvitationsController, type InvitationsControllerOptions, type InvitationsSnapshot, type InviteRequest, type MemberChange, type MembersActions, type MembersController, type MembersControllerOptions, type MembersSnapshot, type OrganizationAttributes, type OrganizationInvitationRow, type OrganizationMember, type OrganizationMembership, type OrganizationRowSource, type OrganizationSource, type Organizations, type OrganizationsActions, type OrganizationsController, type OrganizationsControllerOptions, type OrganizationsEvents, type OrganizationsOptions, type OrganizationsSnapshot, type PlatformRolesOption, type RpcClient, type SlugProblem, type SwitchResult, dbTransport, extendBlock, rpcTransport, sqlTransport, withBlockHooks, wrapTransport };
@@ -2,7 +2,7 @@ import { n as dbError } from "../../errors-BVFgt8BZ.js";
2
2
  import { n as isRecord } from "../../guards-6F2bCtQR.js";
3
3
  import { t as temporal } from "../../temporal-required-Dy0GGD8E.js";
4
4
  import { a as ok, r as err, s as toDbError, t as AsyncResult } from "../../result-ntFBW2p2.js";
5
- import { n as organizationsSqlOptions, t as invitationsSqlOptions } from "../../options-Bp7sgKvl.js";
5
+ import { n as organizationsSqlOptions, t as invitationsSqlOptions } from "../../options-CpZ2HlSU.js";
6
6
  import { n as whileSignedIn, t as defineController } from "../../controller-BEliOBOv.js";
7
7
  import { B as dbTransport, H as rpcTransport, U as sqlTransport, k as recordsOf, n as applyTemporal, o as blockCall } from "../../block-helpers-CtBdjgO4.js";
8
8
  import { i as wrapTransport, n as extendBlock, r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
@@ -10,7 +10,7 @@ import { t as tenantOf } from "../../tenant-BgIiMQpo.js";
10
10
  import { r as blockEmitter } from "../../block-events-pBXPzwnW.js";
11
11
  import { a as readAllFields, n as blockFields, o as readFields, s as rowFields } from "../../block-fields-DE_FgpOU.js";
12
12
  import { n as defineBlock } from "../../define-block-BGqOO8B3.js";
13
- import { t as organizationsEvents } from "../../events-SqJLbb8q.js";
13
+ import { t as organizationsEvents } from "../../events-DuLhzjP6.js";
14
14
  //#region src/blocks/organizations/organizations.ts
15
15
  const text = (value) => typeof value === "string" ? value : String(value);
16
16
  const optionalText = (value) => value === null || value === void 0 ? null : text(value);
@@ -80,6 +80,10 @@ function previewFrom(row) {
80
80
  extra: extraOf(row, PREVIEW_KEYS)
81
81
  };
82
82
  }
83
+ const rolesOf = (row) => {
84
+ const roles = row["roles"];
85
+ return Array.isArray(roles) ? { roles: roles.map((role) => text(role)) } : {};
86
+ };
83
87
  const disabledAtOf = (row) => {
84
88
  const disabledAt = optionalText(row["disabled_at"]);
85
89
  return disabledAt === null ? {} : { disabledAt: temporal().Instant.from(disabledAt) };
@@ -226,6 +230,34 @@ function organizationsClient(options) {
226
230
  return true;
227
231
  });
228
232
  },
233
+ addMemberRole(organizationId, userId, role) {
234
+ return run("organizations", "add_member_role", {
235
+ organization: organizationId,
236
+ member: userId,
237
+ role
238
+ }, (value) => {
239
+ if (value === true) organizationEvent("organization.role_added", {
240
+ organizationId,
241
+ userId,
242
+ role
243
+ });
244
+ return value === true;
245
+ });
246
+ },
247
+ removeMemberRole(organizationId, userId, role) {
248
+ return run("organizations", "remove_member_role", {
249
+ organization: organizationId,
250
+ member: userId,
251
+ role
252
+ }, (value) => {
253
+ if (value === true) organizationEvent("organization.role_removed", {
254
+ organizationId,
255
+ userId,
256
+ role
257
+ });
258
+ return value === true;
259
+ });
260
+ },
229
261
  removeMember(organizationId, userId) {
230
262
  return run("organizations", "remove_member", {
231
263
  organization: organizationId,
@@ -314,6 +346,7 @@ function organizationsClient(options) {
314
346
  name: text(row["name"]),
315
347
  ...slug === null ? {} : { slug },
316
348
  role: text(row["role"]),
349
+ ...rolesOf(row),
317
350
  ...disabledAtOf(row)
318
351
  });
319
352
  }
@@ -324,6 +357,7 @@ function organizationsClient(options) {
324
357
  return run("organizations", "list_members", { organization: organizationId }, (value) => recordsOf(value, "list_members").map((row) => ({
325
358
  userId: text(row["user_id"]),
326
359
  role: text(row["role"]),
360
+ ...rolesOf(row),
327
361
  ...disabledAtOf(row)
328
362
  })));
329
363
  },
@@ -349,7 +383,8 @@ function organizationsClient(options) {
349
383
  invitee_role: request.role,
350
384
  valid_for: request.validFor,
351
385
  prefill: request.prefill,
352
- fields: checked.data
386
+ fields: checked.data,
387
+ ...request.onAccept === void 0 ? {} : { on_accept: request.onAccept }
353
388
  }, (value) => sent(value, "invite_member", false));
354
389
  });
355
390
  },
@@ -392,13 +427,23 @@ function organizationsClient(options) {
392
427
  return run("invitations", "accept_invitation", { token }, accepted);
393
428
  },
394
429
  acceptInvitationById(invitationId) {
395
- return run("invitations", "accept_invitation_by_id", { invitation_id: invitationId }, accepted);
430
+ return run("invitations", "accept_invitation_by_id", { invitation_id: invitationId }, (value) => {
431
+ const joined = accepted(value);
432
+ invitationEvent("invitation.accepted", {
433
+ invitationId,
434
+ ...joined.organizationId === null ? {} : { organizationId: joined.organizationId }
435
+ });
436
+ return joined;
437
+ });
396
438
  },
397
439
  myInvitations() {
398
440
  return run("invitations", "my_invitations", {}, (value) => (Array.isArray(value) ? value.filter(isRecord) : []).map(invitationFrom)).andThen((invitations) => readAllFields(invitationFields, invitations));
399
441
  },
400
442
  declineInvitationById(invitationId) {
401
- return run("invitations", "decline_invitation_by_id", { invitation_id: invitationId }, (value) => value === true);
443
+ return run("invitations", "decline_invitation_by_id", { invitation_id: invitationId }, (value) => {
444
+ if (value === true) invitationEvent("invitation.declined", { invitationId });
445
+ return value === true;
446
+ });
402
447
  }
403
448
  };
404
449
  }
@@ -1,6 +1,6 @@
1
1
  import { n as SqlClient } from "../../executor-hGjrop3A.js";
2
2
  import { a as dbTransport, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
3
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
3
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
4
4
  import { a as OutboxEvent, c as OutboxPurgeOptions, d as RegisterOptions, f as RelayOptions, h as outboxCloudEvent, i as OutboxDeadLetter, l as OutboxRouteOptions, m as createOutbox, n as HistoryFilter, o as OutboxHandler, p as RelayResult, r as Outbox, s as OutboxOptions, t as EmitOptions, u as OutboxRouteResult } from "../../outbox-HxjZTfF6.js";
5
5
  //#region src/blocks/outbox/manifest.d.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import { t as DbException } from "../../db-exception-Lngc1W49.js";
2
2
  import { s as toDbError } from "../../result-ntFBW2p2.js";
3
- import { t as outboxSqlOptions } from "../../options-SViK_2x2.js";
3
+ import { t as outboxSqlOptions } from "../../options-62woPFn3.js";
4
4
  import { B as dbTransport, H as rpcTransport, R as toInstant, U as sqlTransport, j as run, n as applyTemporal, o as blockCall, r as asDbError, s as budget, w as pageOf, z as workerId } from "../../block-helpers-CtBdjgO4.js";
5
5
  import { r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
6
6
  import "../../cloud-event-XsM53POL.js";
@@ -6,8 +6,8 @@ import { n as Logger } from "../../logger-DWVYUmwi.js";
6
6
  import { a as BlockTenantOptions, r as BlockTemporalOptions } from "../../block-helpers-CRpAHrp_.js";
7
7
  import { a as dbTransport, i as RpcClient, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
8
8
  import { a as BlockTransportMiddleware, d as extendBlock, f as withBlockHooks, n as BlockHooks, p as wrapTransport } from "../../block-hooks-DZN2w69m.js";
9
- import { n as passesSqlOptions, t as PassesSqlOptions } from "../../options-DcOx8_3X.js";
10
- import { Sn as EntitySchema, c as BlockOf, ln as RecordBindingWrite, mn as RecordRowInput, rn as RecordBinding } from "../../define-block-C1RHXz7L.js";
9
+ import { n as passesSqlOptions, t as PassesSqlOptions } from "../../options-HnfETSHr.js";
10
+ import { Sn as EntitySchema, c as BlockOf, ln as RecordBindingWrite, mn as RecordRowInput, rn as RecordBinding } from "../../define-block-CJWiDWa5.js";
11
11
  import { n as Booking } from "../../bookings-Dox2rced.js";
12
12
  import { n as Jwks } from "../../jws-D0toeQlA.js";
13
13
  import { o as Signer } from "../../signing-keys-BNDUxpQL.js";
@@ -1,7 +1,7 @@
1
1
  import { n as dbError } from "../../errors-BVFgt8BZ.js";
2
2
  import { t as temporal } from "../../temporal-required-Dy0GGD8E.js";
3
3
  import { t as AsyncResult } from "../../result-ntFBW2p2.js";
4
- import { t as passesSqlOptions } from "../../options-xD4_FRUq.js";
4
+ import { t as passesSqlOptions } from "../../options-56zYYXxc.js";
5
5
  import { A as requiredInstant, B as dbTransport, C as optionalText, D as recordOf, H as rpcTransport, I as textOf, S as optionalInstant, U as sqlTransport, d as enumOrThrow, k as recordsOf, m as instantArg, n as applyTemporal, o as blockCall } from "../../block-helpers-CtBdjgO4.js";
6
6
  import { i as wrapTransport, n as extendBlock, r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
7
7
  import { n as entitySchema } from "../../entity-schema-BDv6w-OQ.js";
@@ -3,9 +3,9 @@ import { n as Logger } from "../../logger-DWVYUmwi.js";
3
3
  import { n as BlockOptions, o as BlockTenant } from "../../block-helpers-CRpAHrp_.js";
4
4
  import { a as dbTransport, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
5
5
  import { n as BlockHooks } from "../../block-hooks-DZN2w69m.js";
6
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
7
- import { B as PermissionFlags, H as can, U as permissionFlags, V as PermissionSet, W as permissionMatches } from "../../index-CcAmFNVi.js";
8
- import { n as Controller, t as AuthPort } from "../../controller-BW-5Opig.js";
6
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
7
+ import { B as PermissionFlags, H as can, U as permissionFlags, V as PermissionSet, W as permissionMatches } from "../../index-C0t-vNIt.js";
8
+ import { n as Controller, t as AuthPort } from "../../controller-BR7CZ1R9.js";
9
9
  //#region src/blocks/permissions/permissions.d.ts
10
10
  interface PermissionsOptions extends BlockOptions {
11
11
  /** `withBlockHooks` hooks around the client's methods. */
@@ -45,7 +45,7 @@ interface Permissions<K extends string = string> {
45
45
  export declare function createPermissions<K extends string = string>(options: PermissionsOptions): Permissions<K>;
46
46
  //#endregion
47
47
  //#region src/blocks/permissions/manifest.d.ts
48
- /** The `access` block's manifest (ADR 0029). */
48
+ /** The `permissions` block's manifest (ADR 0029). */
49
49
  export declare const permissionsBlock: BlockOf<"permissions", typeof createPermissions>;
50
50
  //#endregion
51
51
  //#region src/blocks/permissions/client.d.ts
@@ -1,5 +1,5 @@
1
1
  import { a as ok, t as AsyncResult } from "../../result-ntFBW2p2.js";
2
- import { t as permissionsSqlOptions } from "../../options-CvD9vNvx.js";
2
+ import { t as permissionsSqlOptions } from "../../options-DM1qaMMQ.js";
3
3
  import { t as currentTenant } from "../../tenant-source-bqWpSr86.js";
4
4
  import { n as whileSignedIn, t as defineController } from "../../controller-BEliOBOv.js";
5
5
  import { B as dbTransport, H as rpcTransport, U as sqlTransport, o as blockCall } from "../../block-helpers-CtBdjgO4.js";
@@ -36,7 +36,7 @@ function createPermissions(options) {
36
36
  }
37
37
  //#endregion
38
38
  //#region src/blocks/permissions/manifest.ts
39
- /** The `access` block's manifest (ADR 0029). */
39
+ /** The `permissions` block's manifest (ADR 0029). */
40
40
  const permissionsBlock = defineBlock({
41
41
  name: "permissions",
42
42
  sql: ["permissions"],
@@ -8,7 +8,7 @@ import { n as Logger } from "../../logger-DWVYUmwi.js";
8
8
  import { r as BlockTemporalOptions } from "../../block-helpers-CRpAHrp_.js";
9
9
  import { a as dbTransport, i as RpcClient, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
10
10
  import { a as BlockTransportMiddleware, d as extendBlock, f as withBlockHooks, n as BlockHooks, p as wrapTransport } from "../../block-hooks-DZN2w69m.js";
11
- import { c as BlockOf } from "../../define-block-C1RHXz7L.js";
11
+ import { c as BlockOf } from "../../define-block-CJWiDWa5.js";
12
12
  import { n as Money } from "../../money-BNRdJQzA.js";
13
13
  import { t as RankNeighbors } from "../../rank-result-Bwe7igy-.js";
14
14
  //#region src/blocks/pipelines/pipelines.d.ts
@@ -1,5 +1,5 @@
1
1
  import { t as AsyncResult } from "../../result-ntFBW2p2.js";
2
- import { t as pipelinesSqlOptions } from "../../options-BfLmA375.js";
2
+ import { t as pipelinesSqlOptions } from "../../options-xq4MXG1M.js";
3
3
  import { A as requiredInstant, B as dbTransport, C as optionalText, D as recordOf, H as rpcTransport, I as textOf, U as sqlTransport, d as enumOrThrow, k as recordsOf, m as instantArg, n as applyTemporal, o as blockCall } from "../../block-helpers-CtBdjgO4.js";
4
4
  import { i as wrapTransport, n as extendBlock, r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
5
5
  import { n as event, t as defineEvents } from "../../event-map-CtPFhcOp.js";
@@ -7,8 +7,8 @@ import { n as Logger } from "../../logger-DWVYUmwi.js";
7
7
  import { n as BlockOptions } from "../../block-helpers-CRpAHrp_.js";
8
8
  import { a as dbTransport, i as RpcClient, o as rpcTransport, s as sqlTransport, t as BlockTransport } from "../../block-transport-DWZSJrwN.js";
9
9
  import { a as BlockTransportMiddleware, d as extendBlock, f as withBlockHooks, n as BlockHooks, p as wrapTransport } from "../../block-hooks-DZN2w69m.js";
10
- import { n as postsSqlOptions, t as PostsSqlOptions } from "../../options-D6as77gU.js";
11
- import { Sn as EntitySchema, c as BlockOf } from "../../define-block-C1RHXz7L.js";
10
+ import { n as postsSqlOptions, t as PostsSqlOptions } from "../../options-DRIgHh4O.js";
11
+ import { Sn as EntitySchema, c as BlockOf } from "../../define-block-CJWiDWa5.js";
12
12
  //#region src/blocks/posts/posts.d.ts
13
13
  declare const BOARD_KINDS: readonly ["forum", "feedback"];
14
14
  declare const POST_STATUSES: readonly ["open", "under_review", "planned", "in_progress", "done", "closed"];
@@ -1,6 +1,6 @@
1
1
  import { n as isRecord } from "../../guards-6F2bCtQR.js";
2
2
  import { t as AsyncResult } from "../../result-ntFBW2p2.js";
3
- import { t as postsSqlOptions } from "../../options-Cyu0hgmN.js";
3
+ import { t as postsSqlOptions } from "../../options-cVKZu9b0.js";
4
4
  import { A as requiredInstant, B as dbTransport, C as optionalText, D as recordOf, H as rpcTransport, I as textOf, S as optionalInstant, U as sqlTransport, d as enumOrThrow, k as recordsOf, n as applyTemporal, o as blockCall } from "../../block-helpers-CtBdjgO4.js";
5
5
  import { i as wrapTransport, n as extendBlock, r as withBlockHooks } from "../../block-hooks-BfxX3682.js";
6
6
  import { n as entitySchema } from "../../entity-schema-BDv6w-OQ.js";