@omujs/chat 0.2.0 → 0.3.4

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 (64) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/built/dts/chat.d.ts +7 -1
  3. package/built/dts/chat.d.ts.map +1 -1
  4. package/built/dts/event/event-types.d.ts +10 -0
  5. package/built/dts/event/event-types.d.ts.map +1 -0
  6. package/built/dts/event/event.d.ts +32 -24
  7. package/built/dts/event/event.d.ts.map +1 -1
  8. package/built/dts/event/index.d.ts +2 -2
  9. package/built/dts/event/index.d.ts.map +1 -1
  10. package/built/dts/index.d.ts +1 -0
  11. package/built/dts/index.d.ts.map +1 -1
  12. package/built/dts/models/content.d.ts +9 -0
  13. package/built/dts/models/content.d.ts.map +1 -1
  14. package/built/dts/models/index.d.ts +2 -0
  15. package/built/dts/models/index.d.ts.map +1 -1
  16. package/built/dts/models/reaction.d.ts +23 -0
  17. package/built/dts/models/reaction.d.ts.map +1 -0
  18. package/built/dts/models/room.d.ts +5 -3
  19. package/built/dts/models/room.d.ts.map +1 -1
  20. package/built/dts/models/vote.d.ts +36 -0
  21. package/built/dts/models/vote.d.ts.map +1 -0
  22. package/built/dts/permissions.d.ts +1 -0
  23. package/built/dts/permissions.d.ts.map +1 -1
  24. package/built/esm/chat.js +26 -1
  25. package/built/esm/chat.js.map +1 -1
  26. package/built/esm/event/event-types.js +10 -0
  27. package/built/esm/event/event-types.js.map +1 -0
  28. package/built/esm/event/event.js +68 -34
  29. package/built/esm/event/event.js.map +1 -1
  30. package/built/esm/event/index.js +2 -2
  31. package/built/esm/event/index.js.map +1 -1
  32. package/built/esm/index.js +1 -0
  33. package/built/esm/index.js.map +1 -1
  34. package/built/esm/models/content.js +19 -5
  35. package/built/esm/models/content.js.map +1 -1
  36. package/built/esm/models/index.js +2 -0
  37. package/built/esm/models/index.js.map +1 -1
  38. package/built/esm/models/reaction.js +22 -0
  39. package/built/esm/models/reaction.js.map +1 -0
  40. package/built/esm/models/room.js.map +1 -1
  41. package/built/esm/models/vote.js +41 -0
  42. package/built/esm/models/vote.js.map +1 -0
  43. package/built/esm/permissions.js +1 -0
  44. package/built/esm/permissions.js.map +1 -1
  45. package/package.json +50 -51
  46. package/src/chat.ts +35 -7
  47. package/src/event/event-types.ts +10 -0
  48. package/src/event/event.ts +96 -0
  49. package/src/event/index.ts +2 -0
  50. package/src/index.ts +1 -0
  51. package/src/models/content.ts +27 -8
  52. package/src/models/index.ts +2 -1
  53. package/src/models/reaction.ts +40 -0
  54. package/src/models/room.ts +5 -3
  55. package/src/models/vote.ts +69 -0
  56. package/src/permissions.ts +1 -0
  57. package/built/dts/client.d.ts +0 -24
  58. package/built/dts/client.d.ts.map +0 -1
  59. package/built/dts/event/event-registry.d.ts +0 -12
  60. package/built/dts/event/event-registry.d.ts.map +0 -1
  61. package/built/esm/client.js +0 -44
  62. package/built/esm/client.js.map +0 -1
  63. package/built/esm/event/event-registry.js +0 -35
  64. package/built/esm/event/event-registry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/event/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/event/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAe,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { Chat } from './chat.js';
2
2
  export * as models from './models/index.js';
3
3
  export * as permissions from './permissions.js';
