@omujs/omu 0.1.22
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/.eslintignore +13 -0
- package/.eslintrc.cjs +6 -0
- package/.prettierignore +1 -0
- package/CHANGELOG.md +268 -0
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/built/dts/address.d.ts +6 -0
- package/built/dts/address.d.ts.map +1 -0
- package/built/dts/app.d.ts +38 -0
- package/built/dts/app.d.ts.map +1 -0
- package/built/dts/bytebuffer.d.ts +46 -0
- package/built/dts/bytebuffer.d.ts.map +1 -0
- package/built/dts/client/client.d.ts +47 -0
- package/built/dts/client/client.d.ts.map +1 -0
- package/built/dts/client/index.d.ts +2 -0
- package/built/dts/client/index.d.ts.map +1 -0
- package/built/dts/client/omu.d.ts +53 -0
- package/built/dts/client/omu.d.ts.map +1 -0
- package/built/dts/client/omuclient.d.ts +50 -0
- package/built/dts/client/omuclient.d.ts.map +1 -0
- package/built/dts/client/token.d.ts +14 -0
- package/built/dts/client/token.d.ts.map +1 -0
- package/built/dts/client.d.ts +48 -0
- package/built/dts/client.d.ts.map +1 -0
- package/built/dts/const.d.ts +3 -0
- package/built/dts/const.d.ts.map +1 -0
- package/built/dts/errors.d.ts +29 -0
- package/built/dts/errors.d.ts.map +1 -0
- package/built/dts/event-emitter.d.ts +7 -0
- package/built/dts/event-emitter.d.ts.map +1 -0
- package/built/dts/extension/asset/asset-extension.d.ts +26 -0
- package/built/dts/extension/asset/asset-extension.d.ts.map +1 -0
- package/built/dts/extension/asset/index.d.ts +2 -0
- package/built/dts/extension/asset/index.d.ts.map +1 -0
- package/built/dts/extension/dashboard/dashboard-extension.d.ts +24 -0
- package/built/dts/extension/dashboard/dashboard-extension.d.ts.map +1 -0
- package/built/dts/extension/dashboard/dashboard.d.ts +8 -0
- package/built/dts/extension/dashboard/dashboard.d.ts.map +1 -0
- package/built/dts/extension/dashboard/index.d.ts +3 -0
- package/built/dts/extension/dashboard/index.d.ts.map +1 -0
- package/built/dts/extension/dashboard/packets.d.ts +20 -0
- package/built/dts/extension/dashboard/packets.d.ts.map +1 -0
- package/built/dts/extension/endpoint/endpoint-extension.d.ts +16 -0
- package/built/dts/extension/endpoint/endpoint-extension.d.ts.map +1 -0
- package/built/dts/extension/endpoint/endpoint.d.ts +22 -0
- package/built/dts/extension/endpoint/endpoint.d.ts.map +1 -0
- package/built/dts/extension/endpoint/index.d.ts +3 -0
- package/built/dts/extension/endpoint/index.d.ts.map +1 -0
- package/built/dts/extension/endpoint/packets.d.ts +24 -0
- package/built/dts/extension/endpoint/packets.d.ts.map +1 -0
- package/built/dts/extension/extension-registry.d.ts +12 -0
- package/built/dts/extension/extension-registry.d.ts.map +1 -0
- package/built/dts/extension/extension.d.ts +12 -0
- package/built/dts/extension/extension.d.ts.map +1 -0
- package/built/dts/extension/i18n/i18n-extension.d.ts +19 -0
- package/built/dts/extension/i18n/i18n-extension.d.ts.map +1 -0
- package/built/dts/extension/i18n/index.d.ts +2 -0
- package/built/dts/extension/i18n/index.d.ts.map +1 -0
- package/built/dts/extension/index.d.ts +3 -0
- package/built/dts/extension/index.d.ts.map +1 -0
- package/built/dts/extension/logger/index.d.ts +2 -0
- package/built/dts/extension/logger/index.d.ts.map +1 -0
- package/built/dts/extension/logger/logger-extension.d.ts +25 -0
- package/built/dts/extension/logger/logger-extension.d.ts.map +1 -0
- package/built/dts/extension/logger/packets.d.ts +19 -0
- package/built/dts/extension/logger/packets.d.ts.map +1 -0
- package/built/dts/extension/permission/index.d.ts +3 -0
- package/built/dts/extension/permission/index.d.ts.map +1 -0
- package/built/dts/extension/permission/permission-extension.d.ts +18 -0
- package/built/dts/extension/permission/permission-extension.d.ts.map +1 -0
- package/built/dts/extension/permission/permission.d.ts +29 -0
- package/built/dts/extension/permission/permission.d.ts.map +1 -0
- package/built/dts/extension/plugin/index.d.ts +2 -0
- package/built/dts/extension/plugin/index.d.ts.map +1 -0
- package/built/dts/extension/plugin/package-info.d.ts +85 -0
- package/built/dts/extension/plugin/package-info.d.ts.map +1 -0
- package/built/dts/extension/plugin/plugin-extension.d.ts +11 -0
- package/built/dts/extension/plugin/plugin-extension.d.ts.map +1 -0
- package/built/dts/extension/registry/index.d.ts +3 -0
- package/built/dts/extension/registry/index.d.ts.map +1 -0
- package/built/dts/extension/registry/packets.d.ts +17 -0
- package/built/dts/extension/registry/packets.d.ts.map +1 -0
- package/built/dts/extension/registry/registry-extension.d.ts +15 -0
- package/built/dts/extension/registry/registry-extension.d.ts.map +1 -0
- package/built/dts/extension/registry/registry.d.ts +39 -0
- package/built/dts/extension/registry/registry.d.ts.map +1 -0
- package/built/dts/extension/server/index.d.ts +2 -0
- package/built/dts/extension/server/index.d.ts.map +1 -0
- package/built/dts/extension/server/packets.d.ts +8 -0
- package/built/dts/extension/server/packets.d.ts.map +1 -0
- package/built/dts/extension/server/server-extension.d.ts +19 -0
- package/built/dts/extension/server/server-extension.d.ts.map +1 -0
- package/built/dts/extension/signal/index.d.ts +3 -0
- package/built/dts/extension/signal/index.d.ts.map +1 -0
- package/built/dts/extension/signal/packets.d.ts +17 -0
- package/built/dts/extension/signal/packets.d.ts.map +1 -0
- package/built/dts/extension/signal/signal-extension.d.ts +14 -0
- package/built/dts/extension/signal/signal-extension.d.ts.map +1 -0
- package/built/dts/extension/signal/signal.d.ts +32 -0
- package/built/dts/extension/signal/signal.d.ts.map +1 -0
- package/built/dts/extension/table/index.d.ts +3 -0
- package/built/dts/extension/table/index.d.ts.map +1 -0
- package/built/dts/extension/table/packets.d.ts +58 -0
- package/built/dts/extension/table/packets.d.ts.map +1 -0
- package/built/dts/extension/table/table-extension.d.ts +24 -0
- package/built/dts/extension/table/table-extension.d.ts.map +1 -0
- package/built/dts/extension/table/table.d.ts +64 -0
- package/built/dts/extension/table/table.d.ts.map +1 -0
- package/built/dts/identifier.d.ts +43 -0
- package/built/dts/identifier.d.ts.map +1 -0
- package/built/dts/index.d.ts +5 -0
- package/built/dts/index.d.ts.map +1 -0
- package/built/dts/interface.d.ts +7 -0
- package/built/dts/interface.d.ts.map +1 -0
- package/built/dts/localization/index.d.ts +3 -0
- package/built/dts/localization/index.d.ts.map +1 -0
- package/built/dts/localization/locale.d.ts +736 -0
- package/built/dts/localization/locale.d.ts.map +1 -0
- package/built/dts/localization/localization.d.ts +8 -0
- package/built/dts/localization/localization.d.ts.map +1 -0
- package/built/dts/model.d.ts +5 -0
- package/built/dts/model.d.ts.map +1 -0
- package/built/dts/network/connection.d.ts +17 -0
- package/built/dts/network/connection.d.ts.map +1 -0
- package/built/dts/network/index.d.ts +4 -0
- package/built/dts/network/index.d.ts.map +1 -0
- package/built/dts/network/network.d.ts +45 -0
- package/built/dts/network/network.d.ts.map +1 -0
- package/built/dts/network/packet/index.d.ts +3 -0
- package/built/dts/network/packet/index.d.ts.map +1 -0
- package/built/dts/network/packet/packet-types.d.ts +52 -0
- package/built/dts/network/packet/packet-types.d.ts.map +1 -0
- package/built/dts/network/packet/packet.d.ts +24 -0
- package/built/dts/network/packet/packet.d.ts.map +1 -0
- package/built/dts/network/websocket-connection.d.ts +20 -0
- package/built/dts/network/websocket-connection.d.ts.map +1 -0
- package/built/dts/omu.d.ts +50 -0
- package/built/dts/omu.d.ts.map +1 -0
- package/built/dts/serializer.d.ts +21 -0
- package/built/dts/serializer.d.ts.map +1 -0
- package/built/dts/token.d.ts +14 -0
- package/built/dts/token.d.ts.map +1 -0
- package/built/esm/address.js +2 -0
- package/built/esm/address.js.map +1 -0
- package/built/esm/app.js +33 -0
- package/built/esm/app.js.map +1 -0
- package/built/esm/bytebuffer.js +191 -0
- package/built/esm/bytebuffer.js.map +1 -0
- package/built/esm/client/client.js +2 -0
- package/built/esm/client/client.js.map +1 -0
- package/built/esm/client/index.js +2 -0
- package/built/esm/client/index.js.map +1 -0
- package/built/esm/client/omu.js +96 -0
- package/built/esm/client/omu.js.map +1 -0
- package/built/esm/client/omuclient.js +96 -0
- package/built/esm/client/omuclient.js.map +1 -0
- package/built/esm/client/token.js +21 -0
- package/built/esm/client/token.js.map +1 -0
- package/built/esm/client.js +2 -0
- package/built/esm/client.js.map +1 -0
- package/built/esm/const.js +3 -0
- package/built/esm/const.js.map +1 -0
- package/built/esm/errors.js +46 -0
- package/built/esm/errors.js.map +1 -0
- package/built/esm/event-emitter.js +15 -0
- package/built/esm/event-emitter.js.map +1 -0
- package/built/esm/extension/asset/asset-extension.js +105 -0
- package/built/esm/extension/asset/asset-extension.js.map +1 -0
- package/built/esm/extension/asset/index.js +2 -0
- package/built/esm/extension/asset/index.js.map +1 -0
- package/built/esm/extension/dashboard/dashboard-extension.js +119 -0
- package/built/esm/extension/dashboard/dashboard-extension.js.map +1 -0
- package/built/esm/extension/dashboard/dashboard.js +2 -0
- package/built/esm/extension/dashboard/dashboard.js.map +1 -0
- package/built/esm/extension/dashboard/index.js +2 -0
- package/built/esm/extension/dashboard/index.js.map +1 -0
- package/built/esm/extension/dashboard/packets.js +52 -0
- package/built/esm/extension/dashboard/packets.js.map +1 -0
- package/built/esm/extension/endpoint/endpoint-extension.js +85 -0
- package/built/esm/extension/endpoint/endpoint-extension.js.map +1 -0
- package/built/esm/extension/endpoint/endpoint.js +22 -0
- package/built/esm/extension/endpoint/endpoint.js.map +1 -0
- package/built/esm/extension/endpoint/index.js +2 -0
- package/built/esm/extension/endpoint/index.js.map +1 -0
- package/built/esm/extension/endpoint/packets.js +77 -0
- package/built/esm/extension/endpoint/packets.js.map +1 -0
- package/built/esm/extension/extension-registry.js +34 -0
- package/built/esm/extension/extension-registry.js.map +1 -0
- package/built/esm/extension/extension.js +16 -0
- package/built/esm/extension/extension.js.map +1 -0
- package/built/esm/extension/i18n/i18n-extension.js +59 -0
- package/built/esm/extension/i18n/i18n-extension.js.map +1 -0
- package/built/esm/extension/i18n/index.js +2 -0
- package/built/esm/extension/i18n/index.js.map +1 -0
- package/built/esm/extension/index.js +3 -0
- package/built/esm/extension/index.js.map +1 -0
- package/built/esm/extension/logger/index.js +2 -0
- package/built/esm/extension/logger/index.js.map +1 -0
- package/built/esm/extension/logger/logger-extension.js +59 -0
- package/built/esm/extension/logger/logger-extension.js.map +1 -0
- package/built/esm/extension/logger/packets.js +33 -0
- package/built/esm/extension/logger/packets.js.map +1 -0
- package/built/esm/extension/permission/index.js +3 -0
- package/built/esm/extension/permission/index.js.map +1 -0
- package/built/esm/extension/permission/permission-extension.js +73 -0
- package/built/esm/extension/permission/permission-extension.js.map +1 -0
- package/built/esm/extension/permission/permission.js +28 -0
- package/built/esm/extension/permission/permission.js.map +1 -0
- package/built/esm/extension/plugin/index.js +2 -0
- package/built/esm/extension/plugin/index.js.map +1 -0
- package/built/esm/extension/plugin/package-info.js +2 -0
- package/built/esm/extension/plugin/package-info.js.map +1 -0
- package/built/esm/extension/plugin/plugin-extension.js +27 -0
- package/built/esm/extension/plugin/plugin-extension.js.map +1 -0
- package/built/esm/extension/registry/index.js +3 -0
- package/built/esm/extension/registry/index.js.map +1 -0
- package/built/esm/extension/registry/packets.js +48 -0
- package/built/esm/extension/registry/packets.js.map +1 -0
- package/built/esm/extension/registry/registry-extension.js +123 -0
- package/built/esm/extension/registry/registry-extension.js.map +1 -0
- package/built/esm/extension/registry/registry.js +55 -0
- package/built/esm/extension/registry/registry.js.map +1 -0
- package/built/esm/extension/server/index.js +2 -0
- package/built/esm/extension/server/index.js.map +1 -0
- package/built/esm/extension/server/packets.js +25 -0
- package/built/esm/extension/server/packets.js.map +1 -0
- package/built/esm/extension/server/server-extension.js +52 -0
- package/built/esm/extension/server/server-extension.js.map +1 -0
- package/built/esm/extension/signal/index.js +3 -0
- package/built/esm/extension/signal/index.js.map +1 -0
- package/built/esm/extension/signal/packets.js +44 -0
- package/built/esm/extension/signal/packets.js.map +1 -0
- package/built/esm/extension/signal/signal-extension.js +91 -0
- package/built/esm/extension/signal/signal-extension.js.map +1 -0
- package/built/esm/extension/signal/signal.js +53 -0
- package/built/esm/extension/signal/signal.js.map +1 -0
- package/built/esm/extension/table/index.js +3 -0
- package/built/esm/extension/table/index.js.map +1 -0
- package/built/esm/extension/table/packets.js +230 -0
- package/built/esm/extension/table/packets.js.map +1 -0
- package/built/esm/extension/table/table-extension.js +384 -0
- package/built/esm/extension/table/table-extension.js.map +1 -0
- package/built/esm/extension/table/table.js +17 -0
- package/built/esm/extension/table/table.js.map +1 -0
- package/built/esm/identifier.js +160 -0
- package/built/esm/identifier.js.map +1 -0
- package/built/esm/index.js +5 -0
- package/built/esm/index.js.map +1 -0
- package/built/esm/interface.js +2 -0
- package/built/esm/interface.js.map +1 -0
- package/built/esm/localization/index.js +2 -0
- package/built/esm/localization/index.js.map +1 -0
- package/built/esm/localization/locale.js +736 -0
- package/built/esm/localization/locale.js.map +1 -0
- package/built/esm/localization/localization.js +2 -0
- package/built/esm/localization/localization.js.map +1 -0
- package/built/esm/model.js +2 -0
- package/built/esm/model.js.map +1 -0
- package/built/esm/network/connection.js +29 -0
- package/built/esm/network/connection.js.map +1 -0
- package/built/esm/network/index.js +2 -0
- package/built/esm/network/index.js.map +1 -0
- package/built/esm/network/network.js +190 -0
- package/built/esm/network/network.js.map +1 -0
- package/built/esm/network/packet/index.js +2 -0
- package/built/esm/network/packet/index.js.map +1 -0
- package/built/esm/network/packet/packet-types.js +75 -0
- package/built/esm/network/packet/packet-types.js.map +1 -0
- package/built/esm/network/packet/packet.js +17 -0
- package/built/esm/network/packet/packet.js.map +1 -0
- package/built/esm/network/websocket-connection.js +88 -0
- package/built/esm/network/websocket-connection.js.map +1 -0
- package/built/esm/omu.js +96 -0
- package/built/esm/omu.js.map +1 -0
- package/built/esm/serializer.js +52 -0
- package/built/esm/serializer.js.map +1 -0
- package/built/esm/token.js +21 -0
- package/built/esm/token.js.map +1 -0
- package/package.json +49 -0
- package/src/address.ts +5 -0
- package/src/app.ts +65 -0
- package/src/bytebuffer.ts +219 -0
- package/src/client.ts +53 -0
- package/src/const.ts +2 -0
- package/src/errors.ts +52 -0
- package/src/event-emitter.ts +18 -0
- package/src/extension/asset/asset-extension.ts +148 -0
- package/src/extension/asset/index.ts +1 -0
- package/src/extension/dashboard/dashboard-extension.ts +162 -0
- package/src/extension/dashboard/dashboard.ts +9 -0
- package/src/extension/dashboard/index.ts +3 -0
- package/src/extension/dashboard/packets.ts +52 -0
- package/src/extension/endpoint/endpoint-extension.ts +124 -0
- package/src/extension/endpoint/endpoint.ts +58 -0
- package/src/extension/endpoint/index.ts +3 -0
- package/src/extension/endpoint/packets.ts +78 -0
- package/src/extension/extension-registry.ts +39 -0
- package/src/extension/extension.ts +18 -0
- package/src/extension/i18n/i18n-extension.ts +73 -0
- package/src/extension/i18n/index.ts +2 -0
- package/src/extension/index.ts +3 -0
- package/src/extension/logger/index.ts +5 -0
- package/src/extension/logger/logger-extension.ts +75 -0
- package/src/extension/logger/packets.ts +38 -0
- package/src/extension/permission/index.ts +3 -0
- package/src/extension/permission/permission-extension.ts +98 -0
- package/src/extension/permission/permission.ts +56 -0
- package/src/extension/plugin/index.ts +2 -0
- package/src/extension/plugin/package-info.ts +91 -0
- package/src/extension/plugin/plugin-extension.ts +37 -0
- package/src/extension/registry/index.ts +3 -0
- package/src/extension/registry/packets.ts +50 -0
- package/src/extension/registry/registry-extension.ts +154 -0
- package/src/extension/registry/registry.ts +97 -0
- package/src/extension/server/index.ts +6 -0
- package/src/extension/server/server-extension.ts +63 -0
- package/src/extension/signal/index.ts +3 -0
- package/src/extension/signal/packets.ts +46 -0
- package/src/extension/signal/signal-extension.ts +114 -0
- package/src/extension/signal/signal.ts +85 -0
- package/src/extension/table/index.ts +3 -0
- package/src/extension/table/packets.ts +237 -0
- package/src/extension/table/table-extension.ts +503 -0
- package/src/extension/table/table.ts +87 -0
- package/src/identifier.ts +197 -0
- package/src/index.ts +4 -0
- package/src/interface.ts +8 -0
- package/src/localization/index.ts +3 -0
- package/src/localization/locale.ts +737 -0
- package/src/localization/localization.ts +9 -0
- package/src/model.ts +4 -0
- package/src/network/connection.ts +43 -0
- package/src/network/index.ts +3 -0
- package/src/network/network.ts +225 -0
- package/src/network/packet/index.ts +2 -0
- package/src/network/packet/packet-types.ts +101 -0
- package/src/network/packet/packet.ts +46 -0
- package/src/network/websocket-connection.ts +102 -0
- package/src/omu.ts +123 -0
- package/src/serializer.ts +82 -0
- package/src/token.ts +29 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { textDecoder, textEncoder } from './const.js';
|
|
2
|
+
export class Serializer {
|
|
3
|
+
serialize;
|
|
4
|
+
deserialize;
|
|
5
|
+
constructor(serialize, deserialize) {
|
|
6
|
+
this.serialize = serialize;
|
|
7
|
+
this.deserialize = deserialize;
|
|
8
|
+
}
|
|
9
|
+
static of(serializer) {
|
|
10
|
+
return new Serializer(serializer.serialize, serializer.deserialize);
|
|
11
|
+
}
|
|
12
|
+
static noop() {
|
|
13
|
+
return new Serializer((data) => data, (data) => data);
|
|
14
|
+
}
|
|
15
|
+
static model(model) {
|
|
16
|
+
return new Serializer((data) => data.toJson(), model.fromJson);
|
|
17
|
+
}
|
|
18
|
+
static json() {
|
|
19
|
+
return new Serializer((data) => textEncoder.encode(JSON.stringify(data)), (data) => {
|
|
20
|
+
const text = textDecoder.decode(data);
|
|
21
|
+
return JSON.parse(text);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
toJson() {
|
|
25
|
+
return new Serializer((data) => textEncoder.encode(JSON.stringify(this.serialize(data))), (data) => {
|
|
26
|
+
const text = textDecoder.decode(data);
|
|
27
|
+
return this.deserialize(JSON.parse(text));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
toArray() {
|
|
31
|
+
return new Serializer((data) => data.map((item) => this.serialize(item)), (data) => data.map((item) => this.deserialize(item)));
|
|
32
|
+
}
|
|
33
|
+
toMap() {
|
|
34
|
+
return new Serializer((data) => {
|
|
35
|
+
const result = new Map();
|
|
36
|
+
data.forEach((value, key) => {
|
|
37
|
+
result.set(key, this.serialize(value));
|
|
38
|
+
});
|
|
39
|
+
return result;
|
|
40
|
+
}, (data) => {
|
|
41
|
+
const result = new Map();
|
|
42
|
+
data.forEach((value, key) => {
|
|
43
|
+
result.set(key, this.deserialize(value));
|
|
44
|
+
});
|
|
45
|
+
return result;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
pipe(serializer) {
|
|
49
|
+
return new Serializer((data) => serializer.serialize(this.serialize(data)), (data) => this.deserialize(serializer.deserialize(data)));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class BrowserTokenProvider {
|
|
2
|
+
key;
|
|
3
|
+
constructor(key) {
|
|
4
|
+
this.key = key;
|
|
5
|
+
}
|
|
6
|
+
getKey(serverAddress, app) {
|
|
7
|
+
return JSON.stringify([serverAddress.host, serverAddress.port, app.key()]);
|
|
8
|
+
}
|
|
9
|
+
async set(serverAddress, app, token) {
|
|
10
|
+
const tokens = JSON.parse(localStorage.getItem(this.key) || '{}');
|
|
11
|
+
const key = this.getKey(serverAddress, app);
|
|
12
|
+
tokens[key] = token;
|
|
13
|
+
localStorage.setItem(this.key, JSON.stringify(tokens));
|
|
14
|
+
}
|
|
15
|
+
async get(serverAddress, app) {
|
|
16
|
+
const tokens = JSON.parse(localStorage.getItem(this.key) || '{}');
|
|
17
|
+
const key = this.getKey(serverAddress, app);
|
|
18
|
+
return Promise.resolve(tokens[key] || null);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/token.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,oBAAoB;IACA;IAA7B,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAEpC,MAAM,CAAC,aAAsB,EAAE,GAAQ;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,aAAsB,EAAE,GAAQ,EAAE,KAAa;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,aAAsB,EAAE,GAAQ;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;IAChD,CAAC;CACJ"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "module",
|
|
3
|
+
"name": "@omujs/omu",
|
|
4
|
+
"version": "0.1.22",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/OMUAPPS/omuapps"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./built/esm/index.js",
|
|
12
|
+
"types": "./built/dts/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./*": {
|
|
15
|
+
"import": "./built/esm/*",
|
|
16
|
+
"types": "./built/dts/*"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "^20.12.12",
|
|
21
|
+
"@types/websocket": "1.0.10",
|
|
22
|
+
"@types/ws": "8.5.10",
|
|
23
|
+
"@typescript-eslint/eslint-plugin": "^7.9.0",
|
|
24
|
+
"@typescript-eslint/parser": "^7.9.0",
|
|
25
|
+
"axios": "^1.6.8",
|
|
26
|
+
"eslint": "^8.57.0",
|
|
27
|
+
"eslint-config-prettier": "^9.1.0",
|
|
28
|
+
"eslint-plugin-import": "^2.29.1",
|
|
29
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
30
|
+
"eslint-plugin-svelte": "^2.39.0",
|
|
31
|
+
"eslint-plugin-unused-imports": "^3.2.0",
|
|
32
|
+
"nodemon": "^3.1.0",
|
|
33
|
+
"ts-node": "10.9.2",
|
|
34
|
+
"typescript": "^5.4.5",
|
|
35
|
+
"websocket": "1.0.34",
|
|
36
|
+
"ws": "8.16.0"
|
|
37
|
+
},
|
|
38
|
+
"gitHead": "04559d5aec52117d707e0d554ee429b858da522a",
|
|
39
|
+
"scripts": {
|
|
40
|
+
"ts": "pnpm run ts-esm && pnpm run ts-dts",
|
|
41
|
+
"ts-esm": "tsc --outDir built/esm",
|
|
42
|
+
"ts-dts": "tsc --outDir built/dts --declaration true --emitDeclarationOnly true --declarationMap true",
|
|
43
|
+
"watch": "nodemon -w src -e ts,json --exec \"pnpm run ts\"",
|
|
44
|
+
"dev": "pnpm run watch",
|
|
45
|
+
"build": "pnpm run ts",
|
|
46
|
+
"lint": "eslint . --ext .js,.ts",
|
|
47
|
+
"format": "eslint . --ext .js,.ts --fix"
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/address.ts
ADDED
package/src/app.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Identifier } from './identifier.js';
|
|
2
|
+
import type { Keyable } from './interface.js';
|
|
3
|
+
import type { Locale } from './localization/locale.js';
|
|
4
|
+
import type { LocalizedText } from './localization/localization.js';
|
|
5
|
+
import type { Model } from './model.js';
|
|
6
|
+
|
|
7
|
+
export type AppMetadata = {
|
|
8
|
+
locale: Locale;
|
|
9
|
+
name?: LocalizedText;
|
|
10
|
+
icon?: LocalizedText;
|
|
11
|
+
description?: LocalizedText;
|
|
12
|
+
image?: LocalizedText;
|
|
13
|
+
site?: LocalizedText;
|
|
14
|
+
repository?: LocalizedText;
|
|
15
|
+
authors?: LocalizedText;
|
|
16
|
+
license?: LocalizedText;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type AppJson = {
|
|
21
|
+
id: string;
|
|
22
|
+
version?: string;
|
|
23
|
+
url?: string;
|
|
24
|
+
metadata?: AppMetadata;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class App implements Keyable, Model<AppJson> {
|
|
28
|
+
public readonly id: Identifier;
|
|
29
|
+
public readonly version?: string;
|
|
30
|
+
public readonly url?: string;
|
|
31
|
+
public readonly metadata?: AppMetadata;
|
|
32
|
+
|
|
33
|
+
constructor(id: Identifier, options: {
|
|
34
|
+
version?: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
metadata?: AppMetadata;
|
|
37
|
+
}) {
|
|
38
|
+
this.id = id;
|
|
39
|
+
this.version = options.version;
|
|
40
|
+
this.url = options.url;
|
|
41
|
+
this.metadata = options.metadata;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public key(): string {
|
|
45
|
+
return this.id.key();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public static fromJson(info: AppJson): App {
|
|
49
|
+
const id = Identifier.fromKey(info.id);
|
|
50
|
+
return new App(id, {
|
|
51
|
+
version: info.version,
|
|
52
|
+
url: info.url,
|
|
53
|
+
metadata: info.metadata,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public toJson(): AppJson {
|
|
58
|
+
return {
|
|
59
|
+
id: this.id.key(),
|
|
60
|
+
version: this.version,
|
|
61
|
+
url: this.url,
|
|
62
|
+
metadata: this.metadata,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { textDecoder, textEncoder } from './const.js';
|
|
2
|
+
|
|
3
|
+
export class Flags {
|
|
4
|
+
constructor(
|
|
5
|
+
private value: number,
|
|
6
|
+
private length: number,
|
|
7
|
+
) { }
|
|
8
|
+
|
|
9
|
+
public has(position: number): boolean {
|
|
10
|
+
return (this.value & (1 << position)) !== 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public get(position: number): boolean {
|
|
14
|
+
return (this.value & (1 << position)) !== 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public ifSet<T>(position: number, callback: () => T): T | undefined {
|
|
18
|
+
if (this.has(position)) {
|
|
19
|
+
return callback();
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public set(position: number, value: boolean): void {
|
|
25
|
+
if (value) {
|
|
26
|
+
this.value |= 1 << position;
|
|
27
|
+
} else {
|
|
28
|
+
this.value &= ~(1 << position);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public write(writer: ByteWriter): void {
|
|
33
|
+
const bits = new Uint8Array((this.length + 7) / 8);
|
|
34
|
+
for (let i = 0; i < bits.length; i++) {
|
|
35
|
+
bits[i] = (this.value >> (i * 8)) & 0xff;
|
|
36
|
+
}
|
|
37
|
+
writer.write(bits);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public static read(reader: ByteReader, length: number): Flags {
|
|
41
|
+
let bits = 0;
|
|
42
|
+
for (let i = 0; i < (length + 7) / 8; i++) {
|
|
43
|
+
bits |= reader.readByte() << (i * 8);
|
|
44
|
+
}
|
|
45
|
+
return new Flags(bits, length);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export class ByteWriter {
|
|
50
|
+
private dataArray: DataView;
|
|
51
|
+
private buffer: ArrayBuffer;
|
|
52
|
+
private offset = 0;
|
|
53
|
+
private finished = false;
|
|
54
|
+
|
|
55
|
+
constructor(init?: ArrayBuffer) {
|
|
56
|
+
this.buffer = init ?? new ArrayBuffer(1024);
|
|
57
|
+
this.dataArray = new DataView(this.buffer);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private allocate(length: number): void {
|
|
61
|
+
if (this.offset + length > this.buffer.byteLength) {
|
|
62
|
+
const newByteLength = Math.max(this.buffer.byteLength * 2, this.offset + length);
|
|
63
|
+
const newBuffer = new ArrayBuffer(newByteLength);
|
|
64
|
+
new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));
|
|
65
|
+
this.buffer = newBuffer;
|
|
66
|
+
this.dataArray = new DataView(this.buffer);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public write(data: Uint8Array): ByteWriter {
|
|
71
|
+
if (this.finished) {
|
|
72
|
+
throw new Error('Buffer already finished');
|
|
73
|
+
}
|
|
74
|
+
this.allocate(data.length);
|
|
75
|
+
new Uint8Array(this.buffer).set(data, this.offset);
|
|
76
|
+
this.offset += data.length;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
public writeBoolean(value: boolean): ByteWriter {
|
|
81
|
+
this.allocate(1);
|
|
82
|
+
this.dataArray.setInt8(this.offset, value ? 1 : 0);
|
|
83
|
+
this.offset += 1;
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public writeBigInt(value: bigint): ByteWriter {
|
|
88
|
+
this.allocate(8);
|
|
89
|
+
this.dataArray.setBigInt64(this.offset, value);
|
|
90
|
+
this.offset += 8;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public writeInt(value: number): ByteWriter {
|
|
95
|
+
this.allocate(4);
|
|
96
|
+
this.dataArray.setInt32(this.offset, value);
|
|
97
|
+
this.offset += 4;
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public writeShort(value: number): ByteWriter {
|
|
102
|
+
this.allocate(2);
|
|
103
|
+
this.dataArray.setInt16(this.offset, value);
|
|
104
|
+
this.offset += 2;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public writeByte(value: number): ByteWriter {
|
|
109
|
+
this.allocate(1);
|
|
110
|
+
this.dataArray.setInt8(this.offset, value);
|
|
111
|
+
this.offset += 1;
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public writeByteArray(value: Uint8Array): ByteWriter {
|
|
116
|
+
if (value.byteLength > 0x7fffffff) {
|
|
117
|
+
throw new Error('Byte array too long');
|
|
118
|
+
}
|
|
119
|
+
this.writeInt(value.byteLength);
|
|
120
|
+
this.write(value);
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
public writeString(value: string): ByteWriter {
|
|
125
|
+
this.writeByteArray(textEncoder.encode(value));
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public writeFlags(flags: Flags): ByteWriter {
|
|
130
|
+
flags.write(this);
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
public finish(): Uint8Array {
|
|
135
|
+
if (this.finished) {
|
|
136
|
+
throw new Error('Buffer already finished');
|
|
137
|
+
}
|
|
138
|
+
this.finished = true;
|
|
139
|
+
return new Uint8Array(this.buffer, 0, this.offset);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export class ByteReader {
|
|
144
|
+
private dataArray: DataView;
|
|
145
|
+
private offset = 0;
|
|
146
|
+
private finished = false;
|
|
147
|
+
|
|
148
|
+
constructor(buffer: ArrayBuffer) {
|
|
149
|
+
this.dataArray = new DataView(new Uint8Array(buffer).buffer);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
public read(size: number): Uint8Array {
|
|
153
|
+
if (this.finished) {
|
|
154
|
+
throw new Error('Buffer already finished');
|
|
155
|
+
}
|
|
156
|
+
if (size < 0) {
|
|
157
|
+
throw new Error('Size must be positive');
|
|
158
|
+
}
|
|
159
|
+
if (this.offset + size > this.dataArray.byteLength) {
|
|
160
|
+
throw new Error('Buffer not fully read');
|
|
161
|
+
}
|
|
162
|
+
const value = new Uint8Array(this.dataArray.buffer, this.offset, size);
|
|
163
|
+
this.offset += size;
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
public readBoolean(): boolean {
|
|
168
|
+
const value = this.dataArray.getInt8(this.offset);
|
|
169
|
+
this.offset += 1;
|
|
170
|
+
return value !== 0;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
public readBigInt(): bigint {
|
|
174
|
+
const value = this.dataArray.getBigInt64(this.offset);
|
|
175
|
+
this.offset += 8;
|
|
176
|
+
return value;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
public readInt(): number {
|
|
180
|
+
const value = this.dataArray.getInt32(this.offset);
|
|
181
|
+
this.offset += 4;
|
|
182
|
+
return value;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
public readShort(): number {
|
|
186
|
+
const value = this.dataArray.getInt16(this.offset);
|
|
187
|
+
this.offset += 2;
|
|
188
|
+
return value;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
public readByte(): number {
|
|
192
|
+
const value = this.dataArray.getInt8(this.offset);
|
|
193
|
+
this.offset += 1;
|
|
194
|
+
return value;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
public readByteArray(): Uint8Array {
|
|
198
|
+
const length = this.readInt();
|
|
199
|
+
return this.read(length);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
public readString(): string {
|
|
203
|
+
return textDecoder.decode(this.readByteArray());
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
public readFlags(length: number): Flags {
|
|
207
|
+
return Flags.read(this, length);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
public finish(): void {
|
|
211
|
+
if (this.finished) {
|
|
212
|
+
throw new Error('Buffer already finished');
|
|
213
|
+
}
|
|
214
|
+
this.finished = true;
|
|
215
|
+
if (this.offset !== this.dataArray.byteLength) {
|
|
216
|
+
throw new Error('Buffer not fully read');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
package/src/client.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { App } from './app.js';
|
|
2
|
+
import type { Unlisten, EventEmitter } from './event-emitter.js';
|
|
3
|
+
import type { AssetExtension } from './extension/asset/index.js';
|
|
4
|
+
import type { DashboardExtension } from './extension/dashboard/index.js';
|
|
5
|
+
import type { EndpointExtension } from './extension/endpoint/index.js';
|
|
6
|
+
import type { I18nExtension } from './extension/i18n/index.js';
|
|
7
|
+
import type { ExtensionRegistry } from './extension/index.js';
|
|
8
|
+
import type { LoggerExtension } from './extension/logger/logger-extension.js';
|
|
9
|
+
import type { PermissionExtension } from './extension/permission/index.js';
|
|
10
|
+
import type { PluginExtension } from './extension/plugin/index.js';
|
|
11
|
+
import type { RegistryExtension } from './extension/registry/index.js';
|
|
12
|
+
import type { ServerExtension } from './extension/server/index.js';
|
|
13
|
+
import type { SignalExtension } from './extension/signal/index.js';
|
|
14
|
+
import type { TableExtension } from './extension/table/index.js';
|
|
15
|
+
import type { Address, Network } from './network/index.js';
|
|
16
|
+
import type { PacketType } from './network/packet/packet.js';
|
|
17
|
+
import type { TokenProvider } from './token.js';
|
|
18
|
+
|
|
19
|
+
export type ClientEvents = {
|
|
20
|
+
started: EventEmitter<() => void>;
|
|
21
|
+
stopped: EventEmitter<() => void>;
|
|
22
|
+
ready: EventEmitter<() => void>;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export interface Client {
|
|
26
|
+
readonly app: App;
|
|
27
|
+
ready: boolean;
|
|
28
|
+
running: boolean;
|
|
29
|
+
readonly event: ClientEvents;
|
|
30
|
+
readonly token: TokenProvider;
|
|
31
|
+
readonly address: Address;
|
|
32
|
+
readonly network: Network;
|
|
33
|
+
readonly endpoints: EndpointExtension;
|
|
34
|
+
readonly permissions: PermissionExtension;
|
|
35
|
+
readonly plugins: PluginExtension;
|
|
36
|
+
readonly dashboard: DashboardExtension;
|
|
37
|
+
readonly extensions: ExtensionRegistry;
|
|
38
|
+
readonly tables: TableExtension;
|
|
39
|
+
readonly registry: RegistryExtension;
|
|
40
|
+
readonly signal: SignalExtension;
|
|
41
|
+
readonly assets: AssetExtension;
|
|
42
|
+
readonly i18n: I18nExtension;
|
|
43
|
+
readonly server: ServerExtension;
|
|
44
|
+
readonly logger: LoggerExtension;
|
|
45
|
+
|
|
46
|
+
send<T>(packetType: PacketType<T>, data: T): void;
|
|
47
|
+
|
|
48
|
+
start(): void;
|
|
49
|
+
|
|
50
|
+
stop(): void;
|
|
51
|
+
|
|
52
|
+
whenReady(callback: () => void): Unlisten;
|
|
53
|
+
}
|
package/src/const.ts
ADDED
package/src/errors.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DisconnectType } from './network/packet/packet-types.js';
|
|
2
|
+
export class OmuError extends Error {
|
|
3
|
+
constructor(message: string | null) {
|
|
4
|
+
super(message ?? undefined);
|
|
5
|
+
this.name = this.constructor.name;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class DisconnectReason extends OmuError {
|
|
10
|
+
constructor(
|
|
11
|
+
public type: DisconnectType,
|
|
12
|
+
public message = '',
|
|
13
|
+
) {
|
|
14
|
+
super(message);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class NetworkError extends OmuError {
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class AnotherConnection extends NetworkError {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(DisconnectType.ANOTHER_CONNECTION);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class PermissionDenied extends NetworkError {
|
|
28
|
+
constructor() {
|
|
29
|
+
super(DisconnectType.PERMISSION_DENIED);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class InvalidToken extends NetworkError {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(DisconnectType.INVALID_TOKEN);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class InvalidOrigin extends NetworkError {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(DisconnectType.INVALID_ORIGIN);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export class InvalidVersion extends NetworkError {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(DisconnectType.INVALID_VERSION);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export class InvalidPacket extends NetworkError {
|
|
52
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type Unlisten = () => void;
|
|
2
|
+
|
|
3
|
+
export class EventEmitter<T extends (...args: any[]) => any> {
|
|
4
|
+
private readonly listeners: Array<T> = [];
|
|
5
|
+
|
|
6
|
+
public listen(listener: T): Unlisten {
|
|
7
|
+
this.listeners.push(listener);
|
|
8
|
+
return () => {
|
|
9
|
+
this.listeners.splice(this.listeners.indexOf(listener), 1);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public async emit(...args: Parameters<T>): Promise<void> {
|
|
14
|
+
for (const listener of [...this.listeners]) {
|
|
15
|
+
await listener(...args);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|