@livestore/sync-cf 0.2.0 → 0.3.0-dev.10

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.
Files changed (66) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cf-worker/durable-object.d.ts +40 -34
  3. package/dist/cf-worker/durable-object.d.ts.map +1 -1
  4. package/dist/cf-worker/durable-object.js +158 -123
  5. package/dist/cf-worker/durable-object.js.map +1 -1
  6. package/dist/cf-worker/index.d.ts +1 -6
  7. package/dist/cf-worker/index.d.ts.map +1 -1
  8. package/dist/cf-worker/index.js +30 -64
  9. package/dist/cf-worker/index.js.map +1 -1
  10. package/dist/cf-worker/make-worker.d.ts +6 -0
  11. package/dist/cf-worker/make-worker.d.ts.map +1 -0
  12. package/dist/cf-worker/make-worker.js +31 -0
  13. package/dist/cf-worker/make-worker.js.map +1 -0
  14. package/dist/cf-worker/mod.d.ts +3 -0
  15. package/dist/cf-worker/mod.d.ts.map +1 -0
  16. package/dist/cf-worker/mod.js +3 -0
  17. package/dist/cf-worker/mod.js.map +1 -0
  18. package/dist/cf-worker/types.d.ts +2 -0
  19. package/dist/cf-worker/types.d.ts.map +1 -0
  20. package/dist/cf-worker/types.js +2 -0
  21. package/dist/cf-worker/types.js.map +1 -0
  22. package/dist/cf-worker/worker.d.ts +6 -0
  23. package/dist/cf-worker/worker.d.ts.map +1 -0
  24. package/dist/cf-worker/worker.js +29 -0
  25. package/dist/cf-worker/worker.js.map +1 -0
  26. package/dist/common/mod.d.ts +2 -0
  27. package/dist/common/mod.d.ts.map +1 -0
  28. package/dist/common/mod.js +2 -0
  29. package/dist/common/mod.js.map +1 -0
  30. package/dist/common/ws-message-types.d.ts +92 -216
  31. package/dist/common/ws-message-types.d.ts.map +1 -1
  32. package/dist/common/ws-message-types.js +13 -9
  33. package/dist/common/ws-message-types.js.map +1 -1
  34. package/dist/sync-impl/mod.d.ts +2 -0
  35. package/dist/sync-impl/mod.d.ts.map +1 -0
  36. package/dist/sync-impl/mod.js +2 -0
  37. package/dist/sync-impl/mod.js.map +1 -0
  38. package/dist/sync-impl/ws-impl.d.ts +5 -13
  39. package/dist/sync-impl/ws-impl.d.ts.map +1 -1
  40. package/dist/sync-impl/ws-impl.js +69 -69
  41. package/dist/sync-impl/ws-impl.js.map +1 -1
  42. package/package.json +17 -8
  43. package/src/cf-worker/durable-object.ts +233 -153
  44. package/src/cf-worker/mod.ts +2 -0
  45. package/src/cf-worker/worker.ts +39 -0
  46. package/src/common/ws-message-types.ts +18 -9
  47. package/src/sync-impl/ws-impl.ts +120 -121
  48. package/.netlify/state.json +0 -3
  49. package/.wrangler/state/v3/d1/miniflare-D1DatabaseObject/8ee300993f9a2c909aede59646369fa0cc28d25304b9b9af94f54d4543ad60f4.sqlite +0 -0
  50. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/2c3676d859102e448b271e1b4336b1e40778992b14728e2a2bd642c0f225e9c5.sqlite +0 -0
  51. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/6eb1111cecdc6ae7e3a38c3d7db0f3ec7de5b318e682cdcf0ff0dc881cbbcee7.sqlite +0 -0
  52. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/c4aa0e61dcd784604bee52282348e0538ab69ec76e1652322bbccd539d9ff3ee.sqlite +0 -0
  53. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/d87433156774c933da83e962eba16107cf02ade2f133d7205963558fe47db3ff.sqlite +0 -0
  54. package/.wrangler/tmp/dev-33iU4b/index.js +0 -42167
  55. package/.wrangler/tmp/dev-33iU4b/index.js.map +0 -8
  56. package/.wrangler/tmp/dev-9rcIR8/index.js +0 -18887
  57. package/.wrangler/tmp/dev-9rcIR8/index.js.map +0 -8
  58. package/.wrangler/tmp/dev-rI63Kk/index.js +0 -42165
  59. package/.wrangler/tmp/dev-rI63Kk/index.js.map +0 -8
  60. package/.wrangler/tmp/dev-txPodK/index.js +0 -42118
  61. package/.wrangler/tmp/dev-txPodK/index.js.map +0 -8
  62. package/src/cf-worker/index.ts +0 -84
  63. package/tsconfig.json +0 -12
  64. package/wrangler.toml +0 -21
  65. /package/src/common/{index.ts → mod.ts} +0 -0
  66. /package/src/sync-impl/{index.ts → mod.ts} +0 -0
