@palbase/backend 23.0.0 → 23.1.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/bin/palbase-backend.cjs +313 -24
- package/dist/bin/palbase-backend.cjs.map +1 -1
- package/dist/bin/palbase-backend.js +5 -5
- package/dist/{chunk-Y5HXVUMP.js → chunk-HQRJDARQ.js} +2 -2
- package/dist/{chunk-REZU6UKT.js → chunk-M5MCBWJI.js} +296 -25
- package/dist/chunk-M5MCBWJI.js.map +1 -0
- package/dist/{chunk-W5ODXPY3.js → chunk-NS5V43YQ.js} +14 -1
- package/dist/chunk-NS5V43YQ.js.map +1 -0
- package/dist/{chunk-FSGSB42K.js → chunk-OHALWEOG.js} +9 -4
- package/dist/chunk-OHALWEOG.js.map +1 -0
- package/dist/{chunk-HAF67F2H.js → chunk-PY7YJDCT.js} +57 -3
- package/dist/chunk-PY7YJDCT.js.map +1 -0
- package/dist/{chunk-ZC6Q2BRD.js → chunk-R3KN6RHD.js} +2 -2
- package/dist/{chunk-OMRTHM4X.js → chunk-RCLNBJCM.js} +1 -1
- package/dist/chunk-RCLNBJCM.js.map +1 -0
- package/dist/db/index.cjs +68 -1
- package/dist/db/index.cjs.map +1 -1
- package/dist/db/index.d.cts +2 -2
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.js +2 -2
- package/dist/{endpoint-BavvbW4P.d.ts → endpoint-CVWXh6oG.d.ts} +70 -8
- package/dist/{endpoint-i8TTCohk.d.cts → endpoint-c9h5jriX.d.cts} +70 -8
- package/dist/engine/index.cjs +313 -24
- package/dist/engine/index.cjs.map +1 -1
- package/dist/engine/index.d.cts +4 -4
- package/dist/engine/index.d.ts +4 -4
- package/dist/engine/index.js +4 -4
- package/dist/{index-B7YBEG5w.d.ts → index-BZrJXnVh.d.ts} +49 -4
- package/dist/{index-Bmvx1EvJ.d.cts → index-By8Dle5U.d.cts} +86 -17
- package/dist/{index-B3jmmItD.d.ts → index-CwAJ7HEe.d.ts} +86 -17
- package/dist/{index-E7OscPJT.d.cts → index-CxeQSfJP.d.cts} +49 -4
- package/dist/index.cjs +104 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +32 -6
- package/dist/index.js.map +1 -1
- package/dist/openapi/index.cjs +29 -4
- package/dist/openapi/index.cjs.map +1 -1
- package/dist/openapi/index.d.cts +5 -2
- package/dist/openapi/index.d.ts +5 -2
- package/dist/openapi/index.js +32 -7
- package/dist/openapi/index.js.map +1 -1
- package/dist/{registry-DY3d9l1k.d.ts → registry-B3niOVYp.d.ts} +101 -7
- package/dist/{registry-C3H2uPeZ.d.cts → registry-CqPK2Qby.d.cts} +101 -7
- package/dist/test/index.cjs +482 -9
- package/dist/test/index.cjs.map +1 -1
- package/dist/test/index.d.cts +35 -3
- package/dist/test/index.d.ts +35 -3
- package/dist/test/index.js +480 -8
- package/dist/test/index.js.map +1 -1
- package/package.json +4 -3
- package/stager/return_types.js +23 -0
- package/dist/chunk-FSGSB42K.js.map +0 -1
- package/dist/chunk-HAF67F2H.js.map +0 -1
- package/dist/chunk-OMRTHM4X.js.map +0 -1
- package/dist/chunk-REZU6UKT.js.map +0 -1
- package/dist/chunk-W5ODXPY3.js.map +0 -1
- /package/dist/{chunk-Y5HXVUMP.js.map → chunk-HQRJDARQ.js.map} +0 -0
- /package/dist/{chunk-ZC6Q2BRD.js.map → chunk-R3KN6RHD.js.map} +0 -0
package/dist/db/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EmbeddingModelRef, f as EnvServiceDatabase, E as EnvTypedDatabase, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RawConstraintDef, n as RowShape, S as SchemaDef, o as SchemaInput, T as TableDef, p as TableInput, q as TxPlan, r as TxTables, s as TypedDB, t as TypedTable, u as TypedTx, v as bigint, w as boolean, x as defineSchema, y as enumType, z as integer, A as isPalbaseExtension, B as jsonb, D as makeTypedDB, G as openai, H as policy, J as raw, K as text, L as timestamp, M as uuid, N as vector } from '../index-
|
|
2
|
-
export { M as Materialized, b1 as Ref, b3 as TxColumnExpr, b4 as TxInsertShape, b6 as TxNow, T as TxPlanBody, b7 as TxPlanError, b8 as TxPlanHandle, b9 as TxPlanOpResult, ba as TxPlanRejection,
|
|
1
|
+
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EmbeddingModelRef, f as EnvServiceDatabase, E as EnvTypedDatabase, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RawConstraintDef, n as RowShape, S as SchemaDef, o as SchemaInput, T as TableDef, p as TableInput, q as TxPlan, r as TxTables, s as TypedDB, t as TypedTable, u as TypedTx, v as bigint, w as boolean, x as defineSchema, y as enumType, z as integer, A as isPalbaseExtension, B as jsonb, D as makeTypedDB, G as openai, H as policy, J as raw, K as text, L as timestamp, M as uuid, N as vector } from '../index-By8Dle5U.cjs';
|
|
2
|
+
export { M as Materialized, b1 as Ref, b3 as TxColumnExpr, b4 as TxInsertShape, b6 as TxNow, T as TxPlanBody, b7 as TxPlanError, b8 as TxPlanHandle, b9 as TxPlanOpResult, ba as TxPlanRejection, g as TxPlanResponse, bb as TxRefError, bc as TxRow, bd as TxRows, be as TxSelectOptions, bf as TxSetShape, bh as TxTable, bi as TxWhere, br as dec, bt as inc, bu as now } from '../endpoint-c9h5jriX.cjs';
|
|
3
3
|
import './env.cjs';
|
|
4
4
|
import '../stack.cjs';
|
|
5
5
|
import 'zod';
|
package/dist/db/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EmbeddingModelRef, f as EnvServiceDatabase, E as EnvTypedDatabase, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RawConstraintDef, n as RowShape, S as SchemaDef, o as SchemaInput, T as TableDef, p as TableInput, q as TxPlan, r as TxTables, s as TypedDB, t as TypedTable, u as TypedTx, v as bigint, w as boolean, x as defineSchema, y as enumType, z as integer, A as isPalbaseExtension, B as jsonb, D as makeTypedDB, G as openai, H as policy, J as raw, K as text, L as timestamp, M as uuid, N as vector } from '../index-
|
|
2
|
-
export { M as Materialized, b1 as Ref, b3 as TxColumnExpr, b4 as TxInsertShape, b6 as TxNow, T as TxPlanBody, b7 as TxPlanError, b8 as TxPlanHandle, b9 as TxPlanOpResult, ba as TxPlanRejection,
|
|
1
|
+
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EmbeddingModelRef, f as EnvServiceDatabase, E as EnvTypedDatabase, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RawConstraintDef, n as RowShape, S as SchemaDef, o as SchemaInput, T as TableDef, p as TableInput, q as TxPlan, r as TxTables, s as TypedDB, t as TypedTable, u as TypedTx, v as bigint, w as boolean, x as defineSchema, y as enumType, z as integer, A as isPalbaseExtension, B as jsonb, D as makeTypedDB, G as openai, H as policy, J as raw, K as text, L as timestamp, M as uuid, N as vector } from '../index-CwAJ7HEe.js';
|
|
2
|
+
export { M as Materialized, b1 as Ref, b3 as TxColumnExpr, b4 as TxInsertShape, b6 as TxNow, T as TxPlanBody, b7 as TxPlanError, b8 as TxPlanHandle, b9 as TxPlanOpResult, ba as TxPlanRejection, g as TxPlanResponse, bb as TxRefError, bc as TxRow, bd as TxRows, be as TxSelectOptions, bf as TxSetShape, bh as TxTable, bi as TxWhere, br as dec, bt as inc, bu as now } from '../endpoint-CVWXh6oG.js';
|
|
3
3
|
import './env.js';
|
|
4
4
|
import '../stack.js';
|
|
5
5
|
import 'zod';
|
package/dist/db/index.js
CHANGED
|
@@ -17,14 +17,14 @@ import {
|
|
|
17
17
|
timestamp,
|
|
18
18
|
uuid,
|
|
19
19
|
vector
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-PY7YJDCT.js";
|
|
21
21
|
import {
|
|
22
22
|
TxPlanError,
|
|
23
23
|
TxRefError,
|
|
24
24
|
dec,
|
|
25
25
|
inc,
|
|
26
26
|
now
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-NS5V43YQ.js";
|
|
28
28
|
import "../chunk-7D4SUZUM.js";
|
|
29
29
|
export {
|
|
30
30
|
EXTENSION_DEPENDENCIES,
|
|
@@ -142,7 +142,7 @@ declare function defineMiddleware(fn: MiddlewareHandler): MiddlewareHandler;
|
|
|
142
142
|
* # Wire contract
|
|
143
143
|
*
|
|
144
144
|
* The JSON this file emits is consumed by
|
|
145
|
-
* `
|
|
145
|
+
* the plan executor in `engine/db.ts`. That executor rejects
|
|
146
146
|
* unknown fields at every level, so an op carries EXACTLY the fields its kind
|
|
147
147
|
* takes. Everything here that looks like a needless restriction is one of the
|
|
148
148
|
* server's rules made visible early:
|
|
@@ -206,7 +206,9 @@ interface TxWireGuard {
|
|
|
206
206
|
/** One operation in the wire plan. Fields are omitted, never null: the decoder
|
|
207
207
|
* rejects a field that does not belong to the op's kind. */
|
|
208
208
|
interface TxWireOp {
|
|
209
|
-
|
|
209
|
+
/** upsert only: the columns Postgres matches on. */
|
|
210
|
+
onConflict?: readonly string[];
|
|
211
|
+
op: "insert" | "insertMany" | "upsert" | "update" | "delete" | "select";
|
|
210
212
|
table: string;
|
|
211
213
|
values?: Record<string, TxWireValue>;
|
|
212
214
|
rows?: Record<string, TxWireValue>[];
|
|
@@ -388,6 +390,17 @@ interface TxTable<Row, Insert> {
|
|
|
388
390
|
* An empty list writes nothing and sends nothing.
|
|
389
391
|
*/
|
|
390
392
|
insertMany(rows: readonly TxInsertShape<Insert>[]): TxRows<Row>;
|
|
393
|
+
/**
|
|
394
|
+
* Insert the row, or update it when it collides on `onConflict` — inside the
|
|
395
|
+
* plan's savepoint, with the same meaning `tables.<t>.upsert()` has outside it.
|
|
396
|
+
*
|
|
397
|
+
* It is an operation because the alternative is not writable here: a failed
|
|
398
|
+
* insert aborts the whole transaction, so "try, then fall back" cannot be two
|
|
399
|
+
* plan steps.
|
|
400
|
+
*/
|
|
401
|
+
upsert(values: TxInsertShape<Insert>, options: {
|
|
402
|
+
onConflict: readonly Extract<keyof Row, string>[];
|
|
403
|
+
}): TxRows<Row>;
|
|
391
404
|
/**
|
|
392
405
|
* Update every row matching `where`. The filter comes first because it is the
|
|
393
406
|
* dangerous half: an update whose `where` you got wrong rewrites rows you
|
|
@@ -1546,6 +1559,13 @@ interface PalbaseFlagsClient {
|
|
|
1546
1559
|
/**
|
|
1547
1560
|
* Realtime broadcast surface (backend handler → subscribed clients).
|
|
1548
1561
|
*
|
|
1562
|
+
* **Every channel must be DECLARED, or the join is refused.** Channel names are
|
|
1563
|
+
* not free text: `channels.ts` at the project root publishes which names exist
|
|
1564
|
+
* and who may subscribe, publish, or write state, and a client joining a name no
|
|
1565
|
+
* declaration matches is rejected without ever reaching your code. Declare with
|
|
1566
|
+
* `ownerOnly()`, `publicChannel()`, or a custom `authorize(ctx)` — see
|
|
1567
|
+
* {@link defineChannels}. Broadcasting to an undeclared channel reaches nobody.
|
|
1568
|
+
*
|
|
1549
1569
|
* Backend-side this is BROADCAST-ONLY: a handler pushes an event to a channel
|
|
1550
1570
|
* and every client subscribed to that channel (via the client SDK's
|
|
1551
1571
|
* `pb.realtime.channel(...).on(...)`) receives it. There is no `subscribe()` on
|
|
@@ -1554,9 +1574,10 @@ interface PalbaseFlagsClient {
|
|
|
1554
1574
|
* once the broadcast is accepted (or with an `error` if it could not be sent),
|
|
1555
1575
|
* but it never blocks the handler waiting on subscribers.
|
|
1556
1576
|
*
|
|
1557
|
-
* Channel
|
|
1558
|
-
*
|
|
1559
|
-
*
|
|
1577
|
+
* Channel names are yours to choose (e.g. `"room:42"`, `"orders"`) but not yours
|
|
1578
|
+
* to leave undeclared: each must match a pattern in `channels.ts`, which is where
|
|
1579
|
+
* `"room:{roomId}"` is authorized. The Palbase-managed `flags:<ref>` channels are
|
|
1580
|
+
* internal — author channels for your own features.
|
|
1560
1581
|
*
|
|
1561
1582
|
* @example
|
|
1562
1583
|
* // Notify everyone in a chat room that a message landed:
|
|
@@ -1816,9 +1837,36 @@ interface RateLimitConfig {
|
|
|
1816
1837
|
/** The six raw string-keyed DB operations shared by `DBClient` and the
|
|
1817
1838
|
* transaction-scoped client. */
|
|
1818
1839
|
interface DBOps {
|
|
1819
|
-
/**
|
|
1840
|
+
/**
|
|
1841
|
+
* Run SQL on the REQUEST'S OWN transaction.
|
|
1842
|
+
*
|
|
1843
|
+
* This is **not** read-only. Nothing marks that transaction `READ ONLY`, so a
|
|
1844
|
+
* write passed here executes and commits with the request — a plain `UPDATE`, a
|
|
1845
|
+
* write hidden in a CTE, or a function that writes. What stands between a
|
|
1846
|
+
* statement and your data is RLS and the role the request runs as, exactly as
|
|
1847
|
+
* for every other operation on this client.
|
|
1848
|
+
*
|
|
1849
|
+
* `INSERT … ON CONFLICT DO UPDATE` therefore works here; `tables.<t>.upsert()`
|
|
1850
|
+
* is the same thing with types. Array parameters are encoded as Postgres array
|
|
1851
|
+
* literals, so `= ANY($1::uuid[])` takes a plain JS array.
|
|
1852
|
+
*
|
|
1853
|
+
* This comment used to claim a `READ ONLY` transaction. It was wrong, and the
|
|
1854
|
+
* cost was measured: a tenant read it, concluded an upsert was impossible from
|
|
1855
|
+
* here, abandoned `ON CONFLICT` and wrote a database trigger instead.
|
|
1856
|
+
*/
|
|
1820
1857
|
query(sql: string, params?: unknown[]): Promise<Record<string, unknown>[]>;
|
|
1821
1858
|
insert(table: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
1859
|
+
/**
|
|
1860
|
+
* Insert the row, or update it when it collides on `onConflict` — one
|
|
1861
|
+
* statement, so two concurrent callers cannot both lose.
|
|
1862
|
+
*
|
|
1863
|
+
* Read-then-write cannot be made safe here by catching the unique violation: a
|
|
1864
|
+
* request runs in one transaction, so the failed insert aborts it and every
|
|
1865
|
+
* later statement answers `current transaction is aborted`.
|
|
1866
|
+
*/
|
|
1867
|
+
upsert(table: string, data: Record<string, unknown>, opts: {
|
|
1868
|
+
onConflict: readonly string[];
|
|
1869
|
+
}): Promise<Record<string, unknown>>;
|
|
1822
1870
|
/**
|
|
1823
1871
|
* Update the row with the given id and resolve to the updated row, or `null`
|
|
1824
1872
|
* if no row matched (the id is absent, or the row is hidden by RLS). This is
|
|
@@ -1862,7 +1910,13 @@ interface DBOps {
|
|
|
1862
1910
|
/** Validity'li tabloda satırın yeni versiyonu — eski kapanır (valid_to/superseded_by),
|
|
1863
1911
|
* yenisi eklenir; TEK savepoint, dönüş yeni satır (FR-029, C-9). */
|
|
1864
1912
|
supersede(table: string, id: string, row: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
1865
|
-
findMany(table: string, query?: Record<string, unknown
|
|
1913
|
+
findMany(table: string, query?: Record<string, unknown>, opts?: {
|
|
1914
|
+
orderBy?: {
|
|
1915
|
+
column: string;
|
|
1916
|
+
direction?: "asc" | "desc";
|
|
1917
|
+
};
|
|
1918
|
+
limit?: number;
|
|
1919
|
+
}): Promise<Record<string, unknown>[]>;
|
|
1866
1920
|
/** "Bu satıra benzer satırlar" (FR-022) — satır-modunda kolon vektörüyle,
|
|
1867
1921
|
* chunk-modunda chunk-ortalamasıyla; kendisi hariç. */
|
|
1868
1922
|
similar(table: string, id: string, opts?: {
|
|
@@ -1913,6 +1967,14 @@ interface DBClient extends DBOps {
|
|
|
1913
1967
|
* `.expectOne(…)`; without it a declared expectation degrades to a generic 409.
|
|
1914
1968
|
*/
|
|
1915
1969
|
txPlan(plan: TxPlanBody): Promise<TxPlanResponse>;
|
|
1970
|
+
/**
|
|
1971
|
+
* Run `fn` inside a SAVEPOINT on this request's transaction, so a failure in
|
|
1972
|
+
* it rolls back only what `fn`'s handle wrote.
|
|
1973
|
+
*
|
|
1974
|
+
* The handle is a PARAMETER on purpose: an ambient swap would capture writes
|
|
1975
|
+
* a concurrent `Promise.all` branch made outside the boundary.
|
|
1976
|
+
*/
|
|
1977
|
+
attempt<T>(fn: (tx: DBOps) => Promise<T>): Promise<T>;
|
|
1916
1978
|
/**
|
|
1917
1979
|
* Return a sibling DB client that bypasses Row-Level Security by running as
|
|
1918
1980
|
* the `service_role` (BYPASSRLS). Use sparingly and explicitly — the default
|
|
@@ -2213,4 +2275,4 @@ type Middleware = (ctx: MiddlewareContext, next: () => Promise<void>) => Promise
|
|
|
2213
2275
|
*/
|
|
2214
2276
|
type AuthSpec = boolean | Partial<AuthConfig>;
|
|
2215
2277
|
|
|
2216
|
-
export { type PalbaseCreateLinkParams as $, type AuthSpec as A, BadRequest as B, type CacheClient as C, type DBClient as D, type ErrorDef as E, type FileContext as F, type PalbaseAttestiOSParams as G, HttpError as H, type PalbaseAttestiOSResult as I, type PalbaseAuthClient as J, type PalbaseBatchOverrideOperation as K, type Logger as L, type Materialized as M, NotFound as N, type PalbaseBatchSetOverridesResult as O, type PalbaseDocsClient as P, type PalbaseBindDeviceParams as Q, type RateLimitConfig as R, type SecretsService as S, type TxPlanBody as T, type PalbaseClearAllOverridesResult as U, type PalbaseClearOverrideResult as V, type PalbaseCohortQueryInput as W, type PalbaseCohortResult as X, type PalbaseCollectionRef as Y, type PalbaseCountQueryInput as Z, type PalbaseCountResult as _, type PalbaseFlagsClient as a, type PalbaseVerifyRequestSignatureParams as a$, type PalbaseDeviceInfo as a0, type PalbaseDeviceTokenView as a1, type PalbaseDocumentRef as a2, type PalbaseDocumentSnapshot as a3, type PalbaseEmailClient as a4, type PalbaseEmailSendParams as a5, type PalbaseEmailSendResponse as a6, type PalbaseEventNamesResult as a7, type PalbaseEventsQueryInput as a8, type PalbaseEventsResult as a9, type PalbaseMatchParams as aA, type PalbaseMultiChannelResponse as aB, type PalbaseOverviewResult as aC, type PalbasePreferences as aD, type PalbasePreferencesClient as aE, type PalbasePushClient as aF, type PalbasePushSendParams as aG, type PalbasePushSendResponse as aH, type PalbaseQrCodeOptions as aI, type PalbaseQuerySnapshot as aJ, type PalbaseRegisterDeviceParams as aK, type PalbaseRetentionQueryInput as aL, type PalbaseRetentionResult as aM, type PalbaseSession as aN, type PalbaseSetOverrideResult as aO, type PalbaseSetOverridesResult as aP, type PalbaseSignedUrlResponse as aQ, type PalbaseSmsClient as aR, type PalbaseSmsSendParams as aS, type PalbaseSmsSendResponse as aT, type PalbaseTransformOptions as aU, type PalbaseUpdateLinkParams as aV, type PalbaseUploadOptions as aW, type PalbaseUser as aX, type PalbaseUserDetailResult as aY, type PalbaseUsersQueryInput as aZ, type PalbaseUsersResult as a_, type PalbaseFileObject as aa, type PalbaseFlag as ab, type PalbaseFlagContext as ac, type PalbaseFlagSource as ad, type PalbaseFlagValue as ae, type PalbaseFlagVariant as af, type PalbaseFlagsServiceClient as ag, type PalbaseFunctionsClient as ah, type PalbaseFunnelQueryInput as ai, type PalbaseFunnelResult as aj, type PalbaseIdentifyTraits as ak, type PalbaseInboxClient as al, type PalbaseInboxListOptions as am, type PalbaseInboxListResult as an, type PalbaseInboxMessage as ao, type PalbaseInboxSendParams as ap, type PalbaseInboxSendResponse as aq, type PalbaseInitialLink as ar, type PalbaseInvokeOptions as as, type PalbaseLink as at, type PalbaseLinkAnalytics as au, type PalbaseLinkDetails as av, type PalbaseLinksClient as aw, type PalbaseListLinksOptions as ax, type PalbaseListLinksResult as ay, type PalbaseListOptions as az, type PalbaseNotificationsClient as b, type PalbaseWhereOperator as b0, type Ref as b1, TooManyRequests as b2, type TxColumnExpr as b3, type TxInsertShape as b4, type TxInsertValue as b5, type TxNow as b6, TxPlanError as b7, type TxPlanHandle as b8, type TxPlanOpResult as b9, type TxPlanRejection as ba, TxRefError as bb, type TxRow as bc, type TxRows as bd, type TxSelectOptions as be, type TxSetShape as bf, type TxSetValue as bg, type TxTable as bh, type TxWhere as bi, type TxWireExpr as bj, type TxWireGuard as bk, type TxWireOp as bl, type TxWireRef as bm, type TxWireValue as bn, Unauthorized as bo, type User as bp, type VerifiedDevice as bq, dec as br, defineMiddleware as bs, inc as bt, now as bu, type PalbaseRealtimeClient as c, type PalbaseStorageClient as d, type PalbaseBucketClient as e, type
|
|
2278
|
+
export { type PalbaseCreateLinkParams as $, type AuthSpec as A, BadRequest as B, type CacheClient as C, type DBClient as D, type ErrorDef as E, type FileContext as F, type PalbaseAttestiOSParams as G, HttpError as H, type PalbaseAttestiOSResult as I, type PalbaseAuthClient as J, type PalbaseBatchOverrideOperation as K, type Logger as L, type Materialized as M, NotFound as N, type PalbaseBatchSetOverridesResult as O, type PalbaseDocsClient as P, type PalbaseBindDeviceParams as Q, type RateLimitConfig as R, type SecretsService as S, type TxPlanBody as T, type PalbaseClearAllOverridesResult as U, type PalbaseClearOverrideResult as V, type PalbaseCohortQueryInput as W, type PalbaseCohortResult as X, type PalbaseCollectionRef as Y, type PalbaseCountQueryInput as Z, type PalbaseCountResult as _, type PalbaseFlagsClient as a, type PalbaseVerifyRequestSignatureParams as a$, type PalbaseDeviceInfo as a0, type PalbaseDeviceTokenView as a1, type PalbaseDocumentRef as a2, type PalbaseDocumentSnapshot as a3, type PalbaseEmailClient as a4, type PalbaseEmailSendParams as a5, type PalbaseEmailSendResponse as a6, type PalbaseEventNamesResult as a7, type PalbaseEventsQueryInput as a8, type PalbaseEventsResult as a9, type PalbaseMatchParams as aA, type PalbaseMultiChannelResponse as aB, type PalbaseOverviewResult as aC, type PalbasePreferences as aD, type PalbasePreferencesClient as aE, type PalbasePushClient as aF, type PalbasePushSendParams as aG, type PalbasePushSendResponse as aH, type PalbaseQrCodeOptions as aI, type PalbaseQuerySnapshot as aJ, type PalbaseRegisterDeviceParams as aK, type PalbaseRetentionQueryInput as aL, type PalbaseRetentionResult as aM, type PalbaseSession as aN, type PalbaseSetOverrideResult as aO, type PalbaseSetOverridesResult as aP, type PalbaseSignedUrlResponse as aQ, type PalbaseSmsClient as aR, type PalbaseSmsSendParams as aS, type PalbaseSmsSendResponse as aT, type PalbaseTransformOptions as aU, type PalbaseUpdateLinkParams as aV, type PalbaseUploadOptions as aW, type PalbaseUser as aX, type PalbaseUserDetailResult as aY, type PalbaseUsersQueryInput as aZ, type PalbaseUsersResult as a_, type PalbaseFileObject as aa, type PalbaseFlag as ab, type PalbaseFlagContext as ac, type PalbaseFlagSource as ad, type PalbaseFlagValue as ae, type PalbaseFlagVariant as af, type PalbaseFlagsServiceClient as ag, type PalbaseFunctionsClient as ah, type PalbaseFunnelQueryInput as ai, type PalbaseFunnelResult as aj, type PalbaseIdentifyTraits as ak, type PalbaseInboxClient as al, type PalbaseInboxListOptions as am, type PalbaseInboxListResult as an, type PalbaseInboxMessage as ao, type PalbaseInboxSendParams as ap, type PalbaseInboxSendResponse as aq, type PalbaseInitialLink as ar, type PalbaseInvokeOptions as as, type PalbaseLink as at, type PalbaseLinkAnalytics as au, type PalbaseLinkDetails as av, type PalbaseLinksClient as aw, type PalbaseListLinksOptions as ax, type PalbaseListLinksResult as ay, type PalbaseListOptions as az, type PalbaseNotificationsClient as b, type PalbaseWhereOperator as b0, type Ref as b1, TooManyRequests as b2, type TxColumnExpr as b3, type TxInsertShape as b4, type TxInsertValue as b5, type TxNow as b6, TxPlanError as b7, type TxPlanHandle as b8, type TxPlanOpResult as b9, type TxPlanRejection as ba, TxRefError as bb, type TxRow as bc, type TxRows as bd, type TxSelectOptions as be, type TxSetShape as bf, type TxSetValue as bg, type TxTable as bh, type TxWhere as bi, type TxWireExpr as bj, type TxWireGuard as bk, type TxWireOp as bl, type TxWireRef as bm, type TxWireValue as bn, Unauthorized as bo, type User as bp, type VerifiedDevice as bq, dec as br, defineMiddleware as bs, inc as bt, now as bu, type PalbaseRealtimeClient as c, type PalbaseStorageClient as d, type PalbaseBucketClient as e, type DBOps as f, type TxPlanResponse as g, type PalbaseResult as h, type AuthConfig as i, type ClientInfo as j, Conflict as k, type ErrorMap as l, type ErrorThrowers as m, Forbidden as n, type HttpMethod as o, type Middleware as p, type MiddlewareContext as q, type MiddlewareHandler as r, type PBRequest as s, PalError as t, type PalbaseAnalyticsClient as u, type PalbaseAnalyticsManagementNamespace as v, type PalbaseAnalyticsProperties as w, type PalbaseAnalyticsQueryNamespace as x, type PalbaseAttestAndroidParams as y, type PalbaseAttestAndroidResult as z };
|
|
@@ -142,7 +142,7 @@ declare function defineMiddleware(fn: MiddlewareHandler): MiddlewareHandler;
|
|
|
142
142
|
* # Wire contract
|
|
143
143
|
*
|
|
144
144
|
* The JSON this file emits is consumed by
|
|
145
|
-
* `
|
|
145
|
+
* the plan executor in `engine/db.ts`. That executor rejects
|
|
146
146
|
* unknown fields at every level, so an op carries EXACTLY the fields its kind
|
|
147
147
|
* takes. Everything here that looks like a needless restriction is one of the
|
|
148
148
|
* server's rules made visible early:
|
|
@@ -206,7 +206,9 @@ interface TxWireGuard {
|
|
|
206
206
|
/** One operation in the wire plan. Fields are omitted, never null: the decoder
|
|
207
207
|
* rejects a field that does not belong to the op's kind. */
|
|
208
208
|
interface TxWireOp {
|
|
209
|
-
|
|
209
|
+
/** upsert only: the columns Postgres matches on. */
|
|
210
|
+
onConflict?: readonly string[];
|
|
211
|
+
op: "insert" | "insertMany" | "upsert" | "update" | "delete" | "select";
|
|
210
212
|
table: string;
|
|
211
213
|
values?: Record<string, TxWireValue>;
|
|
212
214
|
rows?: Record<string, TxWireValue>[];
|
|
@@ -388,6 +390,17 @@ interface TxTable<Row, Insert> {
|
|
|
388
390
|
* An empty list writes nothing and sends nothing.
|
|
389
391
|
*/
|
|
390
392
|
insertMany(rows: readonly TxInsertShape<Insert>[]): TxRows<Row>;
|
|
393
|
+
/**
|
|
394
|
+
* Insert the row, or update it when it collides on `onConflict` — inside the
|
|
395
|
+
* plan's savepoint, with the same meaning `tables.<t>.upsert()` has outside it.
|
|
396
|
+
*
|
|
397
|
+
* It is an operation because the alternative is not writable here: a failed
|
|
398
|
+
* insert aborts the whole transaction, so "try, then fall back" cannot be two
|
|
399
|
+
* plan steps.
|
|
400
|
+
*/
|
|
401
|
+
upsert(values: TxInsertShape<Insert>, options: {
|
|
402
|
+
onConflict: readonly Extract<keyof Row, string>[];
|
|
403
|
+
}): TxRows<Row>;
|
|
391
404
|
/**
|
|
392
405
|
* Update every row matching `where`. The filter comes first because it is the
|
|
393
406
|
* dangerous half: an update whose `where` you got wrong rewrites rows you
|
|
@@ -1546,6 +1559,13 @@ interface PalbaseFlagsClient {
|
|
|
1546
1559
|
/**
|
|
1547
1560
|
* Realtime broadcast surface (backend handler → subscribed clients).
|
|
1548
1561
|
*
|
|
1562
|
+
* **Every channel must be DECLARED, or the join is refused.** Channel names are
|
|
1563
|
+
* not free text: `channels.ts` at the project root publishes which names exist
|
|
1564
|
+
* and who may subscribe, publish, or write state, and a client joining a name no
|
|
1565
|
+
* declaration matches is rejected without ever reaching your code. Declare with
|
|
1566
|
+
* `ownerOnly()`, `publicChannel()`, or a custom `authorize(ctx)` — see
|
|
1567
|
+
* {@link defineChannels}. Broadcasting to an undeclared channel reaches nobody.
|
|
1568
|
+
*
|
|
1549
1569
|
* Backend-side this is BROADCAST-ONLY: a handler pushes an event to a channel
|
|
1550
1570
|
* and every client subscribed to that channel (via the client SDK's
|
|
1551
1571
|
* `pb.realtime.channel(...).on(...)`) receives it. There is no `subscribe()` on
|
|
@@ -1554,9 +1574,10 @@ interface PalbaseFlagsClient {
|
|
|
1554
1574
|
* once the broadcast is accepted (or with an `error` if it could not be sent),
|
|
1555
1575
|
* but it never blocks the handler waiting on subscribers.
|
|
1556
1576
|
*
|
|
1557
|
-
* Channel
|
|
1558
|
-
*
|
|
1559
|
-
*
|
|
1577
|
+
* Channel names are yours to choose (e.g. `"room:42"`, `"orders"`) but not yours
|
|
1578
|
+
* to leave undeclared: each must match a pattern in `channels.ts`, which is where
|
|
1579
|
+
* `"room:{roomId}"` is authorized. The Palbase-managed `flags:<ref>` channels are
|
|
1580
|
+
* internal — author channels for your own features.
|
|
1560
1581
|
*
|
|
1561
1582
|
* @example
|
|
1562
1583
|
* // Notify everyone in a chat room that a message landed:
|
|
@@ -1816,9 +1837,36 @@ interface RateLimitConfig {
|
|
|
1816
1837
|
/** The six raw string-keyed DB operations shared by `DBClient` and the
|
|
1817
1838
|
* transaction-scoped client. */
|
|
1818
1839
|
interface DBOps {
|
|
1819
|
-
/**
|
|
1840
|
+
/**
|
|
1841
|
+
* Run SQL on the REQUEST'S OWN transaction.
|
|
1842
|
+
*
|
|
1843
|
+
* This is **not** read-only. Nothing marks that transaction `READ ONLY`, so a
|
|
1844
|
+
* write passed here executes and commits with the request — a plain `UPDATE`, a
|
|
1845
|
+
* write hidden in a CTE, or a function that writes. What stands between a
|
|
1846
|
+
* statement and your data is RLS and the role the request runs as, exactly as
|
|
1847
|
+
* for every other operation on this client.
|
|
1848
|
+
*
|
|
1849
|
+
* `INSERT … ON CONFLICT DO UPDATE` therefore works here; `tables.<t>.upsert()`
|
|
1850
|
+
* is the same thing with types. Array parameters are encoded as Postgres array
|
|
1851
|
+
* literals, so `= ANY($1::uuid[])` takes a plain JS array.
|
|
1852
|
+
*
|
|
1853
|
+
* This comment used to claim a `READ ONLY` transaction. It was wrong, and the
|
|
1854
|
+
* cost was measured: a tenant read it, concluded an upsert was impossible from
|
|
1855
|
+
* here, abandoned `ON CONFLICT` and wrote a database trigger instead.
|
|
1856
|
+
*/
|
|
1820
1857
|
query(sql: string, params?: unknown[]): Promise<Record<string, unknown>[]>;
|
|
1821
1858
|
insert(table: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
1859
|
+
/**
|
|
1860
|
+
* Insert the row, or update it when it collides on `onConflict` — one
|
|
1861
|
+
* statement, so two concurrent callers cannot both lose.
|
|
1862
|
+
*
|
|
1863
|
+
* Read-then-write cannot be made safe here by catching the unique violation: a
|
|
1864
|
+
* request runs in one transaction, so the failed insert aborts it and every
|
|
1865
|
+
* later statement answers `current transaction is aborted`.
|
|
1866
|
+
*/
|
|
1867
|
+
upsert(table: string, data: Record<string, unknown>, opts: {
|
|
1868
|
+
onConflict: readonly string[];
|
|
1869
|
+
}): Promise<Record<string, unknown>>;
|
|
1822
1870
|
/**
|
|
1823
1871
|
* Update the row with the given id and resolve to the updated row, or `null`
|
|
1824
1872
|
* if no row matched (the id is absent, or the row is hidden by RLS). This is
|
|
@@ -1862,7 +1910,13 @@ interface DBOps {
|
|
|
1862
1910
|
/** Validity'li tabloda satırın yeni versiyonu — eski kapanır (valid_to/superseded_by),
|
|
1863
1911
|
* yenisi eklenir; TEK savepoint, dönüş yeni satır (FR-029, C-9). */
|
|
1864
1912
|
supersede(table: string, id: string, row: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
1865
|
-
findMany(table: string, query?: Record<string, unknown
|
|
1913
|
+
findMany(table: string, query?: Record<string, unknown>, opts?: {
|
|
1914
|
+
orderBy?: {
|
|
1915
|
+
column: string;
|
|
1916
|
+
direction?: "asc" | "desc";
|
|
1917
|
+
};
|
|
1918
|
+
limit?: number;
|
|
1919
|
+
}): Promise<Record<string, unknown>[]>;
|
|
1866
1920
|
/** "Bu satıra benzer satırlar" (FR-022) — satır-modunda kolon vektörüyle,
|
|
1867
1921
|
* chunk-modunda chunk-ortalamasıyla; kendisi hariç. */
|
|
1868
1922
|
similar(table: string, id: string, opts?: {
|
|
@@ -1913,6 +1967,14 @@ interface DBClient extends DBOps {
|
|
|
1913
1967
|
* `.expectOne(…)`; without it a declared expectation degrades to a generic 409.
|
|
1914
1968
|
*/
|
|
1915
1969
|
txPlan(plan: TxPlanBody): Promise<TxPlanResponse>;
|
|
1970
|
+
/**
|
|
1971
|
+
* Run `fn` inside a SAVEPOINT on this request's transaction, so a failure in
|
|
1972
|
+
* it rolls back only what `fn`'s handle wrote.
|
|
1973
|
+
*
|
|
1974
|
+
* The handle is a PARAMETER on purpose: an ambient swap would capture writes
|
|
1975
|
+
* a concurrent `Promise.all` branch made outside the boundary.
|
|
1976
|
+
*/
|
|
1977
|
+
attempt<T>(fn: (tx: DBOps) => Promise<T>): Promise<T>;
|
|
1916
1978
|
/**
|
|
1917
1979
|
* Return a sibling DB client that bypasses Row-Level Security by running as
|
|
1918
1980
|
* the `service_role` (BYPASSRLS). Use sparingly and explicitly — the default
|
|
@@ -2213,4 +2275,4 @@ type Middleware = (ctx: MiddlewareContext, next: () => Promise<void>) => Promise
|
|
|
2213
2275
|
*/
|
|
2214
2276
|
type AuthSpec = boolean | Partial<AuthConfig>;
|
|
2215
2277
|
|
|
2216
|
-
export { type PalbaseCreateLinkParams as $, type AuthSpec as A, BadRequest as B, type CacheClient as C, type DBClient as D, type ErrorDef as E, type FileContext as F, type PalbaseAttestiOSParams as G, HttpError as H, type PalbaseAttestiOSResult as I, type PalbaseAuthClient as J, type PalbaseBatchOverrideOperation as K, type Logger as L, type Materialized as M, NotFound as N, type PalbaseBatchSetOverridesResult as O, type PalbaseDocsClient as P, type PalbaseBindDeviceParams as Q, type RateLimitConfig as R, type SecretsService as S, type TxPlanBody as T, type PalbaseClearAllOverridesResult as U, type PalbaseClearOverrideResult as V, type PalbaseCohortQueryInput as W, type PalbaseCohortResult as X, type PalbaseCollectionRef as Y, type PalbaseCountQueryInput as Z, type PalbaseCountResult as _, type PalbaseFlagsClient as a, type PalbaseVerifyRequestSignatureParams as a$, type PalbaseDeviceInfo as a0, type PalbaseDeviceTokenView as a1, type PalbaseDocumentRef as a2, type PalbaseDocumentSnapshot as a3, type PalbaseEmailClient as a4, type PalbaseEmailSendParams as a5, type PalbaseEmailSendResponse as a6, type PalbaseEventNamesResult as a7, type PalbaseEventsQueryInput as a8, type PalbaseEventsResult as a9, type PalbaseMatchParams as aA, type PalbaseMultiChannelResponse as aB, type PalbaseOverviewResult as aC, type PalbasePreferences as aD, type PalbasePreferencesClient as aE, type PalbasePushClient as aF, type PalbasePushSendParams as aG, type PalbasePushSendResponse as aH, type PalbaseQrCodeOptions as aI, type PalbaseQuerySnapshot as aJ, type PalbaseRegisterDeviceParams as aK, type PalbaseRetentionQueryInput as aL, type PalbaseRetentionResult as aM, type PalbaseSession as aN, type PalbaseSetOverrideResult as aO, type PalbaseSetOverridesResult as aP, type PalbaseSignedUrlResponse as aQ, type PalbaseSmsClient as aR, type PalbaseSmsSendParams as aS, type PalbaseSmsSendResponse as aT, type PalbaseTransformOptions as aU, type PalbaseUpdateLinkParams as aV, type PalbaseUploadOptions as aW, type PalbaseUser as aX, type PalbaseUserDetailResult as aY, type PalbaseUsersQueryInput as aZ, type PalbaseUsersResult as a_, type PalbaseFileObject as aa, type PalbaseFlag as ab, type PalbaseFlagContext as ac, type PalbaseFlagSource as ad, type PalbaseFlagValue as ae, type PalbaseFlagVariant as af, type PalbaseFlagsServiceClient as ag, type PalbaseFunctionsClient as ah, type PalbaseFunnelQueryInput as ai, type PalbaseFunnelResult as aj, type PalbaseIdentifyTraits as ak, type PalbaseInboxClient as al, type PalbaseInboxListOptions as am, type PalbaseInboxListResult as an, type PalbaseInboxMessage as ao, type PalbaseInboxSendParams as ap, type PalbaseInboxSendResponse as aq, type PalbaseInitialLink as ar, type PalbaseInvokeOptions as as, type PalbaseLink as at, type PalbaseLinkAnalytics as au, type PalbaseLinkDetails as av, type PalbaseLinksClient as aw, type PalbaseListLinksOptions as ax, type PalbaseListLinksResult as ay, type PalbaseListOptions as az, type PalbaseNotificationsClient as b, type PalbaseWhereOperator as b0, type Ref as b1, TooManyRequests as b2, type TxColumnExpr as b3, type TxInsertShape as b4, type TxInsertValue as b5, type TxNow as b6, TxPlanError as b7, type TxPlanHandle as b8, type TxPlanOpResult as b9, type TxPlanRejection as ba, TxRefError as bb, type TxRow as bc, type TxRows as bd, type TxSelectOptions as be, type TxSetShape as bf, type TxSetValue as bg, type TxTable as bh, type TxWhere as bi, type TxWireExpr as bj, type TxWireGuard as bk, type TxWireOp as bl, type TxWireRef as bm, type TxWireValue as bn, Unauthorized as bo, type User as bp, type VerifiedDevice as bq, dec as br, defineMiddleware as bs, inc as bt, now as bu, type PalbaseRealtimeClient as c, type PalbaseStorageClient as d, type PalbaseBucketClient as e, type
|
|
2278
|
+
export { type PalbaseCreateLinkParams as $, type AuthSpec as A, BadRequest as B, type CacheClient as C, type DBClient as D, type ErrorDef as E, type FileContext as F, type PalbaseAttestiOSParams as G, HttpError as H, type PalbaseAttestiOSResult as I, type PalbaseAuthClient as J, type PalbaseBatchOverrideOperation as K, type Logger as L, type Materialized as M, NotFound as N, type PalbaseBatchSetOverridesResult as O, type PalbaseDocsClient as P, type PalbaseBindDeviceParams as Q, type RateLimitConfig as R, type SecretsService as S, type TxPlanBody as T, type PalbaseClearAllOverridesResult as U, type PalbaseClearOverrideResult as V, type PalbaseCohortQueryInput as W, type PalbaseCohortResult as X, type PalbaseCollectionRef as Y, type PalbaseCountQueryInput as Z, type PalbaseCountResult as _, type PalbaseFlagsClient as a, type PalbaseVerifyRequestSignatureParams as a$, type PalbaseDeviceInfo as a0, type PalbaseDeviceTokenView as a1, type PalbaseDocumentRef as a2, type PalbaseDocumentSnapshot as a3, type PalbaseEmailClient as a4, type PalbaseEmailSendParams as a5, type PalbaseEmailSendResponse as a6, type PalbaseEventNamesResult as a7, type PalbaseEventsQueryInput as a8, type PalbaseEventsResult as a9, type PalbaseMatchParams as aA, type PalbaseMultiChannelResponse as aB, type PalbaseOverviewResult as aC, type PalbasePreferences as aD, type PalbasePreferencesClient as aE, type PalbasePushClient as aF, type PalbasePushSendParams as aG, type PalbasePushSendResponse as aH, type PalbaseQrCodeOptions as aI, type PalbaseQuerySnapshot as aJ, type PalbaseRegisterDeviceParams as aK, type PalbaseRetentionQueryInput as aL, type PalbaseRetentionResult as aM, type PalbaseSession as aN, type PalbaseSetOverrideResult as aO, type PalbaseSetOverridesResult as aP, type PalbaseSignedUrlResponse as aQ, type PalbaseSmsClient as aR, type PalbaseSmsSendParams as aS, type PalbaseSmsSendResponse as aT, type PalbaseTransformOptions as aU, type PalbaseUpdateLinkParams as aV, type PalbaseUploadOptions as aW, type PalbaseUser as aX, type PalbaseUserDetailResult as aY, type PalbaseUsersQueryInput as aZ, type PalbaseUsersResult as a_, type PalbaseFileObject as aa, type PalbaseFlag as ab, type PalbaseFlagContext as ac, type PalbaseFlagSource as ad, type PalbaseFlagValue as ae, type PalbaseFlagVariant as af, type PalbaseFlagsServiceClient as ag, type PalbaseFunctionsClient as ah, type PalbaseFunnelQueryInput as ai, type PalbaseFunnelResult as aj, type PalbaseIdentifyTraits as ak, type PalbaseInboxClient as al, type PalbaseInboxListOptions as am, type PalbaseInboxListResult as an, type PalbaseInboxMessage as ao, type PalbaseInboxSendParams as ap, type PalbaseInboxSendResponse as aq, type PalbaseInitialLink as ar, type PalbaseInvokeOptions as as, type PalbaseLink as at, type PalbaseLinkAnalytics as au, type PalbaseLinkDetails as av, type PalbaseLinksClient as aw, type PalbaseListLinksOptions as ax, type PalbaseListLinksResult as ay, type PalbaseListOptions as az, type PalbaseNotificationsClient as b, type PalbaseWhereOperator as b0, type Ref as b1, TooManyRequests as b2, type TxColumnExpr as b3, type TxInsertShape as b4, type TxInsertValue as b5, type TxNow as b6, TxPlanError as b7, type TxPlanHandle as b8, type TxPlanOpResult as b9, type TxPlanRejection as ba, TxRefError as bb, type TxRow as bc, type TxRows as bd, type TxSelectOptions as be, type TxSetShape as bf, type TxSetValue as bg, type TxTable as bh, type TxWhere as bi, type TxWireExpr as bj, type TxWireGuard as bk, type TxWireOp as bl, type TxWireRef as bm, type TxWireValue as bn, Unauthorized as bo, type User as bp, type VerifiedDevice as bq, dec as br, defineMiddleware as bs, inc as bt, now as bu, type PalbaseRealtimeClient as c, type PalbaseStorageClient as d, type PalbaseBucketClient as e, type DBOps as f, type TxPlanResponse as g, type PalbaseResult as h, type AuthConfig as i, type ClientInfo as j, Conflict as k, type ErrorMap as l, type ErrorThrowers as m, Forbidden as n, type HttpMethod as o, type Middleware as p, type MiddlewareContext as q, type MiddlewareHandler as r, type PBRequest as s, PalError as t, type PalbaseAnalyticsClient as u, type PalbaseAnalyticsManagementNamespace as v, type PalbaseAnalyticsProperties as w, type PalbaseAnalyticsQueryNamespace as x, type PalbaseAttestAndroidParams as y, type PalbaseAttestAndroidResult as z };
|