4
+ export { events } from './event/index.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { Identifier } from '@omujs/omu';
1
2
  export class Component {
2
3
  type;
3
4
  constructor(type) {
@@ -121,6 +122,18 @@ export class Image extends Component {
121
122
  return new Image(url, id, name);
122
123
  }
123
124
  }
125
+ export class Asset extends Component {
126
+ id;
127
+ constructor(id) {
128
+ super('asset');
129
+ this.id = id;
130
+ }
131
+ toJson() {
132
+ return {
133
+ id: this.id.key(),
134
+ };
135
+ }
136
+ }
124
137
  export class Link extends Component {
125
138
  url;
126
139
  children;
@@ -146,9 +159,10 @@ export class System extends Component {
146
159
  return this.children.map(serialize);
147
160
  }
148
161
  }
149
- register('root', (json) => new Root(json.map(deserialize)));
150
- register('text', (json) => new Text(json));
151
- register('image', (json) => new Image(json.url, json.id, json.name));
152
- register('link', (json) => new Link(json.url, json.children.map(deserialize)));
153
- register('system', (json) => new System(json.map(deserialize)));
162
+ register('root', (data) => new Root(data.map(deserialize)));
163
+ register('text', (data) => new Text(data));
164
+ register('image', (data) => new Image(data.url, data.id, data.name));
165
+ register('asset', (data) => new Asset(Identifier.fromKey(data.id)));
166
+ register('link', (data) => new Link(data.url, data.children.map(deserialize)));
167
+ register('system', (data) => new System(data.map(deserialize)));
154
168
  //# sourceMappingURL=content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/models/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/models/content.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,9 @@ export * as content from './content.js';
4
4
  export { Gift } from './gift.js';
5
5
  export { Message } from './message.js';
6
6
  export { Paid } from './paid.js';
7
+ export { Reaction } from './reaction.js';
7
8
  export { Provider } from './provider.js';
8
9
  export { Role } from './role.js';
9
10
  export { Room } from './room.js';
11
+ export { Vote } from './vote.js';
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAU,MAAM,WAAW,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ export class Reaction {
3
+ roomId;
4
+ reactions;
5
+ constructor(options) {
6
+ this.roomId = options.roomId;
7
+ this.reactions = options.reactions;
8
+ }
9
+ static fromJson(data) {
10
+ return new Reaction({
11
+ roomId: Identifier.fromKey(data.room_id),
12
+ reactions: data.reactions,
13
+ });
14
+ }
15
+ toJson() {
16
+ return {
17
+ room_id: this.roomId.key(),
18
+ reactions: this.reactions,
19
+ };
20
+ }
21
+ }
22
+ //# sourceMappingURL=reaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reaction.js","sourceRoot":"","sources":["../../../src/models/reaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUxC,MAAM,OAAO,QAAQ;IACV,MAAM,CAAa;IACnB,SAAS,CAEd;IAEF,YAAY,OAKX;QACG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAkB;QAC9B,OAAO,IAAI,QAAQ,CAAC;YAChB,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;IACN,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"room.js","sourceRoot":"","sources":["../../../src/models/room.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AA2BtD,MAAM,OAAO,IAAI;IACN,EAAE,CAAa;IACf,UAAU,CAAa;IACvB,SAAS,CAAU;IACnB,MAAM,CAAS;IACf,QAAQ,CAAgB;IACxB,SAAS,CAAU;IACnB,SAAS,CAAO;IAEvB,YAAY,OAQX;QACG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAiB;QAC7B,OAAO,IAAI,IAAI,CAAC;YACZ,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SAC1C,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACjB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;SAC3C,CAAC;IACN,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;CACJ"}
1
+ {"version":3,"file":"room.js","sourceRoot":"","sources":["../../../src/models/room.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AA6BtD,MAAM,OAAO,IAAI;IACN,EAAE,CAAa;IACf,UAAU,CAAa;IACvB,SAAS,CAAU;IACnB,MAAM,CAAS;IACf,QAAQ,CAAe;IACvB,SAAS,CAAU;IACnB,SAAS,CAAO;IAEvB,YAAY,OAQX;QACG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAiB;QAC7B,OAAO,IAAI,IAAI,CAAC;YACZ,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SAC1C,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACjB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;SAC3C,CAAC;IACN,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;CACJ"}
@@ -0,0 +1,41 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ export class Vote {
3
+ id;
4
+ roomId;
5
+ title;
6
+ choices;
7
+ ended;
8
+ total;
9
+ constructor(options) {
10
+ this.id = options.id;
11
+ this.roomId = options.roomId;
12
+ this.title = options.title;
13
+ this.choices = options.choices;
14
+ this.ended = options.ended;
15
+ this.total = options.total;
16
+ }
17
+ static fromJson(options) {
18
+ return new Vote({
19
+ id: Identifier.fromKey(options.id),
20
+ roomId: Identifier.fromKey(options.room_id),
21
+ title: options.title,
22
+ choices: options.choices,
23
+ ended: options.ended,
24
+ total: options.total,
25
+ });
26
+ }
27
+ toJson() {
28
+ return {
29
+ id: this.id.key(),
30
+ room_id: this.roomId.key(),
31
+ title: this.title,
32
+ choices: this.choices,
33
+ ended: this.ended,
34
+ total: this.total,
35
+ };
36
+ }
37
+ key() {
38
+ return this.id.key();
39
+ }
40
+ }
41
+ //# sourceMappingURL=vote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote.js","sourceRoot":"","sources":["../../../src/models/vote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmBxC,MAAM,OAAO,IAAI;IACG,EAAE,CAAa;IACf,MAAM,CAAa;IAC5B,KAAK,CAAS;IACd,OAAO,CAAW;IAClB,KAAK,CAAU;IACf,KAAK,CAAgB;IAE5B,YAAY,OAOX;QACG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAiB;QACpC,OAAO,IAAI,IAAI,CAAC;YACZ,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC,CAAC;IACP,CAAC;IAEM,MAAM;QACT,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACjB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC;IACN,CAAC;IAEM,GAAG;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;CACJ"}
@@ -4,4 +4,5 @@ export const CHAT_READ_PERMISSION_ID = IDENTIFIER.join('chat', 'read');
4
4
  export const CHAT_WRITE_PERMISSION_ID = IDENTIFIER.join('chat', 'write');
5
5
  export const CHAT_SEND_PERMISSION_ID = IDENTIFIER.join('chat', 'send');
6
6
  export const CHAT_CHANNEL_TREE_PERMISSION_ID = IDENTIFIER.join('create_channel_tree');
7
+ export const CHAT_REACTION_PERMISSION_ID = CHAT_PERMISSION_ID.join('reaction');
7
8
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,53 +1,52 @@
1
1
  {
2
- "type": "module",
3
- "name": "@omujs/chat",
4
- "version": "0.2.0",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/OMUAPPS/omuapps"
2
+ "type": "module",
3
+ "name": "@omujs/chat",
4
+ "version": "0.3.4",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/OMUAPPS/omuapps"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "import": "./built/esm/index.js",
12
+ "types": "./built/dts/index.d.ts"
8
13
  },
9
- "exports": {
10
- ".": {
11
- "import": "./built/esm/index.js",
12
- "types": "./built/dts/index.d.ts"
13
- },
14
- "./*": {
15
- "import": "./built/esm/*",
16
- "types": "./built/dts/*"
17
- }
18
- },
19
- "scripts": {
20
- "ts": "pnpm run ts-esm && pnpm run ts-dts",
21
- "ts-esm": "tsc --outDir built/esm",
22
- "ts-dts": "tsc --outDir built/dts --declaration true --emitDeclarationOnly true --declarationMap true",
23
- "watch": "nodemon -w src -e ts,json --exec \"pnpm run ts\"",
24
- "dev": "pnpm run watch",
25
- "build": "pnpm run ts",
26
- "lint": "eslint . --ext .js,.ts",
27
- "format": "eslint . --ext .js,.ts --fix"
28
- },
29
- "devDependencies": {
30
- "@omujs/omu": "workspace:*",
31
- "@types/node": "^20.12.12",
32
- "@types/websocket": "1.0.10",
33
- "@types/ws": "8.5.10",
34
- "@typescript-eslint/eslint-plugin": "^7.9.0",
35
- "@typescript-eslint/parser": "^7.9.0",
36
- "axios": "^1.6.8",
37
- "eslint": "^8.57.0",
38
- "eslint-config-prettier": "^9.1.0",
39
- "eslint-plugin-import": "^2.29.1",
40
- "eslint-plugin-prettier": "^5.1.3",
41
- "eslint-plugin-svelte": "^2.39.0",
42
- "eslint-plugin-unused-imports": "^3.2.0",
43
- "nodemon": "^3.1.0",
44
- "ts-node": "10.9.2",
45
- "typescript": "^5.4.5",
46
- "websocket": "1.0.34",
47
- "ws": "8.16.0"
48
- },
49
- "dependencies": {
50
- "@omujs/omu": "0.2.0"
51
- },
52
- "gitHead": "84fd2650daebec4c87b69cc4b604069d695be4a3"
53
- }
14
+ "./*": {
15
+ "import": "./built/esm/*",
16
+ "types": "./built/dts/*"
17
+ }
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.13.0",
21
+ "@types/websocket": "1.0.10",
22
+ "@types/ws": "8.5.10",
23
+ "@typescript-eslint/eslint-plugin": "^7.11.0",
24
+ "@typescript-eslint/parser": "^7.11.0",
25
+ "eslint": "^8.57.0",
26
+ "eslint-config-prettier": "^9.1.0",
27
+ "eslint-plugin-import": "^2.29.1",
28
+ "eslint-plugin-prettier": "^5.1.3",
29
+ "eslint-plugin-svelte": "^2.39.0",
30
+ "eslint-plugin-unused-imports": "^3.2.0",
31
+ "nodemon": "^3.1.2",
32
+ "ts-node": "10.9.2",
33
+ "typescript": "^5.4.5",
34
+ "websocket": "1.0.35",
35
+ "ws": "8.17.0",
36
+ "@omujs/omu": "0.3.4"
37
+ },
38
+ "dependencies": {
39
+ "@omujs/omu": "0.3.4"
40
+ },
41
+ "gitHead": "04559d5aec52117d707e0d554ee429b858da522a",
42
+ "scripts": {
43
+ "ts": "pnpm run ts-esm && pnpm run ts-dts",
44
+ "ts-esm": "tsc --outDir built/esm",
45
+ "ts-dts": "tsc --outDir built/dts --declaration true --emitDeclarationOnly true --declarationMap true",
46
+ "watch": "nodemon -w src -e ts,json --exec \"pnpm run ts\"",
47
+ "dev": "pnpm run watch",
48
+ "build": "pnpm run ts",
49
+ "lint": "eslint . --ext .js,.ts",
50
+ "format": "eslint . --ext .js,.ts --fix"
51
+ }
52
+ }
package/src/chat.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  import type { Client } from '@omujs/omu/client.js';
2
2
  import { EndpointType } from '@omujs/omu/extension/endpoint/endpoint.js';
