@omujs/chat 0.2.0 → 0.2.1

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 +8 -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
@@ -0,0 +1,69 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ import type { Keyable } from '@omujs/omu/interface.js';
3
+ import type { Model } from '@omujs/omu/model.js';
4
+
5
+ export type Choice = {
6
+ text: string;
7
+ ratio: number;
8
+ count?: number;
9
+ };
10
+
11
+ export type VoteJson = {
12
+ id: string;
13
+ room_id: string;
14
+ title: string;
15
+ choices: Choice[];
16
+ ended: boolean;
17
+ total: number | null;
18
+ };
19
+
20
+ export class Vote implements Keyable, Model<VoteJson> {
21
+ public readonly id: Identifier;
22
+ public readonly roomId: Identifier;
23
+ public title: string;
24
+ public choices: Choice[];
25
+ public ended: boolean;
26
+ public total: number | null;
27
+
28
+ constructor(options: {
29
+ id: Identifier;
30
+ roomId: Identifier;
31
+ title: string;
32
+ choices: Choice[];
33
+ ended: boolean;
34
+ total: number | null;
35
+ }) {
36
+ this.id = options.id;
37
+ this.roomId = options.roomId;
38
+ this.title = options.title;
39
+ this.choices = options.choices;
40
+ this.ended = options.ended;
41
+ this.total = options.total;
42
+ }
43
+
44
+ public static fromJson(options: VoteJson): Vote {
45
+ return new Vote({
46
+ id: Identifier.fromKey(options.id),
47
+ roomId: Identifier.fromKey(options.room_id),
48
+ title: options.title,
49
+ choices: options.choices,
50
+ ended: options.ended,
51
+ total: options.total,
52
+ });
53
+ }
54
+
55
+ public toJson(): VoteJson {
56
+ return {
57
+ id: this.id.key(),
58
+ room_id: this.roomId.key(),
59
+ title: this.title,
60
+ choices: this.choices,
61
+ ended: this.ended,
62
+ total: this.total,
63
+ };
64
+ }
65
+
66
+ public key(): string {
67
+ return this.id.key();
68
+ }
69
+ }
@@ -5,3 +5,4 @@ export const CHAT_READ_PERMISSION_ID = IDENTIFIER.join('chat', 'read');
5
5
  export const CHAT_WRITE_PERMISSION_ID = IDENTIFIER.join('chat', 'write');
6
6
  export const CHAT_SEND_PERMISSION_ID = IDENTIFIER.join('chat', 'send');
7
7
  export const CHAT_CHANNEL_TREE_PERMISSION_ID = IDENTIFIER.join('create_channel_tree');
