better-supabase 0.14.0 → 0.15.0

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