orez-lite 0.10.7 → 0.11.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.
Files changed (71) hide show
  1. package/dist/browser/host.d.ts.map +1 -1
  2. package/dist/browser/host.js +8 -29
  3. package/dist/browser/host.js.map +1 -1
  4. package/dist/browser/types.d.ts +4 -2
  5. package/dist/browser/types.d.ts.map +1 -1
  6. package/dist/browser/types.js.map +1 -1
  7. package/dist/cf-do/application-sql.d.ts +24 -5
  8. package/dist/cf-do/application-sql.d.ts.map +1 -1
  9. package/dist/cf-do/application-sql.js +51 -43
  10. package/dist/cf-do/application-sql.js.map +1 -1
  11. package/dist/cf-do/worker.d.ts +74 -14
  12. package/dist/cf-do/worker.d.ts.map +1 -1
  13. package/dist/cf-do/worker.js +195 -92
  14. package/dist/cf-do/worker.js.map +1 -1
  15. package/dist/do-sql-tracking.d.ts +17 -0
  16. package/dist/do-sql-tracking.d.ts.map +1 -1
  17. package/dist/do-sql-tracking.js +17 -0
  18. package/dist/do-sql-tracking.js.map +1 -1
  19. package/dist/realtime/host.d.ts +7 -0
  20. package/dist/realtime/host.d.ts.map +1 -0
  21. package/dist/realtime/host.js +77 -0
  22. package/dist/realtime/host.js.map +1 -0
  23. package/dist/realtime/hub.d.ts +10 -5
  24. package/dist/realtime/hub.d.ts.map +1 -1
  25. package/dist/realtime/hub.js +133 -53
  26. package/dist/realtime/hub.js.map +1 -1
  27. package/dist/realtime/index.d.ts +15 -2
  28. package/dist/realtime/index.d.ts.map +1 -1
  29. package/dist/realtime/index.js +12 -0
  30. package/dist/realtime/index.js.map +1 -1
  31. package/dist/realtime/local.d.ts +15 -0
  32. package/dist/realtime/local.d.ts.map +1 -0
  33. package/dist/realtime/local.js +63 -0
  34. package/dist/realtime/local.js.map +1 -0
  35. package/dist/realtime/manifest.d.ts +5 -1
  36. package/dist/realtime/manifest.d.ts.map +1 -1
  37. package/dist/realtime/manifest.js +1 -1
  38. package/dist/realtime/manifest.js.map +1 -1
  39. package/dist/realtime/message-port.d.ts +34 -0
  40. package/dist/realtime/message-port.d.ts.map +1 -0
  41. package/dist/realtime/message-port.js +141 -0
  42. package/dist/realtime/message-port.js.map +1 -0
  43. package/dist/realtime/producer-socket.d.ts +10 -0
  44. package/dist/realtime/producer-socket.d.ts.map +1 -0
  45. package/dist/realtime/producer-socket.js +90 -0
  46. package/dist/realtime/producer-socket.js.map +1 -0
  47. package/dist/realtime/producer.d.ts +16 -0
  48. package/dist/realtime/producer.d.ts.map +1 -0
  49. package/dist/realtime/producer.js +51 -0
  50. package/dist/realtime/producer.js.map +1 -0
  51. package/dist/realtime/protocol.d.ts +38 -2
  52. package/dist/realtime/protocol.d.ts.map +1 -1
  53. package/dist/realtime/protocol.js +34 -0
  54. package/dist/realtime/protocol.js.map +1 -1
  55. package/dist/realtime/publisher.d.ts +1 -0
  56. package/dist/realtime/publisher.d.ts.map +1 -1
  57. package/dist/realtime/publisher.js +29 -1
  58. package/dist/realtime/publisher.js.map +1 -1
  59. package/dist/realtime/socket-host.d.ts +25 -0
  60. package/dist/realtime/socket-host.d.ts.map +1 -0
  61. package/dist/realtime/socket-host.js +95 -0
  62. package/dist/realtime/socket-host.js.map +1 -0
  63. package/dist/realtime/store.d.ts +4 -4
  64. package/dist/realtime/store.d.ts.map +1 -1
  65. package/dist/realtime/store.js +0 -0
  66. package/dist/realtime/store.js.map +1 -1
  67. package/dist/realtime/writer.d.ts +17 -0
  68. package/dist/realtime/writer.d.ts.map +1 -0
  69. package/dist/realtime/writer.js +138 -0
  70. package/dist/realtime/writer.js.map +1 -0
  71. package/package.json +4 -4
