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