better-supabase 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ai-schedules-D_Hz-ik5.d.ts → ai-schedules-BmkARmQ9.d.ts} +1 -1
- package/dist/{api-DxAPqMrE.d.ts → api-hHwieEfz.d.ts} +1 -1
- package/dist/{app-tables-CbCFSXLG.d.ts → app-tables-yMQ4ubyY.d.ts} +1 -1
- package/dist/astro/index.d.ts +4 -4
- package/dist/{auth-module-BEFESDC4.js → auth-module-BbmX-N4L.js} +12 -4
- package/dist/better-result/index.d.ts +2 -2
- package/dist/{bind-h5jre2K0.d.ts → bind-JGCPGUJh.d.ts} +4 -4
- package/dist/{block-env-BrfRvPrj.d.ts → block-env-y65GF_px.d.ts} +4 -4
- package/dist/blocks/access-requests/index.d.ts +1 -1
- package/dist/blocks/activities/index.d.ts +1 -1
- package/dist/blocks/agents/index.d.ts +1 -1
- package/dist/blocks/ai-cache/index.d.ts +1 -1
- package/dist/blocks/ai-chat/index.d.ts +4 -4
- package/dist/blocks/ai-files/index.d.ts +1 -1
- package/dist/blocks/ai-keys/index.d.ts +1 -1
- package/dist/blocks/ai-schedules/index.d.ts +2 -2
- package/dist/blocks/announcements/index.d.ts +4 -4
- package/dist/blocks/api-keys/index.d.ts +2 -2
- package/dist/blocks/approvals/index.d.ts +1 -1
- package/dist/blocks/assets/index.d.ts +1 -1
- package/dist/blocks/assignment/index.d.ts +1 -1
- package/dist/blocks/attachments/index.d.ts +2 -2
- package/dist/blocks/audit/index.d.ts +5 -5
- package/dist/blocks/automations/index.d.ts +3 -3
- package/dist/blocks/billable-time/index.d.ts +1 -1
- package/dist/blocks/billing/index.d.ts +3 -3
- package/dist/blocks/bookings/index.d.ts +2 -2
- package/dist/blocks/bulk/index.d.ts +1 -1
- package/dist/blocks/calendar/index.d.ts +2 -2
- package/dist/blocks/catalog/index.d.ts +1 -1
- package/dist/blocks/channels/index.d.ts +1 -1
- package/dist/blocks/collections/index.d.ts +1 -1
- package/dist/blocks/comments/index.d.ts +4 -4
- package/dist/blocks/compliance/index.d.ts +1 -1
- package/dist/blocks/connectors/index.d.ts +1 -1
- package/dist/blocks/contacts/index.d.ts +1 -1
- package/dist/blocks/content/index.d.ts +1 -1
- package/dist/blocks/contracts/index.d.ts +1 -1
- package/dist/blocks/courses/index.d.ts +1 -1
- package/dist/blocks/created-by/index.d.ts +1 -1
- package/dist/blocks/custom-fields/index.d.ts +1 -1
- package/dist/blocks/data-lifecycle/index.d.ts +1 -1
- package/dist/blocks/deals/index.d.ts +1 -1
- package/dist/blocks/dispatch/index.d.ts +1 -1
- package/dist/blocks/documents/index.d.ts +1 -1
- package/dist/blocks/domains/index.d.ts +1 -1
- package/dist/blocks/donations/index.d.ts +1 -1
- package/dist/blocks/drive/index.d.ts +1 -1
- package/dist/blocks/employees/index.d.ts +2 -2
- package/dist/blocks/enrichment/index.d.ts +1 -1
- package/dist/blocks/enrollments/index.d.ts +1 -1
- package/dist/blocks/entitlements/index.d.ts +3 -3
- package/dist/blocks/expenses/index.d.ts +1 -1
- package/dist/blocks/field-history/index.d.ts +1 -1
- package/dist/blocks/flags/index.d.ts +1 -1
- package/dist/blocks/forecasts/index.d.ts +1 -1
- package/dist/blocks/forms/index.d.ts +2 -2
- package/dist/blocks/goals/index.d.ts +1 -1
- package/dist/blocks/guests/index.d.ts +1 -1
- package/dist/blocks/hiring/index.d.ts +1 -1
- package/dist/blocks/identities/index.d.ts +1 -1
- package/dist/blocks/imports/index.d.ts +1 -1
- package/dist/blocks/inbox/index.d.ts +5 -5
- package/dist/blocks/incidents/index.d.ts +1 -1
- package/dist/blocks/index.d.ts +2 -2
- package/dist/blocks/inventory/index.d.ts +1 -1
- package/dist/blocks/invoices/index.d.ts +1 -1
- package/dist/blocks/knowledge/index.d.ts +1 -1
- package/dist/blocks/lead-scoring/index.d.ts +1 -1
- package/dist/blocks/leases/index.d.ts +1 -1
- package/dist/blocks/leave/index.d.ts +1 -1
- package/dist/blocks/ledger/index.d.ts +1 -1
- package/dist/blocks/mail-sync/index.d.ts +1 -1
- package/dist/blocks/memberships/index.d.ts +1 -1
- package/dist/blocks/memory/index.d.ts +1 -1
- package/dist/blocks/messaging/index.d.ts +4 -4
- package/dist/blocks/metrics/index.d.ts +1 -1
- package/dist/blocks/mfa/index.d.ts +2 -2
- package/dist/blocks/moderation/index.d.ts +1 -1
- package/dist/blocks/notifications/index.d.ts +4 -4
- package/dist/blocks/numbering/index.d.ts +1 -1
- package/dist/blocks/oauth-server/index.d.ts +1 -1
- package/dist/blocks/onboarding/index.d.ts +2 -2
- package/dist/blocks/orders/index.d.ts +2 -2
- package/dist/blocks/organizations/index.d.ts +2 -2
- package/dist/blocks/outbox/index.d.ts +1 -1
- package/dist/blocks/passes/index.d.ts +1 -1
- package/dist/blocks/permissions/index.d.ts +3 -3
- package/dist/blocks/pipelines/index.d.ts +1 -1
- package/dist/blocks/posts/index.d.ts +1 -1
- package/dist/blocks/profiles/index.d.ts +1 -1
- package/dist/blocks/promotions/index.d.ts +1 -1
- package/dist/blocks/push/index.d.ts +2 -2
- package/dist/blocks/queue/index.d.ts +29 -2
- package/dist/blocks/queue/index.js +1 -1
- package/dist/blocks/quotes/index.d.ts +1 -1
- package/dist/blocks/rank/index.d.ts +1 -1
- package/dist/blocks/reactions/index.d.ts +4 -4
- package/dist/blocks/relations/index.d.ts +1 -1
- package/dist/blocks/reminders/index.d.ts +1 -1
- package/dist/blocks/reviews/index.d.ts +1 -1
- package/dist/blocks/saved-views/index.d.ts +3 -3
- package/dist/blocks/scores/index.d.ts +1 -1
- package/dist/blocks/search/index.d.ts +3 -3
- package/dist/blocks/security-events/index.d.ts +1 -1
- package/dist/blocks/segments/index.d.ts +1 -1
- package/dist/blocks/sequences/index.d.ts +1 -1
- package/dist/blocks/service-accounts/index.d.ts +1 -1
- package/dist/blocks/sessions/index.d.ts +2 -2
- package/dist/blocks/settings/index.d.ts +2 -2
- package/dist/blocks/share-links/index.d.ts +1 -1
- package/dist/blocks/shipments/index.d.ts +1 -1
- package/dist/blocks/signatures/index.d.ts +1 -1
- package/dist/blocks/signing-keys/index.d.ts +1 -1
- package/dist/blocks/sla/index.d.ts +1 -1
- package/dist/blocks/sso/index.d.ts +1 -1
- package/dist/blocks/state-machine/index.d.ts +1 -1
- package/dist/blocks/subjects/index.d.ts +2 -2
- package/dist/blocks/tags/index.d.ts +2 -2
- package/dist/blocks/tasks/index.d.ts +2 -2
- package/dist/blocks/teams/index.d.ts +1 -1
- package/dist/blocks/templates/index.d.ts +1 -1
- package/dist/blocks/time-tracking/index.d.ts +1 -1
- package/dist/blocks/timeline/index.d.ts +3 -3
- package/dist/blocks/trash/index.d.ts +1 -1
- package/dist/blocks/undo/index.d.ts +2 -2
- package/dist/blocks/updated-at/index.d.ts +1 -1
- package/dist/blocks/usage/index.d.ts +2 -2
- package/dist/blocks/vercel-marketplace/index.d.ts +1 -1
- package/dist/blocks/versions/index.d.ts +1 -1
- package/dist/blocks/waitlist/index.d.ts +1 -1
- package/dist/blocks/webhooks/index.d.ts +2 -2
- package/dist/blocks/webhooks/index.js +1 -1
- package/dist/blocks/workflow-editor/index.d.ts +4 -4
- package/dist/blocks/workflows/index.d.ts +4 -4
- package/dist/{bucket-CiNi8sIw.d.ts → bucket-vc-QRrva.d.ts} +40 -1
- package/dist/cli/add-Bfb_ISrO.js +1 -0
- package/dist/cli/{add-DNOL9PDu.js → add-D7TkPdco.js} +9 -9
- package/dist/cli/{add-C04vkBk9.js → add-I8OW-qJH.js} +2 -2
- package/dist/cli/{backfill-VFzf-TJP.js → backfill-DIz5DnlQ.js} +1 -1
- package/dist/cli/bin.js +1 -1
- package/dist/cli/{blocks-Bn7WUca5.js → blocks-Bp5RPoft.js} +1 -1
- package/dist/cli/{blocks-Cb7mILFU.js → blocks-xk-SE8gS.js} +1 -1
- package/dist/cli/{cache-DkplpIGe.js → cache-AznIssjI.js} +1 -1
- package/dist/cli/{codemod-BbaE5dL_.js → codemod-Aewxza6i.js} +1 -1
- package/dist/cli/{content-mapper-Cdx6arxu.js → content-mapper-DCrz6OIv.js} +2 -2
- package/dist/cli/{doctor-C-VO-QQ2.js → doctor-DkOSLPEQ.js} +13 -13
- package/dist/cli/{gen-yRHOHW1b.js → gen-CFkYUnWq.js} +10 -10
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +6 -6
- package/dist/cli/{init-BOw0SX65.js → init-CHj9ad4S.js} +5 -5
- package/dist/cli/{live-Lmg-hYyO.js → live-DGdLR41j.js} +2 -2
- package/dist/cli/{mcp-DQ1zR2eA.js → mcp-BZno503V.js} +2 -2
- package/dist/cli/{metadata-CZaxkv21.js → metadata-BfgHMe4q.js} +3 -3
- package/dist/cli/{migration-safety-BbhLu2fo.js → migration-safety-BnnXPAro.js} +1 -1
- package/dist/cli/{module-migration-DOn6EmNz.js → module-migration-O_IxewFs.js} +1 -1
- package/dist/cli/{print-D_xf8PPj.js → print-DosQIFSy.js} +1 -1
- package/dist/cli/{remove-BY_TOTRj.js → remove-DK2G_KHm.js} +5 -5
- package/dist/cli/{render-lJmHr0y9.js → render-5y5a1QZr.js} +3 -3
- package/dist/cli/{run-BJ6IMs_H.js → run-Bs4OKdDI.js} +7 -7
- package/dist/cli/{run-DkB0fhc9.js → run-MRET30vh.js} +20 -20
- package/dist/cli/{shared-Bh-6IqJS.js → shared-BLqbvY2x.js} +1 -1
- package/dist/cli/{snapshot-Bzcigm7T.js → snapshot-uTUlEzY2.js} +2 -2
- package/dist/cli/{source-WoLdcQzN.js → source-D2gJHKwC.js} +1 -1
- package/dist/cli/{spec-CZMiLhv_.js → spec-Cm2einTO.js} +2 -2
- package/dist/cli/{spec-BF_dpwzW.js → spec-DUjOtciN.js} +1 -1
- package/dist/cli/{sql-layout-rFP0oq1N.js → sql-layout-lUWenjJw.js} +2 -2
- package/dist/cli/{sync-mANmYYoL.js → sync-CZMRB3aU.js} +2 -2
- package/dist/cli/{upgrade-B0Q9wMs-.js → upgrade-BFEIMC7U.js} +3 -3
- package/dist/cli/{upgrade-BrNLt92u.js → upgrade-fVsJniXm.js} +2 -2
- package/dist/cli/{version-CyavsyGA.js → version-B2Dr6VmJ.js} +1 -1
- package/dist/client/index.d.ts +5 -5
- package/dist/client/index.js +1 -1
- package/dist/client/native/index.d.ts +5 -5
- package/dist/client/native/index.js +1 -1
- package/dist/{client-BAEbEA7t.js → client-C_mlji5R.js} +6 -5
- package/dist/{composite-BZYXlVBN.d.ts → composite-CfYyU3vs.d.ts} +4 -3
- package/dist/config/index.d.ts +1 -1
- package/dist/{context-TGX2eDS5.d.ts → context-8kb8m5uO.d.ts} +1 -1
- package/dist/{controller-DyPPMFSw.d.ts → controller-BW-5Opig.d.ts} +1 -1
- package/dist/{conversion-O-kyhXcC.d.ts → conversion-3iv2r7YC.d.ts} +1 -1
- package/dist/create/index.d.ts +2 -2
- package/dist/create/index.js +1 -1
- package/dist/{define-DFBnQyYg.d.ts → define-C5AcEkEJ.d.ts} +1 -1
- package/dist/{define-block-DvvcM54N.d.ts → define-block-C1RHXz7L.d.ts} +2 -2
- package/dist/edge/index.d.ts +5 -5
- package/dist/{entitlements-BnhDBxLW.d.ts → entitlements-sO977DO-.d.ts} +1 -1
- package/dist/{executor-CVIn6JHa.d.ts → executor-BcNWcD-4.d.ts} +2 -2
- package/dist/expo/index.d.ts +2 -2
- package/dist/{field-errors-DYtg1mwv.d.ts → field-errors-Dt86dCKk.d.ts} +12 -12
- package/dist/{framework-h5lP_5yj.d.ts → framework-BGdZVyPL.d.ts} +3 -3
- package/dist/hono/index.d.ts +4 -4
- package/dist/{index-BAHGLvGD.d.ts → index-CENWq3zb.d.ts} +1 -1
- package/dist/{index-Do2ChN_y.d.ts → index-CQhPHHDF.d.ts} +20 -2
- package/dist/{index-DN9mfmhA.d.ts → index-CTu-3fJB.d.ts} +51 -3
- package/dist/{index-BfK6olKm.d.ts → index-Cc4mIQS8.d.ts} +2 -2
- package/dist/{index-BfkltrGJ.d.ts → index-CcAmFNVi.d.ts} +2 -2
- package/dist/{index-Ab4UeEn_.d.ts → index-Craf712U.d.ts} +44 -12
- package/dist/{index-B4gcStOz.d.ts → index-DZKCc2WM.d.ts} +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/list/index.d.ts +1 -1
- package/dist/{list-query-BDVutLFr.d.ts → list-query-DYhgRTd5.d.ts} +1 -1
- package/dist/mapper/bin.js +5 -5
- package/dist/mcp/index.d.ts +3 -3
- package/dist/mcp/sdk/index.d.ts +2 -2
- package/dist/next/client/index.d.ts +81 -1
- package/dist/next/client/index.js +178 -2
- package/dist/next/index.d.ts +15 -14
- package/dist/orpc/index.d.ts +4 -4
- package/dist/otel/index.js +4 -4
- package/dist/{ports-DOhtuw3c.js → ports-CaVRXjxq.js} +1 -1
- package/dist/{ports-CpdiQv1D.d.ts → ports-mObLgH1z.d.ts} +1 -1
- package/dist/powersync/index.d.ts +2 -2
- package/dist/preset/index.d.ts +3 -3
- package/dist/{push-token-B3m3pWAv.d.ts → push-token-BSSvsWXZ.d.ts} +1 -1
- package/dist/query/index.d.ts +1 -1
- package/dist/{rate-limit-o44SYkVY.js → rate-limit-Dt9vAY4E.js} +53 -0
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +3 -3
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/native/index.js +1 -1
- package/dist/react/server.d.ts +12 -7
- package/dist/react/server.js +8 -3
- package/dist/react/session.d.ts +5 -0
- package/dist/react/session.js +9 -1
- package/dist/{react-BuDYI62C.js → react-CZUZYn9E.js} +41 -4
- package/dist/react-router/index.d.ts +3 -3
- package/dist/realtime/index.d.ts +5 -5
- package/dist/realtime/index.js +2 -1
- package/dist/{record-form-DB_5Ue_B.d.ts → record-form-D9ILuVtA.d.ts} +1 -1
- package/dist/records/index.d.ts +7 -7
- package/dist/relay-gKvKJ3xf.js +208 -0
- package/dist/{resource-execute-CzHuDsil.d.ts → resource-execute-Cpnob1Vj.d.ts} +1 -1
- package/dist/{resource-types-DnKiH4G2.d.ts → resource-types-pMeLs68X.d.ts} +1 -1
- package/dist/{resources-B9cQxhjw.d.ts → resources-7iq2-5_A.d.ts} +1 -1
- package/dist/server/index.d.ts +147 -9
- package/dist/server/index.js +396 -1
- package/dist/{server-types-7QPzW2bF.d.ts → server-types-CK8mUIUT.d.ts} +5 -354
- package/dist/{session-CfBCJGgc.d.ts → session-DWmFv3vB.d.ts} +2 -1
- package/dist/session-status-qQLm7jzh.d.ts +82 -0
- package/dist/{sign-in-BsIaNx2C.js → sign-in-CmPK1AgM.js} +20 -10
- package/dist/solid/index.d.ts +7 -7
- package/dist/solid/index.js +1 -1
- package/dist/solid-start/index.d.ts +3 -3
- package/dist/spec/index.d.ts +1 -1
- package/dist/sql/index.d.ts +3 -3
- package/dist/sql/index.js +1 -1
- package/dist/{sql-OLVW4t08.js → sql-Dl3Alk43.js} +127 -0
- package/dist/sqlite/index.d.ts +1 -1
- package/dist/ssr/index.d.ts +1 -1
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +54 -1
- package/dist/support-B4ZBVxt3.d.ts +357 -0
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +1 -1
- package/dist/sveltekit/index.d.ts +4 -4
- package/dist/{tags-BjHflcHF.d.ts → tags-qvVk79pp.d.ts} +1 -1
- package/dist/tanstack-db/index.d.ts +1 -1
- package/dist/tanstack-start/index.d.ts +3 -3
- package/dist/{tenant-DzFsg0Pc.d.ts → tenant-DOKIJI62.d.ts} +1 -1
- package/dist/testing/index.d.ts +8 -7
- package/dist/{timeline-WrFMgd3U.d.ts → timeline-CvTuXYvn.d.ts} +3 -3
- package/dist/{topic-DNFEFGKI.d.ts → topic-CZXHhZye.d.ts} +2 -2
- package/dist/{verify-CMou8dWZ.d.ts → verify-CjvNLY7N.d.ts} +1 -1
- package/dist/vue/index.d.ts +7 -7
- package/dist/vue/index.js +1 -1
- package/dist/{watch-topic-Bo9S2R4P.d.ts → watch-topic-BAxoPKZx.d.ts} +1 -1
- package/dist/yjs/index.d.ts +1 -1
- package/package.json +1 -1
- package/skills/better-supabase-api/SKILL.md +3 -1
- package/skills/better-supabase-auth/SKILL.md +7 -0
- package/dist/cli/add-CUH0rORo.js +0 -1
package/dist/query/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { t as escapeLike } from "../escape-like-PReMbEEU.js";
|
|
2
2
|
import { n as invalidateTables, t as BetterQueryMeta } from "../invalidate-DMp4eqfF.js";
|
|
3
|
-
import { $ as invalidateOnBlockEvents, G as BLOCK_READ_PREFIXES, J as BlockInvalidation, K as BlockClientQueries, Q as blockQueries, X as BlockQueries, Y as BlockMethodQuery, Z as BlockVariablesOf, a as RecordBindingQueries, at as InfiniteOptionsOf, c as RecordWriteMutations, ct as QueryHelpers, dt as TableQueries, et as queryEngine, ft as createQueries, i as optimistic, it as InfiniteExtras, l as invalidateOnRecordEvents, lt as QueryKeyOf, mt as queryCache, n as OptimisticSnapshot, nt as clearOnUserChange, o as RecordQueries, ot as MutationOptionsOf, pt as invalidateOnMutation, q as BlockClients, r as OptimisticTarget, rt as BetterQueries, s as RecordQueriesOptions, st as QueriesOptions, t as OptimisticHandlers, tt as UserChangeSource, u as recordQueries, ut as QueryOptionsOf } from "../index-
|
|
3
|
+
import { $ as invalidateOnBlockEvents, G as BLOCK_READ_PREFIXES, J as BlockInvalidation, K as BlockClientQueries, Q as blockQueries, X as BlockQueries, Y as BlockMethodQuery, Z as BlockVariablesOf, a as RecordBindingQueries, at as InfiniteOptionsOf, c as RecordWriteMutations, ct as QueryHelpers, dt as TableQueries, et as queryEngine, ft as createQueries, i as optimistic, it as InfiniteExtras, l as invalidateOnRecordEvents, lt as QueryKeyOf, mt as queryCache, n as OptimisticSnapshot, nt as clearOnUserChange, o as RecordQueries, ot as MutationOptionsOf, pt as invalidateOnMutation, q as BlockClients, r as OptimisticTarget, rt as BetterQueries, s as RecordQueriesOptions, st as QueriesOptions, t as OptimisticHandlers, tt as UserChangeSource, u as recordQueries, ut as QueryOptionsOf } from "../index-CcAmFNVi.js";
|
|
4
4
|
export { BLOCK_READ_PREFIXES, type BetterQueries, type BetterQueryMeta, type BlockClientQueries, type BlockClients, type BlockInvalidation, type BlockMethodQuery, type BlockQueries, type BlockVariablesOf, type InfiniteExtras, type InfiniteOptionsOf, type MutationOptionsOf, type OptimisticHandlers, type OptimisticSnapshot, type OptimisticTarget, type QueriesOptions, type QueryHelpers, type QueryKeyOf, type QueryOptionsOf, type RecordBindingQueries, type RecordQueries, type RecordQueriesOptions, type RecordWriteMutations, type TableQueries, type UserChangeSource, blockQueries, clearOnUserChange, createQueries, escapeLike, invalidateOnBlockEvents, invalidateOnMutation, invalidateOnRecordEvents, invalidateTables, optimistic, queryCache, queryEngine, recordQueries };
|
|
@@ -271,12 +271,29 @@ function createRateLimit(options) {
|
|
|
271
271
|
applyTemporal(options);
|
|
272
272
|
const call = options.transport === void 0 ? blockCall(sqlTransport(options.sql), void 0, options.mappers) : blockCall(options.transport, options.schema, options.mappers);
|
|
273
273
|
const hit = options.transport === void 0 ? overSql(options.sql) : overTransport(call);
|
|
274
|
+
const hitAll = options.transport === void 0 ? (hits) => run(async () => decodeAll(await checkRateLimits(options.sql, hits), hits)) : (hits) => call("check_rate_limits", { hits }, (value) => decodeAll(value, hits));
|
|
274
275
|
const hooked = withBlockHooks({
|
|
275
276
|
purge: (purgeOptions = {}) => call("purge_rate_limits", { batch: purgeOptions.batch }, (value) => Number(value ?? 0)),
|
|
276
277
|
purgeJob: (jobOptions) => async () => hooked.purge(jobOptions).orThrow(),
|
|
277
278
|
check: (scope, key, rule) => {
|
|
278
279
|
if (rule !== void 0 && (!Number.isInteger(rule.max) || rule.max < 1)) return AsyncResult.err(dbError("invalid_input", "A rate limit's max must be a positive integer"));
|
|
279
280
|
return hit(scope, key, rule?.max ?? null, rule === void 0 ? null : seconds(rule.period));
|
|
281
|
+
},
|
|
282
|
+
checkAll: (hits) => {
|
|
283
|
+
if (hits.length === 0) return AsyncResult.err(dbError("invalid_input", "checkAll needs at least one limit"));
|
|
284
|
+
const rows = [];
|
|
285
|
+
for (const hit of hits) {
|
|
286
|
+
if (hit.rule !== void 0 && (!Number.isInteger(hit.rule.max) || hit.rule.max < 1)) return AsyncResult.err(dbError("invalid_input", "A rate limit's max must be a positive integer"));
|
|
287
|
+
rows.push({
|
|
288
|
+
scope: hit.scope,
|
|
289
|
+
key: hit.key,
|
|
290
|
+
...hit.rule === void 0 ? {} : {
|
|
291
|
+
max_requests: hit.rule.max,
|
|
292
|
+
period: seconds(hit.rule.period)
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
return hitAll(rows);
|
|
280
297
|
}
|
|
281
298
|
}, options.hooks, {
|
|
282
299
|
block: "rate-limit",
|
|
@@ -284,6 +301,42 @@ function createRateLimit(options) {
|
|
|
284
301
|
});
|
|
285
302
|
return hooked;
|
|
286
303
|
}
|
|
304
|
+
const numberOr = (value, fallback) => {
|
|
305
|
+
const parsed = Number(value ?? fallback);
|
|
306
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
307
|
+
};
|
|
308
|
+
function decodeOne(value) {
|
|
309
|
+
const row = isRecord(value) ? value : {};
|
|
310
|
+
return {
|
|
311
|
+
allowed: row["allowed"] === true,
|
|
312
|
+
remaining: numberOr(row["remaining"], 0),
|
|
313
|
+
retryAfter: numberOr(row["retry_after"], 0)
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
/** Reads `check_rate_limits`' answer; a missing one is a refusal. */
|
|
317
|
+
function decodeAll(value, hits) {
|
|
318
|
+
const row = isRecord(value) ? value : {};
|
|
319
|
+
const results = Array.isArray(row["results"]) ? row["results"].map(decodeOne) : [];
|
|
320
|
+
const allowed = row["allowed"] === true && results.length === hits.length;
|
|
321
|
+
const index = typeof row["blocked"] === "number" ? row["blocked"] : allowed ? -1 : 0;
|
|
322
|
+
const blocked = hits[index];
|
|
323
|
+
return {
|
|
324
|
+
allowed,
|
|
325
|
+
remaining: results.length === 0 ? 0 : Math.min(...results.map((each) => each.remaining)),
|
|
326
|
+
retryAfter: allowed ? 0 : numberOr(row["retry_after"], 0),
|
|
327
|
+
...allowed || blocked === void 0 ? {} : { blocked: {
|
|
328
|
+
index,
|
|
329
|
+
scope: blocked.scope,
|
|
330
|
+
key: blocked.key
|
|
331
|
+
} },
|
|
332
|
+
results
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/** One `check_rate_limits` call over SQL. */
|
|
336
|
+
async function checkRateLimits(sql, hits) {
|
|
337
|
+
const [row] = await sql.queryRaw("select better_supabase.check_rate_limits($1::jsonb) as result", [JSON.stringify(hits)]);
|
|
338
|
+
return row?.result;
|
|
339
|
+
}
|
|
287
340
|
const overTransport = (call) => (scope, key, max, period) => call("check_rate_limit", {
|
|
288
341
|
scope,
|
|
289
342
|
key,
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as escapeLike } from "../escape-like-PReMbEEU.js";
|
|
2
2
|
import { n as Impersonator } from "../impersonation-YTa9dZUv.js";
|
|
3
3
|
import { i as DataEntry, m as RejectedChange, n as DataEngine, o as DataSyncState } from "../data-engine-BWoz9lED.js";
|
|
4
|
-
import { t as tenantOf } from "../tenant-
|
|
4
|
+
import { t as tenantOf } from "../tenant-DOKIJI62.js";
|
|
5
5
|
import { t as AuthSession } from "../view-DyFdMCqg.js";
|
|
6
|
-
import { r as LiveCountSeed } from "../index-
|
|
7
|
-
import { r as MembershipClaim } from "../entitlements-
|
|
8
|
-
import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, c as DataWrites, d as BlockMutationState, f as BlockQueryActions, g as ActionInputOf, h as BlockRefetchOn, l as BlockEventSource, m as BlockQueryState, o as DataSource, p as BlockQueryOptions, s as DataState, t as fieldErrorsOf, u as BlockMutationActions, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-
|
|
6
|
+
import { r as LiveCountSeed } from "../index-CTu-3fJB.js";
|
|
7
|
+
import { r as MembershipClaim } from "../entitlements-sO977DO-.js";
|
|
8
|
+
import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, c as DataWrites, d as BlockMutationState, f as BlockQueryActions, g as ActionInputOf, h as BlockRefetchOn, l as BlockEventSource, m as BlockQueryState, o as DataSource, p as BlockQueryOptions, s as DataState, t as fieldErrorsOf, u as BlockMutationActions, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-Dt86dCKk.js";
|
|
9
9
|
import { n as supportOf, t as SupportView } from "../support-view-BYOgwXsJ.js";
|
|
10
|
-
import { $ as
|
|
10
|
+
import { $ as UseActionFormOptions, A as useController, B as RecordListUrl, C as useConflicts, D as defineDataHooks, E as DataView, F as RecordFormState, G as RecordInitial, H as useRecordListState, I as UseRecordFormOptions, J as RecordState, K as RecordProviderKit, L as useRecordForm, M as useBlockEvent, N as useBlockMutation, O as useBlockEnv, P as useBlockQuery, Q as ActionHandle, R as RecordListQueryStates, S as Conflicts, T as DataHooks, U as RecordActionsOf, V as RecordListUrlState, W as RecordContextValue, X as createRecordProvider, Y as RecordWriteHandlers, Z as ActionForm, _ as useRealtimeRelay, a as Upload, at as LiveCount, b as PresenceTopic, c as UseImageOptions, ct as useBroadcast, d as useSignedUrl, dt as useSupabase, et as useAction, f as useUpload, g as UseRealtimeRelayOptions, h as useDebouncedSearch, i as StorageImage, it as BetterSupabaseProviderProps, j as useLatest, k as useBlockTenant, l as UseUploadOptions, lt as useLiveCount, m as DebouncedSearchOptions, n as SignedUrl, nt as BetterHooks, o as UploadStatus, ot as createHooks, p as DebouncedSearch, q as RecordProviderProps, r as SignedUrlSource, rt as BetterSupabaseProvider, s as UploadTarget, st as useAuth, t as ImageSource, tt as useActionForm, u as useImage, ut as useLiveQuery, v as Presence, w as useSyncStatus, x as usePresence, y as PresenceHookOptions, z as RecordListState } from "../index-Craf712U.js";
|
|
11
11
|
import { SessionProvider, SessionProviderProps, useSession, useSupportSession } from "./session.js";
|
|
12
12
|
import { a as useSignIn, i as SignOut, n as PendingState, o as useSignOut, r as SignIn, t as AuthHookOptions } from "../sign-in-D54FLMQy.js";
|
|
13
|
-
export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BlockEventSource, type BlockMutationActions, type BlockMutationState, type BlockQueryActions, type BlockQueryOptions, type BlockQueryState, type BlockRefetchOn, type BroadcastOptions, type ClaimsOf, type ClientLike, type Conflicts, type DataEngine, type DataEntry, type DataHooks, type DataSource, type DataState, type DataSyncState, type DataView, type DataWrites, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, type RejectedChange, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRecordFormOptions, type UseUploadOptions, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
|
|
13
|
+
export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BlockEventSource, type BlockMutationActions, type BlockMutationState, type BlockQueryActions, type BlockQueryOptions, type BlockQueryState, type BlockRefetchOn, type BroadcastOptions, type ClaimsOf, type ClientLike, type Conflicts, type DataEngine, type DataEntry, type DataHooks, type DataSource, type DataState, type DataSyncState, type DataView, type DataWrites, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, type RejectedChange, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRealtimeRelayOptions, type UseRecordFormOptions, type UseUploadOptions, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRealtimeRelay, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
|
package/dist/react/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
|
|
3
|
-
import { a as createHooks, d as useSupabase, i as BetterSupabaseProvider, l as useLiveCount, n as useSignIn, o as useAuth, r as useSignOut, s as useBroadcast, u as useLiveQuery } from "../sign-in-
|
|
3
|
+
import { a as createHooks, d as useSupabase, i as BetterSupabaseProvider, l as useLiveCount, n as useSignIn, o as useAuth, r as useSignOut, s as useBroadcast, u as useLiveQuery } from "../sign-in-CmPK1AgM.js";
|
|
4
4
|
import { t as supportOf } from "../support-view-g4YLBeqX.js";
|
|
5
5
|
import { SessionProvider, useSession, useSupportSession } from "./session.js";
|
|
6
6
|
import { d as fieldErrorsOf } from "../data-hooks-tgF1Ct0F.js";
|
|
7
|
-
import { _ as
|
|
7
|
+
import { _ as useBlockTenant, a as useRealtimeRelay, b as useAction, c as useSyncStatus, d as useBlockMutation, f as useBlockQuery, g as useBlockEnv, h as createRecordProvider, i as useDebouncedSearch, l as defineDataHooks, m as useRecordListState, n as useSignedUrl, o as usePresence, p as useRecordForm, r as useUpload, s as useConflicts, t as useImage, u as useBlockEvent, v as useController, x as useActionForm, y as useLatest } from "../react-CZUZYn9E.js";
|
|
8
8
|
import { t as tenantOf } from "../tenant-BgIiMQpo.js";
|
|
9
|
-
export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
|
|
9
|
+
export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRealtimeRelay, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as AuthSnapshot } from "../../bind-
|
|
1
|
+
import { t as AuthSnapshot } from "../../bind-JGCPGUJh.js";
|
|
2
2
|
import { a as OAuthSignInOptions, i as OAuthClient, n as AuthLinkClient, o as WebBrowserLike, r as AuthLinkResult, t as AuthFailure } from "../../auth-link-B4NL84XU.js";
|
|
3
3
|
import { n as PendingState } from "../../sign-in-D54FLMQy.js";
|
|
4
4
|
import { Provider } from "@supabase/supabase-js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as signInWithOAuthBrowser, t as handleAuthDeepLink } from "../../auth-link-D3-bU6yz.js";
|
|
2
|
-
import { f as ClientContext, o as useAuth, t as usePending } from "../../sign-in-
|
|
2
|
+
import { f as ClientContext, o as useAuth, t as usePending } from "../../sign-in-CmPK1AgM.js";
|
|
3
3
|
import { useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
//#region src/react/native/index.ts
|
|
5
5
|
function useClientOf(explicit, hook) {
|
package/dist/react/server.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as escapeLike } from "../escape-like-PReMbEEU.js";
|
|
2
|
-
import { pt as QuerySpec } from "../define-
|
|
2
|
+
import { pt as QuerySpec } from "../define-C5AcEkEJ.js";
|
|
3
3
|
import { n as Impersonator } from "../impersonation-YTa9dZUv.js";
|
|
4
|
-
import { t as tenantOf } from "../tenant-
|
|
4
|
+
import { t as tenantOf } from "../tenant-DOKIJI62.js";
|
|
5
5
|
import { t as AuthSession } from "../view-DyFdMCqg.js";
|
|
6
|
-
import { r as LiveCountSeed } from "../index-
|
|
7
|
-
import { r as MembershipClaim } from "../entitlements-
|
|
8
|
-
import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, g as ActionInputOf, t as fieldErrorsOf, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-
|
|
6
|
+
import { r as LiveCountSeed } from "../index-CTu-3fJB.js";
|
|
7
|
+
import { r as MembershipClaim } from "../entitlements-sO977DO-.js";
|
|
8
|
+
import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, g as ActionInputOf, t as fieldErrorsOf, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-Dt86dCKk.js";
|
|
9
9
|
import { n as supportOf, t as SupportView } from "../support-view-BYOgwXsJ.js";
|
|
10
|
-
import { A as
|
|
10
|
+
import { $ as UseActionFormOptions, A as useController$1, B as RecordListUrl, C as useConflicts$1, D as defineDataHooks$1, F as RecordFormState, G as RecordInitial, H as useRecordListState$1, I as UseRecordFormOptions, J as RecordState, K as RecordProviderKit, L as useRecordForm$1, M as useBlockEvent$1, N as useBlockMutation$1, O as useBlockEnv$1, P as useBlockQuery$1, Q as ActionHandle, R as RecordListQueryStates, U as RecordActionsOf, V as RecordListUrlState, W as RecordContextValue, X as createRecordProvider$1, Y as RecordWriteHandlers, Z as ActionForm, _ as useRealtimeRelay$1, a as Upload, at as LiveCount, b as PresenceTopic, c as UseImageOptions, ct as useBroadcast, d as useSignedUrl$1, dt as useSupabase, f as useUpload$1, g as UseRealtimeRelayOptions, h as useDebouncedSearch$1, i as StorageImage, it as BetterSupabaseProviderProps, j as useLatest$1, k as useBlockTenant$1, l as UseUploadOptions, m as DebouncedSearchOptions, n as SignedUrl, nt as BetterHooks, o as UploadStatus, p as DebouncedSearch, q as RecordProviderProps, r as SignedUrlSource, rt as BetterSupabaseProvider, s as UploadTarget, st as useAuth, t as ImageSource, u as useImage$1, ut as useLiveQuery, v as Presence, w as useSyncStatus$1, x as usePresence$1, y as PresenceHookOptions, z as RecordListState } from "../index-Craf712U.js";
|
|
11
11
|
import { SessionProvider, SessionProviderProps } from "./session.js";
|
|
12
12
|
import { a as useSignIn$1, i as SignOut, n as PendingState, o as useSignOut$1, r as SignIn, t as AuthHookOptions } from "../sign-in-D54FLMQy.js";
|
|
13
13
|
//#region src/react/server.d.ts
|
|
@@ -38,6 +38,11 @@ export declare const useActionForm: <T>(action: (input: FormData) => Promise<Act
|
|
|
38
38
|
* Component.
|
|
39
39
|
*/
|
|
40
40
|
export declare const usePresence: typeof usePresence$1;
|
|
41
|
+
/**
|
|
42
|
+
* The `react-server` build of `useRealtimeRelay`: create the relay client in a
|
|
43
|
+
* Client Component.
|
|
44
|
+
*/
|
|
45
|
+
export declare const useRealtimeRelay: typeof useRealtimeRelay$1;
|
|
41
46
|
/**
|
|
42
47
|
* The `react-server` build of `useSignIn`: sign in from a Client Component or a
|
|
43
48
|
* Server Action.
|
|
@@ -127,4 +132,4 @@ export declare const useBlockEnv: typeof useBlockEnv$1;
|
|
|
127
132
|
*/
|
|
128
133
|
export declare const useBlockTenant: typeof useBlockTenant$1;
|
|
129
134
|
//#endregion
|
|
130
|
-
export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BroadcastOptions, type ClaimsOf, type ClientLike, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRecordFormOptions, type UseUploadOptions, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAuth, useBroadcast, useLiveQuery, useSupabase };
|
|
135
|
+
export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BroadcastOptions, type ClaimsOf, type ClientLike, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRealtimeRelayOptions, type UseRecordFormOptions, type UseUploadOptions, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAuth, useBroadcast, useLiveQuery, useSupabase };
|
package/dist/react/server.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
|
|
2
|
-
import { d as useSupabase, i as BetterSupabaseProvider, o as useAuth, s as useBroadcast, u as useLiveQuery } from "../sign-in-
|
|
2
|
+
import { d as useSupabase, i as BetterSupabaseProvider, o as useAuth, s as useBroadcast, u as useLiveQuery } from "../sign-in-CmPK1AgM.js";
|
|
3
3
|
import { t as supportOf } from "../support-view-g4YLBeqX.js";
|
|
4
4
|
import { d as fieldErrorsOf } from "../data-hooks-tgF1Ct0F.js";
|
|
5
|
-
import "../react-
|
|
5
|
+
import "../react-CZUZYn9E.js";
|
|
6
6
|
import { t as tenantOf } from "../tenant-BgIiMQpo.js";
|
|
7
7
|
import { SessionProvider } from "./session.js";
|
|
8
8
|
//#region src/react/server.ts
|
|
@@ -39,6 +39,11 @@ const useActionForm = clientOnly("useActionForm");
|
|
|
39
39
|
*/
|
|
40
40
|
const usePresence = clientOnly("usePresence");
|
|
41
41
|
/**
|
|
42
|
+
* The `react-server` build of `useRealtimeRelay`: create the relay client in a
|
|
43
|
+
* Client Component.
|
|
44
|
+
*/
|
|
45
|
+
const useRealtimeRelay = clientOnly("useRealtimeRelay");
|
|
46
|
+
/**
|
|
42
47
|
* The `react-server` build of `useSignIn`: sign in from a Client Component or a
|
|
43
48
|
* Server Action.
|
|
44
49
|
*/
|
|
@@ -138,4 +143,4 @@ const useBlockEnv = clientOnly("useBlockEnv");
|
|
|
138
143
|
*/
|
|
139
144
|
const useBlockTenant = clientOnly("useBlockTenant");
|
|
140
145
|
//#endregion
|
|
141
|
-
export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
|
|
146
|
+
export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRealtimeRelay, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
|
package/dist/react/session.d.ts
CHANGED
|
@@ -26,4 +26,9 @@ export declare function useSession<C = unknown, P = unknown>(): AuthSession<C, P
|
|
|
26
26
|
* `useSession`.
|
|
27
27
|
*/
|
|
28
28
|
export declare function useSupportSession(): SupportView | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* `useSupportSession()` that answers `undefined` outside a `<SessionProvider>`
|
|
31
|
+
* instead of throwing.
|
|
32
|
+
*/
|
|
33
|
+
export declare function useOptionalSupportSession(): SupportView | undefined;
|
|
29
34
|
//#endregion
|
package/dist/react/session.js
CHANGED
|
@@ -27,5 +27,13 @@ function useSession() {
|
|
|
27
27
|
function useSupportSession() {
|
|
28
28
|
return supportOf(useSession());
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* `useSupportSession()` that answers `undefined` outside a `<SessionProvider>`
|
|
32
|
+
* instead of throwing.
|
|
33
|
+
*/
|
|
34
|
+
function useOptionalSupportSession() {
|
|
35
|
+
const promise = useContext(SessionContext);
|
|
36
|
+
return promise ? supportOf(use(promise)) : void 0;
|
|
37
|
+
}
|
|
30
38
|
//#endregion
|
|
31
|
-
export { SessionProvider, useSession, useSupportSession };
|
|
39
|
+
export { SessionProvider, useOptionalSupportSession, useSession, useSupportSession };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { n as dbError } from "./errors-BVFgt8BZ.js";
|
|
2
2
|
import { t as escapeLike } from "./escape-like-DHfx6jRr.js";
|
|
3
3
|
import { a as ok, r as err, s as toDbError } from "./result-ntFBW2p2.js";
|
|
4
|
-
import { c as useBroadcastAuth, f as ClientContext } from "./sign-in-
|
|
5
|
-
import "./react/session.js";
|
|
4
|
+
import { c as useBroadcastAuth, f as ClientContext } from "./sign-in-CmPK1AgM.js";
|
|
5
|
+
import { useOptionalSupportSession } from "./react/session.js";
|
|
6
6
|
import { a as blockArgsKey, c as listenToBlockEvents, d as fieldErrorsOf, i as dataTarget, l as blockEnv, n as createDataOne, o as createBlockMutation, r as dataArgsKey, s as createBlockQuery, t as createDataList } from "./data-hooks-tgF1Ct0F.js";
|
|
7
7
|
import { H as rpcTransport } from "./block-helpers-CtBdjgO4.js";
|
|
8
8
|
import { r as createBlocks } from "./create-blocks-Bu4H5TXw.js";
|
|
9
9
|
import { a as recordCan, i as plainData, l as runBindingWrite, s as recordSubject } from "./record-type-DRbnlj5q.js";
|
|
10
10
|
import { t as createRecordController } from "./controller-BNZKd6bJ.js";
|
|
11
|
+
import { t as relayRealtimeClient } from "./relay-gKvKJ3xf.js";
|
|
11
12
|
import { a as ttlSeconds, n as scaleTransform, r as transformFor } from "./variants-Cy--Ub-a.js";
|
|
12
13
|
import { createContext, createElement, use, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
|
|
13
14
|
//#region src/react/actions.ts
|
|
@@ -529,7 +530,7 @@ const notJoined = () => Promise.resolve(dbError("invalid_request", "better-supab
|
|
|
529
530
|
*/
|
|
530
531
|
function usePresence(topic, values, options = {}) {
|
|
531
532
|
const context = useContext(ClientContext);
|
|
532
|
-
const supabase = options.client ?? context?.client.supabase;
|
|
533
|
+
const supabase = options.client ?? context?.realtime ?? context?.client.supabase;
|
|
533
534
|
if (!supabase) throw new Error("better-supabase: usePresence needs <BetterSupabaseProvider client={bsb}> or { client: supabase }");
|
|
534
535
|
const auth = useBroadcastAuth(options.client === void 0 ? context?.client : void 0, supabase);
|
|
535
536
|
const [members, setMembers] = useState(NONE);
|
|
@@ -606,6 +607,42 @@ function syncState(joined, current, tracked) {
|
|
|
606
607
|
else joined.track(current.state);
|
|
607
608
|
}
|
|
608
609
|
//#endregion
|
|
610
|
+
//#region src/react/relay.ts
|
|
611
|
+
/**
|
|
612
|
+
* A `relayRealtimeClient(url)` while it is needed, else `undefined`. Pass it to
|
|
613
|
+
* `<BetterSupabaseProvider realtime={...}>`, and `useBroadcast`, `usePresence`,
|
|
614
|
+
* `useLiveQuery` and `useLiveCount` join through the server's `realtimeRelay`
|
|
615
|
+
* route, as the viewed user in a support session. The client is created once
|
|
616
|
+
* per `url` and options, so pass a stable `fetch` and `EventSource`.
|
|
617
|
+
*
|
|
618
|
+
* ```tsx
|
|
619
|
+
* const realtime = useRealtimeRelay("/api/realtime");
|
|
620
|
+
* return (
|
|
621
|
+
* <BetterSupabaseProvider client={bsb} realtime={realtime}>
|
|
622
|
+
* {children}
|
|
623
|
+
* </BetterSupabaseProvider>
|
|
624
|
+
* );
|
|
625
|
+
* ```
|
|
626
|
+
*/
|
|
627
|
+
function useRealtimeRelay(url, options = {}) {
|
|
628
|
+
const support = useOptionalSupportSession();
|
|
629
|
+
const active = options.when === "always" || support !== void 0;
|
|
630
|
+
const { EventSource: source, fetch: send, timeoutMs, maxBackoffMs } = options;
|
|
631
|
+
return useMemo(() => active ? relayRealtimeClient(url, {
|
|
632
|
+
...source === void 0 ? {} : { EventSource: source },
|
|
633
|
+
...send === void 0 ? {} : { fetch: send },
|
|
634
|
+
...timeoutMs === void 0 ? {} : { timeoutMs },
|
|
635
|
+
...maxBackoffMs === void 0 ? {} : { maxBackoffMs }
|
|
636
|
+
}) : void 0, [
|
|
637
|
+
active,
|
|
638
|
+
url,
|
|
639
|
+
source,
|
|
640
|
+
send,
|
|
641
|
+
timeoutMs,
|
|
642
|
+
maxBackoffMs
|
|
643
|
+
]);
|
|
644
|
+
}
|
|
645
|
+
//#endregion
|
|
609
646
|
//#region src/react/search.ts
|
|
610
647
|
/**
|
|
611
648
|
* A search box's value, debounced. Pass `term` to `contains` (which escapes it)
|
|
@@ -976,4 +1013,4 @@ function useUpload(bucket, options = {}) {
|
|
|
976
1013
|
};
|
|
977
1014
|
}
|
|
978
1015
|
//#endregion
|
|
979
|
-
export {
|
|
1016
|
+
export { useBlockTenant as _, useRealtimeRelay as a, useAction as b, useSyncStatus as c, useBlockMutation as d, useBlockQuery as f, useBlockEnv as g, createRecordProvider as h, useDebouncedSearch as i, defineDataHooks as l, useRecordListState as m, useSignedUrl as n, usePresence as o, useRecordForm as p, useUpload as r, useConflicts as s, useImage as t, useBlockEvent as u, useController as v, useActionForm as x, useLatest as y };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { O as AnyFunctions, k as AnyModels } from "../types-DFdg_4yN.js";
|
|
2
2
|
import { l as PermissionRef, t as AnyAuthorizer } from "../authorizer-B6X09otb.js";
|
|
3
|
-
import { t as BetterSupabase } from "../define-
|
|
4
|
-
import { n as BetterServer } from "../server-types-
|
|
3
|
+
import { t as BetterSupabase } from "../define-C5AcEkEJ.js";
|
|
4
|
+
import { n as BetterServer } from "../server-types-CK8mUIUT.js";
|
|
5
5
|
import { a as AuthorizedContext, c as ResourceLoaderContext, i as AuthorizeOptions, l as Unwrapped, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-DOwKpSkA.js";
|
|
6
6
|
import { t as RefusalRedirects } from "../refusal-CSntB_x8.js";
|
|
7
|
-
import { n as FrameworkOptions, r as LocalsResource, t as FrameworkLocals } from "../framework-
|
|
7
|
+
import { n as FrameworkOptions, r as LocalsResource, t as FrameworkLocals } from "../framework-BGdZVyPL.js";
|
|
8
8
|
import { t as Validated } from "../shared-CRRfQAKG.js";
|
|
9
9
|
import { AnyEntry, Contributions } from "@supabase/middleware";
|
|
10
10
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
package/dist/realtime/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { D as AccessTopicPolicy, E as AccessPolicySql } from "../types-DFdg_4yN.js";
|
|
2
|
-
import {
|
|
2
|
+
import { et as TemplateParams, tt as TemplateValues } from "../bucket-vc-QRrva.js";
|
|
3
3
|
import { t as RealtimeStatus } from "../realtime-status-BhNkb-Ow.js";
|
|
4
|
-
import { A as TriggerTopic, C as TopicSubscription, D as TriggerLookup, E as TopicTriggerValue, F as FanOutResult, I as TopicFanOutOptions, M as defineTopic, N as rowChange, O as TriggerOptions, P as rowKeys, S as TopicSubscribeOptions, T as TopicTriggerOptions, _ as TopicMessage, a as PresenceOutput, b as TopicPermission, c as RealtimeClient, d as SubscribeOptions, f as Subscription, g as TopicHandlers, h as TopicEvent, i as PresenceOptions, j as TriggerValue, k as TriggerPayloadMode, l as RowChange, m as Topic, n as PresenceInput, o as PresenceSchema, p as SubscriptionStatus, r as PresenceMember, s as PresenceSubscription, t as EventSchemas, u as RowKeys, v as TopicOptions, w as TopicTriggerLookup, x as TopicSqlOptions, y as TopicPayload } from "../topic-
|
|
5
|
-
import { a as watchTopic, i as topicPort, n as TopicPort, r as TopicWatch, t as TopicHandle } from "../watch-topic-
|
|
6
|
-
import { _ as subjectPresenceValues, a as LiveSource, c as liveCount, d as realtimeChanges, f as SUBJECT_PRESENCE_TEMPLATE, g as subjectPresenceTopic, h as subjectPresence, i as LiveQueryOptions, l as liveQuery, m as SubjectPresenceValues, n as LiveCountOptions, o as LiveSubscription, p as SubjectPresenceTopic, r as LiveCountSeed, s as RealtimeChangesOptions, t as CountRunner, u as liveTopic } from "../index-
|
|
4
|
+
import { A as TriggerTopic, C as TopicSubscription, D as TriggerLookup, E as TopicTriggerValue, F as FanOutResult, I as TopicFanOutOptions, M as defineTopic, N as rowChange, O as TriggerOptions, P as rowKeys, S as TopicSubscribeOptions, T as TopicTriggerOptions, _ as TopicMessage, a as PresenceOutput, b as TopicPermission, c as RealtimeClient, d as SubscribeOptions, f as Subscription, g as TopicHandlers, h as TopicEvent, i as PresenceOptions, j as TriggerValue, k as TriggerPayloadMode, l as RowChange, m as Topic, n as PresenceInput, o as PresenceSchema, p as SubscriptionStatus, r as PresenceMember, s as PresenceSubscription, t as EventSchemas, u as RowKeys, v as TopicOptions, w as TopicTriggerLookup, x as TopicSqlOptions, y as TopicPayload } from "../topic-CZXHhZye.js";
|
|
5
|
+
import { a as watchTopic, i as topicPort, n as TopicPort, r as TopicWatch, t as TopicHandle } from "../watch-topic-BAxoPKZx.js";
|
|
6
|
+
import { S as relayTopicPort, _ as subjectPresenceValues, a as LiveSource, b as RelayEventSourceConstructor, c as liveCount, d as realtimeChanges, f as SUBJECT_PRESENCE_TEMPLATE, g as subjectPresenceTopic, h as subjectPresence, i as LiveQueryOptions, l as liveQuery, m as SubjectPresenceValues, n as LiveCountOptions, o as LiveSubscription, p as SubjectPresenceTopic, r as LiveCountSeed, s as RealtimeChangesOptions, t as CountRunner, u as liveTopic, v as RelayClientOptions, x as relayRealtimeClient, y as RelayEventSource } from "../index-CTu-3fJB.js";
|
|
7
7
|
import { n as subjectReaders, t as SubjectReadersOptions } from "../subject-readers-8GySC9Z8.js";
|
|
8
|
-
export { type AccessPolicySql, type AccessTopicPolicy, type CountRunner, type EventSchemas, type FanOutResult, type LiveCountOptions, type LiveCountSeed, type LiveQueryOptions, type LiveSource, type LiveSubscription, type PresenceInput, type PresenceMember, type PresenceOptions, type PresenceOutput, type PresenceSchema, type PresenceSubscription, type RealtimeChangesOptions, type RealtimeClient, type RealtimeStatus, type RowChange, type RowKeys, SUBJECT_PRESENCE_TEMPLATE, type SubjectPresenceTopic, type SubjectPresenceValues, type SubjectReadersOptions, type SubscribeOptions, type Subscription, type SubscriptionStatus, type TemplateParams, type TemplateValues, type Topic, type TopicEvent, type TopicFanOutOptions, type TopicHandle, type TopicHandlers, type TopicMessage, type TopicOptions, type TopicPayload, type TopicPermission, type TopicPort, type TopicSqlOptions, type TopicSubscribeOptions, type TopicSubscription, type TopicTriggerLookup, type TopicTriggerOptions, type TopicTriggerValue, type TopicWatch, type TriggerLookup, type TriggerOptions, type TriggerPayloadMode, type TriggerTopic, type TriggerValue, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
|
|
8
|
+
export { type AccessPolicySql, type AccessTopicPolicy, type CountRunner, type EventSchemas, type FanOutResult, type LiveCountOptions, type LiveCountSeed, type LiveQueryOptions, type LiveSource, type LiveSubscription, type PresenceInput, type PresenceMember, type PresenceOptions, type PresenceOutput, type PresenceSchema, type PresenceSubscription, type RealtimeChangesOptions, type RealtimeClient, type RealtimeStatus, type RelayClientOptions, type RelayEventSource, type RelayEventSourceConstructor, type RowChange, type RowKeys, SUBJECT_PRESENCE_TEMPLATE, type SubjectPresenceTopic, type SubjectPresenceValues, type SubjectReadersOptions, type SubscribeOptions, type Subscription, type SubscriptionStatus, type TemplateParams, type TemplateValues, type Topic, type TopicEvent, type TopicFanOutOptions, type TopicHandle, type TopicHandlers, type TopicMessage, type TopicOptions, type TopicPayload, type TopicPermission, type TopicPort, type TopicSqlOptions, type TopicSubscribeOptions, type TopicSubscription, type TopicTriggerLookup, type TopicTriggerOptions, type TopicTriggerValue, type TopicWatch, type TriggerLookup, type TriggerOptions, type TriggerPayloadMode, type TriggerTopic, type TriggerValue, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, relayRealtimeClient, relayTopicPort, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
|
package/dist/realtime/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { i as realtimeChanges, n as liveQuery, r as liveTopic, t as liveCount } from "../live-C21DgbsD.js";
|
|
2
2
|
import { n as watchTopic, t as topicPort } from "../watch-topic-CuaWfCuv.js";
|
|
3
|
+
import { n as relayTopicPort, t as relayRealtimeClient } from "../relay-gKvKJ3xf.js";
|
|
3
4
|
import { t as subjectReaders } from "../subject-readers-B-pQ9Mmo.js";
|
|
4
5
|
import { n as rowChange, r as rowKeys, t as defineTopic } from "../topic-ikV_pLTX.js";
|
|
5
6
|
//#region src/realtime/subject-presence.ts
|
|
@@ -34,4 +35,4 @@ function subjectPresenceValues(subject) {
|
|
|
34
35
|
} : null;
|
|
35
36
|
}
|
|
36
37
|
//#endregion
|
|
37
|
-
export { SUBJECT_PRESENCE_TEMPLATE, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
|
|
38
|
+
export { SUBJECT_PRESENCE_TEMPLATE, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, relayRealtimeClient, relayTopicPort, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Sn as EntitySchema } from "./define-block-
|
|
1
|
+
import { Sn as EntitySchema } from "./define-block-C1RHXz7L.js";
|
|
2
2
|
import { s as FormFieldType } from "./form-definition-BjEtH8BT.js";
|
|
3
3
|
//#region src/records/record-form.d.ts
|
|
4
4
|
/** The input a field renders: a forms block field type, or a date and time. */
|
package/dist/records/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { b as DbError, t as AsyncResult } from "../result-DZeA5KS6.js";
|
|
2
2
|
import { $ as RecordRef } from "../types-DFdg_4yN.js";
|
|
3
|
-
import { _n as recordBindingWrite, an as RecordBindingDefinition, cn as RecordBindingResult, dn as RecordBindingWriteName, fn as RecordBindingWriteOutput, gn as defineRecordBinding, hn as TimelineItem, in as RecordBindingData, ln as RecordBindingWrite, mn as RecordRowInput, nn as AnyRecordBindingWrite, on as RecordBindingOptions, pn as RecordBindingWrites, rn as RecordBinding, sn as RecordBindingPermissions, tn as AnyRecordBinding, un as RecordBindingWriteInput, vn as recordEventMatches, yn as recordRowInput } from "../define-block-
|
|
4
|
-
import { A as BindingBlocks, B as PermissionFlags, C as defineRecordType, D as recordPermissionKeys, E as recordCan, F as LoadBindingsOptions, H as can, I as LoadedBindings, L as bindingCan, M as BindingName, N as BindingOf, O as recordSubject, P as BindingSource, R as countBinding, S as RecordWriteInput, T as plainData, U as permissionFlags, V as PermissionSet, _ as RecordTypeBlocks, b as RecordTypeWriteInput, d as BindingWritesOf, f as Plain, g as RecordType, h as RecordCan, j as BindingCheck, k as recordWriteInput, m as PlainBindings, p as PlainBinding, v as RecordTypePermissions, w as findBindingWrite, x as RecordTypeWriteOutput, y as RecordTypeSpec, z as loadBindings } from "../index-
|
|
5
|
-
import { p as SubscriptionStatus } from "../topic-
|
|
6
|
-
import { n as TopicPort } from "../watch-topic-
|
|
7
|
-
import { n as Controller, t as AuthPort } from "../controller-
|
|
3
|
+
import { _n as recordBindingWrite, an as RecordBindingDefinition, cn as RecordBindingResult, dn as RecordBindingWriteName, fn as RecordBindingWriteOutput, gn as defineRecordBinding, hn as TimelineItem, in as RecordBindingData, ln as RecordBindingWrite, mn as RecordRowInput, nn as AnyRecordBindingWrite, on as RecordBindingOptions, pn as RecordBindingWrites, rn as RecordBinding, sn as RecordBindingPermissions, tn as AnyRecordBinding, un as RecordBindingWriteInput, vn as recordEventMatches, yn as recordRowInput } from "../define-block-C1RHXz7L.js";
|
|
4
|
+
import { A as BindingBlocks, B as PermissionFlags, C as defineRecordType, D as recordPermissionKeys, E as recordCan, F as LoadBindingsOptions, H as can, I as LoadedBindings, L as bindingCan, M as BindingName, N as BindingOf, O as recordSubject, P as BindingSource, R as countBinding, S as RecordWriteInput, T as plainData, U as permissionFlags, V as PermissionSet, _ as RecordTypeBlocks, b as RecordTypeWriteInput, d as BindingWritesOf, f as Plain, g as RecordType, h as RecordCan, j as BindingCheck, k as recordWriteInput, m as PlainBindings, p as PlainBinding, v as RecordTypePermissions, w as findBindingWrite, x as RecordTypeWriteOutput, y as RecordTypeSpec, z as loadBindings } from "../index-CcAmFNVi.js";
|
|
5
|
+
import { p as SubscriptionStatus } from "../topic-CZXHhZye.js";
|
|
6
|
+
import { n as TopicPort } from "../watch-topic-BAxoPKZx.js";
|
|
7
|
+
import { n as Controller, t as AuthPort } from "../controller-BW-5Opig.js";
|
|
8
8
|
import { a as RecordSummaryOptions, c as Subjects, f as MyWorkKind, i as RecordSummary, n as MyWorkItem, r as MyWorkOptions } from "../subjects-BpIEN1MS.js";
|
|
9
|
-
import { a as timelineBindings, c as RecordListCells, d as RecordListQuery, f as RecordListRow, h as defineRecordList, i as loadTimeline, l as RecordListColumn, m as RecordListSpec, n as Timeline, o as RecordList, p as RecordListSource, r as TimelineEntry, s as RecordListCell, t as LoadTimelineOptions, u as RecordListPage } from "../timeline-
|
|
10
|
-
import { a as RecordFormOptions, c as recordForm, i as RecordFormInput, n as RecordFormCustomField, o as RecordFormResult, r as RecordFormField, s as RecordFormValues, t as RecordForm } from "../record-form-
|
|
9
|
+
import { a as timelineBindings, c as RecordListCells, d as RecordListQuery, f as RecordListRow, h as defineRecordList, i as loadTimeline, l as RecordListColumn, m as RecordListSpec, n as Timeline, o as RecordList, p as RecordListSource, r as TimelineEntry, s as RecordListCell, t as LoadTimelineOptions, u as RecordListPage } from "../timeline-CvTuXYvn.js";
|
|
10
|
+
import { a as RecordFormOptions, c as recordForm, i as RecordFormInput, n as RecordFormCustomField, o as RecordFormResult, r as RecordFormField, s as RecordFormValues, t as RecordForm } from "../record-form-D9ILuVtA.js";
|
|
11
11
|
//#region src/records/controller.d.ts
|
|
12
12
|
interface RecordControllerOptions<B extends BindingBlocks, N extends BindingName<B>> extends LoadBindingsOptions<B, N> {
|
|
13
13
|
readonly source: BindingSource<B>;
|