better-supabase 0.7.1 → 0.8.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 (499) hide show
  1. package/README.md +6 -2
  2. package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
  3. package/dist/{adapter-iKgjHVPx.js → adapter-CN45ibbV.js} +658 -157
  4. package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
  5. package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
  6. package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
  7. package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
  8. package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
  9. package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
  10. package/dist/ai-message-DfaP8sis.js +14 -0
  11. package/dist/ai-sdk/agents/index.d.ts +4 -4
  12. package/dist/ai-sdk/batches/index.d.ts +4 -4
  13. package/dist/ai-sdk/batches/index.js +4 -4
  14. package/dist/ai-sdk/cache/index.d.ts +2 -2
  15. package/dist/ai-sdk/cache/index.js +2 -2
  16. package/dist/ai-sdk/chat/index.d.ts +1 -1
  17. package/dist/ai-sdk/chat/index.js +8 -20
  18. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  19. package/dist/ai-sdk/files/index.d.ts +3 -3
  20. package/dist/ai-sdk/files/index.js +4 -4
  21. package/dist/ai-sdk/index.d.ts +37 -9
  22. package/dist/ai-sdk/index.js +3 -2
  23. package/dist/ai-sdk/mcp/index.d.ts +43 -6
  24. package/dist/ai-sdk/mcp/index.js +36 -7
  25. package/dist/ai-sdk/memory/index.d.ts +2 -2
  26. package/dist/ai-sdk/memory/index.js +1 -1
  27. package/dist/ai-sdk/workflow/index.d.ts +6 -6
  28. package/dist/ai-sdk/workflow/index.js +13 -24
  29. package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
  30. package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
  31. package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
  32. package/dist/api-Dnf2q-Ht.d.ts +370 -0
  33. package/dist/api-DtHFC037.js +676 -0
  34. package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
  35. package/dist/arazzo/index.d.ts +255 -0
  36. package/dist/arazzo/index.js +622 -0
  37. package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
  38. package/dist/astro/index.d.ts +7 -7
  39. package/dist/astro/index.js +7 -7
  40. package/dist/asyncapi/index.d.ts +103 -0
  41. package/dist/asyncapi/index.js +569 -0
  42. package/dist/authorizer-ayxUDXXP.js +126 -0
  43. package/dist/authorizer-eiOjo-3l.d.ts +73 -0
  44. package/dist/better-result/index.d.ts +118 -0
  45. package/dist/better-result/index.js +64 -0
  46. package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
  47. package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
  48. package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
  49. package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
  50. package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
  51. package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
  52. package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
  53. package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
  54. package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
  55. package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
  56. package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
  57. package/dist/blocks/agents/index.d.ts +3 -3
  58. package/dist/blocks/agents/index.js +5 -4
  59. package/dist/blocks/ai-cache/index.d.ts +3 -3
  60. package/dist/blocks/ai-cache/index.js +3 -3
  61. package/dist/blocks/ai-chat/index.d.ts +9 -4
  62. package/dist/blocks/ai-chat/index.js +5 -5
  63. package/dist/blocks/ai-chat/react/index.d.ts +3 -3
  64. package/dist/blocks/ai-chat/react/index.js +5 -5
  65. package/dist/blocks/ai-files/index.d.ts +3 -3
  66. package/dist/blocks/ai-files/index.js +3 -3
  67. package/dist/blocks/ai-providers/index.d.ts +3 -3
  68. package/dist/blocks/ai-providers/index.js +8 -7
  69. package/dist/blocks/ai-tasks/index.d.ts +3 -3
  70. package/dist/blocks/ai-tasks/index.js +7 -6
  71. package/dist/blocks/announcements/index.d.ts +3 -3
  72. package/dist/blocks/announcements/index.js +3 -3
  73. package/dist/blocks/announcements/react/index.d.ts +3 -3
  74. package/dist/blocks/announcements/react/index.js +3 -3
  75. package/dist/blocks/api-keys/index.d.ts +5 -5
  76. package/dist/blocks/api-keys/index.js +8 -8
  77. package/dist/blocks/attachments/index.d.ts +12 -8
  78. package/dist/blocks/attachments/index.js +22 -13
  79. package/dist/blocks/audit/index.d.ts +21 -10
  80. package/dist/blocks/audit/index.js +30 -11
  81. package/dist/blocks/billing/index.d.ts +11 -9
  82. package/dist/blocks/billing/index.js +15 -15
  83. package/dist/blocks/comments/index.d.ts +8 -8
  84. package/dist/blocks/comments/index.js +8 -7
  85. package/dist/blocks/connectors/index.d.ts +3 -3
  86. package/dist/blocks/connectors/index.js +7 -6
  87. package/dist/blocks/data-lifecycle/index.d.ts +12 -8
  88. package/dist/blocks/data-lifecycle/index.js +13 -8
  89. package/dist/blocks/entitlements/index.d.ts +3 -3
  90. package/dist/blocks/entitlements/index.js +1 -1
  91. package/dist/blocks/flags/index.d.ts +4 -4
  92. package/dist/blocks/flags/index.js +4 -3
  93. package/dist/blocks/inbox/index.d.ts +3 -3
  94. package/dist/blocks/inbox/index.js +4 -5
  95. package/dist/blocks/inbox/react/index.d.ts +1 -1
  96. package/dist/blocks/inbox/react/index.js +1 -1
  97. package/dist/blocks/inbox/react/server.d.ts +1 -1
  98. package/dist/blocks/index.d.ts +10 -10
  99. package/dist/blocks/index.js +6 -6
  100. package/dist/blocks/jobs/index.d.ts +48 -32
  101. package/dist/blocks/jobs/index.js +44 -287
  102. package/dist/blocks/knowledge/index.d.ts +3 -3
  103. package/dist/blocks/knowledge/index.js +3 -3
  104. package/dist/blocks/memory/index.d.ts +4 -4
  105. package/dist/blocks/memory/index.js +7 -6
  106. package/dist/blocks/notifications/index.d.ts +11 -9
  107. package/dist/blocks/notifications/index.js +20 -25
  108. package/dist/blocks/notifications/react/index.d.ts +1 -1
  109. package/dist/blocks/notifications/react/index.js +1 -1
  110. package/dist/blocks/onboarding/index.d.ts +3 -3
  111. package/dist/blocks/onboarding/index.js +3 -3
  112. package/dist/blocks/onboarding/react/index.d.ts +2 -2
  113. package/dist/blocks/onboarding/react/index.js +2 -2
  114. package/dist/blocks/onboarding/react/server.d.ts +1 -1
  115. package/dist/blocks/organizations/index.d.ts +9 -9
  116. package/dist/blocks/organizations/index.js +11 -18
  117. package/dist/blocks/outbox/index.d.ts +2 -2
  118. package/dist/blocks/outbox/index.js +16 -25
  119. package/dist/blocks/profiles/index.d.ts +7 -7
  120. package/dist/blocks/profiles/index.js +7 -6
  121. package/dist/blocks/push/index.d.ts +4 -4
  122. package/dist/blocks/push/index.js +3 -3
  123. package/dist/blocks/settings/index.d.ts +4 -4
  124. package/dist/blocks/settings/index.js +7 -6
  125. package/dist/blocks/sso/index.d.ts +5 -5
  126. package/dist/blocks/sso/index.js +6 -5
  127. package/dist/blocks/usage/index.d.ts +3 -3
  128. package/dist/blocks/usage/index.js +5 -4
  129. package/dist/blocks/waitlist/index.d.ts +5 -5
  130. package/dist/blocks/waitlist/index.js +5 -4
  131. package/dist/blocks/webhooks/index.d.ts +22 -13
  132. package/dist/blocks/webhooks/index.js +41 -70
  133. package/dist/blocks/workflow-builder/index.d.ts +4 -4
  134. package/dist/blocks/workflow-builder/index.js +3 -3
  135. package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
  136. package/dist/blocks/workflow-builder/react/index.js +4 -4
  137. package/dist/blocks/workflows/index.d.ts +3 -3
  138. package/dist/blocks/workflows/index.js +3 -3
  139. package/dist/blocks/workflows/react/index.d.ts +3 -3
  140. package/dist/blocks/workflows/react/index.js +3 -3
  141. package/dist/build-hPwk3_X5.js +1296 -0
  142. package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
  143. package/dist/casing-DdFWEtqr.js +16 -0
  144. package/dist/chat-sdk/index.d.ts +6 -6
  145. package/dist/chat-sdk/index.js +5 -4
  146. package/dist/chat-sdk/react/index.d.ts +1 -1
  147. package/dist/chat-sdk/react/server.d.ts +1 -1
  148. package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
  149. package/dist/cli/add-1dc5wM5k.js +69 -0
  150. package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
  151. package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
  152. package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
  153. package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
  154. package/dist/cli/bin.js +4 -4
  155. package/dist/cli/cache-CIfA-jBV.js +483 -0
  156. package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
  157. package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
  158. package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
  159. package/dist/cli/config-DpbF8ML3.js +2 -0
  160. package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
  161. package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
  162. package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
  163. package/dist/cli/{doctor-DJk0aeBi.js → doctor-VcDtuusV.js} +316 -221
  164. package/dist/cli/emit-BHHfwUoT.js +1136 -0
  165. package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
  166. package/dist/cli/env-vzBG90Um.js +2 -0
  167. package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
  168. package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
  169. package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
  170. package/dist/cli/files-BVupXPIC.js +34 -0
  171. package/dist/cli/gen-DmVj3u4L.js +322 -0
  172. package/dist/cli/{init-BHuEQrQK.js → glue-C1UE8gQN.js} +16 -313
  173. package/dist/cli/index.d.ts +59 -31
  174. package/dist/cli/index.js +8 -6
  175. package/dist/cli/init-CVZ3s5kl.js +258 -0
  176. package/dist/cli/{introspect-DzR2nyQb.js → introspect-BToGNfm-.js} +14 -14
  177. package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
  178. package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
  179. package/dist/cli/metadata-DSRKCaf-.js +133 -0
  180. package/dist/cli/names-D6LrQnOv.js +6 -0
  181. package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
  182. package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
  183. package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
  184. package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
  185. package/dist/cli/prompts-BdeVmVpg.js +2 -0
  186. package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
  187. package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
  188. package/dist/cli/run-DA6_lg3w.js +389 -0
  189. package/dist/cli/run-DuN1MX-7.js +705 -0
  190. package/dist/cli/scaffold-5DenHSxF.js +292 -0
  191. package/dist/cli/scaffold-CwQUMFRb.js +2 -0
  192. package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
  193. package/dist/cli/seed-DOmit9Hq.js +2 -0
  194. package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
  195. package/dist/cli/snapshot-Bstk6ulj.js +287 -0
  196. package/dist/cli/source-args-BYfq6imV.js +31 -0
  197. package/dist/cli/spec-CzosTYm3.js +7438 -0
  198. package/dist/cli/spec-T_0Bcyw7.js +2 -0
  199. package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
  200. package/dist/cli/sql-DJrNDxQm.js +3 -0
  201. package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
  202. package/dist/cli/typegen-Demi5-VQ.js +486 -0
  203. package/dist/cli/validate-Ca13ktgz.js +7522 -0
  204. package/dist/cli/{version-59gcepIG.js → version-B4k0aUxS.js} +1 -1
  205. package/dist/client/index.d.ts +4 -3
  206. package/dist/client/index.js +60 -3
  207. package/dist/client/native/index.d.ts +3 -3
  208. package/dist/client/native/index.js +3 -3
  209. package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
  210. package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
  211. package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
  212. package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
  213. package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
  214. package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
  215. package/dist/{composite--yqry7uW.d.ts → composite-CWAJTRBF.d.ts} +6 -6
  216. package/dist/{composite-DXVUibdi.js → composite-zTe0TCqj.js} +4 -4
  217. package/dist/config/index.d.ts +3 -4
  218. package/dist/config/index.js +4 -4
  219. package/dist/config-DlKvtt95.js +540 -0
  220. package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
  221. package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
  222. package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
  223. package/dist/context-nPDvQ-Zl.js +41 -0
  224. package/dist/credentials/index.d.ts +5 -5
  225. package/dist/credentials/index.js +9 -17
  226. package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
  227. package/dist/cron-route-D2AN9SA1.js +24 -0
  228. package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
  229. package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
  230. package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
  231. package/dist/edge/index.d.ts +66 -13
  232. package/dist/edge/index.js +65 -39
  233. package/dist/elysia/index.d.ts +1 -1
  234. package/dist/elysia/index.js +1 -1
  235. package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
  236. package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
  237. package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
  238. package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
  239. package/dist/env/index.d.ts +1 -1
  240. package/dist/env/index.js +9 -2
  241. package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
  242. package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
  243. package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
  244. package/dist/eve/index.d.ts +5 -5
  245. package/dist/eve/index.js +5 -11
  246. package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
  247. package/dist/events/index.d.ts +4 -4
  248. package/dist/events/index.js +7 -2
  249. package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
  250. package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
  251. package/dist/executor-B_Hfobee.js +162 -0
  252. package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
  253. package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
  254. package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
  255. package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
  256. package/dist/expo/index.d.ts +4 -4
  257. package/dist/expo/index.js +6 -6
  258. package/dist/expo-sqlite/index.d.ts +3 -3
  259. package/dist/expo-sqlite/index.js +2 -2
  260. package/dist/extra-CGQ2_q3S.js +10 -0
  261. package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
  262. package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
  263. package/dist/format-DTXdu8ya.d.ts +70 -0
  264. package/dist/{framework-BmzgK32X.d.ts → framework-148t1m3C.d.ts} +5 -5
  265. package/dist/{framework-a7aRCIqv.js → framework-3ey3QmrO.js} +2 -2
  266. package/dist/function-contract-BcZenXMO.d.ts +8 -0
  267. package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
  268. package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
  269. package/dist/h3/index.d.ts +1 -1
  270. package/dist/h3/index.js +1 -1
  271. package/dist/h3/v1/index.d.ts +1 -1
  272. package/dist/h3/v1/index.js +1 -1
  273. package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
  274. package/dist/hmac-DCud0myt.js +22 -0
  275. package/dist/hono/index.d.ts +19 -14
  276. package/dist/hono/index.js +21 -16
  277. package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
  278. package/dist/http-sbmBe5d2.js +25 -0
  279. package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
  280. package/dist/index-B72Rvv_j.d.ts +89 -0
  281. package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
  282. package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
  283. package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
  284. package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
  285. package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
  286. package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
  287. package/dist/index-DG2SUXDQ.d.ts +58 -0
  288. package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
  289. package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
  290. package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
  291. package/dist/index.d.ts +89 -14
  292. package/dist/index.js +12 -11
  293. package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
  294. package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
  295. package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
  296. package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
  297. package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
  298. package/dist/list/index.d.ts +1 -2
  299. package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
  300. package/dist/mcp/index.d.ts +49 -19
  301. package/dist/mcp/index.js +158 -94
  302. package/dist/mcp/sdk/index.d.ts +38 -6
  303. package/dist/mcp/sdk/index.js +88 -6
  304. package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
  305. package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
  306. package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
  307. package/dist/model-OgBxvk3N.d.ts +300 -0
  308. package/dist/model-messages-Cxw_Up4f.js +206 -0
  309. package/dist/model-messages-D4GZllOD.d.ts +34 -0
  310. package/dist/modules-DksjZyMW.js +77 -0
  311. package/dist/nestjs/index.d.ts +2 -2
  312. package/dist/nestjs/index.js +1 -1
  313. package/dist/next/index.d.ts +105 -55
  314. package/dist/next/index.js +204 -170
  315. package/dist/node/index.d.ts +2 -2
  316. package/dist/node/index.js +1 -1
  317. package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
  318. package/dist/openapi/index.d.ts +4 -2
  319. package/dist/openapi/index.js +21 -343
  320. package/dist/optional-peer-D1pi-skw.js +24 -0
  321. package/dist/orpc/index.d.ts +8 -8
  322. package/dist/orpc/index.js +21 -20
  323. package/dist/otel/index.d.ts +3 -3
  324. package/dist/otel/index.js +7 -7
  325. package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
  326. package/dist/overlay/index.d.ts +233 -0
  327. package/dist/overlay/index.js +554 -0
  328. package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
  329. package/dist/plugins/actor/index.d.ts +1 -1
  330. package/dist/plugins/actor/index.js +1 -1
  331. package/dist/plugins/rules/index.d.ts +2 -2
  332. package/dist/plugins/rules/index.js +1 -1
  333. package/dist/plugins/soft-delete/index.d.ts +3 -3
  334. package/dist/plugins/soft-delete/index.js +9 -2
  335. package/dist/plugins/tenant/index.d.ts +7 -2
  336. package/dist/plugins/tenant/index.js +16 -2
  337. package/dist/plugins/timestamps/index.d.ts +1 -1
  338. package/dist/plugins/timestamps/index.js +8 -1
  339. package/dist/plugins/validation/index.d.ts +2 -2
  340. package/dist/plugins/validation/index.js +4 -4
  341. package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
  342. package/dist/postgres/index.d.ts +4 -4
  343. package/dist/postgres/index.js +2 -1
  344. package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
  345. package/dist/powersync/index.d.ts +5 -5
  346. package/dist/powersync/index.js +4 -4
  347. package/dist/powersync/react/index.d.ts +3 -3
  348. package/dist/powersync/react/index.js +1 -1
  349. package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
  350. package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
  351. package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
  352. package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
  353. package/dist/query/index.d.ts +2 -2
  354. package/dist/query/index.js +1 -1
  355. package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
  356. package/dist/rate-limit-Bw7HgmFj.js +260 -0
  357. package/dist/react/index.d.ts +9 -9
  358. package/dist/react/index.js +4 -4
  359. package/dist/react/native/index.d.ts +1 -1
  360. package/dist/react/native/index.js +2 -2
  361. package/dist/react/server.d.ts +10 -10
  362. package/dist/react/server.js +3 -3
  363. package/dist/react/session.d.ts +2 -2
  364. package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
  365. package/dist/react-router/index.d.ts +6 -6
  366. package/dist/react-router/index.js +9 -11
  367. package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
  368. package/dist/realtime/index.d.ts +3 -3
  369. package/dist/realtime/index.js +30 -36
  370. package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
  371. package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
  372. package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
  373. package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
  374. package/dist/resource--vTrBe6I.d.ts +103 -0
  375. package/dist/resource-BqNqlYg9.js +91 -0
  376. package/dist/resource-DA811u_4.js +463 -0
  377. package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
  378. package/dist/resource-schemas-BJ518zFH.js +79 -0
  379. package/dist/resource-types-CqB6GWGT.d.ts +141 -0
  380. package/dist/resources-BVYPnuLo.js +56 -0
  381. package/dist/resources-DZSk8tXJ.d.ts +7 -0
  382. package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
  383. package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
  384. package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
  385. package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
  386. package/dist/server/index.d.ts +81 -19
  387. package/dist/server/index.js +16 -14
  388. package/dist/{server-Bh0EVSwU.d.ts → server-types-CrAmZ8jv.d.ts} +92 -36
  389. package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
  390. package/dist/shared-DTneRoxi.js +14 -0
  391. package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
  392. package/dist/signatures-BRS_p3WD.d.ts +34 -0
  393. package/dist/signatures-DsWv_bYR.js +103 -0
  394. package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
  395. package/dist/solid/index.d.ts +9 -18
  396. package/dist/solid/index.js +2 -2
  397. package/dist/solid-start/index.d.ts +6 -6
  398. package/dist/solid-start/index.js +7 -7
  399. package/dist/spec/index.d.ts +134 -0
  400. package/dist/spec/index.js +353 -0
  401. package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
  402. package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
  403. package/dist/sql/index.d.ts +145 -119
  404. package/dist/sql/index.js +19921 -19798
  405. package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
  406. package/dist/ssr/index.d.ts +4 -4
  407. package/dist/ssr/index.js +3 -2
  408. package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
  409. package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
  410. package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
  411. package/dist/storage/index.d.ts +4 -6
  412. package/dist/storage/index.js +16 -17
  413. package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
  414. package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
  415. package/dist/streams/index.d.ts +4 -4
  416. package/dist/streams/index.js +5 -4
  417. package/dist/streams/redis/index.d.ts +1 -1
  418. package/dist/streams/redis/index.js +5 -11
  419. package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
  420. package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
  421. package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
  422. package/dist/{support-ig_K4PvS.js → support-D1pFFouF.js} +71 -35
  423. package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
  424. package/dist/svelte/index.d.ts +8 -17
  425. package/dist/svelte/index.js +2 -2
  426. package/dist/sveltekit/index.d.ts +7 -7
  427. package/dist/sveltekit/index.js +10 -12
  428. package/dist/table-schema-htM_SbCW.js +286 -0
  429. package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
  430. package/dist/tanstack-db/index.d.ts +2 -2
  431. package/dist/tanstack-db/supabase/index.d.ts +52 -0
  432. package/dist/tanstack-db/supabase/index.js +97 -0
  433. package/dist/tanstack-start/index.d.ts +6 -6
  434. package/dist/tanstack-start/index.js +8 -12
  435. package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
  436. package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
  437. package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
  438. package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
  439. package/dist/testing/index.d.ts +249 -118
  440. package/dist/testing/index.js +1418 -870
  441. package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
  442. package/dist/types-BRTSpOIh.js +5 -0
  443. package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
  444. package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
  445. package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
  446. package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
  447. package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
  448. package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
  449. package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
  450. package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
  451. package/dist/vercel-connect/index.d.ts +1 -1
  452. package/dist/vercel-connect/index.js +5 -11
  453. package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
  454. package/dist/verify-CJbYfADA.js +124 -0
  455. package/dist/{version-C6OfRAIn.js → version-Cq8gfDbd.js} +1 -1
  456. package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
  457. package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
  458. package/dist/vue/index.d.ts +9 -18
  459. package/dist/vue/index.js +2 -2
  460. package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
  461. package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
  462. package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
  463. package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
  464. package/dist/workflow-sdk/builder/index.d.ts +3 -3
  465. package/dist/workflow-sdk/index.d.ts +1 -1
  466. package/dist/workflow-sdk/world/index.d.ts +23 -17
  467. package/dist/workflow-sdk/world/index.js +59 -76
  468. package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
  469. package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
  470. package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
  471. package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
  472. package/package.json +54 -3
  473. package/schemas/config-v1.json +243 -0
  474. package/schemas/doctor-report-v1.json +4 -1
  475. package/schemas/spec-manifest-v1.json +95 -0
  476. package/skills/better-supabase/SKILL.md +8 -4
  477. package/skills/better-supabase/references/troubleshooting.md +20 -20
  478. package/skills/better-supabase-api/references/expo.md +6 -3
  479. package/skills/better-supabase-api/references/powersync.md +2 -1
  480. package/dist/cli/config-B9HkL8nF.js +0 -2
  481. package/dist/cli/gen-CCMc39Dx.js +0 -3100
  482. package/dist/cli/gen-DRmzPI75.js +0 -2
  483. package/dist/cli/prompts-BTYQGunc.js +0 -2
  484. package/dist/cli/run-BqDPh9UH.js +0 -361
  485. package/dist/config-Dn7F5k9A.js +0 -202
  486. package/dist/history-BZih6SFP.js +0 -64
  487. package/dist/index-BkWT_uBO.d.ts +0 -51
  488. package/dist/index-Bxih3l0u.d.ts +0 -81
  489. package/dist/index-CaxrMD1A.d.ts +0 -1
  490. package/dist/index-DQh4VCc9.d.ts +0 -98
  491. package/dist/keys-4MnkWTTh.js +0 -35
  492. package/dist/messages-DYP0sUTe.d.ts +0 -59
  493. package/dist/modules-dxrVK3ID.js +0 -228
  494. package/dist/path-Cv__-OTj.d.ts +0 -17
  495. package/dist/resource-BsvzCMlX.js +0 -212
  496. package/dist/resource-IPS5xi9q.d.ts +0 -74
  497. package/dist/template-CwO38Do8.d.ts +0 -6
  498. package/dist/verify-DL41hbvY.js +0 -232
  499. package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
