@omujs/omu 0.6.20 → 0.6.22

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 (332) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/{built → dist}/dts/bytebuffer.d.ts +4 -1
  3. package/dist/dts/bytebuffer.d.ts.map +1 -0
  4. package/{built → dist}/dts/client.d.ts +3 -3
  5. package/{built → dist}/dts/client.d.ts.map +1 -1
  6. package/{built → dist}/dts/extension/asset/asset-extension.d.ts +4 -4
  7. package/dist/dts/extension/asset/asset-extension.d.ts.map +1 -0
  8. package/dist/dts/extension/dashboard/dashboard-extension.d.ts +29 -0
  9. package/dist/dts/extension/dashboard/dashboard-extension.d.ts.map +1 -0
  10. package/dist/dts/extension/dashboard/dashboard.d.ts +10 -0
  11. package/dist/dts/extension/dashboard/dashboard.d.ts.map +1 -0
  12. package/dist/dts/extension/dashboard/index.d.ts +3 -0
  13. package/dist/dts/extension/dashboard/index.d.ts.map +1 -0
  14. package/{built → dist}/dts/extension/dashboard/packets.d.ts +21 -0
  15. package/{built → dist}/dts/extension/dashboard/packets.d.ts.map +1 -1
  16. package/{built → dist}/dts/extension/endpoint/endpoint-extension.d.ts +2 -2
  17. package/dist/dts/extension/endpoint/endpoint-extension.d.ts.map +1 -0
  18. package/{built → dist}/dts/extension/endpoint/endpoint.d.ts.map +1 -1
  19. package/{built → dist}/dts/extension/extension.d.ts +1 -0
  20. package/dist/dts/extension/extension.d.ts.map +1 -0
  21. package/{built → dist}/dts/extension/i18n/i18n-extension.d.ts +8 -6
  22. package/dist/dts/extension/i18n/i18n-extension.d.ts.map +1 -0
  23. package/{built → dist}/dts/extension/logger/logger-extension.d.ts +3 -3
  24. package/dist/dts/extension/logger/logger-extension.d.ts.map +1 -0
  25. package/{built → dist}/dts/extension/permission/permission-extension.d.ts +2 -2
  26. package/dist/dts/extension/permission/permission-extension.d.ts.map +1 -0
  27. package/{built → dist}/dts/extension/permission/permission.d.ts +1 -2
  28. package/dist/dts/extension/permission/permission.d.ts.map +1 -0
  29. package/{built → dist}/dts/extension/plugin/plugin-extension.d.ts +2 -2
  30. package/dist/dts/extension/plugin/plugin-extension.d.ts.map +1 -0
  31. package/dist/dts/extension/registry/registry-extension.d.ts +15 -0
  32. package/dist/dts/extension/registry/registry-extension.d.ts.map +1 -0
  33. package/dist/dts/extension/server/server-extension.d.ts +41 -0
  34. package/dist/dts/extension/server/server-extension.d.ts.map +1 -0
  35. package/{built → dist}/dts/extension/signal/signal-extension.d.ts +3 -2
  36. package/dist/dts/extension/signal/signal-extension.d.ts.map +1 -0
  37. package/{built → dist}/dts/extension/table/packets.d.ts +3 -3
  38. package/dist/dts/extension/table/packets.d.ts.map +1 -0
  39. package/{built → dist}/dts/extension/table/table-extension.d.ts +1 -0
  40. package/dist/dts/extension/table/table-extension.d.ts.map +1 -0
  41. package/{built → dist}/dts/extension/table/table.d.ts +9 -3
  42. package/dist/dts/extension/table/table.d.ts.map +1 -0
  43. package/{built → dist}/dts/identifier.d.ts +1 -0
  44. package/dist/dts/identifier.d.ts.map +1 -0
  45. package/{built → dist}/dts/network/network.d.ts.map +1 -1
  46. package/{built → dist}/dts/network/packet/packet-types.d.ts +6 -0
  47. package/dist/dts/network/packet/packet-types.d.ts.map +1 -0
  48. package/{built → dist}/dts/network/packet/packet.d.ts.map +1 -1
  49. package/{built → dist}/dts/omu.d.ts +3 -3
  50. package/{built → dist}/dts/omu.d.ts.map +1 -1
  51. package/dist/dts/version.d.ts +2 -0
  52. package/dist/dts/version.d.ts.map +1 -0
  53. package/{built → dist}/esm/bytebuffer.js +6 -6
  54. package/dist/esm/bytebuffer.js.map +1 -0
  55. package/{built → dist}/esm/extension/asset/asset-extension.js +1 -0
  56. package/{built → dist}/esm/extension/asset/asset-extension.js.map +1 -1
  57. package/{built → dist}/esm/extension/dashboard/dashboard-extension.js +69 -2
  58. package/dist/esm/extension/dashboard/dashboard-extension.js.map +1 -0
  59. package/dist/esm/extension/dashboard/index.js +2 -0
  60. package/{built → dist}/esm/extension/dashboard/index.js.map +1 -1
  61. package/{built → dist}/esm/extension/dashboard/packets.js +44 -0
  62. package/{built → dist}/esm/extension/dashboard/packets.js.map +1 -1
  63. package/{built → dist}/esm/extension/endpoint/endpoint-extension.js +1 -0
  64. package/dist/esm/extension/endpoint/endpoint-extension.js.map +1 -0
  65. package/{built → dist}/esm/extension/endpoint/endpoint.js.map +1 -1
  66. package/{built → dist}/esm/extension/extension.js.map +1 -1
  67. package/{built → dist}/esm/extension/i18n/i18n-extension.js +15 -6
  68. package/dist/esm/extension/i18n/i18n-extension.js.map +1 -0
  69. package/{built → dist}/esm/extension/logger/logger-extension.js +1 -0
  70. package/dist/esm/extension/logger/logger-extension.js.map +1 -0
  71. package/{built → dist}/esm/extension/permission/permission-extension.js +1 -0
  72. package/dist/esm/extension/permission/permission-extension.js.map +1 -0
  73. package/{built → dist}/esm/extension/plugin/plugin-extension.js +1 -0
  74. package/dist/esm/extension/plugin/plugin-extension.js.map +1 -0
  75. package/{built → dist}/esm/extension/registry/registry-extension.js +1 -0
  76. package/dist/esm/extension/registry/registry-extension.js.map +1 -0
  77. package/{built → dist}/esm/extension/registry/registry.js +1 -1
  78. package/dist/esm/extension/registry/registry.js.map +1 -0
  79. package/dist/esm/extension/server/server-extension.js +138 -0
  80. package/dist/esm/extension/server/server-extension.js.map +1 -0
  81. package/{built → dist}/esm/extension/signal/signal-extension.js +1 -0
  82. package/dist/esm/extension/signal/signal-extension.js.map +1 -0
  83. package/{built → dist}/esm/extension/signal/signal.js +1 -1
  84. package/dist/esm/extension/signal/signal.js.map +1 -0
  85. package/{built → dist}/esm/extension/table/packets.js +31 -33
  86. package/dist/esm/extension/table/packets.js.map +1 -0
  87. package/{built → dist}/esm/extension/table/table-extension.js +60 -17
  88. package/dist/esm/extension/table/table-extension.js.map +1 -0
  89. package/{built → dist}/esm/extension/table/table.js.map +1 -1
  90. package/{built → dist}/esm/identifier.js +6 -8
  91. package/dist/esm/identifier.js.map +1 -0
  92. package/{built → dist}/esm/network/network.js +2 -0
  93. package/dist/esm/network/network.js.map +1 -0
  94. package/{built → dist}/esm/network/packet/packet-types.js +4 -0
  95. package/dist/esm/network/packet/packet-types.js.map +1 -0
  96. package/{built → dist}/esm/network/packet/packet.js.map +1 -1
  97. package/{built → dist}/esm/omu.js +4 -4
  98. package/{built → dist}/esm/omu.js.map +1 -1
  99. package/dist/esm/version.js +2 -0
  100. package/dist/esm/version.js.map +1 -0
  101. package/eslint.config.js +6 -0
  102. package/package.json +13 -11
  103. package/src/bytebuffer.ts +10 -7
  104. package/src/client.ts +3 -3
  105. package/src/extension/asset/asset-extension.ts +2 -0
  106. package/src/extension/dashboard/dashboard-extension.ts +77 -1
  107. package/src/extension/dashboard/dashboard.ts +3 -1
  108. package/src/extension/dashboard/index.ts +7 -1
  109. package/src/extension/dashboard/packets.ts +46 -0
  110. package/src/extension/endpoint/endpoint-extension.ts +1 -0
  111. package/src/extension/endpoint/endpoint.ts +1 -1
  112. package/src/extension/extension.ts +3 -1
  113. package/src/extension/i18n/i18n-extension.ts +18 -10
  114. package/src/extension/logger/logger-extension.ts +1 -0
  115. package/src/extension/permission/permission-extension.ts +1 -0
  116. package/src/extension/permission/permission.ts +1 -1
  117. package/src/extension/plugin/plugin-extension.ts +1 -0
  118. package/src/extension/registry/registry-extension.ts +3 -2
  119. package/src/extension/registry/registry.ts +1 -1
  120. package/src/extension/server/server-extension.ts +103 -4
  121. package/src/extension/signal/signal-extension.ts +2 -1
  122. package/src/extension/signal/signal.ts +1 -1
  123. package/src/extension/table/packets.ts +29 -31
  124. package/src/extension/table/table-extension.ts +79 -28
  125. package/src/extension/table/table.ts +8 -4
  126. package/src/identifier.ts +8 -8
  127. package/src/network/network.ts +2 -0
  128. package/src/network/packet/packet-types.ts +11 -0
  129. package/src/network/packet/packet.ts +1 -1
  130. package/src/omu.ts +5 -5
  131. package/src/version.ts +1 -0
  132. package/tsconfig.json +2 -2
  133. package/.eslintignore +0 -13
  134. package/.eslintrc.cjs +0 -6
  135. package/.prettierignore +0 -1
  136. package/built/dts/bytebuffer.d.ts.map +0 -1
  137. package/built/dts/extension/asset/asset-extension.d.ts.map +0 -1
  138. package/built/dts/extension/dashboard/dashboard-extension.d.ts +0 -24
  139. package/built/dts/extension/dashboard/dashboard-extension.d.ts.map +0 -1
  140. package/built/dts/extension/dashboard/dashboard.d.ts +0 -8
  141. package/built/dts/extension/dashboard/dashboard.d.ts.map +0 -1
  142. package/built/dts/extension/dashboard/index.d.ts +0 -3
  143. package/built/dts/extension/dashboard/index.d.ts.map +0 -1
  144. package/built/dts/extension/endpoint/endpoint-extension.d.ts.map +0 -1
  145. package/built/dts/extension/extension.d.ts.map +0 -1
  146. package/built/dts/extension/i18n/i18n-extension.d.ts.map +0 -1
  147. package/built/dts/extension/logger/logger-extension.d.ts.map +0 -1
  148. package/built/dts/extension/permission/permission-extension.d.ts.map +0 -1
  149. package/built/dts/extension/permission/permission.d.ts.map +0 -1
  150. package/built/dts/extension/plugin/plugin-extension.d.ts.map +0 -1
  151. package/built/dts/extension/registry/registry-extension.d.ts +0 -15
  152. package/built/dts/extension/registry/registry-extension.d.ts.map +0 -1
  153. package/built/dts/extension/server/server-extension.d.ts +0 -21
  154. package/built/dts/extension/server/server-extension.d.ts.map +0 -1
  155. package/built/dts/extension/signal/signal-extension.d.ts.map +0 -1
  156. package/built/dts/extension/table/packets.d.ts.map +0 -1
  157. package/built/dts/extension/table/table-extension.d.ts.map +0 -1
  158. package/built/dts/extension/table/table.d.ts.map +0 -1
  159. package/built/dts/identifier.d.ts.map +0 -1
  160. package/built/dts/network/packet/packet-types.d.ts.map +0 -1
  161. package/built/esm/bytebuffer.js.map +0 -1
  162. package/built/esm/extension/dashboard/dashboard-extension.js.map +0 -1
  163. package/built/esm/extension/dashboard/index.js +0 -2
  164. package/built/esm/extension/endpoint/endpoint-extension.js.map +0 -1
  165. package/built/esm/extension/i18n/i18n-extension.js.map +0 -1
  166. package/built/esm/extension/logger/logger-extension.js.map +0 -1
  167. package/built/esm/extension/permission/permission-extension.js.map +0 -1
  168. package/built/esm/extension/plugin/plugin-extension.js.map +0 -1
  169. package/built/esm/extension/registry/registry-extension.js.map +0 -1
  170. package/built/esm/extension/registry/registry.js.map +0 -1
  171. package/built/esm/extension/server/server-extension.js +0 -62
  172. package/built/esm/extension/server/server-extension.js.map +0 -1
  173. package/built/esm/extension/signal/signal-extension.js.map +0 -1
  174. package/built/esm/extension/signal/signal.js.map +0 -1
  175. package/built/esm/extension/table/packets.js.map +0 -1
  176. package/built/esm/extension/table/table-extension.js.map +0 -1
  177. package/built/esm/identifier.js.map +0 -1
  178. package/built/esm/network/network.js.map +0 -1
  179. package/built/esm/network/packet/packet-types.js.map +0 -1
  180. /package/{built → dist}/dts/address.d.ts +0 -0
  181. /package/{built → dist}/dts/address.d.ts.map +0 -0
  182. /package/{built → dist}/dts/app.d.ts +0 -0
  183. /package/{built → dist}/dts/app.d.ts.map +0 -0
  184. /package/{built → dist}/dts/const.d.ts +0 -0
  185. /package/{built → dist}/dts/const.d.ts.map +0 -0
  186. /package/{built → dist}/dts/errors.d.ts +0 -0
  187. /package/{built → dist}/dts/errors.d.ts.map +0 -0
  188. /package/{built → dist}/dts/event-emitter.d.ts +0 -0
  189. /package/{built → dist}/dts/event-emitter.d.ts.map +0 -0
  190. /package/{built → dist}/dts/extension/asset/index.d.ts +0 -0
  191. /package/{built → dist}/dts/extension/asset/index.d.ts.map +0 -0
  192. /package/{built → dist}/dts/extension/endpoint/endpoint.d.ts +0 -0
  193. /package/{built → dist}/dts/extension/endpoint/index.d.ts +0 -0
  194. /package/{built → dist}/dts/extension/endpoint/index.d.ts.map +0 -0
  195. /package/{built → dist}/dts/extension/endpoint/packets.d.ts +0 -0
  196. /package/{built → dist}/dts/extension/endpoint/packets.d.ts.map +0 -0
  197. /package/{built → dist}/dts/extension/extension-registry.d.ts +0 -0
  198. /package/{built → dist}/dts/extension/extension-registry.d.ts.map +0 -0
  199. /package/{built → dist}/dts/extension/i18n/index.d.ts +0 -0
  200. /package/{built → dist}/dts/extension/i18n/index.d.ts.map +0 -0
  201. /package/{built → dist}/dts/extension/index.d.ts +0 -0
  202. /package/{built → dist}/dts/extension/index.d.ts.map +0 -0
  203. /package/{built → dist}/dts/extension/logger/index.d.ts +0 -0
  204. /package/{built → dist}/dts/extension/logger/index.d.ts.map +0 -0
  205. /package/{built → dist}/dts/extension/logger/packets.d.ts +0 -0
  206. /package/{built → dist}/dts/extension/logger/packets.d.ts.map +0 -0
  207. /package/{built → dist}/dts/extension/permission/index.d.ts +0 -0
  208. /package/{built → dist}/dts/extension/permission/index.d.ts.map +0 -0
  209. /package/{built → dist}/dts/extension/plugin/index.d.ts +0 -0
  210. /package/{built → dist}/dts/extension/plugin/index.d.ts.map +0 -0
  211. /package/{built → dist}/dts/extension/plugin/package-info.d.ts +0 -0
  212. /package/{built → dist}/dts/extension/plugin/package-info.d.ts.map +0 -0
  213. /package/{built → dist}/dts/extension/registry/index.d.ts +0 -0
  214. /package/{built → dist}/dts/extension/registry/index.d.ts.map +0 -0
  215. /package/{built → dist}/dts/extension/registry/packets.d.ts +0 -0
  216. /package/{built → dist}/dts/extension/registry/packets.d.ts.map +0 -0
  217. /package/{built → dist}/dts/extension/registry/registry.d.ts +0 -0
  218. /package/{built → dist}/dts/extension/registry/registry.d.ts.map +0 -0
  219. /package/{built → dist}/dts/extension/server/index.d.ts +0 -0
  220. /package/{built → dist}/dts/extension/server/index.d.ts.map +0 -0
  221. /package/{built → dist}/dts/extension/signal/index.d.ts +0 -0
  222. /package/{built → dist}/dts/extension/signal/index.d.ts.map +0 -0
  223. /package/{built → dist}/dts/extension/signal/packets.d.ts +0 -0
  224. /package/{built → dist}/dts/extension/signal/packets.d.ts.map +0 -0
  225. /package/{built → dist}/dts/extension/signal/signal.d.ts +0 -0
  226. /package/{built → dist}/dts/extension/signal/signal.d.ts.map +0 -0
  227. /package/{built → dist}/dts/extension/table/index.d.ts +0 -0
  228. /package/{built → dist}/dts/extension/table/index.d.ts.map +0 -0
  229. /package/{built → dist}/dts/index.d.ts +0 -0
  230. /package/{built → dist}/dts/index.d.ts.map +0 -0
  231. /package/{built → dist}/dts/interface.d.ts +0 -0
  232. /package/{built → dist}/dts/interface.d.ts.map +0 -0
  233. /package/{built → dist}/dts/localization/index.d.ts +0 -0
  234. /package/{built → dist}/dts/localization/index.d.ts.map +0 -0
  235. /package/{built → dist}/dts/localization/locale.d.ts +0 -0
  236. /package/{built → dist}/dts/localization/locale.d.ts.map +0 -0
  237. /package/{built → dist}/dts/localization/localization.d.ts +0 -0
  238. /package/{built → dist}/dts/localization/localization.d.ts.map +0 -0
  239. /package/{built → dist}/dts/model.d.ts +0 -0
  240. /package/{built → dist}/dts/model.d.ts.map +0 -0
  241. /package/{built → dist}/dts/network/connection.d.ts +0 -0
  242. /package/{built → dist}/dts/network/connection.d.ts.map +0 -0
  243. /package/{built → dist}/dts/network/index.d.ts +0 -0
  244. /package/{built → dist}/dts/network/index.d.ts.map +0 -0
  245. /package/{built → dist}/dts/network/network.d.ts +0 -0
  246. /package/{built → dist}/dts/network/packet/index.d.ts +0 -0
  247. /package/{built → dist}/dts/network/packet/index.d.ts.map +0 -0
  248. /package/{built → dist}/dts/network/packet/packet.d.ts +0 -0
  249. /package/{built → dist}/dts/network/websocket-connection.d.ts +0 -0
  250. /package/{built → dist}/dts/network/websocket-connection.d.ts.map +0 -0
  251. /package/{built → dist}/dts/serializer.d.ts +0 -0
  252. /package/{built → dist}/dts/serializer.d.ts.map +0 -0
  253. /package/{built → dist}/dts/token.d.ts +0 -0
  254. /package/{built → dist}/dts/token.d.ts.map +0 -0
  255. /package/{built → dist}/esm/address.js +0 -0
  256. /package/{built → dist}/esm/address.js.map +0 -0
  257. /package/{built → dist}/esm/app.js +0 -0
  258. /package/{built → dist}/esm/app.js.map +0 -0
  259. /package/{built → dist}/esm/client.js +0 -0
  260. /package/{built → dist}/esm/client.js.map +0 -0
  261. /package/{built → dist}/esm/const.js +0 -0
  262. /package/{built → dist}/esm/const.js.map +0 -0
  263. /package/{built → dist}/esm/errors.js +0 -0
  264. /package/{built → dist}/esm/errors.js.map +0 -0
  265. /package/{built → dist}/esm/event-emitter.js +0 -0
  266. /package/{built → dist}/esm/event-emitter.js.map +0 -0
  267. /package/{built → dist}/esm/extension/asset/index.js +0 -0
  268. /package/{built → dist}/esm/extension/asset/index.js.map +0 -0
  269. /package/{built → dist}/esm/extension/dashboard/dashboard.js +0 -0
  270. /package/{built → dist}/esm/extension/dashboard/dashboard.js.map +0 -0
  271. /package/{built → dist}/esm/extension/endpoint/endpoint.js +0 -0
  272. /package/{built → dist}/esm/extension/endpoint/index.js +0 -0
  273. /package/{built → dist}/esm/extension/endpoint/index.js.map +0 -0
  274. /package/{built → dist}/esm/extension/endpoint/packets.js +0 -0
  275. /package/{built → dist}/esm/extension/endpoint/packets.js.map +0 -0
  276. /package/{built → dist}/esm/extension/extension-registry.js +0 -0
  277. /package/{built → dist}/esm/extension/extension-registry.js.map +0 -0
  278. /package/{built → dist}/esm/extension/extension.js +0 -0
  279. /package/{built → dist}/esm/extension/i18n/index.js +0 -0
  280. /package/{built → dist}/esm/extension/i18n/index.js.map +0 -0
  281. /package/{built → dist}/esm/extension/index.js +0 -0
  282. /package/{built → dist}/esm/extension/index.js.map +0 -0
  283. /package/{built → dist}/esm/extension/logger/index.js +0 -0
  284. /package/{built → dist}/esm/extension/logger/index.js.map +0 -0
  285. /package/{built → dist}/esm/extension/logger/packets.js +0 -0
  286. /package/{built → dist}/esm/extension/logger/packets.js.map +0 -0
  287. /package/{built → dist}/esm/extension/permission/index.js +0 -0
  288. /package/{built → dist}/esm/extension/permission/index.js.map +0 -0
  289. /package/{built → dist}/esm/extension/permission/permission.js +0 -0
  290. /package/{built → dist}/esm/extension/permission/permission.js.map +0 -0
  291. /package/{built → dist}/esm/extension/plugin/index.js +0 -0
  292. /package/{built → dist}/esm/extension/plugin/index.js.map +0 -0
  293. /package/{built → dist}/esm/extension/plugin/package-info.js +0 -0
  294. /package/{built → dist}/esm/extension/plugin/package-info.js.map +0 -0
  295. /package/{built → dist}/esm/extension/registry/index.js +0 -0
  296. /package/{built → dist}/esm/extension/registry/index.js.map +0 -0
  297. /package/{built → dist}/esm/extension/registry/packets.js +0 -0
  298. /package/{built → dist}/esm/extension/registry/packets.js.map +0 -0
  299. /package/{built → dist}/esm/extension/server/index.js +0 -0
  300. /package/{built → dist}/esm/extension/server/index.js.map +0 -0
  301. /package/{built → dist}/esm/extension/signal/index.js +0 -0
  302. /package/{built → dist}/esm/extension/signal/index.js.map +0 -0
  303. /package/{built → dist}/esm/extension/signal/packets.js +0 -0
  304. /package/{built → dist}/esm/extension/signal/packets.js.map +0 -0
  305. /package/{built → dist}/esm/extension/table/index.js +0 -0
  306. /package/{built → dist}/esm/extension/table/index.js.map +0 -0
  307. /package/{built → dist}/esm/extension/table/table.js +0 -0
  308. /package/{built → dist}/esm/index.js +0 -0
  309. /package/{built → dist}/esm/index.js.map +0 -0
  310. /package/{built → dist}/esm/interface.js +0 -0
  311. /package/{built → dist}/esm/interface.js.map +0 -0
  312. /package/{built → dist}/esm/localization/index.js +0 -0
  313. /package/{built → dist}/esm/localization/index.js.map +0 -0
  314. /package/{built → dist}/esm/localization/locale.js +0 -0
  315. /package/{built → dist}/esm/localization/locale.js.map +0 -0
  316. /package/{built → dist}/esm/localization/localization.js +0 -0
  317. /package/{built → dist}/esm/localization/localization.js.map +0 -0
  318. /package/{built → dist}/esm/model.js +0 -0
  319. /package/{built → dist}/esm/model.js.map +0 -0
  320. /package/{built → dist}/esm/network/connection.js +0 -0
  321. /package/{built → dist}/esm/network/connection.js.map +0 -0
  322. /package/{built → dist}/esm/network/index.js +0 -0
  323. /package/{built → dist}/esm/network/index.js.map +0 -0
  324. /package/{built → dist}/esm/network/packet/index.js +0 -0
  325. /package/{built → dist}/esm/network/packet/index.js.map +0 -0
  326. /package/{built → dist}/esm/network/packet/packet.js +0 -0
  327. /package/{built → dist}/esm/network/websocket-connection.js +0 -0
  328. /package/{built → dist}/esm/network/websocket-connection.js.map +0 -0
  329. /package/{built → dist}/esm/serializer.js +0 -0
  330. /package/{built → dist}/esm/serializer.js.map +0 -0
  331. /package/{built → dist}/esm/token.js +0 -0
  332. /package/{built → dist}/esm/token.js.map +0 -0
