@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,27 @@
|
|
|
1
|
+
import { PacketType } from '../../network/packet/packet.js';
|
|
2
|
+
import { ExtensionType } from '../extension.js';
|
|
3
|
+
export const PLUGIN_EXTENSION_TYPE = new ExtensionType('plugin', (client) => new PluginExtension(client));
|
|
4
|
+
export class PluginExtension {
|
|
5
|
+
client;
|
|
6
|
+
requiredPlugins = new Map();
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
client.network.registerPacket(PLUGIN_REQUIRE_PACKET);
|
|
10
|
+
client.network.addTask(() => this.onTask());
|
|
11
|
+
}
|
|
12
|
+
async onTask() {
|
|
13
|
+
this.client.send(PLUGIN_REQUIRE_PACKET, Object.fromEntries(this.requiredPlugins));
|
|
14
|
+
}
|
|
15
|
+
require(plugins) {
|
|
16
|
+
if (this.client.running) {
|
|
17
|
+
throw new Error('Plugins must be required before the client starts');
|
|
18
|
+
}
|
|
19
|
+
for (const [key, value] of Object.entries(plugins)) {
|
|
20
|
+
this.requiredPlugins.set(key, value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const PLUGIN_REQUIRE_PACKET = PacketType.createJson(PLUGIN_EXTENSION_TYPE, {
|
|
25
|
+
name: 'require',
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=plugin-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-extension.js","sourceRoot":"","sources":["../../../../src/extension/plugin/plugin-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,aAAa,CAClD,QAAQ,EACR,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAClD,CAAC;AAEF,MAAM,OAAO,eAAe;IAGK;IAFZ,eAAe,GAA+B,IAAI,GAAG,EAAE,CAAC;IAEzE,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACvC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,MAAM;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACtF,CAAC;IAEM,OAAO,CAAC,OAAsC;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ;AAED,MAAM,qBAAqB,GAAG,UAAU,CAAC,UAAU,CAC/C,qBAAqB,EACrB;IACI,IAAI,EAAE,SAAS;CAClB,CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAY,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ByteReader, ByteWriter } from '../../bytebuffer.js';
|
|
2
|
+
import { Identifier } from '../../identifier.js';
|
|
3
|
+
import { RegistryPermissions } from './registry.js';
|
|
4
|
+
export class RegistryPacket {
|
|
5
|
+
id;
|
|
6
|
+
value;
|
|
7
|
+
constructor(id, value) {
|
|
8
|
+
this.id = id;
|
|
9
|
+
this.value = value;
|
|
10
|
+
}
|
|
11
|
+
static serialize(packet) {
|
|
12
|
+
const writer = new ByteWriter();
|
|
13
|
+
writer.writeString(packet.id.key());
|
|
14
|
+
writer.writeBoolean(packet.value !== null);
|
|
15
|
+
if (packet.value !== null) {
|
|
16
|
+
writer.writeByteArray(packet.value);
|
|
17
|
+
}
|
|
18
|
+
return writer.finish();
|
|
19
|
+
}
|
|
20
|
+
static deserialize(data) {
|
|
21
|
+
const reader = new ByteReader(data);
|
|
22
|
+
const id = Identifier.fromKey(reader.readString());
|
|
23
|
+
const existing = reader.readBoolean();
|
|
24
|
+
const value = existing ? reader.readByteArray() : null;
|
|
25
|
+
return new RegistryPacket(id, value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class RegistryRegisterPacket {
|
|
29
|
+
id;
|
|
30
|
+
permissions;
|
|
31
|
+
constructor(id, permissions) {
|
|
32
|
+
this.id = id;
|
|
33
|
+
this.permissions = permissions;
|
|
34
|
+
}
|
|
35
|
+
static serialize(packet) {
|
|
36
|
+
const writer = new ByteWriter();
|
|
37
|
+
writer.writeString(packet.id.key());
|
|
38
|
+
packet.permissions.serialize(writer);
|
|
39
|
+
return writer.finish();
|
|
40
|
+
}
|
|
41
|
+
static deserialize(data) {
|
|
42
|
+
const reader = new ByteReader(data);
|
|
43
|
+
const id = Identifier.fromKey(reader.readString());
|
|
44
|
+
const permissions = RegistryPermissions.deserialize(reader);
|
|
45
|
+
return new RegistryRegisterPacket(id, permissions);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packets.js","sourceRoot":"","sources":["../../../../src/extension/registry/packets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,OAAO,cAAc;IAEH;IACA;IAFpB,YACoB,EAAc,EACd,KAAwB;QADxB,OAAE,GAAF,EAAE,CAAY;QACd,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAAsB;QAC1C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACJ;AAED,MAAM,OAAO,sBAAsB;IAEX;IACA;IAFpB,YACoB,EAAc,EACd,WAAgC;QADhC,OAAE,GAAF,EAAE,CAAY;QACd,gBAAW,GAAX,WAAW,CAAqB;IAChD,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAA8B;QAClD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,sBAAsB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;CACJ"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { EventEmitter } from '../../event-emitter.js';
|
|
2
|
+
import { Identifier, IdentifierMap } from '../../identifier.js';
|
|
3
|
+
import { PacketType } from '../../network/packet/index.js';
|
|
4
|
+
import { Serializer } from '../../serializer.js';
|
|
5
|
+
import { EndpointType } from '../endpoint/endpoint.js';
|
|
6
|
+
import { ExtensionType } from '../extension.js';
|
|
7
|
+
import { RegistryPacket, RegistryRegisterPacket } from './packets.js';
|
|
8
|
+
import { RegistryType } from './registry.js';
|
|
9
|
+
export class RegistryExtension {
|
|
10
|
+
client;
|
|
11
|
+
registries = new IdentifierMap();
|
|
12
|
+
constructor(client) {
|
|
13
|
+
this.client = client;
|
|
14
|
+
client.network.registerPacket(REGISTRY_REGISTER_PACKET, REGISTRY_UPDATE_PACKET, REGISTRY_LISTEN_PACKET);
|
|
15
|
+
}
|
|
16
|
+
createRegistry(registryType) {
|
|
17
|
+
this.client.permissions.require(REGISTRY_PERMISSION_ID);
|
|
18
|
+
if (this.registries.has(registryType.id)) {
|
|
19
|
+
throw new Error(`Registry with identifier '${registryType.id}' already exists`);
|
|
20
|
+
}
|
|
21
|
+
return new RegistryImpl(this.client, registryType);
|
|
22
|
+
}
|
|
23
|
+
get(registryType) {
|
|
24
|
+
const identifier = registryType.id;
|
|
25
|
+
let registry = this.registries.get(identifier);
|
|
26
|
+
if (registry === undefined) {
|
|
27
|
+
registry = this.createRegistry(registryType);
|
|
28
|
+
this.registries.set(identifier, registry);
|
|
29
|
+
}
|
|
30
|
+
return registry;
|
|
31
|
+
}
|
|
32
|
+
create(name, defaultValue) {
|
|
33
|
+
const identifier = this.client.app.id.join(name);
|
|
34
|
+
if (this.registries.has(identifier)) {
|
|
35
|
+
throw new Error(`Registry with name '${name}' already exists`);
|
|
36
|
+
}
|
|
37
|
+
const tableType = RegistryType.createJson(identifier, {
|
|
38
|
+
name,
|
|
39
|
+
defaultValue,
|
|
40
|
+
});
|
|
41
|
+
return this.createRegistry(tableType);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class RegistryImpl {
|
|
45
|
+
client;
|
|
46
|
+
type;
|
|
47
|
+
eventEmitter = new EventEmitter();
|
|
48
|
+
listening = false;
|
|
49
|
+
value;
|
|
50
|
+
constructor(client, type) {
|
|
51
|
+
this.client = client;
|
|
52
|
+
this.type = type;
|
|
53
|
+
this.value = type.defaultValue;
|
|
54
|
+
client.network.addPacketHandler(REGISTRY_UPDATE_PACKET, (packet) => this.handleUpdate(packet));
|
|
55
|
+
client.network.addTask(() => this.onTask());
|
|
56
|
+
}
|
|
57
|
+
async get() {
|
|
58
|
+
const result = await this.client.endpoints.call(REGISTRY_GET_ENDPOINT, this.type.id);
|
|
59
|
+
if (result.value === null) {
|
|
60
|
+
return this.type.defaultValue;
|
|
61
|
+
}
|
|
62
|
+
return this.type.serializer.deserialize(result.value);
|
|
63
|
+
}
|
|
64
|
+
async set(value) {
|
|
65
|
+
this.client.send(REGISTRY_UPDATE_PACKET, {
|
|
66
|
+
id: this.type.id,
|
|
67
|
+
value: this.type.serializer.serialize(value),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async update(fn) {
|
|
71
|
+
const value = await this.get();
|
|
72
|
+
const newValue = await fn(value);
|
|
73
|
+
await this.set(newValue);
|
|
74
|
+
}
|
|
75
|
+
listen(handler) {
|
|
76
|
+
if (!this.listening) {
|
|
77
|
+
this.client.whenReady(() => {
|
|
78
|
+
this.client.send(REGISTRY_LISTEN_PACKET, this.type.id);
|
|
79
|
+
});
|
|
80
|
+
this.listening = true;
|
|
81
|
+
}
|
|
82
|
+
return this.eventEmitter.listen(handler);
|
|
83
|
+
}
|
|
84
|
+
handleUpdate(data) {
|
|
85
|
+
if (!data.id.isEqual(this.type.id)) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (data.value !== null) {
|
|
89
|
+
this.value = this.type.serializer.deserialize(data.value);
|
|
90
|
+
}
|
|
91
|
+
this.eventEmitter.emit(this.value);
|
|
92
|
+
}
|
|
93
|
+
onTask() {
|
|
94
|
+
if (!this.type.id.isSubpathOf(this.client.app.id)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.client.send(REGISTRY_REGISTER_PACKET, {
|
|
98
|
+
id: this.type.id,
|
|
99
|
+
permissions: this.type.permissions,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export const REGISTRY_EXTENSION_TYPE = new ExtensionType('registry', (client) => new RegistryExtension(client));
|
|
104
|
+
export const REGISTRY_PERMISSION_ID = REGISTRY_EXTENSION_TYPE.join('permission');
|
|
105
|
+
const REGISTRY_REGISTER_PACKET = PacketType.createSerialized(REGISTRY_EXTENSION_TYPE, {
|
|
106
|
+
name: 'register',
|
|
107
|
+
serializer: RegistryRegisterPacket,
|
|
108
|
+
});
|
|
109
|
+
const REGISTRY_UPDATE_PACKET = PacketType.createSerialized(REGISTRY_EXTENSION_TYPE, {
|
|
110
|
+
name: 'update',
|
|
111
|
+
serializer: RegistryPacket,
|
|
112
|
+
});
|
|
113
|
+
const REGISTRY_LISTEN_PACKET = PacketType.createJson(REGISTRY_EXTENSION_TYPE, {
|
|
114
|
+
name: 'listen',
|
|
115
|
+
serializer: Serializer.model(Identifier),
|
|
116
|
+
});
|
|
117
|
+
const REGISTRY_GET_ENDPOINT = EndpointType.createSerialized(REGISTRY_EXTENSION_TYPE, {
|
|
118
|
+
name: 'get',
|
|
119
|
+
requestSerializer: Serializer.model(Identifier).toJson(),
|
|
120
|
+
responseSerializer: RegistryPacket,
|
|
121
|
+
permissionId: REGISTRY_PERMISSION_ID,
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=registry-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-extension.js","sourceRoot":"","sources":["../../../../src/extension/registry/registry-extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAE5D,MAAM,OAAO,iBAAiB;IAGG;IAFZ,UAAU,GAAG,IAAI,aAAa,EAAqB,CAAC;IAErE,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACvC,MAAM,CAAC,OAAO,CAAC,cAAc,CACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,CACzB,CAAC;IACN,CAAC;IAEO,cAAc,CAAI,YAA6B;QACnD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAEM,GAAG,CAAI,YAA6B;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,QAAuB,CAAC;IACnC,CAAC;IAEM,MAAM,CAAI,IAAY,EAAE,YAAe;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE;YAClD,IAAI;YACJ,YAAY;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;CACJ;AAED,MAAM,YAAY;IAMO;IACD;IANH,YAAY,GAAqC,IAAI,YAAY,EAAE,CAAC;IAC7E,SAAS,GAAG,KAAK,CAAC;IACnB,KAAK,CAAI;IAEhB,YACqB,MAAc,EACf,IAAqB;QADpB,WAAM,GAAN,MAAM,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAiB;QAErC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC/D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAC5B,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAQ;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;SAC/C,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAAmB;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,OAA2B;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEO,YAAY,CAAC,IAAoB;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAChD,OAAO;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACvC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;SACrC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,aAAa,CACpD,UAAU,EACV,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CACpD,CAAC;AACF,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjF,MAAM,wBAAwB,GAAG,UAAU,CAAC,gBAAgB,CACxD,uBAAuB,EACvB;IACI,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,sBAAsB;CACrC,CACJ,CAAC;AACF,MAAM,sBAAsB,GAAG,UAAU,CAAC,gBAAgB,CACtD,uBAAuB,EACvB;IACI,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,cAAc;CAC7B,CACJ,CAAC;AACF,MAAM,sBAAsB,GAAG,UAAU,CAAC,UAAU,CAAa,uBAAuB,EAAE;IACtF,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;CAC3C,CAAC,CAAC;AACH,MAAM,qBAAqB,GAAG,YAAY,CAAC,gBAAgB,CACvD,uBAAuB,EACvB;IACI,IAAI,EAAE,KAAK;IACX,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;IACxD,kBAAkB,EAAE,cAAc;IAClC,YAAY,EAAE,sBAAsB;CACvC,CACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Flags } from '../../bytebuffer.js';
|
|
2
|
+
import { Identifier } from '../../identifier.js';
|
|
3
|
+
import { Serializer } from '../../serializer.js';
|
|
4
|
+
export class RegistryPermissions {
|
|
5
|
+
all;
|
|
6
|
+
read;
|
|
7
|
+
write;
|
|
8
|
+
constructor(all, read, write) {
|
|
9
|
+
this.all = all;
|
|
10
|
+
this.read = read;
|
|
11
|
+
this.write = write;
|
|
12
|
+
}
|
|
13
|
+
serialize(writer) {
|
|
14
|
+
const flags = new Flags(0, 3);
|
|
15
|
+
flags.set(0, this.all !== undefined);
|
|
16
|
+
flags.set(1, this.read !== undefined);
|
|
17
|
+
flags.set(2, this.write !== undefined);
|
|
18
|
+
writer.writeFlags(flags);
|
|
19
|
+
if (this.all !== undefined) {
|
|
20
|
+
writer.writeString(this.all.key());
|
|
21
|
+
}
|
|
22
|
+
if (this.read !== undefined) {
|
|
23
|
+
writer.writeString(this.read.key());
|
|
24
|
+
}
|
|
25
|
+
if (this.write !== undefined) {
|
|
26
|
+
writer.writeString(this.write.key());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static deserialize(reader) {
|
|
30
|
+
const flags = reader.readFlags(3);
|
|
31
|
+
const all = flags.has(0) ? Identifier.fromKey(reader.readString()) : undefined;
|
|
32
|
+
const read = flags.has(1) ? Identifier.fromKey(reader.readString()) : undefined;
|
|
33
|
+
const write = flags.has(2) ? Identifier.fromKey(reader.readString()) : undefined;
|
|
34
|
+
return new RegistryPermissions(all, read, write);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class RegistryType {
|
|
38
|
+
id;
|
|
39
|
+
defaultValue;
|
|
40
|
+
serializer;
|
|
41
|
+
permissions;
|
|
42
|
+
constructor(id, defaultValue, serializer, permissions) {
|
|
43
|
+
this.id = id;
|
|
44
|
+
this.defaultValue = defaultValue;
|
|
45
|
+
this.serializer = serializer;
|
|
46
|
+
this.permissions = permissions;
|
|
47
|
+
}
|
|
48
|
+
static createJson(identifier, { name, defaultValue, permissions, }) {
|
|
49
|
+
return new RegistryType(identifier.join(name), defaultValue, Serializer.json(), permissions ?? new RegistryPermissions());
|
|
50
|
+
}
|
|
51
|
+
static createSerialized(identifier, { name, defaultValue, serializer, permissions, }) {
|
|
52
|
+
return new RegistryType(identifier.join(name), defaultValue, serializer, permissions ?? new RegistryPermissions());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/extension/registry/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,GAClB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ByteReader, ByteWriter } from '../../bytebuffer.js';
|
|
2
|
+
export class ConsolePacket {
|
|
3
|
+
lines;
|
|
4
|
+
constructor(lines) {
|
|
5
|
+
this.lines = lines;
|
|
6
|
+
}
|
|
7
|
+
static serialize(item) {
|
|
8
|
+
const writer = new ByteWriter();
|
|
9
|
+
writer.writeInt(item.lines.length);
|
|
10
|
+
for (const line of item.lines) {
|
|
11
|
+
writer.writeString(line);
|
|
12
|
+
}
|
|
13
|
+
return writer.finish();
|
|
14
|
+
}
|
|
15
|
+
static deserialize(item) {
|
|
16
|
+
const reader = new ByteReader(item);
|
|
17
|
+
const lineCount = reader.readInt();
|
|
18
|
+
const lines = [];
|
|
19
|
+
for (let i = 0; i < lineCount; i++) {
|
|
20
|
+
lines.push(reader.readString());
|
|
21
|
+
}
|
|
22
|
+
return new ConsolePacket(lines);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packets.js","sourceRoot":"","sources":["../../../../src/extension/server/packets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,aAAa;IACH;IAAnB,YAAmB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAEtC,MAAM,CAAC,SAAS,CAAC,IAAmB;QAChC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY;QAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,EAAc,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;CACJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { App } from '../../app.js';
|
|
2
|
+
import { Identifier, IdentifierSet } from '../../identifier.js';
|
|
3
|
+
import { PacketType } from '../../network/packet/packet.js';
|
|
4
|
+
import { Serializer } from '../../serializer.js';
|
|
5
|
+
import { EndpointType } from '../endpoint/endpoint.js';
|
|
6
|
+
import { ExtensionType } from '../extension.js';
|
|
7
|
+
import { TABLE_EXTENSION_TYPE } from '../table/table-extension.js';
|
|
8
|
+
import { TableType } from '../table/table.js';
|
|
9
|
+
export const SERVER_EXTENSION_TYPE = new ExtensionType('server', (client) => new ServerExtension(client), () => [TABLE_EXTENSION_TYPE]);
|
|
10
|
+
export const SERVER_APPS_READ_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('apps', 'read');
|
|
11
|
+
const APP_TABLE_TYPE = TableType.createModel(SERVER_EXTENSION_TYPE, {
|
|
12
|
+
name: 'apps',
|
|
13
|
+
model: App,
|
|
14
|
+
permissions: {
|
|
15
|
+
read: SERVER_APPS_READ_PERMISSION_ID,
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
export const SERVER_SHUTDOWN_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('shutdown');
|
|
19
|
+
const SHUTDOWN_ENDPOINT_TYPE = EndpointType.createJson(SERVER_EXTENSION_TYPE, {
|
|
20
|
+
name: 'shutdown',
|
|
21
|
+
permissionId: SERVER_SHUTDOWN_PERMISSION_ID,
|
|
22
|
+
});
|
|
23
|
+
const REQUIRE_APPS_PACKET_TYPE = PacketType.createJson(SERVER_EXTENSION_TYPE, {
|
|
24
|
+
name: 'require_apps',
|
|
25
|
+
serializer: Serializer.model(Identifier).toArray(),
|
|
26
|
+
});
|
|
27
|
+
export class ServerExtension {
|
|
28
|
+
client;
|
|
29
|
+
apps;
|
|
30
|
+
requiredApps = new IdentifierSet();
|
|
31
|
+
constructor(client) {
|
|
32
|
+
this.client = client;
|
|
33
|
+
client.network.registerPacket(REQUIRE_APPS_PACKET_TYPE);
|
|
34
|
+
this.apps = client.tables.get(APP_TABLE_TYPE);
|
|
35
|
+
client.network.addTask(() => this.onTask());
|
|
36
|
+
}
|
|
37
|
+
async onTask() {
|
|
38
|
+
this.client.send(REQUIRE_APPS_PACKET_TYPE, Array.from(this.requiredApps.values()));
|
|
39
|
+
}
|
|
40
|
+
async shutdown(restart) {
|
|
41
|
+
return await this.client.endpoints.call(SHUTDOWN_ENDPOINT_TYPE, restart ?? false);
|
|
42
|
+
}
|
|
43
|
+
require(...appIds) {
|
|
44
|
+
if (this.client.running) {
|
|
45
|
+
throw new Error('Cannot require apps after the client has started');
|
|
46
|
+
}
|
|
47
|
+
for (const appId of appIds) {
|
|
48
|
+
this.requiredApps.add(appId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=server-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-extension.js","sourceRoot":"","sources":["../../../../src/extension/server/server-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,MAAM,qBAAqB,GAAmC,IAAI,aAAa,CAClF,QAAQ,EACR,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,EAC/C,GAAG,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzF,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,qBAAqB,EAAE;IAChE,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,GAAG;IACV,WAAW,EAAE;QACT,IAAI,EAAE,8BAA8B;KACvC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpF,MAAM,sBAAsB,GAAG,YAAY,CAAC,UAAU,CAAmB,qBAAqB,EAAE;IAC5F,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,6BAA6B;CAC9C,CAAC,CAAC;AACH,MAAM,wBAAwB,GAAG,UAAU,CAAC,UAAU,CAAe,qBAAqB,EAAE;IACxF,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;CACrD,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAIK;IAHb,IAAI,CAAa;IACzB,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;IAE3C,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACvC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,MAAM;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAAiB;QACnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IACtF,CAAC;IAEM,OAAO,CAAC,GAAG,MAAoB;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/signal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAU,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ByteReader, ByteWriter } from '../../bytebuffer.js';
|
|
2
|
+
import { Identifier } from '../../identifier.js';
|
|
3
|
+
import { SignalPermissions } from './signal.js';
|
|
4
|
+
export class SignalPacket {
|
|
5
|
+
id;
|
|
6
|
+
body;
|
|
7
|
+
constructor(id, body) {
|
|
8
|
+
this.id = id;
|
|
9
|
+
this.body = body;
|
|
10
|
+
}
|
|
11
|
+
static serialize(packet) {
|
|
12
|
+
const writer = new ByteWriter();
|
|
13
|
+
writer.writeString(packet.id.key());
|
|
14
|
+
writer.writeByteArray(packet.body);
|
|
15
|
+
return writer.finish();
|
|
16
|
+
}
|
|
17
|
+
static deserialize(data) {
|
|
18
|
+
const reader = new ByteReader(data);
|
|
19
|
+
const id = Identifier.fromKey(reader.readString());
|
|
20
|
+
const body = reader.readByteArray();
|
|
21
|
+
return new SignalPacket(id, body);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class SignalRegisterPacket {
|
|
25
|
+
id;
|
|
26
|
+
permissions;
|
|
27
|
+
constructor(id, permissions) {
|
|
28
|
+
this.id = id;
|
|
29
|
+
this.permissions = permissions;
|
|
30
|
+
}
|
|
31
|
+
static serialize(packet) {
|
|
32
|
+
const writer = new ByteWriter();
|
|
33
|
+
writer.writeString(packet.id.key());
|
|
34
|
+
packet.permissions.serialize(writer);
|
|
35
|
+
return writer.finish();
|
|
36
|
+
}
|
|
37
|
+
static deserialize(data) {
|
|
38
|
+
const reader = new ByteReader(data);
|
|
39
|
+
const id = Identifier.fromKey(reader.readString());
|
|
40
|
+
const permissions = SignalPermissions.deserialize(reader);
|
|
41
|
+
return new SignalRegisterPacket(id, permissions);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packets.js","sourceRoot":"","sources":["../../../../src/extension/signal/packets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,YAAY;IAED;IACA;IAFpB,YACoB,EAAc,EACd,IAAgB;QADhB,OAAE,GAAF,EAAE,CAAY;QACd,SAAI,GAAJ,IAAI,CAAY;IAChC,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAAoB;QACxC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AAED,MAAM,OAAO,oBAAoB;IAET;IACA;IAFpB,YACoB,EAAc,EACd,WAA8B;QAD9B,OAAE,GAAF,EAAE,CAAY;QACd,gBAAW,GAAX,WAAW,CAAmB;IAC9C,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAA4B;QAChD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;CACJ"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Identifier, IdentifierMap } from '../../identifier.js';
|
|
2
|
+
import { PacketType } from '../../network/packet/index.js';
|
|
3
|
+
import { Serializer } from '../../serializer.js';
|
|
4
|
+
import { ExtensionType } from '../extension.js';
|
|
5
|
+
import { SignalPacket, SignalRegisterPacket } from './packets.js';
|
|
6
|
+
import { SignalType } from './signal.js';
|
|
7
|
+
export const SIGNAL_EXTENSION_TYPE = new ExtensionType('signal', (client) => new SignalExtension(client));
|
|
8
|
+
const SIGNAL_REGISTER_PACKET = PacketType.createSerialized(SIGNAL_EXTENSION_TYPE, {
|
|
9
|
+
name: 'register',
|
|
10
|
+
serializer: SignalRegisterPacket,
|
|
11
|
+
});
|
|
12
|
+
const SIGNAL_LISTEN_PACKET = PacketType.createJson(SIGNAL_EXTENSION_TYPE, {
|
|
13
|
+
name: 'listen',
|
|
14
|
+
serializer: Serializer.model(Identifier),
|
|
15
|
+
});
|
|
16
|
+
const SIGNAL_NOTIFY_PACKET = PacketType.createSerialized(SIGNAL_EXTENSION_TYPE, {
|
|
17
|
+
name: 'notify',
|
|
18
|
+
serializer: SignalPacket,
|
|
19
|
+
});
|
|
20
|
+
export class SignalExtension {
|
|
21
|
+
client;
|
|
22
|
+
signals = new IdentifierMap();
|
|
23
|
+
constructor(client) {
|
|
24
|
+
this.client = client;
|
|
25
|
+
client.network.registerPacket(SIGNAL_REGISTER_PACKET, SIGNAL_LISTEN_PACKET, SIGNAL_NOTIFY_PACKET);
|
|
26
|
+
}
|
|
27
|
+
createSignal(signalType) {
|
|
28
|
+
if (this.signals.has(signalType.id)) {
|
|
29
|
+
throw new Error(`Signal for key ${signalType.id} already created`);
|
|
30
|
+
}
|
|
31
|
+
return new SignalImpl(this.client, signalType);
|
|
32
|
+
}
|
|
33
|
+
create(name) {
|
|
34
|
+
const id = this.client.app.id.join(name);
|
|
35
|
+
const type = SignalType.createJson(id, { name });
|
|
36
|
+
return this.createSignal(type);
|
|
37
|
+
}
|
|
38
|
+
get(signalType) {
|
|
39
|
+
return this.createSignal(signalType);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
class SignalImpl {
|
|
43
|
+
client;
|
|
44
|
+
type;
|
|
45
|
+
listeners = [];
|
|
46
|
+
listening = false;
|
|
47
|
+
constructor(client, type) {
|
|
48
|
+
this.client = client;
|
|
49
|
+
this.type = type;
|
|
50
|
+
client.network.addPacketHandler(SIGNAL_NOTIFY_PACKET, (data) => this.handleBroadcast(data));
|
|
51
|
+
client.network.addTask(() => this.onTask());
|
|
52
|
+
}
|
|
53
|
+
notify(body) {
|
|
54
|
+
const data = this.type.serializer.serialize(body);
|
|
55
|
+
this.client.send(SIGNAL_NOTIFY_PACKET, {
|
|
56
|
+
id: this.type.id,
|
|
57
|
+
body: data,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
listen(handler) {
|
|
61
|
+
if (!this.listening) {
|
|
62
|
+
this.client.whenReady(() => {
|
|
63
|
+
this.client.send(SIGNAL_LISTEN_PACKET, this.type.id);
|
|
64
|
+
});
|
|
65
|
+
this.listening = true;
|
|
66
|
+
}
|
|
67
|
+
this.listeners.push(handler);
|
|
68
|
+
return () => {
|
|
69
|
+
this.listeners.splice(this.listeners.indexOf(handler), 1);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
handleBroadcast(data) {
|
|
73
|
+
if (!data.id.isEqual(this.type.id)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const body = this.type.serializer.deserialize(data.body);
|
|
77
|
+
for (const listener of this.listeners) {
|
|
78
|
+
listener(body);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
onTask() {
|
|
82
|
+
if (!this.type.id.isSubpathOf(this.client.app.id)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.client.send(SIGNAL_REGISTER_PACKET, {
|
|
86
|
+
id: this.type.id,
|
|
87
|
+
permissions: this.type.permissions,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=signal-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-extension.js","sourceRoot":"","sources":["../../../../src/extension/signal/signal-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Flags } from '../../bytebuffer.js';
|
|
2
|
+
import { Identifier } from '../../identifier.js';
|
|
3
|
+
import { Serializer } from '../../serializer.js';
|
|
4
|
+
export class SignalPermissions {
|
|
5
|
+
all;
|
|
6
|
+
listen;
|
|
7
|
+
send;
|
|
8
|
+
constructor(all, listen, send) {
|
|
9
|
+
this.all = all;
|
|
10
|
+
this.listen = listen;
|
|
11
|
+
this.send = send;
|
|
12
|
+
}
|
|
13
|
+
serialize(writer) {
|
|
14
|
+
const flags = new Flags(0, 3);
|
|
15
|
+
flags.set(0, this.all !== undefined);
|
|
16
|
+
flags.set(1, this.listen !== undefined);
|
|
17
|
+
flags.set(2, this.send !== undefined);
|
|
18
|
+
writer.writeFlags(flags);
|
|
19
|
+
if (this.all !== undefined) {
|
|
20
|
+
writer.writeString(this.all.key());
|
|
21
|
+
}
|
|
22
|
+
if (this.listen !== undefined) {
|
|
23
|
+
writer.writeString(this.listen.key());
|
|
24
|
+
}
|
|
25
|
+
if (this.send !== undefined) {
|
|
26
|
+
writer.writeString(this.send.key());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static deserialize(reader) {
|
|
30
|
+
const flags = reader.readFlags(3);
|
|
31
|
+
const all = flags.ifSet(0, () => Identifier.fromKey(reader.readString()));
|
|
32
|
+
const listen = flags.ifSet(1, () => Identifier.fromKey(reader.readString()));
|
|
33
|
+
const send = flags.ifSet(2, () => Identifier.fromKey(reader.readString()));
|
|
34
|
+
return new SignalPermissions(all, listen, send);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class SignalType {
|
|
38
|
+
id;
|
|
39
|
+
serializer;
|
|
40
|
+
permissions;
|
|
41
|
+
constructor(id, serializer, permissions) {
|
|
42
|
+
this.id = id;
|
|
43
|
+
this.serializer = serializer;
|
|
44
|
+
this.permissions = permissions;
|
|
45
|
+
}
|
|
46
|
+
static createJson(identifier, { name, permissions, }) {
|
|
47
|
+
return new SignalType(identifier.join(name), Serializer.json(), permissions ?? new SignalPermissions());
|
|
48
|
+
}
|
|
49
|
+
static createSerialized(identifier, { name, serializer, permissions, }) {
|
|
50
|
+
return new SignalType(identifier.join(name), serializer, permissions ?? new SignalPermissions());
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../../src/extension/signal/signal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAsB,SAAS,EAAE,MAAM,YAAY,CAAC"}
|