@@ -1,67 +1,33 @@
1
1
  /// <reference no-default-lib="true"/>
2
2
  /// <reference lib="esnext" />
3
- export * from './durable-object.js';
4
- // const handleRequest = (request: Request, env: Env) =>
5
- // HttpServer.router.empty.pipe(
6
- // HttpServer.router.get(
7
- // '/websocket',
8
- // Effect.gen(function* () {
9
- // // This example will refer to the same Durable Object instance,
10
- // // since the name "foo" is hardcoded.
11
- // const id = env.WEBSOCKET_SERVER.idFromName('foo')
12
- // const durableObject = env.WEBSOCKET_SERVER.get(id)
13
- // HttpServer.
14
- // // Expect to receive a WebSocket Upgrade request.
15
- // // If there is one, accept the request and return a WebSocket Response.
16
- // const headerRes = yield* HttpServer.request
17
- // .schemaHeaders(
18
- // Schema.Struct({
19
- // Upgrade: Schema.Literal('websocket'),
20
- // }),
21
- // )
22
- // .pipe(Effect.either)
23
- // if (headerRes._tag === 'Left') {
24
- // // return new Response('Durable Object expected Upgrade: websocket', { status: 426 })
25
- // return yield* HttpServer.response.text('Durable Object expected Upgrade: websocket', { status: 426 })
26
- // }
27
- // HttpServer.response.empty
28
- // return yield* Effect.promise(() => durableObject.fetch(request))
29
- // }),
30
- // ),
31
- // HttpServer.router.catchAll((e) => {
32
- // console.log(e)
33
- // return HttpServer.response.empty({ status: 400 })
34
- // }),
35
- // (_) => HttpServer.app.toWebHandler(_)(request),
36
- // // request
37
- // )
38
- // Worker
39
- export default {
40
- fetch: async (request, env, _ctx) => {
41
- const url = new URL(request.url);
42
- const searchParams = url.searchParams;
43
- const roomId = searchParams.get('room');
44
- if (roomId === null) {
45
- return new Response('Room ID is required', { status: 400 });
46
- }
47
- // This example will refer to the same Durable Object instance,
48
- // since the name "foo" is hardcoded.
49
- const id = env.WEBSOCKET_SERVER.idFromName(roomId);
50
- const durableObject = env.WEBSOCKET_SERVER.get(id);
51
- if (url.pathname.endsWith('/websocket')) {
52
- const upgradeHeader = request.headers.get('Upgrade');
53
- if (!upgradeHeader || upgradeHeader !== 'websocket') {
54
- return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
55
- }
56
- return durableObject.fetch(request);
57
- }
58
- return new Response(null, {
59
- status: 400,
60
- statusText: 'Bad Request',
61
- headers: {
62
- 'Content-Type': 'text/plain',
63
- },
64
- });
65
- },
66
- };
3
+ export {};
4
+ // export * from './durable-object.js'
5
+ // export default {
6
+ // fetch: async (request: Request, env: Env, _ctx: ExecutionContext): Promise<Response> => {
7
+ // const url = new URL(request.url)
8
+ // const searchParams = url.searchParams
9
+ // const roomId = searchParams.get('room')
10
+ // if (roomId === null) {
11
+ // return new Response('Room ID is required', { status: 400 })
12
+ // }
13
+ // // This example will refer to the same Durable Object instance,
14
+ // // since the name "foo" is hardcoded.
15
+ // const id = env.WEBSOCKET_SERVER.idFromName(roomId)
16
+ // const durableObject = env.WEBSOCKET_SERVER.get(id)
17
+ // if (url.pathname.endsWith('/websocket')) {
18
+ // const upgradeHeader = request.headers.get('Upgrade')
19
+ // if (!upgradeHeader || upgradeHeader !== 'websocket') {
20
+ // return new Response('Durable Object expected Upgrade: websocket', { status: 426 })
21
+ // }
22
+ // return durableObject.fetch(request)
23
+ // }
24
+ // return new Response(null, {
25
+ // status: 400,
26
+ // statusText: 'Bad Request',
27
+ // headers: {
28
+ // 'Content-Type': 'text/plain',
29
+ // },
30
+ // })
31
+ // },
32
+ // }
67
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cf-worker/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,8BAA8B;AAO9B,cAAc,qBAAqB,CAAA;AAEnC,wDAAwD;AACxD,kCAAkC;AAClC,6BAA6B;AAC7B,sBAAsB;AACtB,kCAAkC;AAClC,0EAA0E;AAC1E,gDAAgD;AAChD,4DAA4D;AAC5D,6DAA6D;AAE7D,sBAAsB;AAEtB,4DAA4D;AAC5D,kFAAkF;AAClF,sDAAsD;AACtD,4BAA4B;AAC5B,8BAA8B;AAC9B,sDAAsD;AACtD,kBAAkB;AAClB,cAAc;AACd,iCAAiC;AAEjC,2CAA2C;AAC3C,kGAAkG;AAClG,kHAAkH;AAClH,YAAY;AAEZ,oCAAoC;AAEpC,2EAA2E;AAC3E,YAAY;AACZ,SAAS;AACT,0CAA0C;AAC1C,uBAAuB;AACvB,0DAA0D;AAC1D,UAAU;AACV,sDAAsD;AACtD,iBAAiB;AACjB,MAAM;AAEN,SAAS;AACT,eAAe;IACb,KAAK,EAAE,KAAK,EAAE,OAAgB,EAAE,GAAQ,EAAE,IAAsB,EAAqB,EAAE;QACrF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC;QAED,+DAA+D;QAC/D,qCAAqC;QACrC,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAElD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACpD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;gBACpD,OAAO,IAAI,QAAQ,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACpF,CAAC;YAED,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,aAAa;YACzB,OAAO,EAAE;gBACP,cAAc,EAAE,YAAY;aAC7B;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cf-worker/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,8BAA8B;;AAI9B,sCAAsC;AAEtC,mBAAmB;AACnB,8FAA8F;AAC9F,uCAAuC;AACvC,4CAA4C;AAC5C,8CAA8C;AAE9C,6BAA6B;AAC7B,oEAAoE;AACpE,QAAQ;AAER,sEAAsE;AACtE,4CAA4C;AAC5C,yDAAyD;AACzD,yDAAyD;AAEzD,iDAAiD;AACjD,6DAA6D;AAC7D,+DAA+D;AAC/D,6FAA6F;AAC7F,UAAU;AAEV,4CAA4C;AAC5C,QAAQ;AAER,kCAAkC;AAClC,qBAAqB;AACrB,mCAAmC;AACnC,mBAAmB;AACnB,wCAAwC;AACxC,WAAW;AACX,SAAS;AACT,OAAO;AACP,IAAI"}
@@ -0,0 +1,6 @@
1
+ import type { Env } from './durable-object.js';
2
+ export type CFWorker = {
3
+ fetch: (request: Request, env: Env, ctx: ExecutionContext) => Promise<Response>;
4
+ };
5
+ export declare const makeWorker: () => CFWorker;
6
+ //# sourceMappingURL=make-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-worker.d.ts","sourceRoot":"","sources":["../../src/cf-worker/make-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAChF,CAAA;AAED,eAAO,MAAM,UAAU,QAAO,QAkC7B,CAAA"}
@@ -0,0 +1,31 @@
1
+ export const makeWorker = () => {
2
+ return {
3
+ fetch: async (request, env, _ctx) => {
4
+ const url = new URL(request.url);
5
+ const searchParams = url.searchParams;
6
+ const roomId = searchParams.get('room');
7
+ if (roomId === null) {
8
+ return new Response('Room ID is required', { status: 400 });
9
+ }
10
+ // This example will refer to the same Durable Object instance,
11
+ // since the name "foo" is hardcoded.
12
+ const id = env.WEBSOCKET_SERVER.idFromName(roomId);
13
+ const durableObject = env.WEBSOCKET_SERVER.get(id);
14
+ if (url.pathname.endsWith('/websocket')) {
15
+ const upgradeHeader = request.headers.get('Upgrade');
16
+ if (!upgradeHeader || upgradeHeader !== 'websocket') {
17
+ return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
18
+ }
19
+ return durableObject.fetch(request);
20
+ }
21
+ return new Response(null, {
22
+ status: 400,
23
+ statusText: 'Bad Request',
24
+ headers: {
25
+ 'Content-Type': 'text/plain',
26
+ },
27
+ });
28
+ },
29
+ };
30
+ };
31
+ //# sourceMappingURL=make-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-worker.js","sourceRoot":"","sources":["../../src/cf-worker/make-worker.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,UAAU,GAAG,GAAa,EAAE;IACvC,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;YACrC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAEvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC7D,CAAC;YAED,+DAA+D;YAC/D,qCAAqC;YACrC,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAClD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAElD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACpD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;oBACpD,OAAO,IAAI,QAAQ,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBACpF,CAAC;gBAED,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,aAAa;gBACzB,OAAO,EAAE;oBACP,cAAc,EAAE,YAAY;iBAC7B;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './durable-object.js';
2
+ export * from './worker.js';
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/cf-worker/mod.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './durable-object.js';
2
+ export * from './worker.js';
3
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/cf-worker/mod.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cf-worker/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cf-worker/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { Env } from './durable-object.js';
2
+ export type CFWorker = {
3
+ fetch: (request: Request, env: Env, ctx: ExecutionContext) => Promise<Response>;
4
+ };
5
+ export declare const makeWorker: () => CFWorker;
6
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cf-worker/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAChF,CAAA;AAED,eAAO,MAAM,UAAU,QAAO,QAgC7B,CAAA"}
@@ -0,0 +1,29 @@
1
+ export const makeWorker = () => {
2
+ return {
3
+ fetch: async (request, env, _ctx) => {
4
+ const url = new URL(request.url);
5
+ const searchParams = url.searchParams;
6
+ const storeId = searchParams.get('storeId');
7
+ if (storeId === null) {
8
+ return new Response('storeId search param is required', { status: 400 });
9
+ }
10
+ const id = env.WEBSOCKET_SERVER.idFromName(storeId);
11
+ const durableObject = env.WEBSOCKET_SERVER.get(id);
12
+ if (url.pathname.endsWith('/websocket')) {
13
+ const upgradeHeader = request.headers.get('Upgrade');
14
+ if (!upgradeHeader || upgradeHeader !== 'websocket') {
15
+ return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
16
+ }
17
+ return durableObject.fetch(request);
18
+ }
19
+ return new Response(null, {
20
+ status: 400,
21
+ statusText: 'Bad Request',
22
+ headers: {
23
+ 'Content-Type': 'text/plain',
24
+ },
25
+ });
26
+ },
27
+ };
28
+ };
29
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/cf-worker/worker.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,UAAU,GAAG,GAAa,EAAE;IACvC,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;YACrC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAE3C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,IAAI,QAAQ,CAAC,kCAAkC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1E,CAAC;YAED,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YACnD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAElD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACpD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;oBACpD,OAAO,IAAI,QAAQ,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBACpF,CAAC;gBAED,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,aAAa;gBACzB,OAAO,EAAE;oBACP,cAAc,EAAE,YAAY;iBAC7B;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * as WSMessage from './ws-message-types.js';
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/common/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * as WSMessage from './ws-message-types.js';
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/common/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA"}
@@ -5,87 +5,49 @@ export declare const PullReq: Schema.TaggedStruct<"WSMessage.PullReq", {
5
5
  cursor: Schema.optional<typeof Schema.Number>;
6
6
  }>;