3
+ import type { Signal } from '@omujs/omu/extension/signal/signal.js';
4
+ import { SignalPermissions, SignalType } from '@omujs/omu/extension/signal/signal.js';
3
5
  import type { Table } from '@omujs/omu/extension/table/index.js';
4
6
  import { TableType } from '@omujs/omu/extension/table/index.js';
5
7
  import { Serializer } from '@omujs/omu/serializer.js';
6
8
 
7
9
  import { IDENTIFIER } from './const.js';
8
- import { Author, Channel, Message, Provider, Room } from './models/index.js';
10
+ import type { EventHandler, EventSource } from './event/event.js';
11
+ import { EventRegistry } from './event/event.js';
12
+ import { Author, Channel, Message, Provider, Reaction, Room, Vote } from './models/index.js';
9
13
  import {
10
14
  CHAT_CHANNEL_TREE_PERMISSION_ID,
11
15
  CHAT_PERMISSION_ID,
@@ -58,33 +62,57 @@ const ROOM_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
58
62
  write: CHAT_WRITE_PERMISSION_ID,
59
63
  },
60
64
  });
65
+ const VOTE_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
66
+ name: 'votes',
67
+ model: Vote,
68
+ permissions: {
69
+ all: CHAT_PERMISSION_ID,
70
+ read: CHAT_READ_PERMISSION_ID,
71
+ write: CHAT_WRITE_PERMISSION_ID,
72
+ },
73
+ });
61
74
  const CREATE_CHANNEL_TREE_ENDPOINT = EndpointType.createJson(IDENTIFIER, {
62
75
  name: 'create_channel_tree',
63
76
  requestSerializer: Serializer.noop<string>(),
64
77
  responseSerializer: Serializer.model(Channel).toArray(),
65
78
  permissionId: CHAT_CHANNEL_TREE_PERMISSION_ID,
66
79
  });
