@omujs/chat 0.9.48 → 0.9.49

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 (58) hide show
  1. package/dist/dts/chat.d.ts +20 -0
  2. package/dist/dts/const.d.ts +2 -0
  3. package/dist/dts/event/event-types.d.ts +15 -0
  4. package/dist/dts/event/event.d.ts +33 -0
  5. package/{src/event/index.ts → dist/dts/event/index.d.ts} +0 -1
  6. package/dist/dts/models/author.d.ts +37 -0
  7. package/dist/dts/models/channel.d.ts +31 -0
  8. package/dist/dts/models/content.d.ts +24 -0
  9. package/dist/dts/models/gift.d.ts +23 -0
  10. package/{src/models/index.ts → dist/dts/models/index.d.ts} +0 -1
  11. package/dist/dts/models/message.d.ts +40 -0
  12. package/dist/dts/models/paid.d.ts +11 -0
  13. package/dist/dts/models/provider.d.ts +34 -0
  14. package/dist/dts/models/reaction.d.ts +21 -0
  15. package/dist/dts/models/role.d.ts +26 -0
  16. package/dist/dts/models/room.d.ts +44 -0
  17. package/dist/dts/models/vote.d.ts +33 -0
  18. package/dist/dts/permissions.d.ts +7 -0
  19. package/dist/esm/chat.js +7976 -0
  20. package/dist/esm/const.js +5060 -0
  21. package/dist/esm/event/event-types.js +76 -0
  22. package/dist/esm/event/event.js +106 -0
  23. package/dist/esm/event/index.js +115 -0
  24. package/dist/esm/index.js +8022 -0
  25. package/dist/esm/models/author.js +5136 -0
  26. package/dist/esm/models/channel.js +5102 -0
  27. package/dist/esm/models/content.js +39 -0
  28. package/dist/esm/models/gift.js +40 -0
  29. package/dist/esm/models/index.js +5499 -0
  30. package/dist/esm/models/message.js +5199 -0
  31. package/dist/esm/models/paid.js +25 -0
  32. package/dist/esm/models/provider.js +5106 -0
  33. package/dist/esm/models/reaction.js +5079 -0
  34. package/dist/esm/models/role.js +44 -0
  35. package/dist/esm/models/room.js +5102 -0
  36. package/dist/esm/models/vote.js +5098 -0
  37. package/dist/esm/permissions.js +5073 -0
  38. package/dist/tsconfig.tsbuildinfo +1 -0
  39. package/package.json +5 -2
  40. package/CHANGELOG.md +0 -1831
  41. package/src/chat.ts +0 -131
  42. package/src/const.ts +0 -3
  43. package/src/event/event-types.ts +0 -16
  44. package/src/event/event.ts +0 -102
  45. package/src/models/author.ts +0 -72
  46. package/src/models/channel.ts +0 -67
  47. package/src/models/content.ts +0 -62
  48. package/src/models/gift.ts +0 -49
  49. package/src/models/message.ts +0 -88
  50. package/src/models/paid.ts +0 -22
  51. package/src/models/provider.ts +0 -73
  52. package/src/models/reaction.ts +0 -39
  53. package/src/models/role.ts +0 -55
  54. package/src/models/room.ts +0 -82
  55. package/src/models/vote.ts +0 -67
  56. package/src/permissions.ts +0 -9
  57. package/tsconfig.json +0 -15
  58. /package/{src/index.ts → dist/dts/index.d.ts} +0 -0