7
7
  export type PullReq = typeof PullReq.Type;
8
+ export declare const SyncMetadata: Schema.Struct<{
9
+ /** ISO date format */
10
+ createdAt: typeof Schema.String;
11
+ }>;
12
+ export type SyncMetadata = typeof SyncMetadata.Type;
8
13
  export declare const PullRes: Schema.TaggedStruct<"WSMessage.PullRes", {
9
14
  requestId: typeof Schema.String;
10
- events: Schema.Array$<Schema.SchemaClass<{
11
- readonly id: {
12
- readonly global: number;
13
- readonly local: number;
14
- };
15
- readonly mutation: string;
16
- readonly args: any;
17
- readonly parentId: {
18
- readonly global: number;
19
- readonly local: number;
20
- };
21
- }, {
22
- readonly id: {
23
- readonly global: number;
24
- readonly local: number;
25
- };
26
- readonly mutation: string;
27
- readonly args: any;
28
- readonly parentId: {
29
- readonly global: number;
30
- readonly local: number;
31
- };
32
- }, never>>;
33
- hasMore: typeof Schema.Boolean;
15
+ events: Schema.Array$<Schema.Struct<{
16
+ mutationEventEncoded: Schema.Struct<{
17
+ mutation: typeof Schema.String;
18
+ args: typeof Schema.Any;
19
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
20
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
21
+ }>;
22
+ metadata: Schema.Option<Schema.Struct<{
23
+ /** ISO date format */
24
+ createdAt: typeof Schema.String;
25
+ }>>;
26
+ }>>;
27
+ remaining: typeof Schema.Number;
34
28
  }>;