80
+ const REACTION_SIGNAL = SignalType.createJson(IDENTIFIER, {
81
+ name: 'reaction',
82
+ serializer: Serializer.model(Reaction),
83
+ permissions: new SignalPermissions(CHAT_PERMISSION_ID),
84
+ });
67
85
 
68
86
  export class Chat {
69
- readonly messages: Table<Message>;
70
- readonly authors: Table<Author>;
71
- readonly channels: Table<Channel>;
72
- readonly providers: Table<Provider>;
73
- readonly rooms: Table<Room>;
87
+ public readonly messages: Table<Message>;
88
+ public readonly authors: Table<Author>;
89
+ public readonly channels: Table<Channel>;
90
+ public readonly providers: Table<Provider>;
91
+ public readonly rooms: Table<Room>;
92
+ public readonly votes: Table<Vote>;
93
+ public readonly reactionSignal: Signal<Reaction>;
94
+ private readonly eventRegistry: EventRegistry;
74
95
 
75
96
  constructor(private readonly client: Client) {
76
97
  client.server.require(IDENTIFIER);
77
98
  client.permissions.require(CHAT_PERMISSION_ID);
99
+ this.eventRegistry = new EventRegistry(this);
78
100
  this.messages = client.tables.get(MESSAGE_TABLE_TYPE);
79
101
  this.authors = client.tables.get(AUTHOR_TABLE_TYPE);
80
102
  this.channels = client.tables.get(CHANNEL_TABLE_TYPE);
81
103
  this.providers = client.tables.get(PROVIDER_TABLE_TYPE);
82
104
  this.rooms = client.tables.get(ROOM_TABLE_TYPE);
105
+ this.votes = client.tables.get(VOTE_TABLE_TYPE);
106
+ this.reactionSignal = client.signal.get(REACTION_SIGNAL);
83
107
  this.messages.setCacheSize(1000);
84
108
  this.authors.setCacheSize(500);
85
109
  }
86
110
 
87
- async createChannelTree(url: string): Promise<Channel[]> {
111
+ public async createChannelTree(url: string): Promise<Channel[]> {
88
112
  return await this.client.endpoints.call(CREATE_CHANNEL_TREE_ENDPOINT, url);
89
113
  }
114
+
115
+ public on<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void {
116
+ this.eventRegistry.register(event, handler);
117
+ }
90
118
  }
@@ -0,0 +1,10 @@
1
+ import { TableEvent } from './event.js';
2
+
3
+ export const events = {
4
+ message: new TableEvent((chat) => chat.messages),
5
+ author: new TableEvent((chat) => chat.authors),
6
+ channel: new TableEvent((chat) => chat.channels),
7
+ provider: new TableEvent((chat) => chat.providers),
8
+ room: new TableEvent((chat) => chat.rooms),
9
+ vote: new TableEvent((chat) => chat.votes),
10
+ };
@@ -0,0 +1,96 @@
1
+ import type { Unlisten } from '@omujs/omu/event-emitter.js';
2
+ import { EventEmitter } from '@omujs/omu/event-emitter.js';
3
+ import type { Table } from '@omujs/omu/extension/table/table.js';
4
+
5
+ import type { Chat } from '../chat.js';
6
+
7
+ export type EventHandler<P extends Array<any>> = (...args: P) => Promise<void> | void;
8
+
9
+ export interface EventSource<P extends Array<any>> {
10
+ subscribe(handler: EventHandler<P>, chat: Chat): Unlisten;
11
+ }
12
+
13
+ export class ListenerEvent<P extends Array<any>> implements EventSource<P> {
14
+ constructor(private readonly getListener: (chat: Chat) => EventEmitter<P>) {}
15
+
16
+ public subscribe(handler: EventHandler<P>, chat: Chat): Unlisten {
17
+ const listener = this.getListener(chat);
18
+ return listener.listen(handler);
19
+ }
20
+ }
21
+
22
+ export class TableEvent<T> extends ListenerEvent<[Map<string, T>]> {
23
+ public readonly addBatch: ListenerEvent<[Map<string, T>]>;
24
+ public readonly updateBatch: ListenerEvent<[Map<string, T>]>;
25
+ public readonly removeBatch: ListenerEvent<[Map<string, T>]>;
26
+ public readonly add: EventSource<[T]>;
27
+ public readonly update: EventSource<[T]>;
28
+ public readonly remove: EventSource<[T]>;
29
+ public readonly clear: EventSource<[]>;
30
+ public readonly wrappers: Record<string, Unlisten>;
31
+
32
+ constructor(private readonly getTable: (chat: Chat) => Table<T>) {
33
+ super((chat) => getTable(chat).event.cacheUpdate);
34
+ this.addBatch = new ListenerEvent((chat) => getTable(chat).event.add);
35
+ this.updateBatch = new ListenerEvent((chat) => getTable(chat).event.update);
36
+ this.removeBatch = new ListenerEvent((chat) => getTable(chat).event.remove);
37
+ this.add = this.createBatchSubscriber((table) => table.event.add);
38
+ this.update = this.createBatchSubscriber((table) => table.event.update);
39
+ this.remove = this.createBatchSubscriber((table) => table.event.remove);
40
+ this.clear = new ListenerEvent((client) => getTable(client).event.clear);
41
+ this.wrappers = {};
42
+ }
43
+
44
+ private static createBatchWrapper<T>(emit: EventHandler<[T]>): EventHandler<[Map<string, T>]> {
45
+ return async (items) => {
46
+ for (const item of items.values()) {
47
+ await emit(item);
48
+ }
49
+ };
50
+ }
51
+
52
+ private createBatchSubscriber(
53
+ getListener: (table: Table<T>) => EventEmitter<[Map<string, T>]>,
54
+ ): EventSource<[T]> {
55
+ let batchWrapper: EventHandler<[Map<string, T>]> | null = null;
56
+
57
+ const subscribe = (emit: EventHandler<[T]>, chat: Chat): Unlisten => {
58
+ const listener = getListener(this.getTable(chat));
59
+ batchWrapper = TableEvent.createBatchWrapper((item) => emit(item));
60
+ return listener.listen(batchWrapper);
61
+ };
62
+
63
+ return {
64
+ subscribe,
65
+ };
66
+ }
67
+ }
68
+
69
+ type Entry<P extends Array<any>> = {
70
+ source: EventSource<P>;
71
+ listeners: EventEmitter<P>;
72
+ };
73
+
74
+ export class EventRegistry {
75
+ private readonly chat: Chat;
76
+ private readonly events: Map<EventSource<any>, Entry<any>>;
77
+
78
+ constructor(chat: Chat) {
79
+ this.chat = chat;
80
+ this.events = new Map();
81
+ }
82
+
83
+ public register<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void {
84
+ let entry = this.events.get(event) as Entry<P> | null;
85
+ if (!entry) {
86
+ const newEntry: Entry<P> = {
87
+ source: event,
88
+ listeners: new EventEmitter(),
89
+ };
90
+ entry = newEntry;
91
+ this.events.set(event, newEntry);
92
+ event.subscribe((...args) => newEntry.listeners.emit(...args), this.chat);
93
+ }
94
+ entry.listeners.listen((...args) => handler(...args));
95
+ }
96
+ }
@@ -0,0 +1,2 @@
1
+ export { EventHandler, EventRegistry, EventSource } from './event.js';
2
+ export { events } from './event-types.js';
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { Chat } from './chat.js';
2
2
  export * as models from './models/index.js';
3
3
  export * as permissions from './permissions.js';
4
+ export { events } from './event/index.js';
@@ -1,7 +1,9 @@
1
+ import { Identifier } from '@omujs/omu';
2
+
1
3
  type Primitive =
2
4
  | {
3
- [key: string]: Primitive | string | number | boolean | null;
4
- }
5
+ [key: string]: Primitive | string | number | boolean | null;
6
+ }
5
7
  | any[]