8
+ export const CHAT_REACTION_PERMISSION_ID = CHAT_PERMISSION_ID.join('reaction');
@@ -1,24 +0,0 @@
1
- import * as omu from '@omuchatjs/omu';
2
- import type { TokenProvider } from '@omuchatjs/omu/client/token.js';
3
- import type { Address } from '@omuchatjs/omu/network/index.js';
4
- import { Chat } from './chat.js';
5
- import type { EventHandler, EventKey } from './event/index.js';
6
- export declare class Client extends omu.OmuClient {
7
- private readonly eventRegistry;
8
- readonly chat: Chat;
9
- constructor({ app, address, token, }: {
10
- app: omu.App;
11
- address?: Address;
12
- client?: omu.Client;
13
- token?: TokenProvider;
14
- });
15
- on<T extends unknown[]>(event: EventKey<T>, handler: EventHandler<T>): void;
16
- }
17
- export declare class BrowserTokenProvider implements TokenProvider {
18
- private readonly key;
19
- constructor(key: string);
20
- private getKey;
21
- set(serverAddress: Address, app: omu.App, token: string): Promise<void>;
22
- get(serverAddress: Address, app: omu.App): Promise<string | undefined>;
23
- }
24
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG/D,qBAAa,MAAO,SAAQ,GAAG,CAAC,SAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,SAAgB,IAAI,EAAE,IAAI,CAAC;gBAEf,EACR,GAAG,EACH,OAAO,EACP,KAAK,GACR,EAAE;QACC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,aAAa,CAAC;KACzB;IAcD,EAAE,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;CAG9E;AAED,qBAAa,oBAAqB,YAAW,aAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAExC,OAAO,CAAC,MAAM;IAID,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvE,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAKtF"}
@@ -1,12 +0,0 @@
1
- import type { Unlisten } from '@omuchatjs/omu/event-emitter.js';
2
- import type { Client } from '../client.js';
3
- import type { EventKey } from './event.js';
4
- export type EventHandler<T extends unknown[]> = (...event: T) => void;
5
- export declare class EventRegistry {
6
- private readonly client;
7
- private readonly handlers;
8
- constructor(client: Client);
9
- on<T extends unknown[]>(event: EventKey<T>, handler: EventHandler<T>): Unlisten;
10
- emit<T extends unknown[]>(event: EventKey<T>, ...data: T): void;
11
- }
12
- //# sourceMappingURL=event-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-registry.d.ts","sourceRoot":"","sources":["../../../src/event/event-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAEtE,qBAAa,aAAa;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+C;gBAE3C,MAAM,EAAE,MAAM;IAEpC,EAAE,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ;IAoB/E,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;CAQzE"}
@@ -1,44 +0,0 @@
1
- import * as omu from '@omuchatjs/omu';
2
- import { Chat } from './chat.js';
3
- import { EventRegistry } from './event/index.js';
4
- export class Client extends omu.OmuClient {
5
- eventRegistry;
6
- chat;
7
- constructor({ app, address, token, }) {
8
- super({
9
- app,
10
- address: address || {
11
- host: '127.0.0.1',
12
- port: 26423,
13
- secure: false,
14
- },
15
- token: token ?? new BrowserTokenProvider('omu-token'),
16
- });
17
- this.eventRegistry = new EventRegistry(this);
18
- this.chat = new Chat(this);
19
- }
20
- on(event, handler) {
21
- this.eventRegistry.on(event, handler);
22
- }
23
- }
24
- export class BrowserTokenProvider {
25
- key;
26
- constructor(key) {
27
- this.key = key;
28
- }
29
- getKey(serverAddress, app) {
30
- return JSON.stringify([serverAddress.host, serverAddress.port, app.key()]);
31
- }
32
- async set(serverAddress, app, token) {
33
- const tokens = JSON.parse(localStorage.getItem(this.key) || '{}');
34
- const key = this.getKey(serverAddress, app);
35
- tokens[key] = token;
36
- localStorage.setItem(this.key, JSON.stringify(tokens));
37
- }
38
- async get(serverAddress, app) {
39
- const tokens = JSON.parse(localStorage.getItem(this.key) || '{}');
40
- const key = this.getKey(serverAddress, app);
41
- return Promise.resolve(tokens[key] || null);
42
- }
43
- }
44
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,MAAO,SAAQ,GAAG,CAAC,SAAS;IACpB,aAAa,CAAgB;IAC9B,IAAI,CAAO;IAE3B,YAAY,EACR,GAAG,EACH,OAAO,EACP,KAAK,GAMR;QACG,KAAK,CAAC;YACF,GAAG;YACH,OAAO,EAAE,OAAO,IAAI;gBAChB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;aAChB;YACD,KAAK,EAAE,KAAK,IAAI,IAAI,oBAAoB,CAAC,WAAW,CAAC;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,EAAE,CAAsB,KAAkB,EAAE,OAAwB;QAChE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACJ;AAED,MAAM,OAAO,oBAAoB;IACA;IAA7B,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAEpC,MAAM,CAAC,aAAsB,EAAE,GAAY;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,aAAsB,EAAE,GAAY,EAAE,KAAa;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,aAAsB,EAAE,GAAY;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;IAChD,CAAC;CACJ"}
@@ -1,35 +0,0 @@
1
- export class EventRegistry {
2
- client;
3
- handlers = new Map();
4
- constructor(client) {
5
- this.client = client;
6
- }
7
- on(event, handler) {
8
- if (!this.handlers.has(event.name)) {
9
- event.create(this.client, (...data) => {
10
- this.emit(event, ...data);
11
- });
12
- }
13
- const handlers = this.handlers.get(event.name) || new Array();
14
- handlers.push(handler);
15
- this.handlers.set(event.name, handlers);
16
- return () => {
17
- const handlers = this.handlers.get(event.name);
18
- if (handlers) {
19
- const index = handlers.indexOf(handler);
20
- if (index !== -1) {
21
- handlers.splice(index, 1);
22
- }
23
- }
24
- };
25
- }
26
- emit(event, ...data) {
27
- const handlers = this.handlers.get(event.name);
28
- if (handlers) {
29
- for (const handler of handlers) {
30
- handler(...data);
31
- }
32
- }
33
- }
34
- }
35
- //# sourceMappingURL=event-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-registry.js","sourceRoot":"","sources":["../../../src/event/event-registry.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,aAAa;IAGO;IAFZ,QAAQ,GAAqC,IAAI,GAAG,EAAE,CAAC;IAExE,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAEzC,EAAE,CAAsB,KAAkB,EAAE,OAAwB;QACvE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAmB,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAEM,IAAI,CAAsB,KAAkB,EAAE,GAAG,IAAO;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACX,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}