@sveltebase/sync 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/live-query.svelte.d.ts.map +1 -1
- package/dist/client/status.svelte.d.ts.map +1 -1
- package/dist/cloudflare/handler.d.ts +0 -1
- package/dist/cloudflare/handler.d.ts.map +1 -1
- package/dist/cloudflare/handler.js +11 -20
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/server/auth.d.ts +8 -0
- package/dist/server/auth.d.ts.map +1 -0
- package/dist/server/auth.js +19 -0
- package/dist/server/broker.d.ts +1 -3
- package/dist/server/broker.d.ts.map +1 -1
- package/dist/server/broker.js +15 -29
- package/dist/server/dev-engine.d.ts.map +1 -1
- package/dist/server/dev-engine.js +2 -8
- package/dist/server/engine.d.ts.map +1 -1
- package/dist/server/engine.js +1 -10
- package/dist/server/handler.d.ts +4 -12
- package/dist/server/handler.d.ts.map +1 -1
- package/dist/server/handler.js +21 -18
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/sveltekit/index.d.ts.map +1 -1
- package/dist/sveltekit/index.js +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -108,16 +108,18 @@ export { SyncEngine };
|
|
|
108
108
|
|
|
109
109
|
## Publishing Server Events
|
|
110
110
|
|
|
111
|
-
Publishing
|
|
111
|
+
Publishing targets the current one-worker sync runtime automatically. In production, `createSyncAppWorker()` registers `env.SYNC_ENGINE`; in Vite dev, `syncDevPlugin()` provides the in-process broker.
|
|
112
112
|
|
|
113
113
|
```ts
|
|
114
|
-
import { createPublisher } from "@sveltebase/sync/server";
|
|
114
|
+
import { createBulkPublisher, createPublisher } from "@sveltebase/sync/server";
|
|
115
115
|
|
|
116
|
-
const publish = createPublisher(
|
|
117
|
-
|
|
118
|
-
});
|
|
116
|
+
const publish = createPublisher();
|
|
117
|
+
const publishBulk = createBulkPublisher();
|
|
119
118
|
|
|
120
119
|
await publish("todos", "update", todo.id, todo);
|
|
120
|
+
await publishBulk("todos", [
|
|
121
|
+
{ action: "update", key: todo.id, data: todo },
|
|
122
|
+
]);
|
|
121
123
|
```
|
|
122
124
|
|
|
123
125
|
## Vite Dev
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC,CAAC;AAaF,cAAM,eAAe,CACnB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACzD,SAAQ,KAAK;IACb,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAqB;IAG3C,OAAO,CAAC,YAAY,CAA0B;IAG9C,OAAO,CAAC,gBAAgB,CAAsC;IAE9D,OAAO,CAAC,aAAa,CAMb;gBAEI,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;KACrD;IAoBD,IAAW,MAAM,gDAEhB;IAED,OAAO,CAAC,cAAc;YAiJR,OAAO;IAuFd,SAAS;IAgBhB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;YAOP,kBAAkB;IAoBhC,OAAO,CAAC,kBAAkB;YAkBZ,UAAU;YAiBV,aAAa;YAqBb,mBAAmB;IAyFjC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,eAAe;IAqChB,UAAU;CAelB;AAED,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG;KAC5G,CAAC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACxC,GAAG;IACF,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,OAAO,EAAE;IACT,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;CACrD,KAAK,UAAU,CAAC,OAAO,CAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC,CAAC;AAaF,cAAM,eAAe,CACnB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACzD,SAAQ,KAAK;IACb,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAqB;IAG3C,OAAO,CAAC,YAAY,CAA0B;IAG9C,OAAO,CAAC,gBAAgB,CAAsC;IAE9D,OAAO,CAAC,aAAa,CAMb;gBAEI,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;KACrD;IAoBD,IAAW,MAAM,gDAEhB;IAED,OAAO,CAAC,cAAc;YAiJR,OAAO;IAuFd,SAAS;IAgBhB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;YAOP,kBAAkB;IAoBhC,OAAO,CAAC,kBAAkB;YAkBZ,UAAU;YAiBV,aAAa;YAqBb,mBAAmB;IAyFjC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,eAAe;IAqChB,UAAU;CAelB;AAED,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG;KAC5G,CAAC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACxC,GAAG;IACF,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,OAAO,EAAE;IACT,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;CACrD,KAAK,UAAU,CAAC,OAAO,CAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-query.svelte.d.ts","sourceRoot":"","sources":["live-query.svelte.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC7B,YAAY,CAAC,EAAE,MAAM,OAAO,EAAE,GAC7B,cAAc,CAAC,CAAC,CAAC,CA6BnB"}
|
|
1
|
+
{"version":3,"file":"live-query.svelte.d.ts","sourceRoot":"","sources":["../../src/client/live-query.svelte.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC7B,YAAY,CAAC,EAAE,MAAM,OAAO,EAAE,GAC7B,cAAc,CAAC,CAAC,CAAC,CA6BnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.svelte.d.ts","sourceRoot":"","sources":["status.svelte.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAqE;IAEnF,IAAI,KAAK,IAIW,YAAY,GAAG,WAAW,GAAG,cAAc,CAF9D;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,cAAc,EAE9D;CACF"}
|
|
1
|
+
{"version":3,"file":"status.svelte.d.ts","sourceRoot":"","sources":["../../src/client/status.svelte.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAqE;IAEnF,IAAI,KAAK,IAIW,YAAY,GAAG,WAAW,GAAG,cAAc,CAF9D;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,cAAc,EAE9D;CACF"}
|
|
@@ -4,7 +4,6 @@ export declare function configureSyncEngine(handlers: SyncHandler[]): void;
|
|
|
4
4
|
export declare function getSyncEngineHandlers(): SyncHandler<any, any>[];
|
|
5
5
|
export type SyncWorkerOptions<TAuth = unknown> = {
|
|
6
6
|
handlers: SyncHandler[];
|
|
7
|
-
durableObjectBinding?: string;
|
|
8
7
|
websocketPath?: string;
|
|
9
8
|
auth?: (request: Request, platform: SyncPlatform) => Promise<SyncAuthResult<TAuth>> | SyncAuthResult<TAuth>;
|
|
10
9
|
identity?: (auth: TAuth) => string | number | bigint | null | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/cloudflare/handler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/cloudflare/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4BpE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAE1D;AAED,wBAAgB,qBAAqB,4BAEpC;AAED,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,OAAO,IAAI;IAC/C,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,CACL,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,KACnB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAkFF,wBAAsB,iBAAiB,CAAC,KAAK,GAAG,OAAO,EACrD,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,qBAsClC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import { INTERNAL_AUTH_HEADER, } from "../server/handler.js";
|
|
1
|
+
import { configurePublisherPlatform, INTERNAL_AUTH_HEADER, } from "../server/handler.js";
|
|
2
|
+
import { resolveIdentity, serializeConnectionAuth } from "../server/auth.js";
|
|
2
3
|
let activeHandlers = [];
|
|
3
|
-
function defaultIdentity(auth) {
|
|
4
|
-
const value = auth?.identity ?? auth?.user?.id ?? auth?.userId;
|
|
5
|
-
return value == null ? null : String(value);
|
|
6
|
-
}
|
|
7
|
-
function serializeConnectionAuth(auth, identity) {
|
|
8
|
-
const payload = { auth, identity };
|
|
9
|
-
return btoa(unescape(encodeURIComponent(JSON.stringify(payload))));
|
|
10
|
-
}
|
|
11
4
|
function createPlatform(request, env, ctx) {
|
|
12
5
|
return {
|
|
13
6
|
env,
|
|
@@ -31,10 +24,12 @@ export function configureSyncEngine(handlers) {
|
|
|
31
24
|
export function getSyncEngineHandlers() {
|
|
32
25
|
return activeHandlers;
|
|
33
26
|
}
|
|
34
|
-
async function forwardToEngine(request, env
|
|
35
|
-
const namespace = env
|
|
27
|
+
async function forwardToEngine(request, env) {
|
|
28
|
+
const namespace = env.SYNC_ENGINE;
|
|
36
29
|
if (!namespace) {
|
|
37
|
-
return new Response(
|
|
30
|
+
return new Response("Missing SYNC_ENGINE Durable Object binding", {
|
|
31
|
+
status: 500,
|
|
32
|
+
});
|
|
38
33
|
}
|
|
39
34
|
const id = namespace.idFromName("global");
|
|
40
35
|
return namespace.get(id).fetch(request);
|
|
@@ -57,10 +52,7 @@ async function handleWebSocket(request, env, ctx, options) {
|
|
|
57
52
|
return new Response("Unauthorized", { status: 401 });
|
|
58
53
|
}
|
|
59
54
|
if (resolvedAuth) {
|
|
60
|
-
|
|
61
|
-
? options.identity(resolvedAuth)
|
|
62
|
-
: defaultIdentity(resolvedAuth);
|
|
63
|
-
identity = identityValue == null ? null : String(identityValue);
|
|
55
|
+
identity = resolveIdentity(resolvedAuth, options.identity);
|
|
64
56
|
}
|
|
65
57
|
}
|
|
66
58
|
else if (options.allowUnauthenticated === false) {
|
|
@@ -75,12 +67,12 @@ async function handleWebSocket(request, env, ctx, options) {
|
|
|
75
67
|
for (const [key, value] of forwardedHeaders) {
|
|
76
68
|
forwardedRequest.headers.set(key, value);
|
|
77
69
|
}
|
|
78
|
-
return forwardToEngine(forwardedRequest, env
|
|
70
|
+
return forwardToEngine(forwardedRequest, env);
|
|
79
71
|
}
|
|
80
72
|
export async function handleSyncRequest(request, env, ctx, options) {
|
|
81
73
|
configureSyncEngine(options.handlers);
|
|
74
|
+
configurePublisherPlatform({ env });
|
|
82
75
|
const url = new URL(request.url);
|
|
83
|
-
const durableObjectBinding = options.durableObjectBinding ?? "SYNC_ENGINE";
|
|
84
76
|
const websocketPath = options.websocketPath ?? "/api/sync";
|
|
85
77
|
const authMetadata = options.auth;
|
|
86
78
|
const allowUnauthenticated = options.allowUnauthenticated ??
|
|
@@ -89,7 +81,6 @@ export async function handleSyncRequest(request, env, ctx, options) {
|
|
|
89
81
|
if (url.pathname === websocketPath && request.method === "GET") {
|
|
90
82
|
return handleWebSocket(request, env, ctx, {
|
|
91
83
|
...options,
|
|
92
|
-
durableObjectBinding,
|
|
93
84
|
websocketPath,
|
|
94
85
|
allowUnauthenticated,
|
|
95
86
|
});
|
|
@@ -102,7 +93,7 @@ export async function handleSyncRequest(request, env, ctx, options) {
|
|
|
102
93
|
request.method === "POST") {
|
|
103
94
|
const headers = new Headers(request.headers);
|
|
104
95
|
headers.delete(INTERNAL_AUTH_HEADER);
|
|
105
|
-
return forwardToEngine(new Request(request, { headers }), env
|
|
96
|
+
return forwardToEngine(new Request(request, { headers }), env);
|
|
106
97
|
}
|
|
107
98
|
return new Response("Not found", { status: 404 });
|
|
108
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,GAAG,OAAO,EACjD,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAChC,eAAe,CA0BjB;AAED,qBAAa,UAAW,SAAQ,cAAc;gBAChC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGlE"}
|
package/dist/cloudflare/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { SyncEngineBase } from "../server/engine.js";
|
|
2
|
+
import { configurePublisherPlatform } from "../server/handler.js";
|
|
2
3
|
import { configureSyncEngine, getSyncEngineHandlers, handleSyncRequest, } from "./handler.js";
|
|
3
4
|
export { configureSyncEngine, handleSyncRequest, } from "./handler.js";
|
|
4
5
|
export function createSyncAppWorker(app, options) {
|
|
5
6
|
configureSyncEngine(options.handlers);
|
|
6
7
|
return {
|
|
7
8
|
async fetch(request, env, ctx) {
|
|
9
|
+
configurePublisherPlatform({ env: env });
|
|
8
10
|
const url = new URL(request.url);
|
|
9
11
|
const websocketPath = options.websocketPath ?? "/api/sync";
|
|
10
12
|
if ((url.pathname === websocketPath && request.method === "GET") ||
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { SyncClient, createLiveQuery } from "./client/index.js";
|
|
2
2
|
export type { LiveQueryState } from "./client/index.js";
|
|
3
3
|
export { defineSync } from "./server/index.js";
|
|
4
|
-
export type { BulkPublishFn,
|
|
4
|
+
export type { BulkPublishFn, PublishEventData, PublishFn, SyncAuthResult, SyncConnectionAuth, SyncContext, SyncHandler, SyncPlatform, } from "./server/index.js";
|
|
5
5
|
export type { SyncMessage } from "./protocol.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["protocol.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GACD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACvC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC,CAAC;CACJ,CAAC;AAEN,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAcjE"}
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GACD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACvC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC,CAAC;CACJ,CAAC;AAEN,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAcjE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type SerializedConnectionAuth = {
|
|
2
|
+
auth: any;
|
|
3
|
+
identity: string | null;
|
|
4
|
+
};
|
|
5
|
+
export declare function resolveIdentity(auth: any, identity?: (auth: any) => string | number | bigint | null | undefined): string | null;
|
|
6
|
+
export declare function serializeConnectionAuth(auth: any, identity: string | null): string;
|
|
7
|
+
export declare function deserializeConnectionAuth(value: string | null): SerializedConnectionAuth | null;
|
|
8
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,EACT,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACpE,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAIR;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,wBAAwB,GAAG,IAAI,CAQjC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function resolveIdentity(auth, identity) {
|
|
2
|
+
const value = identity
|
|
3
|
+
? identity(auth)
|
|
4
|
+
: (auth?.identity ?? auth?.user?.id ?? auth?.userId);
|
|
5
|
+
return value == null ? null : String(value);
|
|
6
|
+
}
|
|
7
|
+
export function serializeConnectionAuth(auth, identity) {
|
|
8
|
+
return btoa(unescape(encodeURIComponent(JSON.stringify({ auth, identity }))));
|
|
9
|
+
}
|
|
10
|
+
export function deserializeConnectionAuth(value) {
|
|
11
|
+
if (!value)
|
|
12
|
+
return null;
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(decodeURIComponent(escape(atob(value))));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
package/dist/server/broker.d.ts
CHANGED
|
@@ -12,14 +12,12 @@ export interface ISyncConnection {
|
|
|
12
12
|
}
|
|
13
13
|
export declare class SyncBroker {
|
|
14
14
|
private handlers;
|
|
15
|
+
private dynamicHandlers;
|
|
15
16
|
private connections;
|
|
16
17
|
constructor(handlers: SyncHandler[]);
|
|
17
18
|
setHandlers(handlers: SyncHandler[]): void;
|
|
18
19
|
registerConnection(conn: ISyncConnection): void;
|
|
19
20
|
removeConnection(conn: ISyncConnection): void;
|
|
20
|
-
/**
|
|
21
|
-
* Resolves the appropriate handler for a channel name.
|
|
22
|
-
*/
|
|
23
21
|
private findHandler;
|
|
24
22
|
handleMessage(conn: ISyncConnection, rawMessage: string, platform: SyncPlatform, request: Request): Promise<void>;
|
|
25
23
|
private broadcastChange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["broker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,GAAG,CAAC;IACf,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,qBAAqB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/server/broker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,GAAG,CAAC;IACf,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,qBAAqB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAmC;gBAE1C,QAAQ,EAAE,WAAW,EAAE;IAI5B,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE;IAanC,kBAAkB,CAAC,IAAI,EAAE,eAAe;IAIxC,gBAAgB,CAAC,IAAI,EAAE,eAAe;IAI7C,OAAO,CAAC,WAAW;IAyBN,aAAa,CACxB,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO;YA2IJ,eAAe;IAmDhB,oBAAoB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACtC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,GAAG;IAqBE,yBAAyB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;CAkBvF"}
|
package/dist/server/broker.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { parseSyncMessage } from "../protocol.js";
|
|
2
2
|
export class SyncBroker {
|
|
3
|
-
handlers;
|
|
3
|
+
handlers = new Map();
|
|
4
|
+
dynamicHandlers = [];
|
|
4
5
|
connections = new Set();
|
|
5
6
|
constructor(handlers) {
|
|
6
|
-
this.handlers = new Map();
|
|
7
7
|
this.setHandlers(handlers);
|
|
8
8
|
}
|
|
9
9
|
setHandlers(handlers) {
|
|
10
10
|
this.handlers.clear();
|
|
11
|
+
this.dynamicHandlers = [];
|
|
11
12
|
for (const h of handlers) {
|
|
12
|
-
// Resolve static channel to register, or we can register dynamic channel routing
|
|
13
|
-
// If it's a dynamic channel resolver function, we will match channel prefix or resolve dynamically
|
|
14
|
-
// Let's support both static channels and dynamic channel prefixes (or lookups).
|
|
15
|
-
// If config.channel is a function, we register it under a wildcard or handle it dynamically.
|
|
16
13
|
if (typeof h.config.channel === "string") {
|
|
17
14
|
this.handlers.set(h.config.channel, h);
|
|
18
15
|
}
|
|
16
|
+
else {
|
|
17
|
+
this.dynamicHandlers.push(h);
|
|
18
|
+
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
registerConnection(conn) {
|
|
@@ -24,33 +24,19 @@ export class SyncBroker {
|
|
|
24
24
|
removeConnection(conn) {
|
|
25
25
|
this.connections.delete(conn);
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
* Resolves the appropriate handler for a channel name.
|
|
29
|
-
*/
|
|
30
|
-
findHandler(channel) {
|
|
31
|
-
// Static match
|
|
27
|
+
findHandler(channel, ctx) {
|
|
32
28
|
const handler = this.handlers.get(channel);
|
|
33
29
|
if (handler)
|
|
34
30
|
return handler;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// We'll check if it matches in some way, but generally dynamic channel is resolved
|
|
39
|
-
// during subscribe and stored.
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// Fallback: search all handlers to see if they resolve to this channel for a generic context
|
|
43
|
-
// (this is rare, usually channels are static or follow a pattern like channel:userId)
|
|
44
|
-
for (const [, h] of this.handlers) {
|
|
45
|
-
if (typeof h.config.channel === "function") {
|
|
46
|
-
// Let's assume dynamic channels are in format "prefix:id". We can match by prefix.
|
|
47
|
-
const staticChannelPrefix = typeof h.config.channel === "string" ? h.config.channel : "";
|
|
48
|
-
if (staticChannelPrefix && channel.startsWith(staticChannelPrefix)) {
|
|
31
|
+
for (const h of this.dynamicHandlers) {
|
|
32
|
+
try {
|
|
33
|
+
if (h.resolveChannel(ctx) === channel)
|
|
49
34
|
return h;
|
|
50
|
-
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Ignore handlers that cannot resolve for this connection context.
|
|
51
38
|
}
|
|
52
39
|
}
|
|
53
|
-
// Let's support matching prefix like "todos:" -> match the todos handler
|
|
54
40
|
const colonIndex = channel.indexOf(":");
|
|
55
41
|
if (colonIndex !== -1) {
|
|
56
42
|
const prefix = channel.substring(0, colonIndex);
|
|
@@ -77,7 +63,7 @@ export class SyncBroker {
|
|
|
77
63
|
conn.send("pong");
|
|
78
64
|
break;
|
|
79
65
|
case "subscribe": {
|
|
80
|
-
const handler = this.findHandler(msg.channel);
|
|
66
|
+
const handler = this.findHandler(msg.channel, ctx);
|
|
81
67
|
if (!handler) {
|
|
82
68
|
conn.send(JSON.stringify({
|
|
83
69
|
type: "reject",
|
|
@@ -105,7 +91,7 @@ export class SyncBroker {
|
|
|
105
91
|
conn.getSubscribedChannels().delete(msg.channel);
|
|
106
92
|
break;
|
|
107
93
|
case "mutate": {
|
|
108
|
-
const handler = this.findHandler(msg.channel);
|
|
94
|
+
const handler = this.findHandler(msg.channel, ctx);
|
|
109
95
|
if (!handler) {
|
|
110
96
|
conn.send(JSON.stringify({
|
|
111
97
|
type: "reject",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-engine.d.ts","sourceRoot":"","sources":["dev-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-engine.d.ts","sourceRoot":"","sources":["../../src/server/dev-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAW5D,MAAM,MAAM,kBAAkB,CAAC,KAAK,GAAG,OAAO,IAAI;IAChD,IAAI,CAAC,EAAE,CACL,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,KACnB,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC;IACvE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAkBF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,QAWlD;AAuED,wBAAsB,SAAS,CAC7B,EAAE,EAAE;IACF,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CACjE,EACD,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAwElB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACtC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,GAAG,iBAIV;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC,iBAIH"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveIdentity } from "./auth.js";
|
|
1
2
|
import { SyncBroker } from "./broker.js";
|
|
2
3
|
const GLOBAL_BROKER_KEY = "__sveltebase_sync_dev_broker__";
|
|
3
4
|
const GLOBAL_PLATFORM_KEY = "__sveltebase_sync_dev_platform__";
|
|
@@ -82,10 +83,6 @@ async function resolvePlatform(options) {
|
|
|
82
83
|
return platform;
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
|
-
function defaultIdentity(auth) {
|
|
86
|
-
const value = auth?.identity ?? auth?.user?.id ?? auth?.userId;
|
|
87
|
-
return value == null ? null : String(value);
|
|
88
|
-
}
|
|
89
86
|
export async function addClient(ws, req, options) {
|
|
90
87
|
const broker = getDevBroker();
|
|
91
88
|
const request = requestFromIncomingMessage(req);
|
|
@@ -101,10 +98,7 @@ export async function addClient(ws, req, options) {
|
|
|
101
98
|
return false;
|
|
102
99
|
}
|
|
103
100
|
if (auth) {
|
|
104
|
-
|
|
105
|
-
? options.identity(auth)
|
|
106
|
-
: defaultIdentity(auth);
|
|
107
|
-
identity = identityValue == null ? null : String(identityValue);
|
|
101
|
+
identity = resolveIdentity(auth, options.identity);
|
|
108
102
|
}
|
|
109
103
|
}
|
|
110
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/server/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/server/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAC;AAE5D,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAqD7C,qBAAa,cAAe,SAAQ,aAAa,CAAC,aAAa,CAAC;IAC9D,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAkD;gBAG/D,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,WAAW,EAAE;IAMnB,KAAK,CAAC,OAAO,EAAE,OAAO;IAoC5B,OAAO,CAAC,gBAAgB;IA4BlB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW;IAoBnE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAa1D,cAAc,CAAC,EAAE,EAAE,SAAS;CAO7B"}
|
package/dist/server/engine.js
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { DurableObject } from "cloudflare:workers";
|
|
2
|
+
import { deserializeConnectionAuth } from "./auth.js";
|
|
2
3
|
import { SyncBroker } from "./broker.js";
|
|
3
4
|
import { INTERNAL_AUTH_HEADER } from "./handler.js";
|
|
4
|
-
function deserializeConnectionAuth(value) {
|
|
5
|
-
if (!value)
|
|
6
|
-
return null;
|
|
7
|
-
try {
|
|
8
|
-
return JSON.parse(decodeURIComponent(escape(atob(value))));
|
|
9
|
-
}
|
|
10
|
-
catch {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
5
|
class CloudflareSyncConnection {
|
|
15
6
|
ws;
|
|
16
7
|
auth = null;
|
package/dist/server/handler.d.ts
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SyncPlatform } from "./index.js";
|
|
2
2
|
export type SyncAuthResult<TAuth> = TAuth | null | undefined;
|
|
3
3
|
export declare const INTERNAL_AUTH_HEADER = "x-sveltebase-sync-auth";
|
|
4
4
|
export type PublishEventData<TRecord, TAction extends "create" | "update" | "delete"> = TAction extends "create" ? TRecord : TAction extends "update" ? Partial<TRecord> : {
|
|
5
5
|
updatedAt?: string;
|
|
6
6
|
} | undefined;
|
|
7
|
-
export type InferSchemaFromHandlers<T extends SyncHandler[]> = {
|
|
8
|
-
[K in T[number] as K["config"]["channel"] extends string ? K["config"]["channel"] : K["config"]["channel"] extends (...args: any[]) => infer R ? R extends string ? R : string : string]: K extends SyncHandler<infer TRow> ? TRow : never;
|
|
9
|
-
};
|
|
10
|
-
export type SyncPublisherOptions = {
|
|
11
|
-
durableObjectBinding?: string;
|
|
12
|
-
platform?: SyncPlatform;
|
|
13
|
-
};
|
|
14
7
|
export type PublishFn<TSchema extends Record<string, unknown>> = <TChannel extends keyof TSchema & string, TAction extends "create" | "update" | "delete">(channel: TChannel | `${TChannel}:${string}`, action: TAction, key: string | undefined, data: PublishEventData<TSchema[TChannel], TAction>) => Promise<void>;
|
|
15
8
|
export type BulkPublishFn<TSchema extends Record<string, unknown>> = <TChannel extends keyof TSchema & string>(channel: TChannel | `${TChannel}:${string}`, changes: Array<{
|
|
16
9
|
action: "create" | "update" | "delete";
|
|
17
10
|
key?: string;
|
|
18
11
|
data?: any;
|
|
19
12
|
}>) => Promise<void>;
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function createPublisher<
|
|
22
|
-
export declare function createBulkPublisher<TSchema extends Record<string, unknown>>(
|
|
23
|
-
export declare function createBulkPublisher<THandlers extends SyncHandler[]>(options: SyncPublisherOptions, handlers: THandlers): BulkPublishFn<InferSchemaFromHandlers<THandlers>>;
|
|
13
|
+
export declare function configurePublisherPlatform(platform: SyncPlatform): void;
|
|
14
|
+
export declare function createPublisher<TSchema extends Record<string, unknown>>(): PublishFn<TSchema>;
|
|
15
|
+
export declare function createBulkPublisher<TSchema extends Record<string, unknown>>(): BulkPublishFn<TSchema>;
|
|
24
16
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/server/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7D,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,MAAM,MAAM,gBAAgB,CAC1B,OAAO,EACP,OAAO,SAAS,QAAQ,GAAG,QAAQ,GAAG,QAAQ,IAC5C,OAAO,SAAS,QAAQ,GACxB,OAAO,GACP,OAAO,SAAS,QAAQ,GACtB,OAAO,CAAC,OAAO,CAAC,GAChB;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC;AAEzC,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC/D,QAAQ,SAAS,MAAM,OAAO,GAAG,MAAM,EACvC,OAAO,SAAS,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAE9C,OAAO,EAAE,QAAQ,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,EAC3C,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAC/C,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACnE,QAAQ,SAAS,MAAM,OAAO,GAAG,MAAM,EAEvC,OAAO,EAAE,QAAQ,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,EAC3C,OAAO,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC,KACC,OAAO,CAAC,IAAI,CAAC,CAAC;AASnB,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,QAMhE;AA8ED,wBAAgB,eAAe,CAC7B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACpC,SAAS,CAAC,OAAO,CAAC,CAAC;AAkBxB,wBAAgB,mBAAmB,CACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACpC,aAAa,CAAC,OAAO,CAAC,CAAC"}
|
package/dist/server/handler.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
export const INTERNAL_AUTH_HEADER = "x-sveltebase-sync-auth";
|
|
2
|
-
|
|
3
|
-
return options.platform?.env;
|
|
4
|
-
}
|
|
2
|
+
const GLOBAL_PLATFORM_KEY = "__sveltebase_sync_platform__";
|
|
5
3
|
function hasDevBroker() {
|
|
6
4
|
const globalObject = globalThis;
|
|
7
5
|
return Boolean(globalObject.__sveltebase_sync_dev_broker__);
|
|
8
6
|
}
|
|
9
|
-
|
|
10
|
-
const
|
|
7
|
+
export function configurePublisherPlatform(platform) {
|
|
8
|
+
const globalObject = globalThis;
|
|
9
|
+
globalObject[GLOBAL_PLATFORM_KEY] = platform;
|
|
10
|
+
}
|
|
11
|
+
function getPublisherPlatform() {
|
|
12
|
+
const globalObject = globalThis;
|
|
13
|
+
return globalObject[GLOBAL_PLATFORM_KEY];
|
|
14
|
+
}
|
|
15
|
+
async function publishToDurableObject(platform, pathname, body) {
|
|
16
|
+
const namespace = platform.env.SYNC_ENGINE;
|
|
11
17
|
if (!namespace) {
|
|
12
|
-
throw new Error(
|
|
18
|
+
throw new Error("Missing SYNC_ENGINE Durable Object binding");
|
|
13
19
|
}
|
|
14
20
|
const id = namespace.idFromName("global");
|
|
15
21
|
const stub = namespace.get(id);
|
|
@@ -30,23 +36,21 @@ async function publishToDevBroker(pathname, body) {
|
|
|
30
36
|
}
|
|
31
37
|
await devEngine.broadcastExternalChange(String(body.channel), body.action, body.key, body.data);
|
|
32
38
|
}
|
|
33
|
-
async function publish(
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
await publishToDurableObject(options.platform, durableObjectBinding, pathname, body);
|
|
39
|
+
async function publish(pathname, body) {
|
|
40
|
+
const platform = getPublisherPlatform();
|
|
41
|
+
if (platform?.env.SYNC_ENGINE) {
|
|
42
|
+
await publishToDurableObject(platform, pathname, body);
|
|
38
43
|
return;
|
|
39
44
|
}
|
|
40
45
|
if (hasDevBroker()) {
|
|
41
46
|
await publishToDevBroker(pathname, body);
|
|
42
47
|
return;
|
|
43
48
|
}
|
|
44
|
-
throw new Error(
|
|
49
|
+
throw new Error("Missing sync publisher target: use createSyncAppWorker() in production or syncDevPlugin() in Vite dev");
|
|
45
50
|
}
|
|
46
|
-
export function createPublisher(
|
|
47
|
-
void handlers;
|
|
51
|
+
export function createPublisher() {
|
|
48
52
|
return async (channel, action, key, data) => {
|
|
49
|
-
await publish(
|
|
53
|
+
await publish("/broadcast", {
|
|
50
54
|
channel: String(channel),
|
|
51
55
|
action,
|
|
52
56
|
key,
|
|
@@ -54,10 +58,9 @@ export function createPublisher(options, handlers) {
|
|
|
54
58
|
});
|
|
55
59
|
};
|
|
56
60
|
}
|
|
57
|
-
export function createBulkPublisher(
|
|
58
|
-
void handlers;
|
|
61
|
+
export function createBulkPublisher() {
|
|
59
62
|
return async (channel, changes) => {
|
|
60
|
-
await publish(
|
|
63
|
+
await publish("/broadcast-batch", {
|
|
61
64
|
channel: String(channel),
|
|
62
65
|
changes,
|
|
63
66
|
});
|
package/dist/server/index.d.ts
CHANGED
|
@@ -34,5 +34,5 @@ export interface SyncHandler<TRow = any, TAuth = any> {
|
|
|
34
34
|
}
|
|
35
35
|
export declare function defineSync<TRow = any, TAuth = any>(config: SyncHandlerConfig<TRow, TAuth>): SyncHandler<TRow, TAuth>;
|
|
36
36
|
export { createBulkPublisher, createPublisher, INTERNAL_AUTH_HEADER, } from "./handler.js";
|
|
37
|
-
export type { BulkPublishFn,
|
|
37
|
+
export type { BulkPublishFn, PublishEventData, PublishFn, SyncAuthResult, } from "./handler.js";
|
|
38
38
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sveltekit/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sveltekit/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,sBAAsB,CAAC,KAAK,GAAG,OAAO,IAChD,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAkB3B,wBAAgB,eAAe,CAAC,KAAK,GAAG,OAAO,EAC7C,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,GACrC;IACD,GAAG,EAAE,cAAc,CAAC;CACrB,CAyBA"}
|
package/dist/sveltekit/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { configurePublisherPlatform } from "../server/handler.js";
|
|
1
2
|
import { handleSyncRequest, } from "../cloudflare/handler.js";
|
|
2
3
|
function getExecutionContext(platform) {
|
|
3
4
|
const context = platform?.context ?? platform?.ctx;
|
|
@@ -15,6 +16,7 @@ export function syncEngineRoute(options) {
|
|
|
15
16
|
if (!env) {
|
|
16
17
|
return new Response("Missing Cloudflare platform env. Configure adapter-cloudflare platformProxy for Vite dev or run under wrangler.", { status: 500 });
|
|
17
18
|
}
|
|
19
|
+
configurePublisherPlatform({ env });
|
|
18
20
|
return handleSyncRequest(event.request, env, getExecutionContext(platform), options);
|
|
19
21
|
};
|
|
20
22
|
return {
|