@omujs/omu 0.9.9 → 0.9.26

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 (458) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/README.md +0 -1
  3. package/dist/dts/address.d.ts +4 -4
  4. package/dist/dts/api/asset/extension.d.ts +25 -0
  5. package/dist/dts/api/asset/index.d.ts +2 -0
  6. package/dist/dts/api/dashboard/extension.d.ts +186 -0
  7. package/dist/dts/api/dashboard/handler.d.ts +21 -0
  8. package/dist/dts/api/dashboard/index.d.ts +3 -0
  9. package/dist/dts/api/dashboard/packets.d.ts +73 -0
  10. package/dist/dts/api/endpoint/endpoint.d.ts +32 -0
  11. package/dist/dts/api/endpoint/extension.d.ts +23 -0
  12. package/dist/dts/api/endpoint/index.d.ts +2 -0
  13. package/dist/dts/api/endpoint/packets.d.ts +51 -0
  14. package/dist/dts/api/extension-registry.d.ts +8 -0
  15. package/dist/dts/api/extension.d.ts +11 -0
  16. package/dist/dts/api/http/extension.d.ts +174 -0
  17. package/dist/dts/api/http/index.d.ts +1 -0
  18. package/dist/dts/api/i18n/extension.d.ts +22 -0
  19. package/dist/dts/api/i18n/index.d.ts +1 -0
  20. package/dist/dts/api/index.d.ts +2 -0
  21. package/dist/dts/api/logger/extension.d.ts +25 -0
  22. package/dist/dts/api/logger/index.d.ts +1 -0
  23. package/dist/dts/api/logger/packets.d.ts +18 -0
  24. package/dist/dts/api/permission/extension.d.ts +18 -0
  25. package/dist/dts/api/permission/index.d.ts +1 -0
  26. package/dist/dts/api/permission/permission.d.ts +25 -0
  27. package/dist/dts/api/plugin/extension.d.ts +43 -0
  28. package/dist/dts/api/plugin/index.d.ts +2 -0
  29. package/dist/dts/api/plugin/package-info.d.ts +84 -0
  30. package/dist/dts/api/registry/extension.d.ts +26 -0
  31. package/dist/dts/api/registry/index.d.ts +2 -0
  32. package/dist/dts/api/registry/packets.d.ts +20 -0
  33. package/dist/dts/api/registry/registry.d.ts +44 -0
  34. package/dist/dts/api/server/extension.d.ts +47 -0
  35. package/dist/dts/api/server/index.d.ts +1 -0
  36. package/dist/dts/api/session/extension.d.ts +51 -0
  37. package/dist/dts/api/session/index.d.ts +1 -0
  38. package/dist/dts/api/signal/extension.d.ts +22 -0
  39. package/dist/dts/api/signal/index.d.ts +1 -0
  40. package/dist/dts/api/signal/packets.d.ts +21 -0
  41. package/dist/dts/api/signal/signal.d.ts +33 -0
  42. package/dist/dts/api/table/extension.d.ts +29 -0
  43. package/dist/dts/api/table/index.d.ts +2 -0
  44. package/dist/dts/api/table/packets.d.ts +65 -0
  45. package/dist/dts/api/table/table.d.ts +76 -0
  46. package/dist/dts/app.d.ts +44 -37
  47. package/dist/dts/const.d.ts +0 -1
  48. package/dist/dts/errors.d.ts +18 -13
  49. package/dist/dts/event/index.d.ts +6 -0
  50. package/dist/dts/helper.d.ts +13 -0
  51. package/dist/dts/identifier.d.ts +45 -39
  52. package/dist/dts/index.d.ts +37 -7
  53. package/dist/dts/localization/index.d.ts +2 -3
  54. package/dist/dts/localization/locale.d.ts +732 -733
  55. package/dist/dts/localization/localization.d.ts +3 -6
  56. package/dist/dts/lock.d.ts +6 -0
  57. package/dist/dts/network/connection.d.ts +13 -13
  58. package/dist/dts/network/encryption.d.ts +38 -0
  59. package/dist/dts/network/frame-transport.d.ts +22 -0
  60. package/dist/dts/network/index.d.ts +5 -4
  61. package/dist/dts/network/network.d.ts +52 -51
  62. package/dist/dts/network/packet/index.d.ts +2 -3
  63. package/dist/dts/network/packet/packet-types.d.ts +73 -52
  64. package/dist/dts/network/packet/packet.d.ts +26 -22
  65. package/dist/dts/network/websocket-transport.d.ts +24 -0
  66. package/dist/dts/omu.d.ts +60 -49
  67. package/dist/dts/serialize/bytebuffer.d.ts +71 -0
  68. package/dist/dts/serialize/index.d.ts +2 -0
  69. package/dist/dts/serialize/serializer.d.ts +38 -0
  70. package/dist/dts/token.d.ts +11 -10
  71. package/dist/dts/version.d.ts +1 -2
  72. package/dist/esm/address.js +4 -2
  73. package/dist/esm/api/asset/extension.js +877 -0
  74. package/dist/esm/api/asset/index.js +875 -0
  75. package/dist/esm/api/dashboard/extension.js +1281 -0
  76. package/dist/esm/api/dashboard/handler.js +4 -0
  77. package/dist/esm/api/dashboard/index.js +1279 -0
  78. package/dist/esm/api/dashboard/packets.js +413 -0
  79. package/dist/esm/api/endpoint/endpoint.js +380 -0
  80. package/dist/esm/api/endpoint/extension.js +1087 -0
  81. package/dist/esm/api/endpoint/index.js +380 -0
  82. package/dist/esm/api/endpoint/packets.js +790 -0
  83. package/dist/esm/api/extension-registry.js +23 -0
  84. package/dist/esm/api/extension.js +275 -0
  85. package/dist/esm/api/http/extension.js +1426 -0
  86. package/dist/esm/api/http/index.js +1312 -0
  87. package/dist/esm/api/i18n/extension.js +1237 -0
  88. package/dist/esm/api/i18n/index.js +1235 -0
  89. package/dist/esm/api/index.js +292 -0
  90. package/dist/esm/api/logger/extension.js +847 -0
  91. package/dist/esm/api/logger/index.js +843 -0
  92. package/dist/esm/api/logger/packets.js +664 -0
  93. package/dist/esm/api/permission/extension.js +529 -0
  94. package/dist/esm/api/permission/index.js +291 -0
  95. package/dist/esm/api/permission/permission.js +291 -0
  96. package/dist/esm/api/plugin/extension.js +528 -0
  97. package/dist/esm/api/plugin/index.js +526 -0
  98. package/dist/esm/api/plugin/package-info.js +4 -0
  99. package/dist/esm/api/registry/extension.js +1170 -0
  100. package/dist/esm/api/registry/index.js +1169 -0
  101. package/dist/esm/api/registry/packets.js +685 -0
  102. package/dist/esm/api/registry/registry.js +380 -0
  103. package/dist/esm/api/server/extension.js +2009 -0
  104. package/dist/esm/api/server/index.js +1987 -0
  105. package/dist/esm/api/session/extension.js +2111 -0
  106. package/dist/esm/api/session/index.js +2111 -0
  107. package/dist/esm/api/signal/extension.js +1022 -0
  108. package/dist/esm/api/signal/index.js +376 -0
  109. package/dist/esm/api/signal/packets.js +681 -0
  110. package/dist/esm/api/signal/signal.js +376 -0
  111. package/dist/esm/api/table/extension.js +1544 -0
  112. package/dist/esm/api/table/index.js +1543 -0
  113. package/dist/esm/api/table/packets.js +895 -0
  114. package/dist/esm/api/table/table.js +380 -0
  115. package/dist/esm/app.js +259 -40
  116. package/dist/esm/const.js +11 -3
  117. package/dist/esm/errors.js +533 -40
  118. package/dist/esm/event/index.js +22 -0
  119. package/dist/esm/helper.js +15 -0
  120. package/dist/esm/identifier.js +244 -139
  121. package/dist/esm/index.js +4837 -6
  122. package/dist/esm/localization/index.js +742 -2
  123. package/dist/esm/localization/locale.js +741 -735
  124. package/dist/esm/localization/localization.js +4 -2
  125. package/dist/esm/lock.js +46 -0
  126. package/dist/esm/network/connection.js +288 -27
  127. package/dist/esm/network/encryption.js +977 -0
  128. package/dist/esm/network/frame-transport.js +525 -0
  129. package/dist/esm/network/index.js +1614 -2
  130. package/dist/esm/network/network.js +1337 -195
  131. package/dist/esm/network/packet/index.js +482 -2
  132. package/dist/esm/network/packet/packet-types.js +478 -80
  133. package/dist/esm/network/packet/packet.js +125 -16
  134. package/dist/esm/network/websocket-transport.js +487 -0
  135. package/dist/esm/omu.js +4621 -91
  136. package/dist/esm/serialize/bytebuffer.js +378 -0
  137. package/dist/esm/serialize/index.js +465 -0
  138. package/dist/esm/serialize/serializer.js +97 -0
  139. package/dist/esm/token.js +42 -18
  140. package/dist/esm/version.js +9 -2
  141. package/package.json +26 -33
  142. package/src/address.ts +1 -0
  143. package/src/api/asset/extension.ts +159 -0
  144. package/src/api/asset/index.ts +6 -0
  145. package/src/api/dashboard/extension.ts +614 -0
  146. package/src/api/dashboard/handler.ts +23 -0
  147. package/src/api/dashboard/index.ts +36 -0
  148. package/src/api/dashboard/packets.ts +126 -0
  149. package/src/api/endpoint/endpoint.ts +56 -0
  150. package/src/api/endpoint/extension.ts +133 -0
  151. package/src/api/endpoint/index.ts +3 -0
  152. package/src/api/endpoint/packets.ts +176 -0
  153. package/src/api/extension-registry.ts +17 -0
  154. package/src/{extension → api}/extension.ts +3 -4
  155. package/src/api/http/extension.ts +752 -0
  156. package/src/api/http/index.ts +2 -0
  157. package/src/{extension/i18n/i18n-extension.ts → api/i18n/extension.ts} +9 -10
  158. package/src/api/i18n/index.ts +2 -0
  159. package/src/{extension/logger/logger-extension.ts → api/logger/extension.ts} +16 -17
  160. package/src/api/logger/index.ts +4 -0
  161. package/src/{extension → api}/logger/packets.ts +3 -3
  162. package/src/{extension/permission/permission-extension.ts → api/permission/extension.ts} +24 -23
  163. package/src/api/permission/index.ts +2 -0
  164. package/src/{extension → api}/permission/permission.ts +8 -11
  165. package/src/{extension/plugin/plugin-extension.ts → api/plugin/extension.ts} +32 -19
  166. package/src/api/plugin/index.ts +3 -0
  167. package/src/{extension/registry/registry-extension.ts → api/registry/extension.ts} +76 -47
  168. package/src/api/registry/index.ts +3 -0
  169. package/src/api/registry/packets.ts +64 -0
  170. package/src/api/registry/registry.ts +73 -0
  171. package/src/api/server/extension.ts +126 -0
  172. package/src/api/server/index.ts +11 -0
  173. package/src/api/session/extension.ts +196 -0
  174. package/src/api/session/index.ts +7 -0
  175. package/src/{extension/signal/signal-extension.ts → api/signal/extension.ts} +42 -35
  176. package/src/api/signal/index.ts +1 -0
  177. package/src/api/signal/packets.ts +61 -0
  178. package/src/api/signal/signal.ts +67 -0
  179. package/src/{extension/table/table-extension.ts → api/table/extension.ts} +111 -154
  180. package/src/api/table/index.ts +3 -0
  181. package/src/{extension → api}/table/packets.ts +28 -27
  182. package/src/{extension → api}/table/table.ts +24 -18
  183. package/src/app.ts +43 -25
  184. package/src/const.ts +2 -2
  185. package/src/errors.ts +12 -0
  186. package/src/helper.ts +16 -0
  187. package/src/identifier.ts +59 -4
  188. package/src/index.ts +86 -5
  189. package/src/localization/index.ts +2 -2
  190. package/src/lock.ts +43 -0
  191. package/src/network/connection.ts +7 -5
  192. package/src/network/encryption.ts +221 -0
  193. package/src/network/frame-transport.ts +186 -0
  194. package/src/network/index.ts +4 -1
  195. package/src/network/network.ts +138 -90
  196. package/src/network/packet/index.ts +3 -2
  197. package/src/network/packet/packet-types.ts +79 -36
  198. package/src/network/packet/packet.ts +20 -11
  199. package/src/network/websocket-transport.ts +123 -0
  200. package/src/omu.ts +56 -30
  201. package/src/serialize/bytebuffer.ts +424 -0
  202. package/src/serialize/index.ts +2 -0
  203. package/src/serialize/serializer.ts +149 -0
  204. package/src/token.ts +28 -14
  205. package/src/version.ts +1 -1
  206. package/tsconfig.json +8 -2
  207. package/tsconfig.tsbuildinfo +1 -0
  208. package/LICENSE +0 -21
  209. package/dist/dts/address.d.ts.map +0 -1
  210. package/dist/dts/app.d.ts.map +0 -1
  211. package/dist/dts/bytebuffer.d.ts +0 -49
  212. package/dist/dts/bytebuffer.d.ts.map +0 -1
  213. package/dist/dts/client.d.ts +0 -48
  214. package/dist/dts/client.d.ts.map +0 -1
  215. package/dist/dts/const.d.ts.map +0 -1
  216. package/dist/dts/errors.d.ts.map +0 -1
  217. package/dist/dts/event-emitter.d.ts +0 -7
  218. package/dist/dts/event-emitter.d.ts.map +0 -1
  219. package/dist/dts/extension/asset/asset-extension.d.ts +0 -24
  220. package/dist/dts/extension/asset/asset-extension.d.ts.map +0 -1
  221. package/dist/dts/extension/asset/index.d.ts +0 -2
  222. package/dist/dts/extension/asset/index.d.ts.map +0 -1
  223. package/dist/dts/extension/dashboard/dashboard-extension.d.ts +0 -29
  224. package/dist/dts/extension/dashboard/dashboard-extension.d.ts.map +0 -1
  225. package/dist/dts/extension/dashboard/dashboard.d.ts +0 -10
  226. package/dist/dts/extension/dashboard/dashboard.d.ts.map +0 -1
  227. package/dist/dts/extension/dashboard/index.d.ts +0 -3
  228. package/dist/dts/extension/dashboard/index.d.ts.map +0 -1
  229. package/dist/dts/extension/dashboard/packets.d.ts +0 -41
  230. package/dist/dts/extension/dashboard/packets.d.ts.map +0 -1
  231. package/dist/dts/extension/endpoint/endpoint-extension.d.ts +0 -16
  232. package/dist/dts/extension/endpoint/endpoint-extension.d.ts.map +0 -1
  233. package/dist/dts/extension/endpoint/endpoint.d.ts +0 -22
  234. package/dist/dts/extension/endpoint/endpoint.d.ts.map +0 -1
  235. package/dist/dts/extension/endpoint/index.d.ts +0 -3
  236. package/dist/dts/extension/endpoint/index.d.ts.map +0 -1
  237. package/dist/dts/extension/endpoint/packets.d.ts +0 -24
  238. package/dist/dts/extension/endpoint/packets.d.ts.map +0 -1
  239. package/dist/dts/extension/extension-registry.d.ts +0 -12
  240. package/dist/dts/extension/extension-registry.d.ts.map +0 -1
  241. package/dist/dts/extension/extension.d.ts +0 -13
  242. package/dist/dts/extension/extension.d.ts.map +0 -1
  243. package/dist/dts/extension/i18n/i18n-extension.d.ts +0 -21
  244. package/dist/dts/extension/i18n/i18n-extension.d.ts.map +0 -1
  245. package/dist/dts/extension/i18n/index.d.ts +0 -2
  246. package/dist/dts/extension/i18n/index.d.ts.map +0 -1
  247. package/dist/dts/extension/index.d.ts +0 -3
  248. package/dist/dts/extension/index.d.ts.map +0 -1
  249. package/dist/dts/extension/logger/index.d.ts +0 -2
  250. package/dist/dts/extension/logger/index.d.ts.map +0 -1
  251. package/dist/dts/extension/logger/logger-extension.d.ts +0 -25
  252. package/dist/dts/extension/logger/logger-extension.d.ts.map +0 -1
  253. package/dist/dts/extension/logger/packets.d.ts +0 -19
  254. package/dist/dts/extension/logger/packets.d.ts.map +0 -1
  255. package/dist/dts/extension/permission/index.d.ts +0 -3
  256. package/dist/dts/extension/permission/index.d.ts.map +0 -1
  257. package/dist/dts/extension/permission/permission-extension.d.ts +0 -18
  258. package/dist/dts/extension/permission/permission-extension.d.ts.map +0 -1
  259. package/dist/dts/extension/permission/permission.d.ts +0 -28
  260. package/dist/dts/extension/permission/permission.d.ts.map +0 -1
  261. package/dist/dts/extension/plugin/index.d.ts +0 -2
  262. package/dist/dts/extension/plugin/index.d.ts.map +0 -1
  263. package/dist/dts/extension/plugin/package-info.d.ts +0 -85
  264. package/dist/dts/extension/plugin/package-info.d.ts.map +0 -1
  265. package/dist/dts/extension/plugin/plugin-extension.d.ts +0 -34
  266. package/dist/dts/extension/plugin/plugin-extension.d.ts.map +0 -1
  267. package/dist/dts/extension/registry/index.d.ts +0 -3
  268. package/dist/dts/extension/registry/index.d.ts.map +0 -1
  269. package/dist/dts/extension/registry/packets.d.ts +0 -17
  270. package/dist/dts/extension/registry/packets.d.ts.map +0 -1
  271. package/dist/dts/extension/registry/registry-extension.d.ts +0 -19
  272. package/dist/dts/extension/registry/registry-extension.d.ts.map +0 -1
  273. package/dist/dts/extension/registry/registry.d.ts +0 -40
  274. package/dist/dts/extension/registry/registry.d.ts.map +0 -1
  275. package/dist/dts/extension/server/index.d.ts +0 -2
  276. package/dist/dts/extension/server/index.d.ts.map +0 -1
  277. package/dist/dts/extension/server/server-extension.d.ts +0 -41
  278. package/dist/dts/extension/server/server-extension.d.ts.map +0 -1
  279. package/dist/dts/extension/signal/index.d.ts +0 -3
  280. package/dist/dts/extension/signal/index.d.ts.map +0 -1
  281. package/dist/dts/extension/signal/packets.d.ts +0 -17
  282. package/dist/dts/extension/signal/packets.d.ts.map +0 -1
  283. package/dist/dts/extension/signal/signal-extension.d.ts +0 -18
  284. package/dist/dts/extension/signal/signal-extension.d.ts.map +0 -1
  285. package/dist/dts/extension/signal/signal.d.ts +0 -33
  286. package/dist/dts/extension/signal/signal.d.ts.map +0 -1
  287. package/dist/dts/extension/table/index.d.ts +0 -3
  288. package/dist/dts/extension/table/index.d.ts.map +0 -1
  289. package/dist/dts/extension/table/packets.d.ts +0 -66
  290. package/dist/dts/extension/table/packets.d.ts.map +0 -1
  291. package/dist/dts/extension/table/table-extension.d.ts +0 -31
  292. package/dist/dts/extension/table/table-extension.d.ts.map +0 -1
  293. package/dist/dts/extension/table/table.d.ts +0 -79
  294. package/dist/dts/extension/table/table.d.ts.map +0 -1
  295. package/dist/dts/identifier.d.ts.map +0 -1
  296. package/dist/dts/index.d.ts.map +0 -1
  297. package/dist/dts/interface.d.ts +0 -7
  298. package/dist/dts/interface.d.ts.map +0 -1
  299. package/dist/dts/localization/index.d.ts.map +0 -1
  300. package/dist/dts/localization/locale.d.ts.map +0 -1
  301. package/dist/dts/localization/localization.d.ts.map +0 -1
  302. package/dist/dts/model.d.ts +0 -5
  303. package/dist/dts/model.d.ts.map +0 -1
  304. package/dist/dts/network/connection.d.ts.map +0 -1
  305. package/dist/dts/network/index.d.ts.map +0 -1
  306. package/dist/dts/network/network.d.ts.map +0 -1
  307. package/dist/dts/network/packet/index.d.ts.map +0 -1
  308. package/dist/dts/network/packet/packet-types.d.ts.map +0 -1
  309. package/dist/dts/network/packet/packet.d.ts.map +0 -1
  310. package/dist/dts/network/websocket-connection.d.ts +0 -20
  311. package/dist/dts/network/websocket-connection.d.ts.map +0 -1
  312. package/dist/dts/omu.d.ts.map +0 -1
  313. package/dist/dts/serializer.d.ts +0 -22
  314. package/dist/dts/serializer.d.ts.map +0 -1
  315. package/dist/dts/token.d.ts.map +0 -1
  316. package/dist/dts/version.d.ts.map +0 -1
  317. package/dist/esm/address.js.map +0 -1
  318. package/dist/esm/app.js.map +0 -1
  319. package/dist/esm/bytebuffer.js +0 -191
  320. package/dist/esm/bytebuffer.js.map +0 -1
  321. package/dist/esm/client.js +0 -2
  322. package/dist/esm/client.js.map +0 -1
  323. package/dist/esm/const.js.map +0 -1
  324. package/dist/esm/errors.js.map +0 -1
  325. package/dist/esm/event-emitter.js +0 -15
  326. package/dist/esm/event-emitter.js.map +0 -1
  327. package/dist/esm/extension/asset/asset-extension.js +0 -104
  328. package/dist/esm/extension/asset/asset-extension.js.map +0 -1
  329. package/dist/esm/extension/asset/index.js +0 -2
  330. package/dist/esm/extension/asset/index.js.map +0 -1
  331. package/dist/esm/extension/dashboard/dashboard-extension.js +0 -186
  332. package/dist/esm/extension/dashboard/dashboard-extension.js.map +0 -1
  333. package/dist/esm/extension/dashboard/dashboard.js +0 -2
  334. package/dist/esm/extension/dashboard/dashboard.js.map +0 -1
  335. package/dist/esm/extension/dashboard/index.js +0 -2
  336. package/dist/esm/extension/dashboard/index.js.map +0 -1
  337. package/dist/esm/extension/dashboard/packets.js +0 -96
  338. package/dist/esm/extension/dashboard/packets.js.map +0 -1
  339. package/dist/esm/extension/endpoint/endpoint-extension.js +0 -86
  340. package/dist/esm/extension/endpoint/endpoint-extension.js.map +0 -1
  341. package/dist/esm/extension/endpoint/endpoint.js +0 -22
  342. package/dist/esm/extension/endpoint/endpoint.js.map +0 -1
  343. package/dist/esm/extension/endpoint/index.js +0 -2
  344. package/dist/esm/extension/endpoint/index.js.map +0 -1
  345. package/dist/esm/extension/endpoint/packets.js +0 -77
  346. package/dist/esm/extension/endpoint/packets.js.map +0 -1
  347. package/dist/esm/extension/extension-registry.js +0 -34
  348. package/dist/esm/extension/extension-registry.js.map +0 -1
  349. package/dist/esm/extension/extension.js +0 -16
  350. package/dist/esm/extension/extension.js.map +0 -1
  351. package/dist/esm/extension/i18n/i18n-extension.js +0 -68
  352. package/dist/esm/extension/i18n/i18n-extension.js.map +0 -1
  353. package/dist/esm/extension/i18n/index.js +0 -2
  354. package/dist/esm/extension/i18n/index.js.map +0 -1
  355. package/dist/esm/extension/index.js +0 -3
  356. package/dist/esm/extension/index.js.map +0 -1
  357. package/dist/esm/extension/logger/index.js +0 -2
  358. package/dist/esm/extension/logger/index.js.map +0 -1
  359. package/dist/esm/extension/logger/logger-extension.js +0 -60
  360. package/dist/esm/extension/logger/logger-extension.js.map +0 -1
  361. package/dist/esm/extension/logger/packets.js +0 -33
  362. package/dist/esm/extension/logger/packets.js.map +0 -1
  363. package/dist/esm/extension/permission/index.js +0 -3
  364. package/dist/esm/extension/permission/index.js.map +0 -1
  365. package/dist/esm/extension/permission/permission-extension.js +0 -74
  366. package/dist/esm/extension/permission/permission-extension.js.map +0 -1
  367. package/dist/esm/extension/permission/permission.js +0 -28
  368. package/dist/esm/extension/permission/permission.js.map +0 -1
  369. package/dist/esm/extension/plugin/index.js +0 -2
  370. package/dist/esm/extension/plugin/index.js.map +0 -1
  371. package/dist/esm/extension/plugin/package-info.js +0 -2
  372. package/dist/esm/extension/plugin/package-info.js.map +0 -1
  373. package/dist/esm/extension/plugin/plugin-extension.js +0 -63
  374. package/dist/esm/extension/plugin/plugin-extension.js.map +0 -1
  375. package/dist/esm/extension/registry/index.js +0 -3
  376. package/dist/esm/extension/registry/index.js.map +0 -1
  377. package/dist/esm/extension/registry/packets.js +0 -48
  378. package/dist/esm/extension/registry/packets.js.map +0 -1
  379. package/dist/esm/extension/registry/registry-extension.js +0 -134
  380. package/dist/esm/extension/registry/registry-extension.js.map +0 -1
  381. package/dist/esm/extension/registry/registry.js +0 -55
  382. package/dist/esm/extension/registry/registry.js.map +0 -1
  383. package/dist/esm/extension/server/index.js +0 -2
  384. package/dist/esm/extension/server/index.js.map +0 -1
  385. package/dist/esm/extension/server/server-extension.js +0 -138
  386. package/dist/esm/extension/server/server-extension.js.map +0 -1
  387. package/dist/esm/extension/signal/index.js +0 -3
  388. package/dist/esm/extension/signal/index.js.map +0 -1
  389. package/dist/esm/extension/signal/packets.js +0 -44
  390. package/dist/esm/extension/signal/packets.js.map +0 -1
  391. package/dist/esm/extension/signal/signal-extension.js +0 -95
  392. package/dist/esm/extension/signal/signal-extension.js.map +0 -1
  393. package/dist/esm/extension/signal/signal.js +0 -53
  394. package/dist/esm/extension/signal/signal.js.map +0 -1
  395. package/dist/esm/extension/table/index.js +0 -3
  396. package/dist/esm/extension/table/index.js.map +0 -1
  397. package/dist/esm/extension/table/packets.js +0 -252
  398. package/dist/esm/extension/table/packets.js.map +0 -1
  399. package/dist/esm/extension/table/table-extension.js +0 -454
  400. package/dist/esm/extension/table/table-extension.js.map +0 -1
  401. package/dist/esm/extension/table/table.js +0 -20
  402. package/dist/esm/extension/table/table.js.map +0 -1
  403. package/dist/esm/identifier.js.map +0 -1
  404. package/dist/esm/index.js.map +0 -1
  405. package/dist/esm/interface.js +0 -2
  406. package/dist/esm/interface.js.map +0 -1
  407. package/dist/esm/localization/index.js.map +0 -1
  408. package/dist/esm/localization/locale.js.map +0 -1
  409. package/dist/esm/localization/localization.js.map +0 -1
  410. package/dist/esm/model.js +0 -2
  411. package/dist/esm/model.js.map +0 -1
  412. package/dist/esm/network/connection.js.map +0 -1
  413. package/dist/esm/network/index.js.map +0 -1
  414. package/dist/esm/network/network.js.map +0 -1
  415. package/dist/esm/network/packet/index.js.map +0 -1
  416. package/dist/esm/network/packet/packet-types.js.map +0 -1
  417. package/dist/esm/network/packet/packet.js.map +0 -1
  418. package/dist/esm/network/websocket-connection.js +0 -95
  419. package/dist/esm/network/websocket-connection.js.map +0 -1
  420. package/dist/esm/omu.js.map +0 -1
  421. package/dist/esm/serializer.js +0 -55
  422. package/dist/esm/serializer.js.map +0 -1
  423. package/dist/esm/token.js.map +0 -1
  424. package/dist/esm/version.js.map +0 -1
  425. package/eslint.config.js +0 -6
  426. package/src/bytebuffer.ts +0 -222
  427. package/src/client.ts +0 -53
  428. package/src/extension/asset/asset-extension.ts +0 -148
  429. package/src/extension/asset/index.ts +0 -6
  430. package/src/extension/dashboard/dashboard-extension.ts +0 -238
  431. package/src/extension/dashboard/dashboard.ts +0 -11
  432. package/src/extension/dashboard/index.ts +0 -9
  433. package/src/extension/dashboard/packets.ts +0 -98
  434. package/src/extension/endpoint/endpoint-extension.ts +0 -125
  435. package/src/extension/endpoint/endpoint.ts +0 -58
  436. package/src/extension/endpoint/index.ts +0 -3
  437. package/src/extension/endpoint/packets.ts +0 -78
  438. package/src/extension/extension-registry.ts +0 -39
  439. package/src/extension/i18n/index.ts +0 -2
  440. package/src/extension/logger/index.ts +0 -5
  441. package/src/extension/permission/index.ts +0 -3
  442. package/src/extension/plugin/index.ts +0 -4
  443. package/src/extension/registry/index.ts +0 -3
  444. package/src/extension/registry/packets.ts +0 -50
  445. package/src/extension/registry/registry.ts +0 -98
  446. package/src/extension/server/index.ts +0 -6
  447. package/src/extension/server/server-extension.ts +0 -173
  448. package/src/extension/signal/index.ts +0 -3
  449. package/src/extension/signal/packets.ts +0 -46
  450. package/src/extension/signal/signal.ts +0 -89
  451. package/src/extension/table/index.ts +0 -3
  452. package/src/interface.ts +0 -8
  453. package/src/model.ts +0 -4
  454. package/src/network/websocket-connection.ts +0 -109
  455. package/src/serializer.ts +0 -89
  456. /package/src/{extension → api}/index.ts +0 -0
  457. /package/src/{extension → api}/plugin/package-info.ts +0 -0
  458. /package/src/{event-emitter.ts → event/index.ts} +0 -0
