better-supabase 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1581) hide show
  1. package/README.md +67 -345
  2. package/dist/access-sql-B-MkVARa.js +207 -0
  3. package/dist/actor-go7p9-CJ.js +150 -0
  4. package/dist/adapter-B0b6MXYS.js +2299 -0
  5. package/dist/agents-5n8DWRfP.d.ts +117 -0
  6. package/dist/ai-cache-Cu8j6aQQ.js +87 -0
  7. package/dist/ai-cache-DyHohbFP.d.ts +82 -0
  8. package/dist/ai-chat-D1GuRnke.d.ts +619 -0
  9. package/dist/ai-files-CgFCRsnU.js +339 -0
  10. package/dist/ai-schedules-CAquecT_.d.ts +166 -0
  11. package/dist/ai-sdk/agents/index.d.ts +6 -6
  12. package/dist/ai-sdk/agents/index.js +4 -4
  13. package/dist/ai-sdk/batches/index.d.ts +5 -5
  14. package/dist/ai-sdk/batches/index.js +4 -4
  15. package/dist/ai-sdk/cache/index.d.ts +3 -3
  16. package/dist/ai-sdk/cache/index.js +2 -2
  17. package/dist/ai-sdk/chat/index.d.ts +1 -1
  18. package/dist/ai-sdk/chat/index.js +5 -5
  19. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  20. package/dist/ai-sdk/embeddings/index.js +1 -1
  21. package/dist/ai-sdk/files/index.d.ts +2 -2
  22. package/dist/ai-sdk/files/index.js +5 -5
  23. package/dist/ai-sdk/index.d.ts +30 -9
  24. package/dist/ai-sdk/index.js +42 -4
  25. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  26. package/dist/ai-sdk/mcp/index.js +7 -7
  27. package/dist/ai-sdk/memory/index.d.ts +3 -3
  28. package/dist/ai-sdk/memory/index.js +2 -2
  29. package/dist/ai-sdk/workflow/index.d.ts +4 -4
  30. package/dist/ai-sdk/workflow/index.js +7 -7
  31. package/dist/anchors-7F34QyHa.d.ts +40 -0
  32. package/dist/api-DxAPqMrE.d.ts +495 -0
  33. package/dist/api-keys-D5k63K6y.d.ts +213 -0
  34. package/dist/app-tables-CF2DD-Mu.d.ts +28 -0
  35. package/dist/app-tables-D29Rahtg.js +16350 -0
  36. package/dist/approvals-Crutd4-o.d.ts +129 -0
  37. package/dist/assistant-CD_h8Vxx.d.ts +157 -0
  38. package/dist/astro/index.d.ts +19 -16
  39. package/dist/astro/index.js +8 -8
  40. package/dist/attachments-aJYgdYtB.js +369 -0
  41. package/dist/attributes-Bzf51_nc.js +47 -0
  42. package/dist/auth-module-BEFESDC4.js +44 -0
  43. package/dist/auth-reply-tlXB2FQ9.js +31 -0
  44. package/dist/authorization-HZdJCaVm.d.ts +3595 -0
  45. package/dist/authorization-hooks-Cs1vP_ej.d.ts +217 -0
  46. package/dist/authorizer-B6X09otb.d.ts +118 -0
  47. package/dist/authorizer-BGhXaDmo.js +172 -0
  48. package/dist/automation-D41DXyvT.js +75 -0
  49. package/dist/automations-BYsz43AG.js +314 -0
  50. package/dist/automations-Bc2ue55V.js +26 -0
  51. package/dist/automations-CD1XlL2W.js +33 -0
  52. package/dist/automations-CIwRq7zm.js +30 -0
  53. package/dist/availability-vguUvEK2.d.ts +226 -0
  54. package/dist/better-result/index.d.ts +20 -30
  55. package/dist/better-result/index.js +2 -2
  56. package/dist/bind-CrMBwrPN.d.ts +104 -0
  57. package/dist/block-authors-BDV3y1SP.js +14 -0
  58. package/dist/block-authors-DzXLUiIq.d.ts +12 -0
  59. package/dist/block-env-B_uEM2xz.d.ts +32 -0
  60. package/dist/block-event-listener-Bu6G0TFH.js +16 -0
  61. package/dist/block-events-pBXPzwnW.js +83 -0
  62. package/dist/block-fields-BE7pInWZ.d.ts +58 -0
  63. package/dist/block-fields-DE_FgpOU.js +139 -0
  64. package/dist/block-helpers-CRpAHrp_.d.ts +62 -0
  65. package/dist/block-helpers-CtBdjgO4.js +353 -0
  66. package/dist/block-hooks-BfxX3682.js +130 -0
  67. package/dist/block-hooks-DZN2w69m.d.ts +117 -0
  68. package/dist/block-method-C9hWdHom.js +21 -0
  69. package/dist/block-method-CiVa2G-J.d.ts +14 -0
  70. package/dist/block-subjects-BhDKK_j7.js +55 -0
  71. package/dist/block-subjects-CphkQPxp.d.ts +6 -0
  72. package/dist/block-tenant-DHp7subc.js +14 -0
  73. package/dist/block-transport-DWZSJrwN.d.ts +69 -0
  74. package/dist/blocks/access-requests/index.d.ts +8 -8
  75. package/dist/blocks/access-requests/index.js +6 -7
  76. package/dist/blocks/activities/index.d.ts +215 -0
  77. package/dist/blocks/activities/index.js +414 -0
  78. package/dist/blocks/agents/index.d.ts +4 -4
  79. package/dist/blocks/agents/index.js +5 -6
  80. package/dist/blocks/ai-cache/index.d.ts +3 -3
  81. package/dist/blocks/ai-cache/index.js +3 -3
  82. package/dist/blocks/ai-chat/index.d.ts +119 -6
  83. package/dist/blocks/ai-chat/index.js +1067 -5
  84. package/dist/blocks/ai-files/index.d.ts +5 -5
  85. package/dist/blocks/ai-files/index.js +3 -3
  86. package/dist/blocks/ai-keys/index.d.ts +22 -0
  87. package/dist/blocks/ai-keys/index.js +236 -0
  88. package/dist/blocks/ai-schedules/index.d.ts +10 -0
  89. package/dist/blocks/ai-schedules/index.js +258 -0
  90. package/dist/blocks/announcements/index.d.ts +134 -5
  91. package/dist/blocks/announcements/index.js +179 -4
  92. package/dist/blocks/api-keys/index.d.ts +69 -8
  93. package/dist/blocks/api-keys/index.js +417 -7
  94. package/dist/blocks/approvals/index.d.ts +4 -4
  95. package/dist/blocks/approvals/index.js +25 -24
  96. package/dist/blocks/assets/index.d.ts +281 -0
  97. package/dist/blocks/assets/index.js +288 -0
  98. package/dist/blocks/assignment/index.d.ts +124 -0
  99. package/dist/blocks/assignment/index.js +141 -0
  100. package/dist/blocks/attachments/index.d.ts +130 -6
  101. package/dist/blocks/attachments/index.js +328 -7
  102. package/dist/blocks/audit/index.d.ts +476 -7
  103. package/dist/blocks/audit/index.js +863 -7
  104. package/dist/blocks/automations/index.d.ts +524 -0
  105. package/dist/blocks/automations/index.js +553 -0
  106. package/dist/blocks/billable-time/index.d.ts +201 -0
  107. package/dist/blocks/billable-time/index.js +260 -0
  108. package/dist/blocks/billing/index.d.ts +146 -16
  109. package/dist/blocks/billing/index.js +231 -41
  110. package/dist/blocks/bookings/index.d.ts +54 -5
  111. package/dist/blocks/bookings/index.js +423 -6
  112. package/dist/blocks/bulk/index.d.ts +6 -6
  113. package/dist/blocks/bulk/index.js +4 -4
  114. package/dist/blocks/calendar/index.d.ts +186 -5
  115. package/dist/blocks/calendar/index.js +1180 -4
  116. package/dist/blocks/catalog/index.d.ts +134 -28
  117. package/dist/blocks/catalog/index.js +183 -54
  118. package/dist/blocks/channels/index.d.ts +113 -0
  119. package/dist/blocks/channels/index.js +189 -0
  120. package/dist/blocks/collections/index.d.ts +90 -17
  121. package/dist/blocks/collections/index.js +85 -10
  122. package/dist/blocks/comments/index.d.ts +263 -45
  123. package/dist/blocks/comments/index.js +360 -16
  124. package/dist/blocks/compliance/index.d.ts +325 -0
  125. package/dist/blocks/compliance/index.js +410 -0
  126. package/dist/blocks/connectors/index.d.ts +4 -4
  127. package/dist/blocks/connectors/index.js +8 -9
  128. package/dist/blocks/contacts/index.d.ts +182 -0
  129. package/dist/blocks/contacts/index.js +358 -0
  130. package/dist/blocks/content/index.d.ts +188 -0
  131. package/dist/blocks/content/index.js +219 -0
  132. package/dist/blocks/contracts/index.d.ts +239 -0
  133. package/dist/blocks/contracts/index.js +361 -0
  134. package/dist/blocks/courses/index.d.ts +341 -0
  135. package/dist/blocks/courses/index.js +445 -0
  136. package/dist/blocks/created-by/index.d.ts +27 -0
  137. package/dist/blocks/created-by/index.js +14 -0
  138. package/dist/blocks/custom-fields/index.d.ts +44 -13
  139. package/dist/blocks/custom-fields/index.js +25 -20
  140. package/dist/blocks/data-lifecycle/index.d.ts +9 -9
  141. package/dist/blocks/data-lifecycle/index.js +7 -8
  142. package/dist/blocks/deals/index.d.ts +20 -40
  143. package/dist/blocks/deals/index.js +156 -66
  144. package/dist/blocks/dispatch/index.d.ts +325 -0
  145. package/dist/blocks/dispatch/index.js +406 -0
  146. package/dist/blocks/documents/index.d.ts +8 -5
  147. package/dist/blocks/documents/index.js +66 -7
  148. package/dist/blocks/domains/index.d.ts +7 -7
  149. package/dist/blocks/domains/index.js +6 -7
  150. package/dist/blocks/donations/index.d.ts +350 -0
  151. package/dist/blocks/donations/index.js +610 -0
  152. package/dist/blocks/drive/index.d.ts +56 -11
  153. package/dist/blocks/drive/index.js +62 -11
  154. package/dist/blocks/employees/index.d.ts +41 -23
  155. package/dist/blocks/employees/index.js +125 -33
  156. package/dist/blocks/enrichment/index.d.ts +176 -0
  157. package/dist/blocks/enrichment/index.js +251 -0
  158. package/dist/blocks/enrollments/index.d.ts +182 -0
  159. package/dist/blocks/enrollments/index.js +173 -0
  160. package/dist/blocks/entitlements/index.d.ts +48 -8
  161. package/dist/blocks/entitlements/index.js +62 -4
  162. package/dist/blocks/expenses/index.d.ts +214 -0
  163. package/dist/blocks/expenses/index.js +279 -0
  164. package/dist/blocks/field-history/index.d.ts +63 -0
  165. package/dist/blocks/field-history/index.js +46 -0
  166. package/dist/blocks/flags/index.d.ts +17 -13
  167. package/dist/blocks/flags/index.js +7 -8
  168. package/dist/blocks/forecasts/index.d.ts +119 -0
  169. package/dist/blocks/forecasts/index.js +129 -0
  170. package/dist/blocks/forms/index.d.ts +208 -140
  171. package/dist/blocks/forms/index.js +488 -149
  172. package/dist/blocks/goals/index.d.ts +82 -0
  173. package/dist/blocks/goals/index.js +72 -0
  174. package/dist/blocks/guests/index.d.ts +198 -0
  175. package/dist/blocks/guests/index.js +224 -0
  176. package/dist/blocks/hiring/index.d.ts +20 -10
  177. package/dist/blocks/hiring/index.js +10 -10
  178. package/dist/blocks/identities/index.d.ts +7 -7
  179. package/dist/blocks/identities/index.js +4 -5
  180. package/dist/blocks/imports/index.d.ts +8 -8
  181. package/dist/blocks/imports/index.js +6 -6
  182. package/dist/blocks/inbox/index.d.ts +138 -6
  183. package/dist/blocks/inbox/index.js +383 -85
  184. package/dist/blocks/incidents/index.d.ts +337 -0
  185. package/dist/blocks/incidents/index.js +477 -0
  186. package/dist/blocks/index.d.ts +145 -11
  187. package/dist/blocks/index.js +184 -187
  188. package/dist/blocks/inventory/index.d.ts +10 -10
  189. package/dist/blocks/inventory/index.js +6 -7
  190. package/dist/blocks/invoices/index.d.ts +11 -11
  191. package/dist/blocks/invoices/index.js +8 -9
  192. package/dist/blocks/knowledge/index.d.ts +3 -3
  193. package/dist/blocks/knowledge/index.js +4 -4
  194. package/dist/blocks/lead-scoring/index.d.ts +50 -0
  195. package/dist/blocks/lead-scoring/index.js +87 -0
  196. package/dist/blocks/leases/index.d.ts +221 -0
  197. package/dist/blocks/leases/index.js +244 -0
  198. package/dist/blocks/leave/index.d.ts +8 -8
  199. package/dist/blocks/leave/index.js +5 -6
  200. package/dist/blocks/ledger/index.d.ts +279 -0
  201. package/dist/blocks/ledger/index.js +229 -0
  202. package/dist/blocks/mail-sync/index.d.ts +37 -0
  203. package/dist/blocks/mail-sync/index.js +906 -0
  204. package/dist/blocks/memberships/index.d.ts +67 -0
  205. package/dist/blocks/memberships/index.js +14 -0
  206. package/dist/blocks/memory/index.d.ts +4 -4
  207. package/dist/blocks/memory/index.js +8 -9
  208. package/dist/blocks/messaging/index.d.ts +186 -0
  209. package/dist/blocks/messaging/index.js +619 -0
  210. package/dist/blocks/metrics/index.d.ts +7 -7
  211. package/dist/blocks/metrics/index.js +6 -7
  212. package/dist/blocks/mfa/index.d.ts +145 -3
  213. package/dist/blocks/mfa/index.js +211 -2
  214. package/dist/blocks/moderation/index.d.ts +203 -0
  215. package/dist/blocks/moderation/index.js +199 -0
  216. package/dist/blocks/notifications/index.d.ts +67 -15
  217. package/dist/blocks/notifications/index.js +64 -16
  218. package/dist/blocks/numbering/index.d.ts +45 -0
  219. package/dist/blocks/numbering/index.js +49 -0
  220. package/dist/blocks/oauth-server/index.d.ts +6 -6
  221. package/dist/blocks/oauth-server/index.js +6 -7
  222. package/dist/blocks/onboarding/index.d.ts +112 -4
  223. package/dist/blocks/onboarding/index.js +107 -4
  224. package/dist/blocks/orders/index.d.ts +152 -13
  225. package/dist/blocks/orders/index.js +188 -18
  226. package/dist/blocks/organizations/index.d.ts +452 -6
  227. package/dist/blocks/organizations/index.js +689 -5
  228. package/dist/blocks/outbox/index.d.ts +4 -4
  229. package/dist/blocks/outbox/index.js +20 -8
  230. package/dist/blocks/passes/index.d.ts +306 -0
  231. package/dist/blocks/passes/index.js +411 -0
  232. package/dist/blocks/permissions/index.d.ts +92 -0
  233. package/dist/blocks/permissions/index.js +127 -0
  234. package/dist/blocks/pipelines/index.d.ts +15 -15
  235. package/dist/blocks/pipelines/index.js +12 -13
  236. package/dist/blocks/posts/index.d.ts +190 -0
  237. package/dist/blocks/posts/index.js +230 -0
  238. package/dist/blocks/profiles/index.d.ts +7 -7
  239. package/dist/blocks/profiles/index.js +5 -6
  240. package/dist/blocks/promotions/index.d.ts +9 -9
  241. package/dist/blocks/promotions/index.js +7 -8
  242. package/dist/blocks/push/index.d.ts +9 -9
  243. package/dist/blocks/push/index.js +4 -5
  244. package/dist/blocks/queue/index.d.ts +562 -0
  245. package/dist/blocks/queue/index.js +1407 -0
  246. package/dist/blocks/quotes/index.d.ts +29 -14
  247. package/dist/blocks/quotes/index.js +14 -14
  248. package/dist/blocks/rank/index.d.ts +7 -7
  249. package/dist/blocks/rank/index.js +4 -4
  250. package/dist/blocks/reactions/index.d.ts +154 -5
  251. package/dist/blocks/reactions/index.js +168 -4
  252. package/dist/blocks/relations/index.d.ts +59 -42
  253. package/dist/blocks/relations/index.js +117 -59
  254. package/dist/blocks/reminders/index.d.ts +21 -17
  255. package/dist/blocks/reminders/index.js +26 -27
  256. package/dist/blocks/reviews/index.d.ts +8 -8
  257. package/dist/blocks/reviews/index.js +6 -7
  258. package/dist/blocks/saved-views/index.d.ts +311 -4
  259. package/dist/blocks/saved-views/index.js +437 -2
  260. package/dist/blocks/scores/index.d.ts +48 -0
  261. package/dist/blocks/scores/index.js +40 -0
  262. package/dist/blocks/search/index.d.ts +168 -5
  263. package/dist/blocks/search/index.js +277 -6
  264. package/dist/blocks/security-events/index.d.ts +440 -0
  265. package/dist/blocks/security-events/index.js +885 -0
  266. package/dist/blocks/segments/index.d.ts +130 -0
  267. package/dist/blocks/segments/index.js +135 -0
  268. package/dist/blocks/sequences/index.d.ts +259 -0
  269. package/dist/blocks/sequences/index.js +376 -0
  270. package/dist/blocks/service-accounts/index.d.ts +132 -0
  271. package/dist/blocks/service-accounts/index.js +109 -0
  272. package/dist/blocks/sessions/index.d.ts +138 -3
  273. package/dist/blocks/sessions/index.js +173 -2
  274. package/dist/blocks/settings/index.d.ts +181 -5
  275. package/dist/blocks/settings/index.js +226 -4
  276. package/dist/blocks/share-links/index.d.ts +46 -19
  277. package/dist/blocks/share-links/index.js +74 -23
  278. package/dist/blocks/shipments/index.d.ts +236 -0
  279. package/dist/blocks/shipments/index.js +548 -0
  280. package/dist/blocks/signatures/index.d.ts +151 -0
  281. package/dist/blocks/signatures/index.js +149 -0
  282. package/dist/blocks/signing-keys/index.d.ts +4 -4
  283. package/dist/blocks/signing-keys/index.js +4 -165
  284. package/dist/blocks/sla/index.d.ts +37 -27
  285. package/dist/blocks/sla/index.js +48 -13
  286. package/dist/blocks/sso/index.d.ts +7 -7
  287. package/dist/blocks/sso/index.js +4 -5
  288. package/dist/blocks/state-machine/index.d.ts +14 -14
  289. package/dist/blocks/state-machine/index.js +26 -26
  290. package/dist/blocks/subjects/index.d.ts +45 -0
  291. package/dist/blocks/subjects/index.js +203 -0
  292. package/dist/blocks/tags/index.d.ts +170 -5
  293. package/dist/blocks/tags/index.js +265 -5
  294. package/dist/blocks/tasks/index.d.ts +346 -0
  295. package/dist/blocks/tasks/index.js +626 -0
  296. package/dist/blocks/teams/index.d.ts +7 -7
  297. package/dist/blocks/teams/index.js +4 -4
  298. package/dist/blocks/templates/index.d.ts +18 -18
  299. package/dist/blocks/templates/index.js +11 -12
  300. package/dist/blocks/time-tracking/index.d.ts +40 -32
  301. package/dist/blocks/time-tracking/index.js +40 -40
  302. package/dist/blocks/timeline/index.d.ts +116 -0
  303. package/dist/blocks/timeline/index.js +164 -0
  304. package/dist/blocks/trash/index.d.ts +47 -9
  305. package/dist/blocks/trash/index.js +9 -8
  306. package/dist/blocks/undo/index.d.ts +48 -5
  307. package/dist/blocks/undo/index.js +60 -4
  308. package/dist/blocks/updated-at/index.d.ts +20 -0
  309. package/dist/blocks/updated-at/index.js +14 -0
  310. package/dist/blocks/usage/index.d.ts +40 -6
  311. package/dist/blocks/usage/index.js +301 -4
  312. package/dist/blocks/vercel-marketplace/index.d.ts +7 -7
  313. package/dist/blocks/vercel-marketplace/index.js +8 -9
  314. package/dist/blocks/versions/index.d.ts +38 -19
  315. package/dist/blocks/versions/index.js +66 -19
  316. package/dist/blocks/waitlist/index.d.ts +9 -9
  317. package/dist/blocks/waitlist/index.js +5 -6
  318. package/dist/blocks/webhooks/index.d.ts +21 -21
  319. package/dist/blocks/webhooks/index.js +18 -19
  320. package/dist/blocks/workflow-editor/index.d.ts +99 -0
  321. package/dist/blocks/workflow-editor/index.js +733 -0
  322. package/dist/blocks/workflows/index.d.ts +72 -6
  323. package/dist/blocks/workflows/index.js +379 -4
  324. package/dist/bookings-D4dvGXiR.d.ts +290 -0
  325. package/dist/bucket-CiNi8sIw.d.ts +666 -0
  326. package/dist/build-BFC8nFiL.js +797 -0
  327. package/dist/build-QitPVzzO.js +2073 -0
  328. package/dist/carrier-KzeYXVrW.d.ts +169 -0
  329. package/dist/chat-sdk/index.d.ts +43 -11
  330. package/dist/chat-sdk/index.js +51 -24
  331. package/dist/claims-DTy6R6my.js +63 -0
  332. package/dist/cli/add-BgsUjCan.js +1252 -0
  333. package/dist/cli/add-DCI5JKjA.js +99 -0
  334. package/dist/cli/add-DWjlVwvP.js +1 -0
  335. package/dist/cli/args-UEwg0l-N.js +27 -0
  336. package/dist/cli/backfill-nxPbcsns.js +293 -0
  337. package/dist/cli/bin.js +1 -1
  338. package/dist/cli/blocks-BZHI8mRC.js +156 -0
  339. package/dist/cli/blocks-Cr4HGePW.js +1 -0
  340. package/dist/cli/cache-CXgR_Ahi.js +607 -0
  341. package/dist/cli/codemod-DSN7iAdg.js +2343 -0
  342. package/dist/cli/codemod-block-renames-BuSaTE_G.js +239 -0
  343. package/dist/cli/command-CQ61x6gN.js +941 -0
  344. package/dist/cli/completion-2Y3D_eNu.js +211 -0
  345. package/dist/cli/completion-BwI0_Ap5.js +30 -0
  346. package/dist/cli/completion-Dlu5AdUW.js +1 -0
  347. package/dist/cli/config-9t5ec_N7.js +1642 -0
  348. package/dist/cli/config-CBqkQjjN.js +1 -0
  349. package/dist/cli/config-CPux9Wa7.js +47 -0
  350. package/dist/cli/config-edit-CrWfk8s3.js +621 -0
  351. package/dist/cli/config-group-C8tjut39.js +391 -0
  352. package/dist/cli/content-mapper-DNs7lTu7.js +182 -0
  353. package/dist/cli/db-DrBI_HNv.js +223 -0
  354. package/dist/cli/doctor-DDrEM6S1.js +4561 -0
  355. package/dist/cli/env-BBl5L8Bf.js +143 -0
  356. package/dist/cli/env-CAU1nknN.js +1 -0
  357. package/dist/cli/files-CX71yBm8.js +1010 -0
  358. package/dist/cli/gen-MtijJQ9r.js +387 -0
  359. package/dist/cli/in-stack-diff-DQTW53Vf.js +257 -0
  360. package/dist/cli/index.d.ts +51 -5
  361. package/dist/cli/index.js +8 -8
  362. package/dist/cli/init-D-aDv9r5.js +440 -0
  363. package/dist/cli/keys-DGEpMbeB.js +106 -0
  364. package/dist/cli/live-iEeH15ck.js +341 -0
  365. package/dist/cli/mcp-BAPyaQ62.js +249 -0
  366. package/dist/cli/metadata-DVx9Zgbj.js +150 -0
  367. package/dist/cli/migration-safety-D7PhzFxm.js +928 -0
  368. package/dist/cli/module-migration-aPCckev6.js +734 -0
  369. package/dist/cli/moved-CsfDQcyk.js +254 -0
  370. package/dist/cli/orphans-BAboqyVM.js +28 -0
  371. package/dist/cli/parse-B9Iv_-Pf.js +182 -0
  372. package/dist/cli/preset-BwmIfFnh.js +101 -0
  373. package/dist/cli/print-BeWO7OJY.js +67 -0
  374. package/dist/cli/remove-B46Dmd2M.js +238 -0
  375. package/dist/cli/render-ucJmUyuM.js +2170 -0
  376. package/dist/cli/run-BXx6D1aR.js +63 -0
  377. package/dist/cli/run-CvYVAztY.js +1427 -0
  378. package/dist/cli/run-DYhLBcFW.js +702 -0
  379. package/dist/cli/seed-Cz8PcXeT.js +188 -0
  380. package/dist/cli/seed-D6XijwbR.js +1 -0
  381. package/dist/cli/shared-LZroULBe.js +151 -0
  382. package/dist/cli/skills-toUan_OV.js +121 -0
  383. package/dist/cli/snapshot-C8MVPyO8.js +729 -0
  384. package/dist/cli/source-DANaJJVc.js +320 -0
  385. package/dist/cli/source-args-IpJRJO5t.js +59 -0
  386. package/dist/cli/spec-DGVNMSSB.js +7530 -0
  387. package/dist/cli/spec-g8_G5K7o.js +1 -0
  388. package/dist/cli/stack-CWEHdO0b.js +135 -0
  389. package/dist/cli/sync-btj01bcM.js +319 -0
  390. package/dist/cli/upgrade-B596d4t8.js +403 -0
  391. package/dist/cli/upgrade-Dw3TMQzn.js +41 -0
  392. package/dist/cli/version-Du4CgONY.js +4 -0
  393. package/dist/client/index.d.ts +8 -7
  394. package/dist/client/index.js +11 -7
  395. package/dist/client/native/index.d.ts +6 -6
  396. package/dist/client/native/index.js +3 -3
  397. package/dist/client-BAEbEA7t.js +287 -0
  398. package/dist/cloud-event-CzZTJkXv.d.ts +64 -0
  399. package/dist/codecs-CMWlhHZ0.d.ts +222 -0
  400. package/dist/codecs-TylXqU_I.js +358 -0
  401. package/dist/commerce/index.d.ts +4 -3
  402. package/dist/commerce/index.js +6 -6
  403. package/dist/compiler-D3UmE7ao.d.ts +14 -0
  404. package/dist/compose-DKW0Tr3e.js +53 -0
  405. package/dist/composite-BARuBEDE.js +130 -0
  406. package/dist/composite-Dsxj7T5K.d.ts +82 -0
  407. package/dist/config/index.d.ts +6 -7
  408. package/dist/config/index.js +6 -6
  409. package/dist/config-CcehOvbz.js +1698 -0
  410. package/dist/config-DWGgUQCh.js +1108 -0
  411. package/dist/connectors-Fud4amxp.d.ts +147 -0
  412. package/dist/context-CEuTKrkz.d.ts +4129 -0
  413. package/dist/context-DBicfUNz.js +41 -0
  414. package/dist/controller-BNZKd6bJ.js +73 -0
  415. package/dist/controller-BrP0gn47.d.ts +52 -0
  416. package/dist/conversion-BAbucuXq.d.ts +86 -0
  417. package/dist/conversion-Dq1S7xzE.js +77 -0
  418. package/dist/create/index.d.ts +34 -23
  419. package/dist/create/index.js +35 -27
  420. package/dist/create/lite/index.d.ts +2 -2
  421. package/dist/create/supabase/index.d.ts +2 -2
  422. package/dist/create/supabase/index.js +2 -2
  423. package/dist/create-blocks-Bu4H5TXw.js +352 -0
  424. package/dist/credentials/index.d.ts +5 -5
  425. package/dist/credentials/index.js +6 -7
  426. package/dist/cron-CgHTKwYG.js +148 -0
  427. package/dist/cron-route-UU9i5i9J.js +24 -0
  428. package/dist/data-engine-BWoz9lED.d.ts +273 -0
  429. package/dist/data-engine-D1BkmBoR.js +173 -0
  430. package/dist/data-hooks-tgF1Ct0F.js +280 -0
  431. package/dist/db-blocks-DJGbjIPz.js +62 -0
  432. package/dist/db-exception-Lngc1W49.js +31 -0
  433. package/dist/deal-forecast-Bv52QMyX.js +39 -0
  434. package/dist/deal-forecast-LwO-Z4_C.d.ts +23 -0
  435. package/dist/define-DFBnQyYg.d.ts +1255 -0
  436. package/dist/define-DlUeKHce.js +2011 -0
  437. package/dist/define-block-BGqOO8B3.js +64 -0
  438. package/dist/define-block-BVcLQ3DF.d.ts +1657 -0
  439. package/dist/delegation--93jRsVO.js +146 -0
  440. package/dist/documents-Cup1rpjF.d.ts +152 -0
  441. package/dist/edge/index.d.ts +23 -23
  442. package/dist/edge/index.js +14 -14
  443. package/dist/elysia/index.d.ts +1 -1
  444. package/dist/elysia/index.js +1 -1
  445. package/dist/embeddings-kFbRvuic.d.ts +78 -0
  446. package/dist/embeddings-vVzseUw0.js +128 -0
  447. package/dist/ended-gUsMZVNg.d.ts +26 -0
  448. package/dist/entitlements-CJpYQXeE.d.ts +54 -0
  449. package/dist/entitlements-NZAE_vLj.js +45 -0
  450. package/dist/entity-naming-Dtyq5sKE.js +131 -0
  451. package/dist/entity-schema-BDv6w-OQ.js +39 -0
  452. package/dist/envelope-Bzu0JnY2.js +90 -0
  453. package/dist/errors-BVFgt8BZ.js +328 -0
  454. package/dist/errors-CyxMxzlu.js +44 -0
  455. package/dist/escape-like-PReMbEEU.d.ts +30 -0
  456. package/dist/eve/index.d.ts +5 -5
  457. package/dist/eve/index.js +4 -4
  458. package/dist/eve-BFSwTu1z.d.ts +157 -0
  459. package/dist/event-calendar-DCufbihU.d.ts +65 -0
  460. package/dist/events/index.d.ts +4 -4
  461. package/dist/events/index.js +2 -1
  462. package/dist/events-vcqenSYU.d.ts +852 -0
  463. package/dist/executor-3qcMhg6R.js +207 -0
  464. package/dist/executor-BQ7dYw4E.js +843 -0
  465. package/dist/executor-CVIn6JHa.d.ts +174 -0
  466. package/dist/executor-D3gB-9si.js +486 -0
  467. package/dist/executor-_2ekNofh.d.ts +104 -0
  468. package/dist/executor-hGjrop3A.d.ts +37 -0
  469. package/dist/expo/index.d.ts +12 -11
  470. package/dist/expo/index.js +12 -11
  471. package/dist/extension-B-lajjex.js +58 -0
  472. package/dist/extension-B0EjCYhO.js +61 -0
  473. package/dist/extension-DeAd_MqI.js +121 -0
  474. package/dist/extension-DzCc0IOd.js +103 -0
  475. package/dist/extension-shared-Djm8mGHD.js +60 -0
  476. package/dist/field-errors-fsbFktYF.d.ts +216 -0
  477. package/dist/field-formats-CAFNkKSN.d.ts +38 -0
  478. package/dist/fields-B0zaJAO3.js +107 -0
  479. package/dist/fields-C3q2ypnO.d.ts +78 -0
  480. package/dist/filter-evaluate-CPxeae5X.d.ts +37 -0
  481. package/dist/filter-evaluate-w1XOIUOL.js +217 -0
  482. package/dist/filter-query-BXLs72G9.d.ts +133 -0
  483. package/dist/filter-query-DMoKo82_.js +566 -0
  484. package/dist/flags-BOdA_ETQ.js +279 -0
  485. package/dist/flags-C01PLMJ-.d.ts +246 -0
  486. package/dist/flags-sdk/index.d.ts +1 -1
  487. package/dist/flags-sdk/index.js +2 -2
  488. package/dist/form-definition-BTpM_tz1.js +363 -0
  489. package/dist/form-definition-BjEtH8BT.d.ts +119 -0
  490. package/dist/format-u-65igKI.d.ts +79 -0
  491. package/dist/framework-BKyTeS-j.d.ts +47 -0
  492. package/dist/framework-DDdkR7FX.js +58 -0
  493. package/dist/function-contract-DxFNOmsm.d.ts +27 -0
  494. package/dist/gateway-TD1pRfTP.d.ts +115 -0
  495. package/dist/guest-actions-1T1DeS5Y.d.ts +5 -0
  496. package/dist/guest-actions-B7zdhfnh.js +9 -0
  497. package/dist/h3/index.d.ts +2 -4
  498. package/dist/h3/index.js +2 -4
  499. package/dist/h3/v1/index.d.ts +2 -3
  500. package/dist/h3/v1/index.js +2 -3
  501. package/dist/hono/index.d.ts +27 -21
  502. package/dist/hono/index.js +22 -20
  503. package/dist/http-7-UvHjQe.js +28 -0
  504. package/dist/impersonation-DM3oWNoD.js +62 -0
  505. package/dist/inbox-NDKwSk_H.d.ts +321 -0
  506. package/dist/index-B938YqY-.d.ts +188 -0
  507. package/dist/index-BUuVq1co.d.ts +158 -0
  508. package/dist/index-BnH4Gomw.d.ts +633 -0
  509. package/dist/index-BxYOB1Oc.d.ts +149 -0
  510. package/dist/index-C-qpk8EQ.d.ts +262 -0
  511. package/dist/index-CG9rA8H8.d.ts +407 -0
  512. package/dist/index-CguFm716.d.ts +518 -0
  513. package/dist/index-DLq69k3F.d.ts +588 -0
  514. package/dist/index-Do2ChN_y.d.ts +287 -0
  515. package/dist/index.d.ts +39 -92
  516. package/dist/index.js +95 -16
  517. package/dist/instances-BHjCZoF8.js +277 -0
  518. package/dist/invalidate-DMp4eqfF.d.ts +21 -0
  519. package/dist/json-schema-Ca6gYbEP.js +888 -0
  520. package/dist/jwks-cache-DEsKI0hJ.js +49 -0
  521. package/dist/kit-5l-o8RxL.js +133 -0
  522. package/dist/kit-DOwKpSkA.d.ts +94 -0
  523. package/dist/knowledge-BGbtxMP9.js +300 -0
  524. package/dist/knowledge-CtL-Vfgy.d.ts +217 -0
  525. package/dist/lint/index.d.ts +94 -11
  526. package/dist/lint/index.js +268 -26
  527. package/dist/list/index.d.ts +4 -4
  528. package/dist/list/index.js +3 -3
  529. package/dist/list-query-BDVutLFr.d.ts +222 -0
  530. package/dist/list-query-BKy2zBaT.js +559 -0
  531. package/dist/live-C21DgbsD.js +275 -0
  532. package/dist/mapper/bin.js +380 -0
  533. package/dist/mcp/index.d.ts +8 -8
  534. package/dist/mcp/index.js +11 -11
  535. package/dist/mcp/sdk/index.d.ts +10 -10
  536. package/dist/mcp/sdk/index.js +11 -11
  537. package/dist/messages-D4XWuRTj.js +492 -0
  538. package/dist/messaging-C_Pr9tGx.d.ts +297 -0
  539. package/dist/methods-B3o7BFOW.js +11 -0
  540. package/dist/mfa-oIOYTpvc.d.ts +36 -0
  541. package/dist/model-hwpvole9.d.ts +340 -0
  542. package/dist/model-messages-CKG0zwdF.js +206 -0
  543. package/dist/money-codec-BzddguAQ.js +41 -0
  544. package/dist/my-work-kinds-BU3SlA-6.js +11 -0
  545. package/dist/nestjs/index.d.ts +3 -3
  546. package/dist/nestjs/index.js +2 -2
  547. package/dist/next/index.d.ts +296 -57
  548. package/dist/next/index.js +310 -54
  549. package/dist/node/index.d.ts +2 -2
  550. package/dist/node/index.js +6 -8
  551. package/dist/operations-CSc_IsHO.d.ts +6 -0
  552. package/dist/options-0qvUckqt.js +9 -0
  553. package/dist/options-1GgseJq5.js +10 -0
  554. package/dist/options-21s0dpnX.js +9 -0
  555. package/dist/options-2EMA_x6_.js +16 -0
  556. package/dist/options-63AKQNv0.js +5 -0
  557. package/dist/options-9gvPo1BC.js +8 -0
  558. package/dist/options-B-cxGmRA.js +5 -0
  559. package/dist/options-B0EJULm5.js +5 -0
  560. package/dist/options-B2swWnJW.js +9 -0
  561. package/dist/options-B5VUf4IT.js +8 -0
  562. package/dist/options-BMGClqoa.js +11 -0
  563. package/dist/options-BPDiwSa-.js +5 -0
  564. package/dist/options-BQIYfx9F.js +9 -0
  565. package/dist/options-BVg58avP.js +5 -0
  566. package/dist/options-BYOtaF7w.js +5 -0
  567. package/dist/options-BZOliZvb.js +9 -0
  568. package/dist/options-BbnPv6p7.js +12 -0
  569. package/dist/options-BfLmA375.js +5 -0
  570. package/dist/options-BjtrC7o6.js +8 -0
  571. package/dist/options-BlncUmIc.js +9 -0
  572. package/dist/options-BlzSfWxC.d.ts +10 -0
  573. package/dist/options-BnZS7IK-.js +9 -0
  574. package/dist/options-Bpl-WFPk.js +15 -0
  575. package/dist/options-Br1Xi2Hw.js +9 -0
  576. package/dist/options-Bt0bYMLl.js +24 -0
  577. package/dist/options-BvtnxHfK.js +24 -0
  578. package/dist/options-C-dQHH5-.js +8 -0
  579. package/dist/options-C3RgtOLo.js +5 -0
  580. package/dist/options-CE93HOYi.d.ts +7 -0
  581. package/dist/options-CF7nRWXS.js +5 -0
  582. package/dist/options-CM6-18FQ.d.ts +13 -0
  583. package/dist/options-CPK2nQER.js +5 -0
  584. package/dist/options-CRz8Ht_4.js +9 -0
  585. package/dist/options-CSCXNYJO.d.ts +8 -0
  586. package/dist/options-CW9wTqOk.js +11 -0
  587. package/dist/options-CYV4iZiQ.js +5 -0
  588. package/dist/options-Cl9Ag2Pt.js +8 -0
  589. package/dist/options-Cp0HyUEk.js +9 -0
  590. package/dist/options-Cqq2jUww.js +10 -0
  591. package/dist/options-CsGl5BLH.d.ts +52 -0
  592. package/dist/options-CtUUU71w.js +20 -0
  593. package/dist/options-CvD9vNvx.js +9 -0
  594. package/dist/options-CyAhRKKm.d.ts +14 -0
  595. package/dist/options-Cyu0hgmN.js +9 -0
  596. package/dist/options-D0G06Zm9.js +8 -0
  597. package/dist/options-D0bzZx9a.d.ts +10 -0
  598. package/dist/options-D1hSuf50.d.ts +12 -0
  599. package/dist/options-D6as77gU.d.ts +16 -0
  600. package/dist/options-DChZoVfs.d.ts +11 -0
  601. package/dist/options-DINdgVih.d.ts +9 -0
  602. package/dist/options-DJ-aYPVN.js +5 -0
  603. package/dist/options-DPgdAXO5.js +11 -0
  604. package/dist/options-DWML05Cp.js +5 -0
  605. package/dist/options-DWVYM8P0.d.ts +17 -0
  606. package/dist/options-DWbA9buW.js +9 -0
  607. package/dist/options-DXnBN2E7.js +8 -0
  608. package/dist/options-D_bBVCXg.js +5 -0
  609. package/dist/options-DcOx8_3X.d.ts +19 -0
  610. package/dist/options-DeNejBtq.js +8 -0
  611. package/dist/options-DgQo80Xh.js +5 -0
  612. package/dist/options-DlohRAYd.d.ts +13 -0
  613. package/dist/options-DplE18Ko.d.ts +12 -0
  614. package/dist/options-DrSkIBCD.js +9 -0
  615. package/dist/options-E7KcmHQv.js +8 -0
  616. package/dist/options-HLwOuF2H.js +10 -0
  617. package/dist/options-IHPg8ZoA.js +5 -0
  618. package/dist/options-KV84gAxl.js +10 -0
  619. package/dist/options-Li1Dyu88.d.ts +10 -0
  620. package/dist/options-Q1Bzgqpr.js +5 -0
  621. package/dist/options-_F-enoBs.d.ts +26 -0
  622. package/dist/options-c5WCsky5.js +21 -0
  623. package/dist/options-nFzfgtA6.js +5 -0
  624. package/dist/options-o2kfYU2x.js +8 -0
  625. package/dist/options-pOVWwbAK.d.ts +10 -0
  626. package/dist/options-t_O5ldT6.js +5 -0
  627. package/dist/options-xD4_FRUq.js +10 -0
  628. package/dist/options-y_-AkVCs.d.ts +15 -0
  629. package/dist/options-zkyhM3qi.js +8 -0
  630. package/dist/orpc/index.d.ts +76 -20
  631. package/dist/orpc/index.js +174 -9
  632. package/dist/otel/index.d.ts +3 -3
  633. package/dist/otel/index.js +7 -7
  634. package/dist/outbox-HvGAJuBe.d.ts +199 -0
  635. package/dist/payments-BXvabJOw.js +16 -0
  636. package/dist/payments-BYcN34Fp.d.ts +114 -0
  637. package/dist/permissions-controller-BMsqIE5T.js +34 -0
  638. package/dist/plugin-AKwwe2gF.js +48 -0
  639. package/dist/pool-CrtT4dg-.d.ts +123 -0
  640. package/dist/pool-errors-JUBcGrre.js +27 -0
  641. package/dist/ports-DOhtuw3c.js +152 -0
  642. package/dist/ports-sx226JUL.d.ts +89 -0
  643. package/dist/postgres/index.d.ts +5 -5
  644. package/dist/postgres/index.js +3 -3
  645. package/dist/postgrest-executor-BFW4oWte.js +1064 -0
  646. package/dist/postgrest-z-T0l23T.d.ts +53 -0
  647. package/dist/powersync/index.d.ts +106 -7
  648. package/dist/powersync/index.js +169 -23
  649. package/dist/preset/index.d.ts +4 -4
  650. package/dist/preset/index.js +4 -4
  651. package/dist/preset-CsHnIBJF.js +875 -0
  652. package/dist/problem-Bf0cJ7tk.js +162 -0
  653. package/dist/problem-DNwN8iGz.d.ts +79 -0
  654. package/dist/provider-B6g7rBZX.js +57 -0
  655. package/dist/provider-CqwEOLCA.d.ts +112 -0
  656. package/dist/push-token-D3Vcf0Pf.d.ts +24 -0
  657. package/dist/queries-BWYYS9um.js +239 -0
  658. package/dist/query/index.d.ts +4 -4
  659. package/dist/query/index.js +357 -3
  660. package/dist/rank-result-BBJIK-k_.js +18 -0
  661. package/dist/rank-result-Bwe7igy-.d.ts +14 -0
  662. package/dist/rate-limit-BWKGlhTM.js +49 -0
  663. package/dist/rate-limit-Bztf32cl.d.ts +50 -0
  664. package/dist/rate-limit-o44SYkVY.js +327 -0
  665. package/dist/react/index.d.ts +10 -9
  666. package/dist/react/index.js +5 -5
  667. package/dist/react/native/index.d.ts +1 -1
  668. package/dist/react/native/index.js +2 -3
  669. package/dist/react/server.d.ts +72 -13
  670. package/dist/react/server.js +71 -9
  671. package/dist/react/session.d.ts +3 -3
  672. package/dist/react-BuDYI62C.js +979 -0
  673. package/dist/react-router/index.d.ts +19 -13
  674. package/dist/react-router/index.js +10 -10
  675. package/dist/read-set-BnKnofIj.js +199 -0
  676. package/dist/realtime/index.d.ts +7 -7
  677. package/dist/realtime/index.js +36 -4
  678. package/dist/record-bindings-DkBJpC5A.js +26 -0
  679. package/dist/record-form-BYs9xv_N.d.ts +82 -0
  680. package/dist/record-type-DRbnlj5q.js +221 -0
  681. package/dist/recordings-BBSJt_YV.d.ts +119 -0
  682. package/dist/records/index.d.ts +83 -0
  683. package/dist/records/index.js +314 -0
  684. package/dist/refresh-DT_ICaK-.d.ts +54 -0
  685. package/dist/refusal-ByBZcm0V.js +64 -0
  686. package/dist/refusal-CSntB_x8.d.ts +32 -0
  687. package/dist/replicas-Dyoh3CEg.js +94 -0
  688. package/dist/resolve-B0mW2m7f.js +932 -0
  689. package/dist/resolve-CXX6DHv3.d.ts +288 -0
  690. package/dist/resource-D8pzB5Qf.d.ts +123 -0
  691. package/dist/resource-DV2GC2dB.js +520 -0
  692. package/dist/resource-DvgXqZB_.js +105 -0
  693. package/dist/resource-execute-CzHuDsil.d.ts +15 -0
  694. package/dist/resource-types-DnKiH4G2.d.ts +157 -0
  695. package/dist/resources-B9cQxhjw.d.ts +7 -0
  696. package/dist/resources-C02l_YBJ.js +64 -0
  697. package/dist/respond-C3CcOZlA.js +100 -0
  698. package/dist/respond-Dn1_YhC1.d.ts +106 -0
  699. package/dist/result-DZeA5KS6.d.ts +351 -0
  700. package/dist/result-ntFBW2p2.js +146 -0
  701. package/dist/rows-BDLZStp4.js +80 -0
  702. package/dist/rows-Bm6sskji.js +39 -0
  703. package/dist/rrule-79K2c3Nr.js +290 -0
  704. package/dist/run-state-BMCD_1Lt.d.ts +13 -0
  705. package/dist/sales-lines-Bk4mbLH1.d.ts +37 -0
  706. package/dist/sales-lines-D-sf9PIB.js +43 -0
  707. package/dist/sales-shared-DXGFJP4g.js +22 -0
  708. package/dist/schemas-l2aF78zQ.js +216 -0
  709. package/dist/scores-B2BiNuVJ.d.ts +174 -0
  710. package/dist/scores-CRp3vvQU.js +177 -0
  711. package/dist/server/index.d.ts +103 -42
  712. package/dist/server/index.js +98 -30
  713. package/dist/server-types-CFtehAsr.d.ts +946 -0
  714. package/dist/session-CH0SKgIz.d.ts +99 -0
  715. package/dist/shared-C47zAh2A.js +17 -0
  716. package/dist/sign-in-BAjR49fq.d.ts +24 -0
  717. package/dist/sign-in-BsIaNx2C.js +392 -0
  718. package/dist/sign-in-DNCdrk05.js +608 -0
  719. package/dist/signatures-CNcoq392.js +145 -0
  720. package/dist/signatures-Dkx9OE8j.d.ts +43 -0
  721. package/dist/signers-BAEzvTJ0.d.ts +390 -0
  722. package/dist/signing-keys-BNDUxpQL.d.ts +119 -0
  723. package/dist/signing-keys-wGKh4vtt.js +164 -0
  724. package/dist/solid/index.d.ts +67 -15
  725. package/dist/solid/index.js +93 -11
  726. package/dist/solid-start/index.d.ts +17 -14
  727. package/dist/solid-start/index.js +8 -8
  728. package/dist/spec/index.d.ts +691 -9
  729. package/dist/spec/index.js +2487 -5
  730. package/dist/spec-DTWkHzYZ.js +124 -0
  731. package/dist/spec-pins-C1Vm8OBl.js +61 -0
  732. package/dist/spec-pins-DIx95afw.d.ts +125 -0
  733. package/dist/sql/index.d.ts +5 -5
  734. package/dist/sql/index.js +5 -5
  735. package/dist/sql-BPbbPzRJ.js +421 -0
  736. package/dist/sql-ClHIdgKS.js +126996 -0
  737. package/dist/sqlite/index.d.ts +126 -0
  738. package/dist/sqlite/index.js +197 -0
  739. package/dist/sso-B0Txid2-.d.ts +161 -0
  740. package/dist/sso-d2S4x_f9.js +217 -0
  741. package/dist/ssr/index.d.ts +5 -4
  742. package/dist/ssr/index.js +3 -3
  743. package/dist/standard-BA3mLh6w.js +25 -0
  744. package/dist/standard-DBV730sF.d.ts +7 -0
  745. package/dist/stats-BHl1-zj9.js +83 -0
  746. package/dist/statuses-DMMDwXpZ.js +29 -0
  747. package/dist/statuses-zRcc2TeZ.js +28 -0
  748. package/dist/storage/index.d.ts +3 -3
  749. package/dist/storage/index.js +11 -11
  750. package/dist/store-CpheI-lN.d.ts +83 -0
  751. package/dist/streams/index.d.ts +3 -3
  752. package/dist/streams/index.js +2 -3
  753. package/dist/streams/redis/index.d.ts +2 -2
  754. package/dist/streams/redis/index.js +3 -3
  755. package/dist/stripe/index.d.ts +1 -1
  756. package/dist/stripe-X22LjuH-.d.ts +156 -0
  757. package/dist/subject-readers-B-pQ9Mmo.js +49 -0
  758. package/dist/subject-readers-BNSzkqw_.d.ts +21 -0
  759. package/dist/subjects-BpIEN1MS.d.ts +90 -0
  760. package/dist/subjects-DvmQeF_F.d.ts +79 -0
  761. package/dist/summaries-8jQTELIX.d.ts +69 -0
  762. package/dist/support-view-BYOgwXsJ.d.ts +17 -0
  763. package/dist/svelte/index.d.ts +67 -12
  764. package/dist/svelte/index.js +108 -11
  765. package/dist/sveltekit/index.d.ts +19 -16
  766. package/dist/sveltekit/index.js +14 -14
  767. package/dist/table-schema-BlF6k62Q.d.ts +81 -0
  768. package/dist/table-schema-CD8cJz_M.js +293 -0
  769. package/dist/tags-BjHflcHF.d.ts +30 -0
  770. package/dist/tags-CIZTqtlY.js +39 -0
  771. package/dist/tanstack-db/index.d.ts +50 -6
  772. package/dist/tanstack-db/index.js +44 -3
  773. package/dist/tanstack-start/index.d.ts +15 -12
  774. package/dist/tanstack-start/index.js +9 -9
  775. package/dist/tax-BkCNWWMc.js +140 -0
  776. package/dist/tax-DPShHual.d.ts +170 -0
  777. package/dist/tee-V97_v1ZS.js +101 -0
  778. package/dist/template-Drgg3v2J.js +126 -0
  779. package/dist/temporal-required-Dy0GGD8E.js +20 -0
  780. package/dist/tenant-BgIiMQpo.js +27 -0
  781. package/dist/tenant-source-bqWpSr86.js +8 -0
  782. package/dist/tenant-yYg0E2-n.d.ts +17 -0
  783. package/dist/testing/index.d.ts +183 -58
  784. package/dist/testing/index.js +405 -97
  785. package/dist/timeline--VU3A1e4.js +50 -0
  786. package/dist/timeline-CtG0sehj.d.ts +151 -0
  787. package/dist/timing-dypS0nxW.js +95 -0
  788. package/dist/topic-CJrQZQaa.d.ts +415 -0
  789. package/dist/topic-ikV_pLTX.js +643 -0
  790. package/dist/types-BBQLbui9.d.ts +659 -0
  791. package/dist/types-CAQBmpDx.d.ts +217 -0
  792. package/dist/types-DFdg_4yN.d.ts +912 -0
  793. package/dist/types-Dp3UCr1e.d.ts +194 -0
  794. package/dist/types-Dr9wZgNy.d.ts +251 -0
  795. package/dist/types-EO2crSX_.d.ts +177 -0
  796. package/dist/types-SFRomQF7.d.ts +624 -0
  797. package/dist/undo-B1jwnVyN.d.ts +46 -0
  798. package/dist/undo-BjCChCmH.js +44 -0
  799. package/dist/upload-claim-B1ZU8ydB.js +33 -0
  800. package/dist/usage-D7QkrwzV.d.ts +232 -0
  801. package/dist/user-change-DgWC6RRC.js +135 -0
  802. package/dist/variants-Cy--Ub-a.js +53 -0
  803. package/dist/vault-O-YlAyHb.d.ts +62 -0
  804. package/dist/vercel-connect/index.d.ts +1 -1
  805. package/dist/vercel-connect/index.js +3 -3
  806. package/dist/verify-CMou8dWZ.d.ts +146 -0
  807. package/dist/verify-ZLFUdlqE.js +130 -0
  808. package/dist/view-C8Ve14ja.js +247 -0
  809. package/dist/view-DyFdMCqg.d.ts +97 -0
  810. package/dist/vue/index.d.ts +67 -20
  811. package/dist/vue/index.js +102 -14
  812. package/dist/watch-topic-BcGfvZOE.d.ts +31 -0
  813. package/dist/wiring-CDNuQoJJ.js +13 -0
  814. package/dist/workflow-sdk/builder/index.d.ts +12 -12
  815. package/dist/workflow-sdk/builder/index.js +16 -17
  816. package/dist/workflow-sdk/index.d.ts +18 -15
  817. package/dist/workflow-sdk/index.js +2 -2
  818. package/dist/workflow-sdk/world/index.d.ts +6 -6
  819. package/dist/workflow-sdk/world/index.js +12 -12
  820. package/dist/workflow-sdk-BFHu4sci.d.ts +163 -0
  821. package/dist/workflow-sdk-BVlFEB5Q.js +242 -0
  822. package/dist/workflow-sdk-Bw6_u0ar.js +2446 -0
  823. package/dist/workflows-B0ZPAQu0.d.ts +255 -0
  824. package/dist/yjs/index.d.ts +28 -4
  825. package/dist/yjs/index.js +52 -10
  826. package/package.json +201 -540
  827. package/schemas/config-v1.json +2720 -1693
  828. package/schemas/design-v1.json +147 -5
  829. package/schemas/doctor-report-v1.json +14 -0
  830. package/schemas/snapshot-v2.json +25 -0
  831. package/skills/better-supabase/SKILL.md +71 -28
  832. package/skills/better-supabase/references/block-extensions.md +64 -0
  833. package/skills/better-supabase/references/frontend.md +29 -26
  834. package/skills/better-supabase/references/troubleshooting.md +19 -19
  835. package/skills/better-supabase/references/ui-recipes.md +12837 -8039
  836. package/skills/better-supabase-api/SKILL.md +49 -38
  837. package/skills/better-supabase-api/references/adapters.md +42 -39
  838. package/skills/better-supabase-api/references/ai.md +4 -4
  839. package/skills/better-supabase-api/references/expo.md +8 -8
  840. package/skills/better-supabase-api/references/powersync.md +25 -11
  841. package/skills/better-supabase-api/references/streams-credentials.md +3 -3
  842. package/skills/better-supabase-auth/SKILL.md +17 -17
  843. package/skills/better-supabase-auth/references/authorization-providers.md +8 -6
  844. package/skills/better-supabase-testing/SKILL.md +8 -8
  845. package/dist/access-sql-BpOdJvfj.js +0 -205
  846. package/dist/actor-C9pwyCVz.js +0 -150
  847. package/dist/adapter-D8dW6p2A.js +0 -2190
  848. package/dist/agents-CuxuXVWv.d.ts +0 -117
  849. package/dist/ai-cache-BXMXRhkx.d.ts +0 -82
  850. package/dist/ai-cache-Byy5q6EZ.js +0 -87
  851. package/dist/ai-chat-B00sIOjY.d.ts +0 -619
  852. package/dist/ai-files-DTbIJcxQ.js +0 -339
  853. package/dist/ai-tasks-DN-AV7qB.d.ts +0 -166
  854. package/dist/announcements-DqiLxtKK.js +0 -128
  855. package/dist/api-CmcTYuFT.js +0 -685
  856. package/dist/api-DwLhJS1j.d.ts +0 -444
  857. package/dist/api-keys-Bade6Qtl.d.ts +0 -213
  858. package/dist/api-keys-CO24Ffil.js +0 -318
  859. package/dist/app-tables-0YZ9IskE.js +0 -831
  860. package/dist/app-tables-CbWUI7h_.d.ts +0 -35
  861. package/dist/approvals-C-4MOWdV.d.ts +0 -127
  862. package/dist/arazzo/index.d.ts +0 -277
  863. package/dist/arazzo/index.js +0 -630
  864. package/dist/assistant-CcP_kpu7.d.ts +0 -157
  865. package/dist/asyncapi/index.d.ts +0 -109
  866. package/dist/asyncapi/index.js +0 -572
  867. package/dist/attachments-CPkGJVfk.js +0 -270
  868. package/dist/attributes-BOFl922R.js +0 -44
  869. package/dist/audit-log-5aTnl7W2.js +0 -788
  870. package/dist/auth-module-CwCIY97x.js +0 -10
  871. package/dist/auth-reply-D02x5NSv.js +0 -31
  872. package/dist/authorization-CB69cvnA.d.ts +0 -1504
  873. package/dist/authorization-hooks-HXVZXxUk.d.ts +0 -217
  874. package/dist/authorizer-BVR2vPGA.js +0 -125
  875. package/dist/authorizer-DFP3gHv8.d.ts +0 -82
  876. package/dist/bind-DcXLU1ul.d.ts +0 -76
  877. package/dist/block-env-YfPmSNa1.js +0 -32
  878. package/dist/block-env-kFcaaJLM.d.ts +0 -10
  879. package/dist/block-events-BURaqwyp.js +0 -96
  880. package/dist/block-fields-Cwd4c8m-.js +0 -139
  881. package/dist/block-fields-DnXkMney.d.ts +0 -58
  882. package/dist/block-helpers-DwE32_gT.js +0 -272
  883. package/dist/block-helpers-DyA5BAW4.d.ts +0 -43
  884. package/dist/block-hooks-BadAniNI.d.ts +0 -117
  885. package/dist/block-hooks-C1r-R2r0.js +0 -130
  886. package/dist/block-transport-DBPhgF3W.d.ts +0 -69
  887. package/dist/block-transport-Ds0C2mUf.js +0 -84
  888. package/dist/blocks/ai-chat/react/index.d.ts +0 -52
  889. package/dist/blocks/ai-chat/react/index.js +0 -95
  890. package/dist/blocks/ai-chat/react/server.d.ts +0 -25
  891. package/dist/blocks/ai-chat/react/server.js +0 -23
  892. package/dist/blocks/ai-chat/solid/index.d.ts +0 -34
  893. package/dist/blocks/ai-chat/solid/index.js +0 -41
  894. package/dist/blocks/ai-chat/svelte/index.d.ts +0 -34
  895. package/dist/blocks/ai-chat/svelte/index.js +0 -41
  896. package/dist/blocks/ai-chat/vue/index.d.ts +0 -34
  897. package/dist/blocks/ai-chat/vue/index.js +0 -41
  898. package/dist/blocks/ai-providers/index.d.ts +0 -22
  899. package/dist/blocks/ai-providers/index.js +0 -237
  900. package/dist/blocks/ai-tasks/index.d.ts +0 -10
  901. package/dist/blocks/ai-tasks/index.js +0 -253
  902. package/dist/blocks/announcements/react/index.d.ts +0 -28
  903. package/dist/blocks/announcements/react/index.js +0 -38
  904. package/dist/blocks/announcements/react/server.d.ts +0 -9
  905. package/dist/blocks/announcements/react/server.js +0 -10
  906. package/dist/blocks/announcements/solid/index.d.ts +0 -13
  907. package/dist/blocks/announcements/solid/index.js +0 -14
  908. package/dist/blocks/announcements/svelte/index.d.ts +0 -13
  909. package/dist/blocks/announcements/svelte/index.js +0 -14
  910. package/dist/blocks/announcements/vue/index.d.ts +0 -13
  911. package/dist/blocks/announcements/vue/index.js +0 -14
  912. package/dist/blocks/api-keys/react/index.d.ts +0 -32
  913. package/dist/blocks/api-keys/react/index.js +0 -43
  914. package/dist/blocks/api-keys/react/server.d.ts +0 -7
  915. package/dist/blocks/api-keys/react/server.js +0 -7
  916. package/dist/blocks/api-keys/solid/index.d.ts +0 -13
  917. package/dist/blocks/api-keys/solid/index.js +0 -14
  918. package/dist/blocks/api-keys/svelte/index.d.ts +0 -13
  919. package/dist/blocks/api-keys/svelte/index.js +0 -14
  920. package/dist/blocks/api-keys/vue/index.d.ts +0 -13
  921. package/dist/blocks/api-keys/vue/index.js +0 -14
  922. package/dist/blocks/audit/react/index.d.ts +0 -31
  923. package/dist/blocks/audit/react/index.js +0 -46
  924. package/dist/blocks/audit/react/server.d.ts +0 -7
  925. package/dist/blocks/audit/react/server.js +0 -7
  926. package/dist/blocks/audit/solid/index.d.ts +0 -13
  927. package/dist/blocks/audit/solid/index.js +0 -14
  928. package/dist/blocks/audit/svelte/index.d.ts +0 -13
  929. package/dist/blocks/audit/svelte/index.js +0 -14
  930. package/dist/blocks/audit/vue/index.d.ts +0 -13
  931. package/dist/blocks/audit/vue/index.js +0 -14
  932. package/dist/blocks/billing/react/index.d.ts +0 -44
  933. package/dist/blocks/billing/react/index.js +0 -40
  934. package/dist/blocks/billing/react/server.d.ts +0 -10
  935. package/dist/blocks/billing/react/server.js +0 -10
  936. package/dist/blocks/billing/solid/index.d.ts +0 -15
  937. package/dist/blocks/billing/solid/index.js +0 -14
  938. package/dist/blocks/billing/svelte/index.d.ts +0 -15
  939. package/dist/blocks/billing/svelte/index.js +0 -14
  940. package/dist/blocks/billing/vue/index.d.ts +0 -15
  941. package/dist/blocks/billing/vue/index.js +0 -14
  942. package/dist/blocks/bookings/react/index.d.ts +0 -35
  943. package/dist/blocks/bookings/react/index.js +0 -63
  944. package/dist/blocks/bookings/react/server.d.ts +0 -9
  945. package/dist/blocks/bookings/react/server.js +0 -10
  946. package/dist/blocks/bookings/solid/index.d.ts +0 -13
  947. package/dist/blocks/bookings/solid/index.js +0 -14
  948. package/dist/blocks/bookings/svelte/index.d.ts +0 -13
  949. package/dist/blocks/bookings/svelte/index.js +0 -14
  950. package/dist/blocks/bookings/vue/index.d.ts +0 -13
  951. package/dist/blocks/bookings/vue/index.js +0 -14
  952. package/dist/blocks/calendar/react/index.d.ts +0 -26
  953. package/dist/blocks/calendar/react/index.js +0 -58
  954. package/dist/blocks/calendar/react/server.d.ts +0 -9
  955. package/dist/blocks/calendar/react/server.js +0 -10
  956. package/dist/blocks/calendar/solid/index.d.ts +0 -13
  957. package/dist/blocks/calendar/solid/index.js +0 -14
  958. package/dist/blocks/calendar/svelte/index.d.ts +0 -13
  959. package/dist/blocks/calendar/svelte/index.js +0 -14
  960. package/dist/blocks/calendar/vue/index.d.ts +0 -13
  961. package/dist/blocks/calendar/vue/index.js +0 -14
  962. package/dist/blocks/comments/react/index.d.ts +0 -34
  963. package/dist/blocks/comments/react/index.js +0 -49
  964. package/dist/blocks/comments/react/server.d.ts +0 -7
  965. package/dist/blocks/comments/react/server.js +0 -7
  966. package/dist/blocks/comments/solid/index.d.ts +0 -13
  967. package/dist/blocks/comments/solid/index.js +0 -14
  968. package/dist/blocks/comments/svelte/index.d.ts +0 -13
  969. package/dist/blocks/comments/svelte/index.js +0 -14
  970. package/dist/blocks/comments/vue/index.d.ts +0 -13
  971. package/dist/blocks/comments/vue/index.js +0 -14
  972. package/dist/blocks/engagements/index.d.ts +0 -134
  973. package/dist/blocks/engagements/index.js +0 -143
  974. package/dist/blocks/entitlements/react/index.d.ts +0 -27
  975. package/dist/blocks/entitlements/react/index.js +0 -35
  976. package/dist/blocks/entitlements/react/server.d.ts +0 -9
  977. package/dist/blocks/entitlements/react/server.js +0 -10
  978. package/dist/blocks/entitlements/solid/index.d.ts +0 -13
  979. package/dist/blocks/entitlements/solid/index.js +0 -14
  980. package/dist/blocks/entitlements/svelte/index.d.ts +0 -13
  981. package/dist/blocks/entitlements/svelte/index.js +0 -14
  982. package/dist/blocks/entitlements/vue/index.d.ts +0 -13
  983. package/dist/blocks/entitlements/vue/index.js +0 -14
  984. package/dist/blocks/forms/react/index.d.ts +0 -19
  985. package/dist/blocks/forms/react/index.js +0 -28
  986. package/dist/blocks/forms/react/server.d.ts +0 -9
  987. package/dist/blocks/forms/react/server.js +0 -10
  988. package/dist/blocks/forms/solid/index.d.ts +0 -13
  989. package/dist/blocks/forms/solid/index.js +0 -14
  990. package/dist/blocks/forms/svelte/index.d.ts +0 -13
  991. package/dist/blocks/forms/svelte/index.js +0 -14
  992. package/dist/blocks/forms/vue/index.d.ts +0 -13
  993. package/dist/blocks/forms/vue/index.js +0 -14
  994. package/dist/blocks/inbox/react/index.d.ts +0 -3
  995. package/dist/blocks/inbox/react/index.js +0 -81
  996. package/dist/blocks/inbox/react/server.d.ts +0 -17
  997. package/dist/blocks/inbox/react/server.js +0 -18
  998. package/dist/blocks/inbox/solid/index.d.ts +0 -27
  999. package/dist/blocks/inbox/solid/index.js +0 -32
  1000. package/dist/blocks/inbox/svelte/index.d.ts +0 -27
  1001. package/dist/blocks/inbox/svelte/index.js +0 -32
  1002. package/dist/blocks/inbox/vue/index.d.ts +0 -27
  1003. package/dist/blocks/inbox/vue/index.js +0 -32
  1004. package/dist/blocks/jobs/index.d.ts +0 -523
  1005. package/dist/blocks/jobs/index.js +0 -1346
  1006. package/dist/blocks/mfa/react/index.d.ts +0 -30
  1007. package/dist/blocks/mfa/react/index.js +0 -45
  1008. package/dist/blocks/mfa/react/server.d.ts +0 -9
  1009. package/dist/blocks/mfa/react/server.js +0 -12
  1010. package/dist/blocks/mfa/solid/index.d.ts +0 -20
  1011. package/dist/blocks/mfa/solid/index.js +0 -23
  1012. package/dist/blocks/mfa/svelte/index.d.ts +0 -20
  1013. package/dist/blocks/mfa/svelte/index.js +0 -23
  1014. package/dist/blocks/mfa/vue/index.d.ts +0 -20
  1015. package/dist/blocks/mfa/vue/index.js +0 -23
  1016. package/dist/blocks/notifications/react/index.d.ts +0 -19
  1017. package/dist/blocks/notifications/react/index.js +0 -41
  1018. package/dist/blocks/notifications/react/server.d.ts +0 -10
  1019. package/dist/blocks/notifications/react/server.js +0 -10
  1020. package/dist/blocks/notifications/solid/index.d.ts +0 -13
  1021. package/dist/blocks/notifications/solid/index.js +0 -14
  1022. package/dist/blocks/notifications/svelte/index.d.ts +0 -13
  1023. package/dist/blocks/notifications/svelte/index.js +0 -14
  1024. package/dist/blocks/notifications/vue/index.d.ts +0 -13
  1025. package/dist/blocks/notifications/vue/index.js +0 -14
  1026. package/dist/blocks/number-sequences/index.d.ts +0 -48
  1027. package/dist/blocks/number-sequences/index.js +0 -52
  1028. package/dist/blocks/onboarding/react/index.d.ts +0 -24
  1029. package/dist/blocks/onboarding/react/index.js +0 -38
  1030. package/dist/blocks/onboarding/react/server.d.ts +0 -10
  1031. package/dist/blocks/onboarding/react/server.js +0 -10
  1032. package/dist/blocks/onboarding/solid/index.d.ts +0 -13
  1033. package/dist/blocks/onboarding/solid/index.js +0 -14
  1034. package/dist/blocks/onboarding/svelte/index.d.ts +0 -13
  1035. package/dist/blocks/onboarding/svelte/index.js +0 -14
  1036. package/dist/blocks/onboarding/vue/index.d.ts +0 -13
  1037. package/dist/blocks/onboarding/vue/index.js +0 -14
  1038. package/dist/blocks/organizations/react/index.d.ts +0 -127
  1039. package/dist/blocks/organizations/react/index.js +0 -113
  1040. package/dist/blocks/organizations/react/server.d.ts +0 -20
  1041. package/dist/blocks/organizations/react/server.js +0 -24
  1042. package/dist/blocks/organizations/solid/index.d.ts +0 -34
  1043. package/dist/blocks/organizations/solid/index.js +0 -32
  1044. package/dist/blocks/organizations/svelte/index.d.ts +0 -34
  1045. package/dist/blocks/organizations/svelte/index.js +0 -32
  1046. package/dist/blocks/organizations/vue/index.d.ts +0 -34
  1047. package/dist/blocks/organizations/vue/index.js +0 -32
  1048. package/dist/blocks/parties/index.d.ts +0 -190
  1049. package/dist/blocks/parties/index.js +0 -261
  1050. package/dist/blocks/reactions/react/index.d.ts +0 -33
  1051. package/dist/blocks/reactions/react/index.js +0 -50
  1052. package/dist/blocks/reactions/react/server.d.ts +0 -9
  1053. package/dist/blocks/reactions/react/server.js +0 -10
  1054. package/dist/blocks/reactions/solid/index.d.ts +0 -13
  1055. package/dist/blocks/reactions/solid/index.js +0 -14
  1056. package/dist/blocks/reactions/svelte/index.d.ts +0 -13
  1057. package/dist/blocks/reactions/svelte/index.js +0 -14
  1058. package/dist/blocks/reactions/vue/index.d.ts +0 -13
  1059. package/dist/blocks/reactions/vue/index.js +0 -14
  1060. package/dist/blocks/rules/index.d.ts +0 -171
  1061. package/dist/blocks/rules/index.js +0 -162
  1062. package/dist/blocks/rules/react/index.d.ts +0 -38
  1063. package/dist/blocks/rules/react/index.js +0 -59
  1064. package/dist/blocks/rules/react/server.d.ts +0 -6
  1065. package/dist/blocks/rules/react/server.js +0 -7
  1066. package/dist/blocks/rules/solid/index.d.ts +0 -13
  1067. package/dist/blocks/rules/solid/index.js +0 -14
  1068. package/dist/blocks/rules/svelte/index.d.ts +0 -13
  1069. package/dist/blocks/rules/svelte/index.js +0 -14
  1070. package/dist/blocks/rules/vue/index.d.ts +0 -13
  1071. package/dist/blocks/rules/vue/index.js +0 -14
  1072. package/dist/blocks/saved-views/react/index.d.ts +0 -40
  1073. package/dist/blocks/saved-views/react/index.js +0 -60
  1074. package/dist/blocks/saved-views/react/server.d.ts +0 -10
  1075. package/dist/blocks/saved-views/react/server.js +0 -10
  1076. package/dist/blocks/saved-views/solid/index.d.ts +0 -13
  1077. package/dist/blocks/saved-views/solid/index.js +0 -14
  1078. package/dist/blocks/saved-views/svelte/index.d.ts +0 -13
  1079. package/dist/blocks/saved-views/svelte/index.js +0 -14
  1080. package/dist/blocks/saved-views/vue/index.d.ts +0 -13
  1081. package/dist/blocks/saved-views/vue/index.js +0 -14
  1082. package/dist/blocks/search/react/index.d.ts +0 -39
  1083. package/dist/blocks/search/react/index.js +0 -49
  1084. package/dist/blocks/search/react/server.d.ts +0 -10
  1085. package/dist/blocks/search/react/server.js +0 -11
  1086. package/dist/blocks/search/solid/index.d.ts +0 -13
  1087. package/dist/blocks/search/solid/index.js +0 -14
  1088. package/dist/blocks/search/svelte/index.d.ts +0 -13
  1089. package/dist/blocks/search/svelte/index.js +0 -14
  1090. package/dist/blocks/search/vue/index.d.ts +0 -13
  1091. package/dist/blocks/search/vue/index.js +0 -14
  1092. package/dist/blocks/service-principals/index.d.ts +0 -132
  1093. package/dist/blocks/service-principals/index.js +0 -110
  1094. package/dist/blocks/sessions/react/index.d.ts +0 -36
  1095. package/dist/blocks/sessions/react/index.js +0 -53
  1096. package/dist/blocks/sessions/react/server.d.ts +0 -15
  1097. package/dist/blocks/sessions/react/server.js +0 -17
  1098. package/dist/blocks/sessions/solid/index.d.ts +0 -20
  1099. package/dist/blocks/sessions/solid/index.js +0 -23
  1100. package/dist/blocks/sessions/svelte/index.d.ts +0 -20
  1101. package/dist/blocks/sessions/svelte/index.js +0 -23
  1102. package/dist/blocks/sessions/vue/index.d.ts +0 -20
  1103. package/dist/blocks/sessions/vue/index.js +0 -23
  1104. package/dist/blocks/settings/react/index.d.ts +0 -31
  1105. package/dist/blocks/settings/react/index.js +0 -37
  1106. package/dist/blocks/settings/react/server.d.ts +0 -10
  1107. package/dist/blocks/settings/react/server.js +0 -10
  1108. package/dist/blocks/settings/solid/index.d.ts +0 -13
  1109. package/dist/blocks/settings/solid/index.js +0 -14
  1110. package/dist/blocks/settings/svelte/index.d.ts +0 -13
  1111. package/dist/blocks/settings/svelte/index.js +0 -14
  1112. package/dist/blocks/settings/vue/index.d.ts +0 -13
  1113. package/dist/blocks/settings/vue/index.js +0 -14
  1114. package/dist/blocks/shared-signals/index.d.ts +0 -440
  1115. package/dist/blocks/shared-signals/index.js +0 -886
  1116. package/dist/blocks/tags/react/index.d.ts +0 -36
  1117. package/dist/blocks/tags/react/index.js +0 -52
  1118. package/dist/blocks/tags/react/server.d.ts +0 -7
  1119. package/dist/blocks/tags/react/server.js +0 -7
  1120. package/dist/blocks/tags/solid/index.d.ts +0 -13
  1121. package/dist/blocks/tags/solid/index.js +0 -14
  1122. package/dist/blocks/tags/svelte/index.d.ts +0 -13
  1123. package/dist/blocks/tags/svelte/index.js +0 -14
  1124. package/dist/blocks/tags/vue/index.d.ts +0 -13
  1125. package/dist/blocks/tags/vue/index.js +0 -14
  1126. package/dist/blocks/targets/index.d.ts +0 -82
  1127. package/dist/blocks/targets/index.js +0 -73
  1128. package/dist/blocks/undo/react/index.d.ts +0 -17
  1129. package/dist/blocks/undo/react/index.js +0 -24
  1130. package/dist/blocks/undo/react/server.d.ts +0 -10
  1131. package/dist/blocks/undo/react/server.js +0 -10
  1132. package/dist/blocks/undo/solid/index.d.ts +0 -13
  1133. package/dist/blocks/undo/solid/index.js +0 -14
  1134. package/dist/blocks/undo/svelte/index.d.ts +0 -13
  1135. package/dist/blocks/undo/svelte/index.js +0 -14
  1136. package/dist/blocks/undo/vue/index.d.ts +0 -13
  1137. package/dist/blocks/undo/vue/index.js +0 -14
  1138. package/dist/blocks/usage/react/index.d.ts +0 -29
  1139. package/dist/blocks/usage/react/index.js +0 -38
  1140. package/dist/blocks/usage/react/server.d.ts +0 -7
  1141. package/dist/blocks/usage/react/server.js +0 -7
  1142. package/dist/blocks/usage/solid/index.d.ts +0 -13
  1143. package/dist/blocks/usage/solid/index.js +0 -14
  1144. package/dist/blocks/usage/svelte/index.d.ts +0 -13
  1145. package/dist/blocks/usage/svelte/index.js +0 -14
  1146. package/dist/blocks/usage/vue/index.d.ts +0 -13
  1147. package/dist/blocks/usage/vue/index.js +0 -14
  1148. package/dist/blocks/work-items/index.d.ts +0 -210
  1149. package/dist/blocks/work-items/index.js +0 -304
  1150. package/dist/blocks/workflow-builder/index.d.ts +0 -43
  1151. package/dist/blocks/workflow-builder/index.js +0 -33
  1152. package/dist/blocks/workflow-builder/react/index.d.ts +0 -32
  1153. package/dist/blocks/workflow-builder/react/index.js +0 -75
  1154. package/dist/blocks/workflow-builder/react/server.d.ts +0 -14
  1155. package/dist/blocks/workflow-builder/react/server.js +0 -17
  1156. package/dist/blocks/workflow-builder/solid/index.d.ts +0 -20
  1157. package/dist/blocks/workflow-builder/solid/index.js +0 -23
  1158. package/dist/blocks/workflow-builder/svelte/index.d.ts +0 -20
  1159. package/dist/blocks/workflow-builder/svelte/index.js +0 -23
  1160. package/dist/blocks/workflow-builder/vue/index.d.ts +0 -20
  1161. package/dist/blocks/workflow-builder/vue/index.js +0 -23
  1162. package/dist/blocks/workflows/react/index.d.ts +0 -39
  1163. package/dist/blocks/workflows/react/index.js +0 -65
  1164. package/dist/blocks/workflows/react/server.d.ts +0 -14
  1165. package/dist/blocks/workflows/react/server.js +0 -17
  1166. package/dist/blocks/workflows/solid/index.d.ts +0 -20
  1167. package/dist/blocks/workflows/solid/index.js +0 -23
  1168. package/dist/blocks/workflows/svelte/index.d.ts +0 -20
  1169. package/dist/blocks/workflows/svelte/index.js +0 -23
  1170. package/dist/blocks/workflows/vue/index.d.ts +0 -20
  1171. package/dist/blocks/workflows/vue/index.js +0 -23
  1172. package/dist/blocks-CR3vCYhj.js +0 -88
  1173. package/dist/bookings-DJflcGqs.js +0 -184
  1174. package/dist/bucket-DBay-ICp.d.ts +0 -667
  1175. package/dist/build-DxzJf79X.js +0 -1839
  1176. package/dist/build-UqJeGtsH.js +0 -703
  1177. package/dist/calendar-DvbYFkrh.js +0 -801
  1178. package/dist/chat-sdk/react/index.d.ts +0 -3
  1179. package/dist/chat-sdk/react/index.js +0 -2
  1180. package/dist/chat-sdk/react/server.d.ts +0 -4
  1181. package/dist/chat-sdk/react/server.js +0 -1
  1182. package/dist/claims-T8TWZ53E.js +0 -63
  1183. package/dist/cli/add-BRjL7LuG.js +0 -1
  1184. package/dist/cli/add-Cf0uxfZ2.js +0 -672
  1185. package/dist/cli/add-DPfdDRq7.js +0 -75
  1186. package/dist/cli/adopt-B28iUeGg.js +0 -1
  1187. package/dist/cli/adopt-C0VugVMu.js +0 -421
  1188. package/dist/cli/apply-BlxtZPxe.js +0 -329
  1189. package/dist/cli/blocks-CHQ7K8Yz.js +0 -1
  1190. package/dist/cli/blocks-D3tsq-mR.js +0 -124
  1191. package/dist/cli/cache-DdgzhoaL.js +0 -516
  1192. package/dist/cli/catalog-DwTUdJaQ.js +0 -188
  1193. package/dist/cli/codemod-Dz4R-tVY.js +0 -1127
  1194. package/dist/cli/command-33pu13LT.js +0 -963
  1195. package/dist/cli/completion-6M6Hr8TL.js +0 -211
  1196. package/dist/cli/completion-Bqu8yq0q.js +0 -1
  1197. package/dist/cli/completion-Ddr3yqd3.js +0 -30
  1198. package/dist/cli/config-2qlSTi2o.js +0 -1503
  1199. package/dist/cli/config-B31tIvAl.js +0 -42
  1200. package/dist/cli/config-DVksOjSr.js +0 -1
  1201. package/dist/cli/config-edit-D46H0UHp.js +0 -613
  1202. package/dist/cli/db-D8iId4R8.js +0 -473
  1203. package/dist/cli/design-edit-B2aBiarJ.js +0 -205
  1204. package/dist/cli/doctor-pIek4vIO.js +0 -3897
  1205. package/dist/cli/emit-CJKf47Bi.js +0 -1078
  1206. package/dist/cli/env-BrLZfqsL.js +0 -143
  1207. package/dist/cli/env-cbCEa79W.js +0 -1
  1208. package/dist/cli/files-C5JfVnj5.js +0 -972
  1209. package/dist/cli/gen-DquZzY5a.js +0 -307
  1210. package/dist/cli/init-Dd-UdrE0.js +0 -397
  1211. package/dist/cli/introspect-IMQCji2l.js +0 -51
  1212. package/dist/cli/keys-iJs_1WT8.js +0 -106
  1213. package/dist/cli/live-BfAO5YRX.js +0 -344
  1214. package/dist/cli/mcp-D8Az0FNn.js +0 -240
  1215. package/dist/cli/metadata-CTStQPfV.js +0 -144
  1216. package/dist/cli/migration-safety-Dg1lxomi.js +0 -305
  1217. package/dist/cli/module-migration-CbX-jRhV.js +0 -606
  1218. package/dist/cli/moved-CdNtCf4t.js +0 -161
  1219. package/dist/cli/names-D6LrQnOv.js +0 -6
  1220. package/dist/cli/parse-CRZLku1b.js +0 -182
  1221. package/dist/cli/preset-DEvwDc7U.js +0 -129
  1222. package/dist/cli/run-BXhJoghZ.js +0 -1602
  1223. package/dist/cli/run-DdxNRTr0.js +0 -63
  1224. package/dist/cli/run-dTu_PD4I.js +0 -711
  1225. package/dist/cli/scaffold-Bx3bcy2R.js +0 -901
  1226. package/dist/cli/scaffold-mbNAQE19.js +0 -1
  1227. package/dist/cli/seed-CLseQdXQ.js +0 -188
  1228. package/dist/cli/seed-DSHSUsYy.js +0 -1
  1229. package/dist/cli/shared-CAdIkTR7.js +0 -151
  1230. package/dist/cli/skills-Bz4INB8f.js +0 -121
  1231. package/dist/cli/snapshot-GfdB9Cjl.js +0 -350
  1232. package/dist/cli/source-args-Dy3j1-H-.js +0 -59
  1233. package/dist/cli/spec-BfEK0_04.js +0 -1
  1234. package/dist/cli/spec-DXTdodlO.js +0 -7534
  1235. package/dist/cli/sql-BUhpAvrW.js +0 -2
  1236. package/dist/cli/sql-CLbWk3Yb.js +0 -332
  1237. package/dist/cli/stack-_F_JhllX.js +0 -135
  1238. package/dist/cli/sync-BBzNO-v9.js +0 -91
  1239. package/dist/cli/typegen-F9GEjpvD.js +0 -502
  1240. package/dist/cli/typegen-version-BNBPI4Eu.js +0 -9
  1241. package/dist/cli/version-DiwcIKOL.js +0 -4
  1242. package/dist/cli/write-DZKk5rSF.js +0 -201
  1243. package/dist/client--tyFmxDT.js +0 -52
  1244. package/dist/client-0qFNkNhT.js +0 -1060
  1245. package/dist/client-2z1aHG57.d.ts +0 -475
  1246. package/dist/client-5IVhjmtl.d.ts +0 -74
  1247. package/dist/client-B3WBilR2.d.ts +0 -69
  1248. package/dist/client-B4JPQgf-.d.ts +0 -165
  1249. package/dist/client-BAYh7P2h.js +0 -211
  1250. package/dist/client-BKGVUgo7.js +0 -380
  1251. package/dist/client-BNaOcfeH.js +0 -58
  1252. package/dist/client-BOuaQA0h.js +0 -173
  1253. package/dist/client-BP-8vn9G.d.ts +0 -37
  1254. package/dist/client-BU5Yd0yO.d.ts +0 -103
  1255. package/dist/client-Bb_Pj9wL.js +0 -137
  1256. package/dist/client-BkH-Vh3s.d.ts +0 -112
  1257. package/dist/client-BsfsRHae.d.ts +0 -136
  1258. package/dist/client-Bta7yl1C.d.ts +0 -451
  1259. package/dist/client-BwKXlohx.js +0 -121
  1260. package/dist/client-C1zOmnS8.js +0 -89
  1261. package/dist/client-CMqO1gCn.d.ts +0 -64
  1262. package/dist/client-CPirbPPi.js +0 -85
  1263. package/dist/client-CQPB-VJx.d.ts +0 -110
  1264. package/dist/client-CXbP_p02.d.ts +0 -156
  1265. package/dist/client-C_S9avzV.d.ts +0 -420
  1266. package/dist/client-Cb1g45Hc.js +0 -99
  1267. package/dist/client-CebKlRU7.js +0 -157
  1268. package/dist/client-Ch-dDfTB.js +0 -437
  1269. package/dist/client-CuFD4o56.d.ts +0 -111
  1270. package/dist/client-D2y_CfhU.d.ts +0 -137
  1271. package/dist/client-DAcVF-YJ.js +0 -134
  1272. package/dist/client-DCuE1rFm.js +0 -441
  1273. package/dist/client-DD02cst6.d.ts +0 -245
  1274. package/dist/client-DD3EcytK.js +0 -65
  1275. package/dist/client-DEE57s9m.d.ts +0 -132
  1276. package/dist/client-DScMvaty.js +0 -38
  1277. package/dist/client-DVRFa59w.d.ts +0 -309
  1278. package/dist/client-DXb1Nmr3.js +0 -111
  1279. package/dist/client-DkI0oyR7.js +0 -76
  1280. package/dist/client-DkQcRKhm.js +0 -67
  1281. package/dist/client-DoXBX3vS.d.ts +0 -116
  1282. package/dist/client-Dsuy9wfA.d.ts +0 -59
  1283. package/dist/client-EQvEzUQg.d.ts +0 -276
  1284. package/dist/client-G7NGXZKe.d.ts +0 -43
  1285. package/dist/client-OhTiAol1.js +0 -213
  1286. package/dist/client-Wt19DaEb.js +0 -291
  1287. package/dist/client-Y-kaHabc.d.ts +0 -46
  1288. package/dist/client-YASsOslj.js +0 -321
  1289. package/dist/client-Y_HnZGF4.js +0 -51
  1290. package/dist/client-_mL998Gl.js +0 -129
  1291. package/dist/client-i_u1e0Kf.d.ts +0 -144
  1292. package/dist/client-kRvHKAKS.js +0 -60
  1293. package/dist/client-nieeGXdg.d.ts +0 -178
  1294. package/dist/client-pxXoQOdC.js +0 -40
  1295. package/dist/client-ysVOUgxM.d.ts +0 -54
  1296. package/dist/cloud-event-CidL9jiw.d.ts +0 -64
  1297. package/dist/codecs-Du_zE1xu.js +0 -358
  1298. package/dist/codecs-WHpM3Byy.d.ts +0 -221
  1299. package/dist/codegen-DGtOsqz9.d.ts +0 -1809
  1300. package/dist/comments-Ceqo9bwE.js +0 -230
  1301. package/dist/compiler-DCotQWcs.d.ts +0 -14
  1302. package/dist/compose-VBQL7zIO.js +0 -53
  1303. package/dist/composite-BgBzdYP-.d.ts +0 -82
  1304. package/dist/composite-BgSdL5tk.js +0 -130
  1305. package/dist/config-V6HMvce5.js +0 -3930
  1306. package/dist/config-xUf0dj0t.js +0 -562
  1307. package/dist/connector-CKcTPJRV.d.ts +0 -107
  1308. package/dist/connectors-CgWuPQks.d.ts +0 -147
  1309. package/dist/context-B8_p3MXo.js +0 -11
  1310. package/dist/context-C-bHOtoD.js +0 -5
  1311. package/dist/context-CCz6ZgyI.js +0 -19
  1312. package/dist/context-CMxVnPMY.js +0 -9
  1313. package/dist/context-CrojkPNC.js +0 -41
  1314. package/dist/context-DvBEhsXX.d.ts +0 -403
  1315. package/dist/controller-lWRcKqCl.d.ts +0 -52
  1316. package/dist/cron-CI1kP-t5.js +0 -148
  1317. package/dist/cron-route-BbVtwXZz.js +0 -24
  1318. package/dist/db-exception-CnWcYPxL.js +0 -15
  1319. package/dist/define-D0LSXmUP.d.ts +0 -1117
  1320. package/dist/define-DwZ_LQVO.js +0 -2011
  1321. package/dist/define-block-B6Gjs57G.js +0 -52
  1322. package/dist/define-block-MyM4lH42.d.ts +0 -281
  1323. package/dist/delegation-DeAJehLk.js +0 -146
  1324. package/dist/documents-BijGGIjr.d.ts +0 -99
  1325. package/dist/embeddings-DRGIc8ti.js +0 -128
  1326. package/dist/embeddings-Deusi99x.d.ts +0 -78
  1327. package/dist/ended-D_Twxl8v.d.ts +0 -76
  1328. package/dist/entitlements-CMGsO4gL.d.ts +0 -54
  1329. package/dist/entitlements-_tw0V3BY.js +0 -45
  1330. package/dist/envelope-BDShQQ7-.js +0 -90
  1331. package/dist/errors-Cq72lONT.js +0 -44
  1332. package/dist/errors-D7u24ZJH.js +0 -321
  1333. package/dist/escape-like-DuKupGUV.d.ts +0 -15
  1334. package/dist/eve-dWNqpd9Z.d.ts +0 -157
  1335. package/dist/event-calendar-E6AI-dgg.d.ts +0 -217
  1336. package/dist/events-DhGgwqQA.d.ts +0 -842
  1337. package/dist/executor-C29668fO.d.ts +0 -281
  1338. package/dist/executor-C5uyGttm.js +0 -207
  1339. package/dist/executor-Cy1nk4MZ.d.ts +0 -104
  1340. package/dist/executor-DK2F9Zis.js +0 -746
  1341. package/dist/executor-DXfgDsKd.d.ts +0 -37
  1342. package/dist/executor-D_viYkhf.d.ts +0 -179
  1343. package/dist/executor-QtVn0axs.js +0 -147
  1344. package/dist/expo-sqlite/index.d.ts +0 -61
  1345. package/dist/expo-sqlite/index.js +0 -110
  1346. package/dist/field-errors-CKEqR38q.d.ts +0 -119
  1347. package/dist/field-errors-DZVRWRkf.js +0 -13
  1348. package/dist/field-formats-BX2FqLle.d.ts +0 -39
  1349. package/dist/filter-evaluate-CRDXv0Dl.js +0 -217
  1350. package/dist/filter-evaluate-CSWhzYWN.d.ts +0 -37
  1351. package/dist/filter-query-C7qgRYYv.d.ts +0 -133
  1352. package/dist/filter-query-D4ZSwbcJ.js +0 -524
  1353. package/dist/flags-C--SBMT9.js +0 -279
  1354. package/dist/flags-CJFDNAvL.d.ts +0 -246
  1355. package/dist/form-definition-BjeElHsB.js +0 -311
  1356. package/dist/form-definition-DcVnFzl4.d.ts +0 -95
  1357. package/dist/format-AYHceC2m.d.ts +0 -79
  1358. package/dist/framework-BpEnOfAo.js +0 -57
  1359. package/dist/framework-CMeAuJts.d.ts +0 -41
  1360. package/dist/function-contract-4vfi93Y5.d.ts +0 -27
  1361. package/dist/gateway-Dar9C0uP.d.ts +0 -115
  1362. package/dist/graph-B4eubUQG.js +0 -365
  1363. package/dist/groups-CxonH3u5.js +0 -16
  1364. package/dist/http-AkLjqOuB.js +0 -28
  1365. package/dist/impersonation-DFfDVJHk.js +0 -62
  1366. package/dist/inbox-CLsIrPXs.d.ts +0 -417
  1367. package/dist/index-B5XcM3VY.d.ts +0 -230
  1368. package/dist/index-B5dVVZtW.d.ts +0 -142
  1369. package/dist/index-Brm8I8iZ.d.ts +0 -232
  1370. package/dist/index-C7-2ZS9f.d.ts +0 -127
  1371. package/dist/index-CE0p3st5.d.ts +0 -227
  1372. package/dist/index-CcpGT2GI.d.ts +0 -151
  1373. package/dist/index-CrAKHNJF.d.ts +0 -287
  1374. package/dist/index-DLjs7j_z.d.ts +0 -61
  1375. package/dist/index-DdZcWH6q.d.ts +0 -820
  1376. package/dist/index-Dh5ZFCtu.d.ts +0 -61
  1377. package/dist/index-PADpaDku.d.ts +0 -447
  1378. package/dist/index-eoAU_QaY.d.ts +0 -357
  1379. package/dist/invalidate-BLiBFbLy.d.ts +0 -19
  1380. package/dist/json-schema-Bu4YCRbZ.js +0 -551
  1381. package/dist/jwks-cache-DbgNmSgV.js +0 -49
  1382. package/dist/kit-BeXTrlZn.js +0 -127
  1383. package/dist/kit-LeQGMzLH.d.ts +0 -94
  1384. package/dist/knowledge-Bx_qehoZ.js +0 -272
  1385. package/dist/knowledge-CYdNJasZ.d.ts +0 -202
  1386. package/dist/list-query-CuS1w2Af.js +0 -559
  1387. package/dist/list-query-Dx5cAqG6.d.ts +0 -223
  1388. package/dist/live-CZtRMh62.js +0 -246
  1389. package/dist/messages-Bd5-5ZjP.js +0 -492
  1390. package/dist/methods-7u6vSgz_.js +0 -11
  1391. package/dist/mfa-Dt8AdWht.d.ts +0 -36
  1392. package/dist/model-Btl8X9cs.d.ts +0 -326
  1393. package/dist/model-messages-BWyXXA4s.js +0 -206
  1394. package/dist/money-codec-BdnIiFFX.js +0 -41
  1395. package/dist/onboarding-DjXV4rgO.js +0 -68
  1396. package/dist/openapi/index.d.ts +0 -4
  1397. package/dist/openapi/index.js +0 -36
  1398. package/dist/operations-Cc27HkTG.d.ts +0 -6
  1399. package/dist/options-B7EJaOX-.js +0 -5
  1400. package/dist/options-BAW2ZlZ8.js +0 -8
  1401. package/dist/options-Blg8lAkz.js +0 -9
  1402. package/dist/options-Bn4cu0gt.js +0 -5
  1403. package/dist/options-BnoJOwXK.js +0 -8
  1404. package/dist/options-C1HR4UZd.js +0 -13
  1405. package/dist/options-C2HesT4A.js +0 -9
  1406. package/dist/options-C3EzJATk.js +0 -10
  1407. package/dist/options-C3hZ1fbC.js +0 -10
  1408. package/dist/options-CAzVf-1T.js +0 -8
  1409. package/dist/options-CGKSUFUq.js +0 -5
  1410. package/dist/options-CGjGE8xS.js +0 -12
  1411. package/dist/options-CIf3xni7.d.ts +0 -52
  1412. package/dist/options-CUqQ9pm7.js +0 -9
  1413. package/dist/options-ChD15QxJ.js +0 -9
  1414. package/dist/options-CyD7OObW.js +0 -17
  1415. package/dist/options-D1blDihM.js +0 -9
  1416. package/dist/options-D2Gd6VfS.js +0 -8
  1417. package/dist/options-D7f2VKzj.js +0 -25
  1418. package/dist/options-DXqcJyOP.js +0 -10
  1419. package/dist/options-Dh4wu9Ks.js +0 -15
  1420. package/dist/options-Dmg1Da9P.js +0 -25
  1421. package/dist/options-DsUgamiy.js +0 -5
  1422. package/dist/options-HSv8R6h5.js +0 -13
  1423. package/dist/options-I8zVkB_y.js +0 -8
  1424. package/dist/options-MHhjOoWz.js +0 -5
  1425. package/dist/options-MLxMkd5B.js +0 -11
  1426. package/dist/options-OJ5zmgr8.js +0 -10
  1427. package/dist/options-QKP9FFcK.js +0 -8
  1428. package/dist/options-XgfTctbI.js +0 -5
  1429. package/dist/options-_9arpsX9.js +0 -11
  1430. package/dist/options-kLKILdIu.js +0 -10
  1431. package/dist/options-n22NK3PL.js +0 -8
  1432. package/dist/options-qU8vgxhO.js +0 -18
  1433. package/dist/options-vXMBEWSH.js +0 -5
  1434. package/dist/options-wFnK3qWl.js +0 -9
  1435. package/dist/options-xVAy3UsV.js +0 -9
  1436. package/dist/organizations-R98kfFwF.js +0 -401
  1437. package/dist/outbox-Bsk-HJnq.d.ts +0 -199
  1438. package/dist/overlay/index.d.ts +0 -249
  1439. package/dist/overlay/index.js +0 -561
  1440. package/dist/payments-6uuergov.js +0 -16
  1441. package/dist/plugin-D9bYbYli.js +0 -45
  1442. package/dist/plugin-DouW0Kvg.d.ts +0 -203
  1443. package/dist/plugins/actor/index.d.ts +0 -19
  1444. package/dist/plugins/actor/index.js +0 -57
  1445. package/dist/plugins/rules/index.d.ts +0 -96
  1446. package/dist/plugins/rules/index.js +0 -235
  1447. package/dist/plugins/soft-delete/index.d.ts +0 -39
  1448. package/dist/plugins/soft-delete/index.js +0 -90
  1449. package/dist/plugins/tenant/index.d.ts +0 -60
  1450. package/dist/plugins/tenant/index.js +0 -119
  1451. package/dist/plugins/timestamps/index.d.ts +0 -11
  1452. package/dist/plugins/timestamps/index.js +0 -47
  1453. package/dist/plugins/validation/index.d.ts +0 -24
  1454. package/dist/plugins/validation/index.js +0 -83
  1455. package/dist/pool-Bu8zXGzI.d.ts +0 -123
  1456. package/dist/pool-errors-DOZ3oDeS.js +0 -27
  1457. package/dist/ports-BltcWsHf.d.ts +0 -312
  1458. package/dist/ports-CM3aG3zn.js +0 -137
  1459. package/dist/ports-n3ZWSS_I.d.ts +0 -89
  1460. package/dist/postgrest-DGjrW4sK.d.ts +0 -53
  1461. package/dist/powersync/react/index.d.ts +0 -93
  1462. package/dist/powersync/react/index.js +0 -120
  1463. package/dist/preset-HNFqCWaD.js +0 -838
  1464. package/dist/problem-D0KDiYPk.js +0 -162
  1465. package/dist/problem-D_DEBfMn.d.ts +0 -79
  1466. package/dist/provider-BhIkKBOh.js +0 -57
  1467. package/dist/provider-Dmsbl8ug.d.ts +0 -112
  1468. package/dist/push-token-8lvtOEv4.d.ts +0 -24
  1469. package/dist/query-DgPYlU82.js +0 -311
  1470. package/dist/rank-result-C6vsw27N.js +0 -18
  1471. package/dist/rank-result-DHflCNwo.d.ts +0 -14
  1472. package/dist/rate-limit-B7N1ZGl6.d.ts +0 -50
  1473. package/dist/rate-limit-CXpPm4_l.js +0 -49
  1474. package/dist/rate-limit-CpTD_WHm.js +0 -328
  1475. package/dist/react-controller-CKSdtJ10.js +0 -43
  1476. package/dist/react-env-CodKZgPk.js +0 -16
  1477. package/dist/react-uvu_KcVY.js +0 -599
  1478. package/dist/read-set-DP6fm21F.js +0 -316
  1479. package/dist/refusal-BEyNVFy7.d.ts +0 -32
  1480. package/dist/refusal-Ce2p81VW.js +0 -64
  1481. package/dist/replicas-BvIL4_jL.js +0 -94
  1482. package/dist/resolve-D57oDWNr.d.ts +0 -289
  1483. package/dist/resolve-sy3_Gz0i.js +0 -892
  1484. package/dist/resource-BRRU-A7j.js +0 -91
  1485. package/dist/resource-BVvIiuX_.js +0 -469
  1486. package/dist/resource-DxQOPkZ5.d.ts +0 -115
  1487. package/dist/resource-execute-BbjuiXwD.d.ts +0 -15
  1488. package/dist/resource-types-NXau9LJE.d.ts +0 -153
  1489. package/dist/resources-CIi7sw1T.js +0 -64
  1490. package/dist/resources-CZ60Vqwq.d.ts +0 -7
  1491. package/dist/respond-DjEmE_DN.js +0 -100
  1492. package/dist/respond-QW-f1yio.d.ts +0 -101
  1493. package/dist/result-DIT_qp4G.js +0 -146
  1494. package/dist/result-mijqfoJN.d.ts +0 -346
  1495. package/dist/rrule-CesB9Rxd.js +0 -290
  1496. package/dist/rules-D75V7dAE.js +0 -286
  1497. package/dist/run-state-CPo-1X2B.d.ts +0 -12
  1498. package/dist/sales-lines-9HsX89aO.d.ts +0 -28
  1499. package/dist/sales-lines-DgXeOEar.js +0 -41
  1500. package/dist/sales-shared-CjXsy0NJ.js +0 -22
  1501. package/dist/sales-shared-DAAGwQwN.d.ts +0 -8
  1502. package/dist/search-9hoZ8rN1.js +0 -106
  1503. package/dist/server-types-D_cQ6OxZ.d.ts +0 -809
  1504. package/dist/session-DNRYXIOU.d.ts +0 -97
  1505. package/dist/settings-DzQtMwfl.js +0 -93
  1506. package/dist/shared-C80IHf4B.js +0 -60
  1507. package/dist/shared-D11SWNLx.js +0 -17
  1508. package/dist/sign-in-B_QJ2u62.js +0 -386
  1509. package/dist/signatures-CzqfLlfV.d.ts +0 -43
  1510. package/dist/signatures-D8IoN3Rw.js +0 -145
  1511. package/dist/signers-BuVQKDfK.d.ts +0 -390
  1512. package/dist/signing-keys-i2Rsll6L.d.ts +0 -119
  1513. package/dist/solid-controller-7TxGaJNy.js +0 -33
  1514. package/dist/solid-controller-BnF3ovwV.d.ts +0 -11
  1515. package/dist/spec-pins-CZ2CL8YZ.d.ts +0 -120
  1516. package/dist/spec-pins-D3Tm6HJi.js +0 -60
  1517. package/dist/sql-CQIikLnQ.js +0 -421
  1518. package/dist/sql-frpIs51D.js +0 -89308
  1519. package/dist/sso-C86TPpZr.js +0 -217
  1520. package/dist/sso-D_am-gBz.d.ts +0 -161
  1521. package/dist/standard-16AIDny5.d.ts +0 -7
  1522. package/dist/standard-l10kE0yS.js +0 -25
  1523. package/dist/stats-Bt1RyT-F.js +0 -1147
  1524. package/dist/store-DKqbuNvw.d.ts +0 -83
  1525. package/dist/stripe-BSEwKCni.d.ts +0 -140
  1526. package/dist/subject-readers-BJzh7WF7.js +0 -49
  1527. package/dist/subject-readers-Bbq1i0Ol.d.ts +0 -21
  1528. package/dist/subjects-DQ2SU4cA.d.ts +0 -77
  1529. package/dist/support-CWVTM2AB.js +0 -534
  1530. package/dist/support-view-BOJJSZKv.d.ts +0 -17
  1531. package/dist/svelte-controller-BmRhHvFz.js +0 -50
  1532. package/dist/svelte-controller-DXO7gsmS.d.ts +0 -13
  1533. package/dist/table-schema-xqSXrjCN.js +0 -284
  1534. package/dist/tags-C_ym1yDM.js +0 -39
  1535. package/dist/tags-Co-QIHeK.js +0 -84
  1536. package/dist/tags-tbiuHHMV.d.ts +0 -30
  1537. package/dist/tanstack-db/supabase/index.d.ts +0 -66
  1538. package/dist/tanstack-db/supabase/index.js +0 -271
  1539. package/dist/tax-BHSCb5Rw.d.ts +0 -280
  1540. package/dist/tax-keSd-q_1.js +0 -140
  1541. package/dist/tee-1fsH3bEz.js +0 -101
  1542. package/dist/template-DXsGm_R0.js +0 -126
  1543. package/dist/temporal-required-Dt4mcPsi.js +0 -20
  1544. package/dist/tenant-DnMqeNIM.js +0 -27
  1545. package/dist/tenant-l3H2ouv7.d.ts +0 -17
  1546. package/dist/tenant-naming-Bsj3Uvap.js +0 -27
  1547. package/dist/timing-C5NzaEgy.js +0 -95
  1548. package/dist/topic-CZvLXFND.d.ts +0 -415
  1549. package/dist/topic-Cr01EHZy.js +0 -643
  1550. package/dist/types-BTK75521.js +0 -8
  1551. package/dist/types-Bzm0OgJk.d.ts +0 -177
  1552. package/dist/types-CB5MvzuE.d.ts +0 -624
  1553. package/dist/types-DYXhFhmQ.d.ts +0 -251
  1554. package/dist/types-DmshMaXz.d.ts +0 -421
  1555. package/dist/types-EUrisY2U.d.ts +0 -217
  1556. package/dist/types-vVsLvOUJ.d.ts +0 -700
  1557. package/dist/undo-CClrTbm9.d.ts +0 -46
  1558. package/dist/undo-HHonvNeg.js +0 -44
  1559. package/dist/upload-claim-DCuklVyh.js +0 -33
  1560. package/dist/usage-BFwuH7GK.d.ts +0 -232
  1561. package/dist/usage-CJmmCGzd.js +0 -264
  1562. package/dist/user-change-CSR_prhd.js +0 -133
  1563. package/dist/variants-Bat9zU8l.js +0 -53
  1564. package/dist/vault-BQThkbws.d.ts +0 -62
  1565. package/dist/verify-BCmBaHlN.js +0 -130
  1566. package/dist/verify-BTAEsJbF.d.ts +0 -146
  1567. package/dist/view-CKzCp8FW.d.ts +0 -90
  1568. package/dist/view-CfUd5vI9.js +0 -108
  1569. package/dist/vue-controller-DCOtUOA_.d.ts +0 -11
  1570. package/dist/vue-controller-EzyTjqca.js +0 -32
  1571. package/dist/watch-CYeMXFtj.d.ts +0 -92
  1572. package/dist/watch-Cnd6XDnU.js +0 -139
  1573. package/dist/watch-topic-CloXeDTO.d.ts +0 -31
  1574. package/dist/wire-BJhepFbv.js +0 -66
  1575. package/dist/workflow-builder-DzZNlI45.js +0 -699
  1576. package/dist/workflow-sdk-BXwl1THQ.d.ts +0 -163
  1577. package/dist/workflow-sdk-CPGiFE1B.js +0 -242
  1578. package/dist/workflow-sdk-world-BOEsvWmx.js +0 -2123
  1579. package/dist/workflows-BHyYAR6c.d.ts +0 -258
  1580. package/dist/workflows-otOMN33L.js +0 -285
  1581. package/skills/better-supabase/references/plugins.md +0 -71