6
8
  | string
7
9
  | number
@@ -18,7 +20,7 @@ export interface Parent {
18
20
  }
19
21
 
20
22
  export abstract class Component<T extends string = string, D extends Primitive = Primitive> {
21
- constructor(public type: T) { }
23
+ constructor(public type: T) {}
22
24
 
23
25
  abstract toJson(): D;
24
26
 
@@ -167,6 +169,22 @@ export class Image extends Component<'image', ImageData> {
167
169
  }
168
170
  }
169
171
 
172
+ export type AssetData = {
173
+ id: string;
174
+ };
175
+
176
+ export class Asset extends Component<'asset', AssetData> {
177
+ constructor(public id: Identifier) {
178
+ super('asset');
179
+ }
180
+
181
+ toJson(): AssetData {
182
+ return {
183
+ id: this.id.key(),
184
+ };
185
+ }
186
+ }
187
+
170
188
  export type LinkData = {
171
189
  url: string;
172
190
  children: ComponentJson[];
@@ -200,8 +218,9 @@ export class System extends Component<'system', SystemData> implements Parent {
200
218
  }
201
219
  }
202
220
 
203
- register('root', (json: RootData) => new Root(json.map(deserialize)));
204
- register('text', (json: TextData) => new Text(json));
205
- register('image', (json: ImageData) => new Image(json.url, json.id, json.name));
206
- register('link', (json: LinkData) => new Link(json.url, json.children.map(deserialize)));
207
- register('system', (json: SystemData) => new System(json.map(deserialize)));
221
+ register('root', (data: RootData) => new Root(data.map(deserialize)));
222
+ register('text', (data: TextData) => new Text(data));
223
+ register('image', (data: ImageData) => new Image(data.url, data.id, data.name));
224
+ register('asset', (data: AssetData) => new Asset(Identifier.fromKey(data.id)));
225
+ register('link', (data: LinkData) => new Link(data.url, data.children.map(deserialize)));
226
+ register('system', (data: SystemData) => new System(data.map(deserialize)));
@@ -4,7 +4,8 @@ export * as content from './content.js';
4
4
  export { Gift } from './gift.js';
