better-supabase 0.5.1 → 0.6.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 (536) hide show
  1. package/README.md +187 -46
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/{actor-DaJjqD5R.d.ts → actor-CQTlc1Hh.d.ts} +1 -1
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-C_A-KEAz.js → doctor-B4JOm_ox.js} +991 -317
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-DMa6M7hV.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect-BKlaIu_M.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-Bo_NLT5n.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BCtlgDQx.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-Bv7gvfzC.d.ts → config-D44Y7PAv.d.ts} +406 -214
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-CFPX0Qft.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-BiJZ4t49.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/{impersonation-BgSHAYLf.js → impersonation-DcqaTBHx.js} +21 -6
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/mfa-Daak8ukG.d.ts +54 -0
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bn6HNKUe.js → resolve-D_IcnvFd.js} +248 -240
  385. package/dist/{impersonation-BmePsuxz.d.ts → resolve-KW8nCeL6.d.ts} +29 -69
  386. package/dist/{resource-mqfJW4YF.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-DNRFP7KR.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -22
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-BR1fJWOB.d.ts → server-CeVeeXwz.d.ts} +224 -85
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +313 -212
  413. package/dist/sql/index.js +34872 -6579
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-wHnK6zp-.js → support-BivNqSpK.js} +32 -11
  430. package/dist/{support-view-B8SlToQX.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +315 -41
  449. package/dist/testing/index.js +1046 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DOYTYwHP.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-CbgObAeb.d.ts → view-DbxLNu8L.d.ts} +22 -5
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +461 -20
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +20 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +47 -11
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-CIdSQZad.js +0 -2
  504. package/dist/cli/gen-CjElD1Vw.js +0 -2241
  505. package/dist/cli/read-sets-VQcPgxU9.js +0 -436
  506. package/dist/cli/sql-CVx-1O8G.js +0 -373
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/index-CWMDdEr4.d.ts +0 -50
  512. package/dist/index-DOESKG27.d.ts +0 -100
  513. package/dist/index-DmXSxbLi.d.ts +0 -62
  514. package/dist/index-Dp2VDwog.d.ts +0 -161
  515. package/dist/jobs/index.d.ts +0 -226
  516. package/dist/jobs/index.js +0 -1007
  517. package/dist/json-schema-m1fiwKgN.js +0 -208
  518. package/dist/kit-events-CTFDfSwb.js +0 -60
  519. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  520. package/dist/kits-CGLLrNPd.js +0 -157
  521. package/dist/mfa-Cu96oJdw.d.ts +0 -30
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-B1mZ7CgQ.js +0 -660
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-CEPwlw2G.d.ts +0 -89
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -122
@@ -0,0 +1,83 @@
1
+ import { a as evaluateCondition, c as topologicalOrder, i as durationMs, l as validateGraph, n as conditionOf, t as approved } from "./graph-BGyLLFLX.js";
2
+ //#region src/blocks/workflow-builder/executor.ts
3
+ /** The hook token of an approval node. */
4
+ const approvalToken = (runKey, node) => `${runKey}:${node}`;
5
+ const active = (edge, ran) => {
6
+ const outcome = ran.get(edge.source);
7
+ if (outcome === void 0) return false;
8
+ return edge.branch === void 0 || String(outcome) === edge.branch;
9
+ };
10
+ /**
11
+ * Runs `graph` in dependency order: a node runs when the trigger reaches it
12
+ * through edges whose sources ran (and, from a condition or an approval,
13
+ * took the edge's branch). Returns each node's output by id. It only calls
14
+ * `runtime`, so it is deterministic and runs inside a `"use workflow"`
15
+ * function as the static executor.
16
+ */
17
+ async function executeGraph(graph, input, runtime) {
18
+ const errors = validateGraph(graph);
19
+ if (errors.length > 0) throw new TypeError(`workflow-builder: ${errors.join("; ")}`);
20
+ const order = topologicalOrder(graph) ?? [];
21
+ const incoming = /* @__PURE__ */ new Map();
22
+ for (const edge of graph.edges) incoming.set(edge.target, [...incoming.get(edge.target) ?? [], edge]);
23
+ const results = {};
24
+ const ran = /* @__PURE__ */ new Map();
25
+ for (const node of order) {
26
+ if (node.kind !== "trigger") {
27
+ if (!(incoming.get(node.id) ?? []).some((edge) => active(edge, ran))) continue;
28
+ }
29
+ const { output, outcome } = await runNode(node, input, results, runtime);
30
+ results[node.id] = output;
31
+ ran.set(node.id, outcome);
32
+ }
33
+ return results;
34
+ }
35
+ async function runNode(node, input, results, runtime) {
36
+ switch (node.kind) {
37
+ case "trigger": return {
38
+ output: input,
39
+ outcome: true
40
+ };
41
+ case "step": return {
42
+ output: await runtime.step({
43
+ node: node.id,
44
+ step: node.step ?? "",
45
+ config: node.config ?? {},
46
+ input,
47
+ results: { ...results },
48
+ runKey: runtime.runKey
49
+ }) ?? null,
50
+ outcome: true
51
+ };
52
+ case "sleep":
53
+ await runtime.sleep(durationMs(node.config?.["duration"]) ?? 0);
54
+ return {
55
+ output: null,
56
+ outcome: true
57
+ };
58
+ case "approval": {
59
+ const payload = await runtime.approval(approvalToken(runtime.runKey, node.id), node.id);
60
+ return {
61
+ output: payload ?? null,
62
+ outcome: approved(payload)
63
+ };
64
+ }
65
+ case "condition": {
66
+ const condition = conditionOf(node);
67
+ const outcome = condition !== void 0 && evaluateCondition(condition, {
68
+ input,
69
+ results
70
+ });
71
+ return {
72
+ output: outcome,
73
+ outcome
74
+ };
75
+ }
76
+ default: {
77
+ const unknown = node.kind;
78
+ throw new TypeError(`workflow-builder: unknown node kind ${String(unknown)}`);
79
+ }
80
+ }
81
+ }
82
+ //#endregion
83
+ export { executeGraph as n, approvalToken as t };
@@ -0,0 +1,148 @@
1
+ import { T as RawDbError } from "./result-D7y2fT87.js";
2
+ import { R as TableMeta } from "./types-6BdhkmZe.js";
3
+ import { r as Executor, v as Operation } from "./executor-DvsBbNBS.js";
4
+ //#region src/compile/sqlite.d.ts
5
+ /** A value SQLite binds: booleans become `0`/`1`, objects JSON text. */
6
+ type SqliteValue = string | number | bigint | null;
7
+ interface SqliteQuery {
8
+ readonly text: string;
9
+ readonly params: readonly SqliteValue[];
10
+ }
11
+ /** How the executor turns a returned SQLite value back into its PostgREST shape. */
12
+ type SqliteDecode = "boolean" | "json" | "timestamptz" | "raw";
13
+ interface SqliteColumn {
14
+ /** Key in the returned row. */
15
+ readonly alias: string;
16
+ readonly decode: SqliteDecode;
17
+ }
18
+ /** Primary key values of the rows a write touches, in key column order. */
19
+ type SqliteKeys = readonly (readonly SqliteValue[])[];
20
+ /** A read: the rows, a count, or both. */
21
+ interface SqliteSelectPlan {
22
+ readonly kind: "select";
23
+ readonly rows: SqliteQuery | undefined;
24
+ readonly count: SqliteQuery | undefined;
25
+ readonly columns: readonly SqliteColumn[];
26
+ }
27
+ /**
28
+ * An insert as one statement per row. PowerSync tables are views with
29
+ * `INSTEAD OF` triggers, which take neither `RETURNING` nor `ON CONFLICT`,
30
+ * so the executor checks for a conflicting row itself and reads the
31
+ * written rows back by key.
32
+ */
33
+ interface SqliteInsertPlan {
34
+ readonly kind: "insert";
35
+ readonly rows: readonly {
36
+ readonly key: readonly SqliteValue[];
37
+ /** The row's tenant; an upsert never updates another tenant's row. */
38
+ readonly tenant: SqliteValue | undefined;
39
+ readonly insert: SqliteQuery;
40
+ /** Finds a row that conflicts on the `onConflict` columns. */
41
+ readonly existing: SqliteQuery | undefined;
42
+ /** Updates the conflicting row (`onConflict.action: 'update'`), by its key. */
43
+ readonly update: ((key: readonly SqliteValue[]) => SqliteQuery) | undefined;
44
+ }[];
45
+ readonly conflict: "update" | "ignore" | undefined;
46
+ readonly returning: SqliteReturning | undefined;
47
+ }
48
+ /** An update or delete: select the keys, then write by key. */
49
+ interface SqliteKeyedPlan {
50
+ readonly kind: "update" | "delete";
51
+ readonly keys: SqliteQuery;
52
+ readonly apply: (keys: SqliteKeys) => SqliteQuery;
53
+ readonly returning: SqliteReturning | undefined;
54
+ /** More selected keys than this fails with `max_affected` before any write. */
55
+ readonly maxAffected?: number;
56
+ }
57
+ interface SqliteReturning {
58
+ readonly read: (keys: SqliteKeys) => SqliteQuery;
59
+ readonly columns: readonly SqliteColumn[];
60
+ }
61
+ type SqlitePlan = {
62
+ readonly kind: "never";
63
+ } | SqliteSelectPlan | SqliteInsertPlan | SqliteKeyedPlan;
64
+ interface SqliteCompilerOptions {
65
+ /**
66
+ * The SQLite table or view for a table. Defaults to its database name
67
+ * without the schema, which is how PowerSync names its views.
68
+ */
69
+ readonly tableName?: (table: TableMeta) => string;
70
+ }
71
+ declare function quoteSqliteIdent(name: string): string;
72
+ /** A JavaScript value as a SQLite parameter. */
73
+ declare function sqliteValue(value: unknown): SqliteValue;
74
+ /**
75
+ * A LIKE pattern (backslash escapes) as a GLOB pattern, which SQLite
76
+ * matches case-sensitively, like Postgres `like`.
77
+ */
78
+ declare function likeToGlob(pattern: string): string;
79
+ /**
80
+ * Compiles IR operations for SQLite (PowerSync's local database). Reads
81
+ * become one statement; writes become steps the executor runs in a write
82
+ * transaction. Throws a `DbException` with kind `unsupported` for what
83
+ * SQLite can't express, before anything runs.
84
+ */
85
+ declare function compileSqlite(op: Operation, options?: SqliteCompilerOptions): SqlitePlan;
86
+ //#endregion
87
+ //#region src/powersync/executor.d.ts
88
+ /** What a PowerSync database, transaction or lock context can run. */
89
+ interface SqliteContextLike {
90
+ getAll<T>(sql: string, parameters?: unknown[]): Promise<T[]>;
91
+ execute(sql: string, parameters?: unknown[]): Promise<unknown>;
92
+ }
93
+ /**
94
+ * The part of `PowerSyncDatabase` (`@powersync/react-native`,
95
+ * `@powersync/web`, `@powersync/node`) the executor uses. Typed by shape,
96
+ * so better-supabase doesn't depend on PowerSync.
97
+ */
98
+ interface PowerSyncDatabaseLike extends SqliteContextLike {
99
+ writeTransaction<T>(callback: (tx: SqliteContextLike) => Promise<T>): Promise<T>;
100
+ /** Runs a list's rows and its count on one snapshot when present. */
101
+ readTransaction?<T>(callback: (tx: SqliteContextLike) => Promise<T>): Promise<T>;
102
+ onChange?(handler: {
103
+ onChange: (event: {
104
+ changedTables: string[];
105
+ }) => Promise<void> | void;
106
+ }, options?: {
107
+ tables?: string[];
108
+ throttleMs?: number;
109
+ signal?: AbortSignal;
110
+ }): () => void;
111
+ }
112
+ interface PowerSyncExecutorOptions extends SqliteCompilerOptions {
113
+ /**
114
+ * A primary key for an insert that leaves it out. PowerSync tables key on
115
+ * a text `id` that the client creates. Defaults to
116
+ * `crypto.randomUUID()`, else SQLite's `uuid()` (PowerSync registers it).
117
+ */
118
+ readonly newId?: (table: TableMeta) => string | Promise<string>;
119
+ }
120
+ /**
121
+ * A SQLite constraint error in the shape `mapDbError` reads from Postgres:
122
+ * its SQLSTATE, and the columns in Postgres's `Key (...)` detail format.
123
+ */
124
+ declare function fromSqliteError(cause: unknown): RawDbError | undefined;
125
+ /**
126
+ * Timestamp text as PostgREST sends it (`2026-01-02T10:00:00.5+00:00`), from
127
+ * whatever the sync wrote (`2026-01-02 10:00:00.500000Z`).
128
+ */
129
+ declare function postgrestTimestamp(value: string): string;
130
+ /**
131
+ * Runs repository operations on PowerSync's local SQLite database, so the
132
+ * same repositories and list definitions work offline on native. Reads
133
+ * return rows in the PostgREST shape (booleans, parsed JSON, ISO
134
+ * timestamps); writes go through PowerSync's upload queue. What SQLite
135
+ * can't express (includes, full-text search, function sources) returns a
136
+ * `DbError` of kind `unsupported` without running anything.
137
+ * `maxAffected` is checked against the selected keys before any write; a
138
+ * call's `timeout` and `signal` are checked before the statements start,
139
+ * and `retry` does nothing here. A `bigint` beyond `Number.MAX_SAFE_INTEGER`
140
+ * comes back as its decimal string instead of a rounded number.
141
+ *
142
+ * ```ts
143
+ * const db = betterSupabase.connect(powersyncExecutor(powersync));
144
+ * ```
145
+ */
146
+ declare function powersyncExecutor(db: PowerSyncDatabaseLike, options?: PowerSyncExecutorOptions): Executor;
147
+ //#endregion
148
+ export { SqliteValue as _, postgrestTimestamp as a, quoteSqliteIdent as b, SqliteCompilerOptions as c, SqliteKeyedPlan as d, SqliteKeys as f, SqliteSelectPlan as g, SqliteReturning as h, fromSqliteError as i, SqliteDecode as l, SqliteQuery as m, PowerSyncExecutorOptions as n, powersyncExecutor as o, SqlitePlan as p, SqliteContextLike as r, SqliteColumn as s, PowerSyncDatabaseLike as t, SqliteInsertPlan as u, compileSqlite as v, sqliteValue as x, likeToGlob as y };
@@ -0,0 +1,36 @@
1
+ import { T as WorkflowGraph } from "./types-BI-0Sl2v.js";
2
+ //#region src/blocks/workflow-builder/executor.d.ts
3
+ /** What a step node passes to the engine's step: plain data, so it serializes. */
4
+ interface GraphStepCall {
5
+ /** The node id, which `workflow_node_runs` keys on. */
6
+ readonly node: string;
7
+ /** The library step's name. */
8
+ readonly step: string;
9
+ readonly config: Readonly<Record<string, unknown>>;
10
+ /** The trigger's input. */
11
+ readonly input: unknown;
12
+ /** The outputs of the nodes that ran before it, by node id. */
13
+ readonly results: Readonly<Record<string, unknown>>;
14
+ /** The run's key; approval hooks use `<runKey>:<node>` as their token. */
15
+ readonly runKey: string;
16
+ }
17
+ /** What the engine does for each kind of node. */
18
+ interface GraphRuntime {
19
+ readonly runKey: string;
20
+ step(call: GraphStepCall): PromiseLike<unknown>;
21
+ sleep(ms: number): PromiseLike<unknown>;
22
+ /** Waits for the approval hook with `token` and returns its payload. */
23
+ approval(token: string, node: string): PromiseLike<unknown>;
24
+ }
25
+ /** The hook token of an approval node. */
26
+ declare const approvalToken: (runKey: string, node: string) => string;
27
+ /**
28
+ * Runs `graph` in dependency order: a node runs when the trigger reaches it
29
+ * through edges whose sources ran (and, from a condition or an approval,
30
+ * took the edge's branch). Returns each node's output by id. It only calls
31
+ * `runtime`, so it is deterministic and runs inside a `"use workflow"`
32
+ * function as the static executor.
33
+ */
34
+ declare function executeGraph(graph: WorkflowGraph, input: unknown, runtime: GraphRuntime): Promise<Record<string, unknown>>;
35
+ //#endregion
36
+ export { executeGraph as i, GraphStepCall as n, approvalToken as r, GraphRuntime as t };
@@ -1,4 +1,5 @@
1
- import { C as RawDbError, r as Executor } from "./executor-BunPOO-k.js";
1
+ import { T as RawDbError } from "./result-D7y2fT87.js";
2
+ import { r as Executor } from "./executor-DvsBbNBS.js";
2
3
  //#region src/postgres/executor.d.ts
