@omujs/omu 0.9.48 → 0.9.50
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/address.js +1 -0
- package/dist/address.js.map +7 -0
- package/dist/api/asset/extension.d.ts +25 -0
- package/dist/api/asset/extension.js +2 -0
- package/dist/api/asset/extension.js.map +7 -0
- package/dist/api/asset/index.d.ts +2 -0
- package/dist/api/asset/index.js +2 -0
- package/dist/api/asset/index.js.map +7 -0
- package/dist/api/dashboard/extension.d.ts +181 -0
- package/dist/api/dashboard/extension.js +2 -0
- package/dist/api/dashboard/extension.js.map +7 -0
- package/{src/api/dashboard/handler.ts → dist/api/dashboard/handler.d.ts} +3 -5
- package/dist/api/dashboard/handler.js +1 -0
- package/dist/api/dashboard/handler.js.map +7 -0
- package/dist/api/dashboard/index.d.ts +3 -0
- package/dist/api/dashboard/index.js +2 -0
- package/dist/api/dashboard/index.js.map +7 -0
- package/dist/api/dashboard/packets.d.ts +63 -0
- package/dist/api/dashboard/packets.js +2 -0
- package/dist/api/dashboard/packets.js.map +7 -0
- package/dist/api/endpoint/endpoint.d.ts +21 -0
- package/dist/api/endpoint/endpoint.js +2 -0
- package/dist/api/endpoint/endpoint.js.map +7 -0
- package/dist/api/endpoint/extension.d.ts +17 -0
- package/dist/api/endpoint/extension.js +2 -0
- package/dist/api/endpoint/extension.js.map +7 -0
- package/{src/api/endpoint/index.ts → dist/api/endpoint/index.d.ts} +0 -1
- package/dist/api/endpoint/index.js +2 -0
- package/dist/api/endpoint/index.js.map +7 -0
- package/dist/api/endpoint/packets.d.ts +51 -0
- package/dist/api/endpoint/packets.js +2 -0
- package/dist/api/endpoint/packets.js.map +7 -0
- package/dist/api/extension-registry.d.ts +8 -0
- package/dist/api/extension-registry.js +2 -0
- package/dist/api/extension-registry.js.map +7 -0
- package/dist/api/extension.d.ts +11 -0
- package/dist/api/extension.js +2 -0
- package/dist/api/extension.js.map +7 -0
- package/dist/api/http/extension.d.ts +41 -0
- package/dist/api/http/extension.js +2 -0
- package/dist/api/http/extension.js.map +7 -0
- package/dist/api/http/http.d.ts +36 -0
- package/dist/api/http/http.js +2 -0
- package/dist/api/http/http.js.map +7 -0
- package/{src/api/http/index.ts → dist/api/http/index.d.ts} +0 -1
- package/dist/api/http/index.js +2 -0
- package/dist/api/http/index.js.map +7 -0
- package/dist/api/http/websocket.d.ts +125 -0
- package/dist/api/http/websocket.js +2 -0
- package/dist/api/http/websocket.js.map +7 -0
- package/dist/api/i18n/extension.d.ts +19 -0
- package/dist/api/i18n/extension.js +2 -0
- package/dist/api/i18n/extension.js.map +7 -0
- package/{src/api/i18n/index.ts → dist/api/i18n/index.d.ts} +0 -1
- package/dist/api/i18n/index.js +2 -0
- package/dist/api/i18n/index.js.map +7 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +7 -0
- package/dist/api/logger/extension.d.ts +25 -0
- package/dist/api/logger/extension.js +2 -0
- package/dist/api/logger/extension.js.map +7 -0
- package/dist/api/logger/index.d.ts +1 -0
- package/dist/api/logger/index.js +2 -0
- package/dist/api/logger/index.js.map +7 -0
- package/dist/api/logger/packets.d.ts +18 -0
- package/dist/api/logger/packets.js +2 -0
- package/dist/api/logger/packets.js.map +7 -0
- package/dist/api/permission/extension.d.ts +19 -0
- package/dist/api/permission/extension.js +2 -0
- package/dist/api/permission/extension.js.map +7 -0
- package/{src/api/permission/index.ts → dist/api/permission/index.d.ts} +0 -1
- package/dist/api/permission/index.js +2 -0
- package/dist/api/permission/index.js.map +7 -0
- package/dist/api/permission/permission.d.ts +25 -0
- package/dist/api/permission/permission.js +2 -0
- package/dist/api/permission/permission.js.map +7 -0
- package/dist/api/plugin/extension.d.ts +43 -0
- package/dist/api/plugin/extension.js +2 -0
- package/dist/api/plugin/extension.js.map +7 -0
- package/{src/api/plugin/index.ts → dist/api/plugin/index.d.ts} +0 -1
- package/dist/api/plugin/index.js +2 -0
- package/dist/api/plugin/index.js.map +7 -0
- package/{src/api/plugin/package-info.ts → dist/api/plugin/package-info.d.ts} +0 -7
- package/dist/api/plugin/package-info.js +1 -0
- package/dist/api/plugin/package-info.js.map +7 -0
- package/dist/api/registry/extension.d.ts +23 -0
- package/dist/api/registry/extension.js +2 -0
- package/dist/api/registry/extension.js.map +7 -0
- package/{src/api/registry/index.ts → dist/api/registry/index.d.ts} +0 -1
- package/dist/api/registry/index.js +2 -0
- package/dist/api/registry/index.js.map +7 -0
- package/dist/api/registry/packets.d.ts +20 -0
- package/dist/api/registry/packets.js +2 -0
- package/dist/api/registry/packets.js.map +7 -0
- package/{src/api/registry/registry.ts → dist/api/registry/registry.d.ts} +11 -53
- package/dist/api/registry/registry.js +2 -0
- package/dist/api/registry/registry.js.map +7 -0
- package/dist/api/server/extension.d.ts +61 -0
- package/dist/api/server/extension.js +2 -0
- package/dist/api/server/extension.js.map +7 -0
- package/dist/api/server/index.d.ts +1 -0
- package/dist/api/server/index.js +2 -0
- package/dist/api/server/index.js.map +7 -0
- package/dist/api/session/extension.d.ts +52 -0
- package/dist/api/session/extension.js +2 -0
- package/dist/api/session/extension.js.map +7 -0
- package/dist/api/session/index.d.ts +1 -0
- package/dist/api/session/index.js +2 -0
- package/dist/api/session/index.js.map +7 -0
- package/dist/api/signal/extension.d.ts +19 -0
- package/dist/api/signal/extension.js +2 -0
- package/dist/api/signal/extension.js.map +7 -0
- package/dist/api/signal/index.d.ts +1 -0
- package/dist/api/signal/index.js +2 -0
- package/dist/api/signal/index.js.map +7 -0
- package/dist/api/signal/packets.d.ts +21 -0
- package/dist/api/signal/packets.js +2 -0
- package/dist/api/signal/packets.js.map +7 -0
- package/dist/api/signal/signal.d.ts +33 -0
- package/dist/api/signal/signal.js +2 -0
- package/dist/api/signal/signal.js.map +7 -0
- package/dist/api/table/extension.d.ts +26 -0
- package/dist/api/table/extension.js +2 -0
- package/dist/api/table/extension.js.map +7 -0
- package/{src/api/table/index.ts → dist/api/table/index.d.ts} +0 -1
- package/dist/api/table/index.js +2 -0
- package/dist/api/table/index.js.map +7 -0
- package/dist/api/table/packets.d.ts +65 -0
- package/dist/api/table/packets.js +2 -0
- package/dist/api/table/packets.js.map +7 -0
- package/dist/api/table/table.d.ts +75 -0
- package/dist/api/table/table.js +2 -0
- package/dist/api/table/table.js.map +7 -0
- package/dist/app.d.ts +49 -0
- package/dist/app.js +2 -0
- package/dist/app.js.map +7 -0
- package/dist/const.d.ts +2 -0
- package/dist/const.js +2 -0
- package/dist/const.js.map +7 -0
- package/dist/errors.d.ts +36 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +7 -0
- package/dist/event/index.d.ts +6 -0
- package/dist/event/index.js +2 -0
- package/dist/event/index.js.map +7 -0
- package/dist/helper.d.ts +10 -0
- package/dist/helper.js +2 -0
- package/dist/helper.js.map +7 -0
- package/dist/identifier.d.ts +51 -0
- package/dist/identifier.js +2 -0
- package/dist/identifier.js.map +7 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +7 -0
- package/{src/localization/index.ts → dist/localization/index.d.ts} +0 -1
- package/dist/localization/index.js +2 -0
- package/dist/localization/index.js.map +7 -0
- package/dist/localization/locale.d.ts +735 -0
- package/dist/localization/locale.js +2 -0
- package/dist/localization/locale.js.map +7 -0
- package/{src/localization/localization.ts → dist/localization/localization.d.ts} +0 -2
- package/dist/localization/localization.js +1 -0
- package/dist/localization/localization.js.map +7 -0
- package/dist/lock.d.ts +6 -0
- package/dist/lock.js +2 -0
- package/dist/lock.js.map +7 -0
- package/dist/network/connection.d.ts +17 -0
- package/dist/network/connection.js +2 -0
- package/dist/network/connection.js.map +7 -0
- package/dist/network/encryption.d.ts +38 -0
- package/dist/network/encryption.js +2 -0
- package/dist/network/encryption.js.map +7 -0
- package/dist/network/frame-transport.d.ts +22 -0
- package/dist/network/frame-transport.js +2 -0
- package/dist/network/frame-transport.js.map +7 -0
- package/{src/network/index.ts → dist/network/index.d.ts} +0 -1
- package/dist/network/index.js +2 -0
- package/dist/network/index.js.map +7 -0
- package/dist/network/network.d.ts +59 -0
- package/dist/network/network.js +2 -0
- package/dist/network/network.js.map +7 -0
- package/{src/network/packet/index.ts → dist/network/packet/index.d.ts} +0 -1
- package/dist/network/packet/index.js +2 -0
- package/dist/network/packet/index.js.map +7 -0
- package/dist/network/packet/packet-types.d.ts +84 -0
- package/dist/network/packet/packet-types.js +2 -0
- package/dist/network/packet/packet-types.js.map +7 -0
- package/dist/network/packet/packet.d.ts +25 -0
- package/dist/network/packet/packet.js +2 -0
- package/dist/network/packet/packet.js.map +7 -0
- package/dist/network/websocket-transport.d.ts +24 -0
- package/dist/network/websocket-transport.js +2 -0
- package/dist/network/websocket-transport.js.map +7 -0
- package/dist/omu.d.ts +61 -0
- package/dist/omu.js +2 -0
- package/dist/omu.js.map +7 -0
- package/dist/result.d.ts +26 -0
- package/dist/result.js +2 -0
- package/dist/result.js.map +7 -0
- package/dist/serialize/bytebuffer.d.ts +73 -0
- package/dist/serialize/bytebuffer.js +2 -0
- package/dist/serialize/bytebuffer.js.map +7 -0
- package/dist/serialize/index.d.ts +2 -0
- package/dist/serialize/index.js +2 -0
- package/dist/serialize/index.js.map +7 -0
- package/dist/serialize/serializer.d.ts +26 -0
- package/dist/serialize/serializer.js +2 -0
- package/dist/serialize/serializer.js.map +7 -0
- package/dist/token.d.ts +14 -0
- package/dist/token.js +2 -0
- package/dist/token.js.map +7 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +7 -0
- package/package.json +12 -9
- package/CHANGELOG.md +0 -1845
- package/src/api/asset/extension.ts +0 -193
- package/src/api/asset/index.ts +0 -5
- package/src/api/dashboard/extension.ts +0 -651
- package/src/api/dashboard/index.ts +0 -38
- package/src/api/dashboard/packets.ts +0 -126
- package/src/api/endpoint/endpoint.ts +0 -56
- package/src/api/endpoint/extension.ts +0 -133
- package/src/api/endpoint/packets.ts +0 -176
- package/src/api/extension-registry.ts +0 -17
- package/src/api/extension.ts +0 -19
- package/src/api/http/extension.ts +0 -401
- package/src/api/http/http.ts +0 -79
- package/src/api/http/websocket.ts +0 -283
- package/src/api/i18n/extension.ts +0 -65
- package/src/api/index.ts +0 -3
- package/src/api/logger/extension.ts +0 -75
- package/src/api/logger/index.ts +0 -4
- package/src/api/logger/packets.ts +0 -38
- package/src/api/permission/extension.ts +0 -107
- package/src/api/permission/permission.ts +0 -53
- package/src/api/plugin/extension.ts +0 -100
- package/src/api/registry/extension.ts +0 -326
- package/src/api/registry/packets.ts +0 -64
- package/src/api/server/extension.ts +0 -155
- package/src/api/server/index.ts +0 -11
- package/src/api/session/extension.ts +0 -205
- package/src/api/session/index.ts +0 -7
- package/src/api/signal/extension.ts +0 -125
- package/src/api/signal/index.ts +0 -1
- package/src/api/signal/packets.ts +0 -61
- package/src/api/signal/signal.ts +0 -67
- package/src/api/table/extension.ts +0 -554
- package/src/api/table/packets.ts +0 -252
- package/src/api/table/table.ts +0 -113
- package/src/app.ts +0 -95
- package/src/const.ts +0 -2
- package/src/errors.ts +0 -70
- package/src/event/index.ts +0 -18
- package/src/helper.ts +0 -16
- package/src/identifier.ts +0 -256
- package/src/index.ts +0 -87
- package/src/localization/locale.ts +0 -737
- package/src/lock.ts +0 -43
- package/src/network/connection.ts +0 -45
- package/src/network/encryption.ts +0 -221
- package/src/network/frame-transport.ts +0 -186
- package/src/network/network.ts +0 -322
- package/src/network/packet/packet-types.ts +0 -164
- package/src/network/packet/packet.ts +0 -55
- package/src/network/websocket-transport.ts +0 -123
- package/src/omu.ts +0 -156
- package/src/result.ts +0 -78
- package/src/serialize/bytebuffer.ts +0 -432
- package/src/serialize/index.ts +0 -2
- package/src/serialize/serializer.ts +0 -149
- package/src/token.ts +0 -39
- package/src/version.ts +0 -2
- package/tsconfig.json +0 -18
- /package/{src/address.ts → dist/address.d.ts} +0 -0
|
@@ -1,401 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { textEncoder } from '../../const';
|
|
3
|
-
import { Identifier } from '../../identifier';
|
|
4
|
-
import { PacketType } from '../../network/packet';
|
|
5
|
-
import { Omu } from '../../omu';
|
|
6
|
-
import { Extension, ExtensionType } from '../extension';
|
|
7
|
-
import { DataChunk, HttpRequest, OmuResponse, RequestHandle } from './http';
|
|
8
|
-
import { OmuWS, WebSocketClose, WebSocketError, WebSocketOpen, WSData, WSDataMeta, WSHandleState, WSMsgType } from './websocket';
|
|
9
|
-
|
|
10
|
-
export const HTTP_EXTENSION_TYPE: ExtensionType<HttpExtension> = new ExtensionType(
|
|
11
|
-
'http',
|
|
12
|
-
(omu: Omu) => new HttpExtension(omu),
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
export const HTTP_REQUEST_PERMISSION_ID: Identifier = HTTP_EXTENSION_TYPE.join('request');
|
|
16
|
-
|
|
17
|
-
const REQUEST_CREATE = PacketType.createJson<HttpRequest>(HTTP_EXTENSION_TYPE, {
|
|
18
|
-
name: 'request_create',
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
const REQUEST_SEND = PacketType.createSerialized<DataChunk<RequestHandle>>(HTTP_EXTENSION_TYPE, {
|
|
22
|
-
name: 'request_send',
|
|
23
|
-
serializer: DataChunk,
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
type HttpRequestClose = RequestHandle;
|
|
27
|
-
|
|
28
|
-
const REQUEST_CLOSE = PacketType.createJson<HttpRequestClose>(HTTP_EXTENSION_TYPE, {
|
|
29
|
-
name: 'request_close',
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
type HttpResponse = RequestHandle & {
|
|
33
|
-
header: Record<string, string>;
|
|
34
|
-
status: number;
|
|
35
|
-
statusText: string;
|
|
36
|
-
url: string;
|
|
37
|
-
history: HttpResponse[];
|
|
38
|
-
redirected: boolean;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const RESPONSE_CREATE = PacketType.createJson<HttpResponse>(HTTP_EXTENSION_TYPE, {
|
|
42
|
-
name: 'response_create',
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
const RESPONSE_CHUNK = PacketType.createSerialized<DataChunk<RequestHandle>>(HTTP_EXTENSION_TYPE, {
|
|
46
|
-
name: 'response_chunk',
|
|
47
|
-
serializer: DataChunk,
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
const RESPONSE_CLOSE = PacketType.createJson<RequestHandle>(HTTP_EXTENSION_TYPE, {
|
|
51
|
-
name: 'response_close',
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
type HandleStateReceiving = {
|
|
55
|
-
type: 'receiving';
|
|
56
|
-
receive(data: Uint8Array): void;
|
|
57
|
-
close(): void;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
type HandleStateCreated = {
|
|
61
|
-
type: 'created';
|
|
62
|
-
setResponse(response: HttpResponse): void;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
type HandleState = HandleStateCreated | HandleStateReceiving;
|
|
66
|
-
|
|
67
|
-
const WEBSOCKET_CREATE = PacketType.createJson<HttpRequest>(HTTP_EXTENSION_TYPE, {
|
|
68
|
-
name: 'ws_create',
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
const WEBSOCKET_OPEN = PacketType.createJson<WebSocketOpen>(HTTP_EXTENSION_TYPE, {
|
|
72
|
-
name: 'ws_open',
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
const WEBSOCKET_DATA = PacketType.createSerialized<DataChunk<WSDataMeta>>(HTTP_EXTENSION_TYPE, {
|
|
76
|
-
name: 'ws_data',
|
|
77
|
-
serializer: DataChunk,
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
const WEBSOCKET_CLOSE = PacketType.createJson<WebSocketClose>(HTTP_EXTENSION_TYPE, {
|
|
81
|
-
name: 'ws_close',
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
const WEBSOCKET_ERROR = PacketType.createJson<WebSocketError>(HTTP_EXTENSION_TYPE, {
|
|
85
|
-
name: 'ws_error',
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
function createFuture<T>(): {
|
|
89
|
-
promise: Promise<T>;
|
|
90
|
-
resolve: (value: T) => void;
|
|
91
|
-
reject: (reason?: unknown) => void;
|
|
92
|
-
} {
|
|
93
|
-
let resolve: ((value: T) => void) | undefined = undefined;
|
|
94
|
-
let reject: ((reason?: unknown) => void) | undefined = undefined;
|
|
95
|
-
const promise = new Promise<T>((res, rej) => {
|
|
96
|
-
resolve = res;
|
|
97
|
-
reject = rej;
|
|
98
|
-
});
|
|
99
|
-
if (!resolve || !reject) throw new Error('Failed to create future');
|
|
100
|
-
return {
|
|
101
|
-
promise,
|
|
102
|
-
resolve,
|
|
103
|
-
reject,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
type WSSendTask = {
|
|
108
|
-
id: string;
|
|
109
|
-
data: WSData;
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
export class HttpExtension implements Extension {
|
|
113
|
-
public readonly type: ExtensionType<Extension> = HTTP_EXTENSION_TYPE;
|
|
114
|
-
private requestCount: number = 0;
|
|
115
|
-
|
|
116
|
-
private readonly httpHandles: Record<string, HandleState | undefined> = {};
|
|
117
|
-
private readonly wsHandles: Record<string, WSHandleState> = {};
|
|
118
|
-
private readonly wsSendQueue: WSSendTask[] = [];
|
|
119
|
-
private wsSendWaitResolve: () => void = () => {};
|
|
120
|
-
|
|
121
|
-
constructor(
|
|
122
|
-
private readonly omu: Omu,
|
|
123
|
-
) {
|
|
124
|
-
omu.network.registerPacket(
|
|
125
|
-
REQUEST_CREATE,
|
|
126
|
-
REQUEST_SEND,
|
|
127
|
-
REQUEST_CLOSE,
|
|
128
|
-
RESPONSE_CREATE,
|
|
129
|
-
RESPONSE_CHUNK,
|
|
130
|
-
RESPONSE_CLOSE,
|
|
131
|
-
WEBSOCKET_CLOSE,
|
|
132
|
-
WEBSOCKET_CREATE,
|
|
133
|
-
WEBSOCKET_DATA,
|
|
134
|
-
WEBSOCKET_OPEN,
|
|
135
|
-
WEBSOCKET_ERROR,
|
|
136
|
-
);
|
|
137
|
-
omu.network.addPacketHandler(RESPONSE_CREATE, (packet) => {
|
|
138
|
-
const handle = this.httpHandles[packet.id];
|
|
139
|
-
if (!handle) {
|
|
140
|
-
console.warn('Received response for unknown request', packet.id);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
if (handle.type !== 'created') {
|
|
144
|
-
console.warn('Received response for already handled request', packet.id);
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
handle.setResponse(packet);
|
|
148
|
-
});
|
|
149
|
-
omu.network.addPacketHandler(RESPONSE_CHUNK, (packet) => {
|
|
150
|
-
const handle = this.httpHandles[packet.meta.id];
|
|
151
|
-
if (!handle) {
|
|
152
|
-
console.warn('Received response for unknown request', packet.meta.id);
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
if (handle.type !== 'receiving') {
|
|
156
|
-
console.warn('Received chunk for non-receiving request', packet.meta.id);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
handle.receive(packet.body);
|
|
160
|
-
});
|
|
161
|
-
omu.network.addPacketHandler(RESPONSE_CLOSE, (packet) => {
|
|
162
|
-
const handle = this.httpHandles[packet.id];
|
|
163
|
-
if (!handle) {
|
|
164
|
-
console.warn('Received response for unknown request', packet.id);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
if (handle.type !== 'receiving') {
|
|
168
|
-
console.warn('Received chunk for non-receiving request', packet.id);
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
handle.close();
|
|
172
|
-
delete this.httpHandles[packet.id];
|
|
173
|
-
});
|
|
174
|
-
omu.network.addPacketHandler(WEBSOCKET_OPEN, (packet) => {
|
|
175
|
-
const handle = this.wsHandles[packet.id];
|
|
176
|
-
if (!handle) {
|
|
177
|
-
console.warn('Received response for unknown socket', packet.id);
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
if (handle.type !== 'created') {
|
|
181
|
-
console.warn('Received response for already handled socket', packet.id);
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
handle.handle.open(packet);
|
|
185
|
-
handle.type = 'receiving';
|
|
186
|
-
});
|
|
187
|
-
omu.network.addPacketHandler(WEBSOCKET_DATA, (packet) => {
|
|
188
|
-
const handle = this.wsHandles[packet.meta.id];
|
|
189
|
-
if (!handle) {
|
|
190
|
-
console.warn('Received response for unknown socket', packet.meta.id);
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
if (handle.type !== 'receiving') {
|
|
194
|
-
console.warn('Received chunk for non-receiving socket', packet.meta.id);
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
handle.handle.dispatch(packet);
|
|
198
|
-
});
|
|
199
|
-
omu.network.addPacketHandler(WEBSOCKET_CLOSE, (packet) => {
|
|
200
|
-
const handle = this.wsHandles[packet.id];
|
|
201
|
-
if (!handle) {
|
|
202
|
-
console.warn('Received response for unknown socket', packet.id);
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
handle.handle.close(packet);
|
|
206
|
-
delete this.httpHandles[packet.id];
|
|
207
|
-
});
|
|
208
|
-
omu.network.addPacketHandler(WEBSOCKET_ERROR, (packet) => {
|
|
209
|
-
const handle = this.wsHandles[packet.id];
|
|
210
|
-
if (!handle) {
|
|
211
|
-
console.warn('Received response for unknown socket', packet.id);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
handle.handle.error(packet);
|
|
215
|
-
delete this.httpHandles[packet.id];
|
|
216
|
-
});
|
|
217
|
-
omu.event.ready.listen(() => {
|
|
218
|
-
this.wsSendLoop();
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
private async wsSendLoop() {
|
|
223
|
-
while (this.omu.running) {
|
|
224
|
-
const send = this.wsSendQueue.shift();
|
|
225
|
-
if (send) {
|
|
226
|
-
const array = await toUint8Array(send.data);
|
|
227
|
-
const type = typeof send.data === 'string' ? WSMsgType.TEXT : WSMsgType.BINARY;
|
|
228
|
-
this.omu.send(WEBSOCKET_DATA, new DataChunk({ id: send.id, type }, array));
|
|
229
|
-
} else {
|
|
230
|
-
await new Promise<void>((resolve) => {
|
|
231
|
-
this.wsSendWaitResolve = resolve;
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
private generateHeaders(request: Request, init?: RequestInit): Record<string, string> {
|
|
238
|
-
const headers: Record<string, string> = {};
|
|
239
|
-
const keys: Record<string, string> = {};
|
|
240
|
-
const set = (key: string, value: string) => {
|
|
241
|
-
const lowerKey = key.toLowerCase();
|
|
242
|
-
const originalKey = keys[lowerKey];
|
|
243
|
-
if (originalKey) {
|
|
244
|
-
delete headers[originalKey];
|
|
245
|
-
}
|
|
246
|
-
headers[key] = value;
|
|
247
|
-
keys[lowerKey] = key;
|
|
248
|
-
};
|
|
249
|
-
request.headers.forEach((value, key) => {
|
|
250
|
-
set(key, value);
|
|
251
|
-
});
|
|
252
|
-
if (init?.headers) {
|
|
253
|
-
if (init.headers instanceof Headers) {
|
|
254
|
-
init.headers.forEach((value, key) => {
|
|
255
|
-
set(key, value);
|
|
256
|
-
});
|
|
257
|
-
} else if (Array.isArray(init.headers)) {
|
|
258
|
-
for (const [key, value] of init.headers) {
|
|
259
|
-
set(key, value);
|
|
260
|
-
}
|
|
261
|
-
} else {
|
|
262
|
-
for (const key in init.headers) {
|
|
263
|
-
const value = init.headers[key];
|
|
264
|
-
set(key, value);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
return headers;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
private generateId(): Identifier {
|
|
272
|
-
return this.omu.app.id.join(`${performance.timeOrigin}-${this.requestCount++}`);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
public async request(input: string | URL | globalThis.Request, init?: RequestInit): Promise<{ response: HttpResponse; stream: ReadableStream }> {
|
|
276
|
-
const request = new Request(input, init);
|
|
277
|
-
const id = this.generateId().key();
|
|
278
|
-
this.omu.send(REQUEST_CREATE, {
|
|
279
|
-
id,
|
|
280
|
-
header: this.generateHeaders(request, init),
|
|
281
|
-
method: request.method,
|
|
282
|
-
redirect: request.redirect,
|
|
283
|
-
url: request.url,
|
|
284
|
-
});
|
|
285
|
-
if (request.body) {
|
|
286
|
-
const reader = request.body.getReader();
|
|
287
|
-
while (true) {
|
|
288
|
-
const result = await reader.read();
|
|
289
|
-
if (result.done) {
|
|
290
|
-
break;
|
|
291
|
-
}
|
|
292
|
-
this.omu.send(REQUEST_SEND, {
|
|
293
|
-
meta: { id },
|
|
294
|
-
body: result.value,
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
this.omu.send(REQUEST_CLOSE, { id });
|
|
299
|
-
const chunks: Uint8Array[] = [];
|
|
300
|
-
const responseFuture = createFuture<HttpResponse>();
|
|
301
|
-
let chunkEvent = createFuture<boolean>();
|
|
302
|
-
const setResponse = (response: HttpResponse) => {
|
|
303
|
-
responseFuture.resolve(response);
|
|
304
|
-
this.httpHandles[id] = {
|
|
305
|
-
type: 'receiving',
|
|
306
|
-
receive(data: Uint8Array<ArrayBufferLike>) {
|
|
307
|
-
chunks.push(data);
|
|
308
|
-
chunkEvent.resolve(true);
|
|
309
|
-
chunkEvent = createFuture<boolean>();
|
|
310
|
-
},
|
|
311
|
-
close() {
|
|
312
|
-
chunkEvent.resolve(false);
|
|
313
|
-
},
|
|
314
|
-
};
|
|
315
|
-
};
|
|
316
|
-
this.httpHandles[id] = {
|
|
317
|
-
type: 'created',
|
|
318
|
-
setResponse,
|
|
319
|
-
};
|
|
320
|
-
const response = await responseFuture.promise;
|
|
321
|
-
return {
|
|
322
|
-
response,
|
|
323
|
-
stream: new ReadableStream<Uint8Array>({
|
|
324
|
-
async start(controller) {
|
|
325
|
-
while (await chunkEvent.promise) {
|
|
326
|
-
const chunk = chunks.shift();
|
|
327
|
-
if (!chunk) break;
|
|
328
|
-
controller.enqueue(chunk);
|
|
329
|
-
}
|
|
330
|
-
controller.close();
|
|
331
|
-
},
|
|
332
|
-
}),
|
|
333
|
-
};
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
public async fetch(input: string | URL | globalThis.Request, init?: RequestInit): Promise<OmuResponse> {
|
|
337
|
-
const { response, stream } = await this.request(input, init);
|
|
338
|
-
return new OmuResponse(
|
|
339
|
-
new Headers(response.header),
|
|
340
|
-
response.status >= 200 && response.status < 300,
|
|
341
|
-
response.redirected,
|
|
342
|
-
response.status,
|
|
343
|
-
response.statusText,
|
|
344
|
-
'basic',
|
|
345
|
-
response.url,
|
|
346
|
-
stream,
|
|
347
|
-
false,
|
|
348
|
-
);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
public async ws(input: string | URL | globalThis.Request, options?: {
|
|
352
|
-
method?: string;
|
|
353
|
-
autoclose?: boolean;
|
|
354
|
-
autoping?: boolean;
|
|
355
|
-
params?: Record<string, string>;
|
|
356
|
-
headers?: Record<string, string>;
|
|
357
|
-
}): Promise<OmuWS> {
|
|
358
|
-
const request = new Request(input, options);
|
|
359
|
-
const id = this.generateId();
|
|
360
|
-
const handle = OmuWS.create({
|
|
361
|
-
addQueue: (data) => {
|
|
362
|
-
this.wsSendQueue.push({
|
|
363
|
-
id: id.key(),
|
|
364
|
-
data,
|
|
365
|
-
});
|
|
366
|
-
this.wsSendWaitResolve();
|
|
367
|
-
},
|
|
368
|
-
dispose: (options: { code?: number; reason?: string }) => {
|
|
369
|
-
this.omu.send(WEBSOCKET_CLOSE, {
|
|
370
|
-
id: id.key(),
|
|
371
|
-
code: options.code,
|
|
372
|
-
reason: options.reason,
|
|
373
|
-
});
|
|
374
|
-
delete this.wsHandles[id.key()];
|
|
375
|
-
},
|
|
376
|
-
});
|
|
377
|
-
this.wsHandles[id.key()] = {
|
|
378
|
-
type: 'created',
|
|
379
|
-
handle,
|
|
380
|
-
};
|
|
381
|
-
this.omu.send(WEBSOCKET_CREATE, {
|
|
382
|
-
id: id.key(),
|
|
383
|
-
header: this.generateHeaders(request, options),
|
|
384
|
-
method: request.method,
|
|
385
|
-
redirect: request.redirect,
|
|
386
|
-
url: request.url,
|
|
387
|
-
});
|
|
388
|
-
return handle.ws;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
async function toUint8Array(data: string | ArrayBufferLike | Blob | ArrayBufferView): Promise<Uint8Array<ArrayBufferLike>> {
|
|
393
|
-
if (typeof data === 'string') {
|
|
394
|
-
return textEncoder.encode(data);
|
|
395
|
-
} else if (data instanceof Blob) {
|
|
396
|
-
const arrayBuffer = await data.arrayBuffer();
|
|
397
|
-
return new Uint8Array(arrayBuffer);
|
|
398
|
-
} else {
|
|
399
|
-
return new Uint8Array(data as ArrayBufferLike);
|
|
400
|
-
}
|
|
401
|
-
}
|
package/src/api/http/http.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { ByteReader, ByteWriter, JsonType } from '../../serialize';
|
|
2
|
-
|
|
3
|
-
export type RequestHandle = {
|
|
4
|
-
id: string;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export type HttpRequest = RequestHandle & {
|
|
8
|
-
header: Record<string, string>;
|
|
9
|
-
method: string;
|
|
10
|
-
redirect: RequestRedirect;
|
|
11
|
-
url: string;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export class DataChunk<T extends JsonType> {
|
|
15
|
-
constructor(
|
|
16
|
-
public readonly meta: T,
|
|
17
|
-
public readonly body: Uint8Array,
|
|
18
|
-
) { }
|
|
19
|
-
|
|
20
|
-
public static serialize<T extends JsonType>(data: DataChunk<T>): Uint8Array {
|
|
21
|
-
const writer = new ByteWriter();
|
|
22
|
-
writer.writeJSON(data.meta);
|
|
23
|
-
writer.writeUint8Array(data.body);
|
|
24
|
-
return writer.finish();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public static deserialize<T extends JsonType>(data: Uint8Array): DataChunk<T> {
|
|
28
|
-
const reader = ByteReader.fromUint8Array(data);
|
|
29
|
-
const meta = reader.readJSON<T>();
|
|
30
|
-
const body = reader.readUint8Array();
|
|
31
|
-
return new DataChunk(meta, body);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export class OmuResponse implements Response {
|
|
36
|
-
constructor(
|
|
37
|
-
public readonly headers: Headers,
|
|
38
|
-
public readonly ok: boolean,
|
|
39
|
-
public readonly redirected: boolean,
|
|
40
|
-
public readonly status: number,
|
|
41
|
-
public readonly statusText: string,
|
|
42
|
-
public readonly type: ResponseType,
|
|
43
|
-
public readonly url: string,
|
|
44
|
-
public readonly body: ReadableStream<Uint8Array<ArrayBuffer>> | null,
|
|
45
|
-
public readonly bodyUsed: boolean,
|
|
46
|
-
) {}
|
|
47
|
-
|
|
48
|
-
clone(): OmuResponse {
|
|
49
|
-
return new OmuResponse(
|
|
50
|
-
this.headers,
|
|
51
|
-
this.ok,
|
|
52
|
-
this.redirected,
|
|
53
|
-
this.status,
|
|
54
|
-
this.statusText,
|
|
55
|
-
this.type,
|
|
56
|
-
this.url,
|
|
57
|
-
this.body,
|
|
58
|
-
this.bodyUsed,
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
async arrayBuffer(): Promise<ArrayBuffer> {
|
|
62
|
-
return await new Response(this.body).arrayBuffer();
|
|
63
|
-
}
|
|
64
|
-
blob(): Promise<Blob> {
|
|
65
|
-
return new Response(this.body).blob();
|
|
66
|
-
}
|
|
67
|
-
bytes(): Promise<Uint8Array<ArrayBuffer>> {
|
|
68
|
-
return new Response(this.body).arrayBuffer().then((buf) => new Uint8Array(buf));
|
|
69
|
-
}
|
|
70
|
-
formData(): Promise<FormData> {
|
|
71
|
-
return new Response(this.body).formData();
|
|
72
|
-
}
|
|
73
|
-
json(): Promise<any> {
|
|
74
|
-
return new Response(this.body).json();
|
|
75
|
-
}
|
|
76
|
-
text(): Promise<string> {
|
|
77
|
-
return new Response(this.body).text();
|
|
78
|
-
}
|
|
79
|
-
}
|