@@ -0,0 +1,141 @@
1
+ // MessagePort realtime adapter: the browser-worker host's transport.
2
+ //
3
+ // The hub state machine, publisher, and protocol are shared with every other
4
+ // host (orez-lite/realtime). This file is only the browser's socket lifecycle:
5
+ // a MessagePort instead of a WebSocket, and an authorizer that reads the same
6
+ // durable query membership the pull path maintains.
7
+ //
8
+ // The worker and its producer share one process lifecycle, so subscriptions and
9
+ // stream generations are memory-only here. Nothing survives a worker restart,
10
+ // which is correct: the durable value is whatever the client's next Zero pull
11
+ // produces.
12
+ import { applyClientFrame, applyHostFrame } from './host.js';
13
+ import { RealtimeHub } from './hub.js';
14
+ import { createProducer, inProcessTransport } from './producer.js';
15
+ import { decodeFrame, encodeFrame } from './protocol.js';
16
+ import { RealtimeStore } from './store.js';
17
+ export class BrowserRealtime {
18
+ #hub;
19
+ #producer;
20
+ #producerCounter = 0;
21
+ #connectionCounter = 0;
22
+ constructor(options) {
23
+ this.#hub = new RealtimeHub({
24
+ manifest: options.manifest,
25
+ authorizeSubscribe: async (identity, topic) => {
26
+ const { ownsGroup, authorized } = await options.readMembership(identity, topic.table, topic.key);
27
+ // A client group id is not a bearer token: not owning it is a denial,
28
+ // and the reason deliberately does not say whether the row exists.
29
+ if (!ownsGroup) {
30
+ return { status: 'denied', reason: 'client group does not belong to this user' };
31
+ }
32
+ // Owning the group without membership is the optimistic-row race: the
33
+ // client holds a row from its own mutation that the server has not
34
+ // recorded yet. It retries after its next pull.
35
+ return authorized ? { status: 'active' } : { status: 'pending' };
36
+ },
37
+ });
38
+ // There is no producer socket in the browser: the code running the model
39
+ // loop and the hub share one JavaScript context, so begin/publish are
40
+ // direct calls. The producer ROLE is still the shared one, so a loop
41
+ // written here runs unchanged against a socket host.
42
+ const producerHandle = {
43
+ id: `browser-producer-${++this.#producerCounter}`,
44
+ send: () => { },
45
+ };
46
+ this.#producer = createProducer(inProcessTransport(this.#hub, producerHandle), options);
47
+ }
48
+ // Imperative writing: set a row's field to its current value, generations
49
+ // managed for you. Trusted by construction, this is the worker's own code.
50
+ get fields() {
51
+ return this.#producer.fields;
52
+ }
53
+ // The explicit generation API underneath, for a producer that controls begin,
54
+ // commit, and end itself.
55
+ get publisher() {
56
+ return this.#producer.publisher;
57
+ }
58
+ // Attach a port. The identity comes from the host's authenticated pull path,
59
+ // never from the port itself, so a page cannot claim another user's client
60
+ // group by asserting one over the channel.
61
+ connect(port, identity) {
62
+ const connection = {
63
+ id: `browser-connection-${++this.#connectionCounter}`,
64
+ identity,
65
+ send: (frame) => {
66
+ port.postMessage({ event: 'realtime', frame: encodeFrame(frame) });
67
+ },
68
+ };
69
+ const onMessage = (event) => {
70
+ const message = event.data;
71
+ if (!message ||
72
+ typeof message !== 'object' ||
73
+ message.event !== 'realtime') {
74
+ return;
75
+ }
76
+ const raw = message.frame;
77
+ if (typeof raw !== 'string')
78
+ return;
79
+ const frame = decodeFrame(raw);
80
+ if (!frame)
81
+ return;
82
+ // A subscriber channel is never a publish channel. Only subscribe and
83
+ // unsubscribe are accepted here, whatever else a port sends.
84
+ if (frame[0] !== 'subscribe' && frame[0] !== 'unsubscribe')
85
+ return;
86
+ void applyClientFrame(this.#hub, connection, frame);
87
+ };
88
+ port.addEventListener('message', onMessage);
89
+ return () => {
90
+ port.removeEventListener('message', onMessage);
91
+ this.#hub.dropConnection(connection.id);
92
+ };
93
+ }
94
+ // A pull removed rows from a client group's membership, so its field
95
+ // subscriptions for those rows go with them.
96
+ revokeMembership(clientGroupID, removed) {
97
+ this.#hub.revokeMembership(clientGroupID, removed);
98
+ }
99
+ flush() {
100
+ this.#hub.flush();
101
+ }
102
+ get hub() {
103
+ return this.#hub;
104
+ }
105
+ }
106
+ // The page-side half of the port transport. Owns a RealtimeStore and pumps
107
+ // frames both ways, so `useStreamingField` sees the same store it would against
108
+ // a WebSocket host.
109
+ export function connectRealtimePort(port, options = {}) {
110
+ const store = new RealtimeStore({
111
+ send: (frame) => {
112
+ port.postMessage({ event: 'realtime', frame: encodeFrame(frame) });
113
+ },
114
+ staleAfterMs: options.staleAfterMs,
115
+ onError: options.onError,
116
+ });
117
+ const onMessage = (event) => {
118
+ const message = event.data;
119
+ if (!message ||
120
+ typeof message !== 'object' ||
121
+ message.event !== 'realtime') {
122
+ return;
123
+ }
124
+ const raw = message.frame;
125
+ if (typeof raw !== 'string')
126
+ return;
127
+ const frame = decodeFrame(raw);
128
+ if (frame)
129
+ applyHostFrame(store, frame);
130
+ };
131
+ port.addEventListener('message', onMessage);
132
+ port.start();
133
+ return {
134
+ store,
135
+ close: () => {
136
+ port.removeEventListener('message', onMessage);
137
+ store.handleDisconnect();
138
+ },
139
+ };
140
+ }
141
+ //# sourceMappingURL=message-port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-port.js","sourceRoot":"","sources":["../../src/realtime/message-port.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ProducerOptions, RealtimeProducer } from './producer.js';
2
+ export type ProducerSocket = {
3
+ send(data: string): void;
4
+ };
5
+ export type SocketProducer = RealtimeProducer & {
6
+ handleMessage(raw: string): void;
7
+ fail(reason: string): void;
8
+ };
9
+ export declare function createSocketProducer(socket: ProducerSocket, options: ProducerOptions): SocketProducer;
10
+ //# sourceMappingURL=producer-socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"producer-socket.d.ts","sourceRoot":"","sources":["../../src/realtime/producer-socket.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAItE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG;IAE9C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAIhC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,GACvB,cAAc,CA2EhB"}
@@ -0,0 +1,90 @@
1
+ // A PublisherTransport backed by a socket, for a producer that is not in the
2
+ // same process as the hub.
3
+ //
4
+ // This is the shape soot does NOT need and the shape agentbus and chat do: an
5
+ // application server generates the values, and the subscribers are browsers
6
+ // somewhere else, so the updates have to cross a network to reach the hub that
7
+ // fans them out.
8
+ //
9
+ // One socket carries every generation the producer has open. A server writing
10
+ // twenty agent sessions holds one connection, and the hub releases all twenty
11
+ // leases when it drops.
12
+ //
13
+ // Connecting, authenticating, and reconnecting are the caller's: it knows its
14
+ // own deployment. This owns only the frame bookkeeping on top of a socket that
15
+ // is already open.
16
+ import { createProducer } from './producer.js';
17
+ import { decodeFrame, encodeFrame } from './protocol.js';
18
+ export function createSocketProducer(socket, options) {
19
+ const pendingBegins = new Map();
20
+ // streamID -> why it is unusable. Set by a host rejection or supersession, and
21
+ // raised on the producer's next publish for that stream.
22
+ const failures = new Map();
23
+ // The socket itself died. This is deliberately not per-stream: once the
24
+ // connection is gone every generation on it is gone, including ones that
25
+ // began successfully and are therefore absent from `failures`.
26
+ let socketFailure;
27
+ const transport = {
28
+ begin(topic, streamID) {
29
+ if (socketFailure)
30
+ return Promise.reject(new Error(socketFailure));
31
+ return new Promise((resolve, reject) => {
32
+ pendingBegins.set(streamID, { resolve, reject });
33
+ socket.send(encodeFrame(['begin', { topic, streamID }]));
34
+ });
35
+ },
36
+ publish(update) {
37
+ if (socketFailure)
38
+ throw new Error(socketFailure);
39
+ const failure = failures.get(update.streamID);
40
+ if (failure)
41
+ throw new Error(failure);
42
+ socket.send(encodeFrame(['publish', { update }]));
43
+ },
44
+ end(streamID) {
45
+ failures.delete(streamID);
46
+ pendingBegins.delete(streamID);
47
+ },
48
+ };
49
+ return {
50
+ ...createProducer(transport, options),
51
+ handleMessage(raw) {
52
+ const frame = decodeFrame(raw);
53
+ if (!frame)
54
+ return;
55
+ switch (frame[0]) {
56
+ case 'begin-result': {
57
+ const { streamID, reason } = frame[1];
58
+ const pending = pendingBegins.get(streamID);
59
+ if (!pending)
60
+ return;
61
+ pendingBegins.delete(streamID);
62
+ if (reason === null)
63
+ pending.resolve();
64
+ else
65
+ pending.reject(new Error(reason));
66
+ return;
67
+ }
68
+ case 'publish-rejected': {
69
+ const { streamID, reason } = frame[1];
70
+ failures.set(streamID, reason);
71
+ return;
72
+ }
73
+ case 'superseded': {
74
+ const { topic, streamID } = frame[1];
75
+ failures.set(streamID, `generation for '${topic}' was superseded by a newer one`);
76
+ return;
77
+ }
78
+ default:
79
+ return;
80
+ }
81
+ },
82
+ fail(reason) {
83
+ socketFailure = reason;
84
+ for (const pending of pendingBegins.values())
85
+ pending.reject(new Error(reason));
86
+ pendingBegins.clear();
87
+ },
88
+ };
89
+ }
90
+ //# sourceMappingURL=producer-socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"producer-socket.js","sourceRoot":"","sources":["../../src/realtime/producer-socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { RealtimePublisher } from './publisher.js';
2
+ import { FieldWriter } from './writer.js';
3
+ import type { RealtimeHub, HubProducer } from './hub.js';
4
+ import type { StreamingManifest } from './manifest.js';
5
+ import type { PublisherTransport } from './publisher.js';
6
+ export type RealtimeProducer = {
7
+ readonly fields: FieldWriter;
8
+ readonly publisher: RealtimePublisher;
9
+ };
10
+ export type ProducerOptions = {
11
+ readonly manifest: StreamingManifest;
12
+ readonly onError?: (message: string) => void;
13
+ };
14
+ export declare function createProducer(transport: PublisherTransport, options: ProducerOptions): RealtimeProducer;
15
+ export declare function inProcessTransport(hub: RealtimeHub, producer: HubProducer): PublisherTransport;
16
+ //# sourceMappingURL=producer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../../src/realtime/producer.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IAIpC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7C,CAAA;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,eAAe,GACvB,gBAAgB,CAQlB;AASD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,WAAW,GACpB,kBAAkB,CAcpB"}
@@ -0,0 +1,51 @@
1
+ // The producer role, identical on every surface.
2
+ //
3
+ // A producer is whatever generates values: a browser agent loop, an application
4
+ // server, a Rust daemon. What differs between them is only how their frames
5
+ // reach the hub (a direct call, a MessagePort, a WebSocket). What must NOT
6
+ // differ is the API they write through, because otherwise moving a producer
7
+ // between surfaces means rewriting it.
8
+ //
9
+ // So the transport varies and this does not. Every surface builds its producer
10
+ // here, and every producer gets the same two handles:
11
+ //
12
+ // fields imperative: set(handle, value), generations managed for you.
13
+ // This is what a token loop wants and what most code should use.
14
+ // publisher the explicit generation API underneath, for a producer that
15
+ // needs to control begin, commit, and end itself.
16
+ import { RealtimePublisher } from './publisher.js';
17
+ import { FieldWriter } from './writer.js';
18
+ export function createProducer(transport, options) {
19
+ const publisher = new RealtimePublisher(transport, options.manifest);
20
+ const fields = new FieldWriter(publisher, {
21
+ onError: (error, topic) => {
22
+ options.onError?.(`${topic.table}.${topic.field}: ${error.message}`);
23
+ },
24
+ });
25
+ return { fields, publisher };
26
+ }
27
+ // The transport for a producer that shares a process with the hub: the local
28
+ // single-client host and the browser worker. `begin` and `publish` are direct
29
+ // calls, so there is nothing to serialize and nothing to await.
30
+ //
31
+ // A rejection throws, which is what the publisher's own failure handling
32
+ // expects; it converts that into a reported error rather than letting it reach
33
+ // the producer's loop.
34
+ export function inProcessTransport(hub, producer) {
35
+ return {
36
+ begin: (topic, streamID) => {
37
+ const result = hub.beginGeneration(producer, topic, streamID);
38
+ if (!result.ok)
39
+ throw new Error(result.reason);
40
+ },
41
+ publish: (update) => {
42
+ const result = hub.publish(producer, update);
43
+ if (!result.ok)
44
+ throw new Error(result.reason);
45
+ },
46
+ // Nothing to release: the generation closed when its terminal update was
47
+ // published, and there is no socket whose bookkeeping could outlive it.
48
+ end: () => { },
49
+ };
50
+ }
51
+ //# sourceMappingURL=producer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"producer.js","sourceRoot":"","sources":["../../src/realtime/producer.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,uCAAuC;AACvC,EAAE;AACF,+EAA+E;AAC/E,sDAAsD;AACtD,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,+DAA+D;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAoBzC,MAAM,UAAU,cAAc,CAC5B,SAA6B,EAC7B,OAAwB;IAExB,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;QACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;KACF,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,+EAA+E;AAC/E,uBAAuB;AACvB,MAAM,UAAU,kBAAkB,CAChC,GAAgB,EAChB,QAAqB;IAErB,OAAO;QACL,KAAK,EAAE,CAAC,KAAoB,EAAE,QAAgB,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;YAC7D,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,EAAE,CAAC,MAAmB,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC5C,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChD,CAAC;QACD,yEAAyE;QACzE,wEAAwE;QACxE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;KACd,CAAA;AACH,CAAC"}
@@ -14,6 +14,41 @@ export type UnsubscribeFrame = readonly ['unsubscribe', {
14
14
  readonly topic: RealtimeTopic;
15
15
  }];
