@absolutejs/sync 1.25.0 → 2.0.1
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 +12 -2
- package/dist/adapters/drizzle/index.js +3 -2
- package/dist/adapters/drizzle/index.js.map +3 -3
- package/dist/index.js +48 -29
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -38,7 +38,13 @@ top-N ordering are maintained incrementally through a composable operator graph
|
|
|
38
38
|
> search, scheduled functions, a live devtools dashboard, conflict-free
|
|
39
39
|
> collaborative editing (CRDTs), CDC for Postgres/MySQL/SQLite, incremental
|
|
40
40
|
> aggregations + joins, and a declarative operator graph) are in place.
|
|
41
|
-
>
|
|
41
|
+
> Operator-grade primitives also shipped — **point-in-time replay**
|
|
42
|
+
> (`engine.replayTo`, 1.22; clickable Replay panel in `syncDevtools`, 1.23) and
|
|
43
|
+
> **tenant migration** (`engine.fence` / `exportSnapshot` / `importSnapshot`,
|
|
44
|
+
> 1.24). Everything ships as subpaths of this one package. See
|
|
45
|
+
> [Substrate complete (G1–G7)](https://absolutejs.com/documentation/substrate-audit)
|
|
46
|
+
> for the consolidated record of the seven cross-cutting substrate gaps and
|
|
47
|
+
> what closed each.
|
|
42
48
|
|
|
43
49
|
## Install
|
|
44
50
|
|
|
@@ -365,7 +371,7 @@ it, ~3 store round-trips every 20ms ran the voice pipeline far slower than real
|
|
|
365
371
|
| `sync({ hub, path?, resolveTopics?, heartbeatMs? })` | Elysia plugin: SSE stream of hub events. |
|
|
366
372
|
| `syncSocket({ engine, path?, resolveContext? })` | Elysia WebSocket plugin for the sync engine. |
|
|
367
373
|
| `scheduled({ engine, prefix?, onError? })` _(`/scheduled` subpath)_ | Elysia plugin: fires the engine's registered schedules on their cron patterns (via `@elysiajs/cron`). Kept off the main entry so `syncSocket` needs no cron dep. |
|
|
368
|
-
| `syncDevtools({ engine, path?, snapshotMs? })` | Elysia plugin: a live devtools dashboard (collections, subscription counts, mutations, schedules, change feed) over SSE. Backed by `engine.inspect()` + `engine.onActivity()`. |
|
|
374
|
+
| `syncDevtools({ engine, path?, snapshotMs? })` | Elysia plugin: a live devtools dashboard (collections, subscription counts, mutations, schedules, change feed) over SSE. Backed by `engine.inspect()` + `engine.onActivity()`. **1.23** also exposes a Point-in-time replay panel (datetime picker + tables filter) and a `GET <path>/replay?at=<ms>&tables=<csv>` JSON endpoint wrapping `engine.replayTo`. |
|
|
369
375
|
| `createWriteBehindCache({ load, persist, remove?, debounceMs?, evict?, onPersistError? })` | In-memory cache + write-behind persistence. |
|
|
370
376
|
|
|
371
377
|
### `@absolutejs/sync/client`
|
|
@@ -438,6 +444,10 @@ mutate({
|
|
|
438
444
|
| `createTextIndex({ key, fields, tokenize?, stopwords?, k1?, b? })` | Incremental BM25 full-text index (keyword search). Implements `SearchIndex`; usable standalone or inside a search collection. |
|
|
439
445
|
| `createVectorIndex({ key, embedding, metric? })` | Incremental vector index (cosine/dot/euclidean exact k-NN) for semantic search — pairs with `@absolutejs/ai` / `@absolutejs/rag` for RAG retrieval on your own data. |
|
|
440
446
|
| `defineSchedule({ name, pattern, run })` + `registerSchedule` / `runSchedule` | Scheduled function: `run({ db, actions })` fires on a cron `pattern`; its writes go live through the change feed. Wire triggers with the `scheduled` plugin (or call `runSchedule(name)` on demand). |
|
|
447
|
+
| `engine.replayTo({ at, tables? })` _(1.22)_ | Walk the bounded change log forward to a target timestamp and return `{ asOfVersion, asOfAt, rows, truncated }`. Forensic incident response ("what did the tenant see at 14:32?") + restore-from-time ("revert to 2 hours ago"). `truncated: true` when the log doesn't extend back to `at` — widen `changeLogRetainMs` for forensic use cases. |
|
|
448
|
+
| `engine.fence({ reason })` _(1.24)_ | Pause new mutations on the engine — the source half of tenant migration. `runMutation` rejects with `EngineFencedError`; subscribe / hydrate / streamChanges stay open. Multiple fences compose; every handle must `lift()` before the engine unfences. `lift()` is idempotent. |
|
|
449
|
+
| `engine.exportSnapshot({ tables?, ctx? })` _(1.24)_ | Walk every registered reader's `all(ctx)` and return a portable `EngineSnapshot { sourceInstanceId, version, exportedAt, tables }`. Detached from `ChangeLogSnapshot` — snapshots carry live state, not history. |
|
|
450
|
+
| `engine.importSnapshot(snapshot, { tables?, onProgress?, ctx? })` _(1.24)_ | Bulk-load an `EngineSnapshot` on the target via each table's registered writer. Returns `{ tablesImported, rowsImported, perTable, skipped }`. Tables in the snapshot without a writer on the target surface in `skipped` so misconfigured targets don't silently drop rows. |
|
|
441
451
|
|
|
442
452
|
### `@absolutejs/sync/crdt`
|
|
443
453
|
|
|
@@ -18,6 +18,7 @@ var __require = import.meta.require;
|
|
|
18
18
|
// src/adapters/drizzle/topics.ts
|
|
19
19
|
import {
|
|
20
20
|
Column,
|
|
21
|
+
getColumnTable,
|
|
21
22
|
getTableColumns,
|
|
22
23
|
getTableName,
|
|
23
24
|
is,
|
|
@@ -79,7 +80,7 @@ var extractKeyFromWhere = (table, where, keyColumn) => {
|
|
|
79
80
|
if (column.name !== resolved.column) {
|
|
80
81
|
return;
|
|
81
82
|
}
|
|
82
|
-
if (getTableName(column
|
|
83
|
+
if (getTableName(getColumnTable(column)) !== getTableName(table)) {
|
|
83
84
|
return;
|
|
84
85
|
}
|
|
85
86
|
const value = param.value;
|
|
@@ -277,5 +278,5 @@ export {
|
|
|
277
278
|
UnsupportedDrizzleFilterError
|
|
278
279
|
};
|
|
279
280
|
|
|
280
|
-
//# debugId=
|
|
281
|
+
//# debugId=440BA9164FF10CD464756E2164756E21
|
|
281
282
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/adapters/drizzle/topics.ts", "../src/adapters/drizzle/collection.ts", "../src/adapters/drizzle/predicate.ts", "../src/adapters/drizzle/read.ts", "../src/adapters/drizzle/write.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {\n\tColumn,\n\tgetTableColumns,\n\tgetTableName,\n\tis,\n\tParam,\n\tSQL\n} from 'drizzle-orm';\nimport type { Table } from 'drizzle-orm';\n\n/**\n * Shared topic vocabulary + key resolution for the Drizzle adapter. Both the\n * read side (derive the topics a query depends on) and the write side (publish\n * the topics a mutation invalidates) build on these so the two always agree.\n */\n\n/** The coarse topic every read/write of `table` touches, e.g. `users`. */\nexport const tableTopic = (table: Table): string => getTableName(table);\n\n/** The row-level topic for one key of `table`, e.g. `users:5`. */\nexport const keyTopic = (table: Table, key: string | number): string =>\n\t`${getTableName(table)}:${key}`;\n\ntype ResolvedKey = {\n\t/** JS property name of the key column on the table / result rows. */\n\tproperty: string;\n\t/** Underlying DB column name, as it appears in a SQL expression. */\n\tcolumn: string;\n};\n\n/**\n * Resolve the column to use as the row key: an explicitly requested column (by\n * JS property name), otherwise the table's sole primary key. Returns `undefined`\n * when no single key column applies (composite or missing primary key).\n */\nexport const resolveKeyColumn = (\n\ttable: Table,\n\tkeyColumn?: string\n): ResolvedKey | undefined => {\n\tconst columns = getTableColumns(table);\n\tif (keyColumn !== undefined) {\n\t\tconst column = columns[keyColumn];\n\t\treturn column === undefined\n\t\t\t? undefined\n\t\t\t: { property: keyColumn, column: column.name };\n\t}\n\tconst primaries = Object.entries(columns).filter(\n\t\t([, column]) => column.primary\n\t);\n\tconst primary = primaries.length === 1 ? primaries[0] : undefined;\n\treturn primary === undefined\n\t\t? undefined\n\t\t: { property: primary[0], column: primary[1].name };\n};\n\n/**\n * Best-effort: pull a single key-column equality value out of a Drizzle `where`\n * expression. Recognises only the simple `eq(keyColumn, scalar)` shape — any\n * nesting (`and`/`or`), extra columns/params, a non-`=` operator, or a\n * non-key/cross-table column yields `undefined`.\n *\n * Reads Drizzle's internal `queryChunks`, which is not a stable public API;\n * every branch degrades to `undefined` (coarser topic) rather than throwing, so\n * a Drizzle version bump can only cost precision, never correctness.\n */\nexport const extractKeyFromWhere = (\n\ttable: Table,\n\twhere: SQL,\n\tkeyColumn?: string\n): string | number | undefined => {\n\tconst resolved = resolveKeyColumn(table, keyColumn);\n\tif (resolved === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst chunks: unknown = (where as { queryChunks?: unknown }).queryChunks;\n\tif (!Array.isArray(chunks)) {\n\t\treturn undefined;\n\t}\n\n\tlet column: Column | undefined;\n\tlet param: Param | undefined;\n\tlet tooComplex = false;\n\tlet operator = '';\n\n\tfor (const chunk of chunks) {\n\t\tif (is(chunk, SQL)) {\n\t\t\t// Nested expression (e.g. and/or) — not a simple equality.\n\t\t\treturn undefined;\n\t\t}\n\t\tif (is(chunk, Column)) {\n\t\t\tif (column !== undefined) {\n\t\t\t\ttooComplex = true;\n\t\t\t}\n\t\t\tcolumn = chunk;\n\t\t} else if (is(chunk, Param)) {\n\t\t\tif (param !== undefined) {\n\t\t\t\ttooComplex = true;\n\t\t\t}\n\t\t\tparam = chunk;\n\t\t} else {\n\t\t\tconst value: unknown = (chunk as { value?: unknown }).value;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\toperator += value.join('');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (tooComplex || column === undefined || param === undefined) {\n\t\treturn undefined;\n\t}\n\tif (operator.trim() !== '=') {\n\t\treturn undefined;\n\t}\n\tif (column.name !== resolved.column) {\n\t\treturn undefined;\n\t}\n\tif (getTableName(column
|
|
5
|
+
"import {\n\tColumn,\n\tgetColumnTable,\n\tgetTableColumns,\n\tgetTableName,\n\tis,\n\tParam,\n\tSQL\n} from 'drizzle-orm';\nimport type { Table } from 'drizzle-orm';\n\n/**\n * Shared topic vocabulary + key resolution for the Drizzle adapter. Both the\n * read side (derive the topics a query depends on) and the write side (publish\n * the topics a mutation invalidates) build on these so the two always agree.\n */\n\n/** The coarse topic every read/write of `table` touches, e.g. `users`. */\nexport const tableTopic = (table: Table): string => getTableName(table);\n\n/** The row-level topic for one key of `table`, e.g. `users:5`. */\nexport const keyTopic = (table: Table, key: string | number): string =>\n\t`${getTableName(table)}:${key}`;\n\ntype ResolvedKey = {\n\t/** JS property name of the key column on the table / result rows. */\n\tproperty: string;\n\t/** Underlying DB column name, as it appears in a SQL expression. */\n\tcolumn: string;\n};\n\n/**\n * Resolve the column to use as the row key: an explicitly requested column (by\n * JS property name), otherwise the table's sole primary key. Returns `undefined`\n * when no single key column applies (composite or missing primary key).\n */\nexport const resolveKeyColumn = (\n\ttable: Table,\n\tkeyColumn?: string\n): ResolvedKey | undefined => {\n\tconst columns = getTableColumns(table);\n\tif (keyColumn !== undefined) {\n\t\tconst column = columns[keyColumn];\n\t\treturn column === undefined\n\t\t\t? undefined\n\t\t\t: { property: keyColumn, column: column.name };\n\t}\n\tconst primaries = Object.entries(columns).filter(\n\t\t([, column]) => column.primary\n\t);\n\tconst primary = primaries.length === 1 ? primaries[0] : undefined;\n\treturn primary === undefined\n\t\t? undefined\n\t\t: { property: primary[0], column: primary[1].name };\n};\n\n/**\n * Best-effort: pull a single key-column equality value out of a Drizzle `where`\n * expression. Recognises only the simple `eq(keyColumn, scalar)` shape — any\n * nesting (`and`/`or`), extra columns/params, a non-`=` operator, or a\n * non-key/cross-table column yields `undefined`.\n *\n * Reads Drizzle's internal `queryChunks`, which is not a stable public API;\n * every branch degrades to `undefined` (coarser topic) rather than throwing, so\n * a Drizzle version bump can only cost precision, never correctness.\n */\nexport const extractKeyFromWhere = (\n\ttable: Table,\n\twhere: SQL,\n\tkeyColumn?: string\n): string | number | undefined => {\n\tconst resolved = resolveKeyColumn(table, keyColumn);\n\tif (resolved === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst chunks: unknown = (where as { queryChunks?: unknown }).queryChunks;\n\tif (!Array.isArray(chunks)) {\n\t\treturn undefined;\n\t}\n\n\tlet column: Column | undefined;\n\tlet param: Param | undefined;\n\tlet tooComplex = false;\n\tlet operator = '';\n\n\tfor (const chunk of chunks) {\n\t\tif (is(chunk, SQL)) {\n\t\t\t// Nested expression (e.g. and/or) — not a simple equality.\n\t\t\treturn undefined;\n\t\t}\n\t\tif (is(chunk, Column)) {\n\t\t\tif (column !== undefined) {\n\t\t\t\ttooComplex = true;\n\t\t\t}\n\t\t\tcolumn = chunk;\n\t\t} else if (is(chunk, Param)) {\n\t\t\tif (param !== undefined) {\n\t\t\t\ttooComplex = true;\n\t\t\t}\n\t\t\tparam = chunk;\n\t\t} else {\n\t\t\tconst value: unknown = (chunk as { value?: unknown }).value;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\toperator += value.join('');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (tooComplex || column === undefined || param === undefined) {\n\t\treturn undefined;\n\t}\n\tif (operator.trim() !== '=') {\n\t\treturn undefined;\n\t}\n\tif (column.name !== resolved.column) {\n\t\treturn undefined;\n\t}\n\tif (getTableName(getColumnTable(column)) !== getTableName(table)) {\n\t\treturn undefined;\n\t}\n\n\tconst value: unknown = param.value;\n\treturn typeof value === 'string' || typeof value === 'number'\n\t\t? value\n\t\t: undefined;\n};\n\n/**\n * Read the key value from each row (e.g. the output of a mutation's\n * `.returning()`), using the table's primary-key column or an explicit\n * `keyColumn`. Rows without a string/number key are skipped.\n */\nexport const extractRowKeys = (\n\ttable: Table,\n\trows: ReadonlyArray<Record<string, unknown>>,\n\tkeyColumn?: string\n): (string | number)[] => {\n\tconst resolved = resolveKeyColumn(table, keyColumn);\n\tif (resolved === undefined) {\n\t\treturn [];\n\t}\n\tconst keys: (string | number)[] = [];\n\tfor (const row of rows) {\n\t\tconst value = row[resolved.property];\n\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\tkeys.push(value);\n\t\t}\n\t}\n\treturn keys;\n};\n",
|
|
6
6
|
"import { getTableName } from 'drizzle-orm';\nimport type { SQL, Table } from 'drizzle-orm';\nimport type {\n\tCollectionContext,\n\tCollectionDefinition\n} from '../../engine/collection';\nimport type { RowKey } from '../../engine/types';\nimport { matchesDrizzleWhere } from './predicate';\nimport { resolveKeyColumn } from './topics';\n\nexport type DrizzleCollectionOptions<T, P = void, Ctx = CollectionContext> = {\n\t/** Collection name clients subscribe to. */\n\tname: string;\n\t/** The Drizzle table this collection reads (drives change routing + key). */\n\ttable: Table;\n\t/** The query filter, written once — powers both hydrate and the matcher. */\n\twhere: (params: P, ctx: Ctx) => SQL;\n\t/** Run the read for `where` (your `db.select()...`), returning the rows. */\n\tfind: (\n\t\twhere: SQL,\n\t\tparams: P,\n\t\tctx: Ctx\n\t) => Promise<Iterable<T>> | Iterable<T>;\n\t/** Row identity. Defaults to the table's single primary key (else `row.id`). */\n\tkey?: (row: T) => RowKey;\n\t/** Key column JS property, if not the table's primary key. */\n\tkeyColumn?: string;\n\t/** Access control; return false (or throw) to deny the subscription. */\n\tauthorize?: (params: P, ctx: Ctx) => boolean | Promise<boolean>;\n};\n\n/**\n * A sync-engine collection from one Drizzle query — the Drizzle counterpart to\n * `prismaCollection`. You write the `where` once: it drives the DB read\n * (`hydrate`) AND the incremental `match` (via {@link matchesDrizzleWhere}), so\n * the two can't drift and you never hand-maintain a separate predicate. A filter\n * the matcher can't evaluate falls back to a refetch, never a wrong result.\n */\nexport const drizzleCollection = <T, P = void, Ctx = CollectionContext>(\n\toptions: DrizzleCollectionOptions<T, P, Ctx>\n): CollectionDefinition<T, P, Ctx> => {\n\tconst keyProp = resolveKeyColumn(\n\t\toptions.table,\n\t\toptions.keyColumn\n\t)?.property;\n\tconst key =\n\t\toptions.key ??\n\t\t((row: T) =>\n\t\t\tkeyProp !== undefined\n\t\t\t\t? (row as Record<string, RowKey>)[keyProp]!\n\t\t\t\t: (row as { id: RowKey }).id);\n\n\treturn {\n\t\tname: options.name,\n\t\ttables: [getTableName(options.table)],\n\t\thydrate: (params, ctx) =>\n\t\t\toptions.find(options.where(params, ctx), params, ctx),\n\t\tmatch: (row, params, ctx) =>\n\t\t\tmatchesDrizzleWhere(\n\t\t\t\toptions.table,\n\t\t\t\toptions.where(params, ctx),\n\t\t\t\trow as Record<string, unknown>\n\t\t\t),\n\t\tkey,\n\t\tauthorize: options.authorize\n\t};\n};\n",
|
|
7
7
|
"import { Column, getTableColumns, is, Param, SQL } from 'drizzle-orm';\nimport type { Table } from 'drizzle-orm';\n\n/**\n * Thrown when a Drizzle `where` uses something the incremental matcher can't\n * evaluate in JS (an unsupported operator, a function, a cross-table column…).\n * The sync engine catches it and degrades that subscription to a refetch, so the\n * result is never wrong — only less efficient. Mirrors the Prisma adapter.\n */\nexport class UnsupportedDrizzleFilterError extends Error {\n\tconstructor(detail: string) {\n\t\tsuper(`Cannot evaluate Drizzle filter \"${detail}\" incrementally`);\n\t\tthis.name = 'UnsupportedDrizzleFilterError';\n\t}\n}\n\nconst isDate = (value: unknown): value is Date => value instanceof Date;\n\nconst equals = (value: unknown, operand: unknown): boolean => {\n\tif (operand === null) {\n\t\treturn value === null || value === undefined;\n\t}\n\tif (isDate(value) && isDate(operand)) {\n\t\treturn value.getTime() === operand.getTime();\n\t}\n\treturn value === operand;\n};\n\nconst order = (value: unknown): number | string =>\n\tisDate(value) ? value.getTime() : (value as number | string);\n\nconst compare = (value: unknown, operand: unknown): number => {\n\tconst a = order(value);\n\tconst b = order(operand);\n\tif (a < b) {\n\t\treturn -1;\n\t}\n\tif (a > b) {\n\t\treturn 1;\n\t}\n\treturn 0;\n};\n\nconst comparable = (value: unknown): boolean =>\n\tvalue !== null && value !== undefined;\n\ntype Classified = {\n\tcols: Column[];\n\tparams: unknown[];\n\tarrays: unknown[][];\n\tsqls: SQL[];\n\tops: string[];\n};\n\n/**\n * Split a condition's `queryChunks` into its parts. Drizzle interleaves columns,\n * bound `Param`s, value arrays (for `in`), nested `SQL` (connectives), and string\n * chunks that carry the operators/parens. Reading `queryChunks` is Drizzle's\n * internal shape, not a stable API — but every unrecognized form throws below\n * (→ refetch), so a version bump can only cost efficiency, never correctness.\n */\nconst classify = (chunks: unknown[]): Classified => {\n\tconst cols: Column[] = [];\n\tconst params: unknown[] = [];\n\tconst arrays: unknown[][] = [];\n\tconst sqls: SQL[] = [];\n\tconst ops: string[] = [];\n\tfor (const chunk of chunks) {\n\t\tif (is(chunk, SQL)) {\n\t\t\tsqls.push(chunk);\n\t\t} else if (is(chunk, Column)) {\n\t\t\tcols.push(chunk);\n\t\t} else if (is(chunk, Param)) {\n\t\t\tparams.push(chunk.value);\n\t\t} else if (Array.isArray(chunk)) {\n\t\t\tarrays.push(\n\t\t\t\tchunk.map((element) =>\n\t\t\t\t\tis(element, Param) ? element.value : element\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tconst raw = (chunk as { value?: unknown }).value;\n\t\t\tconst text = (\n\t\t\t\tArray.isArray(raw) ? raw.join('') : String(raw ?? '')\n\t\t\t).trim();\n\t\t\tif (text !== '' && text !== '(' && text !== ')') {\n\t\t\t\tops.push(text);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { arrays, cols, ops, params, sqls };\n};\n\nconst evaluateLeaf = (\n\tcolumn: Column,\n\top: string,\n\tparams: unknown[],\n\tarrays: unknown[][],\n\trow: Record<string, unknown>,\n\tpropFor: (column: Column) => string | undefined\n): boolean => {\n\tconst prop = propFor(column);\n\tif (prop === undefined) {\n\t\tthrow new UnsupportedDrizzleFilterError(`column ${column.name}`);\n\t}\n\tconst value = row[prop];\n\tconst operand = params[0];\n\tswitch (op) {\n\t\tcase '=':\n\t\t\treturn equals(value, operand);\n\t\tcase '<>':\n\t\t\treturn !equals(value, operand);\n\t\tcase '>':\n\t\t\treturn comparable(value) && compare(value, operand) > 0;\n\t\tcase '>=':\n\t\t\treturn comparable(value) && compare(value, operand) >= 0;\n\t\tcase '<':\n\t\t\treturn comparable(value) && compare(value, operand) < 0;\n\t\tcase '<=':\n\t\t\treturn comparable(value) && compare(value, operand) <= 0;\n\t\tcase 'in':\n\t\t\treturn (arrays[0] ?? []).some((item) => equals(value, item));\n\t\tcase 'not in':\n\t\t\treturn !(arrays[0] ?? []).some((item) => equals(value, item));\n\t\tcase 'is null':\n\t\t\treturn value === null || value === undefined;\n\t\tcase 'is not null':\n\t\t\treturn value !== null && value !== undefined;\n\t\tdefault:\n\t\t\tthrow new UnsupportedDrizzleFilterError(op);\n\t}\n};\n\nconst evaluateCondition = (\n\tnode: SQL,\n\trow: Record<string, unknown>,\n\tpropFor: (column: Column) => string | undefined\n): boolean => {\n\tconst { cols, params, arrays, sqls, ops } = classify(\n\t\t(node as unknown as { queryChunks: unknown[] }).queryChunks\n\t);\n\n\t// not (cond)\n\tif (\n\t\tops.length === 1 &&\n\t\tops[0] === 'not' &&\n\t\tsqls.length === 1 &&\n\t\tcols.length === 0\n\t) {\n\t\treturn !evaluateCondition(sqls[0]!, row, propFor);\n\t}\n\t// A lone nested condition wrapped in parens — unwrap and recurse.\n\tif (cols.length === 0 && sqls.length === 1 && ops.length === 0) {\n\t\treturn evaluateCondition(sqls[0]!, row, propFor);\n\t}\n\t// and / or over sub-conditions.\n\tif (cols.length === 0 && sqls.length >= 2 && ops.length > 0) {\n\t\tconst connective = ops[0];\n\t\tif (\n\t\t\t(connective === 'and' || connective === 'or') &&\n\t\t\tops.every((op) => op === connective)\n\t\t) {\n\t\t\tconst results = sqls.map((sql) =>\n\t\t\t\tevaluateCondition(sql, row, propFor)\n\t\t\t);\n\t\t\treturn connective === 'and'\n\t\t\t\t? results.every(Boolean)\n\t\t\t\t: results.some(Boolean);\n\t\t}\n\t\tthrow new UnsupportedDrizzleFilterError(ops.join(' '));\n\t}\n\t// Leaf comparison: one column, one operator.\n\tif (cols.length === 1 && sqls.length === 0 && ops.length === 1) {\n\t\treturn evaluateLeaf(cols[0]!, ops[0]!, params, arrays, row, propFor);\n\t}\n\tthrow new UnsupportedDrizzleFilterError(\n\t\tops.join(' ') || 'unrecognized condition'\n\t);\n};\n\n/**\n * Evaluate a Drizzle `where` condition against a plain row in JS — the\n * incremental matcher for {@link drizzleCollection}. Supports\n * `eq`/`ne`/`gt`/`gte`/`lt`/`lte`, `isNull`/`isNotNull`,\n * `inArray`/`notInArray`, and nested `and`/`or`/`not`; anything else throws\n * {@link UnsupportedDrizzleFilterError} (the engine then refetches). Rows are\n * read by JS property name, as Drizzle returns them.\n */\nexport const matchesDrizzleWhere = (\n\ttable: Table,\n\twhere: SQL,\n\trow: Record<string, unknown>\n): boolean => {\n\tconst nameToProp = new Map<string, string>();\n\tfor (const [prop, column] of Object.entries(getTableColumns(table))) {\n\t\tnameToProp.set(column.name, prop);\n\t}\n\n\treturn evaluateCondition(where, row, (column) =>\n\t\tnameToProp.get(column.name)\n\t);\n};\n",
|
|
8
8
|
"import type { SQL, Table } from 'drizzle-orm';\nimport { extractKeyFromWhere, keyTopic, tableTopic } from './topics';\n\nexport type DeriveReadTopicsOptions = {\n\t/**\n\t * Column (its JS property name on the table) to treat as the row key when\n\t * narrowing to a `table:key` topic. Defaults to the table's single\n\t * primary-key column; composite or absent primary keys disable row-level\n\t * narrowing.\n\t */\n\tkeyColumn?: string;\n};\n\nexport type DerivedReadTopics = {\n\t/** Topics this read depends on — subscribe to all of them. */\n\ttopics: string[];\n\t/**\n\t * `true` when derivation narrowed to a specific row (`table:key`); `false`\n\t * when it fell back to the whole-table topic.\n\t */\n\trowLevel: boolean;\n};\n\n/**\n * Derive the reactive topics a read of `table` (optionally filtered by `where`)\n * depends on. A recognised primary-key equality narrows to a single `table:key`\n * topic; everything else subscribes to the whole-table topic, over-invalidating\n * a little rather than missing an update.\n *\n * @example\n * deriveReadTopics(users); // { topics: ['users'], rowLevel: false }\n * deriveReadTopics(users, eq(users.id, 5)); // { topics: ['users:5'], rowLevel: true }\n * deriveReadTopics(users, gt(users.id, 5)); // { topics: ['users'], rowLevel: false }\n */\nexport const deriveReadTopics = (\n\ttable: Table,\n\twhere?: SQL,\n\toptions: DeriveReadTopicsOptions = {}\n): DerivedReadTopics => {\n\tconst key =\n\t\twhere === undefined\n\t\t\t? undefined\n\t\t\t: extractKeyFromWhere(table, where, options.keyColumn);\n\n\tif (key === undefined) {\n\t\treturn { topics: [tableTopic(table)], rowLevel: false };\n\t}\n\treturn { topics: [keyTopic(table, key)], rowLevel: true };\n};\n",
|
|
9
9
|
"import type { SQL, Table } from 'drizzle-orm';\nimport type { ReactiveHub } from '../../reactiveHub';\nimport {\n\textractKeyFromWhere,\n\textractRowKeys,\n\tkeyTopic,\n\ttableTopic\n} from './topics';\n\n/**\n * Drizzle write-side topic publishing (Tier 2).\n *\n * The mirror of {@link deriveReadTopics}: after a mutation commits, publish the\n * topics it invalidates so subscribed reads refetch. Every change publishes the\n * **table** topic (so list/table queries refresh) plus a **row** topic per\n * affected key (so row-level queries refresh) — the exact topics the read side\n * subscribes to.\n *\n * These are the \"route mutations through us\" change source from the roadmap:\n * call them right after your durable write. They work on any DB Drizzle supports\n * and never touch DB-specific machinery; out-of-band writes (caught later by CDC\n * adapters) are the only thing they miss.\n */\n\n/** The kind of mutation, forwarded in the change-event payload. */\nexport type ChangeOp = 'insert' | 'update' | 'delete';\n\n/** Payload carried by every change event the write side publishes. */\nexport type ChangePayload = {\n\t/** Name of the table that changed. */\n\ttable: string;\n\t/** Mutation kind, when the caller provided it. */\n\top?: ChangeOp;\n\t/** Affected row keys (empty for a table-wide change). */\n\tkeys: (string | number)[];\n};\n\nexport type PublishChangeOptions = {\n\t/** Row keys that changed; each emits a `table:key` topic. */\n\tkeys?: ReadonlyArray<string | number>;\n\top?: ChangeOp;\n};\n\n/**\n * Publish the reactive topics a change to `table` invalidates: the whole-table\n * topic (always) plus a `table:key` topic per affected row. Call after the\n * durable write commits. Returns the (de-duplicated) topics published.\n */\nexport const publishChange = (\n\thub: Pick<ReactiveHub, 'publish'>,\n\ttable: Table,\n\toptions: PublishChangeOptions = {}\n): string[] => {\n\tconst name = tableTopic(table);\n\tconst keys = options.keys === undefined ? [] : [...new Set(options.keys)];\n\tconst payload: ChangePayload = { table: name, op: options.op, keys };\n\tconst topics = [\n\t\t...new Set([name, ...keys.map((key) => keyTopic(table, key))])\n\t];\n\tfor (const topic of topics) {\n\t\thub.publish(topic, payload);\n\t}\n\treturn topics;\n};\n\nexport type PublishRowsOptions = {\n\t/** Key column (JS property name); defaults to the table's primary key. */\n\tkeyColumn?: string;\n\top?: ChangeOp;\n};\n\n/**\n * Publish change topics for a set of rows — typically the output of a mutation's\n * `.returning()`, which yields real keys including auto-generated ones. Reads\n * each row's primary-key column (or `keyColumn`) to emit `table:key` topics.\n *\n * @example\n * const rows = await db.insert(users).values(input).returning();\n * publishRows(hub, users, rows, { op: 'insert' });\n */\nexport const publishRows = (\n\thub: Pick<ReactiveHub, 'publish'>,\n\ttable: Table,\n\trows: ReadonlyArray<Record<string, unknown>>,\n\toptions: PublishRowsOptions = {}\n): string[] =>\n\tpublishChange(hub, table, {\n\t\tkeys: extractRowKeys(table, rows, options.keyColumn),\n\t\top: options.op\n\t});\n\nexport type PublishWhereOptions = {\n\t/** Key column (JS property name); defaults to the table's primary key. */\n\tkeyColumn?: string;\n\top?: ChangeOp;\n};\n\n/**\n * Publish change topics for an `update`/`delete` identified by a `where` filter.\n * A simple primary-key equality narrows to that row's topic; any other filter\n * publishes just the table topic, so every affected subscriber refetches and\n * re-evaluates.\n *\n * @example\n * await db.update(users).set(patch).where(eq(users.id, id));\n * publishWhere(hub, users, eq(users.id, id), { op: 'update' });\n */\nexport const publishWhere = (\n\thub: Pick<ReactiveHub, 'publish'>,\n\ttable: Table,\n\twhere: SQL,\n\toptions: PublishWhereOptions = {}\n): string[] => {\n\tconst key = extractKeyFromWhere(table, where, options.keyColumn);\n\treturn publishChange(hub, table, {\n\t\tkeys: key === undefined ? [] : [key],\n\t\top: options.op\n\t});\n};\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "440BA9164FF10CD464756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/dist/index.js
CHANGED
|
@@ -496,40 +496,59 @@ var syncSocket = ({
|
|
|
496
496
|
};
|
|
497
497
|
return new Elysia2({ name: "@absolutejs/sync/socket" }).ws(path, {
|
|
498
498
|
async open(ws) {
|
|
499
|
-
const ctx = resolveContext ? await resolveContext(ws.data) : {};
|
|
500
499
|
const bunWs = ws;
|
|
501
500
|
const tracked = {
|
|
502
|
-
connection:
|
|
503
|
-
|
|
504
|
-
ctx,
|
|
505
|
-
presence,
|
|
506
|
-
serializer,
|
|
507
|
-
send: (frame) => {
|
|
508
|
-
const payload = serializer.encodeServer(frame);
|
|
509
|
-
const ret = bunWs.send(typeof payload === "string" ? payload : payload);
|
|
510
|
-
const buffered = bunWs.getBufferedAmount?.() ?? 0;
|
|
511
|
-
const overBuffer = buffered > threshold;
|
|
512
|
-
const backpressure = ret === -1;
|
|
513
|
-
if ((overBuffer || backpressure) && !tracked.slowSignaled) {
|
|
514
|
-
tracked.slowSignaled = true;
|
|
515
|
-
fireSlow({
|
|
516
|
-
bufferedAmount: buffered,
|
|
517
|
-
reason: backpressure ? "send-backpressure" : "buffer-threshold",
|
|
518
|
-
stats: tracked.connection.stats(),
|
|
519
|
-
wsId: bunWs.id
|
|
520
|
-
});
|
|
521
|
-
if (closeOnSlow)
|
|
522
|
-
bunWs.close?.();
|
|
523
|
-
}
|
|
524
|
-
return ret;
|
|
525
|
-
}
|
|
526
|
-
}),
|
|
501
|
+
connection: null,
|
|
502
|
+
pending: [],
|
|
527
503
|
slowSignaled: false
|
|
528
504
|
};
|
|
529
505
|
connections.set(bunWs.id, tracked);
|
|
506
|
+
const ctx = resolveContext ? await resolveContext(ws.data) : {};
|
|
507
|
+
const connection = createSyncConnection({
|
|
508
|
+
engine,
|
|
509
|
+
ctx,
|
|
510
|
+
presence,
|
|
511
|
+
serializer,
|
|
512
|
+
send: (frame) => {
|
|
513
|
+
const payload = serializer.encodeServer(frame);
|
|
514
|
+
const ret = bunWs.send(typeof payload === "string" ? payload : payload);
|
|
515
|
+
const buffered2 = bunWs.getBufferedAmount?.() ?? 0;
|
|
516
|
+
const overBuffer = buffered2 > threshold;
|
|
517
|
+
const backpressure = ret === -1;
|
|
518
|
+
if ((overBuffer || backpressure) && !tracked.slowSignaled) {
|
|
519
|
+
tracked.slowSignaled = true;
|
|
520
|
+
fireSlow({
|
|
521
|
+
bufferedAmount: buffered2,
|
|
522
|
+
reason: backpressure ? "send-backpressure" : "buffer-threshold",
|
|
523
|
+
stats: connection.stats(),
|
|
524
|
+
wsId: bunWs.id
|
|
525
|
+
});
|
|
526
|
+
if (closeOnSlow)
|
|
527
|
+
bunWs.close?.();
|
|
528
|
+
}
|
|
529
|
+
return ret;
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
if (!connections.has(bunWs.id)) {
|
|
533
|
+
connection.close();
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
tracked.connection = connection;
|
|
537
|
+
const buffered = tracked.pending;
|
|
538
|
+
tracked.pending = [];
|
|
539
|
+
for (const frame of buffered) {
|
|
540
|
+
await connection.handle(frame);
|
|
541
|
+
}
|
|
530
542
|
},
|
|
531
543
|
async message(ws, message) {
|
|
532
|
-
|
|
544
|
+
const tracked = connections.get(ws.id);
|
|
545
|
+
if (!tracked)
|
|
546
|
+
return;
|
|
547
|
+
if (tracked.connection) {
|
|
548
|
+
await tracked.connection.handle(message);
|
|
549
|
+
} else {
|
|
550
|
+
tracked.pending.push(message);
|
|
551
|
+
}
|
|
533
552
|
},
|
|
534
553
|
drain(ws) {
|
|
535
554
|
const tracked = connections.get(ws.id);
|
|
@@ -539,7 +558,7 @@ var syncSocket = ({
|
|
|
539
558
|
close(ws) {
|
|
540
559
|
const tracked = connections.get(ws.id);
|
|
541
560
|
if (tracked) {
|
|
542
|
-
tracked.connection
|
|
561
|
+
tracked.connection?.close();
|
|
543
562
|
connections.delete(ws.id);
|
|
544
563
|
}
|
|
545
564
|
}
|
|
@@ -3467,5 +3486,5 @@ export {
|
|
|
3467
3486
|
createPresenceHub
|
|
3468
3487
|
};
|
|
3469
3488
|
|
|
3470
|
-
//# debugId=
|
|
3489
|
+
//# debugId=657517E899F8FF7E64756E2164756E21
|
|
3471
3490
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"export type WriteBehindCacheOptions<K, V> = {\n\t/**\n\t * Read a value from the durable store on a cache miss. Called at most once per\n\t * key until the entry is evicted.\n\t */\n\tload: (key: K) => Promise<V | undefined> | V | undefined;\n\t/** Persist a value to the durable store. Runs in the background (write-behind). */\n\tpersist: (key: K, value: V) => Promise<void> | void;\n\t/** Remove a value from the durable store. */\n\tremove?: (key: K) => Promise<void> | void;\n\t/**\n\t * Coalesce writes: each key persists at most once per window. A burst of\n\t * `set`s collapses into a single durable write. Defaults to 250ms.\n\t */\n\tdebounceMs?: number;\n\t/**\n\t * After a key persists, return true to drop it from the in-memory cache so the\n\t * cache stays bounded to \"hot\" entries (e.g. evict terminal sessions). The next\n\t * `get` reloads it via `load`. Defaults to never evicting.\n\t */\n\tevict?: (value: V, key: K) => boolean;\n\t/**\n\t * Called when a background persist throws. The cache stays authoritative and the\n\t * key re-persists on its next `set`, so a transient durable-store blip does not\n\t * drop live state. Defaults to a no-op.\n\t */\n\tonPersistError?: (error: unknown, key: K) => void;\n};\n\nexport type WriteBehindCache<K, V> = {\n\t/** Cached value, or load-through from the durable store on a miss. */\n\tget: (key: K) => Promise<V | undefined>;\n\t/** Cached value only — synchronous, never touches the durable store. */\n\tpeek: (key: K) => V | undefined;\n\thas: (key: K) => boolean;\n\t/** Write to memory immediately and schedule a coalesced durable persist. */\n\tset: (key: K, value: V) => void;\n\t/** Drop from cache and the durable store. */\n\tdelete: (key: K) => Promise<void>;\n\tkeys: () => IterableIterator<K>;\n\tvalues: () => IterableIterator<V>;\n\tsize: () => number;\n\t/** Persist every pending key to the durable store now. Call on shutdown. */\n\tflush: () => Promise<void>;\n};\n\n/**\n * Wrap a durable store (Postgres, SQLite, Drizzle, Prisma, file, S3, an HTTP API …)\n * with an in-memory hot cache and write-behind persistence.\n *\n * Reads are served from memory; writes hit memory synchronously and are flushed to\n * the durable store in coalesced background batches. The durable store stays the\n * source of truth for history and cross-instance reads, while a latency-sensitive\n * hot path (a per-frame voice session, presence, cursors, game state) stays fast.\n *\n * This is the \"fast authoritative local state, durable persistence synced behind it\"\n * split a sync engine like Convex makes — without adopting a whole sync-engine\n * backend. Bring your own store via `load`/`persist`/`remove`.\n */\nexport const createWriteBehindCache = <K, V>(\n\toptions: WriteBehindCacheOptions<K, V>\n): WriteBehindCache<K, V> => {\n\tconst debounceMs = options.debounceMs ?? 250;\n\tconst cache = new Map<K, V>();\n\tconst timers = new Map<K, ReturnType<typeof setTimeout>>();\n\n\tconst persist = async (key: K) => {\n\t\ttimers.delete(key);\n\t\tconst value = cache.get(key);\n\t\tif (value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait options.persist(key, value);\n\t\t\tif (options.evict?.(value, key)) {\n\t\t\t\tcache.delete(key);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\toptions.onPersistError?.(error, key);\n\t\t}\n\t};\n\n\tconst schedulePersist = (key: K) => {\n\t\tif (timers.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\ttimers.set(\n\t\t\tkey,\n\t\t\tsetTimeout(() => {\n\t\t\t\tvoid persist(key);\n\t\t\t}, debounceMs)\n\t\t);\n\t};\n\n\treturn {\n\t\tget: async (key) => {\n\t\t\tconst cached = cache.get(key);\n\t\t\tif (cached !== undefined) {\n\t\t\t\treturn cached;\n\t\t\t}\n\t\t\tconst loaded = await options.load(key);\n\t\t\tif (loaded !== undefined) {\n\t\t\t\tcache.set(key, loaded);\n\t\t\t}\n\t\t\treturn loaded;\n\t\t},\n\t\tpeek: (key) => cache.get(key),\n\t\thas: (key) => cache.has(key),\n\t\tset: (key, value) => {\n\t\t\tcache.set(key, value);\n\t\t\tschedulePersist(key);\n\t\t},\n\t\tdelete: async (key) => {\n\t\t\tconst timer = timers.get(key);\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimers.delete(key);\n\t\t\t}\n\t\t\tcache.delete(key);\n\t\t\tawait options.remove?.(key);\n\t\t},\n\t\tkeys: () => cache.keys(),\n\t\tvalues: () => cache.values(),\n\t\tsize: () => cache.size,\n\t\tflush: async () => {\n\t\t\tfor (const timer of timers.values()) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\ttimers.clear();\n\t\t\tawait Promise.all([...cache.keys()].map((key) => persist(key)));\n\t\t}\n\t};\n};\n",
|
|
6
6
|
"/**\n * Topic of the synthetic frame the SSE plugin emits when a stream opens (and\n * re-opens after a reconnect). Clients use it to tell \"the stream connected\"\n * apart from a real data-change event.\n */\nexport const SYNC_OPEN_TOPIC = '@absolutejs/sync:open';\n\nexport type ReactiveEvent<TPayload = unknown> = {\n\ttopic: string;\n\tat: number;\n\tpayload?: TPayload;\n};\n\nexport type ReactiveListener<TPayload = unknown> = (\n\tevent: ReactiveEvent<TPayload>\n) => void;\n\nexport type ReactiveHub = {\n\t/**\n\t * Notify every subscriber of `topic` (and any prefix-wildcard subscriber that\n\t * matches it). Call this from a mutation after the durable write commits.\n\t */\n\tpublish: (topic: string, payload?: unknown) => void;\n\t/**\n\t * Listen on one or more topics. A topic ending in `*` matches every topic that\n\t * starts with the prefix before it (e.g. `voice:session:*`). Returns an\n\t * unsubscribe function.\n\t */\n\tsubscribe: (topics: string[], listener: ReactiveListener) => () => void;\n\t/** Number of active subscribers, optionally for a single exact topic. */\n\tsubscriberCount: (topic?: string) => number;\n};\n\ntype Subscription = {\n\texact: Set<string>;\n\tprefixes: string[];\n\tlistener: ReactiveListener;\n};\n\n/**\n * An in-memory topic pub/sub for reactive, push-on-change updates.\n *\n * The pattern that replaces polling: a query/widget subscribes to the topics its\n * data depends on; a mutation `publish`es those topics after it writes; subscribers\n * are notified immediately and refetch (or receive the pushed payload) — instead of\n * every client hammering the server on a timer.\n *\n * Dependencies are explicit (you name the topics) rather than auto-tracked from a\n * query's read set — deliberately small, with no sandbox or query interception.\n * Pair it with the {@link sync} Elysia plugin to stream events to browsers over SSE.\n */\nexport const createReactiveHub = (): ReactiveHub => {\n\tconst subscriptions = new Set<Subscription>();\n\n\tconst matches = (subscription: Subscription, topic: string) => {\n\t\tif (subscription.exact.has(topic)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn subscription.prefixes.some((prefix) => topic.startsWith(prefix));\n\t};\n\n\treturn {\n\t\tpublish: (topic, payload) => {\n\t\t\tconst event: ReactiveEvent = { topic, at: Date.now(), payload };\n\t\t\tfor (const subscription of subscriptions) {\n\t\t\t\tif (matches(subscription, topic)) {\n\t\t\t\t\tsubscription.listener(event);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsubscribe: (topics, listener) => {\n\t\t\tconst exact = new Set<string>();\n\t\t\tconst prefixes: string[] = [];\n\t\t\tfor (const topic of topics) {\n\t\t\t\tif (topic.endsWith('*')) {\n\t\t\t\t\tprefixes.push(topic.slice(0, -1));\n\t\t\t\t} else {\n\t\t\t\t\texact.add(topic);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst subscription: Subscription = { exact, prefixes, listener };\n\t\t\tsubscriptions.add(subscription);\n\t\t\treturn () => {\n\t\t\t\tsubscriptions.delete(subscription);\n\t\t\t};\n\t\t},\n\t\tsubscriberCount: (topic) => {\n\t\t\tif (topic === undefined) {\n\t\t\t\treturn subscriptions.size;\n\t\t\t}\n\t\t\tlet count = 0;\n\t\t\tfor (const subscription of subscriptions) {\n\t\t\t\tif (matches(subscription, topic)) {\n\t\t\t\t\tcount += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t}\n\t};\n};\n",
|
|
7
7
|
"import { Elysia } from 'elysia';\nimport { SYNC_OPEN_TOPIC } from './reactiveHub';\nimport type { ReactiveEvent, ReactiveHub } from './reactiveHub';\n\nexport type SyncRequestContext = {\n\tquery: Record<string, string | undefined>;\n\trequest: Request;\n};\n\nexport type SyncPluginOptions = {\n\thub: ReactiveHub;\n\t/** Route the SSE stream is served from. Defaults to `/sync`. */\n\tpath?: string;\n\t/**\n\t * Which topics a connection subscribes to. Defaults to a comma-separated\n\t * `?topics=a,b,c` query param. Override to derive topics from the session,\n\t * params, or auth instead of trusting the client.\n\t */\n\tresolveTopics?: (context: SyncRequestContext) => string[];\n\t/**\n\t * Server→client heartbeat comment, so idle proxies don't drop the SSE stream.\n\t * Defaults to 25000ms.\n\t */\n\theartbeatMs?: number;\n};\n\nconst defaultResolveTopics = (context: SyncRequestContext) =>\n\t(context.query.topics ?? '')\n\t\t.split(',')\n\t\t.map((topic) => topic.trim())\n\t\t.filter(Boolean);\n\n/**\n * Elysia plugin that streams {@link ReactiveHub} events to browsers over Server-Sent\n * Events. Mount it once, point {@link createSyncSubscriber} at the same path, and\n * `hub.publish(topic)` from your mutations — subscribed clients are notified the\n * moment data changes, so they can refetch (or read the pushed payload) instead of\n * polling on a timer.\n */\nexport const sync = ({\n\thub,\n\tpath = '/sync',\n\tresolveTopics = defaultResolveTopics,\n\theartbeatMs = 25_000\n}: SyncPluginOptions) => {\n\tconst app = new Elysia({ name: '@absolutejs/sync' }).get(\n\t\tpath,\n\t\t(context) => {\n\t\t\tconst topics = resolveTopics({\n\t\t\t\tquery: context.query as Record<string, string | undefined>,\n\t\t\t\trequest: context.request\n\t\t\t});\n\t\t\tconst encoder = new TextEncoder();\n\n\t\t\tconst stream = new ReadableStream<Uint8Array>({\n\t\t\t\tstart(controller) {\n\t\t\t\t\tconst write = (chunk: string) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcontroller.enqueue(encoder.encode(chunk));\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// controller already closed by an abort race\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tconst send = (event: ReactiveEvent) => {\n\t\t\t\t\t\twrite(`data: ${JSON.stringify(event)}\\n\\n`);\n\t\t\t\t\t};\n\n\t\t\t\t\tsend({\n\t\t\t\t\t\ttopic: SYNC_OPEN_TOPIC,\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t\tpayload: { topics }\n\t\t\t\t\t});\n\n\t\t\t\t\tconst unsubscribe =\n\t\t\t\t\t\ttopics.length > 0\n\t\t\t\t\t\t\t? hub.subscribe(topics, send)\n\t\t\t\t\t\t\t: () => {};\n\t\t\t\t\tconst heartbeat = setInterval(\n\t\t\t\t\t\t() => write(': ping\\n\\n'),\n\t\t\t\t\t\theartbeatMs\n\t\t\t\t\t);\n\n\t\t\t\t\tcontext.request.signal.addEventListener(\n\t\t\t\t\t\t'abort',\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tclearInterval(heartbeat);\n\t\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t// already closed\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ once: true }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn new Response(stream, {\n\t\t\t\theaders: {\n\t\t\t\t\t'cache-control': 'no-cache, no-transform',\n\t\t\t\t\tconnection: 'keep-alive',\n\t\t\t\t\t'content-type': 'text/event-stream',\n\t\t\t\t\t// Tell nginx (and other reverse proxies) not to buffer the\n\t\t\t\t\t// stream — without this it holds chunks back and the SSE\n\t\t\t\t\t// connection tears (ERR_INCOMPLETE_CHUNKED_ENCODING).\n\t\t\t\t\t'x-accel-buffering': 'no'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t);\n\n\t// The single SSE route uses a CONFIGURABLE path, so Elysia keys it by\n\t// `string` — a string-indexed route that would pollute a consumer's\n\t// whole-server type and is reached via EventSource, not Eden. The honest\n\t// public type is a base Elysia (no typed surface to preserve).\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- see comment above\n\treturn app as unknown as Elysia;\n};\n",
|
|
8
|
-
"import { Elysia } from 'elysia';\nimport { createSyncConnection } from './connection';\nimport type { SyncConnection, SyncConnectionStats } from './connection';\nimport type { PresenceHub } from './presence';\nimport type { SyncEngine } from './syncEngine';\nimport type { FrameSerializer } from '../serializer';\nimport { jsonSerializer } from '../serializer';\n\n/**\n * Diagnostic surfaced via {@link SyncSocketOptions.onSlow} when a connection\n * trips the WS backpressure threshold. The host can log, kick, or charge the\n * tenant extra via the meter.\n */\nexport type SlowConnectionEvent = {\n\t/** Stable per-connection id from Elysia's `ws.id`. */\n\twsId: string;\n\t/** Bytes the WS currently has queued waiting to send. */\n\tbufferedAmount: number;\n\t/** Per-connection counters at the moment of detection. */\n\tstats: SyncConnectionStats;\n\t/** Why the event fired. */\n\treason: 'buffer-threshold' | 'send-backpressure';\n};\n\nexport type SyncSocketOptions = {\n\t/** The sync engine whose collections this socket serves. */\n\tengine: SyncEngine;\n\t/** WebSocket route. Defaults to `/sync/ws`. */\n\tpath?: string;\n\t/** Optional presence hub; enables `presence-*` frames on this socket. */\n\tpresence?: PresenceHub;\n\t/**\n\t * Build the per-connection auth context from the upgrade request data\n\t * (`ws.data`: query, headers, cookies, and anything you `derive`d/`resolve`d\n\t * earlier in the chain). Whatever you return is the `ctx` passed to every\n\t * collection's `authorize`/`hydrate`/`match`. Defaults to an empty object.\n\t */\n\tresolveContext?: (\n\t\tdata: Record<string, unknown>\n\t) => unknown | Promise<unknown>;\n\t/**\n\t * Bytes threshold for the per-connection WS send buffer. When\n\t * `ws.getBufferedAmount()` exceeds this, `onSlow` fires once per\n\t * crossing. Default `Infinity` (disabled).\n\t *\n\t * Added in 1.14.0.\n\t */\n\tmaxBufferedBytes?: number;\n\t/**\n\t * Fired when the per-connection WS buffer crosses `maxBufferedBytes`, OR\n\t * when `ws.send()` returns `-1` (Bun's backpressure signal). The signal\n\t * re-arms once the WS reports `drain`. Pair with `closeOnSlow: true` to\n\t * kick slow clients automatically, or use this hook to charge the\n\t * tenant extra via `@absolutejs/metering`.\n\t *\n\t * Added in 1.14.0.\n\t */\n\tonSlow?: (event: SlowConnectionEvent) => void | Promise<void>;\n\t/**\n\t * Close the WS the first time a connection crosses `maxBufferedBytes`\n\t * (or the `-1` send threshold). Default `false`. Client will reconnect\n\t * and re-hydrate.\n\t *\n\t * Added in 1.14.0.\n\t */\n\tcloseOnSlow?: boolean;\n\t/**\n\t * Wire-format serializer (1.16.0). Default `jsonSerializer` —\n\t * preserves the pre-1.16 behavior. Both ends of the connection MUST\n\t * use the same serializer; opt into a binary one (msgpack, cbor, or\n\t * a custom layout) on BOTH this plugin AND the client to cut the\n\t * bandwidth + parse CPU.\n\t */\n\tserializer?: FrameSerializer;\n};\n\ntype TrackedConnection = {\n\tconnection: SyncConnection;\n\tslowSignaled: boolean;\n};\n\n/**\n * Elysia WebSocket plugin for the sync engine. One socket multiplexes any\n * number of collection subscriptions: the client sends `subscribe` /\n * `unsubscribe` frames and receives `snapshot` / `diff` / `error` frames\n * (see {@link createSyncConnection}). Mount once and drive\n * `engine.applyChange` from your mutations.\n *\n * Uses Elysia's first-class `.ws()` rather than a hand-rolled stream — the\n * bidirectional channel carries both subscriptions and mutations, and\n * `ws.send` serializes frames for us.\n *\n * 1.14.0 adds WS-layer slow-client detection — see `maxBufferedBytes` /\n * `onSlow` / `closeOnSlow`.\n */\nexport const syncSocket = ({\n\tengine,\n\tpath = '/sync/ws',\n\tresolveContext,\n\tpresence,\n\tmaxBufferedBytes,\n\tonSlow,\n\tcloseOnSlow = false,\n\tserializer = jsonSerializer\n}: SyncSocketOptions) => {\n\tconst connections = new Map<string, TrackedConnection>();\n\tconst threshold = maxBufferedBytes ?? Infinity;\n\n\tconst fireSlow = (event: SlowConnectionEvent) => {\n\t\tif (!onSlow) return;\n\t\ttry {\n\t\t\tconst ret = onSlow(event);\n\t\t\tif (ret && typeof (ret as Promise<void>).then === 'function') {\n\t\t\t\t(ret as Promise<void>).catch((error) => {\n\t\t\t\t\tconsole.error('[sync/socket] onSlow rejected:', error);\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[sync/socket] onSlow threw:', error);\n\t\t}\n\t};\n\n\treturn new Elysia({ name: '@absolutejs/sync/socket' }).ws(path, {\n\t\tasync open(ws) {\n\t\t\
|
|
8
|
+
"import { Elysia } from 'elysia';\nimport { createSyncConnection } from './connection';\nimport type { SyncConnection, SyncConnectionStats } from './connection';\nimport type { PresenceHub } from './presence';\nimport type { SyncEngine } from './syncEngine';\nimport type { FrameSerializer } from '../serializer';\nimport { jsonSerializer } from '../serializer';\n\n/**\n * Diagnostic surfaced via {@link SyncSocketOptions.onSlow} when a connection\n * trips the WS backpressure threshold. The host can log, kick, or charge the\n * tenant extra via the meter.\n */\nexport type SlowConnectionEvent = {\n\t/** Stable per-connection id from Elysia's `ws.id`. */\n\twsId: string;\n\t/** Bytes the WS currently has queued waiting to send. */\n\tbufferedAmount: number;\n\t/** Per-connection counters at the moment of detection. */\n\tstats: SyncConnectionStats;\n\t/** Why the event fired. */\n\treason: 'buffer-threshold' | 'send-backpressure';\n};\n\nexport type SyncSocketOptions = {\n\t/** The sync engine whose collections this socket serves. */\n\tengine: SyncEngine;\n\t/** WebSocket route. Defaults to `/sync/ws`. */\n\tpath?: string;\n\t/** Optional presence hub; enables `presence-*` frames on this socket. */\n\tpresence?: PresenceHub;\n\t/**\n\t * Build the per-connection auth context from the upgrade request data\n\t * (`ws.data`: query, headers, cookies, and anything you `derive`d/`resolve`d\n\t * earlier in the chain). Whatever you return is the `ctx` passed to every\n\t * collection's `authorize`/`hydrate`/`match`. Defaults to an empty object.\n\t */\n\tresolveContext?: (\n\t\tdata: Record<string, unknown>\n\t) => unknown | Promise<unknown>;\n\t/**\n\t * Bytes threshold for the per-connection WS send buffer. When\n\t * `ws.getBufferedAmount()` exceeds this, `onSlow` fires once per\n\t * crossing. Default `Infinity` (disabled).\n\t *\n\t * Added in 1.14.0.\n\t */\n\tmaxBufferedBytes?: number;\n\t/**\n\t * Fired when the per-connection WS buffer crosses `maxBufferedBytes`, OR\n\t * when `ws.send()` returns `-1` (Bun's backpressure signal). The signal\n\t * re-arms once the WS reports `drain`. Pair with `closeOnSlow: true` to\n\t * kick slow clients automatically, or use this hook to charge the\n\t * tenant extra via `@absolutejs/metering`.\n\t *\n\t * Added in 1.14.0.\n\t */\n\tonSlow?: (event: SlowConnectionEvent) => void | Promise<void>;\n\t/**\n\t * Close the WS the first time a connection crosses `maxBufferedBytes`\n\t * (or the `-1` send threshold). Default `false`. Client will reconnect\n\t * and re-hydrate.\n\t *\n\t * Added in 1.14.0.\n\t */\n\tcloseOnSlow?: boolean;\n\t/**\n\t * Wire-format serializer (1.16.0). Default `jsonSerializer` —\n\t * preserves the pre-1.16 behavior. Both ends of the connection MUST\n\t * use the same serializer; opt into a binary one (msgpack, cbor, or\n\t * a custom layout) on BOTH this plugin AND the client to cut the\n\t * bandwidth + parse CPU.\n\t */\n\tserializer?: FrameSerializer;\n};\n\ntype TrackedConnection = {\n\t// Null until the async `resolveContext` resolves. Frames that arrive in that\n\t// window are buffered in `pending` and replayed once the connection exists —\n\t// otherwise a client that sends `subscribe` synchronously on open (every\n\t// @absolutejs/sync client does) loses it whenever auth is slow (a DB lookup).\n\tconnection: SyncConnection | null;\n\tpending: unknown[];\n\tslowSignaled: boolean;\n};\n\n/**\n * Elysia WebSocket plugin for the sync engine. One socket multiplexes any\n * number of collection subscriptions: the client sends `subscribe` /\n * `unsubscribe` frames and receives `snapshot` / `diff` / `error` frames\n * (see {@link createSyncConnection}). Mount once and drive\n * `engine.applyChange` from your mutations.\n *\n * Uses Elysia's first-class `.ws()` rather than a hand-rolled stream — the\n * bidirectional channel carries both subscriptions and mutations, and\n * `ws.send` serializes frames for us.\n *\n * 1.14.0 adds WS-layer slow-client detection — see `maxBufferedBytes` /\n * `onSlow` / `closeOnSlow`.\n */\nexport const syncSocket = ({\n\tengine,\n\tpath = '/sync/ws',\n\tresolveContext,\n\tpresence,\n\tmaxBufferedBytes,\n\tonSlow,\n\tcloseOnSlow = false,\n\tserializer = jsonSerializer\n}: SyncSocketOptions) => {\n\tconst connections = new Map<string, TrackedConnection>();\n\tconst threshold = maxBufferedBytes ?? Infinity;\n\n\tconst fireSlow = (event: SlowConnectionEvent) => {\n\t\tif (!onSlow) return;\n\t\ttry {\n\t\t\tconst ret = onSlow(event);\n\t\t\tif (ret && typeof (ret as Promise<void>).then === 'function') {\n\t\t\t\t(ret as Promise<void>).catch((error) => {\n\t\t\t\t\tconsole.error('[sync/socket] onSlow rejected:', error);\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[sync/socket] onSlow threw:', error);\n\t\t}\n\t};\n\n\treturn new Elysia({ name: '@absolutejs/sync/socket' }).ws(path, {\n\t\tasync open(ws) {\n\t\t\t// Permissive shape: we read `getBufferedAmount` + `close` if the\n\t\t\t// runtime supports them (Bun's ServerWebSocket does) — fall back\n\t\t\t// silently for test fakes. Accepts both string and Uint8Array\n\t\t\t// payloads (binary serializers via 1.16.0).\n\t\t\tconst bunWs = ws as unknown as {\n\t\t\t\tid: string;\n\t\t\t\tsend: (data: string | Uint8Array | ArrayBuffer) => number;\n\t\t\t\tgetBufferedAmount?: () => number;\n\t\t\t\tclose?: () => void;\n\t\t\t};\n\n\t\t\t// Register synchronously BEFORE awaiting `resolveContext`, so frames\n\t\t\t// that arrive during the (possibly slow) auth resolve are buffered in\n\t\t\t// `pending` rather than dropped (the `message` handler queues them\n\t\t\t// when `connection` is still null).\n\t\t\tconst tracked: TrackedConnection = {\n\t\t\t\tconnection: null,\n\t\t\t\tpending: [],\n\t\t\t\tslowSignaled: false\n\t\t\t};\n\t\t\tconnections.set(bunWs.id, tracked);\n\n\t\t\tconst ctx = resolveContext\n\t\t\t\t? await resolveContext(ws.data as Record<string, unknown>)\n\t\t\t\t: {};\n\n\t\t\tconst connection = createSyncConnection({\n\t\t\t\tengine,\n\t\t\t\tctx,\n\t\t\t\tpresence,\n\t\t\t\tserializer,\n\t\t\t\tsend: (frame) => {\n\t\t\t\t\tconst payload = serializer.encodeServer(frame);\n\t\t\t\t\tconst ret = bunWs.send(\n\t\t\t\t\t\ttypeof payload === 'string'\n\t\t\t\t\t\t\t? payload\n\t\t\t\t\t\t\t: (payload as Uint8Array)\n\t\t\t\t\t);\n\t\t\t\t\tconst buffered = bunWs.getBufferedAmount?.() ?? 0;\n\n\t\t\t\t\tconst overBuffer = buffered > threshold;\n\t\t\t\t\tconst backpressure = ret === -1;\n\t\t\t\t\tif ((overBuffer || backpressure) && !tracked.slowSignaled) {\n\t\t\t\t\t\ttracked.slowSignaled = true;\n\t\t\t\t\t\tfireSlow({\n\t\t\t\t\t\t\tbufferedAmount: buffered,\n\t\t\t\t\t\t\treason: backpressure\n\t\t\t\t\t\t\t\t? 'send-backpressure'\n\t\t\t\t\t\t\t\t: 'buffer-threshold',\n\t\t\t\t\t\t\tstats: connection.stats(),\n\t\t\t\t\t\t\twsId: bunWs.id\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (closeOnSlow) bunWs.close?.();\n\t\t\t\t\t}\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// The socket may have closed while we were awaiting auth.\n\t\t\tif (!connections.has(bunWs.id)) {\n\t\t\t\tconnection.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttracked.connection = connection;\n\t\t\t// Replay anything that arrived before auth resolved, in order.\n\t\t\tconst buffered = tracked.pending;\n\t\t\ttracked.pending = [];\n\t\t\tfor (const frame of buffered) {\n\t\t\t\tawait connection.handle(frame);\n\t\t\t}\n\t\t},\n\t\tasync message(ws, message) {\n\t\t\tconst tracked = connections.get(ws.id);\n\t\t\tif (!tracked) return;\n\t\t\tif (tracked.connection) {\n\t\t\t\tawait tracked.connection.handle(message);\n\t\t\t} else {\n\t\t\t\ttracked.pending.push(message);\n\t\t\t}\n\t\t},\n\t\tdrain(ws) {\n\t\t\t// WS buffer cleared — re-arm slow-client detection so the next\n\t\t\t// over-threshold event fires onSlow again.\n\t\t\tconst tracked = connections.get(ws.id);\n\t\t\tif (tracked) tracked.slowSignaled = false;\n\t\t},\n\t\tclose(ws) {\n\t\t\tconst tracked = connections.get(ws.id);\n\t\t\tif (tracked) {\n\t\t\t\ttracked.connection?.close();\n\t\t\t\tconnections.delete(ws.id);\n\t\t\t}\n\t\t}\n\t});\n};\n",
|
|
9
9
|
"import type { ClientFrame, ServerFrame } from './engine/connection';\n\n/**\n * Wire-format adapter (1.16.0). The engine and client default to JSON, but\n * for high-throughput deployments — a customer pushing 1 MB initial\n * snapshots, a tenant fan-out hitting 100k frames/sec — a binary serializer\n * (msgpack, cbor, or a custom tagged layout) cuts both bandwidth and\n * parse-side CPU.\n *\n * Both ends of the connection MUST use the same serializer. The default\n * `jsonSerializer` keeps every existing client + server pair working\n * unchanged; opt in to a different one on BOTH `syncSocket` and the client\n * lib to gain the win.\n *\n * The serializer only handles the wire format. Frame-shape validation\n * stays in the engine (`parseFrame` in connection.ts) — it runs on the\n * decoded object, so the same validation works for JSON, msgpack, etc.\n */\nexport type FrameSerializer = {\n\t/** Server→client: encode an outgoing `ServerFrame` for transport. */\n\tencodeServer: (frame: ServerFrame) => string | ArrayBufferLike | Uint8Array;\n\t/** Client→server: encode an outgoing `ClientFrame` for transport. */\n\tencodeClient: (frame: ClientFrame) => string | ArrayBufferLike | Uint8Array;\n\t/**\n\t * Deserialize a wire payload into a raw object. Return `null` for\n\t * unparseable input — the engine's validation step turns that into\n\t * a protocol error.\n\t */\n\tdecode: (raw: unknown) => unknown;\n};\n\n/**\n * Default JSON serializer — what `@absolutejs/sync` has always shipped.\n * Strings go through `JSON.parse`; already-parsed objects pass through\n * (some WS adapters auto-decode). `Uint8Array` / `ArrayBuffer` get\n * UTF-8 decoded first (binary WS frames carrying JSON text).\n */\nexport const jsonSerializer: FrameSerializer = {\n\tdecode: (raw: unknown): unknown => {\n\t\tif (typeof raw === 'string') {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(raw);\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tif (raw instanceof Uint8Array) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(new TextDecoder().decode(raw));\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tif (raw instanceof ArrayBuffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\tnew TextDecoder().decode(new Uint8Array(raw))\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn raw;\n\t},\n\tencodeClient: (frame: ClientFrame): string => JSON.stringify(frame),\n\tencodeServer: (frame: ServerFrame): string => JSON.stringify(frame)\n};\n",
|
|
10
10
|
"import type { PresenceHandle, PresenceHub, PresenceMember } from './presence';\nimport type { Subscription, SyncEngine } from './syncEngine';\nimport type { FrameSerializer } from '../serializer';\nimport { jsonSerializer } from '../serializer';\n\n/**\n * Wire protocol for the sync-engine WebSocket. One connection multiplexes many\n * collection subscriptions, each tagged with a client-chosen `id`.\n */\n\n/** Client → server. */\nexport type ClientFrame =\n\t| {\n\t\t\ttype: 'subscribe';\n\t\t\tid: string;\n\t\t\tcollection: string;\n\t\t\tparams?: unknown;\n\t\t\t/**\n\t\t\t * Resume from a point already applied (catch-up instead of snapshot).\n\t\t\t *\n\t\t\t * Accepts either:\n\t\t\t * - `number` (pre-1.18 legacy) — the version of THIS engine instance.\n\t\t\t * - `string` (1.17.0+ cursor) — an opaque cross-instance resume\n\t\t\t * cursor returned by the server on prior snapshot/diff/frame.\n\t\t\t * The client round-trips it unmodified.\n\t\t\t */\n\t\t\tsince?: number | string;\n\t }\n\t| { type: 'unsubscribe'; id: string }\n\t| { type: 'mutate'; mutationId: number; name: string; args?: unknown }\n\t| { type: 'presence-join'; room: string; memberId: string; state: unknown }\n\t| { type: 'presence-set'; room: string; state: unknown }\n\t| { type: 'presence-leave'; room: string };\n\n/** One subscription's delta within a {@link ServerFrame} `frame`. */\nexport type FrameDiff<T = unknown> = {\n\tid: string;\n\tadded: T[];\n\tremoved: T[];\n\tchanged: T[];\n};\n\n/**\n * Server → client. `version` is THIS engine's local change-feed watermark.\n * `cursor` (1.17.0+) is an opaque cross-instance resume cursor — round-trip\n * it on `subscribe.since` to resume across cluster shards.\n */\nexport type ServerFrame<T = unknown> =\n\t| {\n\t\t\ttype: 'snapshot';\n\t\t\tid: string;\n\t\t\trows: T[];\n\t\t\tversion?: number;\n\t\t\tcursor?: string;\n\t }\n\t| {\n\t\t\ttype: 'diff';\n\t\t\tid: string;\n\t\t\tadded: T[];\n\t\t\tremoved: T[];\n\t\t\tchanged: T[];\n\t\t\tversion?: number;\n\t\t\tcursor?: string;\n\t }\n\t| {\n\t\t\t// One atomic batch (e.g. a transactional mutation) that touched several\n\t\t\t// subscriptions — bundled into one message so the client applies them in\n\t\t\t// a single frame, never showing a torn cross-collection intermediate.\n\t\t\ttype: 'frame';\n\t\t\tversion?: number;\n\t\t\tcursor?: string;\n\t\t\tdiffs: FrameDiff<T>[];\n\t }\n\t| {\n\t\t\t// A presence room changed: members joined, updated state, or left.\n\t\t\ttype: 'presence';\n\t\t\troom: string;\n\t\t\tjoined: PresenceMember<T>[];\n\t\t\tupdated: PresenceMember<T>[];\n\t\t\tleft: string[];\n\t }\n\t| { type: 'error'; id?: string; message: string }\n\t| { type: 'ack'; mutationId: number; result?: unknown }\n\t| { type: 'reject'; mutationId: number; message: string };\n\nexport type SyncConnectionOptions = {\n\tengine: SyncEngine;\n\t/** Resolved auth context for this connection; passed to every subscribe. */\n\tctx: unknown;\n\t/**\n\t * Send a frame to the client (the transport serializes it). May return\n\t * a number — by convention `-1` signals transport-layer backpressure (the\n\t * value Bun's `ws.send()` returns when the WS buffer is full). The\n\t * connection tracks consecutive `-1` returns and surfaces them via\n\t * `connection.stats().slowSendsRecent`. Legacy `void`-returning sends\n\t * keep working unchanged.\n\t *\n\t * NOTE: 1.16.0 — `send` receives the typed `ServerFrame`. The connection\n\t * does NOT pre-serialize; the WS adapter (`syncSocket`) wraps `send` to\n\t * call `serializer.encodeServer(frame)` before `ws.send(...)`. This keeps\n\t * the connection layer transport-agnostic.\n\t */\n\tsend: (frame: ServerFrame) => void | number;\n\t/** Optional presence hub; enables the `presence-*` frames (see createPresenceHub). */\n\tpresence?: PresenceHub;\n\t/**\n\t * Wire-format serializer (1.16.0). Defaults to `jsonSerializer` —\n\t * the historical JSON-over-WS behavior. Both ends of the connection\n\t * MUST use the same serializer; pair this option with the matching\n\t * client-side `serializer` to opt into binary frames.\n\t */\n\tserializer?: FrameSerializer;\n};\n\n/**\n * Connection-level operational counters surfaced via {@link SyncConnection.stats}.\n * Pair with the WS adapter's own backpressure signal for end-to-end slow-client\n * detection.\n */\nexport type SyncConnectionStats = {\n\t/** Active subscriptions on this connection. */\n\tsubscriptionCount: number;\n\t/** Active presence-room memberships on this connection. */\n\tpresenceRoomCount: number;\n\t/** Frames successfully sent (non-backpressure return) since the connection opened. */\n\tframesSent: number;\n\t/** Consecutive `-1` (backpressure) returns from `send` since the last successful send. */\n\tslowSendsRecent: number;\n};\n\nexport type SyncConnection = {\n\t/** Handle one client frame (a parsed object or a raw JSON string). */\n\thandle: (raw: unknown) => Promise<void>;\n\t/** Tear down every subscription on this connection (call on socket close). */\n\tclose: () => void;\n\t/**\n\t * Point-in-time connection counters — subscription count, frames sent, and\n\t * how many consecutive `send` calls came back with the transport's backpressure\n\t * signal. Cheap; safe to call from a metering loop.\n\t *\n\t * Added in 1.14.0.\n\t */\n\tstats: () => SyncConnectionStats;\n};\n\nconst parseFrame = (\n\traw: unknown,\n\tserializer: FrameSerializer\n): ClientFrame | undefined => {\n\t// 1.16.0: hand off the wire decode to the serializer (default JSON).\n\t// The shape validation below is identical regardless of wire format —\n\t// the serializer just produces an object, we walk it for type safety.\n\tlet value: unknown = raw;\n\tif (\n\t\ttypeof value === 'string' ||\n\t\tvalue instanceof Uint8Array ||\n\t\tvalue instanceof ArrayBuffer\n\t) {\n\t\tvalue = serializer.decode(raw);\n\t\tif (value === null) return undefined;\n\t}\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn undefined;\n\t}\n\tconst frame = value as {\n\t\ttype?: unknown;\n\t\tid?: unknown;\n\t\tcollection?: unknown;\n\t\tparams?: unknown;\n\t\tsince?: unknown;\n\t\tmutationId?: unknown;\n\t\tname?: unknown;\n\t\targs?: unknown;\n\t\troom?: unknown;\n\t\tmemberId?: unknown;\n\t\tstate?: unknown;\n\t};\n\tif (frame.type === 'subscribe') {\n\t\t// 1.17.0+: `since` accepts a number (legacy local-version) OR an\n\t\t// opaque cursor string. Drop anything else.\n\t\tconst since =\n\t\t\ttypeof frame.since === 'number' || typeof frame.since === 'string'\n\t\t\t\t? frame.since\n\t\t\t\t: undefined;\n\t\treturn typeof frame.id === 'string' &&\n\t\t\ttypeof frame.collection === 'string'\n\t\t\t? {\n\t\t\t\t\ttype: 'subscribe',\n\t\t\t\t\tid: frame.id,\n\t\t\t\t\tcollection: frame.collection,\n\t\t\t\t\tparams: frame.params,\n\t\t\t\t\tsince\n\t\t\t\t}\n\t\t\t: undefined;\n\t}\n\tif (frame.type === 'unsubscribe') {\n\t\treturn typeof frame.id === 'string'\n\t\t\t? { type: 'unsubscribe', id: frame.id }\n\t\t\t: undefined;\n\t}\n\tif (frame.type === 'mutate') {\n\t\treturn typeof frame.mutationId === 'number' &&\n\t\t\ttypeof frame.name === 'string'\n\t\t\t? {\n\t\t\t\t\ttype: 'mutate',\n\t\t\t\t\tmutationId: frame.mutationId,\n\t\t\t\t\tname: frame.name,\n\t\t\t\t\targs: frame.args\n\t\t\t\t}\n\t\t\t: undefined;\n\t}\n\tif (frame.type === 'presence-join') {\n\t\treturn typeof frame.room === 'string' &&\n\t\t\ttypeof frame.memberId === 'string'\n\t\t\t? {\n\t\t\t\t\ttype: 'presence-join',\n\t\t\t\t\troom: frame.room,\n\t\t\t\t\tmemberId: frame.memberId,\n\t\t\t\t\tstate: frame.state\n\t\t\t\t}\n\t\t\t: undefined;\n\t}\n\tif (frame.type === 'presence-set') {\n\t\treturn typeof frame.room === 'string'\n\t\t\t? { type: 'presence-set', room: frame.room, state: frame.state }\n\t\t\t: undefined;\n\t}\n\tif (frame.type === 'presence-leave') {\n\t\treturn typeof frame.room === 'string'\n\t\t\t? { type: 'presence-leave', room: frame.room }\n\t\t\t: undefined;\n\t}\n\treturn undefined;\n};\n\n/**\n * The per-connection protocol handler — transport-agnostic glue between a single\n * client socket and the {@link SyncEngine}. It owns that connection's\n * subscriptions: a `subscribe` frame authorizes + hydrates and replies with a\n * `snapshot`, then streams `diff` frames; `unsubscribe`/`close` release views.\n *\n * Pure (no WebSocket import) so it can be unit-tested with a fake `send`; the\n * Elysia `syncSocket` plugin is the thin adapter that feeds it socket events.\n */\nexport const createSyncConnection = ({\n\tengine,\n\tctx,\n\tsend: rawSend,\n\tpresence,\n\tserializer = jsonSerializer\n}: SyncConnectionOptions): SyncConnection => {\n\tconst subscriptions = new Map<string, Subscription<unknown>>();\n\t// This connection's presence memberships (one per room), torn down on close.\n\tconst presenceRooms = new Map<string, PresenceHandle<unknown>>();\n\n\t// 1.14.0: track transport-layer backpressure. `send` may return -1 (Bun's\n\t// WS backpressure signal) — accumulate consecutive `-1`s so the host can\n\t// detect a slow client; reset to 0 on any non-backpressure return.\n\tlet framesSent = 0;\n\tlet slowSendsRecent = 0;\n\tconst send = (frame: ServerFrame) => {\n\t\tconst ret = rawSend(frame);\n\t\tif (ret === -1) {\n\t\t\tslowSendsRecent += 1;\n\t\t} else {\n\t\t\tframesSent += 1;\n\t\t\tslowSendsRecent = 0;\n\t\t}\n\t};\n\n\t// Diffs from one atomic batch (a mutation, or a single applyChange) arrive via\n\t// onDiff synchronously and share a version. Buffer them and flush as one\n\t// message: a lone diff stays a plain `diff` (so single-collection clients are\n\t// unchanged); several become one `frame` the client applies atomically.\n\tlet pending: FrameDiff[] = [];\n\tlet pendingVersion: number | undefined;\n\t// 1.18.0: the cursor that came alongside the in-flight diff batch. We\n\t// forward it on the wire so clients can resume across cluster shards.\n\tlet pendingCursor: string | undefined;\n\tlet flushScheduled = false;\n\n\tconst flush = () => {\n\t\tif (pending.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst diffs = pending;\n\t\tconst version = pendingVersion;\n\t\tconst cursor = pendingCursor;\n\t\tpending = [];\n\t\tpendingVersion = undefined;\n\t\tpendingCursor = undefined;\n\t\tif (diffs.length === 1) {\n\t\t\tconst only = diffs[0]!;\n\t\t\tsend({\n\t\t\t\ttype: 'diff',\n\t\t\t\tid: only.id,\n\t\t\t\tadded: only.added,\n\t\t\t\tremoved: only.removed,\n\t\t\t\tchanged: only.changed,\n\t\t\t\tversion,\n\t\t\t\tcursor\n\t\t\t});\n\t\t} else {\n\t\t\tsend({ type: 'frame', diffs, version, cursor });\n\t\t}\n\t};\n\n\tconst scheduleFlush = () => {\n\t\tif (flushScheduled) {\n\t\t\treturn;\n\t\t}\n\t\tflushScheduled = true;\n\t\tqueueMicrotask(() => {\n\t\t\tflushScheduled = false;\n\t\t\tflush();\n\t\t});\n\t};\n\n\tconst bufferDiff = (\n\t\tdiff: FrameDiff,\n\t\tdiffVersion: number,\n\t\tcursor?: string\n\t) => {\n\t\t// A new version means a new batch — flush the previous one first.\n\t\tif (pending.length > 0 && pendingVersion !== diffVersion) {\n\t\t\tflush();\n\t\t}\n\t\tpending.push(diff);\n\t\tpendingVersion = diffVersion;\n\t\t// Cursor for the in-flight batch — same cursor for every diff sharing\n\t\t// `diffVersion` (the engine emits them with one currentCursor() call).\n\t\tif (cursor !== undefined) pendingCursor = cursor;\n\t\tscheduleFlush();\n\t};\n\n\tconst handle = async (raw: unknown) => {\n\t\tconst frame = parseFrame(raw, serializer);\n\t\tif (frame === undefined) {\n\t\t\tsend({ type: 'error', message: 'Malformed sync frame' });\n\t\t\treturn;\n\t\t}\n\n\t\tif (frame.type === 'mutate') {\n\t\t\ttry {\n\t\t\t\tconst result = await engine.runMutation(\n\t\t\t\t\tframe.name,\n\t\t\t\t\tframe.args,\n\t\t\t\t\tctx\n\t\t\t\t);\n\t\t\t\t// The mutation's diffs were buffered during runMutation; flush them\n\t\t\t\t// (as one frame) before the ack so the ack always arrives after.\n\t\t\t\tflush();\n\t\t\t\tsend({ type: 'ack', mutationId: frame.mutationId, result });\n\t\t\t} catch (error) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: 'reject',\n\t\t\t\t\tmutationId: frame.mutationId,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error)\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (frame.type === 'unsubscribe') {\n\t\t\tsubscriptions.get(frame.id)?.unsubscribe();\n\t\t\tsubscriptions.delete(frame.id);\n\t\t\treturn;\n\t\t}\n\n\t\tif (frame.type === 'presence-join') {\n\t\t\tif (presence === undefined) {\n\t\t\t\tsend({ type: 'error', message: 'Presence is not enabled' });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// A re-join replaces the prior membership for this room.\n\t\t\tpresenceRooms.get(frame.room)?.leave();\n\t\t\tconst handle = presence.join(\n\t\t\t\tframe.room,\n\t\t\t\tframe.memberId,\n\t\t\t\tframe.state,\n\t\t\t\t(diff) => {\n\t\t\t\t\tsend({\n\t\t\t\t\t\ttype: 'presence',\n\t\t\t\t\t\troom: frame.room,\n\t\t\t\t\t\tjoined: diff.joined,\n\t\t\t\t\t\tupdated: diff.updated,\n\t\t\t\t\t\tleft: diff.left\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t\tpresenceRooms.set(frame.room, handle);\n\t\t\t// Initial snapshot to the joiner (peers got a `joined` diff instead).\n\t\t\tsend({\n\t\t\t\ttype: 'presence',\n\t\t\t\troom: frame.room,\n\t\t\t\tjoined: handle.members,\n\t\t\t\tupdated: [],\n\t\t\t\tleft: []\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (frame.type === 'presence-set') {\n\t\t\tpresenceRooms.get(frame.room)?.set(frame.state);\n\t\t\treturn;\n\t\t}\n\n\t\tif (frame.type === 'presence-leave') {\n\t\t\tpresenceRooms.get(frame.room)?.leave();\n\t\t\tpresenceRooms.delete(frame.room);\n\t\t\treturn;\n\t\t}\n\n\t\tif (subscriptions.has(frame.id)) {\n\t\t\tsend({\n\t\t\t\ttype: 'error',\n\t\t\t\tid: frame.id,\n\t\t\t\tmessage: `Subscription id \"${frame.id}\" already in use`\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst subscription = await engine.subscribe({\n\t\t\t\tcollection: frame.collection,\n\t\t\t\tparams: frame.params,\n\t\t\t\tctx,\n\t\t\t\tsince: frame.since,\n\t\t\t\tonDiff: (diff, diffVersion, cursor) => {\n\t\t\t\t\tbufferDiff(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: frame.id,\n\t\t\t\t\t\t\tadded: diff.added,\n\t\t\t\t\t\t\tremoved: diff.removed,\n\t\t\t\t\t\t\tchanged: diff.changed\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdiffVersion,\n\t\t\t\t\t\tcursor\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\tsubscriptions.set(frame.id, subscription);\n\t\t\t// No await between subscribe resolving and this send, so the initial\n\t\t\t// reply always precedes any diff for this subscription.\n\t\t\tif (subscription.catchup !== undefined) {\n\t\t\t\t// Resumed: a catch-up diff applied on top of the client's set.\n\t\t\t\tsend({\n\t\t\t\t\ttype: 'diff',\n\t\t\t\t\tid: frame.id,\n\t\t\t\t\tadded: subscription.catchup.added,\n\t\t\t\t\tremoved: subscription.catchup.removed,\n\t\t\t\t\tchanged: subscription.catchup.changed,\n\t\t\t\t\tversion: subscription.version,\n\t\t\t\t\tcursor: subscription.cursor\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tsend({\n\t\t\t\t\ttype: 'snapshot',\n\t\t\t\t\tid: frame.id,\n\t\t\t\t\trows: subscription.initial,\n\t\t\t\t\tversion: subscription.version,\n\t\t\t\t\tcursor: subscription.cursor\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsend({\n\t\t\t\ttype: 'error',\n\t\t\t\tid: frame.id,\n\t\t\t\tmessage: error instanceof Error ? error.message : String(error)\n\t\t\t});\n\t\t}\n\t};\n\n\tconst close = () => {\n\t\tfor (const subscription of subscriptions.values()) {\n\t\t\tsubscription.unsubscribe();\n\t\t}\n\t\tsubscriptions.clear();\n\t\t// Drop this connection's presence so peers see it leave (auto-cleanup).\n\t\tfor (const handle of presenceRooms.values()) {\n\t\t\thandle.leave();\n\t\t}\n\t\tpresenceRooms.clear();\n\t};\n\n\tconst stats = (): SyncConnectionStats => ({\n\t\tframesSent,\n\t\tpresenceRoomCount: presenceRooms.size,\n\t\tslowSendsRecent,\n\t\tsubscriptionCount: subscriptions.size\n\t});\n\n\treturn { close, handle, stats };\n};\n",
|
|
11
11
|
"// @bun\n// src/index.ts\nvar SpanKind = {\n INTERNAL: 0,\n SERVER: 1,\n CLIENT: 2,\n PRODUCER: 3,\n CONSUMER: 4\n};\nvar SpanStatusCode = {\n UNSET: 0,\n OK: 1,\n ERROR: 2\n};\nvar NOOP_SPAN_CONTEXT = {\n spanId: \"0000000000000000\",\n traceFlags: 0,\n traceId: \"00000000000000000000000000000000\"\n};\nvar noopSpan = {\n addEvent: () => noopSpan,\n end: () => {},\n isRecording: () => false,\n recordException: () => {},\n setAttribute: () => noopSpan,\n setAttributes: () => noopSpan,\n setStatus: () => noopSpan,\n spanContext: () => NOOP_SPAN_CONTEXT,\n updateName: () => noopSpan\n};\nvar createNoopSpan = () => noopSpan;\nvar startActiveSpanNoop = (_name, optionsOrFn, maybeFn) => {\n const fn = typeof optionsOrFn === \"function\" ? optionsOrFn : maybeFn;\n return fn(noopSpan);\n};\nvar noopTracer = {\n startActiveSpan: startActiveSpanNoop,\n startSpan: () => noopSpan\n};\nvar createNoopTracer = () => noopTracer;\nvar createNoopTracerProvider = () => ({\n getTracer: () => noopTracer\n});\nvar tracerOrNoop = (provider, name, version) => provider !== undefined ? provider.getTracer(name, version) : noopTracer;\nvar ABS_ATTRS = {\n tenant: \"abs.tenant\",\n shardId: \"abs.shard.id\",\n engineId: \"abs.engine.id\",\n collection: \"abs.collection\",\n mutation: \"abs.mutation\",\n mutationAttempt: \"abs.mutation.attempt\",\n subscriptionId: \"abs.subscription.id\",\n batchSize: \"abs.batch.size\",\n clusterMessageOrigin: \"abs.cluster.origin\",\n jobId: \"abs.job.id\",\n jobKind: \"abs.job.kind\",\n jobAttempt: \"abs.job.attempt\",\n jobMaxAttempts: \"abs.job.max_attempts\",\n workerId: \"abs.worker.id\",\n runtimeKey: \"abs.runtime.key\",\n runtimePid: \"abs.runtime.pid\",\n runtimePort: \"abs.runtime.port\",\n runtimeExitReason: \"abs.runtime.exit_reason\",\n runtimeReadinessMs: \"abs.runtime.readiness_ms\",\n routeShard: \"abs.route.shard\",\n routeDecision: \"abs.route.decision\",\n secretName: \"abs.secret.name\",\n secretFingerprint: \"abs.secret.fingerprint\",\n auditKind: \"abs.audit.kind\"\n};\nvar withSpan = async (tracer, name, options, fn) => tracer.startActiveSpan(name, options, async (span) => {\n try {\n const result = await fn(span);\n span.setStatus({ code: SpanStatusCode.OK });\n return result;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : String(error)\n });\n span.recordException(error);\n throw error;\n } finally {\n span.end();\n }\n});\nvar withSpanSync = (tracer, name, options, fn) => tracer.startActiveSpan(name, options, (span) => {\n try {\n const result = fn(span);\n span.setStatus({ code: SpanStatusCode.OK });\n return result;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : String(error)\n });\n span.recordException(error);\n throw error;\n } finally {\n span.end();\n }\n});\nexport {\n withSpanSync,\n withSpan,\n tracerOrNoop,\n createNoopTracerProvider,\n createNoopTracer,\n createNoopSpan,\n SpanStatusCode,\n SpanKind,\n ABS_ATTRS\n};\n\n//# debugId=3038092490E875A764756E2164756E21\n//# sourceMappingURL=index.js.map\n",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"import { Elysia } from 'elysia';\nimport type { SyncEngine } from './engine/syncEngine';\nimport type { EngineActivity } from './engine/devtools';\n\nexport type SyncDevtoolsOptions = {\n\t/** The engine to inspect. */\n\tengine: SyncEngine;\n\t/** Route the dashboard is served from (its SSE feed is `<path>/stream`). Default `/sync/devtools`. */\n\tpath?: string;\n\t/** Snapshot refresh interval (ms) — keeps subscription counts/version current. Default 2000. */\n\tsnapshotMs?: number;\n};\n\nconst dashboardHtml = (\n\tstreamPath: string,\n\treplayPath: string\n) => `<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n<title>@absolutejs/sync devtools</title>\n<style>\n:root{color-scheme:dark}\nbody{margin:0;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;background:#0b0e14;color:#cdd6f4}\nheader{padding:12px 16px;border-bottom:1px solid #1c2230;display:flex;align-items:center;gap:12px}\nheader b{color:#89b4fa}\n.ver{margin-left:auto;color:#a6e3a1}\nmain{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:16px}\nsection{background:#11151f;border:1px solid #1c2230;border-radius:8px;padding:12px;min-width:0}\nh2{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#9399b2}\ntable{width:100%;border-collapse:collapse}\ntd,th{text-align:left;padding:4px 6px;border-bottom:1px solid #1c2230;vertical-align:top}\nth{color:#7f849c;font-weight:600}\n.kind{color:#f9e2af}.tables{color:#94e2d5}.subs{color:#89b4fa;text-align:right}\n.log{grid-column:1/3;max-height:46vh;overflow:auto}\n.row{display:flex;gap:10px;padding:3px 6px;border-bottom:1px solid #161b27}\n.row time{color:#6c7086;flex:0 0 92px}\n.t-change{color:#94e2d5}.t-mutation{color:#cba6f7}.err{color:#f38ba8}\n.pill{padding:0 6px;border-radius:10px;background:#1c2230;flex:0 0 auto}\n.empty{color:#6c7086;padding:6px}\n.replay{grid-column:1/3}\n.replay-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}\n.replay-controls input{background:#0b0e14;border:1px solid #1c2230;color:#cdd6f4;border-radius:4px;padding:4px 6px;font:inherit}\n.replay-controls input[type=\"datetime-local\"]{min-width:200px}\n.replay-controls input[type=\"text\"]{min-width:180px}\n.replay-controls button{background:#89b4fa;border:none;color:#0b0e14;border-radius:4px;padding:5px 12px;font:inherit;font-weight:600;cursor:pointer}\n.replay-controls button:hover{background:#74c7ec}\n.replay-controls button:disabled{background:#1c2230;color:#6c7086;cursor:not-allowed}\n.replay-controls label{color:#7f849c;display:flex;align-items:center;gap:6px}\n.truncated{background:#311b1b;border:1px solid #f38ba8;color:#f38ba8;padding:6px 10px;border-radius:4px;margin-bottom:8px}\n.replay-meta{color:#a6adc8;margin-bottom:8px}\n.replay-meta b{color:#cdd6f4}\n.replay-table{margin-top:10px}\n.replay-table h3{margin:0 0 4px;color:#94e2d5;font-size:12px;font-weight:600}\n.replay-rows pre{margin:0;font-size:11px;color:#a6adc8;background:#0b0e14;border:1px solid #1c2230;border-radius:4px;padding:6px;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-word}\n</style></head>\n<body>\n<header><b>@absolutejs/sync</b> devtools <span id=\"status\" class=\"empty\">connecting…</span><span class=\"ver\">v<span id=\"version\">0</span></span></header>\n<main>\n<section><h2>Collections</h2><table><thead><tr><th>name</th><th>kind</th><th>tables</th><th class=\"subs\">subs</th></tr></thead><tbody id=\"collections\"></tbody></table></section>\n<section><h2>Mutations · Schedules</h2><div id=\"ops\"></div></section>\n<section class=\"replay\"><h2>Point-in-time replay</h2>\n<div class=\"replay-controls\">\n <label>at <input type=\"datetime-local\" id=\"replay-at\" step=\"1\" /></label>\n <label>tables <input type=\"text\" id=\"replay-tables\" placeholder=\"(all if blank — csv)\" /></label>\n <label>max rows per table <input type=\"number\" id=\"replay-max\" value=\"10\" min=\"1\" max=\"500\" style=\"width:64px\" /></label>\n <button id=\"replay-go\">Replay</button>\n <button id=\"replay-now\" type=\"button\" title=\"Set datetime to right now\">Now</button>\n</div>\n<div id=\"replay-result\"><div class=\"empty\">Pick a date+time, optionally filter tables, then click Replay to reconstruct state at that point in the log window.</div></div>\n</section>\n<section class=\"log\"><h2>Activity</h2><div id=\"activity\"><div class=\"empty\">waiting for changes & mutations…</div></div></section>\n</main>\n<script>\nconst $=(id)=>document.getElementById(id);\nconst esc=(s)=>String(s).replace(/[&<>]/g,(c)=>({'&':'&','<':'<','>':'>'}[c]));\nconst renderSnapshot=(s)=>{\n $('version').textContent=s.version;\n $('collections').innerHTML=s.collections.length?s.collections.map((c)=>\n '<tr><td>'+esc(c.name)+'</td><td class=\"kind\">'+esc(c.kind)+'</td><td class=\"tables\">'+esc(c.tables.join(', ')||'—')+'</td><td class=\"subs\">'+c.subscriptions+'</td></tr>').join(''):'<tr><td colspan=\"4\" class=\"empty\">none registered</td></tr>';\n $('ops').innerHTML=\n '<p><b>mutations</b> '+(s.mutations.map(esc).join(', ')||'<span class=\"empty\">none</span>')+'</p>'+\n '<p><b>schedules</b> '+(s.schedules.map((x)=>esc(x.name)+' <span class=\"pill\">'+esc(x.pattern)+'</span>').join(' ')||'<span class=\"empty\">none</span>')+'</p>'+\n '<p><b>writers</b> '+(s.writers.map(esc).join(', ')||'<span class=\"empty\">none</span>')+'</p>'+\n '<p><b>readers</b> '+(s.readers.map(esc).join(', ')||'<span class=\"empty\">none</span>')+'</p>';\n};\nlet logged=false;\nconst logActivity=(a)=>{\n const box=$('activity');\n if(!logged){box.innerHTML='';logged=true;}\n const t=new Date(a.at).toLocaleTimeString();\n const line=a.type==='change'\n ?'<span class=\"t-change\">change</span><span class=\"pill\">'+esc(a.table)+'</span>'+esc(a.op)+' <span class=\"empty\">v'+a.version+'</span>'\n :'<span class=\"t-mutation '+(a.status==='error'?'err':'')+'\">mutation</span><span class=\"pill\">'+esc(a.name)+'</span>'+esc(a.status);\n const row=document.createElement('div');row.className='row';\n row.innerHTML='<time>'+t+'</time><div>'+line+'</div>';\n box.prepend(row);\n while(box.childNodes.length>200)box.removeChild(box.lastChild);\n};\nconst localToMs=(value)=>{\n if(!value)return null;\n const ms=new Date(value).getTime();\n return Number.isFinite(ms)?ms:null;\n};\nconst msToLocal=(ms)=>{\n const d=new Date(ms);\n const pad=(n)=>String(n).padStart(2,'0');\n return d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate())+'T'+pad(d.getHours())+':'+pad(d.getMinutes())+':'+pad(d.getSeconds());\n};\nconst renderReplay=(result, maxRows)=>{\n const box=$('replay-result');\n const tables=Object.keys(result.rows).sort();\n const trunc=result.truncated?'<div class=\"truncated\">⚠ Replay truncated — log retention window doesn\\\\'t cover this timestamp. Result is best-effort, walked forward from the oldest retained entry.</div>':'';\n const meta='<div class=\"replay-meta\">As of <b>version '+result.asOfVersion+'</b> at <b>'+(result.asOfAt?new Date(result.asOfAt).toLocaleString():'(no entries folded)')+'</b></div>';\n if(tables.length===0){\n box.innerHTML=trunc+meta+'<div class=\"empty\">No rows in any table at this timestamp.</div>';\n return;\n }\n const sections=tables.map((t)=>{\n const rows=result.rows[t];\n const total=rows.length;\n const shown=rows.slice(0,maxRows);\n const more=total>maxRows?'<div class=\"empty\">… '+(total-maxRows)+' more rows omitted</div>':'';\n return '<div class=\"replay-table\"><h3>'+esc(t)+' <span class=\"empty\">('+total+' row'+(total===1?'':'s')+')</span></h3><div class=\"replay-rows\"><pre>'+esc(JSON.stringify(shown,null,2))+'</pre>'+more+'</div></div>';\n });\n box.innerHTML=trunc+meta+sections.join('');\n};\nconst doReplay=async()=>{\n const at=localToMs($('replay-at').value);\n if(at===null){alert('Please pick a valid date+time');return;}\n const tables=$('replay-tables').value.split(',').map((s)=>s.trim()).filter(Boolean);\n const maxRows=Math.max(1,Math.min(500,parseInt($('replay-max').value)||10));\n const btn=$('replay-go');btn.disabled=true;btn.textContent='Replaying…';\n try{\n const params=new URLSearchParams();\n params.set('at',String(at));\n if(tables.length>0)params.set('tables',tables.join(','));\n const res=await fetch('${replayPath}?'+params.toString());\n if(!res.ok){throw new Error('HTTP '+res.status);}\n const result=await res.json();\n renderReplay(result,maxRows);\n }catch(e){\n $('replay-result').innerHTML='<div class=\"truncated\">Replay failed: '+esc(e.message)+'</div>';\n }finally{\n btn.disabled=false;btn.textContent='Replay';\n }\n};\n$('replay-go').addEventListener('click',doReplay);\n$('replay-now').addEventListener('click',()=>{$('replay-at').value=msToLocal(Date.now());});\n$('replay-at').value=msToLocal(Date.now()-60*60*1000); // default: 1 hour ago\nconst src=new EventSource('${streamPath}');\nsrc.addEventListener('open',()=>{$('status').textContent='live';$('status').className='';});\nsrc.addEventListener('error',()=>{$('status').textContent='reconnecting…';$('status').className='empty';});\nsrc.addEventListener('snapshot',(e)=>renderSnapshot(JSON.parse(e.data)));\nsrc.addEventListener('activity',(e)=>logActivity(JSON.parse(e.data)));\n</script></body></html>`;\n\n/**\n * Elysia plugin: a live devtools dashboard for a {@link SyncEngine}. Mount it and\n * open `path` in a browser to watch registered collections (kind, source tables,\n * live subscription counts), mutations, schedules, readers/writers, the\n * change-feed version, and a streaming log of changes + mutation outcomes — over\n * Server-Sent Events. Read-only; safe to leave mounted in dev.\n */\nexport const syncDevtools = ({\n\tengine,\n\tpath = '/sync/devtools',\n\tsnapshotMs = 2000\n}: SyncDevtoolsOptions) => {\n\tconst streamPath = `${path}/stream`;\n\tconst replayPath = `${path}/replay`;\n\n\treturn new Elysia({ name: '@absolutejs/sync/devtools' })\n\t\t.get(\n\t\t\tpath,\n\t\t\t() =>\n\t\t\t\tnew Response(dashboardHtml(streamPath, replayPath), {\n\t\t\t\t\theaders: { 'content-type': 'text/html; charset=utf-8' }\n\t\t\t\t})\n\t\t)\n\t\t.get(replayPath, async (context) => {\n\t\t\tconst url = new URL(context.request.url);\n\t\t\tconst atRaw = url.searchParams.get('at');\n\t\t\tconst atMs = atRaw === null ? NaN : Number(atRaw);\n\t\t\tif (!Number.isFinite(atMs)) {\n\t\t\t\treturn new Response(\n\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\terror: 'invalid `at` — must be a numeric ms timestamp'\n\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'content-type': 'application/json; charset=utf-8'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstatus: 400\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst tablesRaw = url.searchParams.get('tables');\n\t\t\tconst tables =\n\t\t\t\ttablesRaw === null || tablesRaw.length === 0\n\t\t\t\t\t? undefined\n\t\t\t\t\t: tablesRaw\n\t\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t\t.map((s) => s.trim())\n\t\t\t\t\t\t\t.filter((s) => s.length > 0);\n\n\t\t\ttry {\n\t\t\t\tconst result = await engine.replayTo(\n\t\t\t\t\ttables === undefined ? { at: atMs } : { at: atMs, tables }\n\t\t\t\t);\n\t\t\t\treturn new Response(JSON.stringify(result), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'cache-control': 'no-store',\n\t\t\t\t\t\t'content-type': 'application/json; charset=utf-8'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn new Response(\n\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\terror:\n\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t\t: String(error)\n\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'content-type': 'application/json; charset=utf-8'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstatus: 500\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t.get(streamPath, (context) => {\n\t\t\tconst encoder = new TextEncoder();\n\t\t\tconst stream = new ReadableStream<Uint8Array>({\n\t\t\t\tstart(controller) {\n\t\t\t\t\tconst write = (chunk: string) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcontroller.enqueue(encoder.encode(chunk));\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// controller already closed by an abort race\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tconst sendSnapshot = () => {\n\t\t\t\t\t\twrite(\n\t\t\t\t\t\t\t`event: snapshot\\ndata: ${JSON.stringify(engine.inspect())}\\n\\n`\n\t\t\t\t\t\t);\n\t\t\t\t\t};\n\t\t\t\t\tconst sendActivity = (event: EngineActivity) => {\n\t\t\t\t\t\twrite(\n\t\t\t\t\t\t\t`event: activity\\ndata: ${JSON.stringify(event)}\\n\\n`\n\t\t\t\t\t\t);\n\t\t\t\t\t};\n\n\t\t\t\t\tsendSnapshot();\n\t\t\t\t\tconst unsubscribe = engine.onActivity(sendActivity);\n\t\t\t\t\tconst snapshot = setInterval(sendSnapshot, snapshotMs);\n\n\t\t\t\t\tcontext.request.signal.addEventListener(\n\t\t\t\t\t\t'abort',\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tclearInterval(snapshot);\n\t\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t// already closed\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ once: true }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn new Response(stream, {\n\t\t\t\theaders: {\n\t\t\t\t\t'cache-control': 'no-cache, no-transform',\n\t\t\t\t\tconnection: 'keep-alive',\n\t\t\t\t\t'content-type': 'text/event-stream',\n\t\t\t\t\t// Tell nginx (and other reverse proxies) not to buffer the\n\t\t\t\t\t// stream — without this it holds chunks back and the SSE\n\t\t\t\t\t// connection tears (ERR_INCOMPLETE_CHUNKED_ENCODING).\n\t\t\t\t\t'x-accel-buffering': 'no'\n\t\t\t\t}\n\t\t\t});\n\t\t});\n};\n",
|
|
22
22
|
"/**\n * Presence — ephemeral, room-scoped state shared over the live socket (who's\n * online, who's typing, cursor positions). Unlike collections it is **not**\n * persisted: it lives only while a member is joined, and a member's state is\n * removed (and peers notified) the moment it leaves or its connection drops.\n *\n * A `room` is any string (a document id, a channel). Each `member` is one\n * participant (typically one connection) with a `state` it owns and updates;\n * everyone in the room sees the member set and its changes.\n */\n\nexport type PresenceMember<S = unknown> = { id: string; state: S };\n\n/** What changed in a room: members that joined, updated state, or left. */\nexport type PresenceDiff<S = unknown> = {\n\tjoined: PresenceMember<S>[];\n\tupdated: PresenceMember<S>[];\n\tleft: string[];\n};\n\nexport type PresenceHandle<S> = {\n\t/** The room's members at join time (including this one). */\n\tmembers: PresenceMember<S>[];\n\t/** Replace this member's state and notify the rest of the room. */\n\tset: (state: S) => void;\n\t/** Leave the room (remove this member; notify peers). */\n\tleave: () => void;\n};\n\nexport type PresenceHub = {\n\t/**\n\t * Join `room` as `memberId` with `state`; `onDiff` receives every later change\n\t * to the room (not this member's own join). Returns the current members and\n\t * handles to update/leave.\n\t */\n\tjoin: <S>(\n\t\troom: string,\n\t\tmemberId: string,\n\t\tstate: S,\n\t\tonDiff: (diff: PresenceDiff<S>) => void\n\t) => PresenceHandle<S>;\n\t/** Snapshot a room's members without joining. */\n\tmembers: <S = unknown>(room: string) => PresenceMember<S>[];\n\t/** Number of members in a room (0 if none). */\n\tcount: (room: string) => number;\n};\n\ntype RoomMember = {\n\tstate: unknown;\n\tonDiff: (diff: PresenceDiff<unknown>) => void;\n};\n\n/**\n * Create an in-process presence hub. Transport-agnostic (no socket import): the\n * sync connection wires client `presence-*` frames to it and tears down a\n * connection's memberships on close.\n */\nexport const createPresenceHub = (): PresenceHub => {\n\tconst rooms = new Map<string, Map<string, RoomMember>>();\n\n\tconst roomMembers = (room: string): PresenceMember<unknown>[] => {\n\t\tconst members = rooms.get(room);\n\t\tif (members === undefined) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [...members].map(([id, member]) => ({\n\t\t\tid,\n\t\t\tstate: member.state\n\t\t}));\n\t};\n\n\t/** Notify everyone in `room` except the actor that caused the change. */\n\tconst notify = (\n\t\troom: string,\n\t\tdiff: PresenceDiff<unknown>,\n\t\texceptId: string\n\t) => {\n\t\tconst members = rooms.get(room);\n\t\tif (members === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const [id, member] of members) {\n\t\t\tif (id !== exceptId) {\n\t\t\t\tmember.onDiff(diff);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn {\n\t\tjoin: (room, memberId, state, onDiff) => {\n\t\t\tlet members = rooms.get(room);\n\t\t\tif (members === undefined) {\n\t\t\t\tmembers = new Map();\n\t\t\t\trooms.set(room, members);\n\t\t\t}\n\t\t\tmembers.set(memberId, {\n\t\t\t\tstate,\n\t\t\t\tonDiff: onDiff as (diff: PresenceDiff<unknown>) => void\n\t\t\t});\n\t\t\t// Peers learn this member joined; the joiner gets the snapshot instead.\n\t\t\tnotify(\n\t\t\t\troom,\n\t\t\t\t{ joined: [{ id: memberId, state }], updated: [], left: [] },\n\t\t\t\tmemberId\n\t\t\t);\n\t\t\tconst snapshot = roomMembers(room) as PresenceMember<\n\t\t\t\ttypeof state\n\t\t\t>[];\n\n\t\t\treturn {\n\t\t\t\tmembers: snapshot,\n\t\t\t\tset: (next) => {\n\t\t\t\t\tconst current = rooms.get(room)?.get(memberId);\n\t\t\t\t\tif (current === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcurrent.state = next;\n\t\t\t\t\tnotify(\n\t\t\t\t\t\troom,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tjoined: [],\n\t\t\t\t\t\t\tupdated: [{ id: memberId, state: next }],\n\t\t\t\t\t\t\tleft: []\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmemberId\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tleave: () => {\n\t\t\t\t\tconst roomNow = rooms.get(room);\n\t\t\t\t\tif (roomNow?.delete(memberId) !== true) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnotify(\n\t\t\t\t\t\troom,\n\t\t\t\t\t\t{ joined: [], updated: [], left: [memberId] },\n\t\t\t\t\t\tmemberId\n\t\t\t\t\t);\n\t\t\t\t\tif (roomNow.size === 0) {\n\t\t\t\t\t\trooms.delete(room);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tmembers: (room) => roomMembers(room) as PresenceMember<never>[],\n\t\tcount: (room) => rooms.get(room)?.size ?? 0\n\t};\n};\n"
|
|
23
23
|
],
|
|
24
|
-
"mappings": "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",
|
|
25
|
-
"debugId": "
|
|
24
|
+
"mappings": "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",
|
|
25
|
+
"debugId": "657517E899F8FF7E64756E2164756E21",
|
|
26
26
|
"names": []
|
|
27
27
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absolutejs/sync",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Lightweight reactive-push and write-behind-cache primitives for Elysia and the AbsoluteJS ecosystem — kill polling and keep a remote store off your hot path, without adopting a whole sync-engine backend.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"@modelcontextprotocol/sdk": ">= 1.29.0",
|
|
145
145
|
"@angular/core": ">= 21.0.0",
|
|
146
146
|
"@elysiajs/cron": ">= 1.4.0",
|
|
147
|
-
"drizzle-orm": ">=
|
|
147
|
+
"drizzle-orm": ">=1.0.0-rc.1",
|
|
148
148
|
"elysia": ">= 1.4.26",
|
|
149
149
|
"react": ">= 19.0.0",
|
|
150
150
|
"svelte": ">= 5.0.0",
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
"@tanstack/db": "0.6.7",
|
|
198
198
|
"@types/bun": "latest",
|
|
199
199
|
"@types/react": "^19.2.0",
|
|
200
|
-
"drizzle-orm": "
|
|
200
|
+
"drizzle-orm": "1.0.0-rc.3",
|
|
201
201
|
"elysia": "latest",
|
|
202
202
|
"prettier": "latest",
|
|
203
203
|
"react": "^19.2.0",
|