@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,2 @@
1
+ export { HTTP_REQUEST_PERMISSION_ID, OmuWS, type WSMsg } from './extension';
2
+
@@ -1,29 +1,28 @@
1
- import type { Client } from '../../client.js';
1
+ import { Identifier } from '../../identifier';
2
2
  import type { Locale } from '../../localization/locale.js';
3
3
  import type { LocalizedText } from '../../localization/localization.js';
4
+ import { Omu } from '../../omu';
4
5
  import type { Extension } from '../extension.js';
5
6
  import { ExtensionType } from '../extension.js';
6
- import type { Registry } from '../registry/index.js';
7
- import { RegistryType } from '../registry/index.js';
7
+ import { RegistryType, type Registry } from '../registry';
8
8
 
9
- export const I18N_EXTENSION_TYPE = new ExtensionType('i18n', (client) => new I18nExtension(client));
9
+ export const I18N_EXTENSION_TYPE: ExtensionType<I18nExtension> = new ExtensionType('i18n', (client) => new I18nExtension(client));
10
10
 
11
- export const I18N_SET_LOCALES_PERMISSION_ID = I18N_EXTENSION_TYPE.join('locales', 'set');
12
- export const I18N_GET_LOCALES_PERMISSION_ID = I18N_EXTENSION_TYPE.join('locales', 'get');
11
+ export const I18N_SET_LOCALES_PERMISSION_ID: Identifier = I18N_EXTENSION_TYPE.join('locales', 'set');
12
+ export const I18N_GET_LOCALES_PERMISSION_ID: Identifier = I18N_EXTENSION_TYPE.join('locales', 'get');
13
13
  const I18N_LOCALES_REGISTRY_TYPE = RegistryType.createJson<Locale[]>(I18N_EXTENSION_TYPE, {
14
14
  name: 'locales',
15
15
  defaultValue: [],
16
16
  });
17
17
 
