@absolutejs/sync 2.7.1 → 2.8.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/connectionBroker.d.ts +7 -1
- package/dist/index.js +28 -8
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
|
@@ -18,12 +18,18 @@ export declare class ConnectionBrokerDrainedError extends Error {
|
|
|
18
18
|
constructor();
|
|
19
19
|
}
|
|
20
20
|
export type ConnectionBrokerOptions<Conn> = {
|
|
21
|
+
/**
|
|
22
|
+
* Whether idle connections may be reused by every tenant or only by the
|
|
23
|
+
* tenant that created them. Use `tenant` for BYO credentials or databases.
|
|
24
|
+
* In tenant mode `maxTotal` caps physical active + idle connections.
|
|
25
|
+
*/
|
|
26
|
+
affinity?: 'shared' | 'tenant';
|
|
21
27
|
/**
|
|
22
28
|
* Open one upstream connection. Called lazily — only when a lease needs
|
|
23
29
|
* a connection and the idle pool is empty. The broker never imports a
|
|
24
30
|
* DB driver; bring postgres-js, `Bun.sql`, or anything else.
|
|
25
31
|
*/
|
|
26
|
-
create: () => Promise<Conn> | Conn;
|
|
32
|
+
create: (tenant: string) => Promise<Conn> | Conn;
|
|
27
33
|
/**
|
|
28
34
|
* Global in-use cap — the whole point of the broker. One shard hosting
|
|
29
35
|
* many tenants shares this many upstream connections, total, no matter
|
package/dist/index.js
CHANGED
|
@@ -159,6 +159,7 @@ var createConnectionBroker = (options) => {
|
|
|
159
159
|
throw new RangeError(`createConnectionBroker requires maxTotal > 0 (got ${options.maxTotal})`);
|
|
160
160
|
}
|
|
161
161
|
const now = options.now ?? Date.now;
|
|
162
|
+
const affinity = options.affinity ?? "shared";
|
|
162
163
|
const tracer = tracerOrNoop(options.tracerProvider, "@absolutejs/sync");
|
|
163
164
|
const idle = [];
|
|
164
165
|
const queue = [];
|
|
@@ -215,8 +216,20 @@ var createConnectionBroker = (options) => {
|
|
|
215
216
|
resolveDrain?.();
|
|
216
217
|
}
|
|
217
218
|
};
|
|
218
|
-
const
|
|
219
|
-
|
|
219
|
+
const takeIdle = (tenant) => {
|
|
220
|
+
if (affinity === "shared")
|
|
221
|
+
return idle.pop();
|
|
222
|
+
for (let index = idle.length - 1;index >= 0; index -= 1) {
|
|
223
|
+
const entry = idle[index];
|
|
224
|
+
if (entry?.tenant !== tenant)
|
|
225
|
+
continue;
|
|
226
|
+
idle.splice(index, 1);
|
|
227
|
+
return entry;
|
|
228
|
+
}
|
|
229
|
+
return;
|
|
230
|
+
};
|
|
231
|
+
const acquireConn = async (tenant) => {
|
|
232
|
+
let entry = takeIdle(tenant);
|
|
220
233
|
while (entry !== undefined) {
|
|
221
234
|
if (options.validate === undefined)
|
|
222
235
|
return entry.conn;
|
|
@@ -230,10 +243,17 @@ var createConnectionBroker = (options) => {
|
|
|
230
243
|
return entry.conn;
|
|
231
244
|
cumulative.validationFailures += 1;
|
|
232
245
|
await destroyConn(entry.conn);
|
|
233
|
-
entry =
|
|
246
|
+
entry = takeIdle(tenant);
|
|
234
247
|
}
|
|
248
|
+
if (affinity === "tenant")
|
|
249
|
+
while (inUse + idle.length > options.maxTotal) {
|
|
250
|
+
const displaced = idle.shift();
|
|
251
|
+
if (displaced === undefined)
|
|
252
|
+
break;
|
|
253
|
+
await destroyConn(displaced.conn);
|
|
254
|
+
}
|
|
235
255
|
try {
|
|
236
|
-
const conn = await options.create();
|
|
256
|
+
const conn = await options.create(tenant);
|
|
237
257
|
cumulative.created += 1;
|
|
238
258
|
return conn;
|
|
239
259
|
} catch (error) {
|
|
@@ -263,7 +283,7 @@ var createConnectionBroker = (options) => {
|
|
|
263
283
|
if (disposed) {
|
|
264
284
|
destroyConn(conn);
|
|
265
285
|
} else {
|
|
266
|
-
idle.push({ conn, idleSince: now() });
|
|
286
|
+
idle.push({ conn, idleSince: now(), tenant });
|
|
267
287
|
}
|
|
268
288
|
unreserve(tenant);
|
|
269
289
|
pump();
|
|
@@ -272,7 +292,7 @@ var createConnectionBroker = (options) => {
|
|
|
272
292
|
};
|
|
273
293
|
const grantTo = async (waiter) => {
|
|
274
294
|
try {
|
|
275
|
-
const conn = await acquireConn();
|
|
295
|
+
const conn = await acquireConn(waiter.tenant);
|
|
276
296
|
waiter.span.setAttribute(QUEUE_WAIT_ATTR, now() - waiter.enqueuedAt);
|
|
277
297
|
waiter.span.end();
|
|
278
298
|
waiter.resolve(makeLease(waiter.tenant, conn));
|
|
@@ -323,7 +343,7 @@ var createConnectionBroker = (options) => {
|
|
|
323
343
|
if (canGrant(tenant)) {
|
|
324
344
|
reserve(tenant);
|
|
325
345
|
try {
|
|
326
|
-
const conn = await acquireConn();
|
|
346
|
+
const conn = await acquireConn(tenant);
|
|
327
347
|
span.setAttribute(QUEUE_WAIT_ATTR, now() - startedAt);
|
|
328
348
|
span.end();
|
|
329
349
|
return makeLease(tenant, conn);
|
|
@@ -3782,5 +3802,5 @@ export {
|
|
|
3782
3802
|
ConnectionBrokerDrainedError
|
|
3783
3803
|
};
|
|
3784
3804
|
|
|
3785
|
-
//# debugId=
|
|
3805
|
+
//# debugId=456583ECD822321E64756E2164756E21
|
|
3786
3806
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
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
|
"// @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",
|
|
7
|
-
"import {\n\tABS_ATTRS,\n\ttracerOrNoop,\n\ttype Span as TelemetrySpan,\n\ttype TracerProvider as TelemetryTracerProvider\n} from '@absolutejs/telemetry';\n\n/**\n * Thrown by `broker.lease` when `acquireTimeoutMs` elapses before a\n * connection frees up. The tenant and timeout carry through so operators\n * can correlate timeouts to the tenant that starved.\n */\nexport class LeaseTimeoutError extends Error {\n\treadonly tenant: string;\n\treadonly timeoutMs: number;\n\tconstructor(tenant: string, timeoutMs: number) {\n\t\tsuper(\n\t\t\t`Lease for tenant \"${tenant}\" timed out after ${timeoutMs}ms; ` +\n\t\t\t\t`the broker is at its connection caps and nothing freed up ` +\n\t\t\t\t`in time. Raise maxTotal/maxPerTenant or shed load upstream.`\n\t\t);\n\t\tthis.name = 'LeaseTimeoutError';\n\t\tthis.tenant = tenant;\n\t\tthis.timeoutMs = timeoutMs;\n\t}\n}\n\n/**\n * Thrown by `broker.lease` after `drain()`/`dispose()` — the broker is\n * winding down and no new leases are issued. Queued waiters that were\n * still pending at `dispose()` are rejected with this too.\n */\nexport class ConnectionBrokerDrainedError extends Error {\n\tconstructor() {\n\t\tsuper(\n\t\t\t'Connection broker is drained; no new leases are issued. ' +\n\t\t\t\t'Construct a fresh broker to resume leasing.'\n\t\t);\n\t\tthis.name = 'ConnectionBrokerDrainedError';\n\t}\n}\n\nexport type ConnectionBrokerOptions<Conn> = {\n\t/**\n\t * Open one upstream connection. Called lazily — only when a lease needs\n\t * a connection and the idle pool is empty. The broker never imports a\n\t * DB driver; bring postgres-js, `Bun.sql`, or anything else.\n\t */\n\tcreate: () => Promise<Conn> | Conn;\n\t/**\n\t * Global in-use cap — the whole point of the broker. One shard hosting\n\t * many tenants shares this many upstream connections, total, no matter\n\t * how many tenants lease concurrently. Required, must be > 0.\n\t */\n\tmaxTotal: number;\n\t/**\n\t * Give up on a queued lease after this many milliseconds and reject\n\t * with {@link LeaseTimeoutError}. Defaults to waiting forever.\n\t */\n\tacquireTimeoutMs?: number;\n\t/**\n\t * Close one upstream connection. Called for validation failures, idle\n\t * releases, and `dispose()`. Defaults to dropping the reference.\n\t */\n\tdestroy?: (conn: Conn) => Promise<void> | void;\n\t/**\n\t * Destroy pooled-idle connections that have sat unused for this many\n\t * milliseconds, so a burst doesn't pin connections against the managed\n\t * provider's limit forever. Swept on an unref'd timer and lazily on\n\t * every `lease`. Defaults to keeping idle connections indefinitely.\n\t */\n\tidleReleaseMs?: number;\n\t/**\n\t * Per-tenant in-use cap, independent of `maxTotal` — one noisy tenant\n\t * queues against its own budget instead of starving the shard.\n\t * Defaults to no per-tenant cap.\n\t */\n\tmaxPerTenant?: number;\n\t/**\n\t * Clock used for idle-age accounting. Injectable so idle-release tests\n\t * run without real timers. Defaults to `Date.now`.\n\t */\n\tnow?: () => number;\n\t/**\n\t * Called when `create`, `destroy`, or `validate` throws. The broker\n\t * stays consistent either way (a failed create rejects that lease and\n\t * frees the slot; a failed destroy drops the connection reference).\n\t * Defaults to a no-op.\n\t */\n\tonError?: (\n\t\terror: unknown,\n\t\tphase: 'create' | 'destroy' | 'validate'\n\t) => void;\n\t/**\n\t * Optional OpenTelemetry tracer provider. When set, every lease is\n\t * traced as a `sync.broker_lease` span carrying `abs.tenant` and the\n\t * queue wait in milliseconds. Noop when unset.\n\t */\n\ttracerProvider?: TelemetryTracerProvider;\n\t/**\n\t * Health-check a pooled connection before reuse. Return false (or\n\t * throw) and the broker destroys it and tries the next idle connection\n\t * — or creates a fresh one — so a server-side idle disconnect never\n\t * reaches a caller. Defaults to trusting pooled connections.\n\t */\n\tvalidate?: (conn: Conn) => Promise<boolean> | boolean;\n};\n\nexport type ConnectionLease<Conn> = {\n\tconn: Conn;\n\t/** Return the connection to the pool. Idempotent. */\n\trelease: () => void;\n};\n\nexport type ConnectionBrokerMetrics = {\n\t/** Connections currently leased out (or reserved for an in-flight create). */\n\tinUse: number;\n\t/** Connections sitting in the idle pool. */\n\tidle: number;\n\t/** Lease calls waiting for a connection to free up. */\n\tqueued: number;\n\t/** In-use count per tenant — only tenants with at least one lease appear. */\n\tbyTenant: Record<string, number>;\n\tcumulative: {\n\t\tleases: number;\n\t\treleases: number;\n\t\ttimeouts: number;\n\t\tcreated: number;\n\t\tdestroyed: number;\n\t\tvalidationFailures: number;\n\t};\n};\n\nexport type ConnectionBroker<Conn> = {\n\t/**\n\t * Lease a connection for a tenant. Resolves immediately when under\n\t * both caps (reusing the most-recently-released idle connection first,\n\t * for cache warmth); otherwise queues FIFO until a release frees the\n\t * cap that blocked it.\n\t */\n\tlease: (tenant: string) => Promise<ConnectionLease<Conn>>;\n\t/** Lease, run `fn`, release in `finally` — even when `fn` throws. */\n\twithLease: <Result>(\n\t\ttenant: string,\n\t\tfn: (conn: Conn) => Promise<Result> | Result\n\t) => Promise<Result>;\n\t/** Operator-shaped snapshot, same spirit as `engine.metrics()`. */\n\tmetrics: () => ConnectionBrokerMetrics;\n\t/**\n\t * Stop issuing new leases ({@link ConnectionBrokerDrainedError}) and\n\t * resolve once every outstanding lease has been released and the queue\n\t * has drained through. Follow with `dispose()` to close idle\n\t * connections.\n\t */\n\tdrain: () => Promise<void>;\n\t/**\n\t * Drain-if-needed, reject queued waiters, destroy every idle\n\t * connection, and stop the sweep timer. Connections still leased out\n\t * are destroyed on their release instead of returning to the pool.\n\t */\n\tdispose: () => Promise<void>;\n};\n\ntype IdleEntry<Conn> = {\n\tconn: Conn;\n\tidleSince: number;\n};\n\ntype Waiter<Conn> = {\n\tenqueuedAt: number;\n\treject: (error: unknown) => void;\n\tresolve: (lease: ConnectionLease<Conn>) => void;\n\tspan: TelemetrySpan;\n\ttenant: string;\n\ttimer: ReturnType<typeof setTimeout> | undefined;\n};\n\nconst QUEUE_WAIT_ATTR = 'abs.broker.queue_wait_ms';\n\n/**\n * A generic connection lease broker: multiplex ONE upstream connection\n * budget across many tenants.\n *\n * The BYO-Postgres problem this solves: one shard hosting 50 customers,\n * each spawning its own PG pool, instantly exceeds a managed provider's\n * connection limit. Instead, give every tenant `broker.lease(tenant)`\n * over a single caller-supplied `create`/`destroy` pair — the broker\n * enforces a global in-use cap (`maxTotal`), optional per-tenant budgets\n * (`maxPerTenant`), FIFO queueing with timeouts when at cap, LIFO idle\n * reuse for cache warmth, and idle harvesting (`idleReleaseMs`) so a\n * burst doesn't pin connections forever.\n *\n * The broker never imports a DB driver — `Conn` is whatever `create`\n * returns (a postgres-js `sql`, a `Bun.sql`, an HTTP client, …).\n */\nexport const createConnectionBroker = <Conn>(\n\toptions: ConnectionBrokerOptions<Conn>\n): ConnectionBroker<Conn> => {\n\tif (!Number.isFinite(options.maxTotal) || options.maxTotal <= 0) {\n\t\tthrow new RangeError(\n\t\t\t`createConnectionBroker requires maxTotal > 0 (got ${options.maxTotal})`\n\t\t);\n\t}\n\tconst now = options.now ?? Date.now;\n\tconst tracer = tracerOrNoop(options.tracerProvider, '@absolutejs/sync');\n\n\t// LIFO stack (push/pop at the end) — the most-recently-released\n\t// connection is reused first, so its driver-side caches stay warm.\n\t// Push order is time order, so index 0 is always the stalest entry.\n\tconst idle: IdleEntry<Conn>[] = [];\n\t// One FIFO queue for both caps: on every release the broker scans from\n\t// the front and grants the first waiter whose caps now have room, so a\n\t// per-tenant-blocked waiter never holds up a differently-blocked one.\n\tconst queue: Waiter<Conn>[] = [];\n\tconst inUseByTenant = new Map<string, number>();\n\tlet inUse = 0;\n\tlet drained = false;\n\tlet disposed = false;\n\tlet drainPromise: Promise<void> | undefined;\n\tlet resolveDrain: (() => void) | undefined;\n\n\tconst cumulative = {\n\t\tcreated: 0,\n\t\tdestroyed: 0,\n\t\tleases: 0,\n\t\treleases: 0,\n\t\ttimeouts: 0,\n\t\tvalidationFailures: 0\n\t};\n\n\tconst destroyConn = async (conn: Conn) => {\n\t\tcumulative.destroyed += 1;\n\t\ttry {\n\t\t\tawait options.destroy?.(conn);\n\t\t} catch (error) {\n\t\t\toptions.onError?.(error, 'destroy');\n\t\t}\n\t};\n\n\t// Harvest idle connections older than idleReleaseMs. Runs on the\n\t// unref'd interval below and lazily on every lease, so injected-`now`\n\t// tests can advance the clock and trigger a sweep with a plain lease.\n\tconst sweepIdle = () => {\n\t\tconst idleReleaseMs = options.idleReleaseMs;\n\t\tif (idleReleaseMs === undefined) return;\n\t\tconst cutoff = now() - idleReleaseMs;\n\t\twhile (idle.length > 0 && idle[0] !== undefined) {\n\t\t\tconst oldest = idle[0];\n\t\t\tif (oldest.idleSince > cutoff) break;\n\t\t\tidle.shift();\n\t\t\tvoid destroyConn(oldest.conn);\n\t\t}\n\t};\n\n\tconst sweepTimer =\n\t\toptions.idleReleaseMs === undefined\n\t\t\t? undefined\n\t\t\t: setInterval(sweepIdle, options.idleReleaseMs);\n\tsweepTimer?.unref?.();\n\n\tconst canGrant = (tenant: string) =>\n\t\tinUse < options.maxTotal &&\n\t\t(options.maxPerTenant === undefined ||\n\t\t\t(inUseByTenant.get(tenant) ?? 0) < options.maxPerTenant);\n\n\t// In-use counts are reserved BEFORE the (async) create/validate runs,\n\t// so concurrent leases can never oversubscribe the caps.\n\tconst reserve = (tenant: string) => {\n\t\tinUse += 1;\n\t\tinUseByTenant.set(tenant, (inUseByTenant.get(tenant) ?? 0) + 1);\n\t};\n\n\tconst unreserve = (tenant: string) => {\n\t\tinUse -= 1;\n\t\tconst count = inUseByTenant.get(tenant) ?? 0;\n\t\tif (count <= 1) inUseByTenant.delete(tenant);\n\t\telse inUseByTenant.set(tenant, count - 1);\n\t\tif (drained && inUse === 0 && queue.length === 0) {\n\t\t\tresolveDrain?.();\n\t\t}\n\t};\n\n\t// Pop idle connections (validating each when configured) until one\n\t// passes, else open a fresh one. The caller has already reserved a\n\t// slot, so a create here can never breach the caps.\n\tconst acquireConn = async (): Promise<Conn> => {\n\t\tlet entry = idle.pop();\n\t\twhile (entry !== undefined) {\n\t\t\tif (options.validate === undefined) return entry.conn;\n\t\t\tlet healthy = false;\n\t\t\ttry {\n\t\t\t\thealthy = await options.validate(entry.conn);\n\t\t\t} catch (error) {\n\t\t\t\toptions.onError?.(error, 'validate');\n\t\t\t}\n\t\t\tif (healthy) return entry.conn;\n\t\t\tcumulative.validationFailures += 1;\n\t\t\tawait destroyConn(entry.conn);\n\t\t\tentry = idle.pop();\n\t\t}\n\t\ttry {\n\t\t\tconst conn = await options.create();\n\t\t\tcumulative.created += 1;\n\t\t\treturn conn;\n\t\t} catch (error) {\n\t\t\toptions.onError?.(error, 'create');\n\t\t\tthrow error;\n\t\t}\n\t};\n\n\tconst endSpanWithError = (span: TelemetrySpan, error: unknown) => {\n\t\tconst spanError =\n\t\t\terror instanceof Error ? error : new Error(String(error));\n\t\tspan.recordException(spanError);\n\t\tspan.setStatus({\n\t\t\tcode: 2 /* SpanStatusCode.ERROR */,\n\t\t\tmessage: spanError.message\n\t\t});\n\t\tspan.end();\n\t};\n\n\tconst makeLease = (tenant: string, conn: Conn): ConnectionLease<Conn> => {\n\t\tcumulative.leases += 1;\n\t\tlet released = false;\n\t\treturn {\n\t\t\tconn,\n\t\t\trelease: () => {\n\t\t\t\t// Idempotent: a double release must not corrupt the counts\n\t\t\t\t// or hand the same connection to two callers.\n\t\t\t\tif (released) return;\n\t\t\t\treleased = true;\n\t\t\t\tcumulative.releases += 1;\n\t\t\t\tif (disposed) {\n\t\t\t\t\tvoid destroyConn(conn);\n\t\t\t\t} else {\n\t\t\t\t\tidle.push({ conn, idleSince: now() });\n\t\t\t\t}\n\t\t\t\tunreserve(tenant);\n\t\t\t\tpump();\n\t\t\t}\n\t\t};\n\t};\n\n\t// Deliver a connection to a waiter whose slot is already reserved.\n\tconst grantTo = async (waiter: Waiter<Conn>) => {\n\t\ttry {\n\t\t\tconst conn = await acquireConn();\n\t\t\twaiter.span.setAttribute(\n\t\t\t\tQUEUE_WAIT_ATTR,\n\t\t\t\tnow() - waiter.enqueuedAt\n\t\t\t);\n\t\t\twaiter.span.end();\n\t\t\twaiter.resolve(makeLease(waiter.tenant, conn));\n\t\t} catch (error) {\n\t\t\tunreserve(waiter.tenant);\n\t\t\tendSpanWithError(waiter.span, error);\n\t\t\twaiter.reject(error);\n\t\t\tpump();\n\t\t}\n\t};\n\n\t// Scan the FIFO queue from the front and grant every waiter whose caps\n\t// now have room. Reservation is synchronous, so one release hands its\n\t// slot to exactly one waiter.\n\tconst pump = () => {\n\t\tif (disposed) return;\n\t\tlet index = 0;\n\t\twhile (index < queue.length) {\n\t\t\tconst waiter = queue[index];\n\t\t\tif (waiter === undefined) break;\n\t\t\tif (!canGrant(waiter.tenant)) {\n\t\t\t\tindex += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tqueue.splice(index, 1);\n\t\t\tif (waiter.timer !== undefined) clearTimeout(waiter.timer);\n\t\t\treserve(waiter.tenant);\n\t\t\tvoid grantTo(waiter);\n\t\t}\n\t};\n\n\tconst rejectQueued = (error: () => Error) => {\n\t\tconst waiting = queue.splice(0, queue.length);\n\t\tfor (const waiter of waiting) {\n\t\t\tif (waiter.timer !== undefined) clearTimeout(waiter.timer);\n\t\t\tconst rejection = error();\n\t\t\tendSpanWithError(waiter.span, rejection);\n\t\t\twaiter.reject(rejection);\n\t\t}\n\t};\n\n\tconst lease = async (tenant: string): Promise<ConnectionLease<Conn>> => {\n\t\tif (drained) throw new ConnectionBrokerDrainedError();\n\t\tsweepIdle();\n\t\tconst span = tracer.startSpan('sync.broker_lease', {\n\t\t\tattributes: { [ABS_ATTRS.tenant]: tenant }\n\t\t});\n\t\tconst startedAt = now();\n\t\tif (canGrant(tenant)) {\n\t\t\treserve(tenant);\n\t\t\ttry {\n\t\t\t\tconst conn = await acquireConn();\n\t\t\t\tspan.setAttribute(QUEUE_WAIT_ATTR, now() - startedAt);\n\t\t\t\tspan.end();\n\t\t\t\treturn makeLease(tenant, conn);\n\t\t\t} catch (error) {\n\t\t\t\tunreserve(tenant);\n\t\t\t\tendSpanWithError(span, error);\n\t\t\t\tpump();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\treturn new Promise<ConnectionLease<Conn>>((resolve, reject) => {\n\t\t\tconst waiter: Waiter<Conn> = {\n\t\t\t\tenqueuedAt: startedAt,\n\t\t\t\treject,\n\t\t\t\tresolve,\n\t\t\t\tspan,\n\t\t\t\ttenant,\n\t\t\t\ttimer: undefined\n\t\t\t};\n\t\t\tif (options.acquireTimeoutMs !== undefined) {\n\t\t\t\tconst timeoutMs = options.acquireTimeoutMs;\n\t\t\t\twaiter.timer = setTimeout(() => {\n\t\t\t\t\tconst position = queue.indexOf(waiter);\n\t\t\t\t\tif (position === -1) return;\n\t\t\t\t\tqueue.splice(position, 1);\n\t\t\t\t\tcumulative.timeouts += 1;\n\t\t\t\t\tconst timeout = new LeaseTimeoutError(tenant, timeoutMs);\n\t\t\t\t\tendSpanWithError(span, timeout);\n\t\t\t\t\treject(timeout);\n\t\t\t\t}, timeoutMs);\n\t\t\t}\n\t\t\tqueue.push(waiter);\n\t\t});\n\t};\n\n\tconst drain = () => {\n\t\tdrained = true;\n\t\tif (drainPromise === undefined) {\n\t\t\tdrainPromise =\n\t\t\t\tinUse === 0 && queue.length === 0\n\t\t\t\t\t? Promise.resolve()\n\t\t\t\t\t: new Promise<void>((resolve) => {\n\t\t\t\t\t\t\tresolveDrain = resolve;\n\t\t\t\t\t\t});\n\t\t}\n\t\treturn drainPromise;\n\t};\n\n\treturn {\n\t\tdispose: async () => {\n\t\t\tdrained = true;\n\t\t\tdisposed = true;\n\t\t\tif (sweepTimer !== undefined) clearInterval(sweepTimer);\n\t\t\trejectQueued(() => new ConnectionBrokerDrainedError());\n\t\t\tconst pooled = idle.splice(0, idle.length);\n\t\t\tawait Promise.all(pooled.map((entry) => destroyConn(entry.conn)));\n\t\t\tif (inUse === 0) resolveDrain?.();\n\t\t},\n\t\tdrain,\n\t\tlease,\n\t\tmetrics: () => ({\n\t\t\tbyTenant: Object.fromEntries(inUseByTenant),\n\t\t\tcumulative: { ...cumulative },\n\t\t\tidle: idle.length,\n\t\t\tinUse,\n\t\t\tqueued: queue.length\n\t\t}),\n\t\twithLease: async (tenant, fn) => {\n\t\t\tconst { conn, release } = await lease(tenant);\n\t\t\ttry {\n\t\t\t\treturn await fn(conn);\n\t\t\t} finally {\n\t\t\t\trelease();\n\t\t\t}\n\t\t}\n\t};\n};\n",
|
|
7
|
+
"import {\n\tABS_ATTRS,\n\ttracerOrNoop,\n\ttype Span as TelemetrySpan,\n\ttype TracerProvider as TelemetryTracerProvider\n} from '@absolutejs/telemetry';\n\n/**\n * Thrown by `broker.lease` when `acquireTimeoutMs` elapses before a\n * connection frees up. The tenant and timeout carry through so operators\n * can correlate timeouts to the tenant that starved.\n */\nexport class LeaseTimeoutError extends Error {\n\treadonly tenant: string;\n\treadonly timeoutMs: number;\n\tconstructor(tenant: string, timeoutMs: number) {\n\t\tsuper(\n\t\t\t`Lease for tenant \"${tenant}\" timed out after ${timeoutMs}ms; ` +\n\t\t\t\t`the broker is at its connection caps and nothing freed up ` +\n\t\t\t\t`in time. Raise maxTotal/maxPerTenant or shed load upstream.`\n\t\t);\n\t\tthis.name = 'LeaseTimeoutError';\n\t\tthis.tenant = tenant;\n\t\tthis.timeoutMs = timeoutMs;\n\t}\n}\n\n/**\n * Thrown by `broker.lease` after `drain()`/`dispose()` — the broker is\n * winding down and no new leases are issued. Queued waiters that were\n * still pending at `dispose()` are rejected with this too.\n */\nexport class ConnectionBrokerDrainedError extends Error {\n\tconstructor() {\n\t\tsuper(\n\t\t\t'Connection broker is drained; no new leases are issued. ' +\n\t\t\t\t'Construct a fresh broker to resume leasing.'\n\t\t);\n\t\tthis.name = 'ConnectionBrokerDrainedError';\n\t}\n}\n\nexport type ConnectionBrokerOptions<Conn> = {\n\t/**\n\t * Whether idle connections may be reused by every tenant or only by the\n\t * tenant that created them. Use `tenant` for BYO credentials or databases.\n\t * In tenant mode `maxTotal` caps physical active + idle connections.\n\t */\n\taffinity?: 'shared' | 'tenant';\n\t/**\n\t * Open one upstream connection. Called lazily — only when a lease needs\n\t * a connection and the idle pool is empty. The broker never imports a\n\t * DB driver; bring postgres-js, `Bun.sql`, or anything else.\n\t */\n\tcreate: (tenant: string) => Promise<Conn> | Conn;\n\t/**\n\t * Global in-use cap — the whole point of the broker. One shard hosting\n\t * many tenants shares this many upstream connections, total, no matter\n\t * how many tenants lease concurrently. Required, must be > 0.\n\t */\n\tmaxTotal: number;\n\t/**\n\t * Give up on a queued lease after this many milliseconds and reject\n\t * with {@link LeaseTimeoutError}. Defaults to waiting forever.\n\t */\n\tacquireTimeoutMs?: number;\n\t/**\n\t * Close one upstream connection. Called for validation failures, idle\n\t * releases, and `dispose()`. Defaults to dropping the reference.\n\t */\n\tdestroy?: (conn: Conn) => Promise<void> | void;\n\t/**\n\t * Destroy pooled-idle connections that have sat unused for this many\n\t * milliseconds, so a burst doesn't pin connections against the managed\n\t * provider's limit forever. Swept on an unref'd timer and lazily on\n\t * every `lease`. Defaults to keeping idle connections indefinitely.\n\t */\n\tidleReleaseMs?: number;\n\t/**\n\t * Per-tenant in-use cap, independent of `maxTotal` — one noisy tenant\n\t * queues against its own budget instead of starving the shard.\n\t * Defaults to no per-tenant cap.\n\t */\n\tmaxPerTenant?: number;\n\t/**\n\t * Clock used for idle-age accounting. Injectable so idle-release tests\n\t * run without real timers. Defaults to `Date.now`.\n\t */\n\tnow?: () => number;\n\t/**\n\t * Called when `create`, `destroy`, or `validate` throws. The broker\n\t * stays consistent either way (a failed create rejects that lease and\n\t * frees the slot; a failed destroy drops the connection reference).\n\t * Defaults to a no-op.\n\t */\n\tonError?: (\n\t\terror: unknown,\n\t\tphase: 'create' | 'destroy' | 'validate'\n\t) => void;\n\t/**\n\t * Optional OpenTelemetry tracer provider. When set, every lease is\n\t * traced as a `sync.broker_lease` span carrying `abs.tenant` and the\n\t * queue wait in milliseconds. Noop when unset.\n\t */\n\ttracerProvider?: TelemetryTracerProvider;\n\t/**\n\t * Health-check a pooled connection before reuse. Return false (or\n\t * throw) and the broker destroys it and tries the next idle connection\n\t * — or creates a fresh one — so a server-side idle disconnect never\n\t * reaches a caller. Defaults to trusting pooled connections.\n\t */\n\tvalidate?: (conn: Conn) => Promise<boolean> | boolean;\n};\n\nexport type ConnectionLease<Conn> = {\n\tconn: Conn;\n\t/** Return the connection to the pool. Idempotent. */\n\trelease: () => void;\n};\n\nexport type ConnectionBrokerMetrics = {\n\t/** Connections currently leased out (or reserved for an in-flight create). */\n\tinUse: number;\n\t/** Connections sitting in the idle pool. */\n\tidle: number;\n\t/** Lease calls waiting for a connection to free up. */\n\tqueued: number;\n\t/** In-use count per tenant — only tenants with at least one lease appear. */\n\tbyTenant: Record<string, number>;\n\tcumulative: {\n\t\tleases: number;\n\t\treleases: number;\n\t\ttimeouts: number;\n\t\tcreated: number;\n\t\tdestroyed: number;\n\t\tvalidationFailures: number;\n\t};\n};\n\nexport type ConnectionBroker<Conn> = {\n\t/**\n\t * Lease a connection for a tenant. Resolves immediately when under\n\t * both caps (reusing the most-recently-released idle connection first,\n\t * for cache warmth); otherwise queues FIFO until a release frees the\n\t * cap that blocked it.\n\t */\n\tlease: (tenant: string) => Promise<ConnectionLease<Conn>>;\n\t/** Lease, run `fn`, release in `finally` — even when `fn` throws. */\n\twithLease: <Result>(\n\t\ttenant: string,\n\t\tfn: (conn: Conn) => Promise<Result> | Result\n\t) => Promise<Result>;\n\t/** Operator-shaped snapshot, same spirit as `engine.metrics()`. */\n\tmetrics: () => ConnectionBrokerMetrics;\n\t/**\n\t * Stop issuing new leases ({@link ConnectionBrokerDrainedError}) and\n\t * resolve once every outstanding lease has been released and the queue\n\t * has drained through. Follow with `dispose()` to close idle\n\t * connections.\n\t */\n\tdrain: () => Promise<void>;\n\t/**\n\t * Drain-if-needed, reject queued waiters, destroy every idle\n\t * connection, and stop the sweep timer. Connections still leased out\n\t * are destroyed on their release instead of returning to the pool.\n\t */\n\tdispose: () => Promise<void>;\n};\n\ntype IdleEntry<Conn> = {\n\tconn: Conn;\n\tidleSince: number;\n\ttenant: string;\n};\n\ntype Waiter<Conn> = {\n\tenqueuedAt: number;\n\treject: (error: unknown) => void;\n\tresolve: (lease: ConnectionLease<Conn>) => void;\n\tspan: TelemetrySpan;\n\ttenant: string;\n\ttimer: ReturnType<typeof setTimeout> | undefined;\n};\n\nconst QUEUE_WAIT_ATTR = 'abs.broker.queue_wait_ms';\n\n/**\n * A generic connection lease broker: multiplex ONE upstream connection\n * budget across many tenants.\n *\n * The BYO-Postgres problem this solves: one shard hosting 50 customers,\n * each spawning its own PG pool, instantly exceeds a managed provider's\n * connection limit. Instead, give every tenant `broker.lease(tenant)`\n * over a single caller-supplied `create`/`destroy` pair — the broker\n * enforces a global in-use cap (`maxTotal`), optional per-tenant budgets\n * (`maxPerTenant`), FIFO queueing with timeouts when at cap, LIFO idle\n * reuse for cache warmth, and idle harvesting (`idleReleaseMs`) so a\n * burst doesn't pin connections forever.\n *\n * The broker never imports a DB driver — `Conn` is whatever `create`\n * returns (a postgres-js `sql`, a `Bun.sql`, an HTTP client, …).\n */\nexport const createConnectionBroker = <Conn>(\n\toptions: ConnectionBrokerOptions<Conn>\n): ConnectionBroker<Conn> => {\n\tif (!Number.isFinite(options.maxTotal) || options.maxTotal <= 0) {\n\t\tthrow new RangeError(\n\t\t\t`createConnectionBroker requires maxTotal > 0 (got ${options.maxTotal})`\n\t\t);\n\t}\n\tconst now = options.now ?? Date.now;\n\tconst affinity = options.affinity ?? 'shared';\n\tconst tracer = tracerOrNoop(options.tracerProvider, '@absolutejs/sync');\n\n\t// LIFO stack (push/pop at the end) — the most-recently-released\n\t// connection is reused first, so its driver-side caches stay warm.\n\t// Push order is time order, so index 0 is always the stalest entry.\n\tconst idle: IdleEntry<Conn>[] = [];\n\t// One FIFO queue for both caps: on every release the broker scans from\n\t// the front and grants the first waiter whose caps now have room, so a\n\t// per-tenant-blocked waiter never holds up a differently-blocked one.\n\tconst queue: Waiter<Conn>[] = [];\n\tconst inUseByTenant = new Map<string, number>();\n\tlet inUse = 0;\n\tlet drained = false;\n\tlet disposed = false;\n\tlet drainPromise: Promise<void> | undefined;\n\tlet resolveDrain: (() => void) | undefined;\n\n\tconst cumulative = {\n\t\tcreated: 0,\n\t\tdestroyed: 0,\n\t\tleases: 0,\n\t\treleases: 0,\n\t\ttimeouts: 0,\n\t\tvalidationFailures: 0\n\t};\n\n\tconst destroyConn = async (conn: Conn) => {\n\t\tcumulative.destroyed += 1;\n\t\ttry {\n\t\t\tawait options.destroy?.(conn);\n\t\t} catch (error) {\n\t\t\toptions.onError?.(error, 'destroy');\n\t\t}\n\t};\n\n\t// Harvest idle connections older than idleReleaseMs. Runs on the\n\t// unref'd interval below and lazily on every lease, so injected-`now`\n\t// tests can advance the clock and trigger a sweep with a plain lease.\n\tconst sweepIdle = () => {\n\t\tconst idleReleaseMs = options.idleReleaseMs;\n\t\tif (idleReleaseMs === undefined) return;\n\t\tconst cutoff = now() - idleReleaseMs;\n\t\twhile (idle.length > 0 && idle[0] !== undefined) {\n\t\t\tconst oldest = idle[0];\n\t\t\tif (oldest.idleSince > cutoff) break;\n\t\t\tidle.shift();\n\t\t\tvoid destroyConn(oldest.conn);\n\t\t}\n\t};\n\n\tconst sweepTimer =\n\t\toptions.idleReleaseMs === undefined\n\t\t\t? undefined\n\t\t\t: setInterval(sweepIdle, options.idleReleaseMs);\n\tsweepTimer?.unref?.();\n\n\tconst canGrant = (tenant: string) =>\n\t\tinUse < options.maxTotal &&\n\t\t(options.maxPerTenant === undefined ||\n\t\t\t(inUseByTenant.get(tenant) ?? 0) < options.maxPerTenant);\n\n\t// In-use counts are reserved BEFORE the (async) create/validate runs,\n\t// so concurrent leases can never oversubscribe the caps.\n\tconst reserve = (tenant: string) => {\n\t\tinUse += 1;\n\t\tinUseByTenant.set(tenant, (inUseByTenant.get(tenant) ?? 0) + 1);\n\t};\n\n\tconst unreserve = (tenant: string) => {\n\t\tinUse -= 1;\n\t\tconst count = inUseByTenant.get(tenant) ?? 0;\n\t\tif (count <= 1) inUseByTenant.delete(tenant);\n\t\telse inUseByTenant.set(tenant, count - 1);\n\t\tif (drained && inUse === 0 && queue.length === 0) {\n\t\t\tresolveDrain?.();\n\t\t}\n\t};\n\n\t// Pop idle connections (validating each when configured) until one\n\t// passes, else open a fresh one. The caller has already reserved a\n\t// slot, so a create here can never breach the caps.\n\tconst takeIdle = (tenant: string) => {\n\t\tif (affinity === 'shared') return idle.pop();\n\t\tfor (let index = idle.length - 1; index >= 0; index -= 1) {\n\t\t\tconst entry = idle[index];\n\t\t\tif (entry?.tenant !== tenant) continue;\n\t\t\tidle.splice(index, 1);\n\n\t\t\treturn entry;\n\t\t}\n\n\t\treturn undefined;\n\t};\n\tconst acquireConn = async (tenant: string): Promise<Conn> => {\n\t\tlet entry = takeIdle(tenant);\n\t\twhile (entry !== undefined) {\n\t\t\tif (options.validate === undefined) return entry.conn;\n\t\t\tlet healthy = false;\n\t\t\ttry {\n\t\t\t\thealthy = await options.validate(entry.conn);\n\t\t\t} catch (error) {\n\t\t\t\toptions.onError?.(error, 'validate');\n\t\t\t}\n\t\t\tif (healthy) return entry.conn;\n\t\t\tcumulative.validationFailures += 1;\n\t\t\tawait destroyConn(entry.conn);\n\t\t\tentry = takeIdle(tenant);\n\t\t}\n\t\tif (affinity === 'tenant')\n\t\t\twhile (inUse + idle.length > options.maxTotal) {\n\t\t\t\tconst displaced = idle.shift();\n\t\t\t\tif (displaced === undefined) break;\n\t\t\t\tawait destroyConn(displaced.conn);\n\t\t\t}\n\t\ttry {\n\t\t\tconst conn = await options.create(tenant);\n\t\t\tcumulative.created += 1;\n\t\t\treturn conn;\n\t\t} catch (error) {\n\t\t\toptions.onError?.(error, 'create');\n\t\t\tthrow error;\n\t\t}\n\t};\n\n\tconst endSpanWithError = (span: TelemetrySpan, error: unknown) => {\n\t\tconst spanError =\n\t\t\terror instanceof Error ? error : new Error(String(error));\n\t\tspan.recordException(spanError);\n\t\tspan.setStatus({\n\t\t\tcode: 2 /* SpanStatusCode.ERROR */,\n\t\t\tmessage: spanError.message\n\t\t});\n\t\tspan.end();\n\t};\n\n\tconst makeLease = (tenant: string, conn: Conn): ConnectionLease<Conn> => {\n\t\tcumulative.leases += 1;\n\t\tlet released = false;\n\t\treturn {\n\t\t\tconn,\n\t\t\trelease: () => {\n\t\t\t\t// Idempotent: a double release must not corrupt the counts\n\t\t\t\t// or hand the same connection to two callers.\n\t\t\t\tif (released) return;\n\t\t\t\treleased = true;\n\t\t\t\tcumulative.releases += 1;\n\t\t\t\tif (disposed) {\n\t\t\t\t\tvoid destroyConn(conn);\n\t\t\t\t} else {\n\t\t\t\t\tidle.push({ conn, idleSince: now(), tenant });\n\t\t\t\t}\n\t\t\t\tunreserve(tenant);\n\t\t\t\tpump();\n\t\t\t}\n\t\t};\n\t};\n\n\t// Deliver a connection to a waiter whose slot is already reserved.\n\tconst grantTo = async (waiter: Waiter<Conn>) => {\n\t\ttry {\n\t\t\tconst conn = await acquireConn(waiter.tenant);\n\t\t\twaiter.span.setAttribute(\n\t\t\t\tQUEUE_WAIT_ATTR,\n\t\t\t\tnow() - waiter.enqueuedAt\n\t\t\t);\n\t\t\twaiter.span.end();\n\t\t\twaiter.resolve(makeLease(waiter.tenant, conn));\n\t\t} catch (error) {\n\t\t\tunreserve(waiter.tenant);\n\t\t\tendSpanWithError(waiter.span, error);\n\t\t\twaiter.reject(error);\n\t\t\tpump();\n\t\t}\n\t};\n\n\t// Scan the FIFO queue from the front and grant every waiter whose caps\n\t// now have room. Reservation is synchronous, so one release hands its\n\t// slot to exactly one waiter.\n\tconst pump = () => {\n\t\tif (disposed) return;\n\t\tlet index = 0;\n\t\twhile (index < queue.length) {\n\t\t\tconst waiter = queue[index];\n\t\t\tif (waiter === undefined) break;\n\t\t\tif (!canGrant(waiter.tenant)) {\n\t\t\t\tindex += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tqueue.splice(index, 1);\n\t\t\tif (waiter.timer !== undefined) clearTimeout(waiter.timer);\n\t\t\treserve(waiter.tenant);\n\t\t\tvoid grantTo(waiter);\n\t\t}\n\t};\n\n\tconst rejectQueued = (error: () => Error) => {\n\t\tconst waiting = queue.splice(0, queue.length);\n\t\tfor (const waiter of waiting) {\n\t\t\tif (waiter.timer !== undefined) clearTimeout(waiter.timer);\n\t\t\tconst rejection = error();\n\t\t\tendSpanWithError(waiter.span, rejection);\n\t\t\twaiter.reject(rejection);\n\t\t}\n\t};\n\n\tconst lease = async (tenant: string): Promise<ConnectionLease<Conn>> => {\n\t\tif (drained) throw new ConnectionBrokerDrainedError();\n\t\tsweepIdle();\n\t\tconst span = tracer.startSpan('sync.broker_lease', {\n\t\t\tattributes: { [ABS_ATTRS.tenant]: tenant }\n\t\t});\n\t\tconst startedAt = now();\n\t\tif (canGrant(tenant)) {\n\t\t\treserve(tenant);\n\t\t\ttry {\n\t\t\t\tconst conn = await acquireConn(tenant);\n\t\t\t\tspan.setAttribute(QUEUE_WAIT_ATTR, now() - startedAt);\n\t\t\t\tspan.end();\n\t\t\t\treturn makeLease(tenant, conn);\n\t\t\t} catch (error) {\n\t\t\t\tunreserve(tenant);\n\t\t\t\tendSpanWithError(span, error);\n\t\t\t\tpump();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\treturn new Promise<ConnectionLease<Conn>>((resolve, reject) => {\n\t\t\tconst waiter: Waiter<Conn> = {\n\t\t\t\tenqueuedAt: startedAt,\n\t\t\t\treject,\n\t\t\t\tresolve,\n\t\t\t\tspan,\n\t\t\t\ttenant,\n\t\t\t\ttimer: undefined\n\t\t\t};\n\t\t\tif (options.acquireTimeoutMs !== undefined) {\n\t\t\t\tconst timeoutMs = options.acquireTimeoutMs;\n\t\t\t\twaiter.timer = setTimeout(() => {\n\t\t\t\t\tconst position = queue.indexOf(waiter);\n\t\t\t\t\tif (position === -1) return;\n\t\t\t\t\tqueue.splice(position, 1);\n\t\t\t\t\tcumulative.timeouts += 1;\n\t\t\t\t\tconst timeout = new LeaseTimeoutError(tenant, timeoutMs);\n\t\t\t\t\tendSpanWithError(span, timeout);\n\t\t\t\t\treject(timeout);\n\t\t\t\t}, timeoutMs);\n\t\t\t}\n\t\t\tqueue.push(waiter);\n\t\t});\n\t};\n\n\tconst drain = () => {\n\t\tdrained = true;\n\t\tif (drainPromise === undefined) {\n\t\t\tdrainPromise =\n\t\t\t\tinUse === 0 && queue.length === 0\n\t\t\t\t\t? Promise.resolve()\n\t\t\t\t\t: new Promise<void>((resolve) => {\n\t\t\t\t\t\t\tresolveDrain = resolve;\n\t\t\t\t\t\t});\n\t\t}\n\t\treturn drainPromise;\n\t};\n\n\treturn {\n\t\tdispose: async () => {\n\t\t\tdrained = true;\n\t\t\tdisposed = true;\n\t\t\tif (sweepTimer !== undefined) clearInterval(sweepTimer);\n\t\t\trejectQueued(() => new ConnectionBrokerDrainedError());\n\t\t\tconst pooled = idle.splice(0, idle.length);\n\t\t\tawait Promise.all(pooled.map((entry) => destroyConn(entry.conn)));\n\t\t\tif (inUse === 0) resolveDrain?.();\n\t\t},\n\t\tdrain,\n\t\tlease,\n\t\tmetrics: () => ({\n\t\t\tbyTenant: Object.fromEntries(inUseByTenant),\n\t\t\tcumulative: { ...cumulative },\n\t\t\tidle: idle.length,\n\t\t\tinUse,\n\t\t\tqueued: queue.length\n\t\t}),\n\t\twithLease: async (tenant, fn) => {\n\t\t\tconst { conn, release } = await lease(tenant);\n\t\t\ttry {\n\t\t\t\treturn await fn(conn);\n\t\t\t} finally {\n\t\t\t\trelease();\n\t\t\t}\n\t\t}\n\t};\n};\n",
|
|
8
8
|
"/**\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",
|
|
9
9
|
"import { Elysia } from 'elysia';\nimport { SYNC_OPEN_TOPIC } from './reactiveHub';\nimport type { ReactiveEvent, ReactiveHub } from './reactiveHub';\n\nexport type SyncRequestContext = {\n\tcookies: Record<string, unknown>;\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?: (\n\t\tcontext: SyncRequestContext\n\t) => Promise<string[]> | 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\tasync (context) => {\n\t\t\tconst cookies = Object.fromEntries(\n\t\t\t\tObject.entries(context.cookie).map(([name, cookie]) => [\n\t\t\t\t\tname,\n\t\t\t\t\tcookie.value\n\t\t\t\t])\n\t\t\t);\n\t\t\tconst topics = await resolveTopics({\n\t\t\t\tcookies,\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",
|
|
10
10
|
"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",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"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",
|
|
23
23
|
"/**\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"
|
|
24
24
|
],
|
|
25
|
-
"mappings": "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",
|
|
26
|
-
"debugId": "
|
|
25
|
+
"mappings": "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",
|
|
26
|
+
"debugId": "456583ECD822321E64756E2164756E21",
|
|
27
27
|
"names": []
|
|
28
28
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absolutejs/sync",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.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",
|