@omujs/omu 0.1.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 (342) hide show
  1. package/.eslintignore +13 -0
  2. package/.eslintrc.cjs +6 -0
  3. package/.prettierignore +1 -0
  4. package/CHANGELOG.md +268 -0
  5. package/LICENSE +21 -0
  6. package/README.md +1 -0
  7. package/built/dts/address.d.ts +6 -0
  8. package/built/dts/address.d.ts.map +1 -0
  9. package/built/dts/app.d.ts +38 -0
  10. package/built/dts/app.d.ts.map +1 -0
  11. package/built/dts/bytebuffer.d.ts +46 -0
  12. package/built/dts/bytebuffer.d.ts.map +1 -0
  13. package/built/dts/client/client.d.ts +47 -0
  14. package/built/dts/client/client.d.ts.map +1 -0
  15. package/built/dts/client/index.d.ts +2 -0
  16. package/built/dts/client/index.d.ts.map +1 -0
  17. package/built/dts/client/omu.d.ts +53 -0
  18. package/built/dts/client/omu.d.ts.map +1 -0
  19. package/built/dts/client/omuclient.d.ts +50 -0
  20. package/built/dts/client/omuclient.d.ts.map +1 -0
  21. package/built/dts/client/token.d.ts +14 -0
  22. package/built/dts/client/token.d.ts.map +1 -0
  23. package/built/dts/client.d.ts +48 -0
  24. package/built/dts/client.d.ts.map +1 -0
  25. package/built/dts/const.d.ts +3 -0
  26. package/built/dts/const.d.ts.map +1 -0
  27. package/built/dts/errors.d.ts +29 -0
  28. package/built/dts/errors.d.ts.map +1 -0
  29. package/built/dts/event-emitter.d.ts +7 -0
  30. package/built/dts/event-emitter.d.ts.map +1 -0
  31. package/built/dts/extension/asset/asset-extension.d.ts +26 -0
  32. package/built/dts/extension/asset/asset-extension.d.ts.map +1 -0
  33. package/built/dts/extension/asset/index.d.ts +2 -0
  34. package/built/dts/extension/asset/index.d.ts.map +1 -0
  35. package/built/dts/extension/dashboard/dashboard-extension.d.ts +24 -0
  36. package/built/dts/extension/dashboard/dashboard-extension.d.ts.map +1 -0
  37. package/built/dts/extension/dashboard/dashboard.d.ts +8 -0
  38. package/built/dts/extension/dashboard/dashboard.d.ts.map +1 -0
  39. package/built/dts/extension/dashboard/index.d.ts +3 -0
  40. package/built/dts/extension/dashboard/index.d.ts.map +1 -0
  41. package/built/dts/extension/dashboard/packets.d.ts +20 -0
  42. package/built/dts/extension/dashboard/packets.d.ts.map +1 -0
  43. package/built/dts/extension/endpoint/endpoint-extension.d.ts +16 -0
  44. package/built/dts/extension/endpoint/endpoint-extension.d.ts.map +1 -0
  45. package/built/dts/extension/endpoint/endpoint.d.ts +22 -0
  46. package/built/dts/extension/endpoint/endpoint.d.ts.map +1 -0
  47. package/built/dts/extension/endpoint/index.d.ts +3 -0
  48. package/built/dts/extension/endpoint/index.d.ts.map +1 -0
  49. package/built/dts/extension/endpoint/packets.d.ts +24 -0
  50. package/built/dts/extension/endpoint/packets.d.ts.map +1 -0
  51. package/built/dts/extension/extension-registry.d.ts +12 -0
  52. package/built/dts/extension/extension-registry.d.ts.map +1 -0
  53. package/built/dts/extension/extension.d.ts +12 -0
  54. package/built/dts/extension/extension.d.ts.map +1 -0
  55. package/built/dts/extension/i18n/i18n-extension.d.ts +19 -0
  56. package/built/dts/extension/i18n/i18n-extension.d.ts.map +1 -0
  57. package/built/dts/extension/i18n/index.d.ts +2 -0
  58. package/built/dts/extension/i18n/index.d.ts.map +1 -0
  59. package/built/dts/extension/index.d.ts +3 -0
  60. package/built/dts/extension/index.d.ts.map +1 -0
  61. package/built/dts/extension/logger/index.d.ts +2 -0
  62. package/built/dts/extension/logger/index.d.ts.map +1 -0
  63. package/built/dts/extension/logger/logger-extension.d.ts +25 -0
  64. package/built/dts/extension/logger/logger-extension.d.ts.map +1 -0
  65. package/built/dts/extension/logger/packets.d.ts +19 -0
  66. package/built/dts/extension/logger/packets.d.ts.map +1 -0
  67. package/built/dts/extension/permission/index.d.ts +3 -0
  68. package/built/dts/extension/permission/index.d.ts.map +1 -0
  69. package/built/dts/extension/permission/permission-extension.d.ts +18 -0
  70. package/built/dts/extension/permission/permission-extension.d.ts.map +1 -0
  71. package/built/dts/extension/permission/permission.d.ts +29 -0
  72. package/built/dts/extension/permission/permission.d.ts.map +1 -0
  73. package/built/dts/extension/plugin/index.d.ts +2 -0
  74. package/built/dts/extension/plugin/index.d.ts.map +1 -0
  75. package/built/dts/extension/plugin/package-info.d.ts +85 -0
  76. package/built/dts/extension/plugin/package-info.d.ts.map +1 -0
  77. package/built/dts/extension/plugin/plugin-extension.d.ts +11 -0
  78. package/built/dts/extension/plugin/plugin-extension.d.ts.map +1 -0
  79. package/built/dts/extension/registry/index.d.ts +3 -0
  80. package/built/dts/extension/registry/index.d.ts.map +1 -0
  81. package/built/dts/extension/registry/packets.d.ts +17 -0
  82. package/built/dts/extension/registry/packets.d.ts.map +1 -0
  83. package/built/dts/extension/registry/registry-extension.d.ts +15 -0
  84. package/built/dts/extension/registry/registry-extension.d.ts.map +1 -0
  85. package/built/dts/extension/registry/registry.d.ts +39 -0
  86. package/built/dts/extension/registry/registry.d.ts.map +1 -0
  87. package/built/dts/extension/server/index.d.ts +2 -0
  88. package/built/dts/extension/server/index.d.ts.map +1 -0
  89. package/built/dts/extension/server/packets.d.ts +8 -0
  90. package/built/dts/extension/server/packets.d.ts.map +1 -0
  91. package/built/dts/extension/server/server-extension.d.ts +19 -0
  92. package/built/dts/extension/server/server-extension.d.ts.map +1 -0
  93. package/built/dts/extension/signal/index.d.ts +3 -0
  94. package/built/dts/extension/signal/index.d.ts.map +1 -0
  95. package/built/dts/extension/signal/packets.d.ts +17 -0
  96. package/built/dts/extension/signal/packets.d.ts.map +1 -0
  97. package/built/dts/extension/signal/signal-extension.d.ts +14 -0
  98. package/built/dts/extension/signal/signal-extension.d.ts.map +1 -0
  99. package/built/dts/extension/signal/signal.d.ts +32 -0
  100. package/built/dts/extension/signal/signal.d.ts.map +1 -0
  101. package/built/dts/extension/table/index.d.ts +3 -0
  102. package/built/dts/extension/table/index.d.ts.map +1 -0
  103. package/built/dts/extension/table/packets.d.ts +58 -0
  104. package/built/dts/extension/table/packets.d.ts.map +1 -0
  105. package/built/dts/extension/table/table-extension.d.ts +24 -0
  106. package/built/dts/extension/table/table-extension.d.ts.map +1 -0
  107. package/built/dts/extension/table/table.d.ts +64 -0
  108. package/built/dts/extension/table/table.d.ts.map +1 -0
  109. package/built/dts/identifier.d.ts +43 -0
  110. package/built/dts/identifier.d.ts.map +1 -0
  111. package/built/dts/index.d.ts +5 -0
  112. package/built/dts/index.d.ts.map +1 -0
  113. package/built/dts/interface.d.ts +7 -0
  114. package/built/dts/interface.d.ts.map +1 -0
  115. package/built/dts/localization/index.d.ts +3 -0
  116. package/built/dts/localization/index.d.ts.map +1 -0
  117. package/built/dts/localization/locale.d.ts +736 -0
  118. package/built/dts/localization/locale.d.ts.map +1 -0
  119. package/built/dts/localization/localization.d.ts +8 -0
  120. package/built/dts/localization/localization.d.ts.map +1 -0
  121. package/built/dts/model.d.ts +5 -0
  122. package/built/dts/model.d.ts.map +1 -0
  123. package/built/dts/network/connection.d.ts +17 -0
  124. package/built/dts/network/connection.d.ts.map +1 -0
  125. package/built/dts/network/index.d.ts +4 -0
  126. package/built/dts/network/index.d.ts.map +1 -0
  127. package/built/dts/network/network.d.ts +45 -0
  128. package/built/dts/network/network.d.ts.map +1 -0
  129. package/built/dts/network/packet/index.d.ts +3 -0
  130. package/built/dts/network/packet/index.d.ts.map +1 -0
  131. package/built/dts/network/packet/packet-types.d.ts +52 -0
  132. package/built/dts/network/packet/packet-types.d.ts.map +1 -0
  133. package/built/dts/network/packet/packet.d.ts +24 -0
  134. package/built/dts/network/packet/packet.d.ts.map +1 -0
  135. package/built/dts/network/websocket-connection.d.ts +20 -0
  136. package/built/dts/network/websocket-connection.d.ts.map +1 -0
  137. package/built/dts/omu.d.ts +50 -0
  138. package/built/dts/omu.d.ts.map +1 -0
  139. package/built/dts/serializer.d.ts +21 -0
  140. package/built/dts/serializer.d.ts.map +1 -0
  141. package/built/dts/token.d.ts +14 -0
  142. package/built/dts/token.d.ts.map +1 -0
  143. package/built/esm/address.js +2 -0
  144. package/built/esm/address.js.map +1 -0
  145. package/built/esm/app.js +33 -0
  146. package/built/esm/app.js.map +1 -0
  147. package/built/esm/bytebuffer.js +191 -0
  148. package/built/esm/bytebuffer.js.map +1 -0
  149. package/built/esm/client/client.js +2 -0
  150. package/built/esm/client/client.js.map +1 -0
  151. package/built/esm/client/index.js +2 -0
  152. package/built/esm/client/index.js.map +1 -0
  153. package/built/esm/client/omu.js +96 -0
  154. package/built/esm/client/omu.js.map +1 -0
  155. package/built/esm/client/omuclient.js +96 -0
  156. package/built/esm/client/omuclient.js.map +1 -0
  157. package/built/esm/client/token.js +21 -0
  158. package/built/esm/client/token.js.map +1 -0
  159. package/built/esm/client.js +2 -0
  160. package/built/esm/client.js.map +1 -0
  161. package/built/esm/const.js +3 -0
  162. package/built/esm/const.js.map +1 -0
  163. package/built/esm/errors.js +46 -0
  164. package/built/esm/errors.js.map +1 -0
  165. package/built/esm/event-emitter.js +15 -0
  166. package/built/esm/event-emitter.js.map +1 -0
  167. package/built/esm/extension/asset/asset-extension.js +105 -0
  168. package/built/esm/extension/asset/asset-extension.js.map +1 -0
  169. package/built/esm/extension/asset/index.js +2 -0
  170. package/built/esm/extension/asset/index.js.map +1 -0
  171. package/built/esm/extension/dashboard/dashboard-extension.js +119 -0
  172. package/built/esm/extension/dashboard/dashboard-extension.js.map +1 -0
  173. package/built/esm/extension/dashboard/dashboard.js +2 -0
  174. package/built/esm/extension/dashboard/dashboard.js.map +1 -0
  175. package/built/esm/extension/dashboard/index.js +2 -0
  176. package/built/esm/extension/dashboard/index.js.map +1 -0
  177. package/built/esm/extension/dashboard/packets.js +52 -0
  178. package/built/esm/extension/dashboard/packets.js.map +1 -0
  179. package/built/esm/extension/endpoint/endpoint-extension.js +85 -0
  180. package/built/esm/extension/endpoint/endpoint-extension.js.map +1 -0
  181. package/built/esm/extension/endpoint/endpoint.js +22 -0
  182. package/built/esm/extension/endpoint/endpoint.js.map +1 -0
  183. package/built/esm/extension/endpoint/index.js +2 -0
  184. package/built/esm/extension/endpoint/index.js.map +1 -0
  185. package/built/esm/extension/endpoint/packets.js +77 -0
  186. package/built/esm/extension/endpoint/packets.js.map +1 -0
  187. package/built/esm/extension/extension-registry.js +34 -0
  188. package/built/esm/extension/extension-registry.js.map +1 -0
  189. package/built/esm/extension/extension.js +16 -0
  190. package/built/esm/extension/extension.js.map +1 -0
  191. package/built/esm/extension/i18n/i18n-extension.js +59 -0
  192. package/built/esm/extension/i18n/i18n-extension.js.map +1 -0
  193. package/built/esm/extension/i18n/index.js +2 -0
  194. package/built/esm/extension/i18n/index.js.map +1 -0
  195. package/built/esm/extension/index.js +3 -0
  196. package/built/esm/extension/index.js.map +1 -0
  197. package/built/esm/extension/logger/index.js +2 -0
  198. package/built/esm/extension/logger/index.js.map +1 -0
  199. package/built/esm/extension/logger/logger-extension.js +59 -0
  200. package/built/esm/extension/logger/logger-extension.js.map +1 -0
  201. package/built/esm/extension/logger/packets.js +33 -0
  202. package/built/esm/extension/logger/packets.js.map +1 -0
  203. package/built/esm/extension/permission/index.js +3 -0
  204. package/built/esm/extension/permission/index.js.map +1 -0
  205. package/built/esm/extension/permission/permission-extension.js +73 -0
  206. package/built/esm/extension/permission/permission-extension.js.map +1 -0
  207. package/built/esm/extension/permission/permission.js +28 -0
  208. package/built/esm/extension/permission/permission.js.map +1 -0
  209. package/built/esm/extension/plugin/index.js +2 -0
  210. package/built/esm/extension/plugin/index.js.map +1 -0
  211. package/built/esm/extension/plugin/package-info.js +2 -0
  212. package/built/esm/extension/plugin/package-info.js.map +1 -0
  213. package/built/esm/extension/plugin/plugin-extension.js +27 -0
  214. package/built/esm/extension/plugin/plugin-extension.js.map +1 -0
  215. package/built/esm/extension/registry/index.js +3 -0
  216. package/built/esm/extension/registry/index.js.map +1 -0
  217. package/built/esm/extension/registry/packets.js +48 -0
  218. package/built/esm/extension/registry/packets.js.map +1 -0
  219. package/built/esm/extension/registry/registry-extension.js +123 -0
  220. package/built/esm/extension/registry/registry-extension.js.map +1 -0
  221. package/built/esm/extension/registry/registry.js +55 -0
  222. package/built/esm/extension/registry/registry.js.map +1 -0
  223. package/built/esm/extension/server/index.js +2 -0
  224. package/built/esm/extension/server/index.js.map +1 -0
  225. package/built/esm/extension/server/packets.js +25 -0
  226. package/built/esm/extension/server/packets.js.map +1 -0
  227. package/built/esm/extension/server/server-extension.js +52 -0
  228. package/built/esm/extension/server/server-extension.js.map +1 -0
  229. package/built/esm/extension/signal/index.js +3 -0
  230. package/built/esm/extension/signal/index.js.map +1 -0
  231. package/built/esm/extension/signal/packets.js +44 -0
  232. package/built/esm/extension/signal/packets.js.map +1 -0
  233. package/built/esm/extension/signal/signal-extension.js +91 -0
  234. package/built/esm/extension/signal/signal-extension.js.map +1 -0
  235. package/built/esm/extension/signal/signal.js +53 -0
  236. package/built/esm/extension/signal/signal.js.map +1 -0
  237. package/built/esm/extension/table/index.js +3 -0
  238. package/built/esm/extension/table/index.js.map +1 -0
  239. package/built/esm/extension/table/packets.js +230 -0
  240. package/built/esm/extension/table/packets.js.map +1 -0
  241. package/built/esm/extension/table/table-extension.js +384 -0
  242. package/built/esm/extension/table/table-extension.js.map +1 -0
  243. package/built/esm/extension/table/table.js +17 -0
  244. package/built/esm/extension/table/table.js.map +1 -0
  245. package/built/esm/identifier.js +160 -0
  246. package/built/esm/identifier.js.map +1 -0
  247. package/built/esm/index.js +5 -0
  248. package/built/esm/index.js.map +1 -0
  249. package/built/esm/interface.js +2 -0
  250. package/built/esm/interface.js.map +1 -0
  251. package/built/esm/localization/index.js +2 -0
  252. package/built/esm/localization/index.js.map +1 -0
  253. package/built/esm/localization/locale.js +736 -0
  254. package/built/esm/localization/locale.js.map +1 -0
  255. package/built/esm/localization/localization.js +2 -0
  256. package/built/esm/localization/localization.js.map +1 -0
  257. package/built/esm/model.js +2 -0
  258. package/built/esm/model.js.map +1 -0
  259. package/built/esm/network/connection.js +29 -0
  260. package/built/esm/network/connection.js.map +1 -0
  261. package/built/esm/network/index.js +2 -0
  262. package/built/esm/network/index.js.map +1 -0
  263. package/built/esm/network/network.js +190 -0
  264. package/built/esm/network/network.js.map +1 -0
  265. package/built/esm/network/packet/index.js +2 -0
  266. package/built/esm/network/packet/index.js.map +1 -0
  267. package/built/esm/network/packet/packet-types.js +75 -0
  268. package/built/esm/network/packet/packet-types.js.map +1 -0
  269. package/built/esm/network/packet/packet.js +17 -0
  270. package/built/esm/network/packet/packet.js.map +1 -0
  271. package/built/esm/network/websocket-connection.js +88 -0
  272. package/built/esm/network/websocket-connection.js.map +1 -0
  273. package/built/esm/omu.js +96 -0
  274. package/built/esm/omu.js.map +1 -0
  275. package/built/esm/serializer.js +52 -0
  276. package/built/esm/serializer.js.map +1 -0
  277. package/built/esm/token.js +21 -0
  278. package/built/esm/token.js.map +1 -0
  279. package/package.json +49 -0
  280. package/src/address.ts +5 -0
  281. package/src/app.ts +65 -0
  282. package/src/bytebuffer.ts +219 -0
  283. package/src/client.ts +53 -0
  284. package/src/const.ts +2 -0
  285. package/src/errors.ts +52 -0
  286. package/src/event-emitter.ts +18 -0
  287. package/src/extension/asset/asset-extension.ts +148 -0
  288. package/src/extension/asset/index.ts +1 -0
  289. package/src/extension/dashboard/dashboard-extension.ts +162 -0
  290. package/src/extension/dashboard/dashboard.ts +9 -0
  291. package/src/extension/dashboard/index.ts +3 -0
  292. package/src/extension/dashboard/packets.ts +52 -0
  293. package/src/extension/endpoint/endpoint-extension.ts +124 -0
  294. package/src/extension/endpoint/endpoint.ts +58 -0
  295. package/src/extension/endpoint/index.ts +3 -0
  296. package/src/extension/endpoint/packets.ts +78 -0
  297. package/src/extension/extension-registry.ts +39 -0
  298. package/src/extension/extension.ts +18 -0
  299. package/src/extension/i18n/i18n-extension.ts +73 -0
  300. package/src/extension/i18n/index.ts +2 -0
  301. package/src/extension/index.ts +3 -0
  302. package/src/extension/logger/index.ts +5 -0
  303. package/src/extension/logger/logger-extension.ts +75 -0
  304. package/src/extension/logger/packets.ts +38 -0
  305. package/src/extension/permission/index.ts +3 -0
  306. package/src/extension/permission/permission-extension.ts +98 -0
  307. package/src/extension/permission/permission.ts +56 -0
  308. package/src/extension/plugin/index.ts +2 -0
  309. package/src/extension/plugin/package-info.ts +91 -0
  310. package/src/extension/plugin/plugin-extension.ts +37 -0
  311. package/src/extension/registry/index.ts +3 -0
  312. package/src/extension/registry/packets.ts +50 -0
  313. package/src/extension/registry/registry-extension.ts +154 -0
  314. package/src/extension/registry/registry.ts +97 -0
  315. package/src/extension/server/index.ts +6 -0
  316. package/src/extension/server/server-extension.ts +63 -0
  317. package/src/extension/signal/index.ts +3 -0
  318. package/src/extension/signal/packets.ts +46 -0
  319. package/src/extension/signal/signal-extension.ts +114 -0
  320. package/src/extension/signal/signal.ts +85 -0
  321. package/src/extension/table/index.ts +3 -0
  322. package/src/extension/table/packets.ts +237 -0
  323. package/src/extension/table/table-extension.ts +503 -0
  324. package/src/extension/table/table.ts +87 -0
  325. package/src/identifier.ts +197 -0
  326. package/src/index.ts +4 -0
  327. package/src/interface.ts +8 -0
  328. package/src/localization/index.ts +3 -0
  329. package/src/localization/locale.ts +737 -0
  330. package/src/localization/localization.ts +9 -0
  331. package/src/model.ts +4 -0
  332. package/src/network/connection.ts +43 -0
  333. package/src/network/index.ts +3 -0
  334. package/src/network/network.ts +225 -0
  335. package/src/network/packet/index.ts +2 -0
  336. package/src/network/packet/packet-types.ts +101 -0
  337. package/src/network/packet/packet.ts +46 -0
  338. package/src/network/websocket-connection.ts +102 -0
  339. package/src/omu.ts +123 -0
  340. package/src/serializer.ts +82 -0
  341. package/src/token.ts +29 -0
  342. package/tsconfig.json +12 -0
