@absolutejs/sync 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/drizzle/index.js +3 -1
- package/dist/adapters/drizzle/index.js.map +2 -2
- package/dist/adapters/mysql/index.js +3 -1
- package/dist/adapters/mysql/index.js.map +2 -2
- package/dist/adapters/postgres/index.js +3 -1
- package/dist/adapters/postgres/index.js.map +2 -2
- package/dist/adapters/prisma/index.js +3 -1
- package/dist/adapters/prisma/index.js.map +2 -2
- package/dist/adapters/sqlite/index.js +3 -1
- package/dist/adapters/sqlite/index.js.map +2 -2
- package/dist/engine/devtools.d.ts +11 -0
- package/dist/engine/index.d.ts +3 -0
- package/dist/engine/index.js +180 -21
- package/dist/engine/index.js.map +7 -5
- package/dist/engine/mutation.d.ts +34 -1
- package/dist/engine/retry.d.ts +67 -0
- package/dist/engine/sandbox.d.ts +40 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +2 -2
- package/dist/scheduled.js +3 -1
- package/dist/scheduled.js.map +2 -2
- package/package.json +6 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CollectionContext } from './collection';
|
|
2
|
+
import type { RetryPolicy } from './retry';
|
|
3
|
+
import type { SandboxConfig } from './sandbox';
|
|
2
4
|
import type { RowChange } from './types';
|
|
3
5
|
/**
|
|
4
6
|
* How to persist a table — register one with {@link SyncEngine.registerWriter} so
|
|
@@ -54,8 +56,39 @@ export type MutationDefinition<Args = unknown, Ctx = CollectionContext, Result =
|
|
|
54
56
|
* Apply the mutation: write to your durable store, then call
|
|
55
57
|
* `actions.change(...)` for each affected row. Return value (e.g. the created
|
|
56
58
|
* record) is sent back to the caller in the ack.
|
|
59
|
+
*
|
|
60
|
+
* Optional **only** when {@link sandboxedHandler} is set instead.
|
|
57
61
|
*/
|
|
58
|
-
handler
|
|
62
|
+
handler?: MutationHandler<Args, Ctx, Result>;
|
|
63
|
+
/**
|
|
64
|
+
* Run the mutation inside an `@absolutejs/isolated-jsc` sandbox. Provide
|
|
65
|
+
* the handler as a string expression that evaluates to
|
|
66
|
+
* `(args, ctx, actions) => result` (sync or async).
|
|
67
|
+
*
|
|
68
|
+
* The string is compiled into a JSC isolate on first call; per-call cost
|
|
69
|
+
* is ~0.5 ms after that. The isolate has no access to the host's globals,
|
|
70
|
+
* filesystem, or network — only `args`, `ctx` (passed via structured
|
|
71
|
+
* clone), and `actions` (exposed as cross-boundary Reference functions).
|
|
72
|
+
*
|
|
73
|
+
* Use this when the handler source is not fully trusted (multi-tenant
|
|
74
|
+
* PaaS, plugin systems, AI-generated logic), or as defense-in-depth to
|
|
75
|
+
* cap CPU/memory of even your own handlers. Configure limits via
|
|
76
|
+
* {@link sandbox}.
|
|
77
|
+
*
|
|
78
|
+
* Mutually exclusive with {@link handler}. Requires the optional peer
|
|
79
|
+
* `@absolutejs/isolated-jsc` to be installed.
|
|
80
|
+
*/
|
|
81
|
+
sandboxedHandler?: string;
|
|
82
|
+
/** Limits + memory cap for the sandboxed handler. Ignored without {@link sandboxedHandler}. */
|
|
83
|
+
sandbox?: SandboxConfig;
|
|
84
|
+
/**
|
|
85
|
+
* Opt-in conflict retry. When the handler throws a classified-as-retryable
|
|
86
|
+
* error (default: PG `40001` / `40P01`) the engine discards the buffered
|
|
87
|
+
* changes, awaits a backoff, and re-runs the handler with a fresh
|
|
88
|
+
* transaction. Handlers MUST be idempotent under retry — external side
|
|
89
|
+
* effects (HTTP, email) will fire more than once. See {@link RetryPolicy}.
|
|
90
|
+
*/
|
|
91
|
+
retry?: RetryPolicy;
|
|
59
92
|
};
|
|
60
93
|
/**
|
|
61
94
|
* Define a server mutation. Identity at runtime — it exists for type inference
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutation retry policy — opt-in conflict retry for `defineMutation`. Convex
|
|
3
|
+
* auto-retries every mutation on OCC conflict because their handlers are pure
|
|
4
|
+
* deterministic functions; sync handlers are arbitrary user code, so retry is
|
|
5
|
+
* opt-in and the user owns the idempotency contract. When a handler throws a
|
|
6
|
+
* classified-as-retryable error (default: PG serialization failures, codes
|
|
7
|
+
* 40001 / 40P01), the engine discards the buffered changes, awaits a backoff,
|
|
8
|
+
* and re-runs the handler with a fresh transaction.
|
|
9
|
+
*/
|
|
10
|
+
/** What the engine receives + uses to schedule the next attempt. */
|
|
11
|
+
export type RetryPolicy = {
|
|
12
|
+
/** Inclusive max attempts (1 = no retry). Defaults to 5. */
|
|
13
|
+
maxAttempts?: number;
|
|
14
|
+
/** Compute the delay before attempt `n+1` (n is 1-indexed). */
|
|
15
|
+
backoff?: (attempt: number) => number;
|
|
16
|
+
/**
|
|
17
|
+
* Return `true` for errors that should trigger a retry. Defaults to
|
|
18
|
+
* {@link isSerializationFailure} — PG `40001` (serialization_failure) +
|
|
19
|
+
* `40P01` (deadlock_detected). Override to add MySQL `1213`, app-level
|
|
20
|
+
* "version conflict" sentinels, CRDT merge conflicts, etc.
|
|
21
|
+
*/
|
|
22
|
+
isRetryable?: (error: unknown) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Hard ceiling on total elapsed time across all attempts (ms). A
|
|
25
|
+
* still-failing mutation past this gives up regardless of `maxAttempts`.
|
|
26
|
+
* Defaults to 30_000.
|
|
27
|
+
*/
|
|
28
|
+
maxElapsedMs?: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Default retryability predicate — Postgres serialization_failure (`40001`)
|
|
32
|
+
* and deadlock_detected (`40P01`). `postgres` (porsager) and `pg` both expose
|
|
33
|
+
* the SQLSTATE on `error.code`. We also accept the codes on a wrapping
|
|
34
|
+
* `error.cause` to be friendly to libraries that wrap errors.
|
|
35
|
+
*/
|
|
36
|
+
export declare const isSerializationFailure: (error: unknown) => boolean;
|
|
37
|
+
export type ExponentialBackoffOptions = {
|
|
38
|
+
/** Initial delay (ms). Defaults to 25. */
|
|
39
|
+
baseMs?: number;
|
|
40
|
+
/** Multiplier per attempt. Defaults to 2. */
|
|
41
|
+
factor?: number;
|
|
42
|
+
/** Hard cap on a single delay (ms). Defaults to 1000. */
|
|
43
|
+
maxMs?: number;
|
|
44
|
+
/** Random jitter as a fraction of the computed delay. Defaults to 0.2. */
|
|
45
|
+
jitter?: number;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Exponential backoff with optional jitter — matches the shape used in
|
|
49
|
+
* `@absolutejs/queue` so a user who's already learned one knows the other.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* defineMutation({
|
|
53
|
+
* name: 'transfer',
|
|
54
|
+
* retry: { maxAttempts: 5, backoff: exponentialBackoff() },
|
|
55
|
+
* handler: async (args, ctx, actions) => { ... }
|
|
56
|
+
* });
|
|
57
|
+
*/
|
|
58
|
+
export declare const exponentialBackoff: (options?: ExponentialBackoffOptions) => (attempt: number) => number;
|
|
59
|
+
/** Internal: thrown when retries exhaust without success. Re-throws the
|
|
60
|
+
* underlying error so the caller's existing error handling still works; the
|
|
61
|
+
* `RetriesExhaustedError` form is only used inside the engine for typing. */
|
|
62
|
+
export declare class RetriesExhaustedError extends Error {
|
|
63
|
+
readonly attempts: number;
|
|
64
|
+
readonly elapsedMs: number;
|
|
65
|
+
readonly cause: unknown;
|
|
66
|
+
constructor(attempts: number, elapsedMs: number, cause: unknown);
|
|
67
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandboxed mutation runner — executes a string-form mutation handler inside
|
|
3
|
+
* an `@absolutejs/isolated-jsc` Isolate. Use it when the handler source is
|
|
4
|
+
* not fully trusted (multi-tenant PaaS, plugin systems, AI-generated logic),
|
|
5
|
+
* or when you want to cap CPU/memory per mutation defensively.
|
|
6
|
+
*
|
|
7
|
+
* Trade-offs vs an ordinary `handler`:
|
|
8
|
+
*
|
|
9
|
+
* - Handler must be a string. It evaluates inside the isolate's JSC VM, with
|
|
10
|
+
* no access to the host's modules, closures, or globals — only the
|
|
11
|
+
* `args` / `ctx` clones and the `actions` References we pass in.
|
|
12
|
+
* - First call per mutation pays a Worker spawn + compile (~30 ms). Every
|
|
13
|
+
* subsequent call reuses the isolate and only spends ~0.5 ms creating a
|
|
14
|
+
* fresh context.
|
|
15
|
+
* - Timeout terminates the isolate (v1 of isolated-jsc trade-off — the
|
|
16
|
+
* sandbox runner detects this and lazily re-spawns on the next call).
|
|
17
|
+
* - Each per-call context retains some JSC metadata until the isolate's
|
|
18
|
+
* next GC sweep. Empirically ~2 MB residual per call. For long-lived
|
|
19
|
+
* mutations choose `memoryLimit` ≥ 128 (the default 32 trips after a
|
|
20
|
+
* few dozen calls without pressure for GC). v2 will let us trigger
|
|
21
|
+
* sweep explicitly from the host; for now, size up.
|
|
22
|
+
*
|
|
23
|
+
* The runner is built lazily per-mutation: nothing is spawned until the
|
|
24
|
+
* mutation actually runs for the first time. No engine teardown hook is
|
|
25
|
+
* needed — the OS reaps the workers when the engine's host process exits.
|
|
26
|
+
*/
|
|
27
|
+
import type { MutationActions } from './mutation';
|
|
28
|
+
/** Per-mutation sandbox configuration. */
|
|
29
|
+
export type SandboxConfig = {
|
|
30
|
+
/** Heap memory cap (MB). Default 32. */
|
|
31
|
+
memoryLimit?: number;
|
|
32
|
+
/** Wall-clock cap per call (ms). Default 5000. */
|
|
33
|
+
timeout?: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Build a lazy runner for one mutation's sandboxed source. The first call
|
|
37
|
+
* compiles + spawns; subsequent calls reuse the isolate. If the isolate has
|
|
38
|
+
* been disposed (timeout, memory cap), the next call re-spawns transparently.
|
|
39
|
+
*/
|
|
40
|
+
export declare const makeSandboxedHandler: (source: string, config?: SandboxConfig) => ((args: unknown, ctx: unknown, actions: MutationActions) => Promise<unknown>);
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __require = import.meta.require;
|
|
3
|
+
|
|
2
4
|
// src/writeBehindCache.ts
|
|
3
5
|
var createWriteBehindCache = (options) => {
|
|
4
6
|
const debounceMs = options.debounceMs ?? 250;
|
|
@@ -612,5 +614,5 @@ export {
|
|
|
612
614
|
createPresenceHub
|
|
613
615
|
};
|
|
614
616
|
|
|
615
|
-
//# debugId=
|
|
617
|
+
//# debugId=03518D3B105D1D6864756E2164756E21
|
|
616
618
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"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 = (streamPath: string) => `<!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</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=\"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 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\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), {\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(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}\n\t\t\t});\n\t\t});\n};\n",
|
|
11
11
|
"/**\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"
|
|
12
12
|
],
|
|
13
|
-
"mappings": "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",
|
|
14
|
-
"debugId": "
|
|
13
|
+
"mappings": "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",
|
|
14
|
+
"debugId": "03518D3B105D1D6864756E2164756E21",
|
|
15
15
|
"names": []
|
|
16
16
|
}
|
package/dist/scheduled.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __require = import.meta.require;
|
|
3
|
+
|
|
2
4
|
// src/scheduled.ts
|
|
3
5
|
import { Elysia } from "elysia";
|
|
4
6
|
import { cron } from "@elysiajs/cron";
|
|
@@ -29,5 +31,5 @@ export {
|
|
|
29
31
|
scheduled
|
|
30
32
|
};
|
|
31
33
|
|
|
32
|
-
//# debugId=
|
|
34
|
+
//# debugId=E19FF3C14F5836C764756E2164756E21
|
|
33
35
|
//# sourceMappingURL=scheduled.js.map
|
package/dist/scheduled.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { Elysia } from 'elysia';\nimport { cron } from '@elysiajs/cron';\nimport type { SyncEngine } from './engine/syncEngine';\n\nexport type ScheduledOptions = {\n\t/** The engine whose registered schedules (see `registerSchedule`) to run. */\n\tengine: SyncEngine;\n\t/** Prefix for the cron job names registered on Elysia's store. Default `sync`. */\n\tprefix?: string;\n\t/** Called when a scheduled run throws (the batch is rolled back). */\n\tonError?: (name: string, error: unknown) => void;\n};\n\n/**\n * Elysia plugin that fires the engine's registered scheduled functions on their\n * cron patterns, via `@elysiajs/cron`. Cron decides *when*; the engine runs the\n * schedule and makes its writes go live through the change feed (and a schedule\n * can `enqueue` into `@absolutejs/queue` for durable, retryable work).\n *\n * Register schedules with `engine.registerSchedule(...)` before mounting this, so\n * each one becomes a cron job named `<prefix>:<schedule.name>`. Mount once.\n */\nexport const scheduled = ({\n\tengine,\n\tprefix = 'sync',\n\tonError\n}: ScheduledOptions) => {\n\tconst run = (name: string) => () => {\n\t\tvoid engine.runSchedule(name).catch((error) => {\n\t\t\tif (onError === undefined) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tonError(name, error);\n\t\t});\n\t};\n\n\t// `.use` registers the cron job on this instance (mutating), so a loop builds\n\t// one plugin carrying every schedule's cron trigger.\n\tconst app = new Elysia({ name: '@absolutejs/sync/scheduled' });\n\tfor (const schedule of engine.listSchedules()) {\n\t\tapp.use(\n\t\t\tcron({\n\t\t\t\tname: `${prefix}:${schedule.name}`,\n\t\t\t\tpattern: schedule.pattern,\n\t\t\t\trun: run(schedule.name)\n\t\t\t})\n\t\t);\n\t}\n\treturn app;\n};\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;AAAA;AACA;AAqBO,IAAM,YAAY;AAAA,EACxB;AAAA,EACA,SAAS;AAAA,EACT;AAAA,MACuB;AAAA,EACvB,MAAM,MAAM,CAAC,SAAiB,MAAM;AAAA,IAC9B,OAAO,YAAY,IAAI,EAAE,MAAM,CAAC,UAAU;AAAA,MAC9C,IAAI,YAAY,WAAW;AAAA,QAC1B,MAAM;AAAA,MACP;AAAA,MACA,QAAQ,MAAM,KAAK;AAAA,KACnB;AAAA;AAAA,EAKF,MAAM,MAAM,IAAI,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAAA,EAC7D,WAAW,YAAY,OAAO,cAAc,GAAG;AAAA,IAC9C,IAAI,IACH,KAAK;AAAA,MACJ,MAAM,GAAG,UAAU,SAAS;AAAA,MAC5B,SAAS,SAAS;AAAA,MAClB,KAAK,IAAI,SAAS,IAAI;AAAA,IACvB,CAAC,CACF;AAAA,EACD;AAAA,EACA,OAAO;AAAA;",
|
|
8
|
+
"debugId": "E19FF3C14F5836C764756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absolutejs/sync",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
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",
|
|
@@ -120,6 +120,7 @@
|
|
|
120
120
|
"angular"
|
|
121
121
|
],
|
|
122
122
|
"peerDependencies": {
|
|
123
|
+
"@absolutejs/isolated-jsc": ">= 0.0.1",
|
|
123
124
|
"@angular/core": ">= 21.0.0",
|
|
124
125
|
"@elysiajs/cron": ">= 1.4.0",
|
|
125
126
|
"drizzle-orm": ">= 0.44.0",
|
|
@@ -129,6 +130,9 @@
|
|
|
129
130
|
"vue": ">= 3.5.0"
|
|
130
131
|
},
|
|
131
132
|
"peerDependenciesMeta": {
|
|
133
|
+
"@absolutejs/isolated-jsc": {
|
|
134
|
+
"optional": true
|
|
135
|
+
},
|
|
132
136
|
"@angular/core": {
|
|
133
137
|
"optional": true
|
|
134
138
|
},
|
|
@@ -153,6 +157,7 @@
|
|
|
153
157
|
},
|
|
154
158
|
"devDependencies": {
|
|
155
159
|
"@absolutejs/absolute": "^0.19.0-beta.1051",
|
|
160
|
+
"@absolutejs/isolated-jsc": "^0.0.1",
|
|
156
161
|
"@angular/core": "^21.0.0",
|
|
157
162
|
"@elysiajs/cron": "^1.4.2",
|
|
158
163
|
"@elysiajs/eden": "^1.4.9",
|