3
4
  /**
4
5
  * Anything that runs parameterized SQL: `ctx.postgres` from
@@ -18,6 +19,11 @@ declare function fromPgError(error: unknown): RawDbError | undefined;
18
19
  * Executes repository operations as SQL on a direct Postgres connection.
19
20
  * Rows have the same shape as over PostgREST. RLS applies when the client
20
21
  * runs as the caller (`ctx.postgres`, `createPostgres().asUser()`).
22
+ *
23
+ * `maxAffected` fails the statement itself, so its writes roll back.
24
+ * A call's `timeout` is checked before the statement starts; set
25
+ * `statement_timeout` on the connection to bound a running statement.
26
+ * `retry` does nothing here.
21
27
  */
22
28
  declare function postgresExecutor(client: SqlClient): Executor;
23
29
  //#endregion
@@ -1,5 +1,9 @@
1
- import { a as invalidRequest, n as simplifyOrFalse } from "./simplify-_0oUKqCd.js";
1
+ import { n as isPlainObject } from "./clone-BfgmLU90.js";
2
+ import { c as mapDbError, n as dbError, t as MAX_AFFECTED_MARKER, u as withMaxAffected } from "./errors-B11Duf73.js";
3
+ import { n as invalidRequest } from "./build-BXIzE6Xv.js";
2
4
  import { t as lookupOf } from "./lookup-BaP5bI27.js";