@@ -0,0 +1,2343 @@
1
+ import { p as commandMeta, r as defineCliCommand } from "./command-CQ61x6gN.js";
2
+ import { i as plain } from "./style-Bm2X5JrN.js";
3
+ import { n as CliError } from "./errors-BTe6A15O.js";
4
+ import { t as migrateCliCall } from "./moved-CsfDQcyk.js";
5
+ import { t as isRecord$1 } from "./guards-CUlDNYZs.js";
6
+ import { a as changedFiles, i as changeLines, r as applyPlan, u as planResult } from "./files-CX71yBm8.js";
7
+ import { a as configObject, c as mask, f as setPathInConfig, g as skipSpace, h as setPresetInJson, i as closingIndex, l as properties, m as setPresetInConfig, o as indentAt, p as setPathInJson, t as addBlocksToConfig, v as codeRanges } from "./config-edit-CrWfk8s3.js";
8
+ import { a as REVIEW_0_15, c as renameSubpaths, r as PLUGIN_IMPORT_RENAMES, s as SUBPATH_RENAMES_0_15, t as BLOCK_EXPORT_RENAMES } from "./codemod-block-renames-BuSaTE_G.js";
9
+ import { a as RECORD_BINDING_RENAMES, n as groupConfigJson, r as groupConfigSource, t as cutRange } from "./config-group-C8tjut39.js";
10
+ import { extname, join, relative, resolve } from "node:path";
11
+ import { readFile, readdir, stat } from "node:fs/promises";
12
+ import { DEFAULT_CONVENTIONS, presetSpec } from "better-supabase/preset";
13
+ import { currentBlockName, renamedBlock } from "better-supabase/sql";
14
+ import { BLOCK_EVENT_RENAMES } from "better-supabase/events";
15
+ //#region src/cli/codemod-calls.ts
16
+ /** Files whose CLI calls a codemod rewrites. */
17
+ const CLI_CALL_FILE = /(?:^|[\\/])(?:package\.json|\.github[\\/]workflows[\\/][^\\/]+\.ya?ml)$/;
18
+ /** Other files that run shell commands; their CLI calls are listed for review. */
19
+ const SHELL_FILE = /(?:^|[\\/])(?:[^\\/]+\.(?:sh|bash|zsh|ya?ml)|Makefile|justfile|Dockerfile)$/;
20
+ /** The bin, with an optional `@version`, followed by its arguments. */
21
+ const BIN = /(?<![\w.@-])(?:better-supabase|bsb)(?:@[\w.^~-]+)?(?=[ \t])/g;
22
+ /**
23
+ * Where a call's arguments end: a line break, a shell operator, a closing quote
24
+ * or a comment.
25
+ */
26
+ const CALL_END = /\r?\n|&&|\|\||[;|)`]|\\?"|\s#/;
27
+ /** `pnpm --filter better-supabase <script>` names the package, not the bin. */
28
+ const PACKAGE_FILTER = /(?:--filter|-F)[= ]$/;
29
+ function cliCalls(text, migrate) {
30
+ const calls = [];
31
+ for (const match of text.matchAll(BIN)) {
32
+ if (PACKAGE_FILTER.test(text.slice(0, match.index))) continue;
33
+ const start = match.index + match[0].length;
34
+ const tail = text.slice(start);
35
+ const end = start + (CALL_END.exec(tail)?.index ?? tail.length);
36
+ const words = text.slice(start, end).trim().split(/\s+/u);
37
+ const to = words[0] === "" ? void 0 : migrate(words);
38
+ if (to) calls.push({
39
+ start,
40
+ end,
41
+ bin: match[0],
42
+ to
43
+ });
44
+ }
45
+ return calls;
46
+ }
47
+ /** `text` with every moved CLI call spelled the new way. */
48
+ function rewriteCliCalls(text, migrate) {
49
+ let out = "";
50
+ let cursor = 0;
51
+ for (const call of cliCalls(text, migrate)) {
52
+ const original = text.slice(call.start, call.end);
53
+ const trailing = /\s*$/u.exec(original)?.[0] ?? "";
54
+ out += `${text.slice(cursor, call.start)} ${call.to.join(" ")}${trailing}`;
55
+ cursor = call.end;
56
+ }
57
+ return out + text.slice(cursor);
58
+ }
59
+ /** One review line per moved CLI call, with the new spelling. */
60
+ function cliCallHints(text, migrate) {
61
+ return cliCalls(text, migrate).map((call) => ({
62
+ line: text.slice(0, call.start).split("\n").length,
63
+ message: `This call uses a renamed command or flag: run \`${call.bin} ${call.to.join(" ")}\``
64
+ }));
65
+ }
66
+ //#endregion
67
+ //#region src/cli/codemod-preset-code.ts
68
+ /**
69
+ * The 0.14 preset code layout, frozen: the fields in code order with their
70
+ * values and widths, then one bit per block. Codes are no longer written; the
71
+ * 0.15 codemod reads them into a preset object.
72
+ */
73
+ const FIELDS = [
74
+ {
75
+ key: "framework",
76
+ values: [
77
+ "next",
78
+ "vite",
79
+ "tanstack-start",
80
+ "expo",
81
+ "sveltekit",
82
+ "nuxt",
83
+ "hono",
84
+ "astro",
85
+ "react-router"
86
+ ],
87
+ bits: 5
88
+ },
89
+ {
90
+ key: "platforms",
91
+ values: [
92
+ "web",
93
+ "native",
94
+ "both"
95
+ ],
96
+ bits: 2
97
+ },
98
+ {
99
+ key: "casing",
100
+ values: ["snake", "camel"],
101
+ bits: 2
102
+ },
103
+ {
104
+ key: "idType",
105
+ values: [
106
+ "uuid",
107
+ "text",
108
+ "bigint",
109
+ "integer"
110
+ ],
111
+ bits: 3
112
+ },
113
+ {
114
+ key: "scope",
115
+ values: [
116
+ "tenant",
117
+ "user",
118
+ "none"
119
+ ],
120
+ bits: 2
121
+ },
122
+ {
123
+ key: "tenantName",
124
+ values: [
125
+ "organization",
126
+ "workspace",
127
+ "team"
128
+ ],
129
+ bits: 3
130
+ },
131
+ {
132
+ key: "access",
133
+ values: [
134
+ "roles",
135
+ "catalog",
136
+ "provider",
137
+ "custom"
138
+ ],
139
+ bits: 3
140
+ },
141
+ {
142
+ key: "api",
143
+ values: ["none", "api"],
144
+ bits: 2
145
+ },
146
+ {
147
+ key: "integrations",
148
+ values: [
149
+ "next",
150
+ "hono",
151
+ "orpc",
152
+ "edge",
153
+ "expo",
154
+ "mcp",
155
+ "client",
156
+ "react"
157
+ ],
158
+ bits: 16,
159
+ multi: true
160
+ }
161
+ ];
162
+ /** The 0.14 block bits, in order; `null` marks a removed block. */
163
+ const BLOCKS = [
164
+ "updated-at",
165
+ "actor",
166
+ "audit",
167
+ "tenant",
168
+ "invitations",
169
+ "reserved-slugs",
170
+ "jobs",
171
+ "idempotency",
172
+ "webhook-inbox",
173
+ "realtime-tables",
174
+ "jsonb-schemas",
175
+ "pgtap",
176
+ "grants",
177
+ "read-sets",
178
+ "mfa",
179
+ "entitlements",
180
+ "rate-limit",
181
+ "vector-search",
182
+ "access",
183
+ "support-sessions",
184
+ "organizations",
185
+ "profiles",
186
+ "outbox",
187
+ "notifications",
188
+ "webhooks-out",
189
+ "sessions",
190
+ "webhooks-in",
191
+ "api-keys",
192
+ "settings",
193
+ "usage",
194
+ "billing",
195
+ "flags",
196
+ "comments",
197
+ "attachments",
198
+ "data-lifecycle",
199
+ "sso",
200
+ "onboarding",
201
+ "waitlist",
202
+ "announcements",
203
+ "streams",
204
+ "credentials",
205
+ "workflows",
206
+ "workflow-sdk-world",
207
+ "workflow-builder",
208
+ "chat-sdk-state",
209
+ "inbox",
210
+ "ai-chat",
211
+ "ai-files",
212
+ "knowledge",
213
+ "memory",
214
+ "agents",
215
+ "connectors",
216
+ "ai-tasks",
217
+ "push",
218
+ "ai-cache",
219
+ "ai-providers",
220
+ "number-sequences",
221
+ "teams",
222
+ "tags",
223
+ "state-machine",
224
+ "custom-fields",
225
+ "share-links",
226
+ "reminders",
227
+ "imports",
228
+ "subjects",
229
+ "rank",
230
+ "saved-views",
231
+ "relations",
232
+ "bulk",
233
+ "search",
234
+ "metrics",
235
+ "calendar",
236
+ "bookings",
237
+ "versions",
238
+ "trash",
239
+ "reactions",
240
+ "approvals",
241
+ "access-requests",
242
+ "documents",
243
+ "catalog",
244
+ "inventory",
245
+ "drive",
246
+ "drive-files",
247
+ "orders",
248
+ "promotions",
249
+ "forms",
250
+ "signatures",
251
+ "time-tracking",
252
+ "identities",
253
+ "service-principals",
254
+ "templates",
255
+ "pipelines",
256
+ "parties",
257
+ "engagements",
258
+ "deals",
259
+ "work-items",
260
+ "quotes",
261
+ "invoices",
262
+ "sla",
263
+ "targets",
264
+ "hiring",
265
+ "employees",
266
+ "collections",
267
+ "ensure-rls",
268
+ "signing-keys",
269
+ "shared-signals",
270
+ "oauth-server",
271
+ "domains",
272
+ "reviews",
273
+ "leave",
274
+ "rules",
275
+ "vercel-marketplace",
276
+ "ledger",
277
+ "assets",
278
+ "scores",
279
+ "moderation",
280
+ "enrollments",
281
+ "guests",
282
+ "passes",
283
+ "billable-time",
284
+ "leases",
285
+ "expenses",
286
+ "donations",
287
+ "dispatch",
288
+ "shipments",
289
+ "contracts",
290
+ "controls",
291
+ "incidents",
292
+ "courses",
293
+ "messaging",
294
+ "channels",
295
+ "activity",
296
+ "mail-sync",
297
+ "segments",
298
+ "assignment",
299
+ "enrichment",
300
+ "forecasts",
301
+ "field-history",
302
+ "sequences",
303
+ "lead-scoring",
304
+ "posts",
305
+ "field-encryption"
306
+ ];
307
+ const BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
308
+ /** Whether `value` reads as a 0.14 preset code: `1` and base62 digits. */
309
+ function isLegacyPresetCode(value) {
310
+ return /^1[0-9A-Za-z]+$/.test(value);
311
+ }
312
+ /**
313
+ * The conventions and blocks a 0.14 preset code holds, the blocks under their
314
+ * 0.15 names. Throws a TypeError when `code` isn't one.
315
+ */
316
+ function decodeLegacyPresetCode(code) {
317
+ if (!isLegacyPresetCode(code)) throw new TypeError(`"${code}" is not a 0.14 preset code.`);
318
+ let value = 0n;
319
+ for (const char of code.slice(1)) value = value * 62n + BigInt(BASE62.indexOf(char));
320
+ const preset = {};
321
+ for (const field of FIELDS) {
322
+ const bits = value & (1n << BigInt(field.bits)) - 1n;
323
+ value >>= BigInt(field.bits);
324
+ if (field.multi === true) {
325
+ preset[field.key] = field.values.filter((_, index) => (bits >> BigInt(index) & 1n) === 1n);
326
+ continue;
327
+ }
328
+ const each = field.values[Number(bits)];
329
+ if (each === void 0) throw new TypeError(`Preset code "${code}" has an unknown ${field.key}.`);
330
+ preset[field.key] = each;
331
+ }
332
+ const blocks = [];
333
+ for (let index = 0; value > 0n; index += 1, value >>= 1n) {
334
+ const name = BLOCKS[index];
335
+ if ((value & 1n) === 1n && name !== null && name !== void 0) blocks.push(currentBlockName(name));
336
+ }
337
+ return {
338
+ ...preset,
339
+ blocks
340
+ };
341
+ }
342
+ /** The preset a 0.14 code holds, as the name or object the config takes. */
343
+ function specOfCode(code) {
344
+ const { blocks, ...decoded } = decodeLegacyPresetCode(code);
345
+ return presetSpec({
346
+ ...DEFAULT_CONVENTIONS,
347
+ ...decoded,
348
+ blocks: typeof blocks === "string" ? [blocks] : blocks ?? []
349
+ });
350
+ }
351
+ const PRESET_CODE = /(\bpreset\s*:\s*|"preset"\s*:\s*)(["'])((?:https?:\/\/[^"'?]*\?(?:[^"']*&)?preset=)?)(1[0-9A-Za-z]+)([^"']*)\2/;
352
+ /**
353
+ * `better-supabase.config.*` with a 0.14 preset code (or a Create URL holding
354
+ * one) in `preset` rewritten to the preset object or name it holds.
355
+ */
356
+ function convertConfigPresetCode(source, json) {
357
+ const match = PRESET_CODE.exec(source);
358
+ if (match === null || match[5] !== "") return {
359
+ ok: true,
360
+ text: source
361
+ };
362
+ const spec = specOfCode(match[4] ?? "");
363
+ return json ? setPresetInJson(source, spec) : setPresetInConfig(source, spec);
364
+ }
365
+ /**
366
+ * A 0.14 design file (`{ preset: "<code>", design }`) as a 0.15 one: the design
367
+ * with the preset object inside. Other JSON is returned as it is.
368
+ */
369
+ function convertDesignFile(source) {
370
+ let value;
371
+ try {
372
+ value = JSON.parse(source);
373
+ } catch {
374
+ return {
375
+ ok: false,
376
+ reason: "it isn't valid JSON"
377
+ };
378
+ }
379
+ if (typeof value !== "object" || value === null || !("preset" in value) || !("design" in value) || typeof value.preset !== "string" || typeof value.design !== "object" || value.design === null) return {
380
+ ok: true,
381
+ text: source
382
+ };
383
+ const preset = isLegacyPresetCode(value.preset) ? specOfCode(value.preset) : value.preset;
384
+ return {
385
+ ok: true,
386
+ text: `${JSON.stringify({
387
+ ...value.design,
388
+ preset
389
+ }, null, 2)}\n`
390
+ };
391
+ }
392
+ /** A design file Create downloaded (`better-supabase.design.json`). */
393
+ const DESIGN_FILE_NAME = /(?:^|[\\/])[^\\/]*\.design\.json$/;
394
+ const reviewOf = (edit) => edit.ok && "review" in edit ? edit.review : [];
395
+ /** `edit`, then `convertConfigPresetCode` on its text, with both reviews. */
396
+ function thenConvertPresetCode(edit, json) {
397
+ if (!edit.ok) return edit;
398
+ const converted = convertConfigPresetCode(edit.text, json);
399
+ return converted.ok ? {
400
+ ok: true,
401
+ text: converted.text,
402
+ review: [...reviewOf(edit), ...reviewOf(converted)]
403
+ } : converted;
404
+ }
405
+ /** A codemod's `designFile` rewrite as a result; a refusal is listed for review. */
406
+ function designFileResult(source, rewrite) {
407
+ if (rewrite === void 0) return {
408
+ text: source,
409
+ review: []
410
+ };
411
+ const edit = rewrite(source);
412
+ return edit.ok ? {
413
+ text: edit.text,
414
+ review: reviewOf(edit)
415
+ } : {
416
+ text: source,
417
+ review: [{
418
+ line: 1,
419
+ message: `The design file wasn't rewritten: ${edit.reason}`
420
+ }]
421
+ };
422
+ }
423
+ //#endregion
424
+ //#region src/cli/codemod-data-contract.ts
425
+ /** The query guards named after the retired verbs. */
426
+ const DATA_CONTRACT_OPTIONS = [{
427
+ call: "guards",
428
+ from: "noUnboundedFindMany",
429
+ to: "noUnboundedList"
430
+ }, {
431
+ call: "guards",
432
+ from: "noDeleteManyWithoutWhere",
433
+ to: "noDeleteWithoutWhere"
434
+ }];
435
+ /** The lint rules named after the retired verbs. */
436
+ const DATA_CONTRACT_STRINGS = {
437
+ "better-supabase/no-unbounded-find-many": "better-supabase/no-unbounded-list",
438
+ "better-supabase/no-delete-many-without-where": "better-supabase/no-empty-where"
439
+ };
440
+ const RENAMED = {
441
+ findMany: "list",
442
+ paginate: "page",
443
+ findById: "get",
444
+ createMany: "create",
445
+ upsertMany: "upsert"
446
+ };
447
+ const CALL = /\.(findMany|paginate|findById|createMany|upsertMany|updateMany|deleteMany|findUnique|findOnly|findFirst|exists)(\s*)\(/g;
448
+ const REVIEW = "Rewrite this call by hand: its arguments aren't an object literal (see the 0.14 to 0.15 guide's data contract table)";
449
+ /**
450
+ * Rewrites the 0.14 repository methods to the 0.15 data contract. A call nested
451
+ * in another rewritten call's arguments is rewritten on the next pass.
452
+ */
453
+ function rewriteDataContract(source, options = {}) {
454
+ let text = source;
455
+ for (let pass = 0; pass < 4; pass += 1) {
456
+ const next = rewritePass(text, options);
457
+ if (next.text === text) return next;
458
+ text = next.text;
459
+ }
460
+ return rewritePass(text, options);
461
+ }
462
+ function rewritePass(source, options) {
463
+ const code = options.raw === true ? source : mask(source);
464
+ const edits = [];
465
+ const review = [];
466
+ for (const match of code.matchAll(CALL)) {
467
+ const method = match[1];
468
+ const name = match.index + 1;
469
+ const open = match.index + match[0].length - 1;
470
+ const close = closingIndex(code, open);
471
+ if (close === -1) continue;
472
+ const edit = rewrite(source, code, {
473
+ method,
474
+ name,
475
+ open,
476
+ close
477
+ });
478
+ if (edit === void 0) review.push({
479
+ line: source.slice(0, name).split("\n").length,
480
+ message: REVIEW
481
+ });
482
+ else if (edit !== "skip") edits.push(...edit);
483
+ }
484
+ return {
485
+ text: apply(source, edits),
486
+ review
487
+ };
488
+ }
489
+ function rewrite(source, code, call) {
490
+ const { method, name, open, close } = call;
491
+ const renamed = RENAMED[method];
492
+ if (renamed !== void 0) return [{
493
+ start: name,
494
+ end: name + method.length,
495
+ text: renamed
496
+ }];
497
+ const sole = soleArgument(code, open, close);
498
+ if (sole === "several") return method === "exists" ? "skip" : void 0;
499
+ const argument = sole === "none" ? void 0 : sole;
500
+ if (method === "exists") {
501
+ if (argument !== void 0 && (code[argument] !== "{" || !properties(source, code, argument)?.some((prop) => prop.key === "where"))) return "skip";
502
+ return [{
503
+ start: name,
504
+ end: name + method.length,
505
+ text: "count"
506
+ }, {
507
+ start: close + 1,
508
+ end: close + 1,
509
+ text: ".map((n) => n > 0)"
510
+ }];
511
+ }
512
+ if (method === "findFirst") return findFirst(source, code, call, argument);
513
+ if (argument === void 0 || code[argument] !== "{") return;
514
+ const props = properties(source, code, argument);
515
+ if (!props) return;
516
+ const text = (key) => {
517
+ const prop = props.find((entry) => entry.key === key);
518
+ return prop === void 0 ? void 0 : source.slice(prop.valueStart, prop.valueEnd);
519
+ };
520
+ const rest = (...without) => props.filter((prop) => prop.key === void 0 || !without.includes(prop.key)).map((prop) => source.slice(prop.start, prop.valueEnd));
521
+ const value = text("where");
522
+ if (value === void 0) return;
523
+ const where = value === "where" ? "where" : `where: ${value}`;
524
+ const options = (extra) => {
525
+ const items = [...extra];
526
+ return items.length === 0 ? "" : `, { ${items.join(", ")} }`;
527
+ };
528
+ const replace = (verb, args) => [{
529
+ start: name,
530
+ end: close + 1,
531
+ text: `${verb}(${args})`
532
+ }];
533
+ switch (method) {
534
+ case "updateMany": {
535
+ const data = text("data");
536
+ return data === void 0 ? void 0 : replace("update", `{ ${where} }, ${data}${options(rest("where", "data"))}`);
537
+ }
538
+ case "deleteMany": return replace("delete", `{ ${where} }${options(rest("where"))}`);
539
+ case "findUnique": return replace("get", `${value}${options([...rest("where"), "optional: true"])}`);
540
+ case "findOnly": return replace("get", `{ ${where} }${options([...rest("where"), "optional: true"])}`);
541
+ default: return;
542
+ }
543
+ }
544
+ function findFirst(source, code, call, argument) {
545
+ const { name, open, close } = call;
546
+ const first = {
547
+ start: close + 1,
548
+ end: close + 1,
549
+ text: ".map((rows) => rows[0] ?? null)"
550
+ };
551
+ const verb = {
552
+ start: name,
553
+ end: name + 9,
554
+ text: "list"
555
+ };
556
+ if (argument === void 0) return [
557
+ verb,
558
+ {
559
+ start: open + 1,
560
+ end: close,
561
+ text: "{ limit: 1 }"
562
+ },
563
+ first
564
+ ];
565
+ if (code[argument] === "{") {
566
+ const end = closingIndex(code, argument);
567
+ const inner = source.slice(argument + 1, end).trim();
568
+ return [
569
+ verb,
570
+ {
571
+ start: argument,
572
+ end: end + 1,
573
+ text: inner.length === 0 ? "{ limit: 1 }" : `{ ${inner.replace(/,\s*$/, "")}, limit: 1 }`
574
+ },
575
+ first
576
+ ];
577
+ }
578
+ const value = source.slice(argument, close).trim();
579
+ return [
580
+ verb,
581
+ {
582
+ start: open + 1,
583
+ end: close,
584
+ text: `{ ...${value}, limit: 1 }`
585
+ },
586
+ first
587
+ ];
588
+ }
589
+ /** The index where the only argument starts. */
590
+ function soleArgument(code, open, close) {
591
+ const start = open + 1 + (/^\s*/.exec(code.slice(open + 1))?.[0].length ?? 0);
592
+ if (start >= close) return "none";
593
+ let depth = 0;
594
+ for (let index = start; index < close; index += 1) {
595
+ const char = code[index];
596
+ if (char === "\"" || char === "'" || char === "`") index = Math.max(index, code.indexOf(char, index + 1));
597
+ else if ("({[".includes(char)) depth += 1;
598
+ else if (")}]".includes(char)) depth -= 1;
599
+ else if (char === "," && depth === 0 && code.slice(index + 1, close).trim() !== "") return "several";
600
+ }
601
+ return start;
602
+ }
603
+ function apply(text, edits) {
604
+ let out = "";
605
+ let cursor = 0;
606
+ for (const edit of edits.toSorted((a, b) => a.start - b.start)) {
607
+ if (edit.start < cursor) continue;
608
+ out += text.slice(cursor, edit.start) + edit.text;
609
+ cursor = edit.end;
610
+ }
611
+ return out + text.slice(cursor);
612
+ }
613
+ const REQUIRE_TENANT = /\brequireTenant\b/g;
614
+ /**
615
+ * The data contract moves, then `requireTenant` renamed to
616
+ * `requireOrganization`.
617
+ */
618
+ function rewrite015(text) {
619
+ const result = rewriteDataContract(text);
620
+ return {
621
+ text: result.text.replaceAll(REQUIRE_TENANT, "requireOrganization"),
622
+ review: result.review
623
+ };
624
+ }
625
+ //#endregion
626
+ //#region src/cli/sql/config-adopt.ts
627
+ const ADOPT = /(?:\bownership|"ownership"|'ownership')\s*:\s*(["'])adopt\1[ \t]*,?/g;
628
+ const lineOf$1 = (text, index) => text.slice(0, index).split("\n").length;
629
+ /** `[start, end)` to delete for the property matched at `start..end`. */
630
+ function span(text, start, end) {
631
+ const lineStart = text.lastIndexOf("\n", start - 1) + 1;
632
+ const newline = text.indexOf("\n", end);
633
+ const lineEnd = newline === -1 ? text.length : newline;
634
+ if (text.slice(lineStart, start).trim() === "" && text.slice(end, lineEnd).trim() === "") {
635
+ const after = newline === -1 ? lineEnd : lineEnd + 1;
636
+ const before = text.slice(0, lineStart).trimEnd();
637
+ return text[end - 1] !== "," && before.endsWith(",") ? [before.length - 1, lineEnd] : [lineStart, after];
638
+ }
639
+ if (text[end - 1] === ",") return [start, end + (/^[ \t]*/.exec(text.slice(end))?.[0].length ?? 0)];
640
+ const before = text.slice(0, start).trimEnd();
641
+ return before.endsWith(",") ? [before.length - 1, end] : [start, end];
642
+ }
643
+ /** `source` without its `ownership: "adopt"` keys, and a review line each. */
644
+ function removeAdoptOwnership(source, json) {
645
+ const code = json ? source : mask(source);
646
+ const spans = [];
647
+ const review = [];
648
+ for (const match of source.matchAll(ADOPT)) {
649
+ const start = match.index;
650
+ const value = source.indexOf(match[1], start + 9 + 1);
651
+ if (!json && (code[start] === " " || code[value] !== match[1])) continue;
652
+ const removed = span(source, start, start + match[0].length);
653
+ const linesBefore = spans.map(([from, to]) => source.slice(from, to).split("\n").length - 1).reduce((sum, count) => sum + count, 0);
654
+ review.push({
655
+ line: Math.max(lineOf$1(source, removed[0]) - linesBefore, 1),
656
+ message: "removed ownership: \"adopt\": the block now leaves alone every table your schema already has and keeps its tables and columns mappings. Run `better-supabase upgrade` to write its SQL over them"
657
+ });
658
+ spans.push(removed);
659
+ }
660
+ let text = source;
661
+ for (const [start, end] of spans.toReversed()) text = text.slice(0, start) + text.slice(end);
662
+ return {
663
+ text,
664
+ review
665
+ };
666
+ }
667
+ /** `edit` with `ownership: "adopt"` removed from every block. */
668
+ function withoutAdoptOwnership(edit, json) {
669
+ if (!edit.ok) return edit;
670
+ const earlier = "review" in edit ? edit.review : [];
671
+ const { text, review } = removeAdoptOwnership(edit.text, json);
672
+ return {
673
+ ok: true,
674
+ text,
675
+ review: [...earlier, ...review]
676
+ };
677
+ }
678
+ //#endregion
679
+ //#region src/cli/sql/config-block-names.ts
680
+ const ENVIRONMENT_KEY = /^\$(?:development|production|test|ci)$/;
681
+ const STRING = /(["'`])([a-z0-9-]+)\1/g;
682
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
683
+ /** An operation name (`<block>.<action>`) under its block's 0.15 name. */
684
+ function currentOperationName(name) {
685
+ const dot = name.indexOf(".");
686
+ const to = dot === -1 ? void 0 : renamedBlock(name.slice(0, dot));
687
+ return to === void 0 ? name : `${to}${name.slice(dot)}`;
688
+ }
689
+ function applyEdits$2(source, edits) {
690
+ let text = source;
691
+ for (const edit of edits.toSorted((a, b) => b.start - a.start)) text = text.slice(0, edit.start) + edit.text + text.slice(edit.end);
692
+ return text;
693
+ }
694
+ /** The key token at `start` renamed to `to`, keeping its quotes. */
695
+ function keyEdit(source, start, key, to) {
696
+ const quote = source[start];
697
+ const quoted = quote === "\"" || quote === "'";
698
+ const bare = /^[A-Za-z_$][\w$]*$/.test(to);
699
+ return {
700
+ start,
701
+ end: start + key.length + (quoted ? 2 : 0),
702
+ text: quoted ? `${quote}${to}${quote}` : bare ? to : `"${to}"`
703
+ };
704
+ }
705
+ /** Edits renaming the keys of the object literal at `open` with `rename`. */
706
+ function keyEdits(source, code, open, rename) {
707
+ return (properties(source, code, open) ?? []).flatMap((prop) => {
708
+ if (prop.key === void 0 || prop.valueStart === prop.start) return [];
709
+ const to = rename(prop.key);
710
+ return to === prop.key ? [] : [keyEdit(source, prop.start, prop.key, to)];
711
+ });
712
+ }
713
+ /**
714
+ * Edits renaming the block names among the string literals of the array at
715
+ * `open`.
716
+ */
717
+ function listEdits(source, code, open) {
718
+ const close = closingIndex(code, open);
719
+ if (close === -1) return [];
720
+ return [...source.slice(open, close).matchAll(STRING)].flatMap((match) => {
721
+ const to = renamedBlock(match[2]);
722
+ const start = open + match.index + 1;
723
+ return to === void 0 ? [] : [{
724
+ start,
725
+ end: start + match[2].length,
726
+ text: to
727
+ }];
728
+ });
729
+ }
730
+ /** The value at `index` when it opens an object or an array. */
731
+ const opens = (code, index) => code[index] === "{" || code[index] === "[" ? code[index] : void 0;
732
+ /** The value of `key` in the object literal at `open`, when it is a literal. */
733
+ function valueOf(source, code, open, key) {
734
+ const prop = properties(source, code, open)?.find((entry) => entry.key === key);
735
+ return prop === void 0 || opens(code, prop.valueStart) === void 0 ? void 0 : prop.valueStart;
736
+ }
737
+ function objectEdits(source, code, open) {
738
+ const edits = [];
739
+ for (const prop of properties(source, code, open) ?? []) {
740
+ const kind = opens(code, prop.valueStart);
741
+ if (prop.key === void 0 || kind === void 0) continue;
742
+ if (prop.key === "blocks") edits.push(...kind === "[" ? listEdits(source, code, prop.valueStart) : keyEdits(source, code, prop.valueStart, (key) => renamedBlock(key) ?? key));
743
+ else if (prop.key === "preset" && kind === "{") {
744
+ const blocks = valueOf(source, code, prop.valueStart, "blocks");
745
+ if (blocks !== void 0 && code[blocks] === "[") edits.push(...listEdits(source, code, blocks));
746
+ } else if (prop.key === "auth" && kind === "{") {
747
+ const authorization = valueOf(source, code, prop.valueStart, "authorization");
748
+ const operations = authorization !== void 0 && code[authorization] === "{" ? valueOf(source, code, authorization, "operations") : void 0;
749
+ if (operations !== void 0 && code[operations] === "{") edits.push(...keyEdits(source, code, operations, currentOperationName));
750
+ } else if (prop.key === "$env" && kind === "{") {
751
+ for (const env of properties(source, code, prop.valueStart) ?? []) if (code[env.valueStart] === "{") edits.push(...objectEdits(source, code, env.valueStart));
752
+ } else if (ENVIRONMENT_KEY.test(prop.key) && kind === "{") edits.push(...objectEdits(source, code, prop.valueStart));
753
+ }
754
+ return edits;
755
+ }
756
+ /** `better-supabase.config.ts`, grouped, with the 0.15 block names. */
757
+ function renameBlocksInSource(source) {
758
+ const code = mask(source);
759
+ const open = configObject(code);
760
+ if (open === void 0) return {
761
+ ok: false,
762
+ reason: "no defineConfig({...}) or default export object found"
763
+ };
764
+ return {
765
+ ok: true,
766
+ text: applyEdits$2(source, objectEdits(source, code, open))
767
+ };
768
+ }
769
+ function renameKeys(value, rename) {
770
+ return isObject(value) ? Object.fromEntries(Object.entries(value).map(([key, entry]) => [rename(key), entry])) : value;
771
+ }
772
+ const renameList = (value) => Array.isArray(value) ? value.map((entry) => typeof entry === "string" ? renamedBlock(entry) ?? entry : entry) : value;
773
+ /** A parsed config object with the 0.15 block names. */
774
+ function renameBlocksInConfig(config) {
775
+ const out = {};
776
+ for (const [key, value] of Object.entries(config)) if (key === "blocks") out[key] = Array.isArray(value) ? renameList(value) : renameKeys(value, (name) => renamedBlock(name) ?? name);
777
+ else if (key === "preset" && isObject(value)) out[key] = value["blocks"] === void 0 ? value : {
778
+ ...value,
779
+ blocks: renameList(value["blocks"])
780
+ };
781
+ else if (key === "auth" && isObject(value)) {
782
+ const authorization = value["authorization"];
783
+ out[key] = isObject(authorization) ? {
784
+ ...value,
785
+ authorization: authorization["operations"] === void 0 ? authorization : {
786
+ ...authorization,
787
+ operations: renameKeys(authorization["operations"], currentOperationName)
788
+ }
789
+ } : value;
790
+ } else if (key === "$env" && isObject(value) || ENVIRONMENT_KEY.test(key) && isObject(value)) out[key] = key === "$env" ? Object.fromEntries(Object.entries(value).map(([name, entry]) => [name, isObject(entry) ? renameBlocksInConfig(entry) : entry])) : renameBlocksInConfig(value);
791
+ else out[key] = value;
792
+ return out;
793
+ }
794
+ /** `edit`, then the 0.15 block names on its text. */
795
+ function withBlockNames(edit, json) {
796
+ if (!edit.ok) return edit;
797
+ if (!json) return renameBlocksInSource(edit.text);
798
+ const config = JSON.parse(edit.text);
799
+ if (!isObject(config)) return edit;
800
+ const renamed = renameBlocksInConfig(config);
801
+ return JSON.stringify(renamed) === JSON.stringify(config) ? edit : {
802
+ ok: true,
803
+ text: `${JSON.stringify(renamed, null, 2)}\n`
804
+ };
805
+ }
806
+ //#endregion
807
+ //#region src/cli/sql/config-block-on.ts
808
+ const OPTIONS = /\boptions\s*:\s*\{/g;
809
+ const KEY_BEFORE = /(?:["']([\w-]+)["']|([A-Za-z_$][\w$-]*))\s*:\s*$/;
810
+ function applyEdits$1(source, edits) {
811
+ let text = source;
812
+ for (const edit of edits.toSorted((a, b) => b.start - a.start)) text = text.slice(0, edit.start) + edit.text + text.slice(edit.end);
813
+ return text;
814
+ }
815
+ /** The `{` of the object literal that holds the code at `index`. */
816
+ function enclosingObject(code, index) {
817
+ let depth = 0;
818
+ for (let at = index - 1; at >= 0; at -= 1) {
819
+ const char = code[at];
820
+ if (char === "}" || char === "]" || char === ")") depth += 1;
821
+ else if (char === "{" || char === "[" || char === "(") {
822
+ if (depth === 0) return char === "{" ? at : void 0;
823
+ depth -= 1;
824
+ }
825
+ }
826
+ }
827
+ /** The block an entry installs: its `block` string, or the key it sits under. */
828
+ function blockOf(source, open, props) {
829
+ const block = props.find((prop) => prop.key === "block");
830
+ if (block !== void 0) return /^["']([\w-]+)["']$/.exec(source.slice(block.valueStart, block.valueEnd))?.[1];
831
+ const key = KEY_BEFORE.exec(source.slice(0, open));
832
+ return key?.[1] ?? key?.[2];
833
+ }
834
+ /** `{ deal: ["amount"] }` as `{ deal: { fields: ["amount"] } }`. */
835
+ function wrapFields(source, code, open) {
836
+ return (properties(source, code, open) ?? []).flatMap((prop) => prop.key !== void 0 && code[prop.valueStart] === "[" ? [{
837
+ start: prop.valueStart,
838
+ end: prop.valueEnd,
839
+ text: `{ fields: ${source.slice(prop.valueStart, prop.valueEnd)} }`
840
+ }] : []);
841
+ }
842
+ /** `text` moved one object level out: two spaces fewer after each newline. */
843
+ const outdented = (text) => text.replaceAll(/\n {2}/g, "\n");
844
+ /** The edit that removes `props[index]` from its object literal. */
845
+ function removal(props, index) {
846
+ const next = props[index + 1];
847
+ const previous = props[index - 1];
848
+ const prop = props[index];
849
+ if (next !== void 0) return {
850
+ start: prop.start,
851
+ end: next.start,
852
+ text: ""
853
+ };
854
+ return {
855
+ start: previous?.valueEnd ?? prop.start,
856
+ end: prop.valueEnd,
857
+ text: ""
858
+ };
859
+ }
860
+ const lineOf = (source, index) => source.slice(0, index).split("\n").length;
861
+ /**
862
+ * `source` with every `options.subjects` of a block entry moved to the entry's
863
+ * `on`. An entry that already sets `on` is left and listed for review.
864
+ */
865
+ function moveSubjectsToOnInSource(source) {
866
+ const code = mask(source);
867
+ const edits = [];
868
+ const review = [];
869
+ for (const match of code.matchAll(OPTIONS)) {
870
+ const valueOpen = match.index + match[0].length - 1;
871
+ const entryOpen = enclosingObject(code, match.index);
872
+ if (entryOpen === void 0) continue;
873
+ const entry = properties(source, code, entryOpen) ?? [];
874
+ const options = entry.find((prop) => prop.key === "options" && prop.valueStart === valueOpen);
875
+ const inner = properties(source, code, valueOpen) ?? [];
876
+ const index = inner.findIndex((prop) => prop.key === "subjects");
877
+ if (options === void 0 || index === -1) continue;
878
+ if (entry.some((prop) => prop.key === "on")) {
879
+ review.push({
880
+ line: lineOf(source, match.index),
881
+ message: "options.subjects moved to on, and this block already sets on: merge them into on"
882
+ });
883
+ continue;
884
+ }
885
+ const subjects = inner[index];
886
+ const shorthand = subjects.valueStart === subjects.start;
887
+ const wrap = !shorthand && code[subjects.valueStart] === "{" && blockOf(source, entryOpen, entry) === "field-history";
888
+ const slice = source.slice(subjects.valueStart, subjects.valueEnd);
889
+ const raw = shorthand ? "subjects" : wrap ? applyEdits$1(slice, wrapFields(source, code, subjects.valueStart).map((edit) => ({
890
+ ...edit,
891
+ start: edit.start - subjects.valueStart,
892
+ end: edit.end - subjects.valueStart
893
+ }))) : slice;
894
+ const on = `on: ${outdented(raw)}`;
895
+ if (inner.length === 1) {
896
+ edits.push({
897
+ start: options.start,
898
+ end: options.valueEnd,
899
+ text: on
900
+ });
901
+ continue;
902
+ }
903
+ const multiline = code.slice(entryOpen, closingIndex(code, entryOpen)).includes("\n");
904
+ edits.push({
905
+ start: options.start,
906
+ end: options.start,
907
+ text: `${on},${multiline ? `\n${indentAt(source, options.start)}` : " "}`
908
+ }, removal(inner, index));
909
+ }
910
+ return {
911
+ text: applyEdits$1(source, edits),
912
+ review
913
+ };
914
+ }
915
+ function moveInObject(value) {
916
+ if (Array.isArray(value)) return value.map(moveInObject);
917
+ if (!isRecord$1(value)) return value;
918
+ const entries = Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, moveInObject(entry)]));
919
+ const options = entries["options"];
920
+ if (!isRecord$1(options) || options["subjects"] === void 0 || entries["on"] !== void 0) return entries;
921
+ const { subjects, ...rest } = options;
922
+ const { options: _, ...withoutOptions } = entries;
923
+ return {
924
+ ...withoutOptions,
925
+ on: subjects,
926
+ ...Object.keys(rest).length > 0 && { options: rest }
927
+ };
928
+ }
929
+ /** Field history's `on`, with each column list as `{ fields }`. */
930
+ function fieldHistoryOn(config) {
931
+ if (!isRecord$1(config) || !isRecord$1(config["blocks"])) return config;
932
+ const history = config["blocks"]["field-history"];
933
+ if (!isRecord$1(history) || !isRecord$1(history["on"])) return config;
934
+ const on = Object.fromEntries(Object.entries(history["on"]).map(([type, fields]) => [type, Array.isArray(fields) ? { fields } : fields]));
935
+ return {
936
+ ...config,
937
+ blocks: {
938
+ ...config["blocks"],
939
+ "field-history": {
940
+ ...history,
941
+ on
942
+ }
943
+ }
944
+ };
945
+ }
946
+ /** `edit`, then every `options.subjects` moved to `on`. */
947
+ function withSubjectsOn(edit, json) {
948
+ if (!edit.ok) return edit;
949
+ const before = "review" in edit ? edit.review : [];
950
+ if (!json) {
951
+ const moved = moveSubjectsToOnInSource(edit.text);
952
+ return {
953
+ ok: true,
954
+ text: moved.text,
955
+ review: [...before, ...moved.review]
956
+ };
957
+ }
958
+ const config = JSON.parse(edit.text);
959
+ const moved = fieldHistoryOn(moveInObject(config));
960
+ return {
961
+ ok: true,
962
+ text: JSON.stringify(moved) === JSON.stringify(config) ? edit.text : `${JSON.stringify(moved, null, 2)}\n`,
963
+ review: before
964
+ };
965
+ }
966
+ //#endregion
967
+ //#region src/cli/sql/config-move.ts
968
+ const lineStart = (source, index) => source.lastIndexOf("\n", index - 1) + 1;
969
+ function propertySpan(source, code, open, props, index) {
970
+ const prop = props[index];
971
+ const previous = props[index - 1];
972
+ if (prop === void 0) throw new Error(`no property at ${index}`);
973
+ const close = closingIndex(code, open);
974
+ const multiline = code.slice(open, close).includes("\n");
975
+ const after = skipSpace(code, prop.valueEnd);
976
+ const hasComma = code[after] === ",";
977
+ const tailFrom = hasComma ? after + 1 : prop.valueEnd;
978
+ if (!multiline) {
979
+ const value = source.slice(prop.start, prop.valueEnd);
980
+ if (previous) return {
981
+ start: previous.valueEnd,
982
+ end: prop.valueEnd,
983
+ value,
984
+ keyAt: 0,
985
+ trailing: "",
986
+ hasComma,
987
+ multiline
988
+ };
989
+ return {
990
+ start: prop.start,
991
+ end: hasComma ? skipSpace(code, tailFrom) : prop.valueEnd,
992
+ value,
993
+ keyAt: 0,
994
+ trailing: "",
995
+ hasComma,
996
+ multiline
997
+ };
998
+ }
999
+ let before = open + 1;
1000
+ if (previous) {
1001
+ const comma = skipSpace(code, previous.valueEnd);
1002
+ before = code[comma] === "," ? comma + 1 : previous.valueEnd;
1003
+ }
1004
+ const newline = source.slice(before, prop.start).indexOf("\n");
1005
+ const start = newline === -1 ? prop.start : before + newline + 1;
1006
+ const lineEnd = source.indexOf("\n", tailFrom);
1007
+ const restIsBlank = lineEnd !== -1 && code.slice(tailFrom, lineEnd).trim() === "";
1008
+ return {
1009
+ start,
1010
+ end: restIsBlank ? lineEnd + 1 : tailFrom,
1011
+ value: source.slice(start, prop.valueEnd),
1012
+ keyAt: prop.start - start,
1013
+ trailing: restIsBlank ? source.slice(tailFrom, lineEnd).trimEnd() : "",
1014
+ hasComma,
1015
+ multiline
1016
+ };
1017
+ }
1018
+ /** `modules: ...` as `blocks: ...`, keeping the key's quotes. */
1019
+ function renameKey(text, keyAt, prop) {
1020
+ const head = text.slice(keyAt);
1021
+ const quoted = /^(["'])modules\1/.exec(head);
1022
+ if (quoted) {
1023
+ const quote = quoted[1] ?? "\"";
1024
+ return `${text.slice(0, keyAt)}${quote}blocks${quote}${head.slice(quoted[0].length)}`;
1025
+ }
1026
+ if (prop.valueStart === prop.start) return `${text.slice(0, keyAt)}blocks: modules${head.slice(7)}`;
1027
+ return `${text.slice(0, keyAt)}blocks${head.slice(7)}`;
1028
+ }
1029
+ function reindent(text, from, to) {
1030
+ return text.split("\n").map((line) => line.startsWith(from) ? to + line.slice(from.length) : line).join("\n");
1031
+ }
1032
+ const sortKey = (key) => (key ?? "").toLowerCase();
1033
+ function keysSorted(keys) {
1034
+ return keys.every((key, index) => index === 0 || key !== void 0 && sortKey(keys[index - 1]) <= sortKey(key));
1035
+ }
1036
+ function rootKeys(source) {
1037
+ const code = mask(source);
1038
+ const root = configObject(code);
1039
+ return (root === void 0 ? void 0 : properties(source, code, root))?.map((prop) => prop.key) ?? [];
1040
+ }
1041
+ function sortBlocksKey(source) {
1042
+ const code = mask(source);
1043
+ const root = configObject(code);
1044
+ if (root === void 0) return source;
1045
+ const props = properties(source, code, root);
1046
+ const blocksIndex = props?.findIndex((prop) => prop.key === "blocks") ?? -1;
1047
+ if (!props || blocksIndex === -1) return source;
1048
+ const targetIndex = props.findIndex((prop, index) => index !== blocksIndex && sortKey(prop.key) > sortKey("blocks"));
1049
+ if (targetIndex === -1 || targetIndex === blocksIndex + 1) return source;
1050
+ const blocks = propertySpan(source, code, root, props, blocksIndex);
1051
+ const target = props[targetIndex];
1052
+ if (target.start > blocks.start) return source;
1053
+ const at = blocks.multiline ? propertySpan(source, code, root, props, targetIndex).start : target.start;
1054
+ const moved = blocks.multiline ? `${blocks.value},${blocks.trailing}\n` : `${blocks.value}, `;
1055
+ return source.slice(0, at) + moved + source.slice(at, blocks.start) + source.slice(blocks.end);
1056
+ }
1057
+ /**
1058
+ * `source` with `sql.modules` moved to a top-level `blocks` key, placed right
1059
+ * after `sql`, or in sorted position when the config's top-level keys are
1060
+ * sorted. `sql` is dropped when nothing else is left in it. A config without
1061
+ * `sql.modules` comes back unchanged; one that also sets `blocks` is refused,
1062
+ * because the two need a merge by hand.
1063
+ */
1064
+ function moveSqlModulesToBlocks(source) {
1065
+ const edit = moveSqlModules(source);
1066
+ return edit.ok && edit.text !== source && keysSorted(rootKeys(source)) ? {
1067
+ ok: true,
1068
+ text: sortBlocksKey(edit.text)
1069
+ } : edit;
1070
+ }
1071
+ function moveSqlModules(source) {
1072
+ const code = mask(source);
1073
+ const root = configObject(code);
1074
+ if (root === void 0) return /\bmodules\b/.test(code) ? {
1075
+ ok: false,
1076
+ reason: "it doesn't pass an object literal to defineConfig()"
1077
+ } : {
1078
+ ok: true,
1079
+ text: source
1080
+ };
1081
+ const rootProps = properties(source, code, root);
1082
+ if (!rootProps) return {
1083
+ ok: false,
1084
+ reason: "its config object can't be read"
1085
+ };
1086
+ const sqlIndex = rootProps.findIndex((prop) => prop.key === "sql");
1087
+ const sql = rootProps[sqlIndex];
1088
+ if (sql === void 0) return {
1089
+ ok: true,
1090
+ text: source
1091
+ };
1092
+ if (code[sql.valueStart] !== "{" || sql.valueStart === sql.start) return /\bmodules\b/.test(code) ? {
1093
+ ok: false,
1094
+ reason: "its `sql` value isn't an object literal; move `sql.modules` to `blocks` by hand"
1095
+ } : {
1096
+ ok: true,
1097
+ text: source
1098
+ };
1099
+ const sqlProps = properties(source, code, sql.valueStart);
1100
+ if (!sqlProps) return {
1101
+ ok: false,
1102
+ reason: "its `sql` object can't be read"
1103
+ };
1104
+ const modulesIndex = sqlProps.findIndex((prop) => prop.key === "modules");
1105
+ const modules = sqlProps[modulesIndex];
1106
+ if (modules === void 0) return {
1107
+ ok: true,
1108
+ text: source
1109
+ };
1110
+ if (rootProps.some((prop) => prop.key === "blocks")) return {
1111
+ ok: false,
1112
+ reason: "it sets both `sql.modules` and `blocks`; merge `sql.modules` into `blocks` by hand"
1113
+ };
1114
+ const cut = propertySpan(source, code, sql.valueStart, sqlProps, modulesIndex);
1115
+ const outer = propertySpan(source, code, root, rootProps, sqlIndex);
1116
+ const renamed = renameKey(cut.value, cut.keyAt, modules);
1117
+ const sqlClose = closingIndex(code, sql.valueStart);
1118
+ const leftover = source.slice(sql.valueStart + 1, cut.start) + source.slice(cut.end, sqlClose);
1119
+ const dropSql = sqlProps.length === 1 && leftover.trim() === "";
1120
+ if (!cut.multiline || !outer.multiline) {
1121
+ const property = renamed.trim();
1122
+ if (dropSql) return {
1123
+ ok: true,
1124
+ text: source.slice(0, sql.start) + property + source.slice(sql.valueEnd)
1125
+ };
1126
+ return {
1127
+ ok: true,
1128
+ text: `${source.slice(0, cut.start)}${source.slice(cut.end, sql.valueEnd)}, ${property}${source.slice(sql.valueEnd)}`
1129
+ };
1130
+ }
1131
+ const sqlIndent = indentAt(source, sql.start);
1132
+ const body = reindent(renamed, indentAt(source, modules.start), sqlIndent);
1133
+ const moved = `${cut.start === modules.start ? sqlIndent + body : body},${cut.trailing}\n`;
1134
+ if (dropSql) return {
1135
+ ok: true,
1136
+ text: source.slice(0, lineStart(source, sql.start)) + moved + source.slice(outer.end)
1137
+ };
1138
+ const atLineStart = source[outer.end - 1] === "\n";
1139
+ return {
1140
+ ok: true,
1141
+ text: source.slice(0, cut.start) + source.slice(cut.end, sql.valueEnd) + (outer.hasComma ? "" : ",") + source.slice(sql.valueEnd, outer.end) + (atLineStart ? "" : "\n") + moved + source.slice(outer.end)
1142
+ };
1143
+ }
1144
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
1145
+ function withBlocksSorted(config) {
1146
+ const entries = Object.entries(config).filter(([key]) => key !== "blocks");
1147
+ const after = entries.findIndex(([key]) => sortKey(key) > "blocks");
1148
+ entries.splice(after === -1 ? entries.length : after, 0, ["blocks", config["blocks"]]);
1149
+ return Object.fromEntries(entries);
1150
+ }
1151
+ /** `moveSqlModulesToBlocks` for `better-supabase.config.json`. */
1152
+ function moveSqlModulesToBlocksJson(source) {
1153
+ let config;
1154
+ try {
1155
+ config = JSON.parse(source);
1156
+ } catch {
1157
+ return {
1158
+ ok: false,
1159
+ reason: "it isn't valid JSON"
1160
+ };
1161
+ }
1162
+ if (!isRecord(config)) return {
1163
+ ok: false,
1164
+ reason: "it isn't a JSON object"
1165
+ };
1166
+ const sql = config["sql"];
1167
+ if (!isRecord(sql) || !("modules" in sql)) return {
1168
+ ok: true,
1169
+ text: source
1170
+ };
1171
+ if ("blocks" in config) return {
1172
+ ok: false,
1173
+ reason: "it sets both `sql.modules` and `blocks`; merge `sql.modules` into `blocks` by hand"
1174
+ };
1175
+ const { modules, ...restSql } = sql;
1176
+ const next = {};
1177
+ for (const [key, value] of Object.entries(config)) {
1178
+ if (key !== "sql") {
1179
+ next[key] = value;
1180
+ continue;
1181
+ }
1182
+ if (Object.keys(restSql).length > 0) next["sql"] = restSql;
1183
+ next["blocks"] = modules;
1184
+ }
1185
+ const sorted = keysSorted(Object.keys(config)) ? withBlocksSorted(next) : next;
1186
+ const indent = /^[ \t]+/m.exec(source)?.[0] ?? " ";
1187
+ return {
1188
+ ok: true,
1189
+ text: `${JSON.stringify(sorted, null, indent)}\n`
1190
+ };
1191
+ }
1192
+ /** Review lines for `sql.modules` left in environment blocks after the move. */
1193
+ function environmentModules(text) {
1194
+ return mask(text).split("\n").flatMap((line, index) => /\bmodules\s*:/.test(line) ? [{
1195
+ line: index + 1,
1196
+ message: "`sql.modules` in an environment block moves to `blocks` too"
1197
+ }] : []);
1198
+ }
1199
+ //#endregion
1200
+ //#region src/cli/sql/config-plugins.ts
1201
+ /** The block each plugin flag became, and its column keys as block options. */
1202
+ const PLUGIN_BLOCKS = {
1203
+ timestamps: {
1204
+ block: "updated-at",
1205
+ options: {
1206
+ createdAt: "createdAt",
1207
+ updatedAt: "updatedAt"
1208
+ }
1209
+ },
1210
+ actor: {
1211
+ block: "created-by",
1212
+ options: {
1213
+ createdBy: "createdBy",
1214
+ updatedBy: "updatedBy",
1215
+ impersonatedBy: "impersonatedBy"
1216
+ }
1217
+ },
1218
+ softDelete: {
1219
+ block: "trash",
1220
+ options: { column: "deletedAt" }
1221
+ }
1222
+ };
1223
+ const DEFAULT_ORGANIZATION_COLUMN = "organization_id";
1224
+ function movesOf(flags) {
1225
+ const blocks = [];
1226
+ let tenant = false;
1227
+ for (const [name, flag] of Object.entries(flags)) {
1228
+ if (name === "tenant") {
1229
+ tenant = flag !== false;
1230
+ continue;
1231
+ }
1232
+ const move = PLUGIN_BLOCKS[name];
1233
+ if (move === void 0) return { reason: `plugins.${name} is not a plugin flag 0.14 had` };
1234
+ if (flag === false) continue;
1235
+ const options = {};
1236
+ for (const [key, value] of Object.entries(flag)) {
1237
+ const option = move.options[key];
1238
+ if (option === void 0) return { reason: `plugins.${name}.${key} is not a column it took` };
1239
+ options[option] = value;
1240
+ }
1241
+ blocks.push([move.block, options]);
1242
+ }
1243
+ return {
1244
+ blocks,
1245
+ tenant
1246
+ };
1247
+ }
1248
+ /** A string literal's value, or undefined for any other expression. */
1249
+ function stringValue(text) {
1250
+ return /^(["'])((?:(?!\1)[^\\])*)\1$/.exec(text.trim())?.[2];
1251
+ }
1252
+ function flagsInSource(source, code, open) {
1253
+ const flags = {};
1254
+ for (const prop of properties(source, code, open) ?? []) {
1255
+ const value = source.slice(prop.valueStart, prop.valueEnd).trim();
1256
+ if (prop.key === void 0) return { reason: "plugins has a spread or a computed key" };
1257
+ if (value === "true" || value === "false") {
1258
+ flags[prop.key] = value === "true" ? {} : false;
1259
+ continue;
1260
+ }
1261
+ if (code[prop.valueStart] !== "{") return { reason: `plugins.${prop.key} isn't true, false or an object` };
1262
+ const columns = {};
1263
+ for (const inner of properties(source, code, prop.valueStart) ?? []) {
1264
+ const column = stringValue(source.slice(inner.valueStart, inner.valueEnd));
1265
+ if (inner.key === void 0 || column === void 0) return { reason: `plugins.${prop.key} has a key that isn't a string` };
1266
+ columns[inner.key] = column;
1267
+ }
1268
+ flags[prop.key] = columns;
1269
+ }
1270
+ return flags;
1271
+ }
1272
+ /** Whether the `blocks` value names `memberships`, as a key or a list item. */
1273
+ const MEMBERSHIPS = /["']memberships["']|\bmemberships\s*:/;
1274
+ /** `better-supabase.config.ts` with `plugins` moved into blocks. */
1275
+ function movePluginsInSource(source) {
1276
+ const code = mask(source);
1277
+ const root = configObject(code);
1278
+ if (root === void 0) return {
1279
+ ok: true,
1280
+ text: source
1281
+ };
1282
+ const props = properties(source, code, root) ?? [];
1283
+ const index = props.findIndex((prop) => prop.key === "plugins");
1284
+ const plugins = props[index];
1285
+ if (plugins === void 0) return {
1286
+ ok: true,
1287
+ text: source
1288
+ };
1289
+ if (code[plugins.valueStart] !== "{") return {
1290
+ ok: false,
1291
+ reason: "its plugins key isn't a literal object"
1292
+ };
1293
+ const flags = flagsInSource(source, code, plugins.valueStart);
1294
+ if ("reason" in flags) return {
1295
+ ok: false,
1296
+ reason: String(flags.reason)
1297
+ };
1298
+ const moves = movesOf(flags);
1299
+ if ("reason" in moves) return {
1300
+ ok: false,
1301
+ reason: moves.reason
1302
+ };
1303
+ const multiline = code.slice(root, closingIndex(code, root)).includes("\n");
1304
+ const cut = cutRange(source, code, root, props, index, multiline);
1305
+ let edit = {
1306
+ ok: true,
1307
+ text: source.slice(0, cut.start) + source.slice(cut.end)
1308
+ };
1309
+ const blocks = props.find((prop) => prop.key === "blocks");
1310
+ const memberships = blocks !== void 0 && MEMBERSHIPS.test(source.slice(blocks.valueStart, blocks.valueEnd));
1311
+ const organization = organizationText(source, code, props);
1312
+ const organizationColumn = /\bcolumn\s*:/.test(organization);
1313
+ const onMissing = /\bonMissing\s*:/.test(organization);
1314
+ const steps = [
1315
+ ...moves.blocks.flatMap(([block, options]) => [(text) => addBlocksToConfig(text, [block]), ...Object.entries(options).map(([key, value]) => (text) => setPathInConfig(text, [
1316
+ "blocks",
1317
+ block,
1318
+ "options",
1319
+ key
1320
+ ], value))]),
1321
+ ...moves.tenant && !memberships && !organizationColumn ? [(text) => setPathInConfig(text, [
1322
+ "auth",
1323
+ "organization",
1324
+ "column"
1325
+ ], DEFAULT_ORGANIZATION_COLUMN)] : [],
1326
+ ...moves.tenant && !onMissing ? [(text) => setPathInConfig(text, [
1327
+ "auth",
1328
+ "organization",
1329
+ "onMissing"
1330
+ ], "error")] : []
1331
+ ];
1332
+ for (const step of steps) {
1333
+ if (!edit.ok) return edit;
1334
+ edit = step(edit.text);
1335
+ }
1336
+ return edit;
1337
+ }
1338
+ /** The source of `auth.organization`, or `""` without one. */
1339
+ function organizationText(source, code, props) {
1340
+ const auth = props.find((prop) => prop.key === "auth");
1341
+ if (auth === void 0 || code[auth.valueStart] !== "{") return "";
1342
+ const organization = (properties(source, code, auth.valueStart) ?? []).find((prop) => prop.key === "organization");
1343
+ return organization === void 0 ? "" : source.slice(organization.valueStart, organization.valueEnd);
1344
+ }
1345
+ const isColumns = (value) => isRecord$1(value) && Object.values(value).every((column) => typeof column === "string");
1346
+ function flagsInJson(plugins) {
1347
+ if (!isRecord$1(plugins)) return { reason: "its plugins key isn't an object" };
1348
+ const flags = {};
1349
+ for (const [name, value] of Object.entries(plugins)) if (typeof value === "boolean") flags[name] = value ? {} : false;
1350
+ else if (isColumns(value)) flags[name] = value;
1351
+ else return { reason: `plugins.${name} isn't true, false or columns` };
1352
+ return flags;
1353
+ }
1354
+ const objectAt$1 = (value) => isRecord$1(value) ? value : {};
1355
+ /** `movePluginsInSource` for `better-supabase.config.json`. */
1356
+ function movePluginsInJson(source) {
1357
+ let config;
1358
+ try {
1359
+ config = JSON.parse(source);
1360
+ } catch {
1361
+ return {
1362
+ ok: true,
1363
+ text: source
1364
+ };
1365
+ }
1366
+ if (!isRecord$1(config) || !("plugins" in config)) return {
1367
+ ok: true,
1368
+ text: source
1369
+ };
1370
+ const { plugins, ...rest } = config;
1371
+ const flags = flagsInJson(plugins);
1372
+ if ("reason" in flags) return {
1373
+ ok: false,
1374
+ reason: String(flags.reason)
1375
+ };
1376
+ const moves = movesOf(flags);
1377
+ if ("reason" in moves) return {
1378
+ ok: false,
1379
+ reason: moves.reason
1380
+ };
1381
+ const listed = rest["blocks"] ?? {};
1382
+ const blocks = Array.isArray(listed) ? Object.fromEntries(listed.map((name) => [String(name), {}])) : { ...objectAt$1(listed) };
1383
+ const memberships = "memberships" in blocks;
1384
+ for (const [block, options] of moves.blocks) {
1385
+ const entry = objectAt$1(blocks[block]);
1386
+ blocks[block] = {
1387
+ ...entry,
1388
+ ...Object.keys(options).length === 0 ? {} : { options: {
1389
+ ...objectAt$1(entry["options"]),
1390
+ ...options
1391
+ } }
1392
+ };
1393
+ }
1394
+ const next = {
1395
+ ...rest,
1396
+ ...moves.blocks.length === 0 && rest["blocks"] === void 0 ? {} : { blocks: moves.blocks.length === 0 ? rest["blocks"] : blocks }
1397
+ };
1398
+ if (moves.tenant) {
1399
+ const auth = objectAt$1(next["auth"]);
1400
+ const organization = objectAt$1(auth["organization"]);
1401
+ next["auth"] = {
1402
+ ...auth,
1403
+ organization: {
1404
+ ...memberships ? {} : { column: DEFAULT_ORGANIZATION_COLUMN },
1405
+ onMissing: "error",
1406
+ ...organization
1407
+ }
1408
+ };
1409
+ }
1410
+ const indent = /^[ \t]+/m.exec(source)?.[0] ?? " ";
1411
+ return {
1412
+ ok: true,
1413
+ text: `${JSON.stringify(next, null, indent)}\n`
1414
+ };
1415
+ }
1416
+ /** `edit` with `plugins` moved into blocks, after the regrouping. */
1417
+ function withoutPlugins(edit, json) {
1418
+ if (!edit.ok) return edit;
1419
+ return json ? movePluginsInJson(edit.text) : movePluginsInSource(edit.text);
1420
+ }
1421
+ //#endregion
1422
+ //#region src/cli/sql/config-webhook-format.ts
1423
+ const PATH = [
1424
+ "blocks",
1425
+ "webhooks-out",
1426
+ "options",
1427
+ "defaultFormat"
1428
+ ];
1429
+ function needsPin(block) {
1430
+ if (!isRecord$1(block) || block["mode"] !== "adopt") return false;
1431
+ const options = block["options"];
1432
+ const columns = block["columns"];
1433
+ const endpoints = isRecord$1(columns) ? columns["endpoints"] : void 0;
1434
+ return !(isRecord$1(options) && options["defaultFormat"] !== void 0) && !(isRecord$1(endpoints) && endpoints["format"] !== void 0);
1435
+ }
1436
+ function pinJson(source, format) {
1437
+ let config;
1438
+ try {
1439
+ config = JSON.parse(source);
1440
+ } catch {
1441
+ return {
1442
+ ok: false,
1443
+ reason: "it isn't valid JSON"
1444
+ };
1445
+ }
1446
+ const blocks = isRecord$1(config) ? config["blocks"] : void 0;
1447
+ return isRecord$1(blocks) && needsPin(blocks["webhooks-out"]) ? setPathInJson(source, PATH, format) : void 0;
1448
+ }
1449
+ /** The object literal at `prop`'s value, or `undefined` when it isn't one. */
1450
+ function objectAt(source, code, prop) {
1451
+ return prop && code[prop.valueStart] === "{" ? properties(source, code, prop.valueStart) : void 0;
1452
+ }
1453
+ function pinTs(source, format) {
1454
+ const code = mask(source);
1455
+ const root = configObject(code);
1456
+ if (root === void 0) return;
1457
+ const find = (props, key) => props?.find((prop) => prop.key === key);
1458
+ const blockProp = find(objectAt(source, code, find(properties(source, code, root), "blocks")), "webhooks-out");
1459
+ if (!blockProp) return;
1460
+ const block = objectAt(source, code, blockProp);
1461
+ if (!block) return {
1462
+ ok: false,
1463
+ reason: "its blocks[\"webhooks-out\"] isn't a literal object"
1464
+ };
1465
+ const mode = find(block, "mode");
1466
+ const modeText = mode ? source.slice(mode.valueStart, mode.valueEnd).trim() : void 0;
1467
+ if (modeText !== "\"adopt\"" && modeText !== "'adopt'") return;
1468
+ const options = find(block, "options");
1469
+ const columns = find(block, "columns");
1470
+ if (options && !objectAt(source, code, options) || columns && !objectAt(source, code, columns)) return {
1471
+ ok: false,
1472
+ reason: "its blocks[\"webhooks-out\"] options or columns aren't literal objects"
1473
+ };
1474
+ const endpoints = find(objectAt(source, code, columns), "endpoints");
1475
+ if (endpoints && !objectAt(source, code, endpoints)) return {
1476
+ ok: false,
1477
+ reason: "its blocks[\"webhooks-out\"].columns.endpoints isn't a literal object"
1478
+ };
1479
+ if (find(objectAt(source, code, options), "defaultFormat") || find(objectAt(source, code, endpoints), "format")) return;
1480
+ return setPathInConfig(source, PATH, format);
1481
+ }
1482
+ /**
1483
+ * Pins `defaultFormat` to `format` where an adopted block leaves it to the
1484
+ * default.
1485
+ */
1486
+ function pinWebhookFormat(source, json, format) {
1487
+ return json ? pinJson(source, format) : pinTs(source, format);
1488
+ }
1489
+ /**
1490
+ * `edit` with `defaultFormat` pinned to `format` where an adopted webhooks-out
1491
+ * block needs it.
1492
+ */
1493
+ function withWebhookFormat(edit, json, format) {
1494
+ if (!edit.ok) return edit;
1495
+ const earlier = "review" in edit ? edit.review : [];
1496
+ const pin = pinWebhookFormat(edit.text, json, format);
1497
+ if (pin === void 0) return {
1498
+ ok: true,
1499
+ text: edit.text,
1500
+ review: earlier
1501
+ };
1502
+ if (!pin.ok) return {
1503
+ ok: true,
1504
+ text: edit.text,
1505
+ review: [...earlier, {
1506
+ line: 1,
1507
+ message: `blocks["webhooks-out"] is adopted and maps no columns.endpoints.format, but defaultFormat wasn't pinned: ${pin.reason}. Set options.defaultFormat to "${format}" to keep the body endpoints get now`
1508
+ }]
1509
+ };
1510
+ const line = pin.text.split("\n").findIndex((text) => text.includes("defaultFormat")) + 1;
1511
+ return {
1512
+ ok: true,
1513
+ text: pin.text,
1514
+ review: [...earlier, {
1515
+ line: Math.max(line, 1),
1516
+ message: `blocks["webhooks-out"] is adopted and maps no columns.endpoints.format, so the codemod set options.defaultFormat to "${format}", the body its endpoints get now. Change it if your receivers expect the other format`
1517
+ }]
1518
+ };
1519
+ }
1520
+ //#endregion
1521
+ //#region src/cli/codemod.ts
1522
+ /**
1523
+ * `better-supabase.config.*`, the files a codemod's `configFile` edit applies
1524
+ * to.
1525
+ */
1526
+ const CONFIG_FILE = /(?:^|[\\/])better-supabase\.config\.(?:ts|mts|cts|js|mjs|cjs|json)$/;
1527
+ const OFFSET_PIN = {
1528
+ key: "pagination",
1529
+ value: "\"offset\"",
1530
+ when: /\.page\b(?!\s*\()|\bpageCount\b|\btotalPages\b|\bpage\s*:|[?&]page=|["']page["']/,
1531
+ message: "Lists and resources page by cursor (`after`, `nextCursor`, no total) unless `pagination: \"offset\"` is set. This file shows no page numbers, so the codemod left it: add `pagination: \"offset\"` if a UI elsewhere reads `page` or the total, or the list sorts by a relation"
1532
+ };
1533
+ const SQL_ADD_HINT = {
1534
+ pattern: /(?<![\w.@-])(?:better-supabase|bsb)(?:@[\w.^~-]+)?\s+sql\s+add\b/,
1535
+ message: "`sql add` still only writes the block's SQL; `add` also wires its clients and config. Use `add` unless the script needs the SQL alone"
1536
+ };
1537
+ const BLOCK_SQL_TYPES = "Context ContractFunction Names Layout File IdType AccessProvider EntitlementsProvider TableSpec Upgrade PermissionKey Audit Deprecation Extension Emit UpgradePlan Topic TestFile Action";
1538
+ const ENTITY_FORM_TYPES = " CustomField Field Input Options Result State Values";
1539
+ /** `from` and `to` prefixed to each space-separated suffix in `suffixes`. */
1540
+ function prefixed(from, to, suffixes) {
1541
+ return Object.fromEntries(suffixes.split(" ").map((suffix) => [from + suffix, to + suffix]));
1542
+ }
1543
+ const CODEMODS = {
1544
+ "0.4": {
1545
+ name: "0.4",
1546
+ description: "Renames from 0.3 to 0.4 (the naming page lists them)",
1547
+ imports: {
1548
+ createBrowser: "createClient",
1549
+ BetterBrowser: "BetterClient",
1550
+ BrowserOptions: "ClientOptions",
1551
+ BrowserAuth: "ClientAuth",
1552
+ BetterEnv: "HonoEnv",
1553
+ HandlerOptions: "MiddlewareOptions",
1554
+ Queries: "BetterQueries",
1555
+ CreateQueriesOptions: "QueriesOptions",
1556
+ Postgres: "BetterPostgres",
1557
+ DefineSupabaseOptions: "SupabaseOptions"
1558
+ },
1559
+ members: [
1560
+ {
1561
+ from: "serverFor",
1562
+ to: "contextForSession"
1563
+ },
1564
+ {
1565
+ from: "toORPCError",
1566
+ to: "toOrpcError"
1567
+ },
1568
+ {
1569
+ from: "$table",
1570
+ to: "$tableName",
1571
+ notCalled: true
1572
+ }
1573
+ ],
1574
+ props: [{
1575
+ component: "BetterSupabaseProvider",
1576
+ from: "browser",
1577
+ to: "client"
1578
+ }],
1579
+ review: [
1580
+ {
1581
+ pattern: /\.server\(\)/,
1582
+ message: "`next.server()` is `bsb.context()` on the createNext() instance"
1583
+ },
1584
+ {
1585
+ pattern: /\.handle\(\)/,
1586
+ message: "Hono's `bsb.handle()` is `bsb.handler()`"
1587
+ },
1588
+ {
1589
+ pattern: /\bmcp\.handler\b/,
1590
+ message: "`mcp.handler` is `bsb.endpoint`"
1591
+ },
1592
+ {
1593
+ pattern: /\.sb\b/,
1594
+ message: "`client.sb` is `client.betterSupabase`"
1595
+ },
1596
+ {
1597
+ pattern: /\btestExecutor\(\s*\{[^}]*\bsb\b/,
1598
+ message: "`{ sb }` in testExecutor is `{ betterSupabase }`"
1599
+ }
1600
+ ]
1601
+ },
1602
+ "0.5": {
1603
+ name: "0.5",
1604
+ description: "Renames from 0.4 to 0.5: createMcp's scopes is advertisedScopes",
1605
+ options: [{
1606
+ call: "createMcp",
1607
+ from: "scopes",
1608
+ to: "advertisedScopes"
1609
+ }]
1610
+ },
1611
+ "0.6": {
1612
+ name: "0.6",
1613
+ description: "Changes from 0.5 to 0.6: kits become blocks and modules, org becomes organization (in event types too), $rpc returns table rows and records in the configured casing, and bucket publicUrl() and path() return a Result",
1614
+ strings: {
1615
+ ...BLOCK_EVENT_RENAMES,
1616
+ "org.*": "organization.*"
1617
+ },
1618
+ imports: {
1619
+ KitEvent: "BlockEvent",
1620
+ KitEventMap: "BlockEventMap",
1621
+ KitEventType: "BlockEventType",
1622
+ KitEventMeta: "BlockEventMeta",
1623
+ KitEventPattern: "BlockEventPattern",
1624
+ KitEventsMatching: "BlockEventsMatching",
1625
+ onKitEvent: "onBlockEvent",
1626
+ forwardKitEvents: "forwardBlockEvents",
1627
+ ForwardKitOptions: "ForwardBlockOptions",
1628
+ KIT_ATTRIBUTES: "BLOCK_ATTRIBUTES",
1629
+ kitCloudEvent: "blockCloudEvent",
1630
+ kitEventAttributes: "blockEventAttributes",
1631
+ traceKitEvents: "traceBlockEvents",
1632
+ KitTransport: "BlockTransport",
1633
+ OrgEventData: "OrganizationEventData",
1634
+ createOrgs: "createOrganizations",
1635
+ Orgs: "Organizations",
1636
+ OrgsOptions: "OrganizationsOptions",
1637
+ CreateOrgOptions: "CreateOrganizationOptions",
1638
+ OrgAttributes: "OrganizationAttributes",
1639
+ orgLogoBucket: "organizationLogoBucket",
1640
+ OrgLogoBucketOptions: "OrganizationLogoBucketOptions",
1641
+ KitsConfig: "BlocksConfig",
1642
+ KitModuleConfig: "BlockConfig",
1643
+ KitMode: "BlockMode",
1644
+ AccessKitConfig: "AccessBlockConfig",
1645
+ renderKit: "renderModules",
1646
+ kitLayout: "moduleLayout",
1647
+ kitPermissionKeys: "modulePermissionKeys",
1648
+ kitDeprecations: "moduleDeprecations",
1649
+ kitFilePaths: "moduleFilePaths",
1650
+ kitFileVersion: "moduleFileVersion",
1651
+ sameKitFile: "sameModuleFile",
1652
+ kitIdType: "moduleIdType",
1653
+ isKitIdType: "isModuleIdType",
1654
+ KIT_ID_TYPES: "MODULE_ID_TYPES",
1655
+ KitIdType: "ModuleIdType",
1656
+ KitContext: "ModuleContext",
1657
+ KitLayout: "ModuleLayout",
1658
+ KitFile: "ModuleFile",
1659
+ KitNames: "ModuleNames",
1660
+ KitTableSpec: "ModuleTableSpec",
1661
+ KitContractFunction: "ModuleContractFunction",
1662
+ KitDeprecation: "ModuleDeprecation",
1663
+ KitPermissionKey: "ModulePermissionKey",
1664
+ KitUpgrade: "ModuleUpgrade",
1665
+ KitUpgradePlan: "ModuleUpgradePlan",
1666
+ InstalledKitModule: "InstalledModule"
1667
+ },
1668
+ options: [{
1669
+ call: "defineSupabase",
1670
+ from: "maxUrlLength",
1671
+ to: "urlLengthLimit"
1672
+ }],
1673
+ review: [
1674
+ {
1675
+ pattern: /from\s*["']better-supabase\/(orgs|jobs|notifications|webhooks)["']/,
1676
+ message: "This subpath moved under `better-supabase/blocks/` (`orgs` is `blocks/organizations`; the outbox, entitlements and audit retention left `jobs` for their own blocks); the 0.5 to 0.6 guide maps each export"
1677
+ },
1678
+ {
1679
+ pattern: /\bcreateInbox\b[^\n]*from\s*["']better-supabase\/(blocks\/)?jobs["']/,
1680
+ message: "The webhook inbox is `createWebhookInbox` from `better-supabase/blocks/jobs`; `createInbox` is now the conversation inbox in `blocks/inbox`"
1681
+ },
1682
+ {
1683
+ pattern: /\$rpc\s*(<|\()/,
1684
+ message: "`$rpc` now returns table rows and `returns table (...)` records in the configured casing, with codecs applied: drop a snake-to-camel mapping of the result, or pass `{ raw: true }` to keep database names. Scalar results and `returns table` columns are now `| null` unless `functions.<name>.notNull` says otherwise"
1685
+ },
1686
+ {
1687
+ pattern: /\.publicUrl\s*\(/,
1688
+ message: "A connected bucket's `publicUrl()` returns a `Result` instead of throwing: read `.data` (`null` on an error) or check `.ok`"
1689
+ },
1690
+ {
1691
+ pattern: /\.path\s*\(\s*\{/,
1692
+ message: "A bucket definition's `path(values)` returns a `Result` instead of throwing, like the connected client's `path()`: read `.data` (`null` on an error) or check `.ok`"
1693
+ }
1694
+ ]
1695
+ },
1696
+ "0.9": {
1697
+ name: "0.9",
1698
+ description: "Moves sql.modules to the top-level blocks key in better-supabase.config.*, rewrites CLI calls in package.json scripts and GitHub workflows to the new subcommands and flags (other shell files are listed), renames the config types (ModulesConfig to BlocksConfig, ModuleConfig to BlockConfig, AccessModuleConfig to AccessBlockConfig, ModuleMode to BlockMode), pins pagination: 'offset' on lists and resources in files that read page numbers, and lists behaviour changes for review: support sessions (denied without authorize, approved by a second admin), canApprove (now isApprover), outgoing webhook transforms and receivers (CloudEvents), gatewayOptions callers, generic problem types (about:blank), the delegation cap, role helpers, event and schedule starts (runAs), workflow builders, delivery and realtime fan-out, agent actors, share links, before_promotion_activate and comment subjects",
1699
+ imports: {
1700
+ ModulesConfig: "BlocksConfig",
1701
+ ModuleConfig: "BlockConfig",
1702
+ AccessModuleConfig: "AccessBlockConfig",
1703
+ ModuleMode: "BlockMode"
1704
+ },
1705
+ configFile: (source, json) => {
1706
+ const moved = json ? moveSqlModulesToBlocksJson(source) : moveSqlModulesToBlocks(source);
1707
+ return withWebhookFormat(moved.ok && !json ? {
1708
+ ...moved,
1709
+ review: environmentModules(moved.text)
1710
+ } : moved, json, "standard");
1711
+ },
1712
+ cliCalls: migrateCliCall,
1713
+ cliReview: [SQL_ADD_HINT],
1714
+ pins: [{
1715
+ call: "defineListQuery",
1716
+ argument: 2,
1717
+ ...OFFSET_PIN
1718
+ }, {
1719
+ call: "defineResource",
1720
+ argument: 2,
1721
+ unless: ["list"],
1722
+ ...OFFSET_PIN
1723
+ }],
1724
+ review: [
1725
+ {
1726
+ pattern: /\bresources\s*:\s*\{/,
1727
+ message: "The default list of each `defineApi` resource pages by cursor (`after`, `nextCursor`) unless the table has no primary key; set `pagination: \"offset\"` on a resource whose clients send `page` or read the total"
1728
+ },
1729
+ {
1730
+ pattern: /\bsupportSessions\s*\(/,
1731
+ message: "Support sessions refuse every start without `authorize` (or the server's `authorization.support.authorize`), and a start needs a request approved by a different admin unless `policy.approval` is `\"none\"`. `authorize: \"store\"` keeps the store-only check"
1732
+ },
1733
+ {
1734
+ pattern: /\bcanApprove\b/,
1735
+ message: "`authorization.functions.canApprove` is deprecated: set `isApprover` with `{kind}` (`'ai-tool'`), `{subject}` (the tool name, was `{tool}`) and `{tenant}`"
1736
+ },
1737
+ {
1738
+ pattern: /\bcreateWebhooks\s*\(/,
1739
+ message: "Outgoing webhooks send CloudEvents 1.0 (`application/cloudevents+json`) instead of `{ type, timestamp, data }`; a `transform` now returns only the event's `data`, and receivers read `data` from the CloudEvent. `sql upgrade` keeps existing endpoints on `format = 'standard'` (the 0.8 body) until you set each one to `cloudevents`"
1740
+ },
1741
+ {
1742
+ pattern: /\bgatewayOptions\s*\(/,
1743
+ message: "`gatewayOptions` ignores a `user` in its second argument; pass the caller's id as `context.userId`"
1744
+ },
1745
+ {
1746
+ pattern: /bettersupabase\.com\/problems\/(invalid-request|unauthorized|forbidden|not-found|conflict|rate-limited|unexpected)\b|["'](Invalid request|Not found|Too many requests|Unexpected error)["']/,
1747
+ message: "Generic problems use `type: \"about:blank\"` and the HTTP status phrase as `title` (`Bad Request`, `Not Found`, `Too Many Requests`, `Internal Server Error`); match on `kind` or `code` instead"
1748
+ },
1749
+ {
1750
+ pattern: /\bpublish_webhook_event\s*\(/,
1751
+ message: "`publish_webhook_event` takes `subject` and `read_permission` and delivers only to endpoints whose owner may read the event"
1752
+ },
1753
+ {
1754
+ pattern: /\btoken_scope_allows\s*\(|["']oauth-client["']/,
1755
+ message: "Delegated tokens are narrowed inside `member_can`, `platform_can` and `tenant_ids_with`: a permission passes only when one of the token's scopes maps to it. Map scopes in `blocks.access.scopes` or `authorization.delegation.scopes`; a `token_scope_allows` check in a write policy is now covered by the cap"
1756
+ },
1757
+ {
1758
+ pattern: /\b(has_organization_role|member_organization_ids|organization_member_role)\s*\(/,
1759
+ message: "Under the provider model the role helpers take membership from the provider's `memberIds`, and a role name check skips the delegation cap (doctor BS334): check a permission with `tenant_ids_with('<permission>')` or `member_can()`"
1760
+ },
1761
+ {
1762
+ pattern: /\b(workflowStarter|startOnEvent)\s*\(/,
1763
+ message: "Event and schedule starts need `runAs: { publisher, permissions }` (or a function returning it): a schedule start without it throws, and the run's context is the publisher's, capped to `permissions`"
1764
+ },
1765
+ {
1766
+ pattern: /\bcreateBuilder\s*\(/,
1767
+ message: "Published versions run as their publisher (`versions.runAs`), and versions published before 0.9 fail with `WORKFLOW_PUBLISHER_REVOKED` until republished. A version the organization owns runs as its default service principal: create one with `default: true` or set `automation.runAs`"
1768
+ },
1769
+ {
1770
+ pattern: /\b(createNotifications|createReminders)\s*\(|\.fanOut\s*\(/,
1771
+ message: "Under an authorization provider without `delivery.subscribers` or `delivery.audience`, an event about a registered subject reaches only users who may read it (`subjectReaders`), and realtime `fanOut` refuses it (`REALTIME_SUBSCRIBER_POLICY_REQUIRED`) until you pass a `policy`"
1772
+ },
1773
+ {
1774
+ pattern: /\bkind\s*:\s*["']agent["']/,
1775
+ message: "An `act` level `{ kind: \"agent\", sub, tools }` is now valid (build it with `agentClaims`) and writes with the user's rights unless it sets `read_only: true`; `tools` must be a list of names"
1776
+ },
1777
+ {
1778
+ pattern: /\bcreate_share_link\b/,
1779
+ message: "`create_share_link` takes `version_id` and `expires_at` after `role`; grants and revokes on the four-argument signature must name `(uuid, text, text, text, uuid, timestamptz)`"
1780
+ },
1781
+ {
1782
+ pattern: /\bbefore_promotion_activate\b/,
1783
+ message: "`promotions` now calls `before_promotion_activate(promotion uuid)` after every write that leaves a promotion active; a function of that name runs on each such save"
1784
+ },
1785
+ {
1786
+ pattern: /\bcomments\s*:\s*\{/,
1787
+ message: "With `config.records` set and no `subjects` option, comments accept only the registered subject types and require read on the subject row"
1788
+ }
1789
+ ]
1790
+ },
1791
+ "0.11": {
1792
+ name: "0.11",
1793
+ description: "Pins blocks[\"webhooks-out\"].options.defaultFormat to \"cloudevents\" in better-supabase.config.* when the block is adopted and maps no columns.endpoints.format, since adopt mode requires it from 0.11; the 0.9 codemod pins \"standard\" instead for configs coming from 0.8",
1794
+ configFile: (source, json) => withWebhookFormat({
1795
+ ok: true,
1796
+ text: source
1797
+ }, json, "cloudevents")
1798
+ },
1799
+ "0.15": {
1800
+ name: "0.15",
1801
+ description: "Regroups better-supabase.config.* into database, auth, gen, api and tooling (subjects to records, appTables to tables, integrations to adapters, a block's mode, scope, entities and hooks to ownership, owner, names and callbacks, and removes ownership: \"adopt\", since a block now leaves alone the tables the schema already has; claims.tenant and the tenant plugin's column to auth.organization); renames the requireTenant option and helper to requireOrganization; renames the runtime instance bs to bsb (the CLI's short name) where a file creates, imports or destructures it, and the bs key on request contexts (ctx.bs, c.var.bs, locals.bs, context.bs) to bsb; renames imports: SqlModule to BlockSql, ModuleDefinition to BlockSqlDefinition and the other Module* SQL types to BlockSql*, SubjectRef to RecordRef, entityForm to recordForm, ShipmentCarrier to ShippingProvider, QueueBackend to QueueProvider; rewrites CLI calls in package.json scripts and GitHub workflows to the 0.15 commands (apply and adopt to add, sql sync and sql upgrade to upgrade, introspect to gen --save-snapshot, seed to db seed, env, run, keys and stack to dev); renames the blocks 0.15 renamed (work-items to tasks, parties to contacts, engagements to activities, access to permissions, rules to automations, jobs to queue, activity to timeline and the rest of the 0.14 to 0.15 guide's table) in the config's blocks and preset.blocks, in operation names under auth.authorization.operations, in better-supabase/blocks/<name> imports and in the exports named after them; turns a 0.14 preset code in the config's preset into the preset name or object it holds, and a 0.14 design file into a design with its preset inside; moves the plugins key into blocks (timestamps to updated-at, actor to created-by, softDelete to trash, with their columns as the block's options; tenant to auth.organization.column when memberships is not installed) and the better-supabase/plugins/* imports to the block extensions, better-supabase/lint guards and validation from better-supabase; moves repository calls to the data contract (findMany to list, paginate to page, findById, findUnique and findOnly to get, findFirst to list with limit: 1, exists to count, createMany and upsertMany to create and upsert with an array, updateMany and deleteMany to update and delete with a { where } filter); renames generateFeatures to gen.recordTypes, the record section exports to record bindings (defineSection to defineRecordBinding, commentsSection to commentsBinding, loadSections to loadBindings and the rest) and lists record feature imports, recordServer and sectionAction calls for the move to bsb.record; cache tags, query keys and the debug header and route that start with bs are listed for review",
1802
+ bindings: {
1803
+ bs: "bsb",
1804
+ SqlModule: "BlockSql",
1805
+ ModuleDefinition: "BlockSqlDefinition",
1806
+ ...prefixed("Module", "BlockSql", BLOCK_SQL_TYPES),
1807
+ ...prefixed("EntityForm", "RecordForm", ENTITY_FORM_TYPES),
1808
+ renderModules: "renderBlocks",
1809
+ resolveModules: "resolveBlocks",
1810
+ resolveModule: "resolveBlock",
1811
+ isModuleIdType: "isBlockSqlIdType",
1812
+ sameModuleFile: "sameBlockFile",
1813
+ InstalledModule: "InstalledBlock",
1814
+ SkippedModule: "SkippedBlock",
1815
+ SubjectRef: "RecordRef",
1816
+ entityForm: "recordForm",
1817
+ useEntityForm: "useRecordForm",
1818
+ UseEntityFormOptions: "UseRecordFormOptions",
1819
+ ShipmentCarrier: "ShippingProvider",
1820
+ testShipmentCarrier: "testShippingProvider",
1821
+ TestShipmentCarrierOptions: "TestShippingProviderOptions",
1822
+ QueueBackend: "QueueProvider",
1823
+ sqlQueueBackend: "sqlQueueProvider",
1824
+ testQueueBackend: "testQueueProvider",
1825
+ transportQueueBackend: "transportQueueProvider",
1826
+ vercelQueueBackend: "vercelQueueProvider",
1827
+ TestQueueBackendOptions: "TestQueueProviderOptions",
1828
+ TransportQueueBackendOptions: "TransportQueueProviderOptions",
1829
+ VercelQueueBackendOptions: "VercelQueueProviderOptions",
1830
+ ...RECORD_BINDING_RENAMES
1831
+ },
1832
+ imports: BLOCK_EXPORT_RENAMES,
1833
+ subpathImports: PLUGIN_IMPORT_RENAMES,
1834
+ subpaths: SUBPATH_RENAMES_0_15,
1835
+ members: [{
1836
+ from: "bs",
1837
+ to: "bsb"
1838
+ }],
1839
+ options: DATA_CONTRACT_OPTIONS,
1840
+ strings: {
1841
+ ...DATA_CONTRACT_STRINGS,
1842
+ "bs-block": "bsb"
1843
+ },
1844
+ configFile: (source, json) => [
1845
+ withoutPlugins,
1846
+ withBlockNames,
1847
+ withSubjectsOn,
1848
+ thenConvertPresetCode,
1849
+ withoutAdoptOwnership
1850
+ ].reduce((edit, step) => step(edit, json), json ? groupConfigJson(source) : groupConfigSource(source)),
1851
+ designFile: convertDesignFile,
1852
+ cliCalls: migrateCliCall,
1853
+ source: rewrite015,
1854
+ review: REVIEW_0_15
1855
+ }
1856
+ };
1857
+ const SUPABASE_IMPORT = /\bfrom\s*["'](?:better-supabase(?:\/[\w./-]*)?|[^"']*supabase[^"']*)["']/;
1858
+ /**
1859
+ * Renames bindings a file declares, destructures or imports, in files that
1860
+ * import from `better-supabase` or a `supabase` module.
1861
+ */
1862
+ function renameBindings(text, bindings) {
1863
+ const ranges = codeRanges(text);
1864
+ if (codeMatches(text, new RegExp(SUPABASE_IMPORT, "g"), ranges).length === 0) return text;
1865
+ return renameIdentifiers(text, new Map(Object.entries(bindings).filter(([from]) => {
1866
+ const name = escapeRegExp(from);
1867
+ return codeMatches(text, new RegExp(`\\b(?:const|let|var|function)\\s+${name}(?![\\w$])|[{,]\\s*(?:type\\s+)?${name}\\s*(?:[,}]|as\\b)|\\(\\s*${name}\\s*[:,)]`, "g"), ranges).length > 0;
1868
+ })));
1869
+ }
1870
+ function applyEdits(text, edits) {
1871
+ let out = "";
1872
+ let cursor = 0;
1873
+ for (const edit of edits.toSorted((a, b) => a.start - b.start)) {
1874
+ if (edit.start < cursor) continue;
1875
+ out += text.slice(cursor, edit.start) + edit.text;
1876
+ cursor = edit.end;
1877
+ }
1878
+ return out + text.slice(cursor);
1879
+ }
1880
+ const escapeRegExp = (value) => value.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&");
1881
+ function inCode(ranges, index) {
1882
+ let low = 0;
1883
+ let high = ranges.length - 1;
1884
+ while (low <= high) {
1885
+ const middle = Math.floor((low + high) / 2);
1886
+ const [start, end] = ranges[middle];
1887
+ if (index < start) high = middle - 1;
1888
+ else if (index >= end) low = middle + 1;
1889
+ else return true;
1890
+ }
1891
+ return false;
1892
+ }
1893
+ const OPENING = "({[";
1894
+ const CLOSING = ")}]";
1895
+ /** Matches of `pattern` that start in code. */
1896
+ function codeMatches(text, pattern, ranges) {
1897
+ return [...text.matchAll(pattern)].filter((match) => inCode(ranges, match.index));
1898
+ }
1899
+ const IMPORT = /\b(import|export)\s+(type\s+)?\{([^}]*)\}\s*from\s*(["'])better-supabase(?:\/([\w./-]*))?\4/g;
1900
+ /** Renames imported names, from every subpath or only from `subpath`. */
1901
+ function renameImports(text, renames, subpath) {
1902
+ const ranges = codeRanges(text);
1903
+ const locals = /* @__PURE__ */ new Set();
1904
+ const edits = [];
1905
+ for (const match of codeMatches(text, IMPORT, ranges)) {
1906
+ if (subpath !== void 0 && match[5] !== subpath) continue;
1907
+ const list = match[3];
1908
+ const listStart = match.index + match[0].indexOf("{") + 1;
1909
+ const renamed = list.replaceAll(/(\btype\s+)?([\w$]+)(\s+as\s+[\w$]+)?/g, (spec, type, name, alias) => {
1910
+ const to = renames[name];
1911
+ if (to === void 0) return spec;
1912
+ if (alias === void 0 && match[1] === "import") locals.add(name);
1913
+ return `${type ?? ""}${to}${alias ?? ""}`;
1914
+ });
1915
+ if (renamed !== list) edits.push({
1916
+ start: listStart,
1917
+ end: listStart + list.length,
1918
+ text: renamed
1919
+ });
1920
+ }
1921
+ return {
1922
+ text: applyEdits(text, edits),
1923
+ locals
1924
+ };
1925
+ }
1926
+ function renameIdentifiers(text, renames) {
1927
+ if (renames.size === 0) return text;
1928
+ const ranges = codeRanges(text);
1929
+ const names = [...renames.keys()].map(escapeRegExp).join("|");
1930
+ return applyEdits(text, codeMatches(text, new RegExp(`(?<![\\w$.])(?:${names})(?![\\w$])`, "g"), ranges).map((match) => ({
1931
+ start: match.index,
1932
+ end: match.index + match[0].length,
1933
+ text: renames.get(match[0])
1934
+ })));
1935
+ }
1936
+ function renameStrings(text, strings) {
1937
+ const names = Object.keys(strings).map(escapeRegExp).join("|");
1938
+ if (names === "") return text;
1939
+ const ranges = codeRanges(text);
1940
+ const pattern = new RegExp(`(["'\`])(${names})\\1`, "g");
1941
+ return applyEdits(text, [...text.matchAll(pattern)].filter((match) => !inCode(ranges, match.index + 1)).map((match) => ({
1942
+ start: match.index + 1,
1943
+ end: match.index + 1 + match[2].length,
1944
+ text: strings[match[2]]
1945
+ })));
1946
+ }
1947
+ function renameMembers(text, members) {
1948
+ const ranges = codeRanges(text);
1949
+ return applyEdits(text, members.flatMap((member) => codeMatches(text, new RegExp(`\\.${escapeRegExp(member.from)}(?![\\w$])${member.notCalled === true ? "(?!\\s*\\()" : ""}`, "g"), ranges).map((match) => ({
1950
+ start: match.index,
1951
+ end: match.index + match[0].length,
1952
+ text: `.${member.to}`
1953
+ }))));
1954
+ }
1955
+ function renameProps(text, props) {
1956
+ const ranges = codeRanges(text);
1957
+ const edits = [];
1958
+ for (const prop of props) {
1959
+ const tag = new RegExp(`<${escapeRegExp(prop.component)}(?![\\w$.])`, "g");
1960
+ for (const match of codeMatches(text, tag, ranges)) {
1961
+ let depth = 0;
1962
+ for (let index = match.index + match[0].length; index < text.length; index += 1) {
1963
+ if (!inCode(ranges, index)) continue;
1964
+ const char = text[index];
1965
+ if (char === "{") depth += 1;
1966
+ else if (char === "}") depth -= 1;
1967
+ else if (char === ">" && depth === 0) break;
1968
+ if (depth === 0 && /\s/.test(text[index - 1] ?? "") && text.startsWith(`${prop.from}=`, index)) edits.push({
1969
+ start: index,
1970
+ end: index + prop.from.length,
1971
+ text: prop.to
1972
+ });
1973
+ }
1974
+ }
1975
+ }
1976
+ return applyEdits(text, edits);
1977
+ }
1978
+ /** The index after the bracket that closes the one at `open`, in code only. */
1979
+ function closing(text, open, ranges) {
1980
+ let depth = 0;
1981
+ for (let index = open; index < text.length; index += 1) {
1982
+ if (!inCode(ranges, index)) continue;
1983
+ const char = text[index];
1984
+ if (OPENING.includes(char)) depth += 1;
1985
+ else if (CLOSING.includes(char)) {
1986
+ depth -= 1;
1987
+ if (depth === 0) return index + 1;
1988
+ }
1989
+ }
1990
+ return text.length;
1991
+ }
1992
+ /**
1993
+ * Calls `visit(index, depth)` for each code character from `open` to its
1994
+ * closing bracket.
1995
+ */
1996
+ function walkBrackets(text, open, ranges, visit) {
1997
+ const end = closing(text, open, ranges);
1998
+ let depth = 0;
1999
+ for (let index = open; index < end; index += 1) {
2000
+ if (!inCode(ranges, index)) continue;
2001
+ const char = text[index];
2002
+ if (OPENING.includes(char)) depth += 1;
2003
+ else if (CLOSING.includes(char)) depth -= 1;
2004
+ visit(index, depth, char);
2005
+ }
2006
+ }
2007
+ /** Where `key` is a top-level key of the object literal at `open`. */
2008
+ function topLevelKeys(text, open, key, ranges) {
2009
+ const keys = [];
2010
+ let previous = "";
2011
+ walkBrackets(text, open, ranges, (index, depth, char) => {
2012
+ if (depth === 1 && (previous === "{" || previous === ",") && text.startsWith(key, index) && !/[\w$]/.test(text[index + key.length] ?? "")) {
2013
+ const after = /^\s*(\S)/.exec(text.slice(index + key.length))?.[1];
2014
+ if (after === ":") keys.push({
2015
+ index,
2016
+ shorthand: false
2017
+ });
2018
+ else if (after === "," || after === "}") keys.push({
2019
+ index,
2020
+ shorthand: true
2021
+ });
2022
+ }
2023
+ if (depth === 1 && !/\s/.test(char)) previous = char;
2024
+ });
2025
+ return keys;
2026
+ }
2027
+ function renameOptions(text, options) {
2028
+ const ranges = codeRanges(text);
2029
+ const edits = [];
2030
+ for (const option of options) {
2031
+ const call = new RegExp(`(?<![\\w$.])${escapeRegExp(option.call)}\\s*(?:<[^>]*>)?\\s*\\(`, "g");
2032
+ for (const match of codeMatches(text, call, ranges)) {
2033
+ const objects = [];
2034
+ walkBrackets(text, match.index + match[0].length - 1, ranges, (index, depth, char) => {
2035
+ if (depth === 2 && char === "{") objects.push(index);
2036
+ });
2037
+ for (const object of objects) for (const { index, shorthand } of topLevelKeys(text, object, option.from, ranges)) edits.push({
2038
+ start: index,
2039
+ end: index + option.from.length,
2040
+ text: shorthand ? `${option.to}: ${option.from}` : option.to
2041
+ });
2042
+ }
2043
+ }
2044
+ return applyEdits(text, edits);
2045
+ }
2046
+ /** The arguments of the call whose `(` is at `open`: start and end of each. */
2047
+ function callArguments(text, open, ranges) {
2048
+ const args = [];
2049
+ let start = open + 1;
2050
+ const end = closing(text, open, ranges) - 1;
2051
+ walkBrackets(text, open, ranges, (index, depth, char) => {
2052
+ if (depth === 1 && char === ",") {
2053
+ args.push({
2054
+ start,
2055
+ end: index
2056
+ });
2057
+ start = index + 1;
2058
+ }
2059
+ });
2060
+ if (text.slice(start, end).trim() !== "") args.push({
2061
+ start,
2062
+ end
2063
+ });
2064
+ return args;
2065
+ }
2066
+ /**
2067
+ * Calls of `pin.call` whose options object lacks `pin.key`, with the insertion
2068
+ * when one is safe.
2069
+ */
2070
+ function pinTargets(text, pin) {
2071
+ const ranges = codeRanges(text);
2072
+ const call = new RegExp(`(?<![\\w$.])${escapeRegExp(pin.call)}\\s*(?:<[^>]*>)?\\s*\\(`, "g");
2073
+ const targets = [];
2074
+ const entry = `${pin.key}: ${pin.value}`;
2075
+ for (const match of codeMatches(text, call, ranges)) {
2076
+ const open = match.index + match[0].length - 1;
2077
+ const args = callArguments(text, open, ranges);
2078
+ const arg = args[pin.argument];
2079
+ if (arg === void 0) {
2080
+ if (args.length !== pin.argument) {
2081
+ targets.push({
2082
+ call: match.index,
2083
+ edit: void 0
2084
+ });
2085
+ continue;
2086
+ }
2087
+ const last = args.at(-1);
2088
+ const at = last === void 0 ? open + 1 : last.end;
2089
+ const trailing = text[at] === ",";
2090
+ targets.push({
2091
+ call: match.index,
2092
+ edit: trailing ? {
2093
+ start: at + 1,
2094
+ end: at + 1,
2095
+ text: ` { ${entry} }`
2096
+ } : {
2097
+ start: at,
2098
+ end: at,
2099
+ text: `, { ${entry} }`
2100
+ }
2101
+ });
2102
+ continue;
2103
+ }
2104
+ const offset = text.slice(arg.start, arg.end).search(/\S/);
2105
+ const object = arg.start + offset;
2106
+ if (text[object] !== "{") {
2107
+ targets.push({
2108
+ call: match.index,
2109
+ edit: void 0
2110
+ });
2111
+ continue;
2112
+ }
2113
+ if ([pin.key, ...pin.unless ?? []].some((key) => topLevelKeys(text, object, key, ranges).length > 0)) continue;
2114
+ const spreads = [];
2115
+ walkBrackets(text, object, ranges, (index, depth) => {
2116
+ if (depth === 1 && text.startsWith("...", index)) spreads.push(index);
2117
+ });
2118
+ if (spreads.length > 0) {
2119
+ targets.push({
2120
+ call: match.index,
2121
+ edit: void 0
2122
+ });
2123
+ continue;
2124
+ }
2125
+ const body = text.slice(object + 1, closing(text, object, ranges) - 1);
2126
+ const first = /^[ \t]*\n([ \t]*)\S/.exec(body);
2127
+ targets.push({
2128
+ call: match.index,
2129
+ edit: body.trim() === "" ? {
2130
+ start: object,
2131
+ end: object + body.length + 2,
2132
+ text: `{ ${entry} }`
2133
+ } : first ? {
2134
+ start: object + 1,
2135
+ end: object + 1,
2136
+ text: `\n${first[1]}${entry},`
2137
+ } : {
2138
+ start: object + 1,
2139
+ end: object + 1,
2140
+ text: ` ${entry},`
2141
+ }
2142
+ });
2143
+ }
2144
+ return targets;
2145
+ }
2146
+ function pinOptions(text, pins) {
2147
+ let out = text;
2148
+ for (const pin of pins) if (pin.when.test(out)) out = applyEdits(out, pinTargets(out, pin).flatMap((target) => target.edit === void 0 ? [] : [target.edit]));
2149
+ const review = pins.flatMap((pin) => pinTargets(out, pin).map((target) => ({
2150
+ line: out.slice(0, target.call).split("\n").length,
2151
+ message: pin.message
2152
+ })));
2153
+ return {
2154
+ text: out,
2155
+ review
2156
+ };
2157
+ }
2158
+ /** Applies one codemod to a source file. */
2159
+ function applyCodemod(codemod, source, file) {
2160
+ if (file !== void 0 && (CLI_CALL_FILE.test(file) || SHELL_FILE.test(file))) {
2161
+ const hints = linesMatching(source, codemod.cliReview ?? []);
2162
+ if (!codemod.cliCalls) return {
2163
+ text: source,
2164
+ review: hints
2165
+ };
2166
+ return CLI_CALL_FILE.test(file) ? {
2167
+ text: rewriteCliCalls(source, codemod.cliCalls),
2168
+ review: hints
2169
+ } : {
2170
+ text: source,
2171
+ review: [...cliCallHints(source, codemod.cliCalls), ...hints]
2172
+ };
2173
+ }
2174
+ if (file !== void 0 && DESIGN_FILE_NAME.test(file)) return designFileResult(source, codemod.designFile);
2175
+ let text = source;
2176
+ const refused = [];
2177
+ if (codemod.configFile && file !== void 0 && CONFIG_FILE.test(file)) {
2178
+ const json = file.endsWith(".json");
2179
+ const edit = codemod.configFile(source, json);
2180
+ if (edit.ok) {
2181
+ text = edit.text;
2182
+ refused.push(..."review" in edit ? edit.review : []);
2183
+ } else refused.push({
2184
+ line: 1,
2185
+ message: `The config wasn't rewritten: ${edit.reason}`
2186
+ });
2187
+ if (json) return {
2188
+ text,
2189
+ review: refused
2190
+ };
2191
+ }
2192
+ for (const [subpath, renames] of Object.entries(codemod.subpathImports ?? {})) {
2193
+ const imported = renameImports(text, renames, subpath);
2194
+ text = renameIdentifiers(imported.text, new Map([...imported.locals].map((name) => [name, renames[name]])));
2195
+ }
2196
+ if (codemod.subpaths) text = renameSubpaths(text, codemod.subpaths);
2197
+ if (codemod.imports) {
2198
+ const imported = renameImports(text, codemod.imports);
2199
+ text = renameIdentifiers(imported.text, new Map([...imported.locals].map((name) => [name, codemod.imports[name]])));
2200
+ }
2201
+ if (codemod.bindings) text = renameBindings(text, codemod.bindings);
2202
+ if (codemod.members) text = renameMembers(text, codemod.members);
2203
+ if (codemod.props) text = renameProps(text, codemod.props);
2204
+ if (codemod.options) text = renameOptions(text, codemod.options);
2205
+ if (codemod.strings) text = renameStrings(text, codemod.strings);
2206
+ if (codemod.source) {
2207
+ const rewritten = codemod.source(text);
2208
+ text = rewritten.text;
2209
+ refused.push(...rewritten.review);
2210
+ }
2211
+ if (codemod.pins) {
2212
+ const pinned = pinOptions(text, codemod.pins);
2213
+ text = pinned.text;
2214
+ refused.push(...pinned.review);
2215
+ }
2216
+ return {
2217
+ text,
2218
+ review: [...refused, ...linesMatching(text, codemod.review ?? [])]
2219
+ };
2220
+ }
2221
+ /** One review line per line of `text` that a hint's pattern matches. */
2222
+ function linesMatching(text, hints) {
2223
+ return hints.flatMap((hint) => text.split("\n").flatMap((line, index) => hint.pattern.test(line) ? [{
2224
+ line: index + 1,
2225
+ message: hint.message
2226
+ }] : []));
2227
+ }
2228
+ //#endregion
2229
+ //#region src/cli/commands/codemod.ts
2230
+ const CODEMOD_ARGS = {
2231
+ path: {
2232
+ type: "positional",
2233
+ required: false,
2234
+ variadic: true,
2235
+ description: "Files or directories to rewrite (default: the project)"
2236
+ },
2237
+ "dry-run": {
2238
+ type: "boolean",
2239
+ description: "Show the changes without writing them"
2240
+ },
2241
+ check: {
2242
+ type: "boolean",
2243
+ description: "Write nothing; exit 1 with a diff when a file would change"
2244
+ }
2245
+ };
2246
+ const SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([
2247
+ ".ts",
2248
+ ".tsx",
2249
+ ".mts",
2250
+ ".cts",
2251
+ ".js",
2252
+ ".jsx",
2253
+ ".mjs",
2254
+ ".cjs"
2255
+ ]);
2256
+ const SKIPPED_DIRS = /* @__PURE__ */ new Set([
2257
+ "node_modules",
2258
+ ".git",
2259
+ ".next",
2260
+ ".turbo",
2261
+ ".vercel",
2262
+ "dist",
2263
+ "build",
2264
+ "coverage"
2265
+ ]);
2266
+ /**
2267
+ * Source, config and script files under `path`, skipping dependencies, build
2268
+ * output and `.d.ts` files.
2269
+ */
2270
+ async function sourceFiles(path) {
2271
+ const info = await stat(path).catch(() => void 0);
2272
+ if (!info) return [];
2273
+ if (info.isFile()) return [path];
2274
+ const files = [];
2275
+ for (const entry of await readdir(path, { withFileTypes: true })) {
2276
+ const full = join(path, entry.name);
2277
+ if (entry.isDirectory()) {
2278
+ if (!SKIPPED_DIRS.has(entry.name)) files.push(...await sourceFiles(full));
2279
+ } else if (SOURCE_EXTENSIONS.has(extname(entry.name)) && !entry.name.endsWith(".d.ts") || CONFIG_FILE.test(entry.name) || DESIGN_FILE_NAME.test(entry.name) || CLI_CALL_FILE.test(full) || SHELL_FILE.test(entry.name)) files.push(full);
2280
+ }
2281
+ return files.toSorted();
2282
+ }
2283
+ async function runCodemod(config, args, paint = plain) {
2284
+ const [name, ...paths] = args._ ?? [];
2285
+ const names = Object.entries(CODEMODS).map(([key, codemod]) => ` ${key.padEnd(5)} ${codemod.description}`).join("\n");
2286
+ if (name === void 0) throw new CliError("usage", `Name a codemod:\n${names}`);
2287
+ const codemod = CODEMODS[name];
2288
+ if (!codemod) throw new CliError("usage", `Unknown codemod "${name}". Codemods:\n${names}`);
2289
+ const roots = (paths.length > 0 ? paths : ["."]).map((path) => resolve(config.root, path));
2290
+ const files = [...new Set((await Promise.all(roots.map(sourceFiles))).flat())];
2291
+ const dryRun = args["dry-run"] === true;
2292
+ const edits = [];
2293
+ const review = [];
2294
+ for (const file of files) {
2295
+ const source = await readFile(file, "utf-8");
2296
+ const result = applyCodemod(codemod, source, file);
2297
+ const path = relative(config.root, file);
2298
+ review.push(...result.review.map((hint) => ({
2299
+ file: path,
2300
+ ...hint
2301
+ })));
2302
+ if (result.text !== source) edits.push({
2303
+ path: file,
2304
+ contents: result.text,
2305
+ policy: "edit"
2306
+ });
2307
+ }
2308
+ const plan = {
2309
+ root: config.root,
2310
+ regenerate: `better-supabase codemod ${codemod.name}`,
2311
+ files: edits
2312
+ };
2313
+ const applied = await applyPlan(plan, args, paint);
2314
+ const changed = changedFiles(applied);
2315
+ if (applied.mode === "check" && applied.drift) return planResult(plan, applied, { data: { codemod: codemod.name } });
2316
+ const lines = [...applied.mode === "write" ? [] : applied.diffs, changed.length === 0 ? `Nothing to change in ${String(files.length)} files.` : [...changeLines(applied), `${applied.mode === "write" ? "Updated" : "Would update"} ${String(changed.length)} of ${String(files.length)} files.`].join("\n")];
2317
+ if (review.length > 0) lines.push("", "Check these by hand:", ...review.map((hint) => ` ${hint.file}:${String(hint.line)}: ${hint.message}`));
2318
+ return {
2319
+ code: 0,
2320
+ output: lines.join("\n"),
2321
+ data: {
2322
+ codemod: codemod.name,
2323
+ dryRun,
2324
+ changed,
2325
+ files: applied.changes,
2326
+ review
2327
+ }
2328
+ };
2329
+ }
2330
+ /** The `codemod <name>` subcommand for one codemod in `CODEMODS`. */
2331
+ function codemodCommand(name) {
2332
+ return defineCliCommand({
2333
+ meta: commandMeta(`codemod ${name}`),
2334
+ args: CODEMOD_ARGS,
2335
+ runsWithInvalidConfig: true,
2336
+ run: (args, { config, paint }) => runCodemod(config, {
2337
+ ...args,
2338
+ _: [name, ...args._]
2339
+ }, paint)
2340
+ });
2341
+ }
2342
+ //#endregion
2343
+ export { codemodCommand };