@@ -0,0 +1,76 @@
1
+ // @bun
2
+ // src/event/event.ts
3
+ class ListenerEvent {
4
+ getListener;
5
+ constructor(getListener) {
6
+ this.getListener = getListener;
7
+ }
8
+ subscribe(handler, chat) {
9
+ const listener = this.getListener(chat);
10
+ return listener.listen(handler);
11
+ }
12
+ }
13
+
14
+ class TableEvent extends ListenerEvent {
15
+ getTable;
16
+ AddBatch;
17
+ UpdateBatch;
18
+ RemoveBatch;
19
+ Add;
20
+ Update;
21
+ Remove;
22
+ Clear;
23
+ wrappers;
24
+ constructor(getTable) {
25
+ super((chat) => getTable(chat).event.cacheUpdate);
26
+ this.getTable = getTable;
27
+ this.AddBatch = new ListenerEvent((chat) => getTable(chat).event.add);
28
+ this.UpdateBatch = new ListenerEvent((chat) => getTable(chat).event.update);
29
+ this.RemoveBatch = new ListenerEvent((chat) => getTable(chat).event.remove);
30
+ this.Add = this.createBatchSubscriber((table) => table.event.add);
31
+ this.Update = this.createBatchSubscriber((table) => table.event.update);
32
+ this.Remove = this.createBatchSubscriber((table) => table.event.remove);
33
+ this.Clear = new ListenerEvent((client) => getTable(client).event.clear);
34
+ this.wrappers = {};
35
+ }
36
+ static createBatchWrapper(emit) {
37
+ return async (items) => {
38
+ for (const item of items.values()) {
39
+ await emit(item);
40
+ }
41
+ };
42
+ }
43
+ createBatchSubscriber(getListener) {
44
+ let batchWrapper = null;
45
+ const subscribe = (emit, chat) => {
46
+ const table = this.getTable(chat);
47
+ const listener = getListener(table);
48
+ batchWrapper = TableEvent.createBatchWrapper((item) => emit(item));
49
+ const stopListen = table.listen();
50
+ const clearEvent = listener.listen(batchWrapper);
51
+ return () => {
52
+ stopListen();
53
+ clearEvent();
54
+ };
55
+ };
56
+ return {
57
+ subscribe
58
+ };
59
+ }
60
+ }
61
+
62
+ // src/event/event-types.ts
63
+ var events = {
64
+ Message: new TableEvent((chat) => chat.messages),
65
+ Author: new TableEvent((chat) => chat.authors),
66
+ Channel: new TableEvent((chat) => chat.channels),
67
+ Provider: new TableEvent((chat) => chat.providers),
68
+ Room: new TableEvent((chat) => chat.rooms),
69
+ Vote: new TableEvent((chat) => chat.votes)
70
+ };
71
+ export {
72
+ events
73
+ };
74
+
75
+ //# debugId=8A75DAF050E0121664756E2164756E21
76
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2V2ZW50L2V2ZW50LnRzIiwgIi4uLy4uL3NyYy9ldmVudC9ldmVudC10eXBlcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSAnQG9tdWpzL29tdS9hcGkvdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBVbmxpc3RlbiB9IGZyb20gJ0BvbXVqcy9vbXUvZXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQG9tdWpzL29tdS9ldmVudCc7XG5cbmltcG9ydCB0eXBlIHsgQ2hhdCB9IGZyb20gJy4uL2NoYXQuanMnO1xuXG5leHBvcnQgdHlwZSBFdmVudEhhbmRsZXI8UCBleHRlbmRzIEFycmF5PGFueT4+ID0gKC4uLmFyZ3M6IFApID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlPFAgZXh0ZW5kcyBBcnJheTxhbnk+PiB7XG4gICAgc3Vic2NyaWJlKGhhbmRsZXI6IEV2ZW50SGFuZGxlcjxQPiwgY2hhdDogQ2hhdCk6IFVubGlzdGVuO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXJFdmVudDxQIGV4dGVuZHMgQXJyYXk8YW55Pj4gaW1wbGVtZW50cyBFdmVudFNvdXJjZTxQPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBnZXRMaXN0ZW5lcjogKGNoYXQ6IENoYXQpID0+IEV2ZW50RW1pdHRlcjxQPikge31cblxuICAgIHB1YmxpYyBzdWJzY3JpYmUoaGFuZGxlcjogRXZlbnRIYW5kbGVyPFA+LCBjaGF0OiBDaGF0KTogVW5saXN0ZW4ge1xuICAgICAgICBjb25zdCBsaXN0ZW5lciA9IHRoaXMuZ2V0TGlzdGVuZXIoY2hhdCk7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lci5saXN0ZW4oaGFuZGxlcik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVFdmVudDxUPiBleHRlbmRzIExpc3RlbmVyRXZlbnQ8W01hcDxzdHJpbmcsIFQ+XT4ge1xuICAgIHB1YmxpYyByZWFkb25seSBBZGRCYXRjaDogTGlzdGVuZXJFdmVudDxbTWFwPHN0cmluZywgVD5dPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgVXBkYXRlQmF0Y2g6IExpc3RlbmVyRXZlbnQ8W01hcDxzdHJpbmcsIFQ+XT47XG4gICAgcHVibGljIHJlYWRvbmx5IFJlbW92ZUJhdGNoOiBMaXN0ZW5lckV2ZW50PFtNYXA8c3RyaW5nLCBUPl0+O1xuICAgIHB1YmxpYyByZWFkb25seSBBZGQ6IEV2ZW50U291cmNlPFtUXT47XG4gICAgcHVibGljIHJlYWRvbmx5IFVwZGF0ZTogRXZlbnRTb3VyY2U8W1RdPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgUmVtb3ZlOiBFdmVudFNvdXJjZTxbVF0+O1xuICAgIHB1YmxpYyByZWFkb25seSBDbGVhcjogRXZlbnRTb3VyY2U8W10+O1xuICAgIHB1YmxpYyByZWFkb25seSB3cmFwcGVyczogUmVjb3JkPHN0cmluZywgVW5saXN0ZW4+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBnZXRUYWJsZTogKGNoYXQ6IENoYXQpID0+IFRhYmxlPFQ+KSB7XG4gICAgICAgIHN1cGVyKChjaGF0KSA9PiBnZXRUYWJsZShjaGF0KS5ldmVudC5jYWNoZVVwZGF0ZSk7XG4gICAgICAgIHRoaXMuQWRkQmF0Y2ggPSBuZXcgTGlzdGVuZXJFdmVudCgoY2hhdCkgPT4gZ2V0VGFibGUoY2hhdCkuZXZlbnQuYWRkKTtcbiAgICAgICAgdGhpcy5VcGRhdGVCYXRjaCA9IG5ldyBMaXN0ZW5lckV2ZW50KChjaGF0KSA9PiBnZXRUYWJsZShjaGF0KS5ldmVudC51cGRhdGUpO1xuICAgICAgICB0aGlzLlJlbW92ZUJhdGNoID0gbmV3IExpc3RlbmVyRXZlbnQoKGNoYXQpID0+IGdldFRhYmxlKGNoYXQpLmV2ZW50LnJlbW92ZSk7XG4gICAgICAgIHRoaXMuQWRkID0gdGhpcy5jcmVhdGVCYXRjaFN1YnNjcmliZXIoKHRhYmxlKSA9PiB0YWJsZS5ldmVudC5hZGQpO1xuICAgICAgICB0aGlzLlVwZGF0ZSA9IHRoaXMuY3JlYXRlQmF0Y2hTdWJzY3JpYmVyKCh0YWJsZSkgPT4gdGFibGUuZXZlbnQudXBkYXRlKTtcbiAgICAgICAgdGhpcy5SZW1vdmUgPSB0aGlzLmNyZWF0ZUJhdGNoU3Vic2NyaWJlcigodGFibGUpID0+IHRhYmxlLmV2ZW50LnJlbW92ZSk7XG4gICAgICAgIHRoaXMuQ2xlYXIgPSBuZXcgTGlzdGVuZXJFdmVudCgoY2xpZW50KSA9PiBnZXRUYWJsZShjbGllbnQpLmV2ZW50LmNsZWFyKTtcbiAgICAgICAgdGhpcy53cmFwcGVycyA9IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZUJhdGNoV3JhcHBlcjxUPihlbWl0OiBFdmVudEhhbmRsZXI8W1RdPik6IEV2ZW50SGFuZGxlcjxbTWFwPHN0cmluZywgVD5dPiB7XG4gICAgICAgIHJldHVybiBhc3luYyAoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGVtaXQoaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVCYXRjaFN1YnNjcmliZXIoXG4gICAgICAgIGdldExpc3RlbmVyOiAodGFibGU6IFRhYmxlPFQ+KSA9PiBFdmVudEVtaXR0ZXI8W01hcDxzdHJpbmcsIFQ+XT4sXG4gICAgKTogRXZlbnRTb3VyY2U8W1RdPiB7XG4gICAgICAgIGxldCBiYXRjaFdyYXBwZXI6IEV2ZW50SGFuZGxlcjxbTWFwPHN0cmluZywgVD5dPiB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZSA9IChlbWl0OiBFdmVudEhhbmRsZXI8W1RdPiwgY2hhdDogQ2hhdCk6IFVubGlzdGVuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZShjaGF0KTtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIodGFibGUpO1xuICAgICAgICAgICAgYmF0Y2hXcmFwcGVyID0gVGFibGVFdmVudC5jcmVhdGVCYXRjaFdyYXBwZXIoKGl0ZW0pID0+IGVtaXQoaXRlbSkpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcExpc3RlbiA9IHRhYmxlLmxpc3RlbigpO1xuICAgICAgICAgICAgY29uc3QgY2xlYXJFdmVudCA9IGxpc3RlbmVyLmxpc3RlbihiYXRjaFdyYXBwZXIpO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9wTGlzdGVuKCk7XG4gICAgICAgICAgICAgICAgY2xlYXJFdmVudCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3Vic2NyaWJlLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxudHlwZSBFbnRyeTxQIGV4dGVuZHMgQXJyYXk8YW55Pj4gPSB7XG4gICAgc291cmNlOiBFdmVudFNvdXJjZTxQPjtcbiAgICBsaXN0ZW5lcnM6IEV2ZW50RW1pdHRlcjxQPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBFdmVudFJlZ2lzdHJ5IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYXQ6IENoYXQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudHM6IE1hcDxFdmVudFNvdXJjZTxhbnk+LCBFbnRyeTxhbnk+PjtcblxuICAgIGNvbnN0cnVjdG9yKGNoYXQ6IENoYXQpIHtcbiAgICAgICAgdGhpcy5jaGF0ID0gY2hhdDtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBuZXcgTWFwKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyPFAgZXh0ZW5kcyBBcnJheTxhbnk+PihldmVudDogRXZlbnRTb3VyY2U8UD4sIGhhbmRsZXI6IEV2ZW50SGFuZGxlcjxQPik6IHZvaWQge1xuICAgICAgICBsZXQgZW50cnkgPSB0aGlzLmV2ZW50cy5nZXQoZXZlbnQpIGFzIEVudHJ5PFA+IHwgbnVsbDtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgY29uc3QgbmV3RW50cnk6IEVudHJ5PFA+ID0ge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogZXZlbnQsXG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzOiBuZXcgRXZlbnRFbWl0dGVyKCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZW50cnkgPSBuZXdFbnRyeTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzLnNldChldmVudCwgbmV3RW50cnkpO1xuICAgICAgICAgICAgZXZlbnQuc3Vic2NyaWJlKCguLi5hcmdzKSA9PiBuZXdFbnRyeS5saXN0ZW5lcnMuZW1pdCguLi5hcmdzKSwgdGhpcy5jaGF0KTtcbiAgICAgICAgfVxuICAgICAgICBlbnRyeS5saXN0ZW5lcnMubGlzdGVuKCguLi5hcmdzKSA9PiBoYW5kbGVyKC4uLmFyZ3MpKTtcbiAgICB9XG59XG4iLAogICAgImltcG9ydCB7IEF1dGhvciB9IGZyb20gJy4uL21vZGVscy9hdXRob3IuanMnO1xuaW1wb3J0IHsgQ2hhbm5lbCB9IGZyb20gJy4uL21vZGVscy9jaGFubmVsLmpzJztcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbHMvbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJy4uL21vZGVscy9wcm92aWRlci5qcyc7XG5pbXBvcnQgeyBSb29tIH0gZnJvbSAnLi4vbW9kZWxzL3Jvb20uanMnO1xuaW1wb3J0IHsgVm90ZSB9IGZyb20gJy4uL21vZGVscy92b3RlLmpzJztcbmltcG9ydCB7IFRhYmxlRXZlbnQgfSBmcm9tICcuL2V2ZW50LmpzJztcblxuZXhwb3J0IGNvbnN0IGV2ZW50czogeyBNZXNzYWdlOiBUYWJsZUV2ZW50PE1lc3NhZ2U+OyBBdXRob3I6IFRhYmxlRXZlbnQ8QXV0aG9yPjsgQ2hhbm5lbDogVGFibGVFdmVudDxDaGFubmVsPjsgUHJvdmlkZXI6IFRhYmxlRXZlbnQ8UHJvdmlkZXI+OyBSb29tOiBUYWJsZUV2ZW50PFJvb20+OyBWb3RlOiBUYWJsZUV2ZW50PFZvdGU+IH0gPSB7XG4gICAgTWVzc2FnZTogbmV3IFRhYmxlRXZlbnQoKGNoYXQpID0+IGNoYXQubWVzc2FnZXMpLFxuICAgIEF1dGhvcjogbmV3IFRhYmxlRXZlbnQoKGNoYXQpID0+IGNoYXQuYXV0aG9ycyksXG4gICAgQ2hhbm5lbDogbmV3IFRhYmxlRXZlbnQoKGNoYXQpID0+IGNoYXQuY2hhbm5lbHMpLFxuICAgIFByb3ZpZGVyOiBuZXcgVGFibGVFdmVudCgoY2hhdCkgPT4gY2hhdC5wcm92aWRlcnMpLFxuICAgIFJvb206IG5ldyBUYWJsZUV2ZW50KChjaGF0KSA9PiBjaGF0LnJvb21zKSxcbiAgICBWb3RlOiBuZXcgVGFibGVFdmVudCgoY2hhdCkgPT4gY2hhdC52b3RlcyksXG59O1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7QUFZTyxNQUFNLGNBQThEO0FBQUEsRUFDMUM7QUFBQSxFQUE3QixXQUFXLENBQWtCLGFBQThDO0FBQUEsSUFBOUM7QUFBQTtBQUFBLEVBRXRCLFNBQVMsQ0FBQyxTQUEwQixNQUFzQjtBQUFBLElBQzdELE1BQU0sV0FBVyxLQUFLLFlBQVksSUFBSTtBQUFBLElBQ3RDLE9BQU8sU0FBUyxPQUFPLE9BQU87QUFBQTtBQUV0QztBQUFBO0FBRU8sTUFBTSxtQkFBc0IsY0FBZ0M7QUFBQSxFQVVsQztBQUFBLEVBVGI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFaEIsV0FBVyxDQUFrQixVQUFvQztBQUFBLElBQzdELE1BQU0sQ0FBQyxTQUFTLFNBQVMsSUFBSSxFQUFFLE1BQU0sV0FBVztBQUFBLElBRHZCO0FBQUEsSUFFekIsS0FBSyxXQUFXLElBQUksY0FBYyxDQUFDLFNBQVMsU0FBUyxJQUFJLEVBQUUsTUFBTSxHQUFHO0FBQUEsSUFDcEUsS0FBSyxjQUFjLElBQUksY0FBYyxDQUFDLFNBQVMsU0FBUyxJQUFJLEVBQUUsTUFBTSxNQUFNO0FBQUEsSUFDMUUsS0FBSyxjQUFjLElBQUksY0FBYyxDQUFDLFNBQVMsU0FBUyxJQUFJLEVBQUUsTUFBTSxNQUFNO0FBQUEsSUFDMUUsS0FBSyxNQUFNLEtBQUssc0JBQXNCLENBQUMsVUFBVSxNQUFNLE1BQU0sR0FBRztBQUFBLElBQ2hFLEtBQUssU0FBUyxLQUFLLHNCQUFzQixDQUFDLFVBQVUsTUFBTSxNQUFNLE1BQU07QUFBQSxJQUN0RSxLQUFLLFNBQVMsS0FBSyxzQkFBc0IsQ0FBQyxVQUFVLE1BQU0sTUFBTSxNQUFNO0FBQUEsSUFDdEUsS0FBSyxRQUFRLElBQUksY0FBYyxDQUFDLFdBQVcsU0FBUyxNQUFNLEVBQUUsTUFBTSxLQUFLO0FBQUEsSUFDdkUsS0FBSyxXQUFXLENBQUM7QUFBQTtBQUFBLFNBR04sa0JBQXFCLENBQUMsTUFBeUQ7QUFBQSxJQUMxRixPQUFPLE9BQU8sVUFBVTtBQUFBLE1BQ3BCLFdBQVcsUUFBUSxNQUFNLE9BQU8sR0FBRztBQUFBLFFBQy9CLE1BQU0sS0FBSyxJQUFJO0FBQUEsTUFDbkI7QUFBQTtBQUFBO0FBQUEsRUFJQSxxQkFBcUIsQ0FDekIsYUFDZ0I7QUFBQSxJQUNoQixJQUFJLGVBQXNEO0FBQUEsSUFFMUQsTUFBTSxZQUFZLENBQUMsTUFBeUIsU0FBeUI7QUFBQSxNQUNqRSxNQUFNLFFBQVEsS0FBSyxTQUFTLElBQUk7QUFBQSxNQUNoQyxNQUFNLFdBQVcsWUFBWSxLQUFLO0FBQUEsTUFDbEMsZUFBZSxXQUFXLG1CQUFtQixDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7QUFBQSxNQUNqRSxNQUFNLGFBQWEsTUFBTSxPQUFPO0FBQUEsTUFDaEMsTUFBTSxhQUFhLFNBQVMsT0FBTyxZQUFZO0FBQUEsTUFDL0MsT0FBTyxNQUFNO0FBQUEsUUFDVCxXQUFXO0FBQUEsUUFDWCxXQUFXO0FBQUE7QUFBQTtBQUFBLElBSW5CLE9BQU87QUFBQSxNQUNIO0FBQUEsSUFDSjtBQUFBO0FBRVI7OztBQ2hFTyxJQUFNLFNBQXFMO0FBQUEsRUFDOUwsU0FBUyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssUUFBUTtBQUFBLEVBQy9DLFFBQVEsSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLE9BQU87QUFBQSxFQUM3QyxTQUFTLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxRQUFRO0FBQUEsRUFDL0MsVUFBVSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssU0FBUztBQUFBLEVBQ2pELE1BQU0sSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLEtBQUs7QUFBQSxFQUN6QyxNQUFNLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxLQUFLO0FBQzdDOyIsCiAgImRlYnVnSWQiOiAiOEE3NURBRjA1MEUwMTIxNjY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
@@ -0,0 +1,106 @@
1
+ // @bun
2
+ // ../omu/dist/esm/event/index.js
3
+ class EventEmitter {
4
+ listeners = [];
5
+ listen(listener) {
6
+ this.listeners.push(listener);
7
+ return () => {
8
+ this.listeners.splice(this.listeners.indexOf(listener), 1);
9
+ };
10
+ }
11
+ async emit(...args) {
12
+ for (const listener of [...this.listeners]) {
13
+ await listener(...args);
14
+ }
15
+ }
16
+ }
17
+
18
+ // src/event/event.ts
19
+ class ListenerEvent {
20
+ getListener;
21
+ constructor(getListener) {
22
+ this.getListener = getListener;
23
+ }
24
+ subscribe(handler, chat) {
25
+ const listener = this.getListener(chat);
26
+ return listener.listen(handler);
27
+ }
28
+ }
29
+
30
+ class TableEvent extends ListenerEvent {
31
+ getTable;
32
+ AddBatch;
33
+ UpdateBatch;
34
+ RemoveBatch;
35
+ Add;
36
+ Update;
37
+ Remove;
38
+ Clear;
39
+ wrappers;
40
+ constructor(getTable) {
41
+ super((chat) => getTable(chat).event.cacheUpdate);
42
+ this.getTable = getTable;
43
+ this.AddBatch = new ListenerEvent((chat) => getTable(chat).event.add);
44
+ this.UpdateBatch = new ListenerEvent((chat) => getTable(chat).event.update);
45
+ this.RemoveBatch = new ListenerEvent((chat) => getTable(chat).event.remove);
46
+ this.Add = this.createBatchSubscriber((table) => table.event.add);
47
+ this.Update = this.createBatchSubscriber((table) => table.event.update);
48
+ this.Remove = this.createBatchSubscriber((table) => table.event.remove);
49
+ this.Clear = new ListenerEvent((client) => getTable(client).event.clear);
50
+ this.wrappers = {};
51
+ }
52
+ static createBatchWrapper(emit) {
53
+ return async (items) => {
54
+ for (const item of items.values()) {
55
+ await emit(item);
56
+ }
57
+ };
58
+ }
59
+ createBatchSubscriber(getListener) {
60
+ let batchWrapper = null;
61
+ const subscribe = (emit, chat) => {
62
+ const table = this.getTable(chat);
63
+ const listener = getListener(table);
64
+ batchWrapper = TableEvent.createBatchWrapper((item) => emit(item));
65
+ const stopListen = table.listen();
66
+ const clearEvent = listener.listen(batchWrapper);
67
+ return () => {
68
+ stopListen();
69
+ clearEvent();
70
+ };
71
+ };
72
+ return {
73
+ subscribe
74
+ };
75
+ }
76
+ }
77
+
78
+ class EventRegistry {
79
+ chat;
80
+ events;
81
+ constructor(chat) {
82
+ this.chat = chat;
83
+ this.events = new Map;
84
+ }
85
+ register(event, handler) {
86
+ let entry = this.events.get(event);
87
+ if (!entry) {
88
+ const newEntry = {
89
+ source: event,
90
+ listeners: new EventEmitter
91
+ };
92
+ entry = newEntry;
93
+ this.events.set(event, newEntry);
94
+ event.subscribe((...args) => newEntry.listeners.emit(...args), this.chat);
95
+ }
96
+ entry.listeners.listen((...args) => handler(...args));
97
+ }
98
+ }
99
+ export {
100
+ TableEvent,
101
+ ListenerEvent,
102
+ EventRegistry
103
+ };
104
+
105
+ //# debugId=32DECB28BCA2C08764756E2164756E21
106
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vb211L2Rpc3QvZXNtL2V2ZW50L2luZGV4LmpzIiwgIi4uLy4uL3NyYy9ldmVudC9ldmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICIvLyBAYnVuXG4vLyBzcmMvZXZlbnQvaW5kZXgudHNcbmNsYXNzIEV2ZW50RW1pdHRlciB7XG4gIGxpc3RlbmVycyA9IFtdO1xuICBsaXN0ZW4obGlzdGVuZXIpIHtcbiAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKHRoaXMubGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpLCAxKTtcbiAgICB9O1xuICB9XG4gIGFzeW5jIGVtaXQoLi4uYXJncykge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgWy4uLnRoaXMubGlzdGVuZXJzXSkge1xuICAgICAgYXdhaXQgbGlzdGVuZXIoLi4uYXJncyk7XG4gICAgfVxuICB9XG59XG5leHBvcnQge1xuICBFdmVudEVtaXR0ZXJcbn07XG5cbi8vIyBkZWJ1Z0lkPTdGNTU1MDg4RTQ1MDlBRjQ2NDc1NkUyMTY0NzU2RTIxXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV3b2dJQ0oyWlhKemFXOXVJam9nTXl3S0lDQWljMjkxY21ObGN5STZJRnNpTGk0dkxpNHZjM0pqTDJWMlpXNTBMMmx1WkdWNExuUnpJbDBzQ2lBZ0luTnZkWEpqWlhORGIyNTBaVzUwSWpvZ1d3b2dJQ0FnSW1WNGNHOXlkQ0IwZVhCbElGVnViR2x6ZEdWdUlEMGdLQ2tnUFQ0Z2RtOXBaRHRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRVYyWlc1MFJXMXBkSFJsY2p4UUlHVjRkR1Z1WkhNZ1FYSnlZWGs4WVc1NVBqNGdlMXh1SUNBZ0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ2JHbHpkR1Z1WlhKek9pQkJjbkpoZVR3b0xpNHVZWEpuY3pvZ1VDa2dQVDRnVUhKdmJXbHpaVHgyYjJsa1BpQjhJSFp2YVdRK0lEMGdXMTA3WEc1Y2JpQWdJQ0J3ZFdKc2FXTWdiR2x6ZEdWdUtHeHBjM1JsYm1WeU9pQW9MaTR1WVhKbmN6b2dVQ2tnUFQ0Z1lXNTVLVG9nVlc1c2FYTjBaVzRnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbXhwYzNSbGJtVnljeTV3ZFhOb0tHeHBjM1JsYm1WeUtUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJHbHpkR1Z1WlhKekxuTndiR2xqWlNoMGFHbHpMbXhwYzNSbGJtVnljeTVwYm1SbGVFOW1LR3hwYzNSbGJtVnlLU3dnTVNrN1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUdGemVXNWpJR1Z0YVhRb0xpNHVZWEpuY3pvZ1VDazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR3hwYzNSbGJtVnlJRzltSUZzdUxpNTBhR2x6TG14cGMzUmxibVZ5YzEwcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGM1lXbDBJR3hwYzNSbGJtVnlLQzR1TG1GeVozTXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1ZlZ4dUlnb2dJRjBzQ2lBZ0ltMWhjSEJwYm1keklqb2dJanM3UVVGRlR5eE5RVUZOTEdGQlFXMURPMEZCUVVFc1JVRkRNMElzV1VGQmVVUXNRMEZCUXp0QlFVRkJMRVZCUlhCRkxFMUJRVTBzUTBGQlF5eFZRVUY1UXp0QlFVRkJMRWxCUTI1RUxFdEJRVXNzVlVGQlZTeExRVUZMTEZGQlFWRTdRVUZCUVN4SlFVTTFRaXhQUVVGUExFMUJRVTA3UVVGQlFTeE5RVU5VTEV0QlFVc3NWVUZCVlN4UFFVRlBMRXRCUVVzc1ZVRkJWU3hSUVVGUkxGRkJRVkVzUjBGQlJ5eERRVUZETzBGQlFVRTdRVUZCUVR0QlFVRkJMRTlCU1hCRUxFdEJRVWtzU1VGQlNTeE5RVUYzUWp0QlFVRkJMRWxCUTNwRExGZEJRVmNzV1VGQldTeERRVUZETEVkQlFVY3NTMEZCU3l4VFFVRlRMRWRCUVVjN1FVRkJRU3hOUVVONFF5eE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpPMEZCUVVFc1NVRkRNVUk3UVVGQlFUdEJRVVZTT3lJc0NpQWdJbVJsWW5WblNXUWlPaUFpTjBZMU5UVXdPRGhGTkRVd09VRkdORFkwTnpVMlJUSXhOalEzTlRaRk1qRWlMQW9nSUNKdVlXMWxjeUk2SUZ0ZENuMD1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gJ0BvbXVqcy9vbXUvYXBpL3RhYmxlJztcbmltcG9ydCB0eXBlIHsgVW5saXN0ZW4gfSBmcm9tICdAb211anMvb211L2V2ZW50JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0BvbXVqcy9vbXUvZXZlbnQnO1xuXG5pbXBvcnQgdHlwZSB7IENoYXQgfSBmcm9tICcuLi9jaGF0LmpzJztcblxuZXhwb3J0IHR5cGUgRXZlbnRIYW5kbGVyPFAgZXh0ZW5kcyBBcnJheTxhbnk+PiA9ICguLi5hcmdzOiBQKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFNvdXJjZTxQIGV4dGVuZHMgQXJyYXk8YW55Pj4ge1xuICAgIHN1YnNjcmliZShoYW5kbGVyOiBFdmVudEhhbmRsZXI8UD4sIGNoYXQ6IENoYXQpOiBVbmxpc3Rlbjtcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RlbmVyRXZlbnQ8UCBleHRlbmRzIEFycmF5PGFueT4+IGltcGxlbWVudHMgRXZlbnRTb3VyY2U8UD4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZ2V0TGlzdGVuZXI6IChjaGF0OiBDaGF0KSA9PiBFdmVudEVtaXR0ZXI8UD4pIHt9XG5cbiAgICBwdWJsaWMgc3Vic2NyaWJlKGhhbmRsZXI6IEV2ZW50SGFuZGxlcjxQPiwgY2hhdDogQ2hhdCk6IFVubGlzdGVuIHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLmdldExpc3RlbmVyKGNoYXQpO1xuICAgICAgICByZXR1cm4gbGlzdGVuZXIubGlzdGVuKGhhbmRsZXIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRXZlbnQ8VD4gZXh0ZW5kcyBMaXN0ZW5lckV2ZW50PFtNYXA8c3RyaW5nLCBUPl0+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgQWRkQmF0Y2g6IExpc3RlbmVyRXZlbnQ8W01hcDxzdHJpbmcsIFQ+XT47XG4gICAgcHVibGljIHJlYWRvbmx5IFVwZGF0ZUJhdGNoOiBMaXN0ZW5lckV2ZW50PFtNYXA8c3RyaW5nLCBUPl0+O1xuICAgIHB1YmxpYyByZWFkb25seSBSZW1vdmVCYXRjaDogTGlzdGVuZXJFdmVudDxbTWFwPHN0cmluZywgVD5dPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgQWRkOiBFdmVudFNvdXJjZTxbVF0+O1xuICAgIHB1YmxpYyByZWFkb25seSBVcGRhdGU6IEV2ZW50U291cmNlPFtUXT47XG4gICAgcHVibGljIHJlYWRvbmx5IFJlbW92ZTogRXZlbnRTb3VyY2U8W1RdPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgQ2xlYXI6IEV2ZW50U291cmNlPFtdPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgd3JhcHBlcnM6IFJlY29yZDxzdHJpbmcsIFVubGlzdGVuPjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZ2V0VGFibGU6IChjaGF0OiBDaGF0KSA9PiBUYWJsZTxUPikge1xuICAgICAgICBzdXBlcigoY2hhdCkgPT4gZ2V0VGFibGUoY2hhdCkuZXZlbnQuY2FjaGVVcGRhdGUpO1xuICAgICAgICB0aGlzLkFkZEJhdGNoID0gbmV3IExpc3RlbmVyRXZlbnQoKGNoYXQpID0+IGdldFRhYmxlKGNoYXQpLmV2ZW50LmFkZCk7XG4gICAgICAgIHRoaXMuVXBkYXRlQmF0Y2ggPSBuZXcgTGlzdGVuZXJFdmVudCgoY2hhdCkgPT4gZ2V0VGFibGUoY2hhdCkuZXZlbnQudXBkYXRlKTtcbiAgICAgICAgdGhpcy5SZW1vdmVCYXRjaCA9IG5ldyBMaXN0ZW5lckV2ZW50KChjaGF0KSA9PiBnZXRUYWJsZShjaGF0KS5ldmVudC5yZW1vdmUpO1xuICAgICAgICB0aGlzLkFkZCA9IHRoaXMuY3JlYXRlQmF0Y2hTdWJzY3JpYmVyKCh0YWJsZSkgPT4gdGFibGUuZXZlbnQuYWRkKTtcbiAgICAgICAgdGhpcy5VcGRhdGUgPSB0aGlzLmNyZWF0ZUJhdGNoU3Vic2NyaWJlcigodGFibGUpID0+IHRhYmxlLmV2ZW50LnVwZGF0ZSk7XG4gICAgICAgIHRoaXMuUmVtb3ZlID0gdGhpcy5jcmVhdGVCYXRjaFN1YnNjcmliZXIoKHRhYmxlKSA9PiB0YWJsZS5ldmVudC5yZW1vdmUpO1xuICAgICAgICB0aGlzLkNsZWFyID0gbmV3IExpc3RlbmVyRXZlbnQoKGNsaWVudCkgPT4gZ2V0VGFibGUoY2xpZW50KS5ldmVudC5jbGVhcik7XG4gICAgICAgIHRoaXMud3JhcHBlcnMgPSB7fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVCYXRjaFdyYXBwZXI8VD4oZW1pdDogRXZlbnRIYW5kbGVyPFtUXT4pOiBFdmVudEhhbmRsZXI8W01hcDxzdHJpbmcsIFQ+XT4ge1xuICAgICAgICByZXR1cm4gYXN5bmMgKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBlbWl0KGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmF0Y2hTdWJzY3JpYmVyKFxuICAgICAgICBnZXRMaXN0ZW5lcjogKHRhYmxlOiBUYWJsZTxUPikgPT4gRXZlbnRFbWl0dGVyPFtNYXA8c3RyaW5nLCBUPl0+LFxuICAgICk6IEV2ZW50U291cmNlPFtUXT4ge1xuICAgICAgICBsZXQgYmF0Y2hXcmFwcGVyOiBFdmVudEhhbmRsZXI8W01hcDxzdHJpbmcsIFQ+XT4gfCBudWxsID0gbnVsbDtcblxuICAgICAgICBjb25zdCBzdWJzY3JpYmUgPSAoZW1pdDogRXZlbnRIYW5kbGVyPFtUXT4sIGNoYXQ6IENoYXQpOiBVbmxpc3RlbiA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0VGFibGUoY2hhdCk7XG4gICAgICAgICAgICBjb25zdCBsaXN0ZW5lciA9IGdldExpc3RlbmVyKHRhYmxlKTtcbiAgICAgICAgICAgIGJhdGNoV3JhcHBlciA9IFRhYmxlRXZlbnQuY3JlYXRlQmF0Y2hXcmFwcGVyKChpdGVtKSA9PiBlbWl0KGl0ZW0pKTtcbiAgICAgICAgICAgIGNvbnN0IHN0b3BMaXN0ZW4gPSB0YWJsZS5saXN0ZW4oKTtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFyRXZlbnQgPSBsaXN0ZW5lci5saXN0ZW4oYmF0Y2hXcmFwcGVyKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcExpc3RlbigpO1xuICAgICAgICAgICAgICAgIGNsZWFyRXZlbnQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbnR5cGUgRW50cnk8UCBleHRlbmRzIEFycmF5PGFueT4+ID0ge1xuICAgIHNvdXJjZTogRXZlbnRTb3VyY2U8UD47XG4gICAgbGlzdGVuZXJzOiBFdmVudEVtaXR0ZXI8UD47XG59O1xuXG5leHBvcnQgY2xhc3MgRXZlbnRSZWdpc3RyeSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGF0OiBDaGF0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzOiBNYXA8RXZlbnRTb3VyY2U8YW55PiwgRW50cnk8YW55Pj47XG5cbiAgICBjb25zdHJ1Y3RvcihjaGF0OiBDaGF0KSB7XG4gICAgICAgIHRoaXMuY2hhdCA9IGNoYXQ7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlcjxQIGV4dGVuZHMgQXJyYXk8YW55Pj4oZXZlbnQ6IEV2ZW50U291cmNlPFA+LCBoYW5kbGVyOiBFdmVudEhhbmRsZXI8UD4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGVudHJ5ID0gdGhpcy5ldmVudHMuZ2V0KGV2ZW50KSBhcyBFbnRyeTxQPiB8IG51bGw7XG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0VudHJ5OiBFbnRyeTxQPiA9IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGxpc3RlbmVyczogbmV3IEV2ZW50RW1pdHRlcigpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVudHJ5ID0gbmV3RW50cnk7XG4gICAgICAgICAgICB0aGlzLmV2ZW50cy5zZXQoZXZlbnQsIG5ld0VudHJ5KTtcbiAgICAgICAgICAgIGV2ZW50LnN1YnNjcmliZSgoLi4uYXJncykgPT4gbmV3RW50cnkubGlzdGVuZXJzLmVtaXQoLi4uYXJncyksIHRoaXMuY2hhdCk7XG4gICAgICAgIH1cbiAgICAgICAgZW50cnkubGlzdGVuZXJzLmxpc3RlbigoLi4uYXJncykgPT4gaGFuZGxlciguLi5hcmdzKSk7XG4gICAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7QUFFQSxNQUFNLGFBQWE7QUFBQSxFQUNqQixZQUFZLENBQUM7QUFBQSxFQUNiLE1BQU0sQ0FBQyxVQUFVO0FBQUEsSUFDZixLQUFLLFVBQVUsS0FBSyxRQUFRO0FBQUEsSUFDNUIsT0FBTyxNQUFNO0FBQUEsTUFDWCxLQUFLLFVBQVUsT0FBTyxLQUFLLFVBQVUsUUFBUSxRQUFRLEdBQUcsQ0FBQztBQUFBO0FBQUE7QUFBQSxPQUd2RCxLQUFJLElBQUksTUFBTTtBQUFBLElBQ2xCLFdBQVcsWUFBWSxDQUFDLEdBQUcsS0FBSyxTQUFTLEdBQUc7QUFBQSxNQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJO0FBQUEsSUFDeEI7QUFBQTtBQUVKOzs7QUNITyxNQUFNLGNB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
@@ -0,0 +1,115 @@
1
+ // @bun
2
+ // ../omu/dist/esm/event/index.js
3
+ class EventEmitter {
4
+ listeners = [];
5
+ listen(listener) {
6
+ this.listeners.push(listener);
7
+ return () => {
8
+ this.listeners.splice(this.listeners.indexOf(listener), 1);
9
+ };
10
+ }
11
+ async emit(...args) {
12
+ for (const listener of [...this.listeners]) {
13
+ await listener(...args);
14
+ }
15
+ }
16
+ }
17
+
18
+ // src/event/event.ts
19
+ class ListenerEvent {
20
+ getListener;
21
+ constructor(getListener) {
22
+ this.getListener = getListener;
23
+ }
24
+ subscribe(handler, chat) {
25
+ const listener = this.getListener(chat);
26
+ return listener.listen(handler);
27
+ }
28
+ }
29
+
30
+ class TableEvent extends ListenerEvent {
31
+ getTable;
32
+ AddBatch;
33
+ UpdateBatch;
34
+ RemoveBatch;
35
+ Add;
36
+ Update;
37
+ Remove;
38
+ Clear;
39
+ wrappers;
40
+ constructor(getTable) {
41
+ super((chat) => getTable(chat).event.cacheUpdate);
42
+ this.getTable = getTable;
43
+ this.AddBatch = new ListenerEvent((chat) => getTable(chat).event.add);
44
+ this.UpdateBatch = new ListenerEvent((chat) => getTable(chat).event.update);
45
+ this.RemoveBatch = new ListenerEvent((chat) => getTable(chat).event.remove);
46
+ this.Add = this.createBatchSubscriber((table) => table.event.add);
47
+ this.Update = this.createBatchSubscriber((table) => table.event.update);
48
+ this.Remove = this.createBatchSubscriber((table) => table.event.remove);
49
+ this.Clear = new ListenerEvent((client) => getTable(client).event.clear);
50
+ this.wrappers = {};
51
+ }
52
+ static createBatchWrapper(emit) {
53
+ return async (items) => {
54
+ for (const item of items.values()) {
55
+ await emit(item);
56
+ }
57
+ };
58
+ }
59
+ createBatchSubscriber(getListener) {
60
+ let batchWrapper = null;
61
+ const subscribe = (emit, chat) => {
62
+ const table = this.getTable(chat);
63
+ const listener = getListener(table);
64
+ batchWrapper = TableEvent.createBatchWrapper((item) => emit(item));
65
+ const stopListen = table.listen();
66
+ const clearEvent = listener.listen(batchWrapper);
67
+ return () => {
68
+ stopListen();
69
+ clearEvent();
70
+ };
71
+ };
72
+ return {
73
+ subscribe
74
+ };
75
+ }
76
+ }
77
+
78
+ class EventRegistry {
79
+ chat;
80
+ events;
81
+ constructor(chat) {
82
+ this.chat = chat;
83
+ this.events = new Map;
84
+ }
85
+ register(event, handler) {
86
+ let entry = this.events.get(event);
87
+ if (!entry) {
88
+ const newEntry = {
89
+ source: event,
90
+ listeners: new EventEmitter
91
+ };
92
+ entry = newEntry;
93
+ this.events.set(event, newEntry);
94
+ event.subscribe((...args) => newEntry.listeners.emit(...args), this.chat);
95
+ }
96
+ entry.listeners.listen((...args) => handler(...args));
97
+ }
98
+ }
99
+
100
+ // src/event/event-types.ts
101
+ var events = {
102
+ Message: new TableEvent((chat) => chat.messages),
103
+ Author: new TableEvent((chat) => chat.authors),
104
+ Channel: new TableEvent((chat) => chat.channels),
105
+ Provider: new TableEvent((chat) => chat.providers),
106
+ Room: new TableEvent((chat) => chat.rooms),
107
+ Vote: new TableEvent((chat) => chat.votes)
108
+ };
109
+ export {
110
+ events as Events,
111
+ EventRegistry
112
+ };
113
+
114
+ //# debugId=F2B3B443165F1CA764756E2164756E21
115
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vb211L2Rpc3QvZXNtL2V2ZW50L2luZGV4LmpzIiwgIi4uLy4uL3NyYy9ldmVudC9ldmVudC50cyIsICIuLi8uLi9zcmMvZXZlbnQvZXZlbnQtdHlwZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gQGJ1blxuLy8gc3JjL2V2ZW50L2luZGV4LnRzXG5jbGFzcyBFdmVudEVtaXR0ZXIge1xuICBsaXN0ZW5lcnMgPSBbXTtcbiAgbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMubGlzdGVuZXJzLnNwbGljZSh0aGlzLmxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKSwgMSk7XG4gICAgfTtcbiAgfVxuICBhc3luYyBlbWl0KC4uLmFyZ3MpIHtcbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLmxpc3RlbmVyc10pIHtcbiAgICAgIGF3YWl0IGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuZXhwb3J0IHtcbiAgRXZlbnRFbWl0dGVyXG59O1xuXG4vLyMgZGVidWdJZD03RjU1NTA4OEU0NTA5QUY0NjQ3NTZFMjE2NDc1NkUyMVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxld29nSUNKMlpYSnphVzl1SWpvZ015d0tJQ0FpYzI5MWNtTmxjeUk2SUZzaUxpNHZMaTR2YzNKakwyVjJaVzUwTDJsdVpHVjRMblJ6SWwwc0NpQWdJbk52ZFhKalpYTkRiMjUwWlc1MElqb2dXd29nSUNBZ0ltVjRjRzl5ZENCMGVYQmxJRlZ1YkdsemRHVnVJRDBnS0NrZ1BUNGdkbTlwWkR0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVWMlpXNTBSVzFwZEhSbGNqeFFJR1Y0ZEdWdVpITWdRWEp5WVhrOFlXNTVQajRnZTF4dUlDQWdJSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2diR2x6ZEdWdVpYSnpPaUJCY25KaGVUd29MaTR1WVhKbmN6b2dVQ2tnUFQ0Z1VISnZiV2x6WlR4MmIybGtQaUI4SUhadmFXUStJRDBnVzEwN1hHNWNiaUFnSUNCd2RXSnNhV01nYkdsemRHVnVLR3hwYzNSbGJtVnlPaUFvTGk0dVlYSm5jem9nVUNrZ1BUNGdZVzU1S1RvZ1ZXNXNhWE4wWlc0Z2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG14cGMzUmxibVZ5Y3k1d2RYTm9LR3hwYzNSbGJtVnlLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXViR2x6ZEdWdVpYSnpMbk53YkdsalpTaDBhR2x6TG14cGMzUmxibVZ5Y3k1cGJtUmxlRTltS0d4cGMzUmxibVZ5S1N3Z01TazdYRzRnSUNBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjSFZpYkdsaklHRnplVzVqSUdWdGFYUW9MaTR1WVhKbmN6b2dVQ2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUd4cGMzUmxibVZ5SUc5bUlGc3VMaTUwYUdsekxteHBjM1JsYm1WeWMxMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHRjNZV2wwSUd4cGMzUmxibVZ5S0M0dUxtRnlaM01wTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dWZWeHVJZ29nSUYwc0NpQWdJbTFoY0hCcGJtZHpJam9nSWpzN1FVRkZUeXhOUVVGTkxHRkJRVzFETzBGQlFVRXNSVUZETTBJc1dVRkJlVVFzUTBGQlF6dEJRVUZCTEVWQlJYQkZMRTFCUVUwc1EwRkJReXhWUVVGNVF6dEJRVUZCTEVsQlEyNUVMRXRCUVVzc1ZVRkJWU3hMUVVGTExGRkJRVkU3UVVGQlFTeEpRVU0xUWl4UFFVRlBMRTFCUVUwN1FVRkJRU3hOUVVOVUxFdEJRVXNzVlVGQlZTeFBRVUZQTEV0QlFVc3NWVUZCVlN4UlFVRlJMRkZCUVZFc1IwRkJSeXhEUVVGRE8wRkJRVUU3UVVGQlFUdEJRVUZCTEU5QlNYQkVMRXRCUVVrc1NVRkJTU3hOUVVGM1FqdEJRVUZCTEVsQlEzcERMRmRCUVZjc1dVRkJXU3hEUVVGRExFZEJRVWNzUzBGQlN5eFRRVUZUTEVkQlFVYzdRVUZCUVN4TlFVTjRReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTzBGQlFVRXNTVUZETVVJN1FVRkJRVHRCUVVWU095SXNDaUFnSW1SbFluVm5TV1FpT2lBaU4wWTFOVFV3T0RoRk5EVXdPVUZHTkRZME56VTJSVEl4TmpRM05UWkZNakVpTEFvZ0lDSnVZVzFsY3lJNklGdGRDbjA9XG4iLAogICAgImltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tICdAb211anMvb211L2FwaS90YWJsZSc7XG5pbXBvcnQgdHlwZSB7IFVubGlzdGVuIH0gZnJvbSAnQG9tdWpzL29tdS9ldmVudCc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAb211anMvb211L2V2ZW50JztcblxuaW1wb3J0IHR5cGUgeyBDaGF0IH0gZnJvbSAnLi4vY2hhdC5qcyc7XG5cbmV4cG9ydCB0eXBlIEV2ZW50SGFuZGxlcjxQIGV4dGVuZHMgQXJyYXk8YW55Pj4gPSAoLi4uYXJnczogUCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTb3VyY2U8UCBleHRlbmRzIEFycmF5PGFueT4+IHtcbiAgICBzdWJzY3JpYmUoaGFuZGxlcjogRXZlbnRIYW5kbGVyPFA+LCBjaGF0OiBDaGF0KTogVW5saXN0ZW47XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0ZW5lckV2ZW50PFAgZXh0ZW5kcyBBcnJheTxhbnk+PiBpbXBsZW1lbnRzIEV2ZW50U291cmNlPFA+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGdldExpc3RlbmVyOiAoY2hhdDogQ2hhdCkgPT4gRXZlbnRFbWl0dGVyPFA+KSB7fVxuXG4gICAgcHVibGljIHN1YnNjcmliZShoYW5kbGVyOiBFdmVudEhhbmRsZXI8UD4sIGNoYXQ6IENoYXQpOiBVbmxpc3RlbiB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5nZXRMaXN0ZW5lcihjaGF0KTtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyLmxpc3RlbihoYW5kbGVyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUV2ZW50PFQ+IGV4dGVuZHMgTGlzdGVuZXJFdmVudDxbTWFwPHN0cmluZywgVD5dPiB7XG4gICAgcHVibGljIHJlYWRvbmx5IEFkZEJhdGNoOiBMaXN0ZW5lckV2ZW50PFtNYXA8c3RyaW5nLCBUPl0+O1xuICAgIHB1YmxpYyByZWFkb25seSBVcGRhdGVCYXRjaDogTGlzdGVuZXJFdmVudDxbTWFwPHN0cmluZywgVD5dPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgUmVtb3ZlQmF0Y2g6IExpc3RlbmVyRXZlbnQ8W01hcDxzdHJpbmcsIFQ+XT47XG4gICAgcHVibGljIHJlYWRvbmx5IEFkZDogRXZlbnRTb3VyY2U8W1RdPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgVXBkYXRlOiBFdmVudFNvdXJjZTxbVF0+O1xuICAgIHB1YmxpYyByZWFkb25seSBSZW1vdmU6IEV2ZW50U291cmNlPFtUXT47XG4gICAgcHVibGljIHJlYWRvbmx5IENsZWFyOiBFdmVudFNvdXJjZTxbXT47XG4gICAgcHVibGljIHJlYWRvbmx5IHdyYXBwZXJzOiBSZWNvcmQ8c3RyaW5nLCBVbmxpc3Rlbj47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGdldFRhYmxlOiAoY2hhdDogQ2hhdCkgPT4gVGFibGU8VD4pIHtcbiAgICAgICAgc3VwZXIoKGNoYXQpID0+IGdldFRhYmxlKGNoYXQpLmV2ZW50LmNhY2hlVXBkYXRlKTtcbiAgICAgICAgdGhpcy5BZGRCYXRjaCA9IG5ldyBMaXN0ZW5lckV2ZW50KChjaGF0KSA9PiBnZXRUYWJsZShjaGF0KS5ldmVudC5hZGQpO1xuICAgICAgICB0aGlzLlVwZGF0ZUJhdGNoID0gbmV3IExpc3RlbmVyRXZlbnQoKGNoYXQpID0+IGdldFRhYmxlKGNoYXQpLmV2ZW50LnVwZGF0ZSk7XG4gICAgICAgIHRoaXMuUmVtb3ZlQmF0Y2ggPSBuZXcgTGlzdGVuZXJFdmVudCgoY2hhdCkgPT4gZ2V0VGFibGUoY2hhdCkuZXZlbnQucmVtb3ZlKTtcbiAgICAgICAgdGhpcy5BZGQgPSB0aGlzLmNyZWF0ZUJhdGNoU3Vic2NyaWJlcigodGFibGUpID0+IHRhYmxlLmV2ZW50LmFkZCk7XG4gICAgICAgIHRoaXMuVXBkYXRlID0gdGhpcy5jcmVhdGVCYXRjaFN1YnNjcmliZXIoKHRhYmxlKSA9PiB0YWJsZS5ldmVudC51cGRhdGUpO1xuICAgICAgICB0aGlzLlJlbW92ZSA9IHRoaXMuY3JlYXRlQmF0Y2hTdWJzY3JpYmVyKCh0YWJsZSkgPT4gdGFibGUuZXZlbnQucmVtb3ZlKTtcbiAgICAgICAgdGhpcy5DbGVhciA9IG5ldyBMaXN0ZW5lckV2ZW50KChjbGllbnQpID0+IGdldFRhYmxlKGNsaWVudCkuZXZlbnQuY2xlYXIpO1xuICAgICAgICB0aGlzLndyYXBwZXJzID0ge307XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQmF0Y2hXcmFwcGVyPFQ+KGVtaXQ6IEV2ZW50SGFuZGxlcjxbVF0+KTogRXZlbnRIYW5kbGVyPFtNYXA8c3RyaW5nLCBUPl0+IHtcbiAgICAgICAgcmV0dXJuIGFzeW5jIChpdGVtcykgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zLnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZW1pdChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJhdGNoU3Vic2NyaWJlcihcbiAgICAgICAgZ2V0TGlzdGVuZXI6ICh0YWJsZTogVGFibGU8VD4pID0+IEV2ZW50RW1pdHRlcjxbTWFwPHN0cmluZywgVD5dPixcbiAgICApOiBFdmVudFNvdXJjZTxbVF0+IHtcbiAgICAgICAgbGV0IGJhdGNoV3JhcHBlcjogRXZlbnRIYW5kbGVyPFtNYXA8c3RyaW5nLCBUPl0+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlID0gKGVtaXQ6IEV2ZW50SGFuZGxlcjxbVF0+LCBjaGF0OiBDaGF0KTogVW5saXN0ZW4gPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFibGUgPSB0aGlzLmdldFRhYmxlKGNoYXQpO1xuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSBnZXRMaXN0ZW5lcih0YWJsZSk7XG4gICAgICAgICAgICBiYXRjaFdyYXBwZXIgPSBUYWJsZUV2ZW50LmNyZWF0ZUJhdGNoV3JhcHBlcigoaXRlbSkgPT4gZW1pdChpdGVtKSk7XG4gICAgICAgICAgICBjb25zdCBzdG9wTGlzdGVuID0gdGFibGUubGlzdGVuKCk7XG4gICAgICAgICAgICBjb25zdCBjbGVhckV2ZW50ID0gbGlzdGVuZXIubGlzdGVuKGJhdGNoV3JhcHBlcik7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3BMaXN0ZW4oKTtcbiAgICAgICAgICAgICAgICBjbGVhckV2ZW50KCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWJzY3JpYmUsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG50eXBlIEVudHJ5PFAgZXh0ZW5kcyBBcnJheTxhbnk+PiA9IHtcbiAgICBzb3VyY2U6IEV2ZW50U291cmNlPFA+O1xuICAgIGxpc3RlbmVyczogRXZlbnRFbWl0dGVyPFA+O1xufTtcblxuZXhwb3J0IGNsYXNzIEV2ZW50UmVnaXN0cnkge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhdDogQ2hhdDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50czogTWFwPEV2ZW50U291cmNlPGFueT4sIEVudHJ5PGFueT4+O1xuXG4gICAgY29uc3RydWN0b3IoY2hhdDogQ2hhdCkge1xuICAgICAgICB0aGlzLmNoYXQgPSBjaGF0O1xuICAgICAgICB0aGlzLmV2ZW50cyA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXI8UCBleHRlbmRzIEFycmF5PGFueT4+KGV2ZW50OiBFdmVudFNvdXJjZTxQPiwgaGFuZGxlcjogRXZlbnRIYW5kbGVyPFA+KTogdm9pZCB7XG4gICAgICAgIGxldCBlbnRyeSA9IHRoaXMuZXZlbnRzLmdldChldmVudCkgYXMgRW50cnk8UD4gfCBudWxsO1xuICAgICAgICBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdFbnRyeTogRW50cnk8UD4gPSB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBldmVudCxcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcnM6IG5ldyBFdmVudEVtaXR0ZXIoKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbnRyeSA9IG5ld0VudHJ5O1xuICAgICAgICAgICAgdGhpcy5ldmVudHMuc2V0KGV2ZW50LCBuZXdFbnRyeSk7XG4gICAgICAgICAgICBldmVudC5zdWJzY3JpYmUoKC4uLmFyZ3MpID0+IG5ld0VudHJ5Lmxpc3RlbmVycy5lbWl0KC4uLmFyZ3MpLCB0aGlzLmNoYXQpO1xuICAgICAgICB9XG4gICAgICAgIGVudHJ5Lmxpc3RlbmVycy5saXN0ZW4oKC4uLmFyZ3MpID0+IGhhbmRsZXIoLi4uYXJncykpO1xuICAgIH1cbn1cbiIsCiAgICAiaW1wb3J0IHsgQXV0aG9yIH0gZnJvbSAnLi4vbW9kZWxzL2F1dGhvci5qcyc7XG5pbXBvcnQgeyBDaGFubmVsIH0gZnJvbSAnLi4vbW9kZWxzL2NoYW5uZWwuanMnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4uL21vZGVscy9tZXNzYWdlLmpzJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnLi4vbW9kZWxzL3Byb3ZpZGVyLmpzJztcbmltcG9ydCB7IFJvb20gfSBmcm9tICcuLi9tb2RlbHMvcm9vbS5qcyc7XG5pbXBvcnQgeyBWb3RlIH0gZnJvbSAnLi4vbW9kZWxzL3ZvdGUuanMnO1xuaW1wb3J0IHsgVGFibGVFdmVudCB9IGZyb20gJy4vZXZlbnQuanMnO1xuXG5leHBvcnQgY29uc3QgZXZlbnRzOiB7IE1lc3NhZ2U6IFRhYmxlRXZlbnQ8TWVzc2FnZT47IEF1dGhvcjogVGFibGVFdmVudDxBdXRob3I+OyBDaGFubmVsOiBUYWJsZUV2ZW50PENoYW5uZWw+OyBQcm92aWRlcjogVGFibGVFdmVudDxQcm92aWRlcj47IFJvb206IFRhYmxlRXZlbnQ8Um9vbT47IFZvdGU6IFRhYmxlRXZlbnQ8Vm90ZT4gfSA9IHtcbiAgICBNZXNzYWdlOiBuZXcgVGFibGVFdmVudCgoY2hhdCkgPT4gY2hhdC5tZXNzYWdlcyksXG4gICAgQXV0aG9yOiBuZXcgVGFibGVFdmVudCgoY2hhdCkgPT4gY2hhdC5hdXRob3JzKSxcbiAgICBDaGFubmVsOiBuZXcgVGFibGVFdmVudCgoY2hhdCkgPT4gY2hhdC5jaGFubmVscyksXG4gICAgUHJvdmlkZXI6IG5ldyBUYWJsZUV2ZW50KChjaGF0KSA9PiBjaGF0LnByb3ZpZGVycyksXG4gICAgUm9vbTogbmV3IFRhYmxlRXZlbnQoKGNoYXQpID0+IGNoYXQucm9vbXMpLFxuICAgIFZvdGU6IG5ldyBUYWJsZUV2ZW50KChjaGF0KSA9PiBjaGF0LnZvdGVzKSxcbn07XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOztBQUVBLE1BQU0sYUFBYTtBQUFBLEVBQ2pCLFlBQVksQ0FBQztBQUFBLEVBQ2IsTUFBTSxDQUFDLFVBQVU7QUFBQSxJQUNmLEtBQUssVUFBVSxLQUFLLFFBQVE7QUFBQSxJQUM1QixPQUFPLE1BQU07QUFBQSxNQUNYLEtBQUssVUFBVSxPQUFPLEtBQUssVUFBVSxRQUFRLFFBQVEsR0FBRyxDQUFDO0FBQUE7QUFBQTtBQUFBLE9BR3ZELEtBQUksSUFBSSxNQUFNO0FBQUEsSUFDbEIsV0FBVyxZQUFZLENBQUMsR0FBRyxLQUFLLFNBQVMsR0FBRztBQUFBLE1BQzFDLE1BQU0sU0FBUyxHQUFHLElBQUk7QUFBQSxJQUN4QjtBQUFBO0FBRUo7OztBQ0hPLE1BQU0sY0FBOEQ7QUFBQSxFQUMxQztBQUFBLEVBQTdCLFdBQVcsQ0FBa0IsYUFBOEM7QUFBQSxJQUE5QztBQUFBO0FBQUEsRUFFdEIsU0FBUyxDQUFDLFNBQTBCLE1BQXNCO0FBQUEsSUFDN0QsTUFBTSxXQUFXLEtBQUssWUFBWSxJQUFJO0FBQUEsSUFDdEMsT0FBTyxTQUFTLE9BQU8sT0FBTztBQUFBO0FBRXRDO0FBQUE7QUFFTyxNQUFNLG1CQUFzQixjQUFnQztBQUFBLEVBVWxDO0FBQUEsRUFUYjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUVoQixXQUFXLENBQWtCLFVBQW9DO0FBQUEsSUFDN0QsTUFBTSxDQUFDLFNBQVMsU0FBUyxJQUFJLEVBQUUsTUFBTSxXQUFXO0FBQUEsSUFEdkI7QUFBQSxJQUV6QixLQUFLLFdBQVcsSUFBSSxjQUFjLENBQUMsU0FBUyxTQUFTLElBQUksRUFBRSxNQUFNLEdBQUc7QUFBQSxJQUNwRSxLQUFLLGNBQWMsSUFBSSxjQUFjLENBQUMsU0FBUyxTQUFTLElBQUksRUFBRSxNQUFNLE1BQU07QUFBQSxJQUMxRSxLQUFLLGNBQWMsSUFBSSxjQUFjLENBQUMsU0FBUyxTQUFTLElBQUksRUFBRSxNQUFNLE1BQU07QUFBQSxJQUMxRSxLQUFLLE1BQU0sS0FBSyxzQkFBc0IsQ0FBQyxVQUFVLE1BQU0sTUFBTSxHQUFHO0FBQUEsSUFDaEUsS0FBSyxTQUFTLEtBQUssc0JBQXNCLENBQUMsVUFBVSxNQUFNLE1BQU0sTUFBTTtBQUFBLElBQ3RFLEtBQUssU0FBUyxLQUFLLHNCQUFzQixDQUFDLFVBQVUsTUFBTSxNQUFNLE1BQU07QUFBQSxJQUN0RSxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUMsV0FBVyxTQUFTLE1BQU0sRUFBRSxNQUFNLEtBQUs7QUFBQSxJQUN2RSxLQUFLLFdBQVcsQ0FBQztBQUFBO0FBQUEsU0FHTixrQkFBcUIsQ0FBQyxNQUF5RDtBQUFBLElBQzFGLE9BQU8sT0FBTyxVQUFVO0FBQUEsTUFDcEIsV0FBVyxRQUFRLE1BQU0sT0FBTyxHQUFHO0FBQUEsUUFDL0IsTUFBTSxLQUFLLElBQUk7QUFBQSxNQUNuQjtBQUFBO0FBQUE7QUFBQSxFQUlBLHFCQUFxQixDQUN6QixhQUNnQjtBQUFBLElBQ2hCLElBQUksZUFBc0Q7QUFBQSxJQUUxRCxNQUFNLFlBQVksQ0FBQyxNQUF5QixTQUF5QjtBQUFBLE1BQ2pFLE1BQU0sUUFBUSxLQUFLLFNBQVMsSUFBSTtBQUFBLE1BQ2hDLE1BQU0sV0FBVyxZQUFZLEtBQUs7QUFBQSxNQUNsQyxlQUFlLFdBQVcsbUJBQW1CLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztBQUFBLE1BQ2pFLE1BQU0sYUFBYSxNQUFNLE9BQU87QUFBQSxNQUNoQyxNQUFNLGFBQWEsU0FBUyxPQUFPLFlBQVk7QUFBQSxNQUMvQyxPQUFPLE1BQU07QUFBQSxRQUNULFdBQVc7QUFBQSxRQUNYLFdBQVc7QUFBQTtBQUFBO0FBQUEsSUFJbkIsT0FBTztBQUFBLE1BQ0g7QUFBQSxJQUNKO0FBQUE7QUFFUjtBQUFBO0FBT08sTUFBTSxjQUFjO0FBQUEsRUFDTjtBQUFBLEVBQ0E7QUFBQSxFQUVqQixXQUFXLENBQUMsTUFBWTtBQUFBLElBQ3BCLEtBQUssT0FBTztBQUFBLElBQ1osS0FBSyxTQUFTLElBQUk7QUFBQTtBQUFBLEVBR2YsUUFBOEIsQ0FBQyxPQUF1QixTQUFnQztBQUFBLElBQ3pGLElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxLQUFLO0FBQUEsSUFDakMsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNSLE1BQU0sV0FBcUI7QUFBQSxRQUN2QixRQUFRO0FBQUEsUUFDUixXQUFXLElBQUk7QUFBQSxNQUNuQjtBQUFBLE1BQ0EsUUFBUTtBQUFBLE1BQ1IsS0FBSyxPQUFPLElBQUksT0FBTyxRQUFRO0FBQUEsTUFDL0IsTUFBTSxVQUFVLElBQUksU0FBUyxTQUFTLFVBQVUsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLElBQUk7QUFBQSxJQUM1RTtBQUFBLElBQ0EsTUFBTSxVQUFVLE9BQU8sSUFBSSxTQUFTLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFBQTtBQUU1RDs7O0FDN0ZPLElBQU0sU0FBcUw7QUFBQSxFQUM5TCxTQUFTLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxRQUFRO0FBQUEsRUFDL0MsUUFBUSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssT0FBTztBQUFBLEVBQzdDLFNBQVMsSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLFFBQVE7QUFBQSxFQUMvQyxVQUFVLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxTQUFTO0FBQUEsRUFDakQsTUFBTSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssS0FBSztBQUFBLEVBQ3pDLE1BQU0sSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLEtBQUs7QUFDN0M7IiwKICAiZGVidWdJZCI6ICJGMkIzQjQ0MzE2NUYxQ0E3NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==