@@ -1,23 +1,22 @@
1
1
  import type { Address } from '../address.js';
2
- import type { Client } from '../client.js';
3
- import type { OmuError } from '../errors.js';
4
2
  import {
5
- AnotherConnection,
6
- InternalError,
3
+ AnotherConnection, AppRemoved, DisconnectReason, InternalError,
7
4
  InvalidOrigin,
8
5
  InvalidPacket,
9
6
  InvalidToken,
10
7
  InvalidVersion,
11
8
  PermissionDenied,
9
+ ServerRestart,
12
10
  } from '../errors.js';
13
- import { EventEmitter } from '../event-emitter.js';
14
- import { IdentifierMap } from '../identifier.js';
11
+ import { EventEmitter } from '../event';
12
+ import { IdentifierMap } from '../identifier';
13
+ import { Omu } from '../omu.js';
15
14
  import type { TokenProvider } from '../token.js';
16
15
  import { VERSION } from '../version.js';
17
16
 
18
- import type { Connection } from './connection.js';
17
+ import type { Connection, Transport } from './connection.js';
19
18
  import { PacketMapper } from './connection.js';
20
- import type { DisconnectPacket } from './packet/packet-types.js';
19
+ import { AES, Decryptor, ENCRYPTION_AVAILABLE, EncryptionResponse, Encryptor } from './encryption.js';
21
20
  import { ConnectPacket, DisconnectType, PACKET_TYPES } from './packet/packet-types.js';