@@ -9,7 +9,7 @@ import type { Table } from '../table/table.js';
9
9
  import { TableType } from '../table/table.js';
10
10
 
11
11
  import type { DashboardHandler } from './dashboard.js';
12
- import { PermissionRequestPacket, PluginRequestPacket } from './packets.js';
12
+ import { AppInstallRequest, AppInstallResponse, AppUpdateRequest, AppUpdateResponse, PermissionRequestPacket, PluginRequestPacket } from './packets.js';
13
13
 
14
14
  export const DASHBOARD_EXTENSION_TYPE = new ExtensionType(
15
15
  'dashboard',
@@ -75,8 +75,41 @@ const DASHBOARD_APP_TABLE_TYPE = TableType.createModel(DASHBOARD_EXTENSION_TYPE,
75
75
  remove: DASHOBARD_APP_EDIT_PERMISSION_ID,
76
76
  },
77
77
  });
78
+ export const DASHBOARD_APP_INSTALL_PERMISSION_ID = DASHBOARD_EXTENSION_TYPE.join('app', 'install');
79
+ const DASHBOARD_APP_INSTALL_ENDPOINT = EndpointType.createJson<App, AppInstallResponse>(DASHBOARD_EXTENSION_TYPE, {
80
+ name: 'install_app',
81
+ requestSerializer: Serializer.model(App),
82
+ permissionId: DASHBOARD_APP_INSTALL_PERMISSION_ID,
83
+ });
84
+ const DASHBOARD_APP_INSTALL_PACKET = PacketType.createSerialized<AppInstallRequest>(DASHBOARD_EXTENSION_TYPE, {
85
+ name: 'install_app',
86
+ serializer: AppInstallRequest,
87
+ });
88
+ const DASHBOARD_APP_INSTALL_ACCEPT_PACKET = PacketType.createJson<string>(DASHBOARD_EXTENSION_TYPE, {
89
+ name: 'install_app_accept',
90
+ });
91
+ const DASHBOARD_APP_INSTALL_DENY_PACKET = PacketType.createJson<string>(DASHBOARD_EXTENSION_TYPE, {
92
+ name: 'install_app_deny',
93
+ });
94
+ const DASHBOARD_APP_UPDATE_PERMISSION_ID = DASHBOARD_EXTENSION_TYPE.join('app', 'update');
95
+ const DASHBOARD_APP_UPDATE_ENDPOINT = EndpointType.createJson<App, AppUpdateResponse>(DASHBOARD_EXTENSION_TYPE, {
96
+ name: 'update_app',
97
+ requestSerializer: Serializer.model(App),
98
+ permissionId: DASHBOARD_APP_UPDATE_PERMISSION_ID,
99
+ });
100
+ const DASHBOARD_APP_UPDATE_PACKET = PacketType.createSerialized<AppUpdateRequest>(DASHBOARD_EXTENSION_TYPE, {
101
+ name: 'update_app',
102
+ serializer: AppUpdateRequest,
103
+ });
104
+ const DASHBOARD_APP_UPDATE_ACCEPT_PACKET = PacketType.createJson<string>(DASHBOARD_EXTENSION_TYPE, {
105
+ name: 'update_app_accept',
106
+ });
107
+ const DASHBOARD_APP_UPDATE_DENY_PACKET = PacketType.createJson<string>(DASHBOARD_EXTENSION_TYPE, {
108
+ name: 'update_app_deny',
109
+ });
78
110
 
