@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/api/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { ExtensionRegistry } from './extension-registry.js';\nexport { ExtensionType, type Extension } from './extension.js';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,qBAAAA,MAAyB,0BAClC,OAAS,iBAAAC,MAAqC",
|
|
6
|
+
"names": ["ExtensionRegistry", "ExtensionType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Unlisten } from '../../event';
|
|
2
|
+
import { Identifier } from '../../identifier';
|
|
3
|
+
import { PacketType } from '../../network/packet/packet.js';
|
|
4
|
+
import { Omu } from '../../omu';
|
|
5
|
+
import { ExtensionType } from '../extension.js';
|
|
6
|
+
import type { LogMessage } from './packets.js';
|
|
7
|
+
import { LogPacket } from './packets.js';
|
|
8
|
+
export declare const LOGGER_EXTENSION_TYPE: ExtensionType<LoggerExtension>;
|
|
9
|
+
export declare const LOGGER_LOG_PERMISSION_ID: Identifier;
|
|
10
|
+
export declare const LOGGER_LOG_PACKET: PacketType<LogPacket>;
|
|
11
|
+
export declare const LOGGER_LISTEN_PACKET: PacketType<Identifier>;
|
|
12
|
+
type LogListener = (message: LogMessage) => void;
|
|
13
|
+
export declare class LoggerExtension {
|
|
14
|
+
private readonly omu;
|
|
15
|
+
readonly type: ExtensionType<LoggerExtension>;
|
|
16
|
+
private readonly listeners;
|
|
17
|
+
constructor(omu: Omu);
|
|
18
|
+
log(message: LogMessage): void;
|
|
19
|
+
error(text: string): void;
|
|
20
|
+
warning(text: string): void;
|
|
21
|
+
info(text: string): void;
|
|
22
|
+
debug(text: string): void;
|
|
23
|
+
listen(id: Identifier, listener: LogListener): Unlisten;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as c,IdentifierMap as d}from"../../identifier";import{PacketType as p}from"../../network/packet/packet.js";import{ExtensionType as m}from"../extension.js";import{LogPacket as g,LogType as o}from"./packets.js";const s=new m("logger",r=>new L(r)),O=s.join("log"),n=p.createSerialized(s,{name:"log",serializer:g}),a=p.createJson(s,{name:"listen",serializer:c});class L{constructor(e){this.omu=e;e.network.registerPacket(n,a),e.network.addPacketHandler(n,t=>{const i=this.listeners.get(t.id);i&&i.forEach(l=>l(t.message))})}type=s;listeners=new d;log(e){const t=new g(this.omu.app.id,e);this.omu.send(n,t)}error(e){this.log({type:o.ERROR,text:e})}warning(e){this.log({type:o.WARNING,text:e})}info(e){this.log({type:o.INFO,text:e})}debug(e){this.log({type:o.DEBUG,text:e})}listen(e,t){this.listeners.has(e)||this.omu.onReady(()=>{this.omu.send(a,e)});const i=this.listeners.get(e)??[];return i.push(t),this.listeners.set(e,i),()=>{i.splice(i.indexOf(t),1)}}}export{s as LOGGER_EXTENSION_TYPE,a as LOGGER_LISTEN_PACKET,n as LOGGER_LOG_PACKET,O as LOGGER_LOG_PERMISSION_ID,L as LoggerExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/logger/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Unlisten } from '../../event';\nimport { Identifier, IdentifierMap } from '../../identifier';\nimport { PacketType } from '../../network/packet/packet.js';\nimport { Omu } from '../../omu';\nimport { ExtensionType } from '../extension.js';\n\nimport type { LogMessage } from './packets.js';\nimport { LogPacket, LogType } from './packets.js';\n\nexport const LOGGER_EXTENSION_TYPE: ExtensionType<LoggerExtension> = new ExtensionType(\n 'logger',\n (client) => new LoggerExtension(client),\n);\n\nexport const LOGGER_LOG_PERMISSION_ID: Identifier = LOGGER_EXTENSION_TYPE.join('log');\n\nexport const LOGGER_LOG_PACKET: PacketType<LogPacket> = PacketType.createSerialized<LogPacket>(LOGGER_EXTENSION_TYPE, {\n name: 'log',\n serializer: LogPacket,\n});\nexport const LOGGER_LISTEN_PACKET: PacketType<Identifier> = PacketType.createJson<Identifier>(LOGGER_EXTENSION_TYPE, {\n name: 'listen',\n serializer: Identifier,\n});\n\ntype LogListener = (message: LogMessage) => void;\nexport class LoggerExtension {\n public readonly type: ExtensionType<LoggerExtension> = LOGGER_EXTENSION_TYPE;\n private readonly listeners: IdentifierMap<LogListener[]> = new IdentifierMap();\n\n constructor(private readonly omu: Omu) {\n omu.network.registerPacket(LOGGER_LOG_PACKET, LOGGER_LISTEN_PACKET);\n omu.network.addPacketHandler(LOGGER_LOG_PACKET, (packet) => {\n const listener = this.listeners.get(packet.id);\n if (listener) {\n listener.forEach((it) => it(packet.message));\n }\n });\n }\n\n public log(message: LogMessage): void {\n const packet = new LogPacket(this.omu.app.id, message);\n this.omu.send(LOGGER_LOG_PACKET, packet);\n }\n\n public error(text: string): void {\n this.log({ type: LogType.ERROR, text });\n }\n\n public warning(text: string): void {\n this.log({ type: LogType.WARNING, text });\n }\n\n public info(text: string): void {\n this.log({ type: LogType.INFO, text });\n }\n\n public debug(text: string): void {\n this.log({ type: LogType.DEBUG, text });\n }\n\n public listen(id: Identifier, listener: LogListener): Unlisten {\n if (!this.listeners.has(id)) {\n this.omu.onReady(() => {\n this.omu.send(LOGGER_LISTEN_PACKET, id);\n });\n }\n const list = this.listeners.get(id) ?? [];\n list.push(listener);\n this.listeners.set(id, list);\n return () => {\n list.splice(list.indexOf(listener), 1);\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,cAAAA,EAAY,iBAAAC,MAAqB,mBAC1C,OAAS,cAAAC,MAAkB,iCAE3B,OAAS,iBAAAC,MAAqB,kBAG9B,OAAS,aAAAC,EAAW,WAAAC,MAAe,eAE5B,MAAMC,EAAwD,IAAIH,EACrE,SACCI,GAAW,IAAIC,EAAgBD,CAAM,CAC1C,EAEaE,EAAuCH,EAAsB,KAAK,KAAK,EAEvEI,EAA2CR,EAAW,iBAA4BI,EAAuB,CAClH,KAAM,MACN,WAAYF,CAChB,CAAC,EACYO,EAA+CT,EAAW,WAAuBI,EAAuB,CACjH,KAAM,SACN,WAAYN,CAChB,CAAC,EAGM,MAAMQ,CAAgB,CAIzB,YAA6BI,EAAU,CAAV,SAAAA,EACzBA,EAAI,QAAQ,eAAeF,EAAmBC,CAAoB,EAClEC,EAAI,QAAQ,iBAAiBF,EAAoBG,GAAW,CACxD,MAAMC,EAAW,KAAK,UAAU,IAAID,EAAO,EAAE,EACzCC,GACAA,EAAS,QAASC,GAAOA,EAAGF,EAAO,OAAO,CAAC,CAEnD,CAAC,CACL,CAXgB,KAAuCP,EACtC,UAA0C,IAAIL,EAYxD,IAAIe,EAA2B,CAClC,MAAMH,EAAS,IAAIT,EAAU,KAAK,IAAI,IAAI,GAAIY,CAAO,EACrD,KAAK,IAAI,KAAKN,EAAmBG,CAAM,CAC3C,CAEO,MAAMI,EAAoB,CAC7B,KAAK,IAAI,CAAE,KAAMZ,EAAQ,MAAO,KAAAY,CAAK,CAAC,CAC1C,CAEO,QAAQA,EAAoB,CAC/B,KAAK,IAAI,CAAE,KAAMZ,EAAQ,QAAS,KAAAY,CAAK,CAAC,CAC5C,CAEO,KAAKA,EAAoB,CAC5B,KAAK,IAAI,CAAE,KAAMZ,EAAQ,KAAM,KAAAY,CAAK,CAAC,CACzC,CAEO,MAAMA,EAAoB,CAC7B,KAAK,IAAI,CAAE,KAAMZ,EAAQ,MAAO,KAAAY,CAAK,CAAC,CAC1C,CAEO,OAAOC,EAAgBJ,EAAiC,CACtD,KAAK,UAAU,IAAII,CAAE,GACtB,KAAK,IAAI,QAAQ,IAAM,CACnB,KAAK,IAAI,KAAKP,EAAsBO,CAAE,CAC1C,CAAC,EAEL,MAAMC,EAAO,KAAK,UAAU,IAAID,CAAE,GAAK,CAAC,EACxC,OAAAC,EAAK,KAAKL,CAAQ,EAClB,KAAK,UAAU,IAAII,EAAIC,CAAI,EACpB,IAAM,CACTA,EAAK,OAAOA,EAAK,QAAQL,CAAQ,EAAG,CAAC,CACzC,CACJ,CACJ",
|
|
6
|
+
"names": ["Identifier", "IdentifierMap", "PacketType", "ExtensionType", "LogPacket", "LogType", "LOGGER_EXTENSION_TYPE", "client", "LoggerExtension", "LOGGER_LOG_PERMISSION_ID", "LOGGER_LOG_PACKET", "LOGGER_LISTEN_PACKET", "omu", "packet", "listener", "it", "message", "text", "id", "list"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LOGGER_LOG_PERMISSION_ID, } from './extension.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Identifier } from '../../identifier';
|
|
2
|
+
export declare enum LogType {
|
|
3
|
+
ERROR = "error",
|
|
4
|
+
WARNING = "warning",
|
|
5
|
+
INFO = "info",
|
|
6
|
+
DEBUG = "debug"
|
|
7
|
+
}
|
|
8
|
+
export type LogMessage = {
|
|
9
|
+
type: LogType;
|
|
10
|
+
text: string;
|
|
11
|
+
};
|
|
12
|
+
export declare class LogPacket {
|
|
13
|
+
readonly id: Identifier;
|
|
14
|
+
readonly message: LogMessage;
|
|
15
|
+
constructor(id: Identifier, message: LogMessage);
|
|
16
|
+
static serialize(item: LogPacket): Uint8Array;
|
|
17
|
+
static deserialize(item: Uint8Array): LogPacket;
|
|
18
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as o}from"../../identifier";import{ByteReader as c,ByteWriter as g}from"../../serialize";var d=(t=>(t.ERROR="error",t.WARNING="warning",t.INFO="info",t.DEBUG="debug",t))(d||{});class i{constructor(r,e){this.id=r;this.message=e}static serialize(r){const e=new g;return e.writeString(r.id.key()),e.writeString(r.message.type),e.writeString(r.message.text),e.finish()}static deserialize(r){const e=c.fromUint8Array(r),n=e.readString(),t=e.readString(),s=e.readString(),a={type:t,text:s};return new i(o.fromKey(n),a)}}export{i as LogPacket,d as LogType};
|
|
2
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/logger/packets.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier } from '../../identifier';\nimport { ByteReader, ByteWriter } from '../../serialize';\n\nexport enum LogType {\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info',\n DEBUG = 'debug',\n}\n\nexport type LogMessage = {\n type: LogType;\n text: string;\n};\n\nexport class LogPacket {\n constructor(\n public readonly id: Identifier,\n public readonly message: LogMessage,\n ) {}\n\n public static serialize(item: LogPacket): Uint8Array {\n const writer = new ByteWriter();\n writer.writeString(item.id.key());\n writer.writeString(item.message.type);\n writer.writeString(item.message.text);\n return writer.finish();\n }\n\n public static deserialize(item: Uint8Array): LogPacket {\n const reader = ByteReader.fromUint8Array(item);\n const id = reader.readString();\n const type = reader.readString() as LogType;\n const text = reader.readString();\n const message = { type, text };\n return new LogPacket(Identifier.fromKey(id), message);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAAkB,mBAC3B,OAAS,cAAAC,EAAY,cAAAC,MAAkB,kBAEhC,IAAKC,OACRA,EAAA,MAAQ,QACRA,EAAA,QAAU,UACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,QAJAA,OAAA,IAYL,MAAMC,CAAU,CACnB,YACoBC,EACAC,EAClB,CAFkB,QAAAD,EACA,aAAAC,CACjB,CAEH,OAAc,UAAUC,EAA6B,CACjD,MAAMC,EAAS,IAAIN,EACnB,OAAAM,EAAO,YAAYD,EAAK,GAAG,IAAI,CAAC,EAChCC,EAAO,YAAYD,EAAK,QAAQ,IAAI,EACpCC,EAAO,YAAYD,EAAK,QAAQ,IAAI,EAC7BC,EAAO,OAAO,CACzB,CAEA,OAAc,YAAYD,EAA6B,CACnD,MAAME,EAASR,EAAW,eAAeM,CAAI,EACvCF,EAAKI,EAAO,WAAW,EACvBC,EAAOD,EAAO,WAAW,EACzBE,EAAOF,EAAO,WAAW,EACzBH,EAAU,CAAE,KAAAI,EAAM,KAAAC,CAAK,EAC7B,OAAO,IAAIP,EAAUJ,EAAW,QAAQK,CAAE,EAAGC,CAAO,CACxD,CACJ",
|
|
6
|
+
"names": ["Identifier", "ByteReader", "ByteWriter", "LogType", "LogPacket", "id", "message", "item", "writer", "reader", "type", "text"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Identifier, IntoId } from '../../identifier';
|
|
2
|
+
import { Omu } from '../../omu';
|
|
3
|
+
import { ExtensionType } from '../extension.js';
|
|
4
|
+
import { PermissionType } from './permission.js';
|
|
5
|
+
export declare const PERMISSION_EXTENSION_TYPE: ExtensionType<PermissionExtension>;
|
|
6
|
+
export declare class PermissionExtension {
|
|
7
|
+
private readonly omu;
|
|
8
|
+
readonly type: ExtensionType<PermissionExtension>;
|
|
9
|
+
private permissions;
|
|
10
|
+
private readonly registeredPermissions;
|
|
11
|
+
private readonly requiredPermissions;
|
|
12
|
+
constructor(omu: Omu);
|
|
13
|
+
private onTask;
|
|
14
|
+
register(permission: PermissionType): void;
|
|
15
|
+
require(...permissionIds: IntoId[]): void;
|
|
16
|
+
request(...permissionIds: Identifier[]): Promise<void>;
|
|
17
|
+
has(permissionIdentifier: Identifier): boolean;
|
|
18
|
+
required(permissionIdentifier: Identifier): boolean;
|
|
19
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as n,IdentifierMap as p,IdentifierSet as c}from"../../identifier";import{PacketType as a}from"../../network/packet/packet.js";import{Serializer as o}from"../../serialize";import{EndpointType as l}from"../endpoint/endpoint.js";import{ExtensionType as E}from"../extension.js";import{PermissionType as f}from"./permission.js";const i=new E("permission",d=>new h(d)),m=a.createJson(i,{name:"register",serializer:o.of(f).toArray()}),u=a.createJson(i,{name:"require",serializer:o.of(n).toArray()}),I=l.createJson(i,{name:"request",requestSerializer:o.of(n).toArray()}),P=a.createJson(i,{name:"grant",serializer:o.of(f).toArray()});class h{constructor(e){this.omu=e;e.network.registerPacket(m,u,P),e.network.addPacketHandler(P,r=>{for(const s of r)this.permissions.set(s.id,s)}),e.network.addTask(()=>this.onTask())}type=i;permissions=new p;registeredPermissions=new p;requiredPermissions=new c;onTask(){this.omu.app.type!=="remote"&&(this.registeredPermissions.size>0&&this.omu.send(m,Array.from(this.registeredPermissions.values())),this.requiredPermissions.size>0&&this.omu.send(u,Array.from(this.requiredPermissions.values())))}register(e){this.omu.running&&this.omu.send(m,[e]),this.registeredPermissions.set(e.id,e)}require(...e){const r=e.map(n.from),s=r.filter(t=>!this.permissions.has(t));if(this.omu.running){if(s.length>0)throw new Error("Permissions must be registered before the client starts");return}for(const t of r)this.requiredPermissions.add(t)}async request(...e){await this.omu.endpoints.call(I,e)}has(e){return this.permissions.has(e)}required(e){return this.requiredPermissions.has(e)}}export{i as PERMISSION_EXTENSION_TYPE,h as PermissionExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/permission/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier, IdentifierMap, IdentifierSet, IntoId } from '../../identifier';\nimport { PacketType } from '../../network/packet/packet.js';\nimport { Omu } from '../../omu';\nimport { Serializer } from '../../serialize';\nimport { EndpointType } from '../endpoint/endpoint.js';\nimport { ExtensionType } from '../extension.js';\n\nimport { PermissionType } from './permission.js';\n\nexport const PERMISSION_EXTENSION_TYPE: ExtensionType<PermissionExtension> = new ExtensionType(\n 'permission',\n (client) => new PermissionExtension(client),\n);\nconst PERMISSION_REGISTER_PACKET = PacketType.createJson<PermissionType[]>(\n PERMISSION_EXTENSION_TYPE,\n {\n name: 'register',\n serializer: Serializer.of(PermissionType).toArray(),\n },\n);\nconst PERMISSION_REQUIRE_PACKET = PacketType.createJson<Identifier[]>(PERMISSION_EXTENSION_TYPE, {\n name: 'require',\n serializer: Serializer.of(Identifier).toArray(),\n});\nconst PERMISSION_REQUEST_ENDPOINT = EndpointType.createJson<Identifier[], void>(\n PERMISSION_EXTENSION_TYPE,\n {\n name: 'request',\n requestSerializer: Serializer.of(Identifier).toArray(),\n },\n);\nconst PERMISSION_GRANT_PACKET = PacketType.createJson<PermissionType[]>(PERMISSION_EXTENSION_TYPE, {\n name: 'grant',\n serializer: Serializer.of(PermissionType).toArray(),\n});\n\nexport class PermissionExtension {\n public readonly type: ExtensionType<PermissionExtension> = PERMISSION_EXTENSION_TYPE;\n private permissions = new IdentifierMap<PermissionType>();\n private readonly registeredPermissions = new IdentifierMap<PermissionType>();\n private readonly requiredPermissions = new IdentifierSet();\n\n constructor(private readonly omu: Omu) {\n omu.network.registerPacket(\n PERMISSION_REGISTER_PACKET,\n PERMISSION_REQUIRE_PACKET,\n PERMISSION_GRANT_PACKET,\n );\n omu.network.addPacketHandler(PERMISSION_GRANT_PACKET, (permissions) => {\n for (const permission of permissions) {\n this.permissions.set(permission.id, permission);\n }\n });\n omu.network.addTask(() => this.onTask());\n }\n\n private onTask(): void {\n if (this.omu.app.type === 'remote') {\n return;\n }\n if (this.registeredPermissions.size > 0) {\n this.omu.send(\n PERMISSION_REGISTER_PACKET,\n Array.from(this.registeredPermissions.values()),\n );\n }\n if (this.requiredPermissions.size > 0) {\n this.omu.send(\n PERMISSION_REQUIRE_PACKET,\n Array.from(this.requiredPermissions.values()),\n );\n }\n }\n\n public register(permission: PermissionType): void {\n if (this.omu.running) {\n this.omu.send(PERMISSION_REGISTER_PACKET, [permission]);\n }\n this.registeredPermissions.set(permission.id, permission);\n }\n\n public require(...permissionIds: IntoId[]): void {\n const ids = permissionIds.map(Identifier.from);\n const missing = ids.filter((id) => !this.permissions.has(id));\n if (this.omu.running) {\n if (missing.length > 0) {\n throw new Error('Permissions must be registered before the client starts');\n }\n return;\n }\n for (const id of ids) {\n this.requiredPermissions.add(id);\n }\n }\n\n public async request(...permissionIds: Identifier[]): Promise<void> {\n await this.omu.endpoints.call(PERMISSION_REQUEST_ENDPOINT, permissionIds);\n }\n\n public has(permissionIdentifier: Identifier): boolean {\n return this.permissions.has(permissionIdentifier);\n }\n\n public required(permissionIdentifier: Identifier): boolean {\n return this.requiredPermissions.has(permissionIdentifier);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,EAAY,iBAAAC,EAAe,iBAAAC,MAA6B,mBACjE,OAAS,cAAAC,MAAkB,iCAE3B,OAAS,cAAAC,MAAkB,kBAC3B,OAAS,gBAAAC,MAAoB,0BAC7B,OAAS,iBAAAC,MAAqB,kBAE9B,OAAS,kBAAAC,MAAsB,kBAExB,MAAMC,EAAgE,IAAIF,EAC7E,aACCG,GAAW,IAAIC,EAAoBD,CAAM,CAC9C,EACME,EAA6BR,EAAW,WAC1CK,EACA,CACI,KAAM,WACN,WAAYJ,EAAW,GAAGG,CAAc,EAAE,QAAQ,CACtD,CACJ,EACMK,EAA4BT,EAAW,WAAyBK,EAA2B,CAC7F,KAAM,UACN,WAAYJ,EAAW,GAAGJ,CAAU,EAAE,QAAQ,CAClD,CAAC,EACKa,EAA8BR,EAAa,WAC7CG,EACA,CACI,KAAM,UACN,kBAAmBJ,EAAW,GAAGJ,CAAU,EAAE,QAAQ,CACzD,CACJ,EACMc,EAA0BX,EAAW,WAA6BK,EAA2B,CAC/F,KAAM,QACN,WAAYJ,EAAW,GAAGG,CAAc,EAAE,QAAQ,CACtD,CAAC,EAEM,MAAMG,CAAoB,CAM7B,YAA6BK,EAAU,CAAV,SAAAA,EACzBA,EAAI,QAAQ,eACRJ,EACAC,EACAE,CACJ,EACAC,EAAI,QAAQ,iBAAiBD,EAA0BE,GAAgB,CACnE,UAAWC,KAAcD,EACrB,KAAK,YAAY,IAAIC,EAAW,GAAIA,CAAU,CAEtD,CAAC,EACDF,EAAI,QAAQ,QAAQ,IAAM,KAAK,OAAO,CAAC,CAC3C,CAjBgB,KAA2CP,EACnD,YAAc,IAAIP,EACT,sBAAwB,IAAIA,EAC5B,oBAAsB,IAAIC,EAgBnC,QAAe,CACf,KAAK,IAAI,IAAI,OAAS,WAGtB,KAAK,sBAAsB,KAAO,GAClC,KAAK,IAAI,KACLS,EACA,MAAM,KAAK,KAAK,sBAAsB,OAAO,CAAC,CAClD,EAEA,KAAK,oBAAoB,KAAO,GAChC,KAAK,IAAI,KACLC,EACA,MAAM,KAAK,KAAK,oBAAoB,OAAO,CAAC,CAChD,EAER,CAEO,SAASK,EAAkC,CAC1C,KAAK,IAAI,SACT,KAAK,IAAI,KAAKN,EAA4B,CAACM,CAAU,CAAC,EAE1D,KAAK,sBAAsB,IAAIA,EAAW,GAAIA,CAAU,CAC5D,CAEO,WAAWC,EAA+B,CAC7C,MAAMC,EAAMD,EAAc,IAAIlB,EAAW,IAAI,EACvCoB,EAAUD,EAAI,OAAQE,GAAO,CAAC,KAAK,YAAY,IAAIA,CAAE,CAAC,EAC5D,GAAI,KAAK,IAAI,QAAS,CAClB,GAAID,EAAQ,OAAS,EACjB,MAAM,IAAI,MAAM,yDAAyD,EAE7E,MACJ,CACA,UAAWC,KAAMF,EACb,KAAK,oBAAoB,IAAIE,CAAE,CAEvC,CAEA,MAAa,WAAWH,EAA4C,CAChE,MAAM,KAAK,IAAI,UAAU,KAAKL,EAA6BK,CAAa,CAC5E,CAEO,IAAII,EAA2C,CAClD,OAAO,KAAK,YAAY,IAAIA,CAAoB,CACpD,CAEO,SAASA,EAA2C,CACvD,OAAO,KAAK,oBAAoB,IAAIA,CAAoB,CAC5D,CACJ",
|
|
6
|
+
"names": ["Identifier", "IdentifierMap", "IdentifierSet", "PacketType", "Serializer", "EndpointType", "ExtensionType", "PermissionType", "PERMISSION_EXTENSION_TYPE", "client", "PermissionExtension", "PERMISSION_REGISTER_PACKET", "PERMISSION_REQUIRE_PACKET", "PERMISSION_REQUEST_ENDPOINT", "PERMISSION_GRANT_PACKET", "omu", "permissions", "permission", "permissionIds", "ids", "missing", "id", "permissionIdentifier"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/permission/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { PermissionType, type PermissionLevel, type PermissionMetadata } from './permission.js';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,kBAAAA,MAAqE",
|
|
6
|
+
"names": ["PermissionType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Identifier, IntoId } from '../../identifier';
|
|
2
|
+
import type { LocalizedText } from '../../localization/localization.js';
|
|
3
|
+
export type PermissionLevel = 'low' | 'medium' | 'high';
|
|
4
|
+
export type PermissionMetadata = {
|
|
5
|
+
name: LocalizedText;
|
|
6
|
+
note?: LocalizedText;
|
|
7
|
+
level: PermissionLevel;
|
|
8
|
+
};
|
|
9
|
+
export type PermissionTypeJson = {
|
|
10
|
+
id: string;
|
|
11
|
+
metadata: PermissionMetadata;
|
|
12
|
+
};
|
|
13
|
+
export declare class PermissionType {
|
|
14
|
+
readonly id: Identifier;
|
|
15
|
+
readonly metadata: PermissionMetadata;
|
|
16
|
+
constructor(options: {
|
|
17
|
+
id: Identifier;
|
|
18
|
+
metadata: PermissionMetadata;
|
|
19
|
+
});
|
|
20
|
+
static create(identifier: IntoId, { metadata }: {
|
|
21
|
+
metadata: PermissionMetadata;
|
|
22
|
+
}): PermissionType;
|
|
23
|
+
static serialize(data: PermissionType): PermissionTypeJson;
|
|
24
|
+
static deserialize(json: PermissionTypeJson): PermissionType;
|
|
25
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as i}from"../../identifier";class t{id;metadata;constructor(e){this.id=e.id,this.metadata=e.metadata}static create(e,{metadata:a}){return new t({id:i.from(e),metadata:a})}static serialize(e){return{id:e.id.key(),metadata:e.metadata}}static deserialize(e){return new t({id:i.fromKey(e.id),metadata:e.metadata})}}export{t as PermissionType};
|
|
2
|
+
//# sourceMappingURL=permission.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/permission/permission.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier, IntoId } from '../../identifier';\nimport type { LocalizedText } from '../../localization/localization.js';\n\nexport type PermissionLevel = 'low' | 'medium' | 'high';\n\nexport type PermissionMetadata = {\n name: LocalizedText;\n note?: LocalizedText;\n level: PermissionLevel;\n};\n\nexport type PermissionTypeJson = {\n id: string;\n metadata: PermissionMetadata;\n};\n\nexport class PermissionType {\n public readonly id: Identifier;\n public readonly metadata: PermissionMetadata;\n\n constructor(options: { id: Identifier; metadata: PermissionMetadata }) {\n this.id = options.id;\n this.metadata = options.metadata;\n }\n\n public static create(\n identifier: IntoId,\n {\n metadata,\n }: {\n metadata: PermissionMetadata;\n },\n ): PermissionType {\n return new PermissionType({\n id: Identifier.from(identifier),\n metadata: metadata,\n });\n }\n\n public static serialize(data: PermissionType): PermissionTypeJson {\n return {\n id: data.id.key(),\n metadata: data.metadata,\n };\n }\n\n public static deserialize(json: PermissionTypeJson): PermissionType {\n return new PermissionType({\n id: Identifier.fromKey(json.id),\n metadata: json.metadata,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAA0B,mBAgB5B,MAAMC,CAAe,CACR,GACA,SAEhB,YAAYC,EAA2D,CACnE,KAAK,GAAKA,EAAQ,GAClB,KAAK,SAAWA,EAAQ,QAC5B,CAEA,OAAc,OACVC,EACA,CACI,SAAAC,CACJ,EAGc,CACd,OAAO,IAAIH,EAAe,CACtB,GAAID,EAAW,KAAKG,CAAU,EAC9B,SAAUC,CACd,CAAC,CACL,CAEA,OAAc,UAAUC,EAA0C,CAC9D,MAAO,CACH,GAAIA,EAAK,GAAG,IAAI,EAChB,SAAUA,EAAK,QACnB,CACJ,CAEA,OAAc,YAAYC,EAA0C,CAChE,OAAO,IAAIL,EAAe,CACtB,GAAID,EAAW,QAAQM,EAAK,EAAE,EAC9B,SAAUA,EAAK,QACnB,CAAC,CACL,CACJ",
|
|
6
|
+
"names": ["Identifier", "PermissionType", "options", "identifier", "metadata", "data", "json"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Identifier } from '../../identifier';
|
|
2
|
+
import { Omu } from '../../omu';
|
|
3
|
+
import { ExtensionType } from '../extension.js';
|
|
4
|
+
import { Table } from '../table/table.js';
|
|
5
|
+
export declare const PLUGIN_EXTENSION_TYPE: ExtensionType<PluginExtension>;
|
|
6
|
+
export declare class PluginExtension {
|
|
7
|
+
private readonly omu;
|
|
8
|
+
readonly type: ExtensionType<PluginExtension>;
|
|
9
|
+
private readonly requiredPlugins;
|
|
10
|
+
constructor(omu: Omu);
|
|
11
|
+
getAllowedPackages(): Table<PluginPackageInfo>;
|
|
12
|
+
reload(options: ReloadOptions): void;
|
|
13
|
+
private onTask;
|
|
14
|
+
require(plugins: Record<string, string | null>): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class PluginPackageInfo {
|
|
17
|
+
package: string;
|
|
18
|
+
version: string;
|
|
19
|
+
constructor(_package: string, version: string);
|
|
20
|
+
static serialize(data: PluginPackageInfo): {
|
|
21
|
+
package: string;
|
|
22
|
+
version: string;
|
|
23
|
+
};
|
|
24
|
+
static deserialize(data: {
|
|
25
|
+
package: string;
|
|
26
|
+
version: string;
|
|
27
|
+
}): PluginPackageInfo;
|
|
28
|
+
static fromJson(json: {
|
|
29
|
+
package: string;
|
|
30
|
+
version: string;
|
|
31
|
+
}): PluginPackageInfo;
|
|
32
|
+
toJson(): {
|
|
33
|
+
package: string;
|
|
34
|
+
version: string;
|
|
35
|
+
};
|
|
36
|
+
key(): string;
|
|
37
|
+
}
|
|
38
|
+
export declare const PLUGIN_READ_PACKAGE_PERMISSION_ID: Identifier;
|
|
39
|
+
export declare const PLUGIN_MANAGE_PACKAGE_PERMISSION_ID: Identifier;
|
|
40
|
+
type ReloadOptions = {
|
|
41
|
+
packages: string[] | null;
|
|
42
|
+
};
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{PacketType as a}from"../../network/packet/packet.js";import{EndpointType as c}from"../endpoint/endpoint.js";import{ExtensionType as l}from"../extension.js";import{TableType as p}from"../table/table.js";const i=new l("plugin",n=>new g(n));class g{constructor(e){this.omu=e;e.network.registerPacket(s),e.network.addTask(()=>this.onTask())}type=i;requiredPlugins=new Map;getAllowedPackages(){return this.omu.tables.get(d)}reload(e){this.omu.endpoints.call(P,e)}async onTask(){this.omu.send(s,Object.fromEntries(this.requiredPlugins))}require(e){if(this.omu.running)throw new Error("Plugins must be required before the client starts");for(const[t,o]of Object.entries(e))this.requiredPlugins.set(t,o)}}const s=a.createJson(i,{name:"require"});class r{package;version;constructor(e,t){this.package=e,this.version=t}static serialize(e){return e.toJson()}static deserialize(e){return r.fromJson(e)}static fromJson(e){return new r(e.package,e.version)}toJson(){return{package:this.package,version:this.version}}key(){return this.package}}const v=i.join("package","read"),u=i.join("package","manage"),d=p.createJson(i,{name:"allowed_package",serializer:r,key:n=>n.key()}),P=c.createJson(i,{name:"reload",permissionId:u});export{i as PLUGIN_EXTENSION_TYPE,u as PLUGIN_MANAGE_PACKAGE_PERMISSION_ID,v as PLUGIN_READ_PACKAGE_PERMISSION_ID,g as PluginExtension,r as PluginPackageInfo};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/plugin/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier } from '../../identifier';\nimport { PacketType } from '../../network/packet/packet.js';\nimport { Omu } from '../../omu';\nimport { EndpointType } from '../endpoint/endpoint.js';\nimport { ExtensionType } from '../extension.js';\nimport { Table, TableType } from '../table/table.js';\n\nexport const PLUGIN_EXTENSION_TYPE: ExtensionType<PluginExtension> = new ExtensionType(\n 'plugin',\n (omu: Omu) => new PluginExtension(omu),\n);\n\nexport class PluginExtension {\n public readonly type: ExtensionType<PluginExtension> = PLUGIN_EXTENSION_TYPE;\n private readonly requiredPlugins: Map<string, string | null> = new Map();\n\n constructor(private readonly omu: Omu) {\n omu.network.registerPacket(PLUGIN_REQUIRE_PACKET);\n omu.network.addTask(() => this.onTask());\n }\n\n public getAllowedPackages(): Table<PluginPackageInfo> {\n return this.omu.tables.get(PLUGIN_ALLOWED_PACKAGE_TABLE);\n }\n\n public reload(options: ReloadOptions): void {\n this.omu.endpoints.call(PLUGIN_RELOAD_ENDPOINT_TYPE, options);\n }\n\n private async onTask(): Promise<void> {\n this.omu.send(PLUGIN_REQUIRE_PACKET, Object.fromEntries(this.requiredPlugins));\n }\n\n public require(plugins: Record<string, string | null>): void {\n if (this.omu.running) {\n throw new Error('Plugins must be required before the client starts');\n }\n for (const [key, value] of Object.entries(plugins)) {\n this.requiredPlugins.set(key, value);\n }\n }\n}\n\nconst PLUGIN_REQUIRE_PACKET = PacketType.createJson<Record<string, string | null>>(\n PLUGIN_EXTENSION_TYPE,\n {\n name: 'require',\n },\n);\nexport class PluginPackageInfo {\n public package: string;\n public version: string;\n\n constructor(_package: string, version: string) {\n this.package = _package;\n this.version = version;\n }\n\n public static serialize(data: PluginPackageInfo): { package: string; version: string } {\n return data.toJson();\n }\n\n public static deserialize(data: { package: string; version: string }): PluginPackageInfo {\n return PluginPackageInfo.fromJson(data);\n }\n\n public static fromJson(json: { package: string; version: string }): PluginPackageInfo {\n return new PluginPackageInfo(json.package, json.version);\n }\n\n public toJson(): { package: string; version: string } {\n return { package: this.package, version: this.version };\n }\n\n public key(): string {\n return this.package;\n }\n}\n\nexport const PLUGIN_READ_PACKAGE_PERMISSION_ID: Identifier = PLUGIN_EXTENSION_TYPE.join('package', 'read');\nexport const PLUGIN_MANAGE_PACKAGE_PERMISSION_ID: Identifier = PLUGIN_EXTENSION_TYPE.join('package', 'manage');\n\nconst PLUGIN_ALLOWED_PACKAGE_TABLE = TableType.createJson(PLUGIN_EXTENSION_TYPE, {\n name: 'allowed_package',\n serializer: PluginPackageInfo,\n key: (item) => item.key(),\n});\n\ntype ReloadOptions = {\n packages: string[] | null;\n};\n\ntype ReloadResult = {\n packages: Record<string, string>;\n};\n\nconst PLUGIN_RELOAD_ENDPOINT_TYPE = EndpointType.createJson<ReloadOptions, ReloadResult>(PLUGIN_EXTENSION_TYPE, {\n name: 'reload',\n permissionId: PLUGIN_MANAGE_PACKAGE_PERMISSION_ID,\n});\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,cAAAA,MAAkB,iCAE3B,OAAS,gBAAAC,MAAoB,0BAC7B,OAAS,iBAAAC,MAAqB,kBAC9B,OAAgB,aAAAC,MAAiB,oBAE1B,MAAMC,EAAwD,IAAIF,EACrE,SACCG,GAAa,IAAIC,EAAgBD,CAAG,CACzC,EAEO,MAAMC,CAAgB,CAIzB,YAA6BD,EAAU,CAAV,SAAAA,EACzBA,EAAI,QAAQ,eAAeE,CAAqB,EAChDF,EAAI,QAAQ,QAAQ,IAAM,KAAK,OAAO,CAAC,CAC3C,CANgB,KAAuCD,EACtC,gBAA8C,IAAI,IAO5D,oBAA+C,CAClD,OAAO,KAAK,IAAI,OAAO,IAAII,CAA4B,CAC3D,CAEO,OAAOC,EAA8B,CACxC,KAAK,IAAI,UAAU,KAAKC,EAA6BD,CAAO,CAChE,CAEA,MAAc,QAAwB,CAClC,KAAK,IAAI,KAAKF,EAAuB,OAAO,YAAY,KAAK,eAAe,CAAC,CACjF,CAEO,QAAQI,EAA8C,CACzD,GAAI,KAAK,IAAI,QACT,MAAM,IAAI,MAAM,mDAAmD,EAEvE,SAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQF,CAAO,EAC7C,KAAK,gBAAgB,IAAIC,EAAKC,CAAK,CAE3C,CACJ,CAEA,MAAMN,EAAwBP,EAAW,WACrCI,EACA,CACI,KAAM,SACV,CACJ,EACO,MAAMU,CAAkB,CACpB,QACA,QAEP,YAAYC,EAAkBC,EAAiB,CAC3C,KAAK,QAAUD,EACf,KAAK,QAAUC,CACnB,CAEA,OAAc,UAAUC,EAA+D,CACnF,OAAOA,EAAK,OAAO,CACvB,CAEA,OAAc,YAAYA,EAA+D,CACrF,OAAOH,EAAkB,SAASG,CAAI,CAC1C,CAEA,OAAc,SAASC,EAA+D,CAClF,OAAO,IAAIJ,EAAkBI,EAAK,QAASA,EAAK,OAAO,CAC3D,CAEO,QAA+C,CAClD,MAAO,CAAE,QAAS,KAAK,QAAS,QAAS,KAAK,OAAQ,CAC1D,CAEO,KAAc,CACjB,OAAO,KAAK,OAChB,CACJ,CAEO,MAAMC,EAAgDf,EAAsB,KAAK,UAAW,MAAM,EAC5FgB,EAAkDhB,EAAsB,KAAK,UAAW,QAAQ,EAEvGI,EAA+BL,EAAU,WAAWC,EAAuB,CAC7E,KAAM,kBACN,WAAYU,EACZ,IAAMO,GAASA,EAAK,IAAI,CAC5B,CAAC,EAUKX,EAA8BT,EAAa,WAAwCG,EAAuB,CAC5G,KAAM,SACN,aAAcgB,CAClB,CAAC",
|
|
6
|
+
"names": ["PacketType", "EndpointType", "ExtensionType", "TableType", "PLUGIN_EXTENSION_TYPE", "omu", "PluginExtension", "PLUGIN_REQUIRE_PACKET", "PLUGIN_ALLOWED_PACKAGE_TABLE", "options", "PLUGIN_RELOAD_ENDPOINT_TYPE", "plugins", "key", "value", "PluginPackageInfo", "_package", "version", "data", "json", "PLUGIN_READ_PACKAGE_PERMISSION_ID", "PLUGIN_MANAGE_PACKAGE_PERMISSION_ID", "item"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{PLUGIN_MANAGE_PACKAGE_PERMISSION_ID as _,PLUGIN_READ_PACKAGE_PERMISSION_ID as o,PluginPackageInfo as A}from"./extension.js";export{_ as PLUGIN_MANAGE_PACKAGE_PERMISSION_ID,o as PLUGIN_READ_PACKAGE_PERMISSION_ID,A as PluginPackageInfo};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/plugin/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { PLUGIN_MANAGE_PACKAGE_PERMISSION_ID, PLUGIN_READ_PACKAGE_PERMISSION_ID, PluginPackageInfo } from './extension.js';\nexport type { PackageInfo } from './package-info.js';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,uCAAAA,EAAqC,qCAAAC,EAAmC,qBAAAC,MAAyB",
|
|
6
|
+
"names": ["PLUGIN_MANAGE_PACKAGE_PERMISSION_ID", "PLUGIN_READ_PACKAGE_PERMISSION_ID", "PluginPackageInfo"]
|
|
7
|
+
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
// type generated from https://warehouse.pypa.io/api-reference/json.html
|
|
2
1
|
export type Downloads = {
|
|
3
2
|
last_day: number;
|
|
4
3
|
last_month: number;
|
|
5
4
|
last_week: number;
|
|
6
5
|
};
|
|
7
|
-
|
|
8
6
|
export type ProjectUrls = {
|
|
9
7
|
'Bug Reports': string;
|
|
10
8
|
'Funding': string;
|
|
@@ -45,7 +43,6 @@ export type Digests = {
|
|
|
45
43
|
md5: string;
|
|
46
44
|
sha256: string;
|
|
47
45
|
};
|
|
48
|
-
|
|
49
46
|
export type ReleasesItem = {
|
|
50
47
|
comment_text: string;
|
|
51
48
|
digests: Digests;
|
|
@@ -63,12 +60,10 @@ export type ReleasesItem = {
|
|
|
63
60
|
yanked: boolean;
|
|
64
61
|
yanked_reason: string | null;
|
|
65
62
|
};
|
|
66
|
-
|
|
67
63
|
export type Releases = {
|
|
68
64
|
[key: string]: ReleasesItem[];
|
|
69
65
|
};
|
|
70
66
|
export type Urls = ReleasesItem[];
|
|
71
|
-
|
|
72
67
|
export type VulnerabilitiesItem = {
|
|
73
68
|
aliases: string[];
|
|
74
69
|
details: string;
|
|
@@ -79,9 +74,7 @@ export type VulnerabilitiesItem = {
|
|
|
79
74
|
source: string;
|
|
80
75
|
withdrawn: string | null;
|
|
81
76
|
};
|
|
82
|
-
|
|
83
77
|
export type Vulnerabilities = VulnerabilitiesItem[];
|
|
84
|
-
|
|
85
78
|
export type PackageInfo = {
|
|
86
79
|
info: Info;
|
|
87
80
|
last_serial: number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=package-info.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Identifier } from '../../identifier';
|
|
2
|
+
import { Omu } from '../../omu';
|
|
3
|
+
import { JsonType, Serializer } from '../../serialize';
|
|
4
|
+
import { type Extension, ExtensionType } from '../extension.js';
|
|
5
|
+
import { type Registry, RegistryType } from './registry.js';
|
|
6
|
+
export declare class RegistryExtension implements Extension {
|
|
7
|
+
private readonly omu;
|
|
8
|
+
readonly type: ExtensionType<RegistryExtension>;
|
|
9
|
+
private readonly registries;
|
|
10
|
+
constructor(omu: Omu);
|
|
11
|
+
private createRegistry;
|
|
12
|
+
get<T>(registryType: RegistryType<T>): Registry<T>;
|
|
13
|
+
json<T, D extends JsonType = T extends JsonType ? T : JsonType>(name: string, options: {
|
|
14
|
+
default: T;
|
|
15
|
+
serializer?: Serializer<T, D>;
|
|
16
|
+
}): Registry<T>;
|
|
17
|
+
serialized<T>(name: string, options: {
|
|
18
|
+
default: T;
|
|
19
|
+
serializer: Serializer<T, Uint8Array>;
|
|
20
|
+
}): Registry<T>;
|
|
21
|
+
}
|
|
22
|
+
export declare const REGISTRY_EXTENSION_TYPE: ExtensionType<RegistryExtension>;
|
|
23
|
+
export declare const REGISTRY_PERMISSION_ID: Identifier;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{EventEmitter as v}from"../../event";import{Identifier as T,IdentifierMap as w}from"../../identifier";import{Lock as k}from"../../lock.js";import{PacketType as y}from"../../network/packet";import{Serializer as P}from"../../serialize";import{EndpointType as x}from"../endpoint/endpoint.js";import{ExtensionType as z}from"../extension.js";import{RegisterPacket as b,RegistryPacket as f}from"./packets.js";import{RegistryType as g}from"./registry.js";class S{constructor(e){this.omu=e;e.network.registerPacket(E,h,p)}type=a;registries=new w;createRegistry(e){if(this.registries.has(e.id))throw new Error(`Registry with identifier '${e.id}' already exists`);return new I(this.omu,e)}get(e){const i=e.id;let t=this.registries.get(i);return t===void 0&&(t=this.createRegistry(e),this.registries.set(i,t)),t}json(e,i){const t=g.createJson(this.omu.app.id.base,{name:e,defaultValue:i.default,serializer:i.serializer});if(this.registries.has(t.id))throw new Error(`Registry with name '${e}' already exists`);return this.createRegistry(t)}serialized(e,i){const t=g.createSerialized(this.omu.app.id.base,{name:e,defaultValue:i.default,serializer:i.serializer});if(this.registries.has(t.id))throw new Error(`Registry with name '${e}' already exists`);return this.createRegistry(t)}}class I{constructor(e,i){this.omu=e;this.type=i;this.value=i.defaultValue,e.network.addPacketHandler(h,t=>this.handleUpdate(t)),e.network.addTask(()=>this.onTask())}eventEmitter=new v;lock=new k;listening=!1;value;async#t(){const e=await this.omu.endpoints.call(O,this.type.id);return e.value===null?this.type.defaultValue:this.type.serializer.deserialize(e.value)}async#e(e){this.omu.send(h,{id:this.type.id,value:this.type.serializer.serialize(e)})}async get(){const e=await this.lock.use(async()=>this.#t());return this.eventEmitter.emit(e),e}async set(e){await this.lock.use(async()=>this.#e(e)),this.eventEmitter.emit(e)}async update(e){const i=await this.lock.use(async()=>{const t=await this.#t(),r=await e(t);return await this.#e(r),r});return this.eventEmitter.emit(i),i}async modify(e){const i=await this.lock.use(async()=>{const t=await this.#t();return await e(t),await this.#e(t),t});return this.eventEmitter.emit(i),i}listen(e){return!this.listening&&this.omu.ready&&this.omu.send(p,this.type.id),this.listening=!0,this.eventEmitter.listen(e)}handleUpdate(e){e.id.isEqual(this.type.id)&&(e.value!==null&&(this.value=this.type.serializer.deserialize(e.value)),this.eventEmitter.emit(this.value))}onTask(){this.listening&&this.omu.send(p,this.type.id),this.type.id.isSubpathOf(this.omu.app.id)&&this.omu.send(E,{id:this.type.id,permissions:this.type.permissions})}compatSvelte(){let e=!1;const i={changed:!1,markChanged:()=>{i.changed=!0,this.#e(this.value),r(this.value)}},t=new Set,r=n=>{e=!0,m(n)},o=this.listen(r),m=n=>{this.value=n;const l=c(n,i);t.forEach(d=>d(l))};return{set:n=>{if(!e)throw new Error(`Registry ${this.type.id.key()} is not ready`);n?.[u]&&!i.changed||(this.#e(n),m(n),i.changed=!1)},subscribe:n=>(t.add(n),n(c(this.value,i)),()=>{t.delete(n),t.size===0&&o?.()}),update:n=>{if(!e)throw new Error(`Registry ${this.type.id.key()} is not ready`);this.update(n)},wait:()=>e?Promise.resolve(this.value):new Promise(n=>{const l=this.listen(d=>{l?.(),n(d)})})}}}const u=Symbol("ProxiedRegistry");function R(s,e){if(s===e)return!0;if(typeof s!="object"||typeof e!="object"||s===null||e===null)return!1;const i=Object.keys(s),t=Object.keys(e);if(i.length!==t.length)return!1;for(const r of i)if(!t.includes(r)||!R(s[r],e[r]))return!1;return!0}function c(s,e){if(typeof s!="object"||s===null||u in s)return s;let i=!1;return new Proxy(s,{set(t,r,o){return i=!R(t[r],o),i&&(t[r]=o,e.markChanged()),!0},get(t,r){return r===u?s:c(t[r],e)},has(t,r){return r===u?!0:r in t},deleteProperty(t,r){return r in t?(delete t[r],e.markChanged(),!0):!1}})}const a=new z("registry",s=>new S(s)),_=a.join("permission"),E=y.createJson(a,{name:"register",serializer:b}),h=y.createSerialized(a,{name:"update",serializer:f}),p=y.createJson(a,{name:"listen",serializer:T}),O=x.createSerialized(a,{name:"get",requestSerializer:P.of(T).toJson(),responseSerializer:f,permissionId:_});export{a as REGISTRY_EXTENSION_TYPE,_ as REGISTRY_PERMISSION_ID,S as RegistryExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/registry/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Unlisten } from '../../event';\nimport { EventEmitter } from '../../event';\nimport { Identifier, IdentifierMap } from '../../identifier';\nimport { Lock } from '../../lock.js';\nimport { PacketType } from '../../network/packet';\nimport { Omu } from '../../omu';\nimport { JsonType, Serializer } from '../../serialize';\nimport { EndpointType } from '../endpoint/endpoint.js';\nimport { type Extension, ExtensionType } from '../extension.js';\n\nimport { RegisterPacket, RegistryPacket } from './packets.js';\nimport { type Registry, RegistryType, Writable } from './registry.js';\n\nexport class RegistryExtension implements Extension {\n public readonly type: ExtensionType<RegistryExtension> = REGISTRY_EXTENSION_TYPE;\n private readonly registries = new IdentifierMap<Registry<unknown>>();\n\n constructor(private readonly omu: Omu) {\n omu.network.registerPacket(\n REGISTRY_REGISTER_PACKET,\n REGISTRY_UPDATE_PACKET,\n REGISTRY_LISTEN_PACKET,\n );\n }\n\n private createRegistry<T>(registryType: RegistryType<T>): Registry<T> {\n if (this.registries.has(registryType.id)) {\n throw new Error(`Registry with identifier '${registryType.id}' already exists`);\n }\n return new RegistryImpl(this.omu, registryType);\n }\n\n public get<T>(registryType: RegistryType<T>): Registry<T> {\n const identifier = registryType.id;\n let registry = this.registries.get(identifier);\n if (registry === undefined) {\n registry = this.createRegistry(registryType);\n this.registries.set(identifier, registry);\n }\n return registry as Registry<T>;\n }\n\n public json<T, D extends JsonType = T extends JsonType ? T : JsonType>(name: string, options: { default: T; serializer?: Serializer<T, D> }): Registry<T> {\n const tableType = RegistryType.createJson<T>(this.omu.app.id.base, {\n name,\n defaultValue: options.default,\n serializer: options.serializer,\n });\n if (this.registries.has(tableType.id)) {\n throw new Error(`Registry with name '${name}' already exists`);\n }\n return this.createRegistry(tableType);\n }\n\n public serialized<T>(name: string, options: { default: T; serializer: Serializer<T, Uint8Array> }): Registry<T> {\n const tableType = RegistryType.createSerialized<T>(this.omu.app.id.base, {\n name,\n defaultValue: options.default,\n serializer: options.serializer,\n });\n if (this.registries.has(tableType.id)) {\n throw new Error(`Registry with name '${name}' already exists`);\n }\n return this.createRegistry(tableType);\n }\n}\n\nclass RegistryImpl<T> implements Registry<T> {\n private readonly eventEmitter: EventEmitter<[T]> = new EventEmitter();\n private readonly lock: Lock = new Lock();\n private listening = false;\n public value: T;\n\n constructor(\n private readonly omu: Omu,\n public readonly type: RegistryType<T>,\n ) {\n this.value = type.defaultValue;\n omu.network.addPacketHandler(REGISTRY_UPDATE_PACKET, (packet) =>\n this.handleUpdate(packet),\n );\n omu.network.addTask(() => this.onTask());\n }\n\n async #get(): Promise<T> {\n const result = await this.omu.endpoints.call(REGISTRY_GET_ENDPOINT, this.type.id);\n if (result.value === null) {\n return this.type.defaultValue;\n }\n return this.type.serializer.deserialize(result.value);\n }\n\n async #set(value: T): Promise<void> {\n this.omu.send(REGISTRY_UPDATE_PACKET, {\n id: this.type.id,\n value: this.type.serializer.serialize(value),\n });\n }\n\n public async get(): Promise<T> {\n const value = await this.lock.use(async () => this.#get());\n this.eventEmitter.emit(value);\n return value;\n }\n\n public async set(value: T): Promise<void> {\n await this.lock.use(async () => this.#set(value));\n this.eventEmitter.emit(value);\n }\n\n public async update(fn: (value: T) => PromiseLike<T> | T): Promise<T> {\n const value = await this.lock.use(async () => {\n const value = await this.#get();\n const newValue = await fn(value);\n await this.#set(newValue);\n return newValue;\n });\n this.eventEmitter.emit(value);\n return value;\n }\n\n public async modify(fn: (value: T) => PromiseLike<void> | void): Promise<T> {\n const value = await this.lock.use(async () => {\n const value = await this.#get();\n await fn(value);\n await this.#set(value);\n return value;\n });\n this.eventEmitter.emit(value);\n return value;\n }\n\n public listen(handler: (value: T) => Promise<void> | void): Unlisten {\n if (!this.listening && this.omu.ready) {\n this.omu.send(REGISTRY_LISTEN_PACKET, this.type.id);\n }\n this.listening = true;\n return this.eventEmitter.listen(handler);\n }\n\n private handleUpdate(data: RegistryPacket): void {\n if (!data.id.isEqual(this.type.id)) {\n return;\n }\n if (data.value !== null) {\n this.value = this.type.serializer.deserialize(data.value);\n }\n this.eventEmitter.emit(this.value);\n }\n\n private onTask(): void {\n if (this.listening) {\n this.omu.send(REGISTRY_LISTEN_PACKET, this.type.id);\n }\n if (!this.type.id.isSubpathOf(this.omu.app.id)) {\n return;\n }\n this.omu.send(REGISTRY_REGISTER_PACKET, {\n id: this.type.id,\n permissions: this.type.permissions,\n });\n }\n\n public compatSvelte(): Writable<T> {\n let isReady = false;\n const context = {\n changed: false,\n markChanged: () => {\n context.changed = true;\n this.#set(this.value);\n handle(this.value);\n },\n };\n const listeners = new Set<(value: T) => void>();\n\n const handle = (newValue: T) => {\n isReady = true;\n emit(newValue);\n };\n\n const unsubscribe = this.listen(handle);\n\n const emit = (value: T) => {\n this.value = value;\n const proxied = proxy(value, context);\n listeners.forEach(listener => listener(proxied));\n };\n\n return {\n set: (value: T) => {\n if (!isReady) {\n throw new Error(`Registry ${this.type.id.key()} is not ready`);\n }\n const proxied = value?.[PROXIED_SYMBOL];\n if (proxied && !context.changed) return;\n this.#set(value);\n emit(value);\n context.changed = false;\n },\n subscribe: (run: (value: T) => void) => {\n listeners.add(run);\n run(proxy(this.value, context));\n\n return () => {\n listeners.delete(run);\n if (listeners.size === 0) {\n unsubscribe?.();\n }\n };\n },\n update: (fn: (value: T) => T) => {\n if (!isReady) {\n throw new Error(`Registry ${this.type.id.key()} is not ready`);\n }\n this.update(fn);\n },\n wait: (): Promise<T> => {\n return isReady\n ? Promise.resolve(this.value)\n : new Promise(resolve => {\n const unsubscribe = this.listen((value: T) => {\n unsubscribe?.();\n resolve(value);\n });\n });\n },\n };\n }\n}\n\nconst PROXIED_SYMBOL = Symbol('ProxiedRegistry');\n\nfunction deepEqual(objA, objB) {\n if (objA === objB) return true; // Check for referential equality and primitive values\n\n if (\n typeof objA !== 'object' ||\n typeof objB !== 'object' ||\n objA === null ||\n objB === null\n ) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) return false; // Different number of properties\n\n for (const key of keysA) {\n if (!keysB.includes(key) || !deepEqual(objA[key], objB[key])) {\n return false; // Property missing or values are not deeply equal\n }\n }\n\n return true; // All properties and their values are deeply equal\n}\n\ntype ProxyContext = {\n changed: boolean;\n markChanged: () => void;\n};\n\nfunction proxy<T>(\n value: T,\n context: ProxyContext,\n) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (PROXIED_SYMBOL in value) {\n return value;\n }\n let changed = false;\n return new Proxy(value, {\n set(target, prop, value) {\n changed = !deepEqual(target[prop], value);\n if (!changed) return true;\n target[prop] = value;\n context.markChanged();\n return true;\n },\n get(target, prop) {\n if (prop === PROXIED_SYMBOL) {\n return value;\n }\n return proxy(target[prop], context);\n },\n has(target, p) {\n if (p === PROXIED_SYMBOL) return true;\n return p in target;\n },\n deleteProperty(target, prop) {\n if (!(prop in target)) return false;\n delete target[prop];\n context.markChanged();\n return true;\n },\n });\n}\n\nexport const REGISTRY_EXTENSION_TYPE: ExtensionType<RegistryExtension> = new ExtensionType(\n 'registry',\n (omu: Omu) => new RegistryExtension(omu),\n);\nexport const REGISTRY_PERMISSION_ID: Identifier = REGISTRY_EXTENSION_TYPE.join('permission');\nconst REGISTRY_REGISTER_PACKET = PacketType.createJson<RegisterPacket>(REGISTRY_EXTENSION_TYPE, {\n name: 'register',\n serializer: RegisterPacket,\n});\nconst REGISTRY_UPDATE_PACKET = PacketType.createSerialized<RegistryPacket>(\n REGISTRY_EXTENSION_TYPE,\n {\n name: 'update',\n serializer: RegistryPacket,\n },\n);\nconst REGISTRY_LISTEN_PACKET = PacketType.createJson<Identifier>(REGISTRY_EXTENSION_TYPE, {\n name: 'listen',\n serializer: Identifier,\n});\nconst REGISTRY_GET_ENDPOINT = EndpointType.createSerialized<Identifier, RegistryPacket>(\n REGISTRY_EXTENSION_TYPE,\n {\n name: 'get',\n requestSerializer: Serializer.of(Identifier).toJson(),\n responseSerializer: RegistryPacket,\n permissionId: REGISTRY_PERMISSION_ID,\n },\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["EventEmitter", "Identifier", "IdentifierMap", "Lock", "PacketType", "Serializer", "EndpointType", "ExtensionType", "RegisterPacket", "RegistryPacket", "RegistryType", "RegistryExtension", "omu", "REGISTRY_REGISTER_PACKET", "REGISTRY_UPDATE_PACKET", "REGISTRY_LISTEN_PACKET", "REGISTRY_EXTENSION_TYPE", "registryType", "RegistryImpl", "identifier", "registry", "name", "options", "tableType", "type", "packet", "#get", "result", "REGISTRY_GET_ENDPOINT", "#set", "value", "fn", "newValue", "handler", "data", "isReady", "context", "handle", "listeners", "emit", "unsubscribe", "proxied", "proxy", "listener", "PROXIED_SYMBOL", "run", "resolve", "deepEqual", "objA", "objB", "keysA", "keysB", "key", "changed", "target", "prop", "p", "REGISTRY_PERMISSION_ID"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/registry/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { REGISTRY_PERMISSION_ID } from './extension.js';\nexport { RegistryType, type Registry, type RegistryPermissions } from './registry.js';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,0BAAAA,MAA8B,iBACvC,OAAS,gBAAAC,MAA6D",
|
|
6
|
+
"names": ["REGISTRY_PERMISSION_ID", "RegistryType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Identifier } from '../../identifier';
|
|
2
|
+
import { RegistryPermissions, RegistryPermissionsJSON } from './registry';
|
|
3
|
+
export declare class RegistryPacket {
|
|
4
|
+
readonly id: Identifier;
|
|
5
|
+
readonly value: Uint8Array | null;
|
|
6
|
+
constructor(id: Identifier, value: Uint8Array | null);
|
|
7
|
+
static serialize(packet: RegistryPacket): Uint8Array;
|
|
8
|
+
static deserialize(data: Uint8Array): RegistryPacket;
|
|
9
|
+
}
|
|
10
|
+
export interface RegisterPacketJSON {
|
|
11
|
+
id: string;
|
|
12
|
+
permissions: RegistryPermissionsJSON;
|
|
13
|
+
}
|
|
14
|
+
export declare class RegisterPacket {
|
|
15
|
+
readonly id: Identifier;
|
|
16
|
+
readonly permissions: RegistryPermissions;
|
|
17
|
+
constructor(id: Identifier, permissions: RegistryPermissions);
|
|
18
|
+
static serialize(packet: RegisterPacket): RegisterPacketJSON;
|
|
19
|
+
static deserialize(data: RegisterPacketJSON): RegisterPacket;
|
|
20
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as i}from"../../identifier";import{ByteReader as o,ByteWriter as l}from"../../serialize";class t{constructor(r,e){this.id=r;this.value=e}static serialize(r){const e=new l;return e.writeString(r.id.key()),e.writeBoolean(r.value!==null),r.value!==null&&e.writeUint8Array(r.value),e.finish()}static deserialize(r){const e=o.fromUint8Array(r),n=i.fromKey(e.readString()),a=e.readBoolean()?e.readUint8Array():null;return new t(n,a)}}class s{constructor(r,e){this.id=r;this.permissions=e}static serialize(r){const{permissions:e}=r;return{id:r.id.key(),permissions:{all:e.all?i.from(e.all).key():void 0,read:e.read?i.from(e.read).key():void 0,write:e.write?i.from(e.write).key():void 0}}}static deserialize(r){const{permissions:e}=r;return new s(i.from(r.id),{all:e.all?i.from(e.all):void 0,read:e.read?i.from(e.read):void 0,write:e.write?i.from(e.write):void 0})}}export{s as RegisterPacket,t as RegistryPacket};
|
|
2
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/registry/packets.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier } from '../../identifier';\nimport { ByteReader, ByteWriter } from '../../serialize';\nimport { RegistryPermissions, RegistryPermissionsJSON } from './registry';\n\nexport class RegistryPacket {\n constructor(\n public readonly id: Identifier,\n public readonly value: Uint8Array | null,\n ) { }\n\n public static serialize(packet: RegistryPacket): Uint8Array {\n const writer = new ByteWriter();\n writer.writeString(packet.id.key());\n writer.writeBoolean(packet.value !== null);\n if (packet.value !== null) {\n writer.writeUint8Array(packet.value);\n }\n return writer.finish();\n }\n\n public static deserialize(data: Uint8Array): RegistryPacket {\n const reader = ByteReader.fromUint8Array(data);\n const id = Identifier.fromKey(reader.readString());\n const existing = reader.readBoolean();\n const value = existing ? reader.readUint8Array() : null;\n return new RegistryPacket(id, value);\n }\n}\n\nexport interface RegisterPacketJSON {\n id: string;\n permissions: RegistryPermissionsJSON;\n}\n\nexport class RegisterPacket {\n constructor(\n public readonly id: Identifier,\n public readonly permissions: RegistryPermissions,\n ) {}\n\n public static serialize(packet: RegisterPacket): RegisterPacketJSON {\n const { permissions: perms } = packet;\n return {\n id: packet.id.key(),\n permissions: {\n all: perms.all ? Identifier.from(perms.all).key() : undefined,\n read: perms.read ? Identifier.from(perms.read).key() : undefined,\n write: perms.write ? Identifier.from(perms.write).key() : undefined,\n },\n };\n }\n\n public static deserialize(data: RegisterPacketJSON): RegisterPacket {\n const { permissions: perms } = data;\n return new RegisterPacket(\n Identifier.from(data.id),\n {\n all: perms.all ? Identifier.from(perms.all) : undefined,\n read: perms.read ? Identifier.from(perms.read) : undefined,\n write: perms.write ? Identifier.from(perms.write) : undefined,\n },\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAAkB,mBAC3B,OAAS,cAAAC,EAAY,cAAAC,MAAkB,kBAGhC,MAAMC,CAAe,CACxB,YACoBC,EACAC,EAClB,CAFkB,QAAAD,EACA,WAAAC,CAChB,CAEJ,OAAc,UAAUC,EAAoC,CACxD,MAAMC,EAAS,IAAIL,EACnB,OAAAK,EAAO,YAAYD,EAAO,GAAG,IAAI,CAAC,EAClCC,EAAO,aAAaD,EAAO,QAAU,IAAI,EACrCA,EAAO,QAAU,MACjBC,EAAO,gBAAgBD,EAAO,KAAK,EAEhCC,EAAO,OAAO,CACzB,CAEA,OAAc,YAAYC,EAAkC,CACxD,MAAMC,EAASR,EAAW,eAAeO,CAAI,EACvCJ,EAAKJ,EAAW,QAAQS,EAAO,WAAW,CAAC,EAE3CJ,EADWI,EAAO,YAAY,EACXA,EAAO,eAAe,EAAI,KACnD,OAAO,IAAIN,EAAeC,EAAIC,CAAK,CACvC,CACJ,CAOO,MAAMK,CAAe,CACxB,YACoBN,EACAO,EAClB,CAFkB,QAAAP,EACA,iBAAAO,CACjB,CAEH,OAAc,UAAUL,EAA4C,CAChE,KAAM,CAAE,YAAaM,CAAM,EAAIN,EAC/B,MAAO,CACH,GAAIA,EAAO,GAAG,IAAI,EAClB,YAAa,CACT,IAAKM,EAAM,IAAMZ,EAAW,KAAKY,EAAM,GAAG,EAAE,IAAI,EAAI,OACpD,KAAMA,EAAM,KAAOZ,EAAW,KAAKY,EAAM,IAAI,EAAE,IAAI,EAAI,OACvD,MAAOA,EAAM,MAAQZ,EAAW,KAAKY,EAAM,KAAK,EAAE,IAAI,EAAI,MAC9D,CACJ,CACJ,CAEA,OAAc,YAAYJ,EAA0C,CAChE,KAAM,CAAE,YAAaI,CAAM,EAAIJ,EAC/B,OAAO,IAAIE,EACPV,EAAW,KAAKQ,EAAK,EAAE,EACvB,CACI,IAAKI,EAAM,IAAMZ,EAAW,KAAKY,EAAM,GAAG,EAAI,OAC9C,KAAMA,EAAM,KAAOZ,EAAW,KAAKY,EAAM,IAAI,EAAI,OACjD,MAAOA,EAAM,MAAQZ,EAAW,KAAKY,EAAM,KAAK,EAAI,MACxD,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["Identifier", "ByteReader", "ByteWriter", "RegistryPacket", "id", "value", "packet", "writer", "data", "reader", "RegisterPacket", "permissions", "perms"]
|
|
7
|
+
}
|
|
@@ -1,67 +1,35 @@
|
|
|
1
1
|
import type { Unlisten } from '../../event';
|
|
2
2
|
import { Identifier, IntoId } from '../../identifier';
|
|
3
3
|
import type { JsonType, Serializable } from '../../serialize';
|
|
4
|
-
import { Serializer } from '../../serialize';
|
|
5
|
-
|
|
6
4
|
export interface RegistryPermissionsJSON {
|
|
7
5
|
all?: string;
|
|
8
6
|
read?: string;
|
|
9
7
|
write?: string;
|
|
10
8
|
}
|
|
11
|
-
|
|
12
9
|
export interface RegistryPermissions {
|
|
13
10
|
all?: IntoId;
|
|
14
11
|
read?: IntoId;
|
|
15
12
|
write?: IntoId;
|
|
16
13
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
) { }
|
|
25
|
-
|
|
26
|
-
public static createJson<T, D extends JsonType = JsonType>(identifier: IntoId, {
|
|
27
|
-
name,
|
|
28
|
-
defaultValue,
|
|
29
|
-
permissions,
|
|
30
|
-
serializer,
|
|
31
|
-
}: {
|
|
14
|
+
export declare class RegistryType<T> {
|
|
15
|
+
readonly id: Identifier;
|
|
16
|
+
readonly defaultValue: T;
|
|
17
|
+
readonly serializer: Serializable<T, Uint8Array>;
|
|
18
|
+
readonly permissions: RegistryPermissions;
|
|
19
|
+
constructor(id: Identifier, defaultValue: T, serializer: Serializable<T, Uint8Array>, permissions: RegistryPermissions);
|
|
20
|
+
static createJson<T, D extends JsonType = JsonType>(identifier: IntoId, { name, defaultValue, permissions, serializer }: {
|
|
32
21
|
name: string;
|
|
33
22
|
defaultValue: T;
|
|
34
23
|
permissions?: RegistryPermissions;
|
|
35
24
|
serializer?: Serializable<T, D>;
|
|
36
|
-
}): RegistryType<T
|
|
37
|
-
|
|
38
|
-
Identifier.from(identifier).join(name),
|
|
39
|
-
defaultValue,
|
|
40
|
-
Serializer.pipe<T, D, Uint8Array>(serializer ?? Serializer.noop(), Serializer.json()),
|
|
41
|
-
permissions ?? {},
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public static createSerialized<T>(identifier: IntoId, {
|
|
46
|
-
name,
|
|
47
|
-
defaultValue,
|
|
48
|
-
serializer,
|
|
49
|
-
permissions,
|
|
50
|
-
}: {
|
|
25
|
+
}): RegistryType<T>;
|
|
26
|
+
static createSerialized<T>(identifier: IntoId, { name, defaultValue, serializer, permissions }: {
|
|
51
27
|
name: string;
|
|
52
28
|
defaultValue: T;
|
|
53
29
|
serializer: Serializable<T, Uint8Array>;
|
|
54
30
|
permissions?: RegistryPermissions;
|
|
55
|
-
}): RegistryType<T
|
|
56
|
-
return new RegistryType(
|
|
57
|
-
Identifier.from(identifier).join(name),
|
|
58
|
-
defaultValue,
|
|
59
|
-
serializer,
|
|
60
|
-
permissions ?? {},
|
|
61
|
-
);
|
|
62
|
-
}
|
|
31
|
+
}): RegistryType<T>;
|
|
63
32
|
}
|
|
64
|
-
|
|
65
33
|
export interface Registry<T> {
|
|
66
34
|
readonly type: RegistryType<T>;
|
|
67
35
|
readonly value: T;
|
|
@@ -70,25 +38,15 @@ export interface Registry<T> {
|
|
|
70
38
|
update(fn: (value: T) => PromiseLike<T> | T): Promise<T>;
|
|
71
39
|
modify(fn: (value: T) => PromiseLike<void> | void): Promise<T>;
|
|
72
40
|
listen(fn: (value: T) => void): Unlisten;
|
|
73
|
-
|
|
74
41
|
compatSvelte(): Writable<T>;
|
|
75
42
|
}
|
|
76
|
-
|
|
77
43
|
export type Subscriber<T> = (value: T) => void;
|
|
78
|
-
|
|
79
44
|
export type Unsubscriber = () => void;
|
|
80
|
-
|
|
81
45
|
export type Updater<T> = (value: T) => T;
|
|
82
|
-
|
|
83
|
-
export type StartStopNotifier<T> = (
|
|
84
|
-
set: (value: T) => void,
|
|
85
|
-
update: (fn: Updater<T>) => void
|
|
86
|
-
) => void | (() => void);
|
|
87
|
-
|
|
46
|
+
export type StartStopNotifier<T> = (set: (value: T) => void, update: (fn: Updater<T>) => void) => void | (() => void);
|
|
88
47
|
export interface Readable<T> {
|
|
89
48
|
subscribe(this: void, run: Subscriber<T>): Unsubscriber;
|
|
90
49
|
}
|
|
91
|
-
|
|
92
50
|
export interface Writable<T> extends Readable<T> {
|
|
93
51
|
set(this: void, value: T): void;
|
|
94
52
|
update(this: void, updater: Updater<T>): void;
|