@nocobase/app-server 2.0.0-beta.9 → 3.0.0-beta.1

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/websocket.js CHANGED
@@ -1,371 +1,3 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { createHash } from 'node:crypto';
10
- import { STATUS_CODES } from 'node:http';
11
- const WEBSOCKET_GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
12
- const CLOSE_NORMAL = 1000;
13
- const CLOSE_GOING_AWAY = 1001;
14
- const CLOSE_PROTOCOL_ERROR = 1002;
15
- const CLOSE_ABNORMAL = 1006;
16
- const responseHeadersToSkip = new Set([
17
- 'connection',
18
- 'content-length',
19
- 'keep-alive',
20
- 'proxy-authenticate',
21
- 'proxy-authorization',
22
- 'te',
23
- 'trailer',
24
- 'transfer-encoding',
25
- 'upgrade',
26
- 'sec-websocket-accept',
27
- 'sec-websocket-extensions',
28
- 'sec-websocket-protocol',
29
- ]);
30
- export function isWebSocketUpgrade(req) {
31
- return firstHeaderValue(req.headers.upgrade)?.toLowerCase() === 'websocket';
32
- }
33
- export function createWebSocketUpgradeRequest(req, options = {}) {
34
- return new Request(createRequestUrl(req), {
35
- method: req.method ?? 'GET',
36
- headers: createRequestHeaders(req),
37
- signal: options.signal,
38
- });
39
- }
40
- export function rejectWebSocketUpgrade(socket, status = 404, headers) {
41
- const responseLines = ['Connection: close', 'Content-Length: 0'];
42
- appendResponseHeaders(responseLines, headers);
43
- try {
44
- socket.end(`HTTP/1.1 ${status.toString()} ${STATUS_CODES[status] ?? ''}\r\n${responseLines.join('\r\n')}\r\n\r\n`);
45
- }
46
- catch (error) {
47
- socket.destroy(error instanceof Error ? error : new Error(String(error)));
48
- }
49
- }
50
- export function acceptWebSocketUpgrade(req, socket, options) {
51
- const key = firstHeaderValue(req.headers['sec-websocket-key']);
52
- if (!key) {
53
- rejectWebSocketUpgrade(socket, 400);
54
- return null;
55
- }
56
- const responseLines = [
57
- 'HTTP/1.1 101 Switching Protocols',
58
- 'Upgrade: websocket',
59
- 'Connection: Upgrade',
60
- `Sec-WebSocket-Accept: ${createAcceptKey(key)}`,
61
- ];
62
- const protocol = selectSubprotocol(req);
63
- if (protocol) {
64
- responseLines.push(`Sec-WebSocket-Protocol: ${protocol}`);
65
- }
66
- socket.write(`${responseLines.join('\r\n')}\r\n\r\n`);
67
- const connection = new NodeAppWebSocket(socket, {
68
- events: options.events,
69
- protocol,
70
- request: options.request,
71
- signal: options.signal,
72
- });
73
- connection.start(options.head);
74
- return connection;
75
- }
76
- function createRequestHeaders(req) {
77
- const headers = new Headers();
78
- for (const [key, value] of Object.entries(req.headers)) {
79
- if (Array.isArray(value)) {
80
- for (const item of value) {
81
- headers.append(key, item);
82
- }
83
- continue;
84
- }
85
- if (value !== undefined) {
86
- headers.set(key, value);
87
- }
88
- }
89
- return headers;
90
- }
91
- function createRequestUrl(req) {
92
- const host = firstHeaderValue(req.headers.host) ?? 'localhost';
93
- const protocol = requestProtocol(req);
94
- return new URL(req.url ?? '/', `${protocol}://${host}`);
95
- }
96
- function requestProtocol(req) {
97
- const forwardedProto = firstHeaderValue(req.headers['x-forwarded-proto']);
98
- if (forwardedProto) {
99
- return forwardedProto.split(',')[0]?.trim() || 'http';
100
- }
101
- const socket = req.socket;
102
- return socket.encrypted ? 'https' : 'http';
103
- }
104
- function appendResponseHeaders(responseLines, headers) {
105
- if (!headers) {
106
- return;
107
- }
108
- headers.forEach((value, key) => {
109
- if (!responseHeadersToSkip.has(key.toLowerCase())) {
110
- responseLines.push(`${key}: ${value}`);
111
- }
112
- });
113
- }
114
- function createAcceptKey(key) {
115
- return createHash('sha1').update(`${key}${WEBSOCKET_GUID}`).digest('base64');
116
- }
117
- function selectSubprotocol(req) {
118
- const header = firstHeaderValue(req.headers['sec-websocket-protocol']);
119
- return header?.split(',')[0]?.trim() || null;
120
- }
121
- function firstHeaderValue(value) {
122
- return Array.isArray(value) ? value[0] : value;
123
- }
124
- class NodeAppWebSocket {
125
- url;
126
- protocol;
127
- events;
128
- socket;
129
- signal;
130
- buffered = Buffer.alloc(0);
131
- state = 1;
132
- closeSent = false;
133
- finished = false;
134
- constructor(socket, options) {
135
- this.socket = socket;
136
- this.events = options.events;
137
- this.protocol = options.protocol;
138
- this.url = new URL(options.request.url);
139
- this.signal = options.signal;
140
- }
141
- get readyState() {
142
- return this.state;
143
- }
144
- start(head) {
145
- const closeForAbort = () => {
146
- this.close(CLOSE_GOING_AWAY, 'app runtime closed');
147
- };
148
- this.signal?.addEventListener('abort', closeForAbort, { once: true });
149
- this.socket.on('data', this.handleData);
150
- this.socket.once('close', () => {
151
- this.signal?.removeEventListener('abort', closeForAbort);
152
- this.finish(CLOSE_ABNORMAL, '', false);
153
- });
154
- this.socket.once('end', () => {
155
- this.finish(CLOSE_ABNORMAL, '', false);
156
- });
157
- this.socket.once('error', (error) => {
158
- this.emitError(error);
159
- this.finish(CLOSE_ABNORMAL, '', false);
160
- });
161
- this.invoke(this.events.onOpen, { type: 'open' }, this);
162
- if (head && head.length > 0) {
163
- this.handleData(head);
164
- }
165
- }
166
- send(data, _options) {
167
- if (this.state !== 1) {
168
- return;
169
- }
170
- const isText = typeof data === 'string';
171
- const payload = normalizeOutgoingData(data);
172
- this.socket.write(encodeWebSocketFrame(isText ? 0x1 : 0x2, payload));
173
- }
174
- close(code = CLOSE_NORMAL, reason = '') {
175
- if (this.state >= 2) {
176
- return;
177
- }
178
- this.state = 2;
179
- this.sendCloseFrame(code, reason);
180
- this.socket.end();
181
- }
182
- handleData = (chunk) => {
183
- this.buffered = Buffer.concat([
184
- this.buffered,
185
- Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk),
186
- ]);
187
- while (this.buffered.length > 0) {
188
- let frame;
189
- try {
190
- frame = parseWebSocketFrame(this.buffered);
191
- }
192
- catch (error) {
193
- this.emitError(error);
194
- this.close(CLOSE_PROTOCOL_ERROR, error instanceof Error ? error.message : 'invalid WebSocket frame');
195
- return;
196
- }
197
- if (!frame) {
198
- return;
199
- }
200
- this.buffered = this.buffered.subarray(frame.bytesRead);
201
- this.handleFrame(frame);
202
- }
203
- };
204
- handleFrame(frame) {
205
- if (!frame.fin) {
206
- this.close(CLOSE_PROTOCOL_ERROR, 'fragmented frames are not supported');
207
- return;
208
- }
209
- if (frame.opcode === 0x1) {
210
- this.emitMessage(frame.payload.toString('utf8'));
211
- return;
212
- }
213
- if (frame.opcode === 0x2) {
214
- this.emitMessage(bufferToArrayBuffer(frame.payload));
215
- return;
216
- }
217
- if (frame.opcode === 0x8) {
218
- const close = parseClosePayload(frame.payload);
219
- if (!this.closeSent) {
220
- this.sendCloseFrame(close.code, close.reason);
221
- }
222
- this.socket.end();
223
- this.finish(close.code, close.reason, true);
224
- return;
225
- }
226
- if (frame.opcode === 0x9) {
227
- this.socket.write(encodeWebSocketFrame(0xa, frame.payload));
228
- return;
229
- }
230
- if (frame.opcode === 0xa) {
231
- return;
232
- }
233
- this.close(CLOSE_PROTOCOL_ERROR, 'unsupported frame opcode');
234
- }
235
- emitMessage(data) {
236
- this.invoke(this.events.onMessage, { type: 'message', data }, this);
237
- }
238
- emitError(error) {
239
- this.invoke(this.events.onError, { type: 'error', error }, this);
240
- }
241
- finish(code, reason, wasClean) {
242
- if (this.finished) {
243
- return;
244
- }
245
- this.finished = true;
246
- this.state = 3;
247
- this.socket.off('data', this.handleData);
248
- this.invoke(this.events.onClose, { type: 'close', code, reason, wasClean }, this);
249
- }
250
- sendCloseFrame(code, reason) {
251
- if (this.closeSent) {
252
- return;
253
- }
254
- this.closeSent = true;
255
- this.socket.write(encodeWebSocketFrame(0x8, createClosePayload(code, reason)));
256
- }
257
- invoke(handler, event, ws) {
258
- if (!handler) {
259
- return;
260
- }
261
- try {
262
- const handlerPromise = Promise.resolve(handler(event, ws));
263
- handlerPromise.catch((error) => this.emitError(error));
264
- }
265
- catch (error) {
266
- this.emitError(error);
267
- }
268
- }
269
- }
270
- function normalizeOutgoingData(data) {
271
- if (typeof data === 'string') {
272
- return Buffer.from(data);
273
- }
274
- if (data instanceof Uint8Array) {
275
- return Buffer.from(data);
276
- }
277
- return Buffer.from(data);
278
- }
279
- function parseWebSocketFrame(buffer) {
280
- if (buffer.length < 2) {
281
- return null;
282
- }
283
- const firstByte = buffer[0];
284
- const secondByte = buffer[1];
285
- const fin = (firstByte & 0x80) !== 0;
286
- const opcode = firstByte & 0x0f;
287
- const masked = (secondByte & 0x80) !== 0;
288
- let payloadLength = secondByte & 0x7f;
289
- let offset = 2;
290
- if (payloadLength === 126) {
291
- if (buffer.length < offset + 2) {
292
- return null;
293
- }
294
- payloadLength = buffer.readUInt16BE(offset);
295
- offset += 2;
296
- }
297
- else if (payloadLength === 127) {
298
- if (buffer.length < offset + 8) {
299
- return null;
300
- }
301
- const length = buffer.readBigUInt64BE(offset);
302
- if (length > BigInt(Number.MAX_SAFE_INTEGER)) {
303
- throw new Error('WebSocket frame is too large');
304
- }
305
- payloadLength = Number(length);
306
- offset += 8;
307
- }
308
- if (!masked) {
309
- throw new Error('Client WebSocket frames must be masked');
310
- }
311
- if (buffer.length < offset + 4 + payloadLength) {
312
- return null;
313
- }
314
- const mask = buffer.subarray(offset, offset + 4);
315
- offset += 4;
316
- const payload = Buffer.from(buffer.subarray(offset, offset + payloadLength));
317
- for (let index = 0; index < payload.length; index += 1) {
318
- payload[index] ^= mask[index % 4];
319
- }
320
- return {
321
- fin,
322
- opcode,
323
- payload,
324
- bytesRead: offset + payloadLength,
325
- };
326
- }
327
- function encodeWebSocketFrame(opcode, payload) {
328
- const length = payload.length;
329
- let header;
330
- if (length < 126) {
331
- header = Buffer.from([0x80 | opcode, length]);
332
- }
333
- else if (length <= 0xffff) {
334
- header = Buffer.allocUnsafe(4);
335
- header[0] = 0x80 | opcode;
336
- header[1] = 126;
337
- header.writeUInt16BE(length, 2);
338
- }
339
- else {
340
- header = Buffer.allocUnsafe(10);
341
- header[0] = 0x80 | opcode;
342
- header[1] = 127;
343
- header.writeBigUInt64BE(BigInt(length), 2);
344
- }
345
- return Buffer.concat([header, payload]);
346
- }
347
- function createClosePayload(code, reason) {
348
- const reasonBuffer = Buffer.from(reason).subarray(0, 123);
349
- const payload = Buffer.allocUnsafe(2 + reasonBuffer.length);
350
- payload.writeUInt16BE(code, 0);
351
- reasonBuffer.copy(payload, 2);
352
- return payload;
353
- }
354
- function parseClosePayload(payload) {
355
- if (payload.length < 2) {
356
- return {
357
- code: CLOSE_NORMAL,
358
- reason: '',
359
- };
360
- }
361
- return {
362
- code: payload.readUInt16BE(0),
363
- reason: payload.subarray(2).toString('utf8'),
364
- };
365
- }
366
- function bufferToArrayBuffer(buffer) {
367
- const arrayBuffer = new ArrayBuffer(buffer.byteLength);
368
- new Uint8Array(arrayBuffer).set(buffer);
369
- return arrayBuffer;
370
- }
1
+ // Compatibility entry: all application hosts share the maintained WebSocket adapter.
2
+ export * from '@nocobase/app-websocket';
371
3
  //# sourceMappingURL=websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/app-server",
