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.
- package/dist/browser/host.d.ts.map +1 -1
- package/dist/browser/host.js +8 -29
- package/dist/browser/host.js.map +1 -1
- package/dist/browser/types.d.ts +4 -2
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/browser/types.js.map +1 -1
- package/dist/cf-do/application-sql.d.ts +24 -5
- package/dist/cf-do/application-sql.d.ts.map +1 -1
- package/dist/cf-do/application-sql.js +51 -43
- package/dist/cf-do/application-sql.js.map +1 -1
- package/dist/cf-do/worker.d.ts +74 -14
- package/dist/cf-do/worker.d.ts.map +1 -1
- package/dist/cf-do/worker.js +195 -92
- package/dist/cf-do/worker.js.map +1 -1
- package/dist/do-sql-tracking.d.ts +17 -0
- package/dist/do-sql-tracking.d.ts.map +1 -1
- package/dist/do-sql-tracking.js +17 -0
- package/dist/do-sql-tracking.js.map +1 -1
- package/dist/realtime/host.d.ts +7 -0
- package/dist/realtime/host.d.ts.map +1 -0
- package/dist/realtime/host.js +77 -0
- package/dist/realtime/host.js.map +1 -0
- package/dist/realtime/hub.d.ts +10 -5
- package/dist/realtime/hub.d.ts.map +1 -1
- package/dist/realtime/hub.js +133 -53
- package/dist/realtime/hub.js.map +1 -1
- package/dist/realtime/index.d.ts +15 -2
- package/dist/realtime/index.d.ts.map +1 -1
- package/dist/realtime/index.js +12 -0
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime/local.d.ts +15 -0
- package/dist/realtime/local.d.ts.map +1 -0
- package/dist/realtime/local.js +63 -0
- package/dist/realtime/local.js.map +1 -0
- package/dist/realtime/manifest.d.ts +5 -1
- package/dist/realtime/manifest.d.ts.map +1 -1
- package/dist/realtime/manifest.js +1 -1
- package/dist/realtime/manifest.js.map +1 -1
- package/dist/realtime/message-port.d.ts +34 -0
- package/dist/realtime/message-port.d.ts.map +1 -0
- package/dist/realtime/message-port.js +141 -0
- package/dist/realtime/message-port.js.map +1 -0
- package/dist/realtime/producer-socket.d.ts +10 -0
- package/dist/realtime/producer-socket.d.ts.map +1 -0
- package/dist/realtime/producer-socket.js +90 -0
- package/dist/realtime/producer-socket.js.map +1 -0
- package/dist/realtime/producer.d.ts +16 -0
- package/dist/realtime/producer.d.ts.map +1 -0
- package/dist/realtime/producer.js +51 -0
- package/dist/realtime/producer.js.map +1 -0
- package/dist/realtime/protocol.d.ts +38 -2
- package/dist/realtime/protocol.d.ts.map +1 -1
- package/dist/realtime/protocol.js +34 -0
- package/dist/realtime/protocol.js.map +1 -1
- package/dist/realtime/publisher.d.ts +1 -0
- package/dist/realtime/publisher.d.ts.map +1 -1
- package/dist/realtime/publisher.js +29 -1
- package/dist/realtime/publisher.js.map +1 -1
- package/dist/realtime/socket-host.d.ts +25 -0
- package/dist/realtime/socket-host.d.ts.map +1 -0
- package/dist/realtime/socket-host.js +95 -0
- package/dist/realtime/socket-host.js.map +1 -0
- package/dist/realtime/store.d.ts +4 -4
- package/dist/realtime/store.d.ts.map +1 -1
- package/dist/realtime/store.js +0 -0
- package/dist/realtime/store.js.map +1 -1
- package/dist/realtime/writer.d.ts +17 -0
- package/dist/realtime/writer.d.ts.map +1 -0
- package/dist/realtime/writer.js +138 -0
- package/dist/realtime/writer.js.map +1 -0
- 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
|
|
62
|
-
export declare function
|
|
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":"AAuBA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAE/D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAOD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,GAC9C,MAAM,CAQR;AAMD,eAAO,MAAM,eAAe,WAAW,CAAA;AAKvC,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,KAAK,EAAE,aAAa,GACnB,MAAM,CAGR;AAID,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC,CAAA;AACtF,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC,CAAA;AAC1F,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAA;
|
|
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":"AAAA,mDAAmD;AACnD,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,6EAA6E;AAC7E,EAAE;AACF,+EAA+E;AAC/E,oEAAoE;AACpE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,wCAAwC;AACxC,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,iEAAiE;AAUjE,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,0DAA0D;AAC1D,MAAM,UAAU,mBAAmB,CACjC,UAA6B,EAC7B,GAA+C;IAE/C,IAAI,GAAG,GAAG,GAAG,CAAA;IACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAE,CAAA;QACjC,IAAI,KAAK,GAAG,CAAC;YAAE,GAAG,IAAI,GAAG,CAAA;QACzB,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAA;IAC3E,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAA;AAClB,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEvC,0EAA0E;AAC1E,4EAA4E;AAC5E,gCAAgC;AAChC,MAAM,UAAU,cAAc,CAC5B,UAA6B,EAC7B,KAAoB;IAEpB,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACtD,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,GAAG,EAAE,CAAA;AACjF,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/realtime/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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"}
|