better-supabase 0.14.0 → 0.15.1

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 (1643) hide show
  1. package/README.md +67 -377
  2. package/dist/access-sql-B-MkVARa.js +207 -0
  3. package/dist/actor-go7p9-CJ.js +150 -0
  4. package/dist/adapter-Dyks1lX1.js +2299 -0
  5. package/dist/agents-CMIB3802.d.ts +117 -0
  6. package/dist/ai-cache-2LGgaT7F.d.ts +82 -0
  7. package/dist/ai-cache-Cu8j6aQQ.js +87 -0
  8. package/dist/ai-chat-BCaKsvLW.d.ts +619 -0
  9. package/dist/ai-files-CgFCRsnU.js +339 -0
  10. package/dist/ai-schedules-D_Hz-ik5.d.ts +166 -0
  11. package/dist/ai-sdk/agents/index.d.ts +6 -6
  12. package/dist/ai-sdk/agents/index.js +2 -2
  13. package/dist/ai-sdk/batches/index.d.ts +5 -5
  14. package/dist/ai-sdk/batches/index.js +4 -4
  15. package/dist/ai-sdk/cache/index.d.ts +3 -3
  16. package/dist/ai-sdk/cache/index.js +2 -2
  17. package/dist/ai-sdk/chat/index.d.ts +1 -1
  18. package/dist/ai-sdk/chat/index.js +5 -5
  19. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  20. package/dist/ai-sdk/files/index.d.ts +2 -2
  21. package/dist/ai-sdk/files/index.js +5 -5
  22. package/dist/ai-sdk/index.d.ts +10 -10
  23. package/dist/ai-sdk/index.js +3 -3
  24. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  25. package/dist/ai-sdk/mcp/index.js +6 -6
  26. package/dist/ai-sdk/memory/index.d.ts +3 -3
  27. package/dist/ai-sdk/memory/index.js +1 -1
  28. package/dist/ai-sdk/workflow/index.d.ts +4 -4
  29. package/dist/ai-sdk/workflow/index.js +7 -7
  30. package/dist/api-DxAPqMrE.d.ts +495 -0
  31. package/dist/api-keys-D5k63K6y.d.ts +213 -0
  32. package/dist/app-tables-CbCFSXLG.d.ts +28 -0
  33. package/dist/app-tables-D29Rahtg.js +16350 -0
  34. package/dist/approvals-Dh9dUXrN.d.ts +129 -0
  35. package/dist/assistant-ndGdOBax.d.ts +157 -0
  36. package/dist/astro/index.d.ts +12 -12
  37. package/dist/astro/index.js +8 -8
  38. package/dist/attachments-aJYgdYtB.js +369 -0
  39. package/dist/attributes-Bzf51_nc.js +47 -0
  40. package/dist/auth-reply-tlXB2FQ9.js +31 -0
  41. package/dist/authorization-HZdJCaVm.d.ts +3595 -0
  42. package/dist/authorization-hooks-D_pwXlBs.d.ts +221 -0
  43. package/dist/authorizer-B6X09otb.d.ts +118 -0
  44. package/dist/authorizer-BGhXaDmo.js +172 -0
  45. package/dist/automation-D41DXyvT.js +75 -0
  46. package/dist/automations-BYsz43AG.js +314 -0
  47. package/dist/automations-Bc2ue55V.js +26 -0
  48. package/dist/automations-CD1XlL2W.js +33 -0
  49. package/dist/automations-CIwRq7zm.js +30 -0
  50. package/dist/availability-vguUvEK2.d.ts +226 -0
  51. package/dist/better-result/index.d.ts +20 -30
  52. package/dist/better-result/index.js +2 -2
  53. package/dist/bind-h5jre2K0.d.ts +104 -0
  54. package/dist/block-authors-BDV3y1SP.js +14 -0
  55. package/dist/block-env-BrfRvPrj.d.ts +32 -0
  56. package/dist/block-fields-BE7pInWZ.d.ts +58 -0
  57. package/dist/block-fields-DE_FgpOU.js +139 -0
  58. package/dist/block-helpers-CRpAHrp_.d.ts +62 -0
  59. package/dist/block-helpers-CtBdjgO4.js +353 -0
  60. package/dist/block-hooks-BfxX3682.js +130 -0
  61. package/dist/block-hooks-DZN2w69m.d.ts +117 -0
  62. package/dist/block-method-C9hWdHom.js +21 -0
  63. package/dist/block-method-CiVa2G-J.d.ts +14 -0
  64. package/dist/block-subjects-BhDKK_j7.js +55 -0
  65. package/dist/block-subjects-CphkQPxp.d.ts +6 -0
  66. package/dist/block-tenant-DHp7subc.js +14 -0
  67. package/dist/block-transport-DWZSJrwN.d.ts +69 -0
  68. package/dist/blocks/access-requests/index.d.ts +8 -8
  69. package/dist/blocks/access-requests/index.js +6 -6
  70. package/dist/blocks/activities/index.d.ts +215 -0
  71. package/dist/blocks/activities/index.js +414 -0
  72. package/dist/blocks/agents/index.d.ts +4 -4
  73. package/dist/blocks/agents/index.js +5 -5
  74. package/dist/blocks/ai-cache/index.d.ts +3 -3
  75. package/dist/blocks/ai-cache/index.js +3 -3
  76. package/dist/blocks/ai-chat/index.d.ts +119 -6
  77. package/dist/blocks/ai-chat/index.js +1067 -5
  78. package/dist/blocks/ai-files/index.d.ts +5 -5
  79. package/dist/blocks/ai-files/index.js +3 -3
  80. package/dist/blocks/ai-keys/index.d.ts +22 -0
  81. package/dist/blocks/ai-keys/index.js +236 -0
  82. package/dist/blocks/ai-schedules/index.d.ts +10 -0
  83. package/dist/blocks/ai-schedules/index.js +258 -0
  84. package/dist/blocks/announcements/index.d.ts +134 -5
  85. package/dist/blocks/announcements/index.js +179 -4
  86. package/dist/blocks/api-keys/index.d.ts +69 -8
  87. package/dist/blocks/api-keys/index.js +417 -7
  88. package/dist/blocks/approvals/index.d.ts +4 -4
  89. package/dist/blocks/approvals/index.js +10 -10
  90. package/dist/blocks/assets/index.d.ts +11 -13
  91. package/dist/blocks/assets/index.js +10 -10
  92. package/dist/blocks/assignment/index.d.ts +8 -8
  93. package/dist/blocks/assignment/index.js +5 -5
  94. package/dist/blocks/attachments/index.d.ts +97 -12
  95. package/dist/blocks/attachments/index.js +279 -47
  96. package/dist/blocks/audit/index.d.ts +476 -7
  97. package/dist/blocks/audit/index.js +863 -6
  98. package/dist/blocks/automations/index.d.ts +524 -0
  99. package/dist/blocks/automations/index.js +553 -0
  100. package/dist/blocks/billable-time/index.d.ts +22 -24
  101. package/dist/blocks/billable-time/index.js +13 -13
  102. package/dist/blocks/billing/index.d.ts +82 -11
  103. package/dist/blocks/billing/index.js +93 -9
  104. package/dist/blocks/bookings/index.d.ts +49 -7
  105. package/dist/blocks/bookings/index.js +419 -4
  106. package/dist/blocks/bulk/index.d.ts +6 -6
  107. package/dist/blocks/bulk/index.js +4 -4
  108. package/dist/blocks/calendar/index.d.ts +180 -7
  109. package/dist/blocks/calendar/index.js +1073 -5
  110. package/dist/blocks/catalog/index.d.ts +128 -13
  111. package/dist/blocks/catalog/index.js +149 -13
  112. package/dist/blocks/channels/index.d.ts +15 -13
  113. package/dist/blocks/channels/index.js +12 -13
  114. package/dist/blocks/collections/index.d.ts +16 -16
  115. package/dist/blocks/collections/index.js +8 -8
  116. package/dist/blocks/comments/index.d.ts +231 -14
  117. package/dist/blocks/comments/index.js +260 -13
  118. package/dist/blocks/compliance/index.d.ts +325 -0
  119. package/dist/blocks/compliance/index.js +410 -0
  120. package/dist/blocks/connectors/index.d.ts +4 -4
  121. package/dist/blocks/connectors/index.js +8 -8
  122. package/dist/blocks/contacts/index.d.ts +182 -0
  123. package/dist/blocks/contacts/index.js +358 -0
  124. package/dist/blocks/content/index.d.ts +188 -0
  125. package/dist/blocks/content/index.js +219 -0
  126. package/dist/blocks/contracts/index.d.ts +16 -18
  127. package/dist/blocks/contracts/index.js +24 -24
  128. package/dist/blocks/courses/index.d.ts +17 -17
  129. package/dist/blocks/courses/index.js +13 -13
  130. package/dist/blocks/created-by/index.d.ts +27 -0
  131. package/dist/blocks/created-by/index.js +14 -0
  132. package/dist/blocks/custom-fields/index.d.ts +11 -11
  133. package/dist/blocks/custom-fields/index.js +7 -7
  134. package/dist/blocks/data-lifecycle/index.d.ts +9 -9
  135. package/dist/blocks/data-lifecycle/index.js +7 -7
  136. package/dist/blocks/deals/index.d.ts +10 -10
  137. package/dist/blocks/deals/index.js +11 -11
  138. package/dist/blocks/dispatch/index.d.ts +20 -22
  139. package/dist/blocks/dispatch/index.js +17 -17
  140. package/dist/blocks/documents/index.d.ts +4 -4
  141. package/dist/blocks/documents/index.js +4 -4
  142. package/dist/blocks/domains/index.d.ts +7 -7
  143. package/dist/blocks/domains/index.js +6 -6
  144. package/dist/blocks/donations/index.d.ts +27 -29
  145. package/dist/blocks/donations/index.js +36 -28
  146. package/dist/blocks/drive/index.d.ts +10 -10
  147. package/dist/blocks/drive/index.js +8 -8
  148. package/dist/blocks/employees/index.d.ts +204 -7
  149. package/dist/blocks/employees/index.js +36 -10
  150. package/dist/blocks/enrichment/index.d.ts +7 -7
  151. package/dist/blocks/enrichment/index.js +14 -6
  152. package/dist/blocks/enrollments/index.d.ts +14 -16
  153. package/dist/blocks/enrollments/index.js +10 -10
  154. package/dist/blocks/entitlements/index.d.ts +48 -8
  155. package/dist/blocks/entitlements/index.js +62 -4
  156. package/dist/blocks/expenses/index.d.ts +8 -8
  157. package/dist/blocks/expenses/index.js +11 -11
  158. package/dist/blocks/field-history/index.d.ts +5 -5
  159. package/dist/blocks/field-history/index.js +3 -5
  160. package/dist/blocks/flags/index.d.ts +17 -13
  161. package/dist/blocks/flags/index.js +7 -7
  162. package/dist/blocks/forecasts/index.d.ts +7 -7
  163. package/dist/blocks/forecasts/index.js +7 -7
  164. package/dist/blocks/forms/index.d.ts +144 -12
  165. package/dist/blocks/forms/index.js +385 -7
  166. package/dist/blocks/goals/index.d.ts +82 -0
  167. package/dist/blocks/goals/index.js +72 -0
  168. package/dist/blocks/guests/index.d.ts +19 -21
  169. package/dist/blocks/guests/index.js +12 -12
  170. package/dist/blocks/hiring/index.d.ts +20 -10
  171. package/dist/blocks/hiring/index.js +10 -9
  172. package/dist/blocks/identities/index.d.ts +7 -7
  173. package/dist/blocks/identities/index.js +4 -4
  174. package/dist/blocks/imports/index.d.ts +8 -8
  175. package/dist/blocks/imports/index.js +6 -6
  176. package/dist/blocks/inbox/index.d.ts +137 -8
  177. package/dist/blocks/inbox/index.js +290 -56
  178. package/dist/blocks/incidents/index.d.ts +8 -8
  179. package/dist/blocks/incidents/index.js +7 -7
  180. package/dist/blocks/index.d.ts +37 -18
  181. package/dist/blocks/index.js +40 -19
  182. package/dist/blocks/inventory/index.d.ts +10 -10
  183. package/dist/blocks/inventory/index.js +6 -6
  184. package/dist/blocks/invoices/index.d.ts +11 -11
  185. package/dist/blocks/invoices/index.js +8 -8
  186. package/dist/blocks/knowledge/index.d.ts +3 -3
  187. package/dist/blocks/knowledge/index.js +4 -4
  188. package/dist/blocks/lead-scoring/index.d.ts +11 -11
  189. package/dist/blocks/lead-scoring/index.js +7 -7
  190. package/dist/blocks/leases/index.d.ts +16 -73
  191. package/dist/blocks/leases/index.js +29 -104
  192. package/dist/blocks/leave/index.d.ts +8 -8
  193. package/dist/blocks/leave/index.js +5 -5
  194. package/dist/blocks/ledger/index.d.ts +11 -13
  195. package/dist/blocks/ledger/index.js +10 -10
  196. package/dist/blocks/mail-sync/index.d.ts +6 -6
  197. package/dist/blocks/mail-sync/index.js +18 -10
  198. package/dist/blocks/memberships/index.d.ts +67 -0
  199. package/dist/blocks/memberships/index.js +14 -0
  200. package/dist/blocks/memory/index.d.ts +4 -4
  201. package/dist/blocks/memory/index.js +8 -8
  202. package/dist/blocks/messaging/index.d.ts +113 -13
  203. package/dist/blocks/messaging/index.js +579 -8
  204. package/dist/blocks/metrics/index.d.ts +7 -7
  205. package/dist/blocks/metrics/index.js +6 -6
  206. package/dist/blocks/mfa/index.d.ts +145 -3
  207. package/dist/blocks/mfa/index.js +211 -2
  208. package/dist/blocks/moderation/index.d.ts +13 -15
  209. package/dist/blocks/moderation/index.js +10 -10
  210. package/dist/blocks/notifications/index.d.ts +67 -15
  211. package/dist/blocks/notifications/index.js +62 -13
  212. package/dist/blocks/numbering/index.d.ts +45 -0
  213. package/dist/blocks/numbering/index.js +49 -0
  214. package/dist/blocks/oauth-server/index.d.ts +6 -6
  215. package/dist/blocks/oauth-server/index.js +6 -6
  216. package/dist/blocks/onboarding/index.d.ts +112 -4
  217. package/dist/blocks/onboarding/index.js +107 -4
  218. package/dist/blocks/orders/index.d.ts +35 -14
  219. package/dist/blocks/orders/index.js +49 -12
  220. package/dist/blocks/organizations/index.d.ts +452 -6
  221. package/dist/blocks/organizations/index.js +689 -5
  222. package/dist/blocks/outbox/index.d.ts +4 -4
  223. package/dist/blocks/outbox/index.js +19 -6
  224. package/dist/blocks/passes/index.d.ts +19 -21
  225. package/dist/blocks/passes/index.js +17 -17
  226. package/dist/blocks/permissions/index.d.ts +92 -0
  227. package/dist/blocks/permissions/index.js +127 -0
  228. package/dist/blocks/pipelines/index.d.ts +15 -15
  229. package/dist/blocks/pipelines/index.js +12 -12
  230. package/dist/blocks/posts/index.d.ts +9 -9
  231. package/dist/blocks/posts/index.js +8 -8
  232. package/dist/blocks/profiles/index.d.ts +7 -7
  233. package/dist/blocks/profiles/index.js +5 -5
  234. package/dist/blocks/promotions/index.d.ts +9 -9
  235. package/dist/blocks/promotions/index.js +7 -7
  236. package/dist/blocks/push/index.d.ts +9 -9
  237. package/dist/blocks/push/index.js +4 -4
  238. package/dist/blocks/queue/index.d.ts +562 -0
  239. package/dist/blocks/queue/index.js +1407 -0
  240. package/dist/blocks/quotes/index.d.ts +29 -14
  241. package/dist/blocks/quotes/index.js +14 -13
  242. package/dist/blocks/rank/index.d.ts +7 -7
  243. package/dist/blocks/rank/index.js +4 -4
  244. package/dist/blocks/reactions/index.d.ts +154 -5
  245. package/dist/blocks/reactions/index.js +168 -4
  246. package/dist/blocks/relations/index.d.ts +36 -38
  247. package/dist/blocks/relations/index.js +18 -18
  248. package/dist/blocks/reminders/index.d.ts +16 -16
  249. package/dist/blocks/reminders/index.js +14 -14
  250. package/dist/blocks/reviews/index.d.ts +8 -8
  251. package/dist/blocks/reviews/index.js +6 -6
  252. package/dist/blocks/saved-views/index.d.ts +311 -4
  253. package/dist/blocks/saved-views/index.js +437 -2
  254. package/dist/blocks/scores/index.d.ts +8 -10
  255. package/dist/blocks/scores/index.js +10 -10
  256. package/dist/blocks/search/index.d.ts +168 -5
  257. package/dist/blocks/search/index.js +277 -5
  258. package/dist/blocks/security-events/index.d.ts +440 -0
  259. package/dist/blocks/security-events/index.js +885 -0
  260. package/dist/blocks/segments/index.d.ts +13 -13
  261. package/dist/blocks/segments/index.js +7 -7
  262. package/dist/blocks/sequences/index.d.ts +13 -13
  263. package/dist/blocks/sequences/index.js +16 -10
  264. package/dist/blocks/service-accounts/index.d.ts +132 -0
  265. package/dist/blocks/service-accounts/index.js +109 -0
  266. package/dist/blocks/sessions/index.d.ts +138 -3
  267. package/dist/blocks/sessions/index.js +173 -2
  268. package/dist/blocks/settings/index.d.ts +181 -5
  269. package/dist/blocks/settings/index.js +226 -4
  270. package/dist/blocks/share-links/index.d.ts +20 -22
  271. package/dist/blocks/share-links/index.js +16 -16
  272. package/dist/blocks/shipments/index.d.ts +23 -25
  273. package/dist/blocks/shipments/index.js +30 -22
  274. package/dist/blocks/signatures/index.d.ts +9 -9
  275. package/dist/blocks/signatures/index.js +5 -5
  276. package/dist/blocks/signing-keys/index.d.ts +4 -4
  277. package/dist/blocks/signing-keys/index.js +3 -3
  278. package/dist/blocks/sla/index.d.ts +20 -22
  279. package/dist/blocks/sla/index.js +22 -16
  280. package/dist/blocks/sso/index.d.ts +7 -7
  281. package/dist/blocks/sso/index.js +4 -4
  282. package/dist/blocks/state-machine/index.d.ts +14 -14
  283. package/dist/blocks/state-machine/index.js +4 -4
  284. package/dist/blocks/subjects/index.d.ts +41 -7
  285. package/dist/blocks/subjects/index.js +187 -5
  286. package/dist/blocks/tags/index.d.ts +146 -13
  287. package/dist/blocks/tags/index.js +229 -14
  288. package/dist/blocks/tasks/index.d.ts +346 -0
  289. package/dist/blocks/tasks/index.js +626 -0
  290. package/dist/blocks/teams/index.d.ts +7 -7
  291. package/dist/blocks/teams/index.js +4 -4
  292. package/dist/blocks/templates/index.d.ts +18 -18
  293. package/dist/blocks/templates/index.js +10 -10
  294. package/dist/blocks/time-tracking/index.d.ts +16 -16
  295. package/dist/blocks/time-tracking/index.js +13 -13
  296. package/dist/blocks/timeline/index.d.ts +116 -0
  297. package/dist/blocks/timeline/index.js +164 -0
  298. package/dist/blocks/trash/index.d.ts +47 -9
  299. package/dist/blocks/trash/index.js +9 -7
  300. package/dist/blocks/undo/index.d.ts +48 -5
  301. package/dist/blocks/undo/index.js +60 -4
  302. package/dist/blocks/updated-at/index.d.ts +20 -0
  303. package/dist/blocks/updated-at/index.js +14 -0
  304. package/dist/blocks/usage/index.d.ts +39 -5
  305. package/dist/blocks/usage/index.js +301 -4
  306. package/dist/blocks/vercel-marketplace/index.d.ts +7 -7
  307. package/dist/blocks/vercel-marketplace/index.js +8 -8
  308. package/dist/blocks/versions/index.d.ts +20 -22
  309. package/dist/blocks/versions/index.js +16 -16
  310. package/dist/blocks/waitlist/index.d.ts +9 -9
  311. package/dist/blocks/waitlist/index.js +5 -5
  312. package/dist/blocks/webhooks/index.d.ts +21 -21
  313. package/dist/blocks/webhooks/index.js +16 -16
  314. package/dist/blocks/workflow-editor/index.d.ts +99 -0
  315. package/dist/blocks/workflow-editor/index.js +744 -0
  316. package/dist/blocks/workflows/index.d.ts +72 -6
  317. package/dist/blocks/workflows/index.js +379 -4
  318. package/dist/bookings-Dox2rced.d.ts +290 -0
  319. package/dist/bucket-CiNi8sIw.d.ts +666 -0
  320. package/dist/build-BFC8nFiL.js +797 -0
  321. package/dist/build-QitPVzzO.js +2073 -0
  322. package/dist/carrier-KzeYXVrW.d.ts +169 -0
  323. package/dist/chat-sdk/index.d.ts +8 -8
  324. package/dist/chat-sdk/index.js +3 -3
  325. package/dist/claims-DTy6R6my.js +63 -0
  326. package/dist/cli/add-C04vkBk9.js +99 -0
  327. package/dist/cli/add-CUH0rORo.js +1 -0
  328. package/dist/cli/add-DNOL9PDu.js +1257 -0
  329. package/dist/cli/args-UEwg0l-N.js +27 -0
  330. package/dist/cli/backfill-VFzf-TJP.js +293 -0
  331. package/dist/cli/bin.js +1 -1
  332. package/dist/cli/blocks-Bn7WUca5.js +1 -0
  333. package/dist/cli/blocks-Cb7mILFU.js +156 -0
  334. package/dist/cli/cache-DkplpIGe.js +607 -0
  335. package/dist/cli/codemod-BbaE5dL_.js +2435 -0
  336. package/dist/cli/codemod-block-renames-BuSaTE_G.js +239 -0
  337. package/dist/cli/command-CQ61x6gN.js +941 -0
  338. package/dist/cli/completion-2Y3D_eNu.js +211 -0
  339. package/dist/cli/completion-BwI0_Ap5.js +30 -0
  340. package/dist/cli/completion-Dlu5AdUW.js +1 -0
  341. package/dist/cli/config-9t5ec_N7.js +1642 -0
  342. package/dist/cli/config-CBqkQjjN.js +1 -0
  343. package/dist/cli/config-CPux9Wa7.js +47 -0
  344. package/dist/cli/config-edit-CrWfk8s3.js +621 -0
  345. package/dist/cli/config-group-C8tjut39.js +391 -0
  346. package/dist/cli/content-mapper-Cdx6arxu.js +182 -0
  347. package/dist/cli/db-DrBI_HNv.js +223 -0
  348. package/dist/cli/detect-D9JaAX20.js +84 -0
  349. package/dist/cli/dist-D_VbPAMR.js +129 -0
  350. package/dist/cli/doctor-C-VO-QQ2.js +4576 -0
  351. package/dist/cli/env-BBl5L8Bf.js +143 -0
  352. package/dist/cli/env-CAU1nknN.js +1 -0
  353. package/dist/cli/files-CX71yBm8.js +1010 -0
  354. package/dist/cli/gen-yRHOHW1b.js +387 -0
  355. package/dist/cli/in-stack-diff-DQTW53Vf.js +257 -0
  356. package/dist/cli/index.d.ts +43 -8
  357. package/dist/cli/index.js +8 -8
  358. package/dist/cli/init-BOw0SX65.js +440 -0
  359. package/dist/cli/keys-DGEpMbeB.js +106 -0
  360. package/dist/cli/legacy-prefix-DkTA3Rhx.js +141 -0
  361. package/dist/cli/live-Lmg-hYyO.js +341 -0
  362. package/dist/cli/mcp-DQ1zR2eA.js +249 -0
  363. package/dist/cli/metadata-CZaxkv21.js +150 -0
  364. package/dist/cli/migration-safety-BbhLu2fo.js +928 -0
  365. package/dist/cli/module-migration-DOn6EmNz.js +523 -0
  366. package/dist/cli/moved-CsfDQcyk.js +254 -0
  367. package/dist/cli/orphans-BAboqyVM.js +28 -0
  368. package/dist/cli/parse-B9Iv_-Pf.js +182 -0
  369. package/dist/cli/preset-BwmIfFnh.js +101 -0
  370. package/dist/cli/print-D_xf8PPj.js +67 -0
  371. package/dist/cli/remove-BY_TOTRj.js +239 -0
  372. package/dist/cli/render-lJmHr0y9.js +2170 -0
  373. package/dist/cli/run-BJ6IMs_H.js +1440 -0
  374. package/dist/cli/run-BXx6D1aR.js +63 -0
  375. package/dist/cli/run-DkB0fhc9.js +702 -0
  376. package/dist/cli/seed-Cz8PcXeT.js +188 -0
  377. package/dist/cli/seed-D6XijwbR.js +1 -0
  378. package/dist/cli/shared-Bh-6IqJS.js +151 -0
  379. package/dist/cli/skills-toUan_OV.js +121 -0
  380. package/dist/cli/snapshot-Bzcigm7T.js +729 -0
  381. package/dist/cli/source-WoLdcQzN.js +320 -0
  382. package/dist/cli/source-args-IpJRJO5t.js +59 -0
  383. package/dist/cli/spec-BF_dpwzW.js +1 -0
  384. package/dist/cli/spec-CZMiLhv_.js +7530 -0
  385. package/dist/cli/sql-layout-rFP0oq1N.js +247 -0
  386. package/dist/cli/stack-CWEHdO0b.js +135 -0
  387. package/dist/cli/sync-mANmYYoL.js +320 -0
  388. package/dist/cli/upgrade-B0Q9wMs-.js +270 -0
  389. package/dist/cli/upgrade-BrNLt92u.js +41 -0
  390. package/dist/cli/version-CyavsyGA.js +4 -0
  391. package/dist/client/index.d.ts +8 -7
  392. package/dist/client/index.js +9 -7
  393. package/dist/client/native/index.d.ts +6 -6
  394. package/dist/client/native/index.js +3 -3
  395. package/dist/client-BAEbEA7t.js +287 -0
  396. package/dist/cloud-event-CzZTJkXv.d.ts +64 -0
  397. package/dist/codecs-CMWlhHZ0.d.ts +222 -0
  398. package/dist/codecs-TylXqU_I.js +358 -0
  399. package/dist/commerce/index.d.ts +3 -3
  400. package/dist/commerce/index.js +6 -6
  401. package/dist/compiler-D3UmE7ao.d.ts +14 -0
  402. package/dist/compose-DKW0Tr3e.js +53 -0
  403. package/dist/composite-B3TIjId4.js +130 -0
  404. package/dist/composite-BZYXlVBN.d.ts +82 -0
  405. package/dist/config/index.d.ts +6 -7
  406. package/dist/config/index.js +6 -6
  407. package/dist/config-CcehOvbz.js +1698 -0
  408. package/dist/config-DWGgUQCh.js +1108 -0
  409. package/dist/connectors-Fud4amxp.d.ts +147 -0
  410. package/dist/context-DBicfUNz.js +41 -0
  411. package/dist/context-TGX2eDS5.d.ts +4151 -0
  412. package/dist/controller-BNZKd6bJ.js +73 -0
  413. package/dist/controller-DyPPMFSw.d.ts +52 -0
  414. package/dist/conversion-Dq1S7xzE.js +77 -0
  415. package/dist/conversion-O-kyhXcC.d.ts +86 -0
  416. package/dist/create/index.d.ts +19 -21
  417. package/dist/create/index.js +21 -22
  418. package/dist/create/lite/index.d.ts +2 -2
  419. package/dist/create/supabase/index.d.ts +2 -2
  420. package/dist/create/supabase/index.js +2 -2
  421. package/dist/create-blocks-Bu4H5TXw.js +352 -0
  422. package/dist/credentials/index.d.ts +5 -5
  423. package/dist/credentials/index.js +6 -6
  424. package/dist/cron-CgHTKwYG.js +148 -0
  425. package/dist/cron-route-UU9i5i9J.js +24 -0
  426. package/dist/data-engine-BWoz9lED.d.ts +273 -0
  427. package/dist/data-engine-D1BkmBoR.js +173 -0
  428. package/dist/data-hooks-tgF1Ct0F.js +280 -0
  429. package/dist/db-blocks-DJGbjIPz.js +62 -0
  430. package/dist/deal-forecast-Bv52QMyX.js +39 -0
  431. package/dist/define-DFBnQyYg.d.ts +1255 -0
  432. package/dist/define-DlUeKHce.js +2011 -0
  433. package/dist/define-block-BGqOO8B3.js +64 -0
  434. package/dist/define-block-DvvcM54N.d.ts +1657 -0
  435. package/dist/delegation-C7eWP2r8.d.ts +14 -0
  436. package/dist/delegation-DGOIiT8k.js +153 -0
  437. package/dist/documents-Cup1rpjF.d.ts +152 -0
  438. package/dist/edge/index.d.ts +20 -20
  439. package/dist/edge/index.js +14 -14
  440. package/dist/elysia/index.d.ts +1 -1
  441. package/dist/elysia/index.js +1 -1
  442. package/dist/embeddings-D_RsS6ow.d.ts +78 -0
  443. package/dist/ended-gUsMZVNg.d.ts +26 -0
  444. package/dist/entitlements-BnhDBxLW.d.ts +54 -0
  445. package/dist/entitlements-NZAE_vLj.js +45 -0
  446. package/dist/entity-naming-Dtyq5sKE.js +131 -0
  447. package/dist/entity-schema-BDv6w-OQ.js +39 -0
  448. package/dist/envelope-DEI2iX-d.js +90 -0
  449. package/dist/errors-BVFgt8BZ.js +328 -0
  450. package/dist/errors-CyxMxzlu.js +44 -0
  451. package/dist/escape-like-PReMbEEU.d.ts +30 -0
  452. package/dist/eve/index.d.ts +5 -5
  453. package/dist/eve/index.js +3 -3
  454. package/dist/eve-B7jxYPCw.d.ts +157 -0
  455. package/dist/event-calendar-DCufbihU.d.ts +65 -0
  456. package/dist/events/index.d.ts +3 -4
  457. package/dist/events-vcqenSYU.d.ts +852 -0
  458. package/dist/executor-3qcMhg6R.js +207 -0
  459. package/dist/executor-BQ7dYw4E.js +843 -0
  460. package/dist/executor-Bi056Cnj.d.ts +104 -0
  461. package/dist/executor-CVIn6JHa.d.ts +174 -0
  462. package/dist/executor-D3gB-9si.js +486 -0
  463. package/dist/executor-hGjrop3A.d.ts +37 -0
  464. package/dist/expo/index.d.ts +12 -11
  465. package/dist/expo/index.js +11 -10
  466. package/dist/extension-B-lajjex.js +58 -0
  467. package/dist/extension-B0EjCYhO.js +61 -0
  468. package/dist/extension-DeAd_MqI.js +121 -0
  469. package/dist/extension-DzCc0IOd.js +103 -0
  470. package/dist/extension-shared-Djm8mGHD.js +60 -0
  471. package/dist/field-errors-DYtg1mwv.d.ts +216 -0
  472. package/dist/field-formats-CAFNkKSN.d.ts +38 -0
  473. package/dist/fields-B0zaJAO3.js +107 -0
  474. package/dist/fields-C3q2ypnO.d.ts +78 -0
  475. package/dist/filter-evaluate-CPxeae5X.d.ts +37 -0
  476. package/dist/filter-evaluate-w1XOIUOL.js +217 -0
  477. package/dist/filter-query-BXLs72G9.d.ts +133 -0
  478. package/dist/filter-query-DMoKo82_.js +566 -0
  479. package/dist/flags-BOdA_ETQ.js +279 -0
  480. package/dist/flags-C01PLMJ-.d.ts +246 -0
  481. package/dist/flags-sdk/index.d.ts +1 -1
  482. package/dist/flags-sdk/index.js +2 -2
  483. package/dist/format-u-65igKI.d.ts +79 -0
  484. package/dist/framework-BozTXRzt.js +58 -0
  485. package/dist/framework-h5lP_5yj.d.ts +47 -0
  486. package/dist/function-contract-DxFNOmsm.d.ts +27 -0
  487. package/dist/gateway-DzI687yd.d.ts +115 -0
  488. package/dist/h3/index.d.ts +2 -4
  489. package/dist/h3/index.js +2 -4
  490. package/dist/h3/v1/index.d.ts +2 -3
  491. package/dist/h3/v1/index.js +2 -3
  492. package/dist/hono/index.d.ts +27 -21
  493. package/dist/hono/index.js +22 -20
  494. package/dist/http-7-UvHjQe.js +28 -0
  495. package/dist/impersonation-DM3oWNoD.js +62 -0
  496. package/dist/inbox-NDKwSk_H.d.ts +321 -0
  497. package/dist/index-Ab4UeEn_.d.ts +633 -0
  498. package/dist/index-B4gcStOz.d.ts +158 -0
  499. package/dist/index-BAHGLvGD.d.ts +262 -0
  500. package/dist/index-BfK6olKm.d.ts +546 -0
  501. package/dist/index-BfkltrGJ.d.ts +588 -0
  502. package/dist/index-BxYOB1Oc.d.ts +149 -0
  503. package/dist/index-CG9rA8H8.d.ts +407 -0
  504. package/dist/index-DN9mfmhA.d.ts +188 -0
  505. package/dist/index-Do2ChN_y.d.ts +287 -0
  506. package/dist/index.d.ts +39 -17
  507. package/dist/index.js +94 -16
  508. package/dist/instances-BHjCZoF8.js +277 -0
  509. package/dist/invalidate-DMp4eqfF.d.ts +21 -0
  510. package/dist/json-schema-Ca6gYbEP.js +888 -0
  511. package/dist/jwks-cache-DEsKI0hJ.js +49 -0
  512. package/dist/kit-5l-o8RxL.js +133 -0
  513. package/dist/kit-DOwKpSkA.d.ts +94 -0
  514. package/dist/knowledge-BGbtxMP9.js +300 -0
  515. package/dist/knowledge-F1IhRI4Q.d.ts +217 -0
  516. package/dist/lint/index.d.ts +94 -11
  517. package/dist/lint/index.js +268 -26
  518. package/dist/list/index.d.ts +4 -4
  519. package/dist/list/index.js +3 -3
  520. package/dist/list-query-BDVutLFr.d.ts +222 -0
  521. package/dist/list-query-BKy2zBaT.js +559 -0
  522. package/dist/live-C21DgbsD.js +275 -0
  523. package/dist/mapper/bin.js +380 -0
  524. package/dist/mcp/index.d.ts +8 -8
  525. package/dist/mcp/index.js +11 -11
  526. package/dist/mcp/sdk/index.d.ts +10 -10
  527. package/dist/mcp/sdk/index.js +11 -11
  528. package/dist/messages-D4XWuRTj.js +492 -0
  529. package/dist/messaging-C_Pr9tGx.d.ts +297 -0
  530. package/dist/methods-B3o7BFOW.js +11 -0
  531. package/dist/mfa-oIOYTpvc.d.ts +36 -0
  532. package/dist/model-hwpvole9.d.ts +340 -0
  533. package/dist/model-messages-CKG0zwdF.js +206 -0
  534. package/dist/money-codec-BzddguAQ.js +41 -0
  535. package/dist/nestjs/index.d.ts +3 -3
  536. package/dist/nestjs/index.js +2 -2
  537. package/dist/next/index.d.ts +244 -205
  538. package/dist/next/index.js +288 -197
  539. package/dist/node/index.d.ts +2 -2
  540. package/dist/node/index.js +6 -8
  541. package/dist/operations-CSc_IsHO.d.ts +6 -0
  542. package/dist/options-0qvUckqt.js +9 -0
  543. package/dist/options-1GgseJq5.js +10 -0
  544. package/dist/options-21s0dpnX.js +9 -0
  545. package/dist/options-B-cxGmRA.js +5 -0
  546. package/dist/options-B0EJULm5.js +5 -0
  547. package/dist/options-B2swWnJW.js +9 -0
  548. package/dist/options-BMGClqoa.js +11 -0
  549. package/dist/options-BQIYfx9F.js +9 -0
  550. package/dist/options-BVg58avP.js +5 -0
  551. package/dist/options-BbnPv6p7.js +12 -0
  552. package/dist/options-BfLmA375.js +5 -0
  553. package/dist/options-BlncUmIc.js +9 -0
  554. package/dist/options-BlzSfWxC.d.ts +10 -0
  555. package/dist/options-BnZS7IK-.js +9 -0
  556. package/dist/options-Bt0bYMLl.js +24 -0
  557. package/dist/options-BvtnxHfK.js +24 -0
  558. package/dist/options-C-dQHH5-.js +8 -0
  559. package/dist/options-C3RgtOLo.js +5 -0
  560. package/dist/options-CE93HOYi.d.ts +7 -0
  561. package/dist/options-CM6-18FQ.d.ts +13 -0
  562. package/dist/options-CPK2nQER.js +5 -0
  563. package/dist/options-CRz8Ht_4.js +9 -0
  564. package/dist/options-CW9wTqOk.js +11 -0
  565. package/dist/options-Cl9Ag2Pt.js +8 -0
  566. package/dist/options-Cp0HyUEk.js +9 -0
  567. package/dist/options-Cqq2jUww.js +10 -0
  568. package/dist/options-CsGl5BLH.d.ts +52 -0
  569. package/dist/options-CtUUU71w.js +20 -0
  570. package/dist/options-CvD9vNvx.js +9 -0
  571. package/dist/options-CyAhRKKm.d.ts +14 -0
  572. package/dist/options-D0G06Zm9.js +8 -0
  573. package/dist/options-D6as77gU.d.ts +16 -0
  574. package/dist/options-DChZoVfs.d.ts +11 -0
  575. package/dist/options-DINdgVih.d.ts +9 -0
  576. package/dist/options-DPgdAXO5.js +11 -0
  577. package/dist/options-DWVYM8P0.d.ts +17 -0
  578. package/dist/options-DWbA9buW.js +9 -0
  579. package/dist/options-DXnBN2E7.js +8 -0
  580. package/dist/options-D_bBVCXg.js +5 -0
  581. package/dist/options-DcOx8_3X.d.ts +19 -0
  582. package/dist/options-DeNejBtq.js +8 -0
  583. package/dist/options-DgQo80Xh.js +5 -0
  584. package/dist/options-DplE18Ko.d.ts +12 -0
  585. package/dist/options-HLwOuF2H.js +10 -0
  586. package/dist/options-KV84gAxl.js +10 -0
  587. package/dist/options-Li1Dyu88.d.ts +10 -0
  588. package/dist/options-Q1Bzgqpr.js +5 -0
  589. package/dist/options-_F-enoBs.d.ts +26 -0
  590. package/dist/options-c5WCsky5.js +21 -0
  591. package/dist/options-nFzfgtA6.js +5 -0
  592. package/dist/options-pOVWwbAK.d.ts +10 -0
  593. package/dist/options-y_-AkVCs.d.ts +15 -0
  594. package/dist/orpc/index.d.ts +69 -71
  595. package/dist/orpc/index.js +161 -27
  596. package/dist/otel/index.d.ts +3 -3
  597. package/dist/otel/index.js +6 -6
  598. package/dist/outbox-HxjZTfF6.d.ts +199 -0
  599. package/dist/payments-BXvabJOw.js +16 -0
  600. package/dist/payments-BYcN34Fp.d.ts +114 -0
  601. package/dist/permissions-controller-BMsqIE5T.js +34 -0
  602. package/dist/plugin-AKwwe2gF.js +48 -0
  603. package/dist/pool-CrtT4dg-.d.ts +123 -0
  604. package/dist/pool-errors-JUBcGrre.js +27 -0
  605. package/dist/ports-CpdiQv1D.d.ts +89 -0
  606. package/dist/ports-DOhtuw3c.js +152 -0
  607. package/dist/postgres/index.d.ts +5 -5
  608. package/dist/postgres/index.js +3 -3
  609. package/dist/postgrest-executor-BFW4oWte.js +1064 -0
  610. package/dist/postgrest-z-T0l23T.d.ts +53 -0
  611. package/dist/powersync/index.d.ts +106 -7
  612. package/dist/powersync/index.js +123 -7
  613. package/dist/preset/index.d.ts +4 -4
  614. package/dist/preset/index.js +4 -4
  615. package/dist/preset-CsHnIBJF.js +875 -0
  616. package/dist/problem-Bf0cJ7tk.js +162 -0
  617. package/dist/problem-DNwN8iGz.d.ts +79 -0
  618. package/dist/provider-B6g7rBZX.js +57 -0
  619. package/dist/provider-CqwEOLCA.d.ts +112 -0
  620. package/dist/push-token-B3m3pWAv.d.ts +24 -0
  621. package/dist/queries-BWYYS9um.js +239 -0
  622. package/dist/query/index.d.ts +4 -4
  623. package/dist/query/index.js +114 -48
  624. package/dist/rank-result-BBJIK-k_.js +18 -0
  625. package/dist/rank-result-Bwe7igy-.d.ts +14 -0
  626. package/dist/rate-limit-BWKGlhTM.js +49 -0
  627. package/dist/rate-limit-Bztf32cl.d.ts +50 -0
  628. package/dist/rate-limit-o44SYkVY.js +327 -0
  629. package/dist/react/index.d.ts +10 -9
  630. package/dist/react/index.js +5 -5
  631. package/dist/react/native/index.d.ts +1 -1
  632. package/dist/react/native/index.js +2 -3
  633. package/dist/react/server.d.ts +47 -15
  634. package/dist/react/server.js +46 -11
  635. package/dist/react/session.d.ts +3 -3
  636. package/dist/react-BuDYI62C.js +979 -0
  637. package/dist/react-router/index.d.ts +13 -10
  638. package/dist/react-router/index.js +10 -10
  639. package/dist/read-set-BnKnofIj.js +199 -0
  640. package/dist/realtime/index.d.ts +7 -7
  641. package/dist/realtime/index.js +4 -4
  642. package/dist/record-bindings-DkBJpC5A.js +26 -0
  643. package/dist/record-form-DB_5Ue_B.d.ts +82 -0
  644. package/dist/record-type-DRbnlj5q.js +221 -0
  645. package/dist/recordings-BBSJt_YV.d.ts +119 -0
  646. package/dist/records/index.d.ts +28 -28
  647. package/dist/records/index.js +22 -23
  648. package/dist/refresh-DT_ICaK-.d.ts +54 -0
  649. package/dist/refusal-ByBZcm0V.js +64 -0
  650. package/dist/refusal-CSntB_x8.d.ts +32 -0
  651. package/dist/replicas-Dyoh3CEg.js +94 -0
  652. package/dist/resolve-B0mW2m7f.js +932 -0
  653. package/dist/resolve-CXX6DHv3.d.ts +288 -0
  654. package/dist/resource-D8pzB5Qf.d.ts +123 -0
  655. package/dist/resource-DV2GC2dB.js +520 -0
  656. package/dist/resource-DvgXqZB_.js +105 -0
  657. package/dist/resource-execute-CzHuDsil.d.ts +15 -0
  658. package/dist/resource-types-DnKiH4G2.d.ts +157 -0
  659. package/dist/resources-B9cQxhjw.d.ts +7 -0
  660. package/dist/resources-C02l_YBJ.js +64 -0
  661. package/dist/respond-C3CcOZlA.js +100 -0
  662. package/dist/respond-Dn1_YhC1.d.ts +106 -0
  663. package/dist/result-DZeA5KS6.d.ts +351 -0
  664. package/dist/result-ntFBW2p2.js +146 -0
  665. package/dist/rows-BDLZStp4.js +80 -0
  666. package/dist/rows-Bm6sskji.js +39 -0
  667. package/dist/rrule-79K2c3Nr.js +290 -0
  668. package/dist/run-state-BMCD_1Lt.d.ts +13 -0
  669. package/dist/sales-lines-Bk4mbLH1.d.ts +37 -0
  670. package/dist/sales-lines-D-sf9PIB.js +43 -0
  671. package/dist/sales-shared-DXGFJP4g.js +22 -0
  672. package/dist/schemas-l2aF78zQ.js +216 -0
  673. package/dist/scores-B2BiNuVJ.d.ts +174 -0
  674. package/dist/scores-CRp3vvQU.js +177 -0
  675. package/dist/server/index.d.ts +104 -42
  676. package/dist/server/index.js +99 -30
  677. package/dist/server-types-7QPzW2bF.d.ts +946 -0
  678. package/dist/session-CfBCJGgc.d.ts +99 -0
  679. package/dist/shared-C47zAh2A.js +17 -0
  680. package/dist/sign-in-B64114O4.js +608 -0
  681. package/dist/sign-in-BAjR49fq.d.ts +24 -0
  682. package/dist/sign-in-BsIaNx2C.js +392 -0
  683. package/dist/signatures-CNcoq392.js +145 -0
  684. package/dist/signatures-Dkx9OE8j.d.ts +43 -0
  685. package/dist/signers-BAEzvTJ0.d.ts +390 -0
  686. package/dist/signing-keys-BNDUxpQL.d.ts +119 -0
  687. package/dist/signing-keys-wGKh4vtt.js +164 -0
  688. package/dist/solid/index.d.ts +52 -18
  689. package/dist/solid/index.js +69 -11
  690. package/dist/solid-start/index.d.ts +11 -11
  691. package/dist/solid-start/index.js +8 -8
  692. package/dist/spec/index.d.ts +691 -10
  693. package/dist/spec/index.js +2487 -5
  694. package/dist/spec-DTWkHzYZ.js +124 -0
  695. package/dist/spec-pins-C1Vm8OBl.js +61 -0
  696. package/dist/spec-pins-DIx95afw.d.ts +125 -0
  697. package/dist/sql/index.d.ts +5 -5
  698. package/dist/sql/index.js +5 -5
  699. package/dist/sql-BPbbPzRJ.js +421 -0
  700. package/dist/sql-OLVW4t08.js +127258 -0
  701. package/dist/sqlite/index.d.ts +126 -0
  702. package/dist/sqlite/index.js +197 -0
  703. package/dist/sso-B0Txid2-.d.ts +161 -0
  704. package/dist/sso-d2S4x_f9.js +217 -0
  705. package/dist/ssr/index.d.ts +5 -4
  706. package/dist/ssr/index.js +3 -3
  707. package/dist/standard-BA3mLh6w.js +25 -0
  708. package/dist/standard-DBV730sF.d.ts +7 -0
  709. package/dist/stats-BHl1-zj9.js +83 -0
  710. package/dist/storage/index.d.ts +3 -3
  711. package/dist/storage/index.js +10 -10
  712. package/dist/store-CpheI-lN.d.ts +83 -0
  713. package/dist/streams/index.d.ts +3 -3
  714. package/dist/streams/index.js +2 -2
  715. package/dist/streams/redis/index.d.ts +2 -2
  716. package/dist/streams/redis/index.js +3 -3
  717. package/dist/subject-readers-8GySC9Z8.d.ts +21 -0
  718. package/dist/subject-readers-B-pQ9Mmo.js +49 -0
  719. package/dist/subjects-BpIEN1MS.d.ts +90 -0
  720. package/dist/subjects-DvmQeF_F.d.ts +79 -0
  721. package/dist/support-view-BYOgwXsJ.d.ts +17 -0
  722. package/dist/svelte/index.d.ts +52 -15
  723. package/dist/svelte/index.js +87 -11
  724. package/dist/sveltekit/index.d.ts +13 -13
  725. package/dist/sveltekit/index.js +13 -13
  726. package/dist/table-schema-BlF6k62Q.d.ts +81 -0
  727. package/dist/table-schema-CD8cJz_M.js +293 -0
  728. package/dist/tags-BjHflcHF.d.ts +30 -0
  729. package/dist/tags-CIZTqtlY.js +39 -0
  730. package/dist/tanstack-db/index.d.ts +50 -6
  731. package/dist/tanstack-db/index.js +43 -2
  732. package/dist/tanstack-start/index.d.ts +9 -9
  733. package/dist/tanstack-start/index.js +9 -9
  734. package/dist/tax-BkCNWWMc.js +140 -0
  735. package/dist/tax-DPShHual.d.ts +170 -0
  736. package/dist/tee-V97_v1ZS.js +101 -0
  737. package/dist/template-Drgg3v2J.js +126 -0
  738. package/dist/temporal-required-Dy0GGD8E.js +20 -0
  739. package/dist/tenant-BgIiMQpo.js +27 -0
  740. package/dist/tenant-DzFsg0Pc.d.ts +17 -0
  741. package/dist/testing/index.d.ts +77 -75
  742. package/dist/testing/index.js +89 -99
  743. package/dist/timeline--VU3A1e4.js +50 -0
  744. package/dist/timeline-WrFMgd3U.d.ts +151 -0
  745. package/dist/timing-dypS0nxW.js +95 -0
  746. package/dist/topic-DNFEFGKI.d.ts +415 -0
  747. package/dist/topic-ikV_pLTX.js +643 -0
  748. package/dist/types-A4yyKEsg.d.ts +217 -0
  749. package/dist/types-Czq9Xtpa.d.ts +618 -0
  750. package/dist/types-DFdg_4yN.d.ts +912 -0
  751. package/dist/types-Dp3UCr1e.d.ts +194 -0
  752. package/dist/types-Dr9wZgNy.d.ts +251 -0
  753. package/dist/types-DsRfiQ0v.d.ts +659 -0
  754. package/dist/types-EO2crSX_.d.ts +177 -0
  755. package/dist/undo-B1jwnVyN.d.ts +46 -0
  756. package/dist/undo-BjCChCmH.js +44 -0
  757. package/dist/upload-claim-B1ZU8ydB.js +33 -0
  758. package/dist/usage-Dp45V42p.d.ts +232 -0
  759. package/dist/user-change-DgWC6RRC.js +135 -0
  760. package/dist/variants-Cy--Ub-a.js +53 -0
  761. package/dist/vault-O-YlAyHb.d.ts +62 -0
  762. package/dist/vercel-connect/index.d.ts +1 -1
  763. package/dist/vercel-connect/index.js +3 -3
  764. package/dist/verify-CMou8dWZ.d.ts +146 -0
  765. package/dist/verify-ZLFUdlqE.js +130 -0
  766. package/dist/view-C8Ve14ja.js +247 -0
  767. package/dist/view-DyFdMCqg.d.ts +97 -0
  768. package/dist/vue/index.d.ts +52 -23
  769. package/dist/vue/index.js +77 -14
  770. package/dist/watch-topic-Bo9S2R4P.d.ts +31 -0
  771. package/dist/wiring-CDNuQoJJ.js +13 -0
  772. package/dist/workflow-sdk/builder/index.d.ts +12 -12
  773. package/dist/workflow-sdk/builder/index.js +16 -17
  774. package/dist/workflow-sdk/index.d.ts +18 -15
  775. package/dist/workflow-sdk/index.js +2 -2
  776. package/dist/workflow-sdk/world/index.d.ts +6 -6
  777. package/dist/workflow-sdk/world/index.js +12 -12
  778. package/dist/workflow-sdk-B3Ss55Fy.d.ts +163 -0
  779. package/dist/workflow-sdk-Bw6_u0ar.js +2446 -0
  780. package/dist/workflow-sdk-Cf0LAOFF.js +242 -0
  781. package/dist/workflows-B0ZPAQu0.d.ts +255 -0
  782. package/dist/yjs/index.d.ts +3 -3
  783. package/dist/yjs/index.js +2 -2
  784. package/package.json +75 -623
  785. package/schemas/config-v1.json +2082 -1754
  786. package/schemas/design-v1.json +141 -5
  787. package/schemas/doctor-report-v1.json +15 -0
  788. package/skills/better-supabase/SKILL.md +70 -28
  789. package/skills/better-supabase/references/block-extensions.md +64 -0
  790. package/skills/better-supabase/references/frontend.md +29 -26
  791. package/skills/better-supabase/references/troubleshooting.md +3 -3
  792. package/skills/better-supabase/references/ui-recipes.md +267 -134
  793. package/skills/better-supabase-api/SKILL.md +49 -38
  794. package/skills/better-supabase-api/references/adapters.md +42 -39
  795. package/skills/better-supabase-api/references/ai.md +4 -4
  796. package/skills/better-supabase-api/references/expo.md +8 -8
  797. package/skills/better-supabase-api/references/powersync.md +20 -13
  798. package/skills/better-supabase-api/references/streams-credentials.md +3 -3
  799. package/skills/better-supabase-auth/SKILL.md +17 -17
  800. package/skills/better-supabase-auth/references/authorization-providers.md +8 -6
  801. package/skills/better-supabase-testing/SKILL.md +8 -8
  802. package/dist/access-sql-CPoq9F86.js +0 -207
  803. package/dist/access-z7NwWtqx.js +0 -34
  804. package/dist/actor-hNajGNEK.js +0 -150
  805. package/dist/adapter-BCFAg58A.js +0 -2190
  806. package/dist/agents-CmZlLPXC.d.ts +0 -117
  807. package/dist/ai-cache-BxlOkc_M.d.ts +0 -82
  808. package/dist/ai-cache-DQikwXhJ.js +0 -87
  809. package/dist/ai-chat-DBxEz3o1.d.ts +0 -619
  810. package/dist/ai-files-t-kHmS5H.js +0 -339
  811. package/dist/ai-tasks-BDywBUgN.d.ts +0 -166
  812. package/dist/announcements-BeOD0zbc.js +0 -128
  813. package/dist/api-CWhpq24a.d.ts +0 -174
  814. package/dist/api-DKp2Ggz_.js +0 -685
  815. package/dist/api-keys-CboAenU8.d.ts +0 -213
  816. package/dist/api-keys-DT6Fi50R.js +0 -318
  817. package/dist/app-tables-BHrzAUFJ.d.ts +0 -27
  818. package/dist/app-tables-C5aoI5rZ.js +0 -959
  819. package/dist/approvals-bMb7dsBY.d.ts +0 -129
  820. package/dist/arazzo/index.d.ts +0 -278
  821. package/dist/arazzo/index.js +0 -630
  822. package/dist/assistant-D1yev_fR.d.ts +0 -157
  823. package/dist/asyncapi/index.d.ts +0 -110
  824. package/dist/asyncapi/index.js +0 -572
  825. package/dist/attachments-Cjdgarpa.js +0 -351
  826. package/dist/attributes-BOFl922R.js +0 -44
  827. package/dist/audit-log-C3rQxeHd.js +0 -788
  828. package/dist/auth-reply-jVKoAV6R.js +0 -31
  829. package/dist/authorization-BuT26_sR.d.ts +0 -3455
  830. package/dist/authorization-hooks-dLmUO_PZ.d.ts +0 -217
  831. package/dist/authorizer-DFP3gHv8.d.ts +0 -82
  832. package/dist/authorizer-DPTeL-7h.js +0 -125
  833. package/dist/availability-q3dZoZYM.d.ts +0 -226
  834. package/dist/bind-Dz8y3T5T.d.ts +0 -95
  835. package/dist/block-authors-BRTlT0qv.js +0 -14
  836. package/dist/block-controller-DTGuBemi.js +0 -112
  837. package/dist/block-env-DJiUu1fq.js +0 -35
  838. package/dist/block-env-kFcaaJLM.d.ts +0 -10
  839. package/dist/block-env-options-2e6IQrSw.js +0 -26
  840. package/dist/block-events-records-BGVyoz57.d.ts +0 -343
  841. package/dist/block-fields-3w4MZr8U.d.ts +0 -58
  842. package/dist/block-fields-DBSJSeaO.js +0 -139
  843. package/dist/block-helpers-BaugZlJV.d.ts +0 -62
  844. package/dist/block-helpers-CiKtrb6g.js +0 -353
  845. package/dist/block-hooks-BymdcD0V.js +0 -130
  846. package/dist/block-hooks-CmjPKqQ_.d.ts +0 -117
  847. package/dist/block-method-Bvsao626.js +0 -21
  848. package/dist/block-method-hsPAGFi5.d.ts +0 -19
  849. package/dist/block-names-Dbv_2wmE.js +0 -66
  850. package/dist/block-subjects-Dzq5Xn_0.js +0 -55
  851. package/dist/block-subjects-FHwLlIHU.d.ts +0 -6
  852. package/dist/block-tenant-C1sNV8_4.js +0 -14
  853. package/dist/block-transport-d53POsem.d.ts +0 -69
  854. package/dist/blocks/access/index.d.ts +0 -9
  855. package/dist/blocks/access/index.js +0 -18
  856. package/dist/blocks/access/react/index.d.ts +0 -52
  857. package/dist/blocks/access/react/index.js +0 -73
  858. package/dist/blocks/access/react/server.d.ts +0 -11
  859. package/dist/blocks/access/react/server.js +0 -16
  860. package/dist/blocks/access/solid/index.d.ts +0 -13
  861. package/dist/blocks/access/solid/index.js +0 -14
  862. package/dist/blocks/access/svelte/index.d.ts +0 -13
  863. package/dist/blocks/access/svelte/index.js +0 -14
  864. package/dist/blocks/access/vue/index.d.ts +0 -13
  865. package/dist/blocks/access/vue/index.js +0 -14
  866. package/dist/blocks/activity/index.d.ts +0 -116
  867. package/dist/blocks/activity/index.js +0 -164
  868. package/dist/blocks/ai-chat/react/index.d.ts +0 -52
  869. package/dist/blocks/ai-chat/react/index.js +0 -95
  870. package/dist/blocks/ai-chat/react/server.d.ts +0 -25
  871. package/dist/blocks/ai-chat/react/server.js +0 -23
  872. package/dist/blocks/ai-chat/solid/index.d.ts +0 -34
  873. package/dist/blocks/ai-chat/solid/index.js +0 -41
  874. package/dist/blocks/ai-chat/svelte/index.d.ts +0 -34
  875. package/dist/blocks/ai-chat/svelte/index.js +0 -41
  876. package/dist/blocks/ai-chat/vue/index.d.ts +0 -34
  877. package/dist/blocks/ai-chat/vue/index.js +0 -41
  878. package/dist/blocks/ai-providers/index.d.ts +0 -22
  879. package/dist/blocks/ai-providers/index.js +0 -236
  880. package/dist/blocks/ai-tasks/index.d.ts +0 -10
  881. package/dist/blocks/ai-tasks/index.js +0 -252
  882. package/dist/blocks/announcements/react/index.d.ts +0 -28
  883. package/dist/blocks/announcements/react/index.js +0 -38
  884. package/dist/blocks/announcements/react/server.d.ts +0 -9
  885. package/dist/blocks/announcements/react/server.js +0 -10
  886. package/dist/blocks/announcements/solid/index.d.ts +0 -13
  887. package/dist/blocks/announcements/solid/index.js +0 -14
  888. package/dist/blocks/announcements/svelte/index.d.ts +0 -13
  889. package/dist/blocks/announcements/svelte/index.js +0 -14
  890. package/dist/blocks/announcements/vue/index.d.ts +0 -13
  891. package/dist/blocks/announcements/vue/index.js +0 -14
  892. package/dist/blocks/api-keys/react/index.d.ts +0 -32
  893. package/dist/blocks/api-keys/react/index.js +0 -43
  894. package/dist/blocks/api-keys/react/server.d.ts +0 -7
  895. package/dist/blocks/api-keys/react/server.js +0 -7
  896. package/dist/blocks/api-keys/solid/index.d.ts +0 -13
  897. package/dist/blocks/api-keys/solid/index.js +0 -14
  898. package/dist/blocks/api-keys/svelte/index.d.ts +0 -13
  899. package/dist/blocks/api-keys/svelte/index.js +0 -14
  900. package/dist/blocks/api-keys/vue/index.d.ts +0 -13
  901. package/dist/blocks/api-keys/vue/index.js +0 -14
  902. package/dist/blocks/attachments/react/index.d.ts +0 -53
  903. package/dist/blocks/attachments/react/index.js +0 -78
  904. package/dist/blocks/attachments/react/server.d.ts +0 -9
  905. package/dist/blocks/attachments/react/server.js +0 -10
  906. package/dist/blocks/attachments/solid/index.d.ts +0 -13
  907. package/dist/blocks/attachments/solid/index.js +0 -14
  908. package/dist/blocks/attachments/svelte/index.d.ts +0 -13
  909. package/dist/blocks/attachments/svelte/index.js +0 -14
  910. package/dist/blocks/attachments/vue/index.d.ts +0 -13
  911. package/dist/blocks/attachments/vue/index.js +0 -14
  912. package/dist/blocks/audit/react/index.d.ts +0 -31
  913. package/dist/blocks/audit/react/index.js +0 -46
  914. package/dist/blocks/audit/react/server.d.ts +0 -7
  915. package/dist/blocks/audit/react/server.js +0 -7
  916. package/dist/blocks/audit/solid/index.d.ts +0 -13
  917. package/dist/blocks/audit/solid/index.js +0 -14
  918. package/dist/blocks/audit/svelte/index.d.ts +0 -13
  919. package/dist/blocks/audit/svelte/index.js +0 -14
  920. package/dist/blocks/audit/vue/index.d.ts +0 -13
  921. package/dist/blocks/audit/vue/index.js +0 -14
  922. package/dist/blocks/billing/react/index.d.ts +0 -44
  923. package/dist/blocks/billing/react/index.js +0 -40
  924. package/dist/blocks/billing/react/server.d.ts +0 -10
  925. package/dist/blocks/billing/react/server.js +0 -10
  926. package/dist/blocks/billing/solid/index.d.ts +0 -15
  927. package/dist/blocks/billing/solid/index.js +0 -14
  928. package/dist/blocks/billing/svelte/index.d.ts +0 -15
  929. package/dist/blocks/billing/svelte/index.js +0 -14
  930. package/dist/blocks/billing/vue/index.d.ts +0 -15
  931. package/dist/blocks/billing/vue/index.js +0 -14
  932. package/dist/blocks/bookings/react/index.d.ts +0 -36
  933. package/dist/blocks/bookings/react/index.js +0 -63
  934. package/dist/blocks/bookings/react/server.d.ts +0 -9
  935. package/dist/blocks/bookings/react/server.js +0 -10
  936. package/dist/blocks/bookings/solid/index.d.ts +0 -13
  937. package/dist/blocks/bookings/solid/index.js +0 -14
  938. package/dist/blocks/bookings/svelte/index.d.ts +0 -13
  939. package/dist/blocks/bookings/svelte/index.js +0 -14
  940. package/dist/blocks/bookings/vue/index.d.ts +0 -13
  941. package/dist/blocks/bookings/vue/index.js +0 -14
  942. package/dist/blocks/calendar/react/index.d.ts +0 -26
  943. package/dist/blocks/calendar/react/index.js +0 -58
  944. package/dist/blocks/calendar/react/server.d.ts +0 -9
  945. package/dist/blocks/calendar/react/server.js +0 -10
  946. package/dist/blocks/calendar/solid/index.d.ts +0 -13
  947. package/dist/blocks/calendar/solid/index.js +0 -14
  948. package/dist/blocks/calendar/svelte/index.d.ts +0 -13
  949. package/dist/blocks/calendar/svelte/index.js +0 -14
  950. package/dist/blocks/calendar/vue/index.d.ts +0 -13
  951. package/dist/blocks/calendar/vue/index.js +0 -14
  952. package/dist/blocks/comments/react/index.d.ts +0 -32
  953. package/dist/blocks/comments/react/index.js +0 -56
  954. package/dist/blocks/comments/react/server.d.ts +0 -7
  955. package/dist/blocks/comments/react/server.js +0 -7
  956. package/dist/blocks/comments/solid/index.d.ts +0 -13
  957. package/dist/blocks/comments/solid/index.js +0 -14
  958. package/dist/blocks/comments/svelte/index.d.ts +0 -13
  959. package/dist/blocks/comments/svelte/index.js +0 -14
  960. package/dist/blocks/comments/vue/index.d.ts +0 -13
  961. package/dist/blocks/comments/vue/index.js +0 -14
  962. package/dist/blocks/controls/index.d.ts +0 -325
  963. package/dist/blocks/controls/index.js +0 -410
  964. package/dist/blocks/engagements/index.d.ts +0 -41
  965. package/dist/blocks/engagements/index.js +0 -414
  966. package/dist/blocks/entitlements/react/index.d.ts +0 -27
  967. package/dist/blocks/entitlements/react/index.js +0 -35
  968. package/dist/blocks/entitlements/react/server.d.ts +0 -9
  969. package/dist/blocks/entitlements/react/server.js +0 -10
  970. package/dist/blocks/entitlements/solid/index.d.ts +0 -13
  971. package/dist/blocks/entitlements/solid/index.js +0 -14
  972. package/dist/blocks/entitlements/svelte/index.d.ts +0 -13
  973. package/dist/blocks/entitlements/svelte/index.js +0 -14
  974. package/dist/blocks/entitlements/vue/index.d.ts +0 -13
  975. package/dist/blocks/entitlements/vue/index.js +0 -14
  976. package/dist/blocks/forms/react/index.d.ts +0 -19
  977. package/dist/blocks/forms/react/index.js +0 -28
  978. package/dist/blocks/forms/react/server.d.ts +0 -9
  979. package/dist/blocks/forms/react/server.js +0 -10
  980. package/dist/blocks/forms/solid/index.d.ts +0 -13
  981. package/dist/blocks/forms/solid/index.js +0 -14
  982. package/dist/blocks/forms/svelte/index.d.ts +0 -13
  983. package/dist/blocks/forms/svelte/index.js +0 -14
  984. package/dist/blocks/forms/vue/index.d.ts +0 -13
  985. package/dist/blocks/forms/vue/index.js +0 -14
  986. package/dist/blocks/inbox/react/index.d.ts +0 -3
  987. package/dist/blocks/inbox/react/index.js +0 -87
  988. package/dist/blocks/inbox/react/server.d.ts +0 -17
  989. package/dist/blocks/inbox/react/server.js +0 -18
  990. package/dist/blocks/inbox/solid/index.d.ts +0 -27
  991. package/dist/blocks/inbox/solid/index.js +0 -32
  992. package/dist/blocks/inbox/svelte/index.d.ts +0 -27
  993. package/dist/blocks/inbox/svelte/index.js +0 -32
  994. package/dist/blocks/inbox/vue/index.d.ts +0 -27
  995. package/dist/blocks/inbox/vue/index.js +0 -32
  996. package/dist/blocks/jobs/index.d.ts +0 -523
  997. package/dist/blocks/jobs/index.js +0 -1345
  998. package/dist/blocks/messaging/react/index.d.ts +0 -39
  999. package/dist/blocks/messaging/react/index.js +0 -80
  1000. package/dist/blocks/messaging/react/server.d.ts +0 -12
  1001. package/dist/blocks/messaging/react/server.js +0 -14
  1002. package/dist/blocks/messaging/solid/index.d.ts +0 -20
  1003. package/dist/blocks/messaging/solid/index.js +0 -23
  1004. package/dist/blocks/messaging/svelte/index.d.ts +0 -20
  1005. package/dist/blocks/messaging/svelte/index.js +0 -23
  1006. package/dist/blocks/messaging/vue/index.d.ts +0 -20
  1007. package/dist/blocks/messaging/vue/index.js +0 -23
  1008. package/dist/blocks/mfa/react/index.d.ts +0 -30
  1009. package/dist/blocks/mfa/react/index.js +0 -45
  1010. package/dist/blocks/mfa/react/server.d.ts +0 -9
  1011. package/dist/blocks/mfa/react/server.js +0 -12
  1012. package/dist/blocks/mfa/solid/index.d.ts +0 -20
  1013. package/dist/blocks/mfa/solid/index.js +0 -23
  1014. package/dist/blocks/mfa/svelte/index.d.ts +0 -20
  1015. package/dist/blocks/mfa/svelte/index.js +0 -23
  1016. package/dist/blocks/mfa/vue/index.d.ts +0 -20
  1017. package/dist/blocks/mfa/vue/index.js +0 -23
  1018. package/dist/blocks/notifications/react/index.d.ts +0 -19
  1019. package/dist/blocks/notifications/react/index.js +0 -41
  1020. package/dist/blocks/notifications/react/server.d.ts +0 -10
  1021. package/dist/blocks/notifications/react/server.js +0 -10
  1022. package/dist/blocks/notifications/solid/index.d.ts +0 -13
  1023. package/dist/blocks/notifications/solid/index.js +0 -14
  1024. package/dist/blocks/notifications/svelte/index.d.ts +0 -13
  1025. package/dist/blocks/notifications/svelte/index.js +0 -14
  1026. package/dist/blocks/notifications/vue/index.d.ts +0 -13
  1027. package/dist/blocks/notifications/vue/index.js +0 -14
  1028. package/dist/blocks/number-sequences/index.d.ts +0 -48
  1029. package/dist/blocks/number-sequences/index.js +0 -52
  1030. package/dist/blocks/onboarding/react/index.d.ts +0 -24
  1031. package/dist/blocks/onboarding/react/index.js +0 -38
  1032. package/dist/blocks/onboarding/react/server.d.ts +0 -10
  1033. package/dist/blocks/onboarding/react/server.js +0 -10
  1034. package/dist/blocks/onboarding/solid/index.d.ts +0 -13
  1035. package/dist/blocks/onboarding/solid/index.js +0 -14
  1036. package/dist/blocks/onboarding/svelte/index.d.ts +0 -13
  1037. package/dist/blocks/onboarding/svelte/index.js +0 -14
  1038. package/dist/blocks/onboarding/vue/index.d.ts +0 -13
  1039. package/dist/blocks/onboarding/vue/index.js +0 -14
  1040. package/dist/blocks/organizations/react/index.d.ts +0 -127
  1041. package/dist/blocks/organizations/react/index.js +0 -113
  1042. package/dist/blocks/organizations/react/server.d.ts +0 -20
  1043. package/dist/blocks/organizations/react/server.js +0 -24
  1044. package/dist/blocks/organizations/solid/index.d.ts +0 -34
  1045. package/dist/blocks/organizations/solid/index.js +0 -32
  1046. package/dist/blocks/organizations/svelte/index.d.ts +0 -34
  1047. package/dist/blocks/organizations/svelte/index.js +0 -32
  1048. package/dist/blocks/organizations/vue/index.d.ts +0 -34
  1049. package/dist/blocks/organizations/vue/index.js +0 -32
  1050. package/dist/blocks/parties/index.d.ts +0 -182
  1051. package/dist/blocks/parties/index.js +0 -358
  1052. package/dist/blocks/reactions/react/index.d.ts +0 -32
  1053. package/dist/blocks/reactions/react/index.js +0 -57
  1054. package/dist/blocks/reactions/react/server.d.ts +0 -9
  1055. package/dist/blocks/reactions/react/server.js +0 -10
  1056. package/dist/blocks/reactions/solid/index.d.ts +0 -13
  1057. package/dist/blocks/reactions/solid/index.js +0 -14
  1058. package/dist/blocks/reactions/svelte/index.d.ts +0 -13
  1059. package/dist/blocks/reactions/svelte/index.js +0 -14
  1060. package/dist/blocks/reactions/vue/index.d.ts +0 -13
  1061. package/dist/blocks/reactions/vue/index.js +0 -14
  1062. package/dist/blocks/rules/index.d.ts +0 -175
  1063. package/dist/blocks/rules/index.js +0 -163
  1064. package/dist/blocks/rules/react/index.d.ts +0 -38
  1065. package/dist/blocks/rules/react/index.js +0 -59
  1066. package/dist/blocks/rules/react/server.d.ts +0 -6
  1067. package/dist/blocks/rules/react/server.js +0 -7
  1068. package/dist/blocks/rules/solid/index.d.ts +0 -13
  1069. package/dist/blocks/rules/solid/index.js +0 -14
  1070. package/dist/blocks/rules/svelte/index.d.ts +0 -13
  1071. package/dist/blocks/rules/svelte/index.js +0 -14
  1072. package/dist/blocks/rules/vue/index.d.ts +0 -13
  1073. package/dist/blocks/rules/vue/index.js +0 -14
  1074. package/dist/blocks/saved-views/react/index.d.ts +0 -40
  1075. package/dist/blocks/saved-views/react/index.js +0 -60
  1076. package/dist/blocks/saved-views/react/server.d.ts +0 -10
  1077. package/dist/blocks/saved-views/react/server.js +0 -10
  1078. package/dist/blocks/saved-views/solid/index.d.ts +0 -13
  1079. package/dist/blocks/saved-views/solid/index.js +0 -14
  1080. package/dist/blocks/saved-views/svelte/index.d.ts +0 -13
  1081. package/dist/blocks/saved-views/svelte/index.js +0 -14
  1082. package/dist/blocks/saved-views/vue/index.d.ts +0 -13
  1083. package/dist/blocks/saved-views/vue/index.js +0 -14
  1084. package/dist/blocks/search/react/index.d.ts +0 -39
  1085. package/dist/blocks/search/react/index.js +0 -49
  1086. package/dist/blocks/search/react/server.d.ts +0 -10
  1087. package/dist/blocks/search/react/server.js +0 -11
  1088. package/dist/blocks/search/solid/index.d.ts +0 -13
  1089. package/dist/blocks/search/solid/index.js +0 -14
  1090. package/dist/blocks/search/svelte/index.d.ts +0 -13
  1091. package/dist/blocks/search/svelte/index.js +0 -14
  1092. package/dist/blocks/search/vue/index.d.ts +0 -13
  1093. package/dist/blocks/search/vue/index.js +0 -14
  1094. package/dist/blocks/service-principals/index.d.ts +0 -132
  1095. package/dist/blocks/service-principals/index.js +0 -109
  1096. package/dist/blocks/sessions/react/index.d.ts +0 -36
  1097. package/dist/blocks/sessions/react/index.js +0 -53
  1098. package/dist/blocks/sessions/react/server.d.ts +0 -15
  1099. package/dist/blocks/sessions/react/server.js +0 -17
  1100. package/dist/blocks/sessions/solid/index.d.ts +0 -20
  1101. package/dist/blocks/sessions/solid/index.js +0 -23
  1102. package/dist/blocks/sessions/svelte/index.d.ts +0 -20
  1103. package/dist/blocks/sessions/svelte/index.js +0 -23
  1104. package/dist/blocks/sessions/vue/index.d.ts +0 -20
  1105. package/dist/blocks/sessions/vue/index.js +0 -23
  1106. package/dist/blocks/settings/react/index.d.ts +0 -31
  1107. package/dist/blocks/settings/react/index.js +0 -37
  1108. package/dist/blocks/settings/react/server.d.ts +0 -10
  1109. package/dist/blocks/settings/react/server.js +0 -10
  1110. package/dist/blocks/settings/solid/index.d.ts +0 -13
  1111. package/dist/blocks/settings/solid/index.js +0 -14
  1112. package/dist/blocks/settings/svelte/index.d.ts +0 -13
  1113. package/dist/blocks/settings/svelte/index.js +0 -14
  1114. package/dist/blocks/settings/vue/index.d.ts +0 -13
  1115. package/dist/blocks/settings/vue/index.js +0 -14
  1116. package/dist/blocks/shared-signals/index.d.ts +0 -440
  1117. package/dist/blocks/shared-signals/index.js +0 -885
  1118. package/dist/blocks/subjects/react/index.d.ts +0 -31
  1119. package/dist/blocks/subjects/react/index.js +0 -60
  1120. package/dist/blocks/subjects/react/server.d.ts +0 -9
  1121. package/dist/blocks/subjects/react/server.js +0 -12
  1122. package/dist/blocks/subjects/solid/index.d.ts +0 -13
  1123. package/dist/blocks/subjects/solid/index.js +0 -14
  1124. package/dist/blocks/subjects/svelte/index.d.ts +0 -13
  1125. package/dist/blocks/subjects/svelte/index.js +0 -14
  1126. package/dist/blocks/subjects/vue/index.d.ts +0 -13
  1127. package/dist/blocks/subjects/vue/index.js +0 -14
  1128. package/dist/blocks/tags/react/index.d.ts +0 -29
  1129. package/dist/blocks/tags/react/index.js +0 -53
  1130. package/dist/blocks/tags/react/server.d.ts +0 -7
  1131. package/dist/blocks/tags/react/server.js +0 -7
  1132. package/dist/blocks/tags/solid/index.d.ts +0 -13
  1133. package/dist/blocks/tags/solid/index.js +0 -14
  1134. package/dist/blocks/tags/svelte/index.d.ts +0 -13
  1135. package/dist/blocks/tags/svelte/index.js +0 -14
  1136. package/dist/blocks/tags/vue/index.d.ts +0 -13
  1137. package/dist/blocks/tags/vue/index.js +0 -14
  1138. package/dist/blocks/targets/index.d.ts +0 -82
  1139. package/dist/blocks/targets/index.js +0 -72
  1140. package/dist/blocks/undo/react/index.d.ts +0 -17
  1141. package/dist/blocks/undo/react/index.js +0 -24
  1142. package/dist/blocks/undo/react/server.d.ts +0 -10
  1143. package/dist/blocks/undo/react/server.js +0 -10
  1144. package/dist/blocks/undo/solid/index.d.ts +0 -13
  1145. package/dist/blocks/undo/solid/index.js +0 -14
  1146. package/dist/blocks/undo/svelte/index.d.ts +0 -13
  1147. package/dist/blocks/undo/svelte/index.js +0 -14
  1148. package/dist/blocks/undo/vue/index.d.ts +0 -13
  1149. package/dist/blocks/undo/vue/index.js +0 -14
  1150. package/dist/blocks/usage/react/index.d.ts +0 -29
  1151. package/dist/blocks/usage/react/index.js +0 -38
  1152. package/dist/blocks/usage/react/server.d.ts +0 -7
  1153. package/dist/blocks/usage/react/server.js +0 -7
  1154. package/dist/blocks/usage/solid/index.d.ts +0 -13
  1155. package/dist/blocks/usage/solid/index.js +0 -14
  1156. package/dist/blocks/usage/svelte/index.d.ts +0 -13
  1157. package/dist/blocks/usage/svelte/index.js +0 -14
  1158. package/dist/blocks/usage/vue/index.d.ts +0 -13
  1159. package/dist/blocks/usage/vue/index.js +0 -14
  1160. package/dist/blocks/work-items/index.d.ts +0 -87
  1161. package/dist/blocks/work-items/index.js +0 -431
  1162. package/dist/blocks/workflow-builder/index.d.ts +0 -43
  1163. package/dist/blocks/workflow-builder/index.js +0 -33
  1164. package/dist/blocks/workflow-builder/react/index.d.ts +0 -32
  1165. package/dist/blocks/workflow-builder/react/index.js +0 -75
  1166. package/dist/blocks/workflow-builder/react/server.d.ts +0 -14
  1167. package/dist/blocks/workflow-builder/react/server.js +0 -17
  1168. package/dist/blocks/workflow-builder/solid/index.d.ts +0 -20
  1169. package/dist/blocks/workflow-builder/solid/index.js +0 -23
  1170. package/dist/blocks/workflow-builder/svelte/index.d.ts +0 -20
  1171. package/dist/blocks/workflow-builder/svelte/index.js +0 -23
  1172. package/dist/blocks/workflow-builder/vue/index.d.ts +0 -20
  1173. package/dist/blocks/workflow-builder/vue/index.js +0 -23
  1174. package/dist/blocks/workflows/react/index.d.ts +0 -39
  1175. package/dist/blocks/workflows/react/index.js +0 -65
  1176. package/dist/blocks/workflows/react/server.d.ts +0 -14
  1177. package/dist/blocks/workflows/react/server.js +0 -17
  1178. package/dist/blocks/workflows/solid/index.d.ts +0 -20
  1179. package/dist/blocks/workflows/solid/index.js +0 -23
  1180. package/dist/blocks/workflows/svelte/index.d.ts +0 -20
  1181. package/dist/blocks/workflows/svelte/index.js +0 -23
  1182. package/dist/blocks/workflows/vue/index.d.ts +0 -20
  1183. package/dist/blocks/workflows/vue/index.js +0 -23
  1184. package/dist/bookings-BB5lFlNO.js +0 -310
  1185. package/dist/bookings-CC7IeiRa.d.ts +0 -290
  1186. package/dist/bucket-TkB7_xv8.d.ts +0 -667
  1187. package/dist/build-DCfpwg78.js +0 -1839
  1188. package/dist/build-g9wTbQdp.js +0 -703
  1189. package/dist/calendar-T3Vdpq7E.js +0 -952
  1190. package/dist/carrier-C7Q_21Kd.d.ts +0 -169
  1191. package/dist/chat-sdk/react/index.d.ts +0 -3
  1192. package/dist/chat-sdk/react/index.js +0 -2
  1193. package/dist/chat-sdk/react/server.d.ts +0 -4
  1194. package/dist/chat-sdk/react/server.js +0 -1
  1195. package/dist/claims-T8TWZ53E.js +0 -63
  1196. package/dist/cli/add-Bf3kE6PY.js +0 -75
  1197. package/dist/cli/add-CYh6Sxk1.js +0 -674
  1198. package/dist/cli/add-Dg40eFKE.js +0 -1
  1199. package/dist/cli/adopt-B0vrj-4B.js +0 -421
  1200. package/dist/cli/adopt-DJR1k3lS.js +0 -1
  1201. package/dist/cli/apply-DUQ-5LC6.js +0 -329
  1202. package/dist/cli/blocks-DzgYfjVv.js +0 -124
  1203. package/dist/cli/blocks-gGupqvBH.js +0 -1
  1204. package/dist/cli/cache-C3K_wOE2.js +0 -536
  1205. package/dist/cli/catalog-CNM0ViIh.js +0 -199
  1206. package/dist/cli/codemod-Dz4R-tVY.js +0 -1127
  1207. package/dist/cli/command-33pu13LT.js +0 -963
  1208. package/dist/cli/completion-6M6Hr8TL.js +0 -211
  1209. package/dist/cli/completion-Bqu8yq0q.js +0 -1
  1210. package/dist/cli/completion-Ddr3yqd3.js +0 -30
  1211. package/dist/cli/config-B31tIvAl.js +0 -42
  1212. package/dist/cli/config-CjgXMZW2.js +0 -1522
  1213. package/dist/cli/config-D9k5ckqV.js +0 -1
  1214. package/dist/cli/config-edit-D46H0UHp.js +0 -613
  1215. package/dist/cli/db-CeagtENM.js +0 -473
  1216. package/dist/cli/design-edit-B40ljpGZ.js +0 -205
  1217. package/dist/cli/detect-RApSAA8v.js +0 -84
  1218. package/dist/cli/dist-DSwzLVAG.js +0 -129
  1219. package/dist/cli/doctor-COGJJ1gy.js +0 -3898
  1220. package/dist/cli/emit-DbQeLlHt.js +0 -1123
  1221. package/dist/cli/env-Ba-pOD3a.js +0 -1
  1222. package/dist/cli/env-DlgfvI8U.js +0 -143
  1223. package/dist/cli/files-C5JfVnj5.js +0 -972
  1224. package/dist/cli/gen-DHW1qENn.js +0 -307
  1225. package/dist/cli/init-CZifzAUD.js +0 -397
  1226. package/dist/cli/introspect-Dfwu5vAg.js +0 -51
  1227. package/dist/cli/keys-iJs_1WT8.js +0 -106
  1228. package/dist/cli/live-1eL2MIkS.js +0 -344
  1229. package/dist/cli/mcp-CaFW6uKU.js +0 -240
  1230. package/dist/cli/metadata-DkOQHZoH.js +0 -146
  1231. package/dist/cli/migration-safety-BsCKKxPf.js +0 -305
  1232. package/dist/cli/module-migration-CbX-jRhV.js +0 -606
  1233. package/dist/cli/moved-CdNtCf4t.js +0 -161
  1234. package/dist/cli/names-D6LrQnOv.js +0 -6
  1235. package/dist/cli/parse-CRZLku1b.js +0 -182
  1236. package/dist/cli/preset-C4fagbhZ.js +0 -130
  1237. package/dist/cli/run-CE2s5TDh.js +0 -711
  1238. package/dist/cli/run-Du5XPOCv.js +0 -63
  1239. package/dist/cli/run-KXjrgNCH.js +0 -2378
  1240. package/dist/cli/scaffold-CPH8sEhw.js +0 -901
  1241. package/dist/cli/scaffold-DS6g3INp.js +0 -1
  1242. package/dist/cli/seed-D6V-T5Af.js +0 -188
  1243. package/dist/cli/seed-DPQaA8aP.js +0 -1
  1244. package/dist/cli/shared-CCpxS5if.js +0 -151
  1245. package/dist/cli/skills-Bz4INB8f.js +0 -121
  1246. package/dist/cli/snapshot-Dkwxc1uV.js +0 -351
  1247. package/dist/cli/source-args-DZV4RnZL.js +0 -59
  1248. package/dist/cli/spec-B3Tbc7Dm.js +0 -7534
  1249. package/dist/cli/spec-Cv1GYrcW.js +0 -1
  1250. package/dist/cli/sql-C58MS9DI.js +0 -348
  1251. package/dist/cli/sql-DVPw5tvO.js +0 -2
  1252. package/dist/cli/stack-_F_JhllX.js +0 -135
  1253. package/dist/cli/sync-CjkKpI6d.js +0 -91
  1254. package/dist/cli/typegen-F9GEjpvD.js +0 -502
  1255. package/dist/cli/typegen-version-BNBPI4Eu.js +0 -9
  1256. package/dist/cli/version-CTqnp3HO.js +0 -4
  1257. package/dist/cli/write-3qdrpS1v.js +0 -201
  1258. package/dist/client--tyFmxDT.js +0 -52
  1259. package/dist/client-7_4Y21ue.d.ts +0 -122
  1260. package/dist/client-B1cjaIfv.js +0 -116
  1261. package/dist/client-B2GCMvfd.d.ts +0 -451
  1262. package/dist/client-B8cHiZfF.js +0 -67
  1263. package/dist/client-BIMg9IiF.d.ts +0 -349
  1264. package/dist/client-BKGVUgo7.js +0 -380
  1265. package/dist/client-BNaOcfeH.js +0 -58
  1266. package/dist/client-BQseXods.d.ts +0 -309
  1267. package/dist/client-BSnf6fn6.d.ts +0 -59
  1268. package/dist/client-BW3-RUbq.js +0 -235
  1269. package/dist/client-BYAY7lLs.d.ts +0 -137
  1270. package/dist/client-BcXmbm4f.js +0 -173
  1271. package/dist/client-BgmVu505.js +0 -167
  1272. package/dist/client-Bj0xrUzr.js +0 -437
  1273. package/dist/client-Bn0qqRBg.d.ts +0 -37
  1274. package/dist/client-Bni68sve.d.ts +0 -136
  1275. package/dist/client-BrtwaIBh.d.ts +0 -74
  1276. package/dist/client-BtRx0-kn.js +0 -82
  1277. package/dist/client-BteuBPIy.js +0 -337
  1278. package/dist/client-C1TxDBgX.js +0 -111
  1279. package/dist/client-C1zOmnS8.js +0 -89
  1280. package/dist/client-C56l0MnY.d.ts +0 -177
  1281. package/dist/client-CA6KuLDu.d.ts +0 -223
  1282. package/dist/client-CBcq7LBg.d.ts +0 -178
  1283. package/dist/client-CGJrSTMZ.js +0 -234
  1284. package/dist/client-CLIBcMzL.d.ts +0 -116
  1285. package/dist/client-COuIfjbB.d.ts +0 -46
  1286. package/dist/client-CVToJ4uI.js +0 -84
  1287. package/dist/client-C_0XZieg.js +0 -287
  1288. package/dist/client-CebKlRU7.js +0 -157
  1289. package/dist/client-ChOJ4v0D.js +0 -137
  1290. package/dist/client-CnENAa0E.d.ts +0 -69
  1291. package/dist/client-Cp79i2ZE.d.ts +0 -152
  1292. package/dist/client-CwKsEl6q.js +0 -99
  1293. package/dist/client-D-LPdEDQ.d.ts +0 -43
  1294. package/dist/client-D6gD9qt9.d.ts +0 -45
  1295. package/dist/client-DBwWXQKF.d.ts +0 -132
  1296. package/dist/client-DD3EcytK.js +0 -65
  1297. package/dist/client-DScMvaty.js +0 -38
  1298. package/dist/client-DT6Tvudr.d.ts +0 -54
  1299. package/dist/client-DU1_Jq4e.d.ts +0 -116
  1300. package/dist/client-Dd-a0tup.d.ts +0 -475
  1301. package/dist/client-Dh8zXgpq.js +0 -1060
  1302. package/dist/client-DkI0oyR7.js +0 -76
  1303. package/dist/client-DmjG9PHH.js +0 -211
  1304. package/dist/client-DnUFHmje.js +0 -129
  1305. package/dist/client-Do5hykMK.d.ts +0 -38
  1306. package/dist/client-DzOL3lsV.d.ts +0 -110
  1307. package/dist/client-DzukpHS1.d.ts +0 -165
  1308. package/dist/client-LngH55pZ.d.ts +0 -83
  1309. package/dist/client-PPSwiJaK.js +0 -291
  1310. package/dist/client-RoAuPQNB.d.ts +0 -103
  1311. package/dist/client-WzuQExHk.js +0 -253
  1312. package/dist/client-Y_HnZGF4.js +0 -51
  1313. package/dist/client-bDXsvSXp.d.ts +0 -90
  1314. package/dist/client-bx3Bk7c5.d.ts +0 -64
  1315. package/dist/client-jgDU7Roj.d.ts +0 -144
  1316. package/dist/client-kRvHKAKS.js +0 -60
  1317. package/dist/client-pxXoQOdC.js +0 -40
  1318. package/dist/client-yIxEJwTK.js +0 -121
  1319. package/dist/cloud-event-SPyXMdcd.d.ts +0 -64
  1320. package/dist/codecs-CQrX3ZW4.js +0 -358
  1321. package/dist/codecs-DAu2sYWn.d.ts +0 -222
  1322. package/dist/comments-CB8pFSV1.js +0 -142
  1323. package/dist/compiler-BCyHFI6n.d.ts +0 -14
  1324. package/dist/compose--4D1FoPN.js +0 -53
  1325. package/dist/composite-Dv6o2BSw.js +0 -130
  1326. package/dist/composite-KllwFim2.d.ts +0 -82
  1327. package/dist/config-BuOz_O-y.d.ts +0 -2152
  1328. package/dist/config-Dh4D8lBa.js +0 -13931
  1329. package/dist/config-Dn0cC3bM.js +0 -1093
  1330. package/dist/connector-BdCE4Efp.d.ts +0 -164
  1331. package/dist/connectors-DDiSNvkF.d.ts +0 -147
  1332. package/dist/context-9Q23weHu.d.ts +0 -524
  1333. package/dist/context-CMxVnPMY.js +0 -9
  1334. package/dist/context-CYquqpA6.js +0 -41
  1335. package/dist/controller-CSsC9s3s.js +0 -73
  1336. package/dist/controller-DAD4hbl4.d.ts +0 -52
  1337. package/dist/create-blocks-kPUhCvje.js +0 -217
  1338. package/dist/cron-_i5pBGkY.js +0 -148
  1339. package/dist/cron-route-Y0eJ-FNi.js +0 -24
  1340. package/dist/deal-forecast-CBlp20PY.js +0 -39
  1341. package/dist/define-DQznpZYl.js +0 -2023
  1342. package/dist/define-Dw7pRO4h.d.ts +0 -1123
  1343. package/dist/define-block-COpcS6aT.d.ts +0 -1338
  1344. package/dist/define-block-Dze77QTw.js +0 -56
  1345. package/dist/delegation-CeXm9AJ3.js +0 -146
  1346. package/dist/documents-kgDOHUfn.d.ts +0 -152
  1347. package/dist/embeddings-CcRP-cMN.d.ts +0 -78
  1348. package/dist/employees-Dwyvxs4r.d.ts +0 -180
  1349. package/dist/ended--Bd_Q6uL.d.ts +0 -76
  1350. package/dist/engagements-CsJhf2OM.d.ts +0 -179
  1351. package/dist/entitlements-B_ttRvI6.js +0 -45
  1352. package/dist/entitlements-DDevu4ZE.d.ts +0 -54
  1353. package/dist/entity-form-B67vq97h.d.ts +0 -82
  1354. package/dist/entity-naming-DLDhHTbK.js +0 -131
  1355. package/dist/entity-schema-BXXC1NnT.js +0 -39
  1356. package/dist/envelope-DCfHtVtZ.js +0 -90
  1357. package/dist/errors-03ysrOt4.js +0 -325
  1358. package/dist/errors-DZx8w-MH.js +0 -44
  1359. package/dist/escape-like-BfXS-iVe.d.ts +0 -30
  1360. package/dist/eve-BlJI8ZXL.d.ts +0 -157
  1361. package/dist/event-calendar-D3SVa3AE.d.ts +0 -65
  1362. package/dist/events-DbLjvxDX.d.ts +0 -852
  1363. package/dist/executor-BDAGTc_O.js +0 -207
  1364. package/dist/executor-BElVQpaB.d.ts +0 -188
  1365. package/dist/executor-CPyrQdjh.d.ts +0 -700
  1366. package/dist/executor-CsTaO3AT.d.ts +0 -37
  1367. package/dist/executor-DQoczQZJ.d.ts +0 -104
  1368. package/dist/executor-QtVn0axs.js +0 -147
  1369. package/dist/executor-o9HkOJ0m.js +0 -869
  1370. package/dist/expo-sqlite/index.d.ts +0 -61
  1371. package/dist/expo-sqlite/index.js +0 -110
  1372. package/dist/feature-BBLdbGu7.js +0 -224
  1373. package/dist/field-errors-vshYTVKr.d.ts +0 -166
  1374. package/dist/field-formats-DbjaDXoZ.d.ts +0 -39
  1375. package/dist/fields-CanaxA0U.d.ts +0 -75
  1376. package/dist/fields-DK30XCgc.js +0 -107
  1377. package/dist/filter-evaluate-C3i2bGfk.d.ts +0 -37
  1378. package/dist/filter-evaluate-CRDXv0Dl.js +0 -217
  1379. package/dist/filter-query-D4ZSwbcJ.js +0 -524
  1380. package/dist/filter-query-o3b_GuyC.d.ts +0 -133
  1381. package/dist/flags-BTDPaN11.d.ts +0 -246
  1382. package/dist/flags-BhYByvP1.js +0 -279
  1383. package/dist/flows/index.d.ts +0 -247
  1384. package/dist/flows/index.js +0 -229
  1385. package/dist/format-AYHceC2m.d.ts +0 -79
  1386. package/dist/framework-CXoyWGgd.js +0 -57
  1387. package/dist/framework-FxfJpyoF.d.ts +0 -41
  1388. package/dist/function-contract-vPqwt1j4.d.ts +0 -27
  1389. package/dist/gateway-DI8dbOml.d.ts +0 -115
  1390. package/dist/graph-B4eubUQG.js +0 -365
  1391. package/dist/groups-CxonH3u5.js +0 -16
  1392. package/dist/http-51t9xppD.js +0 -28
  1393. package/dist/impersonation-CZD9AOAk.js +0 -62
  1394. package/dist/inbox-BPBb6etH.d.ts +0 -321
  1395. package/dist/index-BSUX4dlB.d.ts +0 -305
  1396. package/dist/index-BgSuw4CC.d.ts +0 -151
  1397. package/dist/index-C7CrdGgz.d.ts +0 -562
  1398. package/dist/index-CvxK2BZS.d.ts +0 -847
  1399. package/dist/index-CxZQgNVE.d.ts +0 -62
  1400. package/dist/index-D4420jLW.d.ts +0 -66
  1401. package/dist/index-DK-YTWLd.d.ts +0 -443
  1402. package/dist/index-DbXWcrOI.d.ts +0 -577
  1403. package/dist/index-U0o7kU0s.d.ts +0 -69
  1404. package/dist/index-WEafENqH.d.ts +0 -149
  1405. package/dist/index-Yep7auV-.d.ts +0 -287
  1406. package/dist/index-eTY4kJzo.d.ts +0 -163
  1407. package/dist/invalidate-BLiBFbLy.d.ts +0 -19
  1408. package/dist/json-schema-DWDTfD8J.js +0 -888
  1409. package/dist/jwks-cache-CRymV-Dr.js +0 -49
  1410. package/dist/kit-Ct4Z6GIO.js +0 -127
  1411. package/dist/kit-DKfbNTAA.d.ts +0 -94
  1412. package/dist/knowledge-BKGrXdS_.js +0 -272
  1413. package/dist/knowledge-CFkCRxO9.d.ts +0 -202
  1414. package/dist/list-query-BtluNnYk.d.ts +0 -222
  1415. package/dist/list-query-CuS1w2Af.js +0 -559
  1416. package/dist/live-CZtRMh62.js +0 -246
  1417. package/dist/mentions-ByYnRNIG.js +0 -114
  1418. package/dist/messages-DNzIVvgN.js +0 -492
  1419. package/dist/messaging-BC-P-yAv.js +0 -329
  1420. package/dist/messaging-CZ6aWb10.d.ts +0 -297
  1421. package/dist/methods-7u6vSgz_.js +0 -11
  1422. package/dist/mfa-wrx1rqJT.d.ts +0 -36
  1423. package/dist/model-Btl8X9cs.d.ts +0 -326
  1424. package/dist/model-messages-D-jVOIOK.js +0 -206
  1425. package/dist/money-codec-jMP0PQLZ.js +0 -41
  1426. package/dist/onboarding-CGMuX7sP.js +0 -68
  1427. package/dist/openapi/index.d.ts +0 -5
  1428. package/dist/openapi/index.js +0 -36
  1429. package/dist/operations-nWYRexee.d.ts +0 -6
  1430. package/dist/options-289GJc2l.d.ts +0 -52
  1431. package/dist/options-70OsM-wK.js +0 -10
  1432. package/dist/options-B7EJaOX-.js +0 -5
  1433. package/dist/options-BkpqTGrJ.js +0 -8
  1434. package/dist/options-Blg8lAkz.js +0 -9
  1435. package/dist/options-Bn4cu0gt.js +0 -5
  1436. package/dist/options-BnoJOwXK.js +0 -8
  1437. package/dist/options-C2HesT4A.js +0 -9
  1438. package/dist/options-C3EzJATk.js +0 -10
  1439. package/dist/options-C3hZ1fbC.js +0 -10
  1440. package/dist/options-CAzVf-1T.js +0 -8
  1441. package/dist/options-CGKSUFUq.js +0 -5
  1442. package/dist/options-CGjGE8xS.js +0 -12
  1443. package/dist/options-CUqQ9pm7.js +0 -9
  1444. package/dist/options-CalPr6kN.d.ts +0 -12
  1445. package/dist/options-CfxBliP6.d.ts +0 -17
  1446. package/dist/options-ChD15QxJ.js +0 -9
  1447. package/dist/options-CmoJsd4V.d.ts +0 -8
  1448. package/dist/options-CyD7OObW.js +0 -17
  1449. package/dist/options-D1blDihM.js +0 -9
  1450. package/dist/options-D2Gd6VfS.js +0 -8
  1451. package/dist/options-D4aD9qwB.js +0 -5
  1452. package/dist/options-D65jzn7S.js +0 -5
  1453. package/dist/options-D7f2VKzj.js +0 -25
  1454. package/dist/options-D7sgG1bQ.js +0 -16
  1455. package/dist/options-DJm31rsi.d.ts +0 -16
  1456. package/dist/options-DXqcJyOP.js +0 -10
  1457. package/dist/options-DXuA4JVa.d.ts +0 -15
  1458. package/dist/options-DZupPoI0.d.ts +0 -10
  1459. package/dist/options-Dm-2crCx.d.ts +0 -273
  1460. package/dist/options-Dmg1Da9P.js +0 -25
  1461. package/dist/options-DsUgamiy.js +0 -5
  1462. package/dist/options-DujalSfR.js +0 -10
  1463. package/dist/options-Dz3hJxUw.d.ts +0 -10
  1464. package/dist/options-HSv8R6h5.js +0 -13
  1465. package/dist/options-I8zVkB_y.js +0 -8
  1466. package/dist/options-MHhjOoWz.js +0 -5
  1467. package/dist/options-MLxMkd5B.js +0 -11
  1468. package/dist/options-MQfTGMgP.d.ts +0 -14
  1469. package/dist/options-OJ5zmgr8.js +0 -10
  1470. package/dist/options-OMAUVcKK.d.ts +0 -10
  1471. package/dist/options-_9arpsX9.js +0 -11
  1472. package/dist/options-a-28mlYT.js +0 -9
  1473. package/dist/options-kLKILdIu.js +0 -10
  1474. package/dist/options-n22NK3PL.js +0 -8
  1475. package/dist/options-qU8vgxhO.js +0 -18
  1476. package/dist/options-te6d5-yz.d.ts +0 -19
  1477. package/dist/options-wFnK3qWl.js +0 -9
  1478. package/dist/options-xVAy3UsV.js +0 -9
  1479. package/dist/organizations-DtehZg3J.js +0 -401
  1480. package/dist/outbox-CsF_iKjx.d.ts +0 -199
  1481. package/dist/overlay/index.d.ts +0 -249
  1482. package/dist/overlay/index.js +0 -561
  1483. package/dist/payments-BtScsgPS.js +0 -16
  1484. package/dist/payments-CBzQIjoX.d.ts +0 -114
  1485. package/dist/permissions-BetA_Fo_.js +0 -34
  1486. package/dist/plugin-Ar5546xh.d.ts +0 -202
  1487. package/dist/plugin-D9bYbYli.js +0 -45
  1488. package/dist/plugins/actor/index.d.ts +0 -19
  1489. package/dist/plugins/actor/index.js +0 -57
  1490. package/dist/plugins/rules/index.d.ts +0 -96
  1491. package/dist/plugins/rules/index.js +0 -235
  1492. package/dist/plugins/soft-delete/index.d.ts +0 -39
  1493. package/dist/plugins/soft-delete/index.js +0 -90
  1494. package/dist/plugins/tenant/index.d.ts +0 -60
  1495. package/dist/plugins/tenant/index.js +0 -119
  1496. package/dist/plugins/timestamps/index.d.ts +0 -11
  1497. package/dist/plugins/timestamps/index.js +0 -47
  1498. package/dist/plugins/validation/index.d.ts +0 -24
  1499. package/dist/plugins/validation/index.js +0 -83
  1500. package/dist/pool-CRkU15dA.d.ts +0 -123
  1501. package/dist/pool-errors-B17BQRW-.js +0 -27
  1502. package/dist/ports-DsJicwI2.d.ts +0 -89
  1503. package/dist/ports-yajgT0t0.js +0 -139
  1504. package/dist/postgrest-DHLlN2nS.d.ts +0 -53
  1505. package/dist/powersync/react/index.d.ts +0 -93
  1506. package/dist/powersync/react/index.js +0 -120
  1507. package/dist/preset-DzcQ5CQM.js +0 -841
  1508. package/dist/problem-BWElIgIb.js +0 -162
  1509. package/dist/problem-DpHB7tWl.d.ts +0 -79
  1510. package/dist/provider-DmiaI1qt.d.ts +0 -112
  1511. package/dist/provider-EJ0-5GwJ.js +0 -57
  1512. package/dist/push-token-BxKmYhwk.d.ts +0 -24
  1513. package/dist/queries-Dw8y9bvz.js +0 -245
  1514. package/dist/rank-result-C_sHjkiz.js +0 -18
  1515. package/dist/rank-result-DwR0FawB.d.ts +0 -14
  1516. package/dist/rate-limit-B_U12PdL.js +0 -49
  1517. package/dist/rate-limit-CrOuXfjj.d.ts +0 -50
  1518. package/dist/rate-limit-DExDw3Cy.js +0 -327
  1519. package/dist/react-28VgUbm9.js +0 -852
  1520. package/dist/react-controller-CKSdtJ10.js +0 -43
  1521. package/dist/react-env-CfA3EdBH.js +0 -20
  1522. package/dist/read-set-BAR84kPC.js +0 -199
  1523. package/dist/recordings-DgDu7AOt.d.ts +0 -119
  1524. package/dist/refusal-DXydjgsS.js +0 -64
  1525. package/dist/refusal-efy5bZMd.d.ts +0 -32
  1526. package/dist/replicas-BvIL4_jL.js +0 -94
  1527. package/dist/resolve-CzUKTIMq.d.ts +0 -289
  1528. package/dist/resolve-DAYdcs22.js +0 -892
  1529. package/dist/resolved-names-Dr7brlLL.js +0 -133
  1530. package/dist/resource-BRRU-A7j.js +0 -91
  1531. package/dist/resource-DYDEnww-.d.ts +0 -115
  1532. package/dist/resource-Dk_JYsOt.js +0 -469
  1533. package/dist/resource-execute-bT9ltHVT.d.ts +0 -15
  1534. package/dist/resource-types-Bzt_bpR5.d.ts +0 -153
  1535. package/dist/resources-BV6j5TTD.js +0 -64
  1536. package/dist/resources-Du5wcL3f.d.ts +0 -7
  1537. package/dist/respond-CZYibxUx.d.ts +0 -101
  1538. package/dist/respond-z_yfyitp.js +0 -100
  1539. package/dist/result-B3m7xtRY.js +0 -146
  1540. package/dist/result-C6jDfedy.d.ts +0 -350
  1541. package/dist/rows-Bb0EPupt.js +0 -80
  1542. package/dist/rows-CtLWqdGQ.js +0 -39
  1543. package/dist/rrule-xDm2znty.js +0 -290
  1544. package/dist/rules-DcW5mj1r.js +0 -287
  1545. package/dist/run-state-CPo-1X2B.d.ts +0 -12
  1546. package/dist/sales-lines-9HsX89aO.d.ts +0 -28
  1547. package/dist/sales-lines-BhrIx2oK.js +0 -41
  1548. package/dist/sales-shared-C_u68eq2.js +0 -22
  1549. package/dist/sales-shared-DAAGwQwN.d.ts +0 -8
  1550. package/dist/schemas-9Ci3K0Hk.js +0 -103
  1551. package/dist/schemas-ypoQZ_6N.js +0 -157
  1552. package/dist/scores-CsURQDUB.d.ts +0 -172
  1553. package/dist/scores-DdPZVVt8.js +0 -177
  1554. package/dist/search-ToCOlCZ8.js +0 -106
  1555. package/dist/sections-DjxYmpu-.js +0 -26
  1556. package/dist/server-types-BOs-eFpo.d.ts +0 -809
  1557. package/dist/session-BgsOPGZs.d.ts +0 -97
  1558. package/dist/settings-mL-i7QUM.js +0 -93
  1559. package/dist/shared-LmlfYPv4.js +0 -60
  1560. package/dist/shared-eVrl39dX.js +0 -17
  1561. package/dist/sign-in-lAyf6Ohy.js +0 -386
  1562. package/dist/signatures-GUBuhLOB.js +0 -145
  1563. package/dist/signatures-zbu6KTNQ.d.ts +0 -43
  1564. package/dist/signers-D6ecZl22.d.ts +0 -390
  1565. package/dist/signing-keys-B3RHGMMu.d.ts +0 -119
  1566. package/dist/signing-keys-fWapUzi0.js +0 -164
  1567. package/dist/solid-bind-C1jeq4Qm.d.ts +0 -11
  1568. package/dist/solid-bind-iHGfGtBK.js +0 -38
  1569. package/dist/solid-controller-DGuv7V8a.js +0 -13
  1570. package/dist/spec-CoWHDoud.js +0 -119
  1571. package/dist/spec-pins-CZ2CL8YZ.d.ts +0 -120
  1572. package/dist/spec-pins-D3Tm6HJi.js +0 -60
  1573. package/dist/sql-CVYjOUyG.js +0 -421
  1574. package/dist/sql-rQDL6PIL.js +0 -122247
  1575. package/dist/sso-B744gHeS.d.ts +0 -161
  1576. package/dist/sso-Bt9HocgW.js +0 -217
  1577. package/dist/standard-DbQsD2xZ.d.ts +0 -7
  1578. package/dist/standard-DtkpFGkS.js +0 -25
  1579. package/dist/stats-qCEV5M3B.js +0 -1147
  1580. package/dist/store-o0HwYXl8.d.ts +0 -83
  1581. package/dist/subject-readers-CsTpx44c.js +0 -49
  1582. package/dist/subject-readers-DEZ45DQF.d.ts +0 -21
  1583. package/dist/subjects-B6p4oAZJ.d.ts +0 -78
  1584. package/dist/subjects-DXFmanh5.d.ts +0 -90
  1585. package/dist/subjects-DevU_atb.js +0 -107
  1586. package/dist/support-Ds1-UCN4.js +0 -534
  1587. package/dist/support-view-vwJbRMpV.d.ts +0 -17
  1588. package/dist/svelte-bind-BHN5a8VV.js +0 -46
  1589. package/dist/svelte-bind-Ja6CtQGp.d.ts +0 -13
  1590. package/dist/svelte-controller-oFKC9AYu.js +0 -19
  1591. package/dist/table-schema-BcB-VCQb.js +0 -293
  1592. package/dist/table-schema-Cb-IV_pZ.d.ts +0 -78
  1593. package/dist/tags-CLXi2c6O.d.ts +0 -30
  1594. package/dist/tags-C_ym1yDM.js +0 -39
  1595. package/dist/tags-EnvIccSJ.js +0 -86
  1596. package/dist/tanstack-db/supabase/index.d.ts +0 -66
  1597. package/dist/tanstack-db/supabase/index.js +0 -271
  1598. package/dist/tax-CIIxd8Zf.d.ts +0 -170
  1599. package/dist/tax-DmOMjrYc.js +0 -140
  1600. package/dist/tee-DwkUvJD_.js +0 -101
  1601. package/dist/template-BWP7IXZg.js +0 -126
  1602. package/dist/temporal-required-B8qQHYbI.js +0 -20
  1603. package/dist/tenant-Bg4PDLkG.d.ts +0 -17
  1604. package/dist/tenant-DnMqeNIM.js +0 -27
  1605. package/dist/timeline-0_hTBH0-.js +0 -52
  1606. package/dist/timeline-DUUsPLv5.d.ts +0 -152
  1607. package/dist/timing-C5NzaEgy.js +0 -95
  1608. package/dist/topic-CPOmMgkf.js +0 -643
  1609. package/dist/topic-D9j8G2dw.d.ts +0 -415
  1610. package/dist/types-BEDfwXL4.d.ts +0 -251
  1611. package/dist/types-BRJHGhSq.d.ts +0 -177
  1612. package/dist/types-BTK75521.js +0 -8
  1613. package/dist/types-CGUDoF5I.d.ts +0 -624
  1614. package/dist/types-DkPE7yd2.d.ts +0 -194
  1615. package/dist/types-QHeku_6b.d.ts +0 -217
  1616. package/dist/types-uHD9yANu.d.ts +0 -700
  1617. package/dist/undo-B696duxr.d.ts +0 -46
  1618. package/dist/undo-vutx78k8.js +0 -44
  1619. package/dist/upload-claim-D_wgDbi7.js +0 -33
  1620. package/dist/usage-BI1E2940.js +0 -264
  1621. package/dist/usage-DBcVGqnr.d.ts +0 -232
  1622. package/dist/user-change-CSR_prhd.js +0 -133
  1623. package/dist/variants-DL7NpFJ7.js +0 -53
  1624. package/dist/vault-BQTdu4eH.d.ts +0 -62
  1625. package/dist/verify-27w0I5C9.js +0 -130
  1626. package/dist/verify-BmuCB4PW.d.ts +0 -146
  1627. package/dist/view-2_I-2ukO.d.ts +0 -90
  1628. package/dist/view-BtgqxQLM.js +0 -108
  1629. package/dist/vue-bind-CFxon-Vs.js +0 -45
  1630. package/dist/vue-bind-TPkbLl4z.d.ts +0 -11
  1631. package/dist/vue-controller-WtbuT-Ux.js +0 -13
  1632. package/dist/watch-CfMT6vX7.js +0 -139
  1633. package/dist/watch-DziJudwj.d.ts +0 -93
  1634. package/dist/watch-topic-CIT3UlAh.d.ts +0 -31
  1635. package/dist/wire-Bizdxvp-.js +0 -66
  1636. package/dist/work-items-Cnntm8ij.d.ts +0 -238
  1637. package/dist/workflow-builder-2q1iqHYG.js +0 -699
  1638. package/dist/workflow-sdk-BTYWQQg9.d.ts +0 -163
  1639. package/dist/workflow-sdk-_pqDUwNK.js +0 -242
  1640. package/dist/workflow-sdk-world-BIwGVy6S.js +0 -2401
  1641. package/dist/workflows-D8U7KyXJ.d.ts +0 -258
  1642. package/dist/workflows-VJBSV-QR.js +0 -285
  1643. package/skills/better-supabase/references/plugins.md +0 -71