79
111
  export class DashboardExtension {
112
+ public readonly type = DASHBOARD_EXTENSION_TYPE;
80
113
  private dashboard: DashboardHandler | null = null;
81
114
  public readonly apps: Table<App>;
82
115
 
@@ -89,6 +122,12 @@ export class DashboardExtension {
89
122
  DASHBOARD_PLUGIN_ACCEPT_PACKET,
90
123
  DASHBOARD_PLUGIN_DENY_PACKET,
91
124
  DASHBOARD_OPEN_APP_PACKET,
125
+ DASHBOARD_APP_INSTALL_PACKET,
126
+ DASHBOARD_APP_INSTALL_ACCEPT_PACKET,
127
+ DASHBOARD_APP_INSTALL_DENY_PACKET,
128
+ DASHBOARD_APP_UPDATE_PACKET,
129
+ DASHBOARD_APP_UPDATE_ACCEPT_PACKET,
130
+ DASHBOARD_APP_UPDATE_DENY_PACKET,
92
131
  );
93
132
  client.network.addPacketHandler(DASHBOARD_PERMISSION_REQUEST_PACKET, (request) =>
94
133
  this.handlePermissionRequest(request),
@@ -96,9 +135,16 @@ export class DashboardExtension {
96
135
  client.network.addPacketHandler(DASHBOARD_PLUGIN_REQUEST_PACKET, (request) =>
97
136
  this.handlePluginRequest(request),
98
137
  );
138
+ client.network.addPacketHandler(DASHBOARD_APP_INSTALL_PACKET, async (request) => {
139
+ this.handleInstallApp(request);
140
+ });
141
+ client.network.addPacketHandler(DASHBOARD_APP_UPDATE_PACKET, async (request) => {
142
+ this.handleUpdateApp(request);
143
+ });
99
144
  client.network.addPacketHandler(DASHBOARD_OPEN_APP_PACKET, (app) =>
100
145
  this.handleOpenApp(app),
101
146
  );
147
+
102
148
  this.apps = client.tables.get(DASHBOARD_APP_TABLE_TYPE);
103
149
  }
104
150
 
@@ -124,6 +170,28 @@ export class DashboardExtension {
124
170
  });
125
171
  }
