better-supabase 0.14.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 (1640) hide show
  1. package/README.md +67 -377
  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 +2 -2
  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/files/index.d.ts +2 -2
  21. package/dist/ai-sdk/files/index.js +5 -5
  22. package/dist/ai-sdk/index.d.ts +10 -10
  23. package/dist/ai-sdk/index.js +3 -3
  24. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  25. package/dist/ai-sdk/mcp/index.js +6 -6
  26. package/dist/ai-sdk/memory/index.d.ts +3 -3
  27. package/dist/ai-sdk/memory/index.js +1 -1
  28. package/dist/ai-sdk/workflow/index.d.ts +4 -4
  29. package/dist/ai-sdk/workflow/index.js +7 -7
  30. package/dist/api-DxAPqMrE.d.ts +495 -0
  31. package/dist/api-keys-D5k63K6y.d.ts +213 -0
  32. package/dist/app-tables-CF2DD-Mu.d.ts +28 -0
  33. package/dist/app-tables-D29Rahtg.js +16350 -0
  34. package/dist/approvals-Crutd4-o.d.ts +129 -0
  35. package/dist/assistant-CD_h8Vxx.d.ts +157 -0
  36. package/dist/astro/index.d.ts +12 -12
  37. package/dist/astro/index.js +8 -8
  38. package/dist/attachments-aJYgdYtB.js +369 -0
  39. package/dist/attributes-Bzf51_nc.js +47 -0
  40. package/dist/auth-reply-tlXB2FQ9.js +31 -0
  41. package/dist/authorization-HZdJCaVm.d.ts +3595 -0
  42. package/dist/authorization-hooks-Cs1vP_ej.d.ts +217 -0
  43. package/dist/authorizer-B6X09otb.d.ts +118 -0
  44. package/dist/authorizer-BGhXaDmo.js +172 -0
  45. package/dist/automation-D41DXyvT.js +75 -0
  46. package/dist/automations-BYsz43AG.js +314 -0
  47. package/dist/automations-Bc2ue55V.js +26 -0
  48. package/dist/automations-CD1XlL2W.js +33 -0
  49. package/dist/automations-CIwRq7zm.js +30 -0
  50. package/dist/availability-vguUvEK2.d.ts +226 -0
  51. package/dist/better-result/index.d.ts +20 -30
  52. package/dist/better-result/index.js +2 -2
  53. package/dist/bind-CrMBwrPN.d.ts +104 -0
  54. package/dist/block-authors-BDV3y1SP.js +14 -0
  55. package/dist/block-env-B_uEM2xz.d.ts +32 -0
  56. package/dist/block-fields-BE7pInWZ.d.ts +58 -0
  57. package/dist/block-fields-DE_FgpOU.js +139 -0
  58. package/dist/block-helpers-CRpAHrp_.d.ts +62 -0
  59. package/dist/block-helpers-CtBdjgO4.js +353 -0
  60. package/dist/block-hooks-BfxX3682.js +130 -0
  61. package/dist/block-hooks-DZN2w69m.d.ts +117 -0
  62. package/dist/block-method-C9hWdHom.js +21 -0
  63. package/dist/block-method-CiVa2G-J.d.ts +14 -0
  64. package/dist/block-subjects-BhDKK_j7.js +55 -0
  65. package/dist/block-subjects-CphkQPxp.d.ts +6 -0
  66. package/dist/block-tenant-DHp7subc.js +14 -0
  67. package/dist/block-transport-DWZSJrwN.d.ts +69 -0
  68. package/dist/blocks/access-requests/index.d.ts +8 -8
  69. package/dist/blocks/access-requests/index.js +6 -6
  70. package/dist/blocks/activities/index.d.ts +215 -0
  71. package/dist/blocks/activities/index.js +414 -0
  72. package/dist/blocks/agents/index.d.ts +4 -4
  73. package/dist/blocks/agents/index.js +5 -5
  74. package/dist/blocks/ai-cache/index.d.ts +3 -3
  75. package/dist/blocks/ai-cache/index.js +3 -3
  76. package/dist/blocks/ai-chat/index.d.ts +119 -6
  77. package/dist/blocks/ai-chat/index.js +1067 -5
  78. package/dist/blocks/ai-files/index.d.ts +5 -5
  79. package/dist/blocks/ai-files/index.js +3 -3
  80. package/dist/blocks/ai-keys/index.d.ts +22 -0
  81. package/dist/blocks/ai-keys/index.js +236 -0
  82. package/dist/blocks/ai-schedules/index.d.ts +10 -0
  83. package/dist/blocks/ai-schedules/index.js +258 -0
  84. package/dist/blocks/announcements/index.d.ts +134 -5
  85. package/dist/blocks/announcements/index.js +179 -4
  86. package/dist/blocks/api-keys/index.d.ts +69 -8
  87. package/dist/blocks/api-keys/index.js +417 -7
  88. package/dist/blocks/approvals/index.d.ts +4 -4
  89. package/dist/blocks/approvals/index.js +10 -10
  90. package/dist/blocks/assets/index.d.ts +11 -13
  91. package/dist/blocks/assets/index.js +10 -10
  92. package/dist/blocks/assignment/index.d.ts +8 -8
  93. package/dist/blocks/assignment/index.js +5 -5
  94. package/dist/blocks/attachments/index.d.ts +97 -12
  95. package/dist/blocks/attachments/index.js +279 -47
  96. package/dist/blocks/audit/index.d.ts +476 -7
  97. package/dist/blocks/audit/index.js +863 -6
  98. package/dist/blocks/automations/index.d.ts +524 -0
  99. package/dist/blocks/automations/index.js +553 -0
  100. package/dist/blocks/billable-time/index.d.ts +22 -24
  101. package/dist/blocks/billable-time/index.js +13 -13
  102. package/dist/blocks/billing/index.d.ts +82 -11
  103. package/dist/blocks/billing/index.js +93 -9
  104. package/dist/blocks/bookings/index.d.ts +49 -7
  105. package/dist/blocks/bookings/index.js +419 -4
  106. package/dist/blocks/bulk/index.d.ts +6 -6
  107. package/dist/blocks/bulk/index.js +4 -4
  108. package/dist/blocks/calendar/index.d.ts +180 -7
  109. package/dist/blocks/calendar/index.js +1073 -5
  110. package/dist/blocks/catalog/index.d.ts +128 -13
  111. package/dist/blocks/catalog/index.js +149 -13
  112. package/dist/blocks/channels/index.d.ts +15 -13
  113. package/dist/blocks/channels/index.js +12 -13
  114. package/dist/blocks/collections/index.d.ts +16 -16
  115. package/dist/blocks/collections/index.js +8 -8
  116. package/dist/blocks/comments/index.d.ts +231 -14
  117. package/dist/blocks/comments/index.js +260 -13
  118. package/dist/blocks/compliance/index.d.ts +325 -0
  119. package/dist/blocks/compliance/index.js +410 -0
  120. package/dist/blocks/connectors/index.d.ts +4 -4
  121. package/dist/blocks/connectors/index.js +8 -8
  122. package/dist/blocks/contacts/index.d.ts +182 -0
  123. package/dist/blocks/contacts/index.js +358 -0
  124. package/dist/blocks/content/index.d.ts +188 -0
  125. package/dist/blocks/content/index.js +219 -0
  126. package/dist/blocks/contracts/index.d.ts +16 -18
  127. package/dist/blocks/contracts/index.js +24 -24
  128. package/dist/blocks/courses/index.d.ts +17 -17
  129. package/dist/blocks/courses/index.js +13 -13
  130. package/dist/blocks/created-by/index.d.ts +27 -0
  131. package/dist/blocks/created-by/index.js +14 -0
  132. package/dist/blocks/custom-fields/index.d.ts +11 -11
  133. package/dist/blocks/custom-fields/index.js +7 -7
  134. package/dist/blocks/data-lifecycle/index.d.ts +9 -9
  135. package/dist/blocks/data-lifecycle/index.js +7 -7
  136. package/dist/blocks/deals/index.d.ts +10 -10
  137. package/dist/blocks/deals/index.js +11 -11
  138. package/dist/blocks/dispatch/index.d.ts +20 -22
  139. package/dist/blocks/dispatch/index.js +17 -17
  140. package/dist/blocks/documents/index.d.ts +4 -4
  141. package/dist/blocks/documents/index.js +4 -4
  142. package/dist/blocks/domains/index.d.ts +7 -7
  143. package/dist/blocks/domains/index.js +6 -6
  144. package/dist/blocks/donations/index.d.ts +27 -29
  145. package/dist/blocks/donations/index.js +36 -28
  146. package/dist/blocks/drive/index.d.ts +10 -10
  147. package/dist/blocks/drive/index.js +8 -8
  148. package/dist/blocks/employees/index.d.ts +204 -7
  149. package/dist/blocks/employees/index.js +36 -10
  150. package/dist/blocks/enrichment/index.d.ts +7 -7
  151. package/dist/blocks/enrichment/index.js +14 -6
  152. package/dist/blocks/enrollments/index.d.ts +14 -16
  153. package/dist/blocks/enrollments/index.js +10 -10
  154. package/dist/blocks/entitlements/index.d.ts +48 -8
  155. package/dist/blocks/entitlements/index.js +62 -4
  156. package/dist/blocks/expenses/index.d.ts +8 -8
  157. package/dist/blocks/expenses/index.js +11 -11
  158. package/dist/blocks/field-history/index.d.ts +5 -5
  159. package/dist/blocks/field-history/index.js +3 -5
  160. package/dist/blocks/flags/index.d.ts +17 -13
  161. package/dist/blocks/flags/index.js +7 -7
  162. package/dist/blocks/forecasts/index.d.ts +7 -7
  163. package/dist/blocks/forecasts/index.js +7 -7
  164. package/dist/blocks/forms/index.d.ts +144 -12
  165. package/dist/blocks/forms/index.js +385 -7
  166. package/dist/blocks/goals/index.d.ts +82 -0
  167. package/dist/blocks/goals/index.js +72 -0
  168. package/dist/blocks/guests/index.d.ts +19 -21
  169. package/dist/blocks/guests/index.js +12 -12
  170. package/dist/blocks/hiring/index.d.ts +20 -10
  171. package/dist/blocks/hiring/index.js +10 -9
  172. package/dist/blocks/identities/index.d.ts +7 -7
  173. package/dist/blocks/identities/index.js +4 -4
  174. package/dist/blocks/imports/index.d.ts +8 -8
  175. package/dist/blocks/imports/index.js +6 -6
  176. package/dist/blocks/inbox/index.d.ts +137 -8
  177. package/dist/blocks/inbox/index.js +290 -56
  178. package/dist/blocks/incidents/index.d.ts +8 -8
  179. package/dist/blocks/incidents/index.js +7 -7
  180. package/dist/blocks/index.d.ts +37 -18
  181. package/dist/blocks/index.js +40 -19
  182. package/dist/blocks/inventory/index.d.ts +10 -10
  183. package/dist/blocks/inventory/index.js +6 -6
  184. package/dist/blocks/invoices/index.d.ts +11 -11
  185. package/dist/blocks/invoices/index.js +8 -8
  186. package/dist/blocks/knowledge/index.d.ts +3 -3
  187. package/dist/blocks/knowledge/index.js +4 -4
  188. package/dist/blocks/lead-scoring/index.d.ts +11 -11
  189. package/dist/blocks/lead-scoring/index.js +7 -7
  190. package/dist/blocks/leases/index.d.ts +16 -73
  191. package/dist/blocks/leases/index.js +29 -104
  192. package/dist/blocks/leave/index.d.ts +8 -8
  193. package/dist/blocks/leave/index.js +5 -5
  194. package/dist/blocks/ledger/index.d.ts +11 -13
  195. package/dist/blocks/ledger/index.js +10 -10
  196. package/dist/blocks/mail-sync/index.d.ts +6 -6
  197. package/dist/blocks/mail-sync/index.js +18 -10
  198. package/dist/blocks/memberships/index.d.ts +67 -0
  199. package/dist/blocks/memberships/index.js +14 -0
  200. package/dist/blocks/memory/index.d.ts +4 -4
  201. package/dist/blocks/memory/index.js +8 -8
  202. package/dist/blocks/messaging/index.d.ts +113 -13
  203. package/dist/blocks/messaging/index.js +579 -8
  204. package/dist/blocks/metrics/index.d.ts +7 -7
  205. package/dist/blocks/metrics/index.js +6 -6
  206. package/dist/blocks/mfa/index.d.ts +145 -3
  207. package/dist/blocks/mfa/index.js +211 -2
  208. package/dist/blocks/moderation/index.d.ts +13 -15
  209. package/dist/blocks/moderation/index.js +10 -10
  210. package/dist/blocks/notifications/index.d.ts +67 -15
  211. package/dist/blocks/notifications/index.js +62 -13
  212. package/dist/blocks/numbering/index.d.ts +45 -0
  213. package/dist/blocks/numbering/index.js +49 -0
  214. package/dist/blocks/oauth-server/index.d.ts +6 -6
  215. package/dist/blocks/oauth-server/index.js +6 -6
  216. package/dist/blocks/onboarding/index.d.ts +112 -4
  217. package/dist/blocks/onboarding/index.js +107 -4
  218. package/dist/blocks/orders/index.d.ts +35 -14
  219. package/dist/blocks/orders/index.js +49 -12
  220. package/dist/blocks/organizations/index.d.ts +452 -6
  221. package/dist/blocks/organizations/index.js +689 -5
  222. package/dist/blocks/outbox/index.d.ts +4 -4
  223. package/dist/blocks/outbox/index.js +19 -6
  224. package/dist/blocks/passes/index.d.ts +19 -21
  225. package/dist/blocks/passes/index.js +17 -17
  226. package/dist/blocks/permissions/index.d.ts +92 -0
  227. package/dist/blocks/permissions/index.js +127 -0
  228. package/dist/blocks/pipelines/index.d.ts +15 -15
  229. package/dist/blocks/pipelines/index.js +12 -12
  230. package/dist/blocks/posts/index.d.ts +9 -9
  231. package/dist/blocks/posts/index.js +8 -8
  232. package/dist/blocks/profiles/index.d.ts +7 -7
  233. package/dist/blocks/profiles/index.js +5 -5
  234. package/dist/blocks/promotions/index.d.ts +9 -9
  235. package/dist/blocks/promotions/index.js +7 -7
  236. package/dist/blocks/push/index.d.ts +9 -9
  237. package/dist/blocks/push/index.js +4 -4
  238. package/dist/blocks/queue/index.d.ts +562 -0
  239. package/dist/blocks/queue/index.js +1407 -0
  240. package/dist/blocks/quotes/index.d.ts +29 -14
  241. package/dist/blocks/quotes/index.js +14 -13
  242. package/dist/blocks/rank/index.d.ts +7 -7
  243. package/dist/blocks/rank/index.js +4 -4
  244. package/dist/blocks/reactions/index.d.ts +154 -5
  245. package/dist/blocks/reactions/index.js +168 -4
  246. package/dist/blocks/relations/index.d.ts +36 -38
  247. package/dist/blocks/relations/index.js +18 -18
  248. package/dist/blocks/reminders/index.d.ts +16 -16
  249. package/dist/blocks/reminders/index.js +14 -14
  250. package/dist/blocks/reviews/index.d.ts +8 -8
  251. package/dist/blocks/reviews/index.js +6 -6
  252. package/dist/blocks/saved-views/index.d.ts +311 -4
  253. package/dist/blocks/saved-views/index.js +437 -2
  254. package/dist/blocks/scores/index.d.ts +8 -10
  255. package/dist/blocks/scores/index.js +10 -10
  256. package/dist/blocks/search/index.d.ts +168 -5
  257. package/dist/blocks/search/index.js +277 -5
  258. package/dist/blocks/security-events/index.d.ts +440 -0
  259. package/dist/blocks/security-events/index.js +885 -0
  260. package/dist/blocks/segments/index.d.ts +13 -13
  261. package/dist/blocks/segments/index.js +7 -7
  262. package/dist/blocks/sequences/index.d.ts +13 -13
  263. package/dist/blocks/sequences/index.js +16 -10
  264. package/dist/blocks/service-accounts/index.d.ts +132 -0
  265. package/dist/blocks/service-accounts/index.js +109 -0
  266. package/dist/blocks/sessions/index.d.ts +138 -3
  267. package/dist/blocks/sessions/index.js +173 -2
  268. package/dist/blocks/settings/index.d.ts +181 -5
  269. package/dist/blocks/settings/index.js +226 -4
  270. package/dist/blocks/share-links/index.d.ts +20 -22
  271. package/dist/blocks/share-links/index.js +16 -16
  272. package/dist/blocks/shipments/index.d.ts +23 -25
  273. package/dist/blocks/shipments/index.js +30 -22
  274. package/dist/blocks/signatures/index.d.ts +9 -9
  275. package/dist/blocks/signatures/index.js +5 -5
  276. package/dist/blocks/signing-keys/index.d.ts +4 -4
  277. package/dist/blocks/signing-keys/index.js +3 -3
  278. package/dist/blocks/sla/index.d.ts +20 -22
  279. package/dist/blocks/sla/index.js +22 -16
  280. package/dist/blocks/sso/index.d.ts +7 -7
  281. package/dist/blocks/sso/index.js +4 -4
  282. package/dist/blocks/state-machine/index.d.ts +14 -14
  283. package/dist/blocks/state-machine/index.js +4 -4
  284. package/dist/blocks/subjects/index.d.ts +41 -7
  285. package/dist/blocks/subjects/index.js +187 -5
  286. package/dist/blocks/tags/index.d.ts +146 -13
  287. package/dist/blocks/tags/index.js +229 -14
  288. package/dist/blocks/tasks/index.d.ts +346 -0
  289. package/dist/blocks/tasks/index.js +626 -0
  290. package/dist/blocks/teams/index.d.ts +7 -7
  291. package/dist/blocks/teams/index.js +4 -4
  292. package/dist/blocks/templates/index.d.ts +18 -18
  293. package/dist/blocks/templates/index.js +10 -10
  294. package/dist/blocks/time-tracking/index.d.ts +16 -16
  295. package/dist/blocks/time-tracking/index.js +13 -13
  296. package/dist/blocks/timeline/index.d.ts +116 -0
  297. package/dist/blocks/timeline/index.js +164 -0
  298. package/dist/blocks/trash/index.d.ts +47 -9
  299. package/dist/blocks/trash/index.js +9 -7
  300. package/dist/blocks/undo/index.d.ts +48 -5
  301. package/dist/blocks/undo/index.js +60 -4
  302. package/dist/blocks/updated-at/index.d.ts +20 -0
  303. package/dist/blocks/updated-at/index.js +14 -0
  304. package/dist/blocks/usage/index.d.ts +39 -5
  305. package/dist/blocks/usage/index.js +301 -4
  306. package/dist/blocks/vercel-marketplace/index.d.ts +7 -7
  307. package/dist/blocks/vercel-marketplace/index.js +8 -8
  308. package/dist/blocks/versions/index.d.ts +20 -22
  309. package/dist/blocks/versions/index.js +16 -16
  310. package/dist/blocks/waitlist/index.d.ts +9 -9
  311. package/dist/blocks/waitlist/index.js +5 -5
  312. package/dist/blocks/webhooks/index.d.ts +21 -21
  313. package/dist/blocks/webhooks/index.js +16 -16
  314. package/dist/blocks/workflow-editor/index.d.ts +99 -0
  315. package/dist/blocks/workflow-editor/index.js +733 -0
  316. package/dist/blocks/workflows/index.d.ts +72 -6
  317. package/dist/blocks/workflows/index.js +379 -4
  318. package/dist/bookings-D4dvGXiR.d.ts +290 -0
  319. package/dist/bucket-CiNi8sIw.d.ts +666 -0
  320. package/dist/build-BFC8nFiL.js +797 -0
  321. package/dist/build-QitPVzzO.js +2073 -0
  322. package/dist/carrier-KzeYXVrW.d.ts +169 -0
  323. package/dist/chat-sdk/index.d.ts +8 -8
  324. package/dist/chat-sdk/index.js +3 -3
  325. package/dist/claims-DTy6R6my.js +63 -0
  326. package/dist/cli/add-BgsUjCan.js +1252 -0
  327. package/dist/cli/add-DCI5JKjA.js +99 -0
  328. package/dist/cli/add-DWjlVwvP.js +1 -0
  329. package/dist/cli/args-UEwg0l-N.js +27 -0
  330. package/dist/cli/backfill-nxPbcsns.js +293 -0
  331. package/dist/cli/bin.js +1 -1
  332. package/dist/cli/blocks-BZHI8mRC.js +156 -0
  333. package/dist/cli/blocks-Cr4HGePW.js +1 -0
  334. package/dist/cli/cache-CXgR_Ahi.js +607 -0
  335. package/dist/cli/codemod-DSN7iAdg.js +2343 -0
  336. package/dist/cli/codemod-block-renames-BuSaTE_G.js +239 -0
  337. package/dist/cli/command-CQ61x6gN.js +941 -0
  338. package/dist/cli/completion-2Y3D_eNu.js +211 -0
  339. package/dist/cli/completion-BwI0_Ap5.js +30 -0
  340. package/dist/cli/completion-Dlu5AdUW.js +1 -0
  341. package/dist/cli/config-9t5ec_N7.js +1642 -0
  342. package/dist/cli/config-CBqkQjjN.js +1 -0
  343. package/dist/cli/config-CPux9Wa7.js +47 -0
  344. package/dist/cli/config-edit-CrWfk8s3.js +621 -0
  345. package/dist/cli/config-group-C8tjut39.js +391 -0
  346. package/dist/cli/content-mapper-DNs7lTu7.js +182 -0
  347. package/dist/cli/db-DrBI_HNv.js +223 -0
  348. package/dist/cli/detect-D9JaAX20.js +84 -0
  349. package/dist/cli/dist-D_VbPAMR.js +129 -0
  350. package/dist/cli/doctor-DDrEM6S1.js +4561 -0
  351. package/dist/cli/env-BBl5L8Bf.js +143 -0
  352. package/dist/cli/env-CAU1nknN.js +1 -0
  353. package/dist/cli/files-CX71yBm8.js +1010 -0
  354. package/dist/cli/gen-MtijJQ9r.js +387 -0
  355. package/dist/cli/in-stack-diff-DQTW53Vf.js +257 -0
  356. package/dist/cli/index.d.ts +43 -8
  357. package/dist/cli/index.js +8 -8
  358. package/dist/cli/init-D-aDv9r5.js +440 -0
  359. package/dist/cli/keys-DGEpMbeB.js +106 -0
  360. package/dist/cli/live-iEeH15ck.js +341 -0
  361. package/dist/cli/mcp-BAPyaQ62.js +249 -0
  362. package/dist/cli/metadata-DVx9Zgbj.js +150 -0
  363. package/dist/cli/migration-safety-D7PhzFxm.js +928 -0
  364. package/dist/cli/module-migration-aPCckev6.js +734 -0
  365. package/dist/cli/moved-CsfDQcyk.js +254 -0
  366. package/dist/cli/orphans-BAboqyVM.js +28 -0
  367. package/dist/cli/parse-B9Iv_-Pf.js +182 -0
  368. package/dist/cli/preset-BwmIfFnh.js +101 -0
  369. package/dist/cli/print-BeWO7OJY.js +67 -0
  370. package/dist/cli/remove-B46Dmd2M.js +238 -0
  371. package/dist/cli/render-ucJmUyuM.js +2170 -0
  372. package/dist/cli/run-BXx6D1aR.js +63 -0
  373. package/dist/cli/run-CvYVAztY.js +1427 -0
  374. package/dist/cli/run-DYhLBcFW.js +702 -0
  375. package/dist/cli/seed-Cz8PcXeT.js +188 -0
  376. package/dist/cli/seed-D6XijwbR.js +1 -0
  377. package/dist/cli/shared-LZroULBe.js +151 -0
  378. package/dist/cli/skills-toUan_OV.js +121 -0
  379. package/dist/cli/snapshot-C8MVPyO8.js +729 -0
  380. package/dist/cli/source-DANaJJVc.js +320 -0
  381. package/dist/cli/source-args-IpJRJO5t.js +59 -0
  382. package/dist/cli/spec-DGVNMSSB.js +7530 -0
  383. package/dist/cli/spec-g8_G5K7o.js +1 -0
  384. package/dist/cli/stack-CWEHdO0b.js +135 -0
  385. package/dist/cli/sync-btj01bcM.js +319 -0
  386. package/dist/cli/upgrade-B596d4t8.js +403 -0
  387. package/dist/cli/upgrade-Dw3TMQzn.js +41 -0
  388. package/dist/cli/version-Du4CgONY.js +4 -0
  389. package/dist/client/index.d.ts +8 -7
  390. package/dist/client/index.js +9 -7
  391. package/dist/client/native/index.d.ts +6 -6
  392. package/dist/client/native/index.js +3 -3
  393. package/dist/client-BAEbEA7t.js +287 -0
  394. package/dist/cloud-event-CzZTJkXv.d.ts +64 -0
  395. package/dist/codecs-CMWlhHZ0.d.ts +222 -0
  396. package/dist/codecs-TylXqU_I.js +358 -0
  397. package/dist/commerce/index.d.ts +3 -3
  398. package/dist/commerce/index.js +6 -6
  399. package/dist/compiler-D3UmE7ao.d.ts +14 -0
  400. package/dist/compose-DKW0Tr3e.js +53 -0
  401. package/dist/composite-BARuBEDE.js +130 -0
  402. package/dist/composite-Dsxj7T5K.d.ts +82 -0
  403. package/dist/config/index.d.ts +6 -7
  404. package/dist/config/index.js +6 -6
  405. package/dist/config-CcehOvbz.js +1698 -0
  406. package/dist/config-DWGgUQCh.js +1108 -0
  407. package/dist/connectors-Fud4amxp.d.ts +147 -0
  408. package/dist/context-CEuTKrkz.d.ts +4129 -0
  409. package/dist/context-DBicfUNz.js +41 -0
  410. package/dist/controller-BNZKd6bJ.js +73 -0
  411. package/dist/controller-BrP0gn47.d.ts +52 -0
  412. package/dist/conversion-BAbucuXq.d.ts +86 -0
  413. package/dist/conversion-Dq1S7xzE.js +77 -0
  414. package/dist/create/index.d.ts +19 -21
  415. package/dist/create/index.js +21 -22
  416. package/dist/create/lite/index.d.ts +2 -2
  417. package/dist/create/supabase/index.d.ts +2 -2
  418. package/dist/create/supabase/index.js +2 -2
  419. package/dist/create-blocks-Bu4H5TXw.js +352 -0
  420. package/dist/credentials/index.d.ts +5 -5
  421. package/dist/credentials/index.js +6 -6
  422. package/dist/cron-CgHTKwYG.js +148 -0
  423. package/dist/cron-route-UU9i5i9J.js +24 -0
  424. package/dist/data-engine-BWoz9lED.d.ts +273 -0
  425. package/dist/data-engine-D1BkmBoR.js +173 -0
  426. package/dist/data-hooks-tgF1Ct0F.js +280 -0
  427. package/dist/db-blocks-DJGbjIPz.js +62 -0
  428. package/dist/deal-forecast-Bv52QMyX.js +39 -0
  429. package/dist/define-DFBnQyYg.d.ts +1255 -0
  430. package/dist/define-DlUeKHce.js +2011 -0
  431. package/dist/define-block-BGqOO8B3.js +64 -0
  432. package/dist/define-block-BVcLQ3DF.d.ts +1657 -0
  433. package/dist/delegation--93jRsVO.js +146 -0
  434. package/dist/documents-Cup1rpjF.d.ts +152 -0
  435. package/dist/edge/index.d.ts +20 -20
  436. package/dist/edge/index.js +14 -14
  437. package/dist/elysia/index.d.ts +1 -1
  438. package/dist/elysia/index.js +1 -1
  439. package/dist/embeddings-kFbRvuic.d.ts +78 -0
  440. package/dist/ended-gUsMZVNg.d.ts +26 -0
  441. package/dist/entitlements-CJpYQXeE.d.ts +54 -0
  442. package/dist/entitlements-NZAE_vLj.js +45 -0
  443. package/dist/entity-naming-Dtyq5sKE.js +131 -0
  444. package/dist/entity-schema-BDv6w-OQ.js +39 -0
  445. package/dist/envelope-Bzu0JnY2.js +90 -0
  446. package/dist/errors-BVFgt8BZ.js +328 -0
  447. package/dist/errors-CyxMxzlu.js +44 -0
  448. package/dist/escape-like-PReMbEEU.d.ts +30 -0
  449. package/dist/eve/index.d.ts +5 -5
  450. package/dist/eve/index.js +3 -3
  451. package/dist/eve-BFSwTu1z.d.ts +157 -0
  452. package/dist/event-calendar-DCufbihU.d.ts +65 -0
  453. package/dist/events/index.d.ts +3 -4
  454. package/dist/events-vcqenSYU.d.ts +852 -0
  455. package/dist/executor-3qcMhg6R.js +207 -0
  456. package/dist/executor-BQ7dYw4E.js +843 -0
  457. package/dist/executor-CVIn6JHa.d.ts +174 -0
  458. package/dist/executor-D3gB-9si.js +486 -0
  459. package/dist/executor-_2ekNofh.d.ts +104 -0
  460. package/dist/executor-hGjrop3A.d.ts +37 -0
  461. package/dist/expo/index.d.ts +12 -11
  462. package/dist/expo/index.js +11 -10
  463. package/dist/extension-B-lajjex.js +58 -0
  464. package/dist/extension-B0EjCYhO.js +61 -0
  465. package/dist/extension-DeAd_MqI.js +121 -0
  466. package/dist/extension-DzCc0IOd.js +103 -0
  467. package/dist/extension-shared-Djm8mGHD.js +60 -0
  468. package/dist/field-errors-fsbFktYF.d.ts +216 -0
  469. package/dist/field-formats-CAFNkKSN.d.ts +38 -0
  470. package/dist/fields-B0zaJAO3.js +107 -0
  471. package/dist/fields-C3q2ypnO.d.ts +78 -0
  472. package/dist/filter-evaluate-CPxeae5X.d.ts +37 -0
  473. package/dist/filter-evaluate-w1XOIUOL.js +217 -0
  474. package/dist/filter-query-BXLs72G9.d.ts +133 -0
  475. package/dist/filter-query-DMoKo82_.js +566 -0
  476. package/dist/flags-BOdA_ETQ.js +279 -0
  477. package/dist/flags-C01PLMJ-.d.ts +246 -0
  478. package/dist/flags-sdk/index.d.ts +1 -1
  479. package/dist/flags-sdk/index.js +2 -2
  480. package/dist/format-u-65igKI.d.ts +79 -0
  481. package/dist/framework-BKyTeS-j.d.ts +47 -0
  482. package/dist/framework-DDdkR7FX.js +58 -0
  483. package/dist/function-contract-DxFNOmsm.d.ts +27 -0
  484. package/dist/gateway-TD1pRfTP.d.ts +115 -0
  485. package/dist/h3/index.d.ts +2 -4
  486. package/dist/h3/index.js +2 -4
  487. package/dist/h3/v1/index.d.ts +2 -3
  488. package/dist/h3/v1/index.js +2 -3
  489. package/dist/hono/index.d.ts +27 -21
  490. package/dist/hono/index.js +22 -20
  491. package/dist/http-7-UvHjQe.js +28 -0
  492. package/dist/impersonation-DM3oWNoD.js +62 -0
  493. package/dist/inbox-NDKwSk_H.d.ts +321 -0
  494. package/dist/index-B938YqY-.d.ts +188 -0
  495. package/dist/index-BUuVq1co.d.ts +158 -0
  496. package/dist/index-BnH4Gomw.d.ts +633 -0
  497. package/dist/index-BxYOB1Oc.d.ts +149 -0
  498. package/dist/index-C-qpk8EQ.d.ts +262 -0
  499. package/dist/index-CG9rA8H8.d.ts +407 -0
  500. package/dist/index-CguFm716.d.ts +518 -0
  501. package/dist/index-DLq69k3F.d.ts +588 -0
  502. package/dist/index-Do2ChN_y.d.ts +287 -0
  503. package/dist/index.d.ts +39 -17
  504. package/dist/index.js +94 -16
  505. package/dist/instances-BHjCZoF8.js +277 -0
  506. package/dist/invalidate-DMp4eqfF.d.ts +21 -0
  507. package/dist/json-schema-Ca6gYbEP.js +888 -0
  508. package/dist/jwks-cache-DEsKI0hJ.js +49 -0
  509. package/dist/kit-5l-o8RxL.js +133 -0
  510. package/dist/kit-DOwKpSkA.d.ts +94 -0
  511. package/dist/knowledge-BGbtxMP9.js +300 -0
  512. package/dist/knowledge-CtL-Vfgy.d.ts +217 -0
  513. package/dist/lint/index.d.ts +94 -11
  514. package/dist/lint/index.js +268 -26
  515. package/dist/list/index.d.ts +4 -4
  516. package/dist/list/index.js +3 -3
  517. package/dist/list-query-BDVutLFr.d.ts +222 -0
  518. package/dist/list-query-BKy2zBaT.js +559 -0
  519. package/dist/live-C21DgbsD.js +275 -0
  520. package/dist/mapper/bin.js +380 -0
  521. package/dist/mcp/index.d.ts +8 -8
  522. package/dist/mcp/index.js +11 -11
  523. package/dist/mcp/sdk/index.d.ts +10 -10
  524. package/dist/mcp/sdk/index.js +11 -11
  525. package/dist/messages-D4XWuRTj.js +492 -0
  526. package/dist/messaging-C_Pr9tGx.d.ts +297 -0
  527. package/dist/methods-B3o7BFOW.js +11 -0
  528. package/dist/mfa-oIOYTpvc.d.ts +36 -0
  529. package/dist/model-hwpvole9.d.ts +340 -0
  530. package/dist/model-messages-CKG0zwdF.js +206 -0
  531. package/dist/money-codec-BzddguAQ.js +41 -0
  532. package/dist/nestjs/index.d.ts +3 -3
  533. package/dist/nestjs/index.js +2 -2
  534. package/dist/next/index.d.ts +244 -205
  535. package/dist/next/index.js +288 -197
  536. package/dist/node/index.d.ts +2 -2
  537. package/dist/node/index.js +6 -8
  538. package/dist/operations-CSc_IsHO.d.ts +6 -0
  539. package/dist/options-0qvUckqt.js +9 -0
  540. package/dist/options-1GgseJq5.js +10 -0
  541. package/dist/options-21s0dpnX.js +9 -0
  542. package/dist/options-B-cxGmRA.js +5 -0
  543. package/dist/options-B0EJULm5.js +5 -0
  544. package/dist/options-B2swWnJW.js +9 -0
  545. package/dist/options-BMGClqoa.js +11 -0
  546. package/dist/options-BQIYfx9F.js +9 -0
  547. package/dist/options-BVg58avP.js +5 -0
  548. package/dist/options-BbnPv6p7.js +12 -0
  549. package/dist/options-BfLmA375.js +5 -0
  550. package/dist/options-BlncUmIc.js +9 -0
  551. package/dist/options-BlzSfWxC.d.ts +10 -0
  552. package/dist/options-BnZS7IK-.js +9 -0
  553. package/dist/options-Bt0bYMLl.js +24 -0
  554. package/dist/options-BvtnxHfK.js +24 -0
  555. package/dist/options-C-dQHH5-.js +8 -0
  556. package/dist/options-C3RgtOLo.js +5 -0
  557. package/dist/options-CE93HOYi.d.ts +7 -0
  558. package/dist/options-CM6-18FQ.d.ts +13 -0
  559. package/dist/options-CPK2nQER.js +5 -0
  560. package/dist/options-CRz8Ht_4.js +9 -0
  561. package/dist/options-CW9wTqOk.js +11 -0
  562. package/dist/options-Cl9Ag2Pt.js +8 -0
  563. package/dist/options-Cp0HyUEk.js +9 -0
  564. package/dist/options-Cqq2jUww.js +10 -0
  565. package/dist/options-CsGl5BLH.d.ts +52 -0
  566. package/dist/options-CtUUU71w.js +20 -0
  567. package/dist/options-CvD9vNvx.js +9 -0
  568. package/dist/options-CyAhRKKm.d.ts +14 -0
  569. package/dist/options-D0G06Zm9.js +8 -0
  570. package/dist/options-D6as77gU.d.ts +16 -0
  571. package/dist/options-DChZoVfs.d.ts +11 -0
  572. package/dist/options-DINdgVih.d.ts +9 -0
  573. package/dist/options-DPgdAXO5.js +11 -0
  574. package/dist/options-DWVYM8P0.d.ts +17 -0
  575. package/dist/options-DWbA9buW.js +9 -0
  576. package/dist/options-DXnBN2E7.js +8 -0
  577. package/dist/options-D_bBVCXg.js +5 -0
  578. package/dist/options-DcOx8_3X.d.ts +19 -0
  579. package/dist/options-DeNejBtq.js +8 -0
  580. package/dist/options-DgQo80Xh.js +5 -0
  581. package/dist/options-DplE18Ko.d.ts +12 -0
  582. package/dist/options-HLwOuF2H.js +10 -0
  583. package/dist/options-KV84gAxl.js +10 -0
  584. package/dist/options-Li1Dyu88.d.ts +10 -0
  585. package/dist/options-Q1Bzgqpr.js +5 -0
  586. package/dist/options-_F-enoBs.d.ts +26 -0
  587. package/dist/options-c5WCsky5.js +21 -0
  588. package/dist/options-nFzfgtA6.js +5 -0
  589. package/dist/options-pOVWwbAK.d.ts +10 -0
  590. package/dist/options-y_-AkVCs.d.ts +15 -0
  591. package/dist/orpc/index.d.ts +69 -71
  592. package/dist/orpc/index.js +161 -27
  593. package/dist/otel/index.d.ts +3 -3
  594. package/dist/otel/index.js +6 -6
  595. package/dist/outbox-HvGAJuBe.d.ts +199 -0
  596. package/dist/payments-BXvabJOw.js +16 -0
  597. package/dist/payments-BYcN34Fp.d.ts +114 -0
  598. package/dist/permissions-controller-BMsqIE5T.js +34 -0
  599. package/dist/plugin-AKwwe2gF.js +48 -0
  600. package/dist/pool-CrtT4dg-.d.ts +123 -0
  601. package/dist/pool-errors-JUBcGrre.js +27 -0
  602. package/dist/ports-DOhtuw3c.js +152 -0
  603. package/dist/ports-sx226JUL.d.ts +89 -0
  604. package/dist/postgres/index.d.ts +5 -5
  605. package/dist/postgres/index.js +3 -3
  606. package/dist/postgrest-executor-BFW4oWte.js +1064 -0
  607. package/dist/postgrest-z-T0l23T.d.ts +53 -0
  608. package/dist/powersync/index.d.ts +106 -7
  609. package/dist/powersync/index.js +123 -7
  610. package/dist/preset/index.d.ts +4 -4
  611. package/dist/preset/index.js +4 -4
  612. package/dist/preset-CsHnIBJF.js +875 -0
  613. package/dist/problem-Bf0cJ7tk.js +162 -0
  614. package/dist/problem-DNwN8iGz.d.ts +79 -0
  615. package/dist/provider-B6g7rBZX.js +57 -0
  616. package/dist/provider-CqwEOLCA.d.ts +112 -0
  617. package/dist/push-token-D3Vcf0Pf.d.ts +24 -0
  618. package/dist/queries-BWYYS9um.js +239 -0
  619. package/dist/query/index.d.ts +4 -4
  620. package/dist/query/index.js +114 -48
  621. package/dist/rank-result-BBJIK-k_.js +18 -0
  622. package/dist/rank-result-Bwe7igy-.d.ts +14 -0
  623. package/dist/rate-limit-BWKGlhTM.js +49 -0
  624. package/dist/rate-limit-Bztf32cl.d.ts +50 -0
  625. package/dist/rate-limit-o44SYkVY.js +327 -0
  626. package/dist/react/index.d.ts +10 -9
  627. package/dist/react/index.js +5 -5
  628. package/dist/react/native/index.d.ts +1 -1
  629. package/dist/react/native/index.js +2 -3
  630. package/dist/react/server.d.ts +47 -15
  631. package/dist/react/server.js +46 -11
  632. package/dist/react/session.d.ts +3 -3
  633. package/dist/react-BuDYI62C.js +979 -0
  634. package/dist/react-router/index.d.ts +13 -10
  635. package/dist/react-router/index.js +10 -10
  636. package/dist/read-set-BnKnofIj.js +199 -0
  637. package/dist/realtime/index.d.ts +7 -7
  638. package/dist/realtime/index.js +4 -4
  639. package/dist/record-bindings-DkBJpC5A.js +26 -0
  640. package/dist/record-form-BYs9xv_N.d.ts +82 -0
  641. package/dist/record-type-DRbnlj5q.js +221 -0
  642. package/dist/recordings-BBSJt_YV.d.ts +119 -0
  643. package/dist/records/index.d.ts +28 -28
  644. package/dist/records/index.js +22 -23
  645. package/dist/refresh-DT_ICaK-.d.ts +54 -0
  646. package/dist/refusal-ByBZcm0V.js +64 -0
  647. package/dist/refusal-CSntB_x8.d.ts +32 -0
  648. package/dist/replicas-Dyoh3CEg.js +94 -0
  649. package/dist/resolve-B0mW2m7f.js +932 -0
  650. package/dist/resolve-CXX6DHv3.d.ts +288 -0
  651. package/dist/resource-D8pzB5Qf.d.ts +123 -0
  652. package/dist/resource-DV2GC2dB.js +520 -0
  653. package/dist/resource-DvgXqZB_.js +105 -0
  654. package/dist/resource-execute-CzHuDsil.d.ts +15 -0
  655. package/dist/resource-types-DnKiH4G2.d.ts +157 -0
  656. package/dist/resources-B9cQxhjw.d.ts +7 -0
  657. package/dist/resources-C02l_YBJ.js +64 -0
  658. package/dist/respond-C3CcOZlA.js +100 -0
  659. package/dist/respond-Dn1_YhC1.d.ts +106 -0
  660. package/dist/result-DZeA5KS6.d.ts +351 -0
  661. package/dist/result-ntFBW2p2.js +146 -0
  662. package/dist/rows-BDLZStp4.js +80 -0
  663. package/dist/rows-Bm6sskji.js +39 -0
  664. package/dist/rrule-79K2c3Nr.js +290 -0
  665. package/dist/run-state-BMCD_1Lt.d.ts +13 -0
  666. package/dist/sales-lines-Bk4mbLH1.d.ts +37 -0
  667. package/dist/sales-lines-D-sf9PIB.js +43 -0
  668. package/dist/sales-shared-DXGFJP4g.js +22 -0
  669. package/dist/schemas-l2aF78zQ.js +216 -0
  670. package/dist/scores-B2BiNuVJ.d.ts +174 -0
  671. package/dist/scores-CRp3vvQU.js +177 -0
  672. package/dist/server/index.d.ts +103 -42
  673. package/dist/server/index.js +98 -30
  674. package/dist/server-types-CFtehAsr.d.ts +946 -0
  675. package/dist/session-CH0SKgIz.d.ts +99 -0
  676. package/dist/shared-C47zAh2A.js +17 -0
  677. package/dist/sign-in-BAjR49fq.d.ts +24 -0
  678. package/dist/sign-in-BsIaNx2C.js +392 -0
  679. package/dist/sign-in-DNCdrk05.js +608 -0
  680. package/dist/signatures-CNcoq392.js +145 -0
  681. package/dist/signatures-Dkx9OE8j.d.ts +43 -0
  682. package/dist/signers-BAEzvTJ0.d.ts +390 -0
  683. package/dist/signing-keys-BNDUxpQL.d.ts +119 -0
  684. package/dist/signing-keys-wGKh4vtt.js +164 -0
  685. package/dist/solid/index.d.ts +52 -18
  686. package/dist/solid/index.js +69 -11
  687. package/dist/solid-start/index.d.ts +11 -11
  688. package/dist/solid-start/index.js +8 -8
  689. package/dist/spec/index.d.ts +691 -10
  690. package/dist/spec/index.js +2487 -5
  691. package/dist/spec-DTWkHzYZ.js +124 -0
  692. package/dist/spec-pins-C1Vm8OBl.js +61 -0
  693. package/dist/spec-pins-DIx95afw.d.ts +125 -0
  694. package/dist/sql/index.d.ts +5 -5
  695. package/dist/sql/index.js +5 -5
  696. package/dist/sql-BPbbPzRJ.js +421 -0
  697. package/dist/sql-ClHIdgKS.js +126996 -0
  698. package/dist/sqlite/index.d.ts +126 -0
  699. package/dist/sqlite/index.js +197 -0
  700. package/dist/sso-B0Txid2-.d.ts +161 -0
  701. package/dist/sso-d2S4x_f9.js +217 -0
  702. package/dist/ssr/index.d.ts +5 -4
  703. package/dist/ssr/index.js +3 -3
  704. package/dist/standard-BA3mLh6w.js +25 -0
  705. package/dist/standard-DBV730sF.d.ts +7 -0
  706. package/dist/stats-BHl1-zj9.js +83 -0
  707. package/dist/storage/index.d.ts +3 -3
  708. package/dist/storage/index.js +10 -10
  709. package/dist/store-CpheI-lN.d.ts +83 -0
  710. package/dist/streams/index.d.ts +3 -3
  711. package/dist/streams/index.js +2 -2
  712. package/dist/streams/redis/index.d.ts +2 -2
  713. package/dist/streams/redis/index.js +3 -3
  714. package/dist/subject-readers-B-pQ9Mmo.js +49 -0
  715. package/dist/subject-readers-BNSzkqw_.d.ts +21 -0
  716. package/dist/subjects-BpIEN1MS.d.ts +90 -0
  717. package/dist/subjects-DvmQeF_F.d.ts +79 -0
  718. package/dist/support-view-BYOgwXsJ.d.ts +17 -0
  719. package/dist/svelte/index.d.ts +52 -15
  720. package/dist/svelte/index.js +87 -11
  721. package/dist/sveltekit/index.d.ts +13 -13
  722. package/dist/sveltekit/index.js +13 -13
  723. package/dist/table-schema-BlF6k62Q.d.ts +81 -0
  724. package/dist/table-schema-CD8cJz_M.js +293 -0
  725. package/dist/tags-BjHflcHF.d.ts +30 -0
  726. package/dist/tags-CIZTqtlY.js +39 -0
  727. package/dist/tanstack-db/index.d.ts +50 -6
  728. package/dist/tanstack-db/index.js +43 -2
  729. package/dist/tanstack-start/index.d.ts +9 -9
  730. package/dist/tanstack-start/index.js +9 -9
  731. package/dist/tax-BkCNWWMc.js +140 -0
  732. package/dist/tax-DPShHual.d.ts +170 -0
  733. package/dist/tee-V97_v1ZS.js +101 -0
  734. package/dist/template-Drgg3v2J.js +126 -0
  735. package/dist/temporal-required-Dy0GGD8E.js +20 -0
  736. package/dist/tenant-BgIiMQpo.js +27 -0
  737. package/dist/tenant-yYg0E2-n.d.ts +17 -0
  738. package/dist/testing/index.d.ts +77 -75
  739. package/dist/testing/index.js +89 -99
  740. package/dist/timeline--VU3A1e4.js +50 -0
  741. package/dist/timeline-CtG0sehj.d.ts +151 -0
  742. package/dist/timing-dypS0nxW.js +95 -0
  743. package/dist/topic-CJrQZQaa.d.ts +415 -0
  744. package/dist/topic-ikV_pLTX.js +643 -0
  745. package/dist/types-BBQLbui9.d.ts +659 -0
  746. package/dist/types-CAQBmpDx.d.ts +217 -0
  747. package/dist/types-DFdg_4yN.d.ts +912 -0
  748. package/dist/types-Dp3UCr1e.d.ts +194 -0
  749. package/dist/types-Dr9wZgNy.d.ts +251 -0
  750. package/dist/types-EO2crSX_.d.ts +177 -0
  751. package/dist/types-SFRomQF7.d.ts +624 -0
  752. package/dist/undo-B1jwnVyN.d.ts +46 -0
  753. package/dist/undo-BjCChCmH.js +44 -0
  754. package/dist/upload-claim-B1ZU8ydB.js +33 -0
  755. package/dist/usage-D7QkrwzV.d.ts +232 -0
  756. package/dist/user-change-DgWC6RRC.js +135 -0
  757. package/dist/variants-Cy--Ub-a.js +53 -0
  758. package/dist/vault-O-YlAyHb.d.ts +62 -0
  759. package/dist/vercel-connect/index.d.ts +1 -1
  760. package/dist/vercel-connect/index.js +3 -3
  761. package/dist/verify-CMou8dWZ.d.ts +146 -0
  762. package/dist/verify-ZLFUdlqE.js +130 -0
  763. package/dist/view-C8Ve14ja.js +247 -0
  764. package/dist/view-DyFdMCqg.d.ts +97 -0
  765. package/dist/vue/index.d.ts +52 -23
  766. package/dist/vue/index.js +77 -14
  767. package/dist/watch-topic-BcGfvZOE.d.ts +31 -0
  768. package/dist/wiring-CDNuQoJJ.js +13 -0
  769. package/dist/workflow-sdk/builder/index.d.ts +12 -12
  770. package/dist/workflow-sdk/builder/index.js +16 -17
  771. package/dist/workflow-sdk/index.d.ts +18 -15
  772. package/dist/workflow-sdk/index.js +2 -2
  773. package/dist/workflow-sdk/world/index.d.ts +6 -6
  774. package/dist/workflow-sdk/world/index.js +12 -12
  775. package/dist/workflow-sdk-BFHu4sci.d.ts +163 -0
  776. package/dist/workflow-sdk-BVlFEB5Q.js +242 -0
  777. package/dist/workflow-sdk-Bw6_u0ar.js +2446 -0
  778. package/dist/workflows-B0ZPAQu0.d.ts +255 -0
  779. package/dist/yjs/index.d.ts +3 -3
  780. package/dist/yjs/index.js +2 -2
  781. package/package.json +75 -623
  782. package/schemas/config-v1.json +2082 -1754
  783. package/schemas/design-v1.json +141 -5
  784. package/schemas/doctor-report-v1.json +14 -0
  785. package/skills/better-supabase/SKILL.md +70 -28
  786. package/skills/better-supabase/references/block-extensions.md +64 -0
  787. package/skills/better-supabase/references/frontend.md +29 -26
  788. package/skills/better-supabase/references/troubleshooting.md +3 -3
  789. package/skills/better-supabase/references/ui-recipes.md +267 -134
  790. package/skills/better-supabase-api/SKILL.md +49 -38
  791. package/skills/better-supabase-api/references/adapters.md +42 -39
  792. package/skills/better-supabase-api/references/ai.md +4 -4
  793. package/skills/better-supabase-api/references/expo.md +8 -8
  794. package/skills/better-supabase-api/references/powersync.md +20 -13
  795. package/skills/better-supabase-api/references/streams-credentials.md +3 -3
  796. package/skills/better-supabase-auth/SKILL.md +17 -17
  797. package/skills/better-supabase-auth/references/authorization-providers.md +8 -6
  798. package/skills/better-supabase-testing/SKILL.md +8 -8
  799. package/dist/access-sql-CPoq9F86.js +0 -207
  800. package/dist/access-z7NwWtqx.js +0 -34
  801. package/dist/actor-hNajGNEK.js +0 -150
  802. package/dist/adapter-BCFAg58A.js +0 -2190
  803. package/dist/agents-CmZlLPXC.d.ts +0 -117
  804. package/dist/ai-cache-BxlOkc_M.d.ts +0 -82
  805. package/dist/ai-cache-DQikwXhJ.js +0 -87
  806. package/dist/ai-chat-DBxEz3o1.d.ts +0 -619
  807. package/dist/ai-files-t-kHmS5H.js +0 -339
  808. package/dist/ai-tasks-BDywBUgN.d.ts +0 -166
  809. package/dist/announcements-BeOD0zbc.js +0 -128
  810. package/dist/api-CWhpq24a.d.ts +0 -174
  811. package/dist/api-DKp2Ggz_.js +0 -685
  812. package/dist/api-keys-CboAenU8.d.ts +0 -213
  813. package/dist/api-keys-DT6Fi50R.js +0 -318
  814. package/dist/app-tables-BHrzAUFJ.d.ts +0 -27
  815. package/dist/app-tables-C5aoI5rZ.js +0 -959
  816. package/dist/approvals-bMb7dsBY.d.ts +0 -129
  817. package/dist/arazzo/index.d.ts +0 -278
  818. package/dist/arazzo/index.js +0 -630
  819. package/dist/assistant-D1yev_fR.d.ts +0 -157
  820. package/dist/asyncapi/index.d.ts +0 -110
  821. package/dist/asyncapi/index.js +0 -572
  822. package/dist/attachments-Cjdgarpa.js +0 -351
  823. package/dist/attributes-BOFl922R.js +0 -44
  824. package/dist/audit-log-C3rQxeHd.js +0 -788
  825. package/dist/auth-reply-jVKoAV6R.js +0 -31
  826. package/dist/authorization-BuT26_sR.d.ts +0 -3455
  827. package/dist/authorization-hooks-dLmUO_PZ.d.ts +0 -217
  828. package/dist/authorizer-DFP3gHv8.d.ts +0 -82
  829. package/dist/authorizer-DPTeL-7h.js +0 -125
  830. package/dist/availability-q3dZoZYM.d.ts +0 -226
  831. package/dist/bind-Dz8y3T5T.d.ts +0 -95
  832. package/dist/block-authors-BRTlT0qv.js +0 -14
  833. package/dist/block-controller-DTGuBemi.js +0 -112
  834. package/dist/block-env-DJiUu1fq.js +0 -35
  835. package/dist/block-env-kFcaaJLM.d.ts +0 -10
  836. package/dist/block-env-options-2e6IQrSw.js +0 -26
  837. package/dist/block-events-records-BGVyoz57.d.ts +0 -343
  838. package/dist/block-fields-3w4MZr8U.d.ts +0 -58
  839. package/dist/block-fields-DBSJSeaO.js +0 -139
  840. package/dist/block-helpers-BaugZlJV.d.ts +0 -62
  841. package/dist/block-helpers-CiKtrb6g.js +0 -353
  842. package/dist/block-hooks-BymdcD0V.js +0 -130
  843. package/dist/block-hooks-CmjPKqQ_.d.ts +0 -117
  844. package/dist/block-method-Bvsao626.js +0 -21
  845. package/dist/block-method-hsPAGFi5.d.ts +0 -19
  846. package/dist/block-names-Dbv_2wmE.js +0 -66
  847. package/dist/block-subjects-Dzq5Xn_0.js +0 -55
  848. package/dist/block-subjects-FHwLlIHU.d.ts +0 -6
  849. package/dist/block-tenant-C1sNV8_4.js +0 -14
  850. package/dist/block-transport-d53POsem.d.ts +0 -69
  851. package/dist/blocks/access/index.d.ts +0 -9
  852. package/dist/blocks/access/index.js +0 -18
  853. package/dist/blocks/access/react/index.d.ts +0 -52
  854. package/dist/blocks/access/react/index.js +0 -73
  855. package/dist/blocks/access/react/server.d.ts +0 -11
  856. package/dist/blocks/access/react/server.js +0 -16
  857. package/dist/blocks/access/solid/index.d.ts +0 -13
  858. package/dist/blocks/access/solid/index.js +0 -14
  859. package/dist/blocks/access/svelte/index.d.ts +0 -13
  860. package/dist/blocks/access/svelte/index.js +0 -14
  861. package/dist/blocks/access/vue/index.d.ts +0 -13
  862. package/dist/blocks/access/vue/index.js +0 -14
  863. package/dist/blocks/activity/index.d.ts +0 -116
  864. package/dist/blocks/activity/index.js +0 -164
  865. package/dist/blocks/ai-chat/react/index.d.ts +0 -52
  866. package/dist/blocks/ai-chat/react/index.js +0 -95
  867. package/dist/blocks/ai-chat/react/server.d.ts +0 -25
  868. package/dist/blocks/ai-chat/react/server.js +0 -23
  869. package/dist/blocks/ai-chat/solid/index.d.ts +0 -34
  870. package/dist/blocks/ai-chat/solid/index.js +0 -41
  871. package/dist/blocks/ai-chat/svelte/index.d.ts +0 -34
  872. package/dist/blocks/ai-chat/svelte/index.js +0 -41
  873. package/dist/blocks/ai-chat/vue/index.d.ts +0 -34
  874. package/dist/blocks/ai-chat/vue/index.js +0 -41
  875. package/dist/blocks/ai-providers/index.d.ts +0 -22
  876. package/dist/blocks/ai-providers/index.js +0 -236
  877. package/dist/blocks/ai-tasks/index.d.ts +0 -10
  878. package/dist/blocks/ai-tasks/index.js +0 -252
  879. package/dist/blocks/announcements/react/index.d.ts +0 -28
  880. package/dist/blocks/announcements/react/index.js +0 -38
  881. package/dist/blocks/announcements/react/server.d.ts +0 -9
  882. package/dist/blocks/announcements/react/server.js +0 -10
  883. package/dist/blocks/announcements/solid/index.d.ts +0 -13
  884. package/dist/blocks/announcements/solid/index.js +0 -14
  885. package/dist/blocks/announcements/svelte/index.d.ts +0 -13
  886. package/dist/blocks/announcements/svelte/index.js +0 -14
  887. package/dist/blocks/announcements/vue/index.d.ts +0 -13
  888. package/dist/blocks/announcements/vue/index.js +0 -14
  889. package/dist/blocks/api-keys/react/index.d.ts +0 -32
  890. package/dist/blocks/api-keys/react/index.js +0 -43
  891. package/dist/blocks/api-keys/react/server.d.ts +0 -7
  892. package/dist/blocks/api-keys/react/server.js +0 -7
  893. package/dist/blocks/api-keys/solid/index.d.ts +0 -13
  894. package/dist/blocks/api-keys/solid/index.js +0 -14
  895. package/dist/blocks/api-keys/svelte/index.d.ts +0 -13
  896. package/dist/blocks/api-keys/svelte/index.js +0 -14
  897. package/dist/blocks/api-keys/vue/index.d.ts +0 -13
  898. package/dist/blocks/api-keys/vue/index.js +0 -14
  899. package/dist/blocks/attachments/react/index.d.ts +0 -53
  900. package/dist/blocks/attachments/react/index.js +0 -78
  901. package/dist/blocks/attachments/react/server.d.ts +0 -9
  902. package/dist/blocks/attachments/react/server.js +0 -10
  903. package/dist/blocks/attachments/solid/index.d.ts +0 -13
  904. package/dist/blocks/attachments/solid/index.js +0 -14
  905. package/dist/blocks/attachments/svelte/index.d.ts +0 -13
  906. package/dist/blocks/attachments/svelte/index.js +0 -14
  907. package/dist/blocks/attachments/vue/index.d.ts +0 -13
  908. package/dist/blocks/attachments/vue/index.js +0 -14
  909. package/dist/blocks/audit/react/index.d.ts +0 -31
  910. package/dist/blocks/audit/react/index.js +0 -46
  911. package/dist/blocks/audit/react/server.d.ts +0 -7
  912. package/dist/blocks/audit/react/server.js +0 -7
  913. package/dist/blocks/audit/solid/index.d.ts +0 -13
  914. package/dist/blocks/audit/solid/index.js +0 -14
  915. package/dist/blocks/audit/svelte/index.d.ts +0 -13
  916. package/dist/blocks/audit/svelte/index.js +0 -14
  917. package/dist/blocks/audit/vue/index.d.ts +0 -13
  918. package/dist/blocks/audit/vue/index.js +0 -14
  919. package/dist/blocks/billing/react/index.d.ts +0 -44
  920. package/dist/blocks/billing/react/index.js +0 -40
  921. package/dist/blocks/billing/react/server.d.ts +0 -10
  922. package/dist/blocks/billing/react/server.js +0 -10
  923. package/dist/blocks/billing/solid/index.d.ts +0 -15
  924. package/dist/blocks/billing/solid/index.js +0 -14
  925. package/dist/blocks/billing/svelte/index.d.ts +0 -15
  926. package/dist/blocks/billing/svelte/index.js +0 -14
  927. package/dist/blocks/billing/vue/index.d.ts +0 -15
  928. package/dist/blocks/billing/vue/index.js +0 -14
  929. package/dist/blocks/bookings/react/index.d.ts +0 -36
  930. package/dist/blocks/bookings/react/index.js +0 -63
  931. package/dist/blocks/bookings/react/server.d.ts +0 -9
  932. package/dist/blocks/bookings/react/server.js +0 -10
  933. package/dist/blocks/bookings/solid/index.d.ts +0 -13
  934. package/dist/blocks/bookings/solid/index.js +0 -14
  935. package/dist/blocks/bookings/svelte/index.d.ts +0 -13
  936. package/dist/blocks/bookings/svelte/index.js +0 -14
  937. package/dist/blocks/bookings/vue/index.d.ts +0 -13
  938. package/dist/blocks/bookings/vue/index.js +0 -14
  939. package/dist/blocks/calendar/react/index.d.ts +0 -26
  940. package/dist/blocks/calendar/react/index.js +0 -58
  941. package/dist/blocks/calendar/react/server.d.ts +0 -9
  942. package/dist/blocks/calendar/react/server.js +0 -10
  943. package/dist/blocks/calendar/solid/index.d.ts +0 -13
  944. package/dist/blocks/calendar/solid/index.js +0 -14
  945. package/dist/blocks/calendar/svelte/index.d.ts +0 -13
  946. package/dist/blocks/calendar/svelte/index.js +0 -14
  947. package/dist/blocks/calendar/vue/index.d.ts +0 -13
  948. package/dist/blocks/calendar/vue/index.js +0 -14
  949. package/dist/blocks/comments/react/index.d.ts +0 -32
  950. package/dist/blocks/comments/react/index.js +0 -56
  951. package/dist/blocks/comments/react/server.d.ts +0 -7
  952. package/dist/blocks/comments/react/server.js +0 -7
  953. package/dist/blocks/comments/solid/index.d.ts +0 -13
  954. package/dist/blocks/comments/solid/index.js +0 -14
  955. package/dist/blocks/comments/svelte/index.d.ts +0 -13
  956. package/dist/blocks/comments/svelte/index.js +0 -14
  957. package/dist/blocks/comments/vue/index.d.ts +0 -13
  958. package/dist/blocks/comments/vue/index.js +0 -14
  959. package/dist/blocks/controls/index.d.ts +0 -325
  960. package/dist/blocks/controls/index.js +0 -410
  961. package/dist/blocks/engagements/index.d.ts +0 -41
  962. package/dist/blocks/engagements/index.js +0 -414
  963. package/dist/blocks/entitlements/react/index.d.ts +0 -27
  964. package/dist/blocks/entitlements/react/index.js +0 -35
  965. package/dist/blocks/entitlements/react/server.d.ts +0 -9
  966. package/dist/blocks/entitlements/react/server.js +0 -10
  967. package/dist/blocks/entitlements/solid/index.d.ts +0 -13
  968. package/dist/blocks/entitlements/solid/index.js +0 -14
  969. package/dist/blocks/entitlements/svelte/index.d.ts +0 -13
  970. package/dist/blocks/entitlements/svelte/index.js +0 -14
  971. package/dist/blocks/entitlements/vue/index.d.ts +0 -13
  972. package/dist/blocks/entitlements/vue/index.js +0 -14
  973. package/dist/blocks/forms/react/index.d.ts +0 -19
  974. package/dist/blocks/forms/react/index.js +0 -28
  975. package/dist/blocks/forms/react/server.d.ts +0 -9
  976. package/dist/blocks/forms/react/server.js +0 -10
  977. package/dist/blocks/forms/solid/index.d.ts +0 -13
  978. package/dist/blocks/forms/solid/index.js +0 -14
  979. package/dist/blocks/forms/svelte/index.d.ts +0 -13
  980. package/dist/blocks/forms/svelte/index.js +0 -14
  981. package/dist/blocks/forms/vue/index.d.ts +0 -13
  982. package/dist/blocks/forms/vue/index.js +0 -14
  983. package/dist/blocks/inbox/react/index.d.ts +0 -3
  984. package/dist/blocks/inbox/react/index.js +0 -87
  985. package/dist/blocks/inbox/react/server.d.ts +0 -17
  986. package/dist/blocks/inbox/react/server.js +0 -18
  987. package/dist/blocks/inbox/solid/index.d.ts +0 -27
  988. package/dist/blocks/inbox/solid/index.js +0 -32
  989. package/dist/blocks/inbox/svelte/index.d.ts +0 -27
  990. package/dist/blocks/inbox/svelte/index.js +0 -32
  991. package/dist/blocks/inbox/vue/index.d.ts +0 -27
  992. package/dist/blocks/inbox/vue/index.js +0 -32
  993. package/dist/blocks/jobs/index.d.ts +0 -523
  994. package/dist/blocks/jobs/index.js +0 -1345
  995. package/dist/blocks/messaging/react/index.d.ts +0 -39
  996. package/dist/blocks/messaging/react/index.js +0 -80
  997. package/dist/blocks/messaging/react/server.d.ts +0 -12
  998. package/dist/blocks/messaging/react/server.js +0 -14
  999. package/dist/blocks/messaging/solid/index.d.ts +0 -20
  1000. package/dist/blocks/messaging/solid/index.js +0 -23
  1001. package/dist/blocks/messaging/svelte/index.d.ts +0 -20
  1002. package/dist/blocks/messaging/svelte/index.js +0 -23
  1003. package/dist/blocks/messaging/vue/index.d.ts +0 -20
  1004. package/dist/blocks/messaging/vue/index.js +0 -23
  1005. package/dist/blocks/mfa/react/index.d.ts +0 -30
  1006. package/dist/blocks/mfa/react/index.js +0 -45
  1007. package/dist/blocks/mfa/react/server.d.ts +0 -9
  1008. package/dist/blocks/mfa/react/server.js +0 -12
  1009. package/dist/blocks/mfa/solid/index.d.ts +0 -20
  1010. package/dist/blocks/mfa/solid/index.js +0 -23
  1011. package/dist/blocks/mfa/svelte/index.d.ts +0 -20
  1012. package/dist/blocks/mfa/svelte/index.js +0 -23
  1013. package/dist/blocks/mfa/vue/index.d.ts +0 -20
  1014. package/dist/blocks/mfa/vue/index.js +0 -23
  1015. package/dist/blocks/notifications/react/index.d.ts +0 -19
  1016. package/dist/blocks/notifications/react/index.js +0 -41
  1017. package/dist/blocks/notifications/react/server.d.ts +0 -10
  1018. package/dist/blocks/notifications/react/server.js +0 -10
  1019. package/dist/blocks/notifications/solid/index.d.ts +0 -13
  1020. package/dist/blocks/notifications/solid/index.js +0 -14
  1021. package/dist/blocks/notifications/svelte/index.d.ts +0 -13
  1022. package/dist/blocks/notifications/svelte/index.js +0 -14
  1023. package/dist/blocks/notifications/vue/index.d.ts +0 -13
  1024. package/dist/blocks/notifications/vue/index.js +0 -14
  1025. package/dist/blocks/number-sequences/index.d.ts +0 -48
  1026. package/dist/blocks/number-sequences/index.js +0 -52
  1027. package/dist/blocks/onboarding/react/index.d.ts +0 -24
  1028. package/dist/blocks/onboarding/react/index.js +0 -38
  1029. package/dist/blocks/onboarding/react/server.d.ts +0 -10
  1030. package/dist/blocks/onboarding/react/server.js +0 -10
  1031. package/dist/blocks/onboarding/solid/index.d.ts +0 -13
  1032. package/dist/blocks/onboarding/solid/index.js +0 -14
  1033. package/dist/blocks/onboarding/svelte/index.d.ts +0 -13
  1034. package/dist/blocks/onboarding/svelte/index.js +0 -14
  1035. package/dist/blocks/onboarding/vue/index.d.ts +0 -13
  1036. package/dist/blocks/onboarding/vue/index.js +0 -14
  1037. package/dist/blocks/organizations/react/index.d.ts +0 -127
  1038. package/dist/blocks/organizations/react/index.js +0 -113
  1039. package/dist/blocks/organizations/react/server.d.ts +0 -20
  1040. package/dist/blocks/organizations/react/server.js +0 -24
  1041. package/dist/blocks/organizations/solid/index.d.ts +0 -34
  1042. package/dist/blocks/organizations/solid/index.js +0 -32
  1043. package/dist/blocks/organizations/svelte/index.d.ts +0 -34
  1044. package/dist/blocks/organizations/svelte/index.js +0 -32
  1045. package/dist/blocks/organizations/vue/index.d.ts +0 -34
  1046. package/dist/blocks/organizations/vue/index.js +0 -32
  1047. package/dist/blocks/parties/index.d.ts +0 -182
  1048. package/dist/blocks/parties/index.js +0 -358
  1049. package/dist/blocks/reactions/react/index.d.ts +0 -32
  1050. package/dist/blocks/reactions/react/index.js +0 -57
  1051. package/dist/blocks/reactions/react/server.d.ts +0 -9
  1052. package/dist/blocks/reactions/react/server.js +0 -10
  1053. package/dist/blocks/reactions/solid/index.d.ts +0 -13
  1054. package/dist/blocks/reactions/solid/index.js +0 -14
  1055. package/dist/blocks/reactions/svelte/index.d.ts +0 -13
  1056. package/dist/blocks/reactions/svelte/index.js +0 -14
  1057. package/dist/blocks/reactions/vue/index.d.ts +0 -13
  1058. package/dist/blocks/reactions/vue/index.js +0 -14
  1059. package/dist/blocks/rules/index.d.ts +0 -175
  1060. package/dist/blocks/rules/index.js +0 -163
  1061. package/dist/blocks/rules/react/index.d.ts +0 -38
  1062. package/dist/blocks/rules/react/index.js +0 -59
  1063. package/dist/blocks/rules/react/server.d.ts +0 -6
  1064. package/dist/blocks/rules/react/server.js +0 -7
  1065. package/dist/blocks/rules/solid/index.d.ts +0 -13
  1066. package/dist/blocks/rules/solid/index.js +0 -14
  1067. package/dist/blocks/rules/svelte/index.d.ts +0 -13
  1068. package/dist/blocks/rules/svelte/index.js +0 -14
  1069. package/dist/blocks/rules/vue/index.d.ts +0 -13
  1070. package/dist/blocks/rules/vue/index.js +0 -14
  1071. package/dist/blocks/saved-views/react/index.d.ts +0 -40
  1072. package/dist/blocks/saved-views/react/index.js +0 -60
  1073. package/dist/blocks/saved-views/react/server.d.ts +0 -10
  1074. package/dist/blocks/saved-views/react/server.js +0 -10
  1075. package/dist/blocks/saved-views/solid/index.d.ts +0 -13
  1076. package/dist/blocks/saved-views/solid/index.js +0 -14
  1077. package/dist/blocks/saved-views/svelte/index.d.ts +0 -13
  1078. package/dist/blocks/saved-views/svelte/index.js +0 -14
  1079. package/dist/blocks/saved-views/vue/index.d.ts +0 -13
  1080. package/dist/blocks/saved-views/vue/index.js +0 -14
  1081. package/dist/blocks/search/react/index.d.ts +0 -39
  1082. package/dist/blocks/search/react/index.js +0 -49
  1083. package/dist/blocks/search/react/server.d.ts +0 -10
  1084. package/dist/blocks/search/react/server.js +0 -11
  1085. package/dist/blocks/search/solid/index.d.ts +0 -13
  1086. package/dist/blocks/search/solid/index.js +0 -14
  1087. package/dist/blocks/search/svelte/index.d.ts +0 -13
  1088. package/dist/blocks/search/svelte/index.js +0 -14
  1089. package/dist/blocks/search/vue/index.d.ts +0 -13
  1090. package/dist/blocks/search/vue/index.js +0 -14
  1091. package/dist/blocks/service-principals/index.d.ts +0 -132
  1092. package/dist/blocks/service-principals/index.js +0 -109
  1093. package/dist/blocks/sessions/react/index.d.ts +0 -36
  1094. package/dist/blocks/sessions/react/index.js +0 -53
  1095. package/dist/blocks/sessions/react/server.d.ts +0 -15
  1096. package/dist/blocks/sessions/react/server.js +0 -17
  1097. package/dist/blocks/sessions/solid/index.d.ts +0 -20
  1098. package/dist/blocks/sessions/solid/index.js +0 -23
  1099. package/dist/blocks/sessions/svelte/index.d.ts +0 -20
  1100. package/dist/blocks/sessions/svelte/index.js +0 -23
  1101. package/dist/blocks/sessions/vue/index.d.ts +0 -20
  1102. package/dist/blocks/sessions/vue/index.js +0 -23
  1103. package/dist/blocks/settings/react/index.d.ts +0 -31
  1104. package/dist/blocks/settings/react/index.js +0 -37
  1105. package/dist/blocks/settings/react/server.d.ts +0 -10
  1106. package/dist/blocks/settings/react/server.js +0 -10
  1107. package/dist/blocks/settings/solid/index.d.ts +0 -13
  1108. package/dist/blocks/settings/solid/index.js +0 -14
  1109. package/dist/blocks/settings/svelte/index.d.ts +0 -13
  1110. package/dist/blocks/settings/svelte/index.js +0 -14
  1111. package/dist/blocks/settings/vue/index.d.ts +0 -13
  1112. package/dist/blocks/settings/vue/index.js +0 -14
  1113. package/dist/blocks/shared-signals/index.d.ts +0 -440
  1114. package/dist/blocks/shared-signals/index.js +0 -885
  1115. package/dist/blocks/subjects/react/index.d.ts +0 -31
  1116. package/dist/blocks/subjects/react/index.js +0 -60
  1117. package/dist/blocks/subjects/react/server.d.ts +0 -9
  1118. package/dist/blocks/subjects/react/server.js +0 -12
  1119. package/dist/blocks/subjects/solid/index.d.ts +0 -13
  1120. package/dist/blocks/subjects/solid/index.js +0 -14
  1121. package/dist/blocks/subjects/svelte/index.d.ts +0 -13
  1122. package/dist/blocks/subjects/svelte/index.js +0 -14
  1123. package/dist/blocks/subjects/vue/index.d.ts +0 -13
  1124. package/dist/blocks/subjects/vue/index.js +0 -14
  1125. package/dist/blocks/tags/react/index.d.ts +0 -29
  1126. package/dist/blocks/tags/react/index.js +0 -53
  1127. package/dist/blocks/tags/react/server.d.ts +0 -7
  1128. package/dist/blocks/tags/react/server.js +0 -7
  1129. package/dist/blocks/tags/solid/index.d.ts +0 -13
  1130. package/dist/blocks/tags/solid/index.js +0 -14
  1131. package/dist/blocks/tags/svelte/index.d.ts +0 -13
  1132. package/dist/blocks/tags/svelte/index.js +0 -14
  1133. package/dist/blocks/tags/vue/index.d.ts +0 -13
  1134. package/dist/blocks/tags/vue/index.js +0 -14
  1135. package/dist/blocks/targets/index.d.ts +0 -82
  1136. package/dist/blocks/targets/index.js +0 -72
  1137. package/dist/blocks/undo/react/index.d.ts +0 -17
  1138. package/dist/blocks/undo/react/index.js +0 -24
  1139. package/dist/blocks/undo/react/server.d.ts +0 -10
  1140. package/dist/blocks/undo/react/server.js +0 -10
  1141. package/dist/blocks/undo/solid/index.d.ts +0 -13
  1142. package/dist/blocks/undo/solid/index.js +0 -14
  1143. package/dist/blocks/undo/svelte/index.d.ts +0 -13
  1144. package/dist/blocks/undo/svelte/index.js +0 -14
  1145. package/dist/blocks/undo/vue/index.d.ts +0 -13
  1146. package/dist/blocks/undo/vue/index.js +0 -14
  1147. package/dist/blocks/usage/react/index.d.ts +0 -29
  1148. package/dist/blocks/usage/react/index.js +0 -38
  1149. package/dist/blocks/usage/react/server.d.ts +0 -7
  1150. package/dist/blocks/usage/react/server.js +0 -7
  1151. package/dist/blocks/usage/solid/index.d.ts +0 -13
  1152. package/dist/blocks/usage/solid/index.js +0 -14
  1153. package/dist/blocks/usage/svelte/index.d.ts +0 -13
  1154. package/dist/blocks/usage/svelte/index.js +0 -14
  1155. package/dist/blocks/usage/vue/index.d.ts +0 -13
  1156. package/dist/blocks/usage/vue/index.js +0 -14
  1157. package/dist/blocks/work-items/index.d.ts +0 -87
  1158. package/dist/blocks/work-items/index.js +0 -431
  1159. package/dist/blocks/workflow-builder/index.d.ts +0 -43
  1160. package/dist/blocks/workflow-builder/index.js +0 -33
  1161. package/dist/blocks/workflow-builder/react/index.d.ts +0 -32
  1162. package/dist/blocks/workflow-builder/react/index.js +0 -75
  1163. package/dist/blocks/workflow-builder/react/server.d.ts +0 -14
  1164. package/dist/blocks/workflow-builder/react/server.js +0 -17
  1165. package/dist/blocks/workflow-builder/solid/index.d.ts +0 -20
  1166. package/dist/blocks/workflow-builder/solid/index.js +0 -23
  1167. package/dist/blocks/workflow-builder/svelte/index.d.ts +0 -20
  1168. package/dist/blocks/workflow-builder/svelte/index.js +0 -23
  1169. package/dist/blocks/workflow-builder/vue/index.d.ts +0 -20
  1170. package/dist/blocks/workflow-builder/vue/index.js +0 -23
  1171. package/dist/blocks/workflows/react/index.d.ts +0 -39
  1172. package/dist/blocks/workflows/react/index.js +0 -65
  1173. package/dist/blocks/workflows/react/server.d.ts +0 -14
  1174. package/dist/blocks/workflows/react/server.js +0 -17
  1175. package/dist/blocks/workflows/solid/index.d.ts +0 -20
  1176. package/dist/blocks/workflows/solid/index.js +0 -23
  1177. package/dist/blocks/workflows/svelte/index.d.ts +0 -20
  1178. package/dist/blocks/workflows/svelte/index.js +0 -23
  1179. package/dist/blocks/workflows/vue/index.d.ts +0 -20
  1180. package/dist/blocks/workflows/vue/index.js +0 -23
  1181. package/dist/bookings-BB5lFlNO.js +0 -310
  1182. package/dist/bookings-CC7IeiRa.d.ts +0 -290
  1183. package/dist/bucket-TkB7_xv8.d.ts +0 -667
  1184. package/dist/build-DCfpwg78.js +0 -1839
  1185. package/dist/build-g9wTbQdp.js +0 -703
  1186. package/dist/calendar-T3Vdpq7E.js +0 -952
  1187. package/dist/carrier-C7Q_21Kd.d.ts +0 -169
  1188. package/dist/chat-sdk/react/index.d.ts +0 -3
  1189. package/dist/chat-sdk/react/index.js +0 -2
  1190. package/dist/chat-sdk/react/server.d.ts +0 -4
  1191. package/dist/chat-sdk/react/server.js +0 -1
  1192. package/dist/claims-T8TWZ53E.js +0 -63
  1193. package/dist/cli/add-Bf3kE6PY.js +0 -75
  1194. package/dist/cli/add-CYh6Sxk1.js +0 -674
  1195. package/dist/cli/add-Dg40eFKE.js +0 -1
  1196. package/dist/cli/adopt-B0vrj-4B.js +0 -421
  1197. package/dist/cli/adopt-DJR1k3lS.js +0 -1
  1198. package/dist/cli/apply-DUQ-5LC6.js +0 -329
  1199. package/dist/cli/blocks-DzgYfjVv.js +0 -124
  1200. package/dist/cli/blocks-gGupqvBH.js +0 -1
  1201. package/dist/cli/cache-C3K_wOE2.js +0 -536
  1202. package/dist/cli/catalog-CNM0ViIh.js +0 -199
  1203. package/dist/cli/codemod-Dz4R-tVY.js +0 -1127
  1204. package/dist/cli/command-33pu13LT.js +0 -963
  1205. package/dist/cli/completion-6M6Hr8TL.js +0 -211
  1206. package/dist/cli/completion-Bqu8yq0q.js +0 -1
  1207. package/dist/cli/completion-Ddr3yqd3.js +0 -30
  1208. package/dist/cli/config-B31tIvAl.js +0 -42
  1209. package/dist/cli/config-CjgXMZW2.js +0 -1522
  1210. package/dist/cli/config-D9k5ckqV.js +0 -1
  1211. package/dist/cli/config-edit-D46H0UHp.js +0 -613
  1212. package/dist/cli/db-CeagtENM.js +0 -473
  1213. package/dist/cli/design-edit-B40ljpGZ.js +0 -205
  1214. package/dist/cli/detect-RApSAA8v.js +0 -84
  1215. package/dist/cli/dist-DSwzLVAG.js +0 -129
  1216. package/dist/cli/doctor-COGJJ1gy.js +0 -3898
  1217. package/dist/cli/emit-DbQeLlHt.js +0 -1123
  1218. package/dist/cli/env-Ba-pOD3a.js +0 -1
  1219. package/dist/cli/env-DlgfvI8U.js +0 -143
  1220. package/dist/cli/files-C5JfVnj5.js +0 -972
  1221. package/dist/cli/gen-DHW1qENn.js +0 -307
  1222. package/dist/cli/init-CZifzAUD.js +0 -397
  1223. package/dist/cli/introspect-Dfwu5vAg.js +0 -51
  1224. package/dist/cli/keys-iJs_1WT8.js +0 -106
  1225. package/dist/cli/live-1eL2MIkS.js +0 -344
  1226. package/dist/cli/mcp-CaFW6uKU.js +0 -240
  1227. package/dist/cli/metadata-DkOQHZoH.js +0 -146
  1228. package/dist/cli/migration-safety-BsCKKxPf.js +0 -305
  1229. package/dist/cli/module-migration-CbX-jRhV.js +0 -606
  1230. package/dist/cli/moved-CdNtCf4t.js +0 -161
  1231. package/dist/cli/names-D6LrQnOv.js +0 -6
  1232. package/dist/cli/parse-CRZLku1b.js +0 -182
  1233. package/dist/cli/preset-C4fagbhZ.js +0 -130
  1234. package/dist/cli/run-CE2s5TDh.js +0 -711
  1235. package/dist/cli/run-Du5XPOCv.js +0 -63
  1236. package/dist/cli/run-KXjrgNCH.js +0 -2378
  1237. package/dist/cli/scaffold-CPH8sEhw.js +0 -901
  1238. package/dist/cli/scaffold-DS6g3INp.js +0 -1
  1239. package/dist/cli/seed-D6V-T5Af.js +0 -188
  1240. package/dist/cli/seed-DPQaA8aP.js +0 -1
  1241. package/dist/cli/shared-CCpxS5if.js +0 -151
  1242. package/dist/cli/skills-Bz4INB8f.js +0 -121
  1243. package/dist/cli/snapshot-Dkwxc1uV.js +0 -351
  1244. package/dist/cli/source-args-DZV4RnZL.js +0 -59
  1245. package/dist/cli/spec-B3Tbc7Dm.js +0 -7534
  1246. package/dist/cli/spec-Cv1GYrcW.js +0 -1
  1247. package/dist/cli/sql-C58MS9DI.js +0 -348
  1248. package/dist/cli/sql-DVPw5tvO.js +0 -2
  1249. package/dist/cli/stack-_F_JhllX.js +0 -135
  1250. package/dist/cli/sync-CjkKpI6d.js +0 -91
  1251. package/dist/cli/typegen-F9GEjpvD.js +0 -502
  1252. package/dist/cli/typegen-version-BNBPI4Eu.js +0 -9
  1253. package/dist/cli/version-CTqnp3HO.js +0 -4
  1254. package/dist/cli/write-3qdrpS1v.js +0 -201
  1255. package/dist/client--tyFmxDT.js +0 -52
  1256. package/dist/client-7_4Y21ue.d.ts +0 -122
  1257. package/dist/client-B1cjaIfv.js +0 -116
  1258. package/dist/client-B2GCMvfd.d.ts +0 -451
  1259. package/dist/client-B8cHiZfF.js +0 -67
  1260. package/dist/client-BIMg9IiF.d.ts +0 -349
  1261. package/dist/client-BKGVUgo7.js +0 -380
  1262. package/dist/client-BNaOcfeH.js +0 -58
  1263. package/dist/client-BQseXods.d.ts +0 -309
  1264. package/dist/client-BSnf6fn6.d.ts +0 -59
  1265. package/dist/client-BW3-RUbq.js +0 -235
  1266. package/dist/client-BYAY7lLs.d.ts +0 -137
  1267. package/dist/client-BcXmbm4f.js +0 -173
  1268. package/dist/client-BgmVu505.js +0 -167
  1269. package/dist/client-Bj0xrUzr.js +0 -437
  1270. package/dist/client-Bn0qqRBg.d.ts +0 -37
  1271. package/dist/client-Bni68sve.d.ts +0 -136
  1272. package/dist/client-BrtwaIBh.d.ts +0 -74
  1273. package/dist/client-BtRx0-kn.js +0 -82
  1274. package/dist/client-BteuBPIy.js +0 -337
  1275. package/dist/client-C1TxDBgX.js +0 -111
  1276. package/dist/client-C1zOmnS8.js +0 -89
  1277. package/dist/client-C56l0MnY.d.ts +0 -177
  1278. package/dist/client-CA6KuLDu.d.ts +0 -223
  1279. package/dist/client-CBcq7LBg.d.ts +0 -178
  1280. package/dist/client-CGJrSTMZ.js +0 -234
  1281. package/dist/client-CLIBcMzL.d.ts +0 -116
  1282. package/dist/client-COuIfjbB.d.ts +0 -46
  1283. package/dist/client-CVToJ4uI.js +0 -84
  1284. package/dist/client-C_0XZieg.js +0 -287
  1285. package/dist/client-CebKlRU7.js +0 -157
  1286. package/dist/client-ChOJ4v0D.js +0 -137
  1287. package/dist/client-CnENAa0E.d.ts +0 -69
  1288. package/dist/client-Cp79i2ZE.d.ts +0 -152
  1289. package/dist/client-CwKsEl6q.js +0 -99
  1290. package/dist/client-D-LPdEDQ.d.ts +0 -43
  1291. package/dist/client-D6gD9qt9.d.ts +0 -45
  1292. package/dist/client-DBwWXQKF.d.ts +0 -132
  1293. package/dist/client-DD3EcytK.js +0 -65
  1294. package/dist/client-DScMvaty.js +0 -38
  1295. package/dist/client-DT6Tvudr.d.ts +0 -54
  1296. package/dist/client-DU1_Jq4e.d.ts +0 -116
  1297. package/dist/client-Dd-a0tup.d.ts +0 -475
  1298. package/dist/client-Dh8zXgpq.js +0 -1060
  1299. package/dist/client-DkI0oyR7.js +0 -76
  1300. package/dist/client-DmjG9PHH.js +0 -211
  1301. package/dist/client-DnUFHmje.js +0 -129
  1302. package/dist/client-Do5hykMK.d.ts +0 -38
  1303. package/dist/client-DzOL3lsV.d.ts +0 -110
  1304. package/dist/client-DzukpHS1.d.ts +0 -165
  1305. package/dist/client-LngH55pZ.d.ts +0 -83
  1306. package/dist/client-PPSwiJaK.js +0 -291
  1307. package/dist/client-RoAuPQNB.d.ts +0 -103
  1308. package/dist/client-WzuQExHk.js +0 -253
  1309. package/dist/client-Y_HnZGF4.js +0 -51
  1310. package/dist/client-bDXsvSXp.d.ts +0 -90
  1311. package/dist/client-bx3Bk7c5.d.ts +0 -64
  1312. package/dist/client-jgDU7Roj.d.ts +0 -144
  1313. package/dist/client-kRvHKAKS.js +0 -60
  1314. package/dist/client-pxXoQOdC.js +0 -40
  1315. package/dist/client-yIxEJwTK.js +0 -121
  1316. package/dist/cloud-event-SPyXMdcd.d.ts +0 -64
  1317. package/dist/codecs-CQrX3ZW4.js +0 -358
  1318. package/dist/codecs-DAu2sYWn.d.ts +0 -222
  1319. package/dist/comments-CB8pFSV1.js +0 -142
  1320. package/dist/compiler-BCyHFI6n.d.ts +0 -14
  1321. package/dist/compose--4D1FoPN.js +0 -53
  1322. package/dist/composite-Dv6o2BSw.js +0 -130
  1323. package/dist/composite-KllwFim2.d.ts +0 -82
  1324. package/dist/config-BuOz_O-y.d.ts +0 -2152
  1325. package/dist/config-Dh4D8lBa.js +0 -13931
  1326. package/dist/config-Dn0cC3bM.js +0 -1093
  1327. package/dist/connector-BdCE4Efp.d.ts +0 -164
  1328. package/dist/connectors-DDiSNvkF.d.ts +0 -147
  1329. package/dist/context-9Q23weHu.d.ts +0 -524
  1330. package/dist/context-CMxVnPMY.js +0 -9
  1331. package/dist/context-CYquqpA6.js +0 -41
  1332. package/dist/controller-CSsC9s3s.js +0 -73
  1333. package/dist/controller-DAD4hbl4.d.ts +0 -52
  1334. package/dist/create-blocks-kPUhCvje.js +0 -217
  1335. package/dist/cron-_i5pBGkY.js +0 -148
  1336. package/dist/cron-route-Y0eJ-FNi.js +0 -24
  1337. package/dist/deal-forecast-CBlp20PY.js +0 -39
  1338. package/dist/define-DQznpZYl.js +0 -2023
  1339. package/dist/define-Dw7pRO4h.d.ts +0 -1123
  1340. package/dist/define-block-COpcS6aT.d.ts +0 -1338
  1341. package/dist/define-block-Dze77QTw.js +0 -56
  1342. package/dist/delegation-CeXm9AJ3.js +0 -146
  1343. package/dist/documents-kgDOHUfn.d.ts +0 -152
  1344. package/dist/embeddings-CcRP-cMN.d.ts +0 -78
  1345. package/dist/employees-Dwyvxs4r.d.ts +0 -180
  1346. package/dist/ended--Bd_Q6uL.d.ts +0 -76
  1347. package/dist/engagements-CsJhf2OM.d.ts +0 -179
  1348. package/dist/entitlements-B_ttRvI6.js +0 -45
  1349. package/dist/entitlements-DDevu4ZE.d.ts +0 -54
  1350. package/dist/entity-form-B67vq97h.d.ts +0 -82
  1351. package/dist/entity-naming-DLDhHTbK.js +0 -131
  1352. package/dist/entity-schema-BXXC1NnT.js +0 -39
  1353. package/dist/envelope-DCfHtVtZ.js +0 -90
  1354. package/dist/errors-03ysrOt4.js +0 -325
  1355. package/dist/errors-DZx8w-MH.js +0 -44
  1356. package/dist/escape-like-BfXS-iVe.d.ts +0 -30
  1357. package/dist/eve-BlJI8ZXL.d.ts +0 -157
  1358. package/dist/event-calendar-D3SVa3AE.d.ts +0 -65
  1359. package/dist/events-DbLjvxDX.d.ts +0 -852
  1360. package/dist/executor-BDAGTc_O.js +0 -207
  1361. package/dist/executor-BElVQpaB.d.ts +0 -188
  1362. package/dist/executor-CPyrQdjh.d.ts +0 -700
  1363. package/dist/executor-CsTaO3AT.d.ts +0 -37
  1364. package/dist/executor-DQoczQZJ.d.ts +0 -104
  1365. package/dist/executor-QtVn0axs.js +0 -147
  1366. package/dist/executor-o9HkOJ0m.js +0 -869
  1367. package/dist/expo-sqlite/index.d.ts +0 -61
  1368. package/dist/expo-sqlite/index.js +0 -110
  1369. package/dist/feature-BBLdbGu7.js +0 -224
  1370. package/dist/field-errors-vshYTVKr.d.ts +0 -166
  1371. package/dist/field-formats-DbjaDXoZ.d.ts +0 -39
  1372. package/dist/fields-CanaxA0U.d.ts +0 -75
  1373. package/dist/fields-DK30XCgc.js +0 -107
  1374. package/dist/filter-evaluate-C3i2bGfk.d.ts +0 -37
  1375. package/dist/filter-evaluate-CRDXv0Dl.js +0 -217
  1376. package/dist/filter-query-D4ZSwbcJ.js +0 -524
  1377. package/dist/filter-query-o3b_GuyC.d.ts +0 -133
  1378. package/dist/flags-BTDPaN11.d.ts +0 -246
  1379. package/dist/flags-BhYByvP1.js +0 -279
  1380. package/dist/flows/index.d.ts +0 -247
  1381. package/dist/flows/index.js +0 -229
  1382. package/dist/format-AYHceC2m.d.ts +0 -79
  1383. package/dist/framework-CXoyWGgd.js +0 -57
  1384. package/dist/framework-FxfJpyoF.d.ts +0 -41
  1385. package/dist/function-contract-vPqwt1j4.d.ts +0 -27
  1386. package/dist/gateway-DI8dbOml.d.ts +0 -115
  1387. package/dist/graph-B4eubUQG.js +0 -365
  1388. package/dist/groups-CxonH3u5.js +0 -16
  1389. package/dist/http-51t9xppD.js +0 -28
  1390. package/dist/impersonation-CZD9AOAk.js +0 -62
  1391. package/dist/inbox-BPBb6etH.d.ts +0 -321
  1392. package/dist/index-BSUX4dlB.d.ts +0 -305
  1393. package/dist/index-BgSuw4CC.d.ts +0 -151
  1394. package/dist/index-C7CrdGgz.d.ts +0 -562
  1395. package/dist/index-CvxK2BZS.d.ts +0 -847
  1396. package/dist/index-CxZQgNVE.d.ts +0 -62
  1397. package/dist/index-D4420jLW.d.ts +0 -66
  1398. package/dist/index-DK-YTWLd.d.ts +0 -443
  1399. package/dist/index-DbXWcrOI.d.ts +0 -577
  1400. package/dist/index-U0o7kU0s.d.ts +0 -69
  1401. package/dist/index-WEafENqH.d.ts +0 -149
  1402. package/dist/index-Yep7auV-.d.ts +0 -287
  1403. package/dist/index-eTY4kJzo.d.ts +0 -163
  1404. package/dist/invalidate-BLiBFbLy.d.ts +0 -19
  1405. package/dist/json-schema-DWDTfD8J.js +0 -888
  1406. package/dist/jwks-cache-CRymV-Dr.js +0 -49
  1407. package/dist/kit-Ct4Z6GIO.js +0 -127
  1408. package/dist/kit-DKfbNTAA.d.ts +0 -94
  1409. package/dist/knowledge-BKGrXdS_.js +0 -272
  1410. package/dist/knowledge-CFkCRxO9.d.ts +0 -202
  1411. package/dist/list-query-BtluNnYk.d.ts +0 -222
  1412. package/dist/list-query-CuS1w2Af.js +0 -559
  1413. package/dist/live-CZtRMh62.js +0 -246
  1414. package/dist/mentions-ByYnRNIG.js +0 -114
  1415. package/dist/messages-DNzIVvgN.js +0 -492
  1416. package/dist/messaging-BC-P-yAv.js +0 -329
  1417. package/dist/messaging-CZ6aWb10.d.ts +0 -297
  1418. package/dist/methods-7u6vSgz_.js +0 -11
  1419. package/dist/mfa-wrx1rqJT.d.ts +0 -36
  1420. package/dist/model-Btl8X9cs.d.ts +0 -326
  1421. package/dist/model-messages-D-jVOIOK.js +0 -206
  1422. package/dist/money-codec-jMP0PQLZ.js +0 -41
  1423. package/dist/onboarding-CGMuX7sP.js +0 -68
  1424. package/dist/openapi/index.d.ts +0 -5
  1425. package/dist/openapi/index.js +0 -36
  1426. package/dist/operations-nWYRexee.d.ts +0 -6
  1427. package/dist/options-289GJc2l.d.ts +0 -52
  1428. package/dist/options-70OsM-wK.js +0 -10
  1429. package/dist/options-B7EJaOX-.js +0 -5
  1430. package/dist/options-BkpqTGrJ.js +0 -8
  1431. package/dist/options-Blg8lAkz.js +0 -9
  1432. package/dist/options-Bn4cu0gt.js +0 -5
  1433. package/dist/options-BnoJOwXK.js +0 -8
  1434. package/dist/options-C2HesT4A.js +0 -9
  1435. package/dist/options-C3EzJATk.js +0 -10
  1436. package/dist/options-C3hZ1fbC.js +0 -10
  1437. package/dist/options-CAzVf-1T.js +0 -8
  1438. package/dist/options-CGKSUFUq.js +0 -5
  1439. package/dist/options-CGjGE8xS.js +0 -12
  1440. package/dist/options-CUqQ9pm7.js +0 -9
  1441. package/dist/options-CalPr6kN.d.ts +0 -12
  1442. package/dist/options-CfxBliP6.d.ts +0 -17
  1443. package/dist/options-ChD15QxJ.js +0 -9
  1444. package/dist/options-CmoJsd4V.d.ts +0 -8
  1445. package/dist/options-CyD7OObW.js +0 -17
  1446. package/dist/options-D1blDihM.js +0 -9
  1447. package/dist/options-D2Gd6VfS.js +0 -8
  1448. package/dist/options-D4aD9qwB.js +0 -5
  1449. package/dist/options-D65jzn7S.js +0 -5
  1450. package/dist/options-D7f2VKzj.js +0 -25
  1451. package/dist/options-D7sgG1bQ.js +0 -16
  1452. package/dist/options-DJm31rsi.d.ts +0 -16
  1453. package/dist/options-DXqcJyOP.js +0 -10
  1454. package/dist/options-DXuA4JVa.d.ts +0 -15
  1455. package/dist/options-DZupPoI0.d.ts +0 -10
  1456. package/dist/options-Dm-2crCx.d.ts +0 -273
  1457. package/dist/options-Dmg1Da9P.js +0 -25
  1458. package/dist/options-DsUgamiy.js +0 -5
  1459. package/dist/options-DujalSfR.js +0 -10
  1460. package/dist/options-Dz3hJxUw.d.ts +0 -10
  1461. package/dist/options-HSv8R6h5.js +0 -13
  1462. package/dist/options-I8zVkB_y.js +0 -8
  1463. package/dist/options-MHhjOoWz.js +0 -5
  1464. package/dist/options-MLxMkd5B.js +0 -11
  1465. package/dist/options-MQfTGMgP.d.ts +0 -14
  1466. package/dist/options-OJ5zmgr8.js +0 -10
  1467. package/dist/options-OMAUVcKK.d.ts +0 -10
  1468. package/dist/options-_9arpsX9.js +0 -11
  1469. package/dist/options-a-28mlYT.js +0 -9
  1470. package/dist/options-kLKILdIu.js +0 -10
  1471. package/dist/options-n22NK3PL.js +0 -8
  1472. package/dist/options-qU8vgxhO.js +0 -18
  1473. package/dist/options-te6d5-yz.d.ts +0 -19
  1474. package/dist/options-wFnK3qWl.js +0 -9
  1475. package/dist/options-xVAy3UsV.js +0 -9
  1476. package/dist/organizations-DtehZg3J.js +0 -401
  1477. package/dist/outbox-CsF_iKjx.d.ts +0 -199
  1478. package/dist/overlay/index.d.ts +0 -249
  1479. package/dist/overlay/index.js +0 -561
  1480. package/dist/payments-BtScsgPS.js +0 -16
  1481. package/dist/payments-CBzQIjoX.d.ts +0 -114
  1482. package/dist/permissions-BetA_Fo_.js +0 -34
  1483. package/dist/plugin-Ar5546xh.d.ts +0 -202
  1484. package/dist/plugin-D9bYbYli.js +0 -45
  1485. package/dist/plugins/actor/index.d.ts +0 -19
  1486. package/dist/plugins/actor/index.js +0 -57
  1487. package/dist/plugins/rules/index.d.ts +0 -96
  1488. package/dist/plugins/rules/index.js +0 -235
  1489. package/dist/plugins/soft-delete/index.d.ts +0 -39
  1490. package/dist/plugins/soft-delete/index.js +0 -90
  1491. package/dist/plugins/tenant/index.d.ts +0 -60
  1492. package/dist/plugins/tenant/index.js +0 -119
  1493. package/dist/plugins/timestamps/index.d.ts +0 -11
  1494. package/dist/plugins/timestamps/index.js +0 -47
  1495. package/dist/plugins/validation/index.d.ts +0 -24
  1496. package/dist/plugins/validation/index.js +0 -83
  1497. package/dist/pool-CRkU15dA.d.ts +0 -123
  1498. package/dist/pool-errors-B17BQRW-.js +0 -27
  1499. package/dist/ports-DsJicwI2.d.ts +0 -89
  1500. package/dist/ports-yajgT0t0.js +0 -139
  1501. package/dist/postgrest-DHLlN2nS.d.ts +0 -53
  1502. package/dist/powersync/react/index.d.ts +0 -93
  1503. package/dist/powersync/react/index.js +0 -120
  1504. package/dist/preset-DzcQ5CQM.js +0 -841
  1505. package/dist/problem-BWElIgIb.js +0 -162
  1506. package/dist/problem-DpHB7tWl.d.ts +0 -79
  1507. package/dist/provider-DmiaI1qt.d.ts +0 -112
  1508. package/dist/provider-EJ0-5GwJ.js +0 -57
  1509. package/dist/push-token-BxKmYhwk.d.ts +0 -24
  1510. package/dist/queries-Dw8y9bvz.js +0 -245
  1511. package/dist/rank-result-C_sHjkiz.js +0 -18
  1512. package/dist/rank-result-DwR0FawB.d.ts +0 -14
  1513. package/dist/rate-limit-B_U12PdL.js +0 -49
  1514. package/dist/rate-limit-CrOuXfjj.d.ts +0 -50
  1515. package/dist/rate-limit-DExDw3Cy.js +0 -327
  1516. package/dist/react-28VgUbm9.js +0 -852
  1517. package/dist/react-controller-CKSdtJ10.js +0 -43
  1518. package/dist/react-env-CfA3EdBH.js +0 -20
  1519. package/dist/read-set-BAR84kPC.js +0 -199
  1520. package/dist/recordings-DgDu7AOt.d.ts +0 -119
  1521. package/dist/refusal-DXydjgsS.js +0 -64
  1522. package/dist/refusal-efy5bZMd.d.ts +0 -32
  1523. package/dist/replicas-BvIL4_jL.js +0 -94
  1524. package/dist/resolve-CzUKTIMq.d.ts +0 -289
  1525. package/dist/resolve-DAYdcs22.js +0 -892
  1526. package/dist/resolved-names-Dr7brlLL.js +0 -133
  1527. package/dist/resource-BRRU-A7j.js +0 -91
  1528. package/dist/resource-DYDEnww-.d.ts +0 -115
  1529. package/dist/resource-Dk_JYsOt.js +0 -469
  1530. package/dist/resource-execute-bT9ltHVT.d.ts +0 -15
  1531. package/dist/resource-types-Bzt_bpR5.d.ts +0 -153
  1532. package/dist/resources-BV6j5TTD.js +0 -64
  1533. package/dist/resources-Du5wcL3f.d.ts +0 -7
  1534. package/dist/respond-CZYibxUx.d.ts +0 -101
  1535. package/dist/respond-z_yfyitp.js +0 -100
  1536. package/dist/result-B3m7xtRY.js +0 -146
  1537. package/dist/result-C6jDfedy.d.ts +0 -350
  1538. package/dist/rows-Bb0EPupt.js +0 -80
  1539. package/dist/rows-CtLWqdGQ.js +0 -39
  1540. package/dist/rrule-xDm2znty.js +0 -290
  1541. package/dist/rules-DcW5mj1r.js +0 -287
  1542. package/dist/run-state-CPo-1X2B.d.ts +0 -12
  1543. package/dist/sales-lines-9HsX89aO.d.ts +0 -28
  1544. package/dist/sales-lines-BhrIx2oK.js +0 -41
  1545. package/dist/sales-shared-C_u68eq2.js +0 -22
  1546. package/dist/sales-shared-DAAGwQwN.d.ts +0 -8
  1547. package/dist/schemas-9Ci3K0Hk.js +0 -103
  1548. package/dist/schemas-ypoQZ_6N.js +0 -157
  1549. package/dist/scores-CsURQDUB.d.ts +0 -172
  1550. package/dist/scores-DdPZVVt8.js +0 -177
  1551. package/dist/search-ToCOlCZ8.js +0 -106
  1552. package/dist/sections-DjxYmpu-.js +0 -26
  1553. package/dist/server-types-BOs-eFpo.d.ts +0 -809
  1554. package/dist/session-BgsOPGZs.d.ts +0 -97
  1555. package/dist/settings-mL-i7QUM.js +0 -93
  1556. package/dist/shared-LmlfYPv4.js +0 -60
  1557. package/dist/shared-eVrl39dX.js +0 -17
  1558. package/dist/sign-in-lAyf6Ohy.js +0 -386
  1559. package/dist/signatures-GUBuhLOB.js +0 -145
  1560. package/dist/signatures-zbu6KTNQ.d.ts +0 -43
  1561. package/dist/signers-D6ecZl22.d.ts +0 -390
  1562. package/dist/signing-keys-B3RHGMMu.d.ts +0 -119
  1563. package/dist/signing-keys-fWapUzi0.js +0 -164
  1564. package/dist/solid-bind-C1jeq4Qm.d.ts +0 -11
  1565. package/dist/solid-bind-iHGfGtBK.js +0 -38
  1566. package/dist/solid-controller-DGuv7V8a.js +0 -13
  1567. package/dist/spec-CoWHDoud.js +0 -119
  1568. package/dist/spec-pins-CZ2CL8YZ.d.ts +0 -120
  1569. package/dist/spec-pins-D3Tm6HJi.js +0 -60
  1570. package/dist/sql-CVYjOUyG.js +0 -421
  1571. package/dist/sql-rQDL6PIL.js +0 -122247
  1572. package/dist/sso-B744gHeS.d.ts +0 -161
  1573. package/dist/sso-Bt9HocgW.js +0 -217
  1574. package/dist/standard-DbQsD2xZ.d.ts +0 -7
  1575. package/dist/standard-DtkpFGkS.js +0 -25
  1576. package/dist/stats-qCEV5M3B.js +0 -1147
  1577. package/dist/store-o0HwYXl8.d.ts +0 -83
  1578. package/dist/subject-readers-CsTpx44c.js +0 -49
  1579. package/dist/subject-readers-DEZ45DQF.d.ts +0 -21
  1580. package/dist/subjects-B6p4oAZJ.d.ts +0 -78
  1581. package/dist/subjects-DXFmanh5.d.ts +0 -90
  1582. package/dist/subjects-DevU_atb.js +0 -107
  1583. package/dist/support-Ds1-UCN4.js +0 -534
  1584. package/dist/support-view-vwJbRMpV.d.ts +0 -17
  1585. package/dist/svelte-bind-BHN5a8VV.js +0 -46
  1586. package/dist/svelte-bind-Ja6CtQGp.d.ts +0 -13
  1587. package/dist/svelte-controller-oFKC9AYu.js +0 -19
  1588. package/dist/table-schema-BcB-VCQb.js +0 -293
  1589. package/dist/table-schema-Cb-IV_pZ.d.ts +0 -78
  1590. package/dist/tags-CLXi2c6O.d.ts +0 -30
  1591. package/dist/tags-C_ym1yDM.js +0 -39
  1592. package/dist/tags-EnvIccSJ.js +0 -86
  1593. package/dist/tanstack-db/supabase/index.d.ts +0 -66
  1594. package/dist/tanstack-db/supabase/index.js +0 -271
  1595. package/dist/tax-CIIxd8Zf.d.ts +0 -170
  1596. package/dist/tax-DmOMjrYc.js +0 -140
  1597. package/dist/tee-DwkUvJD_.js +0 -101
  1598. package/dist/template-BWP7IXZg.js +0 -126
  1599. package/dist/temporal-required-B8qQHYbI.js +0 -20
  1600. package/dist/tenant-Bg4PDLkG.d.ts +0 -17
  1601. package/dist/tenant-DnMqeNIM.js +0 -27
  1602. package/dist/timeline-0_hTBH0-.js +0 -52
  1603. package/dist/timeline-DUUsPLv5.d.ts +0 -152
  1604. package/dist/timing-C5NzaEgy.js +0 -95
  1605. package/dist/topic-CPOmMgkf.js +0 -643
  1606. package/dist/topic-D9j8G2dw.d.ts +0 -415
  1607. package/dist/types-BEDfwXL4.d.ts +0 -251
  1608. package/dist/types-BRJHGhSq.d.ts +0 -177
  1609. package/dist/types-BTK75521.js +0 -8
  1610. package/dist/types-CGUDoF5I.d.ts +0 -624
  1611. package/dist/types-DkPE7yd2.d.ts +0 -194
  1612. package/dist/types-QHeku_6b.d.ts +0 -217
  1613. package/dist/types-uHD9yANu.d.ts +0 -700
  1614. package/dist/undo-B696duxr.d.ts +0 -46
  1615. package/dist/undo-vutx78k8.js +0 -44
  1616. package/dist/upload-claim-D_wgDbi7.js +0 -33
  1617. package/dist/usage-BI1E2940.js +0 -264
  1618. package/dist/usage-DBcVGqnr.d.ts +0 -232
  1619. package/dist/user-change-CSR_prhd.js +0 -133
  1620. package/dist/variants-DL7NpFJ7.js +0 -53
  1621. package/dist/vault-BQTdu4eH.d.ts +0 -62
  1622. package/dist/verify-27w0I5C9.js +0 -130
  1623. package/dist/verify-BmuCB4PW.d.ts +0 -146
  1624. package/dist/view-2_I-2ukO.d.ts +0 -90
  1625. package/dist/view-BtgqxQLM.js +0 -108
  1626. package/dist/vue-bind-CFxon-Vs.js +0 -45
  1627. package/dist/vue-bind-TPkbLl4z.d.ts +0 -11
  1628. package/dist/vue-controller-WtbuT-Ux.js +0 -13
  1629. package/dist/watch-CfMT6vX7.js +0 -139
  1630. package/dist/watch-DziJudwj.d.ts +0 -93
  1631. package/dist/watch-topic-CIT3UlAh.d.ts +0 -31
  1632. package/dist/wire-Bizdxvp-.js +0 -66
  1633. package/dist/work-items-Cnntm8ij.d.ts +0 -238
  1634. package/dist/workflow-builder-2q1iqHYG.js +0 -699
  1635. package/dist/workflow-sdk-BTYWQQg9.d.ts +0 -163
  1636. package/dist/workflow-sdk-_pqDUwNK.js +0 -242
  1637. package/dist/workflow-sdk-world-BIwGVy6S.js +0 -2401
  1638. package/dist/workflows-D8U7KyXJ.d.ts +0 -258
  1639. package/dist/workflows-VJBSV-QR.js +0 -285
  1640. 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-BWElIgIb.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-DKp2Ggz_.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-DCfpwg78.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 };