5
+ import { a as ok, r as err, s as toDbError } from "./result-DzUbqgdW.js";
6
+ import { n as simplifyOrFalse } from "./simplify-DDO0j0LI.js";
3
7
  //#region src/compile/sql.ts
4
8
  const MAX_PARAMS = 65535;
5
9
  const MAX_PAIRS = 50;
@@ -28,7 +32,7 @@ function rowComparison(condition) {
28
32
  const terms = index === 0 ? [item] : item.kind === "and" ? item.items : [];
29
33
  if (terms.length !== index + 1) return null;
30
34
  const step = terms[index];
31
- if (step.kind !== "column" || step.op !== "gt" && step.op !== "lt") return null;
35
+ if (step.kind !== "column" || step.path || step.op !== "gt" && step.op !== "lt") return null;
32
36
  for (const [at, term] of terms.slice(0, index).entries()) {
33
37
  const prev = steps[at];
34
38
  if (term.kind !== "column" || term.op !== "eq" || term.column !== prev.column || !Object.is(term.value, prev.value)) return null;
@@ -86,7 +90,7 @@ var SqlCompiler = class {
86
90
  }
87
91
  }
88
92
  columnCondition(condition, table, alias) {
89
- const column = this.column(alias, condition.column);
93
+ const column = condition.path ? `(${this.column(alias, condition.column)} #>> ${this.param(condition.path, "text[]")})` : this.column(alias, condition.column);
90
94
  const { value } = condition;
91
95
  switch (condition.op) {
92
96
  case "eq": return `${column} = ${this.param(value)}`;
@@ -97,6 +101,8 @@ var SqlCompiler = class {
97
101
  case "lte": return `${column} <= ${this.param(value)}`;
98
102
  case "like": return `${column} like ${this.param(value)}`;
99
103
  case "ilike": return `${column} ilike ${this.param(value)}`;
104
+ case "match": return `${column} ~ ${this.param(value)}`;
105
+ case "imatch": return `${column} ~* ${this.param(value)}`;
100
106
  case "in":
101
107
  if (!Array.isArray(value)) invalidRequest("\"in\" needs an array");
102
108
  return `${column} = any(${this.param(value)})`;
@@ -109,7 +115,7 @@ var SqlCompiler = class {
109
115
  case "containedBy":
110
116
  case "overlaps": {
111
117
  const operator = condition.op === "contains" ? "@>" : condition.op === "containedBy" ? "<@" : "&&";
112
- return Array.isArray(value) ? `${column} ${operator} ${this.param(value)}` : `${column} ${operator} ${this.param(JSON.stringify(value), "jsonb")}`;
118
+ return Array.isArray(value) && !condition.json ? `${column} ${operator} ${this.param(value)}` : `${column} ${operator} ${this.param(JSON.stringify(value), "jsonb")}`;
113
119
  }
114
120
  case "fts": {
115
121
  const config = condition.config ? `${this.param(condition.config, "regconfig")}, ` : "";
@@ -127,12 +133,26 @@ var SqlCompiler = class {
127
133
  return `${this.column(targetAlias, dbColumn(target, reference))} = ${this.column(sourceAlias, dbColumn(source, column))}`;
128
134
  }).join(" and ");
129
135
  }
130
- orderBy(terms, alias) {
136
+ orderBy(terms, alias, table) {
131
137
  return terms.map((term) => {
132
138
  const nulls = term.nulls ? ` nulls ${term.nulls}` : "";
133
- return `${this.column(alias, term.column)} ${term.direction}${nulls}`;
139
+ return `${this.sortKey(term, alias, table)} ${term.direction}${nulls}`;
134
140
  }).join(", ");
135
141
  }
142
+ /**
143
+ * A column, an aggregate of the group, or the column of a to-one
144
+ * relation's row as a scalar subquery.
145
+ */
146
+ sortKey(term, alias, table) {
147
+ if (term.aggregate === "count") return "count(*)";
148
+ if (term.aggregate) return `${term.aggregate}(${this.column(alias, term.column)})`;
149
+ const { relation } = term;
150
+ if (!relation) return this.column(alias, term.column);
151
+ if (!table) invalidRequest("A relation sort needs the root table");
152
+ const target = this.alias();
153
+ const join = this.join(relation.relation, table, alias, relation.target, target);
154
+ return `(select ${this.column(target, term.column)} from ${tableRef(relation.target)} as ${target} where ${join} limit 1)`;
155
+ }
136
156
  /** `json_build_object('alias', t0."col", ...)` for a selection. */
137
157
  rowExpression(selection, table, alias) {
138
158
  const pairs = selection.columns.map((entry) => `'${entry.alias.replaceAll("'", "''")}', ${this.column(alias, entry.column)}${entry.cast ? `::${entry.cast}` : ""}`);
@@ -221,7 +241,7 @@ function compileSql(op) {
221
241
  } : void 0;
222
242
  return {
223
243
  rows: {
224
- text: `select ${compiler.rowExpression(op.selection, op.table, alias)} as row from ${from}${filter}${op.selection.aggregate && op.selection.columns.length > 0 ? ` group by ${op.selection.columns.map((entry) => compiler.column(alias, entry.column)).join(", ")}` : ""}${op.orderBy.length > 0 ? ` order by ${compiler.orderBy(op.orderBy, alias)}` : ""}${op.limit === void 0 ? "" : ` limit ${integer(op.limit)}`}${op.offset === void 0 ? "" : ` offset ${integer(op.offset)}`}`,
244
+ text: `select ${compiler.rowExpression(op.selection, op.table, alias)} as row from ${from}${filter}${op.selection.aggregate && op.selection.columns.length > 0 ? ` group by ${op.selection.columns.map((entry) => compiler.column(alias, entry.column)).join(", ")}` : ""}${op.orderBy.length > 0 ? ` order by ${compiler.orderBy(op.orderBy, alias, op.table)}` : ""}${op.limit === void 0 ? "" : ` limit ${integer(op.limit)}`}${op.offset === void 0 ? "" : ` offset ${integer(op.offset)}`}`,
225
245
  params: compiler.params
226
246
  },
227
247
  count: countQuery,
@@ -259,7 +279,7 @@ function compileSql(op) {
259
279
  };
260
280
  const entries = Object.entries(op.set);
261
281
  if (entries.length === 0) invalidRequest(`Update on "${op.table.key}" sets no columns`);
262
- return mutation(`update ${from} set ${entries.map(([column, value]) => `${quoteIdent(column)} = ${compiler.param(value)}`).join(", ")}${whereClause([simple.condition ? compiler.condition(simple.condition, op.table, alias) : void 0])}${returningRows(compiler, op, alias)}`, op.returning !== void 0, compiler.params);
282
+ return mutation(`update ${from} set ${entries.map(([column, value]) => `${quoteIdent(column)} = ${compiler.param(value)}`).join(", ")}${whereClause([simple.condition ? compiler.condition(simple.condition, op.table, alias) : void 0])}${returningRows(compiler, op, alias)}`, op.returning !== void 0, compiler.params, maxAffectedOf(op));
263
283
  }
264
284
  case "delete": {
265
285
  const simple = simplifyOrFalse(op.where);
@@ -268,7 +288,7 @@ function compileSql(op) {
268
288
  count: void 0,
269
289
  never: true
270
290
  };
271
- return mutation(`delete from ${from}${whereClause([simple.condition ? compiler.condition(simple.condition, op.table, alias) : void 0])}${returningRows(compiler, op, alias)}`, op.returning !== void 0, compiler.params);
291
+ return mutation(`delete from ${from}${whereClause([simple.condition ? compiler.condition(simple.condition, op.table, alias) : void 0])}${returningRows(compiler, op, alias)}`, op.returning !== void 0, compiler.params, maxAffectedOf(op));
272
292
  }
273
293
  default: return op;
274
294
  }
@@ -302,7 +322,40 @@ function tenantGuard(op, alias) {
302
322
  if (column === void 0) return "";
303
323
  return ` where ${alias}.${quoteIdent(column)} = excluded.${quoteIdent(column)}`;
304
324
  }
305
- function mutation(statement, returning, params) {
325
+ function maxAffectedOf(op) {
326
+ if (op.maxAffected === void 0) return void 0;
327
+ if (!Number.isInteger(op.maxAffected) || op.maxAffected < 0) invalidRequest(`"maxAffected" must be a non-negative integer, got ${op.maxAffected}`, op.table.key);
328
+ return op.maxAffected;
329
+ }
330
+ /**
331
+ * The statement's row count, or a cast error naming it when it is above
332
+ * `max`. The cast depends on `count(*)`, so the planner can't fold it into
333
+ * an error for every call; the failed statement rolls its writes back. A
334
+ * query returning rows must use the count (`where c.n >= 0`), or Postgres
335
+ * drops the unused column and never runs the check.
336
+ */
337
+ function guardedCount(max) {
338
+ return `case when count(*) > ${max} then ('${MAX_AFFECTED_MARKER}:' || count(*))::int else count(*)::int end`;
339
+ }
340
+ function mutation(statement, returning, params, maxAffected) {
341
+ if (maxAffected !== void 0) {
342
+ const guard = guardedCount(maxAffected);
343
+ return returning ? {
344
+ rows: {
345
+ text: `with m as (${statement}), c as (select ${guard} as n from m) select m.row from m cross join c where c.n >= 0`,
346
+ params
347
+ },
348
+ count: void 0,
349
+ never: false
350
+ } : {
351
+ rows: void 0,
352
+ count: {
353
+ text: `with m as (${statement}) select ${guard} as count from m`,
354
+ params
355
+ },
356
+ never: false
357
+ };
358
+ }
306
359
  if (returning) return {
307
360
  rows: {
308
361
  text: statement,
@@ -321,4 +374,150 @@ function mutation(statement, returning, params) {
321
374
  };
322
375
  }
323
376
  //#endregion
324
- export { quoteIdent as n, compileSql as t };
377
+ //#region src/postgres/executor.ts
378
+ function isPgError(value) {
379
+ return typeof value === "object" && value !== null && typeof value.code === "string";
380
+ }
381
+ /** node-postgres error fields to the shape `mapDbError` reads. */
382
+ function fromPgError(error) {
383
+ if (!isPgError(error)) return void 0;
384
+ const raw = {};
385
+ if (error.code !== void 0) raw.code = error.code;
386
+ if (error.message !== void 0) raw.message = error.message;
387
+ if (error.detail !== void 0) raw.details = error.detail;
388
+ if (error.hint !== void 0) raw.hint = error.hint;
389
+ if (error.constraint !== void 0) raw.constraint = error.constraint;
390
+ if (error.column !== void 0) raw.column = error.column;
391
+ if (error.table !== void 0) raw.table = error.table;
392
+ return raw;
393
+ }
394
+ async function run(client, plan, op) {
395
+ const rows = plan.rows ? (await client.queryRaw(plan.rows.text, [...plan.rows.params])).map((entry) => entry.row) : [];
396
+ let count = null;
397
+ if (plan.count) {
398
+ const [first] = await client.queryRaw(plan.count.text, [...plan.count.params]);
399
+ count = first?.count ?? 0;
400
+ } else if (op.kind !== "select") count = rows.length;
401
+ for (const next of plan.chunks ?? []) {
402
+ const more = await run(client, next, op);
403
+ rows.push(...more.rows);
404
+ count = (count ?? 0) + (more.count ?? 0);
405
+ }
406
+ return {
407
+ rows,
408
+ count
409
+ };
410
+ }
411
+ /**
412
+ * Executes repository operations as SQL on a direct Postgres connection.
413
+ * Rows have the same shape as over PostgREST. RLS applies when the client
414
+ * runs as the caller (`ctx.postgres`, `createPostgres().asUser()`).
415
+ *
416
+ * `maxAffected` fails the statement itself, so its writes roll back.
417
+ * A call's `timeout` is checked before the statement starts; set
418
+ * `statement_timeout` on the connection to bound a running statement.
419
+ * `retry` does nothing here.
420
+ */
421
+ function postgresExecutor(client) {
422
+ return {
423
+ name: "postgres",
424
+ functionSources: true,
425
+ execute: (op, context) => executeOn(client, op, context),
426
+ rpc: (name, args, context) => callFunction(client, name, args, context),
427
+ async batch(ops, context) {
428
+ if (!client.transaction) return Promise.all(ops.map((op) => executeOn(client, op, context)));
429
+ try {
430
+ return await client.transaction(async (scoped) => {
431
+ const results = [];
432
+ for (const op of ops) {
433
+ const result = await executeOn(scoped, op, context);
434
+ if (!result.ok) throw new BatchFailed();
435
+ results.push(result);
436
+ }
437
+ return results;
438
+ });
439
+ } catch (cause) {
440
+ if (!(cause instanceof BatchFailed)) throw cause;
441
+ return Promise.all(ops.map((op) => executeOn(client, op, context)));
442
+ }
443
+ }
444
+ };
445
+ }
446
+ var BatchFailed = class extends Error {};
447
+ async function executeOn(client, op, context) {
448
+ let plan;
449
+ try {
450
+ plan = compileSql(op);
451
+ } catch (cause) {
452
+ return err(toDbError(cause));
453
+ }
454
+ if (plan.never) return ok({
455
+ rows: [],
456
+ count: 0
457
+ });
458
+ if (context.signal?.aborted) return err(dbError("aborted", "The request was aborted"));
459
+ let result;
460
+ try {
461
+ result = plan.chunks && client.transaction ? await client.transaction((scoped) => run(scoped, plan, op)) : await run(client, plan, op);
462
+ } catch (cause) {
463
+ const raw = fromPgError(cause);
464
+ const error = raw ? mapDbError(raw, context.errorMappers) : toDbError(cause);
465
+ return err(withMaxAffected(error, op.kind === "update" || op.kind === "delete" ? op.maxAffected : void 0));
466
+ }
467
+ if (op.kind === "select" && op.single) {
468
+ if (result.rows.length > 1) return err(dbError("multiple_rows", `Expected one ${op.table.key} row`));
469
+ if (result.rows.length === 0 && op.single === "one") return err(dbError("not_found", `No ${op.table.key} row matched`));
470
+ }
471
+ return ok(result);
472
+ }
473
+ const JSON_TYPES = /* @__PURE__ */ new Set(["json", "jsonb"]);
474
+ async function signatureOf(client, name, context) {
475
+ const fn = context.function;
476
+ if (fn) return {
477
+ returnsSet: fn.returnsSet,
478
+ returnsVoid: fn.returns === "void",
479
+ json: new Set(fn.args.filter((arg) => JSON_TYPES.has(arg.type)).map((arg) => arg.name))
480
+ };
481
+ const [found] = await client.queryRaw("select p.proretset as returns_set, p.prorettype = 'pg_catalog.void'::pg_catalog.regtype as returns_void from pg_catalog.pg_proc p join pg_catalog.pg_namespace n on n.oid = p.pronamespace where n.nspname = $1 and p.proname = $2 limit 1", [context.schema, name]);
482
+ return found ? {
483
+ returnsSet: found.returns_set,
484
+ returnsVoid: found.returns_void,
485
+ json: /* @__PURE__ */ new Set()
486
+ } : void 0;
487
+ }
488
+ function argValue(value, json) {
489
+ if (value === null) return null;
490
+ if (json) return JSON.stringify(value);
491
+ if (typeof value === "bigint") return value.toString();
492
+ if (Array.isArray(value)) return value.map((item) => argValue(item, false));
493
+ if (isPlainObject(value)) return JSON.stringify(value);
494
+ if (typeof value === "object" && !(value instanceof Date) && !(value instanceof Uint8Array)) return String(value);
495
+ return value;
496
+ }
497
+ async function callFunction(client, name, args, context) {
498
+ if (context.signal?.aborted) return err(dbError("aborted", "The request was aborted"));
499
+ try {
500
+ const signature = await signatureOf(client, name, context);
501
+ if (!signature) return err(mapDbError({
502
+ code: "PGRST202",
503
+ message: `Could not find the function ${context.schema}.${name} in the database`
504
+ }, context.errorMappers));
505
+ const params = [];
506
+ const named = Object.entries(args).filter(([, value]) => value !== void 0).map(([key, value]) => {
507
+ params.push(argValue(value, signature.json.has(key)));
508
+ return `${quoteIdent(key)} => $${String(params.length)}`;
509
+ });
510
+ const call = `${quoteIdent(context.schema)}.${quoteIdent(name)}(${named.join(", ")})`;
511
+ if (signature.returnsVoid) {
512
+ await client.queryRaw(`select ${call}`, params);
513
+ return ok(null);
514
+ }
515
+ const values = (await client.queryRaw(`select to_json(bs_call) as value from ${call} as bs_call`, params)).map((row) => row.value);
516
+ return ok(signature.returnsSet ? values : values[0] ?? null);
517
+ } catch (cause) {
518
+ const raw = fromPgError(cause);
519
+ return err(raw ? mapDbError(raw, context.errorMappers) : toDbError(cause));
520
+ }
521
+ }
522
+ //#endregion
523
+ export { quoteIdent as i, postgresExecutor as n, compileSql as r, fromPgError as t };