35
29
  export type PullRes = typeof PullRes.Type;
36
30
  export declare const PushBroadcast: Schema.TaggedStruct<"WSMessage.PushBroadcast", {
37
- mutationEventEncoded: Schema.SchemaClass<{
38
- readonly id: {
39
- readonly global: number;
40
- readonly local: number;
41
- };
42
- readonly mutation: string;
43
- readonly args: any;
44
- readonly parentId: {
45
- readonly global: number;
46
- readonly local: number;
47
- };
48
- }, {
49
- readonly id: {
50
- readonly global: number;
51
- readonly local: number;
52
- };
53
- readonly mutation: string;
54
- readonly args: any;
55
- readonly parentId: {
56
- readonly global: number;
57
- readonly local: number;
58
- };
59
- }, never>;
60
- persisted: typeof Schema.Boolean;
31
+ mutationEventEncoded: Schema.Struct<{
32
+ mutation: typeof Schema.String;
33
+ args: typeof Schema.Any;
34
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
35
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
36
+ }>;
37
+ metadata: Schema.Option<Schema.Struct<{
38
+ /** ISO date format */
39
+ createdAt: typeof Schema.String;
40
+ }>>;
61
41
  }>;
62
42
  export type PushBroadcast = typeof PushBroadcast.Type;
