better-supabase 0.12.0 → 0.14.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/README.md +129 -96
- package/dist/access-sql-CPoq9F86.js +207 -0
- package/dist/access-z7NwWtqx.js +34 -0
- package/dist/actor-CoveJgya.d.ts +106 -0
- package/dist/actor-hNajGNEK.js +150 -0
- package/dist/adapter-BCFAg58A.js +2190 -0
- package/dist/agents-CmZlLPXC.d.ts +117 -0
- package/dist/ai-cache-BxlOkc_M.d.ts +82 -0
- package/dist/ai-cache-DQikwXhJ.js +87 -0
- package/dist/ai-chat-DBxEz3o1.d.ts +619 -0
- package/dist/ai-files-t-kHmS5H.js +339 -0
- package/dist/ai-sdk/agents/index.d.ts +64 -52
- package/dist/ai-sdk/agents/index.js +35 -27
- package/dist/ai-sdk/batches/index.d.ts +16 -7
- package/dist/ai-sdk/batches/index.js +5 -5
- package/dist/ai-sdk/cache/index.d.ts +6 -3
- package/dist/ai-sdk/cache/index.js +1 -1
- package/dist/ai-sdk/chat/index.d.ts +1 -1
- package/dist/ai-sdk/chat/index.js +10 -10
- package/dist/ai-sdk/embeddings/index.d.ts +2 -2
- package/dist/ai-sdk/embeddings/index.js +1 -1
- package/dist/ai-sdk/files/index.d.ts +9 -9
- package/dist/ai-sdk/files/index.js +10 -10
- package/dist/ai-sdk/index.d.ts +48 -24
- package/dist/ai-sdk/index.js +50 -9
- package/dist/ai-sdk/mcp/index.d.ts +32 -26
- package/dist/ai-sdk/mcp/index.js +20 -20
- package/dist/ai-sdk/memory/index.d.ts +9 -9
- package/dist/ai-sdk/memory/index.js +6 -6
- package/dist/ai-sdk/react/index.d.ts +1 -1
- package/dist/ai-sdk/react/index.js +1 -1
- package/dist/ai-sdk/react/server.d.ts +5 -2
- package/dist/ai-sdk/react/server.js +4 -1
- package/dist/ai-sdk/workflow/index.d.ts +57 -36
- package/dist/ai-sdk/workflow/index.js +29 -23
- package/dist/ai-sdk/workflow/react/index.d.ts +7 -8
- package/dist/ai-sdk/workflow/react/index.js +7 -8
- package/dist/ai-sdk/workflow/react/server.d.ts +1 -1
- package/dist/ai-tasks-BDywBUgN.d.ts +166 -0
- package/dist/anchors-7F34QyHa.d.ts +40 -0
- package/dist/announcements-BeOD0zbc.js +128 -0
- package/dist/api-CWhpq24a.d.ts +174 -0
- package/dist/api-DKp2Ggz_.js +685 -0
- package/dist/api-keys-CboAenU8.d.ts +213 -0
- package/dist/api-keys-DT6Fi50R.js +318 -0
- package/dist/app-tables-BHrzAUFJ.d.ts +27 -0
- package/dist/app-tables-C5aoI5rZ.js +959 -0
- package/dist/approvals-bMb7dsBY.d.ts +129 -0
- package/dist/arazzo/index.d.ts +59 -36
- package/dist/arazzo/index.js +49 -41
- package/dist/assistant-D1yev_fR.d.ts +157 -0
- package/dist/astro/index.d.ts +44 -22
- package/dist/astro/index.js +14 -11
- package/dist/asyncapi/index.d.ts +23 -16
- package/dist/asyncapi/index.js +23 -20
- package/dist/attachments-Cjdgarpa.js +351 -0
- package/dist/attributes-BOFl922R.js +44 -0
- package/dist/audit-log-C3rQxeHd.js +788 -0
- package/dist/auth-DyF_LRxd.js +20 -0
- package/dist/auth-link-B4NL84XU.d.ts +104 -0
- package/dist/auth-link-D3-bU6yz.js +118 -0
- package/dist/auth-module-BEFESDC4.js +44 -0
- package/dist/auth-reply-jVKoAV6R.js +31 -0
- package/dist/authorization-BuT26_sR.d.ts +3455 -0
- package/dist/authorization-hooks-dLmUO_PZ.d.ts +217 -0
- package/dist/authorizer-DFP3gHv8.d.ts +82 -0
- package/dist/authorizer-DPTeL-7h.js +125 -0
- package/dist/availability-q3dZoZYM.d.ts +226 -0
- package/dist/base64-B9Wlsdj7.js +42 -0
- package/dist/before-route-B23K2zYU.js +30 -0
- package/dist/better-result/index.d.ts +26 -18
- package/dist/better-result/index.js +13 -9
- package/dist/bind-Dz8y3T5T.d.ts +95 -0
- package/dist/block-authors-BRTlT0qv.js +14 -0
- package/dist/block-authors-DzXLUiIq.d.ts +12 -0
- package/dist/block-controller-DTGuBemi.js +112 -0
- package/dist/block-env-DJiUu1fq.js +35 -0
- package/dist/block-env-kFcaaJLM.d.ts +10 -0
- package/dist/block-env-options-2e6IQrSw.js +26 -0
- package/dist/block-event-listener-Bu6G0TFH.js +16 -0
- package/dist/block-events-pBXPzwnW.js +83 -0
- package/dist/block-events-records-BGVyoz57.d.ts +343 -0
- package/dist/block-fields-3w4MZr8U.d.ts +58 -0
- package/dist/block-fields-DBSJSeaO.js +139 -0
- package/dist/block-helpers-BaugZlJV.d.ts +62 -0
- package/dist/block-helpers-CiKtrb6g.js +353 -0
- package/dist/block-hooks-BymdcD0V.js +130 -0
- package/dist/block-hooks-CmjPKqQ_.d.ts +117 -0
- package/dist/block-method-Bvsao626.js +21 -0
- package/dist/block-method-hsPAGFi5.d.ts +19 -0
- package/dist/block-names-Dbv_2wmE.js +66 -0
- package/dist/block-subjects-Dzq5Xn_0.js +55 -0
- package/dist/block-subjects-FHwLlIHU.d.ts +6 -0
- package/dist/block-tenant-C1sNV8_4.js +14 -0
- package/dist/block-transport-d53POsem.d.ts +69 -0
- package/dist/blocks/access/index.d.ts +9 -0
- package/dist/blocks/access/index.js +18 -0
- package/dist/blocks/access/react/index.d.ts +52 -0
- package/dist/blocks/access/react/index.js +73 -0
- package/dist/blocks/access/react/server.d.ts +11 -0
- package/dist/blocks/access/react/server.js +16 -0
- package/dist/blocks/access/solid/index.d.ts +13 -0
- package/dist/blocks/access/solid/index.js +14 -0
- package/dist/blocks/access/svelte/index.d.ts +13 -0
- package/dist/blocks/access/svelte/index.js +14 -0
- package/dist/blocks/access/vue/index.d.ts +13 -0
- package/dist/blocks/access/vue/index.js +14 -0
- package/dist/blocks/access-requests/index.d.ts +21 -15
- package/dist/blocks/access-requests/index.js +11 -9
- package/dist/blocks/activity/index.d.ts +116 -0
- package/dist/blocks/activity/index.js +164 -0
- package/dist/blocks/agents/index.d.ts +4 -4
- package/dist/blocks/agents/index.js +6 -7
- package/dist/blocks/ai-cache/index.d.ts +3 -3
- package/dist/blocks/ai-cache/index.js +3 -3
- package/dist/blocks/ai-chat/index.d.ts +10 -7
- package/dist/blocks/ai-chat/index.js +4 -4
- package/dist/blocks/ai-chat/react/index.d.ts +18 -9
- package/dist/blocks/ai-chat/react/index.js +8 -8
- package/dist/blocks/ai-chat/react/server.d.ts +12 -3
- package/dist/blocks/ai-chat/react/server.js +12 -3
- package/dist/blocks/ai-chat/solid/index.d.ts +3 -3
- package/dist/blocks/ai-chat/solid/index.js +2 -2
- package/dist/blocks/ai-chat/svelte/index.d.ts +3 -3
- package/dist/blocks/ai-chat/svelte/index.js +2 -2
- package/dist/blocks/ai-chat/vue/index.d.ts +3 -3
- package/dist/blocks/ai-chat/vue/index.js +2 -2
- package/dist/blocks/ai-files/index.d.ts +5 -5
- package/dist/blocks/ai-files/index.js +3 -3
- package/dist/blocks/ai-providers/index.d.ts +4 -4
- package/dist/blocks/ai-providers/index.js +8 -9
- package/dist/blocks/ai-tasks/index.d.ts +3 -3
- package/dist/blocks/ai-tasks/index.js +9 -10
- package/dist/blocks/announcements/index.d.ts +4 -4
- package/dist/blocks/announcements/index.js +5 -5
- package/dist/blocks/announcements/react/index.d.ts +12 -5
- package/dist/blocks/announcements/react/index.js +7 -7
- package/dist/blocks/announcements/react/server.d.ts +4 -1
- package/dist/blocks/announcements/react/server.js +4 -1
- package/dist/blocks/announcements/solid/index.d.ts +3 -3
- package/dist/blocks/announcements/solid/index.js +2 -2
- package/dist/blocks/announcements/svelte/index.d.ts +3 -3
- package/dist/blocks/announcements/svelte/index.js +2 -2
- package/dist/blocks/announcements/vue/index.d.ts +3 -3
- package/dist/blocks/announcements/vue/index.js +2 -2
- package/dist/blocks/api-keys/index.d.ts +11 -8
- package/dist/blocks/api-keys/index.js +8 -8
- package/dist/blocks/api-keys/react/index.d.ts +11 -8
- package/dist/blocks/api-keys/react/index.js +9 -9
- package/dist/blocks/api-keys/react/server.d.ts +1 -1
- package/dist/blocks/api-keys/solid/index.d.ts +3 -3
- package/dist/blocks/api-keys/solid/index.js +2 -2
- package/dist/blocks/api-keys/svelte/index.d.ts +3 -3
- package/dist/blocks/api-keys/svelte/index.js +2 -2
- package/dist/blocks/api-keys/vue/index.d.ts +3 -3
- package/dist/blocks/api-keys/vue/index.js +2 -2
- package/dist/blocks/approvals/index.d.ts +4 -4
- package/dist/blocks/approvals/index.js +29 -25
- package/dist/blocks/assets/index.d.ts +283 -0
- package/dist/blocks/assets/index.js +288 -0
- package/dist/blocks/assignment/index.d.ts +124 -0
- package/dist/blocks/assignment/index.js +141 -0
- package/dist/blocks/attachments/index.d.ts +45 -6
- package/dist/blocks/attachments/index.js +96 -7
- package/dist/blocks/attachments/react/index.d.ts +53 -0
- package/dist/blocks/attachments/react/index.js +78 -0
- package/dist/blocks/attachments/react/server.d.ts +9 -0
- package/dist/blocks/attachments/react/server.js +10 -0
- package/dist/blocks/attachments/solid/index.d.ts +13 -0
- package/dist/blocks/attachments/solid/index.js +14 -0
- package/dist/blocks/attachments/svelte/index.d.ts +13 -0
- package/dist/blocks/attachments/svelte/index.js +14 -0
- package/dist/blocks/attachments/vue/index.d.ts +13 -0
- package/dist/blocks/attachments/vue/index.js +14 -0
- package/dist/blocks/audit/index.d.ts +14 -8
- package/dist/blocks/audit/index.js +9 -10
- package/dist/blocks/audit/react/index.d.ts +12 -7
- package/dist/blocks/audit/react/index.js +12 -10
- package/dist/blocks/audit/react/server.d.ts +1 -1
- package/dist/blocks/audit/solid/index.d.ts +3 -3
- package/dist/blocks/audit/solid/index.js +2 -2
- package/dist/blocks/audit/svelte/index.d.ts +3 -3
- package/dist/blocks/audit/svelte/index.js +2 -2
- package/dist/blocks/audit/vue/index.d.ts +3 -3
- package/dist/blocks/audit/vue/index.js +2 -2
- package/dist/blocks/billable-time/index.d.ts +203 -0
- package/dist/blocks/billable-time/index.js +260 -0
- package/dist/blocks/billing/index.d.ts +144 -53
- package/dist/blocks/billing/index.js +165 -47
- package/dist/blocks/billing/react/index.d.ts +19 -9
- package/dist/blocks/billing/react/index.js +12 -8
- package/dist/blocks/billing/react/server.d.ts +5 -2
- package/dist/blocks/billing/react/server.js +4 -1
- package/dist/blocks/billing/solid/index.d.ts +3 -3
- package/dist/blocks/billing/solid/index.js +2 -2
- package/dist/blocks/billing/svelte/index.d.ts +3 -3
- package/dist/blocks/billing/svelte/index.js +2 -2
- package/dist/blocks/billing/vue/index.d.ts +3 -3
- package/dist/blocks/billing/vue/index.js +2 -2
- package/dist/blocks/bookings/index.d.ts +19 -9
- package/dist/blocks/bookings/index.js +9 -7
- package/dist/blocks/bookings/react/index.d.ts +9 -4
- package/dist/blocks/bookings/react/index.js +12 -8
- package/dist/blocks/bookings/react/server.d.ts +4 -1
- package/dist/blocks/bookings/react/server.js +4 -1
- package/dist/blocks/bookings/solid/index.d.ts +3 -3
- package/dist/blocks/bookings/solid/index.js +2 -2
- package/dist/blocks/bookings/svelte/index.d.ts +3 -3
- package/dist/blocks/bookings/svelte/index.js +2 -2
- package/dist/blocks/bookings/vue/index.d.ts +3 -3
- package/dist/blocks/bookings/vue/index.js +2 -2
- package/dist/blocks/bulk/index.d.ts +27 -12
- package/dist/blocks/bulk/index.js +5 -5
- package/dist/blocks/calendar/index.d.ts +13 -5
- package/dist/blocks/calendar/index.js +113 -5
- package/dist/blocks/calendar/react/index.d.ts +5 -5
- package/dist/blocks/calendar/react/index.js +8 -8
- package/dist/blocks/calendar/react/server.d.ts +4 -1
- package/dist/blocks/calendar/react/server.js +4 -1
- package/dist/blocks/calendar/solid/index.d.ts +3 -3
- package/dist/blocks/calendar/solid/index.js +2 -2
- package/dist/blocks/calendar/svelte/index.d.ts +3 -3
- package/dist/blocks/calendar/svelte/index.js +2 -2
- package/dist/blocks/calendar/vue/index.d.ts +3 -3
- package/dist/blocks/calendar/vue/index.js +2 -2
- package/dist/blocks/catalog/index.d.ts +48 -36
- package/dist/blocks/catalog/index.js +49 -53
- package/dist/blocks/channels/index.d.ts +111 -0
- package/dist/blocks/channels/index.js +190 -0
- package/dist/blocks/collections/index.d.ts +101 -23
- package/dist/blocks/collections/index.js +88 -13
- package/dist/blocks/comments/index.d.ts +48 -47
- package/dist/blocks/comments/index.js +113 -16
- package/dist/blocks/comments/react/index.d.ts +17 -12
- package/dist/blocks/comments/react/index.js +38 -27
- package/dist/blocks/comments/react/server.d.ts +1 -1
- package/dist/blocks/comments/solid/index.d.ts +3 -3
- package/dist/blocks/comments/solid/index.js +2 -2
- package/dist/blocks/comments/svelte/index.d.ts +3 -3
- package/dist/blocks/comments/svelte/index.js +2 -2
- package/dist/blocks/comments/vue/index.d.ts +3 -3
- package/dist/blocks/comments/vue/index.js +2 -2
- package/dist/blocks/connectors/index.d.ts +4 -4
- package/dist/blocks/connectors/index.js +8 -9
- package/dist/blocks/contracts/index.d.ts +241 -0
- package/dist/blocks/contracts/index.js +361 -0
- package/dist/blocks/controls/index.d.ts +325 -0
- package/dist/blocks/controls/index.js +410 -0
- package/dist/blocks/courses/index.d.ts +341 -0
- package/dist/blocks/courses/index.js +445 -0
- package/dist/blocks/custom-fields/index.d.ts +50 -16
- package/dist/blocks/custom-fields/index.js +27 -22
- package/dist/blocks/data-lifecycle/index.d.ts +75 -51
- package/dist/blocks/data-lifecycle/index.js +17 -12
- package/dist/blocks/deals/index.d.ts +25 -45
- package/dist/blocks/deals/index.js +161 -71
- package/dist/blocks/dispatch/index.d.ts +327 -0
- package/dist/blocks/dispatch/index.js +406 -0
- package/dist/blocks/documents/index.d.ts +8 -5
- package/dist/blocks/documents/index.js +67 -8
- package/dist/blocks/domains/index.d.ts +35 -20
- package/dist/blocks/domains/index.js +9 -10
- package/dist/blocks/donations/index.d.ts +352 -0
- package/dist/blocks/donations/index.js +602 -0
- package/dist/blocks/drive/index.d.ts +91 -28
- package/dist/blocks/drive/index.js +71 -17
- package/dist/blocks/employees/index.d.ts +16 -190
- package/dist/blocks/employees/index.js +107 -38
- package/dist/blocks/engagements/index.d.ts +27 -111
- package/dist/blocks/engagements/index.js +285 -14
- package/dist/blocks/enrichment/index.d.ts +176 -0
- package/dist/blocks/enrichment/index.js +243 -0
- package/dist/blocks/enrollments/index.d.ts +184 -0
- package/dist/blocks/enrollments/index.js +173 -0
- package/dist/blocks/entitlements/index.d.ts +20 -14
- package/dist/blocks/entitlements/index.js +4 -4
- package/dist/blocks/entitlements/react/index.d.ts +10 -7
- package/dist/blocks/entitlements/react/index.js +7 -7
- package/dist/blocks/entitlements/react/server.d.ts +4 -1
- package/dist/blocks/entitlements/react/server.js +4 -1
- package/dist/blocks/entitlements/solid/index.d.ts +3 -3
- package/dist/blocks/entitlements/solid/index.js +2 -2
- package/dist/blocks/entitlements/svelte/index.d.ts +3 -3
- package/dist/blocks/entitlements/svelte/index.js +2 -2
- package/dist/blocks/entitlements/vue/index.d.ts +3 -3
- package/dist/blocks/entitlements/vue/index.js +2 -2
- package/dist/blocks/expenses/index.d.ts +214 -0
- package/dist/blocks/expenses/index.js +279 -0
- package/dist/blocks/field-history/index.d.ts +63 -0
- package/dist/blocks/field-history/index.js +48 -0
- package/dist/blocks/flags/index.d.ts +20 -14
- package/dist/blocks/flags/index.js +9 -10
- package/dist/blocks/forecasts/index.d.ts +119 -0
- package/dist/blocks/forecasts/index.js +129 -0
- package/dist/blocks/forms/index.d.ts +96 -148
- package/dist/blocks/forms/index.js +121 -157
- package/dist/blocks/forms/react/index.d.ts +9 -6
- package/dist/blocks/forms/react/index.js +10 -7
- package/dist/blocks/forms/react/server.d.ts +4 -1
- package/dist/blocks/forms/react/server.js +4 -1
- package/dist/blocks/forms/solid/index.d.ts +3 -3
- package/dist/blocks/forms/solid/index.js +2 -2
- package/dist/blocks/forms/svelte/index.d.ts +3 -3
- package/dist/blocks/forms/svelte/index.js +2 -2
- package/dist/blocks/forms/vue/index.d.ts +3 -3
- package/dist/blocks/forms/vue/index.js +2 -2
- package/dist/blocks/guests/index.d.ts +200 -0
- package/dist/blocks/guests/index.js +224 -0
- package/dist/blocks/hiring/index.d.ts +13 -13
- package/dist/blocks/hiring/index.js +9 -10
- package/dist/blocks/identities/index.d.ts +38 -20
- package/dist/blocks/identities/index.js +16 -11
- package/dist/blocks/imports/index.d.ts +30 -25
- package/dist/blocks/imports/index.js +19 -19
- package/dist/blocks/inbox/index.d.ts +9 -6
- package/dist/blocks/inbox/index.js +118 -54
- package/dist/blocks/inbox/react/index.d.ts +2 -2
- package/dist/blocks/inbox/react/index.js +15 -9
- package/dist/blocks/inbox/react/server.d.ts +12 -6
- package/dist/blocks/inbox/react/server.js +8 -2
- package/dist/blocks/inbox/solid/index.d.ts +6 -6
- package/dist/blocks/inbox/solid/index.js +2 -2
- package/dist/blocks/inbox/svelte/index.d.ts +6 -6
- package/dist/blocks/inbox/svelte/index.js +2 -2
- package/dist/blocks/inbox/vue/index.d.ts +6 -6
- package/dist/blocks/inbox/vue/index.js +2 -2
- package/dist/blocks/incidents/index.d.ts +337 -0
- package/dist/blocks/incidents/index.js +477 -0
- package/dist/blocks/index.d.ts +126 -11
- package/dist/blocks/index.js +171 -193
- package/dist/blocks/inventory/index.d.ts +36 -19
- package/dist/blocks/inventory/index.js +15 -10
- package/dist/blocks/invoices/index.d.ts +13 -13
- package/dist/blocks/invoices/index.js +11 -12
- package/dist/blocks/jobs/index.d.ts +123 -86
- package/dist/blocks/jobs/index.js +59 -49
- package/dist/blocks/knowledge/index.d.ts +3 -3
- package/dist/blocks/knowledge/index.js +3 -3
- package/dist/blocks/lead-scoring/index.d.ts +50 -0
- package/dist/blocks/lead-scoring/index.js +87 -0
- package/dist/blocks/leases/index.d.ts +278 -0
- package/dist/blocks/leases/index.js +319 -0
- package/dist/blocks/leave/index.d.ts +30 -15
- package/dist/blocks/leave/index.js +6 -7
- package/dist/blocks/ledger/index.d.ts +281 -0
- package/dist/blocks/ledger/index.js +229 -0
- package/dist/blocks/mail-sync/index.d.ts +37 -0
- package/dist/blocks/mail-sync/index.js +898 -0
- package/dist/blocks/memory/index.d.ts +4 -4
- package/dist/blocks/memory/index.js +7 -8
- package/dist/blocks/messaging/index.d.ts +86 -0
- package/dist/blocks/messaging/index.js +48 -0
- package/dist/blocks/messaging/react/index.d.ts +39 -0
- package/dist/blocks/messaging/react/index.js +80 -0
- package/dist/blocks/messaging/react/server.d.ts +12 -0
- package/dist/blocks/messaging/react/server.js +14 -0
- package/dist/blocks/messaging/solid/index.d.ts +20 -0
- package/dist/blocks/messaging/solid/index.js +23 -0
- package/dist/blocks/messaging/svelte/index.d.ts +20 -0
- package/dist/blocks/messaging/svelte/index.js +23 -0
- package/dist/blocks/messaging/vue/index.d.ts +20 -0
- package/dist/blocks/messaging/vue/index.js +23 -0
- package/dist/blocks/metrics/index.d.ts +36 -30
- package/dist/blocks/metrics/index.js +19 -20
- package/dist/blocks/mfa/index.d.ts +2 -2
- package/dist/blocks/mfa/index.js +2 -2
- package/dist/blocks/mfa/react/index.d.ts +7 -7
- package/dist/blocks/mfa/react/index.js +9 -9
- package/dist/blocks/mfa/react/server.d.ts +1 -1
- package/dist/blocks/mfa/react/server.js +1 -1
- package/dist/blocks/mfa/solid/index.d.ts +3 -3
- package/dist/blocks/mfa/solid/index.js +2 -2
- package/dist/blocks/mfa/svelte/index.d.ts +3 -3
- package/dist/blocks/mfa/svelte/index.js +2 -2
- package/dist/blocks/mfa/vue/index.d.ts +3 -3
- package/dist/blocks/mfa/vue/index.js +2 -2
- package/dist/blocks/moderation/index.d.ts +205 -0
- package/dist/blocks/moderation/index.js +199 -0
- package/dist/blocks/notifications/index.d.ts +132 -103
- package/dist/blocks/notifications/index.js +62 -48
- package/dist/blocks/notifications/react/index.d.ts +3 -3
- package/dist/blocks/notifications/react/index.js +5 -5
- package/dist/blocks/notifications/react/server.d.ts +5 -2
- package/dist/blocks/notifications/react/server.js +4 -1
- package/dist/blocks/notifications/solid/index.d.ts +3 -3
- package/dist/blocks/notifications/solid/index.js +2 -2
- package/dist/blocks/notifications/svelte/index.d.ts +3 -3
- package/dist/blocks/notifications/svelte/index.js +2 -2
- package/dist/blocks/notifications/vue/index.d.ts +3 -3
- package/dist/blocks/notifications/vue/index.js +2 -2
- package/dist/blocks/number-sequences/index.d.ts +15 -12
- package/dist/blocks/number-sequences/index.js +8 -5
- package/dist/blocks/oauth-server/index.d.ts +42 -21
- package/dist/blocks/oauth-server/index.js +16 -14
- package/dist/blocks/onboarding/index.d.ts +3 -3
- package/dist/blocks/onboarding/index.js +4 -4
- package/dist/blocks/onboarding/react/index.d.ts +10 -5
- package/dist/blocks/onboarding/react/index.js +10 -8
- package/dist/blocks/onboarding/react/server.d.ts +5 -2
- package/dist/blocks/onboarding/react/server.js +4 -1
- package/dist/blocks/onboarding/solid/index.d.ts +3 -3
- package/dist/blocks/onboarding/solid/index.js +2 -2
- package/dist/blocks/onboarding/svelte/index.d.ts +3 -3
- package/dist/blocks/onboarding/svelte/index.js +2 -2
- package/dist/blocks/onboarding/vue/index.d.ts +3 -3
- package/dist/blocks/onboarding/vue/index.js +2 -2
- package/dist/blocks/orders/index.d.ts +176 -31
- package/dist/blocks/orders/index.js +167 -25
- package/dist/blocks/organizations/index.d.ts +5 -5
- package/dist/blocks/organizations/index.js +6 -28
- package/dist/blocks/organizations/react/index.d.ts +40 -21
- package/dist/blocks/organizations/react/index.js +5 -5
- package/dist/blocks/organizations/react/server.d.ts +13 -4
- package/dist/blocks/organizations/react/server.js +12 -3
- package/dist/blocks/organizations/solid/index.d.ts +3 -3
- package/dist/blocks/organizations/solid/index.js +2 -2
- package/dist/blocks/organizations/svelte/index.d.ts +3 -3
- package/dist/blocks/organizations/svelte/index.js +2 -2
- package/dist/blocks/organizations/vue/index.d.ts +3 -3
- package/dist/blocks/organizations/vue/index.js +2 -2
- package/dist/blocks/outbox/index.d.ts +4 -4
- package/dist/blocks/outbox/index.js +21 -18
- package/dist/blocks/parties/index.d.ts +36 -35
- package/dist/blocks/parties/index.js +152 -52
- package/dist/blocks/passes/index.d.ts +308 -0
- package/dist/blocks/passes/index.js +411 -0
- package/dist/blocks/pipelines/index.d.ts +26 -17
- package/dist/blocks/pipelines/index.js +11 -12
- package/dist/blocks/posts/index.d.ts +190 -0
- package/dist/blocks/posts/index.js +230 -0
- package/dist/blocks/profiles/index.d.ts +23 -14
- package/dist/blocks/profiles/index.js +5 -6
- package/dist/blocks/promotions/index.d.ts +34 -16
- package/dist/blocks/promotions/index.js +12 -10
- package/dist/blocks/push/index.d.ts +43 -25
- package/dist/blocks/push/index.js +16 -17
- package/dist/blocks/quotes/index.d.ts +15 -12
- package/dist/blocks/quotes/index.js +9 -10
- package/dist/blocks/rank/index.d.ts +12 -12
- package/dist/blocks/rank/index.js +4 -4
- package/dist/blocks/reactions/index.d.ts +5 -5
- package/dist/blocks/reactions/index.js +4 -4
- package/dist/blocks/reactions/react/index.d.ts +20 -11
- package/dist/blocks/reactions/react/index.js +37 -26
- package/dist/blocks/reactions/react/server.d.ts +4 -1
- package/dist/blocks/reactions/react/server.js +4 -1
- package/dist/blocks/reactions/solid/index.d.ts +3 -3
- package/dist/blocks/reactions/solid/index.js +2 -2
- package/dist/blocks/reactions/svelte/index.d.ts +3 -3
- package/dist/blocks/reactions/svelte/index.js +2 -2
- package/dist/blocks/reactions/vue/index.d.ts +3 -3
- package/dist/blocks/reactions/vue/index.js +2 -2
- package/dist/blocks/relations/index.d.ts +82 -46
- package/dist/blocks/relations/index.js +120 -63
- package/dist/blocks/reminders/index.d.ts +45 -32
- package/dist/blocks/reminders/index.js +38 -33
- package/dist/blocks/reviews/index.d.ts +32 -17
- package/dist/blocks/reviews/index.js +6 -7
- package/dist/blocks/rules/index.d.ts +32 -26
- package/dist/blocks/rules/index.js +15 -15
- package/dist/blocks/rules/react/index.d.ts +9 -5
- package/dist/blocks/rules/react/index.js +12 -8
- package/dist/blocks/rules/solid/index.d.ts +3 -3
- package/dist/blocks/rules/solid/index.js +2 -2
- package/dist/blocks/rules/svelte/index.d.ts +3 -3
- package/dist/blocks/rules/svelte/index.js +2 -2
- package/dist/blocks/rules/vue/index.d.ts +3 -3
- package/dist/blocks/rules/vue/index.js +2 -2
- package/dist/blocks/saved-views/index.d.ts +3 -3
- package/dist/blocks/saved-views/index.js +3 -3
- package/dist/blocks/saved-views/react/index.d.ts +14 -8
- package/dist/blocks/saved-views/react/index.js +11 -8
- package/dist/blocks/saved-views/react/server.d.ts +5 -2
- package/dist/blocks/saved-views/react/server.js +4 -1
- package/dist/blocks/saved-views/solid/index.d.ts +3 -3
- package/dist/blocks/saved-views/solid/index.js +2 -2
- package/dist/blocks/saved-views/svelte/index.d.ts +3 -3
- package/dist/blocks/saved-views/svelte/index.js +2 -2
- package/dist/blocks/saved-views/vue/index.d.ts +3 -3
- package/dist/blocks/saved-views/vue/index.js +2 -2
- package/dist/blocks/scores/index.d.ts +50 -0
- package/dist/blocks/scores/index.js +40 -0
- package/dist/blocks/search/index.d.ts +12 -9
- package/dist/blocks/search/index.js +9 -10
- package/dist/blocks/search/react/index.d.ts +8 -5
- package/dist/blocks/search/react/index.js +6 -6
- package/dist/blocks/search/react/server.d.ts +5 -2
- package/dist/blocks/search/react/server.js +4 -1
- package/dist/blocks/search/solid/index.d.ts +3 -3
- package/dist/blocks/search/solid/index.js +2 -2
- package/dist/blocks/search/svelte/index.d.ts +3 -3
- package/dist/blocks/search/svelte/index.js +2 -2
- package/dist/blocks/search/vue/index.d.ts +3 -3
- package/dist/blocks/search/vue/index.js +2 -2
- package/dist/blocks/segments/index.d.ts +130 -0
- package/dist/blocks/segments/index.js +135 -0
- package/dist/blocks/sequences/index.d.ts +259 -0
- package/dist/blocks/sequences/index.js +370 -0
- package/dist/blocks/service-principals/index.d.ts +24 -18
- package/dist/blocks/service-principals/index.js +11 -9
- package/dist/blocks/sessions/index.d.ts +2 -2
- package/dist/blocks/sessions/index.js +2 -2
- package/dist/blocks/sessions/react/index.d.ts +10 -5
- package/dist/blocks/sessions/react/index.js +8 -6
- package/dist/blocks/sessions/react/server.d.ts +9 -3
- package/dist/blocks/sessions/react/server.js +8 -2
- package/dist/blocks/sessions/solid/index.d.ts +3 -3
- package/dist/blocks/sessions/solid/index.js +2 -2
- package/dist/blocks/sessions/svelte/index.d.ts +3 -3
- package/dist/blocks/sessions/svelte/index.js +2 -2
- package/dist/blocks/sessions/vue/index.d.ts +3 -3
- package/dist/blocks/sessions/vue/index.js +2 -2
- package/dist/blocks/settings/index.d.ts +6 -5
- package/dist/blocks/settings/index.js +7 -6
- package/dist/blocks/settings/react/index.d.ts +13 -7
- package/dist/blocks/settings/react/index.js +5 -5
- package/dist/blocks/settings/react/server.d.ts +5 -2
- package/dist/blocks/settings/react/server.js +4 -1
- package/dist/blocks/settings/solid/index.d.ts +3 -3
- package/dist/blocks/settings/solid/index.js +2 -2
- package/dist/blocks/settings/svelte/index.d.ts +3 -3
- package/dist/blocks/settings/svelte/index.js +2 -2
- package/dist/blocks/settings/vue/index.d.ts +3 -3
- package/dist/blocks/settings/vue/index.js +2 -2
- package/dist/blocks/share-links/index.d.ts +58 -23
- package/dist/blocks/share-links/index.js +74 -23
- package/dist/blocks/shared-signals/index.d.ts +82 -37
- package/dist/blocks/shared-signals/index.js +24 -19
- package/dist/blocks/shipments/index.d.ts +238 -0
- package/dist/blocks/shipments/index.js +540 -0
- package/dist/blocks/signatures/index.d.ts +151 -0
- package/dist/blocks/signatures/index.js +149 -0
- package/dist/blocks/signing-keys/index.d.ts +5 -5
- package/dist/blocks/signing-keys/index.js +5 -166
- package/dist/blocks/sla/index.d.ts +43 -31
- package/dist/blocks/sla/index.js +44 -15
- package/dist/blocks/sso/index.d.ts +35 -30
- package/dist/blocks/sso/index.js +31 -18
- package/dist/blocks/state-machine/index.d.ts +31 -22
- package/dist/blocks/state-machine/index.js +27 -27
- package/dist/blocks/subjects/index.d.ts +11 -0
- package/dist/blocks/subjects/index.js +21 -0
- package/dist/blocks/subjects/react/index.d.ts +31 -0
- package/dist/blocks/subjects/react/index.js +60 -0
- package/dist/blocks/subjects/react/server.d.ts +9 -0
- package/dist/blocks/subjects/react/server.js +12 -0
- package/dist/blocks/subjects/solid/index.d.ts +13 -0
- package/dist/blocks/subjects/solid/index.js +14 -0
- package/dist/blocks/subjects/svelte/index.d.ts +13 -0
- package/dist/blocks/subjects/svelte/index.js +14 -0
- package/dist/blocks/subjects/vue/index.d.ts +13 -0
- package/dist/blocks/subjects/vue/index.js +14 -0
- package/dist/blocks/tags/index.d.ts +37 -5
- package/dist/blocks/tags/index.js +50 -5
- package/dist/blocks/tags/react/index.d.ts +13 -12
- package/dist/blocks/tags/react/index.js +30 -24
- package/dist/blocks/tags/react/server.d.ts +1 -1
- package/dist/blocks/tags/solid/index.d.ts +3 -3
- package/dist/blocks/tags/solid/index.js +2 -2
- package/dist/blocks/tags/svelte/index.d.ts +3 -3
- package/dist/blocks/tags/svelte/index.js +2 -2
- package/dist/blocks/tags/vue/index.d.ts +3 -3
- package/dist/blocks/tags/vue/index.js +2 -2
- package/dist/blocks/targets/index.d.ts +13 -13
- package/dist/blocks/targets/index.js +7 -8
- package/dist/blocks/teams/index.d.ts +9 -9
- package/dist/blocks/teams/index.js +5 -5
- package/dist/blocks/templates/index.d.ts +67 -51
- package/dist/blocks/templates/index.js +23 -25
- package/dist/blocks/time-tracking/index.d.ts +63 -45
- package/dist/blocks/time-tracking/index.js +50 -47
- package/dist/blocks/trash/index.d.ts +13 -11
- package/dist/blocks/trash/index.js +5 -6
- package/dist/blocks/undo/index.d.ts +4 -4
- package/dist/blocks/undo/index.js +4 -4
- package/dist/blocks/undo/react/index.d.ts +3 -3
- package/dist/blocks/undo/react/index.js +4 -4
- package/dist/blocks/undo/react/server.d.ts +5 -2
- package/dist/blocks/undo/react/server.js +4 -1
- package/dist/blocks/undo/solid/index.d.ts +3 -3
- package/dist/blocks/undo/solid/index.js +2 -2
- package/dist/blocks/undo/svelte/index.d.ts +3 -3
- package/dist/blocks/undo/svelte/index.js +2 -2
- package/dist/blocks/undo/vue/index.d.ts +3 -3
- package/dist/blocks/undo/vue/index.js +2 -2
- package/dist/blocks/usage/index.d.ts +5 -5
- package/dist/blocks/usage/index.js +4 -4
- package/dist/blocks/usage/react/index.d.ts +12 -6
- package/dist/blocks/usage/react/index.js +8 -8
- package/dist/blocks/usage/react/server.d.ts +1 -1
- package/dist/blocks/usage/solid/index.d.ts +3 -3
- package/dist/blocks/usage/solid/index.js +2 -2
- package/dist/blocks/usage/svelte/index.d.ts +3 -3
- package/dist/blocks/usage/svelte/index.js +2 -2
- package/dist/blocks/usage/vue/index.d.ts +3 -3
- package/dist/blocks/usage/vue/index.js +2 -2
- package/dist/blocks/vercel-marketplace/index.d.ts +252 -17
- package/dist/blocks/vercel-marketplace/index.js +489 -57
- package/dist/blocks/versions/index.d.ts +55 -31
- package/dist/blocks/versions/index.js +75 -30
- package/dist/blocks/waitlist/index.d.ts +31 -18
- package/dist/blocks/waitlist/index.js +10 -8
- package/dist/blocks/webhooks/index.d.ts +126 -89
- package/dist/blocks/webhooks/index.js +72 -62
- package/dist/blocks/work-items/index.d.ts +63 -184
- package/dist/blocks/work-items/index.js +162 -36
- package/dist/blocks/workflow-builder/index.d.ts +15 -13
- package/dist/blocks/workflow-builder/index.js +11 -8
- package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/react/index.js +8 -8
- package/dist/blocks/workflow-builder/react/server.d.ts +8 -2
- package/dist/blocks/workflow-builder/react/server.js +8 -2
- package/dist/blocks/workflow-builder/solid/index.d.ts +3 -3
- package/dist/blocks/workflow-builder/solid/index.js +2 -2
- package/dist/blocks/workflow-builder/svelte/index.d.ts +3 -3
- package/dist/blocks/workflow-builder/svelte/index.js +2 -2
- package/dist/blocks/workflow-builder/vue/index.d.ts +3 -3
- package/dist/blocks/workflow-builder/vue/index.js +2 -2
- package/dist/blocks/workflows/index.d.ts +5 -5
- package/dist/blocks/workflows/index.js +5 -5
- package/dist/blocks/workflows/react/index.d.ts +13 -6
- package/dist/blocks/workflows/react/index.js +7 -7
- package/dist/blocks/workflows/react/server.d.ts +8 -2
- package/dist/blocks/workflows/react/server.js +8 -2
- package/dist/blocks/workflows/solid/index.d.ts +3 -3
- package/dist/blocks/workflows/solid/index.js +2 -2
- package/dist/blocks/workflows/svelte/index.d.ts +3 -3
- package/dist/blocks/workflows/svelte/index.js +2 -2
- package/dist/blocks/workflows/vue/index.d.ts +3 -3
- package/dist/blocks/workflows/vue/index.js +2 -2
- package/dist/bookings-BB5lFlNO.js +310 -0
- package/dist/bookings-CC7IeiRa.d.ts +290 -0
- package/dist/bucket-TkB7_xv8.d.ts +667 -0
- package/dist/build-DCfpwg78.js +1839 -0
- package/dist/build-g9wTbQdp.js +703 -0
- package/dist/calendar-T3Vdpq7E.js +952 -0
- package/dist/carrier-C7Q_21Kd.d.ts +169 -0
- package/dist/channel-BjvGO39m.d.ts +77 -0
- package/dist/channels-CfcFPuo_.js +114 -0
- package/dist/chat-sdk/index.d.ts +188 -80
- package/dist/chat-sdk/index.js +102 -57
- package/dist/chat-sdk/react/index.d.ts +2 -2
- package/dist/chat-sdk/react/server.d.ts +2 -2
- package/dist/claims-Bp9My7XP.js +88 -0
- package/dist/claims-T8TWZ53E.js +63 -0
- package/dist/cli/add-Bf3kE6PY.js +75 -0
- package/dist/cli/add-CYh6Sxk1.js +674 -0
- package/dist/cli/add-Dg40eFKE.js +1 -0
- package/dist/cli/adopt-B0vrj-4B.js +421 -0
- package/dist/cli/adopt-DJR1k3lS.js +1 -0
- package/dist/cli/agent-CbuPvI2x.js +185 -0
- package/dist/cli/apply-DUQ-5LC6.js +329 -0
- package/dist/cli/bin.js +3 -3
- package/dist/cli/blocks-DzgYfjVv.js +124 -0
- package/dist/cli/blocks-gGupqvBH.js +1 -0
- package/dist/cli/cache-C3K_wOE2.js +536 -0
- package/dist/cli/catalog-CNM0ViIh.js +199 -0
- package/dist/cli/codemod-Dz4R-tVY.js +1127 -0
- package/dist/cli/command-33pu13LT.js +963 -0
- package/dist/cli/completion-6M6Hr8TL.js +211 -0
- package/dist/cli/completion-Bqu8yq0q.js +1 -0
- package/dist/cli/completion-Ddr3yqd3.js +30 -0
- package/dist/cli/config-B31tIvAl.js +42 -0
- package/dist/cli/config-CjgXMZW2.js +1522 -0
- package/dist/cli/config-D9k5ckqV.js +1 -0
- package/dist/cli/config-edit-D46H0UHp.js +613 -0
- package/dist/cli/db-CQCLx7cx.js +78 -0
- package/dist/cli/db-CeagtENM.js +473 -0
- package/dist/cli/design-edit-B40ljpGZ.js +205 -0
- package/dist/cli/detect-RApSAA8v.js +84 -0
- package/dist/cli/dist-DSwzLVAG.js +129 -0
- package/dist/cli/doctor-COGJJ1gy.js +3898 -0
- package/dist/cli/emit-DbQeLlHt.js +1123 -0
- package/dist/cli/env-Ba-pOD3a.js +1 -0
- package/dist/cli/env-C-Bl6Awn.js +1 -0
- package/dist/cli/env-DMgjB_4y.js +1114 -0
- package/dist/cli/env-DlgfvI8U.js +143 -0
- package/dist/cli/errors-BTe6A15O.js +98 -0
- package/dist/cli/exec--Q1ZEWUW.js +463 -0
- package/dist/cli/files-C5JfVnj5.js +972 -0
- package/dist/cli/fresh-import-DzgsGHkX.js +40 -0
- package/dist/cli/gen-DHW1qENn.js +307 -0
- package/dist/cli/index.d.ts +252 -177
- package/dist/cli/index.js +16 -16
- package/dist/cli/init-CZifzAUD.js +397 -0
- package/dist/cli/introspect-Dfwu5vAg.js +51 -0
- package/dist/cli/io-DH1kcmmP.js +37 -0
- package/dist/cli/keys-iJs_1WT8.js +106 -0
- package/dist/cli/live-1eL2MIkS.js +344 -0
- package/dist/cli/mcp-CaFW6uKU.js +240 -0
- package/dist/cli/metadata-DkOQHZoH.js +146 -0
- package/dist/cli/migration-safety-BsCKKxPf.js +305 -0
- package/dist/cli/module-migration-CbX-jRhV.js +606 -0
- package/dist/cli/moved-CdNtCf4t.js +161 -0
- package/dist/cli/parse-CRZLku1b.js +182 -0
- package/dist/cli/preset-C4fagbhZ.js +130 -0
- package/dist/cli/prompts-jqnr94b9.js +1140 -0
- package/dist/cli/redact-KGAk2Ul9.js +38 -0
- package/dist/cli/run-CE2s5TDh.js +711 -0
- package/dist/cli/run-Du5XPOCv.js +63 -0
- package/dist/cli/run-KXjrgNCH.js +2378 -0
- package/dist/cli/scaffold-CPH8sEhw.js +901 -0
- package/dist/cli/scaffold-DS6g3INp.js +1 -0
- package/dist/cli/seed-D6V-T5Af.js +188 -0
- package/dist/cli/seed-DPQaA8aP.js +1 -0
- package/dist/cli/shared-CCpxS5if.js +151 -0
- package/dist/cli/skills-Bz4INB8f.js +121 -0
- package/dist/cli/snapshot-Dkwxc1uV.js +351 -0
- package/dist/cli/source-args-DZV4RnZL.js +59 -0
- package/dist/cli/spec-B3Tbc7Dm.js +7534 -0
- package/dist/cli/spec-Cv1GYrcW.js +1 -0
- package/dist/cli/sql-C58MS9DI.js +348 -0
- package/dist/cli/sql-DVPw5tvO.js +2 -0
- package/dist/cli/stack-_F_JhllX.js +135 -0
- package/dist/cli/stack-env-6hS-WEmh.js +93 -0
- package/dist/cli/stack-status-B_Ipd_-z.js +46 -0
- package/dist/cli/stacks-BYlQ96WS.js +232 -0
- package/dist/cli/style-Bm2X5JrN.js +35 -0
- package/dist/cli/supabase-toml-CncmQbO0.js +1164 -0
- package/dist/cli/sync-CjkKpI6d.js +91 -0
- package/dist/cli/topics-BpdnYmWb.js +30 -0
- package/dist/cli/typegen-F9GEjpvD.js +502 -0
- package/dist/cli/validate-B3lF3-jB.js +7522 -0
- package/dist/cli/version-CTqnp3HO.js +4 -0
- package/dist/cli/write-3qdrpS1v.js +201 -0
- package/dist/client/index.d.ts +6 -6
- package/dist/client/index.js +19 -12
- package/dist/client/native/index.d.ts +87 -53
- package/dist/client/native/index.js +65 -43
- package/dist/client--tyFmxDT.js +52 -0
- package/dist/client-7_4Y21ue.d.ts +122 -0
- package/dist/client-B1cjaIfv.js +116 -0
- package/dist/client-B2GCMvfd.d.ts +451 -0
- package/dist/client-B8cHiZfF.js +67 -0
- package/dist/client-BIMg9IiF.d.ts +349 -0
- package/dist/client-BKGVUgo7.js +380 -0
- package/dist/client-BNaOcfeH.js +58 -0
- package/dist/client-BQseXods.d.ts +309 -0
- package/dist/client-BSnf6fn6.d.ts +59 -0
- package/dist/client-BW3-RUbq.js +235 -0
- package/dist/client-BYAY7lLs.d.ts +137 -0
- package/dist/client-BcXmbm4f.js +173 -0
- package/dist/client-BgmVu505.js +167 -0
- package/dist/client-Bj0xrUzr.js +437 -0
- package/dist/client-Bn0qqRBg.d.ts +37 -0
- package/dist/client-Bni68sve.d.ts +136 -0
- package/dist/client-BrtwaIBh.d.ts +74 -0
- package/dist/client-BtRx0-kn.js +82 -0
- package/dist/client-BteuBPIy.js +337 -0
- package/dist/client-C1TxDBgX.js +111 -0
- package/dist/client-C1zOmnS8.js +89 -0
- package/dist/client-C56l0MnY.d.ts +177 -0
- package/dist/client-CA6KuLDu.d.ts +223 -0
- package/dist/client-CBcq7LBg.d.ts +178 -0
- package/dist/client-CGJrSTMZ.js +234 -0
- package/dist/client-CLIBcMzL.d.ts +116 -0
- package/dist/client-COuIfjbB.d.ts +46 -0
- package/dist/client-CVToJ4uI.js +84 -0
- package/dist/client-C_0XZieg.js +287 -0
- package/dist/client-CebKlRU7.js +157 -0
- package/dist/client-ChOJ4v0D.js +137 -0
- package/dist/client-CnENAa0E.d.ts +69 -0
- package/dist/client-Cp79i2ZE.d.ts +152 -0
- package/dist/client-CwKsEl6q.js +99 -0
- package/dist/client-D-LPdEDQ.d.ts +43 -0
- package/dist/client-D6gD9qt9.d.ts +45 -0
- package/dist/client-DBwWXQKF.d.ts +132 -0
- package/dist/client-DD3EcytK.js +65 -0
- package/dist/client-DScMvaty.js +38 -0
- package/dist/client-DT6Tvudr.d.ts +54 -0
- package/dist/client-DU1_Jq4e.d.ts +116 -0
- package/dist/client-Dd-a0tup.d.ts +475 -0
- package/dist/client-Dh8zXgpq.js +1060 -0
- package/dist/client-DkI0oyR7.js +76 -0
- package/dist/client-DmjG9PHH.js +211 -0
- package/dist/client-DnUFHmje.js +129 -0
- package/dist/client-Do5hykMK.d.ts +38 -0
- package/dist/client-DzOL3lsV.d.ts +110 -0
- package/dist/client-DzukpHS1.d.ts +165 -0
- package/dist/client-LngH55pZ.d.ts +83 -0
- package/dist/client-PPSwiJaK.js +291 -0
- package/dist/client-RoAuPQNB.d.ts +103 -0
- package/dist/client-WzuQExHk.js +253 -0
- package/dist/client-Y_HnZGF4.js +51 -0
- package/dist/client-bDXsvSXp.d.ts +90 -0
- package/dist/client-bx3Bk7c5.d.ts +64 -0
- package/dist/client-jgDU7Roj.d.ts +144 -0
- package/dist/client-kRvHKAKS.js +60 -0
- package/dist/client-pxXoQOdC.js +40 -0
- package/dist/client-yIxEJwTK.js +121 -0
- package/dist/clone-CkG0-hlI.js +33 -0
- package/dist/cloud-event-SPyXMdcd.d.ts +64 -0
- package/dist/cloud-event-XsM53POL.js +63 -0
- package/dist/codecs-CQrX3ZW4.js +358 -0
- package/dist/codecs-DAu2sYWn.d.ts +222 -0
- package/dist/comments-CB8pFSV1.js +142 -0
- package/dist/commerce/index.d.ts +39 -33
- package/dist/commerce/index.js +38 -28
- package/dist/compiler-BCyHFI6n.d.ts +14 -0
- package/dist/compose--4D1FoPN.js +53 -0
- package/dist/composite-Dv6o2BSw.js +130 -0
- package/dist/composite-KllwFim2.d.ts +82 -0
- package/dist/config/index.d.ts +7 -7
- package/dist/config/index.js +8 -8
- package/dist/config-BuOz_O-y.d.ts +2152 -0
- package/dist/config-Dh4D8lBa.js +13931 -0
- package/dist/config-Dn0cC3bM.js +1093 -0
- package/dist/connector-BdCE4Efp.d.ts +164 -0
- package/dist/connectors-DDiSNvkF.d.ts +147 -0
- package/dist/context-9Q23weHu.d.ts +524 -0
- package/dist/context-CMxVnPMY.js +9 -0
- package/dist/context-CYquqpA6.js +41 -0
- package/dist/controller-BEliOBOv.js +79 -0
- package/dist/controller-CSsC9s3s.js +73 -0
- package/dist/controller-DAD4hbl4.d.ts +52 -0
- package/dist/create/index.d.ts +309 -175
- package/dist/create/index.js +441 -299
- package/dist/create/lite/index.d.ts +19 -12
- package/dist/create/lite/index.js +10 -9
- package/dist/create/oauth/index.d.ts +2 -0
- package/dist/create/oauth/index.js +101 -0
- package/dist/create/supabase/index.d.ts +13 -34
- package/dist/create/supabase/index.js +16 -84
- package/dist/create-blocks-kPUhCvje.js +217 -0
- package/dist/credentials/index.d.ts +12 -12
- package/dist/credentials/index.js +12 -13
- package/dist/cron-_i5pBGkY.js +148 -0
- package/dist/cron-route-Y0eJ-FNi.js +24 -0
- package/dist/csv-2rXGPNtP.js +89 -0
- package/dist/csv-DhHQS2x_.d.ts +28 -0
- package/dist/db-exception-Lngc1W49.js +31 -0
- package/dist/deal-forecast-CBlp20PY.js +39 -0
- package/dist/deal-forecast-LwO-Z4_C.d.ts +23 -0
- package/dist/define-DQznpZYl.js +2023 -0
- package/dist/define-Dw7pRO4h.d.ts +1123 -0
- package/dist/define-block-COpcS6aT.d.ts +1338 -0
- package/dist/define-block-Dze77QTw.js +56 -0
- package/dist/delegation-CeXm9AJ3.js +146 -0
- package/dist/delivery-Bm0jxmzI.js +29 -0
- package/dist/delivery-n6lZGuGx.d.ts +71 -0
- package/dist/documents-kgDOHUfn.d.ts +152 -0
- package/dist/edge/index.d.ts +67 -40
- package/dist/edge/index.js +20 -17
- package/dist/elysia/index.d.ts +16 -14
- package/dist/elysia/index.js +11 -9
- package/dist/email-tt2QqiSc.d.ts +42 -0
- package/dist/embeddings-CcRP-cMN.d.ts +78 -0
- package/dist/embeddings-vVzseUw0.js +128 -0
- package/dist/employees-Dwyvxs4r.d.ts +180 -0
- package/dist/ended--Bd_Q6uL.d.ts +76 -0
- package/dist/engagements-CsJhf2OM.d.ts +179 -0
- package/dist/entitlements-B_ttRvI6.js +45 -0
- package/dist/entitlements-DDevu4ZE.d.ts +54 -0
- package/dist/entity-form-B67vq97h.d.ts +82 -0
- package/dist/entity-naming-DLDhHTbK.js +131 -0
- package/dist/entity-schema-BXXC1NnT.js +39 -0
- package/dist/env/index.d.ts +1 -1
- package/dist/env/index.js +16 -4
- package/dist/envelope-DCfHtVtZ.js +90 -0
- package/dist/errors-03ysrOt4.js +325 -0
- package/dist/errors-DZx8w-MH.js +44 -0
- package/dist/escape-like-BfXS-iVe.d.ts +30 -0
- package/dist/eve/index.d.ts +40 -22
- package/dist/eve/index.js +35 -26
- package/dist/eve-BlJI8ZXL.d.ts +157 -0
- package/dist/event-calendar-D3SVa3AE.d.ts +65 -0
- package/dist/event-map-CtPFhcOp.js +19 -0
- package/dist/events/index.d.ts +5 -4
- package/dist/events/index.js +11 -10
- package/dist/events-D6IZ5CE8.js +82 -0
- package/dist/events-DbLjvxDX.d.ts +852 -0
- package/dist/events-SqJLbb8q.js +24 -0
- package/dist/executor-BDAGTc_O.js +207 -0
- package/dist/executor-BElVQpaB.d.ts +188 -0
- package/dist/executor-CPyrQdjh.d.ts +700 -0
- package/dist/executor-CsTaO3AT.d.ts +37 -0
- package/dist/executor-DQoczQZJ.d.ts +104 -0
- package/dist/executor-QtVn0axs.js +147 -0
- package/dist/executor-o9HkOJ0m.js +869 -0
- package/dist/expo/index.d.ts +37 -26
- package/dist/expo/index.js +18 -15
- package/dist/expo-sqlite/index.d.ts +20 -17
- package/dist/expo-sqlite/index.js +19 -13
- package/dist/feature-BBLdbGu7.js +224 -0
- package/dist/field-errors-vshYTVKr.d.ts +166 -0
- package/dist/field-formats-C6QKA3UR.js +102 -0
- package/dist/field-formats-DbjaDXoZ.d.ts +39 -0
- package/dist/fields-CanaxA0U.d.ts +75 -0
- package/dist/fields-DK30XCgc.js +107 -0
- package/dist/filter-evaluate-C3i2bGfk.d.ts +37 -0
- package/dist/filter-evaluate-CRDXv0Dl.js +217 -0
- package/dist/filter-query-D4ZSwbcJ.js +524 -0
- package/dist/filter-query-o3b_GuyC.d.ts +133 -0
- package/dist/flags-BTDPaN11.d.ts +246 -0
- package/dist/flags-BhYByvP1.js +279 -0
- package/dist/flags-sdk/index.d.ts +13 -13
- package/dist/flags-sdk/index.js +18 -15
- package/dist/flows/index.d.ts +247 -0
- package/dist/flows/index.js +229 -0
- package/dist/form-definition-BTpM_tz1.js +363 -0
- package/dist/form-definition-BjEtH8BT.d.ts +119 -0
- package/dist/format-AYHceC2m.d.ts +79 -0
- package/dist/framework-CXoyWGgd.js +57 -0
- package/dist/framework-FxfJpyoF.d.ts +41 -0
- package/dist/function-contract-pEmsaUIf.js +8 -0
- package/dist/function-contract-vPqwt1j4.d.ts +27 -0
- package/dist/gateway-DI8dbOml.d.ts +115 -0
- package/dist/gateway-options-BlVCqgb8.d.ts +29 -0
- package/dist/gateway-options-Cl74B7k6.js +27 -0
- package/dist/graph-B4eubUQG.js +365 -0
- package/dist/guest-actions-1T1DeS5Y.d.ts +5 -0
- package/dist/guest-actions-B7zdhfnh.js +9 -0
- package/dist/h3/index.d.ts +19 -12
- package/dist/h3/index.js +15 -11
- package/dist/h3/v1/index.d.ts +34 -24
- package/dist/h3/v1/index.js +23 -19
- package/dist/hmac-B3CTTlfv.js +23 -0
- package/dist/hono/index.d.ts +54 -36
- package/dist/hono/index.js +18 -18
- package/dist/http-51t9xppD.js +28 -0
- package/dist/http-BjjojWg3.js +40 -0
- package/dist/http-DzbloBR-.js +141 -0
- package/dist/image-url-_d7xYsXK.js +84 -0
- package/dist/impersonation-CZD9AOAk.js +62 -0
- package/dist/impersonation-YTa9dZUv.d.ts +28 -0
- package/dist/inbox-BPBb6etH.d.ts +321 -0
- package/dist/index-BSUX4dlB.d.ts +305 -0
- package/dist/index-BgSuw4CC.d.ts +151 -0
- package/dist/index-C7CrdGgz.d.ts +562 -0
- package/dist/index-CvxK2BZS.d.ts +847 -0
- package/dist/index-CxZQgNVE.d.ts +62 -0
- package/dist/index-D4420jLW.d.ts +66 -0
- package/dist/index-DK-YTWLd.d.ts +443 -0
- package/dist/index-DbXWcrOI.d.ts +577 -0
- package/dist/index-DbyDZZlc.d.ts +53 -0
- package/dist/index-NRMMhhEi.d.ts +104 -0
- package/dist/index-U0o7kU0s.d.ts +69 -0
- package/dist/index-WEafENqH.d.ts +149 -0
- package/dist/index-X2fkPUwb.d.ts +51 -0
- package/dist/index-Yep7auV-.d.ts +287 -0
- package/dist/index-eTY4kJzo.d.ts +163 -0
- package/dist/index.d.ts +35 -99
- package/dist/index.js +24 -19
- package/dist/invalidate-BLiBFbLy.d.ts +19 -0
- package/dist/iso4217-B-durg_y.js +176 -0
- package/dist/json-DaByVJpw.js +22 -0
- package/dist/json-schema-DWDTfD8J.js +888 -0
- package/dist/jwks-cache-CRymV-Dr.js +49 -0
- package/dist/jws-D0toeQlA.d.ts +66 -0
- package/dist/jws-DOgHJKHb.js +205 -0
- package/dist/kit-Ct4Z6GIO.js +127 -0
- package/dist/kit-DKfbNTAA.d.ts +94 -0
- package/dist/knowledge-BKGrXdS_.js +272 -0
- package/dist/knowledge-CFkCRxO9.d.ts +202 -0
- package/dist/lint/index.d.ts +6 -6
- package/dist/lint/index.js +9 -6
- package/dist/list/index.d.ts +3 -3
- package/dist/list/index.js +3 -3
- package/dist/list-query-BtluNnYk.d.ts +222 -0
- package/dist/list-query-CuS1w2Af.js +559 -0
- package/dist/live-CZtRMh62.js +246 -0
- package/dist/management-wtecfrNf.d.ts +57 -0
- package/dist/mcp/index.d.ts +70 -42
- package/dist/mcp/index.js +53 -45
- package/dist/mcp/sdk/index.d.ts +37 -25
- package/dist/mcp/sdk/index.js +16 -13
- package/dist/mentions-ByYnRNIG.js +114 -0
- package/dist/message-Bg4TKA12.d.ts +99 -0
- package/dist/messages-DNzIVvgN.js +492 -0
- package/dist/messaging-BC-P-yAv.js +329 -0
- package/dist/messaging-CZ6aWb10.d.ts +297 -0
- package/dist/metric-definition-EAYI1r2n.d.ts +69 -0
- package/dist/mfa-wrx1rqJT.d.ts +36 -0
- package/dist/model-Btl8X9cs.d.ts +326 -0
- package/dist/model-messages-D-jVOIOK.js +206 -0
- package/dist/model-messages-DrR4lZ_c.d.ts +34 -0
- package/dist/money-BNRdJQzA.d.ts +91 -0
- package/dist/money-BZl985O-.js +197 -0
- package/dist/money-codec-jMP0PQLZ.js +41 -0
- package/dist/my-work-kinds-BU3SlA-6.js +11 -0
- package/dist/nestjs/index.d.ts +32 -17
- package/dist/nestjs/index.js +27 -18
- package/dist/next/client/index.d.ts +8 -7
- package/dist/next/client/index.js +8 -7
- package/dist/next/image/index.d.ts +8 -6
- package/dist/next/image/index.js +7 -5
- package/dist/next/index.d.ts +342 -110
- package/dist/next/index.js +225 -45
- package/dist/node/index.d.ts +3 -3
- package/dist/node/index.js +33 -23
- package/dist/node-headers-BPtMP4_V.d.ts +27 -0
- package/dist/nuxt/index.d.ts +7 -6
- package/dist/nuxt/index.js +7 -6
- package/dist/onboarding-CGMuX7sP.js +68 -0
- package/dist/openapi/index.d.ts +4 -3
- package/dist/openapi/index.js +10 -7
- package/dist/operations-DVHRHvv6.js +29 -0
- package/dist/operations-nWYRexee.d.ts +6 -0
- package/dist/optional-peer-C1NbBRJm.js +32 -0
- package/dist/options-289GJc2l.d.ts +52 -0
- package/dist/options-2EMA_x6_.js +16 -0
- package/dist/options-63AKQNv0.js +5 -0
- package/dist/options-70OsM-wK.js +10 -0
- package/dist/options-9gvPo1BC.js +8 -0
- package/dist/options-B5VUf4IT.js +8 -0
- package/dist/options-BPDiwSa-.js +5 -0
- package/dist/options-BYOtaF7w.js +5 -0
- package/dist/options-BZOliZvb.js +9 -0
- package/dist/options-BjtrC7o6.js +8 -0
- package/dist/options-BkpqTGrJ.js +8 -0
- package/dist/options-Bpl-WFPk.js +15 -0
- package/dist/options-Br1Xi2Hw.js +9 -0
- package/dist/options-CF7nRWXS.js +5 -0
- package/dist/options-CSCXNYJO.d.ts +8 -0
- package/dist/options-CYV4iZiQ.js +5 -0
- package/dist/options-CalPr6kN.d.ts +12 -0
- package/dist/options-CfxBliP6.d.ts +17 -0
- package/dist/options-CmoJsd4V.d.ts +8 -0
- package/dist/options-Cyu0hgmN.js +9 -0
- package/dist/options-D0bzZx9a.d.ts +10 -0
- package/dist/options-D1hSuf50.d.ts +12 -0
- package/dist/options-D4aD9qwB.js +5 -0
- package/dist/options-D65jzn7S.js +5 -0
- package/dist/options-D7sgG1bQ.js +16 -0
- package/dist/options-DJ-aYPVN.js +5 -0
- package/dist/options-DJm31rsi.d.ts +16 -0
- package/dist/options-DWML05Cp.js +5 -0
- package/dist/options-DXuA4JVa.d.ts +15 -0
- package/dist/options-DZupPoI0.d.ts +10 -0
- package/dist/options-DlohRAYd.d.ts +13 -0
- package/dist/options-Dm-2crCx.d.ts +273 -0
- package/dist/options-DrSkIBCD.js +9 -0
- package/dist/options-DujalSfR.js +10 -0
- package/dist/options-Dz3hJxUw.d.ts +10 -0
- package/dist/options-E7KcmHQv.js +8 -0
- package/dist/options-IHPg8ZoA.js +5 -0
- package/dist/options-MQfTGMgP.d.ts +14 -0
- package/dist/options-OMAUVcKK.d.ts +10 -0
- package/dist/options-a-28mlYT.js +9 -0
- package/dist/options-o2kfYU2x.js +8 -0
- package/dist/options-t_O5ldT6.js +5 -0
- package/dist/options-te6d5-yz.d.ts +19 -0
- package/dist/options-xD4_FRUq.js +10 -0
- package/dist/options-zkyhM3qi.js +8 -0
- package/dist/organizations-DtehZg3J.js +401 -0
- package/dist/orpc/index.d.ts +109 -38
- package/dist/orpc/index.js +53 -18
- package/dist/otel/index.d.ts +19 -16
- package/dist/otel/index.js +22 -19
- package/dist/outbox-CsF_iKjx.d.ts +199 -0
- package/dist/overlay/index.d.ts +71 -55
- package/dist/overlay/index.js +48 -41
- package/dist/payments-BtScsgPS.js +16 -0
- package/dist/payments-CBzQIjoX.d.ts +114 -0
- package/dist/permissions-BetA_Fo_.js +34 -0
- package/dist/pg-error-B5QLDcbG.js +26 -0
- package/dist/plugin-Ar5546xh.d.ts +202 -0
- package/dist/plugin-D9bYbYli.js +45 -0
- package/dist/plugins/actor/index.d.ts +9 -6
- package/dist/plugins/actor/index.js +6 -6
- package/dist/plugins/rules/index.d.ts +15 -15
- package/dist/plugins/rules/index.js +13 -7
- package/dist/plugins/soft-delete/index.d.ts +7 -7
- package/dist/plugins/soft-delete/index.js +7 -7
- package/dist/plugins/tenant/index.d.ts +16 -11
- package/dist/plugins/tenant/index.js +9 -10
- package/dist/plugins/timestamps/index.d.ts +3 -3
- package/dist/plugins/timestamps/index.js +4 -4
- package/dist/plugins/validation/index.d.ts +4 -4
- package/dist/plugins/validation/index.js +5 -5
- package/dist/pool-CRkU15dA.d.ts +123 -0
- package/dist/pool-errors-B17BQRW-.js +27 -0
- package/dist/ports-DsJicwI2.d.ts +89 -0
- package/dist/ports-yajgT0t0.js +139 -0
- package/dist/postgres/index.d.ts +15 -15
- package/dist/postgres/index.js +14 -8
- package/dist/postgrest-DHLlN2nS.d.ts +53 -0
- package/dist/powersync/index.d.ts +13 -14
- package/dist/powersync/index.js +65 -36
- package/dist/powersync/react/index.d.ts +13 -12
- package/dist/powersync/react/index.js +15 -11
- package/dist/preset/index.d.ts +4 -4
- package/dist/preset/index.js +4 -4
- package/dist/preset-DzcQ5CQM.js +841 -0
- package/dist/problem-BWElIgIb.js +162 -0
- package/dist/problem-DpHB7tWl.d.ts +79 -0
- package/dist/provider-DmiaI1qt.d.ts +112 -0
- package/dist/provider-EJ0-5GwJ.js +57 -0
- package/dist/push-token-BxKmYhwk.d.ts +24 -0
- package/dist/queries-Dw8y9bvz.js +245 -0
- package/dist/query/index.d.ts +4 -4
- package/dist/query/index.js +291 -3
- package/dist/rank-result-C_sHjkiz.js +18 -0
- package/dist/rank-result-DwR0FawB.d.ts +14 -0
- package/dist/rate-limit-B_U12PdL.js +49 -0
- package/dist/rate-limit-CrOuXfjj.d.ts +50 -0
- package/dist/rate-limit-DExDw3Cy.js +327 -0
- package/dist/ratelimit-headers-kEcXyO3H.js +62 -0
- package/dist/react/index.d.ts +11 -11
- package/dist/react/index.js +5 -5
- package/dist/react/native/index.d.ts +36 -21
- package/dist/react/native/index.js +32 -20
- package/dist/react/server.d.ts +77 -21
- package/dist/react/server.js +70 -14
- package/dist/react/session.d.ts +9 -7
- package/dist/react/session.js +7 -5
- package/dist/react-28VgUbm9.js +852 -0
- package/dist/react-BKCnIuZs.js +79 -0
- package/dist/react-controller-CKSdtJ10.js +43 -0
- package/dist/react-env-CfA3EdBH.js +20 -0
- package/dist/react-router/index.d.ts +35 -25
- package/dist/react-router/index.js +14 -13
- package/dist/read-set-BAR84kPC.js +199 -0
- package/dist/realtime/index.d.ts +8 -8
- package/dist/realtime/index.js +37 -5
- package/dist/realtime-status-BhNkb-Ow.d.ts +8 -0
- package/dist/realtime-status-asHvhiOh.js +11 -0
- package/dist/recordings-DgDu7AOt.d.ts +119 -0
- package/dist/records/index.d.ts +83 -0
- package/dist/records/index.js +315 -0
- package/dist/refusal-DXydjgsS.js +64 -0
- package/dist/refusal-efy5bZMd.d.ts +32 -0
- package/dist/resolve-CzUKTIMq.d.ts +289 -0
- package/dist/resolve-DAYdcs22.js +892 -0
- package/dist/resolved-names-Dr7brlLL.js +133 -0
- package/dist/resource-BRRU-A7j.js +91 -0
- package/dist/resource-DYDEnww-.d.ts +115 -0
- package/dist/resource-Dk_JYsOt.js +469 -0
- package/dist/resource-execute-bT9ltHVT.d.ts +15 -0
- package/dist/resource-schemas-up6bKOUi.js +82 -0
- package/dist/resource-types-Bzt_bpR5.d.ts +153 -0
- package/dist/resources-BV6j5TTD.js +64 -0
- package/dist/resources-Du5wcL3f.d.ts +7 -0
- package/dist/respond-CZYibxUx.d.ts +101 -0
- package/dist/respond-z_yfyitp.js +100 -0
- package/dist/result-B3m7xtRY.js +146 -0
- package/dist/result-C6jDfedy.d.ts +350 -0
- package/dist/rows-Bb0EPupt.js +80 -0
- package/dist/rows-CtLWqdGQ.js +39 -0
- package/dist/rrule-xDm2znty.js +290 -0
- package/dist/rules-DcW5mj1r.js +287 -0
- package/dist/run-watch-B-LoK5m1.js +53 -0
- package/dist/runtime-CoKxZibd.js +45 -0
- package/dist/sales-lines-9HsX89aO.d.ts +28 -0
- package/dist/sales-lines-BhrIx2oK.js +41 -0
- package/dist/sales-shared-C_u68eq2.js +22 -0
- package/dist/schemas-9Ci3K0Hk.js +103 -0
- package/dist/schemas-ypoQZ_6N.js +157 -0
- package/dist/scores-CsURQDUB.d.ts +172 -0
- package/dist/scores-DdPZVVt8.js +177 -0
- package/dist/search-Cn_DGluL.js +9 -0
- package/dist/search-ToCOlCZ8.js +106 -0
- package/dist/sections-DjxYmpu-.js +26 -0
- package/dist/server/index.d.ts +153 -116
- package/dist/server/index.js +49 -40
- package/dist/server-types-BOs-eFpo.d.ts +809 -0
- package/dist/session-BgsOPGZs.d.ts +97 -0
- package/dist/settings-mL-i7QUM.js +93 -0
- package/dist/shared-Bf-I13Ht.js +91 -0
- package/dist/shared-CRRfQAKG.d.ts +11 -0
- package/dist/shared-LmlfYPv4.js +60 -0
- package/dist/shared-eVrl39dX.js +17 -0
- package/dist/sign-in-D54FLMQy.d.ts +55 -0
- package/dist/sign-in-lAyf6Ohy.js +386 -0
- package/dist/signatures-GUBuhLOB.js +145 -0
- package/dist/signatures-zbu6KTNQ.d.ts +43 -0
- package/dist/signers-D6ecZl22.d.ts +390 -0
- package/dist/signing-keys-B3RHGMMu.d.ts +119 -0
- package/dist/signing-keys-fWapUzi0.js +164 -0
- package/dist/solid/index.d.ts +69 -24
- package/dist/solid/index.js +62 -17
- package/dist/solid-bind-C1jeq4Qm.d.ts +11 -0
- package/dist/solid-bind-iHGfGtBK.js +38 -0
- package/dist/solid-controller-DGuv7V8a.js +13 -0
- package/dist/solid-start/index.d.ts +27 -20
- package/dist/solid-start/index.js +9 -9
- package/dist/spec/index.d.ts +40 -25
- package/dist/spec/index.js +26 -21
- package/dist/spec-CoWHDoud.js +119 -0
- package/dist/spec-pins-CZ2CL8YZ.d.ts +120 -0
- package/dist/spec-pins-D3Tm6HJi.js +60 -0
- package/dist/sql/index.d.ts +5 -5
- package/dist/sql/index.js +5 -5
- package/dist/sql-CVYjOUyG.js +421 -0
- package/dist/sql-rQDL6PIL.js +122247 -0
- package/dist/sso-B744gHeS.d.ts +161 -0
- package/dist/sso-Bt9HocgW.js +217 -0
- package/dist/ssr/index.d.ts +4 -4
- package/dist/ssr/index.js +3 -3
- package/dist/standard-DbQsD2xZ.d.ts +7 -0
- package/dist/standard-DtkpFGkS.js +25 -0
- package/dist/stats-qCEV5M3B.js +1147 -0
- package/dist/statuses-DMMDwXpZ.js +29 -0
- package/dist/statuses-zRcc2TeZ.js +28 -0
- package/dist/storage/index.d.ts +4 -4
- package/dist/storage/index.js +138 -74
- package/dist/store-McN-2esd.js +69 -0
- package/dist/store-o0HwYXl8.d.ts +83 -0
- package/dist/streams/index.d.ts +24 -18
- package/dist/streams/index.js +3 -4
- package/dist/streams/redis/index.d.ts +10 -7
- package/dist/streams/redis/index.js +9 -9
- package/dist/stripe/index.d.ts +5 -2
- package/dist/stripe/index.js +2 -2
- package/dist/stripe-BJUfp5jM.js +32 -0
- package/dist/stripe-X22LjuH-.d.ts +156 -0
- package/dist/subject-readers-CsTpx44c.js +49 -0
- package/dist/subject-readers-DEZ45DQF.d.ts +21 -0
- package/dist/subjects-B6p4oAZJ.d.ts +78 -0
- package/dist/subjects-DXFmanh5.d.ts +90 -0
- package/dist/subjects-DevU_atb.js +107 -0
- package/dist/subscribers-BvZxcd63.js +33 -0
- package/dist/summaries-8jQTELIX.d.ts +69 -0
- package/dist/supabase-mcp-Dz9DgrKP.js +28 -0
- package/dist/supabase-mcp-Z4vtsuoO.d.ts +46 -0
- package/dist/support-Ds1-UCN4.js +534 -0
- package/dist/support-view-vwJbRMpV.d.ts +17 -0
- package/dist/svelte/index.d.ts +51 -15
- package/dist/svelte/index.js +46 -13
- package/dist/svelte-bind-BHN5a8VV.js +46 -0
- package/dist/svelte-bind-Ja6CtQGp.d.ts +13 -0
- package/dist/svelte-controller-oFKC9AYu.js +19 -0
- package/dist/sveltekit/index.d.ts +50 -35
- package/dist/sveltekit/index.js +19 -18
- package/dist/table-schema-BcB-VCQb.js +293 -0
- package/dist/table-schema-Cb-IV_pZ.d.ts +78 -0
- package/dist/tags-CLXi2c6O.d.ts +30 -0
- package/dist/tags-C_ym1yDM.js +39 -0
- package/dist/tags-EnvIccSJ.js +86 -0
- package/dist/tanstack-db/index.d.ts +17 -11
- package/dist/tanstack-db/index.js +7 -7
- package/dist/tanstack-db/supabase/index.d.ts +24 -9
- package/dist/tanstack-db/supabase/index.js +7 -4
- package/dist/tanstack-start/index.d.ts +45 -31
- package/dist/tanstack-start/index.js +33 -19
- package/dist/tax-CIIxd8Zf.d.ts +170 -0
- package/dist/tax-DmOMjrYc.js +140 -0
- package/dist/tee-DwkUvJD_.js +101 -0
- package/dist/template-BWP7IXZg.js +126 -0
- package/dist/temporal-DLZlWbOi.js +85 -0
- package/dist/temporal-required-B8qQHYbI.js +20 -0
- package/dist/tenant-Bg4PDLkG.d.ts +17 -0
- package/dist/tenant-DnMqeNIM.js +27 -0
- package/dist/tenant-source-bqWpSr86.js +8 -0
- package/dist/testing/index.d.ts +606 -267
- package/dist/testing/index.js +665 -210
- package/dist/timeline-0_hTBH0-.js +52 -0
- package/dist/timeline-DUUsPLv5.d.ts +152 -0
- package/dist/timing-C5NzaEgy.js +95 -0
- package/dist/topic-CPOmMgkf.js +643 -0
- package/dist/topic-D9j8G2dw.d.ts +415 -0
- package/dist/ttl-cache-Bhr9swjT.js +32 -0
- package/dist/types-BEDfwXL4.d.ts +251 -0
- package/dist/types-BRJHGhSq.d.ts +177 -0
- package/dist/types-BTK75521.js +8 -0
- package/dist/types-CGUDoF5I.d.ts +624 -0
- package/dist/types-DkPE7yd2.d.ts +194 -0
- package/dist/types-QHeku_6b.d.ts +217 -0
- package/dist/types-uHD9yANu.d.ts +700 -0
- package/dist/undo-B696duxr.d.ts +46 -0
- package/dist/undo-vutx78k8.js +44 -0
- package/dist/upload-claim-D_wgDbi7.js +33 -0
- package/dist/usage-BI1E2940.js +264 -0
- package/dist/usage-DBcVGqnr.d.ts +232 -0
- package/dist/user-change-CSR_prhd.js +133 -0
- package/dist/variants-DL7NpFJ7.js +53 -0
- package/dist/vault-BQTdu4eH.d.ts +62 -0
- package/dist/vercel-connect/index.d.ts +3 -3
- package/dist/vercel-connect/index.js +8 -8
- package/dist/verify-27w0I5C9.js +130 -0
- package/dist/verify-BmuCB4PW.d.ts +146 -0
- package/dist/view-2_I-2ukO.d.ts +90 -0
- package/dist/view-BtgqxQLM.js +108 -0
- package/dist/vue/index.d.ts +70 -28
- package/dist/vue/index.js +68 -22
- package/dist/vue-bind-CFxon-Vs.js +45 -0
- package/dist/vue-bind-TPkbLl4z.d.ts +11 -0
- package/dist/vue-controller-WtbuT-Ux.js +13 -0
- package/dist/watch-CfMT6vX7.js +139 -0
- package/dist/watch-DziJudwj.d.ts +93 -0
- package/dist/watch-topic-CIT3UlAh.d.ts +31 -0
- package/dist/watch-topic-CuaWfCuv.js +57 -0
- package/dist/wire-Bizdxvp-.js +66 -0
- package/dist/work-items-Cnntm8ij.d.ts +238 -0
- package/dist/workflow-builder-2q1iqHYG.js +699 -0
- package/dist/workflow-sdk/builder/index.d.ts +51 -37
- package/dist/workflow-sdk/builder/index.js +30 -24
- package/dist/workflow-sdk/index.d.ts +24 -15
- package/dist/workflow-sdk/index.js +9 -6
- package/dist/workflow-sdk/world/index.d.ts +56 -24
- package/dist/workflow-sdk/world/index.js +47 -24
- package/dist/workflow-sdk-BTYWQQg9.d.ts +163 -0
- package/dist/workflow-sdk-_pqDUwNK.js +242 -0
- package/dist/workflow-sdk-world-BIwGVy6S.js +2401 -0
- package/dist/workflows-D8U7KyXJ.d.ts +258 -0
- package/dist/workflows-VJBSV-QR.js +285 -0
- package/dist/yjs/index.d.ts +39 -12
- package/dist/yjs/index.js +63 -21
- package/package.json +216 -3
- package/schemas/cli-commands-v1.json +18 -0
- package/schemas/config-v1.json +742 -35
- package/schemas/design-v1.json +351 -0
- package/schemas/doctor-report-v1.json +5 -1
- package/schemas/snapshot-v2.json +25 -0
- package/skills/better-supabase/SKILL.md +6 -5
- package/skills/better-supabase/references/frontend.md +3 -2
- package/skills/better-supabase/references/troubleshooting.md +18 -18
- package/skills/better-supabase/references/ui-recipes.md +12686 -8024
- package/skills/better-supabase-api/SKILL.md +1 -1
- package/skills/better-supabase-api/references/adapters.md +3 -6
- package/skills/better-supabase-api/references/expo.md +1 -0
- package/skills/better-supabase-api/references/powersync.md +8 -1
- package/skills/better-supabase-testing/SKILL.md +2 -3
- package/dist/access-sql-CTJPHjCL.js +0 -201
- package/dist/actor-BAhb-d1S.d.ts +0 -104
- package/dist/actor-CAL8mMih.js +0 -151
- package/dist/adapter-CRNH2aX_.js +0 -2107
- package/dist/agents-CGP2AQge.d.ts +0 -111
- package/dist/ai-cache-BdeJKlrV.d.ts +0 -70
- package/dist/ai-cache-CLninP-F.js +0 -84
- package/dist/ai-chat-D-2MH1sU.d.ts +0 -608
- package/dist/ai-files-ChFDkMLN.js +0 -339
- package/dist/ai-tasks-ZvPnNudQ.d.ts +0 -157
- package/dist/announcements-BNxTW5HJ.js +0 -128
- package/dist/api-C43_FYDp.js +0 -680
- package/dist/api-DoWK3dTw.d.ts +0 -411
- package/dist/api-keys-AgDXbcql.d.ts +0 -205
- package/dist/api-keys-BSXwI2jF.js +0 -318
- package/dist/app-tables-BRjMcWhW.js +0 -819
- package/dist/app-tables-BrMBjyuq.d.ts +0 -35
- package/dist/approvals-CyX709B-.d.ts +0 -124
- package/dist/assistant-DZsHsYIx.d.ts +0 -148
- package/dist/attachments-CK8D8bIV.js +0 -270
- package/dist/attributes-D4mA7WhI.js +0 -38
- package/dist/audit-log-ovUlF4Mk.js +0 -786
- package/dist/auth-CdBKt0CS.js +0 -20
- package/dist/auth-link-BjFPqwLz.d.ts +0 -97
- package/dist/auth-link-DrDX9KOT.js +0 -114
- package/dist/auth-module-DbZv2WrR.js +0 -10
- package/dist/auth-reply-Daq72lY4.js +0 -31
- package/dist/authorization-ClWBcXJi.d.ts +0 -1456
- package/dist/authorization-hooks-WDQMKIsc.d.ts +0 -214
- package/dist/authorizer-B3yyCVUF.js +0 -126
- package/dist/authorizer-eiOjo-3l.d.ts +0 -73
- package/dist/base64-D4aqdnDR.js +0 -42
- package/dist/before-route-B98js9m_.js +0 -30
- package/dist/bind-Bfo40o63.d.ts +0 -70
- package/dist/block-env-CBd_SoL5.js +0 -29
- package/dist/block-env-Dxl7rsI0.d.ts +0 -10
- package/dist/block-events-DD9Q_NUz.js +0 -96
- package/dist/block-fields-Bv1hV855.js +0 -139
- package/dist/block-fields-DnaDbgZS.d.ts +0 -55
- package/dist/block-helpers-CjcQM1yA.d.ts +0 -37
- package/dist/block-helpers-DkVZNDrj.js +0 -264
- package/dist/block-hooks-C22vuIUd.js +0 -114
- package/dist/block-hooks-DcPJHztl.d.ts +0 -107
- package/dist/block-transport-DezJPPA0.d.ts +0 -70
- package/dist/block-transport-J7ZepTq2.js +0 -85
- package/dist/blocks-D2WQ63PI.js +0 -84
- package/dist/bookings-DQ7P888X.js +0 -181
- package/dist/bucket-BbePDVwc.d.ts +0 -598
- package/dist/build-C-D_vn0U.js +0 -694
- package/dist/build-CT6SPZkI.js +0 -1815
- package/dist/calendar-eqyuQAoy.js +0 -801
- package/dist/channel-D-LHCY11.d.ts +0 -78
- package/dist/channels-C-GCoNLd.js +0 -114
- package/dist/claims-0KZVT804.js +0 -61
- package/dist/claims-PqzCxaTD.js +0 -85
- package/dist/cli/add-BcOHumvq.js +0 -75
- package/dist/cli/add-DnAyR9w_.js +0 -1
- package/dist/cli/add-TT72pQk6.js +0 -651
- package/dist/cli/adopt-BuS-DC7_.js +0 -1
- package/dist/cli/adopt-mbB1bcIG.js +0 -412
- package/dist/cli/agent-CCrTYK3W.js +0 -176
- package/dist/cli/apply-CiBFOFGw.js +0 -326
- package/dist/cli/blocks-5-JGzwXX.js +0 -124
- package/dist/cli/blocks-DeLQOlUK.js +0 -1
- package/dist/cli/cache-DQwgb3rg.js +0 -507
- package/dist/cli/catalog-Cm6BtquM.js +0 -188
- package/dist/cli/codemod-BzAMX4el.js +0 -985
- package/dist/cli/command-dfdVhU_2.js +0 -891
- package/dist/cli/completion-4lLjtI49.js +0 -1
- package/dist/cli/completion-D4InNrxw.js +0 -30
- package/dist/cli/completion-zsp5s0zI.js +0 -205
- package/dist/cli/config-CCyweX7Y.js +0 -1
- package/dist/cli/config-DI6ielsx.js +0 -39
- package/dist/cli/config-edit-Ct1lXe8a.js +0 -603
- package/dist/cli/config-yZ55rsKZ.js +0 -1463
- package/dist/cli/db-DT1bGB02.js +0 -78
- package/dist/cli/db-TRymMyAW.js +0 -90
- package/dist/cli/design-edit-0U9iCTiS.js +0 -202
- package/dist/cli/detect-DQsVeBHg.js +0 -84
- package/dist/cli/dist-D_VbPAMR.js +0 -129
- package/dist/cli/doctor-DOfy6kjt.js +0 -3732
- package/dist/cli/emit-56LAG_Px.js +0 -1067
- package/dist/cli/env-B7TWPEt0.js +0 -1
- package/dist/cli/env-C8R7Nf0a.js +0 -1088
- package/dist/cli/env-Cmu99uKR.js +0 -1
- package/dist/cli/env-Dh5K5t2U.js +0 -143
- package/dist/cli/errors-Caiz_0so.js +0 -98
- package/dist/cli/files-DDvAwTko.js +0 -963
- package/dist/cli/fresh-import-BeYf9I3x.js +0 -40
- package/dist/cli/gen-D3sC5jDn.js +0 -304
- package/dist/cli/init-DNomoycJ.js +0 -394
- package/dist/cli/introspect-kYX06Q2g.js +0 -51
- package/dist/cli/io-BiPX-_J1.js +0 -37
- package/dist/cli/keys-B8dIJwwi.js +0 -106
- package/dist/cli/live-CkV3d3yp.js +0 -329
- package/dist/cli/mcp-DrxB2Wuw.js +0 -237
- package/dist/cli/metadata-BGkle6WM.js +0 -138
- package/dist/cli/migration-safety-DjVpz2D6.js +0 -206
- package/dist/cli/module-migration-CPhuiY8C.js +0 -592
- package/dist/cli/moved-BMQu1YNY.js +0 -152
- package/dist/cli/parse-QzDvMpXH.js +0 -170
- package/dist/cli/preset-CfIs24cc.js +0 -129
- package/dist/cli/prompts-Bvg_DBpe.js +0 -1137
- package/dist/cli/redact-PjNswZOs.js +0 -35
- package/dist/cli/run-Bck-p0MI.js +0 -63
- package/dist/cli/run-BhJKAanr.js +0 -1528
- package/dist/cli/run-DRZ10srj.js +0 -694
- package/dist/cli/scaffold-DoURlDEI.js +0 -898
- package/dist/cli/scaffold-mzy3OsN5.js +0 -1
- package/dist/cli/seed-C5q4UUIL.js +0 -1
- package/dist/cli/seed-CIdg6s7m.js +0 -114
- package/dist/cli/shared-DKLuA1Tp.js +0 -145
- package/dist/cli/skills-D3zwIlGA.js +0 -121
- package/dist/cli/snapshot-BBKFojqM.js +0 -347
- package/dist/cli/source-args-Cwo7zwvq.js +0 -53
- package/dist/cli/spec-DOgQUZwM.js +0 -1
- package/dist/cli/spec-DZeIP9ta.js +0 -7501
- package/dist/cli/sql-CL_Lbhwl.js +0 -2
- package/dist/cli/sql-DLOvvnBV.js +0 -326
- package/dist/cli/stack-env-_uWWNHWq.js +0 -87
- package/dist/cli/stack-status-_NUgd-g5.js +0 -496
- package/dist/cli/style-2JfIPVMQ.js +0 -29
- package/dist/cli/supabase-toml-BC5sNVKU.js +0 -1153
- package/dist/cli/sync-DBvknfOK.js +0 -88
- package/dist/cli/topics-BBE1-Vrg.js +0 -30
- package/dist/cli/typegen--TfvOPLh.js +0 -494
- package/dist/cli/validate-BfWNKvxy.js +0 -7522
- package/dist/cli/version-B7akdvDv.js +0 -4
- package/dist/cli/write-VZljwoTB.js +0 -198
- package/dist/client-B9CqzgPO.js +0 -75
- package/dist/client-BAOZuBhz.d.ts +0 -101
- package/dist/client-BDO6i2Oe.js +0 -128
- package/dist/client-BGnJ5WJi.js +0 -438
- package/dist/client-BJN0IMEp.d.ts +0 -34
- package/dist/client-BMcjLG0V.d.ts +0 -263
- package/dist/client-BN_fXOs7.d.ts +0 -39
- package/dist/client-BONsuFYf.d.ts +0 -100
- package/dist/client-BPn9XhAM.d.ts +0 -218
- package/dist/client-BfgwocyT.js +0 -155
- package/dist/client-BpS8a6Fm.js +0 -51
- package/dist/client-BtC-r4hE.d.ts +0 -52
- package/dist/client-BuneNd-C.d.ts +0 -419
- package/dist/client-BzCv4kKE.js +0 -65
- package/dist/client-C-2ajnhM.js +0 -89
- package/dist/client-C5mUEb2n.js +0 -55
- package/dist/client-CFKONrrU.js +0 -1051
- package/dist/client-CHR8IBNG.js +0 -318
- package/dist/client-CHwNV8Kz.d.ts +0 -455
- package/dist/client-CLQHsa-2.d.ts +0 -131
- package/dist/client-CMxxwT3N.d.ts +0 -122
- package/dist/client-CU7aNN_B.d.ts +0 -277
- package/dist/client-CYEdJKjk.d.ts +0 -157
- package/dist/client-CYhSGlCN.d.ts +0 -107
- package/dist/client-C_-NZRrg.js +0 -120
- package/dist/client-CcPxbHeT.js +0 -288
- package/dist/client-CosiUrUb.js +0 -98
- package/dist/client-D3gRTNSi.d.ts +0 -68
- package/dist/client-D7T7OLiw.js +0 -169
- package/dist/client-DB34f_7i.d.ts +0 -58
- package/dist/client-DCawyopp.d.ts +0 -65
- package/dist/client-DNq8xYb-.js +0 -52
- package/dist/client-Dqa4XyJ5.d.ts +0 -108
- package/dist/client-Dr5h2r9r.d.ts +0 -34
- package/dist/client-DrTqKgvy.d.ts +0 -155
- package/dist/client-DyfWYU8S.js +0 -84
- package/dist/client-Dz1jWDA2.js +0 -209
- package/dist/client-DzTtOVRR.js +0 -137
- package/dist/client-Ezlbskjq.js +0 -60
- package/dist/client-GCCRI9ge.d.ts +0 -135
- package/dist/client-P6v3h7vh.d.ts +0 -130
- package/dist/client-P8l8ncxV.d.ts +0 -103
- package/dist/client-UnM3e32l.js +0 -133
- package/dist/client-WgrPIHH-.js +0 -213
- package/dist/client-ZTtSV3l8.js +0 -40
- package/dist/client-arq4daO_.js +0 -104
- package/dist/client-ckXfdy1k.js +0 -38
- package/dist/client-eCDPjOMo.js +0 -438
- package/dist/client-iaFm0aVf.js +0 -67
- package/dist/client-kWg4OqIr.d.ts +0 -162
- package/dist/client-pxjbgOz6.js +0 -376
- package/dist/client-tvG258_1.d.ts +0 -59
- package/dist/client-wKmX-f3r.d.ts +0 -388
- package/dist/clone-dN9XOL1K.js +0 -29
- package/dist/cloud-event-CTh9Sr5w.js +0 -60
- package/dist/cloud-event-DXkNoI6v.d.ts +0 -64
- package/dist/codecs-D-rpDifG.js +0 -358
- package/dist/codecs-RwFNK8Jh.d.ts +0 -215
- package/dist/codegen-C64C0NZG.d.ts +0 -1665
- package/dist/comments-CV5O8q50.js +0 -230
- package/dist/compiler-D_Gjpw_O.d.ts +0 -14
- package/dist/compose-CP0ss-cQ.js +0 -53
- package/dist/composite-1kPAxXto.js +0 -130
- package/dist/composite-DzvBL5nb.d.ts +0 -67
- package/dist/config-DHhQmmuD.js +0 -3917
- package/dist/config-NQmw_wsk.js +0 -558
- package/dist/connector-D9NMNkv0.d.ts +0 -107
- package/dist/connectors-BwPNt-ZG.d.ts +0 -141
- package/dist/context-B8_p3MXo.js +0 -11
- package/dist/context-BiwgsycK.js +0 -41
- package/dist/context-C-bHOtoD.js +0 -5
- package/dist/context-Cv3KlxWY.d.ts +0 -377
- package/dist/context-D6ZMKc2L.js +0 -19
- package/dist/context-wDKxSl9x.js +0 -9
- package/dist/controller-BZhiIb-N.d.ts +0 -46
- package/dist/controller-D6NyNrlZ.js +0 -79
- package/dist/cron-BHdXZFsJ.js +0 -145
- package/dist/cron-route-mTvWhork.js +0 -24
- package/dist/csv-CVfXqaAu.js +0 -89
- package/dist/csv-D3eKxV1T.d.ts +0 -28
- package/dist/db-exception-CnWcYPxL.js +0 -15
- package/dist/define-Bu1v781m.js +0 -1962
- package/dist/define-DYZnvAbs.d.ts +0 -1058
- package/dist/define-block-B6Gjs57G.js +0 -52
- package/dist/define-block-BHxLHLys.d.ts +0 -256
- package/dist/delegation-B7uNnz6z.js +0 -140
- package/dist/delivery-B1mKaOen.js +0 -30
- package/dist/delivery-BeHgwS3k.d.ts +0 -69
- package/dist/documents-CqtVr2fg.d.ts +0 -96
- package/dist/email-BcmbIWOX.d.ts +0 -42
- package/dist/embeddings-CKhygw4C.d.ts +0 -78
- package/dist/embeddings-CVeOoufZ.js +0 -128
- package/dist/ended-De6H52nX.d.ts +0 -70
- package/dist/entitlements-C8UvF1Rz.js +0 -45
- package/dist/entitlements-CtBGXb3B.d.ts +0 -53
- package/dist/envelope-C4Z55LKW.js +0 -90
- package/dist/errors-BV1SKTVs.js +0 -315
- package/dist/errors-D3BR8iUk.js +0 -44
- package/dist/escape-like-B339PlP-.d.ts +0 -15
- package/dist/eve-B6ru2Bt4.d.ts +0 -151
- package/dist/event-calendar-DJXXMJ3x.d.ts +0 -217
- package/dist/event-map-Dy2vKHai.js +0 -19
- package/dist/events-P3raDX2E.d.ts +0 -800
- package/dist/events-xbpHkcK9.js +0 -82
- package/dist/executor-BWgJNbGh.d.ts +0 -95
- package/dist/executor-BiB0wMBA.js +0 -735
- package/dist/executor-BnMC0lj3.d.ts +0 -272
- package/dist/executor-CvsNcQsa.d.ts +0 -174
- package/dist/executor-CxGQiQN_.js +0 -206
- package/dist/executor-D1hECPGG.d.ts +0 -39
- package/dist/executor-D3K3tycZ.js +0 -147
- package/dist/field-errors-DZVRWRkf.js +0 -13
- package/dist/field-errors-Z-sgsdoN.d.ts +0 -113
- package/dist/field-formats-Cif5gr7c.js +0 -102
- package/dist/field-formats-DCvOQlOy.d.ts +0 -39
- package/dist/filter-evaluate-BJcaL3o1.d.ts +0 -34
- package/dist/filter-evaluate-C0ULNfS7.js +0 -214
- package/dist/filter-query-B3lhckKX.js +0 -518
- package/dist/filter-query-Bc_Qa8V_.d.ts +0 -121
- package/dist/flags-6KK6Vqkr.d.ts +0 -230
- package/dist/flags-aUR7Rod6.js +0 -279
- package/dist/form-definition-GVZTILhS.js +0 -311
- package/dist/form-definition-sagoefQr.d.ts +0 -95
- package/dist/format-CNwSjXUU.d.ts +0 -70
- package/dist/framework-BQhTsLX-.d.ts +0 -26
- package/dist/framework-C6PKBgme.js +0 -51
- package/dist/function-contract-DWqFl_QO.d.ts +0 -21
- package/dist/function-contract-DmkBg19r.js +0 -5
- package/dist/gateway-Bq_tWwxE.d.ts +0 -109
- package/dist/gateway-options-ClvvfuuU.d.ts +0 -29
- package/dist/gateway-options-DcLcWL5_.js +0 -27
- package/dist/graph-Cs28bOlK.js +0 -360
- package/dist/hmac-BgpThYQW.js +0 -23
- package/dist/http-C7trc6uN.js +0 -25
- package/dist/http-Cv4T29xh.js +0 -40
- package/dist/http-DdYadv-o.js +0 -126
- package/dist/image-url-pIVlO6R1.js +0 -41
- package/dist/impersonation-D5chOkrO.d.ts +0 -25
- package/dist/impersonation-DxU6yHJV.js +0 -62
- package/dist/inbox-Du5aPwKB.d.ts +0 -400
- package/dist/index-1Vsg-7YV.d.ts +0 -58
- package/dist/index-BJLPQr2s.d.ts +0 -377
- package/dist/index-BpFYMsi0.d.ts +0 -53
- package/dist/index-BpyBH5O2.d.ts +0 -227
- package/dist/index-C-_fs7EI.d.ts +0 -258
- package/dist/index-CXFf-c-j.d.ts +0 -131
- package/dist/index-Cm2-g_4H.d.ts +0 -722
- package/dist/index-CxmVzT-3.d.ts +0 -86
- package/dist/index-DTQSeHx2.d.ts +0 -97
- package/dist/index-Hc4tetmB.d.ts +0 -245
- package/dist/index-QWTq2o31.d.ts +0 -138
- package/dist/index-XcTBR4Gb.d.ts +0 -206
- package/dist/index-k-rrfG1g.d.ts +0 -202
- package/dist/index-wTnPJUhv.d.ts +0 -58
- package/dist/invalidate-BBqhpxyB.d.ts +0 -19
- package/dist/iso4217-A8ev-CNW.js +0 -176
- package/dist/json-CEnpTHlZ.js +0 -16
- package/dist/json-schema-CpYINXG8.js +0 -548
- package/dist/jwks-cache-C4rA69hD.js +0 -49
- package/dist/jws-35a8VhFV.d.ts +0 -60
- package/dist/jws-CwBB5QAT.js +0 -193
- package/dist/kit-De-EVRhw.d.ts +0 -66
- package/dist/kit-LTbHrWWD.js +0 -104
- package/dist/knowledge-B5zdpDD-.d.ts +0 -187
- package/dist/knowledge-BbdXOJvY.js +0 -272
- package/dist/list-query-CBXNfJt4.js +0 -549
- package/dist/list-query-aXr2WkGA.d.ts +0 -194
- package/dist/live-DwDreq1n.js +0 -239
- package/dist/management-D1gG89z2.d.ts +0 -53
- package/dist/message-B0fNJgq8.d.ts +0 -93
- package/dist/messages-D5nIfCCf.js +0 -493
- package/dist/metric-definition-95HFoW1V.d.ts +0 -70
- package/dist/mfa-YzkRjNad.d.ts +0 -30
- package/dist/model-lUafmeBQ.d.ts +0 -311
- package/dist/model-messages-CIdqdUtk.js +0 -206
- package/dist/model-messages-D4GZllOD.d.ts +0 -34
- package/dist/money-95Rff2vT.js +0 -185
- package/dist/money-DFpWzQvk.d.ts +0 -76
- package/dist/money-codec-C21MWw50.js +0 -41
- package/dist/node-headers-AO06VhqH.d.ts +0 -24
- package/dist/onboarding-Du6kCmhF.js +0 -68
- package/dist/operations-CsIfMED7.js +0 -29
- package/dist/operations-DQCWqkt3.d.ts +0 -6
- package/dist/optional-peer-Dx8TaYXw.js +0 -29
- package/dist/options-BAW2ZlZ8.js +0 -8
- package/dist/options-C1HR4UZd.js +0 -13
- package/dist/options-Dh4wu9Ks.js +0 -15
- package/dist/options-QKP9FFcK.js +0 -8
- package/dist/options-XgfTctbI.js +0 -5
- package/dist/options-ZQzNKKBS.d.ts +0 -52
- package/dist/options-vXMBEWSH.js +0 -5
- package/dist/organizations-CO2qg44D.js +0 -398
- package/dist/outbox-B1hZ7PPY.d.ts +0 -181
- package/dist/payments-CzjCdIcz.js +0 -16
- package/dist/pg-error-BV_X8Isq.js +0 -26
- package/dist/plugin-D-95Q0w0.d.ts +0 -190
- package/dist/plugin-tfXW1-qO.js +0 -45
- package/dist/pool-cM3rpOQr.d.ts +0 -117
- package/dist/pool-errors-CGqvTQOC.js +0 -27
- package/dist/ports-BCDIbC_U.d.ts +0 -86
- package/dist/ports-P0A5wo_-.d.ts +0 -285
- package/dist/ports-aALjot-D.js +0 -137
- package/dist/postgrest-CjnO1hbr.d.ts +0 -53
- package/dist/preset-Cf0T9GRt.js +0 -691
- package/dist/problem-DCDIQiTA.d.ts +0 -76
- package/dist/problem-JRCohp1j.js +0 -159
- package/dist/provider-C-Ti38J6.js +0 -57
- package/dist/provider-DXgx5oSA.d.ts +0 -113
- package/dist/push-token-y1Gnz5bQ.d.ts +0 -24
- package/dist/query-Ctz-qKRx.js +0 -303
- package/dist/rank-result-BcYfDA0x.d.ts +0 -14
- package/dist/rank-result-DtQuIvob.js +0 -18
- package/dist/rate-limit-DVZ7qIzW.js +0 -49
- package/dist/rate-limit-I3AncmM8.js +0 -325
- package/dist/rate-limit-c6c1mB6R.d.ts +0 -41
- package/dist/ratelimit-headers-Bsxx0Tj2.js +0 -62
- package/dist/react-4ZqkP8da.js +0 -79
- package/dist/react-DzukE6Wp.js +0 -410
- package/dist/react-controller-Xn-IU44p.js +0 -40
- package/dist/react-env-Cc7Vf6eb.js +0 -13
- package/dist/read-set-DeesfeL_.js +0 -314
- package/dist/realtime-status-D2dw1hOE.js +0 -12
- package/dist/realtime-status-DcsO00Gw.d.ts +0 -8
- package/dist/refusal-C7geIBRl.d.ts +0 -18
- package/dist/refusal-CFpfmjcS.js +0 -61
- package/dist/resolve-AtncaPTU.js +0 -877
- package/dist/resolve-Ceft-18-.d.ts +0 -270
- package/dist/resource-Bdkqi8jo.js +0 -463
- package/dist/resource-DO4gbVi5.js +0 -91
- package/dist/resource-DYEtc-KN.d.ts +0 -106
- package/dist/resource-execute-Bxvgmx-n.d.ts +0 -12
- package/dist/resource-schemas-BJ518zFH.js +0 -79
- package/dist/resource-types-LW1i5-h3.d.ts +0 -141
- package/dist/resources-Ck7itNeX.js +0 -64
- package/dist/resources-D3_FAz_H.d.ts +0 -7
- package/dist/respond-BSL36dQp.d.ts +0 -93
- package/dist/respond-Bhp3G__q.js +0 -95
- package/dist/result-BREt7qOh.d.ts +0 -312
- package/dist/result-DIeYscA3.js +0 -134
- package/dist/rrule-Cw4x4Pf_.js +0 -290
- package/dist/rules-BiQgmZ_U.js +0 -287
- package/dist/run-watch-CQRdpy-f.js +0 -53
- package/dist/runtime-BOXURhEW.js +0 -45
- package/dist/sales-lines-C6gafAwg.d.ts +0 -28
- package/dist/sales-lines-CQ1iC6QM.js +0 -41
- package/dist/sales-shared-CDSytDEn.js +0 -22
- package/dist/search-BtoWY6n_.js +0 -9
- package/dist/search-ZP13UTT4.js +0 -106
- package/dist/server-types-fLdep4gb.d.ts +0 -757
- package/dist/session-DObioXpX.d.ts +0 -95
- package/dist/settings-BiHDFglz.js +0 -90
- package/dist/shared-BmMcMoW9.js +0 -89
- package/dist/shared-C9zvURqC.js +0 -14
- package/dist/shared-D5Djh43x.js +0 -60
- package/dist/shared-DDSjEGDR.d.ts +0 -11
- package/dist/sign-in-BCV5S2WZ.d.ts +0 -49
- package/dist/sign-in-z2BaBdps.js +0 -367
- package/dist/signatures-BXlDXV3D.d.ts +0 -43
- package/dist/signatures-CeIoAelK.js +0 -145
- package/dist/signers-BwKV-9S6.d.ts +0 -385
- package/dist/signing-keys-v2MRYkDF.d.ts +0 -105
- package/dist/solid-controller-CWotGxcG.d.ts +0 -11
- package/dist/solid-controller-DLsmrczT.js +0 -33
- package/dist/spec-pins-Dqpml2dZ.d.ts +0 -84
- package/dist/spec-pins-S4PymRxp.js +0 -60
- package/dist/sql-BPKRNutj.js +0 -422
- package/dist/sql-CT1Jnwp8.js +0 -88660
- package/dist/sso-BaU_6ePE.js +0 -217
- package/dist/sso-Bu0mVh0V.d.ts +0 -131
- package/dist/standard-B1BigegP.js +0 -25
- package/dist/standard-BcUQuUgu.d.ts +0 -7
- package/dist/stats-Di5VAsYU.js +0 -1128
- package/dist/store-B18bIvKc.d.ts +0 -68
- package/dist/store-BdH5ruDx.js +0 -66
- package/dist/stripe-NVcNOhHy.d.ts +0 -140
- package/dist/stripe-XZrSmDTf.js +0 -32
- package/dist/subject-readers-BUChuOxL.d.ts +0 -21
- package/dist/subject-readers-BpwUFJtp.js +0 -46
- package/dist/subjects-DP-fvFkk.d.ts +0 -77
- package/dist/subscribers-Cq--DL1E.js +0 -34
- package/dist/supabase-mcp-C6tMoEjn.d.ts +0 -43
- package/dist/supabase-mcp-DomZ-amK.js +0 -28
- package/dist/support-C2wPYwD7.js +0 -522
- package/dist/support-view-Bj_lZ8Wr.d.ts +0 -17
- package/dist/svelte-controller-CDAujo-_.js +0 -50
- package/dist/svelte-controller-sS4X66yL.d.ts +0 -10
- package/dist/table-schema-pQlER3jj.js +0 -283
- package/dist/tags-B99_U9Pp.js +0 -39
- package/dist/tags-BqgaxCnv.js +0 -84
- package/dist/tags-BrGopDVG.d.ts +0 -30
- package/dist/tax-DMWDUzKt.d.ts +0 -273
- package/dist/tax-wm9g2mD2.js +0 -140
- package/dist/tee-Cw-iJAWL.js +0 -101
- package/dist/template-Dw3dTmKe.js +0 -123
- package/dist/temporal-CB5Fpo5d.js +0 -79
- package/dist/temporal-required-nfZ87U-0.js +0 -20
- package/dist/tenant-B-fiItlJ.js +0 -27
- package/dist/tenant-DZMLVuyQ.d.ts +0 -17
- package/dist/tenant-naming-Bsj3Uvap.js +0 -27
- package/dist/timing-BMCWgpdZ.js +0 -92
- package/dist/topic-DAY_HOX2.d.ts +0 -387
- package/dist/topic-mee21pux.js +0 -629
- package/dist/ttl-Hr34gRu8.js +0 -12
- package/dist/ttl-cache-XzZ-Q2eX.js +0 -29
- package/dist/types-BA1eTvy4.d.ts +0 -162
- package/dist/types-BEEFkNFY.d.ts +0 -564
- package/dist/types-BRTSpOIh.js +0 -5
- package/dist/types-Bels39_u.d.ts +0 -649
- package/dist/types-BrpW5ixT.d.ts +0 -370
- package/dist/types-DOC7wnh6.d.ts +0 -249
- package/dist/types-D_2rClz-.d.ts +0 -205
- package/dist/undo-B5LgpGLy.js +0 -44
- package/dist/undo-BsdYRox7.d.ts +0 -43
- package/dist/upload-claim-BBFCZbBF.js +0 -33
- package/dist/usage-C504GF55.d.ts +0 -220
- package/dist/usage-DdqT13_X.js +0 -261
- package/dist/user-change-XzvgafU4.js +0 -130
- package/dist/vault-ClkzMGTP.d.ts +0 -50
- package/dist/verify-DU4p9-Ve.d.ts +0 -142
- package/dist/verify-DnU-uWU2.js +0 -126
- package/dist/version-DSWxci83.js +0 -4
- package/dist/view-CYX1wsgp.js +0 -105
- package/dist/view-KQhe6eNc.d.ts +0 -90
- package/dist/vue-controller-BUo1oove.d.ts +0 -11
- package/dist/vue-controller-C9tFzqAc.js +0 -32
- package/dist/watch-5btote1y.d.ts +0 -84
- package/dist/watch-BAuIzC2r.js +0 -139
- package/dist/watch-topic-C79ZW5-R.d.ts +0 -28
- package/dist/watch-topic-miuymrli.js +0 -57
- package/dist/wire-BCJxCtHS.js +0 -45
- package/dist/workflow-builder-CynLqc6H.js +0 -697
- package/dist/workflow-sdk-CWdCWj7M.d.ts +0 -161
- package/dist/workflow-sdk-QnnzIQRc.js +0 -243
- package/dist/workflow-sdk-world-QzcxaaCD.js +0 -2103
- package/dist/workflows-DQBCzrHC.d.ts +0 -243
- package/dist/workflows-H9qJge3f.js +0 -282
package/dist/testing/index.js
CHANGED
|
@@ -1,27 +1,31 @@
|
|
|
1
|
-
import { t as DbException } from "../db-exception-
|
|
2
|
-
import { n as dbError } from "../errors-
|
|
3
|
-
import { d as temporalText } from "../temporal-
|
|
4
|
-
import { t as temporal } from "../temporal-required-
|
|
5
|
-
import { a as ok } from "../result-
|
|
6
|
-
import { t as BetterSupabase } from "../define-
|
|
1
|
+
import { t as DbException } from "../db-exception-Lngc1W49.js";
|
|
2
|
+
import { n as dbError } from "../errors-03ysrOt4.js";
|
|
3
|
+
import { d as temporalText } from "../temporal-DLZlWbOi.js";
|
|
4
|
+
import { t as temporal } from "../temporal-required-B8qQHYbI.js";
|
|
5
|
+
import { a as ok } from "../result-B3m7xtRY.js";
|
|
6
|
+
import { t as BetterSupabase } from "../define-DQznpZYl.js";
|
|
7
7
|
import { t as isList } from "../guards-6F2bCtQR.js";
|
|
8
|
-
import { a as toBase64Url, r as fromBase64, t as base64ToText } from "../base64-
|
|
9
|
-
import {
|
|
10
|
-
import { a as isScopeName, c as templateFunctions, l as templatePlaceholders, n as TEMPLATE_PLACEHOLDERS, s as scopeProblems, u as templateProblems } from "../access-sql-
|
|
11
|
-
import {
|
|
8
|
+
import { a as toBase64Url, r as fromBase64, t as base64ToText } from "../base64-B9Wlsdj7.js";
|
|
9
|
+
import { c as resolveConfig } from "../config-Dn0cC3bM.js";
|
|
10
|
+
import { a as isScopeName, c as templateFunctions, l as templatePlaceholders, n as TEMPLATE_PLACEHOLDERS, s as scopeProblems, u as templateProblems } from "../access-sql-CPoq9F86.js";
|
|
11
|
+
import { r as TRACKING_STATUSES, t as LABEL_FORMATS } from "../statuses-zRcc2TeZ.js";
|
|
12
|
+
import { i as seedLite, n as loadLite, r as migrateLite, t as LITE_INSTALL } from "../runtime-CoKxZibd.js";
|
|
12
13
|
import { ENV_VARIABLES } from "../env/index.js";
|
|
13
|
-
import { t as defineController } from "../controller-
|
|
14
|
+
import { t as defineController } from "../controller-BEliOBOv.js";
|
|
15
|
+
import { t as onBlockEvent } from "../block-event-listener-Bu6G0TFH.js";
|
|
16
|
+
import { V as rawError } from "../block-helpers-CiKtrb6g.js";
|
|
14
17
|
import "../replicas-BvIL4_jL.js";
|
|
15
|
-
import { a as tenantCredentialRef } from "../provider-
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { t as
|
|
18
|
+
import { a as tenantCredentialRef } from "../provider-EJ0-5GwJ.js";
|
|
19
|
+
import { t as postgresExecutor } from "../executor-BDAGTc_O.js";
|
|
20
|
+
import { i as requestOf, n as checkPermission, r as defineAuthorizer } from "../authorizer-DPTeL-7h.js";
|
|
21
|
+
import { n as parseDbStats } from "../timing-C5NzaEgy.js";
|
|
22
|
+
import { r as subjectKey } from "../block-subjects-Dzq5Xn_0.js";
|
|
23
|
+
import { t as organizationsEvents } from "../events-SqJLbb8q.js";
|
|
24
|
+
import { t as mailHeaders } from "../delivery-Bm0jxmzI.js";
|
|
21
25
|
import { toCloudEvents } from "../events/index.js";
|
|
22
|
-
import { d as money, l as isRate } from "../money-
|
|
23
|
-
import { t as SHIPPING_LINE } from "../tax-
|
|
24
|
-
import { t as buildApiModel } from "../build-
|
|
26
|
+
import { c as isMoney, d as money, l as isRate } from "../money-BZl985O-.js";
|
|
27
|
+
import { t as SHIPPING_LINE } from "../tax-DmOMjrYc.js";
|
|
28
|
+
import { t as buildApiModel } from "../build-DCfpwg78.js";
|
|
25
29
|
import { timestamps } from "../plugins/timestamps/index.js";
|
|
26
30
|
import { softDelete } from "../plugins/soft-delete/index.js";
|
|
27
31
|
import { tenant } from "../plugins/tenant/index.js";
|
|
@@ -61,8 +65,9 @@ async function signTestJwt(secret, claims) {
|
|
|
61
65
|
}
|
|
62
66
|
/**
|
|
63
67
|
* Accepts `signTestJwt` tokens as users, for API servers tested against the
|
|
64
|
-
* local stack: `createServer(betterSupabase, { auth: { resolvers:
|
|
65
|
-
* Tokens that are not HS256-signed with `secret`
|
|
68
|
+
* local stack: `createServer(betterSupabase, { auth: { resolvers:
|
|
69
|
+
* [localAuth(secret)] } })`. Tokens that are not HS256-signed with `secret`
|
|
70
|
+
* fall through. Test-only.
|
|
66
71
|
*/
|
|
67
72
|
function localAuth(secret) {
|
|
68
73
|
const key = crypto.subtle.importKey("raw", encoder.encode(secret), {
|
|
@@ -120,8 +125,8 @@ async function signEs256(key, kid, claims) {
|
|
|
120
125
|
return `${header}.${body}.${toBase64Url(new Uint8Array(signature))}`;
|
|
121
126
|
}
|
|
122
127
|
/**
|
|
123
|
-
* Signs an ES256 access token with a private JWK, the way the local stack
|
|
124
|
-
*
|
|
128
|
+
* Signs an ES256 access token with a private JWK, the way the local stack signs
|
|
129
|
+
* them once `signing_keys_path` is set. Test-only.
|
|
125
130
|
*/
|
|
126
131
|
async function signTestJwtWithKey(key, claims) {
|
|
127
132
|
const { kid, ...jwk } = key;
|
|
@@ -130,7 +135,10 @@ async function signTestJwtWithKey(key, claims) {
|
|
|
130
135
|
namedCurve: "P-256"
|
|
131
136
|
}, false, ["sign"]), kid, claims);
|
|
132
137
|
}
|
|
133
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* An in-memory ES256 key pair that signs tokens like Supabase Auth's asymmetric
|
|
140
|
+
* keys.
|
|
141
|
+
*/
|
|
134
142
|
async function createTestSigner() {
|
|
135
143
|
const pair = await crypto.subtle.generateKey({
|
|
136
144
|
name: "ECDSA",
|
|
@@ -150,7 +158,10 @@ async function createTestSigner() {
|
|
|
150
158
|
//#endregion
|
|
151
159
|
//#region src/testing/local-key.ts
|
|
152
160
|
const SIGNING_KEYS_PATH = /^\s*signing_keys_path\s*=\s*"([^"]+)"/m;
|
|
153
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* `supabase/config.toml`'s `signing_keys_path`, else
|
|
163
|
+
* `supabase/signing_keys.json`, in `from` or a parent.
|
|
164
|
+
*/
|
|
154
165
|
async function findSigningKeys(from) {
|
|
155
166
|
for (let dir = resolve(from);; dir = dirname(dir)) {
|
|
156
167
|
const supabase = join(dir, "supabase");
|
|
@@ -166,8 +177,9 @@ async function findSigningKeys(from) {
|
|
|
166
177
|
const isSigningKey = (value) => typeof value === "object" && value !== null && "kid" in value && typeof value.kid === "string" && "d" in value && typeof value.d === "string";
|
|
167
178
|
/**
|
|
168
179
|
* The key the local stack signs with: the first entry of the file
|
|
169
|
-
* `better-supabase keys` wrote. `path` defaults to
|
|
170
|
-
* then `signing_keys_path` from the nearest
|
|
180
|
+
* `better-supabase keys` wrote. `path` defaults to
|
|
181
|
+
* `$SUPABASE_SIGNING_KEYS_PATH`, then `signing_keys_path` from the nearest
|
|
182
|
+
* `supabase/config.toml`.
|
|
171
183
|
*/
|
|
172
184
|
async function localSigningKey(path) {
|
|
173
185
|
const file = path ?? process.env["SUPABASE_SIGNING_KEYS_PATH"] ?? await findSigningKeys(process.cwd());
|
|
@@ -177,7 +189,10 @@ async function localSigningKey(path) {
|
|
|
177
189
|
if (!isSigningKey(first)) throw new TypeError(`${file} has no private ES256 key first.`);
|
|
178
190
|
return first;
|
|
179
191
|
}
|
|
180
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* Signs a token with the local stack's ES256 key (see `localSigningKey`).
|
|
194
|
+
* Test-only.
|
|
195
|
+
*/
|
|
181
196
|
async function signLocalJwt(claims, path) {
|
|
182
197
|
return signTestJwtWithKey(await localSigningKey(path), claims);
|
|
183
198
|
}
|
|
@@ -186,7 +201,10 @@ async function signLocalJwt(claims, path) {
|
|
|
186
201
|
/** The local CLI stack's default JWT secret. */
|
|
187
202
|
const LOCAL_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
188
203
|
const internals = /* @__PURE__ */ new WeakMap();
|
|
189
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* The pool and identity behind a user from `asUser`, or `undefined` for any
|
|
206
|
+
* other object.
|
|
207
|
+
*/
|
|
190
208
|
function internalsOf(user) {
|
|
191
209
|
return internals.get(user);
|
|
192
210
|
}
|
|
@@ -214,13 +232,16 @@ async function signFor(stack, url, claims) {
|
|
|
214
232
|
}
|
|
215
233
|
}
|
|
216
234
|
/**
|
|
217
|
-
* A test user against the local stack: a signed token and repositories that
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
235
|
+
* A test user against the local stack: a signed token and repositories that run
|
|
236
|
+
* as that user, for live RLS tests. The token is ES256-signed with the key from
|
|
237
|
+
* `better-supabase keys`; pass `{ alg: 'HS256' }` for a stack that still uses
|
|
238
|
+
* the shared JWT secret.
|
|
221
239
|
*
|
|
222
240
|
* ```ts
|
|
223
|
-
* const alice = await asUser(betterSupabase, {
|
|
241
|
+
* const alice = await asUser(betterSupabase, {
|
|
242
|
+
* sub: aliceId,
|
|
243
|
+
* tenant_id: acme,
|
|
244
|
+
* });
|
|
224
245
|
* expect(await alice.db.customers.count().orThrow()).toBe(3);
|
|
225
246
|
* ```
|
|
226
247
|
*/
|
|
@@ -275,11 +296,13 @@ function list(value) {
|
|
|
275
296
|
}
|
|
276
297
|
/**
|
|
277
298
|
* Supabase Lite in this process, for tests without Docker: an in-memory
|
|
278
|
-
* database with your schema, Auth with fresh API keys, and supabase-js
|
|
279
|
-
*
|
|
299
|
+
* database with your schema, Auth with fresh API keys, and supabase-js clients
|
|
300
|
+
* whose requests go straight to Lite's `fetch` handler (no port).
|
|
280
301
|
*
|
|
281
302
|
* ```ts
|
|
282
|
-
* await using stack = await liteStack({
|
|
303
|
+
* await using stack = await liteStack({
|
|
304
|
+
* schemas: [await readFile("supabase/schemas/notes.sql", "utf8")],
|
|
305
|
+
* });
|
|
283
306
|
* const alice = await stack.asUser(betterSupabase, { sub: aliceId });
|
|
284
307
|
* expect(await alice.db.notes.count().orThrow()).toBe(1);
|
|
285
308
|
* ```
|
|
@@ -461,8 +484,8 @@ async function expectPageBudget(page, expectation) {
|
|
|
461
484
|
//#endregion
|
|
462
485
|
//#region src/testing/instant.ts
|
|
463
486
|
/**
|
|
464
|
-
* `@next/playwright` is an optional peer: loading it on demand keeps it out
|
|
465
|
-
*
|
|
487
|
+
* `@next/playwright` is an optional peer: loading it on demand keeps it out of
|
|
488
|
+
* apps that never call `expectInstant`, and a missing install returns
|
|
466
489
|
* `undefined` so the caller can say how to add it.
|
|
467
490
|
*/
|
|
468
491
|
async function loadInstant() {
|
|
@@ -490,9 +513,9 @@ async function assertUnderLock(expectation) {
|
|
|
490
513
|
}
|
|
491
514
|
/**
|
|
492
515
|
* Runs `during` inside `@next/playwright`'s `instant()`, checks what the
|
|
493
|
-
* prefetched UI shows while the lock holds, and with `maxCalls` or
|
|
494
|
-
*
|
|
495
|
-
*
|
|
516
|
+
* prefetched UI shows while the lock holds, and with `maxCalls` or `maxWaves`
|
|
517
|
+
* checks the navigation's database budget like `expectDbBudget`. Needs a `next
|
|
518
|
+
* build` with the testing API exposed.
|
|
496
519
|
*/
|
|
497
520
|
async function expectInstant(page, expectation) {
|
|
498
521
|
const instant = await loadInstant();
|
|
@@ -578,31 +601,31 @@ function statement(table, rows) {
|
|
|
578
601
|
});
|
|
579
602
|
return `insert into ${`${ident(table.schema)}.${ident(table.name)}`} (${columns.map((key) => ident(table.columns[key].db)).join(", ")}) values\n${values.join(",\n")}\non conflict do nothing;`;
|
|
580
603
|
}
|
|
604
|
+
function statementsOf(meta, fixtures, label) {
|
|
605
|
+
const keys = Object.keys(fixtures).filter((key) => fixtures[key] !== void 0);
|
|
606
|
+
for (const key of keys) {
|
|
607
|
+
const table = meta.tables[key];
|
|
608
|
+
if (!table) throw new TypeError(`${label}: unknown table "${key}"`);
|
|
609
|
+
if (table.kind === "view") throw new TypeError(`${label}: "${key}" is a view`);
|
|
610
|
+
}
|
|
611
|
+
return order(meta, keys).flatMap((key) => {
|
|
612
|
+
const sql = statement(meta.tables[key], fixtures[key]);
|
|
613
|
+
return sql ? [sql] : [];
|
|
614
|
+
});
|
|
615
|
+
}
|
|
581
616
|
/**
|
|
582
|
-
* Typed fixtures shared by `supabase/seeds` and your tests. Rows use app
|
|
583
|
-
*
|
|
617
|
+
* Typed fixtures shared by `supabase/seeds` and your tests. Rows use app casing
|
|
618
|
+
* and Insert types; `better-supabase seed` renders them to SQL.
|
|
584
619
|
*
|
|
585
620
|
* ```ts
|
|
586
621
|
* export const seed = defineSeed(betterSupabase, {
|
|
587
|
-
* organizations: { acme: { id: ACME, name:
|
|
588
|
-
* customers: { first: { organizationId: ACME, name:
|
|
622
|
+
* organizations: { acme: { id: ACME, name: "Acme" } },
|
|
623
|
+
* customers: { first: { organizationId: ACME, name: "First customer" } },
|
|
589
624
|
* });
|
|
590
625
|
* ```
|
|
591
626
|
*/
|
|
592
627
|
function defineSeed(betterSupabase, fixtures) {
|
|
593
|
-
const
|
|
594
|
-
const statements = () => {
|
|
595
|
-
const keys = Object.keys(fixtures).filter((key) => fixtures[key] !== void 0);
|
|
596
|
-
for (const key of keys) {
|
|
597
|
-
const table = meta.tables[key];
|
|
598
|
-
if (!table) throw new TypeError(`seed: unknown table "${key}"`);
|
|
599
|
-
if (table.kind === "view") throw new TypeError(`seed: "${key}" is a view`);
|
|
600
|
-
}
|
|
601
|
-
return order(meta, keys).flatMap((key) => {
|
|
602
|
-
const sql = statement(meta.tables[key], fixtures[key]);
|
|
603
|
-
return sql ? [sql] : [];
|
|
604
|
-
});
|
|
605
|
-
};
|
|
628
|
+
const statements = () => statementsOf(betterSupabase.meta, fixtures, "seed");
|
|
606
629
|
return {
|
|
607
630
|
[SEED]: true,
|
|
608
631
|
rows: fixtures,
|
|
@@ -613,6 +636,33 @@ function defineSeed(betterSupabase, fixtures) {
|
|
|
613
636
|
}
|
|
614
637
|
};
|
|
615
638
|
}
|
|
639
|
+
const TENANT_SEED = Symbol.for("better-supabase.tenant-seed");
|
|
640
|
+
function isTenantSeed(value) {
|
|
641
|
+
return typeof value === "object" && value !== null && TENANT_SEED in value;
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Fixtures for one tenant, built from its id. `better-supabase seed --tenant`
|
|
645
|
+
* applies them to existing tenants, and `seedTenantOnCreate` to each tenant
|
|
646
|
+
* created in development.
|
|
647
|
+
*
|
|
648
|
+
* ```ts
|
|
649
|
+
* export const seed = defineTenantSeed(betterSupabase, (tenant) => ({
|
|
650
|
+
* projects: {
|
|
651
|
+
* demo: { organizationId: tenant.id, name: "Demo project" },
|
|
652
|
+
* },
|
|
653
|
+
* }));
|
|
654
|
+
* ```
|
|
655
|
+
*/
|
|
656
|
+
function defineTenantSeed(betterSupabase, fixtures) {
|
|
657
|
+
const statements = (tenant) => statementsOf(betterSupabase.meta, fixtures(tenant), "tenant seed");
|
|
658
|
+
return {
|
|
659
|
+
[TENANT_SEED]: true,
|
|
660
|
+
statements,
|
|
661
|
+
async insert(sql, tenant) {
|
|
662
|
+
for (const text of statements(tenant)) await sql.queryRaw(text);
|
|
663
|
+
}
|
|
664
|
+
};
|
|
665
|
+
}
|
|
616
666
|
//#endregion
|
|
617
667
|
//#region src/testing/scope.ts
|
|
618
668
|
function env$1(names) {
|
|
@@ -623,21 +673,31 @@ function env$1(names) {
|
|
|
623
673
|
}
|
|
624
674
|
}
|
|
625
675
|
/**
|
|
626
|
-
* Fresh rows for one test, so tests that run at the same time never share
|
|
627
|
-
*
|
|
628
|
-
*
|
|
629
|
-
*
|
|
630
|
-
*
|
|
676
|
+
* Fresh rows for one test, so tests that run at the same time never share data.
|
|
677
|
+
* It creates a new tenant id, inserts the fixtures that `build` returns through
|
|
678
|
+
* the service role (RLS and plugins don't apply), and hands back the inserted
|
|
679
|
+
* rows. Call `cleanup()` in `afterEach` (or `await using`) to delete them. A
|
|
680
|
+
* user from `asUser` then reads them over PostgREST like any other.
|
|
631
681
|
*
|
|
632
682
|
* ```ts
|
|
633
683
|
* const scope = await scopedSeed(
|
|
634
684
|
* betterSupabase,
|
|
635
685
|
* ({ tenant, id }) => ({
|
|
636
|
-
* customers: {
|
|
686
|
+
* customers: {
|
|
687
|
+
* first: { organizationId: tenant, name: `first-${id()}` },
|
|
688
|
+
* },
|
|
637
689
|
* }),
|
|
638
|
-
* {
|
|
690
|
+
* {
|
|
691
|
+
* tenant: {
|
|
692
|
+
* table: "organizations",
|
|
693
|
+
* row: (id) => ({ id, name: id, slug: id }),
|
|
694
|
+
* },
|
|
695
|
+
* },
|
|
639
696
|
* );
|
|
640
|
-
* const alice = await asUser(betterSupabase, {
|
|
697
|
+
* const alice = await asUser(betterSupabase, {
|
|
698
|
+
* sub: aliceId,
|
|
699
|
+
* tenant_id: scope.tenant,
|
|
700
|
+
* });
|
|
641
701
|
* expect(await alice.db.customers.count().orThrow()).toBe(1);
|
|
642
702
|
* await scope.cleanup();
|
|
643
703
|
* ```
|
|
@@ -672,7 +732,7 @@ async function scopedSeed(betterSupabase, build, options = {}) {
|
|
|
672
732
|
return created;
|
|
673
733
|
};
|
|
674
734
|
const remove = async () => {
|
|
675
|
-
const pending = cleanup.splice(0).
|
|
735
|
+
const pending = cleanup.splice(0).toReversed();
|
|
676
736
|
let failure;
|
|
677
737
|
for (const run of pending) try {
|
|
678
738
|
await run();
|
|
@@ -700,18 +760,21 @@ async function scopedSeed(betterSupabase, build, options = {}) {
|
|
|
700
760
|
[Symbol.asyncDispose]: remove
|
|
701
761
|
};
|
|
702
762
|
}
|
|
703
|
-
/**
|
|
763
|
+
/**
|
|
764
|
+
* The error `withRollback` throws to end its transaction; never reaches
|
|
765
|
+
* callers.
|
|
766
|
+
*/
|
|
704
767
|
var Rollback = class extends Error {};
|
|
705
768
|
/**
|
|
706
|
-
* Runs `fn` as the user over direct Postgres inside one transaction and
|
|
707
|
-
*
|
|
769
|
+
* Runs `fn` as the user over direct Postgres inside one transaction and always
|
|
770
|
+
* rolls it back, so the test leaves no rows behind. `fn` gets the same
|
|
708
771
|
* repositories as `user.sql`. Only the `sql` path rolls back: `user.db` talks
|
|
709
772
|
* to PostgREST over HTTP and commits on its own.
|
|
710
773
|
*
|
|
711
774
|
* ```ts
|
|
712
775
|
* const alice = await asUser(betterSupabase, claims, { postgres });
|
|
713
776
|
* await withRollback(alice, async (db) => {
|
|
714
|
-
* await db.customers.create({ organizationId, name:
|
|
777
|
+
* await db.customers.create({ organizationId, name: "Temp" }).orThrow();
|
|
715
778
|
* expect(await db.customers.count().orThrow()).toBe(1);
|
|
716
779
|
* });
|
|
717
780
|
* ```
|
|
@@ -719,20 +782,102 @@ var Rollback = class extends Error {};
|
|
|
719
782
|
async function withRollback(user, fn) {
|
|
720
783
|
const internal = internalsOf(user);
|
|
721
784
|
if (!internal?.postgres) throw new TypeError("withRollback needs a user from asUser(betterSupabase, claims, { postgres }): it rolls back over direct Postgres, not PostgREST.");
|
|
785
|
+
return rolledBack(internal.postgres, internal.claims, async (client) => {
|
|
786
|
+
return fn(internal.connect(client));
|
|
787
|
+
});
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* Runs `fn` over direct Postgres as the user that `claims` describe, inside one
|
|
791
|
+
* transaction that always rolls back. The transaction sets `role` (from
|
|
792
|
+
* `claims.role`, else `authenticated`) and `request.jwt.claims`, so
|
|
793
|
+
* `auth.uid()`, `auth.jwt()` and RLS answer as they would for that user's
|
|
794
|
+
* request. Use it for raw SQL; `withRollback` gives repositories instead.
|
|
795
|
+
*
|
|
796
|
+
* ```ts
|
|
797
|
+
* await withClaims(
|
|
798
|
+
* postgres,
|
|
799
|
+
* { sub: aliceId, tenant_id: orgId },
|
|
800
|
+
* async (sql) => {
|
|
801
|
+
* const [row] = await sql.queryRaw<{ id: string }>(
|
|
802
|
+
* "select auth.uid() as id",
|
|
803
|
+
* );
|
|
804
|
+
* expect(row?.id).toBe(aliceId);
|
|
805
|
+
* },
|
|
806
|
+
* );
|
|
807
|
+
* ```
|
|
808
|
+
*/
|
|
809
|
+
function withClaims(postgres, claims, fn) {
|
|
810
|
+
return rolledBack(postgres, claims, fn);
|
|
811
|
+
}
|
|
812
|
+
async function rolledBack(postgres, claims, fn) {
|
|
722
813
|
let outcome;
|
|
723
814
|
try {
|
|
724
|
-
await
|
|
725
|
-
outcome = { value: await fn(
|
|
815
|
+
await postgres.transaction(async (client) => {
|
|
816
|
+
outcome = { value: await fn(client) };
|
|
726
817
|
throw new Rollback("rollback");
|
|
727
|
-
}, { claims
|
|
818
|
+
}, { claims });
|
|
728
819
|
} catch (error) {
|
|
729
820
|
if (!(error instanceof Rollback) || !outcome) throw error;
|
|
730
821
|
}
|
|
731
822
|
return outcome.value;
|
|
732
823
|
}
|
|
733
824
|
//#endregion
|
|
825
|
+
//#region src/testing/factory.ts
|
|
826
|
+
function isRow(value) {
|
|
827
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
|
|
828
|
+
}
|
|
829
|
+
/**
|
|
830
|
+
* A factory from the defaults of call `n` and the foreign keys it resolves,
|
|
831
|
+
* each mapped to the column it references in the parent row. `factories()`
|
|
832
|
+
* generates one per table:
|
|
833
|
+
*
|
|
834
|
+
* ```ts
|
|
835
|
+
* const tasks = defineFactory<
|
|
836
|
+
* InsertOf<"tasks">,
|
|
837
|
+
* "customerId",
|
|
838
|
+
* "customerId"
|
|
839
|
+
* >((n) => ({ title: `title ${n}` }), { customerId: "id" });
|
|
840
|
+
* tasks({ customerId: acme });
|
|
841
|
+
* ```
|
|
842
|
+
*/
|
|
843
|
+
function defineFactory(defaults, refs) {
|
|
844
|
+
const columns = refs;
|
|
845
|
+
let calls = 0;
|
|
846
|
+
const build = (input = {}) => {
|
|
847
|
+
calls += 1;
|
|
848
|
+
const row = { ...defaults(calls) };
|
|
849
|
+
for (const [key, value] of Object.entries(input)) {
|
|
850
|
+
const column = columns[key];
|
|
851
|
+
row[key] = column !== void 0 && isRow(value) ? value[column] : value;
|
|
852
|
+
}
|
|
853
|
+
return row;
|
|
854
|
+
};
|
|
855
|
+
const factory = (...args) => build(args[0]);
|
|
856
|
+
return Object.assign(factory, {
|
|
857
|
+
many: (count, ...args) => Array.from({ length: count }, () => build(args[0])),
|
|
858
|
+
create: (repository, ...args) => repository.create(build(args[0]))
|
|
859
|
+
});
|
|
860
|
+
}
|
|
861
|
+
/** A storage path in bucket `B` for a factory default. */
|
|
862
|
+
function factoryPath(_bucket, path) {
|
|
863
|
+
return path;
|
|
864
|
+
}
|
|
865
|
+
/**
|
|
866
|
+
* The fixed times the generated factories use (2026-01-01), read through the
|
|
867
|
+
* Temporal the app provides.
|
|
868
|
+
*/
|
|
869
|
+
const factoryTime = {
|
|
870
|
+
instant: () => temporal().Instant.from("2026-01-01T00:00:00Z"),
|
|
871
|
+
plainDate: () => temporal().PlainDate.from("2026-01-01"),
|
|
872
|
+
plainDateTime: () => temporal().PlainDateTime.from("2026-01-01T00:00:00"),
|
|
873
|
+
plainTime: () => temporal().PlainTime.from("00:00:00")
|
|
874
|
+
};
|
|
875
|
+
//#endregion
|
|
734
876
|
//#region src/testing/conformance.ts
|
|
735
|
-
/**
|
|
877
|
+
/**
|
|
878
|
+
* Thrown by a conformance kit when any check fails. Lists every failure, not
|
|
879
|
+
* just the first.
|
|
880
|
+
*/
|
|
736
881
|
var ConformanceError = class extends Error {
|
|
737
882
|
report;
|
|
738
883
|
constructor(report) {
|
|
@@ -803,9 +948,9 @@ function env(names) {
|
|
|
803
948
|
/**
|
|
804
949
|
* Checks row-level security between two tenants against a running stack: for
|
|
805
950
|
* each table, a user of one tenant must not select, insert, update or delete
|
|
806
|
-
* the other tenant's rows. Runs without `betterSupabase`'s plugins, so the
|
|
807
|
-
* plugin can't hide a missing policy. Throws a `ConformanceError`
|
|
808
|
-
* table and command that leaks; removes every row it created.
|
|
951
|
+
* the other tenant's rows. Runs without `betterSupabase`'s plugins, so the
|
|
952
|
+
* `tenant()` plugin can't hide a missing policy. Throws a `ConformanceError`
|
|
953
|
+
* naming each table and command that leaks; removes every row it created.
|
|
809
954
|
*
|
|
810
955
|
* ```ts
|
|
811
956
|
* await expectTenantIsolation(betterSupabase, {
|
|
@@ -815,8 +960,11 @@ function env(names) {
|
|
|
815
960
|
* ],
|
|
816
961
|
* tables: {
|
|
817
962
|
* tags: {
|
|
818
|
-
* row: (tenant, n) => ({
|
|
819
|
-
*
|
|
963
|
+
* row: (tenant, n) => ({
|
|
964
|
+
* organizationId: tenant.id,
|
|
965
|
+
* name: `iso-${n}`,
|
|
966
|
+
* }),
|
|
967
|
+
* update: { name: "changed" },
|
|
820
968
|
* },
|
|
821
969
|
* },
|
|
822
970
|
* });
|
|
@@ -890,7 +1038,7 @@ async function expectTenantIsolation(betterSupabase, options) {
|
|
|
890
1038
|
}
|
|
891
1039
|
return await conform("Tenant isolation", [...reads, ...deletes]);
|
|
892
1040
|
} finally {
|
|
893
|
-
for (const remove of cleanup.
|
|
1041
|
+
for (const remove of cleanup.toReversed()) await remove();
|
|
894
1042
|
}
|
|
895
1043
|
}
|
|
896
1044
|
//#endregion
|
|
@@ -925,13 +1073,13 @@ const agentActReadOnly = {
|
|
|
925
1073
|
act: chain
|
|
926
1074
|
};
|
|
927
1075
|
/**
|
|
928
|
-
* `supportSession` and `supportSessionReadOnly` are what `supportClaims`
|
|
929
|
-
*
|
|
930
|
-
*
|
|
931
|
-
*
|
|
932
|
-
*
|
|
933
|
-
* `
|
|
934
|
-
*
|
|
1076
|
+
* `supportSession` and `supportSessionReadOnly` are what `supportClaims` mints
|
|
1077
|
+
* (`act.kind: "support"`), `impersonation` what `actingAs` mints (`act.kind:
|
|
1078
|
+
* "impersonation"`), `oauthClient` a Supabase OAuth server token (its identity
|
|
1079
|
+
* scopes `openid` and `email` are left out of the delegation), `agentChain` an
|
|
1080
|
+
* RFC 8693 chain without `kind`, and `agentRun` and `agentRunReadOnly` what
|
|
1081
|
+
* `agentClaims` mints over that chain (`act.kind: "agent"`, with `readOnly:
|
|
1082
|
+
* true` for the second).
|
|
935
1083
|
*/
|
|
936
1084
|
const supabaseClaimFixtures = {
|
|
937
1085
|
supportSession: {
|
|
@@ -1091,12 +1239,12 @@ const refused = {
|
|
|
1091
1239
|
code: "ACTOR_INVALID"
|
|
1092
1240
|
};
|
|
1093
1241
|
/**
|
|
1094
|
-
* `legacySupportSession` is a 0.5.0 support token: `session_id` without
|
|
1095
|
-
*
|
|
1096
|
-
*
|
|
1097
|
-
*
|
|
1098
|
-
*
|
|
1099
|
-
*
|
|
1242
|
+
* `legacySupportSession` is a 0.5.0 support token: `session_id` without `kind`.
|
|
1243
|
+
* better-supabase refuses it instead of reading it as a support session; mint a
|
|
1244
|
+
* new one with `supportClaims`. The others are malformed levels: a support or
|
|
1245
|
+
* agent `read_only` that is not a boolean, an agent with a `session_id`, an
|
|
1246
|
+
* empty tool name or `tools` that is not a list, a `kind` better-supabase does
|
|
1247
|
+
* not know, and a nested level without `sub`.
|
|
1100
1248
|
*/
|
|
1101
1249
|
const supabaseInvalidClaimFixtures = {
|
|
1102
1250
|
legacySupportSession: {
|
|
@@ -1189,6 +1337,31 @@ const supabaseInvalidClaimFixtures = {
|
|
|
1189
1337
|
}
|
|
1190
1338
|
};
|
|
1191
1339
|
//#endregion
|
|
1340
|
+
//#region src/testing/tenant-seed.ts
|
|
1341
|
+
const development = () => process.env["NODE_ENV"] === "development";
|
|
1342
|
+
/**
|
|
1343
|
+
* Applies `seed` to each organization created through the organizations block,
|
|
1344
|
+
* so a new tenant starts with demo data in development. The seed runs after the
|
|
1345
|
+
* event and can never change the result of the create call. Returns a function
|
|
1346
|
+
* that stops listening.
|
|
1347
|
+
*
|
|
1348
|
+
* ```ts
|
|
1349
|
+
* seedTenantOnCreate(betterSupabase, tenantSeed, { sql: serviceSql });
|
|
1350
|
+
* ```
|
|
1351
|
+
*/
|
|
1352
|
+
function seedTenantOnCreate(betterSupabase, seed, options) {
|
|
1353
|
+
if (!(options.enabled ?? development())) return () => {};
|
|
1354
|
+
const report = options.onError ?? ((error, organizationId) => {
|
|
1355
|
+
console.error(`better-supabase: the tenant seed failed for ${organizationId}`, error);
|
|
1356
|
+
});
|
|
1357
|
+
return onBlockEvent(betterSupabase, organizationsEvents, "organization.created", (event) => {
|
|
1358
|
+
const id = event.data.organizationId;
|
|
1359
|
+
seed.insert(options.sql, { id }).catch((error) => {
|
|
1360
|
+
report(error, id);
|
|
1361
|
+
});
|
|
1362
|
+
});
|
|
1363
|
+
}
|
|
1364
|
+
//#endregion
|
|
1192
1365
|
//#region src/testing/kits/executor.ts
|
|
1193
1366
|
const recorder = (ops) => ({
|
|
1194
1367
|
name: "recorder",
|
|
@@ -1200,7 +1373,10 @@ const recorder = (ops) => ({
|
|
|
1200
1373
|
}));
|
|
1201
1374
|
}
|
|
1202
1375
|
});
|
|
1203
|
-
/**
|
|
1376
|
+
/**
|
|
1377
|
+
* The operation `run` sends to the executor, built by `betterSupabase` without
|
|
1378
|
+
* touching a database.
|
|
1379
|
+
*/
|
|
1204
1380
|
async function captureOp(betterSupabase, run) {
|
|
1205
1381
|
const ops = [];
|
|
1206
1382
|
await run(betterSupabase.connect(recorder(ops)));
|
|
@@ -1218,12 +1394,17 @@ const hasName = (subject) => ["has a name", () => {
|
|
|
1218
1394
|
}];
|
|
1219
1395
|
/**
|
|
1220
1396
|
* Proves an `Executor` meets the contract: rows keyed by the selection's
|
|
1221
|
-
* aliases, counts, `aborted` errors, failures returned as `Result`s rather
|
|
1222
|
-
*
|
|
1223
|
-
*
|
|
1397
|
+
* aliases, counts, `aborted` errors, failures returned as `Result`s rather than
|
|
1398
|
+
* thrown, and (with `create`) a write round trip and a `deleteMany` that
|
|
1399
|
+
* `maxAffected` refuses without deleting anything.
|
|
1224
1400
|
*
|
|
1225
1401
|
* ```ts
|
|
1226
|
-
* it(
|
|
1402
|
+
* it("conforms", () =>
|
|
1403
|
+
* testExecutor(myExecutor, {
|
|
1404
|
+
* betterSupabase,
|
|
1405
|
+
* table: "tags",
|
|
1406
|
+
* create: { name: "x" },
|
|
1407
|
+
* }));
|
|
1227
1408
|
* ```
|
|
1228
1409
|
*/
|
|
1229
1410
|
function testExecutor(executor, options) {
|
|
@@ -1442,7 +1623,10 @@ function testCacheAdapter(adapter, options = {}) {
|
|
|
1442
1623
|
}
|
|
1443
1624
|
//#endregion
|
|
1444
1625
|
//#region src/testing/kits/event-sink.ts
|
|
1445
|
-
/**
|
|
1626
|
+
/**
|
|
1627
|
+
* Proves an `EventSink` accepts empty and full batches without mutating them,
|
|
1628
|
+
* and delivers them when readable.
|
|
1629
|
+
*/
|
|
1446
1630
|
function testEventSink(sink, options = {}) {
|
|
1447
1631
|
const events = toCloudEvents({
|
|
1448
1632
|
table: "customers",
|
|
@@ -1468,18 +1652,18 @@ function testEventSink(sink, options = {}) {
|
|
|
1468
1652
|
}
|
|
1469
1653
|
//#endregion
|
|
1470
1654
|
//#region src/testing/kits/payment-provider.ts
|
|
1471
|
-
const kindOf$
|
|
1655
|
+
const kindOf$3 = (result) => result.ok ? "ok" : result.error.kind;
|
|
1472
1656
|
const half = (value) => ({
|
|
1473
1657
|
amount: value.amount / 2n,
|
|
1474
1658
|
currency: value.currency
|
|
1475
1659
|
});
|
|
1476
1660
|
/**
|
|
1477
1661
|
* Runs the `PaymentProvider` contract against `provider`: the API version,
|
|
1478
|
-
* refused amounts, a created payment and its fields, an idempotency key
|
|
1479
|
-
*
|
|
1480
|
-
*
|
|
1481
|
-
*
|
|
1482
|
-
*
|
|
1662
|
+
* refused amounts, a created payment and its fields, an idempotency key that
|
|
1663
|
+
* pays once, `not_found` for an unknown payment, and, with the options that
|
|
1664
|
+
* drive them, capture and refunds of an authorized payment and webhook
|
|
1665
|
+
* verification. Every call carries a fresh reference, so the kit runs against a
|
|
1666
|
+
* test account without cleanup.
|
|
1483
1667
|
*/
|
|
1484
1668
|
function testPaymentProvider(provider, options = {}) {
|
|
1485
1669
|
const amount = options.amount ?? money(1000n, "EUR");
|
|
@@ -1508,12 +1692,12 @@ function testPaymentProvider(provider, options = {}) {
|
|
|
1508
1692
|
},
|
|
1509
1693
|
reference: reference()
|
|
1510
1694
|
});
|
|
1511
|
-
expect(kindOf$
|
|
1695
|
+
expect(kindOf$3(zero) === "invalid_input", `zero gave ${kindOf$3(zero)}`);
|
|
1512
1696
|
const plain = await provider.createPayment({
|
|
1513
1697
|
amount: 1e3,
|
|
1514
1698
|
reference: reference()
|
|
1515
1699
|
});
|
|
1516
|
-
expect(kindOf$
|
|
1700
|
+
expect(kindOf$3(plain) === "invalid_input", `a number gave ${kindOf$3(plain)}`);
|
|
1517
1701
|
}],
|
|
1518
1702
|
["creates a payment with its amount, reference and provider", async () => {
|
|
1519
1703
|
const ref = reference();
|
|
@@ -1541,9 +1725,9 @@ function testPaymentProvider(provider, options = {}) {
|
|
|
1541
1725
|
["returns not_found for an unknown payment", async () => {
|
|
1542
1726
|
const id = `conformance_missing_${crypto.randomUUID()}`;
|
|
1543
1727
|
const captured = await provider.capture(id);
|
|
1544
|
-
expect(kindOf$
|
|
1728
|
+
expect(kindOf$3(captured) === "not_found", `capture gave ${kindOf$3(captured)}`);
|
|
1545
1729
|
const refunded = await provider.refund(id);
|
|
1546
|
-
expect(kindOf$
|
|
1730
|
+
expect(kindOf$3(refunded) === "not_found", `refund gave ${kindOf$3(refunded)}`);
|
|
1547
1731
|
}],
|
|
1548
1732
|
provider.get !== void 0 && ["reads a payment back", async () => {
|
|
1549
1733
|
const created = await provider.createPayment({
|
|
@@ -1569,7 +1753,7 @@ function testPaymentProvider(provider, options = {}) {
|
|
|
1569
1753
|
expect(refund.amount.amount === part.amount, `refunded ${String(refund.amount.amount)}`);
|
|
1570
1754
|
expect(refund.status === "succeeded" || refund.status === "pending", `refund status is ${refund.status}`);
|
|
1571
1755
|
const tooMuch = await provider.refund(payment.id, { amount });
|
|
1572
|
-
expect(kindOf$
|
|
1756
|
+
expect(kindOf$3(tooMuch) === "invalid_input", `refunding more than is left gave ${kindOf$3(tooMuch)}`);
|
|
1573
1757
|
}],
|
|
1574
1758
|
provider.cancel !== void 0 && ["cancels a payment that was not captured", async () => {
|
|
1575
1759
|
const created = await provider.createPayment({
|
|
@@ -1593,20 +1777,20 @@ function testPaymentProvider(provider, options = {}) {
|
|
|
1593
1777
|
expect(event.paymentId === payment.id, `an event names payment ${event.paymentId}`);
|
|
1594
1778
|
}
|
|
1595
1779
|
const refused = await provider.parseWebhook(tampered);
|
|
1596
|
-
expect(kindOf$
|
|
1780
|
+
expect(kindOf$3(refused) === "unauthorized", `a tampered delivery gave ${kindOf$3(refused)}`);
|
|
1597
1781
|
}]
|
|
1598
1782
|
]);
|
|
1599
1783
|
}
|
|
1600
1784
|
//#endregion
|
|
1601
1785
|
//#region src/testing/kits/tax-provider.ts
|
|
1602
|
-
const kindOf$
|
|
1786
|
+
const kindOf$2 = (result) => result.ok ? "ok" : result.error.kind;
|
|
1603
1787
|
const sum = (values) => values.reduce((total, value) => total + value.amount, 0n);
|
|
1604
1788
|
/**
|
|
1605
|
-
* Runs the `TaxProvider` contract against `provider`: the API version,
|
|
1606
|
-
*
|
|
1607
|
-
*
|
|
1608
|
-
*
|
|
1609
|
-
*
|
|
1789
|
+
* Runs the `TaxProvider` contract against `provider`: the API version, refused
|
|
1790
|
+
* carts, a quote with one line per cart line in order and a total that adds up,
|
|
1791
|
+
* inclusive prices, shipping, exempt customers, commit, and full and partial
|
|
1792
|
+
* reversals with their limits. Every commit carries a fresh reference, so the
|
|
1793
|
+
* kit runs against a test account without cleanup.
|
|
1610
1794
|
*/
|
|
1611
1795
|
function testTaxProvider(provider, options) {
|
|
1612
1796
|
const currency = options.currency ?? "EUR";
|
|
@@ -1651,12 +1835,12 @@ function testTaxProvider(provider, options) {
|
|
|
1651
1835
|
id: "a",
|
|
1652
1836
|
amount: money(100n, other)
|
|
1653
1837
|
}] }));
|
|
1654
|
-
expect(kindOf$
|
|
1838
|
+
expect(kindOf$2(mixed) === "invalid_input", `mixed currencies gave ${kindOf$2(mixed)}`);
|
|
1655
1839
|
const nowhere = await provider.quote(cart({ address: {
|
|
1656
1840
|
...address,
|
|
1657
1841
|
country: ""
|
|
1658
1842
|
} }));
|
|
1659
|
-
expect(kindOf$
|
|
1843
|
+
expect(kindOf$2(nowhere) === "invalid_input", `no country gave ${kindOf$2(nowhere)}`);
|
|
1660
1844
|
}],
|
|
1661
1845
|
["quotes one line per cart line, in order, with a total that adds up", async () => {
|
|
1662
1846
|
const quote = await provider.quote(cart()).orThrow();
|
|
@@ -1722,7 +1906,7 @@ function testTaxProvider(provider, options) {
|
|
|
1722
1906
|
amount: money(sold.taxable.amount + 1n, currency)
|
|
1723
1907
|
}]
|
|
1724
1908
|
});
|
|
1725
|
-
expect(kindOf$
|
|
1909
|
+
expect(kindOf$2(tooMuch) === "invalid_input", `reversing more than was sold gave ${kindOf$2(tooMuch)}`);
|
|
1726
1910
|
const unknown = await provider.reverse({
|
|
1727
1911
|
transaction: sale,
|
|
1728
1912
|
reference: reference(),
|
|
@@ -1731,7 +1915,135 @@ function testTaxProvider(provider, options) {
|
|
|
1731
1915
|
lineId: "conformance-unknown"
|
|
1732
1916
|
}]
|
|
1733
1917
|
});
|
|
1734
|
-
expect(kindOf$
|
|
1918
|
+
expect(kindOf$2(unknown) === "invalid_input", `an unknown line gave ${kindOf$2(unknown)}`);
|
|
1919
|
+
}]
|
|
1920
|
+
]);
|
|
1921
|
+
}
|
|
1922
|
+
//#endregion
|
|
1923
|
+
//#region src/testing/kits/shipment-carrier.ts
|
|
1924
|
+
const kindOf$1 = (result) => result.ok ? "ok" : result.error.kind;
|
|
1925
|
+
const formats = LABEL_FORMATS;
|
|
1926
|
+
const statuses = TRACKING_STATUSES;
|
|
1927
|
+
function eventsValid(events, where, ordered) {
|
|
1928
|
+
for (const [index, event] of events.entries()) {
|
|
1929
|
+
expect(event.id.length > 0, `${where}: event ${index} has no id`);
|
|
1930
|
+
expect(statuses.includes(event.status), `${where}: event ${event.id} has status "${event.status}"`);
|
|
1931
|
+
const previous = events[index - 1];
|
|
1932
|
+
expect(!ordered || previous === void 0 || previous.occurredAt.epochNanoseconds <= event.occurredAt.epochNanoseconds, `${where}: events are not oldest first`);
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
/**
|
|
1936
|
+
* Runs the `ShipmentCarrier` contract against `carrier`: the API version,
|
|
1937
|
+
* refused requests, rates, a label with idempotent retries, tracking, voiding
|
|
1938
|
+
* the label and, with `webhook`, signed and forged tracking webhooks. Run it
|
|
1939
|
+
* against a carrier's test account: it buys one label and voids it.
|
|
1940
|
+
*/
|
|
1941
|
+
function testShipmentCarrier(carrier, options) {
|
|
1942
|
+
const request = {
|
|
1943
|
+
from: options.from,
|
|
1944
|
+
to: options.to,
|
|
1945
|
+
parcels: [{
|
|
1946
|
+
weightGrams: 1200,
|
|
1947
|
+
lengthMm: 300,
|
|
1948
|
+
widthMm: 200,
|
|
1949
|
+
heightMm: 100
|
|
1950
|
+
}],
|
|
1951
|
+
...options.currency === void 0 ? {} : { currency: options.currency }
|
|
1952
|
+
};
|
|
1953
|
+
const reference = `conformance-${crypto.randomUUID()}`;
|
|
1954
|
+
const key = `conformance-${crypto.randomUUID()}`;
|
|
1955
|
+
let label;
|
|
1956
|
+
const bought = async () => {
|
|
1957
|
+
label ??= await carrier.createLabel({
|
|
1958
|
+
...request,
|
|
1959
|
+
service: options.service,
|
|
1960
|
+
reference
|
|
1961
|
+
}, { idempotencyKey: key }).orThrow();
|
|
1962
|
+
return label;
|
|
1963
|
+
};
|
|
1964
|
+
return conform(`ShipmentCarrier "${carrier.name}"`, [
|
|
1965
|
+
["has apiVersion 1 and a name", () => {
|
|
1966
|
+
const version = carrier.apiVersion;
|
|
1967
|
+
expect(version === 1, `apiVersion is ${String(version)}`);
|
|
1968
|
+
expect(carrier.name.length > 0, "name is empty");
|
|
1969
|
+
}],
|
|
1970
|
+
["refuses a request without packages or with a bad country", async () => {
|
|
1971
|
+
const empty = await carrier.rates({
|
|
1972
|
+
...request,
|
|
1973
|
+
parcels: []
|
|
1974
|
+
});
|
|
1975
|
+
expect(kindOf$1(empty) === "invalid_input", `no packages gave ${kindOf$1(empty)}`);
|
|
1976
|
+
const nowhere = await carrier.rates({
|
|
1977
|
+
...request,
|
|
1978
|
+
to: {
|
|
1979
|
+
...request.to,
|
|
1980
|
+
country: ""
|
|
1981
|
+
}
|
|
1982
|
+
});
|
|
1983
|
+
expect(kindOf$1(nowhere) === "invalid_input", `no country gave ${kindOf$1(nowhere)}`);
|
|
1984
|
+
}],
|
|
1985
|
+
["quotes the service in the asked currency", async () => {
|
|
1986
|
+
const rates = await carrier.rates(request).orThrow();
|
|
1987
|
+
expect(rates.some((rate) => rate.service === options.service), `no rate for the "${options.service}" service`);
|
|
1988
|
+
for (const rate of rates) {
|
|
1989
|
+
expect(rate.carrier === carrier.name, `rate carrier is "${rate.carrier}"`);
|
|
1990
|
+
expect(isMoney(rate.amount) && rate.amount.amount >= 0n, `the ${rate.service} rate is not a Money of zero or more`);
|
|
1991
|
+
expect(options.currency === void 0 || rate.amount.currency === options.currency, `the ${rate.service} rate is in ${rate.amount.currency}`);
|
|
1992
|
+
}
|
|
1993
|
+
}],
|
|
1994
|
+
["refuses an unknown service", async () => {
|
|
1995
|
+
const unknown = await carrier.createLabel({
|
|
1996
|
+
...request,
|
|
1997
|
+
service: `conformance-${crypto.randomUUID()}`,
|
|
1998
|
+
reference
|
|
1999
|
+
});
|
|
2000
|
+
expect(kindOf$1(unknown) === "invalid_input", `an unknown service gave ${kindOf$1(unknown)}`);
|
|
2001
|
+
}],
|
|
2002
|
+
["buys a label with a tracking number, a cost and a known format", async () => {
|
|
2003
|
+
const found = await bought();
|
|
2004
|
+
expect(found.labelId.length > 0, "labelId is empty");
|
|
2005
|
+
expect(found.trackingNumber.length > 0, "trackingNumber is empty");
|
|
2006
|
+
expect(isMoney(found.cost), "cost is not a Money");
|
|
2007
|
+
expect(formats.includes(found.format), `format is "${found.format}"`);
|
|
2008
|
+
for (const url of [found.labelUrl, found.trackingUrl]) expect(url === void 0 || url.startsWith("https://"), `${String(url)} is not an https URL`);
|
|
2009
|
+
}],
|
|
2010
|
+
["returns the same label for the same idempotency key", async () => {
|
|
2011
|
+
const first = await bought();
|
|
2012
|
+
expect((await carrier.createLabel({
|
|
2013
|
+
...request,
|
|
2014
|
+
service: options.service,
|
|
2015
|
+
reference
|
|
2016
|
+
}, { idempotencyKey: key }).orThrow()).labelId === first.labelId, "a retry with the same key bought another label");
|
|
2017
|
+
}],
|
|
2018
|
+
["tracks the label, oldest event first", async () => {
|
|
2019
|
+
const found = await bought();
|
|
2020
|
+
eventsValid(await carrier.track(found.trackingNumber).orThrow(), "track", true);
|
|
2021
|
+
}],
|
|
2022
|
+
["answers not_found for an unknown tracking number", async () => {
|
|
2023
|
+
const unknown = await carrier.track(`conformance-${crypto.randomUUID()}`);
|
|
2024
|
+
expect(kindOf$1(unknown) === "not_found", `an unknown tracking number gave ${kindOf$1(unknown)}`);
|
|
2025
|
+
}],
|
|
2026
|
+
["voids the label", async () => {
|
|
2027
|
+
const found = await bought();
|
|
2028
|
+
expect((await carrier.cancel({
|
|
2029
|
+
labelId: found.labelId,
|
|
2030
|
+
trackingNumber: found.trackingNumber
|
|
2031
|
+
}).orThrow()).cancelled, "cancel did not report cancelled");
|
|
2032
|
+
}],
|
|
2033
|
+
["reads signed tracking webhooks and refuses forged ones", async () => {
|
|
2034
|
+
const { webhook } = options;
|
|
2035
|
+
if (webhook === void 0 || carrier.parseWebhook === void 0) {
|
|
2036
|
+
expect(webhook === void 0 && carrier.parseWebhook === void 0, webhook === void 0 ? "the carrier has parseWebhook; pass webhook to test it" : "webhook was passed but the carrier has no parseWebhook");
|
|
2037
|
+
return;
|
|
2038
|
+
}
|
|
2039
|
+
const updates = await carrier.parseWebhook(await webhook.valid()).orThrow();
|
|
2040
|
+
expect(updates.length > 0, "a valid webhook gave no updates");
|
|
2041
|
+
for (const update of updates) {
|
|
2042
|
+
expect(update.trackingNumber.length > 0, "an update has no tracking number");
|
|
2043
|
+
eventsValid(update.events, update.trackingNumber, false);
|
|
2044
|
+
}
|
|
2045
|
+
const forged = await carrier.parseWebhook(await webhook.forged());
|
|
2046
|
+
expect(kindOf$1(forged) === "unauthorized", `a forged webhook gave ${kindOf$1(forged)}`);
|
|
1735
2047
|
}]
|
|
1736
2048
|
]);
|
|
1737
2049
|
}
|
|
@@ -1740,8 +2052,8 @@ function testTaxProvider(provider, options) {
|
|
|
1740
2052
|
/**
|
|
1741
2053
|
* Proves an `IncomingDestination` accepts a delivery once per endpoint and
|
|
1742
2054
|
* message id: a repeat reports the first id as a duplicate, while another
|
|
1743
|
-
* message id or another endpoint is new.
|
|
1744
|
-
*
|
|
2055
|
+
* message id or another endpoint is new. It delivers four messages with random
|
|
2056
|
+
* endpoint ids; the destination keeps them.
|
|
1745
2057
|
*/
|
|
1746
2058
|
function testIncomingDestination(destination, options) {
|
|
1747
2059
|
const endpoint = crypto.randomUUID();
|
|
@@ -1782,11 +2094,11 @@ function testIncomingDestination(destination, options) {
|
|
|
1782
2094
|
//#endregion
|
|
1783
2095
|
//#region src/testing/kits/plugin.ts
|
|
1784
2096
|
/**
|
|
1785
|
-
* Proves a `Plugin` targets API v1, installs cleanly on its own and next to
|
|
1786
|
-
*
|
|
1787
|
-
* replacing base ones, keeps `context`, `transformQuery` and
|
|
1788
|
-
*
|
|
1789
|
-
*
|
|
2097
|
+
* Proves a `Plugin` targets API v1, installs cleanly on its own and next to the
|
|
2098
|
+
* first-party plugins in either order, adds repository methods without
|
|
2099
|
+
* replacing base ones, keeps `context`, `transformQuery` and `beforeMutation`
|
|
2100
|
+
* pure and deterministic, and keeps executors' results intact when it wraps
|
|
2101
|
+
* them.
|
|
1790
2102
|
*/
|
|
1791
2103
|
function testPlugin(plugin, options) {
|
|
1792
2104
|
const { betterSupabase } = options;
|
|
@@ -1923,9 +2235,9 @@ function claimedJob(queue, row) {
|
|
|
1923
2235
|
}
|
|
1924
2236
|
/**
|
|
1925
2237
|
* Proves a `QueueBackend` round-trips payloads, hides claimed messages for
|
|
1926
|
-
* their lease, counts attempts, retries and dead-letters on `fail`, and
|
|
1927
|
-
*
|
|
1928
|
-
*
|
|
2238
|
+
* their lease, counts attempts, retries and dead-letters on `fail`, and (when
|
|
2239
|
+
* it has `leases`) rejects a stale attempt and extends a lease. It writes to
|
|
2240
|
+
* `options.queue` on the backend's real store.
|
|
1929
2241
|
*/
|
|
1930
2242
|
function testQueueBackend(backend, options) {
|
|
1931
2243
|
const { queue } = options;
|
|
@@ -2005,11 +2317,11 @@ function testQueueBackend(backend, options) {
|
|
|
2005
2317
|
//#endregion
|
|
2006
2318
|
//#region src/testing/kits/support-session-store.ts
|
|
2007
2319
|
/**
|
|
2008
|
-
* Proves a `SupportSessionStore` starts sessions with the input it was
|
|
2009
|
-
*
|
|
2010
|
-
*
|
|
2011
|
-
*
|
|
2012
|
-
*
|
|
2320
|
+
* Proves a `SupportSessionStore` starts sessions with the input it was given,
|
|
2321
|
+
* shows a running session only to its admin, ends the admin's previous session
|
|
2322
|
+
* on start, ends a session once, lists sessions and, with `expire`, leaves
|
|
2323
|
+
* running sessions alone. It writes sessions to the store; they are all ended
|
|
2324
|
+
* when it returns.
|
|
2013
2325
|
*/
|
|
2014
2326
|
function testSupportSessionStore(store, options) {
|
|
2015
2327
|
const { admin } = options;
|
|
@@ -2207,9 +2519,9 @@ const MODULE_SERVER = {
|
|
|
2207
2519
|
};
|
|
2208
2520
|
/**
|
|
2209
2521
|
* Proves a framework adapter refuses callers its guard rejects, answers
|
|
2210
|
-
* `DbError`s with their status, hides unexpected errors, applies the
|
|
2211
|
-
*
|
|
2212
|
-
* `
|
|
2522
|
+
* `DbError`s with their status, hides unexpected errors, applies the context's
|
|
2523
|
+
* cookies and hands pending event sends to `waitUntil`, the way `handle()` from
|
|
2524
|
+
* `better-supabase/server` does.
|
|
2213
2525
|
*/
|
|
2214
2526
|
function testAdapter(name, options) {
|
|
2215
2527
|
const { events } = options.betterSupabase;
|
|
@@ -2284,13 +2596,14 @@ const REQUEST = {
|
|
|
2284
2596
|
}
|
|
2285
2597
|
};
|
|
2286
2598
|
/**
|
|
2287
|
-
* Proves a `BlockTransportMiddleware` meets the contract: it declares API 1
|
|
2288
|
-
*
|
|
2599
|
+
* Proves a `BlockTransportMiddleware` meets the contract: it declares API 1 and
|
|
2600
|
+
* a name, calls `next` at most once per call, leaves the request it got
|
|
2289
2601
|
* unchanged, resolves when `next` does, and rejects with the database error
|
|
2290
2602
|
* `next` rejected with, so blocks still map it to a `DbError`.
|
|
2291
2603
|
*
|
|
2292
2604
|
* ```ts
|
|
2293
|
-
* it(
|
|
2605
|
+
* it("conforms", () =>
|
|
2606
|
+
* testBlockTransportMiddleware(statementTimeout("5s")));
|
|
2294
2607
|
* ```
|
|
2295
2608
|
*/
|
|
2296
2609
|
function testBlockTransportMiddleware(middleware) {
|
|
@@ -2348,11 +2661,11 @@ function expectRow(where, row) {
|
|
|
2348
2661
|
expect(row.status === void 0 === (row.active === void 0), `${where} needs status and active together`);
|
|
2349
2662
|
}
|
|
2350
2663
|
/**
|
|
2351
|
-
* Proves an `AuthorizationProvider` targets API v1, is plain JSON, names
|
|
2352
|
-
*
|
|
2353
|
-
*
|
|
2354
|
-
*
|
|
2355
|
-
*
|
|
2664
|
+
* Proves an `AuthorizationProvider` targets API v1, is plain JSON, names valid
|
|
2665
|
+
* scopes with a tenant scope that has an id type, writes templates that are
|
|
2666
|
+
* safe to inline and use the placeholders they need, lists every function its
|
|
2667
|
+
* templates call in `requires`, and keeps its token hook, suspension rows, role
|
|
2668
|
+
* sources and deciding columns well formed.
|
|
2356
2669
|
*/
|
|
2357
2670
|
function testAuthorizationProvider(provider) {
|
|
2358
2671
|
const scopes = new Set(provider.scopes.map((scope) => scope.name));
|
|
@@ -2458,12 +2771,12 @@ function testAuthorizationProvider(provider) {
|
|
|
2458
2771
|
//#region src/testing/authorization-hooks.ts
|
|
2459
2772
|
/**
|
|
2460
2773
|
* Proves `AuthorizationHooks` target API v1 and fail closed for strangers:
|
|
2461
|
-
* fan-out returns only subscribers it was given, an identity nobody linked
|
|
2462
|
-
*
|
|
2463
|
-
*
|
|
2464
|
-
*
|
|
2465
|
-
*
|
|
2466
|
-
*
|
|
2774
|
+
* fan-out returns only subscribers it was given, an identity nobody linked and
|
|
2775
|
+
* a forged ticket resolve to `null`, a requester never approves their own
|
|
2776
|
+
* request, an unknown publisher can neither publish nor run, an unlinked chat
|
|
2777
|
+
* author gets nothing, an admin with no claims cannot start a support session
|
|
2778
|
+
* and never approves their own, and a delegated token with no scopes maps to no
|
|
2779
|
+
* permissions.
|
|
2467
2780
|
*/
|
|
2468
2781
|
function testAuthorizationHooks(hooks) {
|
|
2469
2782
|
const stranger = crypto.randomUUID();
|
|
@@ -2595,10 +2908,10 @@ function testAuthorizationHooks(hooks) {
|
|
|
2595
2908
|
//#region src/testing/delivery-transport.ts
|
|
2596
2909
|
const KEY = "00000000-0000-4000-8000-00000000d0f0";
|
|
2597
2910
|
/**
|
|
2598
|
-
* Runs the `DeliveryTransport` contract against `transport`: API version 1,
|
|
2599
|
-
*
|
|
2600
|
-
*
|
|
2601
|
-
*
|
|
2911
|
+
* Runs the `DeliveryTransport` contract against `transport`: API version 1, the
|
|
2912
|
+
* `email` channel, a provider name, and one frozen sample message it sends
|
|
2913
|
+
* without mutating, with the delivery id as its idempotency key. Throws a
|
|
2914
|
+
* `ConformanceError` listing every failed check.
|
|
2602
2915
|
*/
|
|
2603
2916
|
function testDeliveryTransport(transport, options = {}) {
|
|
2604
2917
|
const message = deepFreeze({
|
|
@@ -2670,12 +2983,12 @@ const FORGED = {
|
|
|
2670
2983
|
};
|
|
2671
2984
|
/**
|
|
2672
2985
|
* Proves an `Authorizer` targets API v1, keys every permission to the same
|
|
2673
|
-
* string each time (and after a JSON round trip, so references are plain
|
|
2674
|
-
*
|
|
2675
|
-
*
|
|
2676
|
-
*
|
|
2677
|
-
*
|
|
2678
|
-
* `options.granted` through `checkPermission`.
|
|
2986
|
+
* string each time (and after a JSON round trip, so references are plain JSON),
|
|
2987
|
+
* answers every request with a known outcome without mutating it, keeps the
|
|
2988
|
+
* request order in `evaluations`, decides from the subject rather than the
|
|
2989
|
+
* input (forged roles, claims and memberships in the resource properties or the
|
|
2990
|
+
* context never turn a denial into a grant), never grants an unknown
|
|
2991
|
+
* permission, and grants `options.granted` through `checkPermission`.
|
|
2679
2992
|
*/
|
|
2680
2993
|
function testAuthorizer(authorizer, options) {
|
|
2681
2994
|
const { subject, context } = requestOf(void 0);
|
|
@@ -2759,9 +3072,9 @@ function testAuthorizer(authorizer, options) {
|
|
|
2759
3072
|
]);
|
|
2760
3073
|
}
|
|
2761
3074
|
/**
|
|
2762
|
-
* An in-memory `Authorizer` for tests and examples: permissions come from
|
|
2763
|
-
*
|
|
2764
|
-
*
|
|
3075
|
+
* An in-memory `Authorizer` for tests and examples: permissions come from the
|
|
3076
|
+
* subject's `role` and id only, never from the request's resource or context,
|
|
3077
|
+
* and it ignores `subject.properties.claims`.
|
|
2765
3078
|
*/
|
|
2766
3079
|
function staticAuthorizer(options) {
|
|
2767
3080
|
const approvals = new Set(options.approvals);
|
|
@@ -2920,12 +3233,11 @@ function diagnosticProblem(diagnostic) {
|
|
|
2920
3233
|
}
|
|
2921
3234
|
/**
|
|
2922
3235
|
* Proves a `DocumentFormat` targets API v1, lists versions with pins and a
|
|
2923
|
-
* known status, defaults to a version it lists that is not a preview, and,
|
|
2924
|
-
*
|
|
2925
|
-
*
|
|
2926
|
-
*
|
|
2927
|
-
*
|
|
2928
|
-
* stable file.
|
|
3236
|
+
* known status, defaults to a version it lists that is not a preview, and, for
|
|
3237
|
+
* every version: lowers the model without mutating it (also when the model is
|
|
3238
|
+
* frozen), renders the same document twice, renders plain JSON or text, reports
|
|
3239
|
+
* diagnostics with a kebab-case code, a severity and a message, finds no error
|
|
3240
|
+
* in its own output with `lint`, and names a bare, stable file.
|
|
2929
3241
|
*/
|
|
2930
3242
|
function testDocumentFormat(format, options = {}) {
|
|
2931
3243
|
const subject = format;
|
|
@@ -3024,7 +3336,10 @@ function relativeImport(from, to) {
|
|
|
3024
3336
|
const path = [...Array.from({ length: fromParts.length - common }, () => ".."), ...toParts.slice(common)].join("/");
|
|
3025
3337
|
return path.startsWith(".") ? path : `./${path}`;
|
|
3026
3338
|
}
|
|
3027
|
-
/**
|
|
3339
|
+
/**
|
|
3340
|
+
* A `GeneratorModel` from schema metadata, for generators tested without a
|
|
3341
|
+
* database.
|
|
3342
|
+
*/
|
|
3028
3343
|
function modelFromMeta(meta) {
|
|
3029
3344
|
return {
|
|
3030
3345
|
tables: Object.values(meta.tables).map((table) => ({
|
|
@@ -3047,7 +3362,24 @@ function modelFromMeta(meta) {
|
|
|
3047
3362
|
schema: "public",
|
|
3048
3363
|
name,
|
|
3049
3364
|
values
|
|
3050
|
-
}))
|
|
3365
|
+
})),
|
|
3366
|
+
functions: Object.entries(meta.functions).flatMap(([key, fn]) => (fn.overloads ?? [fn]).map((signature) => ({
|
|
3367
|
+
key,
|
|
3368
|
+
schema: fn.schema,
|
|
3369
|
+
args: signature.args.map((arg) => {
|
|
3370
|
+
const values = meta.enums[arg.type];
|
|
3371
|
+
return {
|
|
3372
|
+
name: arg.name,
|
|
3373
|
+
tsType: values === void 0 ? "unknown" : values.map((value) => JSON.stringify(value)).join(" | "),
|
|
3374
|
+
optional: arg.optional === true,
|
|
3375
|
+
values
|
|
3376
|
+
};
|
|
3377
|
+
}),
|
|
3378
|
+
returns: "unknown",
|
|
3379
|
+
returnsSet: signature.returnsSet,
|
|
3380
|
+
volatility: signature.volatility
|
|
3381
|
+
}))),
|
|
3382
|
+
blocks: []
|
|
3051
3383
|
};
|
|
3052
3384
|
}
|
|
3053
3385
|
const EMPTY_INTROSPECTION = {
|
|
@@ -3063,7 +3395,10 @@ const EMPTY_INTROSPECTION = {
|
|
|
3063
3395
|
functions: [],
|
|
3064
3396
|
types: []
|
|
3065
3397
|
};
|
|
3066
|
-
/**
|
|
3398
|
+
/**
|
|
3399
|
+
* Proves a `Generator` writes relative, unique paths, is deterministic and
|
|
3400
|
+
* doesn't mutate its input.
|
|
3401
|
+
*/
|
|
3067
3402
|
function testGenerator(generator, options) {
|
|
3068
3403
|
const config = options.config ?? resolveConfig({}, "/project");
|
|
3069
3404
|
const input = () => ({
|
|
@@ -3119,8 +3454,8 @@ const rejects = async (run) => {
|
|
|
3119
3454
|
};
|
|
3120
3455
|
/**
|
|
3121
3456
|
* Proves an `Embedder` for the knowledge and memory blocks names its model,
|
|
3122
|
-
* embeds an empty list to nothing, and returns one finite vector per value,
|
|
3123
|
-
*
|
|
3457
|
+
* embeds an empty list to nothing, and returns one finite vector per value, all
|
|
3458
|
+
* of the same length on every call. It calls the real model.
|
|
3124
3459
|
*/
|
|
3125
3460
|
function testEmbedder(embedder, options = {}) {
|
|
3126
3461
|
const values = options.values ?? ["The first text.", "A second text."];
|
|
@@ -3186,8 +3521,8 @@ function testGraphCompiler(compile, options) {
|
|
|
3186
3521
|
]);
|
|
3187
3522
|
}
|
|
3188
3523
|
/**
|
|
3189
|
-
* Proves a `BuilderStarter` returns a run id and returns the same id when
|
|
3190
|
-
*
|
|
3524
|
+
* Proves a `BuilderStarter` returns a run id and returns the same id when the
|
|
3525
|
+
* same idempotency key starts again. It starts real runs.
|
|
3191
3526
|
*/
|
|
3192
3527
|
function testBuilderStarter(start, options) {
|
|
3193
3528
|
const { call } = options;
|
|
@@ -3226,6 +3561,87 @@ function testEveDocumentBackend(backend, options = {}) {
|
|
|
3226
3561
|
expect((await backend.read({ key }))?.content === "two", "a refused write changed the document");
|
|
3227
3562
|
}]]);
|
|
3228
3563
|
}
|
|
3564
|
+
const FAKE_RECORDING = {
|
|
3565
|
+
file: {
|
|
3566
|
+
id: "recording",
|
|
3567
|
+
filename: "call.webm",
|
|
3568
|
+
mediaType: "audio/webm"
|
|
3569
|
+
},
|
|
3570
|
+
url: "https://example.com/call.webm",
|
|
3571
|
+
read: () => Promise.resolve(/* @__PURE__ */ new Uint8Array())
|
|
3572
|
+
};
|
|
3573
|
+
/**
|
|
3574
|
+
* Proves a `Transcriber` for the engagements block names its model, returns
|
|
3575
|
+
* speaker turns in order with `startMs` at most `endMs` and text on each, and
|
|
3576
|
+
* rejects once its signal is aborted. Pass a real recording in `input` to call
|
|
3577
|
+
* the real provider.
|
|
3578
|
+
*/
|
|
3579
|
+
function testTranscriber(transcriber, options = {}) {
|
|
3580
|
+
const input = options.input ?? FAKE_RECORDING;
|
|
3581
|
+
return conform(`Transcriber "${transcriber.model}"`, [
|
|
3582
|
+
hasApiVersion(transcriber),
|
|
3583
|
+
["names its model", () => {
|
|
3584
|
+
expect(typeof transcriber.model === "string" && transcriber.model !== "", "model must be a non-empty string");
|
|
3585
|
+
}],
|
|
3586
|
+
["returns ordered speaker turns", async () => {
|
|
3587
|
+
const { segments } = await transcriber.transcribe(input);
|
|
3588
|
+
let last = 0;
|
|
3589
|
+
for (const segment of segments) {
|
|
3590
|
+
expect(typeof segment.text === "string", "every segment needs its text");
|
|
3591
|
+
expect(Number.isFinite(segment.startMs) && Number.isFinite(segment.endMs) && segment.startMs <= segment.endMs, `segment ${segment.startMs}-${segment.endMs} must start before it ends`);
|
|
3592
|
+
expect(segment.startMs >= last, "segments must be ordered by startMs");
|
|
3593
|
+
last = segment.startMs;
|
|
3594
|
+
}
|
|
3595
|
+
}],
|
|
3596
|
+
["rejects once aborted", async () => {
|
|
3597
|
+
expect(await rejects(() => transcriber.transcribe(input, { signal: AbortSignal.abort() })), "transcribe must reject when its signal is aborted");
|
|
3598
|
+
}]
|
|
3599
|
+
]);
|
|
3600
|
+
}
|
|
3601
|
+
const FAKE_CALL = {
|
|
3602
|
+
engagement: {
|
|
3603
|
+
id: "engagement",
|
|
3604
|
+
kind: "call",
|
|
3605
|
+
title: "Intro call"
|
|
3606
|
+
},
|
|
3607
|
+
transcript: [{
|
|
3608
|
+
recordingId: "recording",
|
|
3609
|
+
position: 1,
|
|
3610
|
+
speaker: "Speaker 1",
|
|
3611
|
+
startMs: 0,
|
|
3612
|
+
endMs: 4e3,
|
|
3613
|
+
text: "Can you send the proposal by Friday?"
|
|
3614
|
+
}, {
|
|
3615
|
+
recordingId: "recording",
|
|
3616
|
+
position: 2,
|
|
3617
|
+
speaker: "Speaker 2",
|
|
3618
|
+
startMs: 4e3,
|
|
3619
|
+
endMs: 7e3,
|
|
3620
|
+
text: "Yes, I will send it on Thursday."
|
|
3621
|
+
}]
|
|
3622
|
+
};
|
|
3623
|
+
/**
|
|
3624
|
+
* Proves a `NoteTaker` for the engagements block names its model, returns a
|
|
3625
|
+
* non-empty summary with well-formed action items, and rejects once its signal
|
|
3626
|
+
* is aborted. It calls the real model.
|
|
3627
|
+
*/
|
|
3628
|
+
function testNoteTaker(noteTaker, options = {}) {
|
|
3629
|
+
const input = options.input ?? FAKE_CALL;
|
|
3630
|
+
return conform(`NoteTaker "${noteTaker.model}"`, [
|
|
3631
|
+
hasApiVersion(noteTaker),
|
|
3632
|
+
["names its model", () => {
|
|
3633
|
+
expect(typeof noteTaker.model === "string" && noteTaker.model !== "", "model must be a non-empty string");
|
|
3634
|
+
}],
|
|
3635
|
+
["writes a summary and action items", async () => {
|
|
3636
|
+
const notes = await noteTaker.summarize(input);
|
|
3637
|
+
expect(typeof notes.summary === "string" && notes.summary.trim() !== "", "summary must be a non-empty string");
|
|
3638
|
+
expect((notes.actionItems ?? []).every((item) => typeof item.text === "string" && item.text !== ""), "every action item needs its text");
|
|
3639
|
+
}],
|
|
3640
|
+
["rejects once aborted", async () => {
|
|
3641
|
+
expect(await rejects(() => noteTaker.summarize(input, { signal: AbortSignal.abort() })), "summarize must reject when its signal is aborted");
|
|
3642
|
+
}]
|
|
3643
|
+
]);
|
|
3644
|
+
}
|
|
3229
3645
|
//#endregion
|
|
3230
3646
|
//#region src/testing/notification-channel.ts
|
|
3231
3647
|
const STATUSES = /* @__PURE__ */ new Set(["sent", "skipped"]);
|
|
@@ -3261,9 +3677,9 @@ function sample(channel, email) {
|
|
|
3261
3677
|
});
|
|
3262
3678
|
}
|
|
3263
3679
|
/**
|
|
3264
|
-
* Runs the `NotificationChannel` contract against `channel`: the API version,
|
|
3265
|
-
*
|
|
3266
|
-
*
|
|
3680
|
+
* Runs the `NotificationChannel` contract against `channel`: the API version, a
|
|
3681
|
+
* name, and one frozen sample message it must send without mutating. Throws a
|
|
3682
|
+
* `ConformanceError` listing every failed check.
|
|
3267
3683
|
*/
|
|
3268
3684
|
function testNotificationChannel(channel, options = {}) {
|
|
3269
3685
|
const message = sample(channel.name, options.email ?? null);
|
|
@@ -3287,6 +3703,45 @@ function testNotificationChannel(channel, options = {}) {
|
|
|
3287
3703
|
]);
|
|
3288
3704
|
}
|
|
3289
3705
|
//#endregion
|
|
3706
|
+
//#region src/testing/section.ts
|
|
3707
|
+
const callable = (value) => typeof value === "function";
|
|
3708
|
+
/**
|
|
3709
|
+
* Runs the `defineSection` contract against `section`: the API version, a read
|
|
3710
|
+
* permission, the event patterns, a `load` that settles, and a `count` keyed by
|
|
3711
|
+
* `subjectKey` with a whole number per record. Throws a `ConformanceError`
|
|
3712
|
+
* listing every failed check.
|
|
3713
|
+
*/
|
|
3714
|
+
function testSection(name, section, options) {
|
|
3715
|
+
const subjects = options.subjects ?? [options.subject];
|
|
3716
|
+
const load = section.load;
|
|
3717
|
+
const count = section.count;
|
|
3718
|
+
return conform(`Section "${name}"`, [
|
|
3719
|
+
["has apiVersion 1", () => {
|
|
3720
|
+
const version = section.apiVersion;
|
|
3721
|
+
expect(version === 1, "apiVersion must be 1");
|
|
3722
|
+
}],
|
|
3723
|
+
["names a read permission", () => {
|
|
3724
|
+
expect(typeof section.permissions.read === "string" && section.permissions.read.length > 0, "permissions.read must be a non-empty action name");
|
|
3725
|
+
}],
|
|
3726
|
+
["lists event types", () => {
|
|
3727
|
+
expect(section.events.every((event) => typeof event === "string" && event.length > 0), "events must be non-empty strings");
|
|
3728
|
+
}],
|
|
3729
|
+
["loads a record", async () => {
|
|
3730
|
+
expect(callable(section.load), "load must be a function");
|
|
3731
|
+
expect((await load(options.client, options.subject, void 0)).ok, "load must succeed for a record the client holds");
|
|
3732
|
+
}],
|
|
3733
|
+
count !== void 0 && ["counts records by subject key", async () => {
|
|
3734
|
+
const result = await count(options.client, subjects);
|
|
3735
|
+
expect(result.ok, "count must succeed");
|
|
3736
|
+
const wanted = new Set(subjects.map((subject) => subjectKey(subject)));
|
|
3737
|
+
for (const [key, value] of Object.entries(result.data)) {
|
|
3738
|
+
expect(wanted.has(key), `count returned "${key}", not a type:id key asked for`);
|
|
3739
|
+
expect(Number.isInteger(value) && value >= 0, `count for "${key}" must be a whole number`);
|
|
3740
|
+
}
|
|
3741
|
+
}]
|
|
3742
|
+
]);
|
|
3743
|
+
}
|
|
3744
|
+
//#endregion
|
|
3290
3745
|
//#region src/testing/webhooks.ts
|
|
3291
3746
|
const SECRET = "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw";
|
|
3292
3747
|
function signInput(body, timestamp) {
|
|
@@ -3301,9 +3756,9 @@ function isHeaders(value) {
|
|
|
3301
3756
|
return typeof value === "object" && value !== null && Object.values(value).every((entry) => typeof entry === "string");
|
|
3302
3757
|
}
|
|
3303
3758
|
/**
|
|
3304
|
-
* Runs the `WebhookSigner` contract against `signer`: the API version, a
|
|
3305
|
-
*
|
|
3306
|
-
*
|
|
3759
|
+
* Runs the `WebhookSigner` contract against `signer`: the API version, a name,
|
|
3760
|
+
* string headers that depend on the body and are stable for the same input,
|
|
3761
|
+
* and, with `verify`, a signature the receiver accepts.
|
|
3307
3762
|
*/
|
|
3308
3763
|
function testWebhookSigner(signer, options = {}) {
|
|
3309
3764
|
const body = JSON.stringify({
|
|
@@ -3341,9 +3796,9 @@ function testWebhookSigner(signer, options = {}) {
|
|
|
3341
3796
|
]);
|
|
3342
3797
|
}
|
|
3343
3798
|
/**
|
|
3344
|
-
* Runs the `WebhookTransport` contract against `transport`: the API version,
|
|
3345
|
-
*
|
|
3346
|
-
*
|
|
3799
|
+
* Runs the `WebhookTransport` contract against `transport`: the API version, a
|
|
3800
|
+
* name, and one POST to `options.url` that returns an HTTP status and a string
|
|
3801
|
+
* body.
|
|
3347
3802
|
*/
|
|
3348
3803
|
function testWebhookTransport(transport, options) {
|
|
3349
3804
|
const body = JSON.stringify({
|
|
@@ -3375,8 +3830,8 @@ function testWebhookTransport(transport, options) {
|
|
|
3375
3830
|
}
|
|
3376
3831
|
/**
|
|
3377
3832
|
* Runs the `WebhookSecretStore` contract against `store`: the API version, a
|
|
3378
|
-
* list of strings, and, when it can rotate, a new secret listed first while
|
|
3379
|
-
*
|
|
3833
|
+
* list of strings, and, when it can rotate, a new secret listed first while the
|
|
3834
|
+
* previous one keeps signing.
|
|
3380
3835
|
*/
|
|
3381
3836
|
function testWebhookSecretStore(store, options) {
|
|
3382
3837
|
return conform("WebhookSecretStore", [
|
|
@@ -3405,10 +3860,10 @@ const sleep = (ms) => new Promise((resolve) => {
|
|
|
3405
3860
|
setTimeout(resolve, ms);
|
|
3406
3861
|
});
|
|
3407
3862
|
/**
|
|
3408
|
-
* Runs the Chat SDK `StateAdapter` contract against `state`: subscriptions,
|
|
3409
|
-
*
|
|
3410
|
-
*
|
|
3411
|
-
*
|
|
3863
|
+
* Runs the Chat SDK `StateAdapter` contract against `state`: subscriptions, one
|
|
3864
|
+
* lock holder at a time with token-checked release and extension, lock and
|
|
3865
|
+
* cache TTLs, `setIfNotExists`, list trimming, and a per-thread queue that
|
|
3866
|
+
* keeps the newest entries, reports its depth and drops expired ones.
|
|
3412
3867
|
*/
|
|
3413
3868
|
function testChatState(state, options) {
|
|
3414
3869
|
const fresh = options.id ?? (() => `conformance-${crypto.randomUUID()}`);
|
|
@@ -3545,10 +4000,10 @@ async function collect(stream, timeoutMs) {
|
|
|
3545
4000
|
}
|
|
3546
4001
|
const hintOf = (result) => result.ok ? void 0 : result.error.hint;
|
|
3547
4002
|
/**
|
|
3548
|
-
* Runs the `StreamStore` contract against `store`: the API version, open
|
|
3549
|
-
*
|
|
3550
|
-
*
|
|
3551
|
-
*
|
|
4003
|
+
* Runs the `StreamStore` contract against `store`: the API version, open once,
|
|
4004
|
+
* idempotent appends that refuse gaps, reads from any index that end when the
|
|
4005
|
+
* stream closes, a live read that sees later appends, cancel seen by the
|
|
4006
|
+
* writer, a closed stream that refuses appends, and a missing stream.
|
|
3552
4007
|
*/
|
|
3553
4008
|
function testStreamStore(store, options = {}) {
|
|
3554
4009
|
const fresh = options.id ?? (() => `conformance-${crypto.randomUUID()}`);
|
|
@@ -3644,11 +4099,11 @@ const APP = { type: "app" };
|
|
|
3644
4099
|
const kindOf = (result) => result.ok ? void 0 : result.error.kind;
|
|
3645
4100
|
/**
|
|
3646
4101
|
* Runs the `CredentialProvider` contract against `provider`: the API version,
|
|
3647
|
-
* an unknown ref, a stored token with its headers, a new value seen after it
|
|
3648
|
-
*
|
|
3649
|
-
*
|
|
3650
|
-
*
|
|
3651
|
-
*
|
|
4102
|
+
* an unknown ref, a stored token with its headers, a new value seen after it is
|
|
4103
|
+
* stored, separate credentials per user and per tenant (`ref` with a `tenant`,
|
|
4104
|
+
* which `seed` must store too), revoke (per user, as the organization purger
|
|
4105
|
+
* revokes connector grants), and inbound checks that accept a signed request
|
|
4106
|
+
* and refuse a tampered one.
|
|
3652
4107
|
*/
|
|
3653
4108
|
function testCredentialProvider(provider, options) {
|
|
3654
4109
|
const value = () => `token-${crypto.randomUUID()}`;
|
|
@@ -3765,9 +4220,9 @@ function testCredentialProvider(provider, options) {
|
|
|
3765
4220
|
//#endregion
|
|
3766
4221
|
//#region src/testing/act-cases.ts
|
|
3767
4222
|
/**
|
|
3768
|
-
* The RFC 8693 `act` chains better-supabase accepts and refuses, as plain
|
|
3769
|
-
*
|
|
3770
|
-
*
|
|
4223
|
+
* The RFC 8693 `act` chains better-supabase accepts and refuses, as plain JSON
|
|
4224
|
+
* (`better-supabase/testing/act-cases.json`), so another library that reads the
|
|
4225
|
+
* same claims can run the same cases.
|
|
3771
4226
|
*/
|
|
3772
4227
|
const actCases = {
|
|
3773
4228
|
version: 1,
|
|
@@ -4086,4 +4541,4 @@ const actCases = {
|
|
|
4086
4541
|
]
|
|
4087
4542
|
};
|
|
4088
4543
|
//#endregion
|
|
4089
|
-
export { ConformanceError, LOCAL_JWT_SECRET, PROBE_INITIAL, actCases, asUser, createTestSigner, defineSeed, expectDbBudget, expectInstant, expectTenantIsolation, isSeed, liteStack, localAuth, localSigningKey, scopedSeed, signLocalJwt, signTestJwt, signTestJwtWithKey, staticAuthorizer, supabaseClaimFixtures, supabaseInvalidClaimFixtures, testAdapter, testAiTaskRunner, testAuthResolver, testAuthorizationHooks, testAuthorizationProvider, testAuthorizer, testBlockTransportMiddleware, testBuilderStarter, testCacheAdapter, testChatState, testControllerBinding, testCredentialProvider, testDeliveryTransport, testDocumentFormat, testEmbedder, testEveDocumentBackend, testEventSink, testExecutor, testGenerator, testGraphCompiler, testIncomingDestination, testNotificationChannel, testPaymentProvider, testPlugin, testQueueBackend, testStreamStore, testSupportSessionStore, testTaxProvider, testWebhookSecretStore, testWebhookSigner, testWebhookTransport, withRollback };
|
|
4544
|
+
export { ConformanceError, LOCAL_JWT_SECRET, PROBE_INITIAL, actCases, asUser, createTestSigner, defineFactory, defineSeed, defineTenantSeed, expectDbBudget, expectInstant, expectTenantIsolation, factoryPath, factoryTime, isSeed, isTenantSeed, liteStack, localAuth, localSigningKey, scopedSeed, seedTenantOnCreate, signLocalJwt, signTestJwt, signTestJwtWithKey, staticAuthorizer, supabaseClaimFixtures, supabaseInvalidClaimFixtures, testAdapter, testAiTaskRunner, testAuthResolver, testAuthorizationHooks, testAuthorizationProvider, testAuthorizer, testBlockTransportMiddleware, testBuilderStarter, testCacheAdapter, testChatState, testControllerBinding, testCredentialProvider, testDeliveryTransport, testDocumentFormat, testEmbedder, testEveDocumentBackend, testEventSink, testExecutor, testGenerator, testGraphCompiler, testIncomingDestination, testNoteTaker, testNotificationChannel, testPaymentProvider, testPlugin, testQueueBackend, testSection, testShipmentCarrier, testStreamStore, testSupportSessionStore, testTaxProvider, testTranscriber, testWebhookSecretStore, testWebhookSigner, testWebhookTransport, withClaims, withRollback };
|