3
- "version": "2.0.0-beta.9",
3
+ "version": "3.0.0-beta.1",
4
4
  "type": "module",
5
5
  "prettier": "@nocobase/dev-config/prettier",
6
6
  "engines": {
@@ -117,15 +117,15 @@
117
117
  "hono-openapi": "^1.3.3",
118
118
  "zod": "^4.6.5",
119
119
  "openapi-types": "^12.1.3",
120
- "@nocobase/app-websocket": "^0.0.2-beta.0",
120
+ "@nocobase/app-websocket": "^0.1.0-beta.1",
121
121
  "@nocobase/config": "^0.1.0-beta.3",
122
122
  "@nocobase/drive": "^0.1.0-beta.7",
123
+ "@nocobase/realtime": "^0.1.0-beta.3",
123
124
  "@nocobase/logging": "^0.1.0-beta.7",
124
- "@nocobase/realtime": "^0.1.0-beta.2",
125
125
  "@nocobase/secrets": "^0.1.0-beta.1",
126
- "@nocobase/session": "^0.1.0-beta.3",
127
126
  "@nocobase/snowflake": "^1.0.0-beta.4",
128
- "@nocobase/mailer": "^0.1.0-beta.0"
127
+ "@nocobase/mailer": "^0.1.0-beta.0",
128
+ "@nocobase/session": "^0.1.0-beta.3"
129
129
  },