63
43
  export declare const PushReq: Schema.TaggedStruct<"WSMessage.PushReq", {
64
44
  requestId: typeof Schema.String;
65
- mutationEventEncoded: Schema.SchemaClass<{
66
- readonly id: {
67
- readonly global: number;
68
- readonly local: number;
69
- };
70
- readonly mutation: string;
71
- readonly args: any;
72
- readonly parentId: {
73
- readonly global: number;
74
- readonly local: number;
75
- };
76
- }, {
77
- readonly id: {
78
- readonly global: number;
79
- readonly local: number;
80
- };
81
- readonly mutation: string;
82
- readonly args: any;
83
- readonly parentId: {
84
- readonly global: number;
85
- readonly local: number;
86
- };
87
- }, never>;
88
- persisted: typeof Schema.Boolean;
45
+ batch: Schema.Array$<Schema.Struct<{
46
+ mutation: typeof Schema.String;
47
+ args: typeof Schema.Any;
48
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
49
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
50
+ }>>;
89
51
  }>;
90
52
  export type PushReq = typeof PushReq.Type;
91
53
  export declare const PushAck: Schema.TaggedStruct<"WSMessage.PushAck", {
@@ -132,81 +94,38 @@ export declare const Message: Schema.Union<[Schema.TaggedStruct<"WSMessage.PullR
132
94
  cursor: Schema.optional<typeof Schema.Number>;
133
95
  }>, Schema.TaggedStruct<"WSMessage.PullRes", {
134
96
  requestId: typeof Schema.String;
135
- events: Schema.Array$<Schema.SchemaClass<{
136
- readonly id: {
137
- readonly global: number;
138
- readonly local: number;
139
- };
140
- readonly mutation: string;
141
- readonly args: any;
142
- readonly parentId: {
143
- readonly global: number;
144
- readonly local: number;
145
- };
146
- }, {
147
- readonly id: {
148
- readonly global: number;
149
- readonly local: number;
150
- };
151
- readonly mutation: string;
152
- readonly args: any;
153
- readonly parentId: {
154
- readonly global: number;
155
- readonly local: number;
156
- };
157
- }, never>>;
158
- hasMore: typeof Schema.Boolean;
97
+ events: Schema.Array$<Schema.Struct<{
98
+ mutationEventEncoded: Schema.Struct<{
99
+ mutation: typeof Schema.String;
100
+ args: typeof Schema.Any;
101
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
102
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
103
+ }>;
104
+ metadata: Schema.Option<Schema.Struct<{
105
+ /** ISO date format */
106
+ createdAt: typeof Schema.String;
107
+ }>>;
108
+ }>>;
109
+ remaining: typeof Schema.Number;
159
110
  }>, Schema.TaggedStruct<"WSMessage.PushBroadcast", {
160
- mutationEventEncoded: Schema.SchemaClass<{
161
- readonly id: {
162
- readonly global: number;
163
- readonly local: number;
164
- };
165
- readonly mutation: string;
166
- readonly args: any;
167
- readonly parentId: {
168
- readonly global: number;
169
- readonly local: number;
170
- };
171
- }, {
172
- readonly id: {
173
- readonly global: number;
174
- readonly local: number;
175
- };
176
- readonly mutation: string;
177
- readonly args: any;
178
- readonly parentId: {
179
- readonly global: number;
180
- readonly local: number;
181
- };
182
- }, never>;
183
- persisted: typeof Schema.Boolean;
111
+ mutationEventEncoded: Schema.Struct<{
112
+ mutation: typeof Schema.String;
113
+ args: typeof Schema.Any;
114
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
115
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
116
+ }>;
117
+ metadata: Schema.Option<Schema.Struct<{
118
+ /** ISO date format */
119
+ createdAt: typeof Schema.String;
120
+ }>>;
184
121
  }>, Schema.TaggedStruct<"WSMessage.PushReq", {
185
122
  requestId: typeof Schema.String;
186
- mutationEventEncoded: Schema.SchemaClass<{
187
- readonly id: {
188
- readonly global: number;
189
- readonly local: number;
190
- };
191
- readonly mutation: string;
192
- readonly args: any;
193
- readonly parentId: {
194
- readonly global: number;
195
- readonly local: number;
196
- };
197
- }, {
198
- readonly id: {
199
- readonly global: number;
200
- readonly local: number;
201
- };
202
- readonly mutation: string;
203
- readonly args: any;
204
- readonly parentId: {
205
- readonly global: number;
206
- readonly local: number;
207
- };
208
- }, never>;
209
- persisted: typeof Schema.Boolean;
123
+ batch: Schema.Array$<Schema.Struct<{
124
+ mutation: typeof Schema.String;
125
+ args: typeof Schema.Any;
126
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
127
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
128
+ }>>;
210
129
  }>, Schema.TaggedStruct<"WSMessage.PushAck", {
211
130
  requestId: typeof Schema.String;
212
131
  mutationId: typeof Schema.Number;
@@ -235,55 +154,30 @@ export type Message = typeof Message.Type;
235
154
  export type MessageEncoded = typeof Message.Encoded;
236
155
  export declare const BackendToClientMessage: Schema.Union<[Schema.TaggedStruct<"WSMessage.PullRes", {
237
156
  requestId: typeof Schema.String;
238
- events: Schema.Array$<Schema.SchemaClass<{
239
- readonly id: {
240
- readonly global: number;
241
- readonly local: number;
242
- };
243
- readonly mutation: string;
244
- readonly args: any;
245
- readonly parentId: {
246
- readonly global: number;
247
- readonly local: number;
248
- };
249
- }, {
250
- readonly id: {
251
- readonly global: number;
252
- readonly local: number;
253
- };
254
- readonly mutation: string;
255
- readonly args: any;
256
- readonly parentId: {
257
- readonly global: number;
258
- readonly local: number;
259
- };
260
- }, never>>;
261
- hasMore: typeof Schema.Boolean;
157
+ events: Schema.Array$<Schema.Struct<{
158
+ mutationEventEncoded: Schema.Struct<{
159
+ mutation: typeof Schema.String;
160
+ args: typeof Schema.Any;
161
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
162
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
163
+ }>;
164
+ metadata: Schema.Option<Schema.Struct<{
165
+ /** ISO date format */
166
+ createdAt: typeof Schema.String;
167
+ }>>;
168
+ }>>;
169
+ remaining: typeof Schema.Number;
262
170
  }>, Schema.TaggedStruct<"WSMessage.PushBroadcast", {
263
- mutationEventEncoded: Schema.SchemaClass<{
264
- readonly id: {
265
- readonly global: number;
266
- readonly local: number;
267
- };
268
- readonly mutation: string;
269
- readonly args: any;
270
- readonly parentId: {
271
- readonly global: number;
272
- readonly local: number;
273
- };
274
- }, {
275
- readonly id: {
276
- readonly global: number;
277
- readonly local: number;
278
- };
279
- readonly mutation: string;
280
- readonly args: any;
281
- readonly parentId: {
282
- readonly global: number;
283
- readonly local: number;
284
- };
285
- }, never>;
286
- persisted: typeof Schema.Boolean;
171
+ mutationEventEncoded: Schema.Struct<{
172
+ mutation: typeof Schema.String;
173
+ args: typeof Schema.Any;
174
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
175
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
176
+ }>;
177
+ metadata: Schema.Option<Schema.Struct<{
178
+ /** ISO date format */
179
+ createdAt: typeof Schema.String;
180
+ }>>;
287
181
  }>, Schema.TaggedStruct<"WSMessage.PushAck", {
288
182
  requestId: typeof Schema.String;
289
183
  mutationId: typeof Schema.Number;
@@ -307,30 +201,12 @@ export declare const ClientToBackendMessage: Schema.Union<[Schema.TaggedStruct<"
307
201
  cursor: Schema.optional<typeof Schema.Number>;
308
202
  }>, Schema.TaggedStruct<"WSMessage.PushReq", {
309
203
  requestId: typeof Schema.String;
310
- mutationEventEncoded: Schema.SchemaClass<{
311
- readonly id: {
312
- readonly global: number;
313
- readonly local: number;
314
- };
315
- readonly mutation: string;
316
- readonly args: any;
317
- readonly parentId: {
318
- readonly global: number;
319
- readonly local: number;
320
- };
321
- }, {
322
- readonly id: {
323
- readonly global: number;
324
- readonly local: number;
325
- };
326
- readonly mutation: string;
327
- readonly args: any;
328
- readonly parentId: {
329
- readonly global: number;
330
- readonly local: number;
331
- };
332
- }, never>;
333
- persisted: typeof Schema.Boolean;
204
+ batch: Schema.Array$<Schema.Struct<{
205
+ mutation: typeof Schema.String;
206
+ args: typeof Schema.Any;
207
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
208
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
209
+ }>>;
334
210
  }>, Schema.TaggedStruct<"WSMessage.AdminResetRoomReq", {
335
211
  requestId: typeof Schema.String;
336
212
  adminSecret: typeof Schema.String;
@@ -1 +1 @@
1
- {"version":3,"file":"ws-message-types.d.ts","sourceRoot":"","sources":["../../src/common/ws-message-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,eAAO,MAAM,OAAO;;IAElB,wDAAwD;;EAExD,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EAMlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;EAGxB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EAIlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,eAAO,MAAM,OAAO;;;EAGlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,eAAO,MAAM,IAAI;;EAEf,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAA;AAEnC,eAAO,MAAM,IAAI;;EAEf,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAA;AAEnC,eAAO,MAAM,iBAAiB;;;EAG5B,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE7D,eAAO,MAAM,iBAAiB;;EAE5B,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE7D,eAAO,MAAM,YAAY;;;EAGvB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAEnD,eAAO,MAAM,YAAY;;;;;EAKvB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAEnD,eAAO,MAAM,OAAO;;IApFlB,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiGzD,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AACzC,MAAM,MAAM,cAAc,GAAG,OAAO,OAAO,CAAC,OAAO,CAAA;AAEnD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQlC,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,sBAAsB;;IAhHjC,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgHiD,CAAA;AAC3G,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"ws-message-types.d.ts","sourceRoot":"","sources":["../../src/common/ws-message-types.ts"],"names":[],"mappings":"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"}