@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.
Files changed (276) hide show
  1. package/dist/address.js +1 -0
  2. package/dist/address.js.map +7 -0
  3. package/dist/api/asset/extension.d.ts +25 -0
  4. package/dist/api/asset/extension.js +2 -0
  5. package/dist/api/asset/extension.js.map +7 -0
  6. package/dist/api/asset/index.d.ts +2 -0
  7. package/dist/api/asset/index.js +2 -0
  8. package/dist/api/asset/index.js.map +7 -0
  9. package/dist/api/dashboard/extension.d.ts +181 -0
  10. package/dist/api/dashboard/extension.js +2 -0
  11. package/dist/api/dashboard/extension.js.map +7 -0
  12. package/{src/api/dashboard/handler.ts → dist/api/dashboard/handler.d.ts} +3 -5
  13. package/dist/api/dashboard/handler.js +1 -0
  14. package/dist/api/dashboard/handler.js.map +7 -0
  15. package/dist/api/dashboard/index.d.ts +3 -0
  16. package/dist/api/dashboard/index.js +2 -0
  17. package/dist/api/dashboard/index.js.map +7 -0
  18. package/dist/api/dashboard/packets.d.ts +63 -0
  19. package/dist/api/dashboard/packets.js +2 -0
  20. package/dist/api/dashboard/packets.js.map +7 -0
  21. package/dist/api/endpoint/endpoint.d.ts +21 -0
  22. package/dist/api/endpoint/endpoint.js +2 -0
  23. package/dist/api/endpoint/endpoint.js.map +7 -0
  24. package/dist/api/endpoint/extension.d.ts +17 -0
  25. package/dist/api/endpoint/extension.js +2 -0
  26. package/dist/api/endpoint/extension.js.map +7 -0
  27. package/{src/api/endpoint/index.ts → dist/api/endpoint/index.d.ts} +0 -1
  28. package/dist/api/endpoint/index.js +2 -0
  29. package/dist/api/endpoint/index.js.map +7 -0
  30. package/dist/api/endpoint/packets.d.ts +51 -0
  31. package/dist/api/endpoint/packets.js +2 -0
  32. package/dist/api/endpoint/packets.js.map +7 -0
  33. package/dist/api/extension-registry.d.ts +8 -0
  34. package/dist/api/extension-registry.js +2 -0
  35. package/dist/api/extension-registry.js.map +7 -0
  36. package/dist/api/extension.d.ts +11 -0
  37. package/dist/api/extension.js +2 -0
  38. package/dist/api/extension.js.map +7 -0
  39. package/dist/api/http/extension.d.ts +41 -0
  40. package/dist/api/http/extension.js +2 -0
  41. package/dist/api/http/extension.js.map +7 -0
  42. package/dist/api/http/http.d.ts +36 -0
  43. package/dist/api/http/http.js +2 -0
  44. package/dist/api/http/http.js.map +7 -0
  45. package/{src/api/http/index.ts → dist/api/http/index.d.ts} +0 -1
  46. package/dist/api/http/index.js +2 -0
  47. package/dist/api/http/index.js.map +7 -0
  48. package/dist/api/http/websocket.d.ts +125 -0
  49. package/dist/api/http/websocket.js +2 -0
  50. package/dist/api/http/websocket.js.map +7 -0
  51. package/dist/api/i18n/extension.d.ts +19 -0
  52. package/dist/api/i18n/extension.js +2 -0
  53. package/dist/api/i18n/extension.js.map +7 -0
  54. package/{src/api/i18n/index.ts → dist/api/i18n/index.d.ts} +0 -1
  55. package/dist/api/i18n/index.js +2 -0
  56. package/dist/api/i18n/index.js.map +7 -0
  57. package/dist/api/index.d.ts +2 -0
  58. package/dist/api/index.js +2 -0
  59. package/dist/api/index.js.map +7 -0
  60. package/dist/api/logger/extension.d.ts +25 -0
  61. package/dist/api/logger/extension.js +2 -0
  62. package/dist/api/logger/extension.js.map +7 -0
  63. package/dist/api/logger/index.d.ts +1 -0
  64. package/dist/api/logger/index.js +2 -0
  65. package/dist/api/logger/index.js.map +7 -0
  66. package/dist/api/logger/packets.d.ts +18 -0
  67. package/dist/api/logger/packets.js +2 -0
  68. package/dist/api/logger/packets.js.map +7 -0
  69. package/dist/api/permission/extension.d.ts +19 -0
  70. package/dist/api/permission/extension.js +2 -0
  71. package/dist/api/permission/extension.js.map +7 -0
  72. package/{src/api/permission/index.ts → dist/api/permission/index.d.ts} +0 -1
  73. package/dist/api/permission/index.js +2 -0
  74. package/dist/api/permission/index.js.map +7 -0
  75. package/dist/api/permission/permission.d.ts +25 -0
  76. package/dist/api/permission/permission.js +2 -0
  77. package/dist/api/permission/permission.js.map +7 -0
  78. package/dist/api/plugin/extension.d.ts +43 -0
  79. package/dist/api/plugin/extension.js +2 -0
  80. package/dist/api/plugin/extension.js.map +7 -0
  81. package/{src/api/plugin/index.ts → dist/api/plugin/index.d.ts} +0 -1
  82. package/dist/api/plugin/index.js +2 -0
  83. package/dist/api/plugin/index.js.map +7 -0
  84. package/{src/api/plugin/package-info.ts → dist/api/plugin/package-info.d.ts} +0 -7
  85. package/dist/api/plugin/package-info.js +1 -0
  86. package/dist/api/plugin/package-info.js.map +7 -0
  87. package/dist/api/registry/extension.d.ts +23 -0
  88. package/dist/api/registry/extension.js +2 -0
  89. package/dist/api/registry/extension.js.map +7 -0
  90. package/{src/api/registry/index.ts → dist/api/registry/index.d.ts} +0 -1
  91. package/dist/api/registry/index.js +2 -0
  92. package/dist/api/registry/index.js.map +7 -0
  93. package/dist/api/registry/packets.d.ts +20 -0
  94. package/dist/api/registry/packets.js +2 -0
  95. package/dist/api/registry/packets.js.map +7 -0
  96. package/{src/api/registry/registry.ts → dist/api/registry/registry.d.ts} +11 -53
  97. package/dist/api/registry/registry.js +2 -0
  98. package/dist/api/registry/registry.js.map +7 -0
  99. package/dist/api/server/extension.d.ts +61 -0
  100. package/dist/api/server/extension.js +2 -0
  101. package/dist/api/server/extension.js.map +7 -0
  102. package/dist/api/server/index.d.ts +1 -0
  103. package/dist/api/server/index.js +2 -0
  104. package/dist/api/server/index.js.map +7 -0
  105. package/dist/api/session/extension.d.ts +52 -0
  106. package/dist/api/session/extension.js +2 -0
  107. package/dist/api/session/extension.js.map +7 -0
  108. package/dist/api/session/index.d.ts +1 -0
  109. package/dist/api/session/index.js +2 -0
  110. package/dist/api/session/index.js.map +7 -0
  111. package/dist/api/signal/extension.d.ts +19 -0
  112. package/dist/api/signal/extension.js +2 -0
  113. package/dist/api/signal/extension.js.map +7 -0
  114. package/dist/api/signal/index.d.ts +1 -0
  115. package/dist/api/signal/index.js +2 -0
  116. package/dist/api/signal/index.js.map +7 -0
  117. package/dist/api/signal/packets.d.ts +21 -0
  118. package/dist/api/signal/packets.js +2 -0
  119. package/dist/api/signal/packets.js.map +7 -0
  120. package/dist/api/signal/signal.d.ts +33 -0
  121. package/dist/api/signal/signal.js +2 -0
  122. package/dist/api/signal/signal.js.map +7 -0
  123. package/dist/api/table/extension.d.ts +26 -0
  124. package/dist/api/table/extension.js +2 -0
  125. package/dist/api/table/extension.js.map +7 -0
  126. package/{src/api/table/index.ts → dist/api/table/index.d.ts} +0 -1
  127. package/dist/api/table/index.js +2 -0
  128. package/dist/api/table/index.js.map +7 -0
  129. package/dist/api/table/packets.d.ts +65 -0
  130. package/dist/api/table/packets.js +2 -0
  131. package/dist/api/table/packets.js.map +7 -0
  132. package/dist/api/table/table.d.ts +75 -0
  133. package/dist/api/table/table.js +2 -0
  134. package/dist/api/table/table.js.map +7 -0
  135. package/dist/app.d.ts +49 -0
  136. package/dist/app.js +2 -0
  137. package/dist/app.js.map +7 -0
  138. package/dist/const.d.ts +2 -0
  139. package/dist/const.js +2 -0
  140. package/dist/const.js.map +7 -0
  141. package/dist/errors.d.ts +36 -0
  142. package/dist/errors.js +2 -0
  143. package/dist/errors.js.map +7 -0
  144. package/dist/event/index.d.ts +6 -0
  145. package/dist/event/index.js +2 -0
  146. package/dist/event/index.js.map +7 -0
  147. package/dist/helper.d.ts +10 -0
  148. package/dist/helper.js +2 -0
  149. package/dist/helper.js.map +7 -0
  150. package/dist/identifier.d.ts +51 -0
  151. package/dist/identifier.js +2 -0
  152. package/dist/identifier.js.map +7 -0
  153. package/dist/index.d.ts +36 -0
  154. package/dist/index.js +2 -0
  155. package/dist/index.js.map +7 -0
  156. package/{src/localization/index.ts → dist/localization/index.d.ts} +0 -1
  157. package/dist/localization/index.js +2 -0
  158. package/dist/localization/index.js.map +7 -0
  159. package/dist/localization/locale.d.ts +735 -0
  160. package/dist/localization/locale.js +2 -0
  161. package/dist/localization/locale.js.map +7 -0
  162. package/{src/localization/localization.ts → dist/localization/localization.d.ts} +0 -2
  163. package/dist/localization/localization.js +1 -0
  164. package/dist/localization/localization.js.map +7 -0
  165. package/dist/lock.d.ts +6 -0
  166. package/dist/lock.js +2 -0
  167. package/dist/lock.js.map +7 -0
  168. package/dist/network/connection.d.ts +17 -0
  169. package/dist/network/connection.js +2 -0
  170. package/dist/network/connection.js.map +7 -0
  171. package/dist/network/encryption.d.ts +38 -0
  172. package/dist/network/encryption.js +2 -0
  173. package/dist/network/encryption.js.map +7 -0
  174. package/dist/network/frame-transport.d.ts +22 -0
  175. package/dist/network/frame-transport.js +2 -0
  176. package/dist/network/frame-transport.js.map +7 -0
  177. package/{src/network/index.ts → dist/network/index.d.ts} +0 -1
  178. package/dist/network/index.js +2 -0
  179. package/dist/network/index.js.map +7 -0
  180. package/dist/network/network.d.ts +59 -0
  181. package/dist/network/network.js +2 -0
  182. package/dist/network/network.js.map +7 -0
  183. package/{src/network/packet/index.ts → dist/network/packet/index.d.ts} +0 -1
  184. package/dist/network/packet/index.js +2 -0
  185. package/dist/network/packet/index.js.map +7 -0
  186. package/dist/network/packet/packet-types.d.ts +84 -0
  187. package/dist/network/packet/packet-types.js +2 -0
  188. package/dist/network/packet/packet-types.js.map +7 -0
  189. package/dist/network/packet/packet.d.ts +25 -0
  190. package/dist/network/packet/packet.js +2 -0
  191. package/dist/network/packet/packet.js.map +7 -0
  192. package/dist/network/websocket-transport.d.ts +24 -0
  193. package/dist/network/websocket-transport.js +2 -0
  194. package/dist/network/websocket-transport.js.map +7 -0
  195. package/dist/omu.d.ts +61 -0
  196. package/dist/omu.js +2 -0
  197. package/dist/omu.js.map +7 -0
  198. package/dist/result.d.ts +26 -0
  199. package/dist/result.js +2 -0
  200. package/dist/result.js.map +7 -0
  201. package/dist/serialize/bytebuffer.d.ts +73 -0
  202. package/dist/serialize/bytebuffer.js +2 -0
  203. package/dist/serialize/bytebuffer.js.map +7 -0
  204. package/dist/serialize/index.d.ts +2 -0
  205. package/dist/serialize/index.js +2 -0
  206. package/dist/serialize/index.js.map +7 -0
  207. package/dist/serialize/serializer.d.ts +26 -0
  208. package/dist/serialize/serializer.js +2 -0
  209. package/dist/serialize/serializer.js.map +7 -0
  210. package/dist/token.d.ts +14 -0
  211. package/dist/token.js +2 -0
  212. package/dist/token.js.map +7 -0
  213. package/dist/version.d.ts +2 -0
  214. package/dist/version.js +2 -0
  215. package/dist/version.js.map +7 -0
  216. package/package.json +12 -9
  217. package/CHANGELOG.md +0 -1845
  218. package/src/api/asset/extension.ts +0 -193
  219. package/src/api/asset/index.ts +0 -5
  220. package/src/api/dashboard/extension.ts +0 -651
  221. package/src/api/dashboard/index.ts +0 -38
  222. package/src/api/dashboard/packets.ts +0 -126
  223. package/src/api/endpoint/endpoint.ts +0 -56
  224. package/src/api/endpoint/extension.ts +0 -133
  225. package/src/api/endpoint/packets.ts +0 -176
  226. package/src/api/extension-registry.ts +0 -17
  227. package/src/api/extension.ts +0 -19
  228. package/src/api/http/extension.ts +0 -401
  229. package/src/api/http/http.ts +0 -79
  230. package/src/api/http/websocket.ts +0 -283
  231. package/src/api/i18n/extension.ts +0 -65
  232. package/src/api/index.ts +0 -3
  233. package/src/api/logger/extension.ts +0 -75
  234. package/src/api/logger/index.ts +0 -4
  235. package/src/api/logger/packets.ts +0 -38
  236. package/src/api/permission/extension.ts +0 -107
  237. package/src/api/permission/permission.ts +0 -53
  238. package/src/api/plugin/extension.ts +0 -100
  239. package/src/api/registry/extension.ts +0 -326
  240. package/src/api/registry/packets.ts +0 -64
  241. package/src/api/server/extension.ts +0 -155
  242. package/src/api/server/index.ts +0 -11
  243. package/src/api/session/extension.ts +0 -205
  244. package/src/api/session/index.ts +0 -7
  245. package/src/api/signal/extension.ts +0 -125
  246. package/src/api/signal/index.ts +0 -1
  247. package/src/api/signal/packets.ts +0 -61
  248. package/src/api/signal/signal.ts +0 -67
  249. package/src/api/table/extension.ts +0 -554
  250. package/src/api/table/packets.ts +0 -252
  251. package/src/api/table/table.ts +0 -113
  252. package/src/app.ts +0 -95
  253. package/src/const.ts +0 -2
  254. package/src/errors.ts +0 -70
  255. package/src/event/index.ts +0 -18
  256. package/src/helper.ts +0 -16
  257. package/src/identifier.ts +0 -256
  258. package/src/index.ts +0 -87
  259. package/src/localization/locale.ts +0 -737
  260. package/src/lock.ts +0 -43
  261. package/src/network/connection.ts +0 -45
  262. package/src/network/encryption.ts +0 -221
  263. package/src/network/frame-transport.ts +0 -186
  264. package/src/network/network.ts +0 -322
  265. package/src/network/packet/packet-types.ts +0 -164
  266. package/src/network/packet/packet.ts +0 -55
  267. package/src/network/websocket-transport.ts +0 -123
  268. package/src/omu.ts +0 -156
  269. package/src/result.ts +0 -78
  270. package/src/serialize/bytebuffer.ts +0 -432
  271. package/src/serialize/index.ts +0 -2
  272. package/src/serialize/serializer.ts +0 -149
  273. package/src/token.ts +0 -39
  274. package/src/version.ts +0 -2
  275. package/tsconfig.json +0 -18
  276. /package/{src/address.ts → dist/address.d.ts} +0 -0