130
130
  "devDependencies": {
131
131
  "@types/node": "^24.0.0",
@@ -140,14 +140,13 @@
140
140
  "@nocobase/db-postgres": "0.1.0-beta.5",
141
141
  "@nocobase/db-sqlite": "0.1.0-beta.6",
142
142
  "@nocobase/db-testing": "0.1.0-beta.3",
143
- "@nocobase/api-client": "1.0.0-beta.4",
144
- "@nocobase/dev-config": "0.1.0-beta.23"
143
+ "@nocobase/api-client": "1.0.0-beta.5",
144
+ "@nocobase/dev-config": "0.1.0-beta.24"
145
145
  },
146
146
  "peerDependencies": {
147
147
  "@nocobase/db-dameng": "^0.1.0-beta.4",
148
148
  "@nocobase/db-kingbase": "^0.1.0-beta.4",
149
149
  "@nocobase/db-oceanbase": "^0.1.0-beta.4",
150
- "@nocobase/i18n": "^1.0.0-beta.7",
151
150
  "@nocobase/caching": "^0.1.0-beta.3",
152
151
  "@nocobase/db": "^1.0.0-beta.21",
153
152
  "@nocobase/service-provider": "^0.0.2-beta.2",
@@ -157,7 +156,8 @@
157
156
  "@nocobase/db-mysql": "^0.1.0-beta.5",
158
157
  "@nocobase/db-postgres": "^0.1.0-beta.5",
159
158
  "@nocobase/db-mssql": "^0.1.0-beta.5",
160
- "@nocobase/db-oracle": "^0.1.0-beta.5"
159
+ "@nocobase/db-oracle": "^0.1.0-beta.5",
160
+ "@nocobase/i18n": "^2.0.0-beta.1"
161
161
  },
162
162
  "peerDependenciesMeta": {
163
163
  "@nocobase/db-sqlite": {