18
18
  export class I18nExtension implements Extension {
19
- public readonly type = I18N_EXTENSION_TYPE;
19
+ public readonly type: ExtensionType<I18nExtension> = I18N_EXTENSION_TYPE;
20
20
  public readonly localesRegistry: Registry<Locale[]>;
21
21
  private locales?: Locale[];
22
22
  public defaultLocales?: Locale[];
23
23
 
24
- constructor(private readonly client: Client) {
25
- client.permissions.require(I18N_GET_LOCALES_PERMISSION_ID);
26
- this.localesRegistry = client.registries.get(I18N_LOCALES_REGISTRY_TYPE);
24
+ constructor(private readonly omu: Omu) {
25
+ this.localesRegistry = omu.registries.get(I18N_LOCALES_REGISTRY_TYPE);
27
26
  this.localesRegistry.listen((locale) => {
28
27
  this.locales = locale;
29
28
  });
@@ -0,0 +1,2 @@
1
+ export { I18N_GET_LOCALES_PERMISSION_ID, I18N_SET_LOCALES_PERMISSION_ID } from './extension.js';
2
+
@@ -1,37 +1,36 @@
1
- import type { Client } from '../../client.js';
2
- import type { Unlisten } from '../../event-emitter.js';
3
- import { Identifier, IdentifierMap } from '../../identifier.js';
1
+ import type { Unlisten } from '../../event';
2
+ import { Identifier, IdentifierMap } from '../../identifier';
4
3
  import { PacketType } from '../../network/packet/packet.js';
5
- import { Serializer } from '../../serializer.js';
4
+ import { Omu } from '../../omu';
6
5
  import { ExtensionType } from '../extension.js';
7
6
 
8
7
  import type { LogMessage } from './packets.js';
9
8
  import { LogPacket, LogType } from './packets.js';
10
9
 
11
- export const LOGGER_EXTENSION_TYPE = new ExtensionType(
10
+ export const LOGGER_EXTENSION_TYPE: ExtensionType<LoggerExtension> = new ExtensionType(
12
11
  'logger',
13
12
  (client) => new LoggerExtension(client),
14
13
  );
15
14
 
16
- export const LOGGER_LOG_PERMISSION_ID = LOGGER_EXTENSION_TYPE.join('log');
15
+ export const LOGGER_LOG_PERMISSION_ID: Identifier = LOGGER_EXTENSION_TYPE.join('log');
17
16
 
18
- export const LOGGER_LOG_PACKET = PacketType.createSerialized<LogPacket>(LOGGER_EXTENSION_TYPE, {
17
+ export const LOGGER_LOG_PACKET: PacketType<LogPacket> = PacketType.createSerialized<LogPacket>(LOGGER_EXTENSION_TYPE, {
19
18
  name: 'log',
20
19
  serializer: LogPacket,
21
20
  });
22
- export const LOGGER_LISTEN_PACKET = PacketType.createJson<Identifier>(LOGGER_EXTENSION_TYPE, {
21
+ export const LOGGER_LISTEN_PACKET: PacketType<Identifier> = PacketType.createJson<Identifier>(LOGGER_EXTENSION_TYPE, {
23
22
  name: 'listen',
24
- serializer: Serializer.model(Identifier),
23
+ serializer: Identifier,
25
24
  });
26
25
 
27
26
  type LogListener = (message: LogMessage) => void;
28
27
  export class LoggerExtension {
29
- public readonly type = LOGGER_EXTENSION_TYPE;
28
+ public readonly type: ExtensionType<LoggerExtension> = LOGGER_EXTENSION_TYPE;
30
29
  private readonly listeners: IdentifierMap<LogListener[]> = new IdentifierMap();
31
30
 
32
- constructor(private readonly client: Client) {
33
- client.network.registerPacket(LOGGER_LOG_PACKET, LOGGER_LISTEN_PACKET);
34
- client.network.addPacketHandler(LOGGER_LOG_PACKET, (packet) => {
31
+ constructor(private readonly omu: Omu) {
32
+ omu.network.registerPacket(LOGGER_LOG_PACKET, LOGGER_LISTEN_PACKET);
33
+ omu.network.addPacketHandler(LOGGER_LOG_PACKET, (packet) => {
35
34
  const listener = this.listeners.get(packet.id);
36
35
  if (listener) {
37
36
  listener.forEach((it) => it(packet.message));
@@ -40,8 +39,8 @@ export class LoggerExtension {
40
39
  }
41
40
 
42
41
  public log(message: LogMessage): void {
43
- const packet = new LogPacket(this.client.app.id, message);
44
- this.client.send(LOGGER_LOG_PACKET, packet);
42
+ const packet = new LogPacket(this.omu.app.id, message);
43
+ this.omu.send(LOGGER_LOG_PACKET, packet);
45
44
  }
46
45
 
47
46
  public error(text: string): void {
@@ -62,8 +61,8 @@ export class LoggerExtension {
62
61
 
63
62
  public listen(id: Identifier, listener: LogListener): Unlisten {
64
63
  if (!this.listeners.has(id)) {
65
- this.client.onReady(() => {
66
- this.client.send(LOGGER_LISTEN_PACKET, id);
64
+ this.omu.onReady(() => {
65
+ this.omu.send(LOGGER_LISTEN_PACKET, id);
67
66
  });
68
67
  }
69
68
  const list = this.listeners.get(id) ?? [];
@@ -0,0 +1,4 @@
1
+ export {
2
+ LOGGER_LOG_PERMISSION_ID,
3
+ } from './extension.js';
4
+
@@ -1,5 +1,5 @@
1
- import { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
- import { Identifier } from '../../identifier.js';
1
+ import { Identifier } from '../../identifier';
2
+ import { ByteReader, ByteWriter } from '../../serialize';
3
3
 
4
4
  export enum LogType {
5
5
  ERROR = 'error',
@@ -28,7 +28,7 @@ export class LogPacket {
28
28
  }
29
29
 
30
30
  public static deserialize(item: Uint8Array): LogPacket {
31
- const reader = new ByteReader(item);
31
+ const reader = ByteReader.fromUint8Array(item);
32
32
  const id = reader.readString();
33
33
  const type = reader.readString() as LogType;
34
34
  const text = reader.readString();
@@ -1,13 +1,13 @@
1
- import type { Client } from '../../client.js';
2
- import { Identifier, IdentifierMap, IdentifierSet } from '../../identifier.js';
1
+ import { Identifier, IdentifierMap, IdentifierSet, IntoId } from '../../identifier';
3
2
  import { PacketType } from '../../network/packet/packet.js';
4
- import { Serializer } from '../../serializer.js';
3
+ import { Omu } from '../../omu';
4
+ import { Serializer } from '../../serialize';
5
5
  import { EndpointType } from '../endpoint/endpoint.js';
6
6
  import { ExtensionType } from '../extension.js';
7
7
 
8
8
  import { PermissionType } from './permission.js';
9
9
 
10
- export const PERMISSION_EXTENSION_TYPE = new ExtensionType(
10
+ export const PERMISSION_EXTENSION_TYPE: ExtensionType<PermissionExtension> = new ExtensionType(
11
11
  'permission',
12
12
  (client) => new PermissionExtension(client),
13
13
  );
@@ -15,54 +15,57 @@ const PERMISSION_REGISTER_PACKET = PacketType.createJson<PermissionType[]>(
15
15
  PERMISSION_EXTENSION_TYPE,
16
16
  {
17
17
  name: 'register',
18
- serializer: Serializer.model(PermissionType).toArray(),
18
+ serializer: Serializer.of(PermissionType).toArray(),
19
19
  },
20
20
  );
21
21
  const PERMISSION_REQUIRE_PACKET = PacketType.createJson<Identifier[]>(PERMISSION_EXTENSION_TYPE, {
22
22
  name: 'require',
23
- serializer: Serializer.model(Identifier).toArray(),
23
+ serializer: Serializer.of(Identifier).toArray(),
24
24
  });
25
25
  const PERMISSION_REQUEST_ENDPOINT = EndpointType.createJson<Identifier[], void>(
26
26
  PERMISSION_EXTENSION_TYPE,
27
27
  {
28
28
  name: 'request',
29
- requestSerializer: Serializer.model(Identifier).toArray(),
29
+ requestSerializer: Serializer.of(Identifier).toArray(),
30
30
  },
31
31
  );
32
32
  const PERMISSION_GRANT_PACKET = PacketType.createJson<PermissionType[]>(PERMISSION_EXTENSION_TYPE, {
33
33
  name: 'grant',
34
- serializer: Serializer.model(PermissionType).toArray(),
34
+ serializer: Serializer.of(PermissionType).toArray(),
35
35
  });
36
36
 
37
37
  export class PermissionExtension {
38
- public readonly type = PERMISSION_EXTENSION_TYPE;
38
+ public readonly type: ExtensionType<PermissionExtension> = PERMISSION_EXTENSION_TYPE;
39
39
  private permissions = new IdentifierMap<PermissionType>();
40
40
  private readonly registeredPermissions = new IdentifierMap<PermissionType>();
41
41
  private readonly requiredPermissions = new IdentifierSet();
42
42
 
43
- constructor(private readonly client: Client) {
44
- client.network.registerPacket(
43
+ constructor(private readonly omu: Omu) {
44
+ omu.network.registerPacket(
45
45
  PERMISSION_REGISTER_PACKET,
46
46
  PERMISSION_REQUIRE_PACKET,
47
47
  PERMISSION_GRANT_PACKET,
48
48
  );
49
- client.network.addPacketHandler(PERMISSION_GRANT_PACKET, (permissions) => {
49
+ omu.network.addPacketHandler(PERMISSION_GRANT_PACKET, (permissions) => {
50
50
  for (const permission of permissions) {
51
51
  this.permissions.set(permission.id, permission);
52
52
  }
53
53
  });
54
- client.network.addTask(() => this.onTask());
54
+ omu.network.addTask(() => this.onTask());
55
55
  }
56
56
 
57
57
  private onTask(): void {
58
+ if (this.omu.app.type === 'remote') {
59
+ return;
60
+ }
58
61
  if (this.registeredPermissions.size > 0) {
59
- this.client.send(
62
+ this.omu.send(
60
63
  PERMISSION_REGISTER_PACKET,
61
64
  Array.from(this.registeredPermissions.values()),
62
65
  );
63
66
  }
64
67
  if (this.requiredPermissions.size > 0) {
65
- this.client.send(
68
+ this.omu.send(
66
69
  PERMISSION_REQUIRE_PACKET,
67
70
  Array.from(this.requiredPermissions.values()),
68
71
  );
@@ -70,18 +73,16 @@ export class PermissionExtension {
70
73
  }
71
74
 
72
75
  public register(permission: PermissionType): void {
73
- if (this.client.running) {
74
- this.client.send(PERMISSION_REGISTER_PACKET, [permission]);
76
+ if (this.omu.running) {
77
+ this.omu.send(PERMISSION_REGISTER_PACKET, [permission]);
75
78
  }
76
79
  this.registeredPermissions.set(permission.id, permission);
77
80
  }
78
81
 
79
- public require(...permissionIds: (Identifier | string)[]): void {
80
- const ids: Identifier[] = permissionIds.map((id) =>
81
- typeof id === 'string' ? Identifier.fromKey(id) : id,
82
- );
82
+ public require(...permissionIds: IntoId[]): void {
83
+ const ids = permissionIds.map(Identifier.from);
83
84
  const missing = ids.filter((id) => !this.permissions.has(id));
84
- if (this.client.running) {
85
+ if (this.omu.running) {
85
86
  if (missing.length > 0) {
86
87
  throw new Error('Permissions must be registered before the client starts');
87
88
  }
@@ -93,7 +94,7 @@ export class PermissionExtension {
93
94
  }
94
95
 
95
96
  public async request(...permissionIds: Identifier[]): Promise<void> {
96
- await this.client.endpoints.call(PERMISSION_REQUEST_ENDPOINT, permissionIds);
97
+ await this.omu.endpoints.call(PERMISSION_REQUEST_ENDPOINT, permissionIds);
97
98
  }
98
99
 
99
100
  public has(permissionIdentifier: Identifier): boolean {
@@ -0,0 +1,2 @@
1
+ export { PermissionType, type PermissionLevel, type PermissionMetadata } from './permission.js';
2
+
@@ -1,6 +1,5 @@
1
- import { Identifier } from '../../identifier.js';
1
+ import { Identifier, IntoId } from '../../identifier';
2
2
  import type { LocalizedText } from '../../localization/localization.js';
3
- import type { Model } from '../../model.js';
4
3
 
5
4
  export type PermissionLevel = 'low' | 'medium' | 'high';
6
5
 
@@ -15,7 +14,7 @@ export type PermissionTypeJson = {
15
14
  metadata: PermissionMetadata;
16
15
  };
17
16
 
18
- export class PermissionType implements Model<PermissionTypeJson> {
17
+ export class PermissionType {
19
18
  public readonly id: Identifier;
20
19
  public readonly metadata: PermissionMetadata;
21
20
 
@@ -25,29 +24,27 @@ export class PermissionType implements Model<PermissionTypeJson> {
25
24
  }
26
25
 
27
26
  public static create(
28
- identifier: Identifier,
27
+ identifier: IntoId,
29
28
  {
30
- name,
31
29
  metadata,
32
30
  }: {
33
- name: string;
34
31
  metadata: PermissionMetadata;
35
32
  },
36
33
  ): PermissionType {
37
34
  return new PermissionType({
38
- id: identifier.join(name),
35
+ id: Identifier.from(identifier),
39
36
  metadata: metadata,
40
37
  });
41
38
  }
42
39
 
43
- public toJson(): PermissionTypeJson {
40
+ public static serialize(data: PermissionType): PermissionTypeJson {
44
41
  return {
45
- id: this.id.key(),
46
- metadata: this.metadata,
42
+ id: data.id.key(),
43
+ metadata: data.metadata,
47
44
  };
48
45
  }
49
46
 
50
- public static fromJson(json: PermissionTypeJson): PermissionType {
47
+ public static deserialize(json: PermissionTypeJson): PermissionType {
51
48
  return new PermissionType({
52
49
  id: Identifier.fromKey(json.id),
53
50
  metadata: json.metadata,
@@ -1,37 +1,38 @@
1
- import type { Client } from '../../client.js';
1
+ import { Identifier } from '../../identifier';
2
2
  import { PacketType } from '../../network/packet/packet.js';
3
+ import { Omu } from '../../omu';
3
4
  import { EndpointType } from '../endpoint/endpoint.js';
4
5
  import { ExtensionType } from '../extension.js';
5
6
  import { Table, TableType } from '../table/table.js';
6
7
 
7
- export const PLUGIN_EXTENSION_TYPE = new ExtensionType(
8
+ export const PLUGIN_EXTENSION_TYPE: ExtensionType<PluginExtension> = new ExtensionType(
8
9
  'plugin',
9
- (client: Client) => new PluginExtension(client),
10
+ (omu: Omu) => new PluginExtension(omu),
10
11
  );
11
12
 
12
13
  export class PluginExtension {
13
- public readonly type = PLUGIN_EXTENSION_TYPE;
14
+ public readonly type: ExtensionType<PluginExtension> = PLUGIN_EXTENSION_TYPE;
14
15
  private readonly requiredPlugins: Map<string, string | null> = new Map();
15
16
 
16
- constructor(private readonly client: Client) {
17
- client.network.registerPacket(PLUGIN_REQUIRE_PACKET);
18
- client.network.addTask(() => this.onTask());
17
+ constructor(private readonly omu: Omu) {
18
+ omu.network.registerPacket(PLUGIN_REQUIRE_PACKET);
19
+ omu.network.addTask(() => this.onTask());
19
20
  }
20
21
 
21
22
  public getAllowedPackages(): Table<PluginPackageInfo> {
22
- return this.client.tables.get(PLUGIN_ALLOWED_PACKAGE_TABLE);
23
+ return this.omu.tables.get(PLUGIN_ALLOWED_PACKAGE_TABLE);
23
24
  }
24
25
 
25
26
  public reload(options: ReloadOptions): void {
26
- this.client.endpoints.call(PLUGIN_RELOAD_ENDPOINT_TYPE, options);
27
+ this.omu.endpoints.call(PLUGIN_RELOAD_ENDPOINT_TYPE, options);
27
28
  }
28
29
 
29
30
  private async onTask(): Promise<void> {
30
- this.client.send(PLUGIN_REQUIRE_PACKET, Object.fromEntries(this.requiredPlugins));
31
+ this.omu.send(PLUGIN_REQUIRE_PACKET, Object.fromEntries(this.requiredPlugins));
31
32
  }
32
33
 
33
34
  public require(plugins: Record<string, string | null>): void {
34
- if (this.client.running) {
35
+ if (this.omu.running) {
35
36
  throw new Error('Plugins must be required before the client starts');
36
37
  }
37
38
  for (const [key, value] of Object.entries(plugins)) {
@@ -55,11 +56,19 @@ export class PluginPackageInfo {
55
56
  this.version = version;
56
57
  }
57
58
 
58
- public static fromJson(json: { package: string, version: string }): PluginPackageInfo {
59
+ public static serialize(data: PluginPackageInfo): { package: string; version: string } {
60
+ return data.toJson();
61
+ }
62
+
63
+ public static deserialize(data: { package: string; version: string }): PluginPackageInfo {
64
+ return PluginPackageInfo.fromJson(data);
65
+ }
66
+
67
+ public static fromJson(json: { package: string; version: string }): PluginPackageInfo {
59
68
  return new PluginPackageInfo(json.package, json.version);
60
69
  }
61
70
 
62
- public toJson(): { package: string, version: string } {
71
+ public toJson(): { package: string; version: string } {
63
72
  return { package: this.package, version: this.version };
64
73
  }
65
74
 
@@ -68,19 +77,23 @@ export class PluginPackageInfo {
68
77
  }
69
78
  }
70
79
 
71
- export const PLUGIN_READ_PACKAGE_PERMISSION_ID = PLUGIN_EXTENSION_TYPE.join('package', 'read')
72
- export const PLUGIN_MANAGE_PACKAGE_PERMISSION_ID = PLUGIN_EXTENSION_TYPE.join('package', 'manage')
80
+ export const PLUGIN_READ_PACKAGE_PERMISSION_ID: Identifier = PLUGIN_EXTENSION_TYPE.join('package', 'read');
81
+ export const PLUGIN_MANAGE_PACKAGE_PERMISSION_ID: Identifier = PLUGIN_EXTENSION_TYPE.join('package', 'manage');
73
82
 
74
- const PLUGIN_ALLOWED_PACKAGE_TABLE = TableType.createModel(PLUGIN_EXTENSION_TYPE, {
83
+ const PLUGIN_ALLOWED_PACKAGE_TABLE = TableType.createJson(PLUGIN_EXTENSION_TYPE, {
75
84
  name: 'allowed_package',
76
- model: PluginPackageInfo,
85
+ serializer: PluginPackageInfo,
86
+ key: (item) => item.key(),
77
87
  });
88
+
78
89
  type ReloadOptions = {
79
- packages: string[] | null,
90
+ packages: string[] | null;
80
91
  };
92
+
81
93
  type ReloadResult = {
82
- packages: Record<string, string>,
94
+ packages: Record<string, string>;
83
95
  };
96
+
84
97
  const PLUGIN_RELOAD_ENDPOINT_TYPE = EndpointType.createJson<ReloadOptions, ReloadResult>(PLUGIN_EXTENSION_TYPE, {
85
98
  name: 'reload',
86
99
  permissionId: PLUGIN_MANAGE_PACKAGE_PERMISSION_ID,
@@ -0,0 +1,3 @@
1
+ export { PLUGIN_MANAGE_PACKAGE_PERMISSION_ID, PLUGIN_READ_PACKAGE_PERMISSION_ID, PluginPackageInfo } from './extension.js';
2
+ export type { PackageInfo } from './package-info.js';
3
+
@@ -1,21 +1,22 @@
1
- import type { Client } from '../../client.js';
2
- import type { Unlisten } from '../../event-emitter.js';
3
- import { EventEmitter } from '../../event-emitter.js';
4
- import { Identifier, IdentifierMap } from '../../identifier.js';
5
- import { PacketType } from '../../network/packet/index.js';
6
- import { Serializer } from '../../serializer.js';
1
+ import type { Unlisten } from '../../event';
2
+ import { EventEmitter } from '../../event';
3
+ import { Identifier, IdentifierMap } from '../../identifier';
4
+ import { Lock } from '../../lock.js';
5
+ import { PacketType } from '../../network/packet';
6
+ import { Omu } from '../../omu';
7
+ import { JsonType, Serializer } from '../../serialize';
7
8
  import { EndpointType } from '../endpoint/endpoint.js';
8
9
  import { type Extension, ExtensionType } from '../extension.js';
9
10
 
10
- import { RegistryPacket, RegistryRegisterPacket } from './packets.js';
11
+ import { RegisterPacket, RegistryPacket } from './packets.js';
11
12
  import { type Registry, RegistryType } from './registry.js';
12
13
 
13
14
  export class RegistryExtension implements Extension {
14
- public readonly type = REGISTRY_EXTENSION_TYPE;
15
+ public readonly type: ExtensionType<RegistryExtension> = REGISTRY_EXTENSION_TYPE;
15
16
  private readonly registries = new IdentifierMap<Registry<unknown>>();
16
17
 
17
- constructor(private readonly client: Client) {
18
- client.network.registerPacket(
18
+ constructor(private readonly omu: Omu) {
19
+ omu.network.registerPacket(
19
20
  REGISTRY_REGISTER_PACKET,
20
21
  REGISTRY_UPDATE_PACKET,
21
22
  REGISTRY_LISTEN_PACKET,
@@ -23,11 +24,10 @@ export class RegistryExtension implements Extension {
23
24
  }
24
25
 
25
26
  private createRegistry<T>(registryType: RegistryType<T>): Registry<T> {
26
- this.client.permissions.require(REGISTRY_PERMISSION_ID);
27
27
  if (this.registries.has(registryType.id)) {
28
28
  throw new Error(`Registry with identifier '${registryType.id}' already exists`);
29
29
  }
30
- return new RegistryImpl(this.client, registryType);
30
+ return new RegistryImpl(this.omu, registryType);
31
31
  }
32
32
 
33
33
  public get<T>(registryType: RegistryType<T>): Registry<T> {
@@ -40,15 +40,28 @@ export class RegistryExtension implements Extension {
40
40
  return registry as Registry<T>;
41
41
  }
42
42
 
43
- public create<T>(name: string, options: { default: T, serializer?: Serializer<T, Uint8Array> }): Registry<T> {
44
- const identifier = this.client.app.id.join(name);
43
+ public json<T, D extends JsonType = JsonType>(name: string, options: { default: T; serializer?: Serializer<T, D> }): Registry<T> {
44
+ const identifier = this.omu.app.id.join(name);
45
+ if (this.registries.has(identifier)) {
46
+ throw new Error(`Registry with name '${name}' already exists`);
47
+ }
48
+ const tableType = RegistryType.createJson<T>(identifier, {
49
+ name,
50
+ defaultValue: options.default,
51
+ serializer: options.serializer,
52
+ });
53
+ return this.createRegistry(tableType);
54
+ }
55
+
56
+ public serialized<T>(name: string, options: { default: T; serializer: Serializer<T, Uint8Array> }): Registry<T> {
57
+ const identifier = this.omu.app.id.join(name);
45
58
  if (this.registries.has(identifier)) {
46
59
  throw new Error(`Registry with name '${name}' already exists`);
47
60
  }
48
61
  const tableType = RegistryType.createSerialized<T>(identifier, {
49
62
  name,
50
63
  defaultValue: options.default,
51
- serializer: options.serializer ?? Serializer.json(),
64
+ serializer: options.serializer,
52
65
  });
53
66
  return this.createRegistry(tableType);
54
67
  }
@@ -56,53 +69,72 @@ export class RegistryExtension implements Extension {
56
69
 
57
70
  class RegistryImpl<T> implements Registry<T> {
58
71
  private readonly eventEmitter: EventEmitter<[T]> = new EventEmitter();
72
+ private readonly lock: Lock = new Lock();
59
73
  private listening = false;
60
74
  public value: T;
61
75
 
62
76
  constructor(
63
- private readonly client: Client,
77
+ private readonly omu: Omu,
64
78
  public readonly type: RegistryType<T>,
65
79
  ) {
66
80
  this.value = type.defaultValue;
67
- client.network.addPacketHandler(REGISTRY_UPDATE_PACKET, (packet) =>
81
+ omu.network.addPacketHandler(REGISTRY_UPDATE_PACKET, (packet) =>
68
82
  this.handleUpdate(packet),
69
83
  );
70
- client.network.addTask(() => this.onTask());
84
+ omu.network.addTask(() => this.onTask());
71
85
  }
72
86
 
73
- public async get(): Promise<T> {
74
- const result = await this.client.endpoints.call(REGISTRY_GET_ENDPOINT, this.type.id);
87
+ async #get(): Promise<T> {
88
+ const result = await this.omu.endpoints.call(REGISTRY_GET_ENDPOINT, this.type.id);
75
89
  if (result.value === null) {
76
90
  return this.type.defaultValue;
77
91
  }
78
92
  return this.type.serializer.deserialize(result.value);
79
93
  }
80
94
 
81
- public async set(value: T): Promise<void> {
82
- this.client.send(REGISTRY_UPDATE_PACKET, {
95
+ async #set(value: T): Promise<void> {
96
+ this.omu.send(REGISTRY_UPDATE_PACKET, {
83
97
  id: this.type.id,
84
98
  value: this.type.serializer.serialize(value),
85
99
  });
100
+ }
101
+
102
+ public async get(): Promise<T> {
103
+ const value = await this.lock.use(async () => this.#get());
104
+ this.eventEmitter.emit(value);
105
+ return value;
106
+ }
107
+
108
+ public async set(value: T): Promise<void> {
109
+ await this.lock.use(async () => this.#set(value));
86
110
  this.eventEmitter.emit(value);
87
111
  }
88
112
 
89
113
  public async update(fn: (value: T) => PromiseLike<T> | T): Promise<T> {
90
- const value = await this.get();
91
- const newValue = await fn(value);
92
- await this.set(newValue);
93
- return newValue;
114
+ const value = await this.lock.use(async () => {
115
+ const value = await this.#get();
116
+ const newValue = await fn(value);
117
+ await this.#set(newValue);
118
+ return newValue;
119
+ });
120
+ this.eventEmitter.emit(value);
121
+ return value;
94
122
  }
95
123
 
96
124
  public async modify(fn: (value: T) => PromiseLike<T> | T): Promise<T> {
97
- const value = await this.get();
98
- const newValue = await fn(value);
99
- await this.set(newValue);
100
- return newValue;
125
+ const value = await this.lock.use(async () => {
126
+ const value = await this.#get();
127
+ const newValue = await fn(value);
128
+ await this.#set(newValue);
129
+ return newValue;
130
+ });
131
+ this.eventEmitter.emit(value);
132
+ return value;
101
133
  }
102
134
 
103
135
  public listen(handler: (value: T) => Promise<void> | void): Unlisten {
104
- if (!this.listening && this.client.ready) {
105
- this.client.send(REGISTRY_LISTEN_PACKET, this.type.id);
136
+ if (!this.listening && this.omu.ready) {
137
+ this.omu.send(REGISTRY_LISTEN_PACKET, this.type.id);
106
138
  }
107
139
  this.listening = true;
108
140
  return this.eventEmitter.listen(handler);
@@ -120,30 +152,27 @@ class RegistryImpl<T> implements Registry<T> {
120
152
 
121
153
  private onTask(): void {
122
154
  if (this.listening) {
123
- this.client.send(REGISTRY_LISTEN_PACKET, this.type.id);
155
+ this.omu.send(REGISTRY_LISTEN_PACKET, this.type.id);
124
156
  }
125
- if (!this.type.id.isSubpathOf(this.client.app.id)) {
157
+ if (!this.type.id.isSubpathOf(this.omu.app.id)) {
126
158
  return;
127
159
  }
128
- this.client.send(REGISTRY_REGISTER_PACKET, {
160
+ this.omu.send(REGISTRY_REGISTER_PACKET, {
129
161
  id: this.type.id,
130
162
  permissions: this.type.permissions,
131
163
  });
132
164
  }
133
165
  }
134
166
 
135
- export const REGISTRY_EXTENSION_TYPE = new ExtensionType(
167
+ export const REGISTRY_EXTENSION_TYPE: ExtensionType<RegistryExtension> = new ExtensionType(
136
168
  'registry',
137
- (client: Client) => new RegistryExtension(client),
138
- );
139
- export const REGISTRY_PERMISSION_ID = REGISTRY_EXTENSION_TYPE.join('permission');
140
- const REGISTRY_REGISTER_PACKET = PacketType.createSerialized<RegistryRegisterPacket>(
141
- REGISTRY_EXTENSION_TYPE,
142
- {
143
- name: 'register',
144
- serializer: RegistryRegisterPacket,
145
- },
169
+ (omu: Omu) => new RegistryExtension(omu),
146
170
  );
171
+ export const REGISTRY_PERMISSION_ID: Identifier = REGISTRY_EXTENSION_TYPE.join('permission');
172
+ const REGISTRY_REGISTER_PACKET = PacketType.createJson<RegisterPacket>(REGISTRY_EXTENSION_TYPE, {
173
+ name: 'register',
174
+ serializer: RegisterPacket,
175
+ });
147
176
  const REGISTRY_UPDATE_PACKET = PacketType.createSerialized<RegistryPacket>(
148
177
  REGISTRY_EXTENSION_TYPE,
149
178
  {
@@ -153,13 +182,13 @@ const REGISTRY_UPDATE_PACKET = PacketType.createSerialized<RegistryPacket>(
153
182
  );
154
183
  const REGISTRY_LISTEN_PACKET = PacketType.createJson<Identifier>(REGISTRY_EXTENSION_TYPE, {
155
184
  name: 'listen',
156
- serializer: Serializer.model(Identifier),
185
+ serializer: Identifier,
157
186
  });
158
187
  const REGISTRY_GET_ENDPOINT = EndpointType.createSerialized<Identifier, RegistryPacket>(
159
188
  REGISTRY_EXTENSION_TYPE,
160
189
  {
161
190
  name: 'get',
162
- requestSerializer: Serializer.model(Identifier).toJson(),
191
+ requestSerializer: Serializer.of(Identifier).toJson(),
163
192
  responseSerializer: RegistryPacket,
164
193
  permissionId: REGISTRY_PERMISSION_ID,
165
194
  },
@@ -0,0 +1,3 @@
1
+ export { REGISTRY_PERMISSION_ID } from './extension.js';
2
+ export { RegistryType, type Registry, type RegistryPermissions } from './registry.js';
3
+