5
5
  export { Message } from './message.js';
6
6
  export { Paid } from './paid.js';
7
+ export { Reaction } from './reaction.js';
7
8
  export { Provider } from './provider.js';
8
9
  export { Role } from './role.js';
9
10
  export { Room } from './room.js';
10
-
11
+ export { Vote, Choice } from './vote.js';
@@ -0,0 +1,40 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ import type { Model } from '@omujs/omu/model.js';
3
+
4
+ export type ReactionJson = {
5
+ room_id: string;
6
+ reactions: {
7
+ [key: string]: number;
8
+ };
9
+ };
10
+
11
+ export class Reaction implements Model<ReactionJson> {
12
+ public roomId: Identifier;
13
+ public reactions: {
14
+ [key: string]: number;
15
+ };
16
+
17
+ constructor(options: {
18
+ roomId: Identifier;
19
+ reactions: {
20
+ [key: string]: number;
21
+ };
22
+ }) {
23
+ this.roomId = options.roomId;
24
+ this.reactions = options.reactions;
25
+ }
26
+
27
+ static fromJson(data: ReactionJson): Reaction {
28
+ return new Reaction({
29
+ roomId: Identifier.fromKey(data.room_id),
30
+ reactions: data.reactions,
31
+ });
32
+ }
33
+
34
+ toJson(): ReactionJson {
35
+ return {
36
+ room_id: this.roomId.key(),
37
+ reactions: this.reactions,
38
+ };
39
+ }
40
+ }