@@ -0,0 +1,84 @@
1
+ import type { AppJson } from '../../app.js';
2
+ import { App } from '../../app.js';
3
+ import { PacketType } from './packet.js';
4
+ type ProtocolInfo = {
5
+ version: string;
6
+ };
7
+ type RSANumbers = {
8
+ e: string;
9
+ n: string;
10
+ };
11
+ type EncryptionRequest = {
12
+ kind: 'v1';
13
+ rsa: RSANumbers;
14
+ };
15
+ type EncryptionResponse = {
16
+ kind: 'v1';
17
+ rsa: RSANumbers;
18
+ aes: string;
19
+ };
20
+ export type ServerMeta = {
21
+ protocol: ProtocolInfo;
22
+ encryption: EncryptionRequest | null;
23
+ hash: string | undefined;
24
+ };
25
+ type ConnectPacketJson = {
26
+ protocol: ProtocolInfo;
27
+ app: AppJson;
28
+ token: string;
29
+ encryption: EncryptionResponse | null;
30
+ };
31
+ export declare class ConnectPacket {
32
+ readonly protocol: ProtocolInfo;
33
+ readonly app: App;
34
+ readonly token: string;
35
+ readonly encryption: EncryptionResponse | null;
36
+ constructor(options: {
37
+ protocol: ProtocolInfo;
38
+ app: App;
39
+ token: string;
40
+ encryption?: EncryptionResponse | null;
41
+ });
42
+ static deserialize(data: ConnectPacketJson): ConnectPacket;
43
+ static serialize(data: ConnectPacket): ConnectPacketJson;
44
+ }
45
+ export declare enum DisconnectType {
46
+ INVALID_TOKEN = "invalid_token",
47
+ INVALID_ORIGIN = "invalid_origin",
48
+ INVALID_VERSION = "invalid_version",
49
+ INVALID_PACKET_TYPE = "invalid_packet_type",
50
+ INVALID_PACKET_DATA = "invalid_packet_data",
51
+ INVALID_PACKET = "invalid_packet",
52
+ INTERNAL_ERROR = "internal_error",
53
+ ANOTHER_CONNECTION = "another_connection",
54
+ PERMISSION_DENIED = "permission_denied",
55
+ APP_REMOVED = "app_removed",
56
+ SERVER_RESTART = "server_restart",
57
+ SHUTDOWN = "shutdown",
58
+ CLOSE = "close"
59
+ }
60
+ type DisconnectPacketJson = {
61
+ type: DisconnectType;
62
+ message: string | null;
63
+ };
64
+ export declare class DisconnectPacket {
65
+ readonly type: DisconnectType;
66
+ readonly message: string | null;
67
+ constructor(options: {
68
+ type: DisconnectType;
69
+ message?: string | null;
70
+ });
71
+ static serialize(data: DisconnectPacket): DisconnectPacketJson;
72
+ static deserialize(data: DisconnectPacketJson): DisconnectPacket;
73
+ static fromJson(data: DisconnectPacketJson): DisconnectPacket;
74
+ toJson(): DisconnectPacketJson;
75
+ }
76
+ export declare const PACKET_TYPES: {
77
+ SERVER_META: PacketType<ServerMeta>;
78
+ CONNECT: PacketType<ConnectPacket>;
79
+ DISCONNECT: PacketType<DisconnectPacket>;
80
+ TOKEN: PacketType<string>;
81
+ READY: PacketType<undefined>;
82
+ ENCRYPTED_PACKET: PacketType<Uint8Array>;
83
+ };
84
+ export {};
@@ -0,0 +1,2 @@
1
+ import{App as s}from"../../app.js";import{Identifier as c}from"../../identifier";import{Serializer as p}from"../../serialize/serializer.js";import{PacketType as t}from"./packet.js";const o=new c("core","packet");class i{protocol;app;token;encryption;constructor(e){this.protocol=e.protocol,this.app=e.app,this.token=e.token,this.encryption=e.encryption??null}static deserialize(e){return new i({protocol:e.protocol,app:s.deserialize(e.app),encryption:e.encryption,token:e.token})}static serialize(e){return{protocol:e.protocol,app:s.serialize(e.app),encryption:e.encryption,token:e.token}}}var a=(n=>(n.INVALID_TOKEN="invalid_token",n.INVALID_ORIGIN="invalid_origin",n.INVALID_VERSION="invalid_version",n.INVALID_PACKET_TYPE="invalid_packet_type",n.INVALID_PACKET_DATA="invalid_packet_data",n.INVALID_PACKET="invalid_packet",n.INTERNAL_ERROR="internal_error",n.ANOTHER_CONNECTION="another_connection",n.PERMISSION_DENIED="permission_denied",n.APP_REMOVED="app_removed",n.SERVER_RESTART="server_restart",n.SHUTDOWN="shutdown",n.CLOSE="close",n))(a||{});class r{type;message;constructor(e){this.type=e.type,this.message=e.message??null}static serialize(e){return e.toJson()}static deserialize(e){return r.fromJson(e)}static fromJson(e){return new r({type:e.type,message:e.message})}toJson(){return{type:this.type,message:this.message}}}const y={SERVER_META:t.createJson(o,{name:"server_meta"}),CONNECT:t.createJson(o,{name:"connect",serializer:i}),DISCONNECT:t.createJson(o,{name:"disconnect",serializer:r}),TOKEN:t.createJson(o,{name:"token"}),READY:t.createJson(o,{name:"ready"}),ENCRYPTED_PACKET:t.createSerialized(o,{name:"e",serializer:p.noop()})};export{i as ConnectPacket,r as DisconnectPacket,a as DisconnectType,y as PACKET_TYPES};
2
+ //# sourceMappingURL=packet-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/network/packet/packet-types.ts"],
4
+ "sourcesContent": ["import type { AppJson } from '../../app.js';\nimport { App } from '../../app.js';\nimport { Identifier } from '../../identifier';\nimport { Serializer } from '../../serialize/serializer.js';\nimport { PacketType } from './packet.js';\n\nconst IDENTIFIER = new Identifier('core', 'packet');\n\ntype ProtocolInfo = {\n version: string;\n};\n\ntype RSANumbers = {\n e: string;\n n: string;\n};\n\ntype EncryptionRequest = {\n kind: 'v1';\n rsa: RSANumbers;\n};\n\ntype EncryptionResponse = {\n kind: 'v1';\n rsa: RSANumbers;\n aes: string;\n};\n\nexport type ServerMeta = {\n protocol: ProtocolInfo;\n encryption: EncryptionRequest | null;\n hash: string | undefined;\n};\n\ntype ConnectPacketJson = {\n protocol: ProtocolInfo;\n app: AppJson;\n token: string;\n encryption: EncryptionResponse | null;\n};\n\nexport class ConnectPacket {\n public readonly protocol: ProtocolInfo;\n public readonly app: App;\n public readonly token: string;\n public readonly encryption: EncryptionResponse | null;\n\n constructor(options: {\n protocol: ProtocolInfo;\n app: App;\n token: string;\n encryption?: EncryptionResponse | null;\n }) {\n this.protocol = options.protocol;\n this.app = options.app;\n this.token = options.token;\n this.encryption = options.encryption ?? null;\n }\n\n public static deserialize(data: ConnectPacketJson): ConnectPacket {\n return new ConnectPacket({\n protocol: data.protocol,\n app: App.deserialize(data.app),\n encryption: data.encryption,\n token: data.token,\n });\n }\n\n public static serialize(data: ConnectPacket): ConnectPacketJson {\n return {\n protocol: data.protocol,\n app: App.serialize(data.app),\n encryption: data.encryption,\n token: data.token,\n };\n }\n}\n\nexport enum DisconnectType {\n INVALID_TOKEN = 'invalid_token',\n INVALID_ORIGIN = 'invalid_origin',\n INVALID_VERSION = 'invalid_version',\n INVALID_PACKET_TYPE = 'invalid_packet_type',\n INVALID_PACKET_DATA = 'invalid_packet_data',\n INVALID_PACKET = 'invalid_packet',\n INTERNAL_ERROR = 'internal_error',\n ANOTHER_CONNECTION = 'another_connection',\n PERMISSION_DENIED = 'permission_denied',\n APP_REMOVED = 'app_removed',\n SERVER_RESTART = 'server_restart',\n SHUTDOWN = 'shutdown',\n CLOSE = 'close',\n}\n\ntype DisconnectPacketJson = {\n type: DisconnectType;\n message: string | null;\n};\n\nexport class DisconnectPacket {\n public readonly type: DisconnectType;\n public readonly message: string | null;\n\n constructor(options: {\n type: DisconnectType;\n message?: string | null;\n }) {\n this.type = options.type;\n this.message = options.message ?? null;\n }\n\n public static serialize(data: DisconnectPacket): DisconnectPacketJson {\n return data.toJson();\n }\n\n public static deserialize(data: DisconnectPacketJson): DisconnectPacket {\n return DisconnectPacket.fromJson(data);\n }\n\n static fromJson(data: DisconnectPacketJson): DisconnectPacket {\n return new DisconnectPacket({\n type: data.type,\n message: data.message,\n });\n }\n\n toJson(): DisconnectPacketJson {\n return {\n type: this.type,\n message: this.message,\n };\n }\n}\n\nexport const PACKET_TYPES: {\n SERVER_META: PacketType<ServerMeta>;\n CONNECT: PacketType<ConnectPacket>;\n DISCONNECT: PacketType<DisconnectPacket>;\n TOKEN: PacketType<string>;\n READY: PacketType<undefined>;\n ENCRYPTED_PACKET: PacketType<Uint8Array>;\n} = {\n SERVER_META: PacketType.createJson<ServerMeta>(IDENTIFIER, {\n name: 'server_meta',\n }),\n CONNECT: PacketType.createJson<ConnectPacket>(IDENTIFIER, {\n name: 'connect',\n serializer: ConnectPacket,\n }),\n DISCONNECT: PacketType.createJson<DisconnectPacket>(IDENTIFIER, {\n name: 'disconnect',\n serializer: DisconnectPacket,\n }),\n TOKEN: PacketType.createJson<string>(IDENTIFIER, {\n name: 'token',\n }),\n READY: PacketType.createJson<undefined>(IDENTIFIER, {\n name: 'ready',\n }),\n ENCRYPTED_PACKET: PacketType.createSerialized<Uint8Array>(IDENTIFIER, {\n name: 'e',\n serializer: Serializer.noop(),\n }),\n};\n"],
5
+ "mappings": "AACA,OAAS,OAAAA,MAAW,eACpB,OAAS,cAAAC,MAAkB,mBAC3B,OAAS,cAAAC,MAAkB,gCAC3B,OAAS,cAAAC,MAAkB,cAE3B,MAAMC,EAAa,IAAIH,EAAW,OAAQ,QAAQ,EAmC3C,MAAMI,CAAc,CACP,SACA,IACA,MACA,WAEhB,YAAYC,EAKT,CACC,KAAK,SAAWA,EAAQ,SACxB,KAAK,IAAMA,EAAQ,IACnB,KAAK,MAAQA,EAAQ,MACrB,KAAK,WAAaA,EAAQ,YAAc,IAC5C,CAEA,OAAc,YAAYC,EAAwC,CAC9D,OAAO,IAAIF,EAAc,CACrB,SAAUE,EAAK,SACf,IAAKP,EAAI,YAAYO,EAAK,GAAG,EAC7B,WAAYA,EAAK,WACjB,MAAOA,EAAK,KAChB,CAAC,CACL,CAEA,OAAc,UAAUA,EAAwC,CAC5D,MAAO,CACH,SAAUA,EAAK,SACf,IAAKP,EAAI,UAAUO,EAAK,GAAG,EAC3B,WAAYA,EAAK,WACjB,MAAOA,EAAK,KAChB,CACJ,CACJ,CAEO,IAAKC,OACRA,EAAA,cAAgB,gBAChBA,EAAA,eAAiB,iBACjBA,EAAA,gBAAkB,kBAClBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,eAAiB,iBACjBA,EAAA,eAAiB,iBACjBA,EAAA,mBAAqB,qBACrBA,EAAA,kBAAoB,oBACpBA,EAAA,YAAc,cACdA,EAAA,eAAiB,iBACjBA,EAAA,SAAW,WACXA,EAAA,MAAQ,QAbAA,OAAA,IAqBL,MAAMC,CAAiB,CACV,KACA,QAEhB,YAAYH,EAGT,CACC,KAAK,KAAOA,EAAQ,KACpB,KAAK,QAAUA,EAAQ,SAAW,IACtC,CAEA,OAAc,UAAUC,EAA8C,CAClE,OAAOA,EAAK,OAAO,CACvB,CAEA,OAAc,YAAYA,EAA8C,CACpE,OAAOE,EAAiB,SAASF,CAAI,CACzC,CAEA,OAAO,SAASA,EAA8C,CAC1D,OAAO,IAAIE,EAAiB,CACxB,KAAMF,EAAK,KACX,QAASA,EAAK,OAClB,CAAC,CACL,CAEA,QAA+B,CAC3B,MAAO,CACH,KAAM,KAAK,KACX,QAAS,KAAK,OAClB,CACJ,CACJ,CAEO,MAAMG,EAOT,CACA,YAAaP,EAAW,WAAuBC,EAAY,CACvD,KAAM,aACV,CAAC,EACD,QAASD,EAAW,WAA0BC,EAAY,CACtD,KAAM,UACN,WAAYC,CAChB,CAAC,EACD,WAAYF,EAAW,WAA6BC,EAAY,CAC5D,KAAM,aACN,WAAYK,CAChB,CAAC,EACD,MAAON,EAAW,WAAmBC,EAAY,CAC7C,KAAM,OACV,CAAC,EACD,MAAOD,EAAW,WAAsBC,EAAY,CAChD,KAAM,OACV,CAAC,EACD,iBAAkBD,EAAW,iBAA6BC,EAAY,CAClE,KAAM,IACN,WAAYF,EAAW,KAAK,CAChC,CAAC,CACL",
6
+ "names": ["App", "Identifier", "Serializer", "PacketType", "IDENTIFIER", "ConnectPacket", "options", "data", "DisconnectType", "DisconnectPacket", "PACKET_TYPES"]
7
+ }
@@ -0,0 +1,25 @@
1
+ import type { Identifier } from '../../identifier';
2
+ import { JsonType, type Serializable } from '../../serialize';
3
+ export type PacketData = {
4
+ readonly type: string;
5
+ readonly data: Uint8Array;
6
+ };
7
+ export type Packet<T = unknown> = {
8
+ readonly type: PacketType<T>;
9
+ readonly data: T;
10
+ };
11
+ export declare class PacketType<T> {
12
+ readonly id: Identifier;
13
+ readonly serializer: Serializable<T, Uint8Array>;
14
+ constructor(id: Identifier, serializer: Serializable<T, Uint8Array>);
15
+ new(data: T): Packet<T>;
16
+ match(packet: Packet): packet is Packet<T>;
17
+ static createJson<T, D extends JsonType = JsonType>(identifier: Identifier, { name, serializer }: {
18
+ name: string;
19
+ serializer?: Serializable<T, D>;
20
+ }): PacketType<T>;
21
+ static createSerialized<T>(identifier: Identifier, { name, serializer }: {
22
+ name: string;
23
+ serializer: Serializable<T, Uint8Array>;
24
+ }): PacketType<T>;
25
+ }
@@ -0,0 +1,2 @@
1
+ import{Serializer as i}from"../../serialize";class a{constructor(e,r){this.id=e;this.serializer=r}new(e){return{type:this,data:e}}match(e){return e.type===this}static createJson(e,{name:r,serializer:t}){return new a(e.join(r),i.pipe(t??i.noop(),i.json()))}static createSerialized(e,{name:r,serializer:t}){return new a(e.join(r),t)}}export{a as PacketType};
2
+ //# sourceMappingURL=packet.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/network/packet/packet.ts"],
4
+ "sourcesContent": ["import type { Identifier } from '../../identifier';\nimport { JsonType, type Serializable, Serializer } from '../../serialize';\n\nexport type PacketData = {\n readonly type: string;\n readonly data: Uint8Array;\n};\n\nexport type Packet<T = unknown> = {\n readonly type: PacketType<T>;\n readonly data: T;\n};\n\nexport class PacketType<T> {\n constructor(\n public readonly id: Identifier,\n public readonly serializer: Serializable<T, Uint8Array>,\n ) { }\n\n public new(data: T): Packet<T> {\n return {\n type: this,\n data,\n };\n }\n public match(packet: Packet): packet is Packet<T> {\n return packet.type === this;\n }\n\n static createJson<T, D extends JsonType = JsonType>(identifier: Identifier, {\n name,\n serializer,\n }: {\n name: string;\n serializer?: Serializable<T, D>;\n }): PacketType<T> {\n return new PacketType<T>(\n identifier.join(name),\n Serializer.pipe<T, D, Uint8Array>(serializer ?? Serializer.noop(), Serializer.json()),\n );\n }\n\n static createSerialized<T>(identifier: Identifier, {\n name,\n serializer,\n }: {\n name: string;\n serializer: Serializable<T, Uint8Array>;\n }): PacketType<T> {\n return new PacketType(\n identifier.join(name),\n serializer,\n );\n }\n}\n"],
5
+ "mappings": "AACA,OAAsC,cAAAA,MAAkB,kBAYjD,MAAMC,CAAc,CACvB,YACoBC,EACAC,EAClB,CAFkB,QAAAD,EACA,gBAAAC,CAChB,CAEG,IAAIC,EAAoB,CAC3B,MAAO,CACH,KAAM,KACN,KAAAA,CACJ,CACJ,CACO,MAAMC,EAAqC,CAC9C,OAAOA,EAAO,OAAS,IAC3B,CAEA,OAAO,WAA6CC,EAAwB,CACxE,KAAAC,EACA,WAAAJ,CACJ,EAGkB,CACd,OAAO,IAAIF,EACPK,EAAW,KAAKC,CAAI,EACpBP,EAAW,KAAuBG,GAAcH,EAAW,KAAK,EAAGA,EAAW,KAAK,CAAC,CACxF,CACJ,CAEA,OAAO,iBAAoBM,EAAwB,CAC/C,KAAAC,EACA,WAAAJ,CACJ,EAGkB,CACd,OAAO,IAAIF,EACPK,EAAW,KAAKC,CAAI,EACpBJ,CACJ,CACJ,CACJ",
6
+ "names": ["Serializer", "PacketType", "id", "serializer", "data", "packet", "identifier", "name"]
7
+ }
@@ -0,0 +1,24 @@
1
+ import type { Address } from '../address.js';
2
+ import type { Serializable } from '../serialize';
3
+ import type { Connection, Transport } from './connection.js';
4
+ import type { Packet, PacketData } from './packet/packet.js';
5
+ export declare class WebsocketTransport implements Transport {
6
+ private readonly address;
7
+ constructor(address: Address);
8
+ private get wsEndpoint();
9
+ connect(): Promise<Connection>;
10
+ }
11
+ export declare class WebsocketConnection implements Connection {
12
+ private socket;
13
+ private readonly packetQueue;
14
+ private receiveWaiter;
15
+ private readingPromise;
16
+ private beingClosed;
17
+ constructor(socket: WebSocket);
18
+ static fromSocket(socket: WebSocket): Promise<WebsocketConnection>;
19
+ private onMessage;
20
+ receive(serializer: Serializable<Packet<unknown>, PacketData>): Promise<Packet | null>;
21
+ get closed(): boolean;
22
+ close(): void;
23
+ send(packet: Packet, serializer: Serializable<Packet<unknown>, PacketData>): void;
24
+ }
@@ -0,0 +1,2 @@
1
+ import{ByteReader as o,ByteWriter as n}from"../serialize";class d{constructor(e){this.address=e}get wsEndpoint(){const e=this.address.secure?"wss":"ws",{host:t,port:i}=this.address;return`${e}://${t}:${i}/ws`}connect(){const e=new WebSocket(this.wsEndpoint);return s.fromSocket(e)}}class s{constructor(e){this.socket=e}packetQueue=[];receiveWaiter=null;readingPromise=null;beingClosed=!1;static fromSocket(e){const t=new s(e);return new Promise((i,r)=>{e.onerror=r,e.onclose=()=>{t.beingClosed=!0,t.receiveWaiter&&(t.receiveWaiter(),t.receiveWaiter=null)},e.onmessage=a=>{t.readingPromise=t.onMessage(a).finally(()=>{t.readingPromise=null})},e.onopen=()=>{i(t)}})}async onMessage(e){if(typeof e.data=="string")throw new Error("Received string data");const t=await o.fromBlob(e.data),i={type:t.readString(),data:t.readUint8Array()};this.packetQueue.push(i),t.finish(),this.receiveWaiter&&this.receiveWaiter()}async receive(e){if(this.receiveWaiter)throw new Error("Already receiving");for(;this.packetQueue.length===0&&!this.beingClosed;)await new Promise(i=>{this.receiveWaiter=i}),this.receiveWaiter=null;if(this.packetQueue.length===0&&this.beingClosed)return null;const t=this.packetQueue.shift();return e.deserialize(t)}get closed(){return!(this.readingPromise||this.packetQueue.length>0||this.receiveWaiter||this.socket.readyState!==WebSocket.CLOSED&&this.socket.readyState!==WebSocket.CLOSING)}close(){this.socket&&this.socket.close(),this.receiveWaiter&&(this.receiveWaiter(),this.receiveWaiter=null)}send(e,t){const i=t.serialize(e),r=new n;r.writeString(i.type),r.writeUint8Array(i.data),this.socket.send(r.finish())}}export{s as WebsocketConnection,d as WebsocketTransport};
2
+ //# sourceMappingURL=websocket-transport.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/network/websocket-transport.ts"],
4
+ "sourcesContent": ["import type { Address } from '../address.js';\nimport type { Serializable } from '../serialize';\nimport { ByteReader, ByteWriter } from '../serialize';\n\nimport type { Connection, Transport } from './connection.js';\nimport type { Packet, PacketData } from './packet/packet.js';\n\nexport class WebsocketTransport implements Transport {\n constructor(\n private readonly address: Address,\n ) { }\n\n private get wsEndpoint(): string {\n const protocol = this.address.secure ? 'wss' : 'ws';\n const { host, port } = this.address;\n return `${protocol}://${host}:${port}/ws`;\n }\n\n public connect(): Promise<Connection> {\n const socket = new WebSocket(this.wsEndpoint);\n return WebsocketConnection.fromSocket(socket);\n }\n}\n\nexport class WebsocketConnection implements Connection {\n private readonly packetQueue: Array<PacketData> = [];\n private receiveWaiter: (() => void) | null = null;\n private readingPromise: Promise<void> | null = null;\n private beingClosed: boolean = false;\n\n constructor(\n private socket: WebSocket,\n ) { }\n\n public static fromSocket(socket: WebSocket): Promise<WebsocketConnection> {\n const connection = new WebsocketConnection(socket);\n return new Promise((resolve, reject) => {\n socket.onerror = reject;\n socket.onclose = () => {\n connection.beingClosed = true;\n if (connection.receiveWaiter) {\n connection.receiveWaiter();\n connection.receiveWaiter = null;\n }\n };\n socket.onmessage = (event): void => {\n connection.readingPromise = connection.onMessage(event).finally(() => {\n connection.readingPromise = null;\n });\n };\n socket.onopen = (): void => {\n resolve(connection);\n };\n });\n }\n\n private async onMessage(event: MessageEvent<string | Blob>): Promise<void> {\n if (typeof event.data === 'string') {\n throw new Error('Received string data');\n }\n const reader = await ByteReader.fromBlob(event.data);\n const data = {\n type: reader.readString(),\n data: reader.readUint8Array(),\n };\n this.packetQueue.push(data);\n reader.finish();\n if (this.receiveWaiter) {\n this.receiveWaiter();\n }\n }\n\n public async receive(serializer: Serializable<Packet<unknown>, PacketData>): Promise<Packet | null> {\n if (this.receiveWaiter) {\n throw new Error('Already receiving');\n }\n while (this.packetQueue.length === 0 && !this.beingClosed) {\n await new Promise<void>((resolve) => {\n this.receiveWaiter = resolve;\n });\n this.receiveWaiter = null;\n }\n if (this.packetQueue.length === 0 && this.beingClosed) {\n return null;\n }\n const packetData = this.packetQueue.shift()!;\n return serializer.deserialize(packetData);\n }\n\n get closed(): boolean {\n if (this.readingPromise) {\n return false;\n }\n if (this.packetQueue.length > 0) {\n return false;\n }\n if (this.receiveWaiter) {\n return false;\n }\n if (this.socket.readyState !== WebSocket.CLOSED && this.socket.readyState !== WebSocket.CLOSING) {\n return false;\n }\n return true;\n }\n\n close(): void {\n if (this.socket) {\n this.socket.close();\n }\n if (this.receiveWaiter) {\n this.receiveWaiter();\n this.receiveWaiter = null;\n }\n }\n\n send(packet: Packet, serializer: Serializable<Packet<unknown>, PacketData>): void {\n const packetData = serializer.serialize(packet);\n const writer = new ByteWriter();\n writer.writeString(packetData.type);\n writer.writeUint8Array(packetData.data);\n this.socket.send(writer.finish());\n }\n}\n"],
5
+ "mappings": "AAEA,OAAS,cAAAA,EAAY,cAAAC,MAAkB,eAKhC,MAAMC,CAAwC,CACjD,YACqBC,EACnB,CADmB,aAAAA,CACjB,CAEJ,IAAY,YAAqB,CAC7B,MAAMC,EAAW,KAAK,QAAQ,OAAS,MAAQ,KACzC,CAAE,KAAAC,EAAM,KAAAC,CAAK,EAAI,KAAK,QAC5B,MAAO,GAAGF,CAAQ,MAAMC,CAAI,IAAIC,CAAI,KACxC,CAEO,SAA+B,CAClC,MAAMC,EAAS,IAAI,UAAU,KAAK,UAAU,EAC5C,OAAOC,EAAoB,WAAWD,CAAM,CAChD,CACJ,CAEO,MAAMC,CAA0C,CAMnD,YACYD,EACV,CADU,YAAAA,CACR,CAPa,YAAiC,CAAC,EAC3C,cAAqC,KACrC,eAAuC,KACvC,YAAuB,GAM/B,OAAc,WAAWA,EAAiD,CACtE,MAAME,EAAa,IAAID,EAAoBD,CAAM,EACjD,OAAO,IAAI,QAAQ,CAACG,EAASC,IAAW,CACpCJ,EAAO,QAAUI,EACjBJ,EAAO,QAAU,IAAM,CACnBE,EAAW,YAAc,GACrBA,EAAW,gBACXA,EAAW,cAAc,EACzBA,EAAW,cAAgB,KAEnC,EACAF,EAAO,UAAaK,GAAgB,CAChCH,EAAW,eAAiBA,EAAW,UAAUG,CAAK,EAAE,QAAQ,IAAM,CAClEH,EAAW,eAAiB,IAChC,CAAC,CACL,EACAF,EAAO,OAAS,IAAY,CACxBG,EAAQD,CAAU,CACtB,CACJ,CAAC,CACL,CAEA,MAAc,UAAUG,EAAmD,CACvE,GAAI,OAAOA,EAAM,MAAS,SACtB,MAAM,IAAI,MAAM,sBAAsB,EAE1C,MAAMC,EAAS,MAAMb,EAAW,SAASY,EAAM,IAAI,EAC7CE,EAAO,CACT,KAAMD,EAAO,WAAW,EACxB,KAAMA,EAAO,eAAe,CAChC,EACA,KAAK,YAAY,KAAKC,CAAI,EAC1BD,EAAO,OAAO,EACV,KAAK,eACL,KAAK,cAAc,CAE3B,CAEA,MAAa,QAAQE,EAA+E,CAChG,GAAI,KAAK,cACL,MAAM,IAAI,MAAM,mBAAmB,EAEvC,KAAO,KAAK,YAAY,SAAW,GAAK,CAAC,KAAK,aAC1C,MAAM,IAAI,QAAeL,GAAY,CACjC,KAAK,cAAgBA,CACzB,CAAC,EACD,KAAK,cAAgB,KAEzB,GAAI,KAAK,YAAY,SAAW,GAAK,KAAK,YACtC,OAAO,KAEX,MAAMM,EAAa,KAAK,YAAY,MAAM,EAC1C,OAAOD,EAAW,YAAYC,CAAU,CAC5C,CAEA,IAAI,QAAkB,CAUlB,MATI,OAAK,gBAGL,KAAK,YAAY,OAAS,GAG1B,KAAK,eAGL,KAAK,OAAO,aAAe,UAAU,QAAU,KAAK,OAAO,aAAe,UAAU,QAI5F,CAEA,OAAc,CACN,KAAK,QACL,KAAK,OAAO,MAAM,EAElB,KAAK,gBACL,KAAK,cAAc,EACnB,KAAK,cAAgB,KAE7B,CAEA,KAAKC,EAAgBF,EAA6D,CAC9E,MAAMC,EAAaD,EAAW,UAAUE,CAAM,EACxCC,EAAS,IAAIjB,EACnBiB,EAAO,YAAYF,EAAW,IAAI,EAClCE,EAAO,gBAAgBF,EAAW,IAAI,EACtC,KAAK,OAAO,KAAKE,EAAO,OAAO,CAAC,CACpC,CACJ",
6
+ "names": ["ByteReader", "ByteWriter", "WebsocketTransport", "address", "protocol", "host", "port", "socket", "WebsocketConnection", "connection", "resolve", "reject", "event", "reader", "data", "serializer", "packetData", "packet", "writer"]
7
+ }
package/dist/omu.d.ts ADDED
@@ -0,0 +1,61 @@
1
+ import { ExtensionRegistry } from './api';
2
+ import { type AssetExtension } from './api/asset/extension';
3
+ import { type DashboardExtension } from './api/dashboard/extension';
4
+ import { type EndpointExtension } from './api/endpoint/extension';
5
+ import { HttpExtension } from './api/http/extension';
6
+ import { type I18nExtension } from './api/i18n/extension';
7
+ import { type LoggerExtension } from './api/logger/extension.js';
8
+ import { type PermissionExtension } from './api/permission/extension';
9
+ import { type PluginExtension } from './api/plugin/extension';
10
+ import { type RegistryExtension } from './api/registry/extension';
11
+ import { type ServerExtension } from './api/server/extension';
12
+ import { SessionExtension } from './api/session';
13
+ import { type SignalExtension } from './api/signal/extension';
14
+ import { type TableExtension } from './api/table/extension';
15
+ import type { App } from './app.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';
21
+ import type { PacketType } from './network/packet/packet.js';
22
+ import { type SessioTokenProvider } from './token.js';
23
+ export type ClientEvents = {
24
+ started: EventEmitter<[]>;
25
+ stopped: EventEmitter<[]>;
26
+ ready: EventEmitter<[]>;
27
+ };
28
+ export declare class Omu {
29
+ readonly app: App;
30
+ ready: boolean;
31
+ running: boolean;
32
+ readonly event: ClientEvents;
33
+ readonly token: SessioTokenProvider;
34
+ readonly address: Address;
35
+ readonly sessions: SessionExtension;
36
+ readonly network: Network;
37
+ readonly endpoints: EndpointExtension;
38
+ readonly permissions: PermissionExtension;
39
+ readonly plugins: PluginExtension;
40
+ readonly dashboard: DashboardExtension;
41
+ readonly extensions: ExtensionRegistry;
42
+ readonly tables: TableExtension;
43
+ readonly registries: RegistryExtension;
44
+ readonly signals: SignalExtension;
45
+ readonly assets: AssetExtension;
46
+ readonly i18n: I18nExtension;
47
+ readonly server: ServerExtension;
48
+ readonly logger: LoggerExtension;
49
+ readonly http: HttpExtension;
50
+ constructor(app: App, options?: {
51
+ address?: Address;
52
+ token?: SessioTokenProvider | string;
53
+ transport?: Transport;
54
+ connection?: Connection;
55
+ });
56
+ send<T>(packetType: PacketType<T>, data: T): void;
57
+ start(): Promise<void>;
58
+ stop(): void;
59
+ onReady(callback: () => void): Unlisten;
60
+ waitForReady(): Promise<void>;
61
+ }
package/dist/omu.js ADDED
@@ -0,0 +1,2 @@
1
+ import{ExtensionRegistry as i}from"./api";import{ASSET_EXTENSION_TYPE as r}from"./api/asset/extension";import{DASHBOARD_EXTENSION_TYPE as o}from"./api/dashboard/extension";import{ENDPOINT_EXTENSION_TYPE as a}from"./api/endpoint/extension";import{HTTP_EXTENSION_TYPE as E}from"./api/http/extension";import{I18N_EXTENSION_TYPE as d}from"./api/i18n/extension";import{LOGGER_EXTENSION_TYPE as p}from"./api/logger/extension.js";import{PERMISSION_EXTENSION_TYPE as h}from"./api/permission/extension";import{PLUGIN_EXTENSION_TYPE as l}from"./api/plugin/extension";import{REGISTRY_EXTENSION_TYPE as m}from"./api/registry/extension";import{SERVER_EXTENSION_TYPE as y}from"./api/server/extension";import{SESSION_EXTENSION_TYPE as T}from"./api/session";import{SIGNAL_EXTENSION_TYPE as x}from"./api/signal/extension";import{TABLE_EXTENSION_TYPE as g}from"./api/table/extension";import{EventEmitter as s}from"./event";import{Network as f}from"./network";import{PACKET_TYPES as c}from"./network/packet/packet-types.js";import{WebsocketTransport as N}from"./network/websocket-transport";import{BrowserSession as S}from"./token.js";class V{constructor(t,e){this.app=t;if(this.ready=!1,this.running=!1,typeof e?.token=="string"){const n=e?.token;this.token={get:()=>Promise.resolve(n)}}else this.token=e?.token??new S;this.address=e?.address??{host:"127.0.0.1",port:26423,secure:!1},this.network=new f(this,this.address,this.token,e?.transport??new N(this.address),e?.connection),this.network.event.disconnected.listen(()=>{this.ready=!1}),this.network.addPacketHandler(c.READY,()=>{if(this.ready)throw new Error("Received READY packet when already ready");this.ready=!0,this.event.ready.emit()}),this.extensions=new i(this),this.endpoints=this.extensions.register(a),this.plugins=this.extensions.register(l),this.permissions=this.extensions.register(h),this.tables=this.extensions.register(g),this.sessions=this.extensions.register(T),this.registries=this.extensions.register(m),this.dashboard=this.extensions.register(o),this.signals=this.extensions.register(x),this.assets=this.extensions.register(r),this.i18n=this.extensions.register(d),this.server=this.extensions.register(y),this.logger=this.extensions.register(p),this.http=this.extensions.register(E)}ready;running;event={started:new s,stopped:new s,ready:new s};token;address;sessions;network;endpoints;permissions;plugins;dashboard;extensions;tables;registries;signals;assets;i18n;server;logger;http;send(t,e){this.network.send({type:t,data:e})}async start(){if(this.running)throw new Error("Client already running");this.running=!0;const t=this.network.connect();this.event.started.emit(),await t}stop(){this.running=!1,this.ready=!1,this.network.close(),this.event.stopped.emit()}onReady(t){return this.ready&&t(),this.event.ready.listen(t)}async waitForReady(){if(!this.ready)return new Promise(t=>{let e=()=>{};e=this.event.ready.listen(()=>{e(),t()})})}}export{V as Omu};
2
+ //# sourceMappingURL=omu.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/omu.ts"],
4
+ "sourcesContent": ["import { ExtensionRegistry } from './api';\nimport { ASSET_EXTENSION_TYPE, type AssetExtension } from './api/asset/extension';\nimport { DASHBOARD_EXTENSION_TYPE, type DashboardExtension } from './api/dashboard/extension';\nimport { ENDPOINT_EXTENSION_TYPE, type EndpointExtension } from './api/endpoint/extension';\nimport { HTTP_EXTENSION_TYPE, HttpExtension } from './api/http/extension';\nimport { I18N_EXTENSION_TYPE, type I18nExtension } from './api/i18n/extension';\nimport { LOGGER_EXTENSION_TYPE, type LoggerExtension } from './api/logger/extension.js';\nimport { PERMISSION_EXTENSION_TYPE, type PermissionExtension } from './api/permission/extension';\nimport { PLUGIN_EXTENSION_TYPE, type PluginExtension } from './api/plugin/extension';\nimport { REGISTRY_EXTENSION_TYPE, type RegistryExtension } from './api/registry/extension';\nimport { SERVER_EXTENSION_TYPE, type ServerExtension } from './api/server/extension';\nimport { SESSION_EXTENSION_TYPE, SessionExtension } from './api/session';\nimport { SIGNAL_EXTENSION_TYPE, type SignalExtension } from './api/signal/extension';\nimport { TABLE_EXTENSION_TYPE, type TableExtension } from './api/table/extension';\nimport type { App } from './app.js';\nimport type { Unlisten } from './event';\nimport { EventEmitter } from './event';\nimport type { Address, Connection } from './network';\nimport { Network } from './network';\nimport { Transport } from './network/connection.js';\nimport { PACKET_TYPES } from './network/packet/packet-types.js';\nimport type { PacketType } from './network/packet/packet.js';\nimport { WebsocketTransport } from './network/websocket-transport';\nimport { BrowserSession, type SessioTokenProvider } from './token.js';\n\nexport type ClientEvents = {\n started: EventEmitter<[]>;\n stopped: EventEmitter<[]>;\n ready: EventEmitter<[]>;\n};\n\nexport class Omu {\n public ready: boolean;\n public running: boolean;\n readonly event: ClientEvents = {\n started: new EventEmitter(),\n stopped: new EventEmitter(),\n ready: new EventEmitter(),\n };\n readonly token: SessioTokenProvider;\n readonly address: Address;\n readonly sessions: SessionExtension;\n readonly network: Network;\n readonly endpoints: EndpointExtension;\n readonly permissions: PermissionExtension;\n readonly plugins: PluginExtension;\n readonly dashboard: DashboardExtension;\n readonly extensions: ExtensionRegistry;\n readonly tables: TableExtension;\n readonly registries: RegistryExtension;\n readonly signals: SignalExtension;\n readonly assets: AssetExtension;\n readonly i18n: I18nExtension;\n readonly server: ServerExtension;\n readonly logger: LoggerExtension;\n readonly http: HttpExtension;\n\n constructor(\n public readonly app: App,\n options?: {\n address?: Address;\n token?: SessioTokenProvider | string;\n transport?: Transport;\n connection?: Connection;\n },\n ) {\n this.ready = false;\n this.running = false;\n if (typeof options?.token === 'string') {\n const token = options?.token;\n this.token = {\n get: () => Promise.resolve(token),\n };\n } else {\n this.token = options?.token ?? new BrowserSession();\n }\n this.address = options?.address ?? {\n host: '127.0.0.1',\n port: 26423,\n secure: false,\n };\n this.network = new Network(\n this,\n this.address,\n this.token,\n options?.transport ?? new WebsocketTransport(this.address),\n options?.connection,\n );\n this.network.event.disconnected.listen(() => {\n this.ready = false;\n });\n this.network.addPacketHandler(PACKET_TYPES.READY, () => {\n if (this.ready) {\n throw new Error('Received READY packet when already ready');\n }\n this.ready = true;\n this.event.ready.emit();\n });\n this.extensions = new ExtensionRegistry(this);\n this.endpoints = this.extensions.register(ENDPOINT_EXTENSION_TYPE);\n this.plugins = this.extensions.register(PLUGIN_EXTENSION_TYPE);\n this.permissions = this.extensions.register(PERMISSION_EXTENSION_TYPE);\n this.tables = this.extensions.register(TABLE_EXTENSION_TYPE);\n this.sessions = this.extensions.register(SESSION_EXTENSION_TYPE);\n this.registries = this.extensions.register(REGISTRY_EXTENSION_TYPE);\n this.dashboard = this.extensions.register(DASHBOARD_EXTENSION_TYPE);\n this.signals = this.extensions.register(SIGNAL_EXTENSION_TYPE);\n this.assets = this.extensions.register(ASSET_EXTENSION_TYPE);\n this.i18n = this.extensions.register(I18N_EXTENSION_TYPE);\n this.server = this.extensions.register(SERVER_EXTENSION_TYPE);\n this.logger = this.extensions.register(LOGGER_EXTENSION_TYPE);\n this.http = this.extensions.register(HTTP_EXTENSION_TYPE);\n }\n\n public send<T>(packetType: PacketType<T>, data: T): void {\n this.network.send({\n type: packetType,\n data,\n });\n }\n\n public async start(): Promise<void> {\n if (this.running) {\n throw new Error('Client already running');\n }\n this.running = true;\n const connect = this.network.connect();\n this.event.started.emit();\n await connect;\n }\n\n public stop(): void {\n this.running = false;\n this.ready = false;\n this.network.close();\n this.event.stopped.emit();\n }\n\n public onReady(callback: () => void): Unlisten {\n if (this.ready) {\n callback();\n }\n return this.event.ready.listen(callback);\n }\n\n public async waitForReady(): Promise<void> {\n if (this.ready) return;\n return new Promise<void>((resolve) => {\n let unlisten = () => {};\n unlisten = this.event.ready.listen(() => {\n unlisten();\n resolve();\n });\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ExtensionRegistry", "ASSET_EXTENSION_TYPE", "DASHBOARD_EXTENSION_TYPE", "ENDPOINT_EXTENSION_TYPE", "HTTP_EXTENSION_TYPE", "I18N_EXTENSION_TYPE", "LOGGER_EXTENSION_TYPE", "PERMISSION_EXTENSION_TYPE", "PLUGIN_EXTENSION_TYPE", "REGISTRY_EXTENSION_TYPE", "SERVER_EXTENSION_TYPE", "SESSION_EXTENSION_TYPE", "SIGNAL_EXTENSION_TYPE", "TABLE_EXTENSION_TYPE", "EventEmitter", "Network", "PACKET_TYPES", "WebsocketTransport", "BrowserSession", "Omu", "app", "options", "token", "packetType", "data", "connect", "callback", "resolve", "unlisten"]
7
+ }
@@ -0,0 +1,26 @@
1
+ export type Success<T> = {
2
+ data: T;
3
+ error: null;
4
+ };
5
+ export type Failure<E> = {
6
+ data: null;
7
+ error: E;
8
+ };
9
+ export type Result<T, E = Error> = Success<T> | Failure<E>;
10
+ export declare function tryCatch<T, E = Error>(promise: Promise<T>): Promise<Result<T, E>>;
11
+ export declare function success<T>(data: T): Result<T>;
12
+ export declare function failure<E>(error: E): Result<null, E>;
13
+ export declare class PromiseResult<T, E = Error> implements Promise<T> {
14
+ private readonly promise;
15
+ private constructor();
16
+ static create<T, E = Error>(): {
17
+ promise: PromiseResult<T, E>;
18
+ resolve: (value: T) => void;
19
+ reject: (error: E) => void;
20
+ };
21
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: E) => TResult2 | PromiseLike<TResult2>) | null | undefined): Promise<TResult1 | TResult2>;
22
+ catch<TResult = never>(onrejected?: ((reason: E) => TResult | PromiseLike<TResult>) | null | undefined): Promise<T | TResult>;
23
+ finally(onfinally?: (() => void) | null | undefined): Promise<T>;
24
+ [Symbol.toStringTag]: string;
25
+ toResult(): Promise<Result<T, E>>;
26
+ }
package/dist/result.js ADDED
@@ -0,0 +1,2 @@
1
+ async function n(r){try{return{data:await r,error:null}}catch(e){return{data:null,error:e}}}function i(r){return{data:r,error:null}}function a(r){return{data:null,error:r}}class s{constructor(e){this.promise=e}static create(){let e=()=>{},t=()=>{};const l=new Promise((o,u)=>{e=o,t=u});return{promise:new s(l),resolve:e,reject:t}}then(e,t){return this.promise.then(e,t)}catch(e){return this.promise.catch(e)}finally(e){return this.promise.finally(e)}[Symbol.toStringTag]="ResultPromise";async toResult(){try{return{data:await this.promise,error:null}}catch(e){return{data:null,error:e}}}}export{s as PromiseResult,a as failure,i as success,n as tryCatch};
2
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/result.ts"],
4
+ "sourcesContent": ["export type Success<T> = {\n data: T;\n error: null;\n};\n\nexport type Failure<E> = {\n data: null;\n error: E;\n};\n\nexport type Result<T, E = Error> = Success<T> | Failure<E>;\n\nexport async function tryCatch<T, E = Error>(\n promise: Promise<T>,\n): Promise<Result<T, E>> {\n try {\n const data = await promise;\n return { data, error: null };\n } catch (error) {\n return { data: null, error: error as E };\n }\n}\n\nexport function success<T>(data: T): Result<T> {\n return { data, error: null };\n}\n\nexport function failure<E>(error: E): Result<null, E> {\n return { data: null, error };\n}\n\nexport class PromiseResult<T, E = Error> implements Promise<T> {\n private constructor(\n private readonly promise: Promise<T>,\n ) {}\n\n public static create<T, E = Error>(): { promise: PromiseResult<T, E>; resolve: (value: T) => void; reject: (error: E) => void } {\n let resolve: (value: T) => void = () => {};\n let reject: (error: E) => void = () => {};\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return {\n promise: new PromiseResult<T, E>(promise),\n resolve,\n reject,\n };\n }\n\n then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: E) => TResult2 | PromiseLike<TResult2>) | null | undefined): Promise<TResult1 | TResult2> {\n return this.promise.then(onfulfilled, onrejected);\n }\n\n catch<TResult = never>(onrejected?: ((reason: E) => TResult | PromiseLike<TResult>) | null | undefined): Promise<T | TResult> {\n return this.promise.catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null | undefined): Promise<T> {\n return this.promise.finally(onfinally);\n }\n\n [Symbol.toStringTag]: string = 'ResultPromise';\n\n async toResult(): Promise<Result<T, E>> {\n try {\n return {\n data: await this.promise,\n error: null,\n };\n } catch (err) {\n return {\n data: null,\n error: err as E,\n };\n }\n }\n}\n"],
5
+ "mappings": "AAYA,eAAsBA,EAClBC,EACqB,CACrB,GAAI,CAEA,MAAO,CAAE,KADI,MAAMA,EACJ,MAAO,IAAK,CAC/B,OAASC,EAAO,CACZ,MAAO,CAAE,KAAM,KAAM,MAAOA,CAAW,CAC3C,CACJ,CAEO,SAASC,EAAWC,EAAoB,CAC3C,MAAO,CAAE,KAAAA,EAAM,MAAO,IAAK,CAC/B,CAEO,SAASC,EAAWH,EAA2B,CAClD,MAAO,CAAE,KAAM,KAAM,MAAAA,CAAM,CAC/B,CAEO,MAAMI,CAAkD,CACnD,YACaL,EACnB,CADmB,aAAAA,CAClB,CAEH,OAAc,QAAkH,CAC5H,IAAIM,EAA8B,IAAM,CAAC,EACrCC,EAA6B,IAAM,CAAC,EACxC,MAAMP,EAAU,IAAI,QAAW,CAACQ,EAAKC,IAAQ,CACzCH,EAAUE,EACVD,EAASE,CACb,CAAC,EACD,MAAO,CACH,QAAS,IAAIJ,EAAoBL,CAAO,EACxC,QAAAM,EACA,OAAAC,CACJ,CACJ,CAEA,KAAqCG,EAAmFC,EAAiH,CACrO,OAAO,KAAK,QAAQ,KAAKD,EAAaC,CAAU,CACpD,CAEA,MAAuBA,EAAuG,CAC1H,OAAO,KAAK,QAAQ,MAAMA,CAAU,CACxC,CAEA,QAAQC,EAAyD,CAC7D,OAAO,KAAK,QAAQ,QAAQA,CAAS,CACzC,CAEA,CAAC,OAAO,WAAW,EAAY,gBAE/B,MAAM,UAAkC,CACpC,GAAI,CACA,MAAO,CACH,KAAM,MAAM,KAAK,QACjB,MAAO,IACX,CACJ,OAASC,EAAK,CACV,MAAO,CACH,KAAM,KACN,MAAOA,CACX,CACJ,CACJ,CACJ",
6
+ "names": ["tryCatch", "promise", "error", "success", "data", "failure", "PromiseResult", "resolve", "reject", "res", "rej", "onfulfilled", "onrejected", "onfinally", "err"]
7
+ }
@@ -0,0 +1,73 @@
1
+ import { JsonType } from './serializer.js';
2
+ export declare class Flags {
3
+ private value;
4
+ private length;
5
+ constructor(options: {
6
+ value?: number;
7
+ length?: number;
8
+ });
9
+ has(position: number): boolean;
10
+ get(position: number): boolean;
11
+ ifSet<T>(position: number, callback: () => T): T | undefined;
12
+ set(position: number, value: boolean): void;
13
+ write(writer: ByteWriter): void;
14
+ static read(reader: ByteReader, length: number): Flags;
15
+ }
16
+ export declare class ByteWriter {
17
+ private dataView;
18
+ private buffer;
19
+ private offset;
20
+ private finished;
21
+ constructor(init?: ArrayBuffer, offset?: number);
22
+ static fromUint8Array(buffer: Uint8Array): ByteWriter;
23
+ private allocate;
24
+ write(data: Uint8Array): ByteWriter;
25
+ writeBoolean(value: boolean): ByteWriter;
26
+ writeInt8(value: number): ByteWriter;
27
+ writeUint8(value: number): ByteWriter;
28
+ writeInt16(value: number): ByteWriter;
29
+ writeUint16(value: number): ByteWriter;
30
+ writeInt32(value: number): ByteWriter;
31
+ writeUint32(value: number): ByteWriter;
32
+ writeInt64(value: bigint): ByteWriter;
33
+ writeUint64(value: bigint): ByteWriter;
34
+ writeULEB128(value: number): ByteWriter;
35
+ writeFloat16(value: number): ByteWriter;
36
+ writeFloat32(value: number): ByteWriter;
37
+ writeFloat64(value: number): ByteWriter;
38
+ writeUint8Array(value: Uint8Array): ByteWriter;
39
+ writeString(value: string): ByteWriter;
40
+ writeJSON(value: JsonType): ByteWriter;
41
+ writeFlags(flags: Flags): ByteWriter;
42
+ finish(): Uint8Array;
43
+ toUint8Array(): Uint8Array;
44
+ toArrayBuffer(): ArrayBuffer;
45
+ }
46
+ export declare class ByteReader {
47
+ private dataView;
48
+ private offset;
49
+ private finished;
50
+ private constructor();
51
+ static fromUint8Array(buffer: Uint8Array): ByteReader;
52
+ static fromArrayBuffer(buffer: ArrayBuffer): ByteReader;
53
+ static fromBlob(blob: Blob): Promise<ByteReader>;
54
+ read(size: number): Uint8Array;
55
+ readBoolean(): boolean;
56
+ readInt8(): number;
57
+ readUint8(): number;
58
+ readInt16(): number;
59
+ readUint16(): number;
60
+ readInt32(): number;
61
+ readUint32(): number;
62
+ readInt64(): bigint;
63
+ readUint64(): bigint;
64
+ readULEB128(): number;
65
+ readFloat16(): number;
66
+ readFloat32(): number;
67
+ readFloat64(): number;
68
+ readUint8Array(): Uint8Array;
69
+ readString(): string;
70
+ readJSON<T extends JsonType>(): T;
71
+ readFlags(length: number): Flags;
72
+ finish(): void;
73
+ }
@@ -0,0 +1,2 @@
1
+ import{textDecoder as l,textEncoder as b}from"../const.js";class h{value;length;constructor(t){this.value=t.value??0,this.length=t.length??32}has(t){return(this.value&1<<t)!==0}get(t){return(this.value&1<<t)!==0}ifSet(t,e){if(this.has(t))return e()}set(t,e){e?this.value|=1<<t:this.value&=~(1<<t)}write(t){const e=new Uint8Array((this.length+7)/8);for(let i=0;i<e.length;i++)e[i]=this.value>>i*8&255;t.write(e)}static read(t,e){let i=0;for(let r=0;r<(e+7)/8;r++)i|=t.readUint8()<<r*8;return new h({value:i,length:e})}}function c(s,t){const e=s.getUint16(t)&32768?-1:1,i=(s.getUint16(t)&31744)>>10,r=s.getUint16(t)&1023;if(i===0&&r===0)return 0;if(i===31)return r===0?1/0*e:NaN;{const f=i-15,n=r/1024;return e*Math.pow(2,f)*(1+n)}}function w(s,t,e){if(e===0){s.setUint16(t,0);return}const i=e<0?1:0;if(e=Math.abs(e),!isFinite(e)){s.setUint16(t,31744|i<<15);return}const r=Math.floor(Math.log2(e)),f=e/Math.pow(2,r)-1,n=r+15,u=Math.round(f*1024);n<=0?s.setUint16(t,i<<15):n>=31?s.setUint16(t,31744|i<<15):s.setUint16(t,i<<15|n<<10|u)}class o{dataView;buffer;offset=0;finished=!1;constructor(t,e){this.offset=e??0,this.buffer=t??new ArrayBuffer(1024),this.dataView=new DataView(this.buffer)}static fromUint8Array(t){const e=new ArrayBuffer(t.byteLength);return new Uint8Array(e).set(new Uint8Array(t)),new o(e,t.byteLength)}allocate(t){if(this.offset+t>this.buffer.byteLength){const e=Math.max(this.buffer.byteLength*2,this.offset+t),i=new ArrayBuffer(e);new Uint8Array(i).set(new Uint8Array(this.buffer)),this.buffer=i,this.dataView=new DataView(this.buffer)}}write(t){if(this.finished)throw new Error("Buffer already finished");return this.allocate(t.length),new Uint8Array(this.buffer).set(t,this.offset),this.offset+=t.length,this}writeBoolean(t){return this.allocate(1),this.dataView.setInt8(this.offset,t?1:0),this.offset+=1,this}writeInt8(t){return this.allocate(1),this.dataView.setInt8(this.offset,t),this.offset+=1,this}writeUint8(t){return this.allocate(1),this.dataView.setUint8(this.offset,t),this.offset+=1,this}writeInt16(t){return this.allocate(2),this.dataView.setInt16(this.offset,t),this.offset+=2,this}writeUint16(t){return this.allocate(2),this.dataView.setUint16(this.offset,t),this.offset+=2,this}writeInt32(t){return this.allocate(4),this.dataView.setInt32(this.offset,t),this.offset+=4,this}writeUint32(t){return this.allocate(4),this.dataView.setUint32(this.offset,t),this.offset+=4,this}writeInt64(t){return this.allocate(8),this.dataView.setBigInt64(this.offset,t),this.offset+=8,this}writeUint64(t){return this.allocate(8),this.dataView.setBigUint64(this.offset,t),this.offset+=8,this}writeULEB128(t){if(t<0)throw new Error("Value must be non-negative");for(;t>127;)this.allocate(1),this.dataView.setUint8(this.offset,t&127|128),this.offset+=1,t>>=7;return this.allocate(1),this.dataView.setUint8(this.offset,t&127),this.offset+=1,this}writeFloat16(t){return this.allocate(2),w(this.dataView,this.offset,t),this.offset+=2,this}writeFloat32(t){return this.allocate(4),this.dataView.setFloat32(this.offset,t),this.offset+=4,this}writeFloat64(t){return this.allocate(4),this.dataView.setFloat64(this.offset,t),this.offset+=4,this}writeUint8Array(t){return this.writeULEB128(t.byteLength),this.write(t),this}writeString(t){return this.writeUint8Array(b.encode(t)),this}writeJSON(t){return this.writeString(JSON.stringify(t)),this}writeFlags(t){return t.write(this),this}finish(){if(this.finished)throw new Error("Buffer already finished");return this.finished=!0,new Uint8Array(this.buffer,0,this.offset)}toUint8Array(){return new Uint8Array(this.buffer,0,this.offset)}toArrayBuffer(){return this.buffer.slice(0,this.offset)}}class a{dataView;offset;finished;constructor(t){this.dataView=t,this.offset=0,this.finished=!1}static fromUint8Array(t){const e=new ArrayBuffer(t.byteLength);new Uint8Array(e).set(new Uint8Array(t));const r=new DataView(e);return new a(r)}static fromArrayBuffer(t){const e=new DataView(t);return new a(e)}static async fromBlob(t){const e=await t.arrayBuffer(),i=new DataView(e);return new a(i)}read(t){if(this.finished)throw new Error("Buffer already finished");if(t<0)throw new Error("Size must be positive");if(this.offset+t>this.dataView.byteLength)throw new Error("Buffer not fully read");const e=new Uint8Array(this.dataView.buffer.slice(this.offset,this.offset+t));return this.offset+=t,e}readBoolean(){const t=this.dataView.getInt8(this.offset);return this.offset+=1,t!==0}readInt8(){const t=this.dataView.getInt8(this.offset);return this.offset+=1,t}readUint8(){const t=this.dataView.getUint8(this.offset);return this.offset+=1,t}readInt16(){const t=this.dataView.getInt16(this.offset);return this.offset+=2,t}readUint16(){const t=this.dataView.getUint16(this.offset);return this.offset+=2,t}readInt32(){const t=this.dataView.getInt32(this.offset);return this.offset+=4,t}readUint32(){const t=this.dataView.getUint32(this.offset);return this.offset+=4,t}readInt64(){const t=this.dataView.getBigInt64(this.offset);return this.offset+=8,t}readUint64(){const t=this.dataView.getBigUint64(this.offset);return this.offset+=8,t}readULEB128(){let t=0,e=0,i;do{if(this.offset>=this.dataView.byteLength)throw new Error("Buffer not fully read");i=this.dataView.getUint8(this.offset),this.offset+=1,t|=(i&127)<<e,e+=7}while((i&128)!==0);return t}readFloat16(){const t=c(this.dataView,this.offset);return this.offset+=2,t}readFloat32(){const t=this.dataView.getFloat32(this.offset);return this.offset+=4,t}readFloat64(){const t=this.dataView.getFloat64(this.offset);return this.offset+=8,t}readUint8Array(){const t=this.readULEB128();return this.read(t)}readString(){const t=this.readUint8Array();return l.decode(t)}readJSON(){return JSON.parse(this.readString())}readFlags(t){return h.read(this,t)}finish(){if(this.finished)throw new Error("Buffer already finished");if(this.finished=!0,this.offset!==this.dataView.byteLength)throw new Error("Buffer not fully read")}}export{a as ByteReader,o as ByteWriter,h as Flags};
2
+ //# sourceMappingURL=bytebuffer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/serialize/bytebuffer.ts"],
4
+ "sourcesContent": ["import { textDecoder, textEncoder } from '../const.js';\nimport { JsonType } from './serializer.js';\n\nexport class Flags {\n private value: number;\n private length: number;\n\n constructor(options: { value?: number; length?: number }) {\n this.value = options.value ?? 0;\n this.length = options.length ?? 32;\n }\n\n public has(position: number): boolean {\n return (this.value & (1 << position)) !== 0;\n }\n\n public get(position: number): boolean {\n return (this.value & (1 << position)) !== 0;\n }\n\n public ifSet<T>(position: number, callback: () => T): T | undefined {\n if (this.has(position)) {\n return callback();\n }\n return undefined;\n }\n\n public set(position: number, value: boolean): void {\n if (value) {\n this.value |= 1 << position;\n } else {\n this.value &= ~(1 << position);\n }\n }\n\n public write(writer: ByteWriter): void {\n const bits = new Uint8Array((this.length + 7) / 8);\n for (let i = 0; i < bits.length; i++) {\n bits[i] = (this.value >> (i * 8)) & 0xff;\n }\n writer.write(bits);\n }\n\n public static read(reader: ByteReader, length: number): Flags {\n let value = 0;\n for (let i = 0; i < (length + 7) / 8; i++) {\n value |= reader.readUint8() << (i * 8);\n }\n return new Flags({ value, length });\n }\n}\n\nfunction readFloat16(dataView: DataView, offset: number): number {\n const sign = (dataView.getUint16(offset) & 0x8000) ? -1 : 1;\n const exponent = (dataView.getUint16(offset) & 0x7c00) >> 10;\n const mantissa = (dataView.getUint16(offset) & 0x03ff);\n if (exponent === 0 && mantissa === 0) {\n return 0;\n } else if (exponent === 0x1f) {\n return mantissa === 0 ? Infinity * sign : NaN;\n } else {\n const normalizedExponent = exponent - 15;\n const normalizedMantissa = mantissa / 1024;\n return sign * Math.pow(2, normalizedExponent) * (1 + normalizedMantissa);\n }\n}\n\nfunction writeFloat16(dataView: DataView, offset: number, value: number): void {\n if (value === 0) {\n dataView.setUint16(offset, 0);\n return;\n }\n const sign = value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (!isFinite(value)) {\n dataView.setUint16(offset, 0x7c00 | (sign << 15));\n return;\n }\n const exponent = Math.floor(Math.log2(value));\n const mantissa = value / Math.pow(2, exponent) - 1;\n const normalizedExponent = exponent + 15;\n const normalizedMantissa = Math.round(mantissa * 1024);\n if (normalizedExponent <= 0) {\n dataView.setUint16(offset, sign << 15);\n } else if (normalizedExponent >= 0x1f) {\n dataView.setUint16(offset, 0x7c00 | (sign << 15));\n } else {\n dataView.setUint16(offset, (sign << 15) | (normalizedExponent << 10) | normalizedMantissa);\n }\n}\n\nexport class ByteWriter {\n private dataView: DataView;\n private buffer: ArrayBuffer;\n private offset = 0;\n private finished = false;\n\n constructor(init?: ArrayBuffer, offset?: number) {\n this.offset = offset ?? 0;\n this.buffer = init ?? new ArrayBuffer(1024);\n this.dataView = new DataView(this.buffer);\n }\n\n public static fromUint8Array(buffer: Uint8Array): ByteWriter {\n const arrayBuffer = new ArrayBuffer(buffer.byteLength);\n const uint8Array = new Uint8Array(arrayBuffer);\n uint8Array.set(new Uint8Array(buffer));\n return new ByteWriter(arrayBuffer, buffer.byteLength);\n }\n\n private allocate(length: number): void {\n if (this.offset + length > this.buffer.byteLength) {\n const newByteLength = Math.max(this.buffer.byteLength * 2, this.offset + length);\n const newBuffer = new ArrayBuffer(newByteLength);\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));\n this.buffer = newBuffer;\n this.dataView = new DataView(this.buffer);\n }\n }\n\n public write(data: Uint8Array): ByteWriter {\n if (this.finished) {\n throw new Error('Buffer already finished');\n }\n this.allocate(data.length);\n new Uint8Array(this.buffer).set(data, this.offset);\n this.offset += data.length;\n return this;\n }\n\n public writeBoolean(value: boolean): ByteWriter {\n this.allocate(1);\n this.dataView.setInt8(this.offset, value ? 1 : 0);\n this.offset += 1;\n return this;\n }\n\n public writeInt8(value: number): ByteWriter {\n this.allocate(1);\n this.dataView.setInt8(this.offset, value);\n this.offset += 1;\n return this;\n }\n\n public writeUint8(value: number): ByteWriter {\n this.allocate(1);\n this.dataView.setUint8(this.offset, value);\n this.offset += 1;\n return this;\n }\n\n public writeInt16(value: number): ByteWriter {\n this.allocate(2);\n this.dataView.setInt16(this.offset, value);\n this.offset += 2;\n return this;\n }\n\n public writeUint16(value: number): ByteWriter {\n this.allocate(2);\n this.dataView.setUint16(this.offset, value);\n this.offset += 2;\n return this;\n }\n\n public writeInt32(value: number): ByteWriter {\n this.allocate(4);\n this.dataView.setInt32(this.offset, value);\n this.offset += 4;\n return this;\n }\n\n public writeUint32(value: number): ByteWriter {\n this.allocate(4);\n this.dataView.setUint32(this.offset, value);\n this.offset += 4;\n return this;\n }\n\n public writeInt64(value: bigint): ByteWriter {\n this.allocate(8);\n this.dataView.setBigInt64(this.offset, value);\n this.offset += 8;\n return this;\n }\n\n public writeUint64(value: bigint): ByteWriter {\n this.allocate(8);\n this.dataView.setBigUint64(this.offset, value);\n this.offset += 8;\n return this;\n }\n\n public writeULEB128(value: number): ByteWriter {\n // Unsigned LEB128\n if (value < 0) {\n throw new Error('Value must be non-negative');\n }\n while (value > 0x7f) {\n this.allocate(1);\n this.dataView.setUint8(this.offset, (value & 0x7f) | 0x80);\n this.offset += 1;\n value >>= 7;\n }\n this.allocate(1);\n this.dataView.setUint8(this.offset, value & 0x7f);\n this.offset += 1;\n return this;\n }\n\n public writeFloat16(value: number): ByteWriter {\n this.allocate(2);\n writeFloat16(this.dataView, this.offset, value);\n this.offset += 2;\n return this;\n }\n\n public writeFloat32(value: number): ByteWriter {\n this.allocate(4);\n this.dataView.setFloat32(this.offset, value);\n this.offset += 4;\n return this;\n }\n\n public writeFloat64(value: number): ByteWriter {\n this.allocate(4);\n this.dataView.setFloat64(this.offset, value);\n this.offset += 4;\n return this;\n }\n\n public writeUint8Array(value: Uint8Array): ByteWriter {\n this.writeULEB128(value.byteLength);\n this.write(value);\n return this;\n }\n\n public writeString(value: string): ByteWriter {\n this.writeUint8Array(textEncoder.encode(value));\n return this;\n }\n\n public writeJSON(value: JsonType): ByteWriter {\n this.writeString(JSON.stringify(value));\n return this;\n }\n\n public writeFlags(flags: Flags): ByteWriter {\n flags.write(this);\n return this;\n }\n\n public finish(): Uint8Array {\n if (this.finished) {\n throw new Error('Buffer already finished');\n }\n this.finished = true;\n return new Uint8Array(this.buffer, 0, this.offset);\n }\n\n public toUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer, 0, this.offset);\n }\n\n public toArrayBuffer(): ArrayBuffer {\n return this.buffer.slice(0, this.offset);\n }\n}\n\nexport class ByteReader {\n private dataView: DataView;\n private offset: number;\n private finished: boolean;\n\n private constructor(data: DataView) {\n this.dataView = data;\n this.offset = 0;\n this.finished = false;\n }\n\n public static fromUint8Array(buffer: Uint8Array): ByteReader {\n const arrayBuffer = new ArrayBuffer(buffer.byteLength);\n const uint8Array = new Uint8Array(arrayBuffer);\n uint8Array.set(new Uint8Array(buffer));\n const dataView = new DataView(arrayBuffer);\n return new ByteReader(dataView);\n }\n\n public static fromArrayBuffer(buffer: ArrayBuffer): ByteReader {\n const dataView = new DataView(buffer);\n return new ByteReader(dataView);\n }\n\n public static async fromBlob(blob: Blob): Promise<ByteReader> {\n const arrayBuffer = await blob.arrayBuffer();\n const dataView = new DataView(arrayBuffer);\n return new ByteReader(dataView);\n }\n\n public read(size: number): Uint8Array {\n if (this.finished) {\n throw new Error('Buffer already finished');\n }\n if (size < 0) {\n throw new Error('Size must be positive');\n }\n if (this.offset + size > this.dataView.byteLength) {\n throw new Error('Buffer not fully read');\n }\n const value = new Uint8Array(this.dataView.buffer.slice(this.offset, this.offset + size));\n this.offset += size;\n return value;\n }\n\n public readBoolean(): boolean {\n const value = this.dataView.getInt8(this.offset);\n this.offset += 1;\n return value !== 0;\n }\n\n public readInt8(): number {\n const value = this.dataView.getInt8(this.offset);\n this.offset += 1;\n return value;\n }\n\n public readUint8(): number {\n const value = this.dataView.getUint8(this.offset);\n this.offset += 1;\n return value;\n }\n\n public readInt16(): number {\n const value = this.dataView.getInt16(this.offset);\n this.offset += 2;\n return value;\n }\n\n public readUint16(): number {\n const value = this.dataView.getUint16(this.offset);\n this.offset += 2;\n return value;\n }\n\n public readInt32(): number {\n const value = this.dataView.getInt32(this.offset);\n this.offset += 4;\n return value;\n }\n\n public readUint32(): number {\n const value = this.dataView.getUint32(this.offset);\n this.offset += 4;\n return value;\n }\n\n public readInt64(): bigint {\n const value = this.dataView.getBigInt64(this.offset);\n this.offset += 8;\n return value;\n }\n\n public readUint64(): bigint {\n const value = this.dataView.getBigUint64(this.offset);\n this.offset += 8;\n return value;\n }\n\n public readULEB128(): number {\n // Unsigned LEB128\n let value = 0;\n let shift = 0;\n let byte: number;\n do {\n if (this.offset >= this.dataView.byteLength) {\n throw new Error('Buffer not fully read');\n }\n byte = this.dataView.getUint8(this.offset);\n this.offset += 1;\n value |= (byte & 0b01111111) << shift;\n shift += 7;\n }\n while ((byte & 0b10000000) !== 0);\n return value;\n }\n\n public readFloat16(): number {\n const value = readFloat16(this.dataView, this.offset);\n this.offset += 2;\n return value;\n }\n\n public readFloat32(): number {\n const value = this.dataView.getFloat32(this.offset);\n this.offset += 4;\n return value;\n }\n\n public readFloat64(): number {\n const value = this.dataView.getFloat64(this.offset);\n this.offset += 8;\n return value;\n }\n\n public readUint8Array(): Uint8Array {\n const length = this.readULEB128();\n return this.read(length);\n }\n\n public readString(): string {\n const byteArray = this.readUint8Array();\n return textDecoder.decode(byteArray);\n }\n\n public readJSON<T extends JsonType>(): T {\n return JSON.parse(this.readString());\n }\n\n public readFlags(length: number): Flags {\n return Flags.read(this, length);\n }\n\n public finish(): void {\n if (this.finished) {\n throw new Error('Buffer already finished');\n }\n this.finished = true;\n if (this.offset !== this.dataView.byteLength) {\n throw new Error('Buffer not fully read');\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["textDecoder", "textEncoder", "Flags", "options", "position", "callback", "value", "writer", "bits", "reader", "length", "i", "readFloat16", "dataView", "offset", "sign", "exponent", "mantissa", "normalizedExponent", "normalizedMantissa", "writeFloat16", "ByteWriter", "init", "buffer", "arrayBuffer", "newByteLength", "newBuffer", "data", "flags", "ByteReader", "blob", "size", "shift", "byte", "byteArray"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { ByteReader, ByteWriter, Flags } from './bytebuffer';
2
+ export { Serializer, type JsonType, type Serializable } from './serializer';
@@ -0,0 +1,2 @@
1
+ import{ByteReader as t,ByteWriter as a,Flags as i}from"./bytebuffer";import{Serializer as p}from"./serializer";export{t as ByteReader,a as ByteWriter,i as Flags,p as Serializer};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/serialize/index.ts"],
4
+ "sourcesContent": ["export { ByteReader, ByteWriter, Flags } from './bytebuffer';\nexport { Serializer, type JsonType, type Serializable } from './serializer';\n\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,EAAY,cAAAC,EAAY,SAAAC,MAAa,eAC9C,OAAS,cAAAC,MAAoD",
6
+ "names": ["ByteReader", "ByteWriter", "Flags", "Serializer"]
7
+ }
@@ -0,0 +1,26 @@
1
+ export type JsonType = string | number | boolean | null | undefined | {
2
+ [key in never]?: JsonType;
3
+ } | JsonType[];
4
+ export interface Serializable<T, D> {
5
+ serialize(data: T): D;
6
+ deserialize(data: D): T;
7
+ }
8
+ export declare class Serializer<T, D> {
9
+ serialize: (data: T) => D;
10
+ deserialize: (data: D) => T;
11
+ constructor(serialize: (data: T) => D, deserialize: (data: D) => T);
12
+ static of<T, D>(serializer: Serializable<T, D>): Serializer<T, D>;
13
+ static pipe<T, R, D>(ser1: Serializable<T, R>, ser2: Serializable<R, D>): Serializable<T, D>;
14
+ static transform<T>(func: (value: T) => T): Serializer<T, T>;
15
+ static noop<T>(): Serializer<T, T>;
16
+ field<K extends keyof D, R>(key: K, serializer: Serializable<D[K], R>): Serializer<T, {
17
+ [P in keyof D]: P extends K ? R : D[P];
18
+ }>;
19
+ static json<T extends JsonType>(): Serializer<T, Uint8Array>;
20
+ toJson(): Serializer<T, Uint8Array>;
21
+ toArray(): Serializer<T[], D[]>;
22
+ toMap(): Serializer<Map<string, T>, Map<string, D>>;
23
+ fallback(fallback: T): Serializer<T, D>;
24
+ fallbackMap(fallback: (data: D, error: unknown) => T): Serializer<T, D>;
25
+ pipe<E>(serializer: Serializable<D, E>): Serializer<T, E>;
26
+ }
@@ -0,0 +1,2 @@
1
+ import{textDecoder as n,textEncoder as s}from"../const.js";class t{constructor(e,i){this.serialize=e;this.deserialize=i}static of(e){return new t(e.serialize,e.deserialize)}static pipe(e,i){return new t(r=>i.serialize(e.serialize(r)),r=>e.deserialize(i.deserialize(r)))}static transform(e){return new t(e,e)}static noop(){return new t(e=>e,e=>e)}field(e,i){return new t(r=>{const a=this.serialize(r);return{...a,[e]:i.serialize(a[e])}},r=>this.deserialize({...r,[e]:i.deserialize(r[e])}))}static json(){return new t(e=>s.encode(JSON.stringify(e)),e=>{const i=n.decode(e);return JSON.parse(i)})}toJson(){return new t(e=>s.encode(JSON.stringify(this.serialize(e))),e=>{const i=n.decode(e);return this.deserialize(JSON.parse(i))})}toArray(){return new t(e=>e.map(i=>this.serialize(i)),e=>e.map(i=>this.deserialize(i)))}toMap(){return new t(e=>{const i=new Map;return e.forEach((r,a)=>{i.set(a,this.serialize(r))}),i},e=>{const i=new Map;return e.forEach((r,a)=>{i.set(a,this.deserialize(r))}),i})}fallback(e){return new t(i=>this.serialize(i),i=>{try{return this.deserialize(i)}catch{return e}})}fallbackMap(e){return new t(i=>this.serialize(i),i=>{try{return this.deserialize(i)}catch(r){return e(i,r)}})}pipe(e){return new t(i=>e.serialize(this.serialize(i)),i=>this.deserialize(e.deserialize(i)))}}export{t as Serializer};
2
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/serialize/serializer.ts"],
4
+ "sourcesContent": ["import { textDecoder, textEncoder } from '../const.js';\n\nexport type JsonType = string | number | boolean | null | undefined | { [key in never]?: JsonType } | JsonType[];\n\nexport interface Serializable<T, D> {\n serialize(data: T): D;\n deserialize(data: D): T;\n}\n\nexport class Serializer<T, D> {\n constructor(\n public serialize: (data: T) => D,\n public deserialize: (data: D) => T,\n ) { }\n\n public static of<T, D>(serializer: Serializable<T, D>): Serializer<T, D> {\n return new Serializer<T, D>(serializer.serialize, serializer.deserialize);\n }\n\n public static pipe<T, R, D>(ser1: Serializable<T, R>, ser2: Serializable<R, D>): Serializable<T, D> {\n return new Serializer<T, D>(\n (data) => ser2.serialize(ser1.serialize(data)),\n (data) => ser1.deserialize(ser2.deserialize(data)),\n );\n }\n\n public static transform<T>(func: (value: T) => T): Serializer<T, T> {\n return new Serializer<T, T>(\n func,\n func,\n );\n }\n\n public static noop<T>(): Serializer<T, T> {\n return new Serializer<T, T>(\n (data) => data,\n (data) => data,\n );\n }\n\n public field<\n K extends keyof D,\n R,\n >(\n key: K,\n serializer: Serializable<D[K], R>,\n ): Serializer<\n T,\n { [P in keyof D]: P extends K ? R : D[P] }\n > {\n return new Serializer<\n T,\n { [P in keyof D]: P extends K ? R : D[P] }\n >(\n (data) => {\n const serialized = this.serialize(data);\n return {\n ...serialized,\n [key]: serializer.serialize(serialized[key]),\n } as { [P in keyof D]: P extends K ? R : D[P] };\n },\n (data) => {\n return this.deserialize({\n ...data,\n [key]: serializer.deserialize(data[key] as R),\n } as D);\n },\n );\n }\n\n static json<T extends JsonType>(): Serializer<T, Uint8Array> {\n return new Serializer<T, Uint8Array>(\n (data) => textEncoder.encode(JSON.stringify(data)),\n (data) => {\n const text = textDecoder.decode(data);\n return JSON.parse(text);\n },\n );\n }\n\n public toJson(): Serializer<T, Uint8Array> {\n return new Serializer<T, Uint8Array>(\n (data) => textEncoder.encode(JSON.stringify(this.serialize(data))),\n (data) => {\n const text = textDecoder.decode(data);\n return this.deserialize(JSON.parse(text));\n },\n );\n }\n\n public toArray(): Serializer<T[], D[]> {\n return new Serializer<T[], D[]>(\n (data) => data.map((item) => this.serialize(item)),\n (data) => data.map((item) => this.deserialize(item)),\n );\n }\n\n public toMap(): Serializer<Map<string, T>, Map<string, D>> {\n return new Serializer<Map<string, T>, Map<string, D>>(\n (data) => {\n const result = new Map<string, D>();\n data.forEach((value, key) => {\n result.set(key, this.serialize(value));\n });\n return result;\n },\n (data) => {\n const result = new Map<string, T>();\n data.forEach((value, key) => {\n result.set(key, this.deserialize(value));\n });\n return result;\n },\n );\n }\n\n public fallback(fallback: T): Serializer<T, D> {\n return new Serializer<T, D>(\n (data) => this.serialize(data),\n (data) => {\n try {\n return this.deserialize(data);\n } catch {\n return fallback;\n }\n },\n );\n }\n\n public fallbackMap(fallback: (data: D, error: unknown) => T): Serializer<T, D> {\n return new Serializer<T, D>(\n (data) => this.serialize(data),\n (data) => {\n try {\n return this.deserialize(data);\n } catch (error) {\n return fallback(data, error);\n }\n },\n );\n }\n\n public pipe<E>(serializer: Serializable<D, E>): Serializer<T, E> {\n return new Serializer<T, E>(\n (data) => serializer.serialize(this.serialize(data)),\n (data) => this.deserialize(serializer.deserialize(data)),\n );\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,eAAAA,EAAa,eAAAC,MAAmB,cASlC,MAAMC,CAAiB,CAC1B,YACWC,EACAC,EACT,CAFS,eAAAD,EACA,iBAAAC,CACP,CAEJ,OAAc,GAASC,EAAkD,CACrE,OAAO,IAAIH,EAAiBG,EAAW,UAAWA,EAAW,WAAW,CAC5E,CAEA,OAAc,KAAcC,EAA0BC,EAA8C,CAChG,OAAO,IAAIL,EACNM,GAASD,EAAK,UAAUD,EAAK,UAAUE,CAAI,CAAC,EAC5CA,GAASF,EAAK,YAAYC,EAAK,YAAYC,CAAI,CAAC,CACrD,CACJ,CAEA,OAAc,UAAaC,EAAyC,CAChE,OAAO,IAAIP,EACPO,EACAA,CACJ,CACJ,CAEA,OAAc,MAA4B,CACtC,OAAO,IAAIP,EACNM,GAASA,EACTA,GAASA,CACd,CACJ,CAEO,MAIHE,EACAL,EAIF,CACE,OAAO,IAAIH,EAINM,GAAS,CACN,MAAMG,EAAa,KAAK,UAAUH,CAAI,EACtC,MAAO,CACH,GAAGG,EACH,CAACD,CAAG,EAAGL,EAAW,UAAUM,EAAWD,CAAG,CAAC,CAC/C,CACJ,EACCF,GACU,KAAK,YAAY,CACpB,GAAGA,EACH,CAACE,CAAG,EAAGL,EAAW,YAAYG,EAAKE,CAAG,CAAM,CAChD,CAAM,CAEd,CACJ,CAEA,OAAO,MAAsD,CACzD,OAAO,IAAIR,EACNM,GAASP,EAAY,OAAO,KAAK,UAAUO,CAAI,CAAC,EAChDA,GAAS,CACN,MAAMI,EAAOZ,EAAY,OAAOQ,CAAI,EACpC,OAAO,KAAK,MAAMI,CAAI,CAC1B,CACJ,CACJ,CAEO,QAAoC,CACvC,OAAO,IAAIV,EACNM,GAASP,EAAY,OAAO,KAAK,UAAU,KAAK,UAAUO,CAAI,CAAC,CAAC,EAChEA,GAAS,CACN,MAAMI,EAAOZ,EAAY,OAAOQ,CAAI,EACpC,OAAO,KAAK,YAAY,KAAK,MAAMI,CAAI,CAAC,CAC5C,CACJ,CACJ,CAEO,SAAgC,CACnC,OAAO,IAAIV,EACNM,GAASA,EAAK,IAAKK,GAAS,KAAK,UAAUA,CAAI,CAAC,EAChDL,GAASA,EAAK,IAAKK,GAAS,KAAK,YAAYA,CAAI,CAAC,CACvD,CACJ,CAEO,OAAoD,CACvD,OAAO,IAAIX,EACNM,GAAS,CACN,MAAMM,EAAS,IAAI,IACnB,OAAAN,EAAK,QAAQ,CAACO,EAAOL,IAAQ,CACzBI,EAAO,IAAIJ,EAAK,KAAK,UAAUK,CAAK,CAAC,CACzC,CAAC,EACMD,CACX,EACCN,GAAS,CACN,MAAMM,EAAS,IAAI,IACnB,OAAAN,EAAK,QAAQ,CAACO,EAAOL,IAAQ,CACzBI,EAAO,IAAIJ,EAAK,KAAK,YAAYK,CAAK,CAAC,CAC3C,CAAC,EACMD,CACX,CACJ,CACJ,CAEO,SAASE,EAA+B,CAC3C,OAAO,IAAId,EACNM,GAAS,KAAK,UAAUA,CAAI,EAC5BA,GAAS,CACN,GAAI,CACA,OAAO,KAAK,YAAYA,CAAI,CAChC,MAAQ,CACJ,OAAOQ,CACX,CACJ,CACJ,CACJ,CAEO,YAAYA,EAA4D,CAC3E,OAAO,IAAId,EACNM,GAAS,KAAK,UAAUA,CAAI,EAC5BA,GAAS,CACN,GAAI,CACA,OAAO,KAAK,YAAYA,CAAI,CAChC,OAASS,EAAO,CACZ,OAAOD,EAASR,EAAMS,CAAK,CAC/B,CACJ,CACJ,CACJ,CAEO,KAAQZ,EAAkD,CAC7D,OAAO,IAAIH,EACNM,GAASH,EAAW,UAAU,KAAK,UAAUG,CAAI,CAAC,EAClDA,GAAS,KAAK,YAAYH,EAAW,YAAYG,CAAI,CAAC,CAC3D,CACJ,CACJ",
6
+ "names": ["textDecoder", "textEncoder", "Serializer", "serialize", "deserialize", "serializer", "ser1", "ser2", "data", "func", "key", "serialized", "text", "item", "result", "value", "fallback", "error"]
7
+ }
@@ -0,0 +1,14 @@
1
+ import type { Address } from './address.js';
2
+ import type { App } from './app.js';
3
+ export interface SessioTokenProvider {
4
+ get(serverAddress: Address, app: App): Promise<string | undefined>;
5
+ }
6
+ export type SessionParam = {
7
+ address: Address;
8
+ token: string;
9
+ };
10
+ export declare class BrowserSession implements SessioTokenProvider {
11
+ static readonly PARAM_NAME = "_omu_session";
12
+ get(address: Address): Promise<string | undefined>;
13
+ private parseParamSession;
14
+ }
package/dist/token.js ADDED
@@ -0,0 +1,2 @@
1
+ import{tryCatch as t}from"./helper.js";class n{static PARAM_NAME="_omu_session";async get(e){const r=this.parseParamSession(e);if(r)return r}parseParamSession(e){const a=new URLSearchParams(location.search).get(n.PARAM_NAME);if(!a)return;const{ok:o,data:s}=t(()=>JSON.parse(a));if(!o){console.warn(`Failed to parse session from URL parameter: ${s}`);return}if(s.address.hash!==e.hash){console.warn(`Session address hash does not match: expected ${e.hash}, got ${s.address.hash}`);return}return s.token}}export{n as BrowserSession};
2
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/token.ts"],
4
+ "sourcesContent": ["import type { Address } from './address.js';\n\nimport type { App } from './app.js';\nimport { tryCatch } from './helper.js';\n\nexport interface SessioTokenProvider {\n get(serverAddress: Address, app: App): Promise<string | undefined>;\n}\n\nexport type SessionParam = {\n address: Address;\n token: string;\n};\n\nexport class BrowserSession implements SessioTokenProvider {\n public static readonly PARAM_NAME = '_omu_session';\n\n public async get(address: Address): Promise<string | undefined> {\n const foundToken = this.parseParamSession(address);\n if (foundToken) return foundToken;\n return;\n }\n\n private parseParamSession(address: Address): string | undefined {\n const searchParams = new URLSearchParams(location.search);\n const param = searchParams.get(BrowserSession.PARAM_NAME);\n if (!param) return;\n const { ok, data: session } = tryCatch<SessionParam>(() => JSON.parse(param));\n if (!ok) {\n console.warn(`Failed to parse session from URL parameter: ${session}`);\n return undefined;\n }\n if (session.address.hash !== address.hash) {\n console.warn(`Session address hash does not match: expected ${address.hash}, got ${session.address.hash}`);\n return undefined;\n }\n return session.token;\n }\n}\n"],
5
+ "mappings": "AAGA,OAAS,YAAAA,MAAgB,cAWlB,MAAMC,CAA8C,CACvD,OAAuB,WAAa,eAEpC,MAAa,IAAIC,EAA+C,CAC5D,MAAMC,EAAa,KAAK,kBAAkBD,CAAO,EACjD,GAAIC,EAAY,OAAOA,CAE3B,CAEQ,kBAAkBD,EAAsC,CAE5D,MAAME,EADe,IAAI,gBAAgB,SAAS,MAAM,EAC7B,IAAIH,EAAe,UAAU,EACxD,GAAI,CAACG,EAAO,OACZ,KAAM,CAAE,GAAAC,EAAI,KAAMC,CAAQ,EAAIN,EAAuB,IAAM,KAAK,MAAMI,CAAK,CAAC,EAC5E,GAAI,CAACC,EAAI,CACL,QAAQ,KAAK,+CAA+CC,CAAO,EAAE,EACrE,MACJ,CACA,GAAIA,EAAQ,QAAQ,OAASJ,EAAQ,KAAM,CACvC,QAAQ,KAAK,iDAAiDA,EAAQ,IAAI,SAASI,EAAQ,QAAQ,IAAI,EAAE,EACzG,MACJ,CACA,OAAOA,EAAQ,KACnB,CACJ",
6
+ "names": ["tryCatch", "BrowserSession", "address", "foundToken", "param", "ok", "session"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.9.50";
2
+ export declare const VERSION_MINOR = "0.9.0";