@@ -0,0 +1,676 @@
1
+ import { r as isPlainObject } from "./clone-dN9XOL1K.js";
2
+ import { t as SPEC_PINS } from "./spec-pins-DsLfUH7l.js";
3
+ import { c as mergeJson, l as pointerToken, s as pascal, t as buildApiModel } from "./build-hPwk3_X5.js";
4
+ //#region src/spec/format.ts
5
+ /** Identity helper that fixes `apiVersion` and checks that the default version exists. */
6
+ function defineDocumentFormat(format) {
7
+ if (!Object.hasOwn(format.versions, format.defaultVersion)) throw new TypeError(`Document format "${format.id}": the default version "${format.defaultVersion}" is not in versions`);
8
+ if (format.versions[format.defaultVersion].status === "preview") throw new TypeError(`Document format "${format.id}": a preview version cannot be the default`);
9
+ return {
10
+ ...format,
11
+ apiVersion: 1
12
+ };
13
+ }
14
+ //#endregion
15
+ //#region src/openapi/schema30.ts
16
+ /** Keywords whose value is one subschema. */
17
+ const SINGLE = /* @__PURE__ */ new Set([
18
+ "items",
19
+ "additionalProperties",
20
+ "not"
21
+ ]);
22
+ /** Keywords whose value is a list of subschemas. */
23
+ const LISTS = /* @__PURE__ */ new Set([
24
+ "allOf",
25
+ "anyOf",
26
+ "oneOf"
27
+ ]);
28
+ /** 2020-12 keywords the OpenAPI 3.0 Schema Object does not have. */
29
+ const DROPPED = /* @__PURE__ */ new Set([
30
+ "$schema",
31
+ "$id",
32
+ "$anchor",
33
+ "$dynamicAnchor",
34
+ "$dynamicRef",
35
+ "$comment",
36
+ "$defs",
37
+ "$vocabulary",
38
+ "prefixItems",
39
+ "contains",
40
+ "minContains",
41
+ "maxContains",
42
+ "propertyNames",
43
+ "patternProperties",
44
+ "dependentRequired",
45
+ "dependentSchemas",
46
+ "unevaluatedItems",
47
+ "unevaluatedProperties",
48
+ "if",
49
+ "then",
50
+ "else",
51
+ "contentMediaType",
52
+ "contentSchema"
53
+ ]);
54
+ const isNullSchema = (value) => isPlainObject(value) && value["type"] === "null" && Object.keys(value).length === 1;
55
+ /**
56
+ * Rewrites a JSON Schema 2020-12 schema into the OpenAPI 3.0 Schema Object:
57
+ * `null` in `type` or in an `anyOf`/`oneOf` becomes `nullable`, a type list
58
+ * becomes `anyOf`, `const` becomes a one-value `enum`, `examples` becomes
59
+ * `example`, numeric `exclusiveMinimum`/`exclusiveMaximum` become the
60
+ * boolean form, `contentEncoding: base64` becomes `format: byte`, and a
61
+ * `$ref` with siblings is wrapped in `allOf`. Keywords 3.0 does not have
62
+ * are left out. The input is not changed.
63
+ */
64
+ function toOpenApi30Schema(schema) {
65
+ const out = {};
66
+ let nullable = false;
67
+ for (const [key, value] of Object.entries(schema)) {
68
+ if (DROPPED.has(key)) continue;
69
+ if (key === "properties" && isPlainObject(value)) out[key] = Object.fromEntries(Object.entries(value).map(([name, child]) => [name, isPlainObject(child) ? toOpenApi30Schema(child) : child]));
70
+ else if (SINGLE.has(key) && isPlainObject(value)) out[key] = toOpenApi30Schema(value);
71
+ else if (LISTS.has(key) && Array.isArray(value)) {
72
+ const branches = value;
73
+ const rest = branches.filter((branch) => !isNullSchema(branch));
74
+ if (key !== "allOf" && rest.length < branches.length) nullable = true;
75
+ out[key] = rest.map((branch) => isPlainObject(branch) ? toOpenApi30Schema(branch) : branch);
76
+ } else if (key === "examples" && Array.isArray(value)) {
77
+ if (value.length > 0) out["example"] = value[0];
78
+ } else if ((key === "exclusiveMinimum" || key === "exclusiveMaximum") && typeof value === "number") {
79
+ out[key === "exclusiveMinimum" ? "minimum" : "maximum"] = value;
80
+ out[key] = true;
81
+ } else if (key === "const") out["enum"] = [value];
82
+ else if (key === "contentEncoding") {
83
+ if (value === "base64" && schema["format"] === void 0) out["format"] = "byte";
84
+ } else if (key === "type" && Array.isArray(value)) {
85
+ const types = value;
86
+ const rest = types.filter((type) => type !== "null");
87
+ if (rest.length < types.length) nullable = true;
88
+ if (rest.length === 1) out["type"] = rest[0];
89
+ else if (rest.length > 1) out["anyOf"] = rest.map((type) => ({ type }));
90
+ } else if (key === "type" && value === "null") {
91
+ nullable = true;
92
+ out["enum"] = [null];
93
+ } else out[key] = value;
94
+ }
95
+ for (const key of ["anyOf", "oneOf"]) {
96
+ const branches = out[key];
97
+ if (!Array.isArray(branches) || branches.length !== 1) continue;
98
+ const only = branches[0];
99
+ if (!isPlainObject(only)) continue;
100
+ delete out[key];
101
+ if (typeof only["$ref"] === "string") out["allOf"] = [only];
102
+ else for (const [name, entry] of Object.entries(only)) if (!(name in out)) out[name] = entry;
103
+ }
104
+ if (typeof out["$ref"] === "string" && Object.keys(out).length > 1) {
105
+ const { $ref, ...siblings } = out;
106
+ return {
107
+ allOf: [{ $ref }],
108
+ ...siblings,
109
+ ...nullable ? { nullable: true } : {}
110
+ };
111
+ }
112
+ if (nullable) {
113
+ if (typeof out["$ref"] === "string") return {
114
+ allOf: [{ $ref: out["$ref"] }],
115
+ nullable: true
116
+ };
117
+ out["nullable"] = true;
118
+ }
119
+ return out;
120
+ }
121
+ const mapEntries = (value, convert) => isPlainObject(value) ? Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, isPlainObject(entry) ? convert(entry) : entry])) : value;
122
+ const withSchema = (holder) => {
123
+ const out = { ...holder };
124
+ for (const key of ["schema", "x-oai-itemSchema"]) {
125
+ const schema = out[key];
126
+ if (isPlainObject(schema)) out[key] = toOpenApi30Schema(schema);
127
+ }
128
+ if (isPlainObject(out["content"])) out["content"] = mapEntries(out["content"], withSchema);
129
+ if (isPlainObject(out["headers"])) out["headers"] = mapEntries(out["headers"], withSchema);
130
+ return out;
131
+ };
132
+ const lowerParameters = (value) => Array.isArray(value) ? value.map((entry) => isPlainObject(entry) ? withSchema(entry) : entry) : value;
133
+ const lowerOperation$1 = (operation) => {
134
+ const out = { ...operation };
135
+ out["parameters"] = lowerParameters(out["parameters"]);
136
+ if (out["parameters"] === void 0) delete out["parameters"];
137
+ if (isPlainObject(out["requestBody"])) out["requestBody"] = withSchema(out["requestBody"]);
138
+ if (isPlainObject(out["responses"])) out["responses"] = mapEntries(out["responses"], withSchema);
139
+ return out;
140
+ };
141
+ const PATH_ITEM_LISTS = /* @__PURE__ */ new Set(["parameters"]);
142
+ const lowerPathItem = (item) => {
143
+ const out = {};
144
+ for (const [key, value] of Object.entries(item)) if (PATH_ITEM_LISTS.has(key)) out[key] = lowerParameters(value);
145
+ else if (isPlainObject(value) && !key.startsWith("x-") && key !== "servers") out[key] = lowerOperation$1(value);
146
+ else out[key] = value;
147
+ return out;
148
+ };
149
+ /** Lowers every Schema Object position of an OpenAPI document to the 3.0 dialect. */
150
+ function lowerDocumentSchemas30(document) {
151
+ const out = { ...document };
152
+ if (isPlainObject(out["paths"])) out["paths"] = mapEntries(out["paths"], lowerPathItem);
153
+ const components = out["components"];
154
+ if (isPlainObject(components)) {
155
+ const lowered = {
156
+ ...components,
157
+ schemas: mapEntries(components["schemas"], toOpenApi30Schema)
158
+ };
159
+ for (const key of [
160
+ "responses",
161
+ "parameters",
162
+ "requestBodies",
163
+ "headers"
164
+ ]) if (isPlainObject(components[key])) lowered[key] = mapEntries(components[key], withSchema);
165
+ if (lowered["schemas"] === void 0) delete lowered["schemas"];
166
+ out["components"] = lowered;
167
+ }
168
+ return out;
169
+ }
170
+ //#endregion
171
+ //#region src/openapi/types.ts
172
+ /** The `openapi` field `3.3-preview` emits, as in the v3.3-dev branch. */
173
+ const OPENAPI_33_PREVIEW_VERSION = "3.3.0";
174
+ /** The file name `openapiFormat` writes for every version. */
175
+ const OPENAPI_FILE_NAME = "openapi.json";
176
+ //#endregion
177
+ //#region src/openapi/format.ts
178
+ const DIALECT = "https://json-schema.org/draft/2020-12/schema";
179
+ const OPENAPI_FIELD = {
180
+ "3.0": SPEC_PINS.openapi30,
181
+ "3.1": SPEC_PINS.openapi31,
182
+ "3.2": SPEC_PINS.openapi32,
183
+ "3.3-preview": OPENAPI_33_PREVIEW_VERSION
184
+ };
185
+ /** Path Item fields that hold an Operation Object. */
186
+ const METHODS = /* @__PURE__ */ new Set([
187
+ "get",
188
+ "put",
189
+ "post",
190
+ "delete",
191
+ "options",
192
+ "head",
193
+ "patch",
194
+ "trace",
195
+ "query"
196
+ ]);
197
+ const omitUndefined = (value) => Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== void 0));
198
+ function lowerContent(content, features) {
199
+ return Object.fromEntries(Object.entries(content).map(([type, media]) => [type, omitUndefined({
200
+ schema: media.schema,
201
+ [features.native32 ? "itemSchema" : "x-oai-itemSchema"]: media.itemSchema,
202
+ examples: media.examples ? Object.fromEntries(Object.entries(media.examples).map(([name, example]) => [name, omitUndefined({ ...example })])) : void 0
203
+ })]));
204
+ }
205
+ function lowerResponse(response, features) {
206
+ return omitUndefined({
207
+ [features.native32 ? "summary" : "x-oai-summary"]: response.summary,
208
+ description: response.description,
209
+ headers: response.headers ? Object.fromEntries(Object.entries(response.headers).map(([name, header]) => [name, omitUndefined({ ...header })])) : void 0,
210
+ content: response.content ? lowerContent(response.content, features) : void 0
211
+ });
212
+ }
213
+ const lowerResponseOrRef = (response, features) => "ref" in response ? { $ref: `#/components/responses/${response.ref}` } : lowerResponse(response, features);
214
+ const lowerParameter = (parameter) => omitUndefined({ ...parameter });
215
+ function lowerSecurity(requirements, features) {
216
+ return requirements.filter((requirement) => Object.keys(requirement).every((name) => !features.dropped.has(name))).map((requirement) => ({ ...requirement }));
217
+ }
218
+ function lowerScheme(scheme, features) {
219
+ switch (scheme.type) {
220
+ case "http":
221
+ case "apiKey":
222
+ case "openIdConnect": return omitUndefined({ ...scheme });
223
+ case "oauth2": {
224
+ const { metadataUrl, ...rest } = scheme;
225
+ return omitUndefined({
226
+ ...rest,
227
+ [features.native32 ? "oauth2MetadataUrl" : `${features.prefix}oauth2MetadataUrl`]: metadataUrl
228
+ });
229
+ }
230
+ case "profile": return features.is33 ? omitUndefined({ ...scheme }) : void 0;
231
+ default: return scheme;
232
+ }
233
+ }
234
+ function lowerOperation(operation, features) {
235
+ return omitUndefined({
236
+ operationId: operation.id,
237
+ summary: operation.summary,
238
+ description: operation.description,
239
+ tags: operation.tags.length > 0 ? [...operation.tags] : void 0,
240
+ deprecated: operation.deprecated,
241
+ parameters: operation.parameters.length > 0 ? operation.parameters.map(lowerParameter) : void 0,
242
+ requestBody: operation.requestBody ? omitUndefined({
243
+ description: operation.requestBody.description,
244
+ required: operation.requestBody.required,
245
+ content: lowerContent(operation.requestBody.content, features)
246
+ }) : void 0,
247
+ responses: Object.fromEntries(Object.entries(operation.responses).map(([status, response]) => [status, lowerResponseOrRef(response, features)])),
248
+ security: operation.security ? lowerSecurity(operation.security, features) : void 0,
249
+ ...operation.extensions
250
+ });
251
+ }
252
+ const sameJson = (a, b) => JSON.stringify(a) === JSON.stringify(b);
253
+ /**
254
+ * Builds one Path Item. Path parameters every operation shares move to the
255
+ * Path Item; in 3.3 a `security` every operation shares does too.
256
+ */
257
+ function pathItem(operations, features) {
258
+ const pathParameters = (operation) => Array.isArray(operation["parameters"]) ? operation["parameters"].filter((parameter) => isPlainObject(parameter) && parameter["in"] === "path") : [];
259
+ const first = operations[0];
260
+ const shared = first ? pathParameters(first.operation) : [];
261
+ const hoist = shared.length > 0 && operations.every(({ operation }) => sameJson(pathParameters(operation), shared));
262
+ const firstSecurity = first?.operation["security"];
263
+ const hoistSecurity = features.is33 && firstSecurity !== void 0 && operations.every(({ operation }) => sameJson(operation["security"], firstSecurity));
264
+ const item = {};
265
+ if (hoist) item["parameters"] = shared;
266
+ if (hoistSecurity) item["security"] = firstSecurity;
267
+ for (const { method, operation } of operations) {
268
+ const out = { ...operation };
269
+ if (hoist) {
270
+ const rest = Array.isArray(out["parameters"]) ? out["parameters"].filter((parameter) => !isPlainObject(parameter) || parameter["in"] !== "path") : [];
271
+ if (rest.length > 0) out["parameters"] = rest;
272
+ else delete out["parameters"];
273
+ }
274
+ if (hoistSecurity) delete out["security"];
275
+ item[method] = out;
276
+ }
277
+ return item;
278
+ }
279
+ const STANDARD_WEBHOOK_HEADERS = [
280
+ {
281
+ name: "webhook-id",
282
+ in: "header",
283
+ required: true,
284
+ description: "Unique message id; the same on every retry.",
285
+ schema: { type: "string" }
286
+ },
287
+ {
288
+ name: "webhook-timestamp",
289
+ in: "header",
290
+ required: true,
291
+ description: "Unix time in seconds when the message was sent.",
292
+ schema: {
293
+ type: "string",
294
+ pattern: "^[0-9]+$"
295
+ }
296
+ },
297
+ {
298
+ name: "webhook-signature",
299
+ in: "header",
300
+ required: true,
301
+ description: "Space-separated signatures of `id.timestamp.body`, each `v1,<base64>`.",
302
+ schema: { type: "string" }
303
+ }
304
+ ];
305
+ function lowerWebhook(webhook) {
306
+ return { post: omitUndefined({
307
+ operationId: `on${pascal(webhook.id.replaceAll(".", "_"))}`,
308
+ summary: webhook.summary,
309
+ description: webhook.description,
310
+ parameters: webhook.standardWebhooks ? STANDARD_WEBHOOK_HEADERS.map((header) => ({ ...header })) : void 0,
311
+ requestBody: {
312
+ required: true,
313
+ content: { "application/json": { schema: webhook.payload } }
314
+ },
315
+ responses: { "2XX": { description: "The receiver accepted the event." } }
316
+ }) };
317
+ }
318
+ function lowerTags(model, features) {
319
+ return model.tags.map((tag) => features.native32 ? omitUndefined({ ...tag }) : omitUndefined({
320
+ name: tag.name,
321
+ description: tag.description,
322
+ [`${features.prefix}summary`]: tag.summary,
323
+ [`${features.prefix}parent`]: tag.parent,
324
+ [`${features.prefix}kind`]: tag.kind
325
+ }));
326
+ }
327
+ function lowerOpenApi(model, version, ctx) {
328
+ const is33 = version === "3.3-preview";
329
+ const dropped = new Set(is33 ? [] : Object.entries(model.securitySchemes).filter(([, scheme]) => scheme.type === "profile").map(([name]) => name));
330
+ const features = {
331
+ version,
332
+ native32: version === "3.2" || is33,
333
+ is30: version === "3.0",
334
+ is33,
335
+ prefix: model.extensionPrefix,
336
+ dropped
337
+ };
338
+ for (const name of dropped) ctx.report({
339
+ code: "preview-only",
340
+ severity: "info",
341
+ message: `Security scheme "${name}" uses Security Profiles, which only 3.3-preview emits; it and the requirements that name it are left out`,
342
+ pointer: `/components/securitySchemes/${pointerToken(name)}`
343
+ });
344
+ const grouped = /* @__PURE__ */ new Map();
345
+ const placed = [];
346
+ for (const operation of model.operations) {
347
+ if (operation.method === "query" && !features.native32) {
348
+ ctx.report({
349
+ code: "method-unsupported",
350
+ severity: "warning",
351
+ message: `Operation "${operation.id}" uses the QUERY method, which OpenAPI ${version} cannot describe; it is left out`,
352
+ pointer: `/paths/${pointerToken(operation.path)}`
353
+ });
354
+ continue;
355
+ }
356
+ const list = grouped.get(operation.path) ?? [];
357
+ list.push({
358
+ method: operation.method,
359
+ operation: lowerOperation(operation, features)
360
+ });
361
+ grouped.set(operation.path, list);
362
+ placed.push(operation);
363
+ }
364
+ const paths = {};
365
+ for (const [path, operations] of grouped) paths[path] = pathItem(operations, features);
366
+ const securitySchemes = {};
367
+ for (const [name, scheme] of Object.entries(model.securitySchemes)) {
368
+ const lowered = lowerScheme(scheme, features);
369
+ if (lowered) securitySchemes[name] = lowered;
370
+ }
371
+ const components = {
372
+ schemas: structuredClone(model.schemas),
373
+ responses: Object.fromEntries(Object.entries(model.responses).map(([name, response]) => [name, lowerResponse(response, features)])),
374
+ securitySchemes
375
+ };
376
+ if (is33 && model.securityProfileRequirements) components["securityProfileRequirements"] = structuredClone(model.securityProfileRequirements);
377
+ let webhooks;
378
+ if (model.webhooks.length > 0) {
379
+ if (features.is30) ctx.report({
380
+ code: "webhooks-unsupported",
381
+ severity: "warning",
382
+ message: `OpenAPI 3.0 has no webhooks; ${model.webhooks.length} webhook(s) are left out`
383
+ });
384
+ else webhooks = Object.fromEntries(model.webhooks.map((webhook) => [webhook.id, lowerWebhook(webhook)]));
385
+ }
386
+ const info = features.is30 ? omitUndefined({
387
+ ...model.info,
388
+ summary: void 0,
389
+ license: model.info.license ? omitUndefined({
390
+ ...model.info.license,
391
+ identifier: void 0
392
+ }) : void 0
393
+ }) : omitUndefined({ ...model.info });
394
+ let document = omitUndefined({
395
+ openapi: OPENAPI_FIELD[version],
396
+ [features.native32 ? "$self" : "x-oai-$self"]: model.self,
397
+ info: structuredClone(info),
398
+ jsonSchemaDialect: features.is30 ? void 0 : DIALECT,
399
+ servers: model.servers.length > 0 ? model.servers.map((server) => omitUndefined({
400
+ url: server.url,
401
+ description: server.description,
402
+ [features.native32 ? "name" : "x-oai-name"]: server.name
403
+ })) : void 0,
404
+ tags: lowerTags(model, features),
405
+ security: lowerSecurity(model.security, features),
406
+ paths,
407
+ webhooks,
408
+ components,
409
+ [`${features.prefix}preview`]: is33 ? SPEC_PINS.openapi33Preview : void 0
410
+ });
411
+ model.fragments.forEach((fragment, index) => {
412
+ document = mergeJson(document, fragment, (pointer) => {
413
+ ctx.report({
414
+ code: "fragment-conflict",
415
+ severity: "warning",
416
+ message: `Fragment ${index} replaces a generated value`,
417
+ pointer
418
+ });
419
+ });
420
+ });
421
+ for (const operation of placed) {
422
+ if (!operation.extend) continue;
423
+ const patch = { paths: { [operation.path]: { [operation.method]: operation.extend } } };
424
+ document = mergeJson(document, patch);
425
+ }
426
+ if (features.is30) document = lowerDocumentSchemas30(document);
427
+ if (!isOpenApiDocument(document)) throw new TypeError("better-supabase/openapi: a fragment removed a required document field");
428
+ return document;
429
+ }
430
+ /** The fields every OpenAPI document this format renders has. */
431
+ function isOpenApiDocument(value) {
432
+ return typeof value["openapi"] === "string" && isPlainObject(value["info"]) && isPlainObject(value["paths"]) && isPlainObject(value["components"]) && Array.isArray(value["tags"]) && Array.isArray(value["security"]);
433
+ }
434
+ const PATH_PARAM = /\{([^}]+)\}/g;
435
+ function resolves(document, ref) {
436
+ if (!ref.startsWith("#")) return true;
437
+ let node = document;
438
+ for (const raw of ref.slice(2).split("/")) {
439
+ if (raw === "" && ref === "#") break;
440
+ const key = raw.replaceAll("~1", "/").replaceAll("~0", "~");
441
+ if (Array.isArray(node)) node = node[Number(key)];
442
+ else if (isPlainObject(node)) node = node[key];
443
+ else return false;
444
+ if (node === void 0) return false;
445
+ }
446
+ return true;
447
+ }
448
+ function collectRefs(value, pointer, out) {
449
+ if (Array.isArray(value)) value.forEach((item, index) => {
450
+ collectRefs(item, `${pointer}/${index}`, out);
451
+ });
452
+ else if (isPlainObject(value)) for (const [key, item] of Object.entries(value)) if (key === "$ref" && typeof item === "string") out.push([pointer, item]);
453
+ else collectRefs(item, `${pointer}/${pointerToken(key)}`, out);
454
+ }
455
+ /** The keys of `value[key]` when it is an object; documents read from disk may omit any field. */
456
+ function keysAt(value, key) {
457
+ if (!isPlainObject(value)) return [];
458
+ const child = value[key];
459
+ return isPlainObject(child) ? Object.keys(child) : [];
460
+ }
461
+ function lintOpenApi(document) {
462
+ const diagnostics = [];
463
+ const ids = /* @__PURE__ */ new Map();
464
+ const components = document.components;
465
+ const schemes = new Set(keysAt(components, "securitySchemes"));
466
+ const checkSecurity = (requirements, pointer) => {
467
+ if (!Array.isArray(requirements)) return;
468
+ const list = requirements;
469
+ for (const requirement of list) {
470
+ if (!isPlainObject(requirement)) continue;
471
+ for (const name of Object.keys(requirement)) if (!schemes.has(name)) diagnostics.push({
472
+ code: "security-unresolved",
473
+ severity: "error",
474
+ message: `Security requirement names an unknown scheme "${name}"`,
475
+ pointer
476
+ });
477
+ }
478
+ };
479
+ checkSecurity(document.security, "/security");
480
+ const paths = document.paths;
481
+ for (const [path, item] of Object.entries(isPlainObject(paths) ? paths : {})) {
482
+ if (!isPlainObject(item)) continue;
483
+ const base = `/paths/${pointerToken(path)}`;
484
+ const templated = new Set([...path.matchAll(PATH_PARAM)].map((match) => match[1] ?? ""));
485
+ const shared = Array.isArray(item["parameters"]) ? item["parameters"] : [];
486
+ checkSecurity(item["security"], `${base}/security`);
487
+ for (const [method, operation] of Object.entries(item)) {
488
+ if (!METHODS.has(method) || !isPlainObject(operation)) continue;
489
+ const pointer = `${base}/${method}`;
490
+ const id = operation["operationId"];
491
+ if (typeof id === "string") {
492
+ const seen = ids.get(id);
493
+ if (seen) diagnostics.push({
494
+ code: "operation-id-duplicate",
495
+ severity: "error",
496
+ message: `operationId "${id}" is also used at ${seen}`,
497
+ pointer
498
+ });
499
+ else ids.set(id, pointer);
500
+ }
501
+ checkSecurity(operation["security"], `${pointer}/security`);
502
+ const own = Array.isArray(operation["parameters"]) ? operation["parameters"] : [];
503
+ const declared = /* @__PURE__ */ new Set();
504
+ for (const parameter of [...shared, ...own]) {
505
+ if (!isPlainObject(parameter) || parameter["in"] !== "path") continue;
506
+ const name = String(parameter["name"]);
507
+ declared.add(name);
508
+ if (!templated.has(name)) diagnostics.push({
509
+ code: "path-param-unknown",
510
+ severity: "error",
511
+ message: `Path parameter "${name}" is not in the path template`,
512
+ pointer
513
+ });
514
+ }
515
+ for (const name of templated) if (!declared.has(name)) diagnostics.push({
516
+ code: "path-param-missing",
517
+ severity: "error",
518
+ message: `Path template parameter "${name}" has no parameter`,
519
+ pointer
520
+ });
521
+ }
522
+ }
523
+ const refs = [];
524
+ collectRefs(document, "", refs);
525
+ for (const [pointer, ref] of refs) if (!resolves(document, ref)) diagnostics.push({
526
+ code: "ref-unresolved",
527
+ severity: "error",
528
+ message: `$ref "${ref}" does not resolve inside the document`,
529
+ pointer
530
+ });
531
+ return diagnostics;
532
+ }
533
+ /**
534
+ * OpenAPI as a `DocumentFormat`. 3.1 is the default; 3.0 is legacy (schemas
535
+ * lowered to the 3.0 Schema Object); 3.2 has native `$self`, nested tags,
536
+ * `itemSchema`, `oauth2MetadataUrl` and `query`; `3.3-preview` follows the
537
+ * v3.3-dev branch at `SPEC_PINS.openapi33Preview`, with Path Item
538
+ * `security` and the Security Profiles proposal. Below 3.2, the 3.2 fields
539
+ * travel as the registered `x-oai-*` extensions where one exists, and as
540
+ * the model's prefixed extensions otherwise.
541
+ */
542
+ const openapiFormat = defineDocumentFormat({
543
+ id: "openapi",
544
+ versions: {
545
+ "3.0": {
546
+ pin: SPEC_PINS.openapi30,
547
+ status: "legacy"
548
+ },
549
+ "3.1": {
550
+ pin: SPEC_PINS.openapi31,
551
+ status: "stable"
552
+ },
553
+ "3.2": {
554
+ pin: SPEC_PINS.openapi32,
555
+ status: "stable"
556
+ },
557
+ "3.3-preview": {
558
+ pin: SPEC_PINS.openapi33Preview,
559
+ status: "preview"
560
+ }
561
+ },
562
+ defaultVersion: "3.1",
563
+ lower: lowerOpenApi,
564
+ lint: lintOpenApi,
565
+ fileName: () => OPENAPI_FILE_NAME
566
+ });
567
+ //#endregion
568
+ //#region src/spec/api.ts
569
+ function dedupe(diagnostics) {
570
+ const seen = /* @__PURE__ */ new Set();
571
+ return diagnostics.filter((diagnostic) => {
572
+ const key = `${diagnostic.code}\u0000${diagnostic.pointer ?? ""}\u0000${diagnostic.message}`;
573
+ if (seen.has(key)) return false;
574
+ seen.add(key);
575
+ return true;
576
+ });
577
+ }
578
+ /**
579
+ * The API model for a `defineSupabase()` result, and the documents it
580
+ * renders. The model is built once per options object; each format and
581
+ * version is lowered once and copied for every render.
582
+ *
583
+ * ```ts
584
+ * const api = defineApi(betterSupabase, {
585
+ * info: { title: "CRM API", version: "1.0.0" },
586
+ * resources: { customers: { list: customerList } },
587
+ * });
588
+ * const { document } = api.openapi({ version: "3.2" });
589
+ * ```
590
+ */
591
+ function defineApi(source, options) {
592
+ const built = buildApiModel(source, options);
593
+ const lowered = /* @__PURE__ */ new WeakMap();
594
+ const lower = (format, version) => {
595
+ let byVersion = lowered.get(format);
596
+ if (!byVersion) {
597
+ byVersion = /* @__PURE__ */ new Map();
598
+ lowered.set(format, byVersion);
599
+ }
600
+ let hit = byVersion.get(version);
601
+ if (!hit) {
602
+ const diagnostics = [];
603
+ hit = {
604
+ document: format.lower(built.model, version, { report: (diagnostic) => {
605
+ diagnostics.push(diagnostic);
606
+ } }),
607
+ diagnostics
608
+ };
609
+ byVersion.set(version, hit);
610
+ }
611
+ return hit;
612
+ };
613
+ const render = (format, renderOptions = {}) => {
614
+ const fallback = format.defaultVersion;
615
+ const version = renderOptions.version ?? fallback;
616
+ const status = format.versions[version];
617
+ if (!status) throw new TypeError(`Document format "${format.id}" has no version "${String(version)}"`);
618
+ const diagnostics = [...built.diagnostics];
619
+ if (status.status === "preview") diagnostics.push({
620
+ code: "preview-version",
621
+ severity: "warning",
622
+ message: `${format.id} ${String(version)} follows a draft (${status.pin}); its fields may change before release`
623
+ });
624
+ const base = lower(format, version);
625
+ diagnostics.push(...base.diagnostics);
626
+ let document = structuredClone(base.document);
627
+ if (renderOptions.transform) {
628
+ const rendered = {
629
+ format: format.id,
630
+ version,
631
+ document
632
+ };
633
+ document = renderOptions.transform(rendered) ?? document;
634
+ }
635
+ const overlays = renderOptions.overlays ?? [];
636
+ if (overlays.length > 0) {
637
+ const engine = renderOptions.applyOverlays ?? options.applyOverlays;
638
+ if (!engine) throw new TypeError("better-supabase/spec: overlays need applyOverlays (from better-supabase/overlay)");
639
+ const result = engine(document, overlays);
640
+ document = result.document;
641
+ diagnostics.push(...result.diagnostics ?? []);
642
+ }
643
+ diagnostics.push(...format.lint?.(document, version) ?? []);
644
+ return {
645
+ format: format.id,
646
+ version,
647
+ document,
648
+ diagnostics: dedupe(diagnostics),
649
+ fileName: format.fileName(version)
650
+ };
651
+ };
652
+ return {
653
+ model: built.model,
654
+ diagnostics: built.diagnostics,
655
+ render,
656
+ openapi(openapiOptions = {}) {
657
+ const { transform, version, overlays, applyOverlays } = openapiOptions;
658
+ const renderOptions = {
659
+ ...version === void 0 ? {} : { version },
660
+ ...overlays === void 0 ? {} : { overlays },
661
+ ...applyOverlays === void 0 ? {} : { applyOverlays },
662
+ ...transform === void 0 ? {} : { transform: (rendered) => transform(rendered) }
663
+ };
664
+ const result = render(openapiFormat, renderOptions);
665
+ return {
666
+ format: "openapi",
667
+ version: result.version,
668
+ document: result.document,
669
+ diagnostics: result.diagnostics,
670
+ fileName: result.fileName
671
+ };
672
+ }
673
+ };
674
+ }
675
+ //#endregion
676
+ export { toOpenApi30Schema as a, OPENAPI_FILE_NAME as i, openapiFormat as n, defineDocumentFormat as o, OPENAPI_33_PREVIEW_VERSION as r, defineApi as t };
@@ -1,8 +1,8 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { t as AsyncResult } from "./result-D7y2fT87.js";
3
- import { t as BlockTransport } from "./block-transport-DvaoPuZ9.js";
4
- import { n as AuthResolver } from "./resolve-ChTYeTEl.js";
5
- import { r as BlockTemporalOptions } from "./block-helpers-CKtbFcRv.js";
2
+ import { t as AsyncResult } from "./result-BchM1XZn.js";
3
+ import { t as BlockTransport } from "./block-transport-inD4fFq-.js";
4
+ import { n as AuthResolver } from "./resolve-MxXVWyhd.js";
5
+ import { r as BlockTemporalOptions } from "./block-helpers-C0Xj8War.js";
6
6
  import { JWTClaims } from "@supabase/server";
7
7
  //#region src/blocks/api-keys/api-keys.d.ts
8
8
  type ApiKeyState = "active" | "grace" | "revoked" | "expired";