better-supabase 0.16.0 → 0.18.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.
- package/dist/{access-sql-B-MkVARa.js → access-sql-CNIgUqWf.js} +2 -0
- package/dist/{adapter-Dyks1lX1.js → adapter-CfuBICuG.js} +3 -1
- package/dist/{ai-schedules-BmkARmQ9.d.ts → ai-schedules-DzLh6BYI.d.ts} +1 -1
- package/dist/ai-sdk/agents/index.d.ts +2 -2
- package/dist/ai-sdk/memory/index.js +1 -1
- package/dist/{api-hHwieEfz.d.ts → api-B6zteBya.d.ts} +2 -2
- package/dist/{app-tables-D29Rahtg.js → app-tables-DyswUg6J.js} +11 -2
- package/dist/{app-tables-yMQ4ubyY.d.ts → app-tables-XwCviyhP.d.ts} +1 -1
- package/dist/astro/index.d.ts +5 -5
- package/dist/astro/index.js +5 -5
- package/dist/{attachments-aJYgdYtB.js → attachments-M-Dy79Ry.js} +9 -2
- package/dist/{authorization-HZdJCaVm.d.ts → authorization-IiE__z2m.d.ts} +187 -89
- package/dist/{automations-CIwRq7zm.js → automations-B5P6vTvk.js} +2 -2
- package/dist/{automations-CD1XlL2W.js → automations-BKjJpktQ.js} +1 -1
- package/dist/{automations-Bc2ue55V.js → automations-FCnWy387.js} +2 -2
- package/dist/better-result/index.d.ts +2 -2
- package/dist/{bind-JGCPGUJh.d.ts → bind-pu5TLrla.d.ts} +4 -4
- package/dist/{block-env-y65GF_px.d.ts → block-env-CA65ulTD.d.ts} +4 -4
- package/dist/blocks/access-requests/index.d.ts +1 -1
- package/dist/blocks/access-requests/index.js +1 -1
- package/dist/blocks/activities/index.d.ts +1 -1
- package/dist/blocks/activities/index.js +1 -1
- package/dist/blocks/agents/index.d.ts +1 -1
- package/dist/blocks/agents/index.js +1 -1
- package/dist/blocks/ai-cache/index.d.ts +1 -1
- package/dist/blocks/ai-cache/index.js +1 -1
- package/dist/blocks/ai-chat/index.d.ts +4 -4
- package/dist/blocks/ai-chat/index.js +1 -1
- package/dist/blocks/ai-files/index.d.ts +1 -1
- package/dist/blocks/ai-files/index.js +1 -1
- package/dist/blocks/ai-keys/index.d.ts +1 -1
- package/dist/blocks/ai-keys/index.js +1 -1
- package/dist/blocks/ai-schedules/index.d.ts +2 -2
- package/dist/blocks/ai-schedules/index.js +1 -1
- package/dist/blocks/announcements/index.d.ts +4 -4
- package/dist/blocks/announcements/index.js +1 -1
- package/dist/blocks/api-keys/index.d.ts +2 -2
- package/dist/blocks/api-keys/index.js +1 -1
- package/dist/blocks/approvals/index.d.ts +1 -1
- package/dist/blocks/approvals/index.js +1 -1
- package/dist/blocks/assets/index.d.ts +1 -1
- package/dist/blocks/assets/index.js +1 -1
- package/dist/blocks/assignment/index.d.ts +1 -1
- package/dist/blocks/attachments/index.d.ts +40 -4
- package/dist/blocks/attachments/index.js +42 -4
- package/dist/blocks/audit/index.d.ts +5 -5
- package/dist/blocks/audit/index.js +2 -2
- package/dist/blocks/automations/index.d.ts +3 -3
- package/dist/blocks/automations/index.js +1 -1
- package/dist/blocks/billable-time/index.d.ts +1 -1
- package/dist/blocks/billing/index.d.ts +3 -3
- package/dist/blocks/billing/index.js +1 -1
- package/dist/blocks/bookings/index.d.ts +2 -2
- package/dist/blocks/bookings/index.js +1 -1
- package/dist/blocks/bulk/index.d.ts +1 -1
- package/dist/blocks/bulk/index.js +1 -1
- package/dist/blocks/calendar/index.d.ts +2 -2
- package/dist/blocks/calendar/index.js +1 -1
- package/dist/blocks/catalog/index.d.ts +1 -1
- package/dist/blocks/catalog/index.js +1 -1
- package/dist/blocks/channels/index.d.ts +1 -1
- package/dist/blocks/collections/index.d.ts +1 -1
- package/dist/blocks/collections/index.js +1 -1
- package/dist/blocks/comments/index.d.ts +5 -5
- package/dist/blocks/comments/index.js +1 -1
- package/dist/blocks/compliance/index.d.ts +1 -1
- package/dist/blocks/compliance/index.js +1 -1
- package/dist/blocks/connectors/index.d.ts +1 -1
- package/dist/blocks/connectors/index.js +1 -1
- package/dist/blocks/contacts/index.d.ts +1 -1
- package/dist/blocks/contacts/index.js +1 -1
- package/dist/blocks/content/index.d.ts +2 -2
- package/dist/blocks/content/index.js +1 -1
- package/dist/blocks/contracts/index.d.ts +1 -1
- package/dist/blocks/contracts/index.js +1 -1
- package/dist/blocks/courses/index.d.ts +2 -2
- package/dist/blocks/courses/index.js +1 -1
- package/dist/blocks/created-by/index.d.ts +4 -3
- package/dist/blocks/created-by/index.js +2 -2
- package/dist/blocks/custom-fields/index.d.ts +1 -1
- package/dist/blocks/custom-fields/index.js +1 -1
- package/dist/blocks/data-lifecycle/index.d.ts +1 -1
- package/dist/blocks/data-lifecycle/index.js +1 -1
- package/dist/blocks/deals/index.d.ts +1 -1
- package/dist/blocks/deals/index.js +1 -1
- package/dist/blocks/dispatch/index.d.ts +2 -2
- package/dist/blocks/dispatch/index.js +1 -1
- package/dist/blocks/documents/index.d.ts +1 -1
- package/dist/blocks/documents/index.js +1 -1
- package/dist/blocks/domains/index.d.ts +1 -1
- package/dist/blocks/domains/index.js +1 -1
- package/dist/blocks/donations/index.d.ts +1 -1
- package/dist/blocks/donations/index.js +1 -1
- package/dist/blocks/drive/index.d.ts +1 -1
- package/dist/blocks/drive/index.js +2 -2
- package/dist/blocks/employees/index.d.ts +2 -2
- package/dist/blocks/employees/index.js +1 -1
- package/dist/blocks/enrichment/index.d.ts +1 -1
- package/dist/blocks/enrollments/index.d.ts +1 -1
- package/dist/blocks/enrollments/index.js +1 -1
- package/dist/blocks/entitlements/index.d.ts +3 -3
- package/dist/blocks/expenses/index.d.ts +1 -1
- package/dist/blocks/expenses/index.js +1 -1
- package/dist/blocks/field-history/index.d.ts +1 -1
- package/dist/blocks/flags/index.d.ts +1 -1
- package/dist/blocks/flags/index.js +1 -1
- package/dist/blocks/forecasts/index.d.ts +1 -1
- package/dist/blocks/forms/index.d.ts +2 -2
- package/dist/blocks/forms/index.js +1 -1
- package/dist/blocks/goals/index.d.ts +1 -1
- package/dist/blocks/goals/index.js +1 -1
- package/dist/blocks/guests/index.d.ts +1 -1
- package/dist/blocks/hiring/index.d.ts +1 -1
- package/dist/blocks/hiring/index.js +1 -1
- package/dist/blocks/identities/index.d.ts +1 -1
- package/dist/blocks/identities/index.js +1 -1
- package/dist/blocks/imports/index.d.ts +1 -1
- package/dist/blocks/inbox/index.d.ts +5 -5
- package/dist/blocks/inbox/index.js +1 -1
- package/dist/blocks/incidents/index.d.ts +1 -1
- package/dist/blocks/incidents/index.js +1 -1
- package/dist/blocks/index.d.ts +4 -4
- package/dist/blocks/index.js +1 -1
- package/dist/blocks/inventory/index.d.ts +1 -1
- package/dist/blocks/inventory/index.js +1 -1
- package/dist/blocks/invoices/index.d.ts +1 -1
- package/dist/blocks/invoices/index.js +1 -1
- package/dist/blocks/knowledge/index.d.ts +1 -1
- package/dist/blocks/knowledge/index.js +1 -1
- package/dist/blocks/lead-scoring/index.d.ts +2 -2
- package/dist/blocks/lead-scoring/index.js +1 -1
- package/dist/blocks/leases/index.d.ts +1 -1
- package/dist/blocks/leases/index.js +1 -1
- package/dist/blocks/leave/index.d.ts +1 -1
- package/dist/blocks/leave/index.js +1 -1
- package/dist/blocks/ledger/index.d.ts +1 -1
- package/dist/blocks/mail-sync/index.d.ts +2 -2
- package/dist/blocks/mail-sync/index.js +1 -1
- package/dist/blocks/memberships/index.d.ts +3 -3
- package/dist/blocks/memberships/index.js +1 -1
- package/dist/blocks/memory/index.d.ts +1 -1
- package/dist/blocks/memory/index.js +1 -1
- package/dist/blocks/messaging/index.d.ts +5 -5
- package/dist/blocks/messaging/index.js +1 -1
- package/dist/blocks/metrics/index.d.ts +1 -1
- package/dist/blocks/metrics/index.js +1 -1
- package/dist/blocks/mfa/index.d.ts +2 -2
- package/dist/blocks/moderation/index.d.ts +1 -1
- package/dist/blocks/moderation/index.js +1 -1
- package/dist/blocks/notifications/index.d.ts +17 -6
- package/dist/blocks/notifications/index.js +110 -40
- package/dist/blocks/numbering/index.d.ts +1 -1
- package/dist/blocks/numbering/index.js +1 -1
- package/dist/blocks/oauth-server/index.d.ts +1 -1
- package/dist/blocks/oauth-server/index.js +1 -1
- package/dist/blocks/onboarding/index.d.ts +2 -2
- package/dist/blocks/onboarding/index.js +1 -1
- package/dist/blocks/orders/index.d.ts +2 -2
- package/dist/blocks/orders/index.js +1 -1
- package/dist/blocks/organizations/index.d.ts +38 -3
- package/dist/blocks/organizations/index.js +50 -5
- package/dist/blocks/outbox/index.d.ts +1 -1
- package/dist/blocks/outbox/index.js +1 -1
- package/dist/blocks/passes/index.d.ts +2 -2
- package/dist/blocks/passes/index.js +1 -1
- package/dist/blocks/permissions/index.d.ts +4 -4
- package/dist/blocks/permissions/index.js +2 -2
- package/dist/blocks/pipelines/index.d.ts +1 -1
- package/dist/blocks/pipelines/index.js +1 -1
- package/dist/blocks/posts/index.d.ts +2 -2
- package/dist/blocks/posts/index.js +1 -1
- package/dist/blocks/profiles/index.d.ts +1 -1
- package/dist/blocks/profiles/index.js +1 -1
- package/dist/blocks/promotions/index.d.ts +1 -1
- package/dist/blocks/promotions/index.js +1 -1
- package/dist/blocks/push/index.d.ts +76 -10
- package/dist/blocks/push/index.js +172 -43
- package/dist/blocks/queue/index.d.ts +1 -1
- package/dist/blocks/queue/index.js +1 -1
- package/dist/blocks/quotes/index.d.ts +1 -1
- package/dist/blocks/quotes/index.js +1 -1
- package/dist/blocks/rank/index.d.ts +1 -1
- package/dist/blocks/reactions/index.d.ts +4 -4
- package/dist/blocks/reactions/index.js +1 -1
- package/dist/blocks/relations/index.d.ts +1 -1
- package/dist/blocks/relations/index.js +1 -1
- package/dist/blocks/reminders/index.d.ts +1 -1
- package/dist/blocks/reminders/index.js +1 -1
- package/dist/blocks/reviews/index.d.ts +1 -1
- package/dist/blocks/reviews/index.js +1 -1
- package/dist/blocks/saved-views/index.d.ts +3 -3
- package/dist/blocks/saved-views/index.js +1 -1
- package/dist/blocks/scores/index.d.ts +1 -1
- package/dist/blocks/scores/index.js +1 -1
- package/dist/blocks/search/index.d.ts +3 -3
- package/dist/blocks/search/index.js +1 -1
- package/dist/blocks/security-events/index.d.ts +1 -1
- package/dist/blocks/security-events/index.js +1 -1
- package/dist/blocks/segments/index.d.ts +2 -2
- package/dist/blocks/segments/index.js +1 -1
- package/dist/blocks/sequences/index.d.ts +2 -2
- package/dist/blocks/sequences/index.js +1 -1
- package/dist/blocks/service-accounts/index.d.ts +1 -1
- package/dist/blocks/service-accounts/index.js +1 -1
- package/dist/blocks/sessions/index.d.ts +2 -2
- package/dist/blocks/sessions/index.js +1 -1
- package/dist/blocks/settings/index.d.ts +2 -2
- package/dist/blocks/settings/index.js +1 -1
- package/dist/blocks/share-links/index.d.ts +1 -1
- package/dist/blocks/share-links/index.js +1 -1
- package/dist/blocks/shipments/index.d.ts +2 -2
- package/dist/blocks/shipments/index.js +1 -1
- package/dist/blocks/signatures/index.d.ts +2 -2
- package/dist/blocks/signatures/index.js +1 -1
- package/dist/blocks/signing-keys/index.d.ts +1 -1
- package/dist/blocks/signing-keys/index.js +1 -1
- package/dist/blocks/sla/index.d.ts +1 -1
- package/dist/blocks/sla/index.js +1 -1
- package/dist/blocks/sso/index.d.ts +1 -1
- package/dist/blocks/sso/index.js +1 -1
- package/dist/blocks/state-machine/index.d.ts +1 -1
- package/dist/blocks/state-machine/index.js +1 -1
- package/dist/blocks/subjects/index.d.ts +2 -2
- package/dist/blocks/tags/index.d.ts +2 -2
- package/dist/blocks/tags/index.js +1 -1
- package/dist/blocks/tasks/index.d.ts +2 -2
- package/dist/blocks/tasks/index.js +1 -1
- package/dist/blocks/teams/index.d.ts +1 -1
- package/dist/blocks/teams/index.js +1 -1
- package/dist/blocks/templates/index.d.ts +2 -2
- package/dist/blocks/templates/index.js +1 -1
- package/dist/blocks/time-tracking/index.d.ts +1 -1
- package/dist/blocks/time-tracking/index.js +1 -1
- package/dist/blocks/timeline/index.d.ts +3 -3
- package/dist/blocks/trash/index.d.ts +1 -1
- package/dist/blocks/trash/index.js +1 -1
- package/dist/blocks/undo/index.d.ts +2 -2
- package/dist/blocks/updated-at/index.d.ts +7 -4
- package/dist/blocks/updated-at/index.js +2 -2
- package/dist/blocks/usage/index.d.ts +2 -2
- package/dist/blocks/usage/index.js +1 -1
- package/dist/blocks/vercel-marketplace/index.d.ts +1 -1
- package/dist/blocks/vercel-marketplace/index.js +1 -1
- package/dist/blocks/versions/index.d.ts +1 -1
- package/dist/blocks/versions/index.js +1 -1
- package/dist/blocks/waitlist/index.d.ts +1 -1
- package/dist/blocks/waitlist/index.js +1 -1
- package/dist/blocks/webhooks/index.d.ts +2 -2
- package/dist/blocks/webhooks/index.js +1 -1
- package/dist/blocks/workflow-editor/index.d.ts +4 -4
- package/dist/blocks/workflow-editor/index.js +1 -1
- package/dist/blocks/workflows/index.d.ts +4 -4
- package/dist/{channel-BjvGO39m.d.ts → channel-JcMd5lNP.d.ts} +30 -2
- package/dist/cli/{add-D7TkPdco.js → add-B1S3yK4L.js} +20 -13
- package/dist/cli/add-BQPJnapO.js +1 -0
- package/dist/cli/{add-I8OW-qJH.js → add-D7YIXslp.js} +2 -2
- package/dist/cli/{backfill-DIz5DnlQ.js → backfill-BwkyNhlC.js} +4 -4
- package/dist/cli/bin.js +1 -1
- package/dist/cli/{blocks-Bp5RPoft.js → blocks-CBqENu3C.js} +1 -1
- package/dist/cli/{blocks-xk-SE8gS.js → blocks-DDm1Zc2S.js} +2 -2
- package/dist/cli/{cache-AznIssjI.js → cache-DE2IH1-C.js} +1 -1
- package/dist/cli/{codemod-Aewxza6i.js → codemod-OHKhVV-v.js} +4 -4
- package/dist/cli/{command-CQ61x6gN.js → command-BWEEXmtz.js} +20 -0
- package/dist/cli/{completion-Dlu5AdUW.js → completion-8EDK21xj.js} +1 -1
- package/dist/cli/{completion-BwI0_Ap5.js → completion-BfnKI4QZ.js} +2 -2
- package/dist/cli/{completion-2Y3D_eNu.js → completion-Bt7LMypX.js} +2 -2
- package/dist/cli/{config-9t5ec_N7.js → config-BJSqMi04.js} +20 -6
- package/dist/cli/{config-CBqkQjjN.js → config-BlfVh0IP.js} +1 -1
- package/dist/cli/{config-CPux9Wa7.js → config-WKDixoGK.js} +1 -1
- package/dist/cli/{content-mapper-DCrz6OIv.js → content-mapper-CaygHH_k.js} +2 -2
- package/dist/cli/{db-DrBI_HNv.js → db-DYU5hUcd.js} +3 -3
- package/dist/cli/{doctor-DkOSLPEQ.js → doctor-D_nrsd9E.js} +186 -143
- package/dist/cli/{env-BBl5L8Bf.js → env-BCgVZkcb.js} +1 -1
- package/dist/cli/env-xhwXk5Ri.js +1 -0
- package/dist/cli/{gen-CFkYUnWq.js → gen-D7gMEwvg.js} +22 -15
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +8 -8
- package/dist/cli/{init-CHj9ad4S.js → init-ch-HWJyp.js} +7 -7
- package/dist/cli/{keys-DGEpMbeB.js → keys-CbaL0lnw.js} +1 -1
- package/dist/cli/{live-DGdLR41j.js → live-B38ePuRS.js} +2 -2
- package/dist/cli/{mcp-BZno503V.js → mcp-P9RP2SJ3.js} +3 -3
- package/dist/cli/{metadata-BfgHMe4q.js → metadata-BTihErEc.js} +3 -3
- package/dist/cli/{migration-safety-BnnXPAro.js → migration-safety-DYo1vVWC.js} +2 -2
- package/dist/cli/{module-migration-O_IxewFs.js → migrations-BoIyGczt.js} +3 -113
- package/dist/cli/module-migration-DXvo0EqU.js +119 -0
- package/dist/cli/{moved-CsfDQcyk.js → moved-DVwgE8lV.js} +1 -1
- package/dist/cli/{parse-B9Iv_-Pf.js → parse-B079x40m.js} +1 -1
- package/dist/cli/powersync-D-0yV_L_.js +283 -0
- package/dist/cli/powersync-DXVsKkAu.js +1 -0
- package/dist/cli/{print-DosQIFSy.js → print-CRon4lXf.js} +2 -1
- package/dist/cli/{remove-DK2G_KHm.js → remove-D89s99ha.js} +6 -6
- package/dist/cli/{render-5y5a1QZr.js → render-BJF9ytUi.js} +15 -6
- package/dist/cli/{run-BXx6D1aR.js → run-DmOTMa44.js} +2 -2
- package/dist/cli/{run-Bs4OKdDI.js → run-jeplMBOK.js} +29 -10
- package/dist/cli/{run-MRET30vh.js → run-x9ZY4Tm0.js} +38 -37
- package/dist/cli/{seed-Cz8PcXeT.js → seed-D9mt8bnW.js} +3 -3
- package/dist/cli/seed-EPO6AvLG.js +1 -0
- package/dist/cli/{shared-BLqbvY2x.js → shared-B38Chjgd.js} +1 -1
- package/dist/cli/{skills-toUan_OV.js → skills-FXAVPLzp.js} +1 -1
- package/dist/cli/{snapshot-uTUlEzY2.js → snapshot-BXmU3IXN.js} +3 -3
- package/dist/cli/{source-args-IpJRJO5t.js → source-args-DlckPVje.js} +1 -1
- package/dist/cli/{source-D2gJHKwC.js → source-irttnsEb.js} +1 -1
- package/dist/cli/{spec-Cm2einTO.js → spec-CDxfokey.js} +3 -3
- package/dist/cli/{spec-DUjOtciN.js → spec-DzD5wMVF.js} +1 -1
- package/dist/cli/{sql-layout-lUWenjJw.js → sql-layout-D8QrNvt4.js} +2 -2
- package/dist/cli/{stack-CWEHdO0b.js → stack-DgASZP0K.js} +1 -1
- package/dist/cli/{sync-CZMRB3aU.js → sync-s1iKFIos.js} +3 -2
- package/dist/cli/{upgrade-BFEIMC7U.js → upgrade-B4FPlK-_.js} +4 -3
- package/dist/cli/{upgrade-fVsJniXm.js → upgrade-CluxP3JJ.js} +3 -3
- package/dist/cli/{version-B2Dr6VmJ.js → version-TgFM8sOd.js} +1 -1
- package/dist/client/index.d.ts +5 -5
- package/dist/client/native/index.d.ts +4 -4
- package/dist/{composite-CfYyU3vs.d.ts → composite-C-8A8qzi.d.ts} +4 -4
- package/dist/{composite-B3TIjId4.js → composite-D24L5RIY.js} +2 -2
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.js +4 -4
- package/dist/{config-CcehOvbz.js → config-CD2OGfCG.js} +2 -1
- package/dist/{config-DWGgUQCh.js → config-mbVyJwSc.js} +7 -6
- package/dist/{context-8kb8m5uO.d.ts → context-D24k1Cpc.d.ts} +36 -4
- package/dist/{controller-BW-5Opig.d.ts → controller-BR7CZ1R9.d.ts} +1 -1
- package/dist/{conversion-3iv2r7YC.d.ts → conversion-BgtOfTaS.d.ts} +1 -1
- package/dist/create/index.d.ts +2 -2
- package/dist/create/index.js +5 -5
- package/dist/{define-C5AcEkEJ.d.ts → define-Cgru0_kF.d.ts} +1 -1
- package/dist/{define-block-C1RHXz7L.d.ts → define-block-CJWiDWa5.d.ts} +11 -4
- package/dist/edge/index.d.ts +7 -7
- package/dist/edge/index.js +7 -7
- package/dist/elysia/index.d.ts +1 -1
- package/dist/elysia/index.js +1 -1
- package/dist/{email-tt2QqiSc.d.ts → email-B3YxEzwC.d.ts} +1 -1
- package/dist/{entitlements-sO977DO-.d.ts → entitlements-DHcNt1aF.d.ts} +1 -1
- package/dist/{events-SqJLbb8q.js → events-DuLhzjP6.js} +2 -0
- package/dist/{executor-BcNWcD-4.d.ts → executor-BWFfz0ik.d.ts} +2 -2
- package/dist/expo/index.d.ts +3 -3
- package/dist/expo/index.js +3 -3
- package/dist/{extension-B-lajjex.js → extension-DTaHjwdc.js} +3 -2
- package/dist/{extension-B0EjCYhO.js → extension-mGylYROs.js} +2 -10
- package/dist/{field-errors-Dt86dCKk.d.ts → field-errors-DucQdLl7.d.ts} +6 -6
- package/dist/{framework-BozTXRzt.js → framework-CNhTg0th.js} +1 -1
- package/dist/{framework-BGdZVyPL.d.ts → framework-x9Y4uB1q.d.ts} +5 -5
- package/dist/h3/index.d.ts +1 -1
- package/dist/h3/index.js +1 -1
- package/dist/h3/v1/index.d.ts +1 -1
- package/dist/h3/v1/index.js +1 -1
- package/dist/hono/index.d.ts +6 -6
- package/dist/hono/index.js +7 -6
- package/dist/{index-Cc4mIQS8.d.ts → index-4WT_uRRL.d.ts} +20 -4
- package/dist/{index-CENWq3zb.d.ts → index-BAcQz5DS.d.ts} +1 -1
- package/dist/{index-CTu-3fJB.d.ts → index-BH3NYExp.d.ts} +3 -3
- package/dist/{index-CcAmFNVi.d.ts → index-C0t-vNIt.d.ts} +2 -2
- package/dist/{index-DZKCc2WM.d.ts → index-C6ruLtyx.d.ts} +3 -3
- package/dist/{index-Craf712U.d.ts → index-XAyzdLns.d.ts} +9 -9
- package/dist/{index-BxYOB1Oc.d.ts → index-iRkFvJ7J.d.ts} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/{instances-BHjCZoF8.js → instances-DDt7NdVl.js} +1 -1
- package/dist/{kit-DOwKpSkA.d.ts → kit-CVgQCIBO.d.ts} +1 -1
- package/dist/{kit-5l-o8RxL.js → kit-DhlB-vv_.js} +1 -1
- package/dist/list/index.d.ts +1 -1
- package/dist/{list-query-DYhgRTd5.d.ts → list-query-DxjuIHEL.d.ts} +1 -1
- package/dist/mapper/bin.js +7 -6
- package/dist/mcp/index.d.ts +11 -5
- package/dist/mcp/index.js +6 -6
- package/dist/mcp/sdk/index.d.ts +3 -3
- package/dist/mcp/sdk/index.js +2 -2
- package/dist/{methods-B3o7BFOW.js → methods-Cund9ZBe.js} +1 -1
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +1 -1
- package/dist/next/index.d.ts +16 -16
- package/dist/next/index.js +6 -6
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -1
- package/dist/{operations-CSc_IsHO.d.ts → operations-CAjMgNr9.d.ts} +1 -1
- package/dist/{options-CK5WiFwG.js → options-3OYOU56e.js} +1 -1
- package/dist/{options-xD4_FRUq.js → options-56zYYXxc.js} +1 -1
- package/dist/{options-_F-enoBs.d.ts → options-5WvWOkAm.d.ts} +1 -1
- package/dist/{options-SViK_2x2.js → options-62woPFn3.js} +1 -1
- package/dist/{options-1GgseJq5.js → options-7ixoOoap.js} +1 -1
- package/dist/{options-BZsoPJGX.js → options-9dSU5RML.js} +2 -2
- package/dist/{options-y_-AkVCs.d.ts → options-B0YZtAkb.d.ts} +1 -1
- package/dist/{options-HLwOuF2H.js → options-B2Kz_tCx.js} +2 -2
- package/dist/{options-CEMawFrr.js → options-B685YSzQ.js} +1 -1
- package/dist/{options-DWbA9buW.js → options-B692WoK6.js} +2 -2
- package/dist/options-BHU1wc74.js +5 -0
- package/dist/{options-CPK2nQER.js → options-BHy0Z5Zd.js} +2 -2
- package/dist/{options-Fz6xqu-b.js → options-BKDxrPvE.js} +2 -2
- package/dist/{options-BVg58avP.js → options-BLfymS4s.js} +2 -2
- package/dist/{options-CYV4iZiQ.js → options-BOCRbzh3.js} +1 -1
- package/dist/{options-C-dQHH5-.js → options-BQWJqwHO.js} +3 -2
- package/dist/{options-Cl9Ag2Pt.js → options-BQunK6_Y.js} +2 -2
- package/dist/{options-CljDnQt2.js → options-BQyrZjwM.js} +4 -1
- package/dist/options-BR9xTHZW.js +5 -0
- package/dist/{options-D40CQzji.js → options-BRUdd5jY.js} +1 -1
- package/dist/{options-CsGl5BLH.d.ts → options-BTmaRzx2.d.ts} +13 -5
- package/dist/{options-Li1Dyu88.d.ts → options-BUCQYAeJ.d.ts} +2 -2
- package/dist/{options-DChZoVfs.d.ts → options-B_NrjVDt.d.ts} +1 -0
- package/dist/{options-B5BU2Yg7.js → options-BawzwlmC.js} +2 -2
- package/dist/{options-BlzSfWxC.d.ts → options-BbLDAp7G.d.ts} +2 -2
- package/dist/{options-DTDxFT6J.js → options-Bc4xz5jQ.js} +2 -2
- package/dist/options-BfFC4iFE.js +8 -0
- package/dist/{options-Br1Xi2Hw.js → options-BfPsL7E2.js} +1 -1
- package/dist/{options-DYBQ973I.js → options-Bfmwwc78.js} +1 -1
- package/dist/{options-c5WCsky5.js → options-BhsdveDk.js} +2 -2
- package/dist/{options-B5woz53h.js → options-BomoTH-8.js} +2 -2
- package/dist/{options-DeNejBtq.js → options-BtjkzIVh.js} +1 -1
- package/dist/options-Bvi9bl4H.js +5 -0
- package/dist/{options-IHPg8ZoA.js → options-BwKNmaJo.js} +2 -2
- package/dist/{options-CtUUU71w.js → options-BxpLtyk-.js} +4 -6
- package/dist/{options-D_bBVCXg.js → options-BzB2QxL3.js} +1 -1
- package/dist/{options-CmraJhd9.js → options-C078wBP0.js} +1 -1
- package/dist/options-C1-pwEqm.js +5 -0
- package/dist/{options-BZOliZvb.js → options-C3AdsFJ6.js} +2 -2
- package/dist/options-C7C5OhmL.d.ts +8 -0
- package/dist/{options-B2swWnJW.js → options-C87u6eSa.js} +3 -2
- package/dist/{options-CVSWgZpY.js → options-CBAEGxwS.js} +1 -1
- package/dist/{options-CM6-18FQ.d.ts → options-CDSCkYxu.d.ts} +1 -0
- package/dist/{options-9gvPo1BC.js → options-CDUr8zzX.js} +1 -1
- package/dist/{options-DMR68VAC.js → options-CFjGxfa8.js} +2 -2
- package/dist/{options-Bf96aVk5.js → options-CI6P0xhV.js} +1 -1
- package/dist/{options-B5VUf4IT.js → options-CJFMK9A_.js} +1 -1
- package/dist/{options-CRz8Ht_4.js → options-CLpgx7en.js} +3 -2
- package/dist/{options-BesyRBnM.js → options-CTXHj9zr.js} +2 -2
- package/dist/{options-D2d1fFuw.js → options-CTl8T88w.js} +1 -1
- package/dist/{options-C3RgtOLo.js → options-CTv-xmbA.js} +2 -2
- package/dist/{options-Bpl-WFPk.js → options-CUIOOv4z.js} +1 -1
- package/dist/{options-o2kfYU2x.js → options-CZDmtsbV.js} +2 -2
- package/dist/{options-CF7nRWXS.js → options-CZTscdPB.js} +1 -1
- package/dist/{options-BlncUmIc.js → options-CZdKndeo.js} +2 -2
- package/dist/{options-DplE18Ko.d.ts → options-C_7g9TTq.d.ts} +1 -1
- package/dist/{options-C_pb1Nd3.js → options-Cb2FOFj5.js} +1 -1
- package/dist/{options-t_O5ldT6.js → options-CbOstLa7.js} +2 -2
- package/dist/{options-Bt0bYMLl.js → options-CcXgWlvm.js} +2 -2
- package/dist/{options-BMjcVuaI.js → options-CfVPctAw.js} +7 -0
- package/dist/{options-DWpz3V3F.js → options-ChiL-4ZS.js} +2 -2
- package/dist/{options-E7KcmHQv.js → options-Cjgaf8ub.js} +2 -2
- package/dist/{options-DrSkIBCD.js → options-CoSPgWKy.js} +1 -1
- package/dist/{options-Bp7sgKvl.js → options-CpZ2HlSU.js} +5 -3
- package/dist/{options-CN7PHkhU.js → options-CsSe8Nba.js} +1 -1
- package/dist/{options-B9q8CROT.js → options-CsvJR-r2.js} +1 -1
- package/dist/{options-oeAq4Ho5.js → options-Cucv6sWP.js} +2 -2
- package/dist/{options-BOOEzor9.js → options-CyjL9lTf.js} +2 -2
- package/dist/{options-pOVWwbAK.d.ts → options-D-OOO9V2.d.ts} +1 -1
- package/dist/{options-nFzfgtA6.js → options-D0Y6ZMe8.js} +1 -1
- package/dist/{options-BnZS7IK-.js → options-D0sj5abR.js} +2 -2
- package/dist/{options-0qvUckqt.js → options-D2s7fT1s.js} +2 -2
- package/dist/{options-BjtrC7o6.js → options-D32-YxnO.js} +1 -1
- package/dist/{options-B0EJULm5.js → options-D610Fa6T.js} +2 -2
- package/dist/{options-BvtnxHfK.js → options-D96dScev.js} +1 -1
- package/dist/{options-DgQo80Xh.js → options-DFpyP1bg.js} +2 -2
- package/dist/{options-BYOtaF7w.js → options-DJEcS4DX.js} +1 -1
- package/dist/{options-DPgdAXO5.js → options-DJbN3bi9.js} +2 -2
- package/dist/{options-EsUh744F.js → options-DKoQoRCy.js} +2 -2
- package/dist/{options-CvD9vNvx.js → options-DM1qaMMQ.js} +1 -1
- package/dist/{options-eBPsk4WI.js → options-DNgSwhsm.js} +2 -2
- package/dist/{options-2EMA_x6_.js → options-DOIwzRXL.js} +2 -2
- package/dist/{options-D6as77gU.d.ts → options-DRIgHh4O.d.ts} +2 -2
- package/dist/{options-DDzggjN7.js → options-DRrZmJyI.js} +2 -2
- package/dist/{options-DJ-aYPVN.js → options-DUMUsvml.js} +2 -2
- package/dist/{options-Cp0HyUEk.js → options-DWwL5Kaz.js} +1 -1
- package/dist/{options-BCrqe3HH.js → options-DZHZYlpD.js} +1 -1
- package/dist/{options-BQIYfx9F.js → options-DZLkeqWn.js} +2 -2
- package/dist/{options-RKYdmIdV.js → options-DZRpXKQE.js} +1 -1
- package/dist/{options-D0G06Zm9.js → options-D_9Vxx7f.js} +2 -2
- package/dist/{options-BMGClqoa.js → options-DcHl59RC.js} +1 -1
- package/dist/{options-CW9wTqOk.js → options-Dcaql09y.js} +1 -1
- package/dist/{options-CXFz0xxS.js → options-DcnBNYmV.js} +1 -1
- package/dist/{options-21s0dpnX.js → options-DdpM-fiP.js} +2 -2
- package/dist/{options-BbnPv6p7.js → options-DhdazgTZ.js} +2 -2
- package/dist/{options-C239TLRF.js → options-Dpy-Ruo-.js} +1 -1
- package/dist/{options-DWVYM8P0.d.ts → options-DsVuVRH3.d.ts} +1 -1
- package/dist/{options-BlOPivzq.js → options-DtAJxfHS.js} +1 -1
- package/dist/{options-DXnBN2E7.js → options-Dz9Yo52Z.js} +2 -2
- package/dist/{options-DcOx8_3X.d.ts → options-HnfETSHr.d.ts} +1 -1
- package/dist/{options-CoX6VKGb.js → options-LqUXTpML.js} +1 -1
- package/dist/options-MsloEAIB.js +5 -0
- package/dist/{options-DCduTMST.js → options-P2FxqYpd.js} +2 -2
- package/dist/options-_1gAIMq7.d.ts +60 -0
- package/dist/{options-B0FcEKtH.js → options-aT89JqlB.js} +1 -1
- package/dist/{options-Cyu0hgmN.js → options-cVKZu9b0.js} +2 -2
- package/dist/options-fMxhtuVR.js +5 -0
- package/dist/{options-BxcFLL1G.js → options-fkShrmGQ.js} +2 -2
- package/dist/{options-Ctac2R0Q.js → options-gUvfr3no.js} +2 -2
- package/dist/{options-DNKyN5uq.js → options-hynwKWuf.js} +2 -2
- package/dist/{options-CkScQRJR.js → options-lsxJYfYx.js} +2 -2
- package/dist/{options-CyAhRKKm.d.ts → options-o5wCw8H7.d.ts} +2 -2
- package/dist/{options-DARkpk2P.js → options-p49DFg3H.js} +2 -2
- package/dist/{options-zkyhM3qi.js → options-pYNpXKcg.js} +1 -1
- package/dist/{options-Cqq2jUww.js → options-qtETCHzW.js} +2 -2
- package/dist/options-rnKlqYEr.js +5 -0
- package/dist/{options-KV84gAxl.js → options-sU_zGkiV.js} +2 -2
- package/dist/{options-BfLmA375.js → options-xq4MXG1M.js} +2 -2
- package/dist/{options-BA6jV6py.js → options-zzlznRA7.js} +2 -2
- package/dist/orpc/index.d.ts +21 -10
- package/dist/orpc/index.js +60 -31
- package/dist/otel/index.d.ts +1 -1
- package/dist/otel/index.js +5 -5
- package/dist/{ports-mObLgH1z.d.ts → ports-g0H1Kzwr.d.ts} +1 -1
- package/dist/powersync/index.d.ts +136 -3
- package/dist/powersync/index.js +333 -1
- package/dist/preset/index.d.ts +3 -3
- package/dist/preset/index.js +3 -3
- package/dist/{preset-CsHnIBJF.js → preset-B3CukUhu.js} +4 -4
- package/dist/{push-token-BSSvsWXZ.d.ts → push-token-Cl2EihRc.d.ts} +1 -1
- package/dist/query/index.d.ts +1 -1
- package/dist/react/index.d.ts +5 -5
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/server.d.ts +6 -6
- package/dist/react-router/index.d.ts +5 -5
- package/dist/react-router/index.js +5 -5
- package/dist/realtime/index.d.ts +3 -3
- package/dist/realtime/index.js +1 -1
- package/dist/{record-form-D9ILuVtA.d.ts → record-form-zMwz0Ayt.d.ts} +1 -1
- package/dist/records/index.d.ts +7 -7
- package/dist/{refusal-ByBZcm0V.js → refusal-D48CMqpQ.js} +2 -2
- package/dist/{refusal-CSntB_x8.d.ts → refusal-OrlI3g4H.d.ts} +1 -1
- package/dist/{resource-DV2GC2dB.js → resource-R3KToNze.js} +1 -1
- package/dist/{resource-execute-Cpnob1Vj.d.ts → resource-execute-CKBtGL8-.d.ts} +1 -1
- package/dist/{resource-types-pMeLs68X.d.ts → resource-types-8Q5Klkpa.d.ts} +2 -2
- package/dist/{resources-C02l_YBJ.js → resources-DqIwoQsP.js} +1 -1
- package/dist/{resources-7iq2-5_A.d.ts → resources-DxpqenZA.d.ts} +1 -1
- package/dist/{respond-C3CcOZlA.js → respond-3RKp6VgU.js} +8 -1
- package/dist/{respond-Dn1_YhC1.d.ts → respond-oZeJ342J.d.ts} +6 -0
- package/dist/server/index.d.ts +9 -9
- package/dist/server/index.js +6 -6
- package/dist/{server-types-CK8mUIUT.d.ts → server-types-gR4Q1aM0.d.ts} +1 -1
- package/dist/{session-DWmFv3vB.d.ts → session-Fcft5A39.d.ts} +2 -2
- package/dist/{sign-in-B64114O4.js → sign-in-BLkRU3lc.js} +1 -1
- package/dist/solid/index.d.ts +6 -6
- package/dist/solid-start/index.d.ts +5 -5
- package/dist/solid-start/index.js +5 -5
- package/dist/spec/index.d.ts +2 -2
- package/dist/spec/index.js +1 -1
- package/dist/{spec-pins-DIx95afw.d.ts → spec-pins-BZkKfwY8.d.ts} +2 -0
- package/dist/{spec-pins-C1Vm8OBl.js → spec-pins-D3zDek-u.js} +1 -0
- package/dist/sql/index.d.ts +5 -5
- package/dist/sql/index.js +5 -5
- package/dist/{sql-Dl3Alk43.js → sql-fHTjZGqR.js} +4445 -3211
- package/dist/sql-type-iUSZpaUu.js +34 -0
- package/dist/sqlite/index.d.ts +1 -1
- package/dist/ssr/index.d.ts +1 -1
- package/dist/{statuses-DMMDwXpZ.js → statuses-Alll5Ip6.js} +2 -2
- package/dist/storage/index.js +1 -1
- package/dist/svelte/index.d.ts +6 -6
- package/dist/sveltekit/index.d.ts +6 -6
- package/dist/sveltekit/index.js +5 -5
- package/dist/{tags-qvVk79pp.d.ts → tags-sM-CH9Mn.d.ts} +1 -1
- package/dist/tanstack-db/index.d.ts +1 -1
- package/dist/tanstack-start/index.d.ts +5 -5
- package/dist/tanstack-start/index.js +5 -5
- package/dist/{tenant-DOKIJI62.d.ts → tenant-DyoVYFfC.d.ts} +1 -1
- package/dist/testing/index.d.ts +9 -9
- package/dist/testing/index.js +8 -5
- package/dist/{timeline-CvTuXYvn.d.ts → timeline-CMmo0R7g.d.ts} +3 -3
- package/dist/{topic-ikV_pLTX.js → topic-J9I3yu6f.js} +1 -1
- package/dist/{topic-CZXHhZye.d.ts → topic-nQYxoTaU.d.ts} +2 -2
- package/dist/{verify-CjvNLY7N.d.ts → verify-DEqY__0N.d.ts} +1 -1
- package/dist/vue/index.d.ts +6 -6
- package/dist/{watch-topic-BAxoPKZx.d.ts → watch-topic-UGSEWAqR.d.ts} +1 -1
- package/dist/workflow-sdk/world/index.js +1 -1
- package/dist/{workflow-sdk-Bw6_u0ar.js → workflow-sdk-DELaQEp3.js} +2 -0
- package/dist/yjs/index.d.ts +1 -1
- package/dist/yjs/index.js +1 -1
- package/package.json +1 -1
- package/schemas/config-v1.json +471 -69
- package/schemas/doctor-report-v1.json +1 -0
- package/dist/cli/add-Bfb_ISrO.js +0 -1
- package/dist/cli/env-CAU1nknN.js +0 -1
- package/dist/cli/seed-D6XijwbR.js +0 -1
- package/dist/options-63AKQNv0.js +0 -5
- package/dist/options-B-cxGmRA.js +0 -5
- package/dist/options-BPDiwSa-.js +0 -5
- package/dist/options-C6rEL6U5.js +0 -8
- package/dist/options-CE93HOYi.d.ts +0 -7
- package/dist/options-CTZNpb2n.js +0 -5
- package/dist/options-CrC78Tee.js +0 -5
- package/dist/options-DINdgVih.d.ts +0 -9
- package/dist/options-DWML05Cp.js +0 -5
- package/dist/options-Q1Bzgqpr.js +0 -5
|
@@ -1,41 +1,42 @@
|
|
|
1
|
-
import { a as list, p as commandMeta, r as defineCliCommand } from "./command-
|
|
1
|
+
import { a as list, p as commandMeta, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
2
|
import { i as plain } from "./style-Bm2X5JrN.js";
|
|
3
|
-
import { t as VERSION } from "./version-
|
|
3
|
+
import { t as VERSION } from "./version-TgFM8sOd.js";
|
|
4
4
|
import { n as CliError, r as errorText } from "./errors-BTe6A15O.js";
|
|
5
5
|
import { i as isLocalDatabaseUrl, r as databaseHost } from "./agent-CbuPvI2x.js";
|
|
6
6
|
import { a as sameText, t as display } from "./io-DH1kcmmP.js";
|
|
7
|
-
import { t as CACHE_DIR } from "./cache-
|
|
7
|
+
import { t as CACHE_DIR } from "./cache-DE2IH1-C.js";
|
|
8
8
|
import { t as byCodePoint } from "./compare-BmIWVEui.js";
|
|
9
|
-
import { C as satisfies, S as peerVersions, c as isSqliteLiteDriver, n as managementTarget, o as snapshotFile, r as openSource, s as liteDriverOf, t as loadSnapshot, u as MetadataRejectedError } from "./snapshot-
|
|
10
|
-
import { d as configFor, r as renderFiles, u as notNullTag } from "./render-
|
|
9
|
+
import { C as satisfies, S as peerVersions, c as isSqliteLiteDriver, n as managementTarget, o as snapshotFile, r as openSource, s as liteDriverOf, t as loadSnapshot, u as MetadataRejectedError } from "./snapshot-BXmU3IXN.js";
|
|
10
|
+
import { d as configFor, r as renderFiles, u as notNullTag } from "./render-BJF9ytUi.js";
|
|
11
11
|
import { t as isRecord } from "./guards-CUlDNYZs.js";
|
|
12
|
-
import { i as request } from "./source-
|
|
13
|
-
import {
|
|
14
|
-
import { l as stdinDatabaseUrl, n as databaseUrl } from "./config-
|
|
12
|
+
import { i as request } from "./source-irttnsEb.js";
|
|
13
|
+
import { g as providerLabel, u as compiledReadSets } from "./migrations-BoIyGczt.js";
|
|
14
|
+
import { l as stdinDatabaseUrl, n as databaseUrl } from "./config-BJSqMi04.js";
|
|
15
15
|
import { a as findRepoRoot, c as httpHooks, d as readSupabaseToml, f as schemaPaths, h as tomlGet, i as diffEngine, l as migrationCommand, n as declarativeSchemasDir, p as sqlWorkflow, u as pgFunctionHooks } from "./supabase-toml-CncmQbO0.js";
|
|
16
16
|
import { t as PROCESS_ENV } from "./env-DMgjB_4y.js";
|
|
17
17
|
import { n as readStackStatus } from "./stack-status-B_Ipd_-z.js";
|
|
18
18
|
import { t as connect } from "./db-CQCLx7cx.js";
|
|
19
|
-
import { a as hasContentMapper, c as supportsContentMappers, i as contentMapperSetup$1, n as TSCONFIG_SNIPPET, o as needsRunExternalCode, t as RUN_EXTERNAL_CODE } from "./content-mapper-
|
|
19
|
+
import { a as hasContentMapper, c as supportsContentMappers, i as contentMapperSetup$1, n as TSCONFIG_SNIPPET, o as needsRunExternalCode, t as RUN_EXTERNAL_CODE } from "./content-mapper-CaygHH_k.js";
|
|
20
20
|
import { c as insideRoot, i as changeLines, r as applyPlan } from "./files-CX71yBm8.js";
|
|
21
|
-
import { C as splinterTables, S as advisorRule, _ as withoutStrings, a as METADATA_GAPS_TEXT, b as appTablesOf, c as accessModule, d as RLS_RULES, f as appliesTo, g as policyHelpers, h as functionObject, l as entitlementsModule, m as functionBody, p as escape$2, s as AUTHORIZATION_RULES, u as COMMANDS$2, v as BLOCK_PREFIX, x as appViewsOf, y as blockTargets } from "./run-
|
|
22
|
-
import { n as migrationsDir, r as moduleLayoutFor, t as blockDeclaredTables } from "./sql-layout-
|
|
23
|
-
import { a as permissionCatalogKeys, i as lineOf, l as tableObject, n as exposed, o as policyObject, r as exposedSchemas, s as qualified, t as catalogOf, u as workflowOf } from "./shared-
|
|
24
|
-
import { o as
|
|
21
|
+
import { C as splinterTables, S as advisorRule, _ as withoutStrings, a as METADATA_GAPS_TEXT, b as appTablesOf, c as accessModule, d as RLS_RULES, f as appliesTo, g as policyHelpers, h as functionObject, l as entitlementsModule, m as functionBody, p as escape$2, s as AUTHORIZATION_RULES, u as COMMANDS$2, v as BLOCK_PREFIX, x as appViewsOf, y as blockTargets } from "./run-jeplMBOK.js";
|
|
22
|
+
import { n as migrationsDir, r as moduleLayoutFor, t as blockDeclaredTables } from "./sql-layout-D8QrNvt4.js";
|
|
23
|
+
import { a as permissionCatalogKeys, i as lineOf, l as tableObject, n as exposed, o as policyObject, r as exposedSchemas, s as qualified, t as catalogOf, u as workflowOf } from "./shared-B38Chjgd.js";
|
|
24
|
+
import { i as migrationHolds, o as migrationModules, r as latestMigration, t as MODULES_SUFFIX } from "./module-migration-DXvo0EqU.js";
|
|
25
|
+
import { o as wiringFor, r as configInstances, t as MIGRATION_SAFETY_RULES } from "./migration-safety-DYo1vVWC.js";
|
|
25
26
|
import { t as orphanedBlockFiles } from "./orphans-BAboqyVM.js";
|
|
26
|
-
import { i as reservedRoles, n as ident$1, r as literal$1, t as LIVE_RULES } from "./live-
|
|
27
|
-
import { a as sourceFlags, n as SOURCE_ARGS } from "./source-args-
|
|
27
|
+
import { i as reservedRoles, n as ident$1, r as literal$1, t as LIVE_RULES } from "./live-B38ePuRS.js";
|
|
28
|
+
import { a as sourceFlags, n as SOURCE_ARGS } from "./source-args-DlckPVje.js";
|
|
28
29
|
import { i as PLUGIN_SUBPATH_RENAMES, n as BLOCK_SUBPATH_RENAMES, o as SPEC_SUBPATH_RENAMES, t as BLOCK_EXPORT_RENAMES } from "./codemod-block-renames-BuSaTE_G.js";
|
|
29
30
|
import { n as PLATFORM_SCHEMAS } from "./in-stack-diff-DQTW53Vf.js";
|
|
30
31
|
import { i as staleVariables, r as stackEnvValues, t as PREFIX_NAMES } from "./stack-env-6hS-WEmh.js";
|
|
31
32
|
import { a as readSharedMemory, n as listStacks, t as branchName } from "./stacks-BYlQ96WS.js";
|
|
32
|
-
import { i as refuseWithMetadata, r as readMetadataSnapshot } from "./metadata-
|
|
33
|
+
import { i as refuseWithMetadata, r as readMetadataSnapshot } from "./metadata-BTihErEc.js";
|
|
33
34
|
import { existsSync } from "node:fs";
|
|
34
35
|
import { dirname, resolve } from "node:path";
|
|
35
36
|
import { createHash } from "node:crypto";
|
|
36
37
|
import { glob, mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
37
38
|
import { DEFAULT_ACTIVE_TENANT, tenantClaimPaths } from "better-supabase/config";
|
|
38
|
-
import { SECRET_COLUMNS, SQL_MODULES, TENANT_SCOPE_POLICY, adoptedTables, adoptedViews, blockFileState, blockSqlVersion, contractSignature, customContracts, dataExportPlan, excludedColumns, expiredFlagsQuery, hasColumnAccess, migrationOptionUses, moduleDeprecations, moduleEventTriggers, moduleFileVersion, moduleLayout, notNullCheckName, renderBlocks, sameBlockFile, sameTenantColumn, sameTenantTrigger, scopePolicyName, sharedRolesProblems, subjectColumns, widenedCommands } from "better-supabase/sql";
|
|
39
|
+
import { SECRET_COLUMNS, SQL_MODULES, TENANT_SCOPE_POLICY, adoptedTables, adoptedViews, appTablePolicyNotes, blockFileState, blockSqlVersion, contractSignature, customContracts, dataExportPlan, excludedColumns, expiredFlagsQuery, hasColumnAccess, migrationOptionUses, moduleDeprecations, moduleEventTriggers, moduleFileVersion, moduleLayout, notNullCheckName, renderBlocks, sameBlockFile, sameTenantColumn, sameTenantTrigger, scopePolicyName, sharedRolesProblems, subjectColumns, widenedCommands } from "better-supabase/sql";
|
|
39
40
|
import { defineBucket, parseSize } from "better-supabase/storage";
|
|
40
41
|
//#region src/cli/doctor/env.ts
|
|
41
42
|
const PUBLIC_PREFIXES = [
|
|
@@ -141,6 +142,166 @@ const ENV_RULES = [
|
|
|
141
142
|
}
|
|
142
143
|
];
|
|
143
144
|
//#endregion
|
|
145
|
+
//#region src/cli/doctor/module-files.ts
|
|
146
|
+
/** The `blocks` files as this release renders them, next to what is on disk. */
|
|
147
|
+
async function moduleFiles(context) {
|
|
148
|
+
if (context.config.blockNames.length === 0 && Object.keys(context.config.appTables).length === 0) return [];
|
|
149
|
+
const access = accessModule(context);
|
|
150
|
+
if (access.kind === "invalid") return [];
|
|
151
|
+
const readSets = context.readSets;
|
|
152
|
+
const skipped = readSets !== void 0 && "skipped" in readSets;
|
|
153
|
+
let rendered;
|
|
154
|
+
try {
|
|
155
|
+
rendered = renderBlocks(context.config.blockNames, await moduleLayoutFor(context.config, {
|
|
156
|
+
names: context.config.blockNames,
|
|
157
|
+
testsDir: context.config.sql.testsDir,
|
|
158
|
+
readSets: skipped ? [] : readSets,
|
|
159
|
+
entitlementsProvider: entitlementsModule(context),
|
|
160
|
+
accessProvider: access.kind === "provider" ? access.access : void 0,
|
|
161
|
+
permissionCatalog: permissionCatalogKeys(context)
|
|
162
|
+
}));
|
|
163
|
+
} catch {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
const files = rendered.filter((file) => !(skipped && file.module === "read-sets"));
|
|
167
|
+
if (workflowOf(context) === "migrations") {
|
|
168
|
+
const latest = await latestMigration(context.config, MODULES_SUFFIX);
|
|
169
|
+
const versions = migrationModules(latest?.text ?? "");
|
|
170
|
+
const path = latest?.path ?? `${migrationsDir(context.config)}/<stamp>_better_supabase_modules.sql`;
|
|
171
|
+
return Promise.all(files.map(async (file) => {
|
|
172
|
+
if (file.kind === "test") return fileState(context, file);
|
|
173
|
+
const installed = versions.get(file.instance ?? file.module);
|
|
174
|
+
return {
|
|
175
|
+
file,
|
|
176
|
+
path,
|
|
177
|
+
installed,
|
|
178
|
+
current: latest === void 0 ? void 0 : migrationHolds(latest.text, file.contents) ? file.contents : latest.text,
|
|
179
|
+
behind: file.kind === "schema" && installed !== void 0 && installed < (moduleFileVersion(file.contents)?.version ?? 1)
|
|
180
|
+
};
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
return Promise.all(files.map((file) => fileState(context, file)));
|
|
184
|
+
}
|
|
185
|
+
async function fileState(context, file) {
|
|
186
|
+
const current = await readFile(resolve(context.config.root, file.path), "utf-8").catch(() => void 0);
|
|
187
|
+
const installed = current === void 0 ? void 0 : moduleFileVersion(current)?.version ?? 1;
|
|
188
|
+
return {
|
|
189
|
+
file,
|
|
190
|
+
path: file.path,
|
|
191
|
+
current,
|
|
192
|
+
installed,
|
|
193
|
+
behind: installed !== void 0 && installed < (moduleFileVersion(file.contents)?.version ?? 1)
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//#endregion
|
|
197
|
+
//#region src/cli/doctor/app-table-policies.ts
|
|
198
|
+
/**
|
|
199
|
+
* Block policies (`bsb_*`, permissive) on the app's tables that grant a command
|
|
200
|
+
* more than the app's own permissive policies do. Postgres ORs permissive
|
|
201
|
+
* policies, so a block policy whose condition no app policy repeats can open
|
|
202
|
+
* rows the app's policies keep closed. A command the app has no policy for is
|
|
203
|
+
* the block's to grant.
|
|
204
|
+
*/
|
|
205
|
+
function widenedAppTablePolicies(context) {
|
|
206
|
+
const tables = adoptedTables(context.config.blocks, appTablesOf(context));
|
|
207
|
+
if (tables.length === 0) return [];
|
|
208
|
+
const modules = /* @__PURE__ */ new Map();
|
|
209
|
+
for (const table of tables) {
|
|
210
|
+
if (context.config.blocks[table.module]?.ownTablePolicies === "app") continue;
|
|
211
|
+
const target = `${table.schema}.${table.table}`;
|
|
212
|
+
modules.set(target, (modules.get(target) ?? /* @__PURE__ */ new Set()).add(table.module));
|
|
213
|
+
}
|
|
214
|
+
return catalogOf(context).tables.flatMap((table) => {
|
|
215
|
+
const target = qualified(table);
|
|
216
|
+
const owners = modules.get(target);
|
|
217
|
+
if (owners === void 0) return [];
|
|
218
|
+
const permissive = table.policies.filter((policy) => policy.permissive);
|
|
219
|
+
const own = permissive.filter((policy) => !policy.name.startsWith(BLOCK_PREFIX));
|
|
220
|
+
const blocks = [...owners].map((module) => `blocks.${module}`).join(" or ");
|
|
221
|
+
return permissive.filter((policy) => policy.name.startsWith(BLOCK_PREFIX)).flatMap((policy) => {
|
|
222
|
+
const widened = widenedCommands(policy, own);
|
|
223
|
+
if (widened.length === 0) return [];
|
|
224
|
+
const reason = `no policy of the app's for ${widened.join(", ")} reaches its roles with a condition it repeats (alone or with more "and" operands), so it can open rows the app's policies keep closed`;
|
|
225
|
+
return [{
|
|
226
|
+
message: `${blocks} adds policy ${policy.name} on ${target}, and ${reason}. Postgres ORs permissive policies; doctor compares conditions as text and can't prove that one implies another. If the block's condition is what the app means, repeat it in the app's policy; otherwise narrow the permission key it checks, drop ${policy.name} in a schema file that runs after the block's, or set ownTablePolicies: "app" on the block (or in database.sql) so the app's policies alone govern the table.`,
|
|
227
|
+
target: `${target}.${policy.name}`,
|
|
228
|
+
object: {
|
|
229
|
+
kind: "policy",
|
|
230
|
+
schema: table.schema,
|
|
231
|
+
table: table.name,
|
|
232
|
+
name: policy.name
|
|
233
|
+
}
|
|
234
|
+
}];
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
async function appTablesWithoutPolicies(context) {
|
|
239
|
+
const states = await moduleFiles(context);
|
|
240
|
+
const left = /* @__PURE__ */ new Map();
|
|
241
|
+
for (const { file } of states) {
|
|
242
|
+
if (file.kind !== "schema") continue;
|
|
243
|
+
for (const note of appTablePolicyNotes(file.contents)) {
|
|
244
|
+
const entry = left.get(note.table) ?? {
|
|
245
|
+
blocks: /* @__PURE__ */ new Set(),
|
|
246
|
+
commands: /* @__PURE__ */ new Set()
|
|
247
|
+
};
|
|
248
|
+
entry.blocks.add(`blocks.${file.instance ?? file.module}`);
|
|
249
|
+
for (const command of note.commands) entry.commands.add(command);
|
|
250
|
+
left.set(note.table, entry);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (left.size === 0) return [];
|
|
254
|
+
return catalogOf(context).tables.flatMap((table) => {
|
|
255
|
+
const target = qualified(table);
|
|
256
|
+
const entry = left.get(target);
|
|
257
|
+
if (entry === void 0) return [];
|
|
258
|
+
const missing = [...entry.commands].filter((command) => !table.policies.some((policy) => policy.permissive && (policy.command === "all" || policy.command === command)));
|
|
259
|
+
if (missing.length === 0) return [];
|
|
260
|
+
return [{
|
|
261
|
+
message: `${[...entry.blocks].join(" and ")} leaves the policies on ${target} to the app's (ownTablePolicies "app"), and ${target} ${table.rls ? "has row level security on" : "has row level security off, which the block's file turns on,"} but no permissive policy for ${missing.join(", ")}, which the block's own policies would have granted. Postgres then denies those commands to every caller, so the block's functions that run as the caller and its TypeScript API find no rows for them. Add the app's policy for each command the app uses, or set ownTablePolicies to "block" for this block.`,
|
|
262
|
+
target,
|
|
263
|
+
object: {
|
|
264
|
+
kind: "table",
|
|
265
|
+
schema: table.schema,
|
|
266
|
+
name: table.name
|
|
267
|
+
},
|
|
268
|
+
...missing.includes("select") ? {} : { severity: "info" }
|
|
269
|
+
}];
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const KEPT_TRIGGER = /^-- (\S+) keeps updated_at current with its own trigger (\S+)\.$/gm;
|
|
273
|
+
/**
|
|
274
|
+
* App tables whose own trigger keeps `updated_at` current, so the block skipped
|
|
275
|
+
* its `bsb_updated_at` trigger there.
|
|
276
|
+
*/
|
|
277
|
+
async function keptUpdatedAtTriggers(context) {
|
|
278
|
+
return (await moduleFiles(context)).flatMap(({ file }) => file.kind === "schema" ? [...file.contents.matchAll(KEPT_TRIGGER)].map(([, target = "", trigger = ""]) => {
|
|
279
|
+
const dot = target.indexOf(".");
|
|
280
|
+
return {
|
|
281
|
+
message: `blocks.${file.instance ?? file.module} runs over ${target}, which keeps updated_at current with its own trigger ${trigger}, so the block adds no bsb_updated_at trigger there. Keep ${trigger} firing on update; if you drop it, run \`better-supabase upgrade\` to add the block's.`,
|
|
282
|
+
target,
|
|
283
|
+
object: {
|
|
284
|
+
kind: "table",
|
|
285
|
+
schema: target.slice(0, dot),
|
|
286
|
+
name: target.slice(dot + 1)
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
}) : []);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Whether a deprecated table or column name belongs to the app: the app's
|
|
293
|
+
* tables keep the app's names, as custom blocks' tables do.
|
|
294
|
+
*/
|
|
295
|
+
function keepsAppsName(context) {
|
|
296
|
+
const adopted = context.config.blockNames.some((name) => moduleDeprecations().some((entry) => entry.module === name && (entry.kind === "table" || entry.kind === "column"))) ? adoptedTables(context.config.blocks, appTablesOf(context)) : [];
|
|
297
|
+
return (entry) => {
|
|
298
|
+
if (entry.kind !== "table" && entry.kind !== "column") return false;
|
|
299
|
+
if ((context.config.blocks[entry.module]?.mode ?? "managed") !== "managed") return true;
|
|
300
|
+
const name = entry.kind === "table" ? entry.symbol.slice(entry.symbol.lastIndexOf(".") + 1) : entry.symbol.slice(0, entry.symbol.indexOf("."));
|
|
301
|
+
return adopted.some((table) => table.module === entry.module && (name === table.logical || name === table.table || name === SQL_MODULES[table.module]?.names?.tables[table.logical]?.name));
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
//#endregion
|
|
144
305
|
//#region src/cli/doctor/adoption.ts
|
|
145
306
|
const tagText = (notNull) => notNull === true ? "@notNull" : `@notNull(${notNull.join(", ")})`;
|
|
146
307
|
const sameNotNull = (a, b) => a === true || b === true ? a === b : a !== void 0 && a.length === b.length && a.every((name) => b.includes(name));
|
|
@@ -273,6 +434,13 @@ const ADOPTION_RULES = [
|
|
|
273
434
|
}));
|
|
274
435
|
}
|
|
275
436
|
},
|
|
437
|
+
{
|
|
438
|
+
code: "BS350",
|
|
439
|
+
severity: "warning",
|
|
440
|
+
title: "App table governs its policies but lacks one for a command",
|
|
441
|
+
description: "A block runs over a table of the app's with `ownTablePolicies: \"app\"`, so it adds none of its `bsb_` policies there, and the table has no permissive policy for a command one of those policies would have granted. With row level security on, or off (the block's file turns it on), Postgres denies that command to every caller, so the block's functions that run as the caller and its TypeScript API find no rows for it. A missing `select` policy is a warning, a missing write policy is info. Add the app's own policy for each command the app uses, or set `ownTablePolicies` back to `block` for the block.",
|
|
442
|
+
check: appTablesWithoutPolicies
|
|
443
|
+
},
|
|
276
444
|
{
|
|
277
445
|
code: "BS341",
|
|
278
446
|
severity: "warning",
|
|
@@ -1209,131 +1377,6 @@ function skippedForMetadata(snapshot, rule, help) {
|
|
|
1209
1377
|
};
|
|
1210
1378
|
}
|
|
1211
1379
|
//#endregion
|
|
1212
|
-
//#region src/cli/doctor/module-files.ts
|
|
1213
|
-
/** The `blocks` files as this release renders them, next to what is on disk. */
|
|
1214
|
-
async function moduleFiles(context) {
|
|
1215
|
-
if (context.config.blockNames.length === 0 && Object.keys(context.config.appTables).length === 0) return [];
|
|
1216
|
-
const access = accessModule(context);
|
|
1217
|
-
if (access.kind === "invalid") return [];
|
|
1218
|
-
const readSets = context.readSets;
|
|
1219
|
-
const skipped = readSets !== void 0 && "skipped" in readSets;
|
|
1220
|
-
let rendered;
|
|
1221
|
-
try {
|
|
1222
|
-
rendered = renderBlocks(context.config.blockNames, await moduleLayoutFor(context.config, {
|
|
1223
|
-
names: context.config.blockNames,
|
|
1224
|
-
testsDir: context.config.sql.testsDir,
|
|
1225
|
-
readSets: skipped ? [] : readSets,
|
|
1226
|
-
entitlementsProvider: entitlementsModule(context),
|
|
1227
|
-
accessProvider: access.kind === "provider" ? access.access : void 0,
|
|
1228
|
-
permissionCatalog: permissionCatalogKeys(context)
|
|
1229
|
-
}));
|
|
1230
|
-
} catch {
|
|
1231
|
-
return [];
|
|
1232
|
-
}
|
|
1233
|
-
const files = rendered.filter((file) => !(skipped && file.module === "read-sets"));
|
|
1234
|
-
if (workflowOf(context) === "migrations") {
|
|
1235
|
-
const latest = await latestMigration(context.config, MODULES_SUFFIX);
|
|
1236
|
-
const versions = migrationModules(latest?.text ?? "");
|
|
1237
|
-
const path = latest?.path ?? `${migrationsDir(context.config)}/<stamp>_better_supabase_modules.sql`;
|
|
1238
|
-
return Promise.all(files.map(async (file) => {
|
|
1239
|
-
if (file.kind === "test") return fileState(context, file);
|
|
1240
|
-
const installed = versions.get(file.instance ?? file.module);
|
|
1241
|
-
return {
|
|
1242
|
-
file,
|
|
1243
|
-
path,
|
|
1244
|
-
installed,
|
|
1245
|
-
current: latest === void 0 ? void 0 : migrationHolds(latest.text, file.contents) ? file.contents : latest.text,
|
|
1246
|
-
behind: file.kind === "schema" && installed !== void 0 && installed < (moduleFileVersion(file.contents)?.version ?? 1)
|
|
1247
|
-
};
|
|
1248
|
-
}));
|
|
1249
|
-
}
|
|
1250
|
-
return Promise.all(files.map((file) => fileState(context, file)));
|
|
1251
|
-
}
|
|
1252
|
-
async function fileState(context, file) {
|
|
1253
|
-
const current = await readFile(resolve(context.config.root, file.path), "utf-8").catch(() => void 0);
|
|
1254
|
-
const installed = current === void 0 ? void 0 : moduleFileVersion(current)?.version ?? 1;
|
|
1255
|
-
return {
|
|
1256
|
-
file,
|
|
1257
|
-
path: file.path,
|
|
1258
|
-
current,
|
|
1259
|
-
installed,
|
|
1260
|
-
behind: installed !== void 0 && installed < (moduleFileVersion(file.contents)?.version ?? 1)
|
|
1261
|
-
};
|
|
1262
|
-
}
|
|
1263
|
-
//#endregion
|
|
1264
|
-
//#region src/cli/doctor/app-table-policies.ts
|
|
1265
|
-
/**
|
|
1266
|
-
* Block policies (`bsb_*`, permissive) on the app's tables that grant a command
|
|
1267
|
-
* more than the app's own permissive policies do. Postgres ORs permissive
|
|
1268
|
-
* policies, so a block policy whose condition no app policy repeats can open
|
|
1269
|
-
* rows the app's policies keep closed. A command the app has no policy for is
|
|
1270
|
-
* the block's to grant.
|
|
1271
|
-
*/
|
|
1272
|
-
function widenedAppTablePolicies(context) {
|
|
1273
|
-
const tables = adoptedTables(context.config.blocks, appTablesOf(context));
|
|
1274
|
-
if (tables.length === 0) return [];
|
|
1275
|
-
const modules = /* @__PURE__ */ new Map();
|
|
1276
|
-
for (const table of tables) {
|
|
1277
|
-
const target = `${table.schema}.${table.table}`;
|
|
1278
|
-
modules.set(target, (modules.get(target) ?? /* @__PURE__ */ new Set()).add(table.module));
|
|
1279
|
-
}
|
|
1280
|
-
return catalogOf(context).tables.flatMap((table) => {
|
|
1281
|
-
const target = qualified(table);
|
|
1282
|
-
const owners = modules.get(target);
|
|
1283
|
-
if (owners === void 0) return [];
|
|
1284
|
-
const permissive = table.policies.filter((policy) => policy.permissive);
|
|
1285
|
-
const own = permissive.filter((policy) => !policy.name.startsWith(BLOCK_PREFIX));
|
|
1286
|
-
const blocks = [...owners].map((module) => `blocks.${module}`).join(" or ");
|
|
1287
|
-
return permissive.filter((policy) => policy.name.startsWith(BLOCK_PREFIX)).flatMap((policy) => {
|
|
1288
|
-
const widened = widenedCommands(policy, own);
|
|
1289
|
-
if (widened.length === 0) return [];
|
|
1290
|
-
const reason = `no policy of the app's for ${widened.join(", ")} reaches its roles with a condition it repeats (alone or with more "and" operands), so it can open rows the app's policies keep closed`;
|
|
1291
|
-
return [{
|
|
1292
|
-
message: `${blocks} adds policy ${policy.name} on ${target}, and ${reason}. Postgres ORs permissive policies; doctor compares conditions as text and can't prove that one implies another. If the block's condition is what the app means, repeat it in the app's policy; otherwise narrow the permission key it checks, or drop ${policy.name} in a schema file that runs after the block's.`,
|
|
1293
|
-
target: `${target}.${policy.name}`,
|
|
1294
|
-
object: {
|
|
1295
|
-
kind: "policy",
|
|
1296
|
-
schema: table.schema,
|
|
1297
|
-
table: table.name,
|
|
1298
|
-
name: policy.name
|
|
1299
|
-
}
|
|
1300
|
-
}];
|
|
1301
|
-
});
|
|
1302
|
-
});
|
|
1303
|
-
}
|
|
1304
|
-
const KEPT_TRIGGER = /^-- (\S+) keeps updated_at current with its own trigger (\S+)\.$/gm;
|
|
1305
|
-
/**
|
|
1306
|
-
* App tables whose own trigger keeps `updated_at` current, so the block skipped
|
|
1307
|
-
* its `bsb_updated_at` trigger there.
|
|
1308
|
-
*/
|
|
1309
|
-
async function keptUpdatedAtTriggers(context) {
|
|
1310
|
-
return (await moduleFiles(context)).flatMap(({ file }) => file.kind === "schema" ? [...file.contents.matchAll(KEPT_TRIGGER)].map(([, target = "", trigger = ""]) => {
|
|
1311
|
-
const dot = target.indexOf(".");
|
|
1312
|
-
return {
|
|
1313
|
-
message: `blocks.${file.instance ?? file.module} runs over ${target}, which keeps updated_at current with its own trigger ${trigger}, so the block adds no bsb_updated_at trigger there. Keep ${trigger} firing on update; if you drop it, run \`better-supabase upgrade\` to add the block's.`,
|
|
1314
|
-
target,
|
|
1315
|
-
object: {
|
|
1316
|
-
kind: "table",
|
|
1317
|
-
schema: target.slice(0, dot),
|
|
1318
|
-
name: target.slice(dot + 1)
|
|
1319
|
-
}
|
|
1320
|
-
};
|
|
1321
|
-
}) : []);
|
|
1322
|
-
}
|
|
1323
|
-
/**
|
|
1324
|
-
* Whether a deprecated table or column name belongs to the app: the app's
|
|
1325
|
-
* tables keep the app's names, as custom blocks' tables do.
|
|
1326
|
-
*/
|
|
1327
|
-
function keepsAppsName(context) {
|
|
1328
|
-
const adopted = context.config.blockNames.some((name) => moduleDeprecations().some((entry) => entry.module === name && (entry.kind === "table" || entry.kind === "column"))) ? adoptedTables(context.config.blocks, appTablesOf(context)) : [];
|
|
1329
|
-
return (entry) => {
|
|
1330
|
-
if (entry.kind !== "table" && entry.kind !== "column") return false;
|
|
1331
|
-
if ((context.config.blocks[entry.module]?.mode ?? "managed") !== "managed") return true;
|
|
1332
|
-
const name = entry.kind === "table" ? entry.symbol.slice(entry.symbol.lastIndexOf(".") + 1) : entry.symbol.slice(0, entry.symbol.indexOf("."));
|
|
1333
|
-
return adopted.some((table) => table.module === entry.module && (name === table.logical || name === table.table || name === SQL_MODULES[table.module]?.names?.tables[table.logical]?.name));
|
|
1334
|
-
};
|
|
1335
|
-
}
|
|
1336
|
-
//#endregion
|
|
1337
1380
|
//#region src/cli/doctor/attachment-subjects.ts
|
|
1338
1381
|
/**
|
|
1339
1382
|
* The attachments subjects as the block resolves them, with the per-subject
|
|
@@ -2093,7 +2136,7 @@ const MODULE_RULES = [
|
|
|
2093
2136
|
code: "BS347",
|
|
2094
2137
|
severity: "warning",
|
|
2095
2138
|
title: "Block policy widens an app table's access",
|
|
2096
|
-
description: "A block runs over a table of the app's and adds its own permissive policy there, named `bsb_<table>_<command>` so it never replaces one of the app's. Postgres ORs permissive policies, so when the app has its own policies for that command and none has the same condition (or `true`) for the same roles, the block's policy can let a user reach rows the app's policies keep closed. A block condition that is the app's, or one of its `or` operands, with more `and` operands is narrower and isn't reported, nor is a command the app has no policy for, which is the block's to grant. Doctor compares the conditions as text. When an app policy covers the block's in this sense, `upgrade` leaves the block's policy out. Repeat the block's condition in the app's policy when it is what the app means; otherwise narrow the permission key the block checks,
|
|
2139
|
+
description: "A block runs over a table of the app's and adds its own permissive policy there, named `bsb_<table>_<command>` so it never replaces one of the app's. Postgres ORs permissive policies, so when the app has its own policies for that command and none has the same condition (or `true`) for the same roles, the block's policy can let a user reach rows the app's policies keep closed. A block condition that is the app's, or one of its `or` operands, with more `and` operands is narrower and isn't reported, nor is a command the app has no policy for, which is the block's to grant. Doctor compares the conditions as text. When an app policy covers the block's in this sense, `upgrade` leaves the block's policy out. Repeat the block's condition in the app's policy when it is what the app means; otherwise narrow the permission key the block checks, drop the `bsb_` policy in a schema file that runs after the block's, or set `ownTablePolicies: \"app\"` on the block (or in `database.sql`) so the app's policies alone govern the table and the block adds none there.",
|
|
2097
2140
|
check: widenedAppTablePolicies
|
|
2098
2141
|
},
|
|
2099
2142
|
{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as commandMeta, r as defineCliCommand } from "./command-
|
|
1
|
+
import { p as commandMeta, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
2
|
import { n as CliError } from "./errors-BTe6A15O.js";
|
|
3
3
|
import { r as readIfExists, t as display } from "./io-DH1kcmmP.js";
|
|
4
4
|
import { n as readStackStatus, t as parseStackStatus } from "./stack-status-B_Ipd_-z.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { n as envCommand } from "./env-BCgVZkcb.js";
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import { a as list, p as commandMeta, r as defineCliCommand } from "./command-
|
|
1
|
+
import { a as list, p as commandMeta, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
2
|
import { i as plain } from "./style-Bm2X5JrN.js";
|
|
3
3
|
import { a as parseNames, i as failedResult, n as CliError } from "./errors-BTe6A15O.js";
|
|
4
|
-
import { u as catalogFingerprint } from "./cache-
|
|
5
|
-
import { a as serializeSnapshot, g as serializeGenerator, h as restrictSchemas, o as snapshotFile, r as openSource, t as loadSnapshot } from "./snapshot-
|
|
6
|
-
import {
|
|
7
|
-
import { d as GEN_TASKS, p as isGenTask } from "./config-
|
|
4
|
+
import { u as catalogFingerprint } from "./cache-DE2IH1-C.js";
|
|
5
|
+
import { a as serializeSnapshot, g as serializeGenerator, h as restrictSchemas, o as snapshotFile, r as openSource, t as loadSnapshot } from "./snapshot-BXmU3IXN.js";
|
|
6
|
+
import { n as dataMigration } from "./migrations-BoIyGczt.js";
|
|
7
|
+
import { d as GEN_TASKS, p as isGenTask } from "./config-BJSqMi04.js";
|
|
8
8
|
import { c as insideRoot, r as applyPlan, u as planResult } from "./files-CX71yBm8.js";
|
|
9
|
-
import { n as runGen } from "./run-
|
|
10
|
-
import { t as syncModules } from "./sync-
|
|
11
|
-
import { t as addModules } from "./add-
|
|
12
|
-
import { n as listModules, t as printModule } from "./print-
|
|
13
|
-
import { a as sourceFlags, i as sourceArgs, n as SOURCE_ARGS } from "./source-args-
|
|
14
|
-
import { a as runMetadataGen, n as checkMetadataFlags, t as EMITS } from "./metadata-
|
|
15
|
-
import { a as runEnv } from "./env-
|
|
16
|
-
import { c as watchLoop, o as parseInterval, r as specOptionsFromConfig, s as stampFiles, t as runSpec } from "./spec-
|
|
17
|
-
import {
|
|
18
|
-
import { t as
|
|
9
|
+
import { n as runGen } from "./run-jeplMBOK.js";
|
|
10
|
+
import { t as syncModules } from "./sync-s1iKFIos.js";
|
|
11
|
+
import { t as addModules } from "./add-D7YIXslp.js";
|
|
12
|
+
import { n as listModules, t as printModule } from "./print-CRon4lXf.js";
|
|
13
|
+
import { a as sourceFlags, i as sourceArgs, n as SOURCE_ARGS } from "./source-args-DlckPVje.js";
|
|
14
|
+
import { a as runMetadataGen, n as checkMetadataFlags, t as EMITS } from "./metadata-BTihErEc.js";
|
|
15
|
+
import { a as runEnv } from "./env-BCgVZkcb.js";
|
|
16
|
+
import { c as watchLoop, o as parseInterval, r as specOptionsFromConfig, s as stampFiles, t as runSpec } from "./spec-CDxfokey.js";
|
|
17
|
+
import { n as runPowerSync } from "./powersync-D-0yV_L_.js";
|
|
18
|
+
import { t as runSeed } from "./seed-D9mt8bnW.js";
|
|
19
|
+
import { t as upgrade } from "./upgrade-B4FPlK-_.js";
|
|
19
20
|
import { existsSync } from "node:fs";
|
|
20
21
|
import { resolve } from "node:path";
|
|
21
22
|
//#region src/cli/commands/sql.ts
|
|
@@ -60,6 +61,7 @@ function configuredTasks(config) {
|
|
|
60
61
|
const configured = {
|
|
61
62
|
types: () => true,
|
|
62
63
|
sql: () => config.blockNames.length > 0 || config.realtime.policies !== void 0,
|
|
64
|
+
powersync: () => config.gen.powersync !== void 0,
|
|
63
65
|
spec: () => exists(config.specs.entry),
|
|
64
66
|
seed: () => exists(config.seed.entry),
|
|
65
67
|
env: () => false
|
|
@@ -75,6 +77,7 @@ function stepInputs(config, tasks) {
|
|
|
75
77
|
const inputs = {
|
|
76
78
|
types: () => [],
|
|
77
79
|
sql: () => [],
|
|
80
|
+
powersync: () => [],
|
|
78
81
|
spec: () => [at(config.specs.entry), ...config.specs.outputs.flatMap((output) => (output.overlays ?? []).map(at))],
|
|
79
82
|
seed: () => [at(config.seed.entry)],
|
|
80
83
|
env: () => []
|
|
@@ -87,6 +90,10 @@ const STEPS = {
|
|
|
87
90
|
check,
|
|
88
91
|
"dry-run": dryRun
|
|
89
92
|
}, paint),
|
|
93
|
+
powersync: ({ config, check, dryRun }) => runPowerSync(config, {
|
|
94
|
+
check,
|
|
95
|
+
"dry-run": dryRun
|
|
96
|
+
}),
|
|
90
97
|
spec: ({ config, check, dryRun }) => runSpec(specOptionsFromConfig(config, check ? "check" : "emit", dryRun === true ? { dryRun } : {})),
|
|
91
98
|
seed: ({ config, check, dryRun, env }) => runSeed(config, {
|
|
92
99
|
check,
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -498,7 +498,7 @@ interface SchemaExtension {
|
|
|
498
498
|
* options its TypeScript side reads, for `defineBlocks(blockConfig, ...)`, and
|
|
499
499
|
* the app table events. `undefined` when the config installs no blocks.
|
|
500
500
|
*/
|
|
501
|
-
export declare function emitBlockConfig(config: Pick<ResolvedConfig, "appTables" | "blocks" | "blockNames" | "buckets" | "casing" | "instances" | "output" | "sql" | "subjects">, options?: {
|
|
501
|
+
export declare function emitBlockConfig(config: Pick<ResolvedConfig, "appTables" | "blocks" | "blockNames" | "buckets" | "casing" | "instances" | "output" | "gen" | "sql" | "subjects">, options?: {
|
|
502
502
|
readonly runtimeImport?: string;
|
|
503
503
|
}): GeneratedFile | undefined;
|
|
504
504
|
//#endregion
|
|
@@ -798,6 +798,6 @@ export declare function emitModule(model: Model, options: EmitOptions): string;
|
|
|
798
798
|
export declare function loadConfig(cwd: string, explicit?: string, environment?: string, path?: string | undefined): Promise<ResolvedConfig>;
|
|
799
799
|
//#endregion
|
|
800
800
|
//#region src/cli/version.d.ts
|
|
801
|
-
export declare const VERSION = "0.
|
|
801
|
+
export declare const VERSION = "0.18.0";
|
|
802
802
|
//#endregion
|
|
803
803
|
export type { Catalog, CatalogCheck, CatalogColumn, CatalogColumnGrant, CatalogEnum, CatalogForeignKey, CatalogFunction, CatalogFunctionArg, CatalogGrant, CatalogIndex, CatalogPolicy, CatalogTable, CatalogTrigger, CatalogUnique, Choice, Cli, CliArgs, CliCommand, CliCommandDef, CliContext, CliEnv, CliErrorCode, CliErrorOptions, CliIo, CliLog, CliProblem, CliProblemExtensions, CommandResult, CreateCliOptions, ExitCode, ExtrasFunction, ExtrasHook, ExtrasHookFunction, ExtrasTable, ForeignKeyAction, Format, GeneratorMetadata, IntrospectionSource, ManagementSourceOptions, NextStep, Paint, Prompter, Queryable, RunOptions, RunResult, Snapshot, SnapshotBucket, SnapshotExtras };
|
package/dist/cli/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { a as list, r as defineCliCommand } from "./command-
|
|
2
|
-
import { i as run, n as createCli, r as help, t as commandNames } from "./run-
|
|
3
|
-
import { t as VERSION } from "./version-
|
|
1
|
+
import { a as list, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
|
+
import { i as run, n as createCli, r as help, t as commandNames } from "./run-x9ZY4Tm0.js";
|
|
3
|
+
import { t as VERSION } from "./version-TgFM8sOd.js";
|
|
4
4
|
import { n as CliError, t as CLI_ERRORS_URL } from "./errors-BTe6A15O.js";
|
|
5
|
-
import { a as serializeSnapshot, i as parseSnapshot, l as introspect, t as loadSnapshot } from "./snapshot-
|
|
6
|
-
import { a as emitBlockConfig, l as buildModel, o as GENERATED_HEADER, r as renderFiles, s as emitModule } from "./render-
|
|
7
|
-
import { a as toCatalog, n as managementSource, r as pgSource } from "./source-
|
|
8
|
-
import { s as loadConfig } from "./config-
|
|
9
|
-
import { n as runGen } from "./run-
|
|
5
|
+
import { a as serializeSnapshot, i as parseSnapshot, l as introspect, t as loadSnapshot } from "./snapshot-BXmU3IXN.js";
|
|
6
|
+
import { a as emitBlockConfig, l as buildModel, o as GENERATED_HEADER, r as renderFiles, s as emitModule } from "./render-BJF9ytUi.js";
|
|
7
|
+
import { a as toCatalog, n as managementSource, r as pgSource } from "./source-irttnsEb.js";
|
|
8
|
+
import { s as loadConfig } from "./config-BJSqMi04.js";
|
|
9
|
+
import { n as runGen } from "./run-jeplMBOK.js";
|
|
10
10
|
//#region src/cli/introspect/from-catalog.ts
|
|
11
11
|
/**
|
|
12
12
|
* Builds a snapshot from catalog records: the inverse of `toCatalog`. Tests and
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { a as list, p as commandMeta, r as defineCliCommand } from "./command-
|
|
1
|
+
import { a as list, p as commandMeta, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
2
|
import { i as plain } from "./style-Bm2X5JrN.js";
|
|
3
3
|
import { n as CliError } from "./errors-BTe6A15O.js";
|
|
4
4
|
import { r as readIfExists } from "./io-DH1kcmmP.js";
|
|
5
|
-
import { l as TYPEGEN_VERSION } from "./cache-
|
|
6
|
-
import { a as findConfig, s as loadConfig } from "./config-
|
|
7
|
-
import { r as contentMapperFiles } from "./content-mapper-
|
|
5
|
+
import { l as TYPEGEN_VERSION } from "./cache-DE2IH1-C.js";
|
|
6
|
+
import { a as findConfig, s as loadConfig } from "./config-BJSqMi04.js";
|
|
7
|
+
import { r as contentMapperFiles } from "./content-mapper-CaygHH_k.js";
|
|
8
8
|
import { i as changeLines, n as PLAN_ARGS, r as applyPlan, u as planResult } from "./files-CX71yBm8.js";
|
|
9
|
-
import { C as promptConventions, S as hasConventionFlags, _ as templatePlan, b as conventionFlags, c as AUTHZ_NOTE, d as chooseIntegrations, f as integrationFiles, g as templateContextFor, h as parseIntegrations, i as blocksWiringPath, l as createUrlParam, m as packagesFor, o as writeDesign, p as overwrite, r as blockConfigImport, s as readPresetInput, u as CANCELLED, v as CONVENTION_ARGS, w as withConventions, x as defaultConventions, y as CONVENTION_COMPLETIONS } from "./add-
|
|
10
|
-
import { a as wiringFiles, c as baseFiles, f as needsLib, i as wiringChecklist, m as suggestedIntegrations, n as latestMigrationVersion, o as wiringFor, p as resolveIntegrations, r as configInstances, s as TEMPLATES } from "./migration-safety-
|
|
9
|
+
import { C as promptConventions, S as hasConventionFlags, _ as templatePlan, b as conventionFlags, c as AUTHZ_NOTE, d as chooseIntegrations, f as integrationFiles, g as templateContextFor, h as parseIntegrations, i as blocksWiringPath, l as createUrlParam, m as packagesFor, o as writeDesign, p as overwrite, r as blockConfigImport, s as readPresetInput, u as CANCELLED, v as CONVENTION_ARGS, w as withConventions, x as defaultConventions, y as CONVENTION_COMPLETIONS } from "./add-B1S3yK4L.js";
|
|
10
|
+
import { a as wiringFiles, c as baseFiles, f as needsLib, i as wiringChecklist, m as suggestedIntegrations, n as latestMigrationVersion, o as wiringFor, p as resolveIntegrations, r as configInstances, s as TEMPLATES } from "./migration-safety-DYo1vVWC.js";
|
|
11
11
|
import { n as installCommand, t as detectProject } from "./detect-D9JaAX20.js";
|
|
12
|
-
import { s as enablePgDelta, t as syncModules } from "./sync-
|
|
12
|
+
import { s as enablePgDelta, t as syncModules } from "./sync-s1iKFIos.js";
|
|
13
13
|
import { existsSync } from "node:fs";
|
|
14
14
|
import { join, posix, resolve } from "node:path";
|
|
15
15
|
import { glob, readFile } from "node:fs/promises";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as commandMeta, r as defineCliCommand } from "./command-
|
|
1
|
+
import { p as commandMeta, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
2
|
import { t as display } from "./io-DH1kcmmP.js";
|
|
3
3
|
import { m as supabaseDir } from "./supabase-toml-CncmQbO0.js";
|
|
4
4
|
import { i as changeLines, r as applyPlan } from "./files-CX71yBm8.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as errorText } from "./errors-BTe6A15O.js";
|
|
2
|
-
import "./source-
|
|
3
|
-
import { l as tableObject, n as exposed, s as qualified, t as catalogOf } from "./shared-
|
|
2
|
+
import "./source-irttnsEb.js";
|
|
3
|
+
import { l as tableObject, n as exposed, s as qualified, t as catalogOf } from "./shared-B38Chjgd.js";
|
|
4
4
|
//#region src/cli/doctor/reserved-roles.ts
|
|
5
5
|
/**
|
|
6
6
|
* Supautils' `reserved_roles` on Supabase. Nobody but a superuser may alter,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { p as commandMeta, r as defineCliCommand } from "./command-
|
|
2
|
-
import { a as envelope, i as run } from "./run-
|
|
3
|
-
import { t as VERSION } from "./version-
|
|
1
|
+
import { p as commandMeta, r as defineCliCommand } from "./command-BWEEXmtz.js";
|
|
2
|
+
import { a as envelope, i as run } from "./run-x9ZY4Tm0.js";
|
|
3
|
+
import { t as VERSION } from "./version-TgFM8sOd.js";
|
|
4
4
|
import { n as CliError } from "./errors-BTe6A15O.js";
|
|
5
5
|
import { n as consentToken } from "./agent-CbuPvI2x.js";
|
|
6
6
|
import { C as optional, D as record, N as unknown, a as array, d as is, j as string$1, k as safeParse, o as boolean, t as PROCESS_ENV, x as object } from "./env-DMgjB_4y.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as CliError, r as errorText } from "./errors-BTe6A15O.js";
|
|
2
2
|
import { i as readStdin } from "./io-DH1kcmmP.js";
|
|
3
|
-
import { m as parseMetadataDocument, u as MetadataRejectedError } from "./snapshot-
|
|
4
|
-
import { c as metaPaths, n as render } from "./render-
|
|
5
|
-
import { i as generationNotices, n as runGen, o as fromMetadata, r as UNFORMATTED, t as refuseRowConditionedBuckets } from "./run-
|
|
3
|
+
import { m as parseMetadataDocument, u as MetadataRejectedError } from "./snapshot-BXmU3IXN.js";
|
|
4
|
+
import { c as metaPaths, n as render } from "./render-BJF9ytUi.js";
|
|
5
|
+
import { i as generationNotices, n as runGen, o as fromMetadata, r as UNFORMATTED, t as refuseRowConditionedBuckets } from "./run-jeplMBOK.js";
|
|
6
6
|
import { basename, join, relative, resolve, sep } from "node:path";
|
|
7
7
|
import { readFile } from "node:fs/promises";
|
|
8
8
|
import { jsonSchema, standardSchema, valibot, zod } from "better-supabase/config";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as INTEGRATIONS } from "./config-
|
|
2
|
-
import { c as splitStatements } from "./shared-
|
|
1
|
+
import { f as INTEGRATIONS } from "./config-BJSqMi04.js";
|
|
2
|
+
import { c as splitStatements } from "./shared-B38Chjgd.js";
|
|
3
3
|
import { dirname, join, posix } from "node:path";
|
|
4
4
|
import { readdir } from "node:fs/promises";
|
|
5
5
|
import { INTEGRATION_INFO, groupEntries } from "better-supabase/config";
|