better-supabase 0.8.0 → 0.10.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 (1392) hide show
  1. package/README.md +147 -83
  2. package/bin/better-supabase.js +14 -2
  3. package/dist/access-sql-DUSSMaC3.js +201 -0
  4. package/dist/actor-BAhb-d1S.d.ts +104 -0
  5. package/dist/actor-KHDOKGb1.js +151 -0
  6. package/dist/adapter-rmWaLNe3.js +1984 -0
  7. package/dist/agents-ByYUSZxT.d.ts +111 -0
  8. package/dist/ai-cache-CkxtAt4P.d.ts +70 -0
  9. package/dist/ai-cache-DPiuJ-zJ.js +84 -0
  10. package/dist/ai-chat-al8b3spK.d.ts +608 -0
  11. package/dist/ai-files-BXtV3ygd.js +331 -0
  12. package/dist/ai-sdk/agents/index.d.ts +154 -10
  13. package/dist/ai-sdk/agents/index.js +172 -17
  14. package/dist/ai-sdk/batches/index.d.ts +4 -4
  15. package/dist/ai-sdk/batches/index.js +5 -5
  16. package/dist/ai-sdk/cache/index.d.ts +2 -2
  17. package/dist/ai-sdk/cache/index.js +1 -1
  18. package/dist/ai-sdk/chat/index.d.ts +1 -1
  19. package/dist/ai-sdk/chat/index.js +7 -6
  20. package/dist/ai-sdk/embeddings/index.d.ts +3 -3
  21. package/dist/ai-sdk/embeddings/index.js +1 -2
  22. package/dist/ai-sdk/files/index.d.ts +2 -2
  23. package/dist/ai-sdk/files/index.js +4 -4
  24. package/dist/ai-sdk/index.d.ts +7 -6
  25. package/dist/ai-sdk/index.js +4 -3
  26. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  27. package/dist/ai-sdk/mcp/index.js +6 -6
  28. package/dist/ai-sdk/memory/index.d.ts +5 -2
  29. package/dist/ai-sdk/memory/index.js +2 -2
  30. package/dist/ai-sdk/react/index.js +1 -2
  31. package/dist/ai-sdk/workflow/index.d.ts +5 -4
  32. package/dist/ai-sdk/workflow/index.js +8 -8
  33. package/dist/ai-tasks-Di0gmJOX.d.ts +157 -0
  34. package/dist/announcements-HF7LuFw5.js +128 -0
  35. package/dist/api-CFjuYKFY.js +680 -0
  36. package/dist/api-XJcQON_7.d.ts +411 -0
  37. package/dist/api-keys-C1IZF7p8.js +318 -0
  38. package/dist/api-keys-EdSNjGIZ.d.ts +205 -0
  39. package/dist/app-tables-BRjMcWhW.js +819 -0
  40. package/dist/app-tables-DVidEHOI.d.ts +35 -0
  41. package/dist/approvals-DqlPHBHI.d.ts +124 -0
  42. package/dist/arazzo/index.d.ts +5 -5
  43. package/dist/arazzo/index.js +6 -6
  44. package/dist/assistant-BZyhQ8bd.d.ts +148 -0
  45. package/dist/astro/index.d.ts +9 -8
  46. package/dist/astro/index.js +10 -7
  47. package/dist/asyncapi/index.d.ts +4 -4
  48. package/dist/asyncapi/index.js +6 -6
  49. package/dist/attachments-C8FEBBKE.js +264 -0
  50. package/dist/attributes-D4mA7WhI.js +38 -0
  51. package/dist/audit-log-CRgiHlRh.js +786 -0
  52. package/dist/auth-CdBKt0CS.js +20 -0
  53. package/dist/auth-reply-B_dW4jHJ.js +31 -0
  54. package/dist/auth-reply-Dj124sbX.d.ts +11 -0
  55. package/dist/authorization-CdJRoZgV.d.ts +1435 -0
  56. package/dist/authorization-hooks-Do5djkpz.d.ts +214 -0
  57. package/dist/authorizer-dVVN05Un.js +126 -0
  58. package/dist/base64-BmeCBgGo.js +42 -0
  59. package/dist/batch-limit-DKVQDz4o.js +5 -0
  60. package/dist/before-route-B98js9m_.js +30 -0
  61. package/dist/better-result/index.d.ts +5 -5
  62. package/dist/better-result/index.js +1 -1
  63. package/dist/bind-DkaP_0iS.d.ts +70 -0
  64. package/dist/block-env-CBd_SoL5.js +29 -0
  65. package/dist/block-env-Dxl7rsI0.d.ts +10 -0
  66. package/dist/block-events-DD9Q_NUz.js +96 -0
  67. package/dist/block-fields-5UA84ZUg.d.ts +55 -0
  68. package/dist/block-fields-BANwJ9Y_.js +139 -0
  69. package/dist/block-helpers-7pMBVsE6.d.ts +37 -0
  70. package/dist/block-helpers-BfVCR5Fc.js +264 -0
  71. package/dist/block-hooks-ByKlh8Qy.js +114 -0
  72. package/dist/block-hooks-C_WaodoA.d.ts +107 -0
  73. package/dist/block-transport-G4t1umrR.js +85 -0
  74. package/dist/block-transport-NbUJygA7.d.ts +70 -0
  75. package/dist/blocks/access-requests/index.d.ts +98 -0
  76. package/dist/blocks/access-requests/index.js +99 -0
  77. package/dist/blocks/agents/index.d.ts +21 -3
  78. package/dist/blocks/agents/index.js +64 -18
  79. package/dist/blocks/ai-cache/index.d.ts +7 -2
  80. package/dist/blocks/ai-cache/index.js +15 -3
  81. package/dist/blocks/ai-chat/index.d.ts +22 -3
  82. package/dist/blocks/ai-chat/index.js +29 -3
  83. package/dist/blocks/ai-chat/react/index.d.ts +12 -46
  84. package/dist/blocks/ai-chat/react/index.js +43 -335
  85. package/dist/blocks/ai-chat/solid/index.d.ts +34 -0
  86. package/dist/blocks/ai-chat/solid/index.js +41 -0
  87. package/dist/blocks/ai-chat/svelte/index.d.ts +34 -0
  88. package/dist/blocks/ai-chat/svelte/index.js +41 -0
  89. package/dist/blocks/ai-chat/vue/index.d.ts +34 -0
  90. package/dist/blocks/ai-chat/vue/index.js +41 -0
  91. package/dist/blocks/ai-files/index.d.ts +10 -3
  92. package/dist/blocks/ai-files/index.js +16 -3
  93. package/dist/blocks/ai-providers/index.d.ts +18 -3
  94. package/dist/blocks/ai-providers/index.js +40 -15
  95. package/dist/blocks/ai-tasks/index.d.ts +9 -2
  96. package/dist/blocks/ai-tasks/index.js +70 -21
  97. package/dist/blocks/announcements/index.d.ts +18 -3
  98. package/dist/blocks/announcements/index.js +27 -3
  99. package/dist/blocks/announcements/react/index.d.ts +4 -14
  100. package/dist/blocks/announcements/react/index.js +22 -70
  101. package/dist/blocks/announcements/solid/index.d.ts +13 -0
  102. package/dist/blocks/announcements/solid/index.js +14 -0
  103. package/dist/blocks/announcements/svelte/index.d.ts +13 -0
  104. package/dist/blocks/announcements/svelte/index.js +14 -0
  105. package/dist/blocks/announcements/vue/index.d.ts +13 -0
  106. package/dist/blocks/announcements/vue/index.js +14 -0
  107. package/dist/blocks/api-keys/index.d.ts +24 -7
  108. package/dist/blocks/api-keys/index.js +29 -294
  109. package/dist/blocks/api-keys/react/index.d.ts +29 -0
  110. package/dist/blocks/api-keys/react/index.js +43 -0
  111. package/dist/blocks/api-keys/react/server.d.ts +7 -0
  112. package/dist/blocks/api-keys/react/server.js +7 -0
  113. package/dist/blocks/api-keys/solid/index.d.ts +13 -0
  114. package/dist/blocks/api-keys/solid/index.js +14 -0
  115. package/dist/blocks/api-keys/svelte/index.d.ts +13 -0
  116. package/dist/blocks/api-keys/svelte/index.js +14 -0
  117. package/dist/blocks/api-keys/vue/index.d.ts +13 -0
  118. package/dist/blocks/api-keys/vue/index.js +14 -0
  119. package/dist/blocks/approvals/index.d.ts +22 -0
  120. package/dist/blocks/approvals/index.js +189 -0
  121. package/dist/blocks/attachments/index.d.ts +18 -227
  122. package/dist/blocks/attachments/index.js +26 -242
  123. package/dist/blocks/audit/index.d.ts +72 -365
  124. package/dist/blocks/audit/index.js +91 -714
  125. package/dist/blocks/audit/react/index.d.ts +26 -0
  126. package/dist/blocks/audit/react/index.js +44 -0
  127. package/dist/blocks/audit/react/server.d.ts +7 -0
  128. package/dist/blocks/audit/react/server.js +7 -0
  129. package/dist/blocks/audit/solid/index.d.ts +13 -0
  130. package/dist/blocks/audit/solid/index.js +14 -0
  131. package/dist/blocks/audit/svelte/index.d.ts +13 -0
  132. package/dist/blocks/audit/svelte/index.js +14 -0
  133. package/dist/blocks/audit/vue/index.d.ts +13 -0
  134. package/dist/blocks/audit/vue/index.js +14 -0
  135. package/dist/blocks/billing/index.d.ts +37 -12
  136. package/dist/blocks/billing/index.js +43 -12
  137. package/dist/blocks/billing/react/index.d.ts +34 -0
  138. package/dist/blocks/billing/react/index.js +36 -0
  139. package/dist/blocks/billing/react/server.d.ts +7 -0
  140. package/dist/blocks/billing/react/server.js +7 -0
  141. package/dist/blocks/billing/solid/index.d.ts +15 -0
  142. package/dist/blocks/billing/solid/index.js +14 -0
  143. package/dist/blocks/billing/svelte/index.d.ts +15 -0
  144. package/dist/blocks/billing/svelte/index.js +14 -0
  145. package/dist/blocks/billing/vue/index.d.ts +15 -0
  146. package/dist/blocks/billing/vue/index.js +14 -0
  147. package/dist/blocks/bookings/index.d.ts +36 -0
  148. package/dist/blocks/bookings/index.js +28 -0
  149. package/dist/blocks/bookings/react/index.d.ts +31 -0
  150. package/dist/blocks/bookings/react/index.js +59 -0
  151. package/dist/blocks/bookings/react/server.d.ts +6 -0
  152. package/dist/blocks/bookings/react/server.js +7 -0
  153. package/dist/blocks/bookings/solid/index.d.ts +13 -0
  154. package/dist/blocks/bookings/solid/index.js +14 -0
  155. package/dist/blocks/bookings/svelte/index.d.ts +13 -0
  156. package/dist/blocks/bookings/svelte/index.js +14 -0
  157. package/dist/blocks/bookings/vue/index.d.ts +13 -0
  158. package/dist/blocks/bookings/vue/index.js +14 -0
  159. package/dist/blocks/bulk/index.d.ts +146 -0
  160. package/dist/blocks/bulk/index.js +154 -0
  161. package/dist/blocks/calendar/index.d.ts +20 -0
  162. package/dist/blocks/calendar/index.js +33 -0
  163. package/dist/blocks/calendar/react/index.d.ts +26 -0
  164. package/dist/blocks/calendar/react/index.js +58 -0
  165. package/dist/blocks/calendar/react/server.d.ts +6 -0
  166. package/dist/blocks/calendar/react/server.js +7 -0
  167. package/dist/blocks/calendar/solid/index.d.ts +13 -0
  168. package/dist/blocks/calendar/solid/index.js +14 -0
  169. package/dist/blocks/calendar/svelte/index.d.ts +13 -0
  170. package/dist/blocks/calendar/svelte/index.js +14 -0
  171. package/dist/blocks/calendar/vue/index.d.ts +13 -0
  172. package/dist/blocks/calendar/vue/index.js +14 -0
  173. package/dist/blocks/catalog/index.d.ts +224 -0
  174. package/dist/blocks/catalog/index.js +292 -0
  175. package/dist/blocks/collections/index.d.ts +184 -0
  176. package/dist/blocks/collections/index.js +208 -0
  177. package/dist/blocks/comments/index.d.ts +19 -166
  178. package/dist/blocks/comments/index.js +26 -207
  179. package/dist/blocks/comments/react/index.d.ts +27 -0
  180. package/dist/blocks/comments/react/index.js +45 -0
  181. package/dist/blocks/comments/react/server.d.ts +7 -0
  182. package/dist/blocks/comments/react/server.js +7 -0
  183. package/dist/blocks/comments/solid/index.d.ts +13 -0
  184. package/dist/blocks/comments/solid/index.js +14 -0
  185. package/dist/blocks/comments/svelte/index.d.ts +13 -0
  186. package/dist/blocks/comments/svelte/index.js +14 -0
  187. package/dist/blocks/comments/vue/index.d.ts +13 -0
  188. package/dist/blocks/comments/vue/index.js +14 -0
  189. package/dist/blocks/connectors/index.d.ts +21 -3
  190. package/dist/blocks/connectors/index.js +53 -18
  191. package/dist/blocks/custom-fields/index.d.ts +62 -0
  192. package/dist/blocks/custom-fields/index.js +85 -0
  193. package/dist/blocks/data-lifecycle/index.d.ts +114 -9
  194. package/dist/blocks/data-lifecycle/index.js +98 -12
  195. package/dist/blocks/deals/index.d.ts +262 -0
  196. package/dist/blocks/deals/index.js +380 -0
  197. package/dist/blocks/documents/index.d.ts +17 -0
  198. package/dist/blocks/documents/index.js +118 -0
  199. package/dist/blocks/domains/index.d.ts +117 -0
  200. package/dist/blocks/domains/index.js +118 -0
  201. package/dist/blocks/drive/index.d.ts +296 -0
  202. package/dist/blocks/drive/index.js +483 -0
  203. package/dist/blocks/employees/index.d.ts +205 -0
  204. package/dist/blocks/employees/index.js +289 -0
  205. package/dist/blocks/engagements/index.d.ts +125 -0
  206. package/dist/blocks/engagements/index.js +143 -0
  207. package/dist/blocks/entitlements/index.d.ts +40 -4
  208. package/dist/blocks/entitlements/index.js +14 -24
  209. package/dist/blocks/entitlements/react/index.d.ts +24 -0
  210. package/dist/blocks/entitlements/react/index.js +35 -0
  211. package/dist/blocks/entitlements/react/server.d.ts +6 -0
  212. package/dist/blocks/entitlements/react/server.js +7 -0
  213. package/dist/blocks/entitlements/solid/index.d.ts +13 -0
  214. package/dist/blocks/entitlements/solid/index.js +14 -0
  215. package/dist/blocks/entitlements/svelte/index.d.ts +13 -0
  216. package/dist/blocks/entitlements/svelte/index.js +14 -0
  217. package/dist/blocks/entitlements/vue/index.d.ts +13 -0
  218. package/dist/blocks/entitlements/vue/index.js +14 -0
  219. package/dist/blocks/flags/index.d.ts +61 -187
  220. package/dist/blocks/flags/index.js +65 -253
  221. package/dist/blocks/forms/index.d.ts +302 -0
  222. package/dist/blocks/forms/index.js +341 -0
  223. package/dist/blocks/forms/react/index.d.ts +16 -0
  224. package/dist/blocks/forms/react/index.js +25 -0
  225. package/dist/blocks/forms/react/server.d.ts +6 -0
  226. package/dist/blocks/forms/react/server.js +7 -0
  227. package/dist/blocks/forms/solid/index.d.ts +13 -0
  228. package/dist/blocks/forms/solid/index.js +14 -0
  229. package/dist/blocks/forms/svelte/index.d.ts +13 -0
  230. package/dist/blocks/forms/svelte/index.js +14 -0
  231. package/dist/blocks/forms/vue/index.d.ts +13 -0
  232. package/dist/blocks/forms/vue/index.js +14 -0
  233. package/dist/blocks/hiring/index.d.ts +154 -0
  234. package/dist/blocks/hiring/index.js +180 -0
  235. package/dist/blocks/identities/index.d.ts +83 -0
  236. package/dist/blocks/identities/index.js +103 -0
  237. package/dist/blocks/imports/index.d.ts +159 -0
  238. package/dist/blocks/imports/index.js +227 -0
  239. package/dist/blocks/inbox/index.d.ts +22 -3
  240. package/dist/blocks/inbox/index.js +77 -4
  241. package/dist/blocks/inbox/react/index.d.ts +3 -2
  242. package/dist/blocks/inbox/react/index.js +55 -199
  243. package/dist/blocks/inbox/react/server.d.ts +2 -1
  244. package/dist/blocks/inbox/solid/index.d.ts +27 -0
  245. package/dist/blocks/inbox/solid/index.js +32 -0
  246. package/dist/blocks/inbox/svelte/index.d.ts +27 -0
  247. package/dist/blocks/inbox/svelte/index.js +32 -0
  248. package/dist/blocks/inbox/vue/index.d.ts +27 -0
  249. package/dist/blocks/inbox/vue/index.js +32 -0
  250. package/dist/blocks/index.d.ts +25 -61
  251. package/dist/blocks/index.js +192 -56
  252. package/dist/blocks/inventory/index.d.ts +181 -0
  253. package/dist/blocks/inventory/index.js +219 -0
  254. package/dist/blocks/invoices/index.d.ts +154 -0
  255. package/dist/blocks/invoices/index.js +216 -0
  256. package/dist/blocks/jobs/index.d.ts +156 -33
  257. package/dist/blocks/jobs/index.js +675 -261
  258. package/dist/blocks/knowledge/index.d.ts +10 -3
  259. package/dist/blocks/knowledge/index.js +17 -3
  260. package/dist/blocks/leave/index.d.ts +241 -0
  261. package/dist/blocks/leave/index.js +209 -0
  262. package/dist/blocks/memory/index.d.ts +9 -4
  263. package/dist/blocks/memory/index.js +48 -12
  264. package/dist/blocks/metrics/index.d.ts +174 -0
  265. package/dist/blocks/metrics/index.js +217 -0
  266. package/dist/blocks/mfa/index.d.ts +7 -0
  267. package/dist/blocks/mfa/index.js +12 -0
  268. package/dist/blocks/mfa/react/index.d.ts +30 -0
  269. package/dist/blocks/mfa/react/index.js +45 -0
  270. package/dist/blocks/mfa/react/server.d.ts +9 -0
  271. package/dist/blocks/mfa/react/server.js +12 -0
  272. package/dist/blocks/mfa/solid/index.d.ts +20 -0
  273. package/dist/blocks/mfa/solid/index.js +23 -0
  274. package/dist/blocks/mfa/svelte/index.d.ts +20 -0
  275. package/dist/blocks/mfa/svelte/index.js +23 -0
  276. package/dist/blocks/mfa/vue/index.d.ts +20 -0
  277. package/dist/blocks/mfa/vue/index.js +23 -0
  278. package/dist/blocks/notifications/index.d.ts +342 -25
  279. package/dist/blocks/notifications/index.js +733 -104
  280. package/dist/blocks/notifications/react/index.d.ts +7 -32
  281. package/dist/blocks/notifications/react/index.js +23 -49
  282. package/dist/blocks/notifications/react/server.d.ts +2 -1
  283. package/dist/blocks/notifications/solid/index.d.ts +13 -0
  284. package/dist/blocks/notifications/solid/index.js +14 -0
  285. package/dist/blocks/notifications/svelte/index.d.ts +13 -0
  286. package/dist/blocks/notifications/svelte/index.js +14 -0
  287. package/dist/blocks/notifications/vue/index.d.ts +13 -0
  288. package/dist/blocks/notifications/vue/index.js +14 -0
  289. package/dist/blocks/number-sequences/index.d.ts +45 -0
  290. package/dist/blocks/number-sequences/index.js +49 -0
  291. package/dist/blocks/oauth-server/index.d.ts +228 -0
  292. package/dist/blocks/oauth-server/index.js +309 -0
  293. package/dist/blocks/onboarding/index.d.ts +8 -3
  294. package/dist/blocks/onboarding/index.js +17 -63
  295. package/dist/blocks/onboarding/react/index.d.ts +3 -12
  296. package/dist/blocks/onboarding/react/index.js +18 -60
  297. package/dist/blocks/onboarding/react/server.d.ts +2 -2
  298. package/dist/blocks/onboarding/react/server.js +2 -2
  299. package/dist/blocks/onboarding/solid/index.d.ts +13 -0
  300. package/dist/blocks/onboarding/solid/index.js +14 -0
  301. package/dist/blocks/onboarding/svelte/index.d.ts +13 -0
  302. package/dist/blocks/onboarding/svelte/index.js +14 -0
  303. package/dist/blocks/onboarding/vue/index.d.ts +13 -0
  304. package/dist/blocks/onboarding/vue/index.js +14 -0
  305. package/dist/blocks/orders/index.d.ts +264 -0
  306. package/dist/blocks/orders/index.js +589 -0
  307. package/dist/blocks/organizations/index.d.ts +31 -238
  308. package/dist/blocks/organizations/index.js +49 -392
  309. package/dist/blocks/organizations/react/index.d.ts +108 -0
  310. package/dist/blocks/organizations/react/index.js +113 -0
  311. package/dist/blocks/organizations/react/server.d.ts +11 -0
  312. package/dist/blocks/organizations/react/server.js +15 -0
  313. package/dist/blocks/organizations/solid/index.d.ts +34 -0
  314. package/dist/blocks/organizations/solid/index.js +32 -0
  315. package/dist/blocks/organizations/svelte/index.d.ts +34 -0
  316. package/dist/blocks/organizations/svelte/index.js +32 -0
  317. package/dist/blocks/organizations/vue/index.d.ts +34 -0
  318. package/dist/blocks/organizations/vue/index.js +32 -0
  319. package/dist/blocks/outbox/index.d.ts +12 -3
  320. package/dist/blocks/outbox/index.js +85 -46
  321. package/dist/blocks/parties/index.d.ts +181 -0
  322. package/dist/blocks/parties/index.js +258 -0
  323. package/dist/blocks/pipelines/index.d.ts +189 -0
  324. package/dist/blocks/pipelines/index.js +204 -0
  325. package/dist/blocks/profiles/index.d.ts +13 -8
  326. package/dist/blocks/profiles/index.js +19 -6
  327. package/dist/blocks/promotions/index.d.ts +125 -0
  328. package/dist/blocks/promotions/index.js +123 -0
  329. package/dist/blocks/push/index.d.ts +48 -28
  330. package/dist/blocks/push/index.js +45 -16
  331. package/dist/blocks/quotes/index.d.ts +152 -0
  332. package/dist/blocks/quotes/index.js +209 -0
  333. package/dist/blocks/rank/index.d.ts +71 -0
  334. package/dist/blocks/rank/index.js +53 -0
  335. package/dist/blocks/reactions/index.d.ts +18 -0
  336. package/dist/blocks/reactions/index.js +26 -0
  337. package/dist/blocks/reactions/react/index.d.ts +23 -0
  338. package/dist/blocks/reactions/react/index.js +46 -0
  339. package/dist/blocks/reactions/react/server.d.ts +6 -0
  340. package/dist/blocks/reactions/react/server.js +7 -0
  341. package/dist/blocks/reactions/solid/index.d.ts +13 -0
  342. package/dist/blocks/reactions/solid/index.js +14 -0
  343. package/dist/blocks/reactions/svelte/index.d.ts +13 -0
  344. package/dist/blocks/reactions/svelte/index.js +14 -0
  345. package/dist/blocks/reactions/vue/index.d.ts +13 -0
  346. package/dist/blocks/reactions/vue/index.js +14 -0
  347. package/dist/blocks/relations/index.d.ts +180 -0
  348. package/dist/blocks/relations/index.js +254 -0
  349. package/dist/blocks/reminders/index.d.ts +177 -0
  350. package/dist/blocks/reminders/index.js +171 -0
  351. package/dist/blocks/reviews/index.d.ts +148 -0
  352. package/dist/blocks/reviews/index.js +139 -0
  353. package/dist/blocks/rules/index.d.ts +169 -0
  354. package/dist/blocks/rules/index.js +163 -0
  355. package/dist/blocks/rules/react/index.d.ts +34 -0
  356. package/dist/blocks/rules/react/index.js +55 -0
  357. package/dist/blocks/rules/react/server.d.ts +6 -0
  358. package/dist/blocks/rules/react/server.js +7 -0
  359. package/dist/blocks/rules/solid/index.d.ts +13 -0
  360. package/dist/blocks/rules/solid/index.js +14 -0
  361. package/dist/blocks/rules/svelte/index.d.ts +13 -0
  362. package/dist/blocks/rules/svelte/index.js +14 -0
  363. package/dist/blocks/rules/vue/index.d.ts +13 -0
  364. package/dist/blocks/rules/vue/index.js +14 -0
  365. package/dist/blocks/saved-views/index.d.ts +17 -0
  366. package/dist/blocks/saved-views/index.js +29 -0
  367. package/dist/blocks/saved-views/react/index.d.ts +34 -0
  368. package/dist/blocks/saved-views/react/index.js +57 -0
  369. package/dist/blocks/saved-views/react/server.d.ts +7 -0
  370. package/dist/blocks/saved-views/react/server.js +7 -0
  371. package/dist/blocks/saved-views/solid/index.d.ts +13 -0
  372. package/dist/blocks/saved-views/solid/index.js +14 -0
  373. package/dist/blocks/saved-views/svelte/index.d.ts +13 -0
  374. package/dist/blocks/saved-views/svelte/index.js +14 -0
  375. package/dist/blocks/saved-views/vue/index.d.ts +13 -0
  376. package/dist/blocks/saved-views/vue/index.js +14 -0
  377. package/dist/blocks/search/index.d.ts +31 -0
  378. package/dist/blocks/search/index.js +61 -0
  379. package/dist/blocks/search/react/index.d.ts +36 -0
  380. package/dist/blocks/search/react/index.js +49 -0
  381. package/dist/blocks/search/react/server.d.ts +7 -0
  382. package/dist/blocks/search/react/server.js +8 -0
  383. package/dist/blocks/search/solid/index.d.ts +13 -0
  384. package/dist/blocks/search/solid/index.js +14 -0
  385. package/dist/blocks/search/svelte/index.d.ts +13 -0
  386. package/dist/blocks/search/svelte/index.js +14 -0
  387. package/dist/blocks/search/vue/index.d.ts +13 -0
  388. package/dist/blocks/search/vue/index.js +14 -0
  389. package/dist/blocks/service-principals/index.d.ts +126 -0
  390. package/dist/blocks/service-principals/index.js +107 -0
  391. package/dist/blocks/sessions/index.d.ts +7 -0
  392. package/dist/blocks/sessions/index.js +14 -0
  393. package/dist/blocks/sessions/react/index.d.ts +31 -0
  394. package/dist/blocks/sessions/react/index.js +51 -0
  395. package/dist/blocks/sessions/react/server.d.ts +9 -0
  396. package/dist/blocks/sessions/react/server.js +11 -0
  397. package/dist/blocks/sessions/solid/index.d.ts +20 -0
  398. package/dist/blocks/sessions/solid/index.js +23 -0
  399. package/dist/blocks/sessions/svelte/index.d.ts +20 -0
  400. package/dist/blocks/sessions/svelte/index.js +23 -0
  401. package/dist/blocks/sessions/vue/index.d.ts +20 -0
  402. package/dist/blocks/sessions/vue/index.js +23 -0
  403. package/dist/blocks/settings/index.d.ts +20 -86
  404. package/dist/blocks/settings/index.js +28 -102
  405. package/dist/blocks/settings/react/index.d.ts +25 -0
  406. package/dist/blocks/settings/react/index.js +37 -0
  407. package/dist/blocks/settings/react/server.d.ts +7 -0
  408. package/dist/blocks/settings/react/server.js +7 -0
  409. package/dist/blocks/settings/solid/index.d.ts +13 -0
  410. package/dist/blocks/settings/solid/index.js +14 -0
  411. package/dist/blocks/settings/svelte/index.d.ts +13 -0
  412. package/dist/blocks/settings/svelte/index.js +14 -0
  413. package/dist/blocks/settings/vue/index.d.ts +13 -0
  414. package/dist/blocks/settings/vue/index.js +14 -0
  415. package/dist/blocks/share-links/index.d.ts +106 -0
  416. package/dist/blocks/share-links/index.js +102 -0
  417. package/dist/blocks/shared-signals/index.d.ts +395 -0
  418. package/dist/blocks/shared-signals/index.js +880 -0
  419. package/dist/blocks/signing-keys/index.d.ts +29 -0
  420. package/dist/blocks/signing-keys/index.js +161 -0
  421. package/dist/blocks/sla/index.d.ts +114 -0
  422. package/dist/blocks/sla/index.js +122 -0
  423. package/dist/blocks/sso/index.d.ts +169 -147
  424. package/dist/blocks/sso/index.js +258 -321
  425. package/dist/blocks/state-machine/index.d.ts +105 -0
  426. package/dist/blocks/state-machine/index.js +116 -0
  427. package/dist/blocks/tags/index.d.ts +20 -0
  428. package/dist/blocks/tags/index.js +28 -0
  429. package/dist/blocks/tags/react/index.d.ts +28 -0
  430. package/dist/blocks/tags/react/index.js +47 -0
  431. package/dist/blocks/tags/react/server.d.ts +7 -0
  432. package/dist/blocks/tags/react/server.js +7 -0
  433. package/dist/blocks/tags/solid/index.d.ts +13 -0
  434. package/dist/blocks/tags/solid/index.js +14 -0
  435. package/dist/blocks/tags/svelte/index.d.ts +13 -0
  436. package/dist/blocks/tags/svelte/index.js +14 -0
  437. package/dist/blocks/tags/vue/index.d.ts +13 -0
  438. package/dist/blocks/tags/vue/index.js +14 -0
  439. package/dist/blocks/targets/index.d.ts +82 -0
  440. package/dist/blocks/targets/index.js +73 -0
  441. package/dist/blocks/teams/index.d.ts +61 -0
  442. package/dist/blocks/teams/index.js +83 -0
  443. package/dist/blocks/templates/index.d.ts +362 -0
  444. package/dist/blocks/templates/index.js +483 -0
  445. package/dist/blocks/time-tracking/index.d.ts +250 -0
  446. package/dist/blocks/time-tracking/index.js +317 -0
  447. package/dist/blocks/trash/index.d.ts +78 -0
  448. package/dist/blocks/trash/index.js +79 -0
  449. package/dist/blocks/undo/index.d.ts +9 -0
  450. package/dist/blocks/undo/index.js +14 -0
  451. package/dist/blocks/undo/react/index.d.ts +17 -0
  452. package/dist/blocks/undo/react/index.js +24 -0
  453. package/dist/blocks/undo/react/server.d.ts +7 -0
  454. package/dist/blocks/undo/react/server.js +7 -0
  455. package/dist/blocks/undo/solid/index.d.ts +13 -0
  456. package/dist/blocks/undo/solid/index.js +14 -0
  457. package/dist/blocks/undo/svelte/index.d.ts +13 -0
  458. package/dist/blocks/undo/svelte/index.js +14 -0
  459. package/dist/blocks/undo/vue/index.d.ts +13 -0
  460. package/dist/blocks/undo/vue/index.js +14 -0
  461. package/dist/blocks/usage/index.d.ts +10 -4
  462. package/dist/blocks/usage/index.js +16 -233
  463. package/dist/blocks/usage/react/index.d.ts +23 -0
  464. package/dist/blocks/usage/react/index.js +38 -0
  465. package/dist/blocks/usage/react/server.d.ts +7 -0
  466. package/dist/blocks/usage/react/server.js +7 -0
  467. package/dist/blocks/usage/solid/index.d.ts +13 -0
  468. package/dist/blocks/usage/solid/index.js +14 -0
  469. package/dist/blocks/usage/svelte/index.d.ts +13 -0
  470. package/dist/blocks/usage/svelte/index.js +14 -0
  471. package/dist/blocks/usage/vue/index.d.ts +13 -0
  472. package/dist/blocks/usage/vue/index.js +14 -0
  473. package/dist/blocks/versions/index.d.ts +169 -0
  474. package/dist/blocks/versions/index.js +288 -0
  475. package/dist/blocks/waitlist/index.d.ts +57 -19
  476. package/dist/blocks/waitlist/index.js +46 -12
  477. package/dist/blocks/webhooks/index.d.ts +269 -137
  478. package/dist/blocks/webhooks/index.js +752 -179
  479. package/dist/blocks/work-items/index.d.ts +208 -0
  480. package/dist/blocks/work-items/index.js +305 -0
  481. package/dist/blocks/workflow-builder/index.d.ts +26 -6
  482. package/dist/blocks/workflow-builder/index.js +30 -5
  483. package/dist/blocks/workflow-builder/react/index.d.ts +4 -19
  484. package/dist/blocks/workflow-builder/react/index.js +45 -89
  485. package/dist/blocks/workflow-builder/solid/index.d.ts +20 -0
  486. package/dist/blocks/workflow-builder/solid/index.js +23 -0
  487. package/dist/blocks/workflow-builder/svelte/index.d.ts +20 -0
  488. package/dist/blocks/workflow-builder/svelte/index.js +23 -0
  489. package/dist/blocks/workflow-builder/vue/index.d.ts +20 -0
  490. package/dist/blocks/workflow-builder/vue/index.js +23 -0
  491. package/dist/blocks/workflows/index.d.ts +20 -3
  492. package/dist/blocks/workflows/index.js +27 -3
  493. package/dist/blocks/workflows/react/index.d.ts +5 -20
  494. package/dist/blocks/workflows/react/index.js +41 -113
  495. package/dist/blocks/workflows/solid/index.d.ts +20 -0
  496. package/dist/blocks/workflows/solid/index.js +23 -0
  497. package/dist/blocks/workflows/svelte/index.d.ts +20 -0
  498. package/dist/blocks/workflows/svelte/index.js +23 -0
  499. package/dist/blocks/workflows/vue/index.d.ts +20 -0
  500. package/dist/blocks/workflows/vue/index.js +23 -0
  501. package/dist/blocks-D2WQ63PI.js +84 -0
  502. package/dist/bookings-EJAVAuVz.js +181 -0
  503. package/dist/build-6jmaPAgx.js +689 -0
  504. package/dist/build-Cm0T5MVG.js +1815 -0
  505. package/dist/calendar-1J1E5dLq.js +801 -0
  506. package/dist/channel-D-LHCY11.d.ts +78 -0
  507. package/dist/channels-C-GCoNLd.js +114 -0
  508. package/dist/chat-sdk/index.d.ts +131 -7
  509. package/dist/chat-sdk/index.js +154 -6
  510. package/dist/chat-sdk/react/index.d.ts +2 -1
  511. package/dist/chat-sdk/react/index.js +1 -2
  512. package/dist/chat-sdk/react/server.d.ts +2 -1
  513. package/dist/chat-sdk/react/server.js +1 -2
  514. package/dist/cli/add-BhI_nXAo.js +75 -0
  515. package/dist/cli/add-CUS0AiBh.js +651 -0
  516. package/dist/cli/add-ojbcMxyp.js +1 -0
  517. package/dist/cli/adopt-D0ASVx2G.js +1 -0
  518. package/dist/cli/adopt-DwcU6CJd.js +412 -0
  519. package/dist/cli/agent-CCrTYK3W.js +176 -0
  520. package/dist/cli/apply-DBXC0Z5I.js +332 -0
  521. package/dist/cli/bin.js +40 -20
  522. package/dist/cli/blocks-B15ltTFn.js +124 -0
  523. package/dist/cli/blocks-BXeqIzWN.js +1 -0
  524. package/dist/cli/cache-CPBYJAkb.js +502 -0
  525. package/dist/cli/catalog-Di15TkM2.js +187 -0
  526. package/dist/cli/codemod-CrI33UR2.js +985 -0
  527. package/dist/cli/command-D_HI1mp1.js +853 -0
  528. package/dist/cli/completion-DzYo025z.js +205 -0
  529. package/dist/cli/completion-En43UcyJ.js +30 -0
  530. package/dist/cli/completion-Vry-Wjw8.js +1 -0
  531. package/dist/cli/config-Bi_UBxXl.js +1451 -0
  532. package/dist/cli/config-DsqQr5z3.js +1 -0
  533. package/dist/cli/config-DyJgo2d9.js +39 -0
  534. package/dist/cli/config-edit-Ct1lXe8a.js +603 -0
  535. package/dist/cli/db-DT1bGB02.js +78 -0
  536. package/dist/cli/design-edit-B-WsnhUF.js +175 -0
  537. package/dist/cli/detect-BeLVeNpA.js +84 -0
  538. package/dist/cli/dist-D_VbPAMR.js +129 -0
  539. package/dist/cli/dist-DuiMMRbJ.js +1112 -0
  540. package/dist/cli/doctor-wACp5w6N.js +3508 -0
  541. package/dist/cli/emit-j0zZ6NE_.js +1061 -0
  542. package/dist/cli/env-2v9JrxSr.js +142 -0
  543. package/dist/cli/env-Cf5OTqbK.js +1087 -0
  544. package/dist/cli/env-Ch99nTQw.js +1 -0
  545. package/dist/cli/env-DkBe35Rv.js +1 -0
  546. package/dist/cli/errors-Caiz_0so.js +98 -0
  547. package/dist/cli/fastest-levenshtein-dhRRvrM2.js +120 -0
  548. package/dist/cli/files-DDvAwTko.js +963 -0
  549. package/dist/cli/gen-BhquLu7l.js +304 -0
  550. package/dist/cli/guards-CUlDNYZs.js +8 -0
  551. package/dist/cli/index.d.ts +260 -129
  552. package/dist/cli/index.js +13 -10
  553. package/dist/cli/init-BwLTO6XG.js +400 -0
  554. package/dist/cli/introspect-B-gXAIqs.js +51 -0
  555. package/dist/cli/io-BiPX-_J1.js +37 -0
  556. package/dist/cli/jsonc-C8M0EhHB.js +1 -0
  557. package/dist/cli/keys-hwtdwdkT.js +106 -0
  558. package/dist/cli/live-BFfYoE0_.js +329 -0
  559. package/dist/cli/mcp-Bdm2oGmL.js +237 -0
  560. package/dist/cli/metadata-DikbSOE0.js +138 -0
  561. package/dist/cli/migration-safety-LaGVPPuD.js +206 -0
  562. package/dist/cli/module-migration-CLkZ8jpw.js +592 -0
  563. package/dist/cli/moved-B7UFO_OM.js +152 -0
  564. package/dist/cli/parse-CwV5a6dA.js +170 -0
  565. package/dist/cli/preset-DQ1DxMtI.js +129 -0
  566. package/dist/cli/prompts-Bvg_DBpe.js +1137 -0
  567. package/dist/cli/redact-PjNswZOs.js +35 -0
  568. package/dist/cli/rolldown-runtime-kJ_i4yPo.js +26 -0
  569. package/dist/cli/run-BLJj7SuM.js +685 -0
  570. package/dist/cli/run-DliGNdjI.js +1507 -0
  571. package/dist/cli/scaffold-6bv24GSP.js +898 -0
  572. package/dist/cli/scaffold-DUz5fa-k.js +1 -0
  573. package/dist/cli/seed-CIJaL1Ao.js +113 -0
  574. package/dist/cli/seed-ClGWseBT.js +1 -0
  575. package/dist/cli/shared-CNcvDOLt.js +145 -0
  576. package/dist/cli/shell-Btv_4Yhe.js +10 -0
  577. package/dist/cli/skills-CaxIQhzW.js +121 -0
  578. package/dist/cli/snapshot-Dvcx0BSl.js +347 -0
  579. package/dist/cli/source-args-BNhagtpw.js +47 -0
  580. package/dist/cli/spec-BewE6r6J.js +7501 -0
  581. package/dist/cli/spec-DRDaIq8f.js +1 -0
  582. package/dist/cli/sql-BBkchli4.js +326 -0
  583. package/dist/cli/sql-BCQt5TDs.js +2 -0
  584. package/dist/cli/stack-status-LeEoCtV1.js +456 -0
  585. package/dist/cli/style-2JfIPVMQ.js +29 -0
  586. package/dist/cli/supabase-toml-DjLgBYEo.js +1153 -0
  587. package/dist/cli/sync-CJ-ft-tl.js +88 -0
  588. package/dist/cli/topics-BBE1-Vrg.js +30 -0
  589. package/dist/cli/trace-VbdO6bcN.js +7 -0
  590. package/dist/cli/typegen--TfvOPLh.js +494 -0
  591. package/dist/cli/typegen-version-BNBPI4Eu.js +9 -0
  592. package/dist/cli/validate-BfWNKvxy.js +7522 -0
  593. package/dist/cli/version-D1wM9DNb.js +4 -0
  594. package/dist/cli/write-Dp1XlAVM.js +198 -0
  595. package/dist/client/index.d.ts +7 -4
  596. package/dist/client/index.js +152 -6
  597. package/dist/client/native/index.d.ts +71 -4
  598. package/dist/client/native/index.js +65 -6
  599. package/dist/client-13Ii0c0P.js +84 -0
  600. package/dist/client-9zIKhf5D.d.ts +58 -0
  601. package/dist/client-AxwF58Eo.js +98 -0
  602. package/dist/client-B0rvMvA8.d.ts +52 -0
  603. package/dist/client-B5nnqDmz.d.ts +39 -0
  604. package/dist/client-B7LCXnnY.d.ts +59 -0
  605. package/dist/client-B9CqzgPO.js +75 -0
  606. package/dist/client-B9H4BZJh.d.ts +455 -0
  607. package/dist/client-BGnJ5WJi.js +438 -0
  608. package/dist/client-BLKpcAs0.d.ts +34 -0
  609. package/dist/client-BO9fQgBB.d.ts +155 -0
  610. package/dist/client-B_r4denm.d.ts +135 -0
  611. package/dist/client-BaynD5V-.d.ts +388 -0
  612. package/dist/client-BfgwocyT.js +155 -0
  613. package/dist/client-BpS8a6Fm.js +51 -0
  614. package/dist/client-BtBkVSk2.d.ts +108 -0
  615. package/dist/client-ByGlM0YF.d.ts +101 -0
  616. package/dist/client-BzCv4kKE.js +65 -0
  617. package/dist/client-C-2ajnhM.js +89 -0
  618. package/dist/client-C3dLIsJv.d.ts +122 -0
  619. package/dist/client-C597NIlL.d.ts +277 -0
  620. package/dist/client-C5mUEb2n.js +55 -0
  621. package/dist/client-CFeWXNXy.js +133 -0
  622. package/dist/client-CWs3X4g1.js +120 -0
  623. package/dist/client-Cgxj38RS.d.ts +419 -0
  624. package/dist/client-CjyTNdt1.d.ts +65 -0
  625. package/dist/client-CmHsfDHU.js +438 -0
  626. package/dist/client-CpMv4-v5.d.ts +100 -0
  627. package/dist/client-CsRpAyIv.d.ts +68 -0
  628. package/dist/client-CvITjt-9.js +310 -0
  629. package/dist/client-D0502FgY.js +1051 -0
  630. package/dist/client-D727oIVC.js +169 -0
  631. package/dist/client-D9zBl9PT.d.ts +103 -0
  632. package/dist/client-DG7FwgZD.js +104 -0
  633. package/dist/client-DNq8xYb-.js +52 -0
  634. package/dist/client-DR_YEGnc.d.ts +130 -0
  635. package/dist/client-DZXFDaQE.d.ts +157 -0
  636. package/dist/client-Diu2lPbg.d.ts +218 -0
  637. package/dist/client-Dk8gY9hi.d.ts +34 -0
  638. package/dist/client-Ezlbskjq.js +60 -0
  639. package/dist/client-Fi8CoJcs.d.ts +263 -0
  640. package/dist/client-LVa6yC9u.d.ts +107 -0
  641. package/dist/client-WXJwUhr1.d.ts +162 -0
  642. package/dist/client-WgrPIHH-.js +213 -0
  643. package/dist/client-ZTtSV3l8.js +40 -0
  644. package/dist/client-ckXfdy1k.js +38 -0
  645. package/dist/client-fpvgtQKE.js +128 -0
  646. package/dist/client-iB5axfa0.js +209 -0
  647. package/dist/client-jvtwGFy4.js +137 -0
  648. package/dist/client-kI6vCKVI.js +288 -0
  649. package/dist/client-kKdkLGPB.d.ts +131 -0
  650. package/dist/client-pxjbgOz6.js +376 -0
  651. package/dist/client-rp7YfOg1.js +67 -0
  652. package/dist/cloud-event-bwsBwVNG.d.ts +64 -0
  653. package/dist/codecs-Bm46sVxr.d.ts +215 -0
  654. package/dist/codecs-C7E_OoiC.js +358 -0
  655. package/dist/codegen-2m4SKVdi.d.ts +1654 -0
  656. package/dist/comments-N7Bi-oTW.js +230 -0
  657. package/dist/commerce/index.d.ts +211 -0
  658. package/dist/commerce/index.js +517 -0
  659. package/dist/compiler-C6E3WwIi.d.ts +14 -0
  660. package/dist/compose-CO_cljl3.js +53 -0
  661. package/dist/composite-CPV0thLs.js +130 -0
  662. package/dist/composite-DMMA_Whg.d.ts +67 -0
  663. package/dist/config/index.d.ts +7 -5
  664. package/dist/config/index.js +7 -4
  665. package/dist/config-C4RQDF6t.js +3896 -0
  666. package/dist/config-CkyahUjo.js +558 -0
  667. package/dist/connector-Cp8CqssJ.d.ts +107 -0
  668. package/dist/connectors-CZdfZcIg.d.ts +141 -0
  669. package/dist/context-B8_p3MXo.js +11 -0
  670. package/dist/context-BDDgjoxz.js +41 -0
  671. package/dist/context-C-bHOtoD.js +5 -0
  672. package/dist/context-CCfX2szU.d.ts +377 -0
  673. package/dist/context-D6ZMKc2L.js +19 -0
  674. package/dist/context-wDKxSl9x.js +9 -0
  675. package/dist/controller-CCb9tHw_.d.ts +46 -0
  676. package/dist/controller-D6NyNrlZ.js +79 -0
  677. package/dist/create/index.d.ts +597 -0
  678. package/dist/create/index.js +2049 -0
  679. package/dist/create/lite/index.d.ts +85 -0
  680. package/dist/create/lite/index.js +126 -0
  681. package/dist/create/supabase/index.d.ts +68 -0
  682. package/dist/create/supabase/index.js +312 -0
  683. package/dist/credentials/index.d.ts +15 -5
  684. package/dist/credentials/index.js +16 -8
  685. package/dist/cron-CUaKTjWC.js +145 -0
  686. package/dist/cron-route-BsgbJ-g4.js +24 -0
  687. package/dist/csv-CVfXqaAu.js +89 -0
  688. package/dist/csv-D3eKxV1T.d.ts +28 -0
  689. package/dist/define-CMcokcZz.js +1896 -0
  690. package/dist/define-DXTC706J.d.ts +1005 -0
  691. package/dist/define-block-B6Gjs57G.js +52 -0
  692. package/dist/define-block-BlHQxDIQ.d.ts +256 -0
  693. package/dist/delegation-Dt8hMJWu.js +140 -0
  694. package/dist/delivery-B1mKaOen.js +30 -0
  695. package/dist/delivery-BeHgwS3k.d.ts +69 -0
  696. package/dist/documents-BYM2viS0.d.ts +96 -0
  697. package/dist/edge/index.d.ts +16 -14
  698. package/dist/edge/index.js +24 -18
  699. package/dist/elysia/index.d.ts +1 -1
  700. package/dist/elysia/index.js +2 -2
  701. package/dist/email-BcmbIWOX.d.ts +42 -0
  702. package/dist/embeddings-CVeOoufZ.js +128 -0
  703. package/dist/embeddings-Da0w4A_0.d.ts +78 -0
  704. package/dist/ended-EcTtzzQJ.d.ts +70 -0
  705. package/dist/entitlements-AmYp2KHX.js +45 -0
  706. package/dist/entitlements-Bn7BTnbg.d.ts +53 -0
  707. package/dist/env/index.d.ts +1 -1
  708. package/dist/env/index.js +9 -4
  709. package/dist/envelope--7d0Q3Se.js +90 -0
  710. package/dist/errors-7MqM7bbV.js +44 -0
  711. package/dist/errors-8i6tSICm.js +301 -0
  712. package/dist/escape-like-AUEPn-C5.d.ts +15 -0
  713. package/dist/eve/index.d.ts +5 -5
  714. package/dist/eve/index.js +9 -9
  715. package/dist/eve-BcEr_hPo.d.ts +151 -0
  716. package/dist/event-calendar-DJXXMJ3x.d.ts +217 -0
  717. package/dist/event-map-Dy2vKHai.js +19 -0
  718. package/dist/events/index.d.ts +4 -4
  719. package/dist/events/index.js +10 -7
  720. package/dist/events-CtAHxPal.d.ts +800 -0
  721. package/dist/events-xbpHkcK9.js +82 -0
  722. package/dist/executor-BicyP8Nl.d.ts +272 -0
  723. package/dist/executor-CHRwEYqt.d.ts +95 -0
  724. package/dist/executor-CIxyatuB.d.ts +174 -0
  725. package/dist/executor-Cex-1PFp.js +735 -0
  726. package/dist/executor-D3K3tycZ.js +147 -0
  727. package/dist/executor-DzJQVTE2.d.ts +39 -0
  728. package/dist/executor-aKUo_Xyb.js +206 -0
  729. package/dist/expo/index.d.ts +4 -4
  730. package/dist/expo/index.js +6 -6
  731. package/dist/expo-sqlite/index.d.ts +3 -3
  732. package/dist/expo-sqlite/index.js +2 -2
  733. package/dist/field-errors-nFnYWvB0.d.ts +113 -0
  734. package/dist/field-formats-Cif5gr7c.js +102 -0
  735. package/dist/field-formats-DCvOQlOy.d.ts +39 -0
  736. package/dist/filter-evaluate-C0ULNfS7.js +214 -0
  737. package/dist/filter-evaluate-CEm52E5s.d.ts +34 -0
  738. package/dist/filter-query-B3lhckKX.js +518 -0
  739. package/dist/filter-query-D3wOD1P_.d.ts +121 -0
  740. package/dist/flags-CtSrkVuW.js +279 -0
  741. package/dist/flags-Dz5PIzFU.d.ts +230 -0
  742. package/dist/flags-sdk/index.d.ts +143 -0
  743. package/dist/flags-sdk/index.js +175 -0
  744. package/dist/form-definition-GVZTILhS.js +311 -0
  745. package/dist/form-definition-sagoefQr.d.ts +95 -0
  746. package/dist/format-CNwSjXUU.d.ts +70 -0
  747. package/dist/framework-C2oL4OaO.d.ts +26 -0
  748. package/dist/framework-Cfm0IspZ.js +51 -0
  749. package/dist/function-contract-B4c0XuTU.d.ts +21 -0
  750. package/dist/function-contract-DmkBg19r.js +5 -0
  751. package/dist/gateway-CJL6ZG17.d.ts +109 -0
  752. package/dist/gateway-options-ClvvfuuU.d.ts +29 -0
  753. package/dist/gateway-options-DcLcWL5_.js +27 -0
  754. package/dist/graph-Cs28bOlK.js +360 -0
  755. package/dist/groups-CxonH3u5.js +16 -0
  756. package/dist/h3/index.d.ts +7 -3
  757. package/dist/h3/index.js +3 -3
  758. package/dist/h3/v1/index.d.ts +1 -1
  759. package/dist/h3/v1/index.js +2 -2
  760. package/dist/hono/index.d.ts +24 -10
  761. package/dist/hono/index.js +50 -22
  762. package/dist/http-BF-V0CUF.js +25 -0
  763. package/dist/impersonation-CDeCzZP6.js +62 -0
  764. package/dist/impersonation-D5chOkrO.d.ts +25 -0
  765. package/dist/inbox-BaUJgHOF.d.ts +400 -0
  766. package/dist/index-8xwnaWHY.d.ts +344 -0
  767. package/dist/index-BurdFUXr.d.ts +131 -0
  768. package/dist/index-Cckxs8IE.d.ts +206 -0
  769. package/dist/index-Ck4oK5vV.d.ts +258 -0
  770. package/dist/index-Co0YsJTk.d.ts +58 -0
  771. package/dist/index-CxmVzT-3.d.ts +86 -0
  772. package/dist/index-D1kMyNc7.d.ts +245 -0
  773. package/dist/index-DL8z_oDo.d.ts +227 -0
  774. package/dist/index-DMONTkSf.d.ts +202 -0
  775. package/dist/index-DTQbC3CW.d.ts +58 -0
  776. package/dist/index-DcijDfh1.d.ts +97 -0
  777. package/dist/index-MCXVzkXs.d.ts +722 -0
  778. package/dist/index-gXy3R1Uq.d.ts +138 -0
  779. package/dist/index.d.ts +15 -15
  780. package/dist/index.js +15 -14
  781. package/dist/iso4217-A8ev-CNW.js +176 -0
  782. package/dist/json-schema-CpYINXG8.js +548 -0
  783. package/dist/jws-35a8VhFV.d.ts +60 -0
  784. package/dist/jws-milwSg7E.js +191 -0
  785. package/dist/kit-BlcEFQql.d.ts +66 -0
  786. package/dist/kit-gqwkVhGU.js +104 -0
  787. package/dist/knowledge-BYtgA52P.d.ts +187 -0
  788. package/dist/knowledge-CSNKLX-s.js +272 -0
  789. package/dist/lint/index.js +9 -9
  790. package/dist/list/index.d.ts +4 -2
  791. package/dist/list/index.js +4 -2
  792. package/dist/list-query-CBXNfJt4.js +549 -0
  793. package/dist/list-query-DWJIiVz_.d.ts +194 -0
  794. package/dist/live-DwDreq1n.js +239 -0
  795. package/dist/management-D1gG89z2.d.ts +53 -0
  796. package/dist/mcp/index.d.ts +59 -17
  797. package/dist/mcp/index.js +202 -98
  798. package/dist/mcp/sdk/index.d.ts +6 -6
  799. package/dist/mcp/sdk/index.js +7 -7
  800. package/dist/messages-Cx4ttLJJ.js +493 -0
  801. package/dist/methods-7u6vSgz_.js +11 -0
  802. package/dist/metric-definition-95HFoW1V.d.ts +70 -0
  803. package/dist/metric-definition-BjxVn4R5.js +117 -0
  804. package/dist/mfa-DtflCXEt.d.ts +30 -0
  805. package/dist/model-lUafmeBQ.d.ts +311 -0
  806. package/dist/model-messages-CTu-6kBu.js +206 -0
  807. package/dist/money-95Rff2vT.js +185 -0
  808. package/dist/money-DFpWzQvk.d.ts +76 -0
  809. package/dist/money-codec-DCGgzO26.js +41 -0
  810. package/dist/nestjs/index.d.ts +2 -2
  811. package/dist/nestjs/index.js +2 -2
  812. package/dist/next/index.d.ts +26 -16
  813. package/dist/next/index.js +17 -16
  814. package/dist/node/index.d.ts +2 -2
  815. package/dist/node/index.js +3 -3
  816. package/dist/nuxt/index.d.ts +2 -2
  817. package/dist/nuxt/index.js +3 -2
  818. package/dist/onboarding-viTTNWUp.js +68 -0
  819. package/dist/openapi/index.d.ts +3 -3
  820. package/dist/openapi/index.js +2 -2
  821. package/dist/operations-BtuQRwTJ.d.ts +6 -0
  822. package/dist/operations-CsIfMED7.js +29 -0
  823. package/dist/optional-peer-Dx8TaYXw.js +29 -0
  824. package/dist/options-B0FcEKtH.js +5 -0
  825. package/dist/options-B5BU2Yg7.js +11 -0
  826. package/dist/options-B5woz53h.js +5 -0
  827. package/dist/options-B7EJaOX-.js +5 -0
  828. package/dist/options-B9q8CROT.js +9 -0
  829. package/dist/options-BA6jV6py.js +10 -0
  830. package/dist/options-BAW2ZlZ8.js +8 -0
  831. package/dist/options-BMjcVuaI.js +82 -0
  832. package/dist/options-BOOEzor9.js +5 -0
  833. package/dist/options-BZsoPJGX.js +5 -0
  834. package/dist/options-BesyRBnM.js +16 -0
  835. package/dist/options-Bf96aVk5.js +10 -0
  836. package/dist/options-BlOPivzq.js +8 -0
  837. package/dist/options-Blg8lAkz.js +9 -0
  838. package/dist/options-Bn4cu0gt.js +5 -0
  839. package/dist/options-BnoJOwXK.js +8 -0
  840. package/dist/options-Bp7sgKvl.js +30 -0
  841. package/dist/options-BxcFLL1G.js +8 -0
  842. package/dist/options-C1HR4UZd.js +13 -0
  843. package/dist/options-C239TLRF.js +14 -0
  844. package/dist/options-C2HesT4A.js +9 -0
  845. package/dist/options-C3EzJATk.js +10 -0
  846. package/dist/options-C3hZ1fbC.js +10 -0
  847. package/dist/options-C6rEL6U5.js +8 -0
  848. package/dist/options-CAzVf-1T.js +8 -0
  849. package/dist/options-CGKSUFUq.js +5 -0
  850. package/dist/options-CGjGE8xS.js +12 -0
  851. package/dist/options-CK5WiFwG.js +11 -0
  852. package/dist/options-CN7PHkhU.js +8 -0
  853. package/dist/options-CTZNpb2n.js +5 -0
  854. package/dist/options-CUqQ9pm7.js +9 -0
  855. package/dist/options-CVSWgZpY.js +8 -0
  856. package/dist/options-CXFz0xxS.js +8 -0
  857. package/dist/options-CZk_fbbg.js +9 -0
  858. package/dist/options-C_pb1Nd3.js +5 -0
  859. package/dist/options-CbSOj53r.d.ts +52 -0
  860. package/dist/options-ChD15QxJ.js +9 -0
  861. package/dist/options-CkScQRJR.js +12 -0
  862. package/dist/options-CljDnQt2.js +25 -0
  863. package/dist/options-CmraJhd9.js +5 -0
  864. package/dist/options-CoX6VKGb.js +8 -0
  865. package/dist/options-CrC78Tee.js +5 -0
  866. package/dist/options-Ctac2R0Q.js +11 -0
  867. package/dist/options-CyD7OObW.js +17 -0
  868. package/dist/options-D1blDihM.js +9 -0
  869. package/dist/options-D2Gd6VfS.js +8 -0
  870. package/dist/options-D2d1fFuw.js +11 -0
  871. package/dist/options-D40CQzji.js +8 -0
  872. package/dist/options-D7f2VKzj.js +25 -0
  873. package/dist/options-DARkpk2P.js +8 -0
  874. package/dist/options-DCduTMST.js +17 -0
  875. package/dist/options-DDzggjN7.js +8 -0
  876. package/dist/options-DMR68VAC.js +5 -0
  877. package/dist/options-DNKyN5uq.js +20 -0
  878. package/dist/options-DTDxFT6J.js +13 -0
  879. package/dist/options-DWpz3V3F.js +8 -0
  880. package/dist/options-DXqcJyOP.js +10 -0
  881. package/dist/options-DYBQ973I.js +8 -0
  882. package/dist/options-Dh4wu9Ks.js +15 -0
  883. package/dist/options-Dmg1Da9P.js +25 -0
  884. package/dist/options-DsUgamiy.js +5 -0
  885. package/dist/options-EsUh744F.js +13 -0
  886. package/dist/options-Fz6xqu-b.js +5 -0
  887. package/dist/options-HSv8R6h5.js +13 -0
  888. package/dist/options-I8zVkB_y.js +8 -0
  889. package/dist/options-MHhjOoWz.js +5 -0
  890. package/dist/options-MLxMkd5B.js +11 -0
  891. package/dist/options-OJ5zmgr8.js +10 -0
  892. package/dist/options-QKP9FFcK.js +8 -0
  893. package/dist/options-SViK_2x2.js +12 -0
  894. package/dist/options-XgfTctbI.js +5 -0
  895. package/dist/options-_9arpsX9.js +11 -0
  896. package/dist/options-eBPsk4WI.js +11 -0
  897. package/dist/options-kLKILdIu.js +10 -0
  898. package/dist/options-n22NK3PL.js +8 -0
  899. package/dist/options-oeAq4Ho5.js +12 -0
  900. package/dist/options-qU8vgxhO.js +18 -0
  901. package/dist/options-vXMBEWSH.js +5 -0
  902. package/dist/options-wFnK3qWl.js +9 -0
  903. package/dist/options-xVAy3UsV.js +9 -0
  904. package/dist/organizations-Bxrm32IG.js +398 -0
  905. package/dist/orpc/index.d.ts +26 -10
  906. package/dist/orpc/index.js +54 -33
  907. package/dist/otel/index.d.ts +3 -3
  908. package/dist/otel/index.js +42 -7
  909. package/dist/outbox-BCGHl9X6.d.ts +181 -0
  910. package/dist/overlay/index.d.ts +1 -1
  911. package/dist/overlay/index.js +3 -3
  912. package/dist/payments-h45bswA-.js +16 -0
  913. package/dist/pg-error-BV_X8Isq.js +26 -0
  914. package/dist/plugin-D5OIaP93.d.ts +190 -0
  915. package/dist/plugins/actor/index.d.ts +1 -1
  916. package/dist/plugins/actor/index.js +1 -1
  917. package/dist/plugins/rules/index.d.ts +2 -2
  918. package/dist/plugins/rules/index.js +2 -2
  919. package/dist/plugins/soft-delete/index.d.ts +3 -3
  920. package/dist/plugins/soft-delete/index.js +4 -4
  921. package/dist/plugins/tenant/index.d.ts +4 -3
  922. package/dist/plugins/tenant/index.js +3 -3
  923. package/dist/plugins/timestamps/index.d.ts +1 -1
  924. package/dist/plugins/timestamps/index.js +1 -1
  925. package/dist/plugins/validation/index.d.ts +2 -2
  926. package/dist/plugins/validation/index.js +3 -3
  927. package/dist/pool-BBi4mot3.d.ts +117 -0
  928. package/dist/pool-errors-C94tPR_G.js +27 -0
  929. package/dist/ports-B53rB7zg.d.ts +285 -0
  930. package/dist/ports-Bcdppx0G.js +133 -0
  931. package/dist/ports-Dcnuo3HT.d.ts +86 -0
  932. package/dist/postgres/index.d.ts +28 -6
  933. package/dist/postgres/index.js +62 -25
  934. package/dist/postgrest-D6fEMsp4.d.ts +53 -0
  935. package/dist/powersync/index.d.ts +4 -4
  936. package/dist/powersync/index.js +4 -4
  937. package/dist/powersync/react/index.d.ts +8 -3
  938. package/dist/powersync/react/index.js +11 -3
  939. package/dist/preset/index.d.ts +4 -0
  940. package/dist/preset/index.js +4 -0
  941. package/dist/preset-BBrL6_Ln.js +648 -0
  942. package/dist/problem-CEjyhV5T.d.ts +76 -0
  943. package/dist/problem-pIiL3WbE.js +159 -0
  944. package/dist/provider-CQ1SrhLa.d.ts +113 -0
  945. package/dist/provider-DKh2xFZb.js +57 -0
  946. package/dist/push-token-CDMgWT13.d.ts +24 -0
  947. package/dist/push-token-D6REHMMw.js +16 -0
  948. package/dist/query/index.d.ts +2 -2
  949. package/dist/range-DwpWe8e7.js +7 -0
  950. package/dist/range-p5V4rBhZ.d.ts +8 -0
  951. package/dist/rank-keys-DcPMt_Jk.js +60 -0
  952. package/dist/rank-result-Dngpt2n5.d.ts +14 -0
  953. package/dist/rank-result-oUF1DYBm.js +18 -0
  954. package/dist/rate-limit-BtbddDnE.js +49 -0
  955. package/dist/rate-limit-ByfWNX9N.js +325 -0
  956. package/dist/rate-limit-C88MEAOm.d.ts +41 -0
  957. package/dist/ratelimit-headers-Bsxx0Tj2.js +62 -0
  958. package/dist/react/index.d.ts +9 -9
  959. package/dist/react/index.js +3 -4
  960. package/dist/react/native/index.d.ts +1 -1
  961. package/dist/react/native/index.js +2 -2
  962. package/dist/react/server.d.ts +10 -10
  963. package/dist/react/server.js +3 -3
  964. package/dist/react/session.d.ts +2 -2
  965. package/dist/react-BcKACxsj.js +410 -0
  966. package/dist/react-controller-Xn-IU44p.js +40 -0
  967. package/dist/react-env-Cc7Vf6eb.js +13 -0
  968. package/dist/react-router/index.d.ts +6 -6
  969. package/dist/react-router/index.js +7 -7
  970. package/dist/read-set-PWiJfv6S.js +314 -0
  971. package/dist/realtime/index.d.ts +8 -4
  972. package/dist/realtime/index.js +5 -327
  973. package/dist/realtime-status-D2dw1hOE.js +12 -0
  974. package/dist/realtime-status-DcsO00Gw.d.ts +8 -0
  975. package/dist/refusal-Bdr1k47u.d.ts +18 -0
  976. package/dist/refusal-Ch-u9dVd.js +61 -0
  977. package/dist/replicas-BvIL4_jL.js +94 -0
  978. package/dist/resolve-7atr-wWr.d.ts +266 -0
  979. package/dist/resolve-CAR9oaKW.js +869 -0
  980. package/dist/resource-CHGOmg1O.js +463 -0
  981. package/dist/resource-DO4gbVi5.js +91 -0
  982. package/dist/resource-DxcgtHq6.d.ts +106 -0
  983. package/dist/resource-execute-C45ICrN9.d.ts +12 -0
  984. package/dist/resource-types-CC59gMHE.d.ts +141 -0
  985. package/dist/resources-B71O7EVQ.d.ts +7 -0
  986. package/dist/resources-B7htXQeg.js +64 -0
  987. package/dist/respond-Cdg5ibH5.d.ts +93 -0
  988. package/dist/respond-Dpx48ATq.js +95 -0
  989. package/dist/result-COkvI9t5.js +134 -0
  990. package/dist/result-Cj3yWhjH.d.ts +298 -0
  991. package/dist/rrule-zBh3CA1r.js +290 -0
  992. package/dist/rules-4of_Fq-6.js +287 -0
  993. package/dist/run-watch-CQRdpy-f.js +53 -0
  994. package/dist/runtime-BOXURhEW.js +45 -0
  995. package/dist/sales-lines-C6gafAwg.d.ts +28 -0
  996. package/dist/sales-lines-CymdiwYd.js +41 -0
  997. package/dist/sales-shared-DAAGwQwN.d.ts +8 -0
  998. package/dist/sales-shared-DjCuN8xG.js +22 -0
  999. package/dist/scope-DgWjuXUw.js +90 -0
  1000. package/dist/search-BtoWY6n_.js +9 -0
  1001. package/dist/search-LbjCylX5.js +106 -0
  1002. package/dist/server/index.d.ts +157 -51
  1003. package/dist/server/index.js +295 -20
  1004. package/dist/server-types-fXwJoFjt.d.ts +737 -0
  1005. package/dist/session-Djo5t4KQ.d.ts +95 -0
  1006. package/dist/settings-DxXfDUmh.js +90 -0
  1007. package/dist/shared-9B02lczf.js +14 -0
  1008. package/dist/shared-BmMcMoW9.js +89 -0
  1009. package/dist/shared-as0EG51f.js +60 -0
  1010. package/dist/sign-in-D0xN6E_l.js +360 -0
  1011. package/dist/signatures-BMdJ7neI.d.ts +43 -0
  1012. package/dist/signatures-C9CGYZS1.js +145 -0
  1013. package/dist/signers-BjSgNAXP.d.ts +385 -0
  1014. package/dist/signing-keys-Ccr86Y2C.d.ts +90 -0
  1015. package/dist/solid/index.d.ts +8 -8
  1016. package/dist/solid/index.js +3 -8
  1017. package/dist/solid-controller-CZrt1Tg6.d.ts +11 -0
  1018. package/dist/solid-controller-DLsmrczT.js +33 -0
  1019. package/dist/solid-start/index.d.ts +8 -12
  1020. package/dist/solid-start/index.js +8 -7
  1021. package/dist/spec/index.d.ts +25 -5
  1022. package/dist/spec/index.js +37 -4
  1023. package/dist/spec-pins-Dqpml2dZ.d.ts +84 -0
  1024. package/dist/spec-pins-S4PymRxp.js +60 -0
  1025. package/dist/sql/index.d.ts +5 -548
  1026. package/dist/sql/index.js +5 -38398
  1027. package/dist/sql-BQshMgmB.js +422 -0
  1028. package/dist/sql-CgTZOQZ7.js +87439 -0
  1029. package/dist/sso-B5ZoEsXE.d.ts +131 -0
  1030. package/dist/sso-CwAnve68.js +217 -0
  1031. package/dist/ssr/index.d.ts +5 -6
  1032. package/dist/ssr/index.js +4 -4
  1033. package/dist/standard-C3_AAF3g.d.ts +7 -0
  1034. package/dist/standard-DZmwmIhV.js +25 -0
  1035. package/dist/stats-CUhqw6Ev.js +1128 -0
  1036. package/dist/storage/index.d.ts +3 -3
  1037. package/dist/storage/index.js +14 -10
  1038. package/dist/storage-api-B4Ib2Zpo.d.ts +582 -0
  1039. package/dist/store-B5qYKsTh.d.ts +68 -0
  1040. package/dist/streams/index.d.ts +4 -4
  1041. package/dist/streams/index.js +4 -4
  1042. package/dist/streams/redis/index.d.ts +1 -1
  1043. package/dist/streams/redis/index.js +4 -4
  1044. package/dist/stripe/index.d.ts +16 -0
  1045. package/dist/stripe/index.js +14 -0
  1046. package/dist/stripe-NVcNOhHy.d.ts +140 -0
  1047. package/dist/stripe-XZrSmDTf.js +32 -0
  1048. package/dist/subject-readers-81xiWh4M.d.ts +21 -0
  1049. package/dist/subject-readers-DDyPTIOr.js +46 -0
  1050. package/dist/subjects-DP-fvFkk.d.ts +77 -0
  1051. package/dist/subscribers-Cq--DL1E.js +34 -0
  1052. package/dist/supabase-mcp-DomZ-amK.js +28 -0
  1053. package/dist/support-BsqhV6jP.js +522 -0
  1054. package/dist/support-view-CznLe4jq.d.ts +17 -0
  1055. package/dist/svelte/index.d.ts +7 -7
  1056. package/dist/svelte/index.js +2 -2
  1057. package/dist/svelte-controller-CDAujo-_.js +50 -0
  1058. package/dist/svelte-controller-DDbju9CW.d.ts +10 -0
  1059. package/dist/sveltekit/index.d.ts +11 -13
  1060. package/dist/sveltekit/index.js +9 -9
  1061. package/dist/table-schema-pQlER3jj.js +283 -0
  1062. package/dist/tags-7NHyD1P8.d.ts +30 -0
  1063. package/dist/tags-DGldvcA4.js +84 -0
  1064. package/dist/tanstack-db/index.d.ts +2 -2
  1065. package/dist/tanstack-db/index.js +1 -1
  1066. package/dist/tanstack-db/supabase/index.d.ts +5 -6
  1067. package/dist/tanstack-db/supabase/index.js +180 -9
  1068. package/dist/tanstack-start/index.d.ts +7 -7
  1069. package/dist/tanstack-start/index.js +6 -6
  1070. package/dist/tax-DDZUB_oc.d.ts +273 -0
  1071. package/dist/tax-DZDpMMRw.js +140 -0
  1072. package/dist/tee-CdRV1tcj.js +101 -0
  1073. package/dist/template-DdgYjIZ5.js +123 -0
  1074. package/dist/temporal-CB5Fpo5d.js +79 -0
  1075. package/dist/temporal-required-DqRzr7i0.js +20 -0
  1076. package/dist/tenant-B-fiItlJ.js +27 -0
  1077. package/dist/tenant-DW_GmsW4.d.ts +17 -0
  1078. package/dist/tenant-naming-Bsj3Uvap.js +27 -0
  1079. package/dist/testing/index.d.ts +235 -32
  1080. package/dist/testing/index.js +1133 -76
  1081. package/dist/timing-BMCWgpdZ.js +92 -0
  1082. package/dist/topic-DB-1YTMj.js +561 -0
  1083. package/dist/topic-Dgs-eSYQ.d.ts +373 -0
  1084. package/dist/types-BO8lVTun.d.ts +363 -0
  1085. package/dist/types-C_GN-4ed.d.ts +162 -0
  1086. package/dist/types-DGHfTW8_.d.ts +9 -0
  1087. package/dist/types-DM8q3IOr.d.ts +240 -0
  1088. package/dist/types-DOaUIJxW.d.ts +205 -0
  1089. package/dist/types-DZj8CZMH.d.ts +649 -0
  1090. package/dist/types-P1S1cj6N.d.ts +564 -0
  1091. package/dist/types-R6syp1el.js +29 -0
  1092. package/dist/undo-0qM13zul.js +44 -0
  1093. package/dist/undo-D42sPjCf.d.ts +43 -0
  1094. package/dist/usage-BrJGPvCq.js +250 -0
  1095. package/dist/usage-CnQHSM_r.d.ts +202 -0
  1096. package/dist/vault-EnOQJWjn.d.ts +50 -0
  1097. package/dist/vercel-connect/index.d.ts +1 -1
  1098. package/dist/vercel-connect/index.js +4 -4
  1099. package/dist/verify-3NLjUIER.d.ts +142 -0
  1100. package/dist/verify-C9D_jjsQ.js +126 -0
  1101. package/dist/version-Bxj_xcUY.js +4 -0
  1102. package/dist/view-DZ63nqwt.js +105 -0
  1103. package/dist/view-SuASaomx.d.ts +90 -0
  1104. package/dist/vue/index.d.ts +8 -8
  1105. package/dist/vue/index.js +3 -16
  1106. package/dist/vue-controller-C9tFzqAc.js +32 -0
  1107. package/dist/vue-controller-D_ohttBZ.d.ts +11 -0
  1108. package/dist/watch-Blj1mQ9n.js +139 -0
  1109. package/dist/watch-D1wwzZ04.d.ts +84 -0
  1110. package/dist/watch-topic-D-rpUg5n.d.ts +28 -0
  1111. package/dist/watch-topic-miuymrli.js +57 -0
  1112. package/dist/wire-DEY0ajW9.js +45 -0
  1113. package/dist/workflow-builder-C5DBN7yq.js +697 -0
  1114. package/dist/workflow-sdk/builder/index.d.ts +46 -15
  1115. package/dist/workflow-sdk/builder/index.js +69 -21
  1116. package/dist/workflow-sdk/index.d.ts +75 -2
  1117. package/dist/workflow-sdk/index.js +83 -3
  1118. package/dist/workflow-sdk/world/index.d.ts +29 -4
  1119. package/dist/workflow-sdk/world/index.js +137 -59
  1120. package/dist/workflow-sdk-Di5pmCAu.d.ts +161 -0
  1121. package/dist/workflow-sdk-vjDWlnfX.js +243 -0
  1122. package/dist/workflow-sdk-world-DPMdBfzn.js +2103 -0
  1123. package/dist/workflows-DJXoxDZH.d.ts +243 -0
  1124. package/dist/workflows-DzdX28KN.js +282 -0
  1125. package/dist/yjs/index.d.ts +67 -0
  1126. package/dist/yjs/index.js +212 -0
  1127. package/package.json +800 -46
  1128. package/schemas/cli-commands-v1.json +220 -0
  1129. package/schemas/cli-result-v1.json +138 -0
  1130. package/schemas/config-v1.json +4503 -909
  1131. package/schemas/doctor-report-v1.json +30 -0
  1132. package/schemas/snapshot-v2.json +271 -0
  1133. package/skills/better-supabase/SKILL.md +12 -4
  1134. package/skills/better-supabase/references/plugins.md +2 -2
  1135. package/skills/better-supabase/references/ui-recipes.md +19324 -0
  1136. package/skills/better-supabase-api/SKILL.md +14 -14
  1137. package/skills/better-supabase-api/references/adapters.md +12 -2
  1138. package/skills/better-supabase-api/references/ai.md +4 -4
  1139. package/skills/better-supabase-api/references/expo.md +1 -1
  1140. package/skills/better-supabase-api/references/powersync.md +1 -1
  1141. package/skills/better-supabase-api/references/streams-credentials.md +8 -5
  1142. package/skills/better-supabase-auth/SKILL.md +18 -11
  1143. package/skills/better-supabase-auth/references/authorization-providers.md +5 -5
  1144. package/skills/better-supabase-testing/SKILL.md +2 -2
  1145. package/testing/act-cases.json +370 -0
  1146. package/dist/access-sql-CrSbK1q-.js +0 -181
  1147. package/dist/actor-CQTlc1Hh.d.ts +0 -43
  1148. package/dist/adapter-CN45ibbV.js +0 -1691
  1149. package/dist/agents-BY_LQXtQ.d.ts +0 -94
  1150. package/dist/ai-cache-Dfgk8nBT.js +0 -81
  1151. package/dist/ai-cache-DrUMMgp6.d.ts +0 -64
  1152. package/dist/ai-chat-CVLRWbtS.js +0 -744
  1153. package/dist/ai-chat-DXkMy74O.d.ts +0 -590
  1154. package/dist/ai-files-CioLu5du.js +0 -320
  1155. package/dist/ai-tasks-BRQ6iQLc.d.ts +0 -131
  1156. package/dist/announcements-Bouy0Ski.d.ts +0 -72
  1157. package/dist/announcements-p_BFofiR.js +0 -107
  1158. package/dist/api-Dnf2q-Ht.d.ts +0 -370
  1159. package/dist/api-DtHFC037.js +0 -676
  1160. package/dist/api-keys-C8BlF3L2.d.ts +0 -156
  1161. package/dist/assistant-DBlFDZsi.d.ts +0 -147
  1162. package/dist/attributes-5dYul0u0.js +0 -13
  1163. package/dist/authorization-BFCqamMs.d.ts +0 -172
  1164. package/dist/authorizer-ayxUDXXP.js +0 -126
  1165. package/dist/base64-D2gsioCY.js +0 -42
  1166. package/dist/before-route-CnR0C0Jr.js +0 -30
  1167. package/dist/bind-ButSzrHe.js +0 -97
  1168. package/dist/bind-CQ5mPyX1.d.ts +0 -62
  1169. package/dist/block-events-DTxU5tfr.js +0 -91
  1170. package/dist/block-fields-CroxUuF2.js +0 -49
  1171. package/dist/block-fields-D1pfrcIY.d.ts +0 -31
  1172. package/dist/block-helpers-C0Xj8War.d.ts +0 -37
  1173. package/dist/block-helpers-Cy3pB96I.js +0 -222
  1174. package/dist/block-hooks-BPNMIlLl.js +0 -114
  1175. package/dist/block-hooks-DaOVC7SC.d.ts +0 -107
  1176. package/dist/block-transport-bAKh-dGc.js +0 -85
  1177. package/dist/block-transport-inD4fFq-.d.ts +0 -70
  1178. package/dist/build-hPwk3_X5.js +0 -1296
  1179. package/dist/build-meLuYGri.js +0 -689
  1180. package/dist/channel-_2Mx1Oyu.d.ts +0 -70
  1181. package/dist/channels-CkgQ_X60.js +0 -114
  1182. package/dist/cli/add-1dc5wM5k.js +0 -69
  1183. package/dist/cli/bin.d.ts +0 -1
  1184. package/dist/cli/cache-CIfA-jBV.js +0 -483
  1185. package/dist/cli/codemod-JVlTQQG2.js +0 -491
  1186. package/dist/cli/command-DV-StG1x.js +0 -507
  1187. package/dist/cli/config-C2Pz2_4A.js +0 -52
  1188. package/dist/cli/config-DpbF8ML3.js +0 -2
  1189. package/dist/cli/config-M-WzL9O2.js +0 -1175
  1190. package/dist/cli/db-BkcfOlyB.js +0 -53
  1191. package/dist/cli/diff-D1jGdb3Y.js +0 -752
  1192. package/dist/cli/dist-DBPdlPYK.js +0 -1112
  1193. package/dist/cli/dist-DRAVaE6w.js +0 -842
  1194. package/dist/cli/dist-DreZ24Sz.js +0 -129
  1195. package/dist/cli/doctor-VcDtuusV.js +0 -3686
  1196. package/dist/cli/emit-BHHfwUoT.js +0 -1136
  1197. package/dist/cli/env-B--LMhEe.js +0 -514
  1198. package/dist/cli/env-vzBG90Um.js +0 -2
  1199. package/dist/cli/env-zHJtMIBo.js +0 -116
  1200. package/dist/cli/errors-CqTLXe2M.js +0 -72
  1201. package/dist/cli/fastest-levenshtein-CF7BCi9l.js +0 -120
  1202. package/dist/cli/files-BVupXPIC.js +0 -34
  1203. package/dist/cli/gen-DmVj3u4L.js +0 -322
  1204. package/dist/cli/glue-C1UE8gQN.js +0 -468
  1205. package/dist/cli/init-CVZ3s5kl.js +0 -258
  1206. package/dist/cli/introspect-BToGNfm-.js +0 -81
  1207. package/dist/cli/io-CFzJVJ68.js +0 -37
  1208. package/dist/cli/jsonc-BUniUpOk.js +0 -2
  1209. package/dist/cli/keys-CJhtIxJ3.js +0 -85
  1210. package/dist/cli/metadata-DSRKCaf-.js +0 -133
  1211. package/dist/cli/openapi-DWa4Ir1q.js +0 -60
  1212. package/dist/cli/project-DZRaBaY7.js +0 -75
  1213. package/dist/cli/prompts-BdeVmVpg.js +0 -2
  1214. package/dist/cli/prompts-DZJB1nTw.js +0 -1142
  1215. package/dist/cli/read-sets-DjJrm8Wj.js +0 -223
  1216. package/dist/cli/rolldown-runtime-CMFfr-1z.js +0 -26
  1217. package/dist/cli/run-DA6_lg3w.js +0 -389
  1218. package/dist/cli/run-DuN1MX-7.js +0 -705
  1219. package/dist/cli/scaffold-5DenHSxF.js +0 -292
  1220. package/dist/cli/scaffold-CwQUMFRb.js +0 -2
  1221. package/dist/cli/seed-CzBmrGON.js +0 -96
  1222. package/dist/cli/seed-DOmit9Hq.js +0 -2
  1223. package/dist/cli/skills-CnO8QFS7.js +0 -139
  1224. package/dist/cli/snapshot-Bstk6ulj.js +0 -287
  1225. package/dist/cli/source-args-BYfq6imV.js +0 -31
  1226. package/dist/cli/spec-CzosTYm3.js +0 -7438
  1227. package/dist/cli/spec-T_0Bcyw7.js +0 -2
  1228. package/dist/cli/sql-BKOOQAX3.js +0 -517
  1229. package/dist/cli/sql-DJrNDxQm.js +0 -3
  1230. package/dist/cli/sql-layout-D6cphHT3.js +0 -69
  1231. package/dist/cli/style-CB3vxgh0.js +0 -29
  1232. package/dist/cli/supabase-toml-B-bIukQF.js +0 -1095
  1233. package/dist/cli/typegen-Demi5-VQ.js +0 -486
  1234. package/dist/cli/typegen-version-DeFbtzYI.js +0 -8
  1235. package/dist/cli/validate-Ca13ktgz.js +0 -7522
  1236. package/dist/cli/version-B4k0aUxS.js +0 -4
  1237. package/dist/client-wxeTQFtB.js +0 -310
  1238. package/dist/cloud-event-Dune0KI7.d.ts +0 -64
  1239. package/dist/compiler-V1qvcST1.d.ts +0 -14
  1240. package/dist/compose-BHej1acw.js +0 -53
  1241. package/dist/composite-CWAJTRBF.d.ts +0 -146
  1242. package/dist/composite-zTe0TCqj.js +0 -130
  1243. package/dist/config-DlKvtt95.js +0 -540
  1244. package/dist/connector-CySQEFcW.d.ts +0 -107
  1245. package/dist/connectors--PGhmiu0.d.ts +0 -120
  1246. package/dist/context-DsV2SueA.d.ts +0 -246
  1247. package/dist/context-nPDvQ-Zl.js +0 -41
  1248. package/dist/cron-D25Ukpxy.js +0 -145
  1249. package/dist/cron-route-D2AN9SA1.js +0 -24
  1250. package/dist/csv-BZnHA1Py.js +0 -25
  1251. package/dist/define-CFQcvM20.js +0 -1949
  1252. package/dist/define-DmcfoNXB.d.ts +0 -1005
  1253. package/dist/embeddings-4ZvFzjsU.js +0 -127
  1254. package/dist/embeddings-B4vhS-dY.d.ts +0 -68
  1255. package/dist/ended-CcvcRqEd.d.ts +0 -69
  1256. package/dist/entitlements-BYFf0Cdh.js +0 -24
  1257. package/dist/entitlements-Ds8qoYZ-.d.ts +0 -51
  1258. package/dist/envelope-DqnYGRw7.js +0 -47
  1259. package/dist/errors-2M6CKMP4.js +0 -271
  1260. package/dist/errors-rZ7VIqp6.js +0 -44
  1261. package/dist/escape-like-DDWoHzh_.d.ts +0 -15
  1262. package/dist/eve-CoAIcCkq.d.ts +0 -151
  1263. package/dist/events-D1BOCll8.d.ts +0 -551
  1264. package/dist/executor-B-fD7DLt.js +0 -735
  1265. package/dist/executor-B_Hfobee.js +0 -162
  1266. package/dist/executor-C-R4pucm.js +0 -83
  1267. package/dist/executor-CpxLPCiz.d.ts +0 -36
  1268. package/dist/executor-DfEtf0cq.d.ts +0 -164
  1269. package/dist/executor-Drzu3dBK.d.ts +0 -261
  1270. package/dist/executor-ngjKL_Pe.d.ts +0 -30
  1271. package/dist/field-errors-DIe9XYWL.d.ts +0 -109
  1272. package/dist/format-DTXdu8ya.d.ts +0 -70
  1273. package/dist/framework-148t1m3C.d.ts +0 -25
  1274. package/dist/framework-3ey3QmrO.js +0 -51
  1275. package/dist/function-contract-BcZenXMO.d.ts +0 -8
  1276. package/dist/gateway-S9vicgeo.d.ts +0 -130
  1277. package/dist/graph-BGyLLFLX.js +0 -265
  1278. package/dist/hooks-Bhza9Hnr.js +0 -277
  1279. package/dist/http-sbmBe5d2.js +0 -25
  1280. package/dist/impersonation-DcqaTBHx.js +0 -148
  1281. package/dist/inbox-Cd1KCEBL.d.ts +0 -384
  1282. package/dist/index-B72Rvv_j.d.ts +0 -89
  1283. package/dist/index-BCHR4Ucl.d.ts +0 -300
  1284. package/dist/index-BUK7jUzR.d.ts +0 -82
  1285. package/dist/index-Ba1SI-uO.d.ts +0 -1331
  1286. package/dist/index-BfxOaOYs.d.ts +0 -245
  1287. package/dist/index-CicIyqOe.d.ts +0 -55
  1288. package/dist/index-D69h4QqD.d.ts +0 -74
  1289. package/dist/index-DG2SUXDQ.d.ts +0 -58
  1290. package/dist/index-DoNVLHOU.d.ts +0 -206
  1291. package/dist/index-R274XFlg.d.ts +0 -138
  1292. package/dist/index-_4R4b01v.d.ts +0 -257
  1293. package/dist/json-schema-CT4tvrkA.js +0 -548
  1294. package/dist/kit-BhHr9T9v.js +0 -104
  1295. package/dist/kit-W99LCPBS.d.ts +0 -66
  1296. package/dist/knowledge-CAReFpRA.d.ts +0 -176
  1297. package/dist/knowledge-DnHtb64A.js +0 -256
  1298. package/dist/list-query-D3JQeEL7.d.ts +0 -164
  1299. package/dist/list-query-gl808ac1.js +0 -459
  1300. package/dist/live-CTAZQkwl.js +0 -257
  1301. package/dist/messages-CJoHHCWT.js +0 -514
  1302. package/dist/mfa-SZc9YYyb.d.ts +0 -54
  1303. package/dist/model-OgBxvk3N.d.ts +0 -300
  1304. package/dist/model-messages-Cxw_Up4f.js +0 -206
  1305. package/dist/modules-DksjZyMW.js +0 -77
  1306. package/dist/modules-DpPwzC7E.d.ts +0 -192
  1307. package/dist/onboarding-LZvlK1P4.d.ts +0 -62
  1308. package/dist/optional-peer-D1pi-skw.js +0 -24
  1309. package/dist/outbox-DZfAvfzC.d.ts +0 -161
  1310. package/dist/plugin-CPK2HsbY.d.ts +0 -190
  1311. package/dist/pool-gkhbGp2E.d.ts +0 -89
  1312. package/dist/postgrest-BUqLag2Q.d.ts +0 -53
  1313. package/dist/problem-CJvFeGu7.js +0 -126
  1314. package/dist/problem-TvGdxO1t.d.ts +0 -73
  1315. package/dist/provider-DxRTex4x.js +0 -57
  1316. package/dist/provider-ib9wzUDz.d.ts +0 -113
  1317. package/dist/rate-limit-Bw7HgmFj.js +0 -260
  1318. package/dist/react-Bmpo59D7.js +0 -409
  1319. package/dist/react-topic-seAWjL3_.js +0 -38
  1320. package/dist/read-set-DAeWhqPf.js +0 -314
  1321. package/dist/refusal-CFI8-5nf.d.ts +0 -18
  1322. package/dist/refusal-K78A1Vmq.js +0 -61
  1323. package/dist/replicas-CwrYp5Zj.js +0 -94
  1324. package/dist/resolve-Bvgf3ut_.js +0 -786
  1325. package/dist/resolve-MxXVWyhd.d.ts +0 -173
  1326. package/dist/resource--vTrBe6I.d.ts +0 -103
  1327. package/dist/resource-BqNqlYg9.js +0 -91
  1328. package/dist/resource-DA811u_4.js +0 -463
  1329. package/dist/resource-execute-rbKvuCsY.d.ts +0 -12
  1330. package/dist/resource-types-CqB6GWGT.d.ts +0 -141
  1331. package/dist/resources-BVYPnuLo.js +0 -56
  1332. package/dist/resources-DZSk8tXJ.d.ts +0 -7
  1333. package/dist/respond-Cw-zanCm.d.ts +0 -93
  1334. package/dist/respond-volM3ByS.js +0 -91
  1335. package/dist/result-BchM1XZn.d.ts +0 -288
  1336. package/dist/result-DEqHCMKP.js +0 -128
  1337. package/dist/scope-CDHcS7dE.js +0 -90
  1338. package/dist/search-CUWCRYKL.js +0 -9
  1339. package/dist/server-types-CrAmZ8jv.d.ts +0 -614
  1340. package/dist/session-ChiXDZdZ.d.ts +0 -72
  1341. package/dist/shared-CBxosKK3.js +0 -75
  1342. package/dist/shared-DHjhfRdV.js +0 -60
  1343. package/dist/shared-DTneRoxi.js +0 -14
  1344. package/dist/sign-in-D_yoP0PF.js +0 -86
  1345. package/dist/signatures-BRS_p3WD.d.ts +0 -34
  1346. package/dist/signatures-DsWv_bYR.js +0 -103
  1347. package/dist/signers-cpdmZYrv.d.ts +0 -166
  1348. package/dist/spec-pins-CwzDY25w.d.ts +0 -44
  1349. package/dist/spec-pins-DsLfUH7l.js +0 -40
  1350. package/dist/sql-CwuqaQ4Y.js +0 -388
  1351. package/dist/standard-DkzZUneg.js +0 -25
  1352. package/dist/standard-lmkbOtPB.d.ts +0 -7
  1353. package/dist/stats-DhU78Ctf.js +0 -1127
  1354. package/dist/storage-api-CB7Zl1Ci.d.ts +0 -582
  1355. package/dist/store-DsIYEBnv.d.ts +0 -68
  1356. package/dist/stripe-D04h-QBT.d.ts +0 -136
  1357. package/dist/stripe-v-Y2lmop.js +0 -32
  1358. package/dist/supabase-mcp-Cpn5A4i-.js +0 -28
  1359. package/dist/support-D1pFFouF.js +0 -350
  1360. package/dist/support-view-scqMgtOo.d.ts +0 -17
  1361. package/dist/table-schema-htM_SbCW.js +0 -286
  1362. package/dist/tags-BO9LjtWG.d.ts +0 -30
  1363. package/dist/tee-Cb98Vn3b.js +0 -101
  1364. package/dist/template-lPVh-EwW.js +0 -123
  1365. package/dist/temporal-BJGitm-h.js +0 -79
  1366. package/dist/temporal-required-BtynQtM-.js +0 -20
  1367. package/dist/tenant-CM368LXb.d.ts +0 -17
  1368. package/dist/tenant-I1TEZ_BX.js +0 -27
  1369. package/dist/timing-CyTQPubY.js +0 -92
  1370. package/dist/types-6cYK9pbJ.js +0 -29
  1371. package/dist/types-Bb_4-vdW.d.ts +0 -220
  1372. package/dist/types-CD6yCDx3.d.ts +0 -359
  1373. package/dist/types-CbOUc5IH.d.ts +0 -156
  1374. package/dist/types-CoE5Zwy4.d.ts +0 -348
  1375. package/dist/types-DSJ3-m9X.d.ts +0 -192
  1376. package/dist/types-D__3EN0q.d.ts +0 -425
  1377. package/dist/usage-D0NNUFfr.d.ts +0 -177
  1378. package/dist/vault-BpmApxxW.d.ts +0 -50
  1379. package/dist/verify-C91Wyp40.d.ts +0 -142
  1380. package/dist/verify-CJbYfADA.js +0 -124
  1381. package/dist/version-Cq8gfDbd.js +0 -4
  1382. package/dist/view-D5ryq3gz.js +0 -99
  1383. package/dist/view-TpXEUcVN.d.ts +0 -87
  1384. package/dist/watch-BcvtAHOd.js +0 -122
  1385. package/dist/watch-COzRWvVN.d.ts +0 -74
  1386. package/dist/wire-Df3EWkG8.js +0 -45
  1387. package/dist/workflow-builder-CHqHpAVt.js +0 -399
  1388. package/dist/workflow-sdk-C2WJ_G2O.js +0 -173
  1389. package/dist/workflow-sdk-DTZyrvNo.d.ts +0 -98
  1390. package/dist/workflow-sdk-world-CMV1ahFW.js +0 -1399
  1391. package/dist/workflows-CcpCBfIe.d.ts +0 -185
  1392. package/dist/workflows-IvxzG2cl.js +0 -217
