better-supabase 0.13.0 → 0.15.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 (1581) hide show
  1. package/README.md +67 -345
  2. package/dist/access-sql-B-MkVARa.js +207 -0
  3. package/dist/actor-go7p9-CJ.js +150 -0
  4. package/dist/adapter-B0b6MXYS.js +2299 -0
  5. package/dist/agents-5n8DWRfP.d.ts +117 -0
  6. package/dist/ai-cache-Cu8j6aQQ.js +87 -0
  7. package/dist/ai-cache-DyHohbFP.d.ts +82 -0
  8. package/dist/ai-chat-D1GuRnke.d.ts +619 -0
  9. package/dist/ai-files-CgFCRsnU.js +339 -0
  10. package/dist/ai-schedules-CAquecT_.d.ts +166 -0
  11. package/dist/ai-sdk/agents/index.d.ts +6 -6
  12. package/dist/ai-sdk/agents/index.js +4 -4
  13. package/dist/ai-sdk/batches/index.d.ts +5 -5
  14. package/dist/ai-sdk/batches/index.js +4 -4
  15. package/dist/ai-sdk/cache/index.d.ts +3 -3
  16. package/dist/ai-sdk/cache/index.js +2 -2
  17. package/dist/ai-sdk/chat/index.d.ts +1 -1
  18. package/dist/ai-sdk/chat/index.js +5 -5
  19. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  20. package/dist/ai-sdk/embeddings/index.js +1 -1
  21. package/dist/ai-sdk/files/index.d.ts +2 -2
  22. package/dist/ai-sdk/files/index.js +5 -5
  23. package/dist/ai-sdk/index.d.ts +30 -9
  24. package/dist/ai-sdk/index.js +42 -4
  25. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  26. package/dist/ai-sdk/mcp/index.js +7 -7
  27. package/dist/ai-sdk/memory/index.d.ts +3 -3
  28. package/dist/ai-sdk/memory/index.js +2 -2
  29. package/dist/ai-sdk/workflow/index.d.ts +4 -4
  30. package/dist/ai-sdk/workflow/index.js +7 -7
  31. package/dist/anchors-7F34QyHa.d.ts +40 -0
  32. package/dist/api-DxAPqMrE.d.ts +495 -0
  33. package/dist/api-keys-D5k63K6y.d.ts +213 -0
  34. package/dist/app-tables-CF2DD-Mu.d.ts +28 -0
  35. package/dist/app-tables-D29Rahtg.js +16350 -0
  36. package/dist/approvals-Crutd4-o.d.ts +129 -0
  37. package/dist/assistant-CD_h8Vxx.d.ts +157 -0
  38. package/dist/astro/index.d.ts +19 -16
  39. package/dist/astro/index.js +8 -8
  40. package/dist/attachments-aJYgdYtB.js +369 -0
  41. package/dist/attributes-Bzf51_nc.js +47 -0
  42. package/dist/auth-module-BEFESDC4.js +44 -0
  43. package/dist/auth-reply-tlXB2FQ9.js +31 -0
  44. package/dist/authorization-HZdJCaVm.d.ts +3595 -0
  45. package/dist/authorization-hooks-Cs1vP_ej.d.ts +217 -0
  46. package/dist/authorizer-B6X09otb.d.ts +118 -0
  47. package/dist/authorizer-BGhXaDmo.js +172 -0
  48. package/dist/automation-D41DXyvT.js +75 -0
  49. package/dist/automations-BYsz43AG.js +314 -0
  50. package/dist/automations-Bc2ue55V.js +26 -0
  51. package/dist/automations-CD1XlL2W.js +33 -0
  52. package/dist/automations-CIwRq7zm.js +30 -0
  53. package/dist/availability-vguUvEK2.d.ts +226 -0
  54. package/dist/better-result/index.d.ts +20 -30
  55. package/dist/better-result/index.js +2 -2
  56. package/dist/bind-CrMBwrPN.d.ts +104 -0
  57. package/dist/block-authors-BDV3y1SP.js +14 -0
  58. package/dist/block-authors-DzXLUiIq.d.ts +12 -0
  59. package/dist/block-env-B_uEM2xz.d.ts +32 -0
  60. package/dist/block-event-listener-Bu6G0TFH.js +16 -0
  61. package/dist/block-events-pBXPzwnW.js +83 -0
  62. package/dist/block-fields-BE7pInWZ.d.ts +58 -0
  63. package/dist/block-fields-DE_FgpOU.js +139 -0
  64. package/dist/block-helpers-CRpAHrp_.d.ts +62 -0
  65. package/dist/block-helpers-CtBdjgO4.js +353 -0
  66. package/dist/block-hooks-BfxX3682.js +130 -0
  67. package/dist/block-hooks-DZN2w69m.d.ts +117 -0
  68. package/dist/block-method-C9hWdHom.js +21 -0
  69. package/dist/block-method-CiVa2G-J.d.ts +14 -0
  70. package/dist/block-subjects-BhDKK_j7.js +55 -0
  71. package/dist/block-subjects-CphkQPxp.d.ts +6 -0
  72. package/dist/block-tenant-DHp7subc.js +14 -0
  73. package/dist/block-transport-DWZSJrwN.d.ts +69 -0
  74. package/dist/blocks/access-requests/index.d.ts +8 -8
  75. package/dist/blocks/access-requests/index.js +6 -7
  76. package/dist/blocks/activities/index.d.ts +215 -0
  77. package/dist/blocks/activities/index.js +414 -0
  78. package/dist/blocks/agents/index.d.ts +4 -4
  79. package/dist/blocks/agents/index.js +5 -6
  80. package/dist/blocks/ai-cache/index.d.ts +3 -3
  81. package/dist/blocks/ai-cache/index.js +3 -3
  82. package/dist/blocks/ai-chat/index.d.ts +119 -6
  83. package/dist/blocks/ai-chat/index.js +1067 -5
  84. package/dist/blocks/ai-files/index.d.ts +5 -5
  85. package/dist/blocks/ai-files/index.js +3 -3
  86. package/dist/blocks/ai-keys/index.d.ts +22 -0
  87. package/dist/blocks/ai-keys/index.js +236 -0
  88. package/dist/blocks/ai-schedules/index.d.ts +10 -0
  89. package/dist/blocks/ai-schedules/index.js +258 -0
  90. package/dist/blocks/announcements/index.d.ts +134 -5
  91. package/dist/blocks/announcements/index.js +179 -4
  92. package/dist/blocks/api-keys/index.d.ts +69 -8
  93. package/dist/blocks/api-keys/index.js +417 -7
  94. package/dist/blocks/approvals/index.d.ts +4 -4
  95. package/dist/blocks/approvals/index.js +25 -24
  96. package/dist/blocks/assets/index.d.ts +281 -0
  97. package/dist/blocks/assets/index.js +288 -0
  98. package/dist/blocks/assignment/index.d.ts +124 -0
  99. package/dist/blocks/assignment/index.js +141 -0
  100. package/dist/blocks/attachments/index.d.ts +130 -6
  101. package/dist/blocks/attachments/index.js +328 -7
  102. package/dist/blocks/audit/index.d.ts +476 -7
  103. package/dist/blocks/audit/index.js +863 -7
  104. package/dist/blocks/automations/index.d.ts +524 -0
  105. package/dist/blocks/automations/index.js +553 -0
  106. package/dist/blocks/billable-time/index.d.ts +201 -0
  107. package/dist/blocks/billable-time/index.js +260 -0
  108. package/dist/blocks/billing/index.d.ts +146 -16
  109. package/dist/blocks/billing/index.js +231 -41
  110. package/dist/blocks/bookings/index.d.ts +54 -5
  111. package/dist/blocks/bookings/index.js +423 -6
  112. package/dist/blocks/bulk/index.d.ts +6 -6
  113. package/dist/blocks/bulk/index.js +4 -4
  114. package/dist/blocks/calendar/index.d.ts +186 -5
  115. package/dist/blocks/calendar/index.js +1180 -4
  116. package/dist/blocks/catalog/index.d.ts +134 -28
  117. package/dist/blocks/catalog/index.js +183 -54
  118. package/dist/blocks/channels/index.d.ts +113 -0
  119. package/dist/blocks/channels/index.js +189 -0
  120. package/dist/blocks/collections/index.d.ts +90 -17
  121. package/dist/blocks/collections/index.js +85 -10
  122. package/dist/blocks/comments/index.d.ts +263 -45
  123. package/dist/blocks/comments/index.js +360 -16
  124. package/dist/blocks/compliance/index.d.ts +325 -0
  125. package/dist/blocks/compliance/index.js +410 -0
  126. package/dist/blocks/connectors/index.d.ts +4 -4
  127. package/dist/blocks/connectors/index.js +8 -9
  128. package/dist/blocks/contacts/index.d.ts +182 -0
  129. package/dist/blocks/contacts/index.js +358 -0
  130. package/dist/blocks/content/index.d.ts +188 -0
  131. package/dist/blocks/content/index.js +219 -0
  132. package/dist/blocks/contracts/index.d.ts +239 -0
  133. package/dist/blocks/contracts/index.js +361 -0
  134. package/dist/blocks/courses/index.d.ts +341 -0
  135. package/dist/blocks/courses/index.js +445 -0
  136. package/dist/blocks/created-by/index.d.ts +27 -0
  137. package/dist/blocks/created-by/index.js +14 -0
  138. package/dist/blocks/custom-fields/index.d.ts +44 -13
  139. package/dist/blocks/custom-fields/index.js +25 -20
  140. package/dist/blocks/data-lifecycle/index.d.ts +9 -9
  141. package/dist/blocks/data-lifecycle/index.js +7 -8
  142. package/dist/blocks/deals/index.d.ts +20 -40
  143. package/dist/blocks/deals/index.js +156 -66
  144. package/dist/blocks/dispatch/index.d.ts +325 -0
  145. package/dist/blocks/dispatch/index.js +406 -0
  146. package/dist/blocks/documents/index.d.ts +8 -5
  147. package/dist/blocks/documents/index.js +66 -7
  148. package/dist/blocks/domains/index.d.ts +7 -7
  149. package/dist/blocks/domains/index.js +6 -7
  150. package/dist/blocks/donations/index.d.ts +350 -0
  151. package/dist/blocks/donations/index.js +610 -0
  152. package/dist/blocks/drive/index.d.ts +56 -11
  153. package/dist/blocks/drive/index.js +62 -11
  154. package/dist/blocks/employees/index.d.ts +41 -23
  155. package/dist/blocks/employees/index.js +125 -33
  156. package/dist/blocks/enrichment/index.d.ts +176 -0
  157. package/dist/blocks/enrichment/index.js +251 -0
  158. package/dist/blocks/enrollments/index.d.ts +182 -0
  159. package/dist/blocks/enrollments/index.js +173 -0
  160. package/dist/blocks/entitlements/index.d.ts +48 -8
  161. package/dist/blocks/entitlements/index.js +62 -4
  162. package/dist/blocks/expenses/index.d.ts +214 -0
  163. package/dist/blocks/expenses/index.js +279 -0
  164. package/dist/blocks/field-history/index.d.ts +63 -0
  165. package/dist/blocks/field-history/index.js +46 -0
  166. package/dist/blocks/flags/index.d.ts +17 -13
  167. package/dist/blocks/flags/index.js +7 -8
  168. package/dist/blocks/forecasts/index.d.ts +119 -0
  169. package/dist/blocks/forecasts/index.js +129 -0
  170. package/dist/blocks/forms/index.d.ts +208 -140
  171. package/dist/blocks/forms/index.js +488 -149
  172. package/dist/blocks/goals/index.d.ts +82 -0
  173. package/dist/blocks/goals/index.js +72 -0
  174. package/dist/blocks/guests/index.d.ts +198 -0
  175. package/dist/blocks/guests/index.js +224 -0
  176. package/dist/blocks/hiring/index.d.ts +20 -10
  177. package/dist/blocks/hiring/index.js +10 -10
  178. package/dist/blocks/identities/index.d.ts +7 -7
  179. package/dist/blocks/identities/index.js +4 -5
  180. package/dist/blocks/imports/index.d.ts +8 -8
  181. package/dist/blocks/imports/index.js +6 -6
  182. package/dist/blocks/inbox/index.d.ts +138 -6
  183. package/dist/blocks/inbox/index.js +383 -85
  184. package/dist/blocks/incidents/index.d.ts +337 -0
  185. package/dist/blocks/incidents/index.js +477 -0
  186. package/dist/blocks/index.d.ts +145 -11
  187. package/dist/blocks/index.js +184 -187
  188. package/dist/blocks/inventory/index.d.ts +10 -10
  189. package/dist/blocks/inventory/index.js +6 -7
  190. package/dist/blocks/invoices/index.d.ts +11 -11
  191. package/dist/blocks/invoices/index.js +8 -9
  192. package/dist/blocks/knowledge/index.d.ts +3 -3
  193. package/dist/blocks/knowledge/index.js +4 -4
  194. package/dist/blocks/lead-scoring/index.d.ts +50 -0
  195. package/dist/blocks/lead-scoring/index.js +87 -0
  196. package/dist/blocks/leases/index.d.ts +221 -0
  197. package/dist/blocks/leases/index.js +244 -0
  198. package/dist/blocks/leave/index.d.ts +8 -8
  199. package/dist/blocks/leave/index.js +5 -6
  200. package/dist/blocks/ledger/index.d.ts +279 -0
  201. package/dist/blocks/ledger/index.js +229 -0
  202. package/dist/blocks/mail-sync/index.d.ts +37 -0
  203. package/dist/blocks/mail-sync/index.js +906 -0
  204. package/dist/blocks/memberships/index.d.ts +67 -0
  205. package/dist/blocks/memberships/index.js +14 -0
  206. package/dist/blocks/memory/index.d.ts +4 -4
  207. package/dist/blocks/memory/index.js +8 -9
  208. package/dist/blocks/messaging/index.d.ts +186 -0
  209. package/dist/blocks/messaging/index.js +619 -0
  210. package/dist/blocks/metrics/index.d.ts +7 -7
  211. package/dist/blocks/metrics/index.js +6 -7
  212. package/dist/blocks/mfa/index.d.ts +145 -3
  213. package/dist/blocks/mfa/index.js +211 -2
  214. package/dist/blocks/moderation/index.d.ts +203 -0
  215. package/dist/blocks/moderation/index.js +199 -0
  216. package/dist/blocks/notifications/index.d.ts +67 -15
  217. package/dist/blocks/notifications/index.js +64 -16
  218. package/dist/blocks/numbering/index.d.ts +45 -0
  219. package/dist/blocks/numbering/index.js +49 -0
  220. package/dist/blocks/oauth-server/index.d.ts +6 -6
  221. package/dist/blocks/oauth-server/index.js +6 -7
  222. package/dist/blocks/onboarding/index.d.ts +112 -4
  223. package/dist/blocks/onboarding/index.js +107 -4
  224. package/dist/blocks/orders/index.d.ts +152 -13
  225. package/dist/blocks/orders/index.js +188 -18
  226. package/dist/blocks/organizations/index.d.ts +452 -6
  227. package/dist/blocks/organizations/index.js +689 -5
  228. package/dist/blocks/outbox/index.d.ts +4 -4
  229. package/dist/blocks/outbox/index.js +20 -8
  230. package/dist/blocks/passes/index.d.ts +306 -0
  231. package/dist/blocks/passes/index.js +411 -0
  232. package/dist/blocks/permissions/index.d.ts +92 -0
  233. package/dist/blocks/permissions/index.js +127 -0
  234. package/dist/blocks/pipelines/index.d.ts +15 -15
  235. package/dist/blocks/pipelines/index.js +12 -13
  236. package/dist/blocks/posts/index.d.ts +190 -0
  237. package/dist/blocks/posts/index.js +230 -0
  238. package/dist/blocks/profiles/index.d.ts +7 -7
  239. package/dist/blocks/profiles/index.js +5 -6
  240. package/dist/blocks/promotions/index.d.ts +9 -9
  241. package/dist/blocks/promotions/index.js +7 -8
  242. package/dist/blocks/push/index.d.ts +9 -9
  243. package/dist/blocks/push/index.js +4 -5
  244. package/dist/blocks/queue/index.d.ts +562 -0
  245. package/dist/blocks/queue/index.js +1407 -0
  246. package/dist/blocks/quotes/index.d.ts +29 -14
  247. package/dist/blocks/quotes/index.js +14 -14
  248. package/dist/blocks/rank/index.d.ts +7 -7
  249. package/dist/blocks/rank/index.js +4 -4
  250. package/dist/blocks/reactions/index.d.ts +154 -5
  251. package/dist/blocks/reactions/index.js +168 -4
  252. package/dist/blocks/relations/index.d.ts +59 -42
  253. package/dist/blocks/relations/index.js +117 -59
  254. package/dist/blocks/reminders/index.d.ts +21 -17
  255. package/dist/blocks/reminders/index.js +26 -27
  256. package/dist/blocks/reviews/index.d.ts +8 -8
  257. package/dist/blocks/reviews/index.js +6 -7
  258. package/dist/blocks/saved-views/index.d.ts +311 -4
  259. package/dist/blocks/saved-views/index.js +437 -2
  260. package/dist/blocks/scores/index.d.ts +48 -0
  261. package/dist/blocks/scores/index.js +40 -0
  262. package/dist/blocks/search/index.d.ts +168 -5
  263. package/dist/blocks/search/index.js +277 -6
  264. package/dist/blocks/security-events/index.d.ts +440 -0
  265. package/dist/blocks/security-events/index.js +885 -0
  266. package/dist/blocks/segments/index.d.ts +130 -0
  267. package/dist/blocks/segments/index.js +135 -0
  268. package/dist/blocks/sequences/index.d.ts +259 -0
  269. package/dist/blocks/sequences/index.js +376 -0
  270. package/dist/blocks/service-accounts/index.d.ts +132 -0
  271. package/dist/blocks/service-accounts/index.js +109 -0
  272. package/dist/blocks/sessions/index.d.ts +138 -3
  273. package/dist/blocks/sessions/index.js +173 -2
  274. package/dist/blocks/settings/index.d.ts +181 -5
  275. package/dist/blocks/settings/index.js +226 -4
  276. package/dist/blocks/share-links/index.d.ts +46 -19
  277. package/dist/blocks/share-links/index.js +74 -23
  278. package/dist/blocks/shipments/index.d.ts +236 -0
  279. package/dist/blocks/shipments/index.js +548 -0
  280. package/dist/blocks/signatures/index.d.ts +151 -0
  281. package/dist/blocks/signatures/index.js +149 -0
  282. package/dist/blocks/signing-keys/index.d.ts +4 -4
  283. package/dist/blocks/signing-keys/index.js +4 -165
  284. package/dist/blocks/sla/index.d.ts +37 -27
  285. package/dist/blocks/sla/index.js +48 -13
  286. package/dist/blocks/sso/index.d.ts +7 -7
  287. package/dist/blocks/sso/index.js +4 -5
  288. package/dist/blocks/state-machine/index.d.ts +14 -14
  289. package/dist/blocks/state-machine/index.js +26 -26
  290. package/dist/blocks/subjects/index.d.ts +45 -0
  291. package/dist/blocks/subjects/index.js +203 -0
  292. package/dist/blocks/tags/index.d.ts +170 -5
  293. package/dist/blocks/tags/index.js +265 -5
  294. package/dist/blocks/tasks/index.d.ts +346 -0
  295. package/dist/blocks/tasks/index.js +626 -0
  296. package/dist/blocks/teams/index.d.ts +7 -7
  297. package/dist/blocks/teams/index.js +4 -4
  298. package/dist/blocks/templates/index.d.ts +18 -18
  299. package/dist/blocks/templates/index.js +11 -12
  300. package/dist/blocks/time-tracking/index.d.ts +40 -32
  301. package/dist/blocks/time-tracking/index.js +40 -40
  302. package/dist/blocks/timeline/index.d.ts +116 -0
  303. package/dist/blocks/timeline/index.js +164 -0
  304. package/dist/blocks/trash/index.d.ts +47 -9
  305. package/dist/blocks/trash/index.js +9 -8
  306. package/dist/blocks/undo/index.d.ts +48 -5
  307. package/dist/blocks/undo/index.js +60 -4
  308. package/dist/blocks/updated-at/index.d.ts +20 -0
  309. package/dist/blocks/updated-at/index.js +14 -0
  310. package/dist/blocks/usage/index.d.ts +40 -6
  311. package/dist/blocks/usage/index.js +301 -4
  312. package/dist/blocks/vercel-marketplace/index.d.ts +7 -7
  313. package/dist/blocks/vercel-marketplace/index.js +8 -9
  314. package/dist/blocks/versions/index.d.ts +38 -19
  315. package/dist/blocks/versions/index.js +66 -19
  316. package/dist/blocks/waitlist/index.d.ts +9 -9
  317. package/dist/blocks/waitlist/index.js +5 -6
  318. package/dist/blocks/webhooks/index.d.ts +21 -21
  319. package/dist/blocks/webhooks/index.js +18 -19
  320. package/dist/blocks/workflow-editor/index.d.ts +99 -0
  321. package/dist/blocks/workflow-editor/index.js +733 -0
  322. package/dist/blocks/workflows/index.d.ts +72 -6
  323. package/dist/blocks/workflows/index.js +379 -4
  324. package/dist/bookings-D4dvGXiR.d.ts +290 -0
  325. package/dist/bucket-CiNi8sIw.d.ts +666 -0
  326. package/dist/build-BFC8nFiL.js +797 -0
  327. package/dist/build-QitPVzzO.js +2073 -0
  328. package/dist/carrier-KzeYXVrW.d.ts +169 -0
  329. package/dist/chat-sdk/index.d.ts +43 -11
  330. package/dist/chat-sdk/index.js +51 -24
  331. package/dist/claims-DTy6R6my.js +63 -0
  332. package/dist/cli/add-BgsUjCan.js +1252 -0
  333. package/dist/cli/add-DCI5JKjA.js +99 -0
  334. package/dist/cli/add-DWjlVwvP.js +1 -0
  335. package/dist/cli/args-UEwg0l-N.js +27 -0
  336. package/dist/cli/backfill-nxPbcsns.js +293 -0
  337. package/dist/cli/bin.js +1 -1
  338. package/dist/cli/blocks-BZHI8mRC.js +156 -0
  339. package/dist/cli/blocks-Cr4HGePW.js +1 -0
  340. package/dist/cli/cache-CXgR_Ahi.js +607 -0
  341. package/dist/cli/codemod-DSN7iAdg.js +2343 -0
  342. package/dist/cli/codemod-block-renames-BuSaTE_G.js +239 -0
  343. package/dist/cli/command-CQ61x6gN.js +941 -0
  344. package/dist/cli/completion-2Y3D_eNu.js +211 -0
  345. package/dist/cli/completion-BwI0_Ap5.js +30 -0
  346. package/dist/cli/completion-Dlu5AdUW.js +1 -0
  347. package/dist/cli/config-9t5ec_N7.js +1642 -0
  348. package/dist/cli/config-CBqkQjjN.js +1 -0
  349. package/dist/cli/config-CPux9Wa7.js +47 -0
  350. package/dist/cli/config-edit-CrWfk8s3.js +621 -0
  351. package/dist/cli/config-group-C8tjut39.js +391 -0
  352. package/dist/cli/content-mapper-DNs7lTu7.js +182 -0
  353. package/dist/cli/db-DrBI_HNv.js +223 -0
  354. package/dist/cli/doctor-DDrEM6S1.js +4561 -0
  355. package/dist/cli/env-BBl5L8Bf.js +143 -0
  356. package/dist/cli/env-CAU1nknN.js +1 -0
  357. package/dist/cli/files-CX71yBm8.js +1010 -0
  358. package/dist/cli/gen-MtijJQ9r.js +387 -0
  359. package/dist/cli/in-stack-diff-DQTW53Vf.js +257 -0
  360. package/dist/cli/index.d.ts +51 -5
  361. package/dist/cli/index.js +8 -8
  362. package/dist/cli/init-D-aDv9r5.js +440 -0
  363. package/dist/cli/keys-DGEpMbeB.js +106 -0
  364. package/dist/cli/live-iEeH15ck.js +341 -0
  365. package/dist/cli/mcp-BAPyaQ62.js +249 -0
  366. package/dist/cli/metadata-DVx9Zgbj.js +150 -0
  367. package/dist/cli/migration-safety-D7PhzFxm.js +928 -0
  368. package/dist/cli/module-migration-aPCckev6.js +734 -0
  369. package/dist/cli/moved-CsfDQcyk.js +254 -0
  370. package/dist/cli/orphans-BAboqyVM.js +28 -0
  371. package/dist/cli/parse-B9Iv_-Pf.js +182 -0
  372. package/dist/cli/preset-BwmIfFnh.js +101 -0
  373. package/dist/cli/print-BeWO7OJY.js +67 -0
  374. package/dist/cli/remove-B46Dmd2M.js +238 -0
  375. package/dist/cli/render-ucJmUyuM.js +2170 -0
  376. package/dist/cli/run-BXx6D1aR.js +63 -0
  377. package/dist/cli/run-CvYVAztY.js +1427 -0
  378. package/dist/cli/run-DYhLBcFW.js +702 -0
  379. package/dist/cli/seed-Cz8PcXeT.js +188 -0
  380. package/dist/cli/seed-D6XijwbR.js +1 -0
  381. package/dist/cli/shared-LZroULBe.js +151 -0
  382. package/dist/cli/skills-toUan_OV.js +121 -0
  383. package/dist/cli/snapshot-C8MVPyO8.js +729 -0
  384. package/dist/cli/source-DANaJJVc.js +320 -0
  385. package/dist/cli/source-args-IpJRJO5t.js +59 -0
  386. package/dist/cli/spec-DGVNMSSB.js +7530 -0
  387. package/dist/cli/spec-g8_G5K7o.js +1 -0
  388. package/dist/cli/stack-CWEHdO0b.js +135 -0
  389. package/dist/cli/sync-btj01bcM.js +319 -0
  390. package/dist/cli/upgrade-B596d4t8.js +403 -0
  391. package/dist/cli/upgrade-Dw3TMQzn.js +41 -0
  392. package/dist/cli/version-Du4CgONY.js +4 -0
  393. package/dist/client/index.d.ts +8 -7
  394. package/dist/client/index.js +11 -7
  395. package/dist/client/native/index.d.ts +6 -6
  396. package/dist/client/native/index.js +3 -3
  397. package/dist/client-BAEbEA7t.js +287 -0
  398. package/dist/cloud-event-CzZTJkXv.d.ts +64 -0
  399. package/dist/codecs-CMWlhHZ0.d.ts +222 -0
  400. package/dist/codecs-TylXqU_I.js +358 -0
  401. package/dist/commerce/index.d.ts +4 -3
  402. package/dist/commerce/index.js +6 -6
  403. package/dist/compiler-D3UmE7ao.d.ts +14 -0
  404. package/dist/compose-DKW0Tr3e.js +53 -0
  405. package/dist/composite-BARuBEDE.js +130 -0
  406. package/dist/composite-Dsxj7T5K.d.ts +82 -0
  407. package/dist/config/index.d.ts +6 -7
  408. package/dist/config/index.js +6 -6
  409. package/dist/config-CcehOvbz.js +1698 -0
  410. package/dist/config-DWGgUQCh.js +1108 -0
  411. package/dist/connectors-Fud4amxp.d.ts +147 -0
  412. package/dist/context-CEuTKrkz.d.ts +4129 -0
  413. package/dist/context-DBicfUNz.js +41 -0
  414. package/dist/controller-BNZKd6bJ.js +73 -0
  415. package/dist/controller-BrP0gn47.d.ts +52 -0
  416. package/dist/conversion-BAbucuXq.d.ts +86 -0
  417. package/dist/conversion-Dq1S7xzE.js +77 -0
  418. package/dist/create/index.d.ts +34 -23
  419. package/dist/create/index.js +35 -27
  420. package/dist/create/lite/index.d.ts +2 -2
  421. package/dist/create/supabase/index.d.ts +2 -2
  422. package/dist/create/supabase/index.js +2 -2
  423. package/dist/create-blocks-Bu4H5TXw.js +352 -0
  424. package/dist/credentials/index.d.ts +5 -5
  425. package/dist/credentials/index.js +6 -7
  426. package/dist/cron-CgHTKwYG.js +148 -0
  427. package/dist/cron-route-UU9i5i9J.js +24 -0
  428. package/dist/data-engine-BWoz9lED.d.ts +273 -0
  429. package/dist/data-engine-D1BkmBoR.js +173 -0
  430. package/dist/data-hooks-tgF1Ct0F.js +280 -0
  431. package/dist/db-blocks-DJGbjIPz.js +62 -0
  432. package/dist/db-exception-Lngc1W49.js +31 -0
  433. package/dist/deal-forecast-Bv52QMyX.js +39 -0
  434. package/dist/deal-forecast-LwO-Z4_C.d.ts +23 -0
  435. package/dist/define-DFBnQyYg.d.ts +1255 -0
  436. package/dist/define-DlUeKHce.js +2011 -0
  437. package/dist/define-block-BGqOO8B3.js +64 -0
  438. package/dist/define-block-BVcLQ3DF.d.ts +1657 -0
  439. package/dist/delegation--93jRsVO.js +146 -0
  440. package/dist/documents-Cup1rpjF.d.ts +152 -0
  441. package/dist/edge/index.d.ts +23 -23
  442. package/dist/edge/index.js +14 -14
  443. package/dist/elysia/index.d.ts +1 -1
  444. package/dist/elysia/index.js +1 -1
  445. package/dist/embeddings-kFbRvuic.d.ts +78 -0
  446. package/dist/embeddings-vVzseUw0.js +128 -0
  447. package/dist/ended-gUsMZVNg.d.ts +26 -0
  448. package/dist/entitlements-CJpYQXeE.d.ts +54 -0
  449. package/dist/entitlements-NZAE_vLj.js +45 -0
  450. package/dist/entity-naming-Dtyq5sKE.js +131 -0
  451. package/dist/entity-schema-BDv6w-OQ.js +39 -0
  452. package/dist/envelope-Bzu0JnY2.js +90 -0
  453. package/dist/errors-BVFgt8BZ.js +328 -0
  454. package/dist/errors-CyxMxzlu.js +44 -0
  455. package/dist/escape-like-PReMbEEU.d.ts +30 -0
  456. package/dist/eve/index.d.ts +5 -5
  457. package/dist/eve/index.js +4 -4
  458. package/dist/eve-BFSwTu1z.d.ts +157 -0
  459. package/dist/event-calendar-DCufbihU.d.ts +65 -0
  460. package/dist/events/index.d.ts +4 -4
  461. package/dist/events/index.js +2 -1
  462. package/dist/events-vcqenSYU.d.ts +852 -0
  463. package/dist/executor-3qcMhg6R.js +207 -0
  464. package/dist/executor-BQ7dYw4E.js +843 -0
  465. package/dist/executor-CVIn6JHa.d.ts +174 -0
  466. package/dist/executor-D3gB-9si.js +486 -0
  467. package/dist/executor-_2ekNofh.d.ts +104 -0
  468. package/dist/executor-hGjrop3A.d.ts +37 -0
  469. package/dist/expo/index.d.ts +12 -11
  470. package/dist/expo/index.js +12 -11
  471. package/dist/extension-B-lajjex.js +58 -0
  472. package/dist/extension-B0EjCYhO.js +61 -0
  473. package/dist/extension-DeAd_MqI.js +121 -0
  474. package/dist/extension-DzCc0IOd.js +103 -0
  475. package/dist/extension-shared-Djm8mGHD.js +60 -0
  476. package/dist/field-errors-fsbFktYF.d.ts +216 -0
  477. package/dist/field-formats-CAFNkKSN.d.ts +38 -0
  478. package/dist/fields-B0zaJAO3.js +107 -0
  479. package/dist/fields-C3q2ypnO.d.ts +78 -0
  480. package/dist/filter-evaluate-CPxeae5X.d.ts +37 -0
  481. package/dist/filter-evaluate-w1XOIUOL.js +217 -0
  482. package/dist/filter-query-BXLs72G9.d.ts +133 -0
  483. package/dist/filter-query-DMoKo82_.js +566 -0
  484. package/dist/flags-BOdA_ETQ.js +279 -0
  485. package/dist/flags-C01PLMJ-.d.ts +246 -0
  486. package/dist/flags-sdk/index.d.ts +1 -1
  487. package/dist/flags-sdk/index.js +2 -2
  488. package/dist/form-definition-BTpM_tz1.js +363 -0
  489. package/dist/form-definition-BjEtH8BT.d.ts +119 -0
  490. package/dist/format-u-65igKI.d.ts +79 -0
  491. package/dist/framework-BKyTeS-j.d.ts +47 -0
  492. package/dist/framework-DDdkR7FX.js +58 -0
  493. package/dist/function-contract-DxFNOmsm.d.ts +27 -0
  494. package/dist/gateway-TD1pRfTP.d.ts +115 -0
  495. package/dist/guest-actions-1T1DeS5Y.d.ts +5 -0
  496. package/dist/guest-actions-B7zdhfnh.js +9 -0
  497. package/dist/h3/index.d.ts +2 -4
  498. package/dist/h3/index.js +2 -4
  499. package/dist/h3/v1/index.d.ts +2 -3
  500. package/dist/h3/v1/index.js +2 -3
  501. package/dist/hono/index.d.ts +27 -21
  502. package/dist/hono/index.js +22 -20
  503. package/dist/http-7-UvHjQe.js +28 -0
  504. package/dist/impersonation-DM3oWNoD.js +62 -0
  505. package/dist/inbox-NDKwSk_H.d.ts +321 -0
  506. package/dist/index-B938YqY-.d.ts +188 -0
  507. package/dist/index-BUuVq1co.d.ts +158 -0
  508. package/dist/index-BnH4Gomw.d.ts +633 -0
  509. package/dist/index-BxYOB1Oc.d.ts +149 -0
  510. package/dist/index-C-qpk8EQ.d.ts +262 -0
  511. package/dist/index-CG9rA8H8.d.ts +407 -0
  512. package/dist/index-CguFm716.d.ts +518 -0
  513. package/dist/index-DLq69k3F.d.ts +588 -0
  514. package/dist/index-Do2ChN_y.d.ts +287 -0
  515. package/dist/index.d.ts +39 -92
  516. package/dist/index.js +95 -16
  517. package/dist/instances-BHjCZoF8.js +277 -0
  518. package/dist/invalidate-DMp4eqfF.d.ts +21 -0
  519. package/dist/json-schema-Ca6gYbEP.js +888 -0
  520. package/dist/jwks-cache-DEsKI0hJ.js +49 -0
  521. package/dist/kit-5l-o8RxL.js +133 -0
  522. package/dist/kit-DOwKpSkA.d.ts +94 -0
  523. package/dist/knowledge-BGbtxMP9.js +300 -0
  524. package/dist/knowledge-CtL-Vfgy.d.ts +217 -0
  525. package/dist/lint/index.d.ts +94 -11
  526. package/dist/lint/index.js +268 -26
  527. package/dist/list/index.d.ts +4 -4
  528. package/dist/list/index.js +3 -3
  529. package/dist/list-query-BDVutLFr.d.ts +222 -0
  530. package/dist/list-query-BKy2zBaT.js +559 -0
  531. package/dist/live-C21DgbsD.js +275 -0
  532. package/dist/mapper/bin.js +380 -0
  533. package/dist/mcp/index.d.ts +8 -8
  534. package/dist/mcp/index.js +11 -11
  535. package/dist/mcp/sdk/index.d.ts +10 -10
  536. package/dist/mcp/sdk/index.js +11 -11
  537. package/dist/messages-D4XWuRTj.js +492 -0
  538. package/dist/messaging-C_Pr9tGx.d.ts +297 -0
  539. package/dist/methods-B3o7BFOW.js +11 -0
  540. package/dist/mfa-oIOYTpvc.d.ts +36 -0
  541. package/dist/model-hwpvole9.d.ts +340 -0
  542. package/dist/model-messages-CKG0zwdF.js +206 -0
  543. package/dist/money-codec-BzddguAQ.js +41 -0
  544. package/dist/my-work-kinds-BU3SlA-6.js +11 -0
  545. package/dist/nestjs/index.d.ts +3 -3
  546. package/dist/nestjs/index.js +2 -2
  547. package/dist/next/index.d.ts +296 -57
  548. package/dist/next/index.js +310 -54
  549. package/dist/node/index.d.ts +2 -2
  550. package/dist/node/index.js +6 -8
  551. package/dist/operations-CSc_IsHO.d.ts +6 -0
  552. package/dist/options-0qvUckqt.js +9 -0
  553. package/dist/options-1GgseJq5.js +10 -0
  554. package/dist/options-21s0dpnX.js +9 -0
  555. package/dist/options-2EMA_x6_.js +16 -0
  556. package/dist/options-63AKQNv0.js +5 -0
  557. package/dist/options-9gvPo1BC.js +8 -0
  558. package/dist/options-B-cxGmRA.js +5 -0
  559. package/dist/options-B0EJULm5.js +5 -0
  560. package/dist/options-B2swWnJW.js +9 -0
  561. package/dist/options-B5VUf4IT.js +8 -0
  562. package/dist/options-BMGClqoa.js +11 -0
  563. package/dist/options-BPDiwSa-.js +5 -0
  564. package/dist/options-BQIYfx9F.js +9 -0
  565. package/dist/options-BVg58avP.js +5 -0
  566. package/dist/options-BYOtaF7w.js +5 -0
  567. package/dist/options-BZOliZvb.js +9 -0
  568. package/dist/options-BbnPv6p7.js +12 -0
  569. package/dist/options-BfLmA375.js +5 -0
  570. package/dist/options-BjtrC7o6.js +8 -0
  571. package/dist/options-BlncUmIc.js +9 -0
  572. package/dist/options-BlzSfWxC.d.ts +10 -0
  573. package/dist/options-BnZS7IK-.js +9 -0
  574. package/dist/options-Bpl-WFPk.js +15 -0
  575. package/dist/options-Br1Xi2Hw.js +9 -0
  576. package/dist/options-Bt0bYMLl.js +24 -0
  577. package/dist/options-BvtnxHfK.js +24 -0
  578. package/dist/options-C-dQHH5-.js +8 -0
  579. package/dist/options-C3RgtOLo.js +5 -0
  580. package/dist/options-CE93HOYi.d.ts +7 -0
  581. package/dist/options-CF7nRWXS.js +5 -0
  582. package/dist/options-CM6-18FQ.d.ts +13 -0
  583. package/dist/options-CPK2nQER.js +5 -0
  584. package/dist/options-CRz8Ht_4.js +9 -0
  585. package/dist/options-CSCXNYJO.d.ts +8 -0
  586. package/dist/options-CW9wTqOk.js +11 -0
  587. package/dist/options-CYV4iZiQ.js +5 -0
  588. package/dist/options-Cl9Ag2Pt.js +8 -0
  589. package/dist/options-Cp0HyUEk.js +9 -0
  590. package/dist/options-Cqq2jUww.js +10 -0
  591. package/dist/options-CsGl5BLH.d.ts +52 -0
  592. package/dist/options-CtUUU71w.js +20 -0
  593. package/dist/options-CvD9vNvx.js +9 -0
  594. package/dist/options-CyAhRKKm.d.ts +14 -0
  595. package/dist/options-Cyu0hgmN.js +9 -0
  596. package/dist/options-D0G06Zm9.js +8 -0
  597. package/dist/options-D0bzZx9a.d.ts +10 -0
  598. package/dist/options-D1hSuf50.d.ts +12 -0
  599. package/dist/options-D6as77gU.d.ts +16 -0
  600. package/dist/options-DChZoVfs.d.ts +11 -0
  601. package/dist/options-DINdgVih.d.ts +9 -0
  602. package/dist/options-DJ-aYPVN.js +5 -0
  603. package/dist/options-DPgdAXO5.js +11 -0
  604. package/dist/options-DWML05Cp.js +5 -0
  605. package/dist/options-DWVYM8P0.d.ts +17 -0
  606. package/dist/options-DWbA9buW.js +9 -0
  607. package/dist/options-DXnBN2E7.js +8 -0
  608. package/dist/options-D_bBVCXg.js +5 -0
  609. package/dist/options-DcOx8_3X.d.ts +19 -0
  610. package/dist/options-DeNejBtq.js +8 -0
  611. package/dist/options-DgQo80Xh.js +5 -0
  612. package/dist/options-DlohRAYd.d.ts +13 -0
  613. package/dist/options-DplE18Ko.d.ts +12 -0
  614. package/dist/options-DrSkIBCD.js +9 -0
  615. package/dist/options-E7KcmHQv.js +8 -0
  616. package/dist/options-HLwOuF2H.js +10 -0
  617. package/dist/options-IHPg8ZoA.js +5 -0
  618. package/dist/options-KV84gAxl.js +10 -0
  619. package/dist/options-Li1Dyu88.d.ts +10 -0
  620. package/dist/options-Q1Bzgqpr.js +5 -0
  621. package/dist/options-_F-enoBs.d.ts +26 -0
  622. package/dist/options-c5WCsky5.js +21 -0
  623. package/dist/options-nFzfgtA6.js +5 -0
  624. package/dist/options-o2kfYU2x.js +8 -0
  625. package/dist/options-pOVWwbAK.d.ts +10 -0
  626. package/dist/options-t_O5ldT6.js +5 -0
  627. package/dist/options-xD4_FRUq.js +10 -0
  628. package/dist/options-y_-AkVCs.d.ts +15 -0
  629. package/dist/options-zkyhM3qi.js +8 -0
  630. package/dist/orpc/index.d.ts +76 -20
  631. package/dist/orpc/index.js +174 -9
  632. package/dist/otel/index.d.ts +3 -3
  633. package/dist/otel/index.js +7 -7
  634. package/dist/outbox-HvGAJuBe.d.ts +199 -0
  635. package/dist/payments-BXvabJOw.js +16 -0
  636. package/dist/payments-BYcN34Fp.d.ts +114 -0
  637. package/dist/permissions-controller-BMsqIE5T.js +34 -0
  638. package/dist/plugin-AKwwe2gF.js +48 -0
  639. package/dist/pool-CrtT4dg-.d.ts +123 -0
  640. package/dist/pool-errors-JUBcGrre.js +27 -0
  641. package/dist/ports-DOhtuw3c.js +152 -0
  642. package/dist/ports-sx226JUL.d.ts +89 -0
  643. package/dist/postgres/index.d.ts +5 -5
  644. package/dist/postgres/index.js +3 -3
  645. package/dist/postgrest-executor-BFW4oWte.js +1064 -0
  646. package/dist/postgrest-z-T0l23T.d.ts +53 -0
  647. package/dist/powersync/index.d.ts +106 -7
  648. package/dist/powersync/index.js +169 -23
  649. package/dist/preset/index.d.ts +4 -4
  650. package/dist/preset/index.js +4 -4
  651. package/dist/preset-CsHnIBJF.js +875 -0
  652. package/dist/problem-Bf0cJ7tk.js +162 -0
  653. package/dist/problem-DNwN8iGz.d.ts +79 -0
  654. package/dist/provider-B6g7rBZX.js +57 -0
  655. package/dist/provider-CqwEOLCA.d.ts +112 -0
  656. package/dist/push-token-D3Vcf0Pf.d.ts +24 -0
  657. package/dist/queries-BWYYS9um.js +239 -0
  658. package/dist/query/index.d.ts +4 -4
  659. package/dist/query/index.js +357 -3
  660. package/dist/rank-result-BBJIK-k_.js +18 -0
  661. package/dist/rank-result-Bwe7igy-.d.ts +14 -0
  662. package/dist/rate-limit-BWKGlhTM.js +49 -0
  663. package/dist/rate-limit-Bztf32cl.d.ts +50 -0
  664. package/dist/rate-limit-o44SYkVY.js +327 -0
  665. package/dist/react/index.d.ts +10 -9
  666. package/dist/react/index.js +5 -5
  667. package/dist/react/native/index.d.ts +1 -1
  668. package/dist/react/native/index.js +2 -3
  669. package/dist/react/server.d.ts +72 -13
  670. package/dist/react/server.js +71 -9
  671. package/dist/react/session.d.ts +3 -3
  672. package/dist/react-BuDYI62C.js +979 -0
  673. package/dist/react-router/index.d.ts +19 -13
  674. package/dist/react-router/index.js +10 -10
  675. package/dist/read-set-BnKnofIj.js +199 -0
  676. package/dist/realtime/index.d.ts +7 -7
  677. package/dist/realtime/index.js +36 -4
  678. package/dist/record-bindings-DkBJpC5A.js +26 -0
  679. package/dist/record-form-BYs9xv_N.d.ts +82 -0
  680. package/dist/record-type-DRbnlj5q.js +221 -0
  681. package/dist/recordings-BBSJt_YV.d.ts +119 -0
  682. package/dist/records/index.d.ts +83 -0
  683. package/dist/records/index.js +314 -0
  684. package/dist/refresh-DT_ICaK-.d.ts +54 -0
  685. package/dist/refusal-ByBZcm0V.js +64 -0
  686. package/dist/refusal-CSntB_x8.d.ts +32 -0
  687. package/dist/replicas-Dyoh3CEg.js +94 -0
  688. package/dist/resolve-B0mW2m7f.js +932 -0
  689. package/dist/resolve-CXX6DHv3.d.ts +288 -0
  690. package/dist/resource-D8pzB5Qf.d.ts +123 -0
  691. package/dist/resource-DV2GC2dB.js +520 -0
  692. package/dist/resource-DvgXqZB_.js +105 -0
  693. package/dist/resource-execute-CzHuDsil.d.ts +15 -0
  694. package/dist/resource-types-DnKiH4G2.d.ts +157 -0
  695. package/dist/resources-B9cQxhjw.d.ts +7 -0
  696. package/dist/resources-C02l_YBJ.js +64 -0
  697. package/dist/respond-C3CcOZlA.js +100 -0
  698. package/dist/respond-Dn1_YhC1.d.ts +106 -0
  699. package/dist/result-DZeA5KS6.d.ts +351 -0
  700. package/dist/result-ntFBW2p2.js +146 -0
  701. package/dist/rows-BDLZStp4.js +80 -0
  702. package/dist/rows-Bm6sskji.js +39 -0
  703. package/dist/rrule-79K2c3Nr.js +290 -0
  704. package/dist/run-state-BMCD_1Lt.d.ts +13 -0
  705. package/dist/sales-lines-Bk4mbLH1.d.ts +37 -0
  706. package/dist/sales-lines-D-sf9PIB.js +43 -0
  707. package/dist/sales-shared-DXGFJP4g.js +22 -0
  708. package/dist/schemas-l2aF78zQ.js +216 -0
  709. package/dist/scores-B2BiNuVJ.d.ts +174 -0
  710. package/dist/scores-CRp3vvQU.js +177 -0
  711. package/dist/server/index.d.ts +103 -42
  712. package/dist/server/index.js +98 -30
  713. package/dist/server-types-CFtehAsr.d.ts +946 -0
  714. package/dist/session-CH0SKgIz.d.ts +99 -0
  715. package/dist/shared-C47zAh2A.js +17 -0
  716. package/dist/sign-in-BAjR49fq.d.ts +24 -0
  717. package/dist/sign-in-BsIaNx2C.js +392 -0
  718. package/dist/sign-in-DNCdrk05.js +608 -0
  719. package/dist/signatures-CNcoq392.js +145 -0
  720. package/dist/signatures-Dkx9OE8j.d.ts +43 -0
  721. package/dist/signers-BAEzvTJ0.d.ts +390 -0
  722. package/dist/signing-keys-BNDUxpQL.d.ts +119 -0
  723. package/dist/signing-keys-wGKh4vtt.js +164 -0
  724. package/dist/solid/index.d.ts +67 -15
  725. package/dist/solid/index.js +93 -11
  726. package/dist/solid-start/index.d.ts +17 -14
  727. package/dist/solid-start/index.js +8 -8
  728. package/dist/spec/index.d.ts +691 -9
  729. package/dist/spec/index.js +2487 -5
  730. package/dist/spec-DTWkHzYZ.js +124 -0
  731. package/dist/spec-pins-C1Vm8OBl.js +61 -0
  732. package/dist/spec-pins-DIx95afw.d.ts +125 -0
  733. package/dist/sql/index.d.ts +5 -5
  734. package/dist/sql/index.js +5 -5
  735. package/dist/sql-BPbbPzRJ.js +421 -0
  736. package/dist/sql-ClHIdgKS.js +126996 -0
  737. package/dist/sqlite/index.d.ts +126 -0
  738. package/dist/sqlite/index.js +197 -0
  739. package/dist/sso-B0Txid2-.d.ts +161 -0
  740. package/dist/sso-d2S4x_f9.js +217 -0
  741. package/dist/ssr/index.d.ts +5 -4
  742. package/dist/ssr/index.js +3 -3
  743. package/dist/standard-BA3mLh6w.js +25 -0
  744. package/dist/standard-DBV730sF.d.ts +7 -0
  745. package/dist/stats-BHl1-zj9.js +83 -0
  746. package/dist/statuses-DMMDwXpZ.js +29 -0
  747. package/dist/statuses-zRcc2TeZ.js +28 -0
  748. package/dist/storage/index.d.ts +3 -3
  749. package/dist/storage/index.js +11 -11
  750. package/dist/store-CpheI-lN.d.ts +83 -0
  751. package/dist/streams/index.d.ts +3 -3
  752. package/dist/streams/index.js +2 -3
  753. package/dist/streams/redis/index.d.ts +2 -2
  754. package/dist/streams/redis/index.js +3 -3
  755. package/dist/stripe/index.d.ts +1 -1
  756. package/dist/stripe-X22LjuH-.d.ts +156 -0
  757. package/dist/subject-readers-B-pQ9Mmo.js +49 -0
  758. package/dist/subject-readers-BNSzkqw_.d.ts +21 -0
  759. package/dist/subjects-BpIEN1MS.d.ts +90 -0
  760. package/dist/subjects-DvmQeF_F.d.ts +79 -0
  761. package/dist/summaries-8jQTELIX.d.ts +69 -0
  762. package/dist/support-view-BYOgwXsJ.d.ts +17 -0
  763. package/dist/svelte/index.d.ts +67 -12
  764. package/dist/svelte/index.js +108 -11
  765. package/dist/sveltekit/index.d.ts +19 -16
  766. package/dist/sveltekit/index.js +14 -14
  767. package/dist/table-schema-BlF6k62Q.d.ts +81 -0
  768. package/dist/table-schema-CD8cJz_M.js +293 -0
  769. package/dist/tags-BjHflcHF.d.ts +30 -0
  770. package/dist/tags-CIZTqtlY.js +39 -0
  771. package/dist/tanstack-db/index.d.ts +50 -6
  772. package/dist/tanstack-db/index.js +44 -3
  773. package/dist/tanstack-start/index.d.ts +15 -12
  774. package/dist/tanstack-start/index.js +9 -9
  775. package/dist/tax-BkCNWWMc.js +140 -0
  776. package/dist/tax-DPShHual.d.ts +170 -0
  777. package/dist/tee-V97_v1ZS.js +101 -0
  778. package/dist/template-Drgg3v2J.js +126 -0
  779. package/dist/temporal-required-Dy0GGD8E.js +20 -0
  780. package/dist/tenant-BgIiMQpo.js +27 -0
  781. package/dist/tenant-source-bqWpSr86.js +8 -0
  782. package/dist/tenant-yYg0E2-n.d.ts +17 -0
  783. package/dist/testing/index.d.ts +183 -58
  784. package/dist/testing/index.js +405 -97
  785. package/dist/timeline--VU3A1e4.js +50 -0
  786. package/dist/timeline-CtG0sehj.d.ts +151 -0
  787. package/dist/timing-dypS0nxW.js +95 -0
  788. package/dist/topic-CJrQZQaa.d.ts +415 -0
  789. package/dist/topic-ikV_pLTX.js +643 -0
  790. package/dist/types-BBQLbui9.d.ts +659 -0
  791. package/dist/types-CAQBmpDx.d.ts +217 -0
  792. package/dist/types-DFdg_4yN.d.ts +912 -0
  793. package/dist/types-Dp3UCr1e.d.ts +194 -0
  794. package/dist/types-Dr9wZgNy.d.ts +251 -0
  795. package/dist/types-EO2crSX_.d.ts +177 -0
  796. package/dist/types-SFRomQF7.d.ts +624 -0
  797. package/dist/undo-B1jwnVyN.d.ts +46 -0
  798. package/dist/undo-BjCChCmH.js +44 -0
  799. package/dist/upload-claim-B1ZU8ydB.js +33 -0
  800. package/dist/usage-D7QkrwzV.d.ts +232 -0
  801. package/dist/user-change-DgWC6RRC.js +135 -0
  802. package/dist/variants-Cy--Ub-a.js +53 -0
  803. package/dist/vault-O-YlAyHb.d.ts +62 -0
  804. package/dist/vercel-connect/index.d.ts +1 -1
  805. package/dist/vercel-connect/index.js +3 -3
  806. package/dist/verify-CMou8dWZ.d.ts +146 -0
  807. package/dist/verify-ZLFUdlqE.js +130 -0
  808. package/dist/view-C8Ve14ja.js +247 -0
  809. package/dist/view-DyFdMCqg.d.ts +97 -0
  810. package/dist/vue/index.d.ts +67 -20
  811. package/dist/vue/index.js +102 -14
  812. package/dist/watch-topic-BcGfvZOE.d.ts +31 -0
  813. package/dist/wiring-CDNuQoJJ.js +13 -0
  814. package/dist/workflow-sdk/builder/index.d.ts +12 -12
  815. package/dist/workflow-sdk/builder/index.js +16 -17
  816. package/dist/workflow-sdk/index.d.ts +18 -15
  817. package/dist/workflow-sdk/index.js +2 -2
  818. package/dist/workflow-sdk/world/index.d.ts +6 -6
  819. package/dist/workflow-sdk/world/index.js +12 -12
  820. package/dist/workflow-sdk-BFHu4sci.d.ts +163 -0
  821. package/dist/workflow-sdk-BVlFEB5Q.js +242 -0
  822. package/dist/workflow-sdk-Bw6_u0ar.js +2446 -0
  823. package/dist/workflows-B0ZPAQu0.d.ts +255 -0
  824. package/dist/yjs/index.d.ts +28 -4
  825. package/dist/yjs/index.js +52 -10
  826. package/package.json +201 -540
  827. package/schemas/config-v1.json +2720 -1693
  828. package/schemas/design-v1.json +147 -5
  829. package/schemas/doctor-report-v1.json +14 -0
  830. package/schemas/snapshot-v2.json +25 -0
  831. package/skills/better-supabase/SKILL.md +71 -28
  832. package/skills/better-supabase/references/block-extensions.md +64 -0
  833. package/skills/better-supabase/references/frontend.md +29 -26
  834. package/skills/better-supabase/references/troubleshooting.md +19 -19
  835. package/skills/better-supabase/references/ui-recipes.md +12837 -8039
  836. package/skills/better-supabase-api/SKILL.md +49 -38
  837. package/skills/better-supabase-api/references/adapters.md +42 -39
  838. package/skills/better-supabase-api/references/ai.md +4 -4
  839. package/skills/better-supabase-api/references/expo.md +8 -8
  840. package/skills/better-supabase-api/references/powersync.md +25 -11
  841. package/skills/better-supabase-api/references/streams-credentials.md +3 -3
  842. package/skills/better-supabase-auth/SKILL.md +17 -17
  843. package/skills/better-supabase-auth/references/authorization-providers.md +8 -6
  844. package/skills/better-supabase-testing/SKILL.md +8 -8
  845. package/dist/access-sql-BpOdJvfj.js +0 -205
  846. package/dist/actor-C9pwyCVz.js +0 -150
  847. package/dist/adapter-D8dW6p2A.js +0 -2190
  848. package/dist/agents-CuxuXVWv.d.ts +0 -117
  849. package/dist/ai-cache-BXMXRhkx.d.ts +0 -82
  850. package/dist/ai-cache-Byy5q6EZ.js +0 -87
  851. package/dist/ai-chat-B00sIOjY.d.ts +0 -619
  852. package/dist/ai-files-DTbIJcxQ.js +0 -339
  853. package/dist/ai-tasks-DN-AV7qB.d.ts +0 -166
  854. package/dist/announcements-DqiLxtKK.js +0 -128
  855. package/dist/api-CmcTYuFT.js +0 -685
  856. package/dist/api-DwLhJS1j.d.ts +0 -444
  857. package/dist/api-keys-Bade6Qtl.d.ts +0 -213
  858. package/dist/api-keys-CO24Ffil.js +0 -318
  859. package/dist/app-tables-0YZ9IskE.js +0 -831
  860. package/dist/app-tables-CbWUI7h_.d.ts +0 -35
  861. package/dist/approvals-C-4MOWdV.d.ts +0 -127
  862. package/dist/arazzo/index.d.ts +0 -277
  863. package/dist/arazzo/index.js +0 -630
  864. package/dist/assistant-CcP_kpu7.d.ts +0 -157
  865. package/dist/asyncapi/index.d.ts +0 -109
  866. package/dist/asyncapi/index.js +0 -572
  867. package/dist/attachments-CPkGJVfk.js +0 -270
  868. package/dist/attributes-BOFl922R.js +0 -44
  869. package/dist/audit-log-5aTnl7W2.js +0 -788
  870. package/dist/auth-module-CwCIY97x.js +0 -10
  871. package/dist/auth-reply-D02x5NSv.js +0 -31
  872. package/dist/authorization-CB69cvnA.d.ts +0 -1504
  873. package/dist/authorization-hooks-HXVZXxUk.d.ts +0 -217
  874. package/dist/authorizer-BVR2vPGA.js +0 -125
  875. package/dist/authorizer-DFP3gHv8.d.ts +0 -82
  876. package/dist/bind-DcXLU1ul.d.ts +0 -76
  877. package/dist/block-env-YfPmSNa1.js +0 -32
  878. package/dist/block-env-kFcaaJLM.d.ts +0 -10
  879. package/dist/block-events-BURaqwyp.js +0 -96
  880. package/dist/block-fields-Cwd4c8m-.js +0 -139
  881. package/dist/block-fields-DnXkMney.d.ts +0 -58
  882. package/dist/block-helpers-DwE32_gT.js +0 -272
  883. package/dist/block-helpers-DyA5BAW4.d.ts +0 -43
  884. package/dist/block-hooks-BadAniNI.d.ts +0 -117
  885. package/dist/block-hooks-C1r-R2r0.js +0 -130
  886. package/dist/block-transport-DBPhgF3W.d.ts +0 -69
  887. package/dist/block-transport-Ds0C2mUf.js +0 -84
  888. package/dist/blocks/ai-chat/react/index.d.ts +0 -52
  889. package/dist/blocks/ai-chat/react/index.js +0 -95
  890. package/dist/blocks/ai-chat/react/server.d.ts +0 -25
  891. package/dist/blocks/ai-chat/react/server.js +0 -23
  892. package/dist/blocks/ai-chat/solid/index.d.ts +0 -34
  893. package/dist/blocks/ai-chat/solid/index.js +0 -41
  894. package/dist/blocks/ai-chat/svelte/index.d.ts +0 -34
  895. package/dist/blocks/ai-chat/svelte/index.js +0 -41
  896. package/dist/blocks/ai-chat/vue/index.d.ts +0 -34
  897. package/dist/blocks/ai-chat/vue/index.js +0 -41
  898. package/dist/blocks/ai-providers/index.d.ts +0 -22
  899. package/dist/blocks/ai-providers/index.js +0 -237
  900. package/dist/blocks/ai-tasks/index.d.ts +0 -10
  901. package/dist/blocks/ai-tasks/index.js +0 -253
  902. package/dist/blocks/announcements/react/index.d.ts +0 -28
  903. package/dist/blocks/announcements/react/index.js +0 -38
  904. package/dist/blocks/announcements/react/server.d.ts +0 -9
  905. package/dist/blocks/announcements/react/server.js +0 -10
  906. package/dist/blocks/announcements/solid/index.d.ts +0 -13
  907. package/dist/blocks/announcements/solid/index.js +0 -14
  908. package/dist/blocks/announcements/svelte/index.d.ts +0 -13
  909. package/dist/blocks/announcements/svelte/index.js +0 -14
  910. package/dist/blocks/announcements/vue/index.d.ts +0 -13
  911. package/dist/blocks/announcements/vue/index.js +0 -14
  912. package/dist/blocks/api-keys/react/index.d.ts +0 -32
  913. package/dist/blocks/api-keys/react/index.js +0 -43
  914. package/dist/blocks/api-keys/react/server.d.ts +0 -7
  915. package/dist/blocks/api-keys/react/server.js +0 -7
  916. package/dist/blocks/api-keys/solid/index.d.ts +0 -13
  917. package/dist/blocks/api-keys/solid/index.js +0 -14
  918. package/dist/blocks/api-keys/svelte/index.d.ts +0 -13
  919. package/dist/blocks/api-keys/svelte/index.js +0 -14
  920. package/dist/blocks/api-keys/vue/index.d.ts +0 -13
  921. package/dist/blocks/api-keys/vue/index.js +0 -14
  922. package/dist/blocks/audit/react/index.d.ts +0 -31
  923. package/dist/blocks/audit/react/index.js +0 -46
  924. package/dist/blocks/audit/react/server.d.ts +0 -7
  925. package/dist/blocks/audit/react/server.js +0 -7
  926. package/dist/blocks/audit/solid/index.d.ts +0 -13
  927. package/dist/blocks/audit/solid/index.js +0 -14
  928. package/dist/blocks/audit/svelte/index.d.ts +0 -13
  929. package/dist/blocks/audit/svelte/index.js +0 -14
  930. package/dist/blocks/audit/vue/index.d.ts +0 -13
  931. package/dist/blocks/audit/vue/index.js +0 -14
  932. package/dist/blocks/billing/react/index.d.ts +0 -44
  933. package/dist/blocks/billing/react/index.js +0 -40
  934. package/dist/blocks/billing/react/server.d.ts +0 -10
  935. package/dist/blocks/billing/react/server.js +0 -10
  936. package/dist/blocks/billing/solid/index.d.ts +0 -15
  937. package/dist/blocks/billing/solid/index.js +0 -14
  938. package/dist/blocks/billing/svelte/index.d.ts +0 -15
  939. package/dist/blocks/billing/svelte/index.js +0 -14
  940. package/dist/blocks/billing/vue/index.d.ts +0 -15
  941. package/dist/blocks/billing/vue/index.js +0 -14
  942. package/dist/blocks/bookings/react/index.d.ts +0 -35
  943. package/dist/blocks/bookings/react/index.js +0 -63
  944. package/dist/blocks/bookings/react/server.d.ts +0 -9
  945. package/dist/blocks/bookings/react/server.js +0 -10
  946. package/dist/blocks/bookings/solid/index.d.ts +0 -13
  947. package/dist/blocks/bookings/solid/index.js +0 -14
  948. package/dist/blocks/bookings/svelte/index.d.ts +0 -13
  949. package/dist/blocks/bookings/svelte/index.js +0 -14
  950. package/dist/blocks/bookings/vue/index.d.ts +0 -13
  951. package/dist/blocks/bookings/vue/index.js +0 -14
  952. package/dist/blocks/calendar/react/index.d.ts +0 -26
  953. package/dist/blocks/calendar/react/index.js +0 -58
  954. package/dist/blocks/calendar/react/server.d.ts +0 -9
  955. package/dist/blocks/calendar/react/server.js +0 -10
  956. package/dist/blocks/calendar/solid/index.d.ts +0 -13
  957. package/dist/blocks/calendar/solid/index.js +0 -14
  958. package/dist/blocks/calendar/svelte/index.d.ts +0 -13
  959. package/dist/blocks/calendar/svelte/index.js +0 -14
  960. package/dist/blocks/calendar/vue/index.d.ts +0 -13
  961. package/dist/blocks/calendar/vue/index.js +0 -14
  962. package/dist/blocks/comments/react/index.d.ts +0 -34
  963. package/dist/blocks/comments/react/index.js +0 -49
  964. package/dist/blocks/comments/react/server.d.ts +0 -7
  965. package/dist/blocks/comments/react/server.js +0 -7
  966. package/dist/blocks/comments/solid/index.d.ts +0 -13
  967. package/dist/blocks/comments/solid/index.js +0 -14
  968. package/dist/blocks/comments/svelte/index.d.ts +0 -13
  969. package/dist/blocks/comments/svelte/index.js +0 -14
  970. package/dist/blocks/comments/vue/index.d.ts +0 -13
  971. package/dist/blocks/comments/vue/index.js +0 -14
  972. package/dist/blocks/engagements/index.d.ts +0 -134
  973. package/dist/blocks/engagements/index.js +0 -143
  974. package/dist/blocks/entitlements/react/index.d.ts +0 -27
  975. package/dist/blocks/entitlements/react/index.js +0 -35
  976. package/dist/blocks/entitlements/react/server.d.ts +0 -9
  977. package/dist/blocks/entitlements/react/server.js +0 -10
  978. package/dist/blocks/entitlements/solid/index.d.ts +0 -13
  979. package/dist/blocks/entitlements/solid/index.js +0 -14
  980. package/dist/blocks/entitlements/svelte/index.d.ts +0 -13
  981. package/dist/blocks/entitlements/svelte/index.js +0 -14
  982. package/dist/blocks/entitlements/vue/index.d.ts +0 -13
  983. package/dist/blocks/entitlements/vue/index.js +0 -14
  984. package/dist/blocks/forms/react/index.d.ts +0 -19
  985. package/dist/blocks/forms/react/index.js +0 -28
  986. package/dist/blocks/forms/react/server.d.ts +0 -9
  987. package/dist/blocks/forms/react/server.js +0 -10
  988. package/dist/blocks/forms/solid/index.d.ts +0 -13
  989. package/dist/blocks/forms/solid/index.js +0 -14
  990. package/dist/blocks/forms/svelte/index.d.ts +0 -13
  991. package/dist/blocks/forms/svelte/index.js +0 -14
  992. package/dist/blocks/forms/vue/index.d.ts +0 -13
  993. package/dist/blocks/forms/vue/index.js +0 -14
  994. package/dist/blocks/inbox/react/index.d.ts +0 -3
  995. package/dist/blocks/inbox/react/index.js +0 -81
  996. package/dist/blocks/inbox/react/server.d.ts +0 -17
  997. package/dist/blocks/inbox/react/server.js +0 -18
  998. package/dist/blocks/inbox/solid/index.d.ts +0 -27
  999. package/dist/blocks/inbox/solid/index.js +0 -32
  1000. package/dist/blocks/inbox/svelte/index.d.ts +0 -27
  1001. package/dist/blocks/inbox/svelte/index.js +0 -32
  1002. package/dist/blocks/inbox/vue/index.d.ts +0 -27
  1003. package/dist/blocks/inbox/vue/index.js +0 -32
  1004. package/dist/blocks/jobs/index.d.ts +0 -523
  1005. package/dist/blocks/jobs/index.js +0 -1346
  1006. package/dist/blocks/mfa/react/index.d.ts +0 -30
  1007. package/dist/blocks/mfa/react/index.js +0 -45
  1008. package/dist/blocks/mfa/react/server.d.ts +0 -9
  1009. package/dist/blocks/mfa/react/server.js +0 -12
  1010. package/dist/blocks/mfa/solid/index.d.ts +0 -20
  1011. package/dist/blocks/mfa/solid/index.js +0 -23
  1012. package/dist/blocks/mfa/svelte/index.d.ts +0 -20
  1013. package/dist/blocks/mfa/svelte/index.js +0 -23
  1014. package/dist/blocks/mfa/vue/index.d.ts +0 -20
  1015. package/dist/blocks/mfa/vue/index.js +0 -23
  1016. package/dist/blocks/notifications/react/index.d.ts +0 -19
  1017. package/dist/blocks/notifications/react/index.js +0 -41
  1018. package/dist/blocks/notifications/react/server.d.ts +0 -10
  1019. package/dist/blocks/notifications/react/server.js +0 -10
  1020. package/dist/blocks/notifications/solid/index.d.ts +0 -13
  1021. package/dist/blocks/notifications/solid/index.js +0 -14
  1022. package/dist/blocks/notifications/svelte/index.d.ts +0 -13
  1023. package/dist/blocks/notifications/svelte/index.js +0 -14
  1024. package/dist/blocks/notifications/vue/index.d.ts +0 -13
  1025. package/dist/blocks/notifications/vue/index.js +0 -14
  1026. package/dist/blocks/number-sequences/index.d.ts +0 -48
  1027. package/dist/blocks/number-sequences/index.js +0 -52
  1028. package/dist/blocks/onboarding/react/index.d.ts +0 -24
  1029. package/dist/blocks/onboarding/react/index.js +0 -38
  1030. package/dist/blocks/onboarding/react/server.d.ts +0 -10
  1031. package/dist/blocks/onboarding/react/server.js +0 -10
  1032. package/dist/blocks/onboarding/solid/index.d.ts +0 -13
  1033. package/dist/blocks/onboarding/solid/index.js +0 -14
  1034. package/dist/blocks/onboarding/svelte/index.d.ts +0 -13
  1035. package/dist/blocks/onboarding/svelte/index.js +0 -14
  1036. package/dist/blocks/onboarding/vue/index.d.ts +0 -13
  1037. package/dist/blocks/onboarding/vue/index.js +0 -14
  1038. package/dist/blocks/organizations/react/index.d.ts +0 -127
  1039. package/dist/blocks/organizations/react/index.js +0 -113
  1040. package/dist/blocks/organizations/react/server.d.ts +0 -20
  1041. package/dist/blocks/organizations/react/server.js +0 -24
  1042. package/dist/blocks/organizations/solid/index.d.ts +0 -34
  1043. package/dist/blocks/organizations/solid/index.js +0 -32
  1044. package/dist/blocks/organizations/svelte/index.d.ts +0 -34
  1045. package/dist/blocks/organizations/svelte/index.js +0 -32
  1046. package/dist/blocks/organizations/vue/index.d.ts +0 -34
  1047. package/dist/blocks/organizations/vue/index.js +0 -32
  1048. package/dist/blocks/parties/index.d.ts +0 -190
  1049. package/dist/blocks/parties/index.js +0 -261
  1050. package/dist/blocks/reactions/react/index.d.ts +0 -33
  1051. package/dist/blocks/reactions/react/index.js +0 -50
  1052. package/dist/blocks/reactions/react/server.d.ts +0 -9
  1053. package/dist/blocks/reactions/react/server.js +0 -10
  1054. package/dist/blocks/reactions/solid/index.d.ts +0 -13
  1055. package/dist/blocks/reactions/solid/index.js +0 -14
  1056. package/dist/blocks/reactions/svelte/index.d.ts +0 -13
  1057. package/dist/blocks/reactions/svelte/index.js +0 -14
  1058. package/dist/blocks/reactions/vue/index.d.ts +0 -13
  1059. package/dist/blocks/reactions/vue/index.js +0 -14
  1060. package/dist/blocks/rules/index.d.ts +0 -171
  1061. package/dist/blocks/rules/index.js +0 -162
  1062. package/dist/blocks/rules/react/index.d.ts +0 -38
  1063. package/dist/blocks/rules/react/index.js +0 -59
  1064. package/dist/blocks/rules/react/server.d.ts +0 -6
  1065. package/dist/blocks/rules/react/server.js +0 -7
  1066. package/dist/blocks/rules/solid/index.d.ts +0 -13
  1067. package/dist/blocks/rules/solid/index.js +0 -14
  1068. package/dist/blocks/rules/svelte/index.d.ts +0 -13
  1069. package/dist/blocks/rules/svelte/index.js +0 -14
  1070. package/dist/blocks/rules/vue/index.d.ts +0 -13
  1071. package/dist/blocks/rules/vue/index.js +0 -14
  1072. package/dist/blocks/saved-views/react/index.d.ts +0 -40
  1073. package/dist/blocks/saved-views/react/index.js +0 -60
  1074. package/dist/blocks/saved-views/react/server.d.ts +0 -10
  1075. package/dist/blocks/saved-views/react/server.js +0 -10
  1076. package/dist/blocks/saved-views/solid/index.d.ts +0 -13
  1077. package/dist/blocks/saved-views/solid/index.js +0 -14
  1078. package/dist/blocks/saved-views/svelte/index.d.ts +0 -13
  1079. package/dist/blocks/saved-views/svelte/index.js +0 -14
  1080. package/dist/blocks/saved-views/vue/index.d.ts +0 -13
  1081. package/dist/blocks/saved-views/vue/index.js +0 -14
  1082. package/dist/blocks/search/react/index.d.ts +0 -39
  1083. package/dist/blocks/search/react/index.js +0 -49
  1084. package/dist/blocks/search/react/server.d.ts +0 -10
  1085. package/dist/blocks/search/react/server.js +0 -11
  1086. package/dist/blocks/search/solid/index.d.ts +0 -13
  1087. package/dist/blocks/search/solid/index.js +0 -14
  1088. package/dist/blocks/search/svelte/index.d.ts +0 -13
  1089. package/dist/blocks/search/svelte/index.js +0 -14
  1090. package/dist/blocks/search/vue/index.d.ts +0 -13
  1091. package/dist/blocks/search/vue/index.js +0 -14
  1092. package/dist/blocks/service-principals/index.d.ts +0 -132
  1093. package/dist/blocks/service-principals/index.js +0 -110
  1094. package/dist/blocks/sessions/react/index.d.ts +0 -36
  1095. package/dist/blocks/sessions/react/index.js +0 -53
  1096. package/dist/blocks/sessions/react/server.d.ts +0 -15
  1097. package/dist/blocks/sessions/react/server.js +0 -17
  1098. package/dist/blocks/sessions/solid/index.d.ts +0 -20
  1099. package/dist/blocks/sessions/solid/index.js +0 -23
  1100. package/dist/blocks/sessions/svelte/index.d.ts +0 -20
  1101. package/dist/blocks/sessions/svelte/index.js +0 -23
  1102. package/dist/blocks/sessions/vue/index.d.ts +0 -20
  1103. package/dist/blocks/sessions/vue/index.js +0 -23
  1104. package/dist/blocks/settings/react/index.d.ts +0 -31
  1105. package/dist/blocks/settings/react/index.js +0 -37
  1106. package/dist/blocks/settings/react/server.d.ts +0 -10
  1107. package/dist/blocks/settings/react/server.js +0 -10
  1108. package/dist/blocks/settings/solid/index.d.ts +0 -13
  1109. package/dist/blocks/settings/solid/index.js +0 -14
  1110. package/dist/blocks/settings/svelte/index.d.ts +0 -13
  1111. package/dist/blocks/settings/svelte/index.js +0 -14
  1112. package/dist/blocks/settings/vue/index.d.ts +0 -13
  1113. package/dist/blocks/settings/vue/index.js +0 -14
  1114. package/dist/blocks/shared-signals/index.d.ts +0 -440
  1115. package/dist/blocks/shared-signals/index.js +0 -886
  1116. package/dist/blocks/tags/react/index.d.ts +0 -36
  1117. package/dist/blocks/tags/react/index.js +0 -52
  1118. package/dist/blocks/tags/react/server.d.ts +0 -7
  1119. package/dist/blocks/tags/react/server.js +0 -7
  1120. package/dist/blocks/tags/solid/index.d.ts +0 -13
  1121. package/dist/blocks/tags/solid/index.js +0 -14
  1122. package/dist/blocks/tags/svelte/index.d.ts +0 -13
  1123. package/dist/blocks/tags/svelte/index.js +0 -14
  1124. package/dist/blocks/tags/vue/index.d.ts +0 -13
  1125. package/dist/blocks/tags/vue/index.js +0 -14
  1126. package/dist/blocks/targets/index.d.ts +0 -82
  1127. package/dist/blocks/targets/index.js +0 -73
  1128. package/dist/blocks/undo/react/index.d.ts +0 -17
  1129. package/dist/blocks/undo/react/index.js +0 -24
  1130. package/dist/blocks/undo/react/server.d.ts +0 -10
  1131. package/dist/blocks/undo/react/server.js +0 -10
  1132. package/dist/blocks/undo/solid/index.d.ts +0 -13
  1133. package/dist/blocks/undo/solid/index.js +0 -14
  1134. package/dist/blocks/undo/svelte/index.d.ts +0 -13
  1135. package/dist/blocks/undo/svelte/index.js +0 -14
  1136. package/dist/blocks/undo/vue/index.d.ts +0 -13
  1137. package/dist/blocks/undo/vue/index.js +0 -14
  1138. package/dist/blocks/usage/react/index.d.ts +0 -29
  1139. package/dist/blocks/usage/react/index.js +0 -38
  1140. package/dist/blocks/usage/react/server.d.ts +0 -7
  1141. package/dist/blocks/usage/react/server.js +0 -7
  1142. package/dist/blocks/usage/solid/index.d.ts +0 -13
  1143. package/dist/blocks/usage/solid/index.js +0 -14
  1144. package/dist/blocks/usage/svelte/index.d.ts +0 -13
  1145. package/dist/blocks/usage/svelte/index.js +0 -14
  1146. package/dist/blocks/usage/vue/index.d.ts +0 -13
  1147. package/dist/blocks/usage/vue/index.js +0 -14
  1148. package/dist/blocks/work-items/index.d.ts +0 -210
  1149. package/dist/blocks/work-items/index.js +0 -304
  1150. package/dist/blocks/workflow-builder/index.d.ts +0 -43
  1151. package/dist/blocks/workflow-builder/index.js +0 -33
  1152. package/dist/blocks/workflow-builder/react/index.d.ts +0 -32
  1153. package/dist/blocks/workflow-builder/react/index.js +0 -75
  1154. package/dist/blocks/workflow-builder/react/server.d.ts +0 -14
  1155. package/dist/blocks/workflow-builder/react/server.js +0 -17
  1156. package/dist/blocks/workflow-builder/solid/index.d.ts +0 -20
  1157. package/dist/blocks/workflow-builder/solid/index.js +0 -23
  1158. package/dist/blocks/workflow-builder/svelte/index.d.ts +0 -20
  1159. package/dist/blocks/workflow-builder/svelte/index.js +0 -23
  1160. package/dist/blocks/workflow-builder/vue/index.d.ts +0 -20
  1161. package/dist/blocks/workflow-builder/vue/index.js +0 -23
  1162. package/dist/blocks/workflows/react/index.d.ts +0 -39
  1163. package/dist/blocks/workflows/react/index.js +0 -65
  1164. package/dist/blocks/workflows/react/server.d.ts +0 -14
  1165. package/dist/blocks/workflows/react/server.js +0 -17
  1166. package/dist/blocks/workflows/solid/index.d.ts +0 -20
  1167. package/dist/blocks/workflows/solid/index.js +0 -23
  1168. package/dist/blocks/workflows/svelte/index.d.ts +0 -20
  1169. package/dist/blocks/workflows/svelte/index.js +0 -23
  1170. package/dist/blocks/workflows/vue/index.d.ts +0 -20
  1171. package/dist/blocks/workflows/vue/index.js +0 -23
  1172. package/dist/blocks-CR3vCYhj.js +0 -88
  1173. package/dist/bookings-DJflcGqs.js +0 -184
  1174. package/dist/bucket-DBay-ICp.d.ts +0 -667
  1175. package/dist/build-DxzJf79X.js +0 -1839
  1176. package/dist/build-UqJeGtsH.js +0 -703
  1177. package/dist/calendar-DvbYFkrh.js +0 -801
  1178. package/dist/chat-sdk/react/index.d.ts +0 -3
  1179. package/dist/chat-sdk/react/index.js +0 -2
  1180. package/dist/chat-sdk/react/server.d.ts +0 -4
  1181. package/dist/chat-sdk/react/server.js +0 -1
  1182. package/dist/claims-T8TWZ53E.js +0 -63
  1183. package/dist/cli/add-BRjL7LuG.js +0 -1
  1184. package/dist/cli/add-Cf0uxfZ2.js +0 -672
  1185. package/dist/cli/add-DPfdDRq7.js +0 -75
  1186. package/dist/cli/adopt-B28iUeGg.js +0 -1
  1187. package/dist/cli/adopt-C0VugVMu.js +0 -421
  1188. package/dist/cli/apply-BlxtZPxe.js +0 -329
  1189. package/dist/cli/blocks-CHQ7K8Yz.js +0 -1
  1190. package/dist/cli/blocks-D3tsq-mR.js +0 -124
  1191. package/dist/cli/cache-DdgzhoaL.js +0 -516
  1192. package/dist/cli/catalog-DwTUdJaQ.js +0 -188
  1193. package/dist/cli/codemod-Dz4R-tVY.js +0 -1127
  1194. package/dist/cli/command-33pu13LT.js +0 -963
  1195. package/dist/cli/completion-6M6Hr8TL.js +0 -211
  1196. package/dist/cli/completion-Bqu8yq0q.js +0 -1
  1197. package/dist/cli/completion-Ddr3yqd3.js +0 -30
  1198. package/dist/cli/config-2qlSTi2o.js +0 -1503
  1199. package/dist/cli/config-B31tIvAl.js +0 -42
  1200. package/dist/cli/config-DVksOjSr.js +0 -1
  1201. package/dist/cli/config-edit-D46H0UHp.js +0 -613
  1202. package/dist/cli/db-D8iId4R8.js +0 -473
  1203. package/dist/cli/design-edit-B2aBiarJ.js +0 -205
  1204. package/dist/cli/doctor-pIek4vIO.js +0 -3897
  1205. package/dist/cli/emit-CJKf47Bi.js +0 -1078
  1206. package/dist/cli/env-BrLZfqsL.js +0 -143
  1207. package/dist/cli/env-cbCEa79W.js +0 -1
  1208. package/dist/cli/files-C5JfVnj5.js +0 -972
  1209. package/dist/cli/gen-DquZzY5a.js +0 -307
  1210. package/dist/cli/init-Dd-UdrE0.js +0 -397
  1211. package/dist/cli/introspect-IMQCji2l.js +0 -51
  1212. package/dist/cli/keys-iJs_1WT8.js +0 -106
  1213. package/dist/cli/live-BfAO5YRX.js +0 -344
  1214. package/dist/cli/mcp-D8Az0FNn.js +0 -240
  1215. package/dist/cli/metadata-CTStQPfV.js +0 -144
  1216. package/dist/cli/migration-safety-Dg1lxomi.js +0 -305
  1217. package/dist/cli/module-migration-CbX-jRhV.js +0 -606
  1218. package/dist/cli/moved-CdNtCf4t.js +0 -161
  1219. package/dist/cli/names-D6LrQnOv.js +0 -6
  1220. package/dist/cli/parse-CRZLku1b.js +0 -182
  1221. package/dist/cli/preset-DEvwDc7U.js +0 -129
  1222. package/dist/cli/run-BXhJoghZ.js +0 -1602
  1223. package/dist/cli/run-DdxNRTr0.js +0 -63
  1224. package/dist/cli/run-dTu_PD4I.js +0 -711
  1225. package/dist/cli/scaffold-Bx3bcy2R.js +0 -901
  1226. package/dist/cli/scaffold-mbNAQE19.js +0 -1
  1227. package/dist/cli/seed-CLseQdXQ.js +0 -188
  1228. package/dist/cli/seed-DSHSUsYy.js +0 -1
  1229. package/dist/cli/shared-CAdIkTR7.js +0 -151
  1230. package/dist/cli/skills-Bz4INB8f.js +0 -121
  1231. package/dist/cli/snapshot-GfdB9Cjl.js +0 -350
  1232. package/dist/cli/source-args-Dy3j1-H-.js +0 -59
  1233. package/dist/cli/spec-BfEK0_04.js +0 -1
  1234. package/dist/cli/spec-DXTdodlO.js +0 -7534
  1235. package/dist/cli/sql-BUhpAvrW.js +0 -2
  1236. package/dist/cli/sql-CLbWk3Yb.js +0 -332
  1237. package/dist/cli/stack-_F_JhllX.js +0 -135
  1238. package/dist/cli/sync-BBzNO-v9.js +0 -91
  1239. package/dist/cli/typegen-F9GEjpvD.js +0 -502
  1240. package/dist/cli/typegen-version-BNBPI4Eu.js +0 -9
  1241. package/dist/cli/version-DiwcIKOL.js +0 -4
  1242. package/dist/cli/write-DZKk5rSF.js +0 -201
  1243. package/dist/client--tyFmxDT.js +0 -52
  1244. package/dist/client-0qFNkNhT.js +0 -1060
  1245. package/dist/client-2z1aHG57.d.ts +0 -475
  1246. package/dist/client-5IVhjmtl.d.ts +0 -74
  1247. package/dist/client-B3WBilR2.d.ts +0 -69
  1248. package/dist/client-B4JPQgf-.d.ts +0 -165
  1249. package/dist/client-BAYh7P2h.js +0 -211
  1250. package/dist/client-BKGVUgo7.js +0 -380
  1251. package/dist/client-BNaOcfeH.js +0 -58
  1252. package/dist/client-BOuaQA0h.js +0 -173
  1253. package/dist/client-BP-8vn9G.d.ts +0 -37
  1254. package/dist/client-BU5Yd0yO.d.ts +0 -103
  1255. package/dist/client-Bb_Pj9wL.js +0 -137
  1256. package/dist/client-BkH-Vh3s.d.ts +0 -112
  1257. package/dist/client-BsfsRHae.d.ts +0 -136
  1258. package/dist/client-Bta7yl1C.d.ts +0 -451
  1259. package/dist/client-BwKXlohx.js +0 -121
  1260. package/dist/client-C1zOmnS8.js +0 -89
  1261. package/dist/client-CMqO1gCn.d.ts +0 -64
  1262. package/dist/client-CPirbPPi.js +0 -85
  1263. package/dist/client-CQPB-VJx.d.ts +0 -110
  1264. package/dist/client-CXbP_p02.d.ts +0 -156
  1265. package/dist/client-C_S9avzV.d.ts +0 -420
  1266. package/dist/client-Cb1g45Hc.js +0 -99
  1267. package/dist/client-CebKlRU7.js +0 -157
  1268. package/dist/client-Ch-dDfTB.js +0 -437
  1269. package/dist/client-CuFD4o56.d.ts +0 -111
  1270. package/dist/client-D2y_CfhU.d.ts +0 -137
  1271. package/dist/client-DAcVF-YJ.js +0 -134
  1272. package/dist/client-DCuE1rFm.js +0 -441
  1273. package/dist/client-DD02cst6.d.ts +0 -245
  1274. package/dist/client-DD3EcytK.js +0 -65
  1275. package/dist/client-DEE57s9m.d.ts +0 -132
  1276. package/dist/client-DScMvaty.js +0 -38
  1277. package/dist/client-DVRFa59w.d.ts +0 -309
  1278. package/dist/client-DXb1Nmr3.js +0 -111
  1279. package/dist/client-DkI0oyR7.js +0 -76
  1280. package/dist/client-DkQcRKhm.js +0 -67
  1281. package/dist/client-DoXBX3vS.d.ts +0 -116
  1282. package/dist/client-Dsuy9wfA.d.ts +0 -59
  1283. package/dist/client-EQvEzUQg.d.ts +0 -276
  1284. package/dist/client-G7NGXZKe.d.ts +0 -43
  1285. package/dist/client-OhTiAol1.js +0 -213
  1286. package/dist/client-Wt19DaEb.js +0 -291
  1287. package/dist/client-Y-kaHabc.d.ts +0 -46
  1288. package/dist/client-YASsOslj.js +0 -321
  1289. package/dist/client-Y_HnZGF4.js +0 -51
  1290. package/dist/client-_mL998Gl.js +0 -129
  1291. package/dist/client-i_u1e0Kf.d.ts +0 -144
  1292. package/dist/client-kRvHKAKS.js +0 -60
  1293. package/dist/client-nieeGXdg.d.ts +0 -178
  1294. package/dist/client-pxXoQOdC.js +0 -40
  1295. package/dist/client-ysVOUgxM.d.ts +0 -54
  1296. package/dist/cloud-event-CidL9jiw.d.ts +0 -64
  1297. package/dist/codecs-Du_zE1xu.js +0 -358
  1298. package/dist/codecs-WHpM3Byy.d.ts +0 -221
  1299. package/dist/codegen-DGtOsqz9.d.ts +0 -1809
  1300. package/dist/comments-Ceqo9bwE.js +0 -230
  1301. package/dist/compiler-DCotQWcs.d.ts +0 -14
  1302. package/dist/compose-VBQL7zIO.js +0 -53
  1303. package/dist/composite-BgBzdYP-.d.ts +0 -82
  1304. package/dist/composite-BgSdL5tk.js +0 -130
  1305. package/dist/config-V6HMvce5.js +0 -3930
  1306. package/dist/config-xUf0dj0t.js +0 -562
  1307. package/dist/connector-CKcTPJRV.d.ts +0 -107
  1308. package/dist/connectors-CgWuPQks.d.ts +0 -147
  1309. package/dist/context-B8_p3MXo.js +0 -11
  1310. package/dist/context-C-bHOtoD.js +0 -5
  1311. package/dist/context-CCz6ZgyI.js +0 -19
  1312. package/dist/context-CMxVnPMY.js +0 -9
  1313. package/dist/context-CrojkPNC.js +0 -41
  1314. package/dist/context-DvBEhsXX.d.ts +0 -403
  1315. package/dist/controller-lWRcKqCl.d.ts +0 -52
  1316. package/dist/cron-CI1kP-t5.js +0 -148
  1317. package/dist/cron-route-BbVtwXZz.js +0 -24
  1318. package/dist/db-exception-CnWcYPxL.js +0 -15
  1319. package/dist/define-D0LSXmUP.d.ts +0 -1117
  1320. package/dist/define-DwZ_LQVO.js +0 -2011
  1321. package/dist/define-block-B6Gjs57G.js +0 -52
  1322. package/dist/define-block-MyM4lH42.d.ts +0 -281
  1323. package/dist/delegation-DeAJehLk.js +0 -146
  1324. package/dist/documents-BijGGIjr.d.ts +0 -99
  1325. package/dist/embeddings-DRGIc8ti.js +0 -128
  1326. package/dist/embeddings-Deusi99x.d.ts +0 -78
  1327. package/dist/ended-D_Twxl8v.d.ts +0 -76
  1328. package/dist/entitlements-CMGsO4gL.d.ts +0 -54
  1329. package/dist/entitlements-_tw0V3BY.js +0 -45
  1330. package/dist/envelope-BDShQQ7-.js +0 -90
  1331. package/dist/errors-Cq72lONT.js +0 -44
  1332. package/dist/errors-D7u24ZJH.js +0 -321
  1333. package/dist/escape-like-DuKupGUV.d.ts +0 -15
  1334. package/dist/eve-dWNqpd9Z.d.ts +0 -157
  1335. package/dist/event-calendar-E6AI-dgg.d.ts +0 -217
  1336. package/dist/events-DhGgwqQA.d.ts +0 -842
  1337. package/dist/executor-C29668fO.d.ts +0 -281
  1338. package/dist/executor-C5uyGttm.js +0 -207
  1339. package/dist/executor-Cy1nk4MZ.d.ts +0 -104
  1340. package/dist/executor-DK2F9Zis.js +0 -746
  1341. package/dist/executor-DXfgDsKd.d.ts +0 -37
  1342. package/dist/executor-D_viYkhf.d.ts +0 -179
  1343. package/dist/executor-QtVn0axs.js +0 -147
  1344. package/dist/expo-sqlite/index.d.ts +0 -61
  1345. package/dist/expo-sqlite/index.js +0 -110
  1346. package/dist/field-errors-CKEqR38q.d.ts +0 -119
  1347. package/dist/field-errors-DZVRWRkf.js +0 -13
  1348. package/dist/field-formats-BX2FqLle.d.ts +0 -39
  1349. package/dist/filter-evaluate-CRDXv0Dl.js +0 -217
  1350. package/dist/filter-evaluate-CSWhzYWN.d.ts +0 -37
  1351. package/dist/filter-query-C7qgRYYv.d.ts +0 -133
  1352. package/dist/filter-query-D4ZSwbcJ.js +0 -524
  1353. package/dist/flags-C--SBMT9.js +0 -279
  1354. package/dist/flags-CJFDNAvL.d.ts +0 -246
  1355. package/dist/form-definition-BjeElHsB.js +0 -311
  1356. package/dist/form-definition-DcVnFzl4.d.ts +0 -95
  1357. package/dist/format-AYHceC2m.d.ts +0 -79
  1358. package/dist/framework-BpEnOfAo.js +0 -57
  1359. package/dist/framework-CMeAuJts.d.ts +0 -41
  1360. package/dist/function-contract-4vfi93Y5.d.ts +0 -27
  1361. package/dist/gateway-Dar9C0uP.d.ts +0 -115
  1362. package/dist/graph-B4eubUQG.js +0 -365
  1363. package/dist/groups-CxonH3u5.js +0 -16
  1364. package/dist/http-AkLjqOuB.js +0 -28
  1365. package/dist/impersonation-DFfDVJHk.js +0 -62
  1366. package/dist/inbox-CLsIrPXs.d.ts +0 -417
  1367. package/dist/index-B5XcM3VY.d.ts +0 -230
  1368. package/dist/index-B5dVVZtW.d.ts +0 -142
  1369. package/dist/index-Brm8I8iZ.d.ts +0 -232
  1370. package/dist/index-C7-2ZS9f.d.ts +0 -127
  1371. package/dist/index-CE0p3st5.d.ts +0 -227
  1372. package/dist/index-CcpGT2GI.d.ts +0 -151
  1373. package/dist/index-CrAKHNJF.d.ts +0 -287
  1374. package/dist/index-DLjs7j_z.d.ts +0 -61
  1375. package/dist/index-DdZcWH6q.d.ts +0 -820
  1376. package/dist/index-Dh5ZFCtu.d.ts +0 -61
  1377. package/dist/index-PADpaDku.d.ts +0 -447
  1378. package/dist/index-eoAU_QaY.d.ts +0 -357
  1379. package/dist/invalidate-BLiBFbLy.d.ts +0 -19
  1380. package/dist/json-schema-Bu4YCRbZ.js +0 -551
  1381. package/dist/jwks-cache-DbgNmSgV.js +0 -49
  1382. package/dist/kit-BeXTrlZn.js +0 -127
  1383. package/dist/kit-LeQGMzLH.d.ts +0 -94
  1384. package/dist/knowledge-Bx_qehoZ.js +0 -272
  1385. package/dist/knowledge-CYdNJasZ.d.ts +0 -202
  1386. package/dist/list-query-CuS1w2Af.js +0 -559
  1387. package/dist/list-query-Dx5cAqG6.d.ts +0 -223
  1388. package/dist/live-CZtRMh62.js +0 -246
  1389. package/dist/messages-Bd5-5ZjP.js +0 -492
  1390. package/dist/methods-7u6vSgz_.js +0 -11
  1391. package/dist/mfa-Dt8AdWht.d.ts +0 -36
  1392. package/dist/model-Btl8X9cs.d.ts +0 -326
  1393. package/dist/model-messages-BWyXXA4s.js +0 -206
  1394. package/dist/money-codec-BdnIiFFX.js +0 -41
  1395. package/dist/onboarding-DjXV4rgO.js +0 -68
  1396. package/dist/openapi/index.d.ts +0 -4
  1397. package/dist/openapi/index.js +0 -36
  1398. package/dist/operations-Cc27HkTG.d.ts +0 -6
  1399. package/dist/options-B7EJaOX-.js +0 -5
  1400. package/dist/options-BAW2ZlZ8.js +0 -8
  1401. package/dist/options-Blg8lAkz.js +0 -9
  1402. package/dist/options-Bn4cu0gt.js +0 -5
  1403. package/dist/options-BnoJOwXK.js +0 -8
  1404. package/dist/options-C1HR4UZd.js +0 -13
  1405. package/dist/options-C2HesT4A.js +0 -9
  1406. package/dist/options-C3EzJATk.js +0 -10
  1407. package/dist/options-C3hZ1fbC.js +0 -10
  1408. package/dist/options-CAzVf-1T.js +0 -8
  1409. package/dist/options-CGKSUFUq.js +0 -5
  1410. package/dist/options-CGjGE8xS.js +0 -12
  1411. package/dist/options-CIf3xni7.d.ts +0 -52
  1412. package/dist/options-CUqQ9pm7.js +0 -9
  1413. package/dist/options-ChD15QxJ.js +0 -9
  1414. package/dist/options-CyD7OObW.js +0 -17
  1415. package/dist/options-D1blDihM.js +0 -9
  1416. package/dist/options-D2Gd6VfS.js +0 -8
  1417. package/dist/options-D7f2VKzj.js +0 -25
  1418. package/dist/options-DXqcJyOP.js +0 -10
  1419. package/dist/options-Dh4wu9Ks.js +0 -15
  1420. package/dist/options-Dmg1Da9P.js +0 -25
  1421. package/dist/options-DsUgamiy.js +0 -5
  1422. package/dist/options-HSv8R6h5.js +0 -13
  1423. package/dist/options-I8zVkB_y.js +0 -8
  1424. package/dist/options-MHhjOoWz.js +0 -5
  1425. package/dist/options-MLxMkd5B.js +0 -11
  1426. package/dist/options-OJ5zmgr8.js +0 -10
  1427. package/dist/options-QKP9FFcK.js +0 -8
  1428. package/dist/options-XgfTctbI.js +0 -5
  1429. package/dist/options-_9arpsX9.js +0 -11
  1430. package/dist/options-kLKILdIu.js +0 -10
  1431. package/dist/options-n22NK3PL.js +0 -8
  1432. package/dist/options-qU8vgxhO.js +0 -18
  1433. package/dist/options-vXMBEWSH.js +0 -5
  1434. package/dist/options-wFnK3qWl.js +0 -9
  1435. package/dist/options-xVAy3UsV.js +0 -9
  1436. package/dist/organizations-R98kfFwF.js +0 -401
  1437. package/dist/outbox-Bsk-HJnq.d.ts +0 -199
  1438. package/dist/overlay/index.d.ts +0 -249
  1439. package/dist/overlay/index.js +0 -561
  1440. package/dist/payments-6uuergov.js +0 -16
  1441. package/dist/plugin-D9bYbYli.js +0 -45
  1442. package/dist/plugin-DouW0Kvg.d.ts +0 -203
  1443. package/dist/plugins/actor/index.d.ts +0 -19
  1444. package/dist/plugins/actor/index.js +0 -57
  1445. package/dist/plugins/rules/index.d.ts +0 -96
  1446. package/dist/plugins/rules/index.js +0 -235
  1447. package/dist/plugins/soft-delete/index.d.ts +0 -39
  1448. package/dist/plugins/soft-delete/index.js +0 -90
  1449. package/dist/plugins/tenant/index.d.ts +0 -60
  1450. package/dist/plugins/tenant/index.js +0 -119
  1451. package/dist/plugins/timestamps/index.d.ts +0 -11
  1452. package/dist/plugins/timestamps/index.js +0 -47
  1453. package/dist/plugins/validation/index.d.ts +0 -24
  1454. package/dist/plugins/validation/index.js +0 -83
  1455. package/dist/pool-Bu8zXGzI.d.ts +0 -123
  1456. package/dist/pool-errors-DOZ3oDeS.js +0 -27
  1457. package/dist/ports-BltcWsHf.d.ts +0 -312
  1458. package/dist/ports-CM3aG3zn.js +0 -137
  1459. package/dist/ports-n3ZWSS_I.d.ts +0 -89
  1460. package/dist/postgrest-DGjrW4sK.d.ts +0 -53
  1461. package/dist/powersync/react/index.d.ts +0 -93
  1462. package/dist/powersync/react/index.js +0 -120
  1463. package/dist/preset-HNFqCWaD.js +0 -838
  1464. package/dist/problem-D0KDiYPk.js +0 -162
  1465. package/dist/problem-D_DEBfMn.d.ts +0 -79
  1466. package/dist/provider-BhIkKBOh.js +0 -57
  1467. package/dist/provider-Dmsbl8ug.d.ts +0 -112
  1468. package/dist/push-token-8lvtOEv4.d.ts +0 -24
  1469. package/dist/query-DgPYlU82.js +0 -311
  1470. package/dist/rank-result-C6vsw27N.js +0 -18
  1471. package/dist/rank-result-DHflCNwo.d.ts +0 -14
  1472. package/dist/rate-limit-B7N1ZGl6.d.ts +0 -50
  1473. package/dist/rate-limit-CXpPm4_l.js +0 -49
  1474. package/dist/rate-limit-CpTD_WHm.js +0 -328
  1475. package/dist/react-controller-CKSdtJ10.js +0 -43
  1476. package/dist/react-env-CodKZgPk.js +0 -16
  1477. package/dist/react-uvu_KcVY.js +0 -599
  1478. package/dist/read-set-DP6fm21F.js +0 -316
  1479. package/dist/refusal-BEyNVFy7.d.ts +0 -32
  1480. package/dist/refusal-Ce2p81VW.js +0 -64
  1481. package/dist/replicas-BvIL4_jL.js +0 -94
  1482. package/dist/resolve-D57oDWNr.d.ts +0 -289
  1483. package/dist/resolve-sy3_Gz0i.js +0 -892
  1484. package/dist/resource-BRRU-A7j.js +0 -91
  1485. package/dist/resource-BVvIiuX_.js +0 -469
  1486. package/dist/resource-DxQOPkZ5.d.ts +0 -115
  1487. package/dist/resource-execute-BbjuiXwD.d.ts +0 -15
  1488. package/dist/resource-types-NXau9LJE.d.ts +0 -153
  1489. package/dist/resources-CIi7sw1T.js +0 -64
  1490. package/dist/resources-CZ60Vqwq.d.ts +0 -7
  1491. package/dist/respond-DjEmE_DN.js +0 -100
  1492. package/dist/respond-QW-f1yio.d.ts +0 -101
  1493. package/dist/result-DIT_qp4G.js +0 -146
  1494. package/dist/result-mijqfoJN.d.ts +0 -346
  1495. package/dist/rrule-CesB9Rxd.js +0 -290
  1496. package/dist/rules-D75V7dAE.js +0 -286
  1497. package/dist/run-state-CPo-1X2B.d.ts +0 -12
  1498. package/dist/sales-lines-9HsX89aO.d.ts +0 -28
  1499. package/dist/sales-lines-DgXeOEar.js +0 -41
  1500. package/dist/sales-shared-CjXsy0NJ.js +0 -22
  1501. package/dist/sales-shared-DAAGwQwN.d.ts +0 -8
  1502. package/dist/search-9hoZ8rN1.js +0 -106
  1503. package/dist/server-types-D_cQ6OxZ.d.ts +0 -809
  1504. package/dist/session-DNRYXIOU.d.ts +0 -97
  1505. package/dist/settings-DzQtMwfl.js +0 -93
  1506. package/dist/shared-C80IHf4B.js +0 -60
  1507. package/dist/shared-D11SWNLx.js +0 -17
  1508. package/dist/sign-in-B_QJ2u62.js +0 -386
  1509. package/dist/signatures-CzqfLlfV.d.ts +0 -43
  1510. package/dist/signatures-D8IoN3Rw.js +0 -145
  1511. package/dist/signers-BuVQKDfK.d.ts +0 -390
  1512. package/dist/signing-keys-i2Rsll6L.d.ts +0 -119
  1513. package/dist/solid-controller-7TxGaJNy.js +0 -33
  1514. package/dist/solid-controller-BnF3ovwV.d.ts +0 -11
  1515. package/dist/spec-pins-CZ2CL8YZ.d.ts +0 -120
  1516. package/dist/spec-pins-D3Tm6HJi.js +0 -60
  1517. package/dist/sql-CQIikLnQ.js +0 -421
  1518. package/dist/sql-frpIs51D.js +0 -89308
  1519. package/dist/sso-C86TPpZr.js +0 -217
  1520. package/dist/sso-D_am-gBz.d.ts +0 -161
  1521. package/dist/standard-16AIDny5.d.ts +0 -7
  1522. package/dist/standard-l10kE0yS.js +0 -25
  1523. package/dist/stats-Bt1RyT-F.js +0 -1147
  1524. package/dist/store-DKqbuNvw.d.ts +0 -83
  1525. package/dist/stripe-BSEwKCni.d.ts +0 -140
  1526. package/dist/subject-readers-BJzh7WF7.js +0 -49
  1527. package/dist/subject-readers-Bbq1i0Ol.d.ts +0 -21
  1528. package/dist/subjects-DQ2SU4cA.d.ts +0 -77
  1529. package/dist/support-CWVTM2AB.js +0 -534
  1530. package/dist/support-view-BOJJSZKv.d.ts +0 -17
  1531. package/dist/svelte-controller-BmRhHvFz.js +0 -50
  1532. package/dist/svelte-controller-DXO7gsmS.d.ts +0 -13
  1533. package/dist/table-schema-xqSXrjCN.js +0 -284
  1534. package/dist/tags-C_ym1yDM.js +0 -39
  1535. package/dist/tags-Co-QIHeK.js +0 -84
  1536. package/dist/tags-tbiuHHMV.d.ts +0 -30
  1537. package/dist/tanstack-db/supabase/index.d.ts +0 -66
  1538. package/dist/tanstack-db/supabase/index.js +0 -271
  1539. package/dist/tax-BHSCb5Rw.d.ts +0 -280
  1540. package/dist/tax-keSd-q_1.js +0 -140
  1541. package/dist/tee-1fsH3bEz.js +0 -101
  1542. package/dist/template-DXsGm_R0.js +0 -126
  1543. package/dist/temporal-required-Dt4mcPsi.js +0 -20
  1544. package/dist/tenant-DnMqeNIM.js +0 -27
  1545. package/dist/tenant-l3H2ouv7.d.ts +0 -17
  1546. package/dist/tenant-naming-Bsj3Uvap.js +0 -27
  1547. package/dist/timing-C5NzaEgy.js +0 -95
  1548. package/dist/topic-CZvLXFND.d.ts +0 -415
  1549. package/dist/topic-Cr01EHZy.js +0 -643
  1550. package/dist/types-BTK75521.js +0 -8
  1551. package/dist/types-Bzm0OgJk.d.ts +0 -177
  1552. package/dist/types-CB5MvzuE.d.ts +0 -624
  1553. package/dist/types-DYXhFhmQ.d.ts +0 -251
  1554. package/dist/types-DmshMaXz.d.ts +0 -421
  1555. package/dist/types-EUrisY2U.d.ts +0 -217
  1556. package/dist/types-vVsLvOUJ.d.ts +0 -700
  1557. package/dist/undo-CClrTbm9.d.ts +0 -46
  1558. package/dist/undo-HHonvNeg.js +0 -44
  1559. package/dist/upload-claim-DCuklVyh.js +0 -33
  1560. package/dist/usage-BFwuH7GK.d.ts +0 -232
  1561. package/dist/usage-CJmmCGzd.js +0 -264
  1562. package/dist/user-change-CSR_prhd.js +0 -133
  1563. package/dist/variants-Bat9zU8l.js +0 -53
  1564. package/dist/vault-BQThkbws.d.ts +0 -62
  1565. package/dist/verify-BCmBaHlN.js +0 -130
  1566. package/dist/verify-BTAEsJbF.d.ts +0 -146
  1567. package/dist/view-CKzCp8FW.d.ts +0 -90
  1568. package/dist/view-CfUd5vI9.js +0 -108
  1569. package/dist/vue-controller-DCOtUOA_.d.ts +0 -11
  1570. package/dist/vue-controller-EzyTjqca.js +0 -32
  1571. package/dist/watch-CYeMXFtj.d.ts +0 -92
  1572. package/dist/watch-Cnd6XDnU.js +0 -139
  1573. package/dist/watch-topic-CloXeDTO.d.ts +0 -31
  1574. package/dist/wire-BJhepFbv.js +0 -66
  1575. package/dist/workflow-builder-DzZNlI45.js +0 -699
  1576. package/dist/workflow-sdk-BXwl1THQ.d.ts +0 -163
  1577. package/dist/workflow-sdk-CPGiFE1B.js +0 -242
  1578. package/dist/workflow-sdk-world-BOEsvWmx.js +0 -2123
  1579. package/dist/workflows-BHyYAR6c.d.ts +0 -258
  1580. package/dist/workflows-otOMN33L.js +0 -285
  1581. package/skills/better-supabase/references/plugins.md +0 -71