22
21
  import type { Packet, PacketType } from './packet/packet.js';
23
22
 
@@ -27,62 +26,62 @@ type PacketHandler<T> = {
27
26
  };
28
27
 
29
28
  type StatusType<T> = {
30
- type: T,
29
+ type: T;
31
30
  };
32
31
 
33
32
  export type NetworkStatus = StatusType<'connecting'> | StatusType<'connected'> | StatusType<'ready'> | {
34
- type: 'disconnected',
35
- attempt?: number,
36
- reason?: DisconnectPacket | null,
33
+ type: 'disconnected';
34
+ attempt?: number;
35
+ reason?: DisconnectReason;
37
36
  } | {
38
- type: 'error',
39
- error: OmuError,
40
- } | {
41
- type: 'reconnecting',
42
- attempt: number,
43
- timeout: number,
44
- date: Date,
45
- cancel: () => void,
46
- } | StatusType<'closed'>;
37
+ type: 'reconnecting';
38
+ attempt: number;
39
+ timeout: number;
40
+ date: Date;
41
+ cancel: () => void;
42
+ };
47
43
 
48
44
  export class Network {
49
- public status: NetworkStatus = {type: 'disconnected'};
50
- public readonly event = {
51
- connected: new EventEmitter<[]>(),
52
- disconnected: new EventEmitter<[DisconnectPacket | null]>(),
53
- packet: new EventEmitter<[Packet]>(),
54
- status: new EventEmitter<[NetworkStatus]>(),
45
+ public status: NetworkStatus = { type: 'disconnected' };
46
+ public readonly event: { connected: EventEmitter<[]>; disconnected: EventEmitter<[DisconnectReason | undefined]>; packet: EventEmitter<[Packet<unknown>]>; status: EventEmitter<[NetworkStatus]> } = {
47
+ connected: new EventEmitter(),
48
+ disconnected: new EventEmitter(),
49
+ packet: new EventEmitter(),
50
+ status: new EventEmitter(),
55
51
  };
56
52
  private readonly tasks: Array<() => Promise<void> | void> = [];
57
53
  private readonly packetMapper = new PacketMapper();
58
54
  private readonly packetHandlers = new IdentifierMap<PacketHandler<unknown>>();
55
+ private listenTask: Promise<void> | undefined = undefined;
56
+ public reason: DisconnectReason | undefined = undefined;
57
+ private attempt = 0;
59
58
 
60
59
  constructor(
61
- private readonly client: Client,
62
- public readonly address: Address,
60
+ private readonly omu: Omu,
61
+ public address: Address,
63
62
  private readonly tokenProvider: TokenProvider,
64
- private connection: Connection,
63
+ private transport: Transport,
64
+ private connection?: Connection | undefined,
65
+ private aes?: AES | undefined,
65
66
  ) {
66
67
  this.registerPacket(
68
+ PACKET_TYPES.SERVER_META,
67
69
  PACKET_TYPES.CONNECT,
68
70
  PACKET_TYPES.DISCONNECT,
69
71
  PACKET_TYPES.TOKEN,
70
72
  PACKET_TYPES.READY,
73
+ PACKET_TYPES.ENCRYPTED_PACKET,
71
74
  );
72
- this.addPacketHandler(PACKET_TYPES.TOKEN, async (token: string) => {
73
- await this.tokenProvider.set(this.address, this.client.app, token);
74
- });
75
75
  this.addPacketHandler(PACKET_TYPES.DISCONNECT, async (reason) => {
76
- await this.event.disconnected.emit(reason);
77
76
  if (reason.type === DisconnectType.SHUTDOWN
78
- ||reason.type === DisconnectType.CLOSE
79
- ||reason.type === DisconnectType.SERVER_RESTART) {
80
- this.setStatus({type: 'disconnected', reason});
77
+ || reason.type === DisconnectType.CLOSE) {
78
+ this.setStatus({ type: 'disconnected' });
81
79
  return;
82
80
  }
83
- const ERROR_MAP: Record<DisconnectType, typeof OmuError | undefined> = {
81
+ const ERROR_MAP = {
84
82
  [DisconnectType.ANOTHER_CONNECTION]: AnotherConnection,
85
83
  [DisconnectType.PERMISSION_DENIED]: PermissionDenied,
84
+ [DisconnectType.APP_REMOVED]: AppRemoved,
86
85
  [DisconnectType.INVALID_TOKEN]: InvalidToken,
87
86
  [DisconnectType.INVALID_ORIGIN]: InvalidOrigin,
88
87
  [DisconnectType.INVALID_VERSION]: InvalidVersion,
@@ -90,21 +89,21 @@ export class Network {
90
89
  [DisconnectType.INVALID_PACKET]: InvalidPacket,
91
90
  [DisconnectType.INVALID_PACKET_TYPE]: InvalidPacket,
92
91
  [DisconnectType.INVALID_PACKET_DATA]: InvalidPacket,
93
- [DisconnectType.SERVER_RESTART]: undefined,
92
+ [DisconnectType.SERVER_RESTART]: ServerRestart,
94
93
  [DisconnectType.CLOSE]: undefined,
95
94
  [DisconnectType.SHUTDOWN]: undefined,
96
95
  };
97
96
  const error = ERROR_MAP[reason.type];
98
97
  if (error) {
99
- const omuError = new error(reason.message);
100
- await this.setStatus({type: 'error', error: omuError});
98
+ this.reason = new error(reason.message ?? '');
101
99
  }
102
100
  });
103
101
  this.addPacketHandler(PACKET_TYPES.READY, () => {
104
102
  if (this.status.type === 'ready') {
105
103
  throw new Error('Received READY packet when already ready');
106
104
  }
107
- this.setStatus({type: 'ready'});
105
+ this.setStatus({ type: 'ready' });
106
+ this.attempt = 0;
108
107
  });
109
108
  }
110
109
 
@@ -134,106 +133,155 @@ export class Network {
134
133
  }
135
134
 
136
135
  private async scheduleReconnect(attempt: number): Promise<boolean> {
137
- const timeout = Math.min(30000, 2000 * Math.pow(2, attempt));
136
+ const timeout = Math.min(30000, 2000 * (Math.pow(1.5, attempt) - 1) + 2000);
138
137
  const date = new Date();
139
138
  let cancelled = false;
140
- await this.setStatus({
139
+ const status: Extract<NetworkStatus, { type: 'reconnecting' }> = {
141
140
  type: 'reconnecting',
142
141
  attempt,
143
142
  timeout,
144
143
  date,
145
- cancel: () => {cancelled = true;}
146
- });
144
+ cancel: () => {cancelled = true;},
145
+ };
146
+ await this.setStatus(status);
147
147
  if (cancelled) {
148
148
  return false;
149
149
  }
150
- const remaining = timeout - (new Date().getTime() - date.getTime());
150
+ const remaining = status.timeout - (new Date().getTime() - date.getTime());
151
151
  await new Promise((resolve) => setTimeout(resolve, remaining));
152
152
  return true;
153
153
  }
154
154
 
155
- public async connect(recconect = true): Promise<void> {
155
+ public async connect(reconnect = true): Promise<void> {
156
156
  if (!this.isState('disconnected')) {
157
157
  throw new Error(`Cannot connect while ${this.status.type}`);
158
158
  }
159
+ if (this.listenTask) {
160
+ throw new Error('Cannot connect while already connecting');
161
+ }
159
162
 
160
- let attempt = 0;
161
-
162
- while (true) {
163
- attempt++;
163
+ this.attempt = 0;
164
+ while (this.omu.running) {
165
+ this.attempt++;
164
166
  try {
165
- try {
166
- await this.connection.connect();
167
- attempt = 0;
168
- } catch (error) {
169
- if (!recconect) {
170
- throw error;
171
- }
172
- if (!await this.scheduleReconnect(attempt)) {
173
- return;
167
+ this.aes = undefined;
168
+ this.connection = await this.transport.connect();
169
+ await this.setStatus({ type: 'connecting' });
170
+ const metaReceived = await this.connection.receive(this.packetMapper);
171
+ if (!metaReceived) {
172
+ throw new Error('Connection closed before receiving server meta');
173
+ }
174
+ if (!PACKET_TYPES.SERVER_META.match(metaReceived)) {
175
+ throw new Error('First packet received was not server meta');
176
+ }
177
+ const { data: meta } = metaReceived;
178
+ this.address.hash = meta.hash;
179
+ let token = await this.tokenProvider.get(this.address, this.omu.app);
180
+ if (!token) {
181
+ throw new InvalidToken(`No token available for app ${this.omu.app.id.key()} at ${this.address.host}:${this.address.port}:${this.address.hash}`);
182
+ }
183
+ let encryptionResp: EncryptionResponse | undefined = undefined;
184
+ if (this.omu.app.type === 'remote' && ENCRYPTION_AVAILABLE && meta.encryption) {
185
+ const decryptor = await Decryptor.new();
186
+ const encryptor = await Encryptor.new(meta.encryption.rsa);
187
+ if (token) {
188
+ token = await encryptor.encryptString(token);
174
189
  }
175
- continue;
190
+ this.aes = await AES.new();
191
+ encryptionResp = {
192
+ kind: 'v1',
193
+ rsa: await decryptor.toRequest(),
194
+ aes: await this.aes.serialize(encryptor),
195
+ };
176
196
  }
177
- await this.setStatus({type: 'connecting'});
178
- const token = await this.tokenProvider.get(this.address, this.client.app);
179
- this.send({
197
+ this.connection.send({
180
198
  type: PACKET_TYPES.CONNECT,
181
199
  data: new ConnectPacket({
182
- app: this.client.app,
183
- protocol: {version: VERSION},
200
+ app: this.omu.app,
201
+ protocol: { version: VERSION },
202
+ encryption: encryptionResp,
184
203
  token,
185
204
  }),
186
- });
187
- const listenPromise = this.listen();
188
- await this.setStatus({type: 'connected'});
205
+ }, this.packetMapper);
206
+ this.listenTask = this.listen();
207
+ await this.setStatus({ type: 'connected' });
189
208
  await this.event.connected.emit();
190
- await this.dispatchTasks();
191
- this.send({
192
- type: PACKET_TYPES.READY,
193
- data: null,
209
+ this.dispatchTasks().then(() => {
210
+ this.send({
211
+ type: PACKET_TYPES.READY,
212
+ data: null,
213
+ });
194
214
  });
195
- await listenPromise;
196
- if (this.status.type === 'error') {
197
- throw this.status.error;
215
+ await this.listenTask;
216
+ } catch (error) {
217
+ if (error instanceof DisconnectReason) {
218
+ this.reason = error;
219
+ }
220
+ if (!reconnect) {
221
+ throw error;
198
222
  }
199
223
  } finally {
200
- if (this.status.type !== 'disconnected' && this.status.type !== 'reconnecting' && this.status.type !== 'error') {
201
- this.setStatus({type: 'disconnected', attempt});
224
+ this.event.disconnected.emit(this.reason);
225
+ if (this.status.type !== 'disconnected' && this.status.type !== 'reconnecting') {
226
+ this.setStatus({ type: 'disconnected', attempt: this.attempt, reason: this.reason });
202
227
  }
203
- this.event.disconnected.emit(null);
204
- this.connection.close();
228
+ this.connection?.close();
229
+ this.connection = undefined;
230
+ this.listenTask = undefined;
205
231
  }
206
- if (!recconect) {
232
+ if (this.reason && ![
233
+ DisconnectType.SHUTDOWN,
234
+ DisconnectType.SERVER_RESTART,
235
+ ].includes(this.reason.type)) {
207
236
  break;
208
237
  }
209
- if (!await this.scheduleReconnect(attempt)) {
238
+ this.reason = undefined;
239
+ if (!reconnect) {
240
+ break;
241
+ }
242
+ const shouldReconnect = await this.scheduleReconnect(this.attempt);
243
+ if (!shouldReconnect) {
210
244
  break;
211
245
  }
212
246
  }
247
+ await this.setStatus({ type: 'disconnected', reason: this.reason });
248
+ this.connection?.close();
249
+ this.connection = undefined;
213
250
  }
214
251
 
215
252
  private isState(state: NetworkStatus['type']): boolean {
216
253
  return this.status.type === state;
217
254
  }
218
255
 
219
- public send(packet: Packet): void {
220
- if (this.connection.closed) {
221
- throw new Error('Cannot send packet while connection is closed');
256
+ public async send(packet: Packet): Promise<void> {
257
+ if (!this.connection) {
258
+ throw new Error('No connection established');
259
+ }
260
+ if (this.aes) {
261
+ const serialized = this.packetMapper.serialize(packet);
262
+ packet = await this.aes.encrypt(serialized);
222
263
  }
223
264
  this.connection.send(packet, this.packetMapper);
224
265
  }
225
266
 
226
267
  private async listen(): Promise<void> {
227
- while (!this.connection.closed) {
268
+ while (this.connection) {
228
269
  const packet = await this.connection.receive(this.packetMapper);
229
270
  if (!packet) {
230
- return;
271
+ break;
231
272
  }
232
- this.dispatchPacket(packet);
273
+ await this.dispatchPacket(packet);
233
274
  }
234
275
  }
235
276
 
236
277
  private async dispatchPacket(packet: Packet): Promise<void> {
278
+ if (PACKET_TYPES.ENCRYPTED_PACKET.match(packet)) {
279
+ if (!this.aes) {
280
+ throw new Error('Received encrypted packet before encryption was established');
281
+ }
282
+ const decrypted = await this.aes.decrypt(packet);
283
+ packet = this.packetMapper.deserialize(decrypted);
284
+ }
237
285
  await this.event.packet.emit(packet);
238
286
  const packetHandler = this.packetHandlers.get(packet.type.id);
239
287
  if (!packetHandler) {
@@ -243,7 +291,7 @@ export class Network {
243
291
  }
244
292
 
245
293
  public addTask(task: () => Promise<void> | void): void {
246
- if (this.client.running) {
294
+ if (this.omu.running) {
247
295
  throw new Error('Cannot add task after client is ready');
248
296
  }
249
297
  this.tasks.push(task);
@@ -1,2 +1,3 @@
1
- export { PacketType } from './packet.js';
2
- export type { PacketData } from './packet.js';
1
+ export { DisconnectPacket, DisconnectType } from './packet-types.js';
2
+ export { PacketType, type Packet, type PacketData } from './packet.js';
3
+
@@ -1,57 +1,77 @@
1
1
  import type { AppJson } from '../../app.js';
2
2
  import { App } from '../../app.js';
3
- import { Identifier } from '../../identifier.js';
4
- import type { Model } from '../../model.js';
5
- import { Serializer } from '../../serializer.js';
6
-
3
+ import { Identifier } from '../../identifier';
4
+ import { Serializer } from '../../serialize/serializer.js';
7
5
  import { PacketType } from './packet.js';
8
6
 
9
7
  const IDENTIFIER = new Identifier('core', 'packet');
10
8
 
11
9
  type ProtocolInfo = {
12
- version: string,
10
+ version: string;
11
+ };
12
+
13
+ type RSANumbers = {
14
+ e: string;
15
+ n: string;
16
+ };
17
+
18
+ type EncryptionRequest = {
19
+ kind: 'v1';
20
+ rsa: RSANumbers;
21
+ };
22
+
23
+ type EncryptionResponse = {
24
+ kind: 'v1';
25
+ rsa: RSANumbers;
26
+ aes: string;
27
+ };
28
+
29
+ export type ServerMeta = {
30
+ protocol: ProtocolInfo;
31
+ encryption: EncryptionRequest | null;
32
+ hash: string | undefined;
13
33
  };
14
34
 
15
35
  type ConnectPacketJson = {
16
- app: AppJson,
17
- protocol: ProtocolInfo,
18
- token?: string,
19
- is_dashboard?: boolean,
36
+ protocol: ProtocolInfo;
37
+ app: AppJson;
38
+ token: string;
39
+ encryption: EncryptionResponse | null;
20
40
  };
21
41
 
22
- export class ConnectPacket implements Model<ConnectPacketJson> {
23
- public readonly app: App;
42
+ export class ConnectPacket {
24
43
  public readonly protocol: ProtocolInfo;
25
- public readonly token?: string;
26
- public readonly isDashboard?: boolean;
27
-
44
+ public readonly app: App;
45
+ public readonly token: string;
46
+ public readonly encryption: EncryptionResponse | null;
47
+
28
48
  constructor(options: {
29
- app: App,
30
- protocol: ProtocolInfo,
31
- token?: string,
32
- is_dashboard?: boolean,
49
+ protocol: ProtocolInfo;
50
+ app: App;
51
+ token: string;
52
+ encryption?: EncryptionResponse | null;
33
53
  }) {
34
- this.app = options.app;
35
54
  this.protocol = options.protocol;
55
+ this.app = options.app;
36
56
  this.token = options.token;
37
- this.isDashboard = options.is_dashboard;
57
+ this.encryption = options.encryption ?? null;
38
58
  }
39
59
 
40
- public static fromJson(data: ConnectPacketJson): ConnectPacket {
60
+ public static deserialize(data: ConnectPacketJson): ConnectPacket {
41
61
  return new ConnectPacket({
42
- app: App.fromJson(data.app),
43
62
  protocol: data.protocol,
63
+ app: App.deserialize(data.app),
64
+ encryption: data.encryption,
44
65
  token: data.token,
45
- is_dashboard: data.is_dashboard,
46
66
  });
47
67
  }
48
68
 
49
- public toJson(): ConnectPacketJson {
69
+ public static serialize(data: ConnectPacket): ConnectPacketJson {
50
70
  return {
51
- app: this.app.toJson(),
52
- protocol: this.protocol,
53
- token: this.token,
54
- is_dashboard: this.isDashboard,
71
+ protocol: data.protocol,
72
+ app: App.serialize(data.app),
73
+ encryption: data.encryption,
74
+ token: data.token,
55
75
  };
56
76
  }
57
77
  }
@@ -66,28 +86,37 @@ export enum DisconnectType {
66
86
  INTERNAL_ERROR = 'internal_error',
67
87
  ANOTHER_CONNECTION = 'another_connection',
68
88
  PERMISSION_DENIED = 'permission_denied',
89
+ APP_REMOVED = 'app_removed',
69
90
  SERVER_RESTART = 'server_restart',
70
91
  SHUTDOWN = 'shutdown',
71
92
  CLOSE = 'close',
72
93
  }
73
94
 
74
95
  type DisconnectPacketJson = {
75
- type: DisconnectType,
76
- message: string | null,
96
+ type: DisconnectType;
97
+ message: string | null;
77
98
  };
78
99
 
79
- export class DisconnectPacket implements Model<DisconnectPacketJson> {
100
+ export class DisconnectPacket {
80
101
  public readonly type: DisconnectType;
81
102
  public readonly message: string | null;
82
103
 
83
104
  constructor(options: {
84
- type: DisconnectType,
85
- message?: string | null,
105
+ type: DisconnectType;
106
+ message?: string | null;
86
107
  }) {
87
108
  this.type = options.type;
88
109
  this.message = options.message ?? null;
89
110
  }
90
111
 
112
+ public static serialize(data: DisconnectPacket): DisconnectPacketJson {
113
+ return data.toJson();
114
+ }
115
+
116
+ public static deserialize(data: DisconnectPacketJson): DisconnectPacket {
117
+ return DisconnectPacket.fromJson(data);
118
+ }
119
+
91
120
  static fromJson(data: DisconnectPacketJson): DisconnectPacket {
92
121
  return new DisconnectPacket({
93
122
  type: data.type,
@@ -103,14 +132,24 @@ export class DisconnectPacket implements Model<DisconnectPacketJson> {
103
132
  }
104
133
  }
105
134
 
106
- export const PACKET_TYPES = {
135
+ export const PACKET_TYPES: {
136
+ SERVER_META: PacketType<ServerMeta>;
137
+ CONNECT: PacketType<ConnectPacket>;
138
+ DISCONNECT: PacketType<DisconnectPacket>;
139
+ TOKEN: PacketType<string>;
140
+ READY: PacketType<undefined>;
141
+ ENCRYPTED_PACKET: PacketType<Uint8Array>;
142
+ } = {
143
+ SERVER_META: PacketType.createJson<ServerMeta>(IDENTIFIER, {
144
+ name: 'server_meta',
145
+ }),
107
146
  CONNECT: PacketType.createJson<ConnectPacket>(IDENTIFIER, {
108
147
  name: 'connect',
109
- serializer: Serializer.model(ConnectPacket),
148
+ serializer: ConnectPacket,
110
149
  }),
111
150
  DISCONNECT: PacketType.createJson<DisconnectPacket>(IDENTIFIER, {
112
151
  name: 'disconnect',
113
- serializer: Serializer.model(DisconnectPacket),
152
+ serializer: DisconnectPacket,
114
153
  }),
115
154
  TOKEN: PacketType.createJson<string>(IDENTIFIER, {
116
155
  name: 'token',
@@ -118,4 +157,8 @@ export const PACKET_TYPES = {
118
157
  READY: PacketType.createJson<undefined>(IDENTIFIER, {
119
158
  name: 'ready',
120
159
  }),
160
+ ENCRYPTED_PACKET: PacketType.createSerialized<Uint8Array>(IDENTIFIER, {
161
+ name: 'e',
162
+ serializer: Serializer.noop(),
163
+ }),
121
164
  };
@@ -1,15 +1,15 @@
1
- import type { Identifier } from '../../identifier.js';
2
- import { type Serializable, Serializer } from '../../serializer.js';
1
+ import type { Identifier } from '../../identifier';
2
+ import { JsonType, type Serializable, Serializer } from '../../serialize';
3
3
 
4
- export interface PacketData {
4
+ export type PacketData = {
5
5
  readonly type: string;
6
6
  readonly data: Uint8Array;
7
- }
7
+ };
8
8
 
9
- export interface Packet<T = unknown> {
9
+ export type Packet<T = unknown> = {
10
10
  readonly type: PacketType<T>;
11
11
  readonly data: T;
12
- }
12
+ };
13
13
 
14
14
  export class PacketType<T> {
15
15
  constructor(
@@ -17,17 +17,26 @@ export class PacketType<T> {
17
17
  public readonly serializer: Serializable<T, Uint8Array>,
18
18
  ) { }
19
19
 
20
- static createJson<T>(identifier: Identifier, {
20
+ public new(data: T): Packet<T> {
21
+ return {
22
+ type: this,
23
+ data,
24
+ };
25
+ }
26
+ public match(packet: Packet): packet is Packet<T> {
27
+ return packet.type === this;
28
+ }
29
+
30
+ static createJson<T, D extends JsonType = JsonType>(identifier: Identifier, {
21
31
  name,
22
32
  serializer,
23
33
  }: {
24
34
  name: string;
25
- serializer?: Serializable<T, any>;
35
+ serializer?: Serializable<T, D>;
26
36
  }): PacketType<T> {
27
- return new PacketType(
37
+ return new PacketType<T>(
28
38
  identifier.join(name),
29
- Serializer.of<T, any>(serializer ?? Serializer.noop())
30
- .pipe(Serializer.json()),
39
+ Serializer.pipe<T, D, Uint8Array>(serializer ?? Serializer.noop(), Serializer.json()),
31
40
  );
32
41
  }
33
42