@@ -0,0 +1,27 @@
1
+ import { PacketType } from '../../network/packet/packet.js';
2
+ import { ExtensionType } from '../extension.js';
3
+ export const PLUGIN_EXTENSION_TYPE = new ExtensionType('plugin', (client) => new PluginExtension(client));
4
+ export class PluginExtension {
5
+ client;
6
+ requiredPlugins = new Map();
7
+ constructor(client) {
8
+ this.client = client;
9
+ client.network.registerPacket(PLUGIN_REQUIRE_PACKET);
10
+ client.network.addTask(() => this.onTask());
11
+ }
12
+ async onTask() {
13
+ this.client.send(PLUGIN_REQUIRE_PACKET, Object.fromEntries(this.requiredPlugins));
14
+ }
15
+ require(plugins) {
16
+ if (this.client.running) {
17
+ throw new Error('Plugins must be required before the client starts');
18
+ }
19
+ for (const [key, value] of Object.entries(plugins)) {
20
+ this.requiredPlugins.set(key, value);
21
+ }
22
+ }
23
+ }
24
+ const PLUGIN_REQUIRE_PACKET = PacketType.createJson(PLUGIN_EXTENSION_TYPE, {
25
+ name: 'require',
26
+ });
27
+ //# sourceMappingURL=plugin-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-extension.js","sourceRoot":"","sources":["../../../../src/extension/plugin/plugin-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,aAAa,CAClD,QAAQ,EACR,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAClD,CAAC;AAEF,MAAM,OAAO,eAAe;IAGK;IAFZ,eAAe,GAA+B,IAAI,GAAG,EAAE,CAAC;IAEzE,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACvC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,MAAM;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACtF,CAAC;IAEM,OAAO,CAAC,OAAsC;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ;AAED,MAAM,qBAAqB,GAAG,UAAU,CAAC,UAAU,CAC/C,qBAAqB,EACrB;IACI,IAAI,EAAE,SAAS;CAClB,CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { REGISTRY_EXTENSION_TYPE, RegistryExtension } from './registry-extension.js';
2
+ export { RegistryType } from './registry.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAY,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
+ import { Identifier } from '../../identifier.js';
3
+ import { RegistryPermissions } from './registry.js';
4
+ export class RegistryPacket {
5
+ id;
6
+ value;
7
+ constructor(id, value) {
8
+ this.id = id;
9
+ this.value = value;
10
+ }
11
+ static serialize(packet) {
12
+ const writer = new ByteWriter();
13
+ writer.writeString(packet.id.key());
14
+ writer.writeBoolean(packet.value !== null);
15
+ if (packet.value !== null) {
16
+ writer.writeByteArray(packet.value);
17
+ }
18
+ return writer.finish();
19
+ }
20
+ static deserialize(data) {
21
+ const reader = new ByteReader(data);
22
+ const id = Identifier.fromKey(reader.readString());
23
+ const existing = reader.readBoolean();
24
+ const value = existing ? reader.readByteArray() : null;
25
+ return new RegistryPacket(id, value);
26
+ }
27
+ }
28
+ export class RegistryRegisterPacket {
29
+ id;
30
+ permissions;
31
+ constructor(id, permissions) {
32
+ this.id = id;
33
+ this.permissions = permissions;
34
+ }
35
+ static serialize(packet) {
36
+ const writer = new ByteWriter();
37
+ writer.writeString(packet.id.key());
38
+ packet.permissions.serialize(writer);
39
+ return writer.finish();
40
+ }
41
+ static deserialize(data) {
42
+ const reader = new ByteReader(data);
43
+ const id = Identifier.fromKey(reader.readString());
44
+ const permissions = RegistryPermissions.deserialize(reader);
45
+ return new RegistryRegisterPacket(id, permissions);
46
+ }
47
+ }
48
+ //# sourceMappingURL=packets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packets.js","sourceRoot":"","sources":["../../../../src/extension/registry/packets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,OAAO,cAAc;IAEH;IACA;IAFpB,YACoB,EAAc,EACd,KAAwB;QADxB,OAAE,GAAF,EAAE,CAAY;QACd,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAAsB;QAC1C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACJ;AAED,MAAM,OAAO,sBAAsB;IAEX;IACA;IAFpB,YACoB,EAAc,EACd,WAAgC;QADhC,OAAE,GAAF,EAAE,CAAY;QACd,gBAAW,GAAX,WAAW,CAAqB;IAChD,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAA8B;QAClD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,sBAAsB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;CACJ"}
@@ -0,0 +1,123 @@
1
+ import { EventEmitter } from '../../event-emitter.js';
2
+ import { Identifier, IdentifierMap } from '../../identifier.js';
3
+ import { PacketType } from '../../network/packet/index.js';
4
+ import { Serializer } from '../../serializer.js';
5
+ import { EndpointType } from '../endpoint/endpoint.js';
6
+ import { ExtensionType } from '../extension.js';
7
+ import { RegistryPacket, RegistryRegisterPacket } from './packets.js';
8
+ import { RegistryType } from './registry.js';
9
+ export class RegistryExtension {
10
+ client;
11
+ registries = new IdentifierMap();
12
+ constructor(client) {
13
+ this.client = client;
14
+ client.network.registerPacket(REGISTRY_REGISTER_PACKET, REGISTRY_UPDATE_PACKET, REGISTRY_LISTEN_PACKET);
15
+ }
16
+ createRegistry(registryType) {
17
+ this.client.permissions.require(REGISTRY_PERMISSION_ID);
18
+ if (this.registries.has(registryType.id)) {
19
+ throw new Error(`Registry with identifier '${registryType.id}' already exists`);
20
+ }
21
+ return new RegistryImpl(this.client, registryType);
22
+ }
23
+ get(registryType) {
24
+ const identifier = registryType.id;
25
+ let registry = this.registries.get(identifier);
26
+ if (registry === undefined) {
27
+ registry = this.createRegistry(registryType);
28
+ this.registries.set(identifier, registry);
29
+ }
30
+ return registry;
31
+ }
32
+ create(name, defaultValue) {
33
+ const identifier = this.client.app.id.join(name);
34
+ if (this.registries.has(identifier)) {
35
+ throw new Error(`Registry with name '${name}' already exists`);
36
+ }
37
+ const tableType = RegistryType.createJson(identifier, {
38
+ name,
39
+ defaultValue,
40
+ });
41
+ return this.createRegistry(tableType);
42
+ }
43
+ }
44
+ class RegistryImpl {
45
+ client;
46
+ type;
47
+ eventEmitter = new EventEmitter();
48
+ listening = false;
49
+ value;
50
+ constructor(client, type) {
51
+ this.client = client;
52
+ this.type = type;
53
+ this.value = type.defaultValue;
54
+ client.network.addPacketHandler(REGISTRY_UPDATE_PACKET, (packet) => this.handleUpdate(packet));
55
+ client.network.addTask(() => this.onTask());
56
+ }
57
+ async get() {
58
+ const result = await this.client.endpoints.call(REGISTRY_GET_ENDPOINT, this.type.id);
59
+ if (result.value === null) {
60
+ return this.type.defaultValue;
61
+ }
62
+ return this.type.serializer.deserialize(result.value);
63
+ }
64
+ async set(value) {
65
+ this.client.send(REGISTRY_UPDATE_PACKET, {
66
+ id: this.type.id,
67
+ value: this.type.serializer.serialize(value),
68
+ });
69
+ }
70
+ async update(fn) {
71
+ const value = await this.get();
72
+ const newValue = await fn(value);
73
+ await this.set(newValue);
74
+ }
75
+ listen(handler) {
76
+ if (!this.listening) {
77
+ this.client.whenReady(() => {
78
+ this.client.send(REGISTRY_LISTEN_PACKET, this.type.id);
79
+ });
80
+ this.listening = true;
81
+ }
82
+ return this.eventEmitter.listen(handler);
83
+ }
84
+ handleUpdate(data) {
85
+ if (!data.id.isEqual(this.type.id)) {
86
+ return;
87
+ }
88
+ if (data.value !== null) {
89
+ this.value = this.type.serializer.deserialize(data.value);
90
+ }
91
+ this.eventEmitter.emit(this.value);
92
+ }
93
+ onTask() {
94
+ if (!this.type.id.isSubpathOf(this.client.app.id)) {
95
+ return;
96
+ }
97
+ this.client.send(REGISTRY_REGISTER_PACKET, {
98
+ id: this.type.id,
99
+ permissions: this.type.permissions,
100
+ });
101
+ }
102
+ }
103
+ export const REGISTRY_EXTENSION_TYPE = new ExtensionType('registry', (client) => new RegistryExtension(client));
104
+ export const REGISTRY_PERMISSION_ID = REGISTRY_EXTENSION_TYPE.join('permission');
105
+ const REGISTRY_REGISTER_PACKET = PacketType.createSerialized(REGISTRY_EXTENSION_TYPE, {
106
+ name: 'register',
107
+ serializer: RegistryRegisterPacket,
108
+ });
109
+ const REGISTRY_UPDATE_PACKET = PacketType.createSerialized(REGISTRY_EXTENSION_TYPE, {
110
+ name: 'update',
111
+ serializer: RegistryPacket,
112
+ });
113
+ const REGISTRY_LISTEN_PACKET = PacketType.createJson(REGISTRY_EXTENSION_TYPE, {
114
+ name: 'listen',
115
+ serializer: Serializer.model(Identifier),
116
+ });
117
+ const REGISTRY_GET_ENDPOINT = EndpointType.createSerialized(REGISTRY_EXTENSION_TYPE, {
118
+ name: 'get',
119
+ requestSerializer: Serializer.model(Identifier).toJson(),
120
+ responseSerializer: RegistryPacket,
121
+ permissionId: REGISTRY_PERMISSION_ID,
122
+ });
123
+ //# sourceMappingURL=registry-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-extension.js","sourceRoot":"","sources":["../../../../src/extension/registry/registry-extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Flags } from '../../bytebuffer.js';
2
+ import { Identifier } from '../../identifier.js';
3
+ import { Serializer } from '../../serializer.js';
4
+ export class RegistryPermissions {
5
+ all;
6
+ read;
7
+ write;
8
+ constructor(all, read, write) {
9
+ this.all = all;
10
+ this.read = read;
11
+ this.write = write;
12
+ }
13
+ serialize(writer) {
14
+ const flags = new Flags(0, 3);
15
+ flags.set(0, this.all !== undefined);
16
+ flags.set(1, this.read !== undefined);
17
+ flags.set(2, this.write !== undefined);
18
+ writer.writeFlags(flags);
19
+ if (this.all !== undefined) {
20
+ writer.writeString(this.all.key());
21
+ }
22
+ if (this.read !== undefined) {
23
+ writer.writeString(this.read.key());
24
+ }
25
+ if (this.write !== undefined) {
26
+ writer.writeString(this.write.key());
27
+ }
28
+ }
29
+ static deserialize(reader) {
30
+ const flags = reader.readFlags(3);
31
+ const all = flags.has(0) ? Identifier.fromKey(reader.readString()) : undefined;
32
+ const read = flags.has(1) ? Identifier.fromKey(reader.readString()) : undefined;
33
+ const write = flags.has(2) ? Identifier.fromKey(reader.readString()) : undefined;
34
+ return new RegistryPermissions(all, read, write);
35
+ }
36
+ }
37
+ export class RegistryType {
38
+ id;
39
+ defaultValue;
40
+ serializer;
41
+ permissions;
42
+ constructor(id, defaultValue, serializer, permissions) {
43
+ this.id = id;
44
+ this.defaultValue = defaultValue;
45
+ this.serializer = serializer;
46
+ this.permissions = permissions;
47
+ }
48
+ static createJson(identifier, { name, defaultValue, permissions, }) {
49
+ return new RegistryType(identifier.join(name), defaultValue, Serializer.json(), permissions ?? new RegistryPermissions());
50
+ }
51
+ static createSerialized(identifier, { name, defaultValue, serializer, permissions, }) {
52
+ return new RegistryType(identifier.join(name), defaultValue, serializer, permissions ?? new RegistryPermissions());
53
+ }
54
+ }
55
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/extension/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { SERVER_APPS_READ_PERMISSION_ID, SERVER_EXTENSION_TYPE, SERVER_SHUTDOWN_PERMISSION_ID, ServerExtension, } from './server-extension.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,GAClB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
+ export class ConsolePacket {
3
+ lines;
4
+ constructor(lines) {
5
+ this.lines = lines;
6
+ }
7
+ static serialize(item) {
8
+ const writer = new ByteWriter();
9
+ writer.writeInt(item.lines.length);
10
+ for (const line of item.lines) {
11
+ writer.writeString(line);
12
+ }
13
+ return writer.finish();
14
+ }
15
+ static deserialize(item) {
16
+ const reader = new ByteReader(item);
17
+ const lineCount = reader.readInt();
18
+ const lines = [];
19
+ for (let i = 0; i < lineCount; i++) {
20
+ lines.push(reader.readString());
21
+ }
22
+ return new ConsolePacket(lines);
23
+ }
24
+ }
25
+ //# sourceMappingURL=packets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packets.js","sourceRoot":"","sources":["../../../../src/extension/server/packets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,aAAa;IACH;IAAnB,YAAmB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAEtC,MAAM,CAAC,SAAS,CAAC,IAAmB;QAChC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY;QAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,EAAc,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;CACJ"}
@@ -0,0 +1,52 @@
1
+ import { App } from '../../app.js';
2
+ import { Identifier, IdentifierSet } from '../../identifier.js';
3
+ import { PacketType } from '../../network/packet/packet.js';
4
+ import { Serializer } from '../../serializer.js';
5
+ import { EndpointType } from '../endpoint/endpoint.js';
6
+ import { ExtensionType } from '../extension.js';
7
+ import { TABLE_EXTENSION_TYPE } from '../table/table-extension.js';
8
+ import { TableType } from '../table/table.js';
9
+ export const SERVER_EXTENSION_TYPE = new ExtensionType('server', (client) => new ServerExtension(client), () => [TABLE_EXTENSION_TYPE]);
10
+ export const SERVER_APPS_READ_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('apps', 'read');
11
+ const APP_TABLE_TYPE = TableType.createModel(SERVER_EXTENSION_TYPE, {
12
+ name: 'apps',
13
+ model: App,
14
+ permissions: {
15
+ read: SERVER_APPS_READ_PERMISSION_ID,
16
+ },
17
+ });
18
+ export const SERVER_SHUTDOWN_PERMISSION_ID = SERVER_EXTENSION_TYPE.join('shutdown');
19
+ const SHUTDOWN_ENDPOINT_TYPE = EndpointType.createJson(SERVER_EXTENSION_TYPE, {
20
+ name: 'shutdown',
21
+ permissionId: SERVER_SHUTDOWN_PERMISSION_ID,
22
+ });
23
+ const REQUIRE_APPS_PACKET_TYPE = PacketType.createJson(SERVER_EXTENSION_TYPE, {
24
+ name: 'require_apps',
25
+ serializer: Serializer.model(Identifier).toArray(),
26
+ });
27
+ export class ServerExtension {
28
+ client;
29
+ apps;
30
+ requiredApps = new IdentifierSet();
31
+ constructor(client) {
32
+ this.client = client;
33
+ client.network.registerPacket(REQUIRE_APPS_PACKET_TYPE);
34
+ this.apps = client.tables.get(APP_TABLE_TYPE);
35
+ client.network.addTask(() => this.onTask());
36
+ }
37
+ async onTask() {
38
+ this.client.send(REQUIRE_APPS_PACKET_TYPE, Array.from(this.requiredApps.values()));
39
+ }
40
+ async shutdown(restart) {
41
+ return await this.client.endpoints.call(SHUTDOWN_ENDPOINT_TYPE, restart ?? false);
42
+ }
43
+ require(...appIds) {
44
+ if (this.client.running) {
45
+ throw new Error('Cannot require apps after the client has started');
46
+ }
47
+ for (const appId of appIds) {
48
+ this.requiredApps.add(appId);
49
+ }
50
+ }
51
+ }
52
+ //# sourceMappingURL=server-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-extension.js","sourceRoot":"","sources":["../../../../src/extension/server/server-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,MAAM,qBAAqB,GAAmC,IAAI,aAAa,CAClF,QAAQ,EACR,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,EAC/C,GAAG,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzF,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,qBAAqB,EAAE;IAChE,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,GAAG;IACV,WAAW,EAAE;QACT,IAAI,EAAE,8BAA8B;KACvC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpF,MAAM,sBAAsB,GAAG,YAAY,CAAC,UAAU,CAAmB,qBAAqB,EAAE;IAC5F,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,6BAA6B;CAC9C,CAAC,CAAC;AACH,MAAM,wBAAwB,GAAG,UAAU,CAAC,UAAU,CAAe,qBAAqB,EAAE;IACxF,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;CACrD,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAIK;IAHb,IAAI,CAAa;IACzB,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;IAE3C,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACvC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,MAAM;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAAiB;QACnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IACtF,CAAC;IAEM,OAAO,CAAC,GAAG,MAAoB;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ export { SIGNAL_EXTENSION_TYPE, SignalExtension } from './signal-extension.js';
2
+ export { SignalType } from './signal.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/signal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAU,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { ByteReader, ByteWriter } from '../../bytebuffer.js';
2
+ import { Identifier } from '../../identifier.js';
3
+ import { SignalPermissions } from './signal.js';
4
+ export class SignalPacket {
5
+ id;
6
+ body;
7
+ constructor(id, body) {
8
+ this.id = id;
9
+ this.body = body;
10
+ }
11
+ static serialize(packet) {
12
+ const writer = new ByteWriter();
13
+ writer.writeString(packet.id.key());
14
+ writer.writeByteArray(packet.body);
15
+ return writer.finish();
16
+ }
17
+ static deserialize(data) {
18
+ const reader = new ByteReader(data);
19
+ const id = Identifier.fromKey(reader.readString());
20
+ const body = reader.readByteArray();
21
+ return new SignalPacket(id, body);
22
+ }
23
+ }
24
+ export class SignalRegisterPacket {
25
+ id;
26
+ permissions;
27
+ constructor(id, permissions) {
28
+ this.id = id;
29
+ this.permissions = permissions;
30
+ }
31
+ static serialize(packet) {
32
+ const writer = new ByteWriter();
33
+ writer.writeString(packet.id.key());
34
+ packet.permissions.serialize(writer);
35
+ return writer.finish();
36
+ }
37
+ static deserialize(data) {
38
+ const reader = new ByteReader(data);
39
+ const id = Identifier.fromKey(reader.readString());
40
+ const permissions = SignalPermissions.deserialize(reader);
41
+ return new SignalRegisterPacket(id, permissions);
42
+ }
43
+ }
44
+ //# sourceMappingURL=packets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packets.js","sourceRoot":"","sources":["../../../../src/extension/signal/packets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,YAAY;IAED;IACA;IAFpB,YACoB,EAAc,EACd,IAAgB;QADhB,OAAE,GAAF,EAAE,CAAY;QACd,SAAI,GAAJ,IAAI,CAAY;IAChC,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAAoB;QACxC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,IAAI,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AAED,MAAM,OAAO,oBAAoB;IAET;IACA;IAFpB,YACoB,EAAc,EACd,WAA8B;QAD9B,OAAE,GAAF,EAAE,CAAY;QACd,gBAAW,GAAX,WAAW,CAAmB;IAC9C,CAAC;IAEE,MAAM,CAAC,SAAS,CAAC,MAA4B;QAChD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;CACJ"}
@@ -0,0 +1,91 @@
1
+ import { Identifier, IdentifierMap } from '../../identifier.js';
2
+ import { PacketType } from '../../network/packet/index.js';
3
+ import { Serializer } from '../../serializer.js';
4
+ import { ExtensionType } from '../extension.js';
5
+ import { SignalPacket, SignalRegisterPacket } from './packets.js';
6
+ import { SignalType } from './signal.js';
7
+ export const SIGNAL_EXTENSION_TYPE = new ExtensionType('signal', (client) => new SignalExtension(client));
8
+ const SIGNAL_REGISTER_PACKET = PacketType.createSerialized(SIGNAL_EXTENSION_TYPE, {
9
+ name: 'register',
10
+ serializer: SignalRegisterPacket,
11
+ });
12
+ const SIGNAL_LISTEN_PACKET = PacketType.createJson(SIGNAL_EXTENSION_TYPE, {
13
+ name: 'listen',
14
+ serializer: Serializer.model(Identifier),
15
+ });
16
+ const SIGNAL_NOTIFY_PACKET = PacketType.createSerialized(SIGNAL_EXTENSION_TYPE, {
17
+ name: 'notify',
18
+ serializer: SignalPacket,
19
+ });
20
+ export class SignalExtension {
21
+ client;
22
+ signals = new IdentifierMap();
23
+ constructor(client) {
24
+ this.client = client;
25
+ client.network.registerPacket(SIGNAL_REGISTER_PACKET, SIGNAL_LISTEN_PACKET, SIGNAL_NOTIFY_PACKET);
26
+ }
27
+ createSignal(signalType) {
28
+ if (this.signals.has(signalType.id)) {
29
+ throw new Error(`Signal for key ${signalType.id} already created`);
30
+ }
31
+ return new SignalImpl(this.client, signalType);
32
+ }
33
+ create(name) {
34
+ const id = this.client.app.id.join(name);
35
+ const type = SignalType.createJson(id, { name });
36
+ return this.createSignal(type);
37
+ }
38
+ get(signalType) {
39
+ return this.createSignal(signalType);
40
+ }
41
+ }
42
+ class SignalImpl {
43
+ client;
44
+ type;
45
+ listeners = [];
46
+ listening = false;
47
+ constructor(client, type) {
48
+ this.client = client;
49
+ this.type = type;
50
+ client.network.addPacketHandler(SIGNAL_NOTIFY_PACKET, (data) => this.handleBroadcast(data));
51
+ client.network.addTask(() => this.onTask());
52
+ }
53
+ notify(body) {
54
+ const data = this.type.serializer.serialize(body);
55
+ this.client.send(SIGNAL_NOTIFY_PACKET, {
56
+ id: this.type.id,
57
+ body: data,
58
+ });
59
+ }
60
+ listen(handler) {
61
+ if (!this.listening) {
62
+ this.client.whenReady(() => {
63
+ this.client.send(SIGNAL_LISTEN_PACKET, this.type.id);
64
+ });
65
+ this.listening = true;
66
+ }
67
+ this.listeners.push(handler);
68
+ return () => {
69
+ this.listeners.splice(this.listeners.indexOf(handler), 1);
70
+ };
71
+ }
72
+ handleBroadcast(data) {
73
+ if (!data.id.isEqual(this.type.id)) {
74
+ return;
75
+ }
76
+ const body = this.type.serializer.deserialize(data.body);
77
+ for (const listener of this.listeners) {
78
+ listener(body);
79
+ }
80
+ }
81
+ onTask() {
82
+ if (!this.type.id.isSubpathOf(this.client.app.id)) {
83
+ return;
84
+ }
85
+ this.client.send(SIGNAL_REGISTER_PACKET, {
86
+ id: this.type.id,
87
+ permissions: this.type.permissions,
88
+ });
89
+ }
90
+ }
91
+ //# sourceMappingURL=signal-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-extension.js","sourceRoot":"","sources":["../../../../src/extension/signal/signal-extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { Flags } from '../../bytebuffer.js';
2
+ import { Identifier } from '../../identifier.js';
3
+ import { Serializer } from '../../serializer.js';
4
+ export class SignalPermissions {
5
+ all;
6
+ listen;
7
+ send;
8
+ constructor(all, listen, send) {
9
+ this.all = all;
10
+ this.listen = listen;
11
+ this.send = send;
12
+ }
13
+ serialize(writer) {
14
+ const flags = new Flags(0, 3);
15
+ flags.set(0, this.all !== undefined);
16
+ flags.set(1, this.listen !== undefined);
17
+ flags.set(2, this.send !== undefined);
18
+ writer.writeFlags(flags);
19
+ if (this.all !== undefined) {
20
+ writer.writeString(this.all.key());
21
+ }
22
+ if (this.listen !== undefined) {
23
+ writer.writeString(this.listen.key());
24
+ }
25
+ if (this.send !== undefined) {
26
+ writer.writeString(this.send.key());
27
+ }
28
+ }
29
+ static deserialize(reader) {
30
+ const flags = reader.readFlags(3);
31
+ const all = flags.ifSet(0, () => Identifier.fromKey(reader.readString()));
32
+ const listen = flags.ifSet(1, () => Identifier.fromKey(reader.readString()));
33
+ const send = flags.ifSet(2, () => Identifier.fromKey(reader.readString()));
34
+ return new SignalPermissions(all, listen, send);
35
+ }
36
+ }
37
+ export class SignalType {
38
+ id;
39
+ serializer;
40
+ permissions;
41
+ constructor(id, serializer, permissions) {
42
+ this.id = id;
43
+ this.serializer = serializer;
44
+ this.permissions = permissions;
45
+ }
46
+ static createJson(identifier, { name, permissions, }) {
47
+ return new SignalType(identifier.join(name), Serializer.json(), permissions ?? new SignalPermissions());
48
+ }
49
+ static createSerialized(identifier, { name, serializer, permissions, }) {
50
+ return new SignalType(identifier.join(name), serializer, permissions ?? new SignalPermissions());
51
+ }
52
+ }
53
+ //# sourceMappingURL=signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../../src/extension/signal/signal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { TABLE_EXTENSION_TYPE, TableExtension } from './table-extension.js';
2
+ export { TableType } from './table.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extension/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAsB,SAAS,EAAE,MAAM,YAAY,CAAC"}