@omujs/omu 0.9.10 → 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 +146 -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 -145
  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 -180
  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,3 +0,0 @@
1
- export { REGISTRY_EXTENSION_TYPE, RegistryExtension } from './registry-extension.js';
2
- export { Registry, RegistryType } from './registry.js';
3
-
@@ -1,50 +0,0 @@
1
- import { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
- import { Identifier } from '../../identifier.js';
3
-
4
- import { RegistryPermissions } from './registry.js';
5
-
6
- export class RegistryPacket {
7
- constructor(
8
- public readonly id: Identifier,
9
- public readonly value: Uint8Array | null,
10
- ) { }
11
-
12
- public static serialize(packet: RegistryPacket): Uint8Array {
13
- const writer = new ByteWriter();
14
- writer.writeString(packet.id.key());
15
- writer.writeBoolean(packet.value !== null);
16
- if (packet.value !== null) {
17
- writer.writeByteArray(packet.value);
18
- }
19
- return writer.finish();
20
- }
21
-
22
- public static deserialize(data: Uint8Array): RegistryPacket {
23
- const reader = new ByteReader(data);
24
- const id = Identifier.fromKey(reader.readString());
25
- const existing = reader.readBoolean();
26
- const value = existing ? reader.readByteArray() : null;
27
- return new RegistryPacket(id, value);
28
- }
29
- }
30
-
31
- export class RegistryRegisterPacket {
32
- constructor(
33
- public readonly id: Identifier,
34
- public readonly permissions: RegistryPermissions,
35
- ) { }
36
-
37
- public static serialize(packet: RegistryRegisterPacket): Uint8Array {
38
- const writer = new ByteWriter();
39
- writer.writeString(packet.id.key());
40
- packet.permissions.serialize(writer);
41
- return writer.finish();
42
- }
43
-
44
- public static deserialize(data: Uint8Array): RegistryRegisterPacket {
45
- const reader = new ByteReader(data);
46
- const id = Identifier.fromKey(reader.readString());
47
- const permissions = RegistryPermissions.deserialize(reader);
48
- return new RegistryRegisterPacket(id, permissions);
49
- }
50
- }
@@ -1,98 +0,0 @@
1
- import type { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
- import { Flags } from '../../bytebuffer.js';
3
- import type { Unlisten } from '../../event-emitter.js';
4
- import { Identifier } from '../../identifier.js';
5
- import type { Serializable } from '../../serializer.js';
6
- import { Serializer } from '../../serializer.js';
7
-
8
- export class RegistryPermissions {
9
- constructor(
10
- public readonly all?: Identifier,
11
- public readonly read?: Identifier,
12
- public readonly write?: Identifier,
13
- ) { }
14
-
15
- public serialize(writer: ByteWriter): void {
16
- const flags = new Flags({length: 3});
17
- flags.set(0, this.all !== undefined);
18
- flags.set(1, this.read !== undefined);
19
- flags.set(2, this.write !== undefined);
20
- writer.writeFlags(flags);
21
- if (this.all !== undefined) {
22
- writer.writeString(this.all.key());
23
- }
24
- if (this.read !== undefined) {
25
- writer.writeString(this.read.key());
26
- }
27
- if (this.write !== undefined) {
28
- writer.writeString(this.write.key());
29
- }
30
- }
31
-
32
- public static deserialize(reader: ByteReader): RegistryPermissions {
33
- const flags = reader.readFlags(3);
34
- const all = flags.has(0) ? Identifier.fromKey(reader.readString()) : undefined;
35
- const read = flags.has(1) ? Identifier.fromKey(reader.readString()) : undefined;
36
- const write = flags.has(2) ? Identifier.fromKey(reader.readString()) : undefined;
37
- return new RegistryPermissions(
38
- all,
39
- read,
40
- write,
41
- );
42
- }
43
- }
44
-
45
- export class RegistryType<T> {
46
- constructor(
47
- public readonly id: Identifier,
48
- public readonly defaultValue: T,
49
- public readonly serializer: Serializable<T, Uint8Array>,
50
- public readonly permissions: RegistryPermissions,
51
- ) { }
52
-
53
- public static createJson<T>(identifier: Identifier, {
54
- name,
55
- defaultValue,
56
- permissions,
57
- }: {
58
- name: string;
59
- defaultValue: T;
60
- permissions?: RegistryPermissions;
61
- }): RegistryType<T> {
62
- return new RegistryType(
63
- identifier.join(name),
64
- defaultValue,
65
- Serializer.json(),
66
- permissions ?? new RegistryPermissions(),
67
- );
68
- }
69
-
70
- public static createSerialized<T>(identifier: Identifier, {
71
- name,
72
- defaultValue,
73
- serializer,
74
- permissions,
75
- }: {
76
- name: string;
77
- defaultValue: T;
78
- serializer: Serializable<T, Uint8Array>;
79
- permissions?: RegistryPermissions;
80
- }): RegistryType<T> {
81
- return new RegistryType(
82
- identifier.join(name),
83
- defaultValue,
84
- serializer,
85
- permissions ?? new RegistryPermissions(),
86
- );
87
- }
88
- }
89
-
90
- export interface Registry<T> {
91
- readonly type: RegistryType<T>;
92
- readonly value: T;
93
- get(): Promise<T>;
94
- set(value: T): Promise<void>;
95
- update(fn: (value: T) => PromiseLike<T> | T): Promise<T>;
96
- modify(fn: (value: T) => PromiseLike<T> | T): Promise<T>;
97
- listen(fn: (value: T) => void): Unlisten;
98
- }
@@ -1,6 +0,0 @@
1
- export {
2
- SERVER_APPS_READ_PERMISSION_ID,
3
- SERVER_EXTENSION_TYPE,
4
- SERVER_SHUTDOWN_PERMISSION_ID,
5
- ServerExtension,
6
- } from './server-extension.js';
@@ -1,180 +0,0 @@
1
- import { App } from '../../app.js';
2
- import type { Client } from '../../client.js';
3
- import { Identifier, IdentifierMap, IdentifierSet } from '../../identifier.js';
4
- import { PacketType } from '../../network/packet/packet.js';
5
- import { Serializer } from '../../serializer.js';
6
- import { EndpointType } from '../endpoint/endpoint.js';
7
- import type { Extension } from '../extension.js';
8
- import { ExtensionType } from '../extension.js';
9
- import { Registry, RegistryPermissions, RegistryType } from '../registry/registry.js';
10
- import type { Table } from '../table/index.js';
11
- import { TABLE_EXTENSION_TYPE } from '../table/table-extension.js';
12
- import { TableType } from '../table/table.js';
13
-
14
- export const SERVER_EXTENSION_TYPE: ExtensionType<ServerExtension> = new ExtensionType(
15
- 'server',
16
- (client: Client) => new ServerExtension(client),
17
- () => [TABLE_EXTENSION_TYPE],
18
- );
19
-
20
- export const SERVER_APPS_READ_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('apps', 'read');
21
- const APP_TABLE_TYPE = TableType.createModel(SERVER_EXTENSION_TYPE, {
22
- name: 'apps',
23
- model: App,
24
- permissions: {
25
- read: SERVER_APPS_READ_PERMISSION_ID,
26
- },
27
- });
28
-
29
- export const SERVER_SESSIONS_READ_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('sessions', 'read');
30
- const SESSION_TABLE_TYPE = TableType.createModel(SERVER_EXTENSION_TYPE, {
31
- name: 'sessions',
32
- model: App,
33
- permissions: {
34
- read: SERVER_APPS_READ_PERMISSION_ID,
35
- },
36
- });
37
- export const SERVER_SHUTDOWN_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('shutdown');
38
- const SHUTDOWN_ENDPOINT_TYPE = EndpointType.createJson<boolean, boolean>(SERVER_EXTENSION_TYPE, {
39
- name: 'shutdown',
40
- permissionId: SERVER_SHUTDOWN_PERMISSION_ID,
41
- });
42
- const REQUIRE_APPS_PACKET_TYPE = PacketType.createJson<Identifier[]>(SERVER_EXTENSION_TYPE, {
43
- name: 'require_apps',
44
- serializer: Serializer.model(Identifier).toArray(),
45
- });
46
- export const TRUSTED_ORIGINS_GET_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('trusted_origins', 'get');
47
- export const TRUSTED_ORIGINS_SET_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('trusted_origins', 'set');
48
- const TRUSTED_ORIGINS_REGISTRY_TYPE = RegistryType.createJson<string[]>(SERVER_EXTENSION_TYPE, {
49
- name: 'trusted_origins',
50
- defaultValue: [],
51
- permissions: new RegistryPermissions(
52
- TRUSTED_ORIGINS_GET_PERMISSION_ID,
53
- TRUSTED_ORIGINS_SET_PERMISSION_ID,
54
- ),
55
- });
56
- const SESSION_OBSERVE_PACKET_TYPE = PacketType.createJson<Identifier[]>(SERVER_EXTENSION_TYPE, {
57
- name: 'session_observe',
58
- serializer: Serializer.model(Identifier).toArray(),
59
- });
60
- const SESSION_CONNECT_PACKET_TYPE = PacketType.createJson<App>(SERVER_EXTENSION_TYPE, {
61
- name: 'session_connect',
62
- serializer: Serializer.model(App),
63
- });
64
- const SESSION_DISCONNECT_PACKET_TYPE = PacketType.createJson<App>(SERVER_EXTENSION_TYPE, {
65
- name: 'session_disconnect',
66
- serializer: Serializer.model(App),
67
- });
68
-
69
- export class ServerExtension implements Extension {
70
- public readonly type = SERVER_EXTENSION_TYPE;
71
- public readonly apps: Table<App>;
72
- public readonly sessions: Table<App>;
73
- public readonly trustedOrigins: Registry<string[]>;
74
- private readonly sessionObservers = new IdentifierMap<SessionObserver>();
75
- private readonly requiredApps = new IdentifierSet();
76
-
77
- constructor(private readonly client: Client) {
78
- client.network.registerPacket(
79
- REQUIRE_APPS_PACKET_TYPE,
80
- SESSION_OBSERVE_PACKET_TYPE,
81
- SESSION_CONNECT_PACKET_TYPE,
82
- SESSION_DISCONNECT_PACKET_TYPE,
83
- );
84
- client.network.addPacketHandler(
85
- SESSION_CONNECT_PACKET_TYPE, (app) => this.handleSessionConnect(app)
86
- )
87
- client.network.addPacketHandler(
88
- SESSION_DISCONNECT_PACKET_TYPE, (app) => this.handleSessionDisconnect(app)
89
- )
90
- this.apps = client.tables.get(APP_TABLE_TYPE);
91
- this.sessions = client.tables.get(SESSION_TABLE_TYPE);
92
- this.trustedOrigins = client.registries.get(TRUSTED_ORIGINS_REGISTRY_TYPE);
93
- client.network.addTask(() => this.onTask());
94
- client.onReady(() => this.onReady());
95
- }
96
-
97
- private async onTask(): Promise<void> {
98
- if (this.requiredApps.size > 0) {
99
- this.client.send(REQUIRE_APPS_PACKET_TYPE, Array.from(this.requiredApps.values()));
100
- }
101
- }
102
-
103
- private async onReady(): Promise<void> {
104
- if (this.sessionObservers.size > 0) {
105
- this.client.send(SESSION_OBSERVE_PACKET_TYPE, Array.from(this.sessionObservers.keys()));
106
- }
107
- }
108
-
109
- public async shutdown(restart?: boolean): Promise<boolean> {
110
- this.client.endpoints.call(SHUTDOWN_ENDPOINT_TYPE, restart ?? false);
111
- await new Promise<void>((resolve) => {
112
- const unlisten = this.client.network.event.disconnected.listen(() => {
113
- resolve();
114
- unlisten();
115
- });
116
- });
117
- return true;
118
- }
119
-
120
- public observeSession(appId: Identifier, {
121
- onConnect,
122
- onDisconnect
123
- }: {
124
- onConnect(app: App): void;
125
- onDisconnect(app: App): void;
126
- }): SessionObserver {
127
- if (this.client.running) {
128
- throw new Error('Cannot observe sessions after the client has started');
129
- }
130
- const observer = this.sessionObservers.get(appId) ?? new SessionObserver([], []);
131
- observer.onConnect(onConnect);
132
- observer.onDisconnect(onDisconnect);
133
- this.sessionObservers.set(appId, observer);
134
- return observer;
135
- }
136
-
137
- private async handleSessionConnect(app: App): Promise<void> {
138
- const observer = this.sessionObservers.get(app.id);
139
- if (!observer) {
140
- return;
141
- }
142
- for (const callback of observer.onConnectCallbacks) {
143
- await callback(app);
144
- }
145
- }
146
-
147
- private async handleSessionDisconnect(app: App): Promise<void> {
148
- const observer = this.sessionObservers.get(app.id);
149
- if (!observer) {
150
- return;
151
- }
152
- for (const callback of observer.onDisconnectCallbacks) {
153
- await callback(app);
154
- }
155
- }
156
-
157
- public require(...appIds: Identifier[]): void {
158
- if (this.client.running) {
159
- throw new Error('Cannot require apps after the client has started');
160
- }
161
- for (const appId of appIds) {
162
- this.requiredApps.add(appId);
163
- }
164
- }
165
- }
166
-
167
- export class SessionObserver {
168
- constructor(
169
- public readonly onConnectCallbacks: Array<(app: App) => Promise<void> | void>,
170
- public readonly onDisconnectCallbacks: Array<(app: App) => Promise<void> | void>,
171
- ) { }
172
-
173
- public onConnect(callback: (app: App) => Promise<void> | void): void {
174
- this.onConnectCallbacks.push(callback);
175
- }
176
-
177
- public onDisconnect(callback: (app: App) => Promise<void> | void): void {
178
- this.onDisconnectCallbacks.push(callback);
179
- }
180
- }
@@ -1,3 +0,0 @@
1
- export { SIGNAL_EXTENSION_TYPE, SignalExtension } from './signal-extension.js';
2
- export { Signal, SignalType } from './signal.js';
3
-
@@ -1,46 +0,0 @@
1
- import { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
- import { Identifier } from '../../identifier.js';
3
-
4
- import { SignalPermissions } from './signal.js';
5
-
6
- export class SignalPacket {
7
- constructor(
8
- public readonly id: Identifier,
9
- public readonly body: Uint8Array,
10
- ) { }
11
-
12
- public static serialize(packet: SignalPacket): Uint8Array {
13
- const writer = new ByteWriter();
14
- writer.writeString(packet.id.key());
15
- writer.writeByteArray(packet.body);
16
- return writer.finish();
17
- }
18
-
19
- public static deserialize(data: Uint8Array): SignalPacket {
20
- const reader = new ByteReader(data);
21
- const id = Identifier.fromKey(reader.readString());
22
- const body = reader.readByteArray();
23
- return new SignalPacket(id, body);
24
- }
25
- }
26
-
27
- export class SignalRegisterPacket {
28
- constructor(
29
- public readonly id: Identifier,
30
- public readonly permissions: SignalPermissions,
31
- ) { }
32
-
33
- public static serialize(packet: SignalRegisterPacket): Uint8Array {
34
- const writer = new ByteWriter();
35
- writer.writeString(packet.id.key());
36
- packet.permissions.serialize(writer);
37
- return writer.finish();
38
- }
39
-
40
- public static deserialize(data: Uint8Array): SignalRegisterPacket {
41
- const reader = new ByteReader(data);
42
- const id = Identifier.fromKey(reader.readString());
43
- const permissions = SignalPermissions.deserialize(reader);
44
- return new SignalRegisterPacket(id, permissions);
45
- }
46
- }
@@ -1,89 +0,0 @@
1
- import type { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
- import { Flags } from '../../bytebuffer.js';
3
- import type { Unlisten } from '../../event-emitter.js';
4
- import { Identifier } from '../../identifier.js';
5
- import type { Serializable } from '../../serializer.js';
6
- import { Serializer } from '../../serializer.js';
7
-
8
- export class SignalPermissions {
9
- constructor(
10
- public readonly all?: Identifier,
11
- public readonly listen?: Identifier,
12
- public readonly send?: Identifier,
13
- ) {}
14
-
15
- public serialize(writer: ByteWriter): void {
16
- const flags = new Flags({length: 3});
17
- flags.set(0, this.all !== undefined);
18
- flags.set(1, this.listen !== undefined);
19
- flags.set(2, this.send !== undefined);
20
- writer.writeFlags(flags);
21
- if (this.all !== undefined) {
22
- writer.writeString(this.all.key());
23
- }
24
- if (this.listen !== undefined) {
25
- writer.writeString(this.listen.key());
26
- }
27
- if (this.send !== undefined) {
28
- writer.writeString(this.send.key());
29
- }
30
- }
31
-
32
- public static deserialize(reader: ByteReader): SignalPermissions {
33
- const flags = reader.readFlags(3);
34
- const all = flags.ifSet(0, () => Identifier.fromKey(reader.readString()));
35
- const listen = flags.ifSet(1, () => Identifier.fromKey(reader.readString()));
36
- const send = flags.ifSet(2, () => Identifier.fromKey(reader.readString()));
37
- return new SignalPermissions(all, listen, send);
38
- }
39
- }
40
- export class SignalType<T> {
41
- constructor(
42
- public readonly id: Identifier,
43
- public readonly serializer: Serializable<T, Uint8Array>,
44
- public readonly permissions: SignalPermissions,
45
- ) {}
46
-
47
- static createJson<T>(
48
- identifier: Identifier,
49
- {
50
- name,
51
- serializer,
52
- permissions,
53
- }: {
54
- name: string;
55
- serializer?: Serializable<T, any>;
56
- permissions?: SignalPermissions;
57
- },
58
- ): SignalType<T> {
59
- return new SignalType(
60
- identifier.join(name),
61
- Serializer.of<T, any>(serializer ?? Serializer.noop()).toJson(),
62
- permissions ?? new SignalPermissions(),
63
- );
64
- }
65
-
66
- static createSerialized<T>(
67
- identifier: Identifier,
68
- {
69
- name,
70
- serializer,
71
- permissions,
72
- }: {
73
- name: string;
74
- serializer: Serializable<T, Uint8Array>;
75
- permissions?: SignalPermissions;
76
- },
77
- ): SignalType<T> {
78
- return new SignalType(
79
- identifier.join(name),
80
- serializer,
81
- permissions ?? new SignalPermissions(),
82
- );
83
- }
84
- }
85
-
86
- export interface Signal<T> {
87
- listen(handler: (value: T) => void): Unlisten;
88
- notify(body: T): void;
89
- }
@@ -1,3 +0,0 @@
1
- export { TABLE_EXTENSION_TYPE, TABLE_PERMISSION_ID, TableExtension } from './table-extension.js';
2
- export { Table, TableConfig, TableType } from './table.js';
3
-
package/src/interface.ts DELETED
@@ -1,8 +0,0 @@
1
-
2
- export interface Keyable {
3
- key(): string;
4
- }
5
-
6
- export interface Timestamped {
7
- createdAt: Date;
8
- }
package/src/model.ts DELETED
@@ -1,4 +0,0 @@
1
- export interface Model<T> {
2
- toJson(): T;
3
- toString(): string;
4
- }
@@ -1,109 +0,0 @@
1
-
2
- import type { Address } from '../address.js';
3
- import { ByteReader, ByteWriter } from '../bytebuffer.js';
4
- import type { Serializable } from '../serializer.js';
5
-
6
- import type { Connection } from './connection.js';
7
- import type { Packet, PacketData } from './packet/packet.js';
8
-
9
- export class WebsocketConnection implements Connection {
10
- public connected: boolean;
11
- private socket: WebSocket | null;
12
- private readonly packetQueue: Array<PacketData> = [];
13
- private receiveWaiter: (() => void) | null = null;
14
-
15
- constructor(
16
- private readonly address: Address,
17
- ) {
18
- this.connected = false;
19
- this.socket = null;
20
- }
21
-
22
- private get wsEndpoint(): string {
23
- const protocol = this.address.secure ? 'wss' : 'ws';
24
- const { host, port } = this.address;
25
- return `${protocol}://${host}:${port}/ws`;
26
- }
27
-
28
- public connect(): Promise<void> {
29
- if (this.socket && !this.connected) {
30
- throw new Error('Already connecting');
31
- }
32
- return new Promise((resolve, reject) => {
33
- this.close();
34
- this.socket = new WebSocket(this.wsEndpoint);
35
- this.socket.onerror = reject;
36
- this.socket.onclose = (): void => { this.close(); };
37
- this.socket.onmessage = (event): void => { this.onMessage(event); };
38
- this.socket.onopen = (): void => {
39
- this.connected = true;
40
- resolve();
41
- };
42
- });
43
- }
44
-
45
- private async onMessage(event: MessageEvent<string | Blob>): Promise<void> {
46
- if (typeof event.data === 'string') {
47
- throw new Error('Received string data');
48
- }
49
- const reader = new ByteReader(await event.data.arrayBuffer());
50
- this.packetQueue.push({
51
- type: reader.readString(),
52
- data: reader.readByteArray(),
53
- });
54
- reader.finish();
55
- if (this.receiveWaiter) {
56
- this.receiveWaiter();
57
- }
58
- }
59
-
60
- public async receive(serializer: Serializable<Packet<unknown>, PacketData>): Promise<Packet | null> {
61
- if (this.receiveWaiter) {
62
- throw new Error('Already receiving');
63
- }
64
- if (!this.connected || !this.socket) {
65
- return null;
66
- }
67
- while (this.packetQueue.length === 0 && this.connected) {
68
- await new Promise<void>((resolve) => {
69
- this.receiveWaiter = (): void => resolve();
70
- });
71
- }
72
- if (!this.connected) {
73
- return null;
74
- }
75
- const packet = serializer.deserialize(this.packetQueue.shift()!);
76
- this.receiveWaiter = null;
77
- return packet;
78
- }
79
-
80
- get closed(): boolean {
81
- if (this.socket) {
82
- return this.socket.readyState === WebSocket.CLOSED;
83
- }
84
- return true;
85
- }
86
-
87
- close(): void {
88
- this.connected = false;
89
- if (this.socket) {
90
- this.socket.close();
91
- this.socket = null;
92
- }
93
- if (this.receiveWaiter) {
94
- this.receiveWaiter();
95
- this.receiveWaiter = null;
96
- }
97
- }
98
-
99
- send(packet: Packet, serializer: Serializable<Packet<unknown>, PacketData>): void {
100
- if (!this.connected || !this.socket) {
101
- throw new Error('Not connected');
102
- }
103
- const packetData = serializer.serialize(packet);
104
- const writer = new ByteWriter();
105
- writer.writeString(packetData.type);
106
- writer.writeByteArray(packetData.data);
107
- this.socket.send(writer.finish());
108
- }
109
- }