@supalive/core 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/db-ClCicssQ.js +28 -0
- package/dist/db-ClCicssQ.js.map +1 -0
- package/dist/{index-DouKwYL6.d.ts → index-E1_1iRI1.d.ts} +213 -9
- package/dist/index-E1_1iRI1.d.ts.map +1 -0
- package/dist/{mysql-Bxurg_PH.d.ts → mysql-BmkLy5oY.d.ts} +8 -3
- package/dist/mysql-BmkLy5oY.d.ts.map +1 -0
- package/dist/{mysql-bvnjYWvZ.js → mysql-Ca1B_0k_.js} +58 -25
- package/dist/mysql-Ca1B_0k_.js.map +1 -0
- package/dist/{overlap-checker-Ct_HP_iB.js → overlap-checker-ClJC0nxW.js} +52 -4
- package/dist/overlap-checker-ClJC0nxW.js.map +1 -0
- package/dist/{postgres-B8u1YN8X.js → postgres-CHDY1HPf.js} +59 -22
- package/dist/postgres-CHDY1HPf.js.map +1 -0
- package/dist/{postgres-Ck-xt72U.d.ts → postgres-v2ctNE6o.d.ts} +8 -3
- package/dist/postgres-v2ctNE6o.d.ts.map +1 -0
- package/dist/{procedure-DX87tyef.js → procedure-Ze1GE-N9.js} +33 -2
- package/dist/procedure-Ze1GE-N9.js.map +1 -0
- package/dist/{query-Bh0RNxDz.js → query-CrbJ_W0W.js} +21 -1
- package/dist/query-CrbJ_W0W.js.map +1 -0
- package/dist/{realtime_db-DOCgqbwi.js → realtime_db-BtwBABDY.js} +76 -51
- package/dist/realtime_db-BtwBABDY.js.map +1 -0
- package/dist/{router-DlTYWpop.js → router-CiWYeWUR.js} +8 -2
- package/dist/router-CiWYeWUR.js.map +1 -0
- package/dist/src/client/index.d.ts +1 -1
- package/dist/src/client/index.js +44 -5
- package/dist/src/client/index.js.map +1 -1
- package/dist/src/exports/mysql.d.ts +1 -1
- package/dist/src/exports/mysql.js +1 -1
- package/dist/src/exports/postgres.d.ts +1 -1
- package/dist/src/exports/postgres.js +1 -1
- package/dist/src/exports/procedure.d.ts +2 -2
- package/dist/src/exports/procedure.js +4 -4
- package/dist/src/exports/schema-sql.d.ts +35 -2
- package/dist/src/exports/schema-sql.d.ts.map +1 -1
- package/dist/src/exports/schema-sql.js +69 -19
- package/dist/src/exports/schema-sql.js.map +1 -1
- package/dist/src/exports/server.d.ts +64 -17
- package/dist/src/exports/server.d.ts.map +1 -1
- package/dist/src/exports/server.js +726 -64
- package/dist/src/exports/server.js.map +1 -1
- package/dist/src/exports/subscription-manager-worker-entry.js +8 -5
- package/dist/src/exports/subscription-manager-worker-entry.js.map +1 -1
- package/dist/src/exports/types.d.ts +3 -3
- package/dist/src/exports/types.js +1 -1
- package/dist/{subscription-worker-CqoWp6zB.js → subscription-worker-CAf6MUta.js} +306 -69
- package/dist/subscription-worker-CAf6MUta.js.map +1 -0
- package/dist/{types_db-DXj_l9n-.js → types_db-CTRm_awX.js} +7 -2
- package/dist/types_db-CTRm_awX.js.map +1 -0
- package/dist/types_server-CzAufcee.d.ts +420 -0
- package/dist/types_server-CzAufcee.d.ts.map +1 -0
- package/package.json +5 -4
- package/dist/index-CaWMDqq0.d.ts +0 -1754
- package/dist/index-CaWMDqq0.d.ts.map +0 -1
- package/dist/index-DouKwYL6.d.ts.map +0 -1
- package/dist/mysql-Bxurg_PH.d.ts.map +0 -1
- package/dist/mysql-Cxd4Uq5p.d.ts +0 -104
- package/dist/mysql-Cxd4Uq5p.d.ts.map +0 -1
- package/dist/mysql-bvnjYWvZ.js.map +0 -1
- package/dist/overlap-checker-Ct_HP_iB.js.map +0 -1
- package/dist/postgres-B8u1YN8X.js.map +0 -1
- package/dist/postgres-CfT_aDx3.d.ts +0 -108
- package/dist/postgres-CfT_aDx3.d.ts.map +0 -1
- package/dist/postgres-Ck-xt72U.d.ts.map +0 -1
- package/dist/procedure-DX87tyef.js.map +0 -1
- package/dist/query-Bh0RNxDz.js.map +0 -1
- package/dist/realtime_db-DOCgqbwi.js.map +0 -1
- package/dist/router-DlTYWpop.js.map +0 -1
- package/dist/src/exports/codegen.d.ts +0 -38
- package/dist/src/exports/codegen.d.ts.map +0 -1
- package/dist/src/exports/codegen.js +0 -134
- package/dist/src/exports/codegen.js.map +0 -1
- package/dist/subscription-worker-CqoWp6zB.js.map +0 -1
- package/dist/subscription-worker-PtmJWEj1.js +0 -511
- package/dist/subscription-worker-PtmJWEj1.js.map +0 -1
- package/dist/subscription-worker-pahX0zxg.js +0 -511
- package/dist/subscription-worker-pahX0zxg.js.map +0 -1
- package/dist/types_db-DXj_l9n-.js.map +0 -1
- package/dist/types_server-BW1ys_SK.d.ts +0 -216
- package/dist/types_server-BW1ys_SK.d.ts.map +0 -1
- package/dist/types_server-Dpsi0wpG.d.ts +0 -216
- package/dist/types_server-Dpsi0wpG.d.ts.map +0 -1
- package/dist/types_server-DzrIccyO.d.ts +0 -216
- package/dist/types_server-DzrIccyO.d.ts.map +0 -1
- package/dist/types_server-TFo6SWDH.d.ts +0 -216
- package/dist/types_server-TFo6SWDH.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -31,6 +31,7 @@ npm install @supalive/core
|
|
|
31
31
|
- `@supalive/core/types` - Type definitions
|
|
32
32
|
- `@supalive/core/server` - Server implementation
|
|
33
33
|
- `@supalive/core/client` - Client implementation
|
|
34
|
+
- `@supalive/core/schema-sql` - Generate `schema.sql` from your `defineSchema` definitions
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
|
|
@@ -149,6 +150,33 @@ function Todos() {
|
|
|
149
150
|
|
|
150
151
|
Open this page in two tabs. Click **add** in one. Watch the list grow in both, automatically.
|
|
151
152
|
|
|
153
|
+
## Database setup
|
|
154
|
+
|
|
155
|
+
Supalive is code-first: your `defineSchema` calls are the source of truth for the SQL. Generate a `schema.sql` from them and apply it to your database **before** starting the server.
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
// schema-gen.ts
|
|
159
|
+
import { generateSchemaSql, trackSchema } from "@supalive/core/schema-sql";
|
|
160
|
+
import { writeFileSync } from "node:fs";
|
|
161
|
+
|
|
162
|
+
trackSchema(); // register every defineSchema on import
|
|
163
|
+
await import("./procedures.js"); // side-effect: runs your defineSchema calls
|
|
164
|
+
|
|
165
|
+
writeFileSync("schema.sql", generateSchemaSql(undefined, { dialect: "postgres" }));
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The generated file contains:
|
|
169
|
+
|
|
170
|
+
- **Your tables** — one `CREATE TABLE` per `defineSchema`, plus an automatic index on each table's `commit_ts` column (`<table>_commit_ts_idx`) that the OCC / commit-log paths rely on.
|
|
171
|
+
- **Framework-owned core tables** — `commit_logs` and `metadata` (and their indexes), prepended automatically. Opt out with `generateSchemaSql(..., { includeCoreTables: false })`.
|
|
172
|
+
|
|
173
|
+
Apply `schema.sql`, then boot the server. `initDatabase` runs `initCore` on startup, which brings the **non-table** core state — the `global_commit_ts` sequence (MySQL: a `BIGINT` counter table) and the `metadata` seed rows — up to the current `CORE_VERSION`. It is:
|
|
174
|
+
|
|
175
|
+
- **Versioned** — the applied version lives in `metadata.core_version`; each core release that needs a new database operation bumps `CORE_VERSION` and applies only the missing steps.
|
|
176
|
+
- **Concurrency-safe** — the migration runs under a cross-process lock (Postgres `pg_advisory_xact_lock`, MySQL `GET_LOCK`) behind a lock-free fast path, so many instances can boot at once and only one applies it.
|
|
177
|
+
|
|
178
|
+
> **Order matters:** apply the generated schema (which creates the `metadata` table) before the first `initDatabase` call — `initCore` reads its version from `metadata`.
|
|
179
|
+
|
|
152
180
|
## Why this exists
|
|
153
181
|
|
|
154
182
|
Postgres `LISTEN/NOTIFY` is row-level — you get a notification, you still have to figure out which queries it affects. Supabase Realtime is great for broadcast, presence, and a row-level changefeed, but it doesn't answer the question every reactive app actually has: *"re-run this exact query when its result would change."*
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/db/db.ts
|
|
2
|
+
/** Fixed key for the PG advisory lock that serializes core init across processes. */
|
|
3
|
+
const CORE_INIT_LOCK_KEY = 895124309;
|
|
4
|
+
/** Name for the MySQL `GET_LOCK` that serializes core init across processes. */
|
|
5
|
+
const CORE_INIT_LOCK_NAME = "supalive_core_init";
|
|
6
|
+
var LazyCommitTsParam = class LazyCommitTsParam {
|
|
7
|
+
value;
|
|
8
|
+
constructor(value) {
|
|
9
|
+
this.value = value;
|
|
10
|
+
}
|
|
11
|
+
toPostgres(prepareValue) {
|
|
12
|
+
return prepareValue(this.value);
|
|
13
|
+
}
|
|
14
|
+
toString() {
|
|
15
|
+
return this.value.toString();
|
|
16
|
+
}
|
|
17
|
+
validate() {
|
|
18
|
+
const p = new LazyCommitTsParam(void 0);
|
|
19
|
+
const hasNotObjConstructor = p.constructor !== Object;
|
|
20
|
+
const hasNotToJSON = typeof p.toJSON !== "function";
|
|
21
|
+
console.log("constructor must not object", hasNotObjConstructor);
|
|
22
|
+
console.log("should not have toJSON", hasNotToJSON);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { CORE_INIT_LOCK_NAME as n, LazyCommitTsParam as r, CORE_INIT_LOCK_KEY as t };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=db-ClCicssQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-ClCicssQ.js","names":[],"sources":["../src/db/db.ts"],"sourcesContent":["import { CacheLayer } from \"./cache\";\nimport type { CommitLogEntry, PointRead, RawPointRead, RawReadEntry } from \"./types_db\";\nimport { ReadEntry, WriteEntry } from \"./types_db\";\n\nexport interface DbQueryResult<T = any> {\n rows: T[];\n rowCount?: number | null;\n}\n\nexport interface RawClient {\n query<T = any>(sql: string, params?: unknown[]): Promise<DbQueryResult<T>>;\n}\n\nexport interface PooledClient extends RawClient {\n release(): void;\n}\n\nexport type DbType = \"postgres\" | \"mysql\";\n\n/** Fixed key for the PG advisory lock that serializes core init across processes. */\nexport const CORE_INIT_LOCK_KEY = 895124309;\n/** Name for the MySQL `GET_LOCK` that serializes core init across processes. */\nexport const CORE_INIT_LOCK_NAME = \"supalive_core_init\";\n\nexport interface PendingPointEntry {\n entry: PointRead;\n /* Table name and point read id = key = `${tableName} ${entry.id}` */\n key: string;\n}\n\nexport interface PreparedQuery {\n sql: string;\n params: unknown[] | unknown[][];\n operation: \"insertSingle\" | \"insertBatch\" | \"updateSingle\" | \"updateBatch\" | \"deleteSingle\" | \"deleteBatch\" | \"pointReadValidation\" | \"commit_logs\";\n table: string;\n entryId?: unknown;\n expectedTs?: bigint,\n entries?: WriteEntry[],\n pendingsEntry?: PendingPointEntry[];\n};\n\nexport interface PreparedQueries {\n commits: PreparedQuery[];\n validateReadPoints?: PreparedQuery[];\n hasRangeRead: boolean;\n tableIds?: Uint8Array[];\n rawReadSet?: RawReadEntry[],\n}\n\n/**\n * Bound to a single dedicated connection that holds the core-init lock. Passed\n * to the callback of {@link Database.withCoreInitLock} so version reads/writes\n * and migration statements all run under the same lock.\n */\nexport interface CoreInitLockCtx {\n exec(sql: string, params?: unknown[]): Promise<DbQueryResult>;\n getVersion(): Promise<bigint>;\n setVersion(version: bigint): Promise<void>;\n}\n\nexport interface Database {\n readonly dbType: DbType;\n readonly sqlBuilder: SqlBuilder;\n columnTypes: Map<string, Map<string, string>>;\n /**\n * Current core schema version stored in `metadata.core_version`, or `0n`\n * when unset. Read on a pooled connection for the lock-free fast path of\n * {@link initCore}.\n */\n getCoreVersion(): Promise<bigint>;\n /**\n * Raw, non-table bootstrap statements to apply when migrating the core\n * schema TO `toVersion` (i.e. the `toVersion - 1` → `toVersion` step):\n * sequences, seed rows, etc. Dialect-specific; tables themselves live in the\n * generated schema (see `coreTablesSql`).\n */\n coreMigrationStatements(toVersion: bigint): string[];\n /**\n * Run `fn` while holding the cross-process core-init lock (PG\n * `pg_advisory_xact_lock`, MySQL `GET_LOCK`) on a single dedicated\n * connection, so concurrent servers can't race the core migration. All of\n * `fn`'s work runs on that locked connection via {@link CoreInitLockCtx}.\n */\n withCoreInitLock(fn: (ctx: CoreInitLockCtx) => Promise<void>): Promise<void>;\n bootstrapColumnTypes(opts: { redis?: CacheLayer; cacheKey: string; tables?: string[]; }): Promise<void>;\n query<T = any>(sql: string, params?: unknown[]): Promise<DbQueryResult<T>>;\n getClient(): Promise<PooledClient>;\n getTransactionClient(): Promise<TxDatabase>;\n getLatestSnapshotTimestamp(): Promise<bigint>;\n updateLatestSnapshotTimestamp(commitTs: bigint): Promise<void>;\n /**\n * The retention watermark: the boundary `ts` below which commit_logs have\n * been pruned, so any cache entry whose `lastSnapshotTs` is below it can no\n * longer be freshness-checked (its scan window would miss deleted rows) and\n * must be recomputed. Persisted in the `metadata` table (survives restarts)\n * as a cheap PK read — callers load it into an in-memory variable at startup\n * and keep it fresh via pub/sub rather than reading it per query. Returns the\n * -1n genesis when nothing has been pruned yet (matching the empty-DB snapshot\n * ts), so every entry is scannable.\n */\n getMinSnapshotTimestamp(): Promise<bigint>;\n /**\n * Advance the retention watermark. Monotonic: only ever moves forward (a\n * stale writer can never lower it). Called by the sub-manager right before it\n * prunes commit_logs below `ts`.\n */\n updateMinSnapshotTimestamp(ts: bigint): Promise<void>;\n getNextTimestamp(): Promise<bigint>;\n prepareCommitWrites(readSet: ReadEntry[], writeSet: WriteEntry[], commitTs: LazyCommitTsParam): Promise<PreparedQueries>;\n commitWrites(beginTs: bigint, queries: PreparedQueries, commitTs: bigint): Promise<{ success: boolean }>;\n close(): Promise<void>;\n /**\n * Delete commit_logs older than `ts` (exclusive). Used by the periodic\n * retention sweep in SubscriptionManager so the table doesn't grow\n * unbounded.\n */\n pruneCommitLogsBefore(ts: bigint): Promise<bigint>;\n /**\n * Oldest `ts` still present in commit_logs (i.e. the retention watermark\n * after the last prune), or `null` when the table is empty. A cache entry\n * whose `lastSnapshotTs` is below it can no longer be freshness-checked via\n * {@link getCommitLogsBetweenTs} (the logs it would need were pruned), so the\n * one-shot/register cache paths recompute instead of trusting it.\n */\n getMinCommitLogTs(): Promise<bigint | null>;\n /**\n * Half-open range scan: ts >= beginTs AND ts < endTs. Used by the\n * subscription-recovery path to replay logs in a specific time window.\n */\n getCommitLogsBetweenTs(beginTs: bigint, endTs: bigint, tableIds: Uint8Array[]): Promise<CommitLogEntry[]>;\n /**\n * Conflict-check scan for OCC: ts >= sinceTs AND ts <> excludeTs. The\n * exclude is our own commitTs so we don't conflict with ourselves; the\n * lack of an upper bound is intentional, so a concurrent peer that\n * happens to have a higher commitTs but committed before us is still\n * visible. (MVCC keeps in-flight peers invisible until they commit.)\n */\n getCommitLogsSinceTs(sinceTs: bigint, excludeTs: bigint, tableIds: Uint8Array[]): Promise<CommitLogEntry[]>;\n /**\n * For each `update`/`delete` entry, attach `prevData` (consumed by the\n * invalidator) and `expectedCommitTs` (the CAS fence).\n *\n * `expectedCommitTs` is preferentially copied from a prior point-read of\n * the same row in `readSet` — that's the value the handler's logic\n * actually depended on, so the CAS check enforces beginTs-level isolation\n * for read-then-update patterns. If no prior read exists (\"blind\"\n * write), we fall back to the value observed in this batch fetch (weak\n * OCC, sufficient for writes that don't depend on prior state).\n *\n * `prevData` always comes from this batch fetch (SELECT * per table) so\n * the invalidator has the full row regardless of which columns the\n * handler's read selected.\n *\n * If the target row no longer exists at fetch time, `expectedCommitTs`\n * is left undefined and the per-row CAS will match nothing — surfaced\n * as OccConflictError.\n */\n attachPrevDataToWriteSet(writeSet: WriteEntry[], readSet: ReadEntry[]): Promise<void>;\n}\n\nexport interface TxDatabase extends Database {\n begin(): Promise<void>;\n commit(): Promise<void>;\n rollback(): Promise<void>;\n release(): void;\n}\n\nexport interface JsonOpOptions {\n /**\n * When true, the bound `value` parameter is treated as already prepared\n * for the underlying SQL (e.g. a literal JSON path string for\n * jsonHasKey, a JSON-encoded literal for the contains family). When\n * false/omitted, the value was prepared client-side from a JS value.\n */\n raw?: boolean;\n /**\n * 1-based positional index of an extra bound parameter holding a\n * jsonpath that scopes the contains-family check to a sub-document of\n * the target column. When omitted, the check runs against the whole\n * column value.\n */\n pathIndex?: number;\n /**\n * jsonHasKey only: when set, multiple path parameters are bound starting\n * at `paramIndex`, and the predicate evaluates whether any (`one`) or\n * every (`all`) path exists in the column.\n */\n mode?: \"one\" | \"all\";\n /** Number of bound path parameters in multi-path mode. */\n pathCount?: number;\n}\n\nexport interface SqlBuilder {\n placeholder(index: number): string;\n like(col: string, paramIndex: number): string;\n ilike(col: string, paramIndex: number): string;\n icontains(col: string, paramIndex: number): string;\n /** PG @> ; MySQL JSON_CONTAINS */\n jsonContains(col: string, paramIndex: number, opts?: JsonOpOptions): string;\n /** PG <@ ; MySQL JSON_CONTAINS(candidate, target) */\n jsonContainedBy(col: string, paramIndex: number, opts?: JsonOpOptions): string;\n /**\n * Key/path existence. With `opts.raw === true`, the bound param is a JSON\n * path expression (PG `jsonb_path_exists`, MySQL `JSON_CONTAINS_PATH`).\n * Otherwise the bound param is a literal top-level key (PG `?`, MySQL\n * `JSON_CONTAINS_PATH($.\"<key>\")` with server-side quoting).\n * With `opts.pathCount` set, emits the multi-path form keyed by `mode`.\n */\n jsonHasKey(col: string, paramIndex: number, opts?: JsonOpOptions): string;\n /** Array membership: target array contains the given element. */\n jsonArrayContains(col: string, paramIndex: number, opts?: JsonOpOptions): string;\n}\n\nexport class LazyCommitTsParam {\n constructor(public value: unknown) { }\n\n // used by postgres\n toPostgres(prepareValue: (value: any) => any): any {\n return prepareValue(this.value);\n }\n\n // used by mysql\n toString() {\n return (this.value as any).toString();\n }\n\n validate() {\n const p = new LazyCommitTsParam(undefined);\n const hasNotObjConstructor = p.constructor !== Object;\n const hasNotToJSON = typeof (p as any).toJSON !== 'function';\n console.log('constructor must not object', hasNotObjConstructor);\n console.log('should not have toJSON', hasNotToJSON);\n }\n}"],"mappings":";;AAoBA,MAAa,qBAAqB;;AAElC,MAAa,sBAAsB;AA+LnC,IAAa,oBAAb,MAAa,kBAAkB;CACV;CAAnB,YAAY,OAAuB;EAAhB,KAAA,QAAA;CAAkB;CAGrC,WAAW,cAAwC;EACjD,OAAO,aAAa,KAAK,KAAK;CAChC;CAGA,WAAW;EACT,OAAQ,KAAK,MAAc,SAAS;CACtC;CAEA,WAAW;EACT,MAAM,IAAI,IAAI,kBAAkB,KAAA,CAAS;EACzC,MAAM,uBAAuB,EAAE,gBAAgB;EAC/C,MAAM,eAAe,OAAQ,EAAU,WAAW;EAClD,QAAQ,IAAI,+BAA+B,oBAAoB;EAC/D,QAAQ,IAAI,0BAA0B,YAAY;CACpD;AACF"}
|
|
@@ -19,6 +19,7 @@ declare const CompareOperatorSchema: z.ZodEnum<{
|
|
|
19
19
|
contains: "contains";
|
|
20
20
|
icontains: "icontains";
|
|
21
21
|
between: "between";
|
|
22
|
+
in: "in";
|
|
22
23
|
jsonContains: "jsonContains";
|
|
23
24
|
jsonContainedBy: "jsonContainedBy";
|
|
24
25
|
jsonHasKey: "jsonHasKey";
|
|
@@ -50,6 +51,7 @@ declare const LeafPredicateSchema: z.ZodObject<{
|
|
|
50
51
|
contains: "contains";
|
|
51
52
|
icontains: "icontains";
|
|
52
53
|
between: "between";
|
|
54
|
+
in: "in";
|
|
53
55
|
jsonContains: "jsonContains";
|
|
54
56
|
jsonContainedBy: "jsonContainedBy";
|
|
55
57
|
jsonHasKey: "jsonHasKey";
|
|
@@ -197,6 +199,7 @@ interface LiveResult<T> {
|
|
|
197
199
|
}
|
|
198
200
|
declare const QueryCacheMetadataSchema: z.ZodObject<{
|
|
199
201
|
lastSnapshotTs: z.ZodPipe<z.ZodString, z.ZodTransform<bigint, string>>;
|
|
202
|
+
version: z.ZodString;
|
|
200
203
|
readSet: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
201
204
|
kind: z.ZodLiteral<"point">;
|
|
202
205
|
table: z.ZodString;
|
|
@@ -217,6 +220,7 @@ declare const QueryCacheMetadataSchema: z.ZodObject<{
|
|
|
217
220
|
type QueryCacheMetadata = z.infer<typeof QueryCacheMetadataSchema>;
|
|
218
221
|
declare const QueryCacheEntrySchema: z.ZodObject<{
|
|
219
222
|
data: z.ZodUnknown;
|
|
223
|
+
version: z.ZodString;
|
|
220
224
|
}, z.core.$strip>;
|
|
221
225
|
type QueryCacheEntry = z.infer<typeof QueryCacheEntrySchema>;
|
|
222
226
|
declare const CachedPgMetadataSchema: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -269,6 +273,7 @@ declare const RegisterSubscriptionResultSchema: z.ZodObject<{
|
|
|
269
273
|
limit: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
270
274
|
offset: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
271
275
|
}, z.core.$strip>]>>;
|
|
276
|
+
version: z.ZodOptional<z.ZodString>;
|
|
272
277
|
}, z.core.$strip>;
|
|
273
278
|
type RegisterSubscriptionResult = z.infer<typeof RegisterSubscriptionResultSchema>;
|
|
274
279
|
declare const UpdateSubscriptionReadSetParamsSchema: z.ZodObject<{
|
|
@@ -367,11 +372,34 @@ type RegistrationRecord = z.infer<typeof RegistrationRecordSchema>;
|
|
|
367
372
|
declare class CacheLayer {
|
|
368
373
|
redis: Redis$1 | Redis$2;
|
|
369
374
|
private readonly ttlSeconds;
|
|
375
|
+
/** Cached EVALSHA digests keyed by Lua source (see evalScript). */
|
|
376
|
+
private readonly scriptShaCache;
|
|
370
377
|
constructor(upstash: Redis$1 | Redis$2, ttlSeconds?: number);
|
|
371
|
-
|
|
378
|
+
/**
|
|
379
|
+
* Run a Lua script via EVALSHA using the script's SHA1 (computed locally — the
|
|
380
|
+
* same digest Redis keys scripts by, so no SCRIPT LOAD round-trip is needed on
|
|
381
|
+
* the hot path). On NOSCRIPT (the script isn't in Redis's cache yet, e.g. first
|
|
382
|
+
* use or after a Redis restart/failover) load it explicitly via SCRIPT LOAD and
|
|
383
|
+
* re-run via EVALSHA — so the script ends up cached server-side and subsequent
|
|
384
|
+
* EVALSHA calls hit. The runtime client is always ioredis (see initCacheLayer).
|
|
385
|
+
*/
|
|
386
|
+
private evalScript;
|
|
387
|
+
/** One-shot recompute: atomically write data + metadata (CAS on version). */
|
|
388
|
+
setQueryCacheAndMetadataFor(cacheKey: string, data: unknown, metaData: QueryCacheMetadata, ttlSeconds?: number): Promise<void>;
|
|
389
|
+
/** Subscribe path: write the data blob only (CAS against the metadata's
|
|
390
|
+
* version). The metadata is written separately by the sub-worker; the
|
|
391
|
+
* `version` links the two so a divergent pair is detected on read. */
|
|
392
|
+
setQueryCacheFor(cacheKey: string, data: unknown, version: string, ttlSeconds?: number): Promise<void>;
|
|
372
393
|
getQueryCacheFor(cacheKey: string): Promise<QueryCacheEntry | null>;
|
|
394
|
+
/** Subscription recompute: replace the whole metadata (CAS on version). */
|
|
395
|
+
replaceQueryCacheMetadata(cacheKey: string, metaData: QueryCacheMetadata, ttlSeconds?: number): Promise<void>;
|
|
396
|
+
/** Still-fresh subscription: advance `lastSnapshotTs` only, preserving the
|
|
397
|
+
* data's `version` + `readSet` (no recompute). Monotonic and non-clobbering
|
|
398
|
+
* — see ADVANCE_META. `metaData` carries the new horizon plus the version +
|
|
399
|
+
* readSet the caller read, which the script keeps unless a newer computation
|
|
400
|
+
* has since landed. */
|
|
401
|
+
advanceQueryCacheMetadata(cacheKey: string, metaData: QueryCacheMetadata, ttlSeconds?: number): Promise<void>;
|
|
373
402
|
getQueryCacheMetaData(cacheKey: string): Promise<QueryCacheMetadata | null>;
|
|
374
|
-
setQueryCacheMetadata(cacheKey: string, metaData: QueryCacheMetadata): Promise<void>;
|
|
375
403
|
persistRegistrationRecord(subId: string, record: RegistrationRecord): Promise<void>;
|
|
376
404
|
deleteRegistrationRecord(subId: string): Promise<void>;
|
|
377
405
|
deleteRegistrationsRecord(subIds: string[]): Promise<void>;
|
|
@@ -422,11 +450,40 @@ interface PreparedQueries {
|
|
|
422
450
|
tableIds?: Uint8Array[];
|
|
423
451
|
rawReadSet?: RawReadEntry[];
|
|
424
452
|
}
|
|
453
|
+
/**
|
|
454
|
+
* Bound to a single dedicated connection that holds the core-init lock. Passed
|
|
455
|
+
* to the callback of {@link Database.withCoreInitLock} so version reads/writes
|
|
456
|
+
* and migration statements all run under the same lock.
|
|
457
|
+
*/
|
|
458
|
+
interface CoreInitLockCtx {
|
|
459
|
+
exec(sql: string, params?: unknown[]): Promise<DbQueryResult>;
|
|
460
|
+
getVersion(): Promise<bigint>;
|
|
461
|
+
setVersion(version: bigint): Promise<void>;
|
|
462
|
+
}
|
|
425
463
|
interface Database {
|
|
426
464
|
readonly dbType: DbType;
|
|
427
465
|
readonly sqlBuilder: SqlBuilder;
|
|
428
466
|
columnTypes: Map<string, Map<string, string>>;
|
|
429
|
-
|
|
467
|
+
/**
|
|
468
|
+
* Current core schema version stored in `metadata.core_version`, or `0n`
|
|
469
|
+
* when unset. Read on a pooled connection for the lock-free fast path of
|
|
470
|
+
* {@link initCore}.
|
|
471
|
+
*/
|
|
472
|
+
getCoreVersion(): Promise<bigint>;
|
|
473
|
+
/**
|
|
474
|
+
* Raw, non-table bootstrap statements to apply when migrating the core
|
|
475
|
+
* schema TO `toVersion` (i.e. the `toVersion - 1` → `toVersion` step):
|
|
476
|
+
* sequences, seed rows, etc. Dialect-specific; tables themselves live in the
|
|
477
|
+
* generated schema (see `coreTablesSql`).
|
|
478
|
+
*/
|
|
479
|
+
coreMigrationStatements(toVersion: bigint): string[];
|
|
480
|
+
/**
|
|
481
|
+
* Run `fn` while holding the cross-process core-init lock (PG
|
|
482
|
+
* `pg_advisory_xact_lock`, MySQL `GET_LOCK`) on a single dedicated
|
|
483
|
+
* connection, so concurrent servers can't race the core migration. All of
|
|
484
|
+
* `fn`'s work runs on that locked connection via {@link CoreInitLockCtx}.
|
|
485
|
+
*/
|
|
486
|
+
withCoreInitLock(fn: (ctx: CoreInitLockCtx) => Promise<void>): Promise<void>;
|
|
430
487
|
bootstrapColumnTypes(opts: {
|
|
431
488
|
redis?: CacheLayer;
|
|
432
489
|
cacheKey: string;
|
|
@@ -437,6 +494,23 @@ interface Database {
|
|
|
437
494
|
getTransactionClient(): Promise<TxDatabase>;
|
|
438
495
|
getLatestSnapshotTimestamp(): Promise<bigint>;
|
|
439
496
|
updateLatestSnapshotTimestamp(commitTs: bigint): Promise<void>;
|
|
497
|
+
/**
|
|
498
|
+
* The retention watermark: the boundary `ts` below which commit_logs have
|
|
499
|
+
* been pruned, so any cache entry whose `lastSnapshotTs` is below it can no
|
|
500
|
+
* longer be freshness-checked (its scan window would miss deleted rows) and
|
|
501
|
+
* must be recomputed. Persisted in the `metadata` table (survives restarts)
|
|
502
|
+
* as a cheap PK read — callers load it into an in-memory variable at startup
|
|
503
|
+
* and keep it fresh via pub/sub rather than reading it per query. Returns the
|
|
504
|
+
* -1n genesis when nothing has been pruned yet (matching the empty-DB snapshot
|
|
505
|
+
* ts), so every entry is scannable.
|
|
506
|
+
*/
|
|
507
|
+
getMinSnapshotTimestamp(): Promise<bigint>;
|
|
508
|
+
/**
|
|
509
|
+
* Advance the retention watermark. Monotonic: only ever moves forward (a
|
|
510
|
+
* stale writer can never lower it). Called by the sub-manager right before it
|
|
511
|
+
* prunes commit_logs below `ts`.
|
|
512
|
+
*/
|
|
513
|
+
updateMinSnapshotTimestamp(ts: bigint): Promise<void>;
|
|
440
514
|
getNextTimestamp(): Promise<bigint>;
|
|
441
515
|
prepareCommitWrites(readSet: ReadEntry[], writeSet: WriteEntry[], commitTs: LazyCommitTsParam): Promise<PreparedQueries>;
|
|
442
516
|
commitWrites(beginTs: bigint, queries: PreparedQueries, commitTs: bigint): Promise<{
|
|
@@ -449,6 +523,14 @@ interface Database {
|
|
|
449
523
|
* unbounded.
|
|
450
524
|
*/
|
|
451
525
|
pruneCommitLogsBefore(ts: bigint): Promise<bigint>;
|
|
526
|
+
/**
|
|
527
|
+
* Oldest `ts` still present in commit_logs (i.e. the retention watermark
|
|
528
|
+
* after the last prune), or `null` when the table is empty. A cache entry
|
|
529
|
+
* whose `lastSnapshotTs` is below it can no longer be freshness-checked via
|
|
530
|
+
* {@link getCommitLogsBetweenTs} (the logs it would need were pruned), so the
|
|
531
|
+
* one-shot/register cache paths recompute instead of trusting it.
|
|
532
|
+
*/
|
|
533
|
+
getMinCommitLogTs(): Promise<bigint | null>;
|
|
452
534
|
/**
|
|
453
535
|
* Half-open range scan: ts >= beginTs AND ts < endTs. Used by the
|
|
454
536
|
* subscription-recovery path to replay logs in a specific time window.
|
|
@@ -790,6 +872,13 @@ declare class FilterBuilder<S extends SchemaDefinition<string, ZodRawShape>> {
|
|
|
790
872
|
*/
|
|
791
873
|
jsonArrayContains<K extends JsonFieldKeys<S>>(key: K, value: unknown, opts?: JsonContainsOptions): FilterBuilder<S>;
|
|
792
874
|
between<K extends OrderableFieldKeys<S>>(key: K, lo: FieldValue<S, K>, hi: FieldValue<S, K>): FilterBuilder<S>;
|
|
875
|
+
/**
|
|
876
|
+
* Set membership: `key` equals any of `values` (SQL `IN`). Each value is
|
|
877
|
+
* codec-encoded like `eq`. An empty `values` matches no rows. Bound as one
|
|
878
|
+
* parameter per element, so keep the list within the driver's parameter
|
|
879
|
+
* limit (chunk very large sets at the call site).
|
|
880
|
+
*/
|
|
881
|
+
in<K extends keyof InferSchema<S>>(key: K, values: readonly FieldValue<S, K>[]): FilterBuilder<S>;
|
|
793
882
|
isNull<K extends keyof InferSchema<S>>(key: K): FilterBuilder<S>;
|
|
794
883
|
notNull<K extends keyof InferSchema<S>>(key: K): FilterBuilder<S>;
|
|
795
884
|
/**
|
|
@@ -821,6 +910,13 @@ declare class TxContext {
|
|
|
821
910
|
constructor(db: Database, beginTs: bigint);
|
|
822
911
|
internalGetReadSet(): ReadEntry[];
|
|
823
912
|
internalGetWriteSet(): WriteEntry[];
|
|
913
|
+
/**
|
|
914
|
+
* Merge a parent procedure's reads into this context's readSet. Used when a
|
|
915
|
+
* `runMutation` sub-transaction inherits the reads of the procedure that
|
|
916
|
+
* invoked it, so the sub-tx's OCC validation also fences on those rows.
|
|
917
|
+
* Entries are shallow-cloned so the two readSets don't alias.
|
|
918
|
+
*/
|
|
919
|
+
appendInternalReadSet(parentEntries: ReadEntry[]): void;
|
|
824
920
|
protected findPendingWrite(table: string, id: string): WriteEntry | undefined;
|
|
825
921
|
protected findPendingInsert(table: string, id: string): WriteEntry | undefined;
|
|
826
922
|
protected encodeWithCodec(model: Model, property: string, value: unknown): unknown;
|
|
@@ -893,7 +989,26 @@ declare class SupaliveDb {
|
|
|
893
989
|
db: Database;
|
|
894
990
|
}): SupaliveDb;
|
|
895
991
|
protected onAfterCommit?: (writeSet: WriteEntry[], commitTs: CommitTs) => void;
|
|
992
|
+
/**
|
|
993
|
+
* Register a hook fired once after every successful `mutation()` commit
|
|
994
|
+
* (never on an OCC conflict/rollback), with the committed writeSet and its
|
|
995
|
+
* commitTs. The server uses this to drive subscription invalidation for ALL
|
|
996
|
+
* mutation sources — client WS calls, actions, jobs, and the internal caller —
|
|
997
|
+
* so a server-side write pushes live updates just like a client write does.
|
|
998
|
+
* Non-server consumers (migration tooling, tests) leave it unset (no-op).
|
|
999
|
+
*/
|
|
1000
|
+
setOnAfterCommit(cb: (writeSet: WriteEntry[], commitTs: CommitTs) => void): void;
|
|
896
1001
|
query<T>(fn: (ctx: DbReader) => Promise<T>): Promise<T>;
|
|
1002
|
+
/**
|
|
1003
|
+
* Compute a query once at the latest snapshot, returning the result together
|
|
1004
|
+
* with the snapshot `ts` and the tracked `readSet`. This is a plain one-shot
|
|
1005
|
+
* evaluation — it registers NO live subscription; the `readSet`/`ts` are
|
|
1006
|
+
* returned purely so the caller (e.g. the one-shot query cache) can store
|
|
1007
|
+
* freshness metadata. Use this for cached one-shot query calls (WS `call`,
|
|
1008
|
+
* HTTP RPC). `liveQuery` is the same computation under the subscription path's
|
|
1009
|
+
* name and simply delegates here.
|
|
1010
|
+
*/
|
|
1011
|
+
queryInternal<T>(fn: (ctx: DbReader) => Promise<T>): Promise<LiveResult<T>>;
|
|
897
1012
|
liveQuery<T>(fn: (ctx: DbReader) => Promise<T>): Promise<LiveResult<T>>;
|
|
898
1013
|
mutation<T>(fn: (ctx: DbWriter) => Promise<T>, retryPolicy?: RetryPolicy): Promise<MutationResult<T>>;
|
|
899
1014
|
}
|
|
@@ -930,9 +1045,36 @@ interface ActionCtx<TContext = unknown> {
|
|
|
930
1045
|
/** User-defined server context (auth, requestId, etc.) */
|
|
931
1046
|
serverCtx?: TContext;
|
|
932
1047
|
}
|
|
1048
|
+
/**
|
|
1049
|
+
* Job context passed to job handlers. Structurally identical to
|
|
1050
|
+
* {@link ActionCtx}: a job is a server-only procedure that runs
|
|
1051
|
+
* non-transactionally against the full {@link SupaliveDb} and may perform
|
|
1052
|
+
* external work, but it is triggered by the scheduler over HTTP (a cron tick
|
|
1053
|
+
* or a precise one-shot) rather than by a connected client. `serverCtx` is
|
|
1054
|
+
* the system context built by the server's `jobContext` factory.
|
|
1055
|
+
*/
|
|
1056
|
+
interface JobCtx<TContext = unknown> {
|
|
1057
|
+
/** Full database interface for queries and mutations */
|
|
1058
|
+
db: SupaliveDb;
|
|
1059
|
+
/** System server context built by the server for scheduler-triggered runs */
|
|
1060
|
+
serverCtx?: TContext;
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* Context handed to `caller.<proc>.runQuery` / `.runMutation` when invoking one
|
|
1064
|
+
* procedure from inside another. Pass the caller handler's own `ctx` — its `db`
|
|
1065
|
+
* carries the parent's live transaction (a {@link DbReader}/{@link DbWriter}) or,
|
|
1066
|
+
* inside an action, the full {@link SupaliveDb}. The caller uses this to decide
|
|
1067
|
+
* whether the nested call joins the parent's snapshot (queries) or runs as an
|
|
1068
|
+
* independent sub-transaction (mutations).
|
|
1069
|
+
*/
|
|
1070
|
+
interface ParentCtx<TContext = unknown> {
|
|
1071
|
+
db: DbReader | DbWriter | SupaliveDb;
|
|
1072
|
+
serverCtx?: TContext | undefined;
|
|
1073
|
+
}
|
|
933
1074
|
type QueryFn<TInput, TResult, TContext = unknown> = (ctx: QueryCtx<TContext>, input: TInput) => Promise<TResult>;
|
|
934
1075
|
type MutationFn<TInput, TResult, TContext = unknown> = (ctx: MutationCtx<TContext>, input: TInput) => Promise<TResult>;
|
|
935
1076
|
type ActionFn<TInput, TResult, TContext = unknown> = (ctx: ActionCtx<TContext>, input: TInput) => Promise<TResult>;
|
|
1077
|
+
type JobFn<TInput, TResult, TContext = unknown> = (ctx: JobCtx<TContext>, input: TInput) => Promise<TResult>;
|
|
936
1078
|
/**
|
|
937
1079
|
* Per-procedure override for the cache/subscription segmentation key.
|
|
938
1080
|
*
|
|
@@ -948,11 +1090,11 @@ type ActionFn<TInput, TResult, TContext = unknown> = (ctx: ActionCtx<TContext>,
|
|
|
948
1090
|
* because identity is resolved before any DB read is issued.
|
|
949
1091
|
*/
|
|
950
1092
|
type QueryIdentitySpec<TInput, TContext> = false | string | ((serverCtx: TContext, input: TInput) => string | null | undefined);
|
|
951
|
-
interface BaseProcedure<TInput, TResult, TType extends "query" | "mutation" | "action", TContext = unknown, TInternal extends boolean = boolean> {
|
|
1093
|
+
interface BaseProcedure<TInput, TResult, TType extends "query" | "mutation" | "action" | "job", TContext = unknown, TInternal extends boolean = boolean> {
|
|
952
1094
|
readonly _type: "procedure";
|
|
953
1095
|
readonly procedureType: TType;
|
|
954
1096
|
readonly inputSchema: ZodType<TInput>;
|
|
955
|
-
readonly fn: QueryFn<TInput, TResult, TContext> | MutationFn<TInput, TResult, TContext> | ActionFn<TInput, TResult, TContext>;
|
|
1097
|
+
readonly fn: QueryFn<TInput, TResult, TContext> | MutationFn<TInput, TResult, TContext> | ActionFn<TInput, TResult, TContext> | JobFn<TInput, TResult, TContext>;
|
|
956
1098
|
readonly internal: TInternal;
|
|
957
1099
|
}
|
|
958
1100
|
interface QueryProcedure<TInput, TResult, TContext = unknown, TInternal extends boolean = boolean> extends BaseProcedure<TInput, TResult, "query", TContext, TInternal> {
|
|
@@ -968,7 +1110,24 @@ interface ActionProcedure<TInput, TResult, TContext = unknown, TInternal extends
|
|
|
968
1110
|
readonly procedureType: "action";
|
|
969
1111
|
readonly fn: ActionFn<TInput, TResult, TContext>;
|
|
970
1112
|
}
|
|
971
|
-
|
|
1113
|
+
/**
|
|
1114
|
+
* A scheduler-triggered, server-only procedure. Runs like an action (full
|
|
1115
|
+
* db, non-transactional, may do external work) but is dispatched by the
|
|
1116
|
+
* server's HTTP job endpoint on a cron tick or a precise one-shot rather
|
|
1117
|
+
* than over the client WebSocket. Always {@link internal}: true, so it is
|
|
1118
|
+
* never reachable via `call`/`subscribe`.
|
|
1119
|
+
*/
|
|
1120
|
+
interface JobProcedure<TInput, TResult, TContext = unknown> extends BaseProcedure<TInput, TResult, "job", TContext, true> {
|
|
1121
|
+
readonly procedureType: "job";
|
|
1122
|
+
readonly fn: JobFn<TInput, TResult, TContext>;
|
|
1123
|
+
/**
|
|
1124
|
+
* Cron expression for a recurring job (e.g. `"0 3 * * *"`). Declared crons
|
|
1125
|
+
* are synced to the scheduler at server startup. Omit for a job that is
|
|
1126
|
+
* only ever invoked as a precise one-shot via the scheduler API.
|
|
1127
|
+
*/
|
|
1128
|
+
readonly cron?: string;
|
|
1129
|
+
}
|
|
1130
|
+
type AnyProcedure<TContext = unknown> = QueryProcedure<any, any, TContext> | MutationProcedure<any, any, TContext> | ActionProcedure<any, any, TContext> | JobProcedure<any, any, TContext>;
|
|
972
1131
|
interface QueryConfig<TInput, TResult, TContext = unknown> {
|
|
973
1132
|
/** Zod schema for input validation */
|
|
974
1133
|
args: ZodType<TInput>;
|
|
@@ -998,6 +1157,17 @@ interface ActionConfig<TInput, TResult, TContext = unknown> {
|
|
|
998
1157
|
/** Mark as internal (server-only). Default: false */
|
|
999
1158
|
internal?: boolean;
|
|
1000
1159
|
}
|
|
1160
|
+
interface JobConfig<TInput, TResult, TContext = unknown> {
|
|
1161
|
+
/** Zod schema for the job payload */
|
|
1162
|
+
args: ZodType<TInput>;
|
|
1163
|
+
/** The job handler function */
|
|
1164
|
+
handler: JobFn<TInput, TResult, TContext>;
|
|
1165
|
+
/**
|
|
1166
|
+
* Cron expression for a recurring schedule (e.g. `"0 3 * * *"`). Omit for a
|
|
1167
|
+
* job that is only invoked as a precise one-shot.
|
|
1168
|
+
*/
|
|
1169
|
+
cron?: string;
|
|
1170
|
+
}
|
|
1001
1171
|
/** Extract input type from a procedure */
|
|
1002
1172
|
type InputOf<T> = T extends BaseProcedure<infer I, any, any, any> ? I : never;
|
|
1003
1173
|
/** Extract output type from a procedure */
|
|
@@ -1100,6 +1270,26 @@ declare function createMutationBuilder<TContext = unknown>(): <TInput, TResult,
|
|
|
1100
1270
|
declare function createActionBuilder<TContext = unknown>(): <TInput, TResult, const TInternal extends boolean = false>(config: ActionConfig<TInput, TResult, TContext> & {
|
|
1101
1271
|
internal?: TInternal;
|
|
1102
1272
|
}) => ActionProcedure<TInput, TResult, TContext, TInternal>;
|
|
1273
|
+
/**
|
|
1274
|
+
* Create a job builder with a pre-defined context type. A job is a
|
|
1275
|
+
* server-only procedure invoked by the scheduler over HTTP — either on its
|
|
1276
|
+
* declared `cron` schedule or as a precise one-shot enqueued via the
|
|
1277
|
+
* server's job API. Jobs run like actions (full db, non-transactional) and
|
|
1278
|
+
* are always internal, so they are never reachable from a client.
|
|
1279
|
+
*
|
|
1280
|
+
* @example
|
|
1281
|
+
* const job = createJobBuilder<ServerContext>();
|
|
1282
|
+
*
|
|
1283
|
+
* export const cleanupOtps = job({
|
|
1284
|
+
* cron: "0 * * * *", // hourly
|
|
1285
|
+
* args: z.object({}),
|
|
1286
|
+
* handler: async (ctx) => {
|
|
1287
|
+
* await ctx.db.mutation(async (db) => { ... });
|
|
1288
|
+
* return { ok: true };
|
|
1289
|
+
* },
|
|
1290
|
+
* });
|
|
1291
|
+
*/
|
|
1292
|
+
declare function createJobBuilder<TContext = unknown>(): <TInput, TResult>(config: JobConfig<TInput, TResult, TContext>) => JobProcedure<TInput, TResult, TContext>;
|
|
1103
1293
|
//#endregion
|
|
1104
1294
|
//#region src/router/router.d.ts
|
|
1105
1295
|
/**
|
|
@@ -1128,6 +1318,10 @@ type MutationProcedures<T extends Record<string, AnyProcedure>> = { [K in keyof
|
|
|
1128
1318
|
type ActionProcedures<T extends Record<string, AnyProcedure>> = { [K in keyof T as T[K] extends {
|
|
1129
1319
|
procedureType: "action";
|
|
1130
1320
|
} ? K : never]: T[K] };
|
|
1321
|
+
/** Get job procedures only from a router */
|
|
1322
|
+
type JobProcedures<T extends Record<string, AnyProcedure>> = { [K in keyof T as T[K] extends {
|
|
1323
|
+
procedureType: "job";
|
|
1324
|
+
} ? K : never]: T[K] };
|
|
1131
1325
|
/** Get public (non-internal) procedures - for client type safety */
|
|
1132
1326
|
type PublicProcedures<T extends Record<string, AnyProcedure>> = Pick<T, { [K in keyof T]: T[K] extends {
|
|
1133
1327
|
internal: true;
|
|
@@ -1156,12 +1350,14 @@ type RouterConfig<T> = {
|
|
|
1156
1350
|
declare function router<TProcedures extends Record<string, AnyProcedure<any>>, TContext = unknown>(config: RouterConfig<TProcedures>): Router<TProcedures, TContext>;
|
|
1157
1351
|
interface RegisteredProcedure<TContext = unknown> {
|
|
1158
1352
|
name: string;
|
|
1159
|
-
type: "query" | "mutation" | "action";
|
|
1353
|
+
type: "query" | "mutation" | "action" | "job";
|
|
1160
1354
|
internal: boolean;
|
|
1161
1355
|
inputSchema: AnyProcedure<TContext>["inputSchema"];
|
|
1162
1356
|
fn: AnyProcedure<TContext>["fn"];
|
|
1163
1357
|
/** Only present for `type === "query"`. See `QueryIdentitySpec`. */
|
|
1164
1358
|
queryIdentity?: false | string | ((serverCtx: TContext | undefined, input: unknown) => string | null | undefined);
|
|
1359
|
+
/** Only present for `type === "job"`. Cron expression for recurring jobs. */
|
|
1360
|
+
cron?: string;
|
|
1165
1361
|
}
|
|
1166
1362
|
declare function getContextRegistry(inContext: string): ContextRegistry;
|
|
1167
1363
|
declare class ContextRegistry {
|
|
@@ -1174,6 +1370,8 @@ declare class ContextRegistry {
|
|
|
1174
1370
|
getProcedureNames(): string[];
|
|
1175
1371
|
/** Get all registered procedures */
|
|
1176
1372
|
getAllProcedures(): Map<string, RegisteredProcedure>;
|
|
1373
|
+
/** Get all registered job procedures (server-only, scheduler-triggered). */
|
|
1374
|
+
getJobProcedures(): RegisteredProcedure[];
|
|
1177
1375
|
/** Clear the registry (for testing only) */
|
|
1178
1376
|
clearRegistry(): void;
|
|
1179
1377
|
markInternalProcedure(name: string): void;
|
|
@@ -1732,14 +1930,20 @@ type CallerFromProcedures<TProcedures extends Record<string, AnyProcedure<TConte
|
|
|
1732
1930
|
} ? {
|
|
1733
1931
|
query: (input: InputOf<TProcedures[K]>, serverCtx: TContext) => Promise<OutputOf<TProcedures[K]>>;
|
|
1734
1932
|
liveQuery: (input: InputOf<TProcedures[K]>, serverCtx: TContext) => Promise<LiveResult<OutputOf<TProcedures[K]>>>;
|
|
1933
|
+
runQuery: (input: InputOf<TProcedures[K]>, ctx: ParentCtx<TContext>) => Promise<OutputOf<TProcedures[K]>>;
|
|
1735
1934
|
} : TProcedures[K] extends {
|
|
1736
1935
|
procedureType: "mutation";
|
|
1737
1936
|
} ? {
|
|
1738
1937
|
mutate: (input: InputOf<TProcedures[K]>, serverCtx: TContext) => Promise<OutputOf<TProcedures[K]>>;
|
|
1938
|
+
runMutation: (input: InputOf<TProcedures[K]>, ctx: ParentCtx<TContext>) => Promise<OutputOf<TProcedures[K]>>;
|
|
1739
1939
|
} : TProcedures[K] extends {
|
|
1740
1940
|
procedureType: "action";
|
|
1741
1941
|
} ? {
|
|
1742
1942
|
action: (input: InputOf<TProcedures[K]>, serverCtx: TContext) => Promise<OutputOf<TProcedures[K]>>;
|
|
1943
|
+
} : TProcedures[K] extends {
|
|
1944
|
+
procedureType: "job";
|
|
1945
|
+
} ? {
|
|
1946
|
+
run: (input: InputOf<TProcedures[K]>, serverCtx: TContext) => Promise<OutputOf<TProcedures[K]>>;
|
|
1743
1947
|
} : never } & {
|
|
1744
1948
|
init: (config: {
|
|
1745
1949
|
db: SupaliveDb;
|
|
@@ -1750,5 +1954,5 @@ type CallerFromProcedures<TProcedures extends Record<string, AnyProcedure<TConte
|
|
|
1750
1954
|
*/
|
|
1751
1955
|
type CallerFromRouter<TRouter extends Router<any, any>> = CallerFromProcedures<TRouter["procedures"]>;
|
|
1752
1956
|
//#endregion
|
|
1753
|
-
export {
|
|
1754
|
-
//# sourceMappingURL=index-
|
|
1957
|
+
export { ProcedureNames as $, AndPredicate as $n, ColumnCodec as $t, ResponseMessageSchema as A, DbType as An, RawPointReadSchema as Ar, SupaliveDb as At, SubscriptionUpdateMessageSchema as B, InvalidateWritesetParamsSchema as Bn, WriteOp as Br, DbWriter as Bt, ClientMessageSchema as C, schemaRegistry as Cn, QueryCacheEntrySchema as Cr, QueryFn as Ct, ErrorMessage as D, CoreInitLockCtx as Dn, RangeRead as Dr, createJobBuilder as Dt, Context as E, trackSchema as En, QuerySpec as Er, createActionBuilder as Et, SubscribeMessage as F, SqlBuilder as Fn, ReadEntry as Fr, QueryDefinition as Ft, RPCError as G, UnregisterSubscriptionParams as Gn, JsonOpOptions as Gt, UnsubscribeMessageSchema as H, RegisterSubscriptionParams as Hn, bytesFromJson as Hr, IdAndCommitTs as Ht, SubscribeMessageSchema as I, TxDatabase as In, ReadEntrySchema as Ir, ResultOf as It, ActionProcedures as J, UnregisterSubscriptionsParams as Jn, jsonContains as Jt, WSClientOptions as K, UnregisterSubscriptionParamsSchema as Kn, QueryBuilder as Kt, SubscriptionGoneMessage as L, CacheLayer as Ln, RetryConfig as Lr, _resetGlobalDefs as Lt, ServerMessageSchema as M, PooledClient as Mn, RawRangeReadSchema as Mr, AnyQueryDef as Mt, ServerPingMessage as N, PreparedQueries as Nn, RawReadEntry as Nr, DefsToMap as Nt, IsInternal as O, Database as On, RangeReadSchema as Or, createMutationBuilder as Ot, ServerPingMessageSchema as P, RawClient as Pn, RawReadEntrySchema as Pr, ParamsOf as Pt, MutationProcedures as Q, UpdateSubscriptionReadSetResult as Qn, ActionArgs as Qt, SubscriptionGoneMessageSchema as R, AffectedSubscription as Rn, WriteEntry as Rr, defineQuery as Rt, ClientMessage as S, defineSchema as Sn, QueryCacheEntry as Sr, QueryCtx as St, ConnectedMessageSchema as T, tableNameToId as Tn, QueryCacheMetadataSchema as Tr, TypeOf as Tt, ClientPublicState as U, RegisterSubscriptionParamsSchema as Un, normalizeIdToBytes as Ur, JsonContainsOptions as Ut, UnsubscribeMessage as V, InvalidateWritesetResult as Vn, WriteOpSchema as Vr, TxContext as Vt, HeartbeatOptions as W, RegisterSubscriptionResult as Wn, normalizeToBytes as Wr, JsonHasKeyMultiOptions as Wt, ContextRegistry as X, UpdateSubscriptionReadSetParams as Xn, jsonPathExtract as Xt, AppRouter as Y, UnregisterSubscriptionsResult as Yn, jsonPathExists as Yt, JobProcedures as Z, UpdateSubscriptionReadSetParamsSchema as Zn, matchesPredicate as Zt, AuthSuccessMessage as _, SchemaColumnMapping as _n, OrPredicateSchema as _r, MutationCtx as _t, CallOptions as a, DefineSchemaConfig as an, CommitTs as ar, router as at, CallMessage as b, StoredSchemaColumnsOptions as bn, Predicate as br, OutputOf as bt, LiveQueryHandle as c, InsertData as cn, DEFAULT_RETRY as cr, ActionFn as ct, WSClientMethods as d, OverrideField as dn, LiveResult as dr, ContextOf as dt, ComputedCodec as en, AndPredicateSchema as er, PublicProcedures as et, createClient as f, Prettify as fn, MutationResult as fr, JobConfig as ft, AuthMessageSchema as g, SchemaCodecs as gn, OrPredicate as gr, MutationConfig as gt, AuthMessage as h, ReturnQuery as hn, OccConflictError as hr, JobProcedure as ht, createCaller as i, DeclarativeIndex as in, CommitLogEntry as ir, getContextRegistry as it, ServerMessage as j, LazyCommitTsParam as jn, RawRangeRead as jr, sleep as jt, ResponseMessage as k, DbQueryResult as kn, RawPointRead as kr, createQueryBuilder as kt, LiveQueryState as l, Model as ln, LeafPredicate as lr, ActionProcedure as lt, AuthFailedMessageSchema as m, ReturnLiveQuery as mn, OccAbortError as mr, JobFn as mt, CallerFromRouter as n, ComputedField as nn, CachedPgMetadata as nr, RegisteredProcedure as nt, ClientFromProcedures as o, IndexDefinition as on, CompareOperator as or, ActionConfig as ot, AuthFailedMessage as p, QueryArgs as pn, NO_RETRY as pr, JobCtx as pt, WsClientManager as q, UnregisterSubscriptionResult as qn, buildPredicateSql as qt, CallerOptions as r, ComputedFieldConfig as rn, CachedPgMetadataSchema as rr, Router as rt, ClientOptions as s, InferSchema as sn, CompareOperatorSchema as sr, ActionCtx as st, CallerFromProcedures as t, ComputedDataType as tn, BigIntSchema as tr, QueryProcedures as tt, LiveQueryStatus as u, MutationArgs as un, LeafPredicateSchema as ur, AnyProcedure as ut, AuthSuccessMessageSchema as v, SchemaColumnsOptions as vn, PointRead as vr, MutationFn as vt, ConnectedMessage as w, shouldTrackSchema as wn, QueryCacheMetadata as wr, QueryProcedure as wt, CallMessageSchema as x, defineComputedField as xn, PredicateSchema as xr, QueryConfig as xt, AuthenticationError as y, SchemaDefinition as yn, PointReadSchema as yr, MutationProcedure as yt, SubscriptionUpdateMessage as z, InvalidateWritesetParams as zn, WriteEntrySchema as zr, DbReader as zt };
|
|
1958
|
+
//# sourceMappingURL=index-E1_1iRI1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-E1_1iRI1.d.ts","names":[],"sources":["../src/db/types_db.ts","../src/server/subscription-manager-types.ts","../src/db/cache.ts","../src/db/db.ts","../src/db/schema.ts","../src/db/query.ts","../src/db/context.ts","../src/db/query_definition.ts","../src/db/realtime_db.ts","../src/router/procedure.ts","../src/router/router.ts","../src/client/ws_client_manager.ts","../src/db/types_client_rpc.ts","../src/client/client.ts","../src/client/caller_client.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { An as
|
|
1
|
+
import { An as DbType, Dn as CoreInitLockCtx, Fn as SqlBuilder, Fr as ReadEntry, In as TxDatabase, Ln as CacheLayer, Mn as PooledClient, Nn as PreparedQueries, On as Database, Rr as WriteEntry, ir as CommitLogEntry, jn as LazyCommitTsParam, kn as DbQueryResult } from "./index-E1_1iRI1.js";
|
|
2
2
|
import { Pool, PoolOptions } from "mysql2/promise";
|
|
3
3
|
import { Logger } from "pino";
|
|
4
4
|
|
|
@@ -67,12 +67,16 @@ declare class MySqlDatabase implements Database {
|
|
|
67
67
|
/** Enumerate the user-defined tables in the connected database for mysql — used
|
|
68
68
|
* by bootstrapColumnTypes() when no explicit list is provided. */
|
|
69
69
|
private listUserTables;
|
|
70
|
-
|
|
70
|
+
getCoreVersion(): Promise<bigint>;
|
|
71
|
+
coreMigrationStatements(toVersion: bigint): string[];
|
|
72
|
+
withCoreInitLock(fn: (ctx: CoreInitLockCtx) => Promise<void>): Promise<void>;
|
|
71
73
|
query<T = any>(sql: string, params?: unknown[]): Promise<DbQueryResult<T>>;
|
|
72
74
|
getClient(): Promise<PooledClient>;
|
|
73
75
|
getTransactionClient(): Promise<TxDatabase>;
|
|
74
76
|
getLatestSnapshotTimestamp(): Promise<bigint>;
|
|
75
77
|
updateLatestSnapshotTimestamp(commitTs: bigint): Promise<void>;
|
|
78
|
+
getMinSnapshotTimestamp(): Promise<bigint>;
|
|
79
|
+
updateMinSnapshotTimestamp(ts: bigint): Promise<void>;
|
|
76
80
|
getNextTimestamp(): Promise<bigint>;
|
|
77
81
|
attachPrevDataToWriteSet(writeSet: WriteEntry[], readSet: ReadEntry[]): Promise<void>;
|
|
78
82
|
prepareCommitWrites(readSet: ReadEntry[], writeSet: WriteEntry[], commitTs: LazyCommitTsParam): Promise<PreparedQueries>;
|
|
@@ -95,10 +99,11 @@ declare class MySqlDatabase implements Database {
|
|
|
95
99
|
private mysqlApplyWrites;
|
|
96
100
|
private validatePointReadsByCommitTs;
|
|
97
101
|
pruneCommitLogsBefore(ts: bigint): Promise<bigint>;
|
|
102
|
+
getMinCommitLogTs(): Promise<bigint | null>;
|
|
98
103
|
getCommitLogsBetweenTs(beginTs: bigint, endTs: bigint, tableIds: Uint8Array[]): Promise<CommitLogEntry[]>;
|
|
99
104
|
getCommitLogsSinceTs(sinceTs: bigint, excludeTs: bigint, tableIds: Uint8Array[]): Promise<CommitLogEntry[]>;
|
|
100
105
|
close(): Promise<void>;
|
|
101
106
|
}
|
|
102
107
|
//#endregion
|
|
103
108
|
export { MySqlDatabase as t };
|
|
104
|
-
//# sourceMappingURL=mysql-
|
|
109
|
+
//# sourceMappingURL=mysql-BmkLy5oY.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-BmkLy5oY.d.ts","names":[],"sources":["../src/db/mysql.ts"],"mappings":";;;;;;;;;KAwCY,gBAAA,GAAmB,WAAW;EAAK,cAAc;AAAA;AAAA,cAEhD,aAAA,YAAyB,QAAA;cAElC,MAAA,EAAQ,MAAA,EACR,MAAA,EAAQ,gBAAA,EACR,IAAA,GAAM,IAAA;EAAA,QAaA,MAAA;EACD,MAAA,EAAQ,WAAA;EAAA,UACL,cAAA;EAAA,QACF,IAAA;EAAA,SACC,MAAA,EAAQ,MAAA;EAAA,SACR,UAAA,EAAY,UAAA;EAMd,WAAA,EAAa,GAAA,SAAY,GAAA;EAAA,UAGtB,QAAA,EAAU,GAAA;EAwII;;;;;;EAhIlB,wBAAA,CAAyB,KAAA,WAAgB,OAAA,CAAQ,GAAA;EAyM5B;;;;;;EAjL3B,cAAA,CAAe,KAAA,WAAgB,GAAA;EA8Me;;;;;;;;;;;;;;;EAtLxC,oBAAA,CAAqB,IAAA;IACzB,KAAA,GAAQ,UAAA;IACR,QAAA;IACA,MAAA;EAAA,IACE,OAAA;EA+rBW;;;;;EArpBf,qBAAA,CAAsB,KAAA;EAnIZ;;;EAkJV,WAAA,CACE,WAAA,EAAa,GAAA,SAAY,GAAA,mBACzB,QAAA,EAAU,GAAA;EAlJJ;;EAAA,QA0JM,cAAA;EASR,cAAA,IAAkB,OAAA;EAUxB,uBAAA,CAAwB,SAAA;EAYlB,gBAAA,CAAiB,EAAA,GAAK,GAAA,EAAK,eAAA,KAAoB,OAAA,SAAgB,OAAA;EAqC/D,KAAA,UAAe,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,aAAA,CAAc,CAAA;EAc3E,SAAA,IAAa,OAAA,CAAQ,YAAA;EAKrB,oBAAA,IAAwB,OAAA,CAAQ,UAAA;EAOhC,0BAAA,IAA8B,OAAA;EAK9B,6BAAA,CAA8B,QAAA,WAAmB,OAAA;EAOjD,uBAAA,IAA2B,OAAA;EAK3B,0BAAA,CAA2B,EAAA,WAAa,OAAA;EAOxC,gBAAA,IAAoB,OAAA;EAuBpB,wBAAA,CAAyB,QAAA,EAAU,UAAA,IAAc,OAAA,EAAS,SAAA,KAAc,OAAA;EA6DxE,mBAAA,CACJ,OAAA,EAAS,SAAA,IACT,QAAA,EAAU,UAAA,IACV,QAAA,EAAU,iBAAA,GACT,OAAA,CAAQ,eAAA;EAAA,QAmBG,uBAAA;EAAA,QAyBA,uBAAA;EAAA,QA2CA,wBAAA;EAAA,QAiCA,uBAAA;EAAA,QA4BA,sBAAA;EAjcC;;;;;;;EAAA,QA2eP,wCAAA;EAgDF,YAAA,CACJ,OAAA,UACA,OAAA,EAAS,eAAA,EACT,QAAA,WACC,OAAA;IAAU,OAAA;EAAA;EAAA,QAqCC,gBAAA;EAAA,QAyDA,4BAAA;EAwCR,qBAAA,CAAsB,EAAA,WAAa,OAAA;EAQnC,iBAAA,IAAqB,OAAA;EAQrB,sBAAA,CAAuB,OAAA,UAAiB,KAAA,UAAe,QAAA,EAAU,UAAA,KAAe,OAAA,CAAQ,cAAA;EAmBxF,oBAAA,CAAqB,OAAA,UAAiB,SAAA,UAAmB,QAAA,EAAU,UAAA,KAAe,OAAA,CAAQ,cAAA;EAmB1F,KAAA,IAAS,OAAA;AAAA"}
|