126
172
 
173
+ private async handleInstallApp(request: AppInstallRequest): Promise<void> {
174
+ await this.handleDashboard(async (dashboard) => {
175
+ const response = await dashboard.handleInstallApp(request);
176
+ if (response) {
177
+ this.client.send(DASHBOARD_APP_INSTALL_ACCEPT_PACKET, request.requestId);
178
+ } else {
179
+ this.client.send(DASHBOARD_APP_INSTALL_DENY_PACKET, request.requestId);
180
+ }
181
+ });
182
+ }
183
+
184
+ private async handleUpdateApp(request: AppUpdateRequest): Promise<void> {
185
+ await this.handleDashboard(async (dashboard) => {
186
+ const response = await dashboard.handleUpdateApp(request);
187
+ if (response) {
188
+ this.client.send(DASHBOARD_APP_UPDATE_ACCEPT_PACKET, request.requestId);
189
+ } else {
190
+ this.client.send(DASHBOARD_APP_UPDATE_DENY_PACKET, request.requestId);
191
+ }
192
+ });
193
+ }
194
+
127
195
  private async handleOpenApp(app: App): Promise<void> {
128
196
  await this.handleDashboard(async (dashboard) => {
129
197
  await dashboard.handleOpenApp(app);
@@ -159,4 +227,12 @@ export class DashboardExtension {
159
227
  public async openApp(app: App): Promise<void> {
160
228
  return await this.client.endpoints.call(DASHBOARD_OPEN_APP_ENDPOINT, app);
161
229
  }
230
+
231
+ public async installApp(app: App): Promise<AppInstallResponse> {
232
+ return await this.client.endpoints.call(DASHBOARD_APP_INSTALL_ENDPOINT, app);
233
+ }
234
+
235
+ public async updateApp(app: App): Promise<AppUpdateResponse> {
236
+ return await this.client.endpoints.call(DASHBOARD_APP_UPDATE_ENDPOINT, app);
237
+ }
162
238
  }
@@ -1,9 +1,11 @@
1
1
  import type { App } from '../../app.js';
2
2
 
3
- import type { PermissionRequestPacket, PluginRequestPacket } from './packets.js';
3
+ import type { AppInstallRequest, AppUpdateRequest, PermissionRequestPacket, PluginRequestPacket } from './packets.js';
4
4
 
5
5
  export interface DashboardHandler {
6
6
  handlePermissionRequest(request: PermissionRequestPacket): Promise<boolean>;
7
7
  handlePluginRequest(request: PluginRequestPacket): Promise<boolean>;
8
+ handleInstallApp(request: AppInstallRequest): Promise<boolean>;
9
+ handleUpdateApp(request: AppUpdateRequest): Promise<boolean>;
8
10
  handleOpenApp(app: App): Promise<void>;
9
11
  }
@@ -1,3 +1,9 @@
1
- export { DASHBOARD_EXTENSION_TYPE, DASHBOARD_OPEN_APP_PERMISSION_ID, DASHBOARD_SET_PERMISSION_ID, DASHOBARD_APP_EDIT_PERMISSION_ID, DASHOBARD_APP_READ_PERMISSION_ID, DashboardExtension } from './dashboard-extension.js';
1
+ export {
2
+ DASHBOARD_APP_INSTALL_PERMISSION_ID, DASHBOARD_EXTENSION_TYPE,
3
+ DASHBOARD_OPEN_APP_PERMISSION_ID,
4
+ DASHBOARD_SET_PERMISSION_ID,
5
+ DASHOBARD_APP_EDIT_PERMISSION_ID,
6
+ DASHOBARD_APP_READ_PERMISSION_ID, DashboardExtension
7
+ } from './dashboard-extension.js';
2
8
  export { DashboardHandler } from './dashboard.js';
3
9
 
@@ -50,3 +50,49 @@ export class PluginRequestPacket {
50
50
  return new PluginRequestPacket(requestId, app, packages);
51
51
  }
52
52
  }
53
+
54
+ export class AppInstallRequest {
55
+ constructor(public readonly requestId: string, public readonly app: App) { }
56
+
57
+ public static serialize(packet: AppInstallRequest): Uint8Array {
58
+ const writer = new ByteWriter();
59
+ writer.writeString(packet.requestId);
60
+ writer.writeString(JSON.stringify(packet.app.toJson()));
61
+ return writer.finish();
62
+ }
63
+
64
+ public static deserialize(data: Uint8Array): AppInstallRequest {
65
+ const reader = new ByteReader(data);
66
+ const requestId = reader.readString();
67
+ const app = App.fromJson(JSON.parse(reader.readString()));
68
+ return new AppInstallRequest(requestId, app);
69
+ }
70
+ }
71
+
72
+ export class AppUpdateRequest {
73
+ constructor(public readonly requestId: string, public readonly oldApp: App, public readonly newApp: App) { }
74
+
75
+ public static serialize(packet: AppUpdateRequest): Uint8Array {
76
+ const writer = new ByteWriter();
77
+ writer.writeString(packet.requestId);
78
+ writer.writeString(JSON.stringify(packet.oldApp.toJson()));
79
+ writer.writeString(JSON.stringify(packet.newApp.toJson()));
80
+ return writer.finish();
81
+ }
82
+
83
+ public static deserialize(data: Uint8Array): AppUpdateRequest {
84
+ const reader = new ByteReader(data);
85
+ const requestId = reader.readString();
86
+ const oldApp = App.fromJson(JSON.parse(reader.readString()));
87
+ const newApp = App.fromJson(JSON.parse(reader.readString()));
88
+ return new AppUpdateRequest(requestId, oldApp, newApp);
89
+ }
90
+ }
91
+
92
+ export type AppInstallResponse = {
93
+ accepted: boolean;
94
+ }
95
+
96
+ export type AppUpdateResponse = {
97
+ accepted: boolean;
98
+ }
@@ -23,6 +23,7 @@ type EndpointHandler = {
23
23
  };
24
24
 
25
25
  export class EndpointExtension {
26
+ public readonly type = ENDPOINT_EXTENSION_TYPE;
26
27
  private readonly registeredEndpoints = new IdentifierMap<EndpointHandler>();
27
28
  private readonly promiseMap: Map<number, CallPromise> = new Map();
28
29
  private callId: number;
@@ -1,5 +1,5 @@
1
1
  import type { Identifier } from '../../identifier.js';
2
- import { Serializer, type Serializable } from '../../serializer.js';
2
+ import { type Serializable, Serializer } from '../../serializer.js';
3
3
 
4
4
  export class EndpointType<Req = unknown, Res = unknown> {
5
5
  constructor(
@@ -1,7 +1,9 @@
1
1
  import { type Client } from '../client.js';
2
2
  import { Identifier } from '../identifier.js';
3
3
 
4
- export interface Extension {}
4
+ export interface Extension {
5
+ readonly type: ExtensionType;
6
+ }
5
7
 
6
8
  export class ExtensionType<T extends Extension = Extension> extends Identifier {
7
9
  constructor(
@@ -16,35 +16,43 @@ const I18N_LOCALES_REGISTRY_TYPE = RegistryType.createJson<Locale[]>(I18N_EXTENS
16
16
  });
17
17
 
18
18
  export class I18nExtension implements Extension {
19
+ public readonly type = I18N_EXTENSION_TYPE;
19
20
  public readonly localesRegistry: Registry<Locale[]>;
20
- public locales?: Locale[];
21
+ private locales?: Locale[];
22
+ public defaultLocales?: Locale[];
21
23
 
22
24
  constructor(private readonly client: Client) {
23
25
  client.permissions.require(I18N_GET_LOCALES_PERMISSION_ID);
24
- this.localesRegistry = client.registry.get(I18N_LOCALES_REGISTRY_TYPE);
26
+ this.localesRegistry = client.registries.get(I18N_LOCALES_REGISTRY_TYPE);
25
27
  this.localesRegistry.listen((locale) => {
26
28
  this.locales = locale;
27
29
  });
28
30
  }
29
31
 
30
- public translate(localizedText: LocalizedText): string {
31
- if (!this.locales) {
32
- throw new Error('Locale not set');
32
+ public getLocales(): readonly Locale[] {
33
+ if (this.locales && this.locales.length > 0) {
34
+ return this.locales;
35
+ }
36
+ if (!this.defaultLocales || this.defaultLocales.length === 0) {
37
+ throw new Error('Default locales are not set');
33
38
  }
39
+ return this.defaultLocales;
40
+ }
41
+
42
+ public translate(localizedText: LocalizedText): string {
43
+ const locales = this.getLocales();
34
44
  if (typeof localizedText === 'string') {
35
45
  return localizedText;
36
46
  }
37
- const translation = this.selectBestTranslation(this.locales, localizedText);
47
+ const translation = this.selectBestTranslation(locales, localizedText);
38
48
  if (!translation) {
39
- throw new Error(
40
- `Missing translation for ${this.locales} in ${JSON.stringify(localizedText)}`,
41
- );
49
+ return Object.values(localizedText)[0];
42
50
  }
43
51
  return translation;
44
52
  }
45
53
 
46
54
  public selectBestTranslation(
47
- locales: Locale[],
55
+ locales: readonly Locale[],
48
56
  localizedText: LocalizedText,
49
57
  ): string | undefined {
50
58
  if (typeof localizedText === 'string') {
@@ -26,6 +26,7 @@ export const LOGGER_LISTEN_PACKET = PacketType.createJson<Identifier>(LOGGER_EXT
26
26
 
27
27
  type LogListener = (message: LogMessage) => void;
28
28
  export class LoggerExtension {
29
+ public readonly type = LOGGER_EXTENSION_TYPE;
29
30
  private readonly listeners: IdentifierMap<LogListener[]> = new IdentifierMap();
30
31
 
31
32
  constructor(private readonly client: Client) {
@@ -35,6 +35,7 @@ const PERMISSION_GRANT_PACKET = PacketType.createJson<PermissionType[]>(PERMISSI
35
35
  });
36
36
 
37
37
  export class PermissionExtension {
38
+ public readonly type = PERMISSION_EXTENSION_TYPE;
38
39
  private permissions = new IdentifierMap<PermissionType>();
39
40
  private readonly registeredPermissions = new IdentifierMap<PermissionType>();
40
41
  private readonly requiredPermissions = new IdentifierSet();
@@ -2,7 +2,7 @@ import { Identifier } from '../../identifier.js';
2
2
  import type { LocalizedText } from '../../localization/localization.js';
3
3
  import type { Model } from '../../model.js';
4
4
 
5
- type PermissionLevel = 'low' | 'medium' | 'high';
5
+ export type PermissionLevel = 'low' | 'medium' | 'high';
6
6
 
7
7
  export type PermissionMetadata = {
8
8
  name: LocalizedText;
@@ -8,6 +8,7 @@ export const PLUGIN_EXTENSION_TYPE = new ExtensionType(
8
8
  );
9
9
 
10
10
  export class PluginExtension {
11
+ public readonly type = PLUGIN_EXTENSION_TYPE;
11
12
  private readonly requiredPlugins: Map<string, string | null> = new Map();
12
13
 
13
14
  constructor(private readonly client: Client) {
@@ -5,12 +5,13 @@ import { Identifier, IdentifierMap } from '../../identifier.js';
5
5
  import { PacketType } from '../../network/packet/index.js';
6
6
  import { Serializer } from '../../serializer.js';
7
7
  import { EndpointType } from '../endpoint/endpoint.js';
8
- import { ExtensionType, type Extension } from '../extension.js';
8
+ import { type Extension, ExtensionType } from '../extension.js';
9
9
 
10
10
  import { RegistryPacket, RegistryRegisterPacket } from './packets.js';
11
- import { RegistryType, type Registry } from './registry.js';
11
+ import { type Registry, RegistryType } from './registry.js';
12
12
 
13
13
  export class RegistryExtension implements Extension {
14
+ public readonly type = REGISTRY_EXTENSION_TYPE;
14
15
  private readonly registries = new IdentifierMap<Registry<unknown>>();
15
16
 
16
17
  constructor(private readonly client: Client) {
@@ -13,7 +13,7 @@ export class RegistryPermissions {
13
13
  ) { }
14
14
 
15
15
  public serialize(writer: ByteWriter): void {
16
- const flags = new Flags(0, 3);
16
+ const flags = new Flags({length: 3});
17
17
  flags.set(0, this.all !== undefined);
18
18
  flags.set(1, this.read !== undefined);
19
19
  flags.set(2, this.write !== undefined);
@@ -1,11 +1,12 @@
1
1
  import { App } from '../../app.js';
2
2
  import type { Client } from '../../client.js';
3
- import { Identifier, IdentifierSet } from '../../identifier.js';
3
+ import { Identifier, IdentifierMap, IdentifierSet } from '../../identifier.js';
4
4
  import { PacketType } from '../../network/packet/packet.js';
5
5
  import { Serializer } from '../../serializer.js';
6
6
  import { EndpointType } from '../endpoint/endpoint.js';
7
7
  import type { Extension } from '../extension.js';
8
8
  import { ExtensionType } from '../extension.js';
9
+ import { Registry, RegistryPermissions, RegistryType } from '../registry/registry.js';
9
10
  import type { Table } from '../table/index.js';
10
11
  import { TABLE_EXTENSION_TYPE } from '../table/table-extension.js';
11
12
  import { TableType } from '../table/table.js';
@@ -42,27 +43,110 @@ const REQUIRE_APPS_PACKET_TYPE = PacketType.createJson<Identifier[]>(SERVER_EXTE
42
43
  name: 'require_apps',
43
44
  serializer: Serializer.model(Identifier).toArray(),
44
45
  });
46
+ export const TRUSTED_ORIGINS_GET_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('trusted_origins', 'get');
47
+ export const TRUSTED_ORIGINS_SET_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('trusted_origins', 'set');
48
+ const TRUSTED_ORIGINS_REGISTRY_TYPE = RegistryType.createJson<string[]>(SERVER_EXTENSION_TYPE, {
49
+ name: 'trusted_origins',
50
+ defaultValue: [],
51
+ permissions: new RegistryPermissions(
52
+ TRUSTED_ORIGINS_GET_PERMISSION_ID,
53
+ TRUSTED_ORIGINS_SET_PERMISSION_ID,
54
+ ),
55
+ });
56
+ const SESSION_OBSERVE_PACKET_TYPE = PacketType.createJson<Identifier[]>(SERVER_EXTENSION_TYPE, {
57
+ name: 'session_observe',
58
+ serializer: Serializer.model(Identifier).toArray(),
59
+ });
60
+ const SESSION_CONNECT_PACKET_TYPE = PacketType.createJson<App>(SERVER_EXTENSION_TYPE, {
61
+ name: 'session_connect',
62
+ serializer: Serializer.model(App),
63
+ });
64
+ const SESSION_DISCONNECT_PACKET_TYPE = PacketType.createJson<App>(SERVER_EXTENSION_TYPE, {
65
+ name: 'session_disconnect',
66
+ serializer: Serializer.model(App),
67
+ });
45
68
 
46
69
  export class ServerExtension implements Extension {
70
+ public readonly type = SERVER_EXTENSION_TYPE;
47
71
  public readonly apps: Table<App>;
48
72
  public readonly sessions: Table<App>;
49
- private requiredApps = new IdentifierSet();
73
+ public readonly trustedOrigins: Registry<string[]>;
74
+ private readonly sessionObservers = new IdentifierMap<SessionObserver>();
75
+ private readonly requiredApps = new IdentifierSet();
50
76
 
51
77
  constructor(private readonly client: Client) {
52
- client.network.registerPacket(REQUIRE_APPS_PACKET_TYPE);
78
+ client.network.registerPacket(
79
+ REQUIRE_APPS_PACKET_TYPE,
80
+ SESSION_OBSERVE_PACKET_TYPE,
81
+ SESSION_CONNECT_PACKET_TYPE,
82
+ SESSION_DISCONNECT_PACKET_TYPE,
83
+ );
84
+ client.network.addPacketHandler(
85
+ SESSION_CONNECT_PACKET_TYPE, (app) => this.handleSessionConnect(app)
86
+ )
87
+ client.network.addPacketHandler(
88
+ SESSION_DISCONNECT_PACKET_TYPE, (app) => this.handleSessionDisconnect(app)
89
+ )
53
90
  this.apps = client.tables.get(APP_TABLE_TYPE);
54
91
  this.sessions = client.tables.get(SESSION_TABLE_TYPE);
92
+ this.trustedOrigins = client.registries.get(TRUSTED_ORIGINS_REGISTRY_TYPE);
55
93
  client.network.addTask(() => this.onTask());
94
+ client.onReady(() => this.onReady());
56
95
  }
57
96
 
58
97
  private async onTask(): Promise<void> {
59
- this.client.send(REQUIRE_APPS_PACKET_TYPE, Array.from(this.requiredApps.values()));
98
+ if (this.requiredApps.size > 0) {
99
+ this.client.send(REQUIRE_APPS_PACKET_TYPE, Array.from(this.requiredApps.values()));
100
+ }
101
+ }
102
+
103
+ private async onReady(): Promise<void> {
104
+ if (this.sessionObservers.size > 0) {
105
+ this.client.send(SESSION_OBSERVE_PACKET_TYPE, Array.from(this.sessionObservers.keys()));
106
+ }
60
107
  }
61
108
 
62
109
  public async shutdown(restart?: boolean): Promise<boolean> {
63
110
  return await this.client.endpoints.call(SHUTDOWN_ENDPOINT_TYPE, restart ?? false);
64
111
  }
65
112
 
113
+ public observeSession(appId: Identifier, {
114
+ onConnect,
115
+ onDisconnect
116
+ }: {
117
+ onConnect(app: App): void;
118
+ onDisconnect(app: App): void;
119
+ }): SessionObserver {
120
+ if (this.client.running) {
121
+ throw new Error('Cannot observe sessions after the client has started');
122
+ }
123
+ const observer = this.sessionObservers.get(appId) ?? new SessionObserver([], []);
124
+ observer.onConnect(onConnect);
125
+ observer.onDisconnect(onDisconnect);
126
+ this.sessionObservers.set(appId, observer);
127
+ return observer;
128
+ }
129
+
130
+ private async handleSessionConnect(app: App): Promise<void> {
131
+ const observer = this.sessionObservers.get(app.id);
132
+ if (!observer) {
133
+ return;
134
+ }
135
+ for (const callback of observer.onConnectCallbacks) {
136
+ await callback(app);
137
+ }
138
+ }
139
+
140
+ private async handleSessionDisconnect(app: App): Promise<void> {
141
+ const observer = this.sessionObservers.get(app.id);
142
+ if (!observer) {
143
+ return;
144
+ }
145
+ for (const callback of observer.onDisconnectCallbacks) {
146
+ await callback(app);
147
+ }
148
+ }
149
+
66
150
  public require(...appIds: Identifier[]): void {
67
151
  if (this.client.running) {
68
152
  throw new Error('Cannot require apps after the client has started');
@@ -72,3 +156,18 @@ export class ServerExtension implements Extension {
72
156
  }
73
157
  }
74
158
  }
159
+
160
+ export class SessionObserver {
161
+ constructor(
162
+ public readonly onConnectCallbacks: Array<(app: App) => Promise<void> | void>,
163
+ public readonly onDisconnectCallbacks: Array<(app: App) => Promise<void> | void>,
164
+ ) { }
165
+
166
+ public onConnect(callback: (app: App) => Promise<void> | void): void {
167
+ this.onConnectCallbacks.push(callback);
168
+ }
169
+
170
+ public onDisconnect(callback: (app: App) => Promise<void> | void): void {
171
+ this.onDisconnectCallbacks.push(callback);
172
+ }
173
+ }
@@ -3,7 +3,7 @@ import type { Unlisten } from '../../event-emitter.js';
3
3
  import { Identifier, IdentifierMap } from '../../identifier.js';
4
4
  import { PacketType } from '../../network/packet/index.js';
5
5
  import { Serializer } from '../../serializer.js';
6
- import { ExtensionType, type Extension } from '../extension.js';
6
+ import { type Extension, ExtensionType } from '../extension.js';
7
7
 
8
8
  import { SignalPacket, SignalRegisterPacket } from './packets.js';
9
9
  import type { Signal } from './signal.js';
@@ -31,6 +31,7 @@ const SIGNAL_NOTIFY_PACKET = PacketType.createSerialized<SignalPacket>(SIGNAL_EX
31
31
  });
32
32
 
33
33
  export class SignalExtension implements Extension {
34
+ public readonly type = SIGNAL_EXTENSION_TYPE;
34
35
  private readonly signals = new IdentifierMap<SignalType<unknown>>();
35
36
 
36
37
  constructor(private readonly client: Client) {
@@ -13,7 +13,7 @@ export class SignalPermissions {
13
13
  ) {}
14
14
 
15
15
  public serialize(writer: ByteWriter): void {
16
- const flags = new Flags(0, 3);
16
+ const flags = new Flags({length: 3});
17
17
  flags.set(0, this.all !== undefined);
18
18
  flags.set(1, this.listen !== undefined);
19
19
  flags.set(2, this.send !== undefined);
@@ -1,4 +1,4 @@
1
- import { ByteReader, ByteWriter } from '../../bytebuffer.js';
1
+ import { ByteReader, ByteWriter, Flags } from '../../bytebuffer.js';
2
2
  import { Identifier } from '../../identifier.js';
3
3
 
4
4
  import type { TableConfig } from './table.js';
@@ -114,31 +114,19 @@ export class TableProxyPacket {
114
114
  export class TableFetchPacket {
115
115
  constructor(
116
116
  public readonly id: Identifier,
117
- public readonly before: number | null,
118
- public readonly after: number | null,
119
- public readonly cursor: string | null,
117
+ public readonly limit: number,
118
+ public readonly backward: boolean = false,
119
+ public readonly cursor: string | null = null,
120
120
  ) {}
121
121
 
122
122
  public static serialize(packet: TableFetchPacket): Uint8Array {
123
123
  const writer = new ByteWriter();
124
124
  writer.writeString(packet.id.key());
125
- let flags = 0;
126
- if (packet.before !== null) {
127
- flags |= 0b1;
128
- }
129
- if (packet.after !== null) {
130
- flags |= 0b10;
131
- }
132
- if (packet.cursor !== null) {
133
- flags |= 0b100;
134
- }
135
- writer.writeByte(flags);
136
- if (packet.before !== null) {
137
- writer.writeInt(packet.before);
138
- }
139
- if (packet.after !== null) {
140
- writer.writeInt(packet.after);
141
- }
125
+ writer.writeInt(packet.limit);
126
+ const flags = new Flags({length: 2});
127
+ flags.set(0, packet.backward);
128
+ flags.set(1, packet.cursor !== null);
129
+ writer.writeFlags(flags);
142
130
  if (packet.cursor !== null) {
143
131
  writer.writeString(packet.cursor);
144
132
  }
@@ -148,11 +136,11 @@ export class TableFetchPacket {
148
136
  public static deserialize(data: Uint8Array): TableFetchPacket {
149
137
  const reader = new ByteReader(data);
150
138
  const id = Identifier.fromKey(reader.readString());
151
- const flags = reader.readByte();
152
- const before = flags & 0b1 ? reader.readInt() : null;
153
- const after = flags & 0b10 ? reader.readInt() : null;
154
- const cursor = flags & 0b100 ? reader.readString() : null;
155
- return new TableFetchPacket(id, before, after, cursor);
139
+ const limit = reader.readInt();
140
+ const flags = reader.readFlags(2);
141
+ const backward = flags.get(0);
142
+ const cursor = flags.ifSet(1, () => reader.readString());
143
+ return new TableFetchPacket(id, limit, backward, cursor);
156
144
  }
157
145
  }
158
146
 
@@ -231,11 +219,21 @@ export class SetPermissionPacket {
231
219
  flags |= 0b10000;
232
220
  }
233
221
  writer.writeByte(flags);
234
- packet.all && writer.writeString(packet.all.key());
235
- packet.read && writer.writeString(packet.read.key());
236
- packet.write && writer.writeString(packet.write.key());
237
- packet.remove && writer.writeString(packet.remove.key());
238
- packet.proxy && writer.writeString(packet.proxy.key());
222
+ if (packet.all) {
223
+ writer.writeString(packet.all.key());
224
+ }
225
+ if (packet.read) {
226
+ writer.writeString(packet.read.key());
227
+ }
228
+ if (packet.write) {
229
+ writer.writeString(packet.write.key());
230
+ }
231
+ if (packet.remove) {
232
+ writer.writeString(packet.remove.key());
233
+ }
234
+ if (packet.proxy) {
235
+ writer.writeString(packet.proxy.key());
236
+ }
239
237
  return writer.finish();
240
238
  }
241
239