@@ -0,0 +1,2435 @@
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 { i as schemasDirOf, n as migrationsDir, o as writtenByBlocks } from "./sql-layout-rFP0oq1N.js";
8
+ 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";
9
+ import { i as legacyPrefixNames, n as LEGACY_PREFIXES, t as LEGACY_CLAIMS } from "./legacy-prefix-DkTA3Rhx.js";
10
+ 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";
11
+ import { a as RECORD_BINDING_RENAMES, n as groupConfigJson, r as groupConfigSource, t as cutRange } from "./config-group-C8tjut39.js";
12
+ import { existsSync } from "node:fs";
13
+ import { extname, join, relative, resolve } from "node:path";
14
+ import { readFile, readdir, stat } from "node:fs/promises";
15
+ import { DEFAULT_CONVENTIONS, presetSpec } from "better-supabase/preset";
16
+ import { currentBlockName, renamedBlock } from "better-supabase/sql";
17
+ import { BLOCK_EVENT_RENAMES } from "better-supabase/events";
18
+ //#region src/cli/codemod-calls.ts
19
+ /** Files whose CLI calls a codemod rewrites. */
20
+ const CLI_CALL_FILE = /(?:^|[\\/])(?:package\.json|\.github[\\/]workflows[\\/][^\\/]+\.ya?ml)$/;
21
+ /** Other files that run shell commands; their CLI calls are listed for review. */
22
+ const SHELL_FILE = /(?:^|[\\/])(?:[^\\/]+\.(?:sh|bash|zsh|ya?ml)|Makefile|justfile|Dockerfile)$/;
23
+ /** The bin, with an optional `@version`, followed by its arguments. */
24
+ const BIN = /(?<![\w.@-])(?:better-supabase|bsb)(?:@[\w.^~-]+)?(?=[ \t])/g;
25
+ /**
26
+ * Where a call's arguments end: a line break, a shell operator, a closing quote
27
+ * or a comment.
28
+ */
29
+ const CALL_END = /\r?\n|&&|\|\||[;|)`]|\\?"|\s#/;
30
+ /** `pnpm --filter better-supabase <script>` names the package, not the bin. */
31
+ const PACKAGE_FILTER = /(?:--filter|-F)[= ]$/;
32
+ function cliCalls(text, migrate) {
33
+ const calls = [];
34
+ for (const match of text.matchAll(BIN)) {
35
+ if (PACKAGE_FILTER.test(text.slice(0, match.index))) continue;
36
+ const start = match.index + match[0].length;
37
+ const tail = text.slice(start);
38
+ const end = start + (CALL_END.exec(tail)?.index ?? tail.length);
39
+ const words = text.slice(start, end).trim().split(/\s+/u);
40
+ const to = words[0] === "" ? void 0 : migrate(words);
41
+ if (to) calls.push({
42
+ start,
43
+ end,
44
+ bin: match[0],
45
+ to
46
+ });
47
+ }
48
+ return calls;
49
+ }
50
+ /**
51
+ * A CLI call followed by `&&` and the same call again. The call starts after a
52
+ * shell operator, a quote, a line break or a YAML `run:`, and the repeat ends
53
+ * at one, so only whole commands match.
54
+ */
55
+ const REPEATED_CALL = /((?:^|&&|\|\||[;:\n"'`(])[ \t]*)([^&|;\n"'`()]*?(?<![\w.@-])(?:better-supabase|bsb)(?:@[\w.^~-]+)?[ \t][^&|;\n"'`()]*?)[ \t]*&&[ \t]*\2(?=[ \t]*(?:&&|\|\||[;\n"'`)]|$))/g;
56
+ /**
57
+ * `text` with each run of identical CLI calls joined by `&&` kept once. Two old
58
+ * commands can move to the same new one (`sql sync` and `sql upgrade` both
59
+ * become `upgrade`), and running it twice in a row does the work twice.
60
+ */
61
+ function collapseRepeatedCalls(text) {
62
+ let out = text;
63
+ let previous;
64
+ while (out !== previous) {
65
+ previous = out;
66
+ out = out.replaceAll(REPEATED_CALL, "$1$2");
67
+ }
68
+ return out;
69
+ }
70
+ /** `text` with every moved CLI call spelled the new way. */
71
+ function rewriteCliCalls(text, migrate) {
72
+ const calls = cliCalls(text, migrate);
73
+ if (calls.length === 0) return text;
74
+ let out = "";
75
+ let cursor = 0;
76
+ for (const call of calls) {
77
+ const original = text.slice(call.start, call.end);
78
+ const trailing = /\s*$/u.exec(original)?.[0] ?? "";
79
+ out += `${text.slice(cursor, call.start)} ${call.to.join(" ")}${trailing}`;
80
+ cursor = call.end;
81
+ }
82
+ return collapseRepeatedCalls(out + text.slice(cursor));
83
+ }
84
+ /** One review line per moved CLI call, with the new spelling. */
85
+ function cliCallHints(text, migrate) {
86
+ return cliCalls(text, migrate).map((call) => ({
87
+ line: text.slice(0, call.start).split("\n").length,
88
+ message: `This call uses a renamed command or flag: run \`${call.bin} ${call.to.join(" ")}\``
89
+ }));
90
+ }
91
+ //#endregion
92
+ //#region src/cli/codemod-preset-code.ts
93
+ /**
94
+ * The 0.14 preset code layout, frozen: the fields in code order with their
95
+ * values and widths, then one bit per block. Codes are no longer written; the
96
+ * 0.15 codemod reads them into a preset object.
97
+ */
98
+ const FIELDS = [
99
+ {
100
+ key: "framework",
101
+ values: [
102
+ "next",
103
+ "vite",
104
+ "tanstack-start",
105
+ "expo",
106
+ "sveltekit",
107
+ "nuxt",
108
+ "hono",
109
+ "astro",
110
+ "react-router"
111
+ ],
112
+ bits: 5
113
+ },
114
+ {
115
+ key: "platforms",
116
+ values: [
117
+ "web",
118
+ "native",
119
+ "both"
120
+ ],
121
+ bits: 2
122
+ },
123
+ {
124
+ key: "casing",
125
+ values: ["snake", "camel"],
126
+ bits: 2
127
+ },
128
+ {
129
+ key: "idType",
130
+ values: [
131
+ "uuid",
132
+ "text",
133
+ "bigint",
134
+ "integer"
135
+ ],
136
+ bits: 3
137
+ },
138
+ {
139
+ key: "scope",
140
+ values: [
141
+ "tenant",
142
+ "user",
143
+ "none"
144
+ ],
145
+ bits: 2
146
+ },
147
+ {
148
+ key: "tenantName",
149
+ values: [
150
+ "organization",
151
+ "workspace",
152
+ "team"
153
+ ],
154
+ bits: 3
155
+ },
156
+ {
157
+ key: "access",
158
+ values: [
159
+ "roles",
160
+ "catalog",
161
+ "provider",
162
+ "custom"
163
+ ],
164
+ bits: 3
165
+ },
166
+ {
167
+ key: "api",
168
+ values: ["none", "api"],
169
+ bits: 2
170
+ },
171
+ {
172
+ key: "integrations",
173
+ values: [
174
+ "next",
175
+ "hono",
176
+ "orpc",
177
+ "edge",
178
+ "expo",
179
+ "mcp",
180
+ "client",
181
+ "react"
182
+ ],
183
+ bits: 16,
184
+ multi: true
185
+ }
186
+ ];
187
+ /** The 0.14 block bits, in order; `null` marks a removed block. */
188
+ const BLOCKS = [
189
+ "updated-at",
190
+ "actor",
191
+ "audit",
192
+ "tenant",
193
+ "invitations",
194
+ "reserved-slugs",
195
+ "jobs",
196
+ "idempotency",
197
+ "webhook-inbox",
198
+ "realtime-tables",
199
+ "jsonb-schemas",
200
+ "pgtap",
201
+ "grants",
202
+ "read-sets",
203
+ "mfa",
204
+ "entitlements",
205
+ "rate-limit",
206
+ "vector-search",
207
+ "access",
208
+ "support-sessions",
209
+ "organizations",
210
+ "profiles",
211
+ "outbox",
212
+ "notifications",
213
+ "webhooks-out",
214
+ "sessions",
215
+ "webhooks-in",
216
+ "api-keys",
217
+ "settings",
218
+ "usage",
219
+ "billing",
220
+ "flags",
221
+ "comments",
222
+ "attachments",
223
+ "data-lifecycle",
224
+ "sso",
225
+ "onboarding",
226
+ "waitlist",
227
+ "announcements",
228
+ "streams",
229
+ "credentials",
230
+ "workflows",
231
+ "workflow-sdk-world",
232
+ "workflow-builder",
233
+ "chat-sdk-state",
234
+ "inbox",
235
+ "ai-chat",
236
+ "ai-files",
237
+ "knowledge",
238
+ "memory",
239
+ "agents",
240
+ "connectors",
241
+ "ai-tasks",
242
+ "push",
243
+ "ai-cache",
244
+ "ai-providers",
245
+ "number-sequences",
246
+ "teams",
247
+ "tags",
248
+ "state-machine",
249
+ "custom-fields",
250
+ "share-links",
251
+ "reminders",
252
+ "imports",
253
+ "subjects",
254
+ "rank",
255
+ "saved-views",
256
+ "relations",
257
+ "bulk",
258
+ "search",
259
+ "metrics",
260
+ "calendar",
261
+ "bookings",
262
+ "versions",
263
+ "trash",
264
+ "reactions",
265
+ "approvals",
266
+ "access-requests",
267
+ "documents",
268
+ "catalog",
269
+ "inventory",
270
+ "drive",
271
+ "drive-files",
272
+ "orders",
273
+ "promotions",
274
+ "forms",
275
+ "signatures",
276
+ "time-tracking",
277
+ "identities",
278
+ "service-principals",
279
+ "templates",
280
+ "pipelines",
281
+ "parties",
282
+ "engagements",
283
+ "deals",
284
+ "work-items",
285
+ "quotes",
286
+ "invoices",
287
+ "sla",
288
+ "targets",
289
+ "hiring",
290
+ "employees",
291
+ "collections",
292
+ "ensure-rls",
293
+ "signing-keys",
294
+ "shared-signals",
295
+ "oauth-server",
296
+ "domains",
297
+ "reviews",
298
+ "leave",
299
+ "rules",
300
+ "vercel-marketplace",
301
+ "ledger",
302
+ "assets",
303
+ "scores",
304
+ "moderation",
305
+ "enrollments",
306
+ "guests",
307
+ "passes",
308
+ "billable-time",
309
+ "leases",
310
+ "expenses",
311
+ "donations",
312
+ "dispatch",
313
+ "shipments",
314
+ "contracts",
315
+ "controls",
316
+ "incidents",
317
+ "courses",
318
+ "messaging",
319
+ "channels",
320
+ "activity",
321
+ "mail-sync",
322
+ "segments",
323
+ "assignment",
324
+ "enrichment",
325
+ "forecasts",
326
+ "field-history",
327
+ "sequences",
328
+ "lead-scoring",
329
+ "posts",
330
+ "field-encryption"
331
+ ];
332
+ const BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
333
+ /** Whether `value` reads as a 0.14 preset code: `1` and base62 digits. */
334
+ function isLegacyPresetCode(value) {
335
+ return /^1[0-9A-Za-z]+$/.test(value);
336
+ }
337
+ /**
338
+ * The conventions and blocks a 0.14 preset code holds, the blocks under their
339
+ * 0.15 names. Throws a TypeError when `code` isn't one.
340
+ */
341
+ function decodeLegacyPresetCode(code) {
342
+ if (!isLegacyPresetCode(code)) throw new TypeError(`"${code}" is not a 0.14 preset code.`);
343
+ let value = 0n;
344
+ for (const char of code.slice(1)) value = value * 62n + BigInt(BASE62.indexOf(char));
345
+ const preset = {};
346
+ for (const field of FIELDS) {
347
+ const bits = value & (1n << BigInt(field.bits)) - 1n;
348
+ value >>= BigInt(field.bits);
349
+ if (field.multi === true) {
350
+ preset[field.key] = field.values.filter((_, index) => (bits >> BigInt(index) & 1n) === 1n);
351
+ continue;
352
+ }
353
+ const each = field.values[Number(bits)];
354
+ if (each === void 0) throw new TypeError(`Preset code "${code}" has an unknown ${field.key}.`);
355
+ preset[field.key] = each;
356
+ }
357
+ const blocks = [];
358
+ for (let index = 0; value > 0n; index += 1, value >>= 1n) {
359
+ const name = BLOCKS[index];
360
+ if ((value & 1n) === 1n && name !== null && name !== void 0) blocks.push(currentBlockName(name));
361
+ }
362
+ return {
363
+ ...preset,
364
+ blocks
365
+ };
366
+ }
367
+ /** The preset a 0.14 code holds, as the name or object the config takes. */
368
+ function specOfCode(code) {
369
+ const { blocks, ...decoded } = decodeLegacyPresetCode(code);
370
+ return presetSpec({
371
+ ...DEFAULT_CONVENTIONS,
372
+ ...decoded,
373
+ blocks: typeof blocks === "string" ? [blocks] : blocks ?? []
374
+ });
375
+ }
376
+ const PRESET_CODE = /(\bpreset\s*:\s*|"preset"\s*:\s*)(["'])((?:https?:\/\/[^"'?]*\?(?:[^"']*&)?preset=)?)(1[0-9A-Za-z]+)([^"']*)\2/;
377
+ /**
378
+ * `better-supabase.config.*` with a 0.14 preset code (or a Create URL holding
379
+ * one) in `preset` rewritten to the preset object or name it holds.
380
+ */
381
+ function convertConfigPresetCode(source, json) {
382
+ const match = PRESET_CODE.exec(source);
383
+ if (match === null || match[5] !== "") return {
384
+ ok: true,
385
+ text: source
386
+ };
387
+ const spec = specOfCode(match[4] ?? "");
388
+ return json ? setPresetInJson(source, spec) : setPresetInConfig(source, spec);
389
+ }
390
+ /**
391
+ * A 0.14 design file (`{ preset: "<code>", design }`) as a 0.15 one: the design
392
+ * with the preset object inside. Other JSON is returned as it is.
393
+ */
394
+ function convertDesignFile(source) {
395
+ let value;
396
+ try {
397
+ value = JSON.parse(source);
398
+ } catch {
399
+ return {
400
+ ok: false,
401
+ reason: "it isn't valid JSON"
402
+ };
403
+ }
404
+ if (typeof value !== "object" || value === null || !("preset" in value) || !("design" in value) || typeof value.preset !== "string" || typeof value.design !== "object" || value.design === null) return {
405
+ ok: true,
406
+ text: source
407
+ };
408
+ const preset = isLegacyPresetCode(value.preset) ? specOfCode(value.preset) : value.preset;
409
+ return {
410
+ ok: true,
411
+ text: `${JSON.stringify({
412
+ ...value.design,
413
+ preset
414
+ }, null, 2)}\n`
415
+ };
416
+ }
417
+ /** A design file Create downloaded (`better-supabase.design.json`). */
418
+ const DESIGN_FILE_NAME = /(?:^|[\\/])[^\\/]*\.design\.json$/;
419
+ const reviewOf = (edit) => edit.ok && "review" in edit ? edit.review : [];
420
+ /** `edit`, then `convertConfigPresetCode` on its text, with both reviews. */
421
+ function thenConvertPresetCode(edit, json) {
422
+ if (!edit.ok) return edit;
423
+ const converted = convertConfigPresetCode(edit.text, json);
424
+ return converted.ok ? {
425
+ ok: true,
426
+ text: converted.text,
427
+ review: [...reviewOf(edit), ...reviewOf(converted)]
428
+ } : converted;
429
+ }
430
+ /** A codemod's `designFile` rewrite as a result; a refusal is listed for review. */
431
+ function designFileResult(source, rewrite) {
432
+ if (rewrite === void 0) return {
433
+ text: source,
434
+ review: []
435
+ };
436
+ const edit = rewrite(source);
437
+ return edit.ok ? {
438
+ text: edit.text,
439
+ review: reviewOf(edit)
440
+ } : {
441
+ text: source,
442
+ review: [{
443
+ line: 1,
444
+ message: `The design file wasn't rewritten: ${edit.reason}`
445
+ }]
446
+ };
447
+ }
448
+ //#endregion
449
+ //#region src/cli/codemod-sql-names.ts
450
+ /**
451
+ * The 0.15 `bs_` to `bsb_` rename in the app's own SQL. The upgrade migration
452
+ * renames the objects in the database, but SQL the app wrote (pgTAP tests, its
453
+ * schema files, its newest migration) still names them the old way, so the
454
+ * codemod lists those lines. It never rewrites SQL: a pushed migration must not
455
+ * change, and a test may name an object on purpose.
456
+ */
457
+ const LEGACY_NAME = /\bbs_[a-z0-9_]+/g;
458
+ const CURRENT_NAME = /\bbsb_[a-z0-9_]+/g;
459
+ /**
460
+ * The `bs_` names the 0.15 rename covers, from the files better-supabase wrote:
461
+ * their old `bs_` names before `upgrade` rewrites them, or the `bs_` form of
462
+ * their `bsb_` names after.
463
+ */
464
+ function renamedSqlNames(blockFiles) {
465
+ const text = blockFiles.join("\n");
466
+ return /* @__PURE__ */ new Set([...legacyPrefixNames(text), ...[...new Set(text.match(CURRENT_NAME))].map((name) => `bs_${name.slice(4)}`).filter((name) => !LEGACY_CLAIMS.has(name))]);
467
+ }
468
+ const renamed = (name, names) => names.has(name) || LEGACY_PREFIXES.some((prefix) => name.startsWith(prefix));
469
+ /** One hint per line and renamed name in `sources`. */
470
+ function sqlNameHints(sources, names) {
471
+ const hints = [];
472
+ for (const source of sources) for (const [index, line] of source.text.split("\n").entries()) for (const name of new Set(line.match(LEGACY_NAME))) if (renamed(name, names)) hints.push({
473
+ file: source.path,
474
+ line: index + 1,
475
+ message: `${name} is bsb_${name.slice(3)} since 0.15, and the upgrade migration renames it in the database. Rename it here, in SQL that runs after that migration.`
476
+ });
477
+ return hints;
478
+ }
479
+ async function sqlFiles(dir) {
480
+ if (!existsSync(dir)) return [];
481
+ const files = [];
482
+ for (const entry of await readdir(dir, { withFileTypes: true })) {
483
+ const full = join(dir, entry.name);
484
+ if (entry.isDirectory()) files.push(...await sqlFiles(full));
485
+ else if (entry.name.endsWith(".sql")) files.push(full);
486
+ }
487
+ return files.toSorted();
488
+ }
489
+ /**
490
+ * Lines of the app's SQL that name a `bs_` object the 0.15 upgrade renames: the
491
+ * pgTAP tests (`sql.testsDir`), the schema files no block wrote, and the newest
492
+ * migration the app wrote. Older migrations already ran, so they stay as they
493
+ * are.
494
+ */
495
+ async function legacySqlNameHints(config) {
496
+ const read = async (path) => ({
497
+ path: relative(config.root, path).replaceAll("\\", "/"),
498
+ text: await readFile(path, "utf-8")
499
+ });
500
+ const [tests, schemas, migrations] = await Promise.all([
501
+ Promise.all((await sqlFiles(join(config.root, config.sql.testsDir))).map(read)),
502
+ Promise.all((await sqlFiles(join(config.root, await schemasDirOf(config)))).map(read)),
503
+ Promise.all((await sqlFiles(join(config.root, migrationsDir(config)))).map(read))
504
+ ]);
505
+ const names = renamedSqlNames([...schemas, ...migrations].filter(writtenByBlocks).map((file) => file.text));
506
+ const latest = migrations.findLast((file) => !writtenByBlocks(file));
507
+ return sqlNameHints([
508
+ ...tests.filter((file) => !writtenByBlocks(file)),
509
+ ...schemas.filter((file) => !writtenByBlocks(file)),
510
+ ...latest === void 0 ? [] : [latest]
511
+ ], names);
512
+ }
513
+ //#endregion
514
+ //#region src/cli/codemod-data-contract.ts
515
+ /** The query guards named after the retired verbs. */
516
+ const DATA_CONTRACT_OPTIONS = [{
517
+ call: "guards",
518
+ from: "noUnboundedFindMany",
519
+ to: "noUnboundedList"
520
+ }, {
521
+ call: "guards",
522
+ from: "noDeleteManyWithoutWhere",
523
+ to: "noDeleteWithoutWhere"
524
+ }];
525
+ /** The lint rules named after the retired verbs. */
526
+ const DATA_CONTRACT_STRINGS = {
527
+ "better-supabase/no-unbounded-find-many": "better-supabase/no-unbounded-list",
528
+ "better-supabase/no-delete-many-without-where": "better-supabase/no-empty-where"
529
+ };
530
+ const RENAMED = {
531
+ findMany: "list",
532
+ paginate: "page",
533
+ findById: "get",
534
+ createMany: "create",
535
+ upsertMany: "upsert"
536
+ };
537
+ const CALL = /\.(findMany|paginate|findById|createMany|upsertMany|updateMany|deleteMany|findUnique|findOnly|findFirst|exists)(\s*)\(/g;
538
+ 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)";
539
+ /**
540
+ * Rewrites the 0.14 repository methods to the 0.15 data contract. A call nested
541
+ * in another rewritten call's arguments is rewritten on the next pass.
542
+ */
543
+ function rewriteDataContract(source, options = {}) {
544
+ let text = source;
545
+ for (let pass = 0; pass < 4; pass += 1) {
546
+ const next = rewritePass(text, options);
547
+ if (next.text === text) return next;
548
+ text = next.text;
549
+ }
550
+ return rewritePass(text, options);
551
+ }
552
+ function rewritePass(source, options) {
553
+ const code = options.raw === true ? source : mask(source);
554
+ const edits = [];
555
+ const review = [];
556
+ for (const match of code.matchAll(CALL)) {
557
+ const method = match[1];
558
+ const name = match.index + 1;
559
+ const open = match.index + match[0].length - 1;
560
+ const close = closingIndex(code, open);
561
+ if (close === -1) continue;
562
+ const edit = rewrite(source, code, {
563
+ method,
564
+ name,
565
+ open,
566
+ close
567
+ });
568
+ if (edit === void 0) review.push({
569
+ line: source.slice(0, name).split("\n").length,
570
+ message: REVIEW
571
+ });
572
+ else if (edit !== "skip") edits.push(...edit);
573
+ }
574
+ return {
575
+ text: apply(source, edits),
576
+ review
577
+ };
578
+ }
579
+ function rewrite(source, code, call) {
580
+ const { method, name, open, close } = call;
581
+ const renamed = RENAMED[method];
582
+ if (renamed !== void 0) return [{
583
+ start: name,
584
+ end: name + method.length,
585
+ text: renamed
586
+ }];
587
+ const sole = soleArgument(code, open, close);
588
+ if (sole === "several") return method === "exists" ? "skip" : void 0;
589
+ const argument = sole === "none" ? void 0 : sole;
590
+ if (method === "exists") {
591
+ if (argument !== void 0 && (code[argument] !== "{" || !properties(source, code, argument)?.some((prop) => prop.key === "where"))) return "skip";
592
+ return [{
593
+ start: name,
594
+ end: name + method.length,
595
+ text: "count"
596
+ }, {
597
+ start: close + 1,
598
+ end: close + 1,
599
+ text: ".map((n) => n > 0)"
600
+ }];
601
+ }
602
+ if (method === "findFirst") return findFirst(source, code, call, argument);
603
+ if (argument === void 0 || code[argument] !== "{") return;
604
+ const props = properties(source, code, argument);
605
+ if (!props) return;
606
+ const text = (key) => {
607
+ const prop = props.find((entry) => entry.key === key);
608
+ return prop === void 0 ? void 0 : source.slice(prop.valueStart, prop.valueEnd);
609
+ };
610
+ const rest = (...without) => props.filter((prop) => prop.key === void 0 || !without.includes(prop.key)).map((prop) => source.slice(prop.start, prop.valueEnd));
611
+ const value = text("where");
612
+ if (value === void 0) return;
613
+ const where = value === "where" ? "where" : `where: ${value}`;
614
+ const options = (extra) => {
615
+ const items = [...extra];
616
+ return items.length === 0 ? "" : `, { ${items.join(", ")} }`;
617
+ };
618
+ const replace = (verb, args) => [{
619
+ start: name,
620
+ end: close + 1,
621
+ text: `${verb}(${args})`
622
+ }];
623
+ switch (method) {
624
+ case "updateMany": {
625
+ const data = text("data");
626
+ return data === void 0 ? void 0 : replace("update", `{ ${where} }, ${data}${options(rest("where", "data"))}`);
627
+ }
628
+ case "deleteMany": return replace("delete", `{ ${where} }${options(rest("where"))}`);
629
+ case "findUnique": return replace("get", `${value}${options([...rest("where"), "optional: true"])}`);
630
+ case "findOnly": return replace("get", `{ ${where} }${options([...rest("where"), "optional: true"])}`);
631
+ default: return;
632
+ }
633
+ }
634
+ function findFirst(source, code, call, argument) {
635
+ const { name, open, close } = call;
636
+ const first = {
637
+ start: close + 1,
638
+ end: close + 1,
639
+ text: ".map((rows) => rows[0] ?? null)"
640
+ };
641
+ const verb = {
642
+ start: name,
643
+ end: name + 9,
644
+ text: "list"
645
+ };
646
+ if (argument === void 0) return [
647
+ verb,
648
+ {
649
+ start: open + 1,
650
+ end: close,
651
+ text: "{ limit: 1 }"
652
+ },
653
+ first
654
+ ];
655
+ if (code[argument] === "{") {
656
+ const end = closingIndex(code, argument);
657
+ const inner = source.slice(argument + 1, end).trim();
658
+ return [
659
+ verb,
660
+ {
661
+ start: argument,
662
+ end: end + 1,
663
+ text: inner.length === 0 ? "{ limit: 1 }" : `{ ${inner.replace(/,\s*$/, "")}, limit: 1 }`
664
+ },
665
+ first
666
+ ];
667
+ }
668
+ const value = source.slice(argument, close).trim();
669
+ return [
670
+ verb,
671
+ {
672
+ start: open + 1,
673
+ end: close,
674
+ text: `{ ...${value}, limit: 1 }`
675
+ },
676
+ first
677
+ ];
678
+ }
679
+ /** The index where the only argument starts. */
680
+ function soleArgument(code, open, close) {
681
+ const start = open + 1 + (/^\s*/.exec(code.slice(open + 1))?.[0].length ?? 0);
682
+ if (start >= close) return "none";
683
+ let depth = 0;
684
+ for (let index = start; index < close; index += 1) {
685
+ const char = code[index];
686
+ if (char === "\"" || char === "'" || char === "`") index = Math.max(index, code.indexOf(char, index + 1));
687
+ else if ("({[".includes(char)) depth += 1;
688
+ else if (")}]".includes(char)) depth -= 1;
689
+ else if (char === "," && depth === 0 && code.slice(index + 1, close).trim() !== "") return "several";
690
+ }
691
+ return start;
692
+ }
693
+ function apply(text, edits) {
694
+ let out = "";
695
+ let cursor = 0;
696
+ for (const edit of edits.toSorted((a, b) => a.start - b.start)) {
697
+ if (edit.start < cursor) continue;
698
+ out += text.slice(cursor, edit.start) + edit.text;
699
+ cursor = edit.end;
700
+ }
701
+ return out + text.slice(cursor);
702
+ }
703
+ const REQUIRE_TENANT = /\brequireTenant\b/g;
704
+ /**
705
+ * The data contract moves, then `requireTenant` renamed to
706
+ * `requireOrganization`.
707
+ */
708
+ function rewrite015(text) {
709
+ const result = rewriteDataContract(text);
710
+ return {
711
+ text: result.text.replaceAll(REQUIRE_TENANT, "requireOrganization"),
712
+ review: result.review
713
+ };
714
+ }
715
+ //#endregion
716
+ //#region src/cli/sql/config-adopt.ts
717
+ const ADOPT = /(?:\bownership|"ownership"|'ownership')\s*:\s*(["'])adopt\1[ \t]*,?/g;
718
+ const lineOf$1 = (text, index) => text.slice(0, index).split("\n").length;
719
+ /** `[start, end)` to delete for the property matched at `start..end`. */
720
+ function span(text, start, end) {
721
+ const lineStart = text.lastIndexOf("\n", start - 1) + 1;
722
+ const newline = text.indexOf("\n", end);
723
+ const lineEnd = newline === -1 ? text.length : newline;
724
+ if (text.slice(lineStart, start).trim() === "" && text.slice(end, lineEnd).trim() === "") {
725
+ const after = newline === -1 ? lineEnd : lineEnd + 1;
726
+ const before = text.slice(0, lineStart).trimEnd();
727
+ return text[end - 1] !== "," && before.endsWith(",") ? [before.length - 1, lineEnd] : [lineStart, after];
728
+ }
729
+ if (text[end - 1] === ",") return [start, end + (/^[ \t]*/.exec(text.slice(end))?.[0].length ?? 0)];
730
+ const before = text.slice(0, start).trimEnd();
731
+ return before.endsWith(",") ? [before.length - 1, end] : [start, end];
732
+ }
733
+ /** `source` without its `ownership: "adopt"` keys, and a review line each. */
734
+ function removeAdoptOwnership(source, json) {
735
+ const code = json ? source : mask(source);
736
+ const spans = [];
737
+ const review = [];
738
+ for (const match of source.matchAll(ADOPT)) {
739
+ const start = match.index;
740
+ const value = source.indexOf(match[1], start + 9 + 1);
741
+ if (!json && (code[start] === " " || code[value] !== match[1])) continue;
742
+ const removed = span(source, start, start + match[0].length);
743
+ const linesBefore = spans.map(([from, to]) => source.slice(from, to).split("\n").length - 1).reduce((sum, count) => sum + count, 0);
744
+ review.push({
745
+ line: Math.max(lineOf$1(source, removed[0]) - linesBefore, 1),
746
+ 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"
747
+ });
748
+ spans.push(removed);
749
+ }
750
+ let text = source;
751
+ for (const [start, end] of spans.toReversed()) text = text.slice(0, start) + text.slice(end);
752
+ return {
753
+ text,
754
+ review
755
+ };
756
+ }
757
+ /** `edit` with `ownership: "adopt"` removed from every block. */
758
+ function withoutAdoptOwnership(edit, json) {
759
+ if (!edit.ok) return edit;
760
+ const earlier = "review" in edit ? edit.review : [];
761
+ const { text, review } = removeAdoptOwnership(edit.text, json);
762
+ return {
763
+ ok: true,
764
+ text,
765
+ review: [...earlier, ...review]
766
+ };
767
+ }
768
+ //#endregion
769
+ //#region src/cli/sql/config-block-names.ts
770
+ const ENVIRONMENT_KEY = /^\$(?:development|production|test|ci)$/;
771
+ const STRING = /(["'`])([a-z0-9-]+)\1/g;
772
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
773
+ /** An operation name (`<block>.<action>`) under its block's 0.15 name. */
774
+ function currentOperationName(name) {
775
+ const dot = name.indexOf(".");
776
+ const to = dot === -1 ? void 0 : renamedBlock(name.slice(0, dot));
777
+ return to === void 0 ? name : `${to}${name.slice(dot)}`;
778
+ }
779
+ function applyEdits$2(source, edits) {
780
+ let text = source;
781
+ for (const edit of edits.toSorted((a, b) => b.start - a.start)) text = text.slice(0, edit.start) + edit.text + text.slice(edit.end);
782
+ return text;
783
+ }
784
+ /** The key token at `start` renamed to `to`, keeping its quotes. */
785
+ function keyEdit(source, start, key, to) {
786
+ const quote = source[start];
787
+ const quoted = quote === "\"" || quote === "'";
788
+ const bare = /^[A-Za-z_$][\w$]*$/.test(to);
789
+ return {
790
+ start,
791
+ end: start + key.length + (quoted ? 2 : 0),
792
+ text: quoted ? `${quote}${to}${quote}` : bare ? to : `"${to}"`
793
+ };
794
+ }
795
+ /** Edits renaming the keys of the object literal at `open` with `rename`. */
796
+ function keyEdits(source, code, open, rename) {
797
+ return (properties(source, code, open) ?? []).flatMap((prop) => {
798
+ if (prop.key === void 0 || prop.valueStart === prop.start) return [];
799
+ const to = rename(prop.key);
800
+ return to === prop.key ? [] : [keyEdit(source, prop.start, prop.key, to)];
801
+ });
802
+ }
803
+ /**
804
+ * Edits renaming the block names among the string literals of the array at
805
+ * `open`.
806
+ */
807
+ function listEdits(source, code, open) {
808
+ const close = closingIndex(code, open);
809
+ if (close === -1) return [];
810
+ return [...source.slice(open, close).matchAll(STRING)].flatMap((match) => {
811
+ const to = renamedBlock(match[2]);
812
+ const start = open + match.index + 1;
813
+ return to === void 0 ? [] : [{
814
+ start,
815
+ end: start + match[2].length,
816
+ text: to
817
+ }];
818
+ });
819
+ }
820
+ /** The value at `index` when it opens an object or an array. */
821
+ const opens = (code, index) => code[index] === "{" || code[index] === "[" ? code[index] : void 0;
822
+ /** The value of `key` in the object literal at `open`, when it is a literal. */
823
+ function valueOf(source, code, open, key) {
824
+ const prop = properties(source, code, open)?.find((entry) => entry.key === key);
825
+ return prop === void 0 || opens(code, prop.valueStart) === void 0 ? void 0 : prop.valueStart;
826
+ }
827
+ function objectEdits(source, code, open) {
828
+ const edits = [];
829
+ for (const prop of properties(source, code, open) ?? []) {
830
+ const kind = opens(code, prop.valueStart);
831
+ if (prop.key === void 0 || kind === void 0) continue;
832
+ if (prop.key === "blocks") edits.push(...kind === "[" ? listEdits(source, code, prop.valueStart) : keyEdits(source, code, prop.valueStart, (key) => renamedBlock(key) ?? key));
833
+ else if (prop.key === "preset" && kind === "{") {
834
+ const blocks = valueOf(source, code, prop.valueStart, "blocks");
835
+ if (blocks !== void 0 && code[blocks] === "[") edits.push(...listEdits(source, code, blocks));
836
+ } else if (prop.key === "auth" && kind === "{") {
837
+ const authorization = valueOf(source, code, prop.valueStart, "authorization");
838
+ const operations = authorization !== void 0 && code[authorization] === "{" ? valueOf(source, code, authorization, "operations") : void 0;
839
+ if (operations !== void 0 && code[operations] === "{") edits.push(...keyEdits(source, code, operations, currentOperationName));
840
+ } else if (prop.key === "$env" && kind === "{") {
841
+ for (const env of properties(source, code, prop.valueStart) ?? []) if (code[env.valueStart] === "{") edits.push(...objectEdits(source, code, env.valueStart));
842
+ } else if (ENVIRONMENT_KEY.test(prop.key) && kind === "{") edits.push(...objectEdits(source, code, prop.valueStart));
843
+ }
844
+ return edits;
845
+ }
846
+ /** `better-supabase.config.ts`, grouped, with the 0.15 block names. */
847
+ function renameBlocksInSource(source) {
848
+ const code = mask(source);
849
+ const open = configObject(code);
850
+ if (open === void 0) return {
851
+ ok: false,
852
+ reason: "no defineConfig({...}) or default export object found"
853
+ };
854
+ return {
855
+ ok: true,
856
+ text: applyEdits$2(source, objectEdits(source, code, open))
857
+ };
858
+ }
859
+ function renameKeys(value, rename) {
860
+ return isObject(value) ? Object.fromEntries(Object.entries(value).map(([key, entry]) => [rename(key), entry])) : value;
861
+ }
862
+ const renameList = (value) => Array.isArray(value) ? value.map((entry) => typeof entry === "string" ? renamedBlock(entry) ?? entry : entry) : value;
863
+ /** A parsed config object with the 0.15 block names. */
864
+ function renameBlocksInConfig(config) {
865
+ const out = {};
866
+ for (const [key, value] of Object.entries(config)) if (key === "blocks") out[key] = Array.isArray(value) ? renameList(value) : renameKeys(value, (name) => renamedBlock(name) ?? name);
867
+ else if (key === "preset" && isObject(value)) out[key] = value["blocks"] === void 0 ? value : {
868
+ ...value,
869
+ blocks: renameList(value["blocks"])
870
+ };
871
+ else if (key === "auth" && isObject(value)) {
872
+ const authorization = value["authorization"];
873
+ out[key] = isObject(authorization) ? {
874
+ ...value,
875
+ authorization: authorization["operations"] === void 0 ? authorization : {
876
+ ...authorization,
877
+ operations: renameKeys(authorization["operations"], currentOperationName)
878
+ }
879
+ } : value;
880
+ } 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);
881
+ else out[key] = value;
882
+ return out;
883
+ }
884
+ /** `edit`, then the 0.15 block names on its text. */
885
+ function withBlockNames(edit, json) {
886
+ if (!edit.ok) return edit;
887
+ if (!json) return renameBlocksInSource(edit.text);
888
+ const config = JSON.parse(edit.text);
889
+ if (!isObject(config)) return edit;
890
+ const renamed = renameBlocksInConfig(config);
891
+ return JSON.stringify(renamed) === JSON.stringify(config) ? edit : {
892
+ ok: true,
893
+ text: `${JSON.stringify(renamed, null, 2)}\n`
894
+ };
895
+ }
896
+ //#endregion
897
+ //#region src/cli/sql/config-block-on.ts
898
+ const OPTIONS = /\boptions\s*:\s*\{/g;
899
+ const KEY_BEFORE = /(?:["']([\w-]+)["']|([A-Za-z_$][\w$-]*))\s*:\s*$/;
900
+ function applyEdits$1(source, edits) {
901
+ let text = source;
902
+ for (const edit of edits.toSorted((a, b) => b.start - a.start)) text = text.slice(0, edit.start) + edit.text + text.slice(edit.end);
903
+ return text;
904
+ }
905
+ /** The `{` of the object literal that holds the code at `index`. */
906
+ function enclosingObject(code, index) {
907
+ let depth = 0;
908
+ for (let at = index - 1; at >= 0; at -= 1) {
909
+ const char = code[at];
910
+ if (char === "}" || char === "]" || char === ")") depth += 1;
911
+ else if (char === "{" || char === "[" || char === "(") {
912
+ if (depth === 0) return char === "{" ? at : void 0;
913
+ depth -= 1;
914
+ }
915
+ }
916
+ }
917
+ /** The block an entry installs: its `block` string, or the key it sits under. */
918
+ function blockOf(source, open, props) {
919
+ const block = props.find((prop) => prop.key === "block");
920
+ if (block !== void 0) return /^["']([\w-]+)["']$/.exec(source.slice(block.valueStart, block.valueEnd))?.[1];
921
+ const key = KEY_BEFORE.exec(source.slice(0, open));
922
+ return key?.[1] ?? key?.[2];
923
+ }
924
+ /** `{ deal: ["amount"] }` as `{ deal: { fields: ["amount"] } }`. */
925
+ function wrapFields(source, code, open) {
926
+ return (properties(source, code, open) ?? []).flatMap((prop) => prop.key !== void 0 && code[prop.valueStart] === "[" ? [{
927
+ start: prop.valueStart,
928
+ end: prop.valueEnd,
929
+ text: `{ fields: ${source.slice(prop.valueStart, prop.valueEnd)} }`
930
+ }] : []);
931
+ }
932
+ /** `text` moved one object level out: two spaces fewer after each newline. */
933
+ const outdented = (text) => text.replaceAll(/\n {2}/g, "\n");
934
+ /** The edit that removes `props[index]` from its object literal. */
935
+ function removal(props, index) {
936
+ const next = props[index + 1];
937
+ const previous = props[index - 1];
938
+ const prop = props[index];
939
+ if (next !== void 0) return {
940
+ start: prop.start,
941
+ end: next.start,
942
+ text: ""
943
+ };
944
+ return {
945
+ start: previous?.valueEnd ?? prop.start,
946
+ end: prop.valueEnd,
947
+ text: ""
948
+ };
949
+ }
950
+ const lineOf = (source, index) => source.slice(0, index).split("\n").length;
951
+ /**
952
+ * `source` with every `options.subjects` of a block entry moved to the entry's
953
+ * `on`. An entry that already sets `on` is left and listed for review.
954
+ */
955
+ function moveSubjectsToOnInSource(source) {
956
+ const code = mask(source);
957
+ const edits = [];
958
+ const review = [];
959
+ for (const match of code.matchAll(OPTIONS)) {
960
+ const valueOpen = match.index + match[0].length - 1;
961
+ const entryOpen = enclosingObject(code, match.index);
962
+ if (entryOpen === void 0) continue;
963
+ const entry = properties(source, code, entryOpen) ?? [];
964
+ const options = entry.find((prop) => prop.key === "options" && prop.valueStart === valueOpen);
965
+ const inner = properties(source, code, valueOpen) ?? [];
966
+ const index = inner.findIndex((prop) => prop.key === "subjects");
967
+ if (options === void 0 || index === -1) continue;
968
+ if (entry.some((prop) => prop.key === "on")) {
969
+ review.push({
970
+ line: lineOf(source, match.index),
971
+ message: "options.subjects moved to on, and this block already sets on: merge them into on"
972
+ });
973
+ continue;
974
+ }
975
+ const subjects = inner[index];
976
+ const shorthand = subjects.valueStart === subjects.start;
977
+ const wrap = !shorthand && code[subjects.valueStart] === "{" && blockOf(source, entryOpen, entry) === "field-history";
978
+ const slice = source.slice(subjects.valueStart, subjects.valueEnd);
979
+ const raw = shorthand ? "subjects" : wrap ? applyEdits$1(slice, wrapFields(source, code, subjects.valueStart).map((edit) => ({
980
+ ...edit,
981
+ start: edit.start - subjects.valueStart,
982
+ end: edit.end - subjects.valueStart
983
+ }))) : slice;
984
+ const on = `on: ${outdented(raw)}`;
985
+ if (inner.length === 1) {
986
+ edits.push({
987
+ start: options.start,
988
+ end: options.valueEnd,
989
+ text: on
990
+ });
991
+ continue;
992
+ }
993
+ const multiline = code.slice(entryOpen, closingIndex(code, entryOpen)).includes("\n");
994
+ edits.push({
995
+ start: options.start,
996
+ end: options.start,
997
+ text: `${on},${multiline ? `\n${indentAt(source, options.start)}` : " "}`
998
+ }, removal(inner, index));
999
+ }
1000
+ return {
1001
+ text: applyEdits$1(source, edits),
1002
+ review
1003
+ };
1004
+ }
1005
+ function moveInObject(value) {
1006
+ if (Array.isArray(value)) return value.map(moveInObject);
1007
+ if (!isRecord$1(value)) return value;
1008
+ const entries = Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, moveInObject(entry)]));
1009
+ const options = entries["options"];
1010
+ if (!isRecord$1(options) || options["subjects"] === void 0 || entries["on"] !== void 0) return entries;
1011
+ const { subjects, ...rest } = options;
1012
+ const { options: _, ...withoutOptions } = entries;
1013
+ return {
1014
+ ...withoutOptions,
1015
+ on: subjects,
1016
+ ...Object.keys(rest).length > 0 && { options: rest }
1017
+ };
1018
+ }
1019
+ /** Field history's `on`, with each column list as `{ fields }`. */
1020
+ function fieldHistoryOn(config) {
1021
+ if (!isRecord$1(config) || !isRecord$1(config["blocks"])) return config;
1022
+ const history = config["blocks"]["field-history"];
1023
+ if (!isRecord$1(history) || !isRecord$1(history["on"])) return config;
1024
+ const on = Object.fromEntries(Object.entries(history["on"]).map(([type, fields]) => [type, Array.isArray(fields) ? { fields } : fields]));
1025
+ return {
1026
+ ...config,
1027
+ blocks: {
1028
+ ...config["blocks"],
1029
+ "field-history": {
1030
+ ...history,
1031
+ on
1032
+ }
1033
+ }
1034
+ };
1035
+ }
1036
+ /** `edit`, then every `options.subjects` moved to `on`. */
1037
+ function withSubjectsOn(edit, json) {
1038
+ if (!edit.ok) return edit;
1039
+ const before = "review" in edit ? edit.review : [];
1040
+ if (!json) {
1041
+ const moved = moveSubjectsToOnInSource(edit.text);
1042
+ return {
1043
+ ok: true,
1044
+ text: moved.text,
1045
+ review: [...before, ...moved.review]
1046
+ };
1047
+ }
1048
+ const config = JSON.parse(edit.text);
1049
+ const moved = fieldHistoryOn(moveInObject(config));
1050
+ return {
1051
+ ok: true,
1052
+ text: JSON.stringify(moved) === JSON.stringify(config) ? edit.text : `${JSON.stringify(moved, null, 2)}\n`,
1053
+ review: before
1054
+ };
1055
+ }
1056
+ //#endregion
1057
+ //#region src/cli/sql/config-move.ts
1058
+ const lineStart = (source, index) => source.lastIndexOf("\n", index - 1) + 1;
1059
+ function propertySpan(source, code, open, props, index) {
1060
+ const prop = props[index];
1061
+ const previous = props[index - 1];
1062
+ if (prop === void 0) throw new Error(`no property at ${index}`);
1063
+ const close = closingIndex(code, open);
1064
+ const multiline = code.slice(open, close).includes("\n");
1065
+ const after = skipSpace(code, prop.valueEnd);
1066
+ const hasComma = code[after] === ",";
1067
+ const tailFrom = hasComma ? after + 1 : prop.valueEnd;
1068
+ if (!multiline) {
1069
+ const value = source.slice(prop.start, prop.valueEnd);
1070
+ if (previous) return {
1071
+ start: previous.valueEnd,
1072
+ end: prop.valueEnd,
1073
+ value,
1074
+ keyAt: 0,
1075
+ trailing: "",
1076
+ hasComma,
1077
+ multiline
1078
+ };
1079
+ return {
1080
+ start: prop.start,
1081
+ end: hasComma ? skipSpace(code, tailFrom) : prop.valueEnd,
1082
+ value,
1083
+ keyAt: 0,
1084
+ trailing: "",
1085
+ hasComma,
1086
+ multiline
1087
+ };
1088
+ }
1089
+ let before = open + 1;
1090
+ if (previous) {
1091
+ const comma = skipSpace(code, previous.valueEnd);
1092
+ before = code[comma] === "," ? comma + 1 : previous.valueEnd;
1093
+ }
1094
+ const newline = source.slice(before, prop.start).indexOf("\n");
1095
+ const start = newline === -1 ? prop.start : before + newline + 1;
1096
+ const lineEnd = source.indexOf("\n", tailFrom);
1097
+ const restIsBlank = lineEnd !== -1 && code.slice(tailFrom, lineEnd).trim() === "";
1098
+ return {
1099
+ start,
1100
+ end: restIsBlank ? lineEnd + 1 : tailFrom,
1101
+ value: source.slice(start, prop.valueEnd),
1102
+ keyAt: prop.start - start,
1103
+ trailing: restIsBlank ? source.slice(tailFrom, lineEnd).trimEnd() : "",
1104
+ hasComma,
1105
+ multiline
1106
+ };
1107
+ }
1108
+ /** `modules: ...` as `blocks: ...`, keeping the key's quotes. */
1109
+ function renameKey(text, keyAt, prop) {
1110
+ const head = text.slice(keyAt);
1111
+ const quoted = /^(["'])modules\1/.exec(head);
1112
+ if (quoted) {
1113
+ const quote = quoted[1] ?? "\"";
1114
+ return `${text.slice(0, keyAt)}${quote}blocks${quote}${head.slice(quoted[0].length)}`;
1115
+ }
1116
+ if (prop.valueStart === prop.start) return `${text.slice(0, keyAt)}blocks: modules${head.slice(7)}`;
1117
+ return `${text.slice(0, keyAt)}blocks${head.slice(7)}`;
1118
+ }
1119
+ function reindent(text, from, to) {
1120
+ return text.split("\n").map((line) => line.startsWith(from) ? to + line.slice(from.length) : line).join("\n");
1121
+ }
1122
+ const sortKey = (key) => (key ?? "").toLowerCase();
1123
+ function keysSorted(keys) {
1124
+ return keys.every((key, index) => index === 0 || key !== void 0 && sortKey(keys[index - 1]) <= sortKey(key));
1125
+ }
1126
+ function rootKeys(source) {
1127
+ const code = mask(source);
1128
+ const root = configObject(code);
1129
+ return (root === void 0 ? void 0 : properties(source, code, root))?.map((prop) => prop.key) ?? [];
1130
+ }
1131
+ function sortBlocksKey(source) {
1132
+ const code = mask(source);
1133
+ const root = configObject(code);
1134
+ if (root === void 0) return source;
1135
+ const props = properties(source, code, root);
1136
+ const blocksIndex = props?.findIndex((prop) => prop.key === "blocks") ?? -1;
1137
+ if (!props || blocksIndex === -1) return source;
1138
+ const targetIndex = props.findIndex((prop, index) => index !== blocksIndex && sortKey(prop.key) > sortKey("blocks"));
1139
+ if (targetIndex === -1 || targetIndex === blocksIndex + 1) return source;
1140
+ const blocks = propertySpan(source, code, root, props, blocksIndex);
1141
+ const target = props[targetIndex];
1142
+ if (target.start > blocks.start) return source;
1143
+ const at = blocks.multiline ? propertySpan(source, code, root, props, targetIndex).start : target.start;
1144
+ const moved = blocks.multiline ? `${blocks.value},${blocks.trailing}\n` : `${blocks.value}, `;
1145
+ return source.slice(0, at) + moved + source.slice(at, blocks.start) + source.slice(blocks.end);
1146
+ }
1147
+ /**
1148
+ * `source` with `sql.modules` moved to a top-level `blocks` key, placed right
1149
+ * after `sql`, or in sorted position when the config's top-level keys are
1150
+ * sorted. `sql` is dropped when nothing else is left in it. A config without
1151
+ * `sql.modules` comes back unchanged; one that also sets `blocks` is refused,
1152
+ * because the two need a merge by hand.
1153
+ */
1154
+ function moveSqlModulesToBlocks(source) {
1155
+ const edit = moveSqlModules(source);
1156
+ return edit.ok && edit.text !== source && keysSorted(rootKeys(source)) ? {
1157
+ ok: true,
1158
+ text: sortBlocksKey(edit.text)
1159
+ } : edit;
1160
+ }
1161
+ function moveSqlModules(source) {
1162
+ const code = mask(source);
1163
+ const root = configObject(code);
1164
+ if (root === void 0) return /\bmodules\b/.test(code) ? {
1165
+ ok: false,
1166
+ reason: "it doesn't pass an object literal to defineConfig()"
1167
+ } : {
1168
+ ok: true,
1169
+ text: source
1170
+ };
1171
+ const rootProps = properties(source, code, root);
1172
+ if (!rootProps) return {
1173
+ ok: false,
1174
+ reason: "its config object can't be read"
1175
+ };
1176
+ const sqlIndex = rootProps.findIndex((prop) => prop.key === "sql");
1177
+ const sql = rootProps[sqlIndex];
1178
+ if (sql === void 0) return {
1179
+ ok: true,
1180
+ text: source
1181
+ };
1182
+ if (code[sql.valueStart] !== "{" || sql.valueStart === sql.start) return /\bmodules\b/.test(code) ? {
1183
+ ok: false,
1184
+ reason: "its `sql` value isn't an object literal; move `sql.modules` to `blocks` by hand"
1185
+ } : {
1186
+ ok: true,
1187
+ text: source
1188
+ };
1189
+ const sqlProps = properties(source, code, sql.valueStart);
1190
+ if (!sqlProps) return {
1191
+ ok: false,
1192
+ reason: "its `sql` object can't be read"
1193
+ };
1194
+ const modulesIndex = sqlProps.findIndex((prop) => prop.key === "modules");
1195
+ const modules = sqlProps[modulesIndex];
1196
+ if (modules === void 0) return {
1197
+ ok: true,
1198
+ text: source
1199
+ };
1200
+ if (rootProps.some((prop) => prop.key === "blocks")) return {
1201
+ ok: false,
1202
+ reason: "it sets both `sql.modules` and `blocks`; merge `sql.modules` into `blocks` by hand"
1203
+ };
1204
+ const cut = propertySpan(source, code, sql.valueStart, sqlProps, modulesIndex);
1205
+ const outer = propertySpan(source, code, root, rootProps, sqlIndex);
1206
+ const renamed = renameKey(cut.value, cut.keyAt, modules);
1207
+ const sqlClose = closingIndex(code, sql.valueStart);
1208
+ const leftover = source.slice(sql.valueStart + 1, cut.start) + source.slice(cut.end, sqlClose);
1209
+ const dropSql = sqlProps.length === 1 && leftover.trim() === "";
1210
+ if (!cut.multiline || !outer.multiline) {
1211
+ const property = renamed.trim();
1212
+ if (dropSql) return {
1213
+ ok: true,
1214
+ text: source.slice(0, sql.start) + property + source.slice(sql.valueEnd)
1215
+ };
1216
+ return {
1217
+ ok: true,
1218
+ text: `${source.slice(0, cut.start)}${source.slice(cut.end, sql.valueEnd)}, ${property}${source.slice(sql.valueEnd)}`
1219
+ };
1220
+ }
1221
+ const sqlIndent = indentAt(source, sql.start);
1222
+ const body = reindent(renamed, indentAt(source, modules.start), sqlIndent);
1223
+ const moved = `${cut.start === modules.start ? sqlIndent + body : body},${cut.trailing}\n`;
1224
+ if (dropSql) return {
1225
+ ok: true,
1226
+ text: source.slice(0, lineStart(source, sql.start)) + moved + source.slice(outer.end)
1227
+ };
1228
+ const atLineStart = source[outer.end - 1] === "\n";
1229
+ return {
1230
+ ok: true,
1231
+ 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)
1232
+ };
1233
+ }
1234
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
1235
+ function withBlocksSorted(config) {
1236
+ const entries = Object.entries(config).filter(([key]) => key !== "blocks");
1237
+ const after = entries.findIndex(([key]) => sortKey(key) > "blocks");
1238
+ entries.splice(after === -1 ? entries.length : after, 0, ["blocks", config["blocks"]]);
1239
+ return Object.fromEntries(entries);
1240
+ }
1241
+ /** `moveSqlModulesToBlocks` for `better-supabase.config.json`. */
1242
+ function moveSqlModulesToBlocksJson(source) {
1243
+ let config;
1244
+ try {
1245
+ config = JSON.parse(source);
1246
+ } catch {
1247
+ return {
1248
+ ok: false,
1249
+ reason: "it isn't valid JSON"
1250
+ };
1251
+ }
1252
+ if (!isRecord(config)) return {
1253
+ ok: false,
1254
+ reason: "it isn't a JSON object"
1255
+ };
1256
+ const sql = config["sql"];
1257
+ if (!isRecord(sql) || !("modules" in sql)) return {
1258
+ ok: true,
1259
+ text: source
1260
+ };
1261
+ if ("blocks" in config) return {
1262
+ ok: false,
1263
+ reason: "it sets both `sql.modules` and `blocks`; merge `sql.modules` into `blocks` by hand"
1264
+ };
1265
+ const { modules, ...restSql } = sql;
1266
+ const next = {};
1267
+ for (const [key, value] of Object.entries(config)) {
1268
+ if (key !== "sql") {
1269
+ next[key] = value;
1270
+ continue;
1271
+ }
1272
+ if (Object.keys(restSql).length > 0) next["sql"] = restSql;
1273
+ next["blocks"] = modules;
1274
+ }
1275
+ const sorted = keysSorted(Object.keys(config)) ? withBlocksSorted(next) : next;
1276
+ const indent = /^[ \t]+/m.exec(source)?.[0] ?? " ";
1277
+ return {
1278
+ ok: true,
1279
+ text: `${JSON.stringify(sorted, null, indent)}\n`
1280
+ };
1281
+ }
1282
+ /** Review lines for `sql.modules` left in environment blocks after the move. */
1283
+ function environmentModules(text) {
1284
+ return mask(text).split("\n").flatMap((line, index) => /\bmodules\s*:/.test(line) ? [{
1285
+ line: index + 1,
1286
+ message: "`sql.modules` in an environment block moves to `blocks` too"
1287
+ }] : []);
1288
+ }
1289
+ //#endregion
1290
+ //#region src/cli/sql/config-plugins.ts
1291
+ /** The block each plugin flag became, and its column keys as block options. */
1292
+ const PLUGIN_BLOCKS = {
1293
+ timestamps: {
1294
+ block: "updated-at",
1295
+ options: {
1296
+ createdAt: "createdAt",
1297
+ updatedAt: "updatedAt"
1298
+ }
1299
+ },
1300
+ actor: {
1301
+ block: "created-by",
1302
+ options: {
1303
+ createdBy: "createdBy",
1304
+ updatedBy: "updatedBy",
1305
+ impersonatedBy: "impersonatedBy"
1306
+ }
1307
+ },
1308
+ softDelete: {
1309
+ block: "trash",
1310
+ options: { column: "deletedAt" }
1311
+ }
1312
+ };
1313
+ const DEFAULT_ORGANIZATION_COLUMN = "organization_id";
1314
+ function movesOf(flags) {
1315
+ const blocks = [];
1316
+ let tenant = false;
1317
+ for (const [name, flag] of Object.entries(flags)) {
1318
+ if (name === "tenant") {
1319
+ tenant = flag !== false;
1320
+ continue;
1321
+ }
1322
+ const move = PLUGIN_BLOCKS[name];
1323
+ if (move === void 0) return { reason: `plugins.${name} is not a plugin flag 0.14 had` };
1324
+ if (flag === false) continue;
1325
+ const options = {};
1326
+ for (const [key, value] of Object.entries(flag)) {
1327
+ const option = move.options[key];
1328
+ if (option === void 0) return { reason: `plugins.${name}.${key} is not a column it took` };
1329
+ options[option] = value;
1330
+ }
1331
+ blocks.push([move.block, options]);
1332
+ }
1333
+ return {
1334
+ blocks,
1335
+ tenant
1336
+ };
1337
+ }
1338
+ /** A string literal's value, or undefined for any other expression. */
1339
+ function stringValue(text) {
1340
+ return /^(["'])((?:(?!\1)[^\\])*)\1$/.exec(text.trim())?.[2];
1341
+ }
1342
+ function flagsInSource(source, code, open) {
1343
+ const flags = {};
1344
+ for (const prop of properties(source, code, open) ?? []) {
1345
+ const value = source.slice(prop.valueStart, prop.valueEnd).trim();
1346
+ if (prop.key === void 0) return { reason: "plugins has a spread or a computed key" };
1347
+ if (value === "true" || value === "false") {
1348
+ flags[prop.key] = value === "true" ? {} : false;
1349
+ continue;
1350
+ }
1351
+ if (code[prop.valueStart] !== "{") return { reason: `plugins.${prop.key} isn't true, false or an object` };
1352
+ const columns = {};
1353
+ for (const inner of properties(source, code, prop.valueStart) ?? []) {
1354
+ const column = stringValue(source.slice(inner.valueStart, inner.valueEnd));
1355
+ if (inner.key === void 0 || column === void 0) return { reason: `plugins.${prop.key} has a key that isn't a string` };
1356
+ columns[inner.key] = column;
1357
+ }
1358
+ flags[prop.key] = columns;
1359
+ }
1360
+ return flags;
1361
+ }
1362
+ /** Whether the `blocks` value names `memberships`, as a key or a list item. */
1363
+ const MEMBERSHIPS = /["']memberships["']|\bmemberships\s*:/;
1364
+ /** `better-supabase.config.ts` with `plugins` moved into blocks. */
1365
+ function movePluginsInSource(source) {
1366
+ const code = mask(source);
1367
+ const root = configObject(code);
1368
+ if (root === void 0) return {
1369
+ ok: true,
1370
+ text: source
1371
+ };
1372
+ const props = properties(source, code, root) ?? [];
1373
+ const index = props.findIndex((prop) => prop.key === "plugins");
1374
+ const plugins = props[index];
1375
+ if (plugins === void 0) return {
1376
+ ok: true,
1377
+ text: source
1378
+ };
1379
+ if (code[plugins.valueStart] !== "{") return {
1380
+ ok: false,
1381
+ reason: "its plugins key isn't a literal object"
1382
+ };
1383
+ const flags = flagsInSource(source, code, plugins.valueStart);
1384
+ if ("reason" in flags) return {
1385
+ ok: false,
1386
+ reason: String(flags.reason)
1387
+ };
1388
+ const moves = movesOf(flags);
1389
+ if ("reason" in moves) return {
1390
+ ok: false,
1391
+ reason: moves.reason
1392
+ };
1393
+ const multiline = code.slice(root, closingIndex(code, root)).includes("\n");
1394
+ const cut = cutRange(source, code, root, props, index, multiline);
1395
+ let edit = {
1396
+ ok: true,
1397
+ text: source.slice(0, cut.start) + source.slice(cut.end)
1398
+ };
1399
+ const blocks = props.find((prop) => prop.key === "blocks");
1400
+ const memberships = blocks !== void 0 && MEMBERSHIPS.test(source.slice(blocks.valueStart, blocks.valueEnd));
1401
+ const organization = organizationText(source, code, props);
1402
+ const organizationColumn = /\bcolumn\s*:/.test(organization);
1403
+ const onMissing = /\bonMissing\s*:/.test(organization);
1404
+ const steps = [
1405
+ ...moves.blocks.flatMap(([block, options]) => [(text) => addBlocksToConfig(text, [block]), ...Object.entries(options).map(([key, value]) => (text) => setPathInConfig(text, [
1406
+ "blocks",
1407
+ block,
1408
+ "options",
1409
+ key
1410
+ ], value))]),
1411
+ ...moves.tenant && !memberships && !organizationColumn ? [(text) => setPathInConfig(text, [
1412
+ "auth",
1413
+ "organization",
1414
+ "column"
1415
+ ], DEFAULT_ORGANIZATION_COLUMN)] : [],
1416
+ ...moves.tenant && !onMissing ? [(text) => setPathInConfig(text, [
1417
+ "auth",
1418
+ "organization",
1419
+ "onMissing"
1420
+ ], "error")] : []
1421
+ ];
1422
+ for (const step of steps) {
1423
+ if (!edit.ok) return edit;
1424
+ edit = step(edit.text);
1425
+ }
1426
+ return edit;
1427
+ }
1428
+ /** The source of `auth.organization`, or `""` without one. */
1429
+ function organizationText(source, code, props) {
1430
+ const auth = props.find((prop) => prop.key === "auth");
1431
+ if (auth === void 0 || code[auth.valueStart] !== "{") return "";
1432
+ const organization = (properties(source, code, auth.valueStart) ?? []).find((prop) => prop.key === "organization");
1433
+ return organization === void 0 ? "" : source.slice(organization.valueStart, organization.valueEnd);
1434
+ }
1435
+ const isColumns = (value) => isRecord$1(value) && Object.values(value).every((column) => typeof column === "string");
1436
+ function flagsInJson(plugins) {
1437
+ if (!isRecord$1(plugins)) return { reason: "its plugins key isn't an object" };
1438
+ const flags = {};
1439
+ for (const [name, value] of Object.entries(plugins)) if (typeof value === "boolean") flags[name] = value ? {} : false;
1440
+ else if (isColumns(value)) flags[name] = value;
1441
+ else return { reason: `plugins.${name} isn't true, false or columns` };
1442
+ return flags;
1443
+ }
1444
+ const objectAt$1 = (value) => isRecord$1(value) ? value : {};
1445
+ /** `movePluginsInSource` for `better-supabase.config.json`. */
1446
+ function movePluginsInJson(source) {
1447
+ let config;
1448
+ try {
1449
+ config = JSON.parse(source);
1450
+ } catch {
1451
+ return {
1452
+ ok: true,
1453
+ text: source
1454
+ };
1455
+ }
1456
+ if (!isRecord$1(config) || !("plugins" in config)) return {
1457
+ ok: true,
1458
+ text: source
1459
+ };
1460
+ const { plugins, ...rest } = config;
1461
+ const flags = flagsInJson(plugins);
1462
+ if ("reason" in flags) return {
1463
+ ok: false,
1464
+ reason: String(flags.reason)
1465
+ };
1466
+ const moves = movesOf(flags);
1467
+ if ("reason" in moves) return {
1468
+ ok: false,
1469
+ reason: moves.reason
1470
+ };
1471
+ const listed = rest["blocks"] ?? {};
1472
+ const blocks = Array.isArray(listed) ? Object.fromEntries(listed.map((name) => [String(name), {}])) : { ...objectAt$1(listed) };
1473
+ const memberships = "memberships" in blocks;
1474
+ for (const [block, options] of moves.blocks) {
1475
+ const entry = objectAt$1(blocks[block]);
1476
+ blocks[block] = {
1477
+ ...entry,
1478
+ ...Object.keys(options).length === 0 ? {} : { options: {
1479
+ ...objectAt$1(entry["options"]),
1480
+ ...options
1481
+ } }
1482
+ };
1483
+ }
1484
+ const next = {
1485
+ ...rest,
1486
+ ...moves.blocks.length === 0 && rest["blocks"] === void 0 ? {} : { blocks: moves.blocks.length === 0 ? rest["blocks"] : blocks }
1487
+ };
1488
+ if (moves.tenant) {
1489
+ const auth = objectAt$1(next["auth"]);
1490
+ const organization = objectAt$1(auth["organization"]);
1491
+ next["auth"] = {
1492
+ ...auth,
1493
+ organization: {
1494
+ ...memberships ? {} : { column: DEFAULT_ORGANIZATION_COLUMN },
1495
+ onMissing: "error",
1496
+ ...organization
1497
+ }
1498
+ };
1499
+ }
1500
+ const indent = /^[ \t]+/m.exec(source)?.[0] ?? " ";
1501
+ return {
1502
+ ok: true,
1503
+ text: `${JSON.stringify(next, null, indent)}\n`
1504
+ };
1505
+ }
1506
+ /** `edit` with `plugins` moved into blocks, after the regrouping. */
1507
+ function withoutPlugins(edit, json) {
1508
+ if (!edit.ok) return edit;
1509
+ return json ? movePluginsInJson(edit.text) : movePluginsInSource(edit.text);
1510
+ }
1511
+ //#endregion
1512
+ //#region src/cli/sql/config-webhook-format.ts
1513
+ const PATH = [
1514
+ "blocks",
1515
+ "webhooks-out",
1516
+ "options",
1517
+ "defaultFormat"
1518
+ ];
1519
+ function needsPin(block) {
1520
+ if (!isRecord$1(block) || block["mode"] !== "adopt") return false;
1521
+ const options = block["options"];
1522
+ const columns = block["columns"];
1523
+ const endpoints = isRecord$1(columns) ? columns["endpoints"] : void 0;
1524
+ return !(isRecord$1(options) && options["defaultFormat"] !== void 0) && !(isRecord$1(endpoints) && endpoints["format"] !== void 0);
1525
+ }
1526
+ function pinJson(source, format) {
1527
+ let config;
1528
+ try {
1529
+ config = JSON.parse(source);
1530
+ } catch {
1531
+ return {
1532
+ ok: false,
1533
+ reason: "it isn't valid JSON"
1534
+ };
1535
+ }
1536
+ const blocks = isRecord$1(config) ? config["blocks"] : void 0;
1537
+ return isRecord$1(blocks) && needsPin(blocks["webhooks-out"]) ? setPathInJson(source, PATH, format) : void 0;
1538
+ }
1539
+ /** The object literal at `prop`'s value, or `undefined` when it isn't one. */
1540
+ function objectAt(source, code, prop) {
1541
+ return prop && code[prop.valueStart] === "{" ? properties(source, code, prop.valueStart) : void 0;
1542
+ }
1543
+ function pinTs(source, format) {
1544
+ const code = mask(source);
1545
+ const root = configObject(code);
1546
+ if (root === void 0) return;
1547
+ const find = (props, key) => props?.find((prop) => prop.key === key);
1548
+ const blockProp = find(objectAt(source, code, find(properties(source, code, root), "blocks")), "webhooks-out");
1549
+ if (!blockProp) return;
1550
+ const block = objectAt(source, code, blockProp);
1551
+ if (!block) return {
1552
+ ok: false,
1553
+ reason: "its blocks[\"webhooks-out\"] isn't a literal object"
1554
+ };
1555
+ const mode = find(block, "mode");
1556
+ const modeText = mode ? source.slice(mode.valueStart, mode.valueEnd).trim() : void 0;
1557
+ if (modeText !== "\"adopt\"" && modeText !== "'adopt'") return;
1558
+ const options = find(block, "options");
1559
+ const columns = find(block, "columns");
1560
+ if (options && !objectAt(source, code, options) || columns && !objectAt(source, code, columns)) return {
1561
+ ok: false,
1562
+ reason: "its blocks[\"webhooks-out\"] options or columns aren't literal objects"
1563
+ };
1564
+ const endpoints = find(objectAt(source, code, columns), "endpoints");
1565
+ if (endpoints && !objectAt(source, code, endpoints)) return {
1566
+ ok: false,
1567
+ reason: "its blocks[\"webhooks-out\"].columns.endpoints isn't a literal object"
1568
+ };
1569
+ if (find(objectAt(source, code, options), "defaultFormat") || find(objectAt(source, code, endpoints), "format")) return;
1570
+ return setPathInConfig(source, PATH, format);
1571
+ }
1572
+ /**
1573
+ * Pins `defaultFormat` to `format` where an adopted block leaves it to the
1574
+ * default.
1575
+ */
1576
+ function pinWebhookFormat(source, json, format) {
1577
+ return json ? pinJson(source, format) : pinTs(source, format);
1578
+ }
1579
+ /**
1580
+ * `edit` with `defaultFormat` pinned to `format` where an adopted webhooks-out
1581
+ * block needs it.
1582
+ */
1583
+ function withWebhookFormat(edit, json, format) {
1584
+ if (!edit.ok) return edit;
1585
+ const earlier = "review" in edit ? edit.review : [];
1586
+ const pin = pinWebhookFormat(edit.text, json, format);
1587
+ if (pin === void 0) return {
1588
+ ok: true,
1589
+ text: edit.text,
1590
+ review: earlier
1591
+ };
1592
+ if (!pin.ok) return {
1593
+ ok: true,
1594
+ text: edit.text,
1595
+ review: [...earlier, {
1596
+ line: 1,
1597
+ 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`
1598
+ }]
1599
+ };
1600
+ const line = pin.text.split("\n").findIndex((text) => text.includes("defaultFormat")) + 1;
1601
+ return {
1602
+ ok: true,
1603
+ text: pin.text,
1604
+ review: [...earlier, {
1605
+ line: Math.max(line, 1),
1606
+ 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`
1607
+ }]
1608
+ };
1609
+ }
1610
+ //#endregion
1611
+ //#region src/cli/codemod.ts
1612
+ /**
1613
+ * `better-supabase.config.*`, the files a codemod's `configFile` edit applies
1614
+ * to.
1615
+ */
1616
+ const CONFIG_FILE = /(?:^|[\\/])better-supabase\.config\.(?:ts|mts|cts|js|mjs|cjs|json)$/;
1617
+ const OFFSET_PIN = {
1618
+ key: "pagination",
1619
+ value: "\"offset\"",
1620
+ when: /\.page\b(?!\s*\()|\bpageCount\b|\btotalPages\b|\bpage\s*:|[?&]page=|["']page["']/,
1621
+ 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"
1622
+ };
1623
+ const SQL_ADD_HINT = {
1624
+ pattern: /(?<![\w.@-])(?:better-supabase|bsb)(?:@[\w.^~-]+)?\s+sql\s+add\b/,
1625
+ 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"
1626
+ };
1627
+ const BLOCK_SQL_TYPES = "Context ContractFunction Names Layout File IdType AccessProvider EntitlementsProvider TableSpec Upgrade PermissionKey Audit Deprecation Extension Emit UpgradePlan Topic TestFile Action";
1628
+ const ENTITY_FORM_TYPES = " CustomField Field Input Options Result State Values";
1629
+ /** `from` and `to` prefixed to each space-separated suffix in `suffixes`. */
1630
+ function prefixed(from, to, suffixes) {
1631
+ return Object.fromEntries(suffixes.split(" ").map((suffix) => [from + suffix, to + suffix]));
1632
+ }
1633
+ const CODEMODS = {
1634
+ "0.4": {
1635
+ name: "0.4",
1636
+ description: "Renames from 0.3 to 0.4 (the naming page lists them)",
1637
+ imports: {
1638
+ createBrowser: "createClient",
1639
+ BetterBrowser: "BetterClient",
1640
+ BrowserOptions: "ClientOptions",
1641
+ BrowserAuth: "ClientAuth",
1642
+ BetterEnv: "HonoEnv",
1643
+ HandlerOptions: "MiddlewareOptions",
1644
+ Queries: "BetterQueries",
1645
+ CreateQueriesOptions: "QueriesOptions",
1646
+ Postgres: "BetterPostgres",
1647
+ DefineSupabaseOptions: "SupabaseOptions"
1648
+ },
1649
+ members: [
1650
+ {
1651
+ from: "serverFor",
1652
+ to: "contextForSession"
1653
+ },
1654
+ {
1655
+ from: "toORPCError",
1656
+ to: "toOrpcError"
1657
+ },
1658
+ {
1659
+ from: "$table",
1660
+ to: "$tableName",
1661
+ notCalled: true
1662
+ }
1663
+ ],
1664
+ props: [{
1665
+ component: "BetterSupabaseProvider",
1666
+ from: "browser",
1667
+ to: "client"
1668
+ }],
1669
+ review: [
1670
+ {
1671
+ pattern: /\.server\(\)/,
1672
+ message: "`next.server()` is `bsb.context()` on the createNext() instance"
1673
+ },
1674
+ {
1675
+ pattern: /\.handle\(\)/,
1676
+ message: "Hono's `bsb.handle()` is `bsb.handler()`"
1677
+ },
1678
+ {
1679
+ pattern: /\bmcp\.handler\b/,
1680
+ message: "`mcp.handler` is `bsb.endpoint`"
1681
+ },
1682
+ {
1683
+ pattern: /\.sb\b/,
1684
+ message: "`client.sb` is `client.betterSupabase`"
1685
+ },
1686
+ {
1687
+ pattern: /\btestExecutor\(\s*\{[^}]*\bsb\b/,
1688
+ message: "`{ sb }` in testExecutor is `{ betterSupabase }`"
1689
+ }
1690
+ ]
1691
+ },
1692
+ "0.5": {
1693
+ name: "0.5",
1694
+ description: "Renames from 0.4 to 0.5: createMcp's scopes is advertisedScopes",
1695
+ options: [{
1696
+ call: "createMcp",
1697
+ from: "scopes",
1698
+ to: "advertisedScopes"
1699
+ }]
1700
+ },
1701
+ "0.6": {
1702
+ name: "0.6",
1703
+ 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",
1704
+ strings: {
1705
+ ...BLOCK_EVENT_RENAMES,
1706
+ "org.*": "organization.*"
1707
+ },
1708
+ imports: {
1709
+ KitEvent: "BlockEvent",
1710
+ KitEventMap: "BlockEventMap",
1711
+ KitEventType: "BlockEventType",
1712
+ KitEventMeta: "BlockEventMeta",
1713
+ KitEventPattern: "BlockEventPattern",
1714
+ KitEventsMatching: "BlockEventsMatching",
1715
+ onKitEvent: "onBlockEvent",
1716
+ forwardKitEvents: "forwardBlockEvents",
1717
+ ForwardKitOptions: "ForwardBlockOptions",
1718
+ KIT_ATTRIBUTES: "BLOCK_ATTRIBUTES",
1719
+ kitCloudEvent: "blockCloudEvent",
1720
+ kitEventAttributes: "blockEventAttributes",
1721
+ traceKitEvents: "traceBlockEvents",
1722
+ KitTransport: "BlockTransport",
1723
+ OrgEventData: "OrganizationEventData",
1724
+ createOrgs: "createOrganizations",
1725
+ Orgs: "Organizations",
1726
+ OrgsOptions: "OrganizationsOptions",
1727
+ CreateOrgOptions: "CreateOrganizationOptions",
1728
+ OrgAttributes: "OrganizationAttributes",
1729
+ orgLogoBucket: "organizationLogoBucket",
1730
+ OrgLogoBucketOptions: "OrganizationLogoBucketOptions",
1731
+ KitsConfig: "BlocksConfig",
1732
+ KitModuleConfig: "BlockConfig",
1733
+ KitMode: "BlockMode",
1734
+ AccessKitConfig: "AccessBlockConfig",
1735
+ renderKit: "renderModules",
1736
+ kitLayout: "moduleLayout",
1737
+ kitPermissionKeys: "modulePermissionKeys",
1738
+ kitDeprecations: "moduleDeprecations",
1739
+ kitFilePaths: "moduleFilePaths",
1740
+ kitFileVersion: "moduleFileVersion",
1741
+ sameKitFile: "sameModuleFile",
1742
+ kitIdType: "moduleIdType",
1743
+ isKitIdType: "isModuleIdType",
1744
+ KIT_ID_TYPES: "MODULE_ID_TYPES",
1745
+ KitIdType: "ModuleIdType",
1746
+ KitContext: "ModuleContext",
1747
+ KitLayout: "ModuleLayout",
1748
+ KitFile: "ModuleFile",
1749
+ KitNames: "ModuleNames",
1750
+ KitTableSpec: "ModuleTableSpec",
1751
+ KitContractFunction: "ModuleContractFunction",
1752
+ KitDeprecation: "ModuleDeprecation",
1753
+ KitPermissionKey: "ModulePermissionKey",
1754
+ KitUpgrade: "ModuleUpgrade",
1755
+ KitUpgradePlan: "ModuleUpgradePlan",
1756
+ InstalledKitModule: "InstalledModule"
1757
+ },
1758
+ options: [{
1759
+ call: "defineSupabase",
1760
+ from: "maxUrlLength",
1761
+ to: "urlLengthLimit"
1762
+ }],
1763
+ review: [
1764
+ {
1765
+ pattern: /from\s*["']better-supabase\/(orgs|jobs|notifications|webhooks)["']/,
1766
+ 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"
1767
+ },
1768
+ {
1769
+ pattern: /\bcreateInbox\b[^\n]*from\s*["']better-supabase\/(blocks\/)?jobs["']/,
1770
+ message: "The webhook inbox is `createWebhookInbox` from `better-supabase/blocks/jobs`; `createInbox` is now the conversation inbox in `blocks/inbox`"
1771
+ },
1772
+ {
1773
+ pattern: /\$rpc\s*(<|\()/,
1774
+ 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"
1775
+ },
1776
+ {
1777
+ pattern: /\.publicUrl\s*\(/,
1778
+ message: "A connected bucket's `publicUrl()` returns a `Result` instead of throwing: read `.data` (`null` on an error) or check `.ok`"
1779
+ },
1780
+ {
1781
+ pattern: /\.path\s*\(\s*\{/,
1782
+ 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`"
1783
+ }
1784
+ ]
1785
+ },
1786
+ "0.9": {
1787
+ name: "0.9",
1788
+ 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",
1789
+ imports: {
1790
+ ModulesConfig: "BlocksConfig",
1791
+ ModuleConfig: "BlockConfig",
1792
+ AccessModuleConfig: "AccessBlockConfig",
1793
+ ModuleMode: "BlockMode"
1794
+ },
1795
+ configFile: (source, json) => {
1796
+ const moved = json ? moveSqlModulesToBlocksJson(source) : moveSqlModulesToBlocks(source);
1797
+ return withWebhookFormat(moved.ok && !json ? {
1798
+ ...moved,
1799
+ review: environmentModules(moved.text)
1800
+ } : moved, json, "standard");
1801
+ },
1802
+ cliCalls: migrateCliCall,
1803
+ cliReview: [SQL_ADD_HINT],
1804
+ pins: [{
1805
+ call: "defineListQuery",
1806
+ argument: 2,
1807
+ ...OFFSET_PIN
1808
+ }, {
1809
+ call: "defineResource",
1810
+ argument: 2,
1811
+ unless: ["list"],
1812
+ ...OFFSET_PIN
1813
+ }],
1814
+ review: [
1815
+ {
1816
+ pattern: /\bresources\s*:\s*\{/,
1817
+ 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"
1818
+ },
1819
+ {
1820
+ pattern: /\bsupportSessions\s*\(/,
1821
+ 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"
1822
+ },
1823
+ {
1824
+ pattern: /\bcanApprove\b/,
1825
+ message: "`authorization.functions.canApprove` is deprecated: set `isApprover` with `{kind}` (`'ai-tool'`), `{subject}` (the tool name, was `{tool}`) and `{tenant}`"
1826
+ },
1827
+ {
1828
+ pattern: /\bcreateWebhooks\s*\(/,
1829
+ 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`"
1830
+ },
1831
+ {
1832
+ pattern: /\bgatewayOptions\s*\(/,
1833
+ message: "`gatewayOptions` ignores a `user` in its second argument; pass the caller's id as `context.userId`"
1834
+ },
1835
+ {
1836
+ pattern: /bettersupabase\.com\/problems\/(invalid-request|unauthorized|forbidden|not-found|conflict|rate-limited|unexpected)\b|["'](Invalid request|Not found|Too many requests|Unexpected error)["']/,
1837
+ 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"
1838
+ },
1839
+ {
1840
+ pattern: /\bpublish_webhook_event\s*\(/,
1841
+ message: "`publish_webhook_event` takes `subject` and `read_permission` and delivers only to endpoints whose owner may read the event"
1842
+ },
1843
+ {
1844
+ pattern: /\btoken_scope_allows\s*\(|["']oauth-client["']/,
1845
+ 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"
1846
+ },
1847
+ {
1848
+ pattern: /\b(has_organization_role|member_organization_ids|organization_member_role)\s*\(/,
1849
+ 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()`"
1850
+ },
1851
+ {
1852
+ pattern: /\b(workflowStarter|startOnEvent)\s*\(/,
1853
+ 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`"
1854
+ },
1855
+ {
1856
+ pattern: /\bcreateBuilder\s*\(/,
1857
+ 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`"
1858
+ },
1859
+ {
1860
+ pattern: /\b(createNotifications|createReminders)\s*\(|\.fanOut\s*\(/,
1861
+ 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`"
1862
+ },
1863
+ {
1864
+ pattern: /\bkind\s*:\s*["']agent["']/,
1865
+ 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"
1866
+ },
1867
+ {
1868
+ pattern: /\bcreate_share_link\b/,
1869
+ 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)`"
1870
+ },
1871
+ {
1872
+ pattern: /\bbefore_promotion_activate\b/,
1873
+ 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"
1874
+ },
1875
+ {
1876
+ pattern: /\bcomments\s*:\s*\{/,
1877
+ message: "With `config.records` set and no `subjects` option, comments accept only the registered subject types and require read on the subject row"
1878
+ }
1879
+ ]
1880
+ },
1881
+ "0.11": {
1882
+ name: "0.11",
1883
+ 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",
1884
+ configFile: (source, json) => withWebhookFormat({
1885
+ ok: true,
1886
+ text: source
1887
+ }, json, "cloudevents")
1888
+ },
1889
+ "0.15": {
1890
+ name: "0.15",
1891
+ 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, and so are the lines of the app's SQL tests, schema files and newest migration that name a bs_ object the upgrade renames to bsb_",
1892
+ sqlNames: true,
1893
+ bindings: {
1894
+ bs: "bsb",
1895
+ SqlModule: "BlockSql",
1896
+ ModuleDefinition: "BlockSqlDefinition",
1897
+ ...prefixed("Module", "BlockSql", BLOCK_SQL_TYPES),
1898
+ ...prefixed("EntityForm", "RecordForm", ENTITY_FORM_TYPES),
1899
+ renderModules: "renderBlocks",
1900
+ resolveModules: "resolveBlocks",
1901
+ resolveModule: "resolveBlock",
1902
+ isModuleIdType: "isBlockSqlIdType",
1903
+ sameModuleFile: "sameBlockFile",
1904
+ InstalledModule: "InstalledBlock",
1905
+ SkippedModule: "SkippedBlock",
1906
+ SubjectRef: "RecordRef",
1907
+ entityForm: "recordForm",
1908
+ useEntityForm: "useRecordForm",
1909
+ UseEntityFormOptions: "UseRecordFormOptions",
1910
+ ShipmentCarrier: "ShippingProvider",
1911
+ testShipmentCarrier: "testShippingProvider",
1912
+ TestShipmentCarrierOptions: "TestShippingProviderOptions",
1913
+ QueueBackend: "QueueProvider",
1914
+ sqlQueueBackend: "sqlQueueProvider",
1915
+ testQueueBackend: "testQueueProvider",
1916
+ transportQueueBackend: "transportQueueProvider",
1917
+ vercelQueueBackend: "vercelQueueProvider",
1918
+ TestQueueBackendOptions: "TestQueueProviderOptions",
1919
+ TransportQueueBackendOptions: "TransportQueueProviderOptions",
1920
+ VercelQueueBackendOptions: "VercelQueueProviderOptions",
1921
+ ...RECORD_BINDING_RENAMES
1922
+ },
1923
+ imports: BLOCK_EXPORT_RENAMES,
1924
+ subpathImports: PLUGIN_IMPORT_RENAMES,
1925
+ subpaths: SUBPATH_RENAMES_0_15,
1926
+ members: [{
1927
+ from: "bs",
1928
+ to: "bsb"
1929
+ }],
1930
+ options: DATA_CONTRACT_OPTIONS,
1931
+ strings: {
1932
+ ...DATA_CONTRACT_STRINGS,
1933
+ "bs-block": "bsb"
1934
+ },
1935
+ configFile: (source, json) => [
1936
+ withoutPlugins,
1937
+ withBlockNames,
1938
+ withSubjectsOn,
1939
+ thenConvertPresetCode,
1940
+ withoutAdoptOwnership
1941
+ ].reduce((edit, step) => step(edit, json), json ? groupConfigJson(source) : groupConfigSource(source)),
1942
+ designFile: convertDesignFile,
1943
+ cliCalls: migrateCliCall,
1944
+ source: rewrite015,
1945
+ review: REVIEW_0_15
1946
+ }
1947
+ };
1948
+ const SUPABASE_IMPORT = /\bfrom\s*["'](?:better-supabase(?:\/[\w./-]*)?|[^"']*supabase[^"']*)["']/;
1949
+ /**
1950
+ * Renames bindings a file declares, destructures or imports, in files that
1951
+ * import from `better-supabase` or a `supabase` module.
1952
+ */
1953
+ function renameBindings(text, bindings) {
1954
+ const ranges = codeRanges(text);
1955
+ if (codeMatches(text, new RegExp(SUPABASE_IMPORT, "g"), ranges).length === 0) return text;
1956
+ return renameIdentifiers(text, new Map(Object.entries(bindings).filter(([from]) => {
1957
+ const name = escapeRegExp(from);
1958
+ 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;
1959
+ })));
1960
+ }
1961
+ function applyEdits(text, edits) {
1962
+ let out = "";
1963
+ let cursor = 0;
1964
+ for (const edit of edits.toSorted((a, b) => a.start - b.start)) {
1965
+ if (edit.start < cursor) continue;
1966
+ out += text.slice(cursor, edit.start) + edit.text;
1967
+ cursor = edit.end;
1968
+ }
1969
+ return out + text.slice(cursor);
1970
+ }
1971
+ const escapeRegExp = (value) => value.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&");
1972
+ function inCode(ranges, index) {
1973
+ let low = 0;
1974
+ let high = ranges.length - 1;
1975
+ while (low <= high) {
1976
+ const middle = Math.floor((low + high) / 2);
1977
+ const [start, end] = ranges[middle];
1978
+ if (index < start) high = middle - 1;
1979
+ else if (index >= end) low = middle + 1;
1980
+ else return true;
1981
+ }
1982
+ return false;
1983
+ }
1984
+ const OPENING = "({[";
1985
+ const CLOSING = ")}]";
1986
+ /** Matches of `pattern` that start in code. */
1987
+ function codeMatches(text, pattern, ranges) {
1988
+ return [...text.matchAll(pattern)].filter((match) => inCode(ranges, match.index));
1989
+ }
1990
+ const IMPORT = /\b(import|export)\s+(type\s+)?\{([^}]*)\}\s*from\s*(["'])better-supabase(?:\/([\w./-]*))?\4/g;
1991
+ /** Renames imported names, from every subpath or only from `subpath`. */
1992
+ function renameImports(text, renames, subpath) {
1993
+ const ranges = codeRanges(text);
1994
+ const locals = /* @__PURE__ */ new Set();
1995
+ const edits = [];
1996
+ for (const match of codeMatches(text, IMPORT, ranges)) {
1997
+ if (subpath !== void 0 && match[5] !== subpath) continue;
1998
+ const list = match[3];
1999
+ const listStart = match.index + match[0].indexOf("{") + 1;
2000
+ const renamed = list.replaceAll(/(\btype\s+)?([\w$]+)(\s+as\s+[\w$]+)?/g, (spec, type, name, alias) => {
2001
+ const to = renames[name];
2002
+ if (to === void 0) return spec;
2003
+ if (alias === void 0 && match[1] === "import") locals.add(name);
2004
+ return `${type ?? ""}${to}${alias ?? ""}`;
2005
+ });
2006
+ if (renamed !== list) edits.push({
2007
+ start: listStart,
2008
+ end: listStart + list.length,
2009
+ text: renamed
2010
+ });
2011
+ }
2012
+ return {
2013
+ text: applyEdits(text, edits),
2014
+ locals
2015
+ };
2016
+ }
2017
+ function renameIdentifiers(text, renames) {
2018
+ if (renames.size === 0) return text;
2019
+ const ranges = codeRanges(text);
2020
+ const names = [...renames.keys()].map(escapeRegExp).join("|");
2021
+ return applyEdits(text, codeMatches(text, new RegExp(`(?<![\\w$.])(?:${names})(?![\\w$])`, "g"), ranges).map((match) => ({
2022
+ start: match.index,
2023
+ end: match.index + match[0].length,
2024
+ text: renames.get(match[0])
2025
+ })));
2026
+ }
2027
+ function renameStrings(text, strings) {
2028
+ const names = Object.keys(strings).map(escapeRegExp).join("|");
2029
+ if (names === "") return text;
2030
+ const ranges = codeRanges(text);
2031
+ const pattern = new RegExp(`(["'\`])(${names})\\1`, "g");
2032
+ return applyEdits(text, [...text.matchAll(pattern)].filter((match) => !inCode(ranges, match.index + 1)).map((match) => ({
2033
+ start: match.index + 1,
2034
+ end: match.index + 1 + match[2].length,
2035
+ text: strings[match[2]]
2036
+ })));
2037
+ }
2038
+ function renameMembers(text, members) {
2039
+ const ranges = codeRanges(text);
2040
+ return applyEdits(text, members.flatMap((member) => codeMatches(text, new RegExp(`\\.${escapeRegExp(member.from)}(?![\\w$])${member.notCalled === true ? "(?!\\s*\\()" : ""}`, "g"), ranges).map((match) => ({
2041
+ start: match.index,
2042
+ end: match.index + match[0].length,
2043
+ text: `.${member.to}`
2044
+ }))));
2045
+ }
2046
+ function renameProps(text, props) {
2047
+ const ranges = codeRanges(text);
2048
+ const edits = [];
2049
+ for (const prop of props) {
2050
+ const tag = new RegExp(`<${escapeRegExp(prop.component)}(?![\\w$.])`, "g");
2051
+ for (const match of codeMatches(text, tag, ranges)) {
2052
+ let depth = 0;
2053
+ for (let index = match.index + match[0].length; index < text.length; index += 1) {
2054
+ if (!inCode(ranges, index)) continue;
2055
+ const char = text[index];
2056
+ if (char === "{") depth += 1;
2057
+ else if (char === "}") depth -= 1;
2058
+ else if (char === ">" && depth === 0) break;
2059
+ if (depth === 0 && /\s/.test(text[index - 1] ?? "") && text.startsWith(`${prop.from}=`, index)) edits.push({
2060
+ start: index,
2061
+ end: index + prop.from.length,
2062
+ text: prop.to
2063
+ });
2064
+ }
2065
+ }
2066
+ }
2067
+ return applyEdits(text, edits);
2068
+ }
2069
+ /** The index after the bracket that closes the one at `open`, in code only. */
2070
+ function closing(text, open, ranges) {
2071
+ let depth = 0;
2072
+ for (let index = open; index < text.length; index += 1) {
2073
+ if (!inCode(ranges, index)) continue;
2074
+ const char = text[index];
2075
+ if (OPENING.includes(char)) depth += 1;
2076
+ else if (CLOSING.includes(char)) {
2077
+ depth -= 1;
2078
+ if (depth === 0) return index + 1;
2079
+ }
2080
+ }
2081
+ return text.length;
2082
+ }
2083
+ /**
2084
+ * Calls `visit(index, depth)` for each code character from `open` to its
2085
+ * closing bracket.
2086
+ */
2087
+ function walkBrackets(text, open, ranges, visit) {
2088
+ const end = closing(text, open, ranges);
2089
+ let depth = 0;
2090
+ for (let index = open; index < end; index += 1) {
2091
+ if (!inCode(ranges, index)) continue;
2092
+ const char = text[index];
2093
+ if (OPENING.includes(char)) depth += 1;
2094
+ else if (CLOSING.includes(char)) depth -= 1;
2095
+ visit(index, depth, char);
2096
+ }
2097
+ }
2098
+ /** Where `key` is a top-level key of the object literal at `open`. */
2099
+ function topLevelKeys(text, open, key, ranges) {
2100
+ const keys = [];
2101
+ let previous = "";
2102
+ walkBrackets(text, open, ranges, (index, depth, char) => {
2103
+ if (depth === 1 && (previous === "{" || previous === ",") && text.startsWith(key, index) && !/[\w$]/.test(text[index + key.length] ?? "")) {
2104
+ const after = /^\s*(\S)/.exec(text.slice(index + key.length))?.[1];
2105
+ if (after === ":") keys.push({
2106
+ index,
2107
+ shorthand: false
2108
+ });
2109
+ else if (after === "," || after === "}") keys.push({
2110
+ index,
2111
+ shorthand: true
2112
+ });
2113
+ }
2114
+ if (depth === 1 && !/\s/.test(char)) previous = char;
2115
+ });
2116
+ return keys;
2117
+ }
2118
+ function renameOptions(text, options) {
2119
+ const ranges = codeRanges(text);
2120
+ const edits = [];
2121
+ for (const option of options) {
2122
+ const call = new RegExp(`(?<![\\w$.])${escapeRegExp(option.call)}\\s*(?:<[^>]*>)?\\s*\\(`, "g");
2123
+ for (const match of codeMatches(text, call, ranges)) {
2124
+ const objects = [];
2125
+ walkBrackets(text, match.index + match[0].length - 1, ranges, (index, depth, char) => {
2126
+ if (depth === 2 && char === "{") objects.push(index);
2127
+ });
2128
+ for (const object of objects) for (const { index, shorthand } of topLevelKeys(text, object, option.from, ranges)) edits.push({
2129
+ start: index,
2130
+ end: index + option.from.length,
2131
+ text: shorthand ? `${option.to}: ${option.from}` : option.to
2132
+ });
2133
+ }
2134
+ }
2135
+ return applyEdits(text, edits);
2136
+ }
2137
+ /** The arguments of the call whose `(` is at `open`: start and end of each. */
2138
+ function callArguments(text, open, ranges) {
2139
+ const args = [];
2140
+ let start = open + 1;
2141
+ const end = closing(text, open, ranges) - 1;
2142
+ walkBrackets(text, open, ranges, (index, depth, char) => {
2143
+ if (depth === 1 && char === ",") {
2144
+ args.push({
2145
+ start,
2146
+ end: index
2147
+ });
2148
+ start = index + 1;
2149
+ }
2150
+ });
2151
+ if (text.slice(start, end).trim() !== "") args.push({
2152
+ start,
2153
+ end
2154
+ });
2155
+ return args;
2156
+ }
2157
+ /**
2158
+ * Calls of `pin.call` whose options object lacks `pin.key`, with the insertion
2159
+ * when one is safe.
2160
+ */
2161
+ function pinTargets(text, pin) {
2162
+ const ranges = codeRanges(text);
2163
+ const call = new RegExp(`(?<![\\w$.])${escapeRegExp(pin.call)}\\s*(?:<[^>]*>)?\\s*\\(`, "g");
2164
+ const targets = [];
2165
+ const entry = `${pin.key}: ${pin.value}`;
2166
+ for (const match of codeMatches(text, call, ranges)) {
2167
+ const open = match.index + match[0].length - 1;
2168
+ const args = callArguments(text, open, ranges);
2169
+ const arg = args[pin.argument];
2170
+ if (arg === void 0) {
2171
+ if (args.length !== pin.argument) {
2172
+ targets.push({
2173
+ call: match.index,
2174
+ edit: void 0
2175
+ });
2176
+ continue;
2177
+ }
2178
+ const last = args.at(-1);
2179
+ const at = last === void 0 ? open + 1 : last.end;
2180
+ const trailing = text[at] === ",";
2181
+ targets.push({
2182
+ call: match.index,
2183
+ edit: trailing ? {
2184
+ start: at + 1,
2185
+ end: at + 1,
2186
+ text: ` { ${entry} }`
2187
+ } : {
2188
+ start: at,
2189
+ end: at,
2190
+ text: `, { ${entry} }`
2191
+ }
2192
+ });
2193
+ continue;
2194
+ }
2195
+ const offset = text.slice(arg.start, arg.end).search(/\S/);
2196
+ const object = arg.start + offset;
2197
+ if (text[object] !== "{") {
2198
+ targets.push({
2199
+ call: match.index,
2200
+ edit: void 0
2201
+ });
2202
+ continue;
2203
+ }
2204
+ if ([pin.key, ...pin.unless ?? []].some((key) => topLevelKeys(text, object, key, ranges).length > 0)) continue;
2205
+ const spreads = [];
2206
+ walkBrackets(text, object, ranges, (index, depth) => {
2207
+ if (depth === 1 && text.startsWith("...", index)) spreads.push(index);
2208
+ });
2209
+ if (spreads.length > 0) {
2210
+ targets.push({
2211
+ call: match.index,
2212
+ edit: void 0
2213
+ });
2214
+ continue;
2215
+ }
2216
+ const body = text.slice(object + 1, closing(text, object, ranges) - 1);
2217
+ const first = /^[ \t]*\n([ \t]*)\S/.exec(body);
2218
+ targets.push({
2219
+ call: match.index,
2220
+ edit: body.trim() === "" ? {
2221
+ start: object,
2222
+ end: object + body.length + 2,
2223
+ text: `{ ${entry} }`
2224
+ } : first ? {
2225
+ start: object + 1,
2226
+ end: object + 1,
2227
+ text: `\n${first[1]}${entry},`
2228
+ } : {
2229
+ start: object + 1,
2230
+ end: object + 1,
2231
+ text: ` ${entry},`
2232
+ }
2233
+ });
2234
+ }
2235
+ return targets;
2236
+ }
2237
+ function pinOptions(text, pins) {
2238
+ let out = text;
2239
+ for (const pin of pins) if (pin.when.test(out)) out = applyEdits(out, pinTargets(out, pin).flatMap((target) => target.edit === void 0 ? [] : [target.edit]));
2240
+ const review = pins.flatMap((pin) => pinTargets(out, pin).map((target) => ({
2241
+ line: out.slice(0, target.call).split("\n").length,
2242
+ message: pin.message
2243
+ })));
2244
+ return {
2245
+ text: out,
2246
+ review
2247
+ };
2248
+ }
2249
+ /** Applies one codemod to a source file. */
2250
+ function applyCodemod(codemod, source, file) {
2251
+ if (file !== void 0 && (CLI_CALL_FILE.test(file) || SHELL_FILE.test(file))) {
2252
+ const hints = linesMatching(source, codemod.cliReview ?? []);
2253
+ if (!codemod.cliCalls) return {
2254
+ text: source,
2255
+ review: hints
2256
+ };
2257
+ return CLI_CALL_FILE.test(file) ? {
2258
+ text: rewriteCliCalls(source, codemod.cliCalls),
2259
+ review: hints
2260
+ } : {
2261
+ text: source,
2262
+ review: [...cliCallHints(source, codemod.cliCalls), ...hints]
2263
+ };
2264
+ }
2265
+ if (file !== void 0 && DESIGN_FILE_NAME.test(file)) return designFileResult(source, codemod.designFile);
2266
+ let text = source;
2267
+ const refused = [];
2268
+ if (codemod.configFile && file !== void 0 && CONFIG_FILE.test(file)) {
2269
+ const json = file.endsWith(".json");
2270
+ const edit = codemod.configFile(source, json);
2271
+ if (edit.ok) {
2272
+ text = edit.text;
2273
+ refused.push(..."review" in edit ? edit.review : []);
2274
+ } else refused.push({
2275
+ line: 1,
2276
+ message: `The config wasn't rewritten: ${edit.reason}`
2277
+ });
2278
+ if (json) return {
2279
+ text,
2280
+ review: refused
2281
+ };
2282
+ }
2283
+ for (const [subpath, renames] of Object.entries(codemod.subpathImports ?? {})) {
2284
+ const imported = renameImports(text, renames, subpath);
2285
+ text = renameIdentifiers(imported.text, new Map([...imported.locals].map((name) => [name, renames[name]])));
2286
+ }
2287
+ if (codemod.subpaths) text = renameSubpaths(text, codemod.subpaths);
2288
+ if (codemod.imports) {
2289
+ const imported = renameImports(text, codemod.imports);
2290
+ text = renameIdentifiers(imported.text, new Map([...imported.locals].map((name) => [name, codemod.imports[name]])));
2291
+ }
2292
+ if (codemod.bindings) text = renameBindings(text, codemod.bindings);
2293
+ if (codemod.members) text = renameMembers(text, codemod.members);
2294
+ if (codemod.props) text = renameProps(text, codemod.props);
2295
+ if (codemod.options) text = renameOptions(text, codemod.options);
2296
+ if (codemod.strings) text = renameStrings(text, codemod.strings);
2297
+ if (codemod.source) {
2298
+ const rewritten = codemod.source(text);
2299
+ text = rewritten.text;
2300
+ refused.push(...rewritten.review);
2301
+ }
2302
+ if (codemod.pins) {
2303
+ const pinned = pinOptions(text, codemod.pins);
2304
+ text = pinned.text;
2305
+ refused.push(...pinned.review);
2306
+ }
2307
+ return {
2308
+ text,
2309
+ review: [...refused, ...linesMatching(text, codemod.review ?? [])]
2310
+ };
2311
+ }
2312
+ /** One review line per line of `text` that a hint's pattern matches. */
2313
+ function linesMatching(text, hints) {
2314
+ return hints.flatMap((hint) => text.split("\n").flatMap((line, index) => hint.pattern.test(line) ? [{
2315
+ line: index + 1,
2316
+ message: hint.message
2317
+ }] : []));
2318
+ }
2319
+ //#endregion
2320
+ //#region src/cli/commands/codemod.ts
2321
+ const CODEMOD_ARGS = {
2322
+ path: {
2323
+ type: "positional",
2324
+ required: false,
2325
+ variadic: true,
2326
+ description: "Files or directories to rewrite (default: the project)"
2327
+ },
2328
+ "dry-run": {
2329
+ type: "boolean",
2330
+ description: "Show the changes without writing them"
2331
+ },
2332
+ check: {
2333
+ type: "boolean",
2334
+ description: "Write nothing; exit 1 with a diff when a file would change"
2335
+ }
2336
+ };
2337
+ const SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([
2338
+ ".ts",
2339
+ ".tsx",
2340
+ ".mts",
2341
+ ".cts",
2342
+ ".js",
2343
+ ".jsx",
2344
+ ".mjs",
2345
+ ".cjs"
2346
+ ]);
2347
+ const SKIPPED_DIRS = /* @__PURE__ */ new Set([
2348
+ "node_modules",
2349
+ ".git",
2350
+ ".next",
2351
+ ".turbo",
2352
+ ".vercel",
2353
+ "dist",
2354
+ "build",
2355
+ "coverage"
2356
+ ]);
2357
+ /**
2358
+ * Source, config and script files under `path`, skipping dependencies, build
2359
+ * output and `.d.ts` files.
2360
+ */
2361
+ async function sourceFiles(path) {
2362
+ const info = await stat(path).catch(() => void 0);
2363
+ if (!info) return [];
2364
+ if (info.isFile()) return [path];
2365
+ const files = [];
2366
+ for (const entry of await readdir(path, { withFileTypes: true })) {
2367
+ const full = join(path, entry.name);
2368
+ if (entry.isDirectory()) {
2369
+ if (!SKIPPED_DIRS.has(entry.name)) files.push(...await sourceFiles(full));
2370
+ } 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);
2371
+ }
2372
+ return files.toSorted();
2373
+ }
2374
+ async function runCodemod(config, args, paint = plain) {
2375
+ const [name, ...paths] = args._ ?? [];
2376
+ const names = Object.entries(CODEMODS).map(([key, codemod]) => ` ${key.padEnd(5)} ${codemod.description}`).join("\n");
2377
+ if (name === void 0) throw new CliError("usage", `Name a codemod:\n${names}`);
2378
+ const codemod = CODEMODS[name];
2379
+ if (!codemod) throw new CliError("usage", `Unknown codemod "${name}". Codemods:\n${names}`);
2380
+ const roots = (paths.length > 0 ? paths : ["."]).map((path) => resolve(config.root, path));
2381
+ const files = [...new Set((await Promise.all(roots.map(sourceFiles))).flat())];
2382
+ const dryRun = args["dry-run"] === true;
2383
+ const edits = [];
2384
+ const review = [];
2385
+ for (const file of files) {
2386
+ const source = await readFile(file, "utf-8");
2387
+ const result = applyCodemod(codemod, source, file);
2388
+ const path = relative(config.root, file);
2389
+ review.push(...result.review.map((hint) => ({
2390
+ file: path,
2391
+ ...hint
2392
+ })));
2393
+ if (result.text !== source) edits.push({
2394
+ path: file,
2395
+ contents: result.text,
2396
+ policy: "edit"
2397
+ });
2398
+ }
2399
+ if (codemod.sqlNames === true) review.push(...await legacySqlNameHints(config));
2400
+ const plan = {
2401
+ root: config.root,
2402
+ regenerate: `better-supabase codemod ${codemod.name}`,
2403
+ files: edits
2404
+ };
2405
+ const applied = await applyPlan(plan, args, paint);
2406
+ const changed = changedFiles(applied);
2407
+ if (applied.mode === "check" && applied.drift) return planResult(plan, applied, { data: { codemod: codemod.name } });
2408
+ 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")];
2409
+ if (review.length > 0) lines.push("", "Check these by hand:", ...review.map((hint) => ` ${hint.file}:${String(hint.line)}: ${hint.message}`));
2410
+ return {
2411
+ code: 0,
2412
+ output: lines.join("\n"),
2413
+ data: {
2414
+ codemod: codemod.name,
2415
+ dryRun,
2416
+ changed,
2417
+ files: applied.changes,
2418
+ review
2419
+ }
2420
+ };
2421
+ }
2422
+ /** The `codemod <name>` subcommand for one codemod in `CODEMODS`. */
2423
+ function codemodCommand(name) {
2424
+ return defineCliCommand({
2425
+ meta: commandMeta(`codemod ${name}`),
2426
+ args: CODEMOD_ARGS,
2427
+ runsWithInvalidConfig: true,
2428
+ run: (args, { config, paint }) => runCodemod(config, {
2429
+ ...args,
2430
+ _: [name, ...args._]
2431
+ }, paint)
2432
+ });
2433
+ }
2434
+ //#endregion
2435
+ export { codemodCommand };