@@ -1,8 +1,701 @@
1
1
  import { r as isPlainObject } from "../clone-CkG0-hlI.js";
2
- import { a as methodNotAllowed } from "../problem-D0KDiYPk.js";
2
+ import { a as methodNotAllowed } from "../problem-Bf0cJ7tk.js";
3
+ import { t as SPEC_PINS } from "../spec-pins-C1Vm8OBl.js";
3
4
  import { t as FUNCTION_DESCRIPTOR } from "../function-contract-pEmsaUIf.js";
4
- import { o as defineDocumentFormat, t as defineApi } from "../api-CmcTYuFT.js";
5
- import { a as DEFAULT_ERRORS, i as topicsFrom, l as mergeJson, o as PROBLEM_SCHEMA, t as buildApiModel, u as pointerToken } from "../build-DxzJf79X.js";
5
+ import { n as memoized, t as importOptionalPeer } from "../optional-peer-C1NbBRJm.js";
6
+ import { a as topicsFrom, c as PROBLEM_SCHEMA, d as mergeJson, f as pointerToken, i as safeKey, l as convertStandard, n as publishedResources, o as publishedBlocks, r as CLOUD_EVENT_TRAIT, s as DEFAULT_ERRORS, t as buildApiModel, u as pascal } from "../build-QitPVzzO.js";
7
+ //#region src/spec/format.ts
8
+ /**
9
+ * Identity helper that fixes `apiVersion` and checks that the default version
10
+ * exists.
11
+ */
12
+ function defineDocumentFormat(format) {
13
+ if (!Object.hasOwn(format.versions, format.defaultVersion)) throw new TypeError(`Document format "${format.id}": the default version "${format.defaultVersion}" is not in versions`);
14
+ if (format.versions[format.defaultVersion].status === "preview") throw new TypeError(`Document format "${format.id}": a preview version cannot be the default`);
15
+ return {
16
+ ...format,
17
+ apiVersion: 1
18
+ };
19
+ }
20
+ //#endregion
21
+ //#region src/openapi/schema30.ts
22
+ /** Keywords whose value is one subschema. */
23
+ const SINGLE = /* @__PURE__ */ new Set([
24
+ "items",
25
+ "additionalProperties",
26
+ "not"
27
+ ]);
28
+ /** Keywords whose value is a list of subschemas. */
29
+ const LISTS = /* @__PURE__ */ new Set([
30
+ "allOf",
31
+ "anyOf",
32
+ "oneOf"
33
+ ]);
34
+ /** 2020-12 keywords the OpenAPI 3.0 Schema Object does not have. */
35
+ const DROPPED = /* @__PURE__ */ new Set([
36
+ "$schema",
37
+ "$id",
38
+ "$anchor",
39
+ "$dynamicAnchor",
40
+ "$dynamicRef",
41
+ "$comment",
42
+ "$defs",
43
+ "$vocabulary",
44
+ "prefixItems",
45
+ "contains",
46
+ "minContains",
47
+ "maxContains",
48
+ "propertyNames",
49
+ "patternProperties",
50
+ "dependentRequired",
51
+ "dependentSchemas",
52
+ "unevaluatedItems",
53
+ "unevaluatedProperties",
54
+ "if",
55
+ "then",
56
+ "else",
57
+ "contentMediaType",
58
+ "contentSchema"
59
+ ]);
60
+ const isNullSchema = (value) => isPlainObject(value) && value["type"] === "null" && Object.keys(value).length === 1;
61
+ /**
62
+ * Rewrites a JSON Schema 2020-12 schema into the OpenAPI 3.0 Schema Object:
63
+ * `null` in `type` or in an `anyOf`/`oneOf` becomes `nullable`, a type list
64
+ * becomes `anyOf`, `const` becomes a one-value `enum`, `examples` becomes
65
+ * `example`, numeric `exclusiveMinimum`/`exclusiveMaximum` become the boolean
66
+ * form, `contentEncoding: base64` becomes `format: byte`, and a `$ref` with
67
+ * siblings is wrapped in `allOf`. Keywords 3.0 does not have are left out. The
68
+ * input is not changed.
69
+ */
70
+ function toOpenApi30Schema(schema) {
71
+ const out = {};
72
+ let nullable = false;
73
+ for (const [key, value] of Object.entries(schema)) {
74
+ if (DROPPED.has(key)) continue;
75
+ if (key === "properties" && isPlainObject(value)) out[key] = Object.fromEntries(Object.entries(value).map(([name, child]) => [name, isPlainObject(child) ? toOpenApi30Schema(child) : child]));
76
+ else if (SINGLE.has(key) && isPlainObject(value)) out[key] = toOpenApi30Schema(value);
77
+ else if (LISTS.has(key) && Array.isArray(value)) {
78
+ const branches = value;
79
+ const rest = branches.filter((branch) => !isNullSchema(branch));
80
+ if (key !== "allOf" && rest.length < branches.length) nullable = true;
81
+ out[key] = rest.map((branch) => isPlainObject(branch) ? toOpenApi30Schema(branch) : branch);
82
+ } else if (key === "examples" && Array.isArray(value)) {
83
+ if (value.length > 0) out["example"] = value[0];
84
+ } else if ((key === "exclusiveMinimum" || key === "exclusiveMaximum") && typeof value === "number") {
85
+ out[key === "exclusiveMinimum" ? "minimum" : "maximum"] = value;
86
+ out[key] = true;
87
+ } else if (key === "const") out["enum"] = [value];
88
+ else if (key === "contentEncoding") {
89
+ if (value === "base64" && schema["format"] === void 0) out["format"] = "byte";
90
+ } else if (key === "type" && Array.isArray(value)) {
91
+ const types = value;
92
+ const rest = types.filter((type) => type !== "null");
93
+ if (rest.length < types.length) nullable = true;
94
+ if (rest.length === 1) out["type"] = rest[0];
95
+ else if (rest.length > 1) out["anyOf"] = rest.map((type) => ({ type }));
96
+ } else if (key === "type" && value === "null") {
97
+ nullable = true;
98
+ out["enum"] = [null];
99
+ } else out[key] = value;
100
+ }
101
+ for (const key of ["anyOf", "oneOf"]) {
102
+ const branches = out[key];
103
+ if (!Array.isArray(branches) || branches.length !== 1) continue;
104
+ const only = branches[0];
105
+ if (!isPlainObject(only)) continue;
106
+ delete out[key];
107
+ if (typeof only["$ref"] === "string") out["allOf"] = [only];
108
+ else for (const [name, entry] of Object.entries(only)) if (!(name in out)) out[name] = entry;
109
+ }
110
+ if (typeof out["$ref"] === "string" && Object.keys(out).length > 1) {
111
+ const { $ref, ...siblings } = out;
112
+ return {
113
+ allOf: [{ $ref }],
114
+ ...siblings,
115
+ ...nullable ? { nullable: true } : {}
116
+ };
117
+ }
118
+ if (nullable) {
119
+ if (typeof out["$ref"] === "string") return {
120
+ allOf: [{ $ref: out["$ref"] }],
121
+ nullable: true
122
+ };
123
+ out["nullable"] = true;
124
+ }
125
+ return out;
126
+ }
127
+ const mapEntries = (value, convert) => isPlainObject(value) ? Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, isPlainObject(entry) ? convert(entry) : entry])) : value;
128
+ const withSchema = (holder) => {
129
+ const out = { ...holder };
130
+ for (const key of ["schema", "x-oai-itemSchema"]) {
131
+ const schema = out[key];
132
+ if (isPlainObject(schema)) out[key] = toOpenApi30Schema(schema);
133
+ }
134
+ if (isPlainObject(out["content"])) out["content"] = mapEntries(out["content"], withSchema);
135
+ if (isPlainObject(out["headers"])) out["headers"] = mapEntries(out["headers"], withSchema);
136
+ return out;
137
+ };
138
+ const lowerParameters = (value) => Array.isArray(value) ? value.map((entry) => isPlainObject(entry) ? withSchema(entry) : entry) : value;
139
+ const lowerOperation$1 = (operation) => {
140
+ const out = { ...operation };
141
+ out["parameters"] = lowerParameters(out["parameters"]);
142
+ if (out["parameters"] === void 0) delete out["parameters"];
143
+ if (isPlainObject(out["requestBody"])) out["requestBody"] = withSchema(out["requestBody"]);
144
+ if (isPlainObject(out["responses"])) out["responses"] = mapEntries(out["responses"], withSchema);
145
+ return out;
146
+ };
147
+ const PATH_ITEM_LISTS = /* @__PURE__ */ new Set(["parameters"]);
148
+ const lowerPathItem = (item) => {
149
+ const out = {};
150
+ for (const [key, value] of Object.entries(item)) if (PATH_ITEM_LISTS.has(key)) out[key] = lowerParameters(value);
151
+ else if (isPlainObject(value) && !key.startsWith("x-") && key !== "servers") out[key] = lowerOperation$1(value);
152
+ else out[key] = value;
153
+ return out;
154
+ };
155
+ /**
156
+ * Lowers every Schema Object position of an OpenAPI document to the 3.0
157
+ * dialect.
158
+ */
159
+ function lowerDocumentSchemas30(document) {
160
+ const out = { ...document };
161
+ if (isPlainObject(out["paths"])) out["paths"] = mapEntries(out["paths"], lowerPathItem);
162
+ const components = out["components"];
163
+ if (isPlainObject(components)) {
164
+ const lowered = {
165
+ ...components,
166
+ schemas: mapEntries(components["schemas"], toOpenApi30Schema)
167
+ };
168
+ for (const key of [
169
+ "responses",
170
+ "parameters",
171
+ "requestBodies",
172
+ "headers"
173
+ ]) if (isPlainObject(components[key])) lowered[key] = mapEntries(components[key], withSchema);
174
+ if (lowered["schemas"] === void 0) delete lowered["schemas"];
175
+ out["components"] = lowered;
176
+ }
177
+ return out;
178
+ }
179
+ //#endregion
180
+ //#region src/openapi/types.ts
181
+ /** The `openapi` field `3.3-preview` emits, as in the v3.3-dev branch. */
182
+ const OPENAPI_33_PREVIEW_VERSION = "3.3.0";
183
+ /** The file name `openapiFormat` writes for every version. */
184
+ const OPENAPI_FILE_NAME = "openapi.json";
185
+ //#endregion
186
+ //#region src/openapi/format.ts
187
+ const DIALECT = "https://json-schema.org/draft/2020-12/schema";
188
+ const OPENAPI_FIELD = {
189
+ "3.0": SPEC_PINS.openapi30,
190
+ "3.1": SPEC_PINS.openapi31,
191
+ "3.2": SPEC_PINS.openapi32,
192
+ "3.3-preview": OPENAPI_33_PREVIEW_VERSION
193
+ };
194
+ /** Path Item fields that hold an Operation Object. */
195
+ const METHODS = /* @__PURE__ */ new Set([
196
+ "get",
197
+ "put",
198
+ "post",
199
+ "delete",
200
+ "options",
201
+ "head",
202
+ "patch",
203
+ "trace",
204
+ "query"
205
+ ]);
206
+ const omitUndefined$2 = (value) => Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== void 0));
207
+ function lowerContent(content, features) {
208
+ return Object.fromEntries(Object.entries(content).map(([type, media]) => [type, omitUndefined$2({
209
+ schema: media.schema,
210
+ [features.native32 ? "itemSchema" : "x-oai-itemSchema"]: media.itemSchema,
211
+ examples: media.examples ? Object.fromEntries(Object.entries(media.examples).map(([name, example]) => [name, omitUndefined$2({ ...example })])) : void 0
212
+ })]));
213
+ }
214
+ function lowerResponse(response, features) {
215
+ return omitUndefined$2({
216
+ [features.native32 ? "summary" : "x-oai-summary"]: response.summary,
217
+ description: response.description,
218
+ headers: response.headers ? Object.fromEntries(Object.entries(response.headers).map(([name, header]) => [name, omitUndefined$2({ ...header })])) : void 0,
219
+ content: response.content ? lowerContent(response.content, features) : void 0
220
+ });
221
+ }
222
+ const lowerResponseOrRef = (response, features) => "ref" in response ? { $ref: `#/components/responses/${response.ref}` } : lowerResponse(response, features);
223
+ const lowerParameter = (parameter) => omitUndefined$2({ ...parameter });
224
+ function lowerSecurity(requirements, features) {
225
+ return requirements.filter((requirement) => Object.keys(requirement).every((name) => !features.dropped.has(name))).map((requirement) => ({ ...requirement }));
226
+ }
227
+ function lowerScheme$1(scheme, features) {
228
+ switch (scheme.type) {
229
+ case "http":
230
+ case "apiKey":
231
+ case "openIdConnect": return omitUndefined$2({ ...scheme });
232
+ case "oauth2": {
233
+ const { metadataUrl, ...rest } = scheme;
234
+ return omitUndefined$2({
235
+ ...rest,
236
+ [features.native32 ? "oauth2MetadataUrl" : `${features.prefix}oauth2MetadataUrl`]: metadataUrl
237
+ });
238
+ }
239
+ case "profile": return features.is33 ? omitUndefined$2({ ...scheme }) : void 0;
240
+ default: return scheme;
241
+ }
242
+ }
243
+ function lowerOperation(operation, features) {
244
+ return omitUndefined$2({
245
+ operationId: operation.id,
246
+ summary: operation.summary,
247
+ description: operation.description,
248
+ tags: operation.tags.length > 0 ? [...operation.tags] : void 0,
249
+ deprecated: operation.deprecated,
250
+ parameters: operation.parameters.length > 0 ? operation.parameters.map(lowerParameter) : void 0,
251
+ requestBody: operation.requestBody ? omitUndefined$2({
252
+ description: operation.requestBody.description,
253
+ required: operation.requestBody.required,
254
+ content: lowerContent(operation.requestBody.content, features)
255
+ }) : void 0,
256
+ responses: Object.fromEntries(Object.entries(operation.responses).map(([status, response]) => [status, lowerResponseOrRef(response, features)])),
257
+ servers: operation.servers ? lowerServers(operation.servers, features) : void 0,
258
+ security: operation.security ? lowerSecurity(operation.security, features) : void 0,
259
+ ...operation.extensions
260
+ });
261
+ }
262
+ function lowerServers(servers, features) {
263
+ return servers.length > 0 ? servers.map((server) => omitUndefined$2({
264
+ url: server.url,
265
+ description: server.description,
266
+ [features.native32 ? "name" : "x-oai-name"]: server.name
267
+ })) : void 0;
268
+ }
269
+ const sameJson = (a, b) => JSON.stringify(a) === JSON.stringify(b);
270
+ /**
271
+ * Builds one Path Item. Path parameters every operation shares move to the Path
272
+ * Item; in 3.3 a `security` every operation shares does too.
273
+ */
274
+ function pathItem(operations, features) {
275
+ const pathParameters = (operation) => Array.isArray(operation["parameters"]) ? operation["parameters"].filter((parameter) => isPlainObject(parameter) && parameter["in"] === "path") : [];
276
+ const first = operations[0];
277
+ const shared = first ? pathParameters(first.operation) : [];
278
+ const hoist = shared.length > 0 && operations.every(({ operation }) => sameJson(pathParameters(operation), shared));
279
+ const firstSecurity = first?.operation["security"];
280
+ const hoistSecurity = features.is33 && firstSecurity !== void 0 && operations.every(({ operation }) => sameJson(operation["security"], firstSecurity));
281
+ const item = {};
282
+ if (hoist) item["parameters"] = shared;
283
+ if (hoistSecurity) item["security"] = firstSecurity;
284
+ for (const { method, operation } of operations) {
285
+ const out = { ...operation };
286
+ if (hoist) {
287
+ const rest = Array.isArray(out["parameters"]) ? out["parameters"].filter((parameter) => !isPlainObject(parameter) || parameter["in"] !== "path") : [];
288
+ if (rest.length > 0) out["parameters"] = rest;
289
+ else delete out["parameters"];
290
+ }
291
+ if (hoistSecurity) delete out["security"];
292
+ item[method] = out;
293
+ }
294
+ return item;
295
+ }
296
+ const STANDARD_WEBHOOK_HEADERS$1 = [
297
+ {
298
+ name: "webhook-id",
299
+ in: "header",
300
+ required: true,
301
+ description: "Unique message id; the same on every retry.",
302
+ schema: { type: "string" }
303
+ },
304
+ {
305
+ name: "webhook-timestamp",
306
+ in: "header",
307
+ required: true,
308
+ description: "Unix time in seconds when the message was sent.",
309
+ schema: {
310
+ type: "string",
311
+ pattern: "^[0-9]+$"
312
+ }
313
+ },
314
+ {
315
+ name: "webhook-signature",
316
+ in: "header",
317
+ required: true,
318
+ description: "Space-separated signatures of `id.timestamp.body`, each `v1,<base64>`.",
319
+ schema: { type: "string" }
320
+ }
321
+ ];
322
+ function lowerWebhook(webhook) {
323
+ return { post: omitUndefined$2({
324
+ operationId: `on${pascal(webhook.id.replaceAll(".", "_"))}`,
325
+ summary: webhook.summary,
326
+ description: webhook.description,
327
+ parameters: webhook.standardWebhooks ? STANDARD_WEBHOOK_HEADERS$1.map((header) => ({ ...header })) : void 0,
328
+ requestBody: {
329
+ required: true,
330
+ content: { "application/json": { schema: webhook.payload } }
331
+ },
332
+ responses: { "2XX": { description: "The receiver accepted the event." } }
333
+ }) };
334
+ }
335
+ function lowerTags(model, features) {
336
+ return model.tags.map((tag) => features.native32 ? omitUndefined$2({ ...tag }) : omitUndefined$2({
337
+ name: tag.name,
338
+ description: tag.description,
339
+ [`${features.prefix}summary`]: tag.summary,
340
+ [`${features.prefix}parent`]: tag.parent,
341
+ [`${features.prefix}kind`]: tag.kind
342
+ }));
343
+ }
344
+ function lowerOpenApi(model, version, ctx) {
345
+ const is33 = version === "3.3-preview";
346
+ const dropped = new Set(is33 ? [] : Object.entries(model.securitySchemes).filter(([, scheme]) => scheme.type === "profile").map(([name]) => name));
347
+ const features = {
348
+ version,
349
+ native32: version === "3.2" || is33,
350
+ is30: version === "3.0",
351
+ is33,
352
+ prefix: model.extensionPrefix,
353
+ dropped
354
+ };
355
+ for (const name of dropped) ctx.report({
356
+ code: "preview-only",
357
+ severity: "info",
358
+ message: `Security scheme "${name}" uses Security Profiles, which only 3.3-preview emits; it and the requirements that name it are left out`,
359
+ pointer: `/components/securitySchemes/${pointerToken(name)}`
360
+ });
361
+ const grouped = /* @__PURE__ */ new Map();
362
+ const placed = [];
363
+ for (const operation of model.operations) {
364
+ if (operation.method === "query" && !features.native32) {
365
+ ctx.report({
366
+ code: "method-unsupported",
367
+ severity: "warning",
368
+ message: `Operation "${operation.id}" uses the QUERY method, which OpenAPI ${version} cannot describe; it is left out`,
369
+ pointer: `/paths/${pointerToken(operation.path)}`
370
+ });
371
+ continue;
372
+ }
373
+ const list = grouped.get(operation.path) ?? [];
374
+ list.push({
375
+ method: operation.method,
376
+ operation: lowerOperation(operation, features)
377
+ });
378
+ grouped.set(operation.path, list);
379
+ placed.push(operation);
380
+ }
381
+ const paths = {};
382
+ for (const [path, operations] of grouped) paths[path] = pathItem(operations, features);
383
+ const securitySchemes = {};
384
+ for (const [name, scheme] of Object.entries(model.securitySchemes)) {
385
+ const lowered = lowerScheme$1(scheme, features);
386
+ if (lowered) securitySchemes[name] = lowered;
387
+ }
388
+ const components = {
389
+ schemas: structuredClone(model.schemas),
390
+ responses: Object.fromEntries(Object.entries(model.responses).map(([name, response]) => [name, lowerResponse(response, features)])),
391
+ securitySchemes
392
+ };
393
+ if (is33 && model.securityProfileRequirements) components["securityProfileRequirements"] = structuredClone(model.securityProfileRequirements);
394
+ let webhooks;
395
+ if (model.webhooks.length > 0) {
396
+ if (features.is30) ctx.report({
397
+ code: "webhooks-unsupported",
398
+ severity: "warning",
399
+ message: `OpenAPI 3.0 has no webhooks; ${model.webhooks.length} webhook(s) are left out`
400
+ });
401
+ else webhooks = Object.fromEntries(model.webhooks.map((webhook) => [webhook.id, lowerWebhook(webhook)]));
402
+ }
403
+ const info = features.is30 ? omitUndefined$2({
404
+ ...model.info,
405
+ summary: void 0,
406
+ license: model.info.license ? omitUndefined$2({
407
+ ...model.info.license,
408
+ identifier: void 0
409
+ }) : void 0
410
+ }) : omitUndefined$2({ ...model.info });
411
+ let document = omitUndefined$2({
412
+ openapi: OPENAPI_FIELD[version],
413
+ [features.native32 ? "$self" : "x-oai-$self"]: model.self,
414
+ info: structuredClone(info),
415
+ jsonSchemaDialect: features.is30 ? void 0 : DIALECT,
416
+ servers: lowerServers(model.servers, features),
417
+ tags: lowerTags(model, features),
418
+ security: lowerSecurity(model.security, features),
419
+ paths,
420
+ webhooks,
421
+ components,
422
+ [`${features.prefix}preview`]: is33 ? SPEC_PINS.openapi33Preview : void 0
423
+ });
424
+ for (const [index, fragment] of model.fragments.entries()) document = mergeJson(document, fragment, (pointer) => {
425
+ ctx.report({
426
+ code: "fragment-conflict",
427
+ severity: "warning",
428
+ message: `Fragment ${index} replaces a generated value`,
429
+ pointer
430
+ });
431
+ });
432
+ for (const operation of placed) {
433
+ if (!operation.extend) continue;
434
+ const patch = { paths: { [operation.path]: { [operation.method]: operation.extend } } };
435
+ document = mergeJson(document, patch);
436
+ }
437
+ if (features.is30) document = lowerDocumentSchemas30(document);
438
+ if (!isOpenApiDocument(document)) throw new TypeError("better-supabase/spec: a fragment removed a required document field");
439
+ return document;
440
+ }
441
+ /** The fields every OpenAPI document this format renders has. */
442
+ function isOpenApiDocument(value) {
443
+ return typeof value["openapi"] === "string" && isPlainObject(value["info"]) && isPlainObject(value["paths"]) && isPlainObject(value["components"]) && Array.isArray(value["tags"]) && Array.isArray(value["security"]);
444
+ }
445
+ const PATH_PARAM = /\{([^}]+)\}/g;
446
+ function resolves(document, ref) {
447
+ if (!ref.startsWith("#")) return true;
448
+ let node = document;
449
+ for (const raw of ref.slice(2).split("/")) {
450
+ if (raw === "" && ref === "#") break;
451
+ const key = raw.replaceAll("~1", "/").replaceAll("~0", "~");
452
+ if (Array.isArray(node)) node = node[Number(key)];
453
+ else if (isPlainObject(node)) node = node[key];
454
+ else return false;
455
+ if (node === void 0) return false;
456
+ }
457
+ return true;
458
+ }
459
+ function collectRefs$1(value, pointer, out) {
460
+ if (Array.isArray(value)) for (const [index, item] of value.entries()) collectRefs$1(item, `${pointer}/${index}`, out);
461
+ else if (isPlainObject(value)) for (const [key, item] of Object.entries(value)) if (key === "$ref" && typeof item === "string") out.push([pointer, item]);
462
+ else collectRefs$1(item, `${pointer}/${pointerToken(key)}`, out);
463
+ }
464
+ /**
465
+ * The keys of `value[key]` when it is an object; documents read from disk may
466
+ * omit any field.
467
+ */
468
+ function keysAt(value, key) {
469
+ if (!isPlainObject(value)) return [];
470
+ const child = value[key];
471
+ return isPlainObject(child) ? Object.keys(child) : [];
472
+ }
473
+ function lintOpenApi(document) {
474
+ const diagnostics = [];
475
+ const ids = /* @__PURE__ */ new Map();
476
+ const components = document.components;
477
+ const schemes = new Set(keysAt(components, "securitySchemes"));
478
+ const checkSecurity = (requirements, pointer) => {
479
+ if (!Array.isArray(requirements)) return;
480
+ const list = requirements;
481
+ for (const requirement of list) {
482
+ if (!isPlainObject(requirement)) continue;
483
+ for (const name of Object.keys(requirement)) if (!schemes.has(name)) diagnostics.push({
484
+ code: "security-unresolved",
485
+ severity: "error",
486
+ message: `Security requirement names an unknown scheme "${name}"`,
487
+ pointer
488
+ });
489
+ }
490
+ };
491
+ checkSecurity(document.security, "/security");
492
+ const paths = document.paths;
493
+ for (const [path, item] of Object.entries(isPlainObject(paths) ? paths : {})) {
494
+ if (!isPlainObject(item)) continue;
495
+ const base = `/paths/${pointerToken(path)}`;
496
+ const templated = new Set([...path.matchAll(PATH_PARAM)].map((match) => match[1] ?? ""));
497
+ const shared = Array.isArray(item["parameters"]) ? item["parameters"] : [];
498
+ checkSecurity(item["security"], `${base}/security`);
499
+ for (const [method, operation] of Object.entries(item)) {
500
+ if (!METHODS.has(method) || !isPlainObject(operation)) continue;
501
+ const pointer = `${base}/${method}`;
502
+ const id = operation["operationId"];
503
+ if (typeof id === "string") {
504
+ const seen = ids.get(id);
505
+ if (seen) diagnostics.push({
506
+ code: "operation-id-duplicate",
507
+ severity: "error",
508
+ message: `operationId "${id}" is also used at ${seen}`,
509
+ pointer
510
+ });
511
+ else ids.set(id, pointer);
512
+ }
513
+ checkSecurity(operation["security"], `${pointer}/security`);
514
+ const own = Array.isArray(operation["parameters"]) ? operation["parameters"] : [];
515
+ const declared = /* @__PURE__ */ new Set();
516
+ for (const parameter of [...shared, ...own]) {
517
+ if (!isPlainObject(parameter) || parameter["in"] !== "path") continue;
518
+ const name = String(parameter["name"]);
519
+ declared.add(name);
520
+ if (!templated.has(name)) diagnostics.push({
521
+ code: "path-param-unknown",
522
+ severity: "error",
523
+ message: `Path parameter "${name}" is not in the path template`,
524
+ pointer
525
+ });
526
+ }
527
+ for (const name of templated) if (!declared.has(name)) diagnostics.push({
528
+ code: "path-param-missing",
529
+ severity: "error",
530
+ message: `Path template parameter "${name}" has no parameter`,
531
+ pointer
532
+ });
533
+ }
534
+ }
535
+ const refs = [];
536
+ collectRefs$1(document, "", refs);
537
+ for (const [pointer, ref] of refs) if (!resolves(document, ref)) diagnostics.push({
538
+ code: "ref-unresolved",
539
+ severity: "error",
540
+ message: `$ref "${ref}" does not resolve inside the document`,
541
+ pointer
542
+ });
543
+ return diagnostics;
544
+ }
545
+ /**
546
+ * OpenAPI as a `DocumentFormat`. 3.1 is the default; 3.0 is legacy (schemas
547
+ * lowered to the 3.0 Schema Object); 3.2 has native `$self`, nested tags,
548
+ * `itemSchema`, `oauth2MetadataUrl` and `query`; `3.3-preview` follows the
549
+ * v3.3-dev branch at `SPEC_PINS.openapi33Preview`, with Path Item `security`
550
+ * and the Security Profiles proposal. Below 3.2, the 3.2 fields travel as the
551
+ * registered `x-oai-*` extensions where one exists, and as the model's prefixed
552
+ * extensions otherwise.
553
+ */
554
+ const openapiFormat = defineDocumentFormat({
555
+ id: "openapi",
556
+ versions: {
557
+ "3.0": {
558
+ pin: SPEC_PINS.openapi30,
559
+ status: "legacy"
560
+ },
561
+ "3.1": {
562
+ pin: SPEC_PINS.openapi31,
563
+ status: "stable"
564
+ },
565
+ "3.2": {
566
+ pin: SPEC_PINS.openapi32,
567
+ status: "stable"
568
+ },
569
+ "3.3-preview": {
570
+ pin: SPEC_PINS.openapi33Preview,
571
+ status: "preview"
572
+ }
573
+ },
574
+ defaultVersion: "3.1",
575
+ lower: lowerOpenApi,
576
+ lint: lintOpenApi,
577
+ fileName: () => OPENAPI_FILE_NAME
578
+ });
579
+ //#endregion
580
+ //#region src/spec/api.ts
581
+ function dedupe(diagnostics) {
582
+ const seen = /* @__PURE__ */ new Set();
583
+ return diagnostics.filter((diagnostic) => {
584
+ const key = `${diagnostic.code}\u0000${diagnostic.pointer ?? ""}\u0000${diagnostic.message}`;
585
+ if (seen.has(key)) return false;
586
+ seen.add(key);
587
+ return true;
588
+ });
589
+ }
590
+ /**
591
+ * The API model for a `defineSupabase()` result, and the documents it renders.
592
+ * The model is built once per options object; each format and version is
593
+ * lowered once and copied for every render.
594
+ *
595
+ * ```ts
596
+ * const api = defineApi(betterSupabase, {
597
+ * info: { title: "CRM API", version: "1.0.0" },
598
+ * resources: { customers: { list: customerList } },
599
+ * });
600
+ * ```
601
+ *
602
+ * Without `resources` it publishes every table, and without `blocks` every
603
+ * block instance `betterSupabase.blocks(set)` registered:
604
+ *
605
+ * ```ts
606
+ * const api = defineApi(betterSupabase, { info, basePath: "/api" });
607
+ * export const { procedures } = bsb.router(api, { meta: openapi });
608
+ * const { document } = api.openapi({ version: "3.2" });
609
+ * ```
610
+ */
611
+ function defineApi(source, options) {
612
+ const built = buildApiModel(source, options);
613
+ const lowered = /* @__PURE__ */ new WeakMap();
614
+ const lower = (format, version) => {
615
+ let byVersion = lowered.get(format);
616
+ if (!byVersion) {
617
+ byVersion = /* @__PURE__ */ new Map();
618
+ lowered.set(format, byVersion);
619
+ }
620
+ let hit = byVersion.get(version);
621
+ if (!hit) {
622
+ const diagnostics = [];
623
+ hit = {
624
+ document: format.lower(built.model, version, { report: (diagnostic) => {
625
+ diagnostics.push(diagnostic);
626
+ } }),
627
+ diagnostics
628
+ };
629
+ byVersion.set(version, hit);
630
+ }
631
+ return hit;
632
+ };
633
+ const render = (format, renderOptions = {}) => {
634
+ const fallback = format.defaultVersion;
635
+ const version = renderOptions.version ?? fallback;
636
+ const status = format.versions[version];
637
+ if (!status) throw new TypeError(`Document format "${format.id}" has no version "${String(version)}"`);
638
+ const diagnostics = [...built.diagnostics];
639
+ if (status.status === "preview") diagnostics.push({
640
+ code: "preview-version",
641
+ severity: "warning",
642
+ message: `${format.id} ${String(version)} follows a draft (${status.pin}); its fields may change before release`
643
+ });
644
+ const base = lower(format, version);
645
+ diagnostics.push(...base.diagnostics);
646
+ let document = structuredClone(base.document);
647
+ if (renderOptions.transform) {
648
+ const rendered = {
649
+ format: format.id,
650
+ version,
651
+ document
652
+ };
653
+ document = renderOptions.transform(rendered) ?? document;
654
+ }
655
+ const overlays = renderOptions.overlays ?? [];
656
+ if (overlays.length > 0) {
657
+ const engine = renderOptions.applyOverlays ?? options.applyOverlays;
658
+ if (!engine) throw new TypeError("better-supabase/spec: overlays need applyOverlays (from better-supabase/spec)");
659
+ const result = engine(document, overlays);
660
+ document = result.document;
661
+ diagnostics.push(...result.diagnostics ?? []);
662
+ }
663
+ diagnostics.push(...format.lint?.(document, version) ?? []);
664
+ return {
665
+ format: format.id,
666
+ version,
667
+ document,
668
+ diagnostics: dedupe(diagnostics),
669
+ fileName: format.fileName(version)
670
+ };
671
+ };
672
+ return {
673
+ model: built.model,
674
+ basePath: (options.basePath ?? "").replace(/\/$/, ""),
675
+ resources: publishedResources(source.meta, options),
676
+ blocks: publishedBlocks(source.options?.blocks, options.blocks),
677
+ diagnostics: built.diagnostics,
678
+ render,
679
+ openapi(openapiOptions = {}) {
680
+ const { transform, version, overlays, applyOverlays } = openapiOptions;
681
+ const renderOptions = {
682
+ ...version === void 0 ? {} : { version },
683
+ ...overlays === void 0 ? {} : { overlays },
684
+ ...applyOverlays === void 0 ? {} : { applyOverlays },
685
+ ...transform === void 0 ? {} : { transform: (rendered) => transform(rendered) }
686
+ };
687
+ const result = render(openapiFormat, renderOptions);
688
+ return {
689
+ format: "openapi",
690
+ version: result.version,
691
+ document: result.document,
692
+ diagnostics: result.diagnostics,
693
+ fileName: result.fileName
694
+ };
695
+ }
696
+ };
697
+ }
698
+ //#endregion
6
699
  //#region src/spec/function-route.ts
