@omujs/omu 0.9.10 → 0.9.27
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/CHANGELOG.md +154 -0
- package/README.md +0 -1
- package/dist/dts/address.d.ts +4 -4
- package/dist/dts/api/asset/extension.d.ts +25 -0
- package/dist/dts/api/asset/index.d.ts +2 -0
- package/dist/dts/api/dashboard/extension.d.ts +186 -0
- package/dist/dts/api/dashboard/handler.d.ts +21 -0
- package/dist/dts/api/dashboard/index.d.ts +3 -0
- package/dist/dts/api/dashboard/packets.d.ts +73 -0
- package/dist/dts/api/endpoint/endpoint.d.ts +32 -0
- package/dist/dts/api/endpoint/extension.d.ts +23 -0
- package/dist/dts/api/endpoint/index.d.ts +2 -0
- package/dist/dts/api/endpoint/packets.d.ts +51 -0
- package/dist/dts/api/extension-registry.d.ts +8 -0
- package/dist/dts/api/extension.d.ts +11 -0
- package/dist/dts/api/http/extension.d.ts +174 -0
- package/dist/dts/api/http/index.d.ts +1 -0
- package/dist/dts/api/i18n/extension.d.ts +22 -0
- package/dist/dts/api/i18n/index.d.ts +1 -0
- package/dist/dts/api/index.d.ts +2 -0
- package/dist/dts/api/logger/extension.d.ts +25 -0
- package/dist/dts/api/logger/index.d.ts +1 -0
- package/dist/dts/api/logger/packets.d.ts +18 -0
- package/dist/dts/api/permission/extension.d.ts +18 -0
- package/dist/dts/api/permission/index.d.ts +1 -0
- package/dist/dts/api/permission/permission.d.ts +25 -0
- package/dist/dts/api/plugin/extension.d.ts +43 -0
- package/dist/dts/api/plugin/index.d.ts +2 -0
- package/dist/dts/api/plugin/package-info.d.ts +84 -0
- package/dist/dts/api/registry/extension.d.ts +26 -0
- package/dist/dts/api/registry/index.d.ts +2 -0
- package/dist/dts/api/registry/packets.d.ts +20 -0
- package/dist/dts/api/registry/registry.d.ts +44 -0
- package/dist/dts/api/server/extension.d.ts +47 -0
- package/dist/dts/api/server/index.d.ts +1 -0
- package/dist/dts/api/session/extension.d.ts +51 -0
- package/dist/dts/api/session/index.d.ts +1 -0
- package/dist/dts/api/signal/extension.d.ts +22 -0
- package/dist/dts/api/signal/index.d.ts +1 -0
- package/dist/dts/api/signal/packets.d.ts +21 -0
- package/dist/dts/api/signal/signal.d.ts +33 -0
- package/dist/dts/api/table/extension.d.ts +29 -0
- package/dist/dts/api/table/index.d.ts +2 -0
- package/dist/dts/api/table/packets.d.ts +65 -0
- package/dist/dts/api/table/table.d.ts +76 -0
- package/dist/dts/app.d.ts +44 -37
- package/dist/dts/const.d.ts +0 -1
- package/dist/dts/errors.d.ts +18 -13
- package/dist/dts/event/index.d.ts +6 -0
- package/dist/dts/helper.d.ts +13 -0
- package/dist/dts/identifier.d.ts +45 -39
- package/dist/dts/index.d.ts +37 -7
- package/dist/dts/localization/index.d.ts +2 -3
- package/dist/dts/localization/locale.d.ts +732 -733
- package/dist/dts/localization/localization.d.ts +3 -6
- package/dist/dts/lock.d.ts +6 -0
- package/dist/dts/network/connection.d.ts +13 -13
- package/dist/dts/network/encryption.d.ts +38 -0
- package/dist/dts/network/frame-transport.d.ts +22 -0
- package/dist/dts/network/index.d.ts +5 -4
- package/dist/dts/network/network.d.ts +52 -51
- package/dist/dts/network/packet/index.d.ts +2 -3
- package/dist/dts/network/packet/packet-types.d.ts +73 -52
- package/dist/dts/network/packet/packet.d.ts +26 -22
- package/dist/dts/network/websocket-transport.d.ts +24 -0
- package/dist/dts/omu.d.ts +60 -49
- package/dist/dts/serialize/bytebuffer.d.ts +71 -0
- package/dist/dts/serialize/index.d.ts +2 -0
- package/dist/dts/serialize/serializer.d.ts +38 -0
- package/dist/dts/token.d.ts +11 -10
- package/dist/dts/version.d.ts +1 -2
- package/dist/esm/address.js +4 -2
- package/dist/esm/api/asset/extension.js +877 -0
- package/dist/esm/api/asset/index.js +875 -0
- package/dist/esm/api/dashboard/extension.js +1281 -0
- package/dist/esm/api/dashboard/handler.js +4 -0
- package/dist/esm/api/dashboard/index.js +1279 -0
- package/dist/esm/api/dashboard/packets.js +413 -0
- package/dist/esm/api/endpoint/endpoint.js +380 -0
- package/dist/esm/api/endpoint/extension.js +1087 -0
- package/dist/esm/api/endpoint/index.js +380 -0
- package/dist/esm/api/endpoint/packets.js +790 -0
- package/dist/esm/api/extension-registry.js +23 -0
- package/dist/esm/api/extension.js +275 -0
- package/dist/esm/api/http/extension.js +1426 -0
- package/dist/esm/api/http/index.js +1312 -0
- package/dist/esm/api/i18n/extension.js +1237 -0
- package/dist/esm/api/i18n/index.js +1235 -0
- package/dist/esm/api/index.js +292 -0
- package/dist/esm/api/logger/extension.js +847 -0
- package/dist/esm/api/logger/index.js +843 -0
- package/dist/esm/api/logger/packets.js +664 -0
- package/dist/esm/api/permission/extension.js +529 -0
- package/dist/esm/api/permission/index.js +291 -0
- package/dist/esm/api/permission/permission.js +291 -0
- package/dist/esm/api/plugin/extension.js +528 -0
- package/dist/esm/api/plugin/index.js +526 -0
- package/dist/esm/api/plugin/package-info.js +4 -0
- package/dist/esm/api/registry/extension.js +1170 -0
- package/dist/esm/api/registry/index.js +1169 -0
- package/dist/esm/api/registry/packets.js +685 -0
- package/dist/esm/api/registry/registry.js +380 -0
- package/dist/esm/api/server/extension.js +2009 -0
- package/dist/esm/api/server/index.js +1987 -0
- package/dist/esm/api/session/extension.js +2111 -0
- package/dist/esm/api/session/index.js +2111 -0
- package/dist/esm/api/signal/extension.js +1022 -0
- package/dist/esm/api/signal/index.js +376 -0
- package/dist/esm/api/signal/packets.js +681 -0
- package/dist/esm/api/signal/signal.js +376 -0
- package/dist/esm/api/table/extension.js +1544 -0
- package/dist/esm/api/table/index.js +1543 -0
- package/dist/esm/api/table/packets.js +895 -0
- package/dist/esm/api/table/table.js +380 -0
- package/dist/esm/app.js +259 -40
- package/dist/esm/const.js +11 -3
- package/dist/esm/errors.js +533 -40
- package/dist/esm/event/index.js +22 -0
- package/dist/esm/helper.js +15 -0
- package/dist/esm/identifier.js +244 -139
- package/dist/esm/index.js +4837 -6
- package/dist/esm/localization/index.js +742 -2
- package/dist/esm/localization/locale.js +741 -735
- package/dist/esm/localization/localization.js +4 -2
- package/dist/esm/lock.js +46 -0
- package/dist/esm/network/connection.js +288 -27
- package/dist/esm/network/encryption.js +977 -0
- package/dist/esm/network/frame-transport.js +525 -0
- package/dist/esm/network/index.js +1614 -2
- package/dist/esm/network/network.js +1337 -195
- package/dist/esm/network/packet/index.js +482 -2
- package/dist/esm/network/packet/packet-types.js +478 -80
- package/dist/esm/network/packet/packet.js +125 -16
- package/dist/esm/network/websocket-transport.js +487 -0
- package/dist/esm/omu.js +4621 -91
- package/dist/esm/serialize/bytebuffer.js +378 -0
- package/dist/esm/serialize/index.js +465 -0
- package/dist/esm/serialize/serializer.js +97 -0
- package/dist/esm/token.js +42 -18
- package/dist/esm/version.js +9 -2
- package/package.json +26 -33
- package/src/address.ts +1 -0
- package/src/api/asset/extension.ts +159 -0
- package/src/api/asset/index.ts +6 -0
- package/src/api/dashboard/extension.ts +614 -0
- package/src/api/dashboard/handler.ts +23 -0
- package/src/api/dashboard/index.ts +36 -0
- package/src/api/dashboard/packets.ts +126 -0
- package/src/api/endpoint/endpoint.ts +56 -0
- package/src/api/endpoint/extension.ts +133 -0
- package/src/api/endpoint/index.ts +3 -0
- package/src/api/endpoint/packets.ts +176 -0
- package/src/api/extension-registry.ts +17 -0
- package/src/{extension → api}/extension.ts +3 -4
- package/src/api/http/extension.ts +752 -0
- package/src/api/http/index.ts +2 -0
- package/src/{extension/i18n/i18n-extension.ts → api/i18n/extension.ts} +9 -10
- package/src/api/i18n/index.ts +2 -0
- package/src/{extension/logger/logger-extension.ts → api/logger/extension.ts} +16 -17
- package/src/api/logger/index.ts +4 -0
- package/src/{extension → api}/logger/packets.ts +3 -3
- package/src/{extension/permission/permission-extension.ts → api/permission/extension.ts} +24 -23
- package/src/api/permission/index.ts +2 -0
- package/src/{extension → api}/permission/permission.ts +8 -11
- package/src/{extension/plugin/plugin-extension.ts → api/plugin/extension.ts} +32 -19
- package/src/api/plugin/index.ts +3 -0
- package/src/{extension/registry/registry-extension.ts → api/registry/extension.ts} +76 -47
- package/src/api/registry/index.ts +3 -0
- package/src/api/registry/packets.ts +64 -0
- package/src/api/registry/registry.ts +73 -0
- package/src/api/server/extension.ts +126 -0
- package/src/api/server/index.ts +11 -0
- package/src/api/session/extension.ts +196 -0
- package/src/api/session/index.ts +7 -0
- package/src/{extension/signal/signal-extension.ts → api/signal/extension.ts} +42 -35
- package/src/api/signal/index.ts +1 -0
- package/src/api/signal/packets.ts +61 -0
- package/src/api/signal/signal.ts +67 -0
- package/src/{extension/table/table-extension.ts → api/table/extension.ts} +111 -154
- package/src/api/table/index.ts +3 -0
- package/src/{extension → api}/table/packets.ts +28 -27
- package/src/{extension → api}/table/table.ts +24 -18
- package/src/app.ts +43 -25
- package/src/const.ts +2 -2
- package/src/errors.ts +12 -0
- package/src/helper.ts +16 -0
- package/src/identifier.ts +59 -4
- package/src/index.ts +86 -5
- package/src/localization/index.ts +2 -2
- package/src/lock.ts +43 -0
- package/src/network/connection.ts +7 -5
- package/src/network/encryption.ts +221 -0
- package/src/network/frame-transport.ts +186 -0
- package/src/network/index.ts +4 -1
- package/src/network/network.ts +138 -90
- package/src/network/packet/index.ts +3 -2
- package/src/network/packet/packet-types.ts +79 -36
- package/src/network/packet/packet.ts +20 -11
- package/src/network/websocket-transport.ts +123 -0
- package/src/omu.ts +56 -30
- package/src/serialize/bytebuffer.ts +424 -0
- package/src/serialize/index.ts +2 -0
- package/src/serialize/serializer.ts +149 -0
- package/src/token.ts +28 -14
- package/src/version.ts +1 -1
- package/tsconfig.json +8 -2
- package/tsconfig.tsbuildinfo +1 -0
- package/LICENSE +0 -21
- package/dist/dts/address.d.ts.map +0 -1
- package/dist/dts/app.d.ts.map +0 -1
- package/dist/dts/bytebuffer.d.ts +0 -49
- package/dist/dts/bytebuffer.d.ts.map +0 -1
- package/dist/dts/client.d.ts +0 -48
- package/dist/dts/client.d.ts.map +0 -1
- package/dist/dts/const.d.ts.map +0 -1
- package/dist/dts/errors.d.ts.map +0 -1
- package/dist/dts/event-emitter.d.ts +0 -7
- package/dist/dts/event-emitter.d.ts.map +0 -1
- package/dist/dts/extension/asset/asset-extension.d.ts +0 -24
- package/dist/dts/extension/asset/asset-extension.d.ts.map +0 -1
- package/dist/dts/extension/asset/index.d.ts +0 -2
- package/dist/dts/extension/asset/index.d.ts.map +0 -1
- package/dist/dts/extension/dashboard/dashboard-extension.d.ts +0 -29
- package/dist/dts/extension/dashboard/dashboard-extension.d.ts.map +0 -1
- package/dist/dts/extension/dashboard/dashboard.d.ts +0 -10
- package/dist/dts/extension/dashboard/dashboard.d.ts.map +0 -1
- package/dist/dts/extension/dashboard/index.d.ts +0 -3
- package/dist/dts/extension/dashboard/index.d.ts.map +0 -1
- package/dist/dts/extension/dashboard/packets.d.ts +0 -41
- package/dist/dts/extension/dashboard/packets.d.ts.map +0 -1
- package/dist/dts/extension/endpoint/endpoint-extension.d.ts +0 -16
- package/dist/dts/extension/endpoint/endpoint-extension.d.ts.map +0 -1
- package/dist/dts/extension/endpoint/endpoint.d.ts +0 -22
- package/dist/dts/extension/endpoint/endpoint.d.ts.map +0 -1
- package/dist/dts/extension/endpoint/index.d.ts +0 -3
- package/dist/dts/extension/endpoint/index.d.ts.map +0 -1
- package/dist/dts/extension/endpoint/packets.d.ts +0 -24
- package/dist/dts/extension/endpoint/packets.d.ts.map +0 -1
- package/dist/dts/extension/extension-registry.d.ts +0 -12
- package/dist/dts/extension/extension-registry.d.ts.map +0 -1
- package/dist/dts/extension/extension.d.ts +0 -13
- package/dist/dts/extension/extension.d.ts.map +0 -1
- package/dist/dts/extension/i18n/i18n-extension.d.ts +0 -21
- package/dist/dts/extension/i18n/i18n-extension.d.ts.map +0 -1
- package/dist/dts/extension/i18n/index.d.ts +0 -2
- package/dist/dts/extension/i18n/index.d.ts.map +0 -1
- package/dist/dts/extension/index.d.ts +0 -3
- package/dist/dts/extension/index.d.ts.map +0 -1
- package/dist/dts/extension/logger/index.d.ts +0 -2
- package/dist/dts/extension/logger/index.d.ts.map +0 -1
- package/dist/dts/extension/logger/logger-extension.d.ts +0 -25
- package/dist/dts/extension/logger/logger-extension.d.ts.map +0 -1
- package/dist/dts/extension/logger/packets.d.ts +0 -19
- package/dist/dts/extension/logger/packets.d.ts.map +0 -1
- package/dist/dts/extension/permission/index.d.ts +0 -3
- package/dist/dts/extension/permission/index.d.ts.map +0 -1
- package/dist/dts/extension/permission/permission-extension.d.ts +0 -18
- package/dist/dts/extension/permission/permission-extension.d.ts.map +0 -1
- package/dist/dts/extension/permission/permission.d.ts +0 -28
- package/dist/dts/extension/permission/permission.d.ts.map +0 -1
- package/dist/dts/extension/plugin/index.d.ts +0 -2
- package/dist/dts/extension/plugin/index.d.ts.map +0 -1
- package/dist/dts/extension/plugin/package-info.d.ts +0 -85
- package/dist/dts/extension/plugin/package-info.d.ts.map +0 -1
- package/dist/dts/extension/plugin/plugin-extension.d.ts +0 -34
- package/dist/dts/extension/plugin/plugin-extension.d.ts.map +0 -1
- package/dist/dts/extension/registry/index.d.ts +0 -3
- package/dist/dts/extension/registry/index.d.ts.map +0 -1
- package/dist/dts/extension/registry/packets.d.ts +0 -17
- package/dist/dts/extension/registry/packets.d.ts.map +0 -1
- package/dist/dts/extension/registry/registry-extension.d.ts +0 -19
- package/dist/dts/extension/registry/registry-extension.d.ts.map +0 -1
- package/dist/dts/extension/registry/registry.d.ts +0 -40
- package/dist/dts/extension/registry/registry.d.ts.map +0 -1
- package/dist/dts/extension/server/index.d.ts +0 -2
- package/dist/dts/extension/server/index.d.ts.map +0 -1
- package/dist/dts/extension/server/server-extension.d.ts +0 -41
- package/dist/dts/extension/server/server-extension.d.ts.map +0 -1
- package/dist/dts/extension/signal/index.d.ts +0 -3
- package/dist/dts/extension/signal/index.d.ts.map +0 -1
- package/dist/dts/extension/signal/packets.d.ts +0 -17
- package/dist/dts/extension/signal/packets.d.ts.map +0 -1
- package/dist/dts/extension/signal/signal-extension.d.ts +0 -18
- package/dist/dts/extension/signal/signal-extension.d.ts.map +0 -1
- package/dist/dts/extension/signal/signal.d.ts +0 -33
- package/dist/dts/extension/signal/signal.d.ts.map +0 -1
- package/dist/dts/extension/table/index.d.ts +0 -3
- package/dist/dts/extension/table/index.d.ts.map +0 -1
- package/dist/dts/extension/table/packets.d.ts +0 -66
- package/dist/dts/extension/table/packets.d.ts.map +0 -1
- package/dist/dts/extension/table/table-extension.d.ts +0 -31
- package/dist/dts/extension/table/table-extension.d.ts.map +0 -1
- package/dist/dts/extension/table/table.d.ts +0 -79
- package/dist/dts/extension/table/table.d.ts.map +0 -1
- package/dist/dts/identifier.d.ts.map +0 -1
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/interface.d.ts +0 -7
- package/dist/dts/interface.d.ts.map +0 -1
- package/dist/dts/localization/index.d.ts.map +0 -1
- package/dist/dts/localization/locale.d.ts.map +0 -1
- package/dist/dts/localization/localization.d.ts.map +0 -1
- package/dist/dts/model.d.ts +0 -5
- package/dist/dts/model.d.ts.map +0 -1
- package/dist/dts/network/connection.d.ts.map +0 -1
- package/dist/dts/network/index.d.ts.map +0 -1
- package/dist/dts/network/network.d.ts.map +0 -1
- package/dist/dts/network/packet/index.d.ts.map +0 -1
- package/dist/dts/network/packet/packet-types.d.ts.map +0 -1
- package/dist/dts/network/packet/packet.d.ts.map +0 -1
- package/dist/dts/network/websocket-connection.d.ts +0 -20
- package/dist/dts/network/websocket-connection.d.ts.map +0 -1
- package/dist/dts/omu.d.ts.map +0 -1
- package/dist/dts/serializer.d.ts +0 -22
- package/dist/dts/serializer.d.ts.map +0 -1
- package/dist/dts/token.d.ts.map +0 -1
- package/dist/dts/version.d.ts.map +0 -1
- package/dist/esm/address.js.map +0 -1
- package/dist/esm/app.js.map +0 -1
- package/dist/esm/bytebuffer.js +0 -191
- package/dist/esm/bytebuffer.js.map +0 -1
- package/dist/esm/client.js +0 -2
- package/dist/esm/client.js.map +0 -1
- package/dist/esm/const.js.map +0 -1
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/event-emitter.js +0 -15
- package/dist/esm/event-emitter.js.map +0 -1
- package/dist/esm/extension/asset/asset-extension.js +0 -104
- package/dist/esm/extension/asset/asset-extension.js.map +0 -1
- package/dist/esm/extension/asset/index.js +0 -2
- package/dist/esm/extension/asset/index.js.map +0 -1
- package/dist/esm/extension/dashboard/dashboard-extension.js +0 -186
- package/dist/esm/extension/dashboard/dashboard-extension.js.map +0 -1
- package/dist/esm/extension/dashboard/dashboard.js +0 -2
- package/dist/esm/extension/dashboard/dashboard.js.map +0 -1
- package/dist/esm/extension/dashboard/index.js +0 -2
- package/dist/esm/extension/dashboard/index.js.map +0 -1
- package/dist/esm/extension/dashboard/packets.js +0 -96
- package/dist/esm/extension/dashboard/packets.js.map +0 -1
- package/dist/esm/extension/endpoint/endpoint-extension.js +0 -86
- package/dist/esm/extension/endpoint/endpoint-extension.js.map +0 -1
- package/dist/esm/extension/endpoint/endpoint.js +0 -22
- package/dist/esm/extension/endpoint/endpoint.js.map +0 -1
- package/dist/esm/extension/endpoint/index.js +0 -2
- package/dist/esm/extension/endpoint/index.js.map +0 -1
- package/dist/esm/extension/endpoint/packets.js +0 -77
- package/dist/esm/extension/endpoint/packets.js.map +0 -1
- package/dist/esm/extension/extension-registry.js +0 -34
- package/dist/esm/extension/extension-registry.js.map +0 -1
- package/dist/esm/extension/extension.js +0 -16
- package/dist/esm/extension/extension.js.map +0 -1
- package/dist/esm/extension/i18n/i18n-extension.js +0 -68
- package/dist/esm/extension/i18n/i18n-extension.js.map +0 -1
- package/dist/esm/extension/i18n/index.js +0 -2
- package/dist/esm/extension/i18n/index.js.map +0 -1
- package/dist/esm/extension/index.js +0 -3
- package/dist/esm/extension/index.js.map +0 -1
- package/dist/esm/extension/logger/index.js +0 -2
- package/dist/esm/extension/logger/index.js.map +0 -1
- package/dist/esm/extension/logger/logger-extension.js +0 -60
- package/dist/esm/extension/logger/logger-extension.js.map +0 -1
- package/dist/esm/extension/logger/packets.js +0 -33
- package/dist/esm/extension/logger/packets.js.map +0 -1
- package/dist/esm/extension/permission/index.js +0 -3
- package/dist/esm/extension/permission/index.js.map +0 -1
- package/dist/esm/extension/permission/permission-extension.js +0 -74
- package/dist/esm/extension/permission/permission-extension.js.map +0 -1
- package/dist/esm/extension/permission/permission.js +0 -28
- package/dist/esm/extension/permission/permission.js.map +0 -1
- package/dist/esm/extension/plugin/index.js +0 -2
- package/dist/esm/extension/plugin/index.js.map +0 -1
- package/dist/esm/extension/plugin/package-info.js +0 -2
- package/dist/esm/extension/plugin/package-info.js.map +0 -1
- package/dist/esm/extension/plugin/plugin-extension.js +0 -63
- package/dist/esm/extension/plugin/plugin-extension.js.map +0 -1
- package/dist/esm/extension/registry/index.js +0 -3
- package/dist/esm/extension/registry/index.js.map +0 -1
- package/dist/esm/extension/registry/packets.js +0 -48
- package/dist/esm/extension/registry/packets.js.map +0 -1
- package/dist/esm/extension/registry/registry-extension.js +0 -134
- package/dist/esm/extension/registry/registry-extension.js.map +0 -1
- package/dist/esm/extension/registry/registry.js +0 -55
- package/dist/esm/extension/registry/registry.js.map +0 -1
- package/dist/esm/extension/server/index.js +0 -2
- package/dist/esm/extension/server/index.js.map +0 -1
- package/dist/esm/extension/server/server-extension.js +0 -145
- package/dist/esm/extension/server/server-extension.js.map +0 -1
- package/dist/esm/extension/signal/index.js +0 -3
- package/dist/esm/extension/signal/index.js.map +0 -1
- package/dist/esm/extension/signal/packets.js +0 -44
- package/dist/esm/extension/signal/packets.js.map +0 -1
- package/dist/esm/extension/signal/signal-extension.js +0 -95
- package/dist/esm/extension/signal/signal-extension.js.map +0 -1
- package/dist/esm/extension/signal/signal.js +0 -53
- package/dist/esm/extension/signal/signal.js.map +0 -1
- package/dist/esm/extension/table/index.js +0 -3
- package/dist/esm/extension/table/index.js.map +0 -1
- package/dist/esm/extension/table/packets.js +0 -252
- package/dist/esm/extension/table/packets.js.map +0 -1
- package/dist/esm/extension/table/table-extension.js +0 -454
- package/dist/esm/extension/table/table-extension.js.map +0 -1
- package/dist/esm/extension/table/table.js +0 -20
- package/dist/esm/extension/table/table.js.map +0 -1
- package/dist/esm/identifier.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interface.js +0 -2
- package/dist/esm/interface.js.map +0 -1
- package/dist/esm/localization/index.js.map +0 -1
- package/dist/esm/localization/locale.js.map +0 -1
- package/dist/esm/localization/localization.js.map +0 -1
- package/dist/esm/model.js +0 -2
- package/dist/esm/model.js.map +0 -1
- package/dist/esm/network/connection.js.map +0 -1
- package/dist/esm/network/index.js.map +0 -1
- package/dist/esm/network/network.js.map +0 -1
- package/dist/esm/network/packet/index.js.map +0 -1
- package/dist/esm/network/packet/packet-types.js.map +0 -1
- package/dist/esm/network/packet/packet.js.map +0 -1
- package/dist/esm/network/websocket-connection.js +0 -95
- package/dist/esm/network/websocket-connection.js.map +0 -1
- package/dist/esm/omu.js.map +0 -1
- package/dist/esm/serializer.js +0 -55
- package/dist/esm/serializer.js.map +0 -1
- package/dist/esm/token.js.map +0 -1
- package/dist/esm/version.js.map +0 -1
- package/eslint.config.js +0 -6
- package/src/bytebuffer.ts +0 -222
- package/src/client.ts +0 -53
- package/src/extension/asset/asset-extension.ts +0 -148
- package/src/extension/asset/index.ts +0 -6
- package/src/extension/dashboard/dashboard-extension.ts +0 -238
- package/src/extension/dashboard/dashboard.ts +0 -11
- package/src/extension/dashboard/index.ts +0 -9
- package/src/extension/dashboard/packets.ts +0 -98
- package/src/extension/endpoint/endpoint-extension.ts +0 -125
- package/src/extension/endpoint/endpoint.ts +0 -58
- package/src/extension/endpoint/index.ts +0 -3
- package/src/extension/endpoint/packets.ts +0 -78
- package/src/extension/extension-registry.ts +0 -39
- package/src/extension/i18n/index.ts +0 -2
- package/src/extension/logger/index.ts +0 -5
- package/src/extension/permission/index.ts +0 -3
- package/src/extension/plugin/index.ts +0 -4
- package/src/extension/registry/index.ts +0 -3
- package/src/extension/registry/packets.ts +0 -50
- package/src/extension/registry/registry.ts +0 -98
- package/src/extension/server/index.ts +0 -6
- package/src/extension/server/server-extension.ts +0 -180
- package/src/extension/signal/index.ts +0 -3
- package/src/extension/signal/packets.ts +0 -46
- package/src/extension/signal/signal.ts +0 -89
- package/src/extension/table/index.ts +0 -3
- package/src/interface.ts +0 -8
- package/src/model.ts +0 -4
- package/src/network/websocket-connection.ts +0 -109
- package/src/serializer.ts +0 -89
- /package/src/{extension → api}/index.ts +0 -0
- /package/src/{extension → api}/plugin/package-info.ts +0 -0
- /package/src/{event-emitter.ts → event/index.ts} +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { Address } from '../address.js';
|
|
2
|
+
import type { Serializable } from '../serialize';
|
|
3
|
+
import { ByteReader, ByteWriter } from '../serialize';
|
|
4
|
+
|
|
5
|
+
import type { Connection, Transport } from './connection.js';
|
|
6
|
+
import type { Packet, PacketData } from './packet/packet.js';
|
|
7
|
+
|
|
8
|
+
export class WebsocketTransport implements Transport {
|
|
9
|
+
constructor(
|
|
10
|
+
private readonly address: Address,
|
|
11
|
+
) { }
|
|
12
|
+
|
|
13
|
+
private get wsEndpoint(): string {
|
|
14
|
+
const protocol = this.address.secure ? 'wss' : 'ws';
|
|
15
|
+
const { host, port } = this.address;
|
|
16
|
+
return `${protocol}://${host}:${port}/ws`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public connect(): Promise<Connection> {
|
|
20
|
+
const socket = new WebSocket(this.wsEndpoint);
|
|
21
|
+
return WebsocketConnection.fromSocket(socket);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class WebsocketConnection implements Connection {
|
|
26
|
+
private readonly packetQueue: Array<PacketData> = [];
|
|
27
|
+
private receiveWaiter: (() => void) | null = null;
|
|
28
|
+
private readingPromise: Promise<void> | null = null;
|
|
29
|
+
private beingClosed: boolean = false;
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
private socket: WebSocket,
|
|
33
|
+
) { }
|
|
34
|
+
|
|
35
|
+
public static fromSocket(socket: WebSocket): Promise<WebsocketConnection> {
|
|
36
|
+
const connection = new WebsocketConnection(socket);
|
|
37
|
+
return new Promise((resolve, reject) => {
|
|
38
|
+
socket.onerror = reject;
|
|
39
|
+
socket.onclose = () => {
|
|
40
|
+
connection.beingClosed = true;
|
|
41
|
+
if (connection.receiveWaiter) {
|
|
42
|
+
connection.receiveWaiter();
|
|
43
|
+
connection.receiveWaiter = null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
socket.onmessage = (event): void => {
|
|
47
|
+
connection.readingPromise = connection.onMessage(event).finally(() => {
|
|
48
|
+
connection.readingPromise = null;
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
socket.onopen = (): void => {
|
|
52
|
+
resolve(connection);
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private async onMessage(event: MessageEvent<string | Blob>): Promise<void> {
|
|
58
|
+
if (typeof event.data === 'string') {
|
|
59
|
+
throw new Error('Received string data');
|
|
60
|
+
}
|
|
61
|
+
const reader = await ByteReader.fromBlob(event.data);
|
|
62
|
+
const data = {
|
|
63
|
+
type: reader.readString(),
|
|
64
|
+
data: reader.readUint8Array(),
|
|
65
|
+
};
|
|
66
|
+
this.packetQueue.push(data);
|
|
67
|
+
reader.finish();
|
|
68
|
+
if (this.receiveWaiter) {
|
|
69
|
+
this.receiveWaiter();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public async receive(serializer: Serializable<Packet<unknown>, PacketData>): Promise<Packet | null> {
|
|
74
|
+
if (this.receiveWaiter) {
|
|
75
|
+
throw new Error('Already receiving');
|
|
76
|
+
}
|
|
77
|
+
while (this.packetQueue.length === 0 && !this.beingClosed) {
|
|
78
|
+
await new Promise<void>((resolve) => {
|
|
79
|
+
this.receiveWaiter = resolve;
|
|
80
|
+
});
|
|
81
|
+
this.receiveWaiter = null;
|
|
82
|
+
}
|
|
83
|
+
if (this.packetQueue.length === 0 && this.beingClosed) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const packetData = this.packetQueue.shift()!;
|
|
87
|
+
return serializer.deserialize(packetData);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
get closed(): boolean {
|
|
91
|
+
if (this.readingPromise) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
if (this.packetQueue.length > 0) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (this.receiveWaiter) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
if (this.socket.readyState !== WebSocket.CLOSED && this.socket.readyState !== WebSocket.CLOSING) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
close(): void {
|
|
107
|
+
if (this.socket) {
|
|
108
|
+
this.socket.close();
|
|
109
|
+
}
|
|
110
|
+
if (this.receiveWaiter) {
|
|
111
|
+
this.receiveWaiter();
|
|
112
|
+
this.receiveWaiter = null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
send(packet: Packet, serializer: Serializable<Packet<unknown>, PacketData>): void {
|
|
117
|
+
const packetData = serializer.serialize(packet);
|
|
118
|
+
const writer = new ByteWriter();
|
|
119
|
+
writer.writeString(packetData.type);
|
|
120
|
+
writer.writeUint8Array(packetData.data);
|
|
121
|
+
this.socket.send(writer.finish());
|
|
122
|
+
}
|
|
123
|
+
}
|
package/src/omu.ts
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
|
+
import { ExtensionRegistry } from './api';
|
|
2
|
+
import { ASSET_EXTENSION_TYPE, type AssetExtension } from './api/asset/extension';
|
|
3
|
+
import { DASHBOARD_EXTENSION_TYPE, type DashboardExtension } from './api/dashboard/extension';
|
|
4
|
+
import { ENDPOINT_EXTENSION_TYPE, type EndpointExtension } from './api/endpoint/extension';
|
|
5
|
+
import { HTTP_EXTENSION_TYPE, HttpExtension } from './api/http/extension';
|
|
6
|
+
import { I18N_EXTENSION_TYPE, type I18nExtension } from './api/i18n/extension';
|
|
7
|
+
import { LOGGER_EXTENSION_TYPE, type LoggerExtension } from './api/logger/extension.js';
|
|
8
|
+
import { PERMISSION_EXTENSION_TYPE, type PermissionExtension } from './api/permission/extension';
|
|
9
|
+
import { PLUGIN_EXTENSION_TYPE, type PluginExtension } from './api/plugin/extension';
|
|
10
|
+
import { REGISTRY_EXTENSION_TYPE, type RegistryExtension } from './api/registry/extension';
|
|
11
|
+
import { SERVER_EXTENSION_TYPE, type ServerExtension } from './api/server/extension';
|
|
12
|
+
import { SESSION_EXTENSION_TYPE, SessionExtension } from './api/session';
|
|
13
|
+
import { SIGNAL_EXTENSION_TYPE, type SignalExtension } from './api/signal/extension';
|
|
14
|
+
import { TABLE_EXTENSION_TYPE, type TableExtension } from './api/table/extension';
|
|
1
15
|
import type { App } from './app.js';
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ENDPOINT_EXTENSION_TYPE, type EndpointExtension } from './extension/endpoint/index.js';
|
|
8
|
-
import { I18N_EXTENSION_TYPE, type I18nExtension } from './extension/i18n/index.js';
|
|
9
|
-
import { ExtensionRegistry } from './extension/index.js';
|
|
10
|
-
import {
|
|
11
|
-
LOGGER_EXTENSION_TYPE,
|
|
12
|
-
type LoggerExtension,
|
|
13
|
-
} from './extension/logger/logger-extension.js';
|
|
14
|
-
import {
|
|
15
|
-
PERMISSION_EXTENSION_TYPE,
|
|
16
|
-
type PermissionExtension,
|
|
17
|
-
} from './extension/permission/index.js';
|
|
18
|
-
import { PLUGIN_EXTENSION_TYPE, type PluginExtension } from './extension/plugin/index.js';
|
|
19
|
-
import { REGISTRY_EXTENSION_TYPE, type RegistryExtension } from './extension/registry/index.js';
|
|
20
|
-
import { SERVER_EXTENSION_TYPE, type ServerExtension } from './extension/server/index.js';
|
|
21
|
-
import { SIGNAL_EXTENSION_TYPE, type SignalExtension } from './extension/signal/index.js';
|
|
22
|
-
import { TABLE_EXTENSION_TYPE, type TableExtension } from './extension/table/index.js';
|
|
23
|
-
import type { Address, Connection } from './network/index.js';
|
|
24
|
-
import { Network } from './network/index.js';
|
|
16
|
+
import type { Unlisten } from './event';
|
|
17
|
+
import { EventEmitter } from './event';
|
|
18
|
+
import type { Address, Connection } from './network';
|
|
19
|
+
import { Network } from './network';
|
|
20
|
+
import { Transport } from './network/connection.js';
|
|
25
21
|
import { PACKET_TYPES } from './network/packet/packet-types.js';
|
|
26
22
|
import type { PacketType } from './network/packet/packet.js';
|
|
27
|
-
import {
|
|
23
|
+
import { WebsocketTransport } from './network/websocket-transport';
|
|
28
24
|
import { BrowserTokenProvider, type TokenProvider } from './token.js';
|
|
29
25
|
|
|
30
|
-
export
|
|
26
|
+
export type ClientEvents = {
|
|
27
|
+
started: EventEmitter<[]>;
|
|
28
|
+
stopped: EventEmitter<[]>;
|
|
29
|
+
ready: EventEmitter<[]>;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export class Omu {
|
|
31
33
|
public ready: boolean;
|
|
32
34
|
public running: boolean;
|
|
33
35
|
readonly event: ClientEvents = {
|
|
@@ -37,6 +39,7 @@ export class Omu implements Client {
|
|
|
37
39
|
};
|
|
38
40
|
readonly token: TokenProvider;
|
|
39
41
|
readonly address: Address;
|
|
42
|
+
readonly sessions: SessionExtension;
|
|
40
43
|
readonly network: Network;
|
|
41
44
|
readonly endpoints: EndpointExtension;
|
|
42
45
|
readonly permissions: PermissionExtension;
|
|
@@ -50,18 +53,27 @@ export class Omu implements Client {
|
|
|
50
53
|
readonly i18n: I18nExtension;
|
|
51
54
|
readonly server: ServerExtension;
|
|
52
55
|
readonly logger: LoggerExtension;
|
|
56
|
+
readonly http: HttpExtension;
|
|
53
57
|
|
|
54
58
|
constructor(
|
|
55
59
|
public readonly app: App,
|
|
56
60
|
options?: {
|
|
57
61
|
address?: Address;
|
|
58
|
-
token?: TokenProvider;
|
|
62
|
+
token?: TokenProvider | string;
|
|
63
|
+
transport?: Transport;
|
|
59
64
|
connection?: Connection;
|
|
60
65
|
},
|
|
61
66
|
) {
|
|
62
67
|
this.ready = false;
|
|
63
68
|
this.running = false;
|
|
64
|
-
|
|
69
|
+
if (typeof options?.token === 'string') {
|
|
70
|
+
const token = options?.token;
|
|
71
|
+
this.token = {
|
|
72
|
+
get: () => Promise.resolve(token),
|
|
73
|
+
};
|
|
74
|
+
} else {
|
|
75
|
+
this.token = options?.token ?? new BrowserTokenProvider();
|
|
76
|
+
}
|
|
65
77
|
this.address = options?.address ?? {
|
|
66
78
|
host: '127.0.0.1',
|
|
67
79
|
port: 26423,
|
|
@@ -71,7 +83,8 @@ export class Omu implements Client {
|
|
|
71
83
|
this,
|
|
72
84
|
this.address,
|
|
73
85
|
this.token,
|
|
74
|
-
options?.
|
|
86
|
+
options?.transport ?? new WebsocketTransport(this.address),
|
|
87
|
+
options?.connection,
|
|
75
88
|
);
|
|
76
89
|
this.network.event.disconnected.listen(() => {
|
|
77
90
|
this.ready = false;
|
|
@@ -84,18 +97,19 @@ export class Omu implements Client {
|
|
|
84
97
|
this.event.ready.emit();
|
|
85
98
|
});
|
|
86
99
|
this.extensions = new ExtensionRegistry(this);
|
|
87
|
-
|
|
88
100
|
this.endpoints = this.extensions.register(ENDPOINT_EXTENSION_TYPE);
|
|
89
101
|
this.plugins = this.extensions.register(PLUGIN_EXTENSION_TYPE);
|
|
90
102
|
this.permissions = this.extensions.register(PERMISSION_EXTENSION_TYPE);
|
|
91
103
|
this.tables = this.extensions.register(TABLE_EXTENSION_TYPE);
|
|
92
|
-
this.
|
|
104
|
+
this.sessions = this.extensions.register(SESSION_EXTENSION_TYPE);
|
|
93
105
|
this.registries = this.extensions.register(REGISTRY_EXTENSION_TYPE);
|
|
106
|
+
this.dashboard = this.extensions.register(DASHBOARD_EXTENSION_TYPE);
|
|
94
107
|
this.signals = this.extensions.register(SIGNAL_EXTENSION_TYPE);
|
|
95
108
|
this.assets = this.extensions.register(ASSET_EXTENSION_TYPE);
|
|
96
109
|
this.i18n = this.extensions.register(I18N_EXTENSION_TYPE);
|
|
97
110
|
this.server = this.extensions.register(SERVER_EXTENSION_TYPE);
|
|
98
111
|
this.logger = this.extensions.register(LOGGER_EXTENSION_TYPE);
|
|
112
|
+
this.http = this.extensions.register(HTTP_EXTENSION_TYPE);
|
|
99
113
|
}
|
|
100
114
|
|
|
101
115
|
public send<T>(packetType: PacketType<T>, data: T): void {
|
|
@@ -117,6 +131,7 @@ export class Omu implements Client {
|
|
|
117
131
|
|
|
118
132
|
public stop(): void {
|
|
119
133
|
this.running = false;
|
|
134
|
+
this.ready = false;
|
|
120
135
|
this.event.stopped.emit();
|
|
121
136
|
}
|
|
122
137
|
|
|
@@ -126,4 +141,15 @@ export class Omu implements Client {
|
|
|
126
141
|
}
|
|
127
142
|
return this.event.ready.listen(callback);
|
|
128
143
|
}
|
|
144
|
+
|
|
145
|
+
public async waitForReady(): Promise<void> {
|
|
146
|
+
if (this.ready) return;
|
|
147
|
+
return new Promise<void>((resolve) => {
|
|
148
|
+
let unlisten = () => {};
|
|
149
|
+
unlisten = this.event.ready.listen(() => {
|
|
150
|
+
unlisten();
|
|
151
|
+
resolve();
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
129
155
|
}
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
import { textDecoder, textEncoder } from '../const.js';
|
|
2
|
+
import { JsonType } from './serializer.js';
|
|
3
|
+
|
|
4
|
+
export class Flags {
|
|
5
|
+
private value: number;
|
|
6
|
+
private length: number;
|
|
7
|
+
|
|
8
|
+
constructor(options: { value?: number; length?: number }) {
|
|
9
|
+
this.value = options.value ?? 0;
|
|
10
|
+
this.length = options.length ?? 32;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public has(position: number): boolean {
|
|
14
|
+
return (this.value & (1 << position)) !== 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public get(position: number): boolean {
|
|
18
|
+
return (this.value & (1 << position)) !== 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public ifSet<T>(position: number, callback: () => T): T | undefined {
|
|
22
|
+
if (this.has(position)) {
|
|
23
|
+
return callback();
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public set(position: number, value: boolean): void {
|
|
29
|
+
if (value) {
|
|
30
|
+
this.value |= 1 << position;
|
|
31
|
+
} else {
|
|
32
|
+
this.value &= ~(1 << position);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public write(writer: ByteWriter): void {
|
|
37
|
+
const bits = new Uint8Array((this.length + 7) / 8);
|
|
38
|
+
for (let i = 0; i < bits.length; i++) {
|
|
39
|
+
bits[i] = (this.value >> (i * 8)) & 0xff;
|
|
40
|
+
}
|
|
41
|
+
writer.write(bits);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public static read(reader: ByteReader, length: number): Flags {
|
|
45
|
+
let value = 0;
|
|
46
|
+
for (let i = 0; i < (length + 7) / 8; i++) {
|
|
47
|
+
value |= reader.readUint8() << (i * 8);
|
|
48
|
+
}
|
|
49
|
+
return new Flags({ value, length });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function readFloat16(dataView: DataView, offset: number): number {
|
|
54
|
+
const sign = (dataView.getUint16(offset) & 0x8000) ? -1 : 1;
|
|
55
|
+
const exponent = (dataView.getUint16(offset) & 0x7c00) >> 10;
|
|
56
|
+
const mantissa = (dataView.getUint16(offset) & 0x03ff);
|
|
57
|
+
if (exponent === 0 && mantissa === 0) {
|
|
58
|
+
return 0;
|
|
59
|
+
} else if (exponent === 0x1f) {
|
|
60
|
+
return mantissa === 0 ? Infinity * sign : NaN;
|
|
61
|
+
} else {
|
|
62
|
+
const normalizedExponent = exponent - 15;
|
|
63
|
+
const normalizedMantissa = mantissa / 1024;
|
|
64
|
+
return sign * Math.pow(2, normalizedExponent) * (1 + normalizedMantissa);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function writeFloat16(dataView: DataView, offset: number, value: number): void {
|
|
69
|
+
if (value === 0) {
|
|
70
|
+
dataView.setUint16(offset, 0);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const sign = value < 0 ? 1 : 0;
|
|
74
|
+
value = Math.abs(value);
|
|
75
|
+
if (!isFinite(value)) {
|
|
76
|
+
dataView.setUint16(offset, 0x7c00 | (sign << 15));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const exponent = Math.floor(Math.log2(value));
|
|
80
|
+
const mantissa = value / Math.pow(2, exponent) - 1;
|
|
81
|
+
const normalizedExponent = exponent + 15;
|
|
82
|
+
const normalizedMantissa = Math.round(mantissa * 1024);
|
|
83
|
+
if (normalizedExponent <= 0) {
|
|
84
|
+
dataView.setUint16(offset, sign << 15);
|
|
85
|
+
} else if (normalizedExponent >= 0x1f) {
|
|
86
|
+
dataView.setUint16(offset, 0x7c00 | (sign << 15));
|
|
87
|
+
} else {
|
|
88
|
+
dataView.setUint16(offset, (sign << 15) | (normalizedExponent << 10) | normalizedMantissa);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export class ByteWriter {
|
|
93
|
+
private dataView: DataView;
|
|
94
|
+
private buffer: ArrayBuffer;
|
|
95
|
+
private offset = 0;
|
|
96
|
+
private finished = false;
|
|
97
|
+
|
|
98
|
+
constructor(init?: ArrayBuffer, offset?: number) {
|
|
99
|
+
this.offset = offset ?? 0;
|
|
100
|
+
this.buffer = init ?? new ArrayBuffer(1024);
|
|
101
|
+
this.dataView = new DataView(this.buffer);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public static fromUint8Array(buffer: Uint8Array): ByteWriter {
|
|
105
|
+
const arrayBuffer = new ArrayBuffer(buffer.byteLength);
|
|
106
|
+
const uint8Array = new Uint8Array(arrayBuffer);
|
|
107
|
+
uint8Array.set(new Uint8Array(buffer));
|
|
108
|
+
return new ByteWriter(arrayBuffer, buffer.byteLength);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private allocate(length: number): void {
|
|
112
|
+
if (this.offset + length > this.buffer.byteLength) {
|
|
113
|
+
const newByteLength = Math.max(this.buffer.byteLength * 2, this.offset + length);
|
|
114
|
+
const newBuffer = new ArrayBuffer(newByteLength);
|
|
115
|
+
new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));
|
|
116
|
+
this.buffer = newBuffer;
|
|
117
|
+
this.dataView = new DataView(this.buffer);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
public write(data: Uint8Array): ByteWriter {
|
|
122
|
+
if (this.finished) {
|
|
123
|
+
throw new Error('Buffer already finished');
|
|
124
|
+
}
|
|
125
|
+
this.allocate(data.length);
|
|
126
|
+
new Uint8Array(this.buffer).set(data, this.offset);
|
|
127
|
+
this.offset += data.length;
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
public writeBoolean(value: boolean): ByteWriter {
|
|
132
|
+
this.allocate(1);
|
|
133
|
+
this.dataView.setInt8(this.offset, value ? 1 : 0);
|
|
134
|
+
this.offset += 1;
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
public writeInt8(value: number): ByteWriter {
|
|
139
|
+
this.allocate(1);
|
|
140
|
+
this.dataView.setInt8(this.offset, value);
|
|
141
|
+
this.offset += 1;
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
public writeUint8(value: number): ByteWriter {
|
|
146
|
+
this.allocate(1);
|
|
147
|
+
this.dataView.setUint8(this.offset, value);
|
|
148
|
+
this.offset += 1;
|
|
149
|
+
return this;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
public writeInt16(value: number): ByteWriter {
|
|
153
|
+
this.allocate(2);
|
|
154
|
+
this.dataView.setInt16(this.offset, value);
|
|
155
|
+
this.offset += 2;
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
public writeUint16(value: number): ByteWriter {
|
|
160
|
+
this.allocate(2);
|
|
161
|
+
this.dataView.setUint16(this.offset, value);
|
|
162
|
+
this.offset += 2;
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
public writeInt32(value: number): ByteWriter {
|
|
167
|
+
this.allocate(4);
|
|
168
|
+
this.dataView.setInt32(this.offset, value);
|
|
169
|
+
this.offset += 4;
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
public writeUint32(value: number): ByteWriter {
|
|
174
|
+
this.allocate(4);
|
|
175
|
+
this.dataView.setUint32(this.offset, value);
|
|
176
|
+
this.offset += 4;
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
public writeInt64(value: bigint): ByteWriter {
|
|
181
|
+
this.allocate(8);
|
|
182
|
+
this.dataView.setBigInt64(this.offset, value);
|
|
183
|
+
this.offset += 8;
|
|
184
|
+
return this;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
public writeUint64(value: bigint): ByteWriter {
|
|
188
|
+
this.allocate(8);
|
|
189
|
+
this.dataView.setBigUint64(this.offset, value);
|
|
190
|
+
this.offset += 8;
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
public writeULEB128(value: number): ByteWriter {
|
|
195
|
+
// Unsigned LEB128
|
|
196
|
+
if (value < 0) {
|
|
197
|
+
throw new Error('Value must be non-negative');
|
|
198
|
+
}
|
|
199
|
+
while (value > 0x7f) {
|
|
200
|
+
this.allocate(1);
|
|
201
|
+
this.dataView.setUint8(this.offset, (value & 0x7f) | 0x80);
|
|
202
|
+
this.offset += 1;
|
|
203
|
+
value >>= 7;
|
|
204
|
+
}
|
|
205
|
+
this.allocate(1);
|
|
206
|
+
this.dataView.setUint8(this.offset, value & 0x7f);
|
|
207
|
+
this.offset += 1;
|
|
208
|
+
return this;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
public writeFloat16(value: number): ByteWriter {
|
|
212
|
+
this.allocate(2);
|
|
213
|
+
writeFloat16(this.dataView, this.offset, value);
|
|
214
|
+
this.offset += 2;
|
|
215
|
+
return this;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
public writeFloat32(value: number): ByteWriter {
|
|
219
|
+
this.allocate(4);
|
|
220
|
+
this.dataView.setFloat32(this.offset, value);
|
|
221
|
+
this.offset += 4;
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
public writeFloat64(value: number): ByteWriter {
|
|
226
|
+
this.allocate(4);
|
|
227
|
+
this.dataView.setFloat64(this.offset, value);
|
|
228
|
+
this.offset += 4;
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
public writeUint8Array(value: Uint8Array): ByteWriter {
|
|
233
|
+
this.writeULEB128(value.byteLength);
|
|
234
|
+
this.write(value);
|
|
235
|
+
return this;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
public writeString(value: string): ByteWriter {
|
|
239
|
+
this.writeUint8Array(textEncoder.encode(value));
|
|
240
|
+
return this;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
public writeJSON(value: JsonType): ByteWriter {
|
|
244
|
+
this.writeString(JSON.stringify(value));
|
|
245
|
+
return this;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
public writeFlags(flags: Flags): ByteWriter {
|
|
249
|
+
flags.write(this);
|
|
250
|
+
return this;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
public finish(): Uint8Array {
|
|
254
|
+
if (this.finished) {
|
|
255
|
+
throw new Error('Buffer already finished');
|
|
256
|
+
}
|
|
257
|
+
this.finished = true;
|
|
258
|
+
return new Uint8Array(this.buffer, 0, this.offset);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export class ByteReader {
|
|
263
|
+
private dataView: DataView;
|
|
264
|
+
private offset: number;
|
|
265
|
+
private finished: boolean;
|
|
266
|
+
|
|
267
|
+
private constructor(data: DataView) {
|
|
268
|
+
this.dataView = data;
|
|
269
|
+
this.offset = 0;
|
|
270
|
+
this.finished = false;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
public static fromUint8Array(buffer: Uint8Array): ByteReader {
|
|
274
|
+
const arrayBuffer = new ArrayBuffer(buffer.byteLength);
|
|
275
|
+
const uint8Array = new Uint8Array(arrayBuffer);
|
|
276
|
+
uint8Array.set(new Uint8Array(buffer));
|
|
277
|
+
const dataView = new DataView(arrayBuffer);
|
|
278
|
+
return new ByteReader(dataView);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
public static fromArrayBuffer(buffer: ArrayBuffer): ByteReader {
|
|
282
|
+
const dataView = new DataView(buffer);
|
|
283
|
+
return new ByteReader(dataView);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
public static async fromBlob(blob: Blob): Promise<ByteReader> {
|
|
287
|
+
const arrayBuffer = await blob.arrayBuffer();
|
|
288
|
+
const dataView = new DataView(arrayBuffer);
|
|
289
|
+
return new ByteReader(dataView);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
public read(size: number): Uint8Array {
|
|
293
|
+
if (this.finished) {
|
|
294
|
+
throw new Error('Buffer already finished');
|
|
295
|
+
}
|
|
296
|
+
if (size < 0) {
|
|
297
|
+
throw new Error('Size must be positive');
|
|
298
|
+
}
|
|
299
|
+
if (this.offset + size > this.dataView.byteLength) {
|
|
300
|
+
throw new Error('Buffer not fully read');
|
|
301
|
+
}
|
|
302
|
+
const value = new Uint8Array(this.dataView.buffer, this.offset, size);
|
|
303
|
+
this.offset += size;
|
|
304
|
+
return value;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
public readBoolean(): boolean {
|
|
308
|
+
const value = this.dataView.getInt8(this.offset);
|
|
309
|
+
this.offset += 1;
|
|
310
|
+
return value !== 0;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
public readInt8(): number {
|
|
314
|
+
const value = this.dataView.getInt8(this.offset);
|
|
315
|
+
this.offset += 1;
|
|
316
|
+
return value;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
public readUint8(): number {
|
|
320
|
+
const value = this.dataView.getUint8(this.offset);
|
|
321
|
+
this.offset += 1;
|
|
322
|
+
return value;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
public readInt16(): number {
|
|
326
|
+
const value = this.dataView.getInt16(this.offset);
|
|
327
|
+
this.offset += 2;
|
|
328
|
+
return value;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
public readUint16(): number {
|
|
332
|
+
const value = this.dataView.getUint16(this.offset);
|
|
333
|
+
this.offset += 2;
|
|
334
|
+
return value;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
public readInt32(): number {
|
|
338
|
+
const value = this.dataView.getInt32(this.offset);
|
|
339
|
+
this.offset += 4;
|
|
340
|
+
return value;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
public readUint32(): number {
|
|
344
|
+
const value = this.dataView.getUint32(this.offset);
|
|
345
|
+
this.offset += 4;
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
public readInt64(): bigint {
|
|
350
|
+
const value = this.dataView.getBigInt64(this.offset);
|
|
351
|
+
this.offset += 8;
|
|
352
|
+
return value;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
public readUint64(): bigint {
|
|
356
|
+
const value = this.dataView.getBigUint64(this.offset);
|
|
357
|
+
this.offset += 8;
|
|
358
|
+
return value;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
public readULEB128(): number {
|
|
362
|
+
// Unsigned LEB128
|
|
363
|
+
let value = 0;
|
|
364
|
+
let shift = 0;
|
|
365
|
+
let byte: number;
|
|
366
|
+
do {
|
|
367
|
+
if (this.offset >= this.dataView.byteLength) {
|
|
368
|
+
throw new Error('Buffer not fully read');
|
|
369
|
+
}
|
|
370
|
+
byte = this.dataView.getUint8(this.offset);
|
|
371
|
+
this.offset += 1;
|
|
372
|
+
value |= (byte & 0b01111111) << shift;
|
|
373
|
+
shift += 7;
|
|
374
|
+
}
|
|
375
|
+
while ((byte & 0b10000000) !== 0);
|
|
376
|
+
return value;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
public readFloat16(): number {
|
|
380
|
+
const value = readFloat16(this.dataView, this.offset);
|
|
381
|
+
this.offset += 2;
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
public readFloat32(): number {
|
|
386
|
+
const value = this.dataView.getFloat32(this.offset);
|
|
387
|
+
this.offset += 4;
|
|
388
|
+
return value;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
public readFloat64(): number {
|
|
392
|
+
const value = this.dataView.getFloat64(this.offset);
|
|
393
|
+
this.offset += 8;
|
|
394
|
+
return value;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
public readUint8Array(): Uint8Array {
|
|
398
|
+
const length = this.readULEB128();
|
|
399
|
+
return this.read(length);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
public readString(): string {
|
|
403
|
+
const byteArray = this.readUint8Array();
|
|
404
|
+
return textDecoder.decode(byteArray);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
public readJSON<T extends JsonType>(): T {
|
|
408
|
+
return JSON.parse(this.readString());
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
public readFlags(length: number): Flags {
|
|
412
|
+
return Flags.read(this, length);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
public finish(): void {
|
|
416
|
+
if (this.finished) {
|
|
417
|
+
throw new Error('Buffer already finished');
|
|
418
|
+
}
|
|
419
|
+
this.finished = true;
|
|
420
|
+
if (this.offset !== this.dataView.byteLength) {
|
|
421
|
+
throw new Error('Buffer not fully read');
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|