@@ -0,0 +1,1815 @@
1
+ import { r as isPlainObject } from "./clone-dN9XOL1K.js";
2
+ import { n as isRecord } from "./guards-6F2bCtQR.js";
3
+ import { s as problemType, t as PROBLEM_CONTENT_TYPE } from "./problem-pIiL3WbE.js";
4
+ import { t as buildJsonSchema } from "./json-schema-CpYINXG8.js";
5
+ import { r as dataschemaOf } from "./cloud-event-CTh9Sr5w.js";
6
+ import { n as planResource } from "./resource-DO4gbVi5.js";
7
+ import { n as pageQuery, r as pageSchema } from "./resource-schemas-BJ518zFH.js";
8
+ import { ROW_EVENT_TYPES } from "./events/index.js";
9
+ import { t as topicStatus } from "./realtime-status-D2dw1hOE.js";
10
+ //#region src/spec/merge.ts
11
+ /** Escapes a key for a JSON Pointer (RFC 6901). */
12
+ function pointerToken(key) {
13
+ return key.replaceAll("~", "~0").replaceAll("/", "~1");
14
+ }
15
+ /**
16
+ * Deep merge: objects merge key by key, anything else (arrays included)
17
+ * is replaced by the patch. `onConflict` hears each replaced leaf whose value
18
+ * differs, with its JSON Pointer. Neither input is changed.
19
+ */
20
+ function mergeJson(base, patch, onConflict, pointer = "") {
21
+ if (!isPlainObject(base) || !isPlainObject(patch)) {
22
+ if (onConflict && base !== void 0 && JSON.stringify(base) !== JSON.stringify(patch)) onConflict(pointer);
23
+ return patch;
24
+ }
25
+ const out = { ...base };
26
+ for (const [key, value] of Object.entries(patch)) out[key] = Object.hasOwn(base, key) ? mergeJson(base[key], value, onConflict, `${pointer}/${pointerToken(key)}`) : value;
27
+ return out;
28
+ }
29
+ //#endregion
30
+ //#region src/spec/schemas.ts
31
+ /** `customer_tags` to `CustomerTags`. */
32
+ function pascal(value) {
33
+ return value.replaceAll(/(^|[_\-.\s])(\w)/g, (_, _sep, char) => char.toUpperCase());
34
+ }
35
+ const schemaRef = (name) => ({ $ref: `#/components/schemas/${name}` });
36
+ const tableDefs = /* @__PURE__ */ new WeakMap();
37
+ /**
38
+ * The 2020-12 `$defs` for every table (`customersRow`, `customersInsert`),
39
+ * built once per metadata object and JSON column config.
40
+ */
41
+ function tableSchemas(meta, json = {}) {
42
+ let byJson = tableDefs.get(meta);
43
+ if (!byJson) {
44
+ byJson = /* @__PURE__ */ new Map();
45
+ tableDefs.set(meta, byJson);
46
+ }
47
+ const key = JSON.stringify(json);
48
+ let defs = byJson.get(key);
49
+ if (!defs) {
50
+ defs = buildJsonSchema({
51
+ meta,
52
+ config: { json }
53
+ })["$defs"];
54
+ byJson.set(key, defs);
55
+ }
56
+ return defs;
57
+ }
58
+ const converted = /* @__PURE__ */ new WeakMap();
59
+ function nameOf(schema) {
60
+ const id = schema["$id"] ?? schema["id"];
61
+ if (typeof id !== "string" || id === "") return;
62
+ return (id.split(/[/#]/u).findLast((part) => part !== "") ?? id).replace(/\.(?:schema\.)?json$/u, "");
63
+ }
64
+ /**
65
+ * Converts a Standard Schema through Standard JSON Schema (2020-12), or
66
+ * `undefined` when the library does not implement it. The schema's `$id`,
67
+ * `id` and `$schema` are lifted out: the id becomes the component name.
68
+ */
69
+ function convertStandard(schema, direction) {
70
+ let cache = converted.get(schema);
71
+ if (!cache) {
72
+ cache = /* @__PURE__ */ new Map();
73
+ converted.set(schema, cache);
74
+ }
75
+ const hit = cache.get(direction);
76
+ if (hit !== void 0) return hit ?? void 0;
77
+ const convert = schema["~standard"].jsonSchema?.[direction];
78
+ if (typeof convert !== "function") {
79
+ cache.set(direction, null);
80
+ return;
81
+ }
82
+ const raw = convert({ target: "draft-2020-12" });
83
+ const name = nameOf(raw);
84
+ const { $schema: _schema, $id: _id, id: _plainId, ...rest } = raw;
85
+ const result = {
86
+ schema: rest,
87
+ ...name ? { name } : {}
88
+ };
89
+ cache.set(direction, result);
90
+ return result;
91
+ }
92
+ //#endregion
93
+ //#region src/spec/presets.ts
94
+ /** JSON Schema for RFC 9457 Problem Details as better-supabase sends them. */
95
+ const PROBLEM_SCHEMA = {
96
+ type: "object",
97
+ required: [
98
+ "type",
99
+ "title",
100
+ "status"
101
+ ],
102
+ properties: {
103
+ type: {
104
+ type: "string",
105
+ format: "uri-reference",
106
+ examples: [problemType("not_found").type]
107
+ },
108
+ title: { type: "string" },
109
+ status: {
110
+ type: "integer",
111
+ minimum: 100,
112
+ maximum: 599
113
+ },
114
+ detail: { type: "string" },
115
+ instance: { type: "string" },
116
+ kind: { type: "string" },
117
+ code: { type: "string" },
118
+ hint: { type: "string" },
119
+ constraint: { type: "string" },
120
+ column: { type: "string" },
121
+ columns: {
122
+ type: "array",
123
+ items: { type: "string" }
124
+ },
125
+ required: {
126
+ type: "string",
127
+ enum: ["aal1", "aal2"]
128
+ },
129
+ scopes: {
130
+ type: "array",
131
+ items: { type: "string" }
132
+ },
133
+ permission: { type: "string" },
134
+ approval: {
135
+ type: "object",
136
+ required: ["id"],
137
+ properties: { id: { type: "string" } }
138
+ },
139
+ issues: {
140
+ type: "array",
141
+ items: {
142
+ type: "object",
143
+ required: ["message"],
144
+ properties: {
145
+ message: { type: "string" },
146
+ path: {
147
+ type: "array",
148
+ items: { type: ["string", "integer"] }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ };
155
+ /** The default error responses: today's Problem Details answers, 400 to 422. */
156
+ const DEFAULT_ERRORS = [
157
+ {
158
+ name: "BadRequest",
159
+ status: 400,
160
+ description: "The request is invalid."
161
+ },
162
+ {
163
+ name: "Unauthorized",
164
+ status: 401,
165
+ description: "Missing or invalid credentials."
166
+ },
167
+ {
168
+ name: "Forbidden",
169
+ status: 403,
170
+ description: "Row-level security or a plugin denied the request."
171
+ },
172
+ {
173
+ name: "NotFound",
174
+ status: 404,
175
+ description: "No row matches."
176
+ },
177
+ {
178
+ name: "Conflict",
179
+ status: 409,
180
+ description: "A unique or foreign key constraint failed."
181
+ },
182
+ {
183
+ name: "Unprocessable",
184
+ status: 422,
185
+ description: "Validation or a check constraint failed."
186
+ }
187
+ ];
188
+ /** Name of the shared 403 response of operations that declare a permission. */
189
+ const PERMISSION_DENIED = "PermissionDenied";
190
+ const problem = (code, detail, extra = {}) => ({ value: {
191
+ ...problemType("forbidden"),
192
+ status: 403,
193
+ kind: "forbidden",
194
+ code,
195
+ detail,
196
+ ...extra
197
+ } });
198
+ /** The 403 of an operation with a permission, with one example per problem code. */
199
+ function permissionDeniedResponse() {
200
+ return {
201
+ description: "The authorizer denied the permission (`PERMISSION_DENIED`), the token lacks an OAuth scope (`INSUFFICIENT_SCOPE`), the action needs an approval (`APPROVAL_REQUIRED`), or row-level security denied the request.",
202
+ content: { [PROBLEM_CONTENT_TYPE]: {
203
+ schema: schemaRef("Problem"),
204
+ examples: {
205
+ permissionDenied: {
206
+ summary: "PERMISSION_DENIED",
207
+ ...problem("PERMISSION_DENIED", "Permission invoices.update is required", { permission: "invoices.update" })
208
+ },
209
+ insufficientScope: {
210
+ summary: "INSUFFICIENT_SCOPE",
211
+ ...problem("INSUFFICIENT_SCOPE", "The token lacks a required scope", { scopes: ["invoices.update"] })
212
+ },
213
+ approvalRequired: {
214
+ summary: "APPROVAL_REQUIRED",
215
+ ...problem("APPROVAL_REQUIRED", "invoices.update needs an approval", {
216
+ permission: "invoices.update",
217
+ approval: { id: "apr_123" }
218
+ })
219
+ }
220
+ }
221
+ } }
222
+ };
223
+ }
224
+ function errorResponse(error) {
225
+ return {
226
+ description: error.description,
227
+ content: { [PROBLEM_CONTENT_TYPE]: { schema: schemaRef("Problem") } }
228
+ };
229
+ }
230
+ /** The scheme name of the `oauth2` preset. */
231
+ const OAUTH_SCHEME = "supabaseOAuth";
232
+ /** Security schemes and top-level requirements for the presets. */
233
+ function resolveSecurity(presets, supabaseUrl, oauthScopes = {}) {
234
+ const schemes = {};
235
+ const requirements = [];
236
+ for (const preset of presets) {
237
+ if (typeof preset === "object") {
238
+ schemes[preset.name] = preset.scheme;
239
+ requirements.push({ [preset.name]: preset.scopes ?? [] });
240
+ continue;
241
+ }
242
+ switch (preset) {
243
+ case "bearer":
244
+ schemes["supabaseJwt"] = {
245
+ type: "http",
246
+ scheme: "bearer",
247
+ bearerFormat: "JWT",
248
+ description: "A Supabase access token. Requests run as that user under row-level security."
249
+ };
250
+ requirements.push({ supabaseJwt: [] });
251
+ break;
252
+ case "oauth2": {
253
+ if (!supabaseUrl) throw new TypeError("better-supabase/spec: oauth2 security needs supabaseUrl");
254
+ const origin = supabaseUrl.replace(/\/$/, "");
255
+ const auth = `${origin}/auth/v1`;
256
+ schemes[OAUTH_SCHEME] = {
257
+ type: "oauth2",
258
+ description: "The Supabase OAuth 2.1 server.",
259
+ flows: { authorizationCode: {
260
+ authorizationUrl: `${auth}/oauth/authorize`,
261
+ tokenUrl: `${auth}/oauth/token`,
262
+ scopes: oauthScopes
263
+ } },
264
+ metadataUrl: `${origin}/.well-known/oauth-authorization-server/auth/v1`
265
+ };
266
+ requirements.push({ [OAUTH_SCHEME]: [] });
267
+ break;
268
+ }
269
+ case "apiKey":
270
+ schemes["supabaseApiKey"] = {
271
+ type: "apiKey",
272
+ name: "apikey",
273
+ in: "header",
274
+ description: "The project's publishable key."
275
+ };
276
+ requirements.push({ supabaseApiKey: [] });
277
+ break;
278
+ default: throw new TypeError(`Unknown security preset "${String(preset)}"`);
279
+ }
280
+ }
281
+ return {
282
+ schemes,
283
+ requirements
284
+ };
285
+ }
286
+ //#endregion
287
+ //#region src/spec/build-resource.ts
288
+ const METHODS = /* @__PURE__ */ new Set([
289
+ "get",
290
+ "put",
291
+ "post",
292
+ "patch",
293
+ "delete",
294
+ "head",
295
+ "options",
296
+ "trace",
297
+ "query"
298
+ ]);
299
+ function isMethod(value) {
300
+ return METHODS.has(value);
301
+ }
302
+ /** The error statuses each operation can answer with. */
303
+ const OPERATION_STATUSES = {
304
+ list: [
305
+ 400,
306
+ 401,
307
+ 403
308
+ ],
309
+ create: [
310
+ 400,
311
+ 401,
312
+ 403,
313
+ 409,
314
+ 422
315
+ ],
316
+ get: [
317
+ 401,
318
+ 403,
319
+ 404
320
+ ],
321
+ update: [
322
+ 400,
323
+ 401,
324
+ 403,
325
+ 404,
326
+ 409,
327
+ 422
328
+ ],
329
+ delete: [
330
+ 401,
331
+ 403,
332
+ 404,
333
+ 409
334
+ ]
335
+ };
336
+ /** Statuses an operation only documents when it can answer with them; other errors apply everywhere. */
337
+ const SCOPED_STATUSES = /* @__PURE__ */ new Set([
338
+ 400,
339
+ 401,
340
+ 403,
341
+ 404,
342
+ 409,
343
+ 422
344
+ ]);
345
+ const JSON_TYPE = "application/json";
346
+ function pageParameters(cursor, maxPageSize) {
347
+ return pageQuery(cursor, maxPageSize).map((p) => ({
348
+ name: p.name,
349
+ in: "query",
350
+ required: false,
351
+ description: p.description,
352
+ schema: p.schema
353
+ }));
354
+ }
355
+ function isParameter(value) {
356
+ return isPlainObject(value) && typeof value["name"] === "string" && typeof value["in"] === "string" && isPlainObject(value["schema"]);
357
+ }
358
+ function isPlanCarrier(input) {
359
+ return typeof input === "object" && "plan" in input;
360
+ }
361
+ /** `description` and `deprecated` from comments, read structurally so older metadata still works. */
362
+ function docsOf(value) {
363
+ if (!value) return {};
364
+ const description = "description" in value ? value.description : void 0;
365
+ const deprecated = "deprecated" in value ? value.deprecated : void 0;
366
+ return {
367
+ ...typeof description === "string" && description !== "" ? { description } : {},
368
+ ...deprecated === true ? { deprecated: true } : {}
369
+ };
370
+ }
371
+ function jsonContent(schema) {
372
+ return { [JSON_TYPE]: { schema } };
373
+ }
374
+ function jsonResponse(schema, description) {
375
+ return {
376
+ description,
377
+ content: jsonContent(schema)
378
+ };
379
+ }
380
+ function mutableProperties(schema) {
381
+ const properties = schema["properties"];
382
+ if (!isPlainObject(properties)) return;
383
+ const copy = {};
384
+ for (const [key, value] of Object.entries(properties)) if (isPlainObject(value)) copy[key] = { ...value };
385
+ schema["properties"] = copy;
386
+ return copy;
387
+ }
388
+ function createBuildContext(meta, options) {
389
+ const prefix = options.extensionPrefix ?? "x-better-supabase-";
390
+ const diagnostics = [];
391
+ const report = (diagnostic) => {
392
+ diagnostics.push(diagnostic);
393
+ };
394
+ const base = (options.basePath ?? "").replace(/\/$/, "");
395
+ const globalErrors = options.errors ?? DEFAULT_ERRORS;
396
+ const schemas = { Problem: structuredClone(PROBLEM_SCHEMA) };
397
+ const responses = {};
398
+ for (const error of globalErrors) responses[error.name] = errorResponse(error);
399
+ const operations = [];
400
+ const tags = [...options.tags ?? []];
401
+ const served = /* @__PURE__ */ new Map();
402
+ const { authorizer } = options;
403
+ const addTag = (name, description) => {
404
+ if (tags.some((tag) => tag.name === name)) return;
405
+ tags.push({
406
+ name,
407
+ ...description ? { description } : {}
408
+ });
409
+ };
410
+ const addComponent = (name, schema) => {
411
+ const existing = schemas[name];
412
+ if (existing && JSON.stringify(existing) !== JSON.stringify(schema)) {
413
+ report({
414
+ code: "component-conflict",
415
+ severity: "error",
416
+ message: `Two different schemas are named "${name}"; the first one is kept`,
417
+ pointer: `/components/schemas/${pointerToken(name)}`
418
+ });
419
+ return;
420
+ }
421
+ schemas[name] = schema;
422
+ };
423
+ const keyOf = (ref, where) => {
424
+ if (authorizer) try {
425
+ return authorizer.key(ref);
426
+ } catch {
427
+ report({
428
+ code: "permission-unresolved",
429
+ severity: "error",
430
+ message: `${where}: the authorizer has no key for this permission`
431
+ });
432
+ return;
433
+ }
434
+ if (typeof ref === "string") return ref;
435
+ report({
436
+ code: "permission-unresolved",
437
+ severity: "error",
438
+ message: `${where}: a permission that is not a string needs an authorizer`
439
+ });
440
+ };
441
+ const converted = (standard, direction, where) => {
442
+ const result = convertStandard(standard, direction);
443
+ if (!result) report({
444
+ code: "schema-unconvertible",
445
+ severity: "warning",
446
+ message: `${where}: the schema does not implement Standard JSON Schema, so the spec allows any value`
447
+ });
448
+ return result;
449
+ };
450
+ const schemaOf = (standard, direction, role, operationId) => {
451
+ const result = converted(standard, direction, `${operationId} ${role}`);
452
+ if (!result) return {};
453
+ const name = options.componentName ? options.componentName({
454
+ kind: "schema",
455
+ id: result.name,
456
+ schema: result.schema,
457
+ role,
458
+ operationId
459
+ }) : result.name;
460
+ if (!name) return structuredClone(result.schema);
461
+ addComponent(name, structuredClone(result.schema));
462
+ return schemaRef(name);
463
+ };
464
+ const objectParameters = (standard, location, where) => {
465
+ const result = converted(standard, "input", where);
466
+ const properties = result?.schema["properties"];
467
+ if (!result || !isPlainObject(properties)) return [];
468
+ const required = result.schema["required"];
469
+ const requiredNames = Array.isArray(required) ? required : [];
470
+ return Object.entries(properties).flatMap(([name, schema]) => {
471
+ if (!isPlainObject(schema)) return [];
472
+ const description = schema["description"];
473
+ return [{
474
+ name,
475
+ in: location,
476
+ required: location === "path" || requiredNames.includes(name),
477
+ ...typeof description === "string" ? { description } : {},
478
+ schema: structuredClone(schema)
479
+ }];
480
+ });
481
+ };
482
+ const usedErrors = (errors, statuses, permission) => {
483
+ const out = {};
484
+ for (const error of errors) {
485
+ if (SCOPED_STATUSES.has(error.status) && !statuses.includes(error.status)) continue;
486
+ const status = String(error.status);
487
+ if (Object.hasOwn(out, status)) continue;
488
+ if (error.status === 403 && permission) continue;
489
+ responses[error.name] ??= errorResponse(error);
490
+ out[status] = { ref: error.name };
491
+ }
492
+ if (permission) {
493
+ responses[PERMISSION_DENIED] ??= permissionDeniedResponse();
494
+ out["403"] = { ref: PERMISSION_DENIED };
495
+ }
496
+ return out;
497
+ };
498
+ const extendFor = (extend, name) => {
499
+ if (!extend) return;
500
+ const all = extend["*"];
501
+ const own = extend[name];
502
+ if (!all && !own) return;
503
+ return mergeJson(all ?? {}, own ?? {});
504
+ };
505
+ return {
506
+ meta,
507
+ options,
508
+ prefix,
509
+ base,
510
+ globalErrors,
511
+ diagnostics,
512
+ schemas,
513
+ responses,
514
+ operations,
515
+ tags,
516
+ served,
517
+ report,
518
+ addTag,
519
+ addComponent,
520
+ keyOf,
521
+ schemaOf,
522
+ objectParameters,
523
+ usedErrors,
524
+ extendFor
525
+ };
526
+ }
527
+ function resourceScope(ctx, key, input) {
528
+ const { meta, options, prefix, base, globalErrors, operations, served, report, addTag, addComponent, keyOf, schemaOf, usedErrors, extendFor } = ctx;
529
+ const { authorizer } = options;
530
+ let plan;
531
+ if (isPlanCarrier(input)) plan = input.plan;
532
+ else {
533
+ if (!meta.tables[key]) throw new TypeError(`better-supabase/spec: unknown table "${key}"`);
534
+ plan = planResource(meta, key, input === true ? {} : input, authorizer);
535
+ }
536
+ const tableKey = plan.table;
537
+ const table = plan.meta;
538
+ const description = plan.description;
539
+ const name = pascal(tableKey);
540
+ const tableDocs = docsOf(table);
541
+ const defs = tableSchemas(meta, options.json ?? {});
542
+ const componentFor = (variant) => {
543
+ const defaultName = `${name}${variant}`;
544
+ return options.componentName?.({
545
+ kind: "table",
546
+ table: tableKey,
547
+ variant,
548
+ defaultName
549
+ }) ?? defaultName;
550
+ };
551
+ const components = {};
552
+ for (const variant of [
553
+ "Row",
554
+ "Insert",
555
+ "Update"
556
+ ]) {
557
+ const def = defs[`${tableKey}${variant}`];
558
+ if (!def) continue;
559
+ const schema = structuredClone(def);
560
+ if (tableDocs.description && schema["description"] === void 0) schema["description"] = tableDocs.description;
561
+ if (tableDocs.deprecated) schema["deprecated"] = true;
562
+ const properties = mutableProperties(schema);
563
+ for (const [column, property] of Object.entries(properties ?? {})) {
564
+ const docs = docsOf(table.columns[column]);
565
+ if (docs.description && property["description"] === void 0) property["description"] = docs.description;
566
+ if (docs.deprecated) property["deprecated"] = true;
567
+ }
568
+ const examples = options.examples?.[tableKey];
569
+ if (variant === "Row" && examples && examples.length > 0) schema["examples"] = structuredClone(examples);
570
+ const componentName = componentFor(variant);
571
+ components[variant] = componentName;
572
+ addComponent(componentName, schema);
573
+ }
574
+ const rowName = components.Row ?? componentFor("Row");
575
+ const cursor = plan.pagination === "cursor";
576
+ const pageName = componentFor("Page");
577
+ addComponent(pageName, pageSchema(schemaRef(rowName), cursor));
578
+ const tag = description.tag ?? tableKey;
579
+ addTag(tag, description.description ?? tableDocs.description);
580
+ const collection = `${base}${description.path ?? `/${tableKey}`}`;
581
+ const keyParam = plan.keyParam;
582
+ const rowProperties = defs[`${tableKey}Row`]?.["properties"];
583
+ const keySchema = keyParam && isPlainObject(rowProperties) ? rowProperties[keyParam] : void 0;
584
+ const idParameter = keyParam ? {
585
+ name: keyParam,
586
+ in: "path",
587
+ required: true,
588
+ schema: isPlainObject(keySchema) ? structuredClone(keySchema) : { type: "string" }
589
+ } : void 0;
590
+ const item = keyParam ? `${collection}/{${keyParam}}` : void 0;
591
+ const errors = description.errors ?? globalErrors;
592
+ const servedTable = {
593
+ table,
594
+ components,
595
+ operations: []
596
+ };
597
+ served.set(tableKey, servedTable);
598
+ const names = /* @__PURE__ */ new Set([...plan.operations, ...plan.actions.map((action) => action.name)]);
599
+ for (const extendKey of Object.keys(description.extend ?? {})) if (extendKey !== "*" && !names.has(extendKey)) report({
600
+ code: "extend-unknown",
601
+ severity: "warning",
602
+ message: `${tableKey}.extend.${extendKey} names no operation or action of the resource`
603
+ });
604
+ const add = (opName, source, method, path, fields) => {
605
+ const defaultId = `${opName}${name}`;
606
+ const id = options.operationId?.({
607
+ source,
608
+ method,
609
+ path,
610
+ defaultId
611
+ }) ?? defaultId;
612
+ const ref = plan.permissions[opName];
613
+ const permission = ref === void 0 ? void 0 : keyOf(ref, `${tableKey}.${opName}`);
614
+ const extend = extendFor(description.extend, opName);
615
+ const { extensions, ...rest } = fields;
616
+ const operation = {
617
+ id,
618
+ method,
619
+ path,
620
+ tags: [tag],
621
+ source,
622
+ ...rest,
623
+ extensions: {
624
+ [`${prefix}table`]: `${table.schema}.${table.name}`,
625
+ ...extensions,
626
+ ...permission === void 0 ? {} : { [`${prefix}permission`]: permission }
627
+ },
628
+ ...permission === void 0 ? {} : { permission },
629
+ ...description.security ? { security: description.security } : {},
630
+ ...extend ? { extend } : {},
631
+ ...tableDocs.deprecated ? { deprecated: true } : {}
632
+ };
633
+ operations.push(operation);
634
+ servedTable.operations.push(operation);
635
+ };
636
+ const outputOf = (operation, fallback) => {
637
+ const output = description.output?.[operation];
638
+ return output ? schemaOf(output, "output", "output", `${operation}${name}`) : fallback;
639
+ };
640
+ const resourceOp = (operation) => ({
641
+ kind: "resource",
642
+ table: tableKey,
643
+ operation
644
+ });
645
+ const errorsFor = (operation) => usedErrors(errors, OPERATION_STATUSES[operation], plan.permissions[operation] !== void 0);
646
+ const opExtension = (operation) => ({ [`${prefix}operation`]: operation });
647
+ return {
648
+ ctx,
649
+ plan,
650
+ tableKey,
651
+ name,
652
+ description,
653
+ components,
654
+ componentFor,
655
+ rowName,
656
+ pageName,
657
+ cursor,
658
+ collection,
659
+ item,
660
+ idParameter,
661
+ errors,
662
+ add,
663
+ outputOf,
664
+ resourceOp,
665
+ errorsFor,
666
+ opExtension
667
+ };
668
+ }
669
+ function addTableOperation(scope, operation) {
670
+ const { plan, tableKey, name, description, components, componentFor, rowName, pageName, cursor, collection, item, idParameter, add, outputOf, resourceOp, errorsFor, opExtension } = scope;
671
+ const { schemaOf } = scope.ctx;
672
+ switch (operation) {
673
+ case "list": {
674
+ const listOutput = description.output?.list;
675
+ const pageRef = listOutput ? pageSchema(schemaOf(listOutput, "output", "item", `list${name}`), cursor) : schemaRef(pageName);
676
+ add("list", resourceOp("list"), "get", collection, {
677
+ summary: `List ${tableKey}`,
678
+ extensions: opExtension("list"),
679
+ parameters: description.list ? description.list.openapi.filter(isParameter) : pageParameters(cursor, plan.maxPageSize),
680
+ responses: {
681
+ "200": jsonResponse(pageRef, `A page of ${tableKey}.`),
682
+ ...errorsFor("list")
683
+ }
684
+ });
685
+ break;
686
+ }
687
+ case "create": {
688
+ const body = description.input?.create ? schemaOf(description.input.create, "input", "input", `create${name}`) : schemaRef(components.Insert ?? componentFor("Insert"));
689
+ add("create", resourceOp("create"), "post", collection, {
690
+ summary: `Create a ${tableKey} row`,
691
+ extensions: opExtension("create"),
692
+ parameters: [],
693
+ requestBody: {
694
+ required: true,
695
+ content: jsonContent(body)
696
+ },
697
+ responses: {
698
+ "201": jsonResponse(outputOf("create", schemaRef(rowName)), "Created."),
699
+ ...errorsFor("create")
700
+ }
701
+ });
702
+ break;
703
+ }
704
+ case "get":
705
+ if (!item || !idParameter) break;
706
+ add("get", resourceOp("get"), "get", item, {
707
+ summary: `Get a ${tableKey} row`,
708
+ extensions: opExtension("get"),
709
+ parameters: [idParameter],
710
+ responses: {
711
+ "200": jsonResponse(outputOf("get", schemaRef(rowName)), "The row."),
712
+ ...errorsFor("get")
713
+ }
714
+ });
715
+ break;
716
+ case "update": {
717
+ if (!item || !idParameter) break;
718
+ const body = description.input?.update ? schemaOf(description.input.update, "input", "input", `update${name}`) : schemaRef(components.Update ?? componentFor("Update"));
719
+ add("update", resourceOp("update"), "patch", item, {
720
+ summary: `Update a ${tableKey} row`,
721
+ extensions: opExtension("update"),
722
+ parameters: [idParameter],
723
+ requestBody: {
724
+ required: true,
725
+ content: jsonContent(body)
726
+ },
727
+ responses: {
728
+ "200": jsonResponse(outputOf("update", schemaRef(rowName)), "Updated."),
729
+ ...errorsFor("update")
730
+ }
731
+ });
732
+ break;
733
+ }
734
+ case "delete":
735
+ if (!item || !idParameter) break;
736
+ add("delete", resourceOp("delete"), "delete", item, {
737
+ summary: `Delete a ${tableKey} row`,
738
+ extensions: opExtension("delete"),
739
+ parameters: [idParameter],
740
+ responses: {
741
+ "204": { description: "Deleted." },
742
+ ...errorsFor("delete")
743
+ }
744
+ });
745
+ break;
746
+ default: throw new TypeError(`better-supabase/spec: unknown operation "${String(operation)}"`);
747
+ }
748
+ }
749
+ function addAction(scope, action) {
750
+ const { tableKey, name, idParameter, collection, errors, add } = scope;
751
+ const { prefix, schemaOf, objectParameters, usedErrors } = scope.ctx;
752
+ const method = action.method.toLowerCase();
753
+ if (!isMethod(method)) throw new TypeError(`${tableKey}.actions.${action.name}: unknown method`);
754
+ const operationId = `${action.name}${name}`;
755
+ const parameters = [...action.params.length > 0 && idParameter ? [idParameter] : [], ...action.query ? objectParameters(action.query, "query", `${operationId} query`) : []];
756
+ const status = String(action.status ?? (action.output ? 200 : 204));
757
+ const statuses = [
758
+ ...action.input || action.query ? [400] : [],
759
+ 401,
760
+ 403,
761
+ ...action.params.length > 0 ? [404] : [],
762
+ ...action.input ? [422] : []
763
+ ];
764
+ add(action.name, {
765
+ kind: "action",
766
+ table: tableKey,
767
+ action: action.name
768
+ }, method, `${collection}${action.path}`, {
769
+ ...action.summary ? { summary: action.summary } : {},
770
+ ...action.description ? { description: action.description } : {},
771
+ ...action.deprecated ? { deprecated: true } : {},
772
+ extensions: {
773
+ [`${prefix}action`]: action.name,
774
+ ...action.emits ? { [`${prefix}emits`]: [...action.emits] } : {}
775
+ },
776
+ parameters,
777
+ ...action.input ? { requestBody: {
778
+ required: true,
779
+ content: jsonContent(schemaOf(action.input, "input", "input", operationId))
780
+ } } : {},
781
+ responses: {
782
+ [status]: action.output ? jsonResponse(schemaOf(action.output, "output", "output", operationId), action.summary ?? "Done.") : { description: action.summary ?? "Done." },
783
+ ...usedErrors(errors, statuses, action.permission !== void 0)
784
+ }
785
+ });
786
+ }
787
+ /** Adds one resource's components, tag and operations to the build. */
788
+ function buildResource(ctx, key, input) {
789
+ const scope = resourceScope(ctx, key, input);
790
+ for (const operation of scope.plan.operations) addTableOperation(scope, operation);
791
+ for (const action of scope.plan.actions) addAction(scope, action);
792
+ }
793
+ //#endregion
794
+ //#region src/spec/data-api.ts
795
+ const REST = "/rest/v1";
796
+ const DEFAULT_TAG = "Data API";
797
+ const ERROR = "DataApiError";
798
+ /** The error body PostgREST answers with. */
799
+ const ERROR_SCHEMA = {
800
+ type: "object",
801
+ required: ["message"],
802
+ properties: {
803
+ code: { type: "string" },
804
+ message: { type: "string" },
805
+ details: { type: ["string", "null"] },
806
+ hint: { type: ["string", "null"] }
807
+ }
808
+ };
809
+ /** Query parameters PostgREST reserves, so a column with the name gets no filter. */
810
+ const RESERVED = /* @__PURE__ */ new Set([
811
+ "select",
812
+ "order",
813
+ "limit",
814
+ "offset",
815
+ "columns",
816
+ "on_conflict",
817
+ "or",
818
+ "and",
819
+ "not"
820
+ ]);
821
+ const INTEGER = /* @__PURE__ */ new Set([
822
+ "int2",
823
+ "int4",
824
+ "int8"
825
+ ]);
826
+ const NUMBER = /* @__PURE__ */ new Set([
827
+ "float4",
828
+ "float8",
829
+ "numeric",
830
+ "oid",
831
+ "money"
832
+ ]);
833
+ /** The scheme names the `apiKey` and `bearer` presets register. */
834
+ const DATA_API_SECURITY = [{
835
+ supabaseApiKey: [],
836
+ supabaseJwt: []
837
+ }, { supabaseApiKey: [] }];
838
+ /** JSON Schema for a Postgres type as PostgREST writes it. */
839
+ function typeSchema(meta, type) {
840
+ if (type.startsWith("_")) return {
841
+ type: "array",
842
+ items: typeSchema(meta, type.slice(1))
843
+ };
844
+ const values = meta.enums[type];
845
+ if (values) return {
846
+ type: "string",
847
+ enum: [...values]
848
+ };
849
+ if (INTEGER.has(type)) return { type: "integer" };
850
+ if (NUMBER.has(type)) return { type: "number" };
851
+ switch (type) {
852
+ case "bool": return { type: "boolean" };
853
+ case "uuid": return {
854
+ type: "string",
855
+ format: "uuid"
856
+ };
857
+ case "timestamptz": return {
858
+ type: "string",
859
+ format: "date-time"
860
+ };
861
+ case "date": return {
862
+ type: "string",
863
+ format: "date"
864
+ };
865
+ case "json":
866
+ case "jsonb":
867
+ case "record":
868
+ case "void": return {};
869
+ default: return { type: "string" };
870
+ }
871
+ }
872
+ /** A table schema with database column names, as the Data API reads and writes them. */
873
+ function databaseCased(schema, table) {
874
+ const dbName = (name) => table.columns[name]?.db ?? name;
875
+ const properties = schema["properties"];
876
+ const required = schema["required"];
877
+ return {
878
+ ...schema,
879
+ ...isPlainObject(properties) ? { properties: Object.fromEntries(Object.entries(properties).map(([name, value]) => [dbName(name), value])) } : {},
880
+ ...Array.isArray(required) ? { required: required.map((name) => typeof name === "string" ? dbName(name) : name) } : {}
881
+ };
882
+ }
883
+ const qualified = (schema, name) => schema === "public" ? name : `${schema}.${name}`;
884
+ const STRING = { type: "string" };
885
+ const header = (name, description, schema, required = false) => ({
886
+ name,
887
+ in: "header",
888
+ required,
889
+ description,
890
+ schema: schema ?? STRING
891
+ });
892
+ const query = (name, description, schema) => ({
893
+ name,
894
+ in: "query",
895
+ required: false,
896
+ description,
897
+ schema: schema ?? STRING
898
+ });
899
+ /** The `Accept-Profile` or `Content-Profile` header a table outside `public` needs. */
900
+ function profile(schema, write) {
901
+ return schema === "public" ? [] : [header(write ? "Content-Profile" : "Accept-Profile", `The schema of the table, \`${schema}\`.`, {
902
+ type: "string",
903
+ enum: [schema]
904
+ }, true)];
905
+ }
906
+ const PREFER_WRITE = header("Prefer", "`return=representation` answers with the written rows; `return=minimal` (the default) answers without a body.");
907
+ /** Documents the Data API: table operations under `/rest/v1/<table>` and RPCs under `/rest/v1/rpc/<name>`. */
908
+ function buildDataApi(ctx, dataApi) {
909
+ const { meta, options, operations, report, addTag, addComponent, responses } = ctx;
910
+ const tag = dataApi.tag ?? DEFAULT_TAG;
911
+ const origin = options.supabaseUrl?.replace(/\/$/, "");
912
+ if (!origin) report({
913
+ code: "data-api-server-missing",
914
+ severity: "warning",
915
+ message: "dataApi needs supabaseUrl: without it the /rest/v1 paths resolve against the document's servers"
916
+ });
917
+ const servers = origin ? [{
918
+ url: origin,
919
+ description: "The Supabase project."
920
+ }] : void 0;
921
+ const defs = tableSchemas(meta, options.json ?? {});
922
+ const tableKeys = /* @__PURE__ */ new Set();
923
+ const unknownTable = (key, where) => {
924
+ report({
925
+ code: "data-api-table-unknown",
926
+ severity: "error",
927
+ message: `${where}: no table or view "${key}"`
928
+ });
929
+ };
930
+ if (dataApi.tables === true) for (const key of Object.keys(meta.tables).toSorted()) tableKeys.add(key);
931
+ else for (const key of dataApi.tables ?? []) if (meta.tables[key]) tableKeys.add(key);
932
+ else unknownTable(key, "dataApi.tables");
933
+ for (const key of Object.keys(dataApi.operations ?? {})) if (!meta.tables[key]) unknownTable(key, "dataApi.operations");
934
+ else if (!tableKeys.has(key)) tableKeys.add(key);
935
+ const functionKeys = [];
936
+ if (dataApi.functions === true) functionKeys.push(...Object.keys(meta.functions).toSorted());
937
+ else for (const key of dataApi.functions ?? []) if (meta.functions[key]) functionKeys.push(key);
938
+ else report({
939
+ code: "data-api-function-unknown",
940
+ severity: "error",
941
+ message: `dataApi.functions: no function "${key}"`
942
+ });
943
+ if (tableKeys.size === 0 && functionKeys.length === 0) return;
944
+ addTag(tag, "The Supabase Data API (PostgREST). Every request runs under row-level security.");
945
+ addComponent(ERROR, structuredClone(ERROR_SCHEMA));
946
+ responses[ERROR] ??= {
947
+ description: "PostgREST rejected the request.",
948
+ content: jsonContent(schemaRef(ERROR))
949
+ };
950
+ const errors = { "4XX": { ref: ERROR } };
951
+ /** The database-cased component of a table variant, or `undefined` when the table has none. */
952
+ const component = (key, variant) => {
953
+ const table = meta.tables[key];
954
+ const schema = defs[`${key}${variant}`];
955
+ if (!table || !schema) return;
956
+ const name = `DataApi${pascal(table.schema === "public" ? "" : `${table.schema}_`)}${pascal(table.name)}${variant}`;
957
+ addComponent(name, databaseCased(structuredClone(schema), table));
958
+ return schemaRef(name);
959
+ };
960
+ const push = (draft) => {
961
+ const { defaultId, ...rest } = draft;
962
+ operations.push({
963
+ ...rest,
964
+ id: options.operationId?.({
965
+ source: draft.source,
966
+ method: draft.method,
967
+ path: draft.path,
968
+ defaultId
969
+ }) ?? defaultId,
970
+ tags: [tag],
971
+ ...servers ? { servers } : {},
972
+ security: DATA_API_SECURITY,
973
+ extensions: {}
974
+ });
975
+ };
976
+ for (const key of tableKeys) {
977
+ const table = meta.tables[key];
978
+ if (table) buildTable(key, table);
979
+ }
980
+ for (const key of functionKeys) {
981
+ const fn = meta.functions[key];
982
+ if (fn) buildFunction(key, fn);
983
+ }
984
+ function buildTable(key, table) {
985
+ const row = component(key, "Row") ?? {};
986
+ const insert = component(key, "Insert");
987
+ const update = component(key, "Update");
988
+ const rows = {
989
+ type: "array",
990
+ items: row
991
+ };
992
+ const path = `${REST}/${table.name}`;
993
+ const name = pascal(table.schema === "public" ? table.name : `${table.schema}_${table.name}`);
994
+ const label = qualified(table.schema, table.name);
995
+ const filters = Object.values(table.columns).filter((column) => !RESERVED.has(column.db)).map((column) => query(column.db, `Filters on \`${column.db}\` with an operator and a value: \`eq.<value>\`, \`in.(a,b)\`, \`is.null\`.`));
996
+ const viewOperations = ["select"];
997
+ if (insert) viewOperations.push("insert");
998
+ if (update) viewOperations.push("update", "delete");
999
+ const allowed = dataApi.operations?.[key] ?? (table.kind === "view" ? viewOperations : [
1000
+ "select",
1001
+ "insert",
1002
+ "update",
1003
+ "delete"
1004
+ ]);
1005
+ const source = (operation) => ({
1006
+ kind: "data-api",
1007
+ table: key,
1008
+ operation
1009
+ });
1010
+ const written = (status, description) => ({ [status]: jsonResponse(rows, `${description} The body holds the rows with \`Prefer: return=representation\`.`) });
1011
+ for (const operation of allowed) switch (operation) {
1012
+ case "select":
1013
+ push({
1014
+ defaultId: `dataApiSelect${name}`,
1015
+ method: "get",
1016
+ path,
1017
+ summary: `Read rows of ${label}`,
1018
+ parameters: [
1019
+ query("select", "The columns to return, comma separated, and embedded relations as `relation(columns)`. Defaults to `*`."),
1020
+ query("order", "Sort order, such as `created_at.desc,id`."),
1021
+ query("limit", "The most rows to return.", {
1022
+ type: "integer",
1023
+ minimum: 0
1024
+ }),
1025
+ query("offset", "The rows to skip.", {
1026
+ type: "integer",
1027
+ minimum: 0
1028
+ }),
1029
+ ...filters,
1030
+ header("Range", "A row range, such as `0-24`."),
1031
+ header("Prefer", "`count=exact`, `count=planned` or `count=estimated` adds the total to `Content-Range`."),
1032
+ ...profile(table.schema, false)
1033
+ ],
1034
+ responses: {
1035
+ "200": {
1036
+ ...jsonResponse(rows, "The rows."),
1037
+ headers: { "Content-Range": {
1038
+ description: "The returned range and the total, such as `0-24/100`.",
1039
+ schema: { type: "string" }
1040
+ } }
1041
+ },
1042
+ "206": jsonResponse(rows, "Part of the rows, for a `Range` request."),
1043
+ ...errors
1044
+ },
1045
+ source: source("select")
1046
+ });
1047
+ break;
1048
+ case "insert":
1049
+ push({
1050
+ defaultId: `dataApiInsert${name}`,
1051
+ method: "post",
1052
+ path,
1053
+ summary: `Insert rows into ${label}`,
1054
+ parameters: [
1055
+ query("columns", "The columns to read from the body, comma separated."),
1056
+ query("on_conflict", "The unique columns an upsert matches on, comma separated."),
1057
+ PREFER_WRITE,
1058
+ ...profile(table.schema, true)
1059
+ ],
1060
+ requestBody: {
1061
+ required: true,
1062
+ content: jsonContent(insert ? { oneOf: [insert, {
1063
+ type: "array",
1064
+ items: insert
1065
+ }] } : {})
1066
+ },
1067
+ responses: {
1068
+ ...written("201", "Created."),
1069
+ ...errors
1070
+ },
1071
+ source: source("insert")
1072
+ });
1073
+ break;
1074
+ case "update":
1075
+ push({
1076
+ defaultId: `dataApiUpdate${name}`,
1077
+ method: "patch",
1078
+ path,
1079
+ summary: `Update rows of ${label}`,
1080
+ description: "Updates every row the filters match.",
1081
+ parameters: [
1082
+ ...filters,
1083
+ PREFER_WRITE,
1084
+ ...profile(table.schema, true)
1085
+ ],
1086
+ requestBody: {
1087
+ required: true,
1088
+ content: jsonContent(update ?? {})
1089
+ },
1090
+ responses: {
1091
+ ...written("200", "Updated."),
1092
+ "204": { description: "Updated, without a body." },
1093
+ ...errors
1094
+ },
1095
+ source: source("update")
1096
+ });
1097
+ break;
1098
+ case "delete":
1099
+ push({
1100
+ defaultId: `dataApiDelete${name}`,
1101
+ method: "delete",
1102
+ path,
1103
+ summary: `Delete rows of ${label}`,
1104
+ description: "Deletes every row the filters match.",
1105
+ parameters: [
1106
+ ...filters,
1107
+ PREFER_WRITE,
1108
+ ...profile(table.schema, true)
1109
+ ],
1110
+ responses: {
1111
+ ...written("200", "Deleted."),
1112
+ "204": { description: "Deleted, without a body." },
1113
+ ...errors
1114
+ },
1115
+ source: source("delete")
1116
+ });
1117
+ break;
1118
+ default: throw new TypeError(`Unknown Data API operation "${String(operation)}"`);
1119
+ }
1120
+ }
1121
+ function argumentsSchema(signature) {
1122
+ const required = signature.args.filter((arg) => arg.optional !== true).map((arg) => arg.name);
1123
+ return {
1124
+ type: "object",
1125
+ properties: Object.fromEntries(signature.args.map((arg) => [arg.name, typeSchema(meta, arg.type)])),
1126
+ ...required.length > 0 ? { required } : {},
1127
+ additionalProperties: false
1128
+ };
1129
+ }
1130
+ function resultSchema(fn) {
1131
+ const { result } = fn;
1132
+ let one;
1133
+ if (result && "table" in result) one = component(result.table, "Row") ?? {};
1134
+ else if (result) one = {
1135
+ type: "object",
1136
+ properties: Object.fromEntries(result.columns.map((column) => [column.db, {}])),
1137
+ required: result.columns.map((column) => column.db)
1138
+ };
1139
+ else {
1140
+ const rowTable = Object.entries(meta.tables).find(([, table]) => table.name === fn.returns && table.schema === fn.schema);
1141
+ one = rowTable ? component(rowTable[0], "Row") ?? {} : typeSchema(meta, fn.returns);
1142
+ }
1143
+ return fn.returnsSet ? {
1144
+ type: "array",
1145
+ items: one
1146
+ } : one;
1147
+ }
1148
+ function buildFunction(key, fn) {
1149
+ const signatures = fn.overloads ?? [fn];
1150
+ const bodies = signatures.map(argumentsSchema);
1151
+ const [only] = bodies;
1152
+ const body = bodies.length === 1 && only ? only : { oneOf: bodies };
1153
+ const takesArgs = signatures.some((signature) => signature.args.length > 0);
1154
+ push({
1155
+ defaultId: `dataApiRpc${pascal(fn.schema === "public" ? fn.name : `${fn.schema}_${fn.name}`)}`,
1156
+ method: "post",
1157
+ path: `${REST}/rpc/${fn.name}`,
1158
+ summary: `Call ${qualified(fn.schema, fn.name)}`,
1159
+ description: `A ${fn.volatility} function.${fn.volatility === "volatile" ? "" : " A GET with the arguments as query parameters calls it too."}`,
1160
+ parameters: profile(fn.schema, true),
1161
+ requestBody: {
1162
+ required: takesArgs,
1163
+ content: jsonContent(body)
1164
+ },
1165
+ responses: {
1166
+ ...fn.returns === "void" && !fn.returnsSet ? { "204": { description: "Done." } } : { "200": jsonResponse(resultSchema(fn), "The result.") },
1167
+ ...errors
1168
+ },
1169
+ source: {
1170
+ kind: "data-api",
1171
+ function: key,
1172
+ operation: "rpc"
1173
+ }
1174
+ });
1175
+ }
1176
+ }
1177
+ /** Adds the `apiKey` and `bearer` schemes the Data API operations require. */
1178
+ function withDataApiSchemes(security, operations, supabaseUrl) {
1179
+ if (!operations.some((operation) => operation.source.kind === "data-api")) return security;
1180
+ const { schemes } = resolveSecurity(["apiKey", "bearer"], supabaseUrl);
1181
+ return {
1182
+ schemes: {
1183
+ ...schemes,
1184
+ ...security.schemes
1185
+ },
1186
+ requirements: security.requirements
1187
+ };
1188
+ }
1189
+ //#endregion
1190
+ //#region src/spec/events.ts
1191
+ /**
1192
+ * Whether a value is a `defineTopic()` result: a template string and the
1193
+ * `sql`, `trigger` and `subscribe` methods. `better-supabase sql sync` and
1194
+ * `spec` use the same check.
1195
+ */
1196
+ function isTopicLike(value) {
1197
+ return isRecord(value) && typeof value["template"] === "string" && typeof value["sql"] === "function" && typeof value["trigger"] === "function" && typeof value["subscribe"] === "function";
1198
+ }
1199
+ /**
1200
+ * The `defineTopic()` results in modules or arrays, for `events.topics`.
1201
+ * A module's topics are keyed by export name; a topic in an array by its
1202
+ * `name`. Other values are skipped, and a topic reached twice is kept once.
1203
+ *
1204
+ * ```ts
1205
+ * import * as topics from "../realtime/topics";
1206
+ * defineApi(betterSupabase, { info, events: { topics: topicsFrom(topics) } });
1207
+ * ```
1208
+ */
1209
+ function topicsFrom(...sources) {
1210
+ const topics = {};
1211
+ const seen = /* @__PURE__ */ new Set();
1212
+ for (const source of sources) {
1213
+ const entries = Array.isArray(source) ? source.map((value) => [void 0, value]) : Object.entries(source);
1214
+ for (const [key, value] of entries) {
1215
+ if (!isTopicLike(value) || seen.has(value)) continue;
1216
+ seen.add(value);
1217
+ topics[key ?? value.name ?? value.template] = value;
1218
+ }
1219
+ }
1220
+ return topics;
1221
+ }
1222
+ const OPEN = { type: "object" };
1223
+ const DEFAULT_INTENTS = [
1224
+ "insert",
1225
+ "update",
1226
+ "delete"
1227
+ ];
1228
+ /** An id safe for AsyncAPI channel, operation and component keys. */
1229
+ function safeKey(value) {
1230
+ return value.replaceAll(/[^A-Za-z0-9_-]/g, "_");
1231
+ }
1232
+ const keyPart = (value) => safeKey(pascal(value));
1233
+ /** The CloudEvents attributes in HTTP binary mode (`ce-*` headers). */
1234
+ const CLOUD_EVENT_TRAIT = {
1235
+ description: "CloudEvents 1.0 attributes in HTTP binary mode.",
1236
+ contentType: "application/json",
1237
+ headers: {
1238
+ type: "object",
1239
+ properties: {
1240
+ "ce-specversion": {
1241
+ type: "string",
1242
+ const: "1.0"
1243
+ },
1244
+ "ce-id": { type: "string" },
1245
+ "ce-source": {
1246
+ type: "string",
1247
+ format: "uri-reference"
1248
+ },
1249
+ "ce-type": { type: "string" },
1250
+ "ce-subject": { type: "string" },
1251
+ "ce-time": {
1252
+ type: "string",
1253
+ format: "date-time"
1254
+ },
1255
+ "ce-dataschema": {
1256
+ type: "string",
1257
+ format: "uri"
1258
+ },
1259
+ "ce-partitionkey": { type: "string" }
1260
+ }
1261
+ }
1262
+ };
1263
+ function cloudEventHeaders(type, dataschema) {
1264
+ return {
1265
+ type: "object",
1266
+ required: [
1267
+ "ce-specversion",
1268
+ "ce-id",
1269
+ "ce-source",
1270
+ "ce-type"
1271
+ ],
1272
+ properties: {
1273
+ "ce-type": {
1274
+ type: "string",
1275
+ const: type
1276
+ },
1277
+ ...dataschema ? { "ce-dataschema": {
1278
+ type: "string",
1279
+ const: dataschema
1280
+ } } : {}
1281
+ }
1282
+ };
1283
+ }
1284
+ function convert(schema, where, ctx) {
1285
+ if (schema === true) return OPEN;
1286
+ const converted = convertStandard(schema, "output");
1287
+ if (converted) return converted.schema;
1288
+ ctx.report({
1289
+ code: "asyncapi-schema-opaque",
1290
+ severity: "warning",
1291
+ message: `${where}: the schema does not implement Standard JSON Schema; the payload is left open`
1292
+ });
1293
+ return OPEN;
1294
+ }
1295
+ function tableChannels(ctx, selection, channels, messages) {
1296
+ if (selection === false) return;
1297
+ const realtime = ctx.meta.realtime ?? {};
1298
+ const keys = selection === true ? Object.keys(realtime) : selection;
1299
+ for (const key of keys) {
1300
+ const table = ctx.meta.tables[key];
1301
+ const config = realtime[key];
1302
+ if (!table || !config) {
1303
+ ctx.report({
1304
+ code: "asyncapi-table-unknown",
1305
+ severity: "error",
1306
+ message: `events.tables names "${key}", which is not in realtime.tables`
1307
+ });
1308
+ continue;
1309
+ }
1310
+ const id = `table${keyPart(key)}`;
1311
+ const base = `bs:t:${table.schema}.${table.name}`;
1312
+ const address = config.user ? `${base}:u:{userId}` : config.tenant ? `${base}:{tenant}` : base;
1313
+ const messageId = `${id}Change`;
1314
+ messages[messageId] = {
1315
+ id: messageId,
1316
+ name: "change",
1317
+ title: `${key} changed`,
1318
+ summary: `A row of ${table.schema}.${table.name} was inserted, updated or deleted. Clients refetch through row-level security.`,
1319
+ contentType: "application/json",
1320
+ payload: {
1321
+ type: "object",
1322
+ required: [
1323
+ "schema",
1324
+ "table",
1325
+ "operation"
1326
+ ],
1327
+ properties: {
1328
+ schema: {
1329
+ type: "string",
1330
+ const: table.schema
1331
+ },
1332
+ table: {
1333
+ type: "string",
1334
+ const: table.name
1335
+ },
1336
+ operation: {
1337
+ type: "string",
1338
+ enum: [
1339
+ "INSERT",
1340
+ "UPDATE",
1341
+ "DELETE"
1342
+ ]
1343
+ }
1344
+ }
1345
+ },
1346
+ extensions: { [`${ctx.prefix}event`]: "change" }
1347
+ };
1348
+ channels.push({
1349
+ id,
1350
+ address,
1351
+ title: `${key} changes`,
1352
+ protocol: "ws",
1353
+ ...config.user ? { parameters: { userId: { description: "The signed-in user's id." } } } : config.tenant ? { parameters: { tenant: { description: `The row's \`${config.tenant}\` value.` } } } : {},
1354
+ messages: [messageId],
1355
+ operations: [{
1356
+ id: `receive${keyPart(key)}Changes`,
1357
+ action: "receive",
1358
+ summary: `Change signals for ${key}`
1359
+ }],
1360
+ extensions: {
1361
+ [`${ctx.prefix}table`]: `${table.schema}.${table.name}`,
1362
+ [`${ctx.prefix}realtime-status`]: topicStatus({ private: true })
1363
+ }
1364
+ });
1365
+ }
1366
+ }
1367
+ function topicChannels(ctx, topics, channels, messages) {
1368
+ for (const [key, topic] of Object.entries(topics)) {
1369
+ const id = `topic${keyPart(key)}`;
1370
+ const ids = [];
1371
+ const events = Object.entries(topic.events ?? {});
1372
+ if (events.length === 0) {
1373
+ ctx.report({
1374
+ code: "asyncapi-topic-open",
1375
+ severity: "info",
1376
+ message: `Topic "${key}" lists no events; it is documented with one open message`
1377
+ });
1378
+ events.push(["*", true]);
1379
+ }
1380
+ for (const [event, schema] of events) {
1381
+ const messageId = `${id}${event === "*" ? "Any" : keyPart(event)}`;
1382
+ ids.push(messageId);
1383
+ messages[messageId] = {
1384
+ id: messageId,
1385
+ ...event === "*" ? {} : { name: event },
1386
+ title: event === "*" ? `${key} broadcast` : `${key} ${event}`,
1387
+ contentType: "application/json",
1388
+ payload: convert(schema, `topics.${key}.events.${event}`, ctx),
1389
+ extensions: { [`${ctx.prefix}event`]: event }
1390
+ };
1391
+ }
1392
+ if (topic.presence) {
1393
+ const messageId = `${id}Presence`;
1394
+ ids.push(messageId);
1395
+ messages[messageId] = {
1396
+ id: messageId,
1397
+ name: "presence",
1398
+ title: `${key} presence`,
1399
+ contentType: "application/json",
1400
+ payload: topic.presenceSchema ? convert(topic.presenceSchema, `topics.${key}.presence`, ctx) : OPEN,
1401
+ extensions: { [`${ctx.prefix}event`]: "presence" }
1402
+ };
1403
+ }
1404
+ const permission = topic.permission === void 0 ? void 0 : ctx.keyOf(topic.permission, `topics.${key}`);
1405
+ const extra = permission === void 0 ? {} : { permission };
1406
+ const operations = [{
1407
+ id: `receive${keyPart(key)}`,
1408
+ action: "receive",
1409
+ ...topic.summary ? { summary: topic.summary } : {},
1410
+ ...extra
1411
+ }];
1412
+ if (topic.send === true || topic.clientSend === true || topic.presence) operations.push({
1413
+ id: `send${keyPart(key)}`,
1414
+ action: "send",
1415
+ ...extra
1416
+ });
1417
+ const params = [...topic.template.matchAll(/\{([^}]+)\}/g)].map((match) => match[1] ?? "");
1418
+ channels.push({
1419
+ id,
1420
+ address: topic.template,
1421
+ ...topic.summary ? { summary: topic.summary } : {},
1422
+ ...topic.description ? { description: topic.description } : {},
1423
+ title: topic.name ?? key,
1424
+ ...params.length > 0 ? { parameters: Object.fromEntries(params.map((name) => [name, {}])) } : {},
1425
+ protocol: "ws",
1426
+ messages: ids,
1427
+ operations,
1428
+ extensions: {
1429
+ [`${ctx.prefix}private`]: topic.private ?? true,
1430
+ [`${ctx.prefix}realtime-status`]: topic.status ?? topicStatus(topic)
1431
+ }
1432
+ });
1433
+ }
1434
+ }
1435
+ function withActor(schema) {
1436
+ const properties = schema["properties"];
1437
+ if (!isPlainObject(properties) || "actorId" in properties) return schema;
1438
+ return {
1439
+ ...schema,
1440
+ properties: {
1441
+ ...properties,
1442
+ actorId: {
1443
+ type: "string",
1444
+ description: "Who caused the event."
1445
+ }
1446
+ }
1447
+ };
1448
+ }
1449
+ function cloudEventChannel(ctx, input, channels, messages) {
1450
+ const ids = [];
1451
+ const add = (messageId, type, title, payload, table) => {
1452
+ const { dataschema } = dataschemaOf(input, {
1453
+ type,
1454
+ ...table ? { table } : {}
1455
+ });
1456
+ ids.push(messageId);
1457
+ messages[messageId] = {
1458
+ id: messageId,
1459
+ name: type,
1460
+ title,
1461
+ contentType: "application/json",
1462
+ headers: cloudEventHeaders(type, dataschema),
1463
+ payload,
1464
+ traits: ["cloudEvent"],
1465
+ extensions: {
1466
+ [`${ctx.prefix}cloudevent-type`]: type,
1467
+ ...dataschema ? { [`${ctx.prefix}dataschema`]: dataschema } : {}
1468
+ }
1469
+ };
1470
+ };
1471
+ const rows = input.rows ?? false;
1472
+ const rowTables = rows === true ? Object.keys(ctx.meta.tables) : rows === false ? [] : rows;
1473
+ const defs = rowTables.length > 0 ? tableSchemas(ctx.meta, ctx.json) : {};
1474
+ for (const table of rowTables) {
1475
+ if (!ctx.meta.tables[table]) {
1476
+ ctx.report({
1477
+ code: "asyncapi-table-unknown",
1478
+ severity: "error",
1479
+ message: `events.cloudEvents.rows names an unknown table "${table}"`
1480
+ });
1481
+ continue;
1482
+ }
1483
+ const component = ctx.served.get(table)?.components.Row;
1484
+ const row = component ? schemaRef(component) : defs[`${table}Row`] ?? OPEN;
1485
+ for (const intent of input.intents ?? DEFAULT_INTENTS) {
1486
+ const last = ROW_EVENT_TYPES[intent].split(".").at(-1) ?? intent;
1487
+ const type = input.typePrefix ? `${input.typePrefix}.row.${last}` : ROW_EVENT_TYPES[intent];
1488
+ add(`row${keyPart(table)}${keyPart(last)}`, type, `${table} ${last}`, {
1489
+ type: "object",
1490
+ required: ["table", "row"],
1491
+ properties: {
1492
+ table: {
1493
+ type: "string",
1494
+ const: table
1495
+ },
1496
+ row,
1497
+ actorId: { type: "string" }
1498
+ }
1499
+ }, table);
1500
+ }
1501
+ }
1502
+ for (const [event, schema] of Object.entries(input.blocks ?? {})) {
1503
+ if (schema === void 0) continue;
1504
+ const type = `${input.typePrefix ?? "dev.better-supabase"}.${event}`;
1505
+ add(`block${keyPart(event)}`, type, event, withActor(convert(schema, `events.cloudEvents.blocks.${event}`, ctx)));
1506
+ }
1507
+ if (ids.length === 0) return false;
1508
+ channels.push({
1509
+ id: "cloudEvents",
1510
+ address: input.address ?? "events",
1511
+ title: "CloudEvents",
1512
+ description: `CloudEvents from \`${input.source}\`, sent to the event sink.`,
1513
+ protocol: "http",
1514
+ messages: ids,
1515
+ operations: [{
1516
+ id: "sendCloudEvents",
1517
+ action: "send"
1518
+ }]
1519
+ });
1520
+ return true;
1521
+ }
1522
+ /**
1523
+ * The built channels and messages first, then the app's own (which win on
1524
+ * an id), and the workflows with every `WorkflowSource` run on `operations`.
1525
+ */
1526
+ function eventParts(options, ctx, operations) {
1527
+ const built = buildEvents(options.events, ctx);
1528
+ return {
1529
+ channels: [...built.channels, ...options.channels ?? []],
1530
+ messages: {
1531
+ ...built.messages,
1532
+ ...options.messages
1533
+ },
1534
+ ...Object.keys(built.messageTraits).length > 0 ? { messageTraits: built.messageTraits } : {},
1535
+ workflows: (options.workflows ?? []).flatMap((workflow) => typeof workflow === "function" ? workflow(operations) : [workflow])
1536
+ };
1537
+ }
1538
+ /** Channels and messages from the realtime tables, topics and CloudEvents. */
1539
+ function buildEvents(events, ctx) {
1540
+ const channels = [];
1541
+ const messages = {};
1542
+ const messageTraits = {};
1543
+ if (!events) return {
1544
+ channels,
1545
+ messages,
1546
+ messageTraits
1547
+ };
1548
+ tableChannels(ctx, events.tables ?? true, channels, messages);
1549
+ topicChannels(ctx, events.topics ?? {}, channels, messages);
1550
+ if (events.cloudEvents && cloudEventChannel(ctx, events.cloudEvents, channels, messages)) messageTraits["cloudEvent"] = CLOUD_EVENT_TRAIT;
1551
+ return {
1552
+ channels,
1553
+ messages,
1554
+ messageTraits
1555
+ };
1556
+ }
1557
+ //#endregion
1558
+ //#region src/spec/build.ts
1559
+ const READ_METHODS = /* @__PURE__ */ new Set([
1560
+ "get",
1561
+ "head",
1562
+ "options",
1563
+ "query"
1564
+ ]);
1565
+ const modelCache = /* @__PURE__ */ new WeakMap();
1566
+ const NO_PLUGINS = [];
1567
+ /**
1568
+ * Builds the version-neutral API model once per metadata, plugin list and
1569
+ * options object. Formats lower it to each version; `defineApi` wraps it.
1570
+ */
1571
+ function buildApiModel(source, options) {
1572
+ const plugins = source.plugins ?? NO_PLUGINS;
1573
+ let byPlugins = modelCache.get(source.meta);
1574
+ if (!byPlugins) {
1575
+ byPlugins = /* @__PURE__ */ new WeakMap();
1576
+ modelCache.set(source.meta, byPlugins);
1577
+ }
1578
+ let byOptions = byPlugins.get(plugins);
1579
+ if (!byOptions) {
1580
+ byOptions = /* @__PURE__ */ new WeakMap();
1581
+ byPlugins.set(plugins, byOptions);
1582
+ }
1583
+ let built = byOptions.get(options);
1584
+ if (!built) {
1585
+ built = build(source.meta, plugins, options);
1586
+ byOptions.set(options, built);
1587
+ }
1588
+ return built;
1589
+ }
1590
+ function build(meta, plugins, options) {
1591
+ const ctx = createBuildContext(meta, options);
1592
+ for (const [key, input] of Object.entries(options.resources ?? {})) buildResource(ctx, key, input);
1593
+ for (const [index, route] of (options.routes ?? []).entries()) buildRoute(ctx, route, index);
1594
+ if (options.dataApi) buildDataApi(ctx, options.dataApi);
1595
+ const security = withDataApiSchemes(buildSecurity(ctx), ctx.operations, options.supabaseUrl);
1596
+ applyPlugins(ctx, plugins);
1597
+ validateOperations(ctx);
1598
+ return finalizeModel(ctx, security);
1599
+ }
1600
+ function buildRoute(ctx, route, index) {
1601
+ const { options, base, globalErrors, operations, prefix, addTag, keyOf, schemaOf, objectParameters, usedErrors } = ctx;
1602
+ const method = route.method.toLowerCase();
1603
+ if (!isMethod(method)) throw new TypeError(`better-supabase/spec: routes[${index}] has an unknown method "${route.method}"`);
1604
+ const path = `${base}${route.path}`;
1605
+ const defaultId = `${method}${route.path.split("/").filter(Boolean).map((segment) => segment.replaceAll(/[{}]/g, "")).map(pascal).join("")}`;
1606
+ const source = { kind: "route" };
1607
+ const id = route.operationId ?? options.operationId?.({
1608
+ source,
1609
+ method,
1610
+ path,
1611
+ defaultId
1612
+ }) ?? defaultId;
1613
+ const declared = route.params ? objectParameters(route.params, "path", `${id} params`) : [];
1614
+ const parameters = [];
1615
+ for (const [, param] of path.matchAll(/\{(\w+)\}/g)) parameters.push(declared.find((entry) => entry.name === param) ?? {
1616
+ name: param,
1617
+ in: "path",
1618
+ required: true,
1619
+ schema: { type: "string" }
1620
+ });
1621
+ if (route.query) parameters.push(...objectParameters(route.query, "query", `${id} query`));
1622
+ const permission = route.permission === void 0 ? void 0 : keyOf(route.permission, `routes[${index}]`);
1623
+ const secured = route.security === void 0 || route.security.length > 0;
1624
+ const status = String(route.status ?? (route.output || route.stream ? 200 : 204));
1625
+ const success = route.stream ? {
1626
+ description: route.summary ?? "A stream of events.",
1627
+ content: { [route.stream.contentType ?? "text/event-stream"]: { itemSchema: schemaOf(route.stream.item, "output", "item", id) } }
1628
+ } : route.output ? jsonResponse(schemaOf(route.output, "output", "output", id), route.summary ?? "OK.") : { description: route.summary ?? "Done." };
1629
+ const routeTags = [...route.tags ?? []];
1630
+ for (const tag of routeTags) addTag(tag);
1631
+ operations.push({
1632
+ id,
1633
+ method,
1634
+ path,
1635
+ tags: routeTags,
1636
+ source,
1637
+ ...route.summary ? { summary: route.summary } : {},
1638
+ ...route.description ? { description: route.description } : {},
1639
+ ...route.deprecated ? { deprecated: true } : {},
1640
+ parameters,
1641
+ ...route.input ? { requestBody: {
1642
+ required: true,
1643
+ content: jsonContent(schemaOf(route.input, "input", "input", id))
1644
+ } } : {},
1645
+ responses: {
1646
+ [status]: success,
1647
+ ...usedErrors(route.errors ?? globalErrors, [...route.input || route.query ? [400, 422] : [], ...secured ? [401, 403] : []], permission !== void 0)
1648
+ },
1649
+ ...route.security ? { security: route.security } : {},
1650
+ ...permission === void 0 ? {} : { permission },
1651
+ extensions: permission === void 0 ? {} : { [`${prefix}permission`]: permission },
1652
+ ...route.extend ? { extend: route.extend } : {}
1653
+ });
1654
+ }
1655
+ function buildSecurity(ctx) {
1656
+ const { options, operations } = ctx;
1657
+ const oauthScopes = {};
1658
+ if (options.permissionScopes === "keys") {
1659
+ for (const operation of operations) if (operation.permission) oauthScopes[operation.permission] = `Permission ${operation.permission}.`;
1660
+ }
1661
+ const security = resolveSecurity(options.security ?? ["bearer"], options.supabaseUrl, oauthScopes);
1662
+ if (options.permissionScopes === "keys") for (const operation of operations) {
1663
+ const key = operation.permission;
1664
+ if (!key || operation.security?.length === 0) continue;
1665
+ operation.security = (operation.security ?? security.requirements).map((requirement) => {
1666
+ const scopes = requirement[OAUTH_SCHEME];
1667
+ return scopes ? {
1668
+ ...requirement,
1669
+ [OAUTH_SCHEME]: [...scopes, key]
1670
+ } : requirement;
1671
+ });
1672
+ }
1673
+ return security;
1674
+ }
1675
+ function applyPlugins(ctx, plugins) {
1676
+ const { meta, prefix, served, schemas, report } = ctx;
1677
+ const describe = describeApi(meta, prefix, served, schemas);
1678
+ for (const plugin of plugins) {
1679
+ if (!plugin.describe) continue;
1680
+ try {
1681
+ plugin.describe(describe);
1682
+ } catch (error) {
1683
+ report({
1684
+ code: "plugin-describe-failed",
1685
+ severity: "warning",
1686
+ message: `The ${plugin.name} plugin's describe() threw: ${error instanceof Error ? error.message : String(error)}`
1687
+ });
1688
+ }
1689
+ }
1690
+ }
1691
+ /** Reports writes without a permission and duplicate operation ids. */
1692
+ function validateOperations(ctx) {
1693
+ const { options, operations, report } = ctx;
1694
+ if (options.requirePermissions) for (const operation of operations) {
1695
+ if (operation.source.kind === "data-api") continue;
1696
+ if ((operation.source.kind === "resource" ? operation.source.operation !== "list" && operation.source.operation !== "get" : !READ_METHODS.has(operation.method)) && operation.permission === void 0) report({
1697
+ code: "permission-missing",
1698
+ severity: "error",
1699
+ message: `${operation.id} writes but declares no permission`,
1700
+ pointer: `/operations/${pointerToken(operation.id)}`
1701
+ });
1702
+ }
1703
+ const seen = /* @__PURE__ */ new Set();
1704
+ for (const operation of operations) {
1705
+ if (seen.has(operation.id)) report({
1706
+ code: "operation-id-duplicate",
1707
+ severity: "error",
1708
+ message: `Two operations have the id "${operation.id}"`,
1709
+ pointer: `/operations/${pointerToken(operation.id)}`
1710
+ });
1711
+ seen.add(operation.id);
1712
+ }
1713
+ }
1714
+ function finalizeModel(ctx, security) {
1715
+ const { meta, options, prefix, served, keyOf, report, schemas, operations, tags, responses, diagnostics } = ctx;
1716
+ const { enrich } = options;
1717
+ const finalSchemas = {};
1718
+ for (const [name, schema] of Object.entries(schemas)) finalSchemas[name] = enrich?.schema?.(schema, { name }) ?? schema;
1719
+ const finalOperations = operations.map((operation) => enrich?.operation?.(operation) ?? operation);
1720
+ const { messageTraits, ...parts } = eventParts(options, {
1721
+ meta,
1722
+ json: options.json ?? {},
1723
+ prefix,
1724
+ served,
1725
+ keyOf,
1726
+ report
1727
+ }, finalOperations);
1728
+ const messages = {};
1729
+ for (const [id, message] of Object.entries(parts.messages)) messages[id] = enrich?.message?.(message, { id }) ?? message;
1730
+ return {
1731
+ model: {
1732
+ info: options.info,
1733
+ ...options.self ? { self: options.self } : {},
1734
+ servers: options.servers ?? [],
1735
+ tags,
1736
+ operations: finalOperations,
1737
+ schemas: finalSchemas,
1738
+ responses,
1739
+ securitySchemes: security.schemes,
1740
+ security: security.requirements,
1741
+ ...options.securityProfileRequirements ? { securityProfileRequirements: options.securityProfileRequirements } : {},
1742
+ channels: parts.channels.map((channel) => enrich?.channel?.(channel) ?? channel),
1743
+ messages,
1744
+ ...messageTraits ? { messageTraits } : {},
1745
+ webhooks: options.webhooks ?? [],
1746
+ workflows: parts.workflows.map((workflow) => enrich?.workflow?.(workflow) ?? workflow),
1747
+ fragments: options.fragments ?? [],
1748
+ ...options.realtimeUrl ? { realtimeUrl: options.realtimeUrl } : {},
1749
+ extensionPrefix: prefix
1750
+ },
1751
+ diagnostics
1752
+ };
1753
+ }
1754
+ function describeApi(meta, prefix, served, schemas) {
1755
+ const columnSchemas = (table, column) => {
1756
+ const entry = served.get(table);
1757
+ if (!entry) return [];
1758
+ return [
1759
+ "Row",
1760
+ "Insert",
1761
+ "Update"
1762
+ ].flatMap((variant) => {
1763
+ const name = entry.components[variant];
1764
+ const schema = name ? schemas[name] : void 0;
1765
+ const properties = schema?.["properties"];
1766
+ if (!schema || !isPlainObject(properties)) return [];
1767
+ const property = properties[column];
1768
+ if (!isPlainObject(property)) return [];
1769
+ return [{
1770
+ variant,
1771
+ schema,
1772
+ properties,
1773
+ property
1774
+ }];
1775
+ });
1776
+ };
1777
+ const replace = (schema, properties, column, property) => {
1778
+ schema["properties"] = {
1779
+ ...properties,
1780
+ [column]: property
1781
+ };
1782
+ };
1783
+ return {
1784
+ schema: meta,
1785
+ extensionPrefix: prefix,
1786
+ resources: [...served.values()].map((entry) => ({
1787
+ table: entry.table,
1788
+ operations: entry.operations.map((operation) => operation.source.kind === "action" ? operation.source.action : operation.source.kind === "resource" ? operation.source.operation : operation.id)
1789
+ })),
1790
+ addParameter(table, parameter, names) {
1791
+ for (const operation of served.get(table)?.operations ?? []) {
1792
+ const name = operation.source.kind === "action" ? operation.source.action : operation.source.kind === "resource" ? operation.source.operation : operation.id;
1793
+ if (names && !names.includes(name)) continue;
1794
+ if (operation.parameters.some((entry) => entry.name === parameter.name && entry.in === parameter.in)) continue;
1795
+ operation.parameters.push({ ...parameter });
1796
+ }
1797
+ },
1798
+ markReadOnly(table, column, description) {
1799
+ for (const { variant, schema, properties, property } of columnSchemas(table, column)) {
1800
+ replace(schema, properties, column, {
1801
+ ...property,
1802
+ readOnly: true,
1803
+ ...description && property["description"] === void 0 ? { description } : {}
1804
+ });
1805
+ const required = schema["required"];
1806
+ if (variant !== "Row" && Array.isArray(required)) schema["required"] = required.filter((name) => name !== column);
1807
+ }
1808
+ },
1809
+ describeColumn(table, column, patch) {
1810
+ for (const { schema, properties, property } of columnSchemas(table, column)) replace(schema, properties, column, mergeJson(property, patch));
1811
+ }
1812
+ };
1813
+ }
1814
+ //#endregion
1815
+ export { DEFAULT_ERRORS as a, pascal as c, topicsFrom as i, mergeJson as l, CLOUD_EVENT_TRAIT as n, PROBLEM_SCHEMA as o, safeKey as r, convertStandard as s, buildApiModel as t, pointerToken as u };