7
700
  function isDescriptor(value) {
8
701
  return typeof value === "object" && value !== null && "input" in value;
@@ -18,7 +711,7 @@ function descriptorOf(fn) {
18
711
  * `basePath` goes in front of it like any other route.
19
712
  *
20
713
  * ```ts
21
- * defineApi(bs, { routes: [functionRoute("send-invite", sendInvite)] });
714
+ * defineApi(bsb, { routes: [functionRoute("send-invite", sendInvite)] });
22
715
  * ```
23
716
  */
24
717
  function functionRoute(name, fn, options = {}) {
@@ -388,4 +1081,1793 @@ function scalarPreset(document, options = {}) {
388
1081
  return copy;
389
1082
  }
390
1083
  //#endregion
391
- export { DEFAULT_ERRORS, PROBLEM_SCHEMA, SPEC_UIS, SPEC_UI_PACKAGES, buildApiModel, defineApi, defineDocumentFormat, functionRoute, mergeJson, pointerToken, scalarPreset, serializeDocument, specReference, specReferenceCsp, specReferenceHtml, specResponse, topicsFrom };
1084
+ //#region src/openapi/create.ts
1085
+ /**
1086
+ * An OpenAPI document for REST resources over your tables, with schemas from
1087
+ * the generated metadata, list-query parameters, Supabase security schemes and
1088
+ * Problem Details errors. Throws when building or checking the document finds
1089
+ * an error; use `defineApi` to read every finding instead.
1090
+ *
1091
+ * ```ts
1092
+ * const doc = createOpenApi(betterSupabase, {
1093
+ * info: { title: "CRM API", version: "1.0.0" },
1094
+ * resources: {
1095
+ * customers: { list: customerList },
1096
+ * notes: { operations: ["list", "get"] },
1097
+ * },
1098
+ * });
1099
+ * ```
1100
+ */
1101
+ function createOpenApi(betterSupabase, options) {
1102
+ const { version, transform, overlays, onDiagnostic, ...apiOptions } = options;
1103
+ const api = defineApi(betterSupabase, apiOptions);
1104
+ const engine = options.applyOverlays;
1105
+ const result = api.openapi({
1106
+ ...version === void 0 ? {} : { version },
1107
+ ...transform === void 0 ? {} : { transform },
1108
+ ...overlays === void 0 ? {} : { overlays },
1109
+ ...engine === void 0 ? {} : { applyOverlays: engine }
1110
+ });
1111
+ const errors = result.diagnostics.filter((diagnostic) => diagnostic.severity === "error");
1112
+ if (errors.length > 0) throw new TypeError(`createOpenApi: ${errors.map((error) => `${error.code}: ${error.message}${error.pointer ? ` (${error.pointer})` : ""}`).join("; ")}`);
1113
+ if (onDiagnostic) for (const diagnostic of result.diagnostics) onDiagnostic(diagnostic);
1114
+ return result.document;
1115
+ }
1116
+ //#endregion
1117
+ //#region src/asyncapi/types.ts
1118
+ /**
1119
+ * The file name `asyncapiFormat` writes; Arazzo source descriptions point at
1120
+ * it.
1121
+ */
1122
+ const ASYNCAPI_FILE_NAME = "asyncapi.json";
1123
+ //#endregion
1124
+ //#region src/asyncapi/format.ts
1125
+ const ASYNCAPI_FIELD = {
1126
+ "3.0": SPEC_PINS.asyncapi30,
1127
+ "3.1": SPEC_PINS.asyncapi31
1128
+ };
1129
+ const SCHEMA_PREFIX = "#/components/schemas/";
1130
+ const KEY = /^[A-Za-z0-9_-]+$/;
1131
+ const PARAM = /\{([^}]+)\}/g;
1132
+ /** JSON Schema 2020-12 keywords the AsyncAPI Schema Object (draft-07) lacks. */
1133
+ const KEYWORDS_2020 = /* @__PURE__ */ new Set([
1134
+ "$defs",
1135
+ "$anchor",
1136
+ "$dynamicRef",
1137
+ "$dynamicAnchor",
1138
+ "prefixItems",
1139
+ "dependentSchemas",
1140
+ "dependentRequired",
1141
+ "unevaluatedProperties",
1142
+ "unevaluatedItems"
1143
+ ]);
1144
+ /** The query Supabase Realtime reads on the websocket upgrade. */
1145
+ const WS_BINDING = { ws: {
1146
+ method: "GET",
1147
+ query: {
1148
+ type: "object",
1149
+ required: ["apikey"],
1150
+ properties: {
1151
+ apikey: {
1152
+ type: "string",
1153
+ description: "The project's publishable (anon) key."
1154
+ },
1155
+ vsn: {
1156
+ type: "string",
1157
+ description: "Realtime protocol version."
1158
+ }
1159
+ }
1160
+ },
1161
+ bindingVersion: "0.1.0"
1162
+ } };
1163
+ const STANDARD_WEBHOOK_HEADERS = {
1164
+ type: "object",
1165
+ required: [
1166
+ "webhook-id",
1167
+ "webhook-timestamp",
1168
+ "webhook-signature"
1169
+ ],
1170
+ properties: {
1171
+ "webhook-id": {
1172
+ type: "string",
1173
+ description: "Unique message id; the same on every retry."
1174
+ },
1175
+ "webhook-timestamp": {
1176
+ type: "string",
1177
+ pattern: "^[0-9]+$",
1178
+ description: "Unix time in seconds when the message was sent."
1179
+ },
1180
+ "webhook-signature": {
1181
+ type: "string",
1182
+ description: "Space-separated signatures of `id.timestamp.body`, each `v1,<base64>`."
1183
+ }
1184
+ }
1185
+ };
1186
+ const omitUndefined$1 = (value) => Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== void 0));
1187
+ function collectRefs(value, out) {
1188
+ if (Array.isArray(value)) for (const item of value) collectRefs(item, out);
1189
+ else if (isPlainObject(value)) for (const [key, item] of Object.entries(value)) if (key === "$ref" && typeof item === "string") out.add(item);
1190
+ else collectRefs(item, out);
1191
+ }
1192
+ function uses2020(value) {
1193
+ if (Array.isArray(value)) return value.some(uses2020);
1194
+ if (!isPlainObject(value)) return false;
1195
+ return Object.entries(value).some(([key, item]) => KEYWORDS_2020.has(key) || uses2020(item));
1196
+ }
1197
+ /** Component names a set of values references, with everything they reference. */
1198
+ function referencedSchemas(model, roots) {
1199
+ const out = {};
1200
+ const pending = [];
1201
+ const visit = (value) => {
1202
+ const refs = /* @__PURE__ */ new Set();
1203
+ collectRefs(value, refs);
1204
+ for (const ref of refs) {
1205
+ if (!ref.startsWith(SCHEMA_PREFIX)) continue;
1206
+ const name = ref.slice(21).replaceAll("~1", "/").replaceAll("~0", "~");
1207
+ if (name in out || !model.schemas[name]) continue;
1208
+ out[name] = model.schemas[name];
1209
+ pending.push(name);
1210
+ }
1211
+ };
1212
+ for (const root of roots) visit(root);
1213
+ while (pending.length > 0) {
1214
+ const name = pending.pop();
1215
+ if (name !== void 0) visit(out[name]);
1216
+ }
1217
+ const sorted = {};
1218
+ for (const name of Object.keys(out).toSorted()) {
1219
+ const schema = out[name];
1220
+ if (schema) sorted[name] = structuredClone(schema);
1221
+ }
1222
+ return sorted;
1223
+ }
1224
+ function lowerScheme(name, scheme, ctx) {
1225
+ switch (scheme.type) {
1226
+ case "http": return omitUndefined$1({ ...scheme });
1227
+ case "apiKey": return omitUndefined$1({
1228
+ type: "httpApiKey",
1229
+ name: scheme.name,
1230
+ in: scheme.in,
1231
+ description: scheme.description
1232
+ });
1233
+ case "openIdConnect": return omitUndefined$1({ ...scheme });
1234
+ case "oauth2": {
1235
+ const flows = {};
1236
+ for (const [flow, value] of Object.entries(scheme.flows)) {
1237
+ const { scopes, ...rest } = value;
1238
+ flows[flow] = omitUndefined$1({
1239
+ ...rest,
1240
+ availableScopes: { ...scopes }
1241
+ });
1242
+ }
1243
+ return omitUndefined$1({
1244
+ type: "oauth2",
1245
+ description: scheme.description,
1246
+ flows
1247
+ });
1248
+ }
1249
+ case "profile":
1250
+ ctx.report({
1251
+ code: "asyncapi-security-unsupported",
1252
+ severity: "info",
1253
+ message: `Security scheme "${name}" uses Security Profiles, which AsyncAPI cannot describe; it is left out`,
1254
+ pointer: `/components/securitySchemes/${pointerToken(name)}`
1255
+ });
1256
+ return;
1257
+ default: return scheme;
1258
+ }
1259
+ }
1260
+ function lowerMessage(message, prefix) {
1261
+ return omitUndefined$1({
1262
+ name: message.name,
1263
+ title: message.title,
1264
+ summary: message.summary,
1265
+ description: message.description,
1266
+ contentType: message.contentType,
1267
+ headers: message.headers ? structuredClone(message.headers) : void 0,
1268
+ payload: structuredClone(message.payload),
1269
+ correlationId: message.correlationId ? { location: message.correlationId } : void 0,
1270
+ traits: message.traits?.map((trait) => ({ $ref: `#/components/messageTraits/${safeKey(trait)}` })),
1271
+ ...Object.fromEntries(Object.entries(message.extensions ?? {}).map(([key, value]) => [key.startsWith("x-") ? key : `${prefix}${key}`, value]))
1272
+ });
1273
+ }
1274
+ function lowerTrait(trait) {
1275
+ return omitUndefined$1({
1276
+ ...trait,
1277
+ headers: trait.headers ? structuredClone(trait.headers) : void 0
1278
+ });
1279
+ }
1280
+ function webhookMessage(webhook) {
1281
+ return {
1282
+ id: `webhook${safeKey(pascal(webhook.id))}`,
1283
+ name: webhook.id,
1284
+ title: webhook.id,
1285
+ ...webhook.summary ? { summary: webhook.summary } : {},
1286
+ ...webhook.description ? { description: webhook.description } : {},
1287
+ contentType: "application/json",
1288
+ ...webhook.standardWebhooks ? { headers: STANDARD_WEBHOOK_HEADERS } : {},
1289
+ payload: webhook.payload
1290
+ };
1291
+ }
1292
+ /** A server from a URL: `host` and `pathname` split, the scheme as protocol. */
1293
+ function serverFrom(url, fields, wsDefault) {
1294
+ let parsed;
1295
+ try {
1296
+ parsed = new URL(url);
1297
+ } catch {
1298
+ return;
1299
+ }
1300
+ const scheme = parsed.protocol.slice(0, -1);
1301
+ const protocol = wsDefault ? scheme === "http" || scheme === "ws" ? "ws" : "wss" : scheme;
1302
+ const pathname = parsed.pathname === "/" ? void 0 : parsed.pathname;
1303
+ return omitUndefined$1({
1304
+ host: parsed.host,
1305
+ protocol,
1306
+ pathname,
1307
+ ...fields
1308
+ });
1309
+ }
1310
+ function lowerAsyncApi(model, version, ctx) {
1311
+ const prefix = model.extensionPrefix;
1312
+ const keyOf = (id, where) => {
1313
+ if (KEY.test(id)) return id;
1314
+ const key = safeKey(id);
1315
+ ctx.report({
1316
+ code: "asyncapi-key-invalid",
1317
+ severity: "info",
1318
+ message: `${where} "${id}" is written as "${key}"; AsyncAPI keys allow letters, digits, "_" and "-"`
1319
+ });
1320
+ return key;
1321
+ };
1322
+ const securitySchemes = {};
1323
+ for (const [name, scheme] of Object.entries(model.securitySchemes)) {
1324
+ const lowered = lowerScheme(name, scheme, ctx);
1325
+ if (lowered) securitySchemes[safeKey(name)] = lowered;
1326
+ }
1327
+ const security = [];
1328
+ for (const requirement of model.security) {
1329
+ const names = Object.keys(requirement);
1330
+ if (names.length > 1) ctx.report({
1331
+ code: "asyncapi-security-combined",
1332
+ severity: "info",
1333
+ message: `A requirement that needs ${names.join(" and ")} together is listed as alternatives; AsyncAPI security lists have no AND`,
1334
+ pointer: "/security"
1335
+ });
1336
+ for (const name of names) {
1337
+ const key = safeKey(name);
1338
+ if (key in securitySchemes && !security.some((entry) => entry["$ref"] === `#/components/securitySchemes/${key}`)) security.push({ $ref: `#/components/securitySchemes/${key}` });
1339
+ }
1340
+ }
1341
+ const webhookMessages = model.webhooks.map(webhookMessage);
1342
+ const allMessages = { ...model.messages };
1343
+ for (const message of webhookMessages) allMessages[message.id] = message;
1344
+ const channels = [...model.channels];
1345
+ if (webhookMessages.length > 0) channels.push({
1346
+ id: "webhooks",
1347
+ address: "",
1348
+ title: "Outgoing webhooks",
1349
+ description: "Webhooks the app sends to each receiver's URL, signed per Standard Webhooks when the headers are listed.",
1350
+ protocol: "http",
1351
+ messages: webhookMessages.map((message) => message.id),
1352
+ operations: model.webhooks.map((webhook, index) => ({
1353
+ id: `send${safeKey(pascal(webhook.id))}Webhook`,
1354
+ action: "send",
1355
+ ...webhook.summary ? { summary: webhook.summary } : {},
1356
+ messages: [webhookMessages[index]?.id ?? webhook.id]
1357
+ }))
1358
+ });
1359
+ const servers = {};
1360
+ const wsServers = [];
1361
+ const httpServers = [];
1362
+ const hasWs = channels.some((channel) => channel.protocol === "ws");
1363
+ const hasHttp = channels.some((channel) => channel.protocol === "http");
1364
+ if (hasWs && model.realtimeUrl) {
1365
+ const server = serverFrom(model.realtimeUrl, {
1366
+ title: "Supabase Realtime",
1367
+ description: "The Realtime websocket. Private channels need the user's access token.",
1368
+ security: security.length > 0 ? security : void 0
1369
+ }, true);
1370
+ if (server) {
1371
+ servers["realtime"] = server;
1372
+ wsServers.push({ $ref: "#/servers/realtime" });
1373
+ } else ctx.report({
1374
+ code: "asyncapi-realtime-url-invalid",
1375
+ severity: "error",
1376
+ message: `realtimeUrl "${model.realtimeUrl}" is not an absolute URL`,
1377
+ pointer: "/servers/realtime"
1378
+ });
1379
+ } else if (hasWs) ctx.report({
1380
+ code: "asyncapi-server-missing",
1381
+ severity: "warning",
1382
+ message: "Realtime channels are described without a server; set realtimeUrl to add the Realtime websocket",
1383
+ pointer: "/servers"
1384
+ });
1385
+ if (hasHttp) for (const [index, entry] of model.servers.entries()) {
1386
+ const key = safeKey(entry.name ?? (index === 0 ? "api" : `api${String(index + 1)}`));
1387
+ const server = serverFrom(entry.url, omitUndefined$1({ description: entry.description }), false);
1388
+ if (!server || key in servers) continue;
1389
+ servers[key] = server;
1390
+ httpServers.push({ $ref: `#/servers/${key}` });
1391
+ }
1392
+ const messageKeys = /* @__PURE__ */ new Map();
1393
+ const messages = {};
1394
+ for (const [id, message] of Object.entries(allMessages)) {
1395
+ const key = keyOf(id, "Message");
1396
+ messageKeys.set(id, key);
1397
+ messages[key] = lowerMessage(message, prefix);
1398
+ if (uses2020(message.payload) || uses2020(message.headers)) ctx.report({
1399
+ code: "asyncapi-schema-dialect",
1400
+ severity: "warning",
1401
+ message: `Message "${id}" uses JSON Schema 2020-12 keywords that the AsyncAPI Schema Object (draft-07) does not define`,
1402
+ pointer: `/components/messages/${pointerToken(key)}`
1403
+ });
1404
+ }
1405
+ const channelObjects = {};
1406
+ const operations = {};
1407
+ const placed = [];
1408
+ const addOperation = (key, operation, pointer) => {
1409
+ if (key in operations) {
1410
+ ctx.report({
1411
+ code: "asyncapi-operation-id-duplicate",
1412
+ severity: "error",
1413
+ message: `Two operations have the id "${key}"; the first one is kept`,
1414
+ pointer
1415
+ });
1416
+ return;
1417
+ }
1418
+ operations[key] = operation;
1419
+ };
1420
+ for (const channel of channels) {
1421
+ const key = keyOf(channel.id, "Channel");
1422
+ if (key in channelObjects) {
1423
+ ctx.report({
1424
+ code: "asyncapi-channel-id-duplicate",
1425
+ severity: "error",
1426
+ message: `Two channels have the id "${key}"; the first one is kept`,
1427
+ pointer: `/channels/${pointerToken(key)}`
1428
+ });
1429
+ continue;
1430
+ }
1431
+ placed.push({
1432
+ key,
1433
+ channel
1434
+ });
1435
+ const channelMessages = {};
1436
+ for (const id of channel.messages) {
1437
+ const messageKey = messageKeys.get(id);
1438
+ if (messageKey === void 0) {
1439
+ ctx.report({
1440
+ code: "asyncapi-message-unknown",
1441
+ severity: "error",
1442
+ message: `Channel "${channel.id}" lists an unknown message "${id}"`,
1443
+ pointer: `/channels/${pointerToken(key)}/messages`
1444
+ });
1445
+ continue;
1446
+ }
1447
+ channelMessages[messageKey] = { $ref: `#/components/messages/${messageKey}` };
1448
+ }
1449
+ const names = [...channel.address.matchAll(PARAM)].map((match) => match[1] ?? "");
1450
+ const parameters = names.length > 0 ? Object.fromEntries(names.map((name) => [name, omitUndefined$1({ ...channel.parameters?.[name] })])) : void 0;
1451
+ const serverRefs = channel.protocol === "ws" ? wsServers : httpServers;
1452
+ channelObjects[key] = omitUndefined$1({
1453
+ address: channel.address === "" ? null : channel.address,
1454
+ title: channel.title,
1455
+ summary: channel.summary,
1456
+ description: channel.description,
1457
+ servers: serverRefs.length > 0 ? serverRefs.map((ref) => ({ ...ref })) : void 0,
1458
+ parameters,
1459
+ messages: channelMessages,
1460
+ bindings: channel.protocol === "ws" ? structuredClone(WS_BINDING) : void 0,
1461
+ ...channel.extensions
1462
+ });
1463
+ for (const operation of channel.operations) {
1464
+ const operationKey = keyOf(operation.id, "Operation");
1465
+ const refs = [];
1466
+ for (const id of operation.messages ?? []) {
1467
+ const messageKey = messageKeys.get(id);
1468
+ if (messageKey === void 0 || !channel.messages.includes(id)) {
1469
+ ctx.report({
1470
+ code: "asyncapi-operation-message-unknown",
1471
+ severity: "error",
1472
+ message: `Operation "${operation.id}" lists "${id}", which is not a message of channel "${channel.id}"`,
1473
+ pointer: `/operations/${pointerToken(operationKey)}`
1474
+ });
1475
+ continue;
1476
+ }
1477
+ refs.push({ $ref: `#/channels/${key}/messages/${messageKey}` });
1478
+ }
1479
+ addOperation(operationKey, omitUndefined$1({
1480
+ action: operation.action,
1481
+ channel: { $ref: `#/channels/${key}` },
1482
+ summary: operation.summary,
1483
+ description: operation.description,
1484
+ messages: operation.messages ? refs : void 0,
1485
+ [`${prefix}permission`]: operation.permission,
1486
+ ...operation.extensions
1487
+ }), `/operations/${pointerToken(operationKey)}`);
1488
+ }
1489
+ }
1490
+ for (const operation of model.operations) {
1491
+ const emits = operation.extensions[`${prefix}emits`];
1492
+ if (!Array.isArray(emits)) continue;
1493
+ const byChannel = /* @__PURE__ */ new Map();
1494
+ for (const event of emits) {
1495
+ if (typeof event !== "string") continue;
1496
+ const target = placed.find(({ channel }) => channel.messages.some((id) => {
1497
+ const message = allMessages[id];
1498
+ return id === event || message?.name === event || message?.name?.endsWith(`.${event}`) === true;
1499
+ }));
1500
+ const id = target?.channel.messages.find((candidate) => {
1501
+ const message = allMessages[candidate];
1502
+ return candidate === event || message?.name === event || message?.name?.endsWith(`.${event}`) === true;
1503
+ });
1504
+ if (!target || id === void 0) {
1505
+ ctx.report({
1506
+ code: "asyncapi-emits-unknown",
1507
+ severity: "warning",
1508
+ message: `Operation "${operation.id}" emits "${event}", which no message describes`,
1509
+ pointer: `/operations/${pointerToken(operation.id)}`
1510
+ });
1511
+ continue;
1512
+ }
1513
+ const list = byChannel.get(target.key) ?? [];
1514
+ list.push(messageKeys.get(id) ?? id);
1515
+ byChannel.set(target.key, list);
1516
+ }
1517
+ const many = byChannel.size > 1;
1518
+ for (const [channelKey, keys] of byChannel) {
1519
+ const operationKey = safeKey(many ? `${operation.id}Emits${pascal(channelKey)}` : `${operation.id}Emits`);
1520
+ addOperation(operationKey, {
1521
+ action: "send",
1522
+ channel: { $ref: `#/channels/${channelKey}` },
1523
+ summary: `Events sent by ${operation.method.toUpperCase()} ${operation.path}`,
1524
+ messages: [...new Set(keys)].map((messageKey) => ({ $ref: `#/channels/${channelKey}/messages/${messageKey}` })),
1525
+ [`${prefix}operation`]: operation.id
1526
+ }, `/operations/${pointerToken(operationKey)}`);
1527
+ }
1528
+ }
1529
+ const traits = {};
1530
+ for (const [name, trait] of Object.entries(model.messageTraits ?? {})) traits[safeKey(name)] = lowerTrait(trait);
1531
+ const schemas = referencedSchemas(model, [Object.values(messages), Object.values(traits)]);
1532
+ const { info } = model;
1533
+ const document = omitUndefined$1({
1534
+ asyncapi: ASYNCAPI_FIELD[version],
1535
+ info: omitUndefined$1({
1536
+ title: info.title,
1537
+ version: info.version,
1538
+ description: info.description ?? info.summary,
1539
+ termsOfService: info.termsOfService,
1540
+ contact: info.contact ? omitUndefined$1({ ...info.contact }) : void 0,
1541
+ license: info.license ? omitUndefined$1({
1542
+ name: info.license.name,
1543
+ url: info.license.url
1544
+ }) : void 0
1545
+ }),
1546
+ defaultContentType: "application/json",
1547
+ servers: Object.keys(servers).length > 0 ? servers : void 0,
1548
+ channels: channelObjects,
1549
+ operations,
1550
+ components: omitUndefined$1({
1551
+ schemas: Object.keys(schemas).length > 0 ? schemas : void 0,
1552
+ messages: Object.keys(messages).length > 0 ? messages : void 0,
1553
+ messageTraits: Object.keys(traits).length > 0 ? traits : void 0,
1554
+ securitySchemes: Object.keys(securitySchemes).length > 0 ? securitySchemes : void 0
1555
+ })
1556
+ });
1557
+ if (!isAsyncApiDocument(document)) throw new TypeError("better-supabase/spec: lowering lost a required field");
1558
+ return document;
1559
+ }
1560
+ function isAsyncApiDocument(value) {
1561
+ return typeof value["asyncapi"] === "string" && isPlainObject(value["info"]) && isPlainObject(value["channels"]) && isPlainObject(value["operations"]) && isPlainObject(value["components"]);
1562
+ }
1563
+ function resolve$1(document, ref) {
1564
+ if (!ref.startsWith("#/")) return;
1565
+ let node = document;
1566
+ for (const raw of ref.slice(2).split("/")) {
1567
+ const key = raw.replaceAll("~1", "/").replaceAll("~0", "~");
1568
+ if (!isPlainObject(node)) return;
1569
+ node = node[key];
1570
+ }
1571
+ return node;
1572
+ }
1573
+ function refOf(value) {
1574
+ return isPlainObject(value) && typeof value["$ref"] === "string" ? value["$ref"] : void 0;
1575
+ }
1576
+ function lintAsyncApi(document) {
1577
+ const diagnostics = [];
1578
+ const refs = /* @__PURE__ */ new Set();
1579
+ collectRefs(document, refs);
1580
+ for (const ref of refs) if (ref.startsWith("#") && resolve$1(document, ref) === void 0) diagnostics.push({
1581
+ code: "asyncapi-ref-unresolved",
1582
+ severity: "error",
1583
+ message: `$ref "${ref}" does not resolve inside the document`
1584
+ });
1585
+ for (const [key, channel] of Object.entries(document.channels)) {
1586
+ const pointer = `/channels/${pointerToken(key)}`;
1587
+ if (!KEY.test(key)) diagnostics.push({
1588
+ code: "asyncapi-key-invalid",
1589
+ severity: "error",
1590
+ message: `Channel id "${key}" has characters AsyncAPI keys do not allow`,
1591
+ pointer
1592
+ });
1593
+ const address = channel["address"];
1594
+ const names = new Set(typeof address === "string" ? [...address.matchAll(PARAM)].map((match) => match[1] ?? "") : []);
1595
+ const parameters = isPlainObject(channel["parameters"]) ? Object.keys(channel["parameters"]) : [];
1596
+ for (const name of parameters) if (!names.has(name)) diagnostics.push({
1597
+ code: "asyncapi-parameter-unknown",
1598
+ severity: "error",
1599
+ message: `Parameter "${name}" is not in the address of channel "${key}"`,
1600
+ pointer: `${pointer}/parameters`
1601
+ });
1602
+ for (const name of names) if (!parameters.includes(name)) diagnostics.push({
1603
+ code: "asyncapi-parameter-missing",
1604
+ severity: "error",
1605
+ message: `Address expression "{${name}}" of channel "${key}" has no parameter`,
1606
+ pointer: `${pointer}/parameters`
1607
+ });
1608
+ }
1609
+ for (const [key, operation] of Object.entries(document.operations)) {
1610
+ const pointer = `/operations/${pointerToken(key)}`;
1611
+ const channelRef = refOf(operation["channel"]);
1612
+ if (!channelRef?.startsWith("#/channels/")) {
1613
+ diagnostics.push({
1614
+ code: "asyncapi-operation-channel-unknown",
1615
+ severity: "error",
1616
+ message: `Operation "${key}" does not reference a root channel`,
1617
+ pointer: `${pointer}/channel`
1618
+ });
1619
+ continue;
1620
+ }
1621
+ const list = Array.isArray(operation["messages"]) ? operation["messages"] : [];
1622
+ for (const entry of list) if (!refOf(entry)?.startsWith(`${channelRef}/messages/`)) diagnostics.push({
1623
+ code: "asyncapi-operation-message-unknown",
1624
+ severity: "error",
1625
+ message: `Operation "${key}" lists a message outside its channel`,
1626
+ pointer: `${pointer}/messages`
1627
+ });
1628
+ }
1629
+ return diagnostics;
1630
+ }
1631
+ /**
1632
+ * AsyncAPI as a `DocumentFormat`, for the events the API model describes:
1633
+ * Realtime table change signals and broadcast topics on the Supabase Realtime
1634
+ * websocket (`ws` bindings), CloudEvents (headers as the `cloudEvent` message
1635
+ * trait), outgoing webhooks over HTTP and the events HTTP operations emit. 3.0
1636
+ * is the default; 3.1 only adds `ros2` bindings, so the two documents differ in
1637
+ * the `asyncapi` field.
1638
+ */
1639
+ const asyncapiFormat = defineDocumentFormat({
1640
+ id: "asyncapi",
1641
+ versions: {
1642
+ "3.0": {
1643
+ pin: SPEC_PINS.asyncapi30,
1644
+ status: "stable"
1645
+ },
1646
+ "3.1": {
1647
+ pin: SPEC_PINS.asyncapi31,
1648
+ status: "stable"
1649
+ }
1650
+ },
1651
+ defaultVersion: "3.0",
1652
+ lower: lowerAsyncApi,
1653
+ lint: lintAsyncApi,
1654
+ fileName: () => ASYNCAPI_FILE_NAME
1655
+ });
1656
+ //#endregion
1657
+ //#region src/asyncapi/create.ts
1658
+ /**
1659
+ * An AsyncAPI document for the app's events: Realtime table change signals and
1660
+ * broadcast topics, CloudEvents for row and block events, outgoing webhooks and
1661
+ * the events HTTP operations emit. Pass `events` (and `realtimeUrl` for the
1662
+ * websocket server). Throws when building or checking the document finds an
1663
+ * error; use `defineApi(...).render(asyncapiFormat)` to read every finding
1664
+ * instead.
1665
+ *
1666
+ * ```ts
1667
+ * const doc = createAsyncApi(betterSupabase, {
1668
+ * info: { title: "CRM events", version: "1.0.0" },
1669
+ * realtimeUrl: "wss://example.supabase.co/realtime/v1/websocket",
1670
+ * events: {
1671
+ * tables: ["customers"],
1672
+ * cloudEvents: { source: "/crm", blocks: { "support.started": true } },
1673
+ * },
1674
+ * });
1675
+ * ```
1676
+ */
1677
+ function createAsyncApi(betterSupabase, options) {
1678
+ const { version, transform, overlays, onDiagnostic, ...apiOptions } = options;
1679
+ const result = defineApi(betterSupabase, apiOptions).render(asyncapiFormat, {
1680
+ ...version === void 0 ? {} : { version },
1681
+ ...transform === void 0 ? {} : { transform: (rendered) => transform(rendered) },
1682
+ ...overlays === void 0 ? {} : { overlays }
1683
+ });
1684
+ const errors = result.diagnostics.filter((diagnostic) => diagnostic.severity === "error");
1685
+ if (errors.length > 0) throw new TypeError(`createAsyncApi: ${errors.map((error) => `${error.code}: ${error.message}${error.pointer ? ` (${error.pointer})` : ""}`).join("; ")}`);
1686
+ if (onDiagnostic) for (const diagnostic of result.diagnostics) onDiagnostic(diagnostic);
1687
+ return result.document;
1688
+ }
1689
+ //#endregion
1690
+ //#region src/arazzo/format.ts
1691
+ const ARAZZO_FIELD = {
1692
+ "1.0": SPEC_PINS.arazzo10,
1693
+ "1.1": SPEC_PINS.arazzo11
1694
+ };
1695
+ const ID = /^[A-Za-z0-9_-]+$/;
1696
+ const STEP_OUTPUT = /\$steps\.([A-Za-z0-9_-]+)\.outputs\.([A-Za-z0-9_-]+)/g;
1697
+ const INPUT = /\$inputs\.([A-Za-z0-9_-]+)/g;
1698
+ const SOURCE = /\$sourceDescriptions\.([A-Za-z0-9_-]+)\./g;
1699
+ const omitUndefined = (value) => Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== void 0));
1700
+ function firstSuccess(operation) {
1701
+ return Object.keys(operation.responses).filter((status) => /^2\d\d$/.test(status)).toSorted()[0];
1702
+ }
1703
+ function stripActionParameters(actions, version, report, pointer) {
1704
+ if (!actions) return;
1705
+ return actions.map((action, index) => {
1706
+ const copy = structuredClone({ ...action });
1707
+ if (version === "1.0" && "parameters" in copy) {
1708
+ delete copy["parameters"];
1709
+ report(`${pointer}/${String(index)}/parameters`);
1710
+ }
1711
+ return copy;
1712
+ });
1713
+ }
1714
+ function lowerStep(step, pointer, state) {
1715
+ const { ctx, version } = state;
1716
+ const operation = step.operationId === void 0 ? void 0 : state.operations.get(step.operationId);
1717
+ let target = {};
1718
+ if (step.operationId !== void 0) {
1719
+ if (!operation) ctx.report({
1720
+ code: "arazzo-operation-unknown",
1721
+ severity: "error",
1722
+ message: `Step "${step.id}" calls operation "${step.operationId}", which the API does not have`,
1723
+ pointer: `${pointer}/operationId`
1724
+ });
1725
+ target = { operationId: state.qualify ? `$sourceDescriptions.${state.apiName}.${step.operationId}` : step.operationId };
1726
+ } else if (step.workflowId !== void 0) target = { workflowId: step.workflowId };
1727
+ else if (step.channel) {
1728
+ if (version === "1.0") {
1729
+ ctx.report({
1730
+ code: "arazzo-channel-step-unsupported",
1731
+ severity: "error",
1732
+ message: `Step "${step.id}" uses an AsyncAPI channel, which needs Arazzo 1.1; the step is left out`,
1733
+ pointer
1734
+ });
1735
+ return;
1736
+ }
1737
+ if (!state.channels.has(step.channel.id)) ctx.report({
1738
+ code: "arazzo-channel-unknown",
1739
+ severity: "error",
1740
+ message: `Step "${step.id}" uses channel "${step.channel.id}", which the API does not have`,
1741
+ pointer: `${pointer}/channelPath`
1742
+ });
1743
+ target = {
1744
+ channelPath: `{$sourceDescriptions.${state.eventsName}.url}#/channels/${safeKey(step.channel.id)}`,
1745
+ action: step.channel.action,
1746
+ ...step.channel.correlationId === void 0 ? {} : { correlationId: step.channel.correlationId }
1747
+ };
1748
+ }
1749
+ const parameters = step.parameters?.map((parameter, index) => {
1750
+ const location = parameter.in ?? operation?.parameters.find((candidate) => candidate.name === parameter.name)?.in;
1751
+ if (location === void 0 && step.operationId !== void 0) ctx.report({
1752
+ code: "arazzo-parameter-in-missing",
1753
+ severity: "error",
1754
+ message: `Parameter "${parameter.name}" of step "${step.id}" has no "in", and operation "${step.operationId}" has no parameter by that name`,
1755
+ pointer: `${pointer}/parameters/${String(index)}`
1756
+ });
1757
+ return omitUndefined({
1758
+ name: parameter.name,
1759
+ in: location,
1760
+ value: structuredClone(parameter.value)
1761
+ });
1762
+ });
1763
+ const contentType = operation?.requestBody ? Object.keys(operation.requestBody.content)[0] : void 0;
1764
+ const success = operation ? firstSuccess(operation) : void 0;
1765
+ const successCriteria = step.successCriteria?.map((criterion) => ({ ...criterion })) ?? (success === void 0 ? void 0 : [{ condition: `$statusCode == ${success}` }]);
1766
+ const reportParameters = (where) => {
1767
+ ctx.report({
1768
+ code: "arazzo-action-parameters-unsupported",
1769
+ severity: "warning",
1770
+ message: `Action parameters need Arazzo 1.1; they are left out of step "${step.id}"`,
1771
+ pointer: where
1772
+ });
1773
+ };
1774
+ const onSuccess = stripActionParameters(step.onSuccess, version, reportParameters, `${pointer}/onSuccess`);
1775
+ const onFailure = stripActionParameters(step.onFailure, version, reportParameters, `${pointer}/onFailure`);
1776
+ return {
1777
+ stepId: step.id,
1778
+ ...step.description === void 0 ? {} : { description: step.description },
1779
+ ...target,
1780
+ ...parameters === void 0 ? {} : { parameters },
1781
+ ...step.requestBody ? { requestBody: omitUndefined({
1782
+ contentType,
1783
+ payload: structuredClone(step.requestBody.payload)
1784
+ }) } : {},
1785
+ ...successCriteria === void 0 ? {} : { successCriteria },
1786
+ ...onSuccess === void 0 ? {} : { onSuccess },
1787
+ ...onFailure === void 0 ? {} : { onFailure },
1788
+ ...step.outputs ? { outputs: { ...step.outputs } } : {}
1789
+ };
1790
+ }
1791
+ function lowerWorkflow(workflow, index, state) {
1792
+ const pointer = `/workflows/${String(index)}`;
1793
+ const steps = workflow.steps.flatMap((step, stepIndex) => {
1794
+ const lowered = lowerStep(step, `${pointer}/steps/${String(stepIndex)}`, state);
1795
+ return lowered ? [lowered] : [];
1796
+ });
1797
+ return {
1798
+ workflowId: workflow.id,
1799
+ ...workflow.summary === void 0 ? {} : { summary: workflow.summary },
1800
+ ...workflow.description === void 0 ? {} : { description: workflow.description },
1801
+ ...workflow.inputs ? { inputs: structuredClone(workflow.inputs) } : {},
1802
+ steps,
1803
+ ...workflow.outputs ? { outputs: { ...workflow.outputs } } : {}
1804
+ };
1805
+ }
1806
+ function lowerArazzo(options, model, version, ctx) {
1807
+ const apiName = options.openapi?.name ?? "api";
1808
+ const eventsName = options.asyncapi?.name ?? "events";
1809
+ const usesChannels = version === "1.1" && model.workflows.some((workflow) => workflow.steps.some((step) => step.channel !== void 0));
1810
+ const usesOperations = model.workflows.some((workflow) => workflow.steps.some((step) => step.operationId !== void 0));
1811
+ const sources = [];
1812
+ if (usesOperations || !usesChannels) sources.push({
1813
+ name: apiName,
1814
+ url: options.openapi?.url ?? model.self ?? "openapi.json",
1815
+ type: "openapi"
1816
+ });
1817
+ if (usesChannels) sources.push({
1818
+ name: eventsName,
1819
+ url: options.asyncapi?.url ?? "asyncapi.json",
1820
+ type: "asyncapi"
1821
+ });
1822
+ const state = {
1823
+ model,
1824
+ version,
1825
+ ctx,
1826
+ operations: new Map(model.operations.map((operation) => [operation.id, operation])),
1827
+ channels: new Set(model.channels.map((channel) => channel.id)),
1828
+ apiName,
1829
+ eventsName,
1830
+ qualify: sources.length > 1
1831
+ };
1832
+ if (model.workflows.length === 0) ctx.report({
1833
+ code: "arazzo-workflows-empty",
1834
+ severity: "error",
1835
+ message: "The API has no workflows; an Arazzo document needs at least one (pass workflows, or a built-in such as paginationWorkflows())",
1836
+ pointer: "/workflows"
1837
+ });
1838
+ const { info } = model;
1839
+ return {
1840
+ arazzo: ARAZZO_FIELD[version],
1841
+ info: {
1842
+ title: info.title,
1843
+ version: info.version,
1844
+ ...info.summary === void 0 ? {} : { summary: info.summary },
1845
+ ...info.description === void 0 ? {} : { description: info.description }
1846
+ },
1847
+ sourceDescriptions: sources,
1848
+ workflows: model.workflows.map((workflow, index) => lowerWorkflow(workflow, index, state))
1849
+ };
1850
+ }
1851
+ function strings(value, out) {
1852
+ if (typeof value === "string") out.push(value);
1853
+ else if (Array.isArray(value)) for (const item of value) strings(item, out);
1854
+ else if (isPlainObject(value)) for (const item of Object.values(value)) strings(item, out);
1855
+ }
1856
+ function inputNames(inputs) {
1857
+ if (!inputs || !isPlainObject(inputs["properties"])) return;
1858
+ return new Set(Object.keys(inputs["properties"]));
1859
+ }
1860
+ function lintWorkflow(workflow, index, workflowIds, sourceNames, diagnostics) {
1861
+ const pointer = `/workflows/${String(index)}`;
1862
+ const stepIndex = /* @__PURE__ */ new Map();
1863
+ const outputsOf = /* @__PURE__ */ new Map();
1864
+ for (const [position, step] of workflow.steps.entries()) {
1865
+ if (stepIndex.has(step.stepId)) diagnostics.push({
1866
+ code: "arazzo-step-id-duplicate",
1867
+ severity: "error",
1868
+ message: `Workflow "${workflow.workflowId}" has two steps "${step.stepId}"`,
1869
+ pointer: `${pointer}/steps/${String(position)}`
1870
+ });
1871
+ else stepIndex.set(step.stepId, position);
1872
+ outputsOf.set(step.stepId, new Set(Object.keys(step.outputs ?? {})));
1873
+ }
1874
+ const inputs = inputNames(workflow.inputs);
1875
+ const checkExpressions = (value, where, position) => {
1876
+ const texts = [];
1877
+ strings(value, texts);
1878
+ for (const text of texts) {
1879
+ for (const [, stepId = "", output = ""] of text.matchAll(STEP_OUTPUT)) {
1880
+ const target = stepIndex.get(stepId);
1881
+ if (target === void 0 || !outputsOf.get(stepId)?.has(output)) diagnostics.push({
1882
+ code: "arazzo-step-output-unknown",
1883
+ severity: "error",
1884
+ message: `"$steps.${stepId}.outputs.${output}" names an output no step "${stepId}" declares`,
1885
+ pointer: where
1886
+ });
1887
+ else if (position !== void 0 && target >= position) diagnostics.push({
1888
+ code: "arazzo-step-output-order",
1889
+ severity: "error",
1890
+ message: `"$steps.${stepId}.outputs.${output}" is read before step "${stepId}" runs`,
1891
+ pointer: where
1892
+ });
1893
+ }
1894
+ if (inputs) {
1895
+ for (const [, name = ""] of text.matchAll(INPUT)) if (!inputs.has(name)) diagnostics.push({
1896
+ code: "arazzo-input-undeclared",
1897
+ severity: "warning",
1898
+ message: `"$inputs.${name}" is not a property of workflow "${workflow.workflowId}" inputs`,
1899
+ pointer: where
1900
+ });
1901
+ }
1902
+ for (const [, name = ""] of text.matchAll(SOURCE)) if (!sourceNames.has(name)) diagnostics.push({
1903
+ code: "arazzo-source-unknown",
1904
+ severity: "error",
1905
+ message: `"$sourceDescriptions.${name}" is not a listed source description`,
1906
+ pointer: where
1907
+ });
1908
+ }
1909
+ };
1910
+ for (const [position, step] of workflow.steps.entries()) {
1911
+ const where = `${pointer}/steps/${String(position)}`;
1912
+ if (!ID.test(step.stepId)) diagnostics.push({
1913
+ code: "arazzo-id-invalid",
1914
+ severity: "error",
1915
+ message: `Step id "${step.stepId}" has characters Arazzo ids do not allow`,
1916
+ pointer: where
1917
+ });
1918
+ if ([
1919
+ step.operationId,
1920
+ step.operationPath,
1921
+ step.channelPath,
1922
+ step.workflowId
1923
+ ].filter((target) => target !== void 0).length !== 1) diagnostics.push({
1924
+ code: "arazzo-step-target",
1925
+ severity: "error",
1926
+ message: `Step "${step.stepId}" needs exactly one of operationId, operationPath, channelPath or workflowId`,
1927
+ pointer: where
1928
+ });
1929
+ if (step.workflowId !== void 0 && !workflowIds.has(step.workflowId)) diagnostics.push({
1930
+ code: "arazzo-workflow-unknown",
1931
+ severity: "error",
1932
+ message: `Step "${step.stepId}" calls workflow "${step.workflowId}", which the document does not have`,
1933
+ pointer: `${where}/workflowId`
1934
+ });
1935
+ checkExpressions([
1936
+ step.operationId,
1937
+ step.channelPath,
1938
+ step.parameters,
1939
+ step.requestBody,
1940
+ step.successCriteria
1941
+ ], where, position);
1942
+ checkExpressions([
1943
+ step.outputs,
1944
+ step.onSuccess,
1945
+ step.onFailure
1946
+ ], where);
1947
+ for (const action of [...step.onSuccess ?? [], ...step.onFailure ?? []]) {
1948
+ if (action["type"] !== "goto" && action["type"] !== "retry") continue;
1949
+ const stepId = action["stepId"];
1950
+ const workflowId = action["workflowId"];
1951
+ if (typeof stepId === "string" && !stepIndex.has(stepId) || typeof workflowId === "string" && !workflowIds.has(workflowId) && !workflowId.startsWith("$sourceDescriptions.")) diagnostics.push({
1952
+ code: "arazzo-goto-unknown",
1953
+ severity: "error",
1954
+ message: `Action "${String(action["name"])}" of step "${step.stepId}" goes to a step or workflow that does not exist`,
1955
+ pointer: where
1956
+ });
1957
+ }
1958
+ }
1959
+ checkExpressions(workflow.outputs, `${pointer}/outputs`);
1960
+ }
1961
+ function lintArazzo(document) {
1962
+ const diagnostics = [];
1963
+ const workflowIds = /* @__PURE__ */ new Set();
1964
+ for (const [index, workflow] of document.workflows.entries()) {
1965
+ if (!ID.test(workflow.workflowId)) diagnostics.push({
1966
+ code: "arazzo-id-invalid",
1967
+ severity: "error",
1968
+ message: `Workflow id "${workflow.workflowId}" has characters Arazzo ids do not allow`,
1969
+ pointer: `/workflows/${String(index)}`
1970
+ });
1971
+ if (workflowIds.has(workflow.workflowId)) diagnostics.push({
1972
+ code: "arazzo-workflow-id-duplicate",
1973
+ severity: "error",
1974
+ message: `Two workflows have the id "${workflow.workflowId}"`,
1975
+ pointer: `/workflows/${String(index)}`
1976
+ });
1977
+ workflowIds.add(workflow.workflowId);
1978
+ }
1979
+ const sourceNames = new Set(document.sourceDescriptions.map((source) => source.name));
1980
+ for (const [index, workflow] of document.workflows.entries()) lintWorkflow(workflow, index, workflowIds, sourceNames, diagnostics);
1981
+ return diagnostics;
1982
+ }
1983
+ /**
1984
+ * An Arazzo format whose source descriptions point at your OpenAPI and AsyncAPI
1985
+ * URLs. `arazzoFormat` is this with the defaults: `api` at the model's `self`
1986
+ * or `openapi.json`, and `events` at `asyncapi.json`.
1987
+ */
1988
+ function createArazzoFormat(options = {}) {
1989
+ return defineDocumentFormat({
1990
+ id: "arazzo",
1991
+ versions: {
1992
+ "1.0": {
1993
+ pin: SPEC_PINS.arazzo10,
1994
+ status: "stable"
1995
+ },
1996
+ "1.1": {
1997
+ pin: SPEC_PINS.arazzo11,
1998
+ status: "stable"
1999
+ }
2000
+ },
2001
+ defaultVersion: "1.0",
2002
+ lower: (model, version, ctx) => lowerArazzo(options, model, version, ctx),
2003
+ lint: lintArazzo,
2004
+ fileName: () => "arazzo.json"
2005
+ });
2006
+ }
2007
+ /**
2008
+ * Arazzo as a `DocumentFormat`, for the model's `workflows`. 1.0 is the
2009
+ * default; channel steps (AsyncAPI send and receive) and action `parameters`
2010
+ * need 1.1.
2011
+ */
2012
+ const arazzoFormat = createArazzoFormat();
2013
+ //#endregion
2014
+ //#region src/arazzo/create.ts
2015
+ /**
2016
+ * An Arazzo document for the API's workflows: your `defineWorkflow` workflows
2017
+ * and the built-ins (`paginationWorkflows()`, `createThenGetWorkflows()`,
2018
+ * `authWorkflow()`), checked against the operations the API has. Throws when
2019
+ * building or checking the document finds an error; use
2020
+ * `defineApi(...).render(arazzoFormat)` to read every finding instead.
2021
+ *
2022
+ * ```ts
2023
+ * const doc = createArazzo(betterSupabase, {
2024
+ * info: { title: "CRM workflows", version: "1.0.0" },
2025
+ * resources: { customers: { pagination: "cursor" } },
2026
+ * workflows: [paginationWorkflows(), createThenGetWorkflows()],
2027
+ * });
2028
+ * ```
2029
+ */
2030
+ function createArazzo(betterSupabase, options) {
2031
+ const { version, transform, overlays, onDiagnostic, openapi, asyncapi, ...apiOptions } = options;
2032
+ const format = createArazzoFormat({
2033
+ ...openapi === void 0 ? {} : { openapi },
2034
+ ...asyncapi === void 0 ? {} : { asyncapi }
2035
+ });
2036
+ const result = defineApi(betterSupabase, apiOptions).render(format, {
2037
+ ...version === void 0 ? {} : { version },
2038
+ ...transform === void 0 ? {} : { transform: (rendered) => transform(rendered) },
2039
+ ...overlays === void 0 ? {} : { overlays }
2040
+ });
2041
+ const errors = result.diagnostics.filter((diagnostic) => diagnostic.severity === "error");
2042
+ if (errors.length > 0) throw new TypeError(`createArazzo: ${errors.map((error) => `${error.code}: ${error.message}${error.pointer ? ` (${error.pointer})` : ""}`).join("; ")}`);
2043
+ if (onDiagnostic) for (const diagnostic of result.diagnostics) onDiagnostic(diagnostic);
2044
+ return result.document;
2045
+ }
2046
+ //#endregion
2047
+ //#region src/arazzo/builtins.ts
2048
+ const resourceOf = (operations, table, operation) => operations.find((candidate) => candidate.source.kind === "resource" && candidate.source.table === table && candidate.source.operation === operation);
2049
+ const tablesOf = (operations) => [...new Set(operations.flatMap((operation) => operation.source.kind === "resource" ? [operation.source.table] : []))];
2050
+ const inputParameter = (parameter) => ({
2051
+ name: parameter.name,
2052
+ in: "path",
2053
+ value: `$inputs.${parameter.name}`
2054
+ });
2055
+ const pathParameter = (operation) => operation.parameters.find((parameter) => parameter.in === "path")?.name;
2056
+ /**
2057
+ * One workflow per cursor-paginated list: read the first page, then the next
2058
+ * one from its `nextCursor` when `hasMore` is true. Repeat the second step with
2059
+ * its own `nextCursor` to walk the rest.
2060
+ */
2061
+ function paginationWorkflows(options = {}) {
2062
+ return (operations) => tablesOf(operations).filter((table) => !options.tables || options.tables.includes(table)).flatMap((table) => {
2063
+ const list = resourceOf(operations, table, "list");
2064
+ if (!list?.parameters.some((parameter) => parameter.name === "after" && parameter.in === "query")) return [];
2065
+ return [{
2066
+ id: `paginate${pascal(table)}`,
2067
+ summary: `Read ${table} page by page`,
2068
+ description: "Reads the first page, then the next one with the cursor the first page returned. Repeat `nextPage` with its own `nextCursor` until `hasMore` is false.",
2069
+ inputs: {
2070
+ type: "object",
2071
+ properties: { size: {
2072
+ type: "integer",
2073
+ minimum: 1,
2074
+ description: "Page size."
2075
+ } }
2076
+ },
2077
+ steps: [{
2078
+ id: "firstPage",
2079
+ operationId: list.id,
2080
+ parameters: [{
2081
+ name: "size",
2082
+ in: "query",
2083
+ value: "$inputs.size"
2084
+ }],
2085
+ successCriteria: [{ condition: "$statusCode == 200" }],
2086
+ outputs: {
2087
+ items: "$response.body#/items",
2088
+ nextCursor: "$response.body#/nextCursor",
2089
+ hasMore: "$response.body#/hasMore"
2090
+ },
2091
+ onSuccess: [{
2092
+ name: "lastPage",
2093
+ type: "end",
2094
+ criteria: [{ condition: "$response.body#/hasMore == false" }]
2095
+ }]
2096
+ }, {
2097
+ id: "nextPage",
2098
+ operationId: list.id,
2099
+ parameters: [{
2100
+ name: "size",
2101
+ in: "query",
2102
+ value: "$inputs.size"
2103
+ }, {
2104
+ name: "after",
2105
+ in: "query",
2106
+ value: "$steps.firstPage.outputs.nextCursor"
2107
+ }],
2108
+ successCriteria: [{ condition: "$statusCode == 200" }],
2109
+ outputs: {
2110
+ items: "$response.body#/items",
2111
+ nextCursor: "$response.body#/nextCursor",
2112
+ hasMore: "$response.body#/hasMore"
2113
+ }
2114
+ }],
2115
+ outputs: {
2116
+ firstPage: "$steps.firstPage.outputs.items",
2117
+ nextCursor: "$steps.nextPage.outputs.nextCursor"
2118
+ }
2119
+ }];
2120
+ });
2121
+ }
2122
+ /**
2123
+ * One workflow per resource with `create` and `get`: create a row, then read it
2124
+ * back by its key.
2125
+ */
2126
+ function createThenGetWorkflows(options = {}) {
2127
+ return (operations) => tablesOf(operations).filter((table) => !options.tables || options.tables.includes(table)).flatMap((table) => {
2128
+ const create = resourceOf(operations, table, "create");
2129
+ const get = resourceOf(operations, table, "get");
2130
+ const key = get ? pathParameter(get) : void 0;
2131
+ if (!create || !get || key === void 0) return [];
2132
+ return [{
2133
+ id: `createThenGet${pascal(table)}`,
2134
+ summary: `Create a ${table} row, then read it back`,
2135
+ inputs: {
2136
+ type: "object",
2137
+ required: ["row"],
2138
+ properties: { row: {
2139
+ type: "object",
2140
+ description: "The row to insert."
2141
+ } }
2142
+ },
2143
+ steps: [{
2144
+ id: "create",
2145
+ operationId: create.id,
2146
+ requestBody: { payload: "$inputs.row" },
2147
+ successCriteria: [{ condition: "$statusCode == 201" }],
2148
+ outputs: { key: `$response.body#/${key}` }
2149
+ }, {
2150
+ id: "get",
2151
+ operationId: get.id,
2152
+ parameters: [{
2153
+ name: key,
2154
+ in: "path",
2155
+ value: "$steps.create.outputs.key"
2156
+ }],
2157
+ successCriteria: [{ condition: "$statusCode == 200" }],
2158
+ outputs: { row: "$response.body" }
2159
+ }],
2160
+ outputs: { row: "$steps.get.outputs.row" }
2161
+ }];
2162
+ });
2163
+ }
2164
+ /**
2165
+ * Sign in, then call an operation with the access token as a bearer token. A
2166
+ * 403 Problem Details answer with code `APPROVAL_REQUIRED` ends the workflow
2167
+ * (the `approvalRequired` failure action), so a client can wait for the
2168
+ * approval instead of retrying.
2169
+ */
2170
+ function authWorkflow(options) {
2171
+ const signIn = options.signIn ?? "signIn";
2172
+ const pointer = options.tokenPointer ?? "/access_token";
2173
+ return (operations) => {
2174
+ const pathParameters = operations.find((operation) => operation.id === options.call)?.parameters.filter((parameter) => parameter.in === "path") ?? [];
2175
+ return [{
2176
+ id: options.id ?? `signInThen${pascal(options.call)}`,
2177
+ summary: `Sign in, then call ${options.call}`,
2178
+ inputs: {
2179
+ type: "object",
2180
+ required: [
2181
+ "email",
2182
+ "password",
2183
+ ...pathParameters.map((p) => p.name)
2184
+ ],
2185
+ properties: {
2186
+ email: {
2187
+ type: "string",
2188
+ format: "email"
2189
+ },
2190
+ password: {
2191
+ type: "string",
2192
+ format: "password"
2193
+ },
2194
+ ...Object.fromEntries(pathParameters.map((parameter) => [parameter.name, { type: "string" }]))
2195
+ }
2196
+ },
2197
+ steps: [{
2198
+ id: "signIn",
2199
+ operationId: signIn,
2200
+ requestBody: { payload: {
2201
+ email: "$inputs.email",
2202
+ password: "$inputs.password"
2203
+ } },
2204
+ successCriteria: [{ condition: "$statusCode == 200" }],
2205
+ outputs: { accessToken: `$response.body#${pointer}` }
2206
+ }, {
2207
+ id: "call",
2208
+ operationId: options.call,
2209
+ parameters: [{
2210
+ name: "Authorization",
2211
+ in: "header",
2212
+ value: "Bearer {$steps.signIn.outputs.accessToken}"
2213
+ }, ...pathParameters.map(inputParameter)],
2214
+ outputs: { body: "$response.body" },
2215
+ onFailure: [{
2216
+ name: "approvalRequired",
2217
+ type: "end",
2218
+ criteria: [{ condition: "$statusCode == 403" }, {
2219
+ context: "$response.body",
2220
+ condition: "$.code == 'APPROVAL_REQUIRED'",
2221
+ type: "jsonpath"
2222
+ }]
2223
+ }]
2224
+ }],
2225
+ outputs: { body: "$steps.call.outputs.body" }
2226
+ }];
2227
+ };
2228
+ }
2229
+ //#endregion
2230
+ //#region src/arazzo/workflow.ts
2231
+ function isStandard(value) {
2232
+ return typeof value === "object" && value !== null && "~standard" in value && typeof value["~standard"] === "object";
2233
+ }
2234
+ function inputsOf(inputs) {
2235
+ if (!isStandard(inputs)) return inputs;
2236
+ const converted = convertStandard(inputs, "input");
2237
+ if (!converted) throw new TypeError("defineWorkflow: inputs is a Standard Schema without Standard JSON Schema; pass a JSON Schema instead");
2238
+ return converted.schema;
2239
+ }
2240
+ function parametersOf(parameters) {
2241
+ if (parameters === void 0) return;
2242
+ if (Array.isArray(parameters)) return parameters.map((parameter) => parameter.in === void 0 ? {
2243
+ name: parameter.name,
2244
+ value: parameter.value
2245
+ } : {
2246
+ name: parameter.name,
2247
+ in: parameter.in,
2248
+ value: parameter.value
2249
+ });
2250
+ return Object.entries(parameters).map(([name, value]) => ({
2251
+ name,
2252
+ value
2253
+ }));
2254
+ }
2255
+ function criterionOf(criterion) {
2256
+ return typeof criterion === "string" ? { condition: criterion } : { ...criterion };
2257
+ }
2258
+ function stepOf(step) {
2259
+ const parameters = parametersOf(step.parameters);
2260
+ let target = {};
2261
+ if (step.operationId) target = { operationId: step.operationId };
2262
+ else if (step.workflowId) target = { workflowId: step.workflowId };
2263
+ else if (step.channel) target = { channel: step.channel };
2264
+ return {
2265
+ id: step.id,
2266
+ ...step.description === void 0 ? {} : { description: step.description },
2267
+ ...target,
2268
+ ...parameters === void 0 ? {} : { parameters },
2269
+ ...step.requestBody === void 0 ? {} : { requestBody: { payload: step.requestBody } },
2270
+ ...step.successCriteria === void 0 ? {} : { successCriteria: step.successCriteria.map(criterionOf) },
2271
+ ...step.outputs === void 0 ? {} : { outputs: { ...step.outputs } },
2272
+ ...step.onSuccess === void 0 ? {} : { onSuccess: step.onSuccess },
2273
+ ...step.onFailure === void 0 ? {} : { onFailure: step.onFailure }
2274
+ };
2275
+ }
2276
+ /**
2277
+ * A workflow for `defineApi`'s `workflows`, rendered by `arazzoFormat`. Steps
2278
+ * name operations by operationId; pass the ids as `Op` (for example
2279
+ * `ResourceOperationIds<"customers">`) to type them. Rendering reports unknown
2280
+ * operationIds, steps that read outputs of later or unknown steps, and channel
2281
+ * steps outside Arazzo 1.1.
2282
+ *
2283
+ * ```ts
2284
+ * const onboarding = defineWorkflow<ResourceOperationIds<"customers">>({
2285
+ * id: "onboardCustomer",
2286
+ * inputs: { type: "object", properties: { row: { type: "object" } } },
2287
+ * steps: [
2288
+ * {
2289
+ * id: "create",
2290
+ * operationId: "createCustomers",
2291
+ * requestBody: "$inputs.row",
2292
+ * outputs: { id: "$response.body#/id" },
2293
+ * },
2294
+ * {
2295
+ * id: "get",
2296
+ * operationId: "getCustomers",
2297
+ * parameters: { id: "$steps.create.outputs.id" },
2298
+ * },
2299
+ * ],
2300
+ * });
2301
+ * ```
2302
+ */
2303
+ function defineWorkflow(workflow) {
2304
+ return {
2305
+ id: workflow.id,
2306
+ ...workflow.summary === void 0 ? {} : { summary: workflow.summary },
2307
+ ...workflow.description === void 0 ? {} : { description: workflow.description },
2308
+ ...workflow.inputs === void 0 ? {} : { inputs: inputsOf(workflow.inputs) },
2309
+ steps: workflow.steps.map(stepOf),
2310
+ ...workflow.outputs === void 0 ? {} : { outputs: { ...workflow.outputs } }
2311
+ };
2312
+ }
2313
+ //#endregion
2314
+ //#region src/overlay/path.ts
2315
+ const ESCAPES = {
2316
+ b: "\b",
2317
+ f: "\f",
2318
+ n: "\n",
2319
+ r: "\r",
2320
+ t: " ",
2321
+ "'": "'",
2322
+ "\\": "\\",
2323
+ "/": "/"
2324
+ };
2325
+ /**
2326
+ * Parses an RFC 9535 normalized path (§ 2.7), such as `$['paths'][0]`, into its
2327
+ * segments. Throws for anything else, because the engine promised one.
2328
+ */
2329
+ function parseNormalizedPath(path) {
2330
+ if (!path.startsWith("$")) throw new TypeError(`Not a normalized path: ${path}`);
2331
+ const segments = [];
2332
+ let i = 1;
2333
+ while (i < path.length) {
2334
+ if (path[i] !== "[") throw new TypeError(`Not a normalized path: ${path}`);
2335
+ i += 1;
2336
+ if (path[i] === "'") {
2337
+ i += 1;
2338
+ let name = "";
2339
+ while (i < path.length && path[i] !== "'") {
2340
+ const char = path[i] ?? "";
2341
+ if (char !== "\\") {
2342
+ name += char;
2343
+ i += 1;
2344
+ continue;
2345
+ }
2346
+ const next = path[i + 1] ?? "";
2347
+ if (next === "u") {
2348
+ name += String.fromCodePoint(Number.parseInt(path.slice(i + 2, i + 6), 16));
2349
+ i += 6;
2350
+ continue;
2351
+ }
2352
+ const escaped = ESCAPES[next];
2353
+ if (escaped === void 0) throw new TypeError(`Not a normalized path: ${path}`);
2354
+ name += escaped;
2355
+ i += 2;
2356
+ }
2357
+ if (path[i] !== "'" || path[i + 1] !== "]") throw new TypeError(`Not a normalized path: ${path}`);
2358
+ segments.push(name);
2359
+ i += 2;
2360
+ continue;
2361
+ }
2362
+ const end = path.indexOf("]", i);
2363
+ const digits = end === -1 ? "" : path.slice(i, end);
2364
+ if (!/^(?:0|[1-9]\d*)$/.test(digits)) throw new TypeError(`Not a normalized path: ${path}`);
2365
+ segments.push(Number(digits));
2366
+ i = end + 1;
2367
+ }
2368
+ return segments;
2369
+ }
2370
+ const SHORTHAND = /^[A-Za-z_][A-Za-z0-9_]*$/;
2371
+ function quote(name) {
2372
+ let out = "";
2373
+ for (const char of name) {
2374
+ const code = char.codePointAt(0) ?? 0;
2375
+ if (char === "\\") out += "\\\\";
2376
+ else if (char === "'") out += "\\'";
2377
+ else if (char === "\b") out += "\\b";
2378
+ else if (char === "\f") out += "\\f";
2379
+ else if (char === "\n") out += "\\n";
2380
+ else if (char === "\r") out += "\\r";
2381
+ else if (char === " ") out += "\\t";
2382
+ else if (code < 32) out += `\\u${code.toString(16).padStart(4, "0")}`;
2383
+ else out += char;
2384
+ }
2385
+ return `['${out}']`;
2386
+ }
2387
+ /**
2388
+ * Formats segments as a readable RFC 9535 query: member-name shorthand for
2389
+ * plain names, bracket notation otherwise (`$.paths['/customers'].get`).
2390
+ */
2391
+ function formatPath(segments) {
2392
+ let out = "$";
2393
+ for (const segment of segments) if (typeof segment === "number") out += `[${segment}]`;
2394
+ else if (SHORTHAND.test(segment)) out += `.${segment}`;
2395
+ else out += quote(segment);
2396
+ return out;
2397
+ }
2398
+ /** Decodes one RFC 6901 reference token. */
2399
+ function decodePointerToken(token) {
2400
+ return token.replaceAll("~1", "/").replaceAll("~0", "~");
2401
+ }
2402
+ //#endregion
2403
+ //#region src/overlay/apply.ts
2404
+ const ALLOW_EMPTY = "x-better-supabase-allow-empty";
2405
+ const REF_PREFIX = "#/components/actions/";
2406
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
2407
+ const isArray = (value) => Array.isArray(value);
2408
+ const kindOf$1 = (value) => Array.isArray(value) ? "array" : isObject(value) ? "object" : "primitive";
2409
+ function readMinor(version) {
2410
+ if (typeof version !== "string") return;
2411
+ const match = /^1\.([012])\.\d+$/.exec(version);
2412
+ if (!match) return;
2413
+ const minor = Number(match[1]);
2414
+ return minor === 0 || minor === 1 || minor === 2 ? minor : void 0;
2415
+ }
2416
+ /**
2417
+ * An Action Object needs a string target; the other fields are read
2418
+ * defensively.
2419
+ */
2420
+ const isAction = (entry) => typeof entry["target"] === "string";
2421
+ function report(reporter, severity, code, message, pointer) {
2422
+ reporter.diagnostics.push({
2423
+ code,
2424
+ severity,
2425
+ message,
2426
+ pointer: `${reporter.prefix}${pointer}`
2427
+ });
2428
+ }
2429
+ /**
2430
+ * Expands a Reusable Action Reference (Overlay 1.2 § 4.5.6) into a plain
2431
+ * action: the referenced `fields`, then the reference's own fields on top.
2432
+ */
2433
+ function resolveReference(overlay, entry, pointer, reporter) {
2434
+ const { $ref: ref, ...own } = entry;
2435
+ if (typeof ref !== "string" || !ref.startsWith(REF_PREFIX)) {
2436
+ report(reporter, "error", "overlay-ref-unresolved", `The reusable action reference ${String(ref)} does not point under ${REF_PREFIX}`, pointer);
2437
+ return;
2438
+ }
2439
+ const name = decodePointerToken(ref.slice(21));
2440
+ const components = "components" in overlay ? overlay.components : void 0;
2441
+ const reusables = isObject(components) ? components["actions"] : void 0;
2442
+ const reusable = isObject(reusables) && Object.hasOwn(reusables, name) ? reusables[name] : void 0;
2443
+ if (!isObject(reusable)) {
2444
+ report(reporter, "error", "overlay-ref-unresolved", `The reusable action ${ref} does not exist in components.actions`, pointer);
2445
+ return;
2446
+ }
2447
+ const fields = isObject(reusable["fields"]) ? { ...reusable["fields"] } : {};
2448
+ if ("target" in fields) {
2449
+ report(reporter, "warning", "overlay-invalid-action", `The reusable action ${ref} sets target, which only the reference may set; it is ignored`, pointer);
2450
+ delete fields["target"];
2451
+ }
2452
+ return {
2453
+ ...fields,
2454
+ ...own
2455
+ };
2456
+ }
2457
+ function resolve(document, segments) {
2458
+ let parent = void 0;
2459
+ let key = void 0;
2460
+ let value = document;
2461
+ for (const segment of segments) {
2462
+ parent = value;
2463
+ key = segment;
2464
+ value = typeof segment === "number" ? Array.isArray(value) ? value[segment] : void 0 : isObject(value) ? value[segment] : void 0;
2465
+ }
2466
+ return {
2467
+ parent,
2468
+ key,
2469
+ value
2470
+ };
2471
+ }
2472
+ const escapeToken = (segment) => `/${String(segment).replaceAll("~", "~0").replaceAll("/", "~1")}`;
2473
+ const toPointer = (segments) => segments.map(escapeToken).join("");
2474
+ /**
2475
+ * Merges `source` into `target` recursively (§ 4.5.4.1) and collects the
2476
+ * conflicting pointers.
2477
+ */
2478
+ function mergeInto(target, source, at, conflicts) {
2479
+ for (const [key, value] of Object.entries(source)) {
2480
+ if (!Object.hasOwn(target, key)) {
2481
+ target[key] = value;
2482
+ continue;
2483
+ }
2484
+ const current = target[key];
2485
+ if (kindOf$1(current) !== kindOf$1(value)) {
2486
+ conflicts.push(`${at}${escapeToken(key)}`);
2487
+ continue;
2488
+ }
2489
+ if (isObject(current) && isObject(value)) mergeInto(current, value, `${at}${escapeToken(key)}`, conflicts);
2490
+ else if (isArray(current) && isArray(value)) current.push(...value);
2491
+ else target[key] = value;
2492
+ }
2493
+ }
2494
+ function select(state, expression, options, reporter, pointer, field) {
2495
+ try {
2496
+ return options.jsonpath.paths(state.document, expression).map(parseNormalizedPath);
2497
+ } catch (error) {
2498
+ report(reporter, "error", "overlay-invalid-target", `The ${field} ${JSON.stringify(expression)} is not a valid RFC 9535 query: ${error instanceof Error ? error.message : String(error)}`, pointer);
2499
+ return;
2500
+ }
2501
+ }
2502
+ function removeNodes(state, targets, reporter, pointer) {
2503
+ const fromArrays = /* @__PURE__ */ new Map();
2504
+ for (const segments of targets) {
2505
+ const { parent, key } = resolve(state.document, segments);
2506
+ if (key === void 0) {
2507
+ report(reporter, "error", "overlay-invalid-action", "The action removes the document root, which is not allowed", pointer);
2508
+ continue;
2509
+ }
2510
+ if (Array.isArray(parent) && typeof key === "number") {
2511
+ const indexes = fromArrays.get(parent) ?? [];
2512
+ indexes.push(key);
2513
+ fromArrays.set(parent, indexes);
2514
+ } else if (isObject(parent) && typeof key === "string") delete parent[key];
2515
+ }
2516
+ for (const [array, indexes] of fromArrays) for (const index of [...new Set(indexes)].toSorted((a, b) => b - a)) array.splice(index, 1);
2517
+ }
2518
+ function updateNodes(state, targets, value, reporter, pointer) {
2519
+ const nodes = targets.map((segments) => ({
2520
+ segments,
2521
+ ...resolve(state.document, segments)
2522
+ }));
2523
+ const kinds = new Set(nodes.map((node) => kindOf$1(node.value)));
2524
+ if (kinds.size > 1) {
2525
+ report(reporter, "error", "overlay-mixed-targets", `The target selects ${[...kinds].join(" and ")} nodes; an update needs nodes of one kind`, pointer);
2526
+ return;
2527
+ }
2528
+ const valueKind = kindOf$1(value);
2529
+ for (const node of nodes) {
2530
+ const copy = structuredClone(value);
2531
+ const at = toPointer(node.segments) || "the root";
2532
+ if (isArray(node.value)) {
2533
+ if (isArray(copy)) node.value.push(...copy);
2534
+ else node.value.push(copy);
2535
+ continue;
2536
+ }
2537
+ if (isObject(node.value)) {
2538
+ if (!isObject(copy)) {
2539
+ report(reporter, "error", "overlay-merge-conflict", `Cannot merge a${valueKind === "array" ? "n array" : " primitive"} into the object at ${at}`, pointer);
2540
+ continue;
2541
+ }
2542
+ const conflicts = [];
2543
+ mergeInto(node.value, copy, toPointer(node.segments), conflicts);
2544
+ for (const conflict of conflicts) report(reporter, "error", "overlay-merge-conflict", `Cannot merge values of different kinds at ${conflict}`, pointer);
2545
+ continue;
2546
+ }
2547
+ if (valueKind !== "primitive") {
2548
+ report(reporter, "error", "overlay-merge-conflict", `Cannot replace the primitive at ${at} with a${valueKind === "array" ? "n array" : "n object"}`, pointer);
2549
+ continue;
2550
+ }
2551
+ if (node.key === void 0) state.document = copy;
2552
+ else if (Array.isArray(node.parent) && typeof node.key === "number") node.parent[node.key] = copy;
2553
+ else if (isObject(node.parent) && typeof node.key === "string") node.parent[node.key] = copy;
2554
+ }
2555
+ }
2556
+ function runAction(state, action, minor, options, reporter, pointer) {
2557
+ if (action.remove !== true && action.update === void 0 && action.copy !== void 0 && minor === 0) {
2558
+ report(reporter, "error", "overlay-version-feature", "copy needs Overlay 1.1 or later; the action is skipped", pointer);
2559
+ return;
2560
+ }
2561
+ const targets = select(state, action.target, options, reporter, pointer, "target");
2562
+ if (!targets) return;
2563
+ if (targets.length === 0) {
2564
+ if (action[ALLOW_EMPTY] !== true && options.allowEmpty !== true) report(reporter, "error", "overlay-no-match", `The target ${action.target} selects no nodes; set ${ALLOW_EMPTY}: true on the action if that is expected`, pointer);
2565
+ return;
2566
+ }
2567
+ if (action.remove === true) {
2568
+ removeNodes(state, targets, reporter, pointer);
2569
+ return;
2570
+ }
2571
+ if (action.update !== void 0) {
2572
+ updateNodes(state, targets, action.update, reporter, pointer);
2573
+ return;
2574
+ }
2575
+ if (typeof action.copy === "string") {
2576
+ const sources = select(state, action.copy, options, reporter, pointer, "copy source");
2577
+ if (!sources) return;
2578
+ const [source] = sources;
2579
+ if (sources.length !== 1 || !source) {
2580
+ report(reporter, "error", "overlay-copy-source", `The copy source ${action.copy} selects ${sources.length} nodes; it must select exactly one`, pointer);
2581
+ return;
2582
+ }
2583
+ updateNodes(state, targets, resolve(state.document, source).value, reporter, pointer);
2584
+ return;
2585
+ }
2586
+ report(reporter, "warning", "overlay-empty-action", "The action has no update, copy or remove, so it changes nothing", pointer);
2587
+ }
2588
+ /** Applies one overlay to `state.document` in place. */
2589
+ function applyInPlace(state, overlay, options, reporter) {
2590
+ const minor = readMinor(overlay.overlay);
2591
+ if (minor === void 0) {
2592
+ report(reporter, "error", "overlay-version-unsupported", `Overlay version ${overlay.overlay} is not supported; use 1.0.x, 1.1.x or 1.2.x`, "/overlay");
2593
+ return;
2594
+ }
2595
+ if (!Array.isArray(overlay.actions)) {
2596
+ report(reporter, "error", "overlay-invalid-action", "The overlay has no actions array", "/actions");
2597
+ return;
2598
+ }
2599
+ const actions = overlay.actions;
2600
+ for (const [index, entry] of actions.entries()) {
2601
+ const pointer = `/actions/${index}`;
2602
+ if (!isObject(entry)) {
2603
+ report(reporter, "error", "overlay-invalid-action", "The action is not an object", pointer);
2604
+ continue;
2605
+ }
2606
+ if ("$ref" in entry && minor < 2) report(reporter, "warning", "overlay-version-feature", `Reusable actions need Overlay 1.2; the reference is expanded for this ${overlay.overlay} overlay`, pointer);
2607
+ const action = "$ref" in entry ? resolveReference(overlay, entry, pointer, reporter) : entry;
2608
+ if (!action) continue;
2609
+ if (!isAction(action)) {
2610
+ report(reporter, "error", "overlay-invalid-action", "The action has no target", pointer);
2611
+ continue;
2612
+ }
2613
+ runAction(state, action, minor, options, reporter, pointer);
2614
+ }
2615
+ }
2616
+ /**
2617
+ * Applies an Overlay 1.0, 1.1 or 1.2 document to `document` and returns a new
2618
+ * document. The input is cloned once with `structuredClone` and never changed;
2619
+ * each target runs once through `options.jsonpath`.
2620
+ *
2621
+ * Actions run in order, each on the result of the previous one (Overlay §
2622
+ * 4.5.1.1). `update` merges objects, concatenates or appends to arrays and
2623
+ * replaces primitives; `remove` deletes the selected nodes; `copy` (1.1 and
2624
+ * later) uses the value of the single node its query selects. Reusable action
2625
+ * references (1.2) are expanded, with a warning when the overlay declares 1.0
2626
+ * or 1.1.
2627
+ *
2628
+ * Problems never throw: they are diagnostics, and the failing action is
2629
+ * skipped. A target that selects nothing reports `overlay-no-match` as an error
2630
+ * unless the action sets `x-better-supabase-allow-empty: true` or the options
2631
+ * set `allowEmpty`. The other codes are `overlay-invalid-target`,
2632
+ * `overlay-invalid-action`, `overlay-mixed-targets`, `overlay-merge-conflict`,
2633
+ * `overlay-copy-source`, `overlay-ref-unresolved`, `overlay-version-feature`,
2634
+ * `overlay-version-unsupported` and `overlay-empty-action`.
2635
+ *
2636
+ * The result keeps the input's type; an overlay that changes the shape needs
2637
+ * the caller to narrow it.
2638
+ *
2639
+ * @example
2640
+ * const jsonpath = await loadJsonPath();
2641
+ * const { document, diagnostics } = applyOverlay(openapi, overlay, {
2642
+ * jsonpath,
2643
+ * });
2644
+ */
2645
+ function applyOverlay(document, overlay, options) {
2646
+ return run(document, [overlay], options, () => "");
2647
+ }
2648
+ /**
2649
+ * Applies overlays in order, each to the result of the previous one, with a
2650
+ * single clone of the input. Diagnostic pointers start with the overlay's index
2651
+ * (`/1/actions/0`).
2652
+ */
2653
+ function applyOverlays(document, overlays, options) {
2654
+ return run(document, overlays, options, (index) => `/${index}`);
2655
+ }
2656
+ function run(document, overlays, options, prefix) {
2657
+ const state = { document: structuredClone(document) };
2658
+ const diagnostics = [];
2659
+ for (const [index, overlay] of overlays.entries()) applyInPlace(state, overlay, options, {
2660
+ prefix: prefix(index),
2661
+ diagnostics
2662
+ });
2663
+ return {
2664
+ document: state.document,
2665
+ diagnostics
2666
+ };
2667
+ }
2668
+ //#endregion
2669
+ //#region src/overlay/define.ts
2670
+ const isReference = (action) => "$ref" in action;
2671
+ const isPlain = (action) => !("$ref" in action);
2672
+ function defineOverlay(input) {
2673
+ const { overlay: declared, ...rest } = input;
2674
+ if (input.actions.length === 0) throw new TypeError("defineOverlay: an overlay needs at least one action");
2675
+ const references = input.actions.filter(isReference);
2676
+ const uses12 = input.components !== void 0 || input.$self !== void 0 || references.length > 0;
2677
+ const version = declared ?? (uses12 ? "1.2.0" : "1.1.0");
2678
+ if (version !== "1.2.0" && uses12) throw new TypeError(`defineOverlay: reusable actions, components and $self need overlay 1.2.0, not ${version}`);
2679
+ if (version === "1.0.0" && input.actions.some((action) => !isReference(action) && action.copy !== void 0)) throw new TypeError("defineOverlay: copy needs overlay 1.1.0 or later");
2680
+ for (const field of ["extends", "$self"]) if (input[field]?.includes("#")) throw new TypeError(`defineOverlay: ${field} must not contain a fragment`);
2681
+ const reusables = input.components?.actions ?? {};
2682
+ for (const reference of references) {
2683
+ const name = decodePointerToken(reference.$ref.slice(21));
2684
+ if (!Object.hasOwn(reusables, name)) throw new TypeError(`defineOverlay: ${reference.$ref} does not exist in components.actions`);
2685
+ }
2686
+ switch (version) {
2687
+ case "1.2.0": return {
2688
+ overlay: version,
2689
+ ...rest
2690
+ };
2691
+ case "1.1.0":
2692
+ case "1.0.0": return {
2693
+ overlay: version,
2694
+ ...rest,
2695
+ actions: input.actions.filter(isPlain)
2696
+ };
2697
+ default: throw new TypeError(`defineOverlay: unsupported overlay ${String(version)}`);
2698
+ }
2699
+ }
2700
+ /**
2701
+ * Turns an overlay into an equivalent Overlay 1.1 document for tools that do
2702
+ * not read 1.2: every reusable action reference becomes a plain action, and
2703
+ * `$self` and `components` are dropped. A reference that does not resolve is
2704
+ * left out and reported as `overlay-ref-unresolved`.
2705
+ */
2706
+ function expandReusableActions(overlay) {
2707
+ const reporter = {
2708
+ prefix: "",
2709
+ diagnostics: []
2710
+ };
2711
+ const actions = [];
2712
+ const entries = overlay.actions;
2713
+ for (const [index, entry] of entries.entries()) {
2714
+ if (!isObject(entry)) continue;
2715
+ const action = "$ref" in entry ? resolveReference(overlay, entry, `/actions/${index}`, reporter) : entry;
2716
+ if (action && isAction(action)) actions.push(action);
2717
+ }
2718
+ const extensions = Object.fromEntries(Object.entries(overlay).filter(([key]) => key.startsWith("x-")));
2719
+ return {
2720
+ overlay: {
2721
+ overlay: "1.1.0",
2722
+ info: overlay.info,
2723
+ ...overlay.extends === void 0 ? {} : { extends: overlay.extends },
2724
+ actions,
2725
+ ...extensions
2726
+ },
2727
+ diagnostics: reporter.diagnostics
2728
+ };
2729
+ }
2730
+ //#endregion
2731
+ //#region src/overlay/diff.ts
2732
+ const kindOf = (value) => Array.isArray(value) ? "array" : isObject(value) ? "object" : "primitive";
2733
+ function equal(a, b) {
2734
+ if (a === b) return true;
2735
+ if (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every((item, i) => equal(item, b[i]));
2736
+ if (isObject(a) && isObject(b)) {
2737
+ const keys = Object.keys(a);
2738
+ return keys.length === Object.keys(b).length && keys.every((key) => Object.hasOwn(b, key) && equal(a[key], b[key]));
2739
+ }
2740
+ return false;
2741
+ }
2742
+ /**
2743
+ * Appends the actions that turn the array `a` into `b`, or returns `false` when
2744
+ * the change needs the array replaced as a whole.
2745
+ */
2746
+ function diffArray(path, a, b, ctx) {
2747
+ if (b.length >= a.length && a.every((item, i) => equal(item, b[i]))) {
2748
+ if (b.length > a.length) ctx.actions.push({
2749
+ target: formatPath(path),
2750
+ update: b.slice(a.length)
2751
+ });
2752
+ return true;
2753
+ }
2754
+ if (a.length !== b.length) return false;
2755
+ const pending = [];
2756
+ for (const [i, item] of a.entries()) {
2757
+ const next = b[i];
2758
+ if (equal(item, next)) continue;
2759
+ if (!isObject(item) || !isObject(next)) return false;
2760
+ diffObject([...path, i], item, next, {
2761
+ ...ctx,
2762
+ actions: pending
2763
+ });
2764
+ }
2765
+ ctx.actions.push(...pending);
2766
+ return true;
2767
+ }
2768
+ function diffObject(path, a, b, ctx) {
2769
+ const removals = [];
2770
+ const added = {};
2771
+ const nested = [];
2772
+ const replace = (key, value) => {
2773
+ removals.push({
2774
+ target: formatPath([...path, key]),
2775
+ remove: true
2776
+ });
2777
+ added[key] = value;
2778
+ };
2779
+ for (const key of Object.keys(a)) if (!Object.hasOwn(b, key)) removals.push({
2780
+ target: formatPath([...path, key]),
2781
+ remove: true
2782
+ });
2783
+ for (const [key, next] of Object.entries(b)) {
2784
+ if (!Object.hasOwn(a, key)) {
2785
+ added[key] = next;
2786
+ continue;
2787
+ }
2788
+ const current = a[key];
2789
+ if (equal(current, next)) continue;
2790
+ if (kindOf(current) !== kindOf(next)) replace(key, next);
2791
+ else if (isObject(current) && isObject(next)) diffObject([...path, key], current, next, {
2792
+ ...ctx,
2793
+ actions: nested
2794
+ });
2795
+ else if (Array.isArray(current) && Array.isArray(next)) {
2796
+ if (!diffArray([...path, key], current, next, {
2797
+ ...ctx,
2798
+ actions: nested
2799
+ })) replace(key, next);
2800
+ } else if (ctx.replacePrimitives) nested.push({
2801
+ target: formatPath([...path, key]),
2802
+ update: next
2803
+ });
2804
+ else replace(key, next);
2805
+ }
2806
+ ctx.actions.push(...removals);
2807
+ if (Object.keys(added).length > 0) ctx.actions.push({
2808
+ target: formatPath(path),
2809
+ update: added
2810
+ });
2811
+ ctx.actions.push(...nested);
2812
+ }
2813
+ /**
2814
+ * Writes the Overlay that turns `base` into `enriched`, so other tools can
2815
+ * reproduce what hooks and transforms changed. Targets use stable keys
2816
+ * (`$.paths['/customers'].get`); array indexes appear only inside arrays of the
2817
+ * same length.
2818
+ *
2819
+ * A deleted key becomes a `remove` action; added keys become one `update` on
2820
+ * their parent; a changed primitive becomes an `update` on it (1.1 and later)
2821
+ * or a `remove` and re-add (1.0). An array that only grew gets its new items
2822
+ * appended; any other array change replaces the array. Applying the result to
2823
+ * `base` gives a document equal to `enriched`, though replaced keys move to the
2824
+ * end of their object.
2825
+ *
2826
+ * Throws a `TypeError` when the roots are not both objects, or when the two
2827
+ * documents are equal (an overlay needs at least one action).
2828
+ */
2829
+ function overlayFromDiff(base, enriched, options = {}) {
2830
+ if (!isObject(base) || !isObject(enriched)) throw new TypeError("overlayFromDiff: both documents must be objects");
2831
+ const version = options.version ?? "1.1.0";
2832
+ const actions = [];
2833
+ diffObject([], base, enriched, {
2834
+ replacePrimitives: version !== "1.0.0",
2835
+ actions
2836
+ });
2837
+ if (actions.length === 0) throw new TypeError("overlayFromDiff: the documents are equal, so there is nothing to write");
2838
+ return {
2839
+ overlay: version,
2840
+ info: options.info ?? {
2841
+ title: "better-supabase changes",
2842
+ version: "1.0.0"
2843
+ },
2844
+ ...options.extends === void 0 ? {} : { extends: options.extends },
2845
+ actions
2846
+ };
2847
+ }
2848
+ //#endregion
2849
+ //#region src/overlay/load.ts
2850
+ const isEngine = (value) => typeof value === "object" && value !== null && "paths" in value && typeof value.paths === "function";
2851
+ /**
2852
+ * Imports `jsonpath-rfc9535` on first use. The specifier is a variable so
2853
+ * bundlers leave the optional peer out of apps that pass their own engine.
2854
+ */
2855
+ const importEngine = () => importOptionalPeer("jsonpath-rfc9535");
2856
+ async function load(importer) {
2857
+ const module = await importer();
2858
+ if (!isEngine(module)) throw new TypeError("Overlays need an RFC 9535 JSONPath engine: pnpm add jsonpath-rfc9535, or pass your own { paths(document, expression) }");
2859
+ return module;
2860
+ }
2861
+ const cachedEngine = memoized(() => load(importEngine));
2862
+ /**
2863
+ * Loads the optional `jsonpath-rfc9535` peer, an RFC 9535 implementation that
2864
+ * passes the JSONPath Compliance Test Suite, for `applyOverlay`. Rejects with
2865
+ * an install message when the package is missing. The engine is loaded once per
2866
+ * module; `importer` replaces the import in tests.
2867
+ */
2868
+ function loadJsonPath(importer) {
2869
+ if (importer) return load(importer);
2870
+ return cachedEngine();
2871
+ }
2872
+ //#endregion
2873
+ export { ASYNCAPI_FILE_NAME, CLOUD_EVENT_TRAIT, DEFAULT_ERRORS, OPENAPI_33_PREVIEW_VERSION, PROBLEM_SCHEMA, SPEC_UIS, SPEC_UI_PACKAGES, applyOverlay, applyOverlays, arazzoFormat, asyncapiFormat, authWorkflow, buildApiModel, createArazzo, createArazzoFormat, createAsyncApi, createOpenApi, createThenGetWorkflows, defineApi, defineDocumentFormat, defineOverlay, defineWorkflow, expandReusableActions, functionRoute, loadJsonPath, mergeJson, openapiFormat, overlayFromDiff, paginationWorkflows, pointerToken, scalarPreset, serializeDocument, specReference, specReferenceCsp, specReferenceHtml, specResponse, toOpenApi30Schema, topicsFrom };