16
16
  export type ClientFrame = SubscribeFrame | UnsubscribeFrame;
17
+ export type BeginFrame = readonly [
18
+ 'begin',
19
+ {
20
+ readonly topic: RealtimeTopic;
21
+ readonly streamID: string;
22
+ }
23
+ ];
24
+ export type PublishFrame = readonly ['publish', {
25
+ readonly update: FieldUpdate;
26
+ }];
27
+ export type ProducerFrame = BeginFrame | PublishFrame;
28
+ export type BeginResultFrame = readonly [
29
+ 'begin-result',
30
+ {
31
+ readonly streamID: string;
32
+ readonly topic: string | null;
33
+ readonly reason: string | null;
34
+ }
35
+ ];
36
+ export type PublishRejectedFrame = readonly [
37
+ 'publish-rejected',
38
+ {
39
+ readonly topic: string;
40
+ readonly streamID: string;
41
+ readonly reason: string;
42
+ }
43
+ ];
44
+ export type SupersededFrame = readonly [
45
+ 'superseded',
46
+ {
47
+ readonly topic: string;
48
+ readonly streamID: string;
49
+ }
50
+ ];
51
+ export type ProducerHostFrame = BeginResultFrame | PublishRejectedFrame | SupersededFrame;
17
52
  export type SubscribedFrame = readonly [
18
53
  'subscribed',
19
54
  {
@@ -58,6 +93,7 @@ export type WakeFrame = readonly ['wake', Record<string, never>];
58
93
  export type HostFrame = FieldFrame | SubscribeErrorFrame | SubscribedFrame | WakeFrame;
59
94
  export declare const LEGACY_WAKE_FRAME = "wake";
60
95
  export declare function isLegacyWake(raw: string): boolean;
61
- export declare function encodeFrame(frame: ClientFrame | HostFrame): string;
62
- export declare function decodeFrame(raw: string): ClientFrame | HostFrame | undefined;
96
+ export type AnyFrame = ClientFrame | HostFrame | ProducerFrame | ProducerHostFrame;
97
+ export declare function encodeFrame(frame: AnyFrame): string;
98
+ export declare function decodeFrame(raw: string): AnyFrame | undefined;
63
99
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/realtime/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/realtime/protocol.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,40 @@ export function decodeFrame(raw) {
108
108
  }
109
109
  return ['field', { updates: decoded }];
110
110
  }
111
+ case 'begin': {
112
+ const { topic, streamID } = body;
113
+ if (!isTopic(topic) || typeof streamID !== 'string' || !streamID)
114
+ return undefined;
115
+ return ['begin', { topic, streamID }];
116
+ }
117
+ case 'publish': {
118
+ const update = decodeUpdate(body.update);
119
+ return update ? ['publish', { update }] : undefined;
120
+ }
121
+ case 'begin-result': {
122
+ const { streamID, topic, reason } = body;
123
+ if (typeof streamID !== 'string')
124
+ return undefined;
125
+ if (topic !== null && typeof topic !== 'string')
126
+ return undefined;
127
+ if (reason !== null && typeof reason !== 'string')
128
+ return undefined;
129
+ return ['begin-result', { streamID, topic, reason }];
130
+ }
131
+ case 'publish-rejected': {
132
+ const { topic, streamID, reason } = body;
133
+ if (typeof topic !== 'string' || typeof streamID !== 'string')
134
+ return undefined;
135
+ if (typeof reason !== 'string')
136
+ return undefined;
137
+ return ['publish-rejected', { topic, streamID, reason }];
138
+ }
139
+ case 'superseded': {
140
+ const { topic, streamID } = body;
141
+ if (typeof topic !== 'string' || typeof streamID !== 'string')
142
+ return undefined;
143
+ return ['superseded', { topic, streamID }];
144
+ }
111
145
  case 'wake':
112
146
  return ['wake', {}];
113
147
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/realtime/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/realtime/protocol.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export type StreamSession<Value> = {
13
13
  readonly streamID: string;
14
14
  readonly topic: RealtimeTopic;
15
15
  set(value: Value): void;
16
+ flush(): Promise<void>;
16
17
  finish(value: Value, commit: () => Promise<void>): Promise<void>;
17
18
  abort(): Promise<void>;
18
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/realtime/publisher.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAG/B,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAG/D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAChF,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACzD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;CACzE,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAI7B,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IAEvB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAcD,qBAAa,iBAAiB;;gBAO1B,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;KAAO;IAQ3E,KAAK,CAAC,KAAK,GAAG,MAAM,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CAyBjC"}
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/realtime/publisher.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAG/B,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAG/D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAChF,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACzD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;CACzE,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAI7B,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IAEvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAcD,qBAAa,iBAAiB;;gBAO1B,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;KAAO;IAQ3E,KAAK,CAAC,KAAK,GAAG,MAAM,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CAyBjC"}
@@ -78,6 +78,29 @@ class Session {
78
78
  this.#pending.value = value;
79
79
  this.#schedule();
80
80
  }
81
+ // Deliver whatever is pending now, waiting only as long as the manifest's
82
+ // rate bounds require. `set` is fire-and-forget by design so a token loop
83
+ // never awaits; this is for the places a producer needs the value to have
84
+ // actually left: a semantic checkpoint, or a deterministic test.
85
+ //
86
+ // It waits rather than bypassing the bound, so a producer calling flush in a
87
+ // loop still cannot exceed its declared maxUpdatesPerSecond.
88
+ async flush() {
89
+ this.#throwIfUnusable();
90
+ if (this.#pending.value === undefined)
91
+ return;
92
+ const delay = this.#delayUntilAllowed();
93
+ if (delay > 0)
94
+ await new Promise((resolve) => setTimeout(resolve, delay));
95
+ // A scheduled flush can fire during that wait, and if it failed then this
96
+ // generation is dead and its pending value was never delivered. Re-checking
97
+ // is what keeps flush() honest: it either delivered, or it throws. Without
98
+ // it the scheduled flush's suffix bookkeeping makes the retry here a no-op
99
+ // and the producer is told its value went out when it did not.
100
+ this.#throwIfUnusable();
101
+ this.#cancelTimer();
102
+ await this.#flush(false);
103
+ }
81
104
  async finish(value, commit) {
82
105
  this.#throwIfUnusable();
83
106
  this.#validate(value);
@@ -139,7 +162,12 @@ class Session {
139
162
  // suffix would leave every subscriber with a corrupted value.
140
163
  const next = value;
141
164
  if (!next.startsWith(this.#delivered)) {
142
- throw new TypeError(`streaming field '${this.#spec.table}.${this.#spec.field}' is append mode and its value stopped being an extension of what was already sent`);
165
+ // A text column holding JSON is the common way to hit this: the
166
+ // manifest infers append from the Zero column type, but the producer
167
+ // replaces the value rather than extending it. Naming the fix here
168
+ // saves the reader from inferring it from a corrupted overlay.
169
+ throw new TypeError(`streaming field '${this.#spec.table}.${this.#spec.field}' is append mode, but its new value is not an extension of what was already sent. ` +
170
+ `Append ships only the added suffix, so the value must grow. If this field is replaced rather than extended (a JSON payload in a text column, for example), declare mode: 'replace' for it in the manifest.`);
143
171
  }
144
172
  }
145
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/realtime/publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/realtime/publisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { RealtimeHub } from './hub.js';
2
+ import type { HubOptions, RealtimeIdentity } from './hub.js';
3
+ import type { RealtimeTopic } from './protocol.js';
4
+ export type HostSocket = {
5
+ send(data: string): void;
6
+ };
7
+ export type HostConnection = {
8
+ handleMessage(raw: string): void;
9
+ close(): void;
10
+ topics(): readonly RealtimeTopic[];
11
+ };
12
+ export type RealtimeSocketHost = {
13
+ readonly hub: RealtimeHub;
14
+ acceptSubscriber(socket: HostSocket, identity: RealtimeIdentity, connectionID: string): HostConnection;
15
+ acceptProducer(socket: HostSocket, producerID: string): HostConnection;
16
+ rehydrate(entries: readonly {
17
+ socket: HostSocket;
18
+ identity: RealtimeIdentity;
19
+ connectionID: string;
20
+ topics: readonly RealtimeTopic[];
21
+ }[]): Promise<void>;
22
+ flush(): void;
23
+ };
24
+ export declare function createSocketHost(options: HubOptions): RealtimeSocketHost;
25
+ //# sourceMappingURL=socket-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-host.d.ts","sourceRoot":"","sources":["../../src/realtime/socket-host.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGtC,OAAO,KAAK,EAA8B,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,CAAA;AAOD,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,IAAI,SAAS,aAAa,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IAIzB,gBAAgB,CACd,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GACnB,cAAc,CAAA;IAIjB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,CAAA;IAatE,SAAS,CACP,OAAO,EAAE,SAAS;QAChB,MAAM,EAAE,UAAU,CAAA;QAClB,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;KACjC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,KAAK,IAAI,IAAI,CAAA;CACd,CAAA;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAgFxE"}