orez 0.3.7 → 0.3.9

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.
@@ -1,184 +0,0 @@
1
- const OPEN = 1;
2
- const CLOSING = 2;
3
- const CLOSED = 3;
4
- const ZERO_CACHE_SOCKET_ATTACHMENT_TYPE = 'orez-zero-cache-handoff-v1';
5
- function isHandoffAttachment(value) {
6
- if (!value || typeof value !== 'object')
7
- return false;
8
- const record = value;
9
- return (record.type === ZERO_CACHE_SOCKET_ATTACHMENT_TYPE &&
10
- typeof record.id === 'string' &&
11
- Boolean(record.message) &&
12
- typeof record.message === 'object');
13
- }
14
- function errorMessage(error) {
15
- return error instanceof Error ? error.message : String(error);
16
- }
17
- function createLocalSocketBridge(cfSocket, onClose) {
18
- const listeners = new Map();
19
- let readyState = OPEN;
20
- function addEventListener(type, handler) {
21
- let handlers = listeners.get(type);
22
- if (!handlers) {
23
- handlers = new Set();
24
- listeners.set(type, handlers);
25
- }
26
- handlers.add(handler);
27
- }
28
- function removeEventListener(type, handler) {
29
- listeners.get(type)?.delete(handler);
30
- }
31
- function emit(type, event) {
32
- const handlers = listeners.get(type);
33
- if (!handlers)
34
- return;
35
- for (const handler of [...handlers])
36
- handler(event);
37
- }
38
- function markClosed(code, reason, wasClean) {
39
- if (readyState === CLOSED)
40
- return;
41
- readyState = CLOSED;
42
- emit('close', { code, reason, wasClean });
43
- listeners.clear();
44
- onClose();
45
- }
46
- const localSocket = {
47
- accept() { },
48
- get readyState() {
49
- return readyState;
50
- },
51
- send(data) {
52
- if (readyState !== OPEN || cfSocket.readyState === CLOSED) {
53
- throw new Error('WebSocket is closed');
54
- }
55
- cfSocket.send(data);
56
- },
57
- close(code, reason) {
58
- if (readyState === CLOSED)
59
- return;
60
- readyState = CLOSING;
61
- try {
62
- cfSocket.close(code, reason);
63
- }
64
- finally {
65
- markClosed(code ?? 1000, reason ?? '', true);
66
- }
67
- },
68
- addEventListener,
69
- removeEventListener,
70
- receive(data) {
71
- if (readyState === CLOSED)
72
- return;
73
- readyState = OPEN;
74
- emit('message', { data });
75
- },
76
- closeFromPeer(code, reason, wasClean) {
77
- markClosed(code, reason, wasClean);
78
- },
79
- errorFromPeer(error) {
80
- emit('error', { error, message: errorMessage(error) });
81
- markClosed(1011, errorMessage(error), false);
82
- },
83
- };
84
- return localSocket;
85
- }
86
- export class HibernatedWebSocketHandoff {
87
- getFastify;
88
- #bridges = new Map();
89
- #socketIds = new WeakMap();
90
- constructor(getFastify) {
91
- this.getFastify = getFastify;
92
- }
93
- accept(durableObjectState, server, message) {
94
- const id = crypto.randomUUID();
95
- const attachment = {
96
- type: ZERO_CACHE_SOCKET_ATTACHMENT_TYPE,
97
- id,
98
- message,
99
- };
100
- durableObjectState.acceptWebSocket(server);
101
- server.serializeAttachment(attachment);
102
- this.#socketIds.set(server, id);
103
- const bridge = this.#createBridge(id, server, message);
104
- if (!this.#handoff(bridge)) {
105
- bridge.close(1011, 'zero-cache websocket route unavailable', false);
106
- return false;
107
- }
108
- return true;
109
- }
110
- handleMessage(socket, messageData) {
111
- const bridge = this.#bridgeForSocket(socket);
112
- if (!bridge) {
113
- socket.close(1011, 'missing zero-cache websocket attachment');
114
- return;
115
- }
116
- bridge.receive(messageData);
117
- }
118
- handleClose(socket, code, reason, wasClean) {
119
- const bridge = this.#bridgeForSocket(socket);
120
- if (!bridge)
121
- return;
122
- bridge.close(code, reason, wasClean);
123
- }
124
- handleError(socket, error) {
125
- const bridge = this.#bridgeForSocket(socket);
126
- if (!bridge)
127
- return;
128
- bridge.error(error);
129
- }
130
- #bridgeForSocket(socket) {
131
- const attachment = this.#attachmentForSocket(socket);
132
- if (!attachment)
133
- return undefined;
134
- const existing = this.#bridges.get(attachment.id);
135
- if (existing)
136
- return existing;
137
- const bridge = this.#createBridge(attachment.id, socket, attachment.message);
138
- if (!this.#handoff(bridge)) {
139
- bridge.close(1011, 'zero-cache websocket route unavailable', false);
140
- return undefined;
141
- }
142
- return bridge;
143
- }
144
- #attachmentForSocket(socket) {
145
- const attachment = socket.deserializeAttachment();
146
- if (isHandoffAttachment(attachment))
147
- return attachment;
148
- const id = this.#socketIds.get(socket);
149
- if (!id)
150
- return undefined;
151
- const bridge = this.#bridges.get(id);
152
- if (!bridge)
153
- return undefined;
154
- return {
155
- type: ZERO_CACHE_SOCKET_ATTACHMENT_TYPE,
156
- id,
157
- message: bridge.message,
158
- };
159
- }
160
- #createBridge(id, cfSocket, message) {
161
- const localSocket = createLocalSocketBridge(cfSocket, () => {
162
- this.#bridges.delete(id);
163
- this.#socketIds.delete(cfSocket);
164
- });
165
- const bridge = {
166
- id,
167
- message,
168
- socket: localSocket,
169
- receive: localSocket.receive,
170
- close: localSocket.closeFromPeer,
171
- error: localSocket.errorFromPeer,
172
- };
173
- this.#bridges.set(id, bridge);
174
- this.#socketIds.set(cfSocket, id);
175
- return bridge;
176
- }
177
- #handoff(bridge) {
178
- const fastify = this.getFastify();
179
- if (!fastify?.tryHandoff)
180
- return false;
181
- return fastify.tryHandoff({ message: bridge.message, head: new Uint8Array(0) }, bridge.socket);
182
- }
183
- }
184
- //# sourceMappingURL=hibernated-websocket-handoff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hibernated-websocket-handoff.js","sourceRoot":"","sources":["../../src/worker/hibernated-websocket-handoff.ts"],"names":[],"mappings":"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"}