@omujs/chat 0.9.48 → 0.9.50

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 (78) hide show
  1. package/dist/chat.d.ts +20 -0
  2. package/dist/chat.js +2 -0
  3. package/dist/chat.js.map +7 -0
  4. package/dist/const.d.ts +2 -0
  5. package/dist/const.js +2 -0
  6. package/dist/const.js.map +7 -0
  7. package/dist/event/event-types.d.ts +15 -0
  8. package/dist/event/event-types.js +2 -0
  9. package/dist/event/event-types.js.map +7 -0
  10. package/dist/event/event.d.ts +33 -0
  11. package/dist/event/event.js +2 -0
  12. package/dist/event/event.js.map +7 -0
  13. package/dist/event/index.d.ts +2 -0
  14. package/dist/event/index.js +2 -0
  15. package/dist/event/index.js.map +7 -0
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +7 -0
  18. package/dist/models/author.d.ts +37 -0
  19. package/dist/models/author.js +2 -0
  20. package/dist/models/author.js.map +7 -0
  21. package/dist/models/channel.d.ts +31 -0
  22. package/dist/models/channel.js +2 -0
  23. package/dist/models/channel.js.map +7 -0
  24. package/dist/models/content.d.ts +24 -0
  25. package/dist/models/content.js +2 -0
  26. package/dist/models/content.js.map +7 -0
  27. package/dist/models/gift.d.ts +23 -0
  28. package/dist/models/gift.js +2 -0
  29. package/dist/models/gift.js.map +7 -0
  30. package/dist/models/index.d.ts +13 -0
  31. package/dist/models/index.js +2 -0
  32. package/dist/models/index.js.map +7 -0
  33. package/dist/models/message.d.ts +40 -0
  34. package/dist/models/message.js +2 -0
  35. package/dist/models/message.js.map +7 -0
  36. package/dist/models/paid.d.ts +11 -0
  37. package/dist/models/paid.js +2 -0
  38. package/dist/models/paid.js.map +7 -0
  39. package/dist/models/provider.d.ts +34 -0
  40. package/dist/models/provider.js +2 -0
  41. package/dist/models/provider.js.map +7 -0
  42. package/dist/models/reaction.d.ts +21 -0
  43. package/dist/models/reaction.js +2 -0
  44. package/dist/models/reaction.js.map +7 -0
  45. package/dist/models/role.d.ts +26 -0
  46. package/dist/models/role.js +2 -0
  47. package/dist/models/role.js.map +7 -0
  48. package/dist/models/room.d.ts +44 -0
  49. package/dist/models/room.js +2 -0
  50. package/dist/models/room.js.map +7 -0
  51. package/dist/models/vote.d.ts +33 -0
  52. package/dist/models/vote.js +2 -0
  53. package/dist/models/vote.js.map +7 -0
  54. package/dist/permissions.d.ts +7 -0
  55. package/dist/permissions.js +2 -0
  56. package/dist/permissions.js.map +7 -0
  57. package/package.json +11 -8
  58. package/CHANGELOG.md +0 -1831
  59. package/src/chat.ts +0 -131
  60. package/src/const.ts +0 -3
  61. package/src/event/event-types.ts +0 -16
  62. package/src/event/event.ts +0 -102
  63. package/src/event/index.ts +0 -3
  64. package/src/models/author.ts +0 -72
  65. package/src/models/channel.ts +0 -67
  66. package/src/models/content.ts +0 -62
  67. package/src/models/gift.ts +0 -49
  68. package/src/models/index.ts +0 -14
  69. package/src/models/message.ts +0 -88
  70. package/src/models/paid.ts +0 -22
  71. package/src/models/provider.ts +0 -73
  72. package/src/models/reaction.ts +0 -39
  73. package/src/models/role.ts +0 -55
  74. package/src/models/room.ts +0 -82
  75. package/src/models/vote.ts +0 -67
  76. package/src/permissions.ts +0 -9
  77. package/tsconfig.json +0 -15
  78. /package/{src/index.ts → dist/index.d.ts} +0 -0
package/dist/chat.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { Omu } from '@omujs/omu';
2
+ import type { Signal } from '@omujs/omu/api/signal';
3
+ import type { Table } from '@omujs/omu/api/table';
4
+ import type { EventHandler, EventSource } from './event';
5
+ import { Author, Channel, Message, Provider, Reaction, Room, Vote } from './models';
6
+ export declare class Chat {
7
+ private readonly omu;
8
+ readonly messages: Table<Message>;
9
+ readonly authors: Table<Author>;
10
+ readonly channels: Table<Channel>;
11
+ readonly providers: Table<Provider>;
12
+ readonly rooms: Table<Room>;
13
+ readonly votes: Table<Vote>;
14
+ readonly reactionSignal: Signal<Reaction>;
15
+ private readonly eventRegistry;
16
+ private constructor();
17
+ static create(omu: Omu): Chat;
18
+ createChannelTree(url: string): Promise<Channel[]>;
19
+ on<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void;
20
+ }
package/dist/chat.js ADDED
@@ -0,0 +1,2 @@
1
+ import{Serializer as n}from"@omujs/omu";import{EndpointType as c}from"@omujs/omu/api/endpoint";import{SignalType as E}from"@omujs/omu/api/signal";import{TableType as i}from"@omujs/omu/api/table";import{PLUGIN_ID as s}from"./const";import{EventRegistry as y}from"./event";import{Author as T,Channel as l,Message as h,Provider as d,Reaction as _,Room as g,Vote as b}from"./models";import{CHAT_CHANNEL_TREE_PERMISSION_ID as u,CHAT_PERMISSION_ID as t,CHAT_READ_PERMISSION_ID as a,CHAT_WRITE_PERMISSION_ID as o}from"./permissions";const A=i.createJson(s,{name:"messages",serializer:h,key:r=>r.key(),permissions:{all:t,read:a,write:o}}),R=i.createJson(s,{name:"authors",serializer:T,key:r=>r.key(),permissions:{all:t,read:a,write:o}}),S=i.createJson(s,{name:"channels",serializer:l,key:r=>r.key(),permissions:{all:t,read:a,write:o}}),v=i.createJson(s,{name:"providers",serializer:d,key:r=>r.key(),permissions:{all:t,read:a,write:o}}),I=i.createJson(s,{name:"rooms",serializer:g,key:r=>r.key(),permissions:{all:t,read:a,write:o}}),P=i.createJson(s,{name:"votes",serializer:b,key:r=>r.key(),permissions:{all:t,read:a,write:o}}),C=c.createJson(s,{name:"create_channel_tree",requestSerializer:n.noop(),responseSerializer:n.of(l).toArray(),permissionId:u}),N=E.createJson(s,{name:"reaction",serializer:_,permissions:{all:t}});class m{constructor(e){this.omu=e;e.sessions.require(s),e.permissions.require(t),this.eventRegistry=new y(this),this.messages=e.tables.get(A),this.authors=e.tables.get(R),this.channels=e.tables.get(S),this.providers=e.tables.get(v),this.rooms=e.tables.get(I),this.votes=e.tables.get(P),this.reactionSignal=e.signals.get(N),this.messages.setCacheSize(1e3),this.authors.setCacheSize(500)}messages;authors;channels;providers;rooms;votes;reactionSignal;eventRegistry;static create(e){if(e.ready)throw new Error("OMU instance is already started");return new m(e)}async createChannelTree(e){return await this.omu.endpoints.call(C,e)}on(e,p){this.eventRegistry.register(e,p)}}export{m as Chat};
2
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/chat.ts"],
4
+ "sourcesContent": ["import type { Omu } from '@omujs/omu';\nimport { Serializer } from '@omujs/omu';\nimport { EndpointType } from '@omujs/omu/api/endpoint';\nimport type { Signal } from '@omujs/omu/api/signal';\nimport { SignalType } from '@omujs/omu/api/signal';\nimport type { Table } from '@omujs/omu/api/table';\nimport { TableType } from '@omujs/omu/api/table';\n\nimport { PLUGIN_ID } from './const';\nimport type { EventHandler, EventSource } from './event';\nimport { EventRegistry } from './event';\nimport { Author, Channel, Message, Provider, Reaction, Room, Vote } from './models';\nimport {\n CHAT_CHANNEL_TREE_PERMISSION_ID,\n CHAT_PERMISSION_ID,\n CHAT_READ_PERMISSION_ID,\n CHAT_WRITE_PERMISSION_ID,\n} from './permissions';\n\nconst MESSAGE_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {\n name: 'messages',\n serializer: Message,\n key: (item) => item.key(),\n permissions: {\n all: CHAT_PERMISSION_ID,\n read: CHAT_READ_PERMISSION_ID,\n write: CHAT_WRITE_PERMISSION_ID,\n },\n});\nconst AUTHOR_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {\n name: 'authors',\n serializer: Author,\n key: (item) => item.key(),\n permissions: {\n all: CHAT_PERMISSION_ID,\n read: CHAT_READ_PERMISSION_ID,\n write: CHAT_WRITE_PERMISSION_ID,\n },\n});\nconst CHANNEL_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {\n name: 'channels',\n serializer: Channel,\n key: (item) => item.key(),\n permissions: {\n all: CHAT_PERMISSION_ID,\n read: CHAT_READ_PERMISSION_ID,\n write: CHAT_WRITE_PERMISSION_ID,\n },\n});\nconst PROVIDER_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {\n name: 'providers',\n serializer: Provider,\n key: (item) => item.key(),\n permissions: {\n all: CHAT_PERMISSION_ID,\n read: CHAT_READ_PERMISSION_ID,\n write: CHAT_WRITE_PERMISSION_ID,\n },\n});\nconst ROOM_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {\n name: 'rooms',\n serializer: Room,\n key: (item) => item.key(),\n permissions: {\n all: CHAT_PERMISSION_ID,\n read: CHAT_READ_PERMISSION_ID,\n write: CHAT_WRITE_PERMISSION_ID,\n },\n});\nconst VOTE_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {\n name: 'votes',\n serializer: Vote,\n key: (item) => item.key(),\n permissions: {\n all: CHAT_PERMISSION_ID,\n read: CHAT_READ_PERMISSION_ID,\n write: CHAT_WRITE_PERMISSION_ID,\n },\n});\nconst CREATE_CHANNEL_TREE_ENDPOINT = EndpointType.createJson(PLUGIN_ID, {\n name: 'create_channel_tree',\n requestSerializer: Serializer.noop<string>(),\n responseSerializer: Serializer.of(Channel).toArray(),\n permissionId: CHAT_CHANNEL_TREE_PERMISSION_ID,\n});\nconst REACTION_SIGNAL = SignalType.createJson(PLUGIN_ID, {\n name: 'reaction',\n serializer: Reaction,\n permissions: { all: CHAT_PERMISSION_ID },\n});\n\nexport class Chat {\n public readonly messages: Table<Message>;\n public readonly authors: Table<Author>;\n public readonly channels: Table<Channel>;\n public readonly providers: Table<Provider>;\n public readonly rooms: Table<Room>;\n public readonly votes: Table<Vote>;\n public readonly reactionSignal: Signal<Reaction>;\n private readonly eventRegistry: EventRegistry;\n\n private constructor(private readonly omu: Omu) {\n omu.sessions.require(PLUGIN_ID);\n omu.permissions.require(CHAT_PERMISSION_ID);\n this.eventRegistry = new EventRegistry(this);\n this.messages = omu.tables.get(MESSAGE_TABLE_TYPE);\n this.authors = omu.tables.get(AUTHOR_TABLE_TYPE);\n this.channels = omu.tables.get(CHANNEL_TABLE_TYPE);\n this.providers = omu.tables.get(PROVIDER_TABLE_TYPE);\n this.rooms = omu.tables.get(ROOM_TABLE_TYPE);\n this.votes = omu.tables.get(VOTE_TABLE_TYPE);\n this.reactionSignal = omu.signals.get(REACTION_SIGNAL);\n this.messages.setCacheSize(1000);\n this.authors.setCacheSize(500);\n }\n\n public static create(omu: Omu): Chat {\n if (omu.ready) {\n throw new Error('OMU instance is already started');\n }\n return new Chat(omu);\n }\n\n public async createChannelTree(url: string): Promise<Channel[]> {\n return await this.omu.endpoints.call(CREATE_CHANNEL_TREE_ENDPOINT, url);\n }\n\n public on<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void {\n this.eventRegistry.register(event, handler);\n }\n}\n"],
5
+ "mappings": "AACA,OAAS,cAAAA,MAAkB,aAC3B,OAAS,gBAAAC,MAAoB,0BAE7B,OAAS,cAAAC,MAAkB,wBAE3B,OAAS,aAAAC,MAAiB,uBAE1B,OAAS,aAAAC,MAAiB,UAE1B,OAAS,iBAAAC,MAAqB,UAC9B,OAAS,UAAAC,EAAQ,WAAAC,EAAS,WAAAC,EAAS,YAAAC,EAAU,YAAAC,EAAU,QAAAC,EAAM,QAAAC,MAAY,WACzE,OACI,mCAAAC,EACA,sBAAAC,EACA,2BAAAC,EACA,4BAAAC,MACG,gBAEP,MAAMC,EAAqBd,EAAU,WAAWC,EAAW,CACvD,KAAM,WACN,WAAYI,EACZ,IAAMU,GAASA,EAAK,IAAI,EACxB,YAAa,CACT,IAAKJ,EACL,KAAMC,EACN,MAAOC,CACX,CACJ,CAAC,EACKG,EAAoBhB,EAAU,WAAWC,EAAW,CACtD,KAAM,UACN,WAAYE,EACZ,IAAMY,GAASA,EAAK,IAAI,EACxB,YAAa,CACT,IAAKJ,EACL,KAAMC,EACN,MAAOC,CACX,CACJ,CAAC,EACKI,EAAqBjB,EAAU,WAAWC,EAAW,CACvD,KAAM,WACN,WAAYG,EACZ,IAAMW,GAASA,EAAK,IAAI,EACxB,YAAa,CACT,IAAKJ,EACL,KAAMC,EACN,MAAOC,CACX,CACJ,CAAC,EACKK,EAAsBlB,EAAU,WAAWC,EAAW,CACxD,KAAM,YACN,WAAYK,EACZ,IAAMS,GAASA,EAAK,IAAI,EACxB,YAAa,CACT,IAAKJ,EACL,KAAMC,EACN,MAAOC,CACX,CACJ,CAAC,EACKM,EAAkBnB,EAAU,WAAWC,EAAW,CACpD,KAAM,QACN,WAAYO,EACZ,IAAMO,GAASA,EAAK,IAAI,EACxB,YAAa,CACT,IAAKJ,EACL,KAAMC,EACN,MAAOC,CACX,CACJ,CAAC,EACKO,EAAkBpB,EAAU,WAAWC,EAAW,CACpD,KAAM,QACN,WAAYQ,EACZ,IAAMM,GAASA,EAAK,IAAI,EACxB,YAAa,CACT,IAAKJ,EACL,KAAMC,EACN,MAAOC,CACX,CACJ,CAAC,EACKQ,EAA+BvB,EAAa,WAAWG,EAAW,CACpE,KAAM,sBACN,kBAAmBJ,EAAW,KAAa,EAC3C,mBAAoBA,EAAW,GAAGO,CAAO,EAAE,QAAQ,EACnD,aAAcM,CAClB,CAAC,EACKY,EAAkBvB,EAAW,WAAWE,EAAW,CACrD,KAAM,WACN,WAAYM,EACZ,YAAa,CAAE,IAAKI,CAAmB,CAC3C,CAAC,EAEM,MAAMY,CAAK,CAUN,YAA6BC,EAAU,CAAV,SAAAA,EACjCA,EAAI,SAAS,QAAQvB,CAAS,EAC9BuB,EAAI,YAAY,QAAQb,CAAkB,EAC1C,KAAK,cAAgB,IAAIT,EAAc,IAAI,EAC3C,KAAK,SAAWsB,EAAI,OAAO,IAAIV,CAAkB,EACjD,KAAK,QAAUU,EAAI,OAAO,IAAIR,CAAiB,EAC/C,KAAK,SAAWQ,EAAI,OAAO,IAAIP,CAAkB,EACjD,KAAK,UAAYO,EAAI,OAAO,IAAIN,CAAmB,EACnD,KAAK,MAAQM,EAAI,OAAO,IAAIL,CAAe,EAC3C,KAAK,MAAQK,EAAI,OAAO,IAAIJ,CAAe,EAC3C,KAAK,eAAiBI,EAAI,QAAQ,IAAIF,CAAe,EACrD,KAAK,SAAS,aAAa,GAAI,EAC/B,KAAK,QAAQ,aAAa,GAAG,CACjC,CAtBgB,SACA,QACA,SACA,UACA,MACA,MACA,eACC,cAiBjB,OAAc,OAAOE,EAAgB,CACjC,GAAIA,EAAI,MACJ,MAAM,IAAI,MAAM,iCAAiC,EAErD,OAAO,IAAID,EAAKC,CAAG,CACvB,CAEA,MAAa,kBAAkBC,EAAiC,CAC5D,OAAO,MAAM,KAAK,IAAI,UAAU,KAAKJ,EAA8BI,CAAG,CAC1E,CAEO,GAAyBC,EAAuBC,EAAgC,CACnF,KAAK,cAAc,SAASD,EAAOC,CAAO,CAC9C,CACJ",
6
+ "names": ["Serializer", "EndpointType", "SignalType", "TableType", "PLUGIN_ID", "EventRegistry", "Author", "Channel", "Message", "Provider", "Reaction", "Room", "Vote", "CHAT_CHANNEL_TREE_PERMISSION_ID", "CHAT_PERMISSION_ID", "CHAT_READ_PERMISSION_ID", "CHAT_WRITE_PERMISSION_ID", "MESSAGE_TABLE_TYPE", "item", "AUTHOR_TABLE_TYPE", "CHANNEL_TABLE_TYPE", "PROVIDER_TABLE_TYPE", "ROOM_TABLE_TYPE", "VOTE_TABLE_TYPE", "CREATE_CHANNEL_TREE_ENDPOINT", "REACTION_SIGNAL", "Chat", "omu", "url", "event", "handler"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ export declare const PLUGIN_ID: Identifier;
package/dist/const.js ADDED
@@ -0,0 +1,2 @@
1
+ import{Identifier as e}from"@omujs/omu";const t=new e("com.omuapps","chat");export{t as PLUGIN_ID};
2
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/const.ts"],
4
+ "sourcesContent": ["import { Identifier } from '@omujs/omu';\n\nexport const PLUGIN_ID: Identifier = new Identifier('com.omuapps', 'chat');\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,MAAkB,aAEpB,MAAMC,EAAwB,IAAID,EAAW,cAAe,MAAM",
6
+ "names": ["Identifier", "PLUGIN_ID"]
7
+ }
@@ -0,0 +1,15 @@
1
+ import { Author } from '../models/author.js';
2
+ import { Channel } from '../models/channel.js';
3
+ import { Message } from '../models/message.js';
4
+ import { Provider } from '../models/provider.js';
5
+ import { Room } from '../models/room.js';
6
+ import { Vote } from '../models/vote.js';
7
+ import { TableEvent } from './event.js';
8
+ export declare const events: {
9
+ Message: TableEvent<Message>;
10
+ Author: TableEvent<Author>;
11
+ Channel: TableEvent<Channel>;
12
+ Provider: TableEvent<Provider>;
13
+ Room: TableEvent<Room>;
14
+ Vote: TableEvent<Vote>;
15
+ };
@@ -0,0 +1,2 @@
1
+ import{TableEvent as o}from"./event.js";const E={Message:new o(e=>e.messages),Author:new o(e=>e.authors),Channel:new o(e=>e.channels),Provider:new o(e=>e.providers),Room:new o(e=>e.rooms),Vote:new o(e=>e.votes)};export{E as events};
2
+ //# sourceMappingURL=event-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/event/event-types.ts"],
4
+ "sourcesContent": ["import { Author } from '../models/author.js';\nimport { Channel } from '../models/channel.js';\nimport { Message } from '../models/message.js';\nimport { Provider } from '../models/provider.js';\nimport { Room } from '../models/room.js';\nimport { Vote } from '../models/vote.js';\nimport { TableEvent } from './event.js';\n\nexport const events: { Message: TableEvent<Message>; Author: TableEvent<Author>; Channel: TableEvent<Channel>; Provider: TableEvent<Provider>; Room: TableEvent<Room>; Vote: TableEvent<Vote> } = {\n Message: new TableEvent((chat) => chat.messages),\n Author: new TableEvent((chat) => chat.authors),\n Channel: new TableEvent((chat) => chat.channels),\n Provider: new TableEvent((chat) => chat.providers),\n Room: new TableEvent((chat) => chat.rooms),\n Vote: new TableEvent((chat) => chat.votes),\n};\n"],
5
+ "mappings": "AAMA,OAAS,cAAAA,MAAkB,aAEpB,MAAMC,EAAqL,CAC9L,QAAS,IAAID,EAAYE,GAASA,EAAK,QAAQ,EAC/C,OAAQ,IAAIF,EAAYE,GAASA,EAAK,OAAO,EAC7C,QAAS,IAAIF,EAAYE,GAASA,EAAK,QAAQ,EAC/C,SAAU,IAAIF,EAAYE,GAASA,EAAK,SAAS,EACjD,KAAM,IAAIF,EAAYE,GAASA,EAAK,KAAK,EACzC,KAAM,IAAIF,EAAYE,GAASA,EAAK,KAAK,CAC7C",
6
+ "names": ["TableEvent", "events", "chat"]
7
+ }
@@ -0,0 +1,33 @@
1
+ import type { Table } from '@omujs/omu/api/table';
2
+ import type { Unlisten } from '@omujs/omu/event';
3
+ import { EventEmitter } from '@omujs/omu/event';
4
+ import type { Chat } from '../chat.js';
5
+ export type EventHandler<P extends Array<any>> = (...args: P) => Promise<void> | void;
6
+ export interface EventSource<P extends Array<any>> {
7
+ subscribe(handler: EventHandler<P>, chat: Chat): Unlisten;
8
+ }
9
+ export declare class ListenerEvent<P extends Array<any>> implements EventSource<P> {
10
+ private readonly getListener;
11
+ constructor(getListener: (chat: Chat) => EventEmitter<P>);
12
+ subscribe(handler: EventHandler<P>, chat: Chat): Unlisten;
13
+ }
14
+ export declare class TableEvent<T> extends ListenerEvent<[Map<string, T>]> {
15
+ private readonly getTable;
16
+ readonly AddBatch: ListenerEvent<[Map<string, T>]>;
17
+ readonly UpdateBatch: ListenerEvent<[Map<string, T>]>;
18
+ readonly RemoveBatch: ListenerEvent<[Map<string, T>]>;
19
+ readonly Add: EventSource<[T]>;
20
+ readonly Update: EventSource<[T]>;
21
+ readonly Remove: EventSource<[T]>;
22
+ readonly Clear: EventSource<[]>;
23
+ readonly wrappers: Record<string, Unlisten>;
24
+ constructor(getTable: (chat: Chat) => Table<T>);
25
+ private static createBatchWrapper;
26
+ private createBatchSubscriber;
27
+ }
28
+ export declare class EventRegistry {
29
+ private readonly chat;
30
+ private readonly events;
31
+ constructor(chat: Chat);
32
+ register<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void;
33
+ }
@@ -0,0 +1,2 @@
1
+ import{EventEmitter as h}from"@omujs/omu/event";class a{constructor(r){this.getListener=r}subscribe(r,t){return this.getListener(t).listen(r)}}class c extends a{constructor(t){super(e=>t(e).event.cacheUpdate);this.getTable=t;this.AddBatch=new a(e=>t(e).event.add),this.UpdateBatch=new a(e=>t(e).event.update),this.RemoveBatch=new a(e=>t(e).event.remove),this.Add=this.createBatchSubscriber(e=>e.event.add),this.Update=this.createBatchSubscriber(e=>e.event.update),this.Remove=this.createBatchSubscriber(e=>e.event.remove),this.Clear=new a(e=>t(e).event.clear),this.wrappers={}}AddBatch;UpdateBatch;RemoveBatch;Add;Update;Remove;Clear;wrappers;static createBatchWrapper(t){return async e=>{for(const n of e.values())await t(n)}}createBatchSubscriber(t){let e=null;return{subscribe:(s,l)=>{const i=this.getTable(l),p=t(i);e=c.createBatchWrapper(u=>s(u));const v=i.listen(),d=p.listen(e);return()=>{v(),d()}}}}}class E{chat;events;constructor(r){this.chat=r,this.events=new Map}register(r,t){let e=this.events.get(r);if(!e){const n={source:r,listeners:new h};e=n,this.events.set(r,n),r.subscribe((...s)=>n.listeners.emit(...s),this.chat)}e.listeners.listen((...n)=>t(...n))}}export{E as EventRegistry,a as ListenerEvent,c as TableEvent};
2
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/event/event.ts"],
4
+ "sourcesContent": ["import type { Table } from '@omujs/omu/api/table';\nimport type { Unlisten } from '@omujs/omu/event';\nimport { EventEmitter } from '@omujs/omu/event';\n\nimport type { Chat } from '../chat.js';\n\nexport type EventHandler<P extends Array<any>> = (...args: P) => Promise<void> | void;\n\nexport interface EventSource<P extends Array<any>> {\n subscribe(handler: EventHandler<P>, chat: Chat): Unlisten;\n}\n\nexport class ListenerEvent<P extends Array<any>> implements EventSource<P> {\n constructor(private readonly getListener: (chat: Chat) => EventEmitter<P>) {}\n\n public subscribe(handler: EventHandler<P>, chat: Chat): Unlisten {\n const listener = this.getListener(chat);\n return listener.listen(handler);\n }\n}\n\nexport class TableEvent<T> extends ListenerEvent<[Map<string, T>]> {\n public readonly AddBatch: ListenerEvent<[Map<string, T>]>;\n public readonly UpdateBatch: ListenerEvent<[Map<string, T>]>;\n public readonly RemoveBatch: ListenerEvent<[Map<string, T>]>;\n public readonly Add: EventSource<[T]>;\n public readonly Update: EventSource<[T]>;\n public readonly Remove: EventSource<[T]>;\n public readonly Clear: EventSource<[]>;\n public readonly wrappers: Record<string, Unlisten>;\n\n constructor(private readonly getTable: (chat: Chat) => Table<T>) {\n super((chat) => getTable(chat).event.cacheUpdate);\n this.AddBatch = new ListenerEvent((chat) => getTable(chat).event.add);\n this.UpdateBatch = new ListenerEvent((chat) => getTable(chat).event.update);\n this.RemoveBatch = new ListenerEvent((chat) => getTable(chat).event.remove);\n this.Add = this.createBatchSubscriber((table) => table.event.add);\n this.Update = this.createBatchSubscriber((table) => table.event.update);\n this.Remove = this.createBatchSubscriber((table) => table.event.remove);\n this.Clear = new ListenerEvent((client) => getTable(client).event.clear);\n this.wrappers = {};\n }\n\n private static createBatchWrapper<T>(emit: EventHandler<[T]>): EventHandler<[Map<string, T>]> {\n return async (items) => {\n for (const item of items.values()) {\n await emit(item);\n }\n };\n }\n\n private createBatchSubscriber(\n getListener: (table: Table<T>) => EventEmitter<[Map<string, T>]>,\n ): EventSource<[T]> {\n let batchWrapper: EventHandler<[Map<string, T>]> | null = null;\n\n const subscribe = (emit: EventHandler<[T]>, chat: Chat): Unlisten => {\n const table = this.getTable(chat);\n const listener = getListener(table);\n batchWrapper = TableEvent.createBatchWrapper((item) => emit(item));\n const stopListen = table.listen();\n const clearEvent = listener.listen(batchWrapper);\n return () => {\n stopListen();\n clearEvent();\n };\n };\n\n return {\n subscribe,\n };\n }\n}\n\ntype Entry<P extends Array<any>> = {\n source: EventSource<P>;\n listeners: EventEmitter<P>;\n};\n\nexport class EventRegistry {\n private readonly chat: Chat;\n private readonly events: Map<EventSource<any>, Entry<any>>;\n\n constructor(chat: Chat) {\n this.chat = chat;\n this.events = new Map();\n }\n\n public register<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void {\n let entry = this.events.get(event) as Entry<P> | null;\n if (!entry) {\n const newEntry: Entry<P> = {\n source: event,\n listeners: new EventEmitter(),\n };\n entry = newEntry;\n this.events.set(event, newEntry);\n event.subscribe((...args) => newEntry.listeners.emit(...args), this.chat);\n }\n entry.listeners.listen((...args) => handler(...args));\n }\n}\n"],
5
+ "mappings": "AAEA,OAAS,gBAAAA,MAAoB,mBAUtB,MAAMC,CAA8D,CACvE,YAA6BC,EAA8C,CAA9C,iBAAAA,CAA+C,CAErE,UAAUC,EAA0BC,EAAsB,CAE7D,OADiB,KAAK,YAAYA,CAAI,EACtB,OAAOD,CAAO,CAClC,CACJ,CAEO,MAAME,UAAsBJ,CAAgC,CAU/D,YAA6BK,EAAoC,CAC7D,MAAOF,GAASE,EAASF,CAAI,EAAE,MAAM,WAAW,EADvB,cAAAE,EAEzB,KAAK,SAAW,IAAIL,EAAeG,GAASE,EAASF,CAAI,EAAE,MAAM,GAAG,EACpE,KAAK,YAAc,IAAIH,EAAeG,GAASE,EAASF,CAAI,EAAE,MAAM,MAAM,EAC1E,KAAK,YAAc,IAAIH,EAAeG,GAASE,EAASF,CAAI,EAAE,MAAM,MAAM,EAC1E,KAAK,IAAM,KAAK,sBAAuBG,GAAUA,EAAM,MAAM,GAAG,EAChE,KAAK,OAAS,KAAK,sBAAuBA,GAAUA,EAAM,MAAM,MAAM,EACtE,KAAK,OAAS,KAAK,sBAAuBA,GAAUA,EAAM,MAAM,MAAM,EACtE,KAAK,MAAQ,IAAIN,EAAeO,GAAWF,EAASE,CAAM,EAAE,MAAM,KAAK,EACvE,KAAK,SAAW,CAAC,CACrB,CAnBgB,SACA,YACA,YACA,IACA,OACA,OACA,MACA,SAchB,OAAe,mBAAsBC,EAAyD,CAC1F,MAAO,OAAOC,GAAU,CACpB,UAAWC,KAAQD,EAAM,OAAO,EAC5B,MAAMD,EAAKE,CAAI,CAEvB,CACJ,CAEQ,sBACJT,EACgB,CAChB,IAAIU,EAAsD,KAc1D,MAAO,CACH,UAbc,CAACH,EAAyBL,IAAyB,CACjE,MAAMG,EAAQ,KAAK,SAASH,CAAI,EAC1BS,EAAWX,EAAYK,CAAK,EAClCK,EAAeP,EAAW,mBAAoBM,GAASF,EAAKE,CAAI,CAAC,EACjE,MAAMG,EAAaP,EAAM,OAAO,EAC1BQ,EAAaF,EAAS,OAAOD,CAAY,EAC/C,MAAO,IAAM,CACTE,EAAW,EACXC,EAAW,CACf,CACJ,CAIA,CACJ,CACJ,CAOO,MAAMC,CAAc,CACN,KACA,OAEjB,YAAYZ,EAAY,CACpB,KAAK,KAAOA,EACZ,KAAK,OAAS,IAAI,GACtB,CAEO,SAA+Ba,EAAuBd,EAAgC,CACzF,IAAIe,EAAQ,KAAK,OAAO,IAAID,CAAK,EACjC,GAAI,CAACC,EAAO,CACR,MAAMC,EAAqB,CACvB,OAAQF,EACR,UAAW,IAAIjB,CACnB,EACAkB,EAAQC,EACR,KAAK,OAAO,IAAIF,EAAOE,CAAQ,EAC/BF,EAAM,UAAU,IAAIG,IAASD,EAAS,UAAU,KAAK,GAAGC,CAAI,EAAG,KAAK,IAAI,CAC5E,CACAF,EAAM,UAAU,OAAO,IAAIE,IAASjB,EAAQ,GAAGiB,CAAI,CAAC,CACxD,CACJ",
6
+ "names": ["EventEmitter", "ListenerEvent", "getListener", "handler", "chat", "TableEvent", "getTable", "table", "client", "emit", "items", "item", "batchWrapper", "listener", "stopListen", "clearEvent", "EventRegistry", "event", "entry", "newEntry", "args"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { events as Events } from './event-types.js';
2
+ export { EventRegistry, type EventHandler, type EventSource } from './event.js';
@@ -0,0 +1,2 @@
1
+ import{events as r}from"./event-types.js";import{EventRegistry as o}from"./event.js";export{o as EventRegistry,r as Events};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/event/index.ts"],
4
+ "sourcesContent": ["export { events as Events } from './event-types.js';\nexport { EventRegistry, type EventHandler, type EventSource } from './event.js';\n\n"],
5
+ "mappings": "AAAA,OAAmB,UAAVA,MAAwB,mBACjC,OAAS,iBAAAC,MAA0D",
6
+ "names": ["events", "EventRegistry"]
7
+ }
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import{Chat as s}from"./chat.js";import{Events as a}from"./event";import*as p from"./models";import{Content as o}from"./models";import*as f from"./permissions.js";export{s as Chat,a as ChatEvents,f as ChatPermissions,o as Content,p as Models};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["export { Chat } from './chat.js';\nexport { Events as ChatEvents } from './event';\nexport * as Models from './models';\nexport { Content };\nimport { Content } from './models';\nexport * as ChatPermissions from './permissions.js';\n"],
5
+ "mappings": "AAAA,OAAS,QAAAA,MAAY,YACrB,OAAmB,UAAVC,MAA4B,UACrC,UAAYC,MAAY,WAExB,OAAS,WAAAC,MAAe,WACxB,UAAYC,MAAqB",
6
+ "names": ["Chat", "Events", "Models", "Content", "ChatPermissions"]
7
+ }
@@ -0,0 +1,37 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ import type { RoleJson } from './role.js';
3
+ import { Role } from './role.js';
4
+ export type AuthorMetadata = {
5
+ url?: string;
6
+ screen_id?: string;
7
+ avatar_url?: string;
8
+ description?: string;
9
+ links?: string[];
10
+ };
11
+ export type AuthorJson = {
12
+ provider_id: string;
13
+ id: string;
14
+ metadata: AuthorMetadata;
15
+ name?: string;
16
+ avatar_url?: string;
17
+ roles?: RoleJson[];
18
+ };
19
+ export declare class Author {
20
+ providerId: Identifier;
21
+ id: Identifier;
22
+ metadata: AuthorMetadata;
23
+ name?: string;
24
+ avatarUrl?: string;
25
+ roles?: Role[];
26
+ constructor(options: {
27
+ providerId: Identifier;
28
+ id: Identifier;
29
+ metadata?: AuthorMetadata;
30
+ name?: string;
31
+ avatarUrl?: string;
32
+ roles?: Role[];
33
+ });
34
+ static deserialize(info: AuthorJson): Author;
35
+ key(): string;
36
+ static serialize(item: Author): AuthorJson;
37
+ }
@@ -0,0 +1,2 @@
1
+ import{Identifier as t}from"@omujs/omu";import{Role as i}from"./role.js";class e{providerId;id;metadata;name;avatarUrl;roles;constructor(r){this.providerId=r.providerId,this.id=r.id,this.metadata=r.metadata||{},this.name=r.name,this.avatarUrl=r.avatarUrl,this.roles=r.roles}static deserialize(r){return new e({providerId:t.fromKey(r.provider_id),id:t.fromKey(r.id),name:r.name,avatarUrl:r.avatar_url,roles:r.roles?.map(a=>i.fromJson(a)),metadata:r.metadata})}key(){return this.id.key()}static serialize(r){return{provider_id:r.providerId.key(),id:r.id.key(),name:r.name,avatar_url:r.avatarUrl,roles:r.roles?.map(a=>a.toJson()),metadata:r.metadata}}}export{e as Author};
2
+ //# sourceMappingURL=author.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/author.ts"],
4
+ "sourcesContent": ["import { Identifier } from '@omujs/omu';\n\nimport type { RoleJson } from './role.js';\nimport { Role } from './role.js';\n\nexport type AuthorMetadata = {\n url?: string;\n screen_id?: string;\n avatar_url?: string;\n description?: string;\n links?: string[];\n};\n\nexport type AuthorJson = {\n provider_id: string;\n id: string;\n metadata: AuthorMetadata;\n name?: string;\n avatar_url?: string;\n roles?: RoleJson[];\n};\n\nexport class Author {\n public providerId: Identifier;\n public id: Identifier;\n public metadata: AuthorMetadata;\n public name?: string;\n public avatarUrl?: string;\n public roles?: Role[];\n\n constructor(options: {\n providerId: Identifier;\n id: Identifier;\n metadata?: AuthorMetadata;\n name?: string;\n avatarUrl?: string;\n roles?: Role[];\n }) {\n this.providerId = options.providerId;\n this.id = options.id;\n this.metadata = options.metadata || {};\n this.name = options.name;\n this.avatarUrl = options.avatarUrl;\n this.roles = options.roles;\n }\n\n public static deserialize(info: AuthorJson): Author {\n return new Author({\n providerId: Identifier.fromKey(info.provider_id),\n id: Identifier.fromKey(info.id),\n name: info.name,\n avatarUrl: info.avatar_url,\n roles: info.roles?.map((role) => Role.fromJson(role)),\n metadata: info.metadata,\n });\n }\n\n key(): string {\n return this.id.key();\n }\n\n public static serialize(item: Author): AuthorJson {\n return {\n provider_id: item.providerId.key(),\n id: item.id.key(),\n name: item.name,\n avatar_url: item.avatarUrl,\n roles: item.roles?.map((role) => role.toJson()),\n metadata: item.metadata,\n };\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,MAAkB,aAG3B,OAAS,QAAAC,MAAY,YAmBd,MAAMC,CAAO,CACT,WACA,GACA,SACA,KACA,UACA,MAEP,YAAYC,EAOT,CACC,KAAK,WAAaA,EAAQ,WAC1B,KAAK,GAAKA,EAAQ,GAClB,KAAK,SAAWA,EAAQ,UAAY,CAAC,EACrC,KAAK,KAAOA,EAAQ,KACpB,KAAK,UAAYA,EAAQ,UACzB,KAAK,MAAQA,EAAQ,KACzB,CAEA,OAAc,YAAYC,EAA0B,CAChD,OAAO,IAAIF,EAAO,CACd,WAAYF,EAAW,QAAQI,EAAK,WAAW,EAC/C,GAAIJ,EAAW,QAAQI,EAAK,EAAE,EAC9B,KAAMA,EAAK,KACX,UAAWA,EAAK,WAChB,MAAOA,EAAK,OAAO,IAAKC,GAASJ,EAAK,SAASI,CAAI,CAAC,EACpD,SAAUD,EAAK,QACnB,CAAC,CACL,CAEA,KAAc,CACV,OAAO,KAAK,GAAG,IAAI,CACvB,CAEA,OAAc,UAAUE,EAA0B,CAC9C,MAAO,CACH,YAAaA,EAAK,WAAW,IAAI,EACjC,GAAIA,EAAK,GAAG,IAAI,EAChB,KAAMA,EAAK,KACX,WAAYA,EAAK,UACjB,MAAOA,EAAK,OAAO,IAAKD,GAASA,EAAK,OAAO,CAAC,EAC9C,SAAUC,EAAK,QACnB,CACJ,CACJ",
6
+ "names": ["Identifier", "Role", "Author", "options", "info", "role", "item"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ export type ChannelJson = {
3
+ provider_id: string;
4
+ id: string;
5
+ url: string;
6
+ name: string;
7
+ description: string;
8
+ active: boolean;
9
+ icon_url: string;
10
+ };
11
+ export declare class Channel {
12
+ providerId: Identifier;
13
+ id: Identifier;
14
+ url: string;
15
+ name: string;
16
+ description: string;
17
+ active: boolean;
18
+ iconUrl: string;
19
+ constructor(option: {
20
+ providerId: Identifier;
21
+ id: Identifier;
22
+ url: string;
23
+ name: string;
24
+ description: string;
25
+ active: boolean;
26
+ iconUrl: string;
27
+ });
28
+ static deserialize(json: ChannelJson): Channel;
29
+ key(): string;
30
+ static serialize(item: Channel): ChannelJson;
31
+ }
@@ -0,0 +1,2 @@
1
+ import{Identifier as r}from"@omujs/omu";class e{providerId;id;url;name;description;active;iconUrl;constructor(i){this.providerId=i.providerId,this.id=i.id,this.url=i.url,this.name=i.name,this.description=i.description,this.active=i.active,this.iconUrl=i.iconUrl}static deserialize(i){return new e({providerId:r.fromKey(i.provider_id),id:r.fromKey(i.id),url:i.url,name:i.name,description:i.description,active:i.active,iconUrl:i.icon_url})}key(){return this.id.key()}static serialize(i){return{provider_id:i.providerId.key(),id:i.id.key(),url:i.url,name:i.name,description:i.description,active:i.active,icon_url:i.iconUrl}}}export{e as Channel};
2
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/channel.ts"],
4
+ "sourcesContent": ["import { Identifier } from '@omujs/omu';\n\nexport type ChannelJson = {\n provider_id: string;\n id: string;\n url: string;\n name: string;\n description: string;\n active: boolean;\n icon_url: string;\n};\n\nexport class Channel {\n providerId: Identifier;\n id: Identifier;\n url: string;\n name: string;\n description: string;\n active: boolean;\n iconUrl: string;\n\n constructor(option: {\n providerId: Identifier;\n id: Identifier;\n url: string;\n name: string;\n description: string;\n active: boolean;\n iconUrl: string;\n }) {\n this.providerId = option.providerId;\n this.id = option.id;\n this.url = option.url;\n this.name = option.name;\n this.description = option.description;\n this.active = option.active;\n this.iconUrl = option.iconUrl;\n }\n\n public static deserialize(json: ChannelJson): Channel {\n return new Channel({\n providerId: Identifier.fromKey(json.provider_id),\n id: Identifier.fromKey(json.id),\n url: json.url,\n name: json.name,\n description: json.description,\n active: json.active,\n iconUrl: json.icon_url,\n });\n }\n\n key(): string {\n return this.id.key();\n }\n\n public static serialize(item: Channel): ChannelJson {\n return {\n provider_id: item.providerId.key(),\n id: item.id.key(),\n url: item.url,\n name: item.name,\n description: item.description,\n active: item.active,\n icon_url: item.iconUrl,\n };\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,MAAkB,aAYpB,MAAMC,CAAQ,CACjB,WACA,GACA,IACA,KACA,YACA,OACA,QAEA,YAAYC,EAQT,CACC,KAAK,WAAaA,EAAO,WACzB,KAAK,GAAKA,EAAO,GACjB,KAAK,IAAMA,EAAO,IAClB,KAAK,KAAOA,EAAO,KACnB,KAAK,YAAcA,EAAO,YAC1B,KAAK,OAASA,EAAO,OACrB,KAAK,QAAUA,EAAO,OAC1B,CAEA,OAAc,YAAYC,EAA4B,CAClD,OAAO,IAAIF,EAAQ,CACf,WAAYD,EAAW,QAAQG,EAAK,WAAW,EAC/C,GAAIH,EAAW,QAAQG,EAAK,EAAE,EAC9B,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,YAAaA,EAAK,YAClB,OAAQA,EAAK,OACb,QAASA,EAAK,QAClB,CAAC,CACL,CAEA,KAAc,CACV,OAAO,KAAK,GAAG,IAAI,CACvB,CAEA,OAAc,UAAUC,EAA4B,CAChD,MAAO,CACH,YAAaA,EAAK,WAAW,IAAI,EACjC,GAAIA,EAAK,GAAG,IAAI,EAChB,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,YAAaA,EAAK,YAClB,OAAQA,EAAK,OACb,SAAUA,EAAK,OACnB,CACJ,CACJ",
6
+ "names": ["Identifier", "Channel", "option", "json", "item"]
7
+ }
@@ -0,0 +1,24 @@
1
+ import { JsonType } from '@omujs/omu/serialize';
2
+ export interface ComponentType<T extends string, D extends JsonType = JsonType> {
3
+ type: T;
4
+ data: D;
5
+ }
6
+ export type Root = ComponentType<'root', Component[]>;
7
+ export type Text = ComponentType<'text', string>;
8
+ export type Image = ComponentType<'image', {
9
+ url: string;
10
+ id: string;
11
+ name?: string;
12
+ }>;
13
+ export type Asset = ComponentType<'asset', {
14
+ id: string;
15
+ }>;
16
+ export type Link = ComponentType<'link', {
17
+ url: string;
18
+ children: Component[];
19
+ }>;
20
+ export type System = ComponentType<'system', Component[]>;
21
+ export type Component = Root | Text | Image | Asset | Link | System;
22
+ export declare function children(component: Component): Component[];
23
+ export declare function walk(component: Component): Iterable<Component>;
24
+ export declare function format(component: Component): string;
@@ -0,0 +1,2 @@
1
+ function o(e){switch(e.type){case"root":return e.data;case"system":return e.data;case"link":return e.data.children;case"text":return[];case"image":return[];case"asset":return[]}}function*p(e){const t=[e];for(;t.length>0;){const n=t.pop();if(!n)return;yield n,t.push(...o(n).slice().reverse())}}function i(e){return[...p(e)].filter(t=>t.type==="text").map(t=>t.data).join("")}export{o as children,i as format,p as walk};
2
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/content.ts"],
4
+ "sourcesContent": ["import { JsonType } from '@omujs/omu/serialize';\n\nexport interface ComponentType<T extends string, D extends JsonType = JsonType> {\n type: T;\n data: D;\n};\n\nexport type Root = ComponentType<'root', Component[]>;\n\nexport type Text = ComponentType<'text', string>;\n\nexport type Image = ComponentType<'image', {\n url: string;\n id: string;\n name?: string;\n}>;\n\nexport type Asset = ComponentType<'asset', {\n id: string;\n}>;\n\nexport type Link = ComponentType<'link', {\n url: string;\n children: Component[];\n}>;\n\nexport type System = ComponentType<'system', Component[]>;\n\nexport type Component =\n | Root\n | Text\n | Image\n | Asset\n | Link\n | System;\n\nexport function children(component: Component): Component[] {\n switch (component.type) {\n case 'root': return component.data;\n case 'system': return component.data;\n case 'link': return component.data.children;\n case 'text': return [];\n case 'image': return [];\n case 'asset': return [];\n }\n}\n\nexport function *walk(component: Component): Iterable<Component> {\n const queue = [component];\n while (queue.length > 0) {\n const component = queue.pop();\n if (!component) return;\n yield component;\n queue.push(...children(component).slice().reverse());\n }\n}\n\nexport function format(component: Component): string {\n return [...walk(component)]\n .filter(it => it.type === 'text')\n .map(it => it.data).join('');\n}\n"],
5
+ "mappings": "AAoCO,SAASA,EAASC,EAAmC,CACxD,OAAQA,EAAU,KAAM,CACpB,IAAK,OAAQ,OAAOA,EAAU,KAC9B,IAAK,SAAU,OAAOA,EAAU,KAChC,IAAK,OAAQ,OAAOA,EAAU,KAAK,SACnC,IAAK,OAAQ,MAAO,CAAC,EACrB,IAAK,QAAS,MAAO,CAAC,EACtB,IAAK,QAAS,MAAO,CAAC,CAC1B,CACJ,CAEO,SAAUC,EAAKD,EAA2C,CAC7D,MAAME,EAAQ,CAACF,CAAS,EACxB,KAAOE,EAAM,OAAS,GAAG,CACrB,MAAMF,EAAYE,EAAM,IAAI,EAC5B,GAAI,CAACF,EAAW,OAChB,MAAMA,EACNE,EAAM,KAAK,GAAGH,EAASC,CAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CACvD,CACJ,CAEO,SAASG,EAAOH,EAA8B,CACjD,MAAO,CAAC,GAAGC,EAAKD,CAAS,CAAC,EACrB,OAAOI,GAAMA,EAAG,OAAS,MAAM,EAC/B,IAAIA,GAAMA,EAAG,IAAI,EAAE,KAAK,EAAE,CACnC",
6
+ "names": ["children", "component", "walk", "queue", "format", "it"]
7
+ }
@@ -0,0 +1,23 @@
1
+ export type GiftJson = {
2
+ id: string;
3
+ name?: string;
4
+ amount?: number;
5
+ is_paid?: boolean;
6
+ image_url?: string;
7
+ };
8
+ export declare class Gift {
9
+ id: string;
10
+ name?: string;
11
+ amount?: number;
12
+ isPaid?: boolean;
13
+ imageUrl?: string;
14
+ constructor(options: {
15
+ id: string;
16
+ name?: string;
17
+ amount?: number;
18
+ isPaid?: boolean;
19
+ imageUrl?: string;
20
+ });
21
+ static fromJson(options: GiftJson): Gift;
22
+ toJson(): GiftJson;
23
+ }
@@ -0,0 +1,2 @@
1
+ class a{id;name;amount;isPaid;imageUrl;constructor(i){this.id=i.id,this.name=i.name,this.amount=i.amount,this.isPaid=i.isPaid,this.imageUrl=i.imageUrl}static fromJson(i){return new a({id:i.id,name:i.name,amount:i.amount,isPaid:i.is_paid,imageUrl:i.image_url})}toJson(){return{id:this.id,name:this.name,amount:this.amount,is_paid:this.isPaid,image_url:this.imageUrl}}}export{a as Gift};
2
+ //# sourceMappingURL=gift.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/gift.ts"],
4
+ "sourcesContent": ["export type GiftJson = {\n id: string;\n name?: string;\n amount?: number;\n is_paid?: boolean;\n image_url?: string;\n};\n\nexport class Gift {\n id: string;\n name?: string;\n amount?: number;\n isPaid?: boolean;\n imageUrl?: string;\n\n constructor(options: {\n id: string;\n name?: string;\n amount?: number;\n isPaid?: boolean;\n imageUrl?: string;\n }) {\n this.id = options.id;\n this.name = options.name;\n this.amount = options.amount;\n this.isPaid = options.isPaid;\n this.imageUrl = options.imageUrl;\n }\n\n static fromJson(options: GiftJson): Gift {\n return new Gift({\n id: options.id,\n name: options.name,\n amount: options.amount,\n isPaid: options.is_paid,\n imageUrl: options.image_url,\n });\n }\n\n toJson(): GiftJson {\n return {\n id: this.id,\n name: this.name,\n amount: this.amount,\n is_paid: this.isPaid,\n image_url: this.imageUrl,\n };\n }\n}\n"],
5
+ "mappings": "AAQO,MAAMA,CAAK,CACd,GACA,KACA,OACA,OACA,SAEA,YAAYC,EAMT,CACC,KAAK,GAAKA,EAAQ,GAClB,KAAK,KAAOA,EAAQ,KACpB,KAAK,OAASA,EAAQ,OACtB,KAAK,OAASA,EAAQ,OACtB,KAAK,SAAWA,EAAQ,QAC5B,CAEA,OAAO,SAASA,EAAyB,CACrC,OAAO,IAAID,EAAK,CACZ,GAAIC,EAAQ,GACZ,KAAMA,EAAQ,KACd,OAAQA,EAAQ,OAChB,OAAQA,EAAQ,QAChB,SAAUA,EAAQ,SACtB,CAAC,CACL,CAEA,QAAmB,CACf,MAAO,CACH,GAAI,KAAK,GACT,KAAM,KAAK,KACX,OAAQ,KAAK,OACb,QAAS,KAAK,OACd,UAAW,KAAK,QACpB,CACJ,CACJ",
6
+ "names": ["Gift", "options"]
7
+ }
@@ -0,0 +1,13 @@
1
+ export { Author, type AuthorJson } from './author.js';
2
+ export { Channel, type ChannelJson } from './channel.js';
3
+ export { type Asset, type Component, type ComponentType, type Image, type Link, type Root, type System, type Text } from './content.js';
4
+ export { Gift, type GiftJson } from './gift.js';
5
+ export { Message, type MessageJson } from './message.js';
6
+ export { Paid, type PaidJson } from './paid.js';
7
+ export { Provider, type ProviderJson } from './provider.js';
8
+ export { Reaction, type ReactionJson } from './reaction.js';
9
+ export { Role, type RoleJson } from './role.js';
10
+ export { Room, type RoomJson } from './room.js';
11
+ export { Vote, type Choice, type VoteJson } from './vote.js';
12
+ export { Content };
13
+ import * as Content from './content.js';
@@ -0,0 +1,2 @@
1
+ import{Author as p}from"./author.js";import{Channel as n}from"./channel.js";import{Gift as s}from"./gift.js";import{Message as x}from"./message.js";import{Paid as a}from"./paid.js";import{Provider as R}from"./provider.js";import{Reaction as h}from"./reaction.js";import{Role as l}from"./role.js";import{Room as c}from"./room.js";import{Vote as A}from"./vote.js";import*as o from"./content.js";export{p as Author,n as Channel,o as Content,s as Gift,x as Message,a as Paid,R as Provider,h as Reaction,l as Role,c as Room,A as Vote};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/index.ts"],
4
+ "sourcesContent": ["export { Author, type AuthorJson } from './author.js';\nexport { Channel, type ChannelJson } from './channel.js';\nexport { type Asset, type Component, type ComponentType, type Image, type Link, type Root, type System, type Text } from './content.js';\nexport { Gift, type GiftJson } from './gift.js';\nexport { Message, type MessageJson } from './message.js';\nexport { Paid, type PaidJson } from './paid.js';\nexport { Provider, type ProviderJson } from './provider.js';\nexport { Reaction, type ReactionJson } from './reaction.js';\nexport { Role, type RoleJson } from './role.js';\nexport { Room, type RoomJson } from './room.js';\nexport { Vote, type Choice, type VoteJson } from './vote.js';\nexport { Content };\nimport * as Content from './content.js';\n\n"],
5
+ "mappings": "AAAA,OAAS,UAAAA,MAA+B,cACxC,OAAS,WAAAC,MAAiC,eAE1C,OAAS,QAAAC,MAA2B,YACpC,OAAS,WAAAC,MAAiC,eAC1C,OAAS,QAAAC,MAA2B,YACpC,OAAS,YAAAC,MAAmC,gBAC5C,OAAS,YAAAC,MAAmC,gBAC5C,OAAS,QAAAC,MAA2B,YACpC,OAAS,QAAAC,MAA2B,YACpC,OAAS,QAAAC,MAAwC,YAEjD,UAAYC,MAAa",
6
+ "names": ["Author", "Channel", "Gift", "Message", "Paid", "Provider", "Reaction", "Role", "Room", "Vote", "Content"]
7
+ }
@@ -0,0 +1,40 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ import * as content from './content.js';
3
+ import type { GiftJson } from './gift.js';
4
+ import { Gift } from './gift.js';
5
+ import type { PaidJson } from './paid.js';
6
+ import { Paid } from './paid.js';
7
+ export type MessageJson = {
8
+ room_id: string;
9
+ id: string;
10
+ created_at: string;
11
+ author_id?: string;
12
+ content?: content.Component;
13
+ paid?: PaidJson;
14
+ gifts?: GiftJson[];
15
+ deleted?: boolean;
16
+ };
17
+ export declare class Message {
18
+ roomId: Identifier;
19
+ id: Identifier;
20
+ authorId?: Identifier;
21
+ content?: content.Component;
22
+ paid?: Paid;
23
+ gifts?: Gift[];
24
+ createdAt: Date;
25
+ deleted?: boolean;
26
+ constructor(options: {
27
+ roomId: Identifier;
28
+ id: Identifier;
29
+ authorId?: Identifier;
30
+ createdAt: Date;
31
+ content?: content.Component;
32
+ paid?: Paid;
33
+ gifts?: Gift[];
34
+ deleted?: boolean;
35
+ });
36
+ static serialize(data: Message): MessageJson;
37
+ static deserialize(info: MessageJson): Message;
38
+ get text(): string;
39
+ key(): string;
40
+ }
@@ -0,0 +1,2 @@
1
+ import{Identifier as i}from"@omujs/omu";import*as d from"./content.js";import{Gift as o}from"./gift.js";import{Paid as n}from"./paid.js";class r{roomId;id;authorId;content;paid;gifts;createdAt;deleted;constructor(t){if(!(t.createdAt instanceof Date))throw new Error("created_at must be a Date");this.roomId=t.roomId,this.id=t.id,this.authorId=t.authorId,this.content=t.content,this.paid=t.paid,this.gifts=t.gifts,this.createdAt=t.createdAt,this.deleted=t.deleted}static serialize(t){return{room_id:t.roomId.key(),id:t.id.key(),author_id:t.authorId?.key(),created_at:t.createdAt.toISOString(),content:t.content,paid:t.paid?.toJson(),gifts:t.gifts?.map(e=>e.toJson()),deleted:t.deleted}}static deserialize(t){return new r({roomId:i.fromKey(t.room_id),id:i.fromKey(t.id),authorId:t.author_id?i.fromKey(t.author_id):void 0,content:t.content,paid:t.paid&&n.fromJson(t.paid),gifts:t.gifts?.map(e=>o.fromJson(e)),createdAt:new Date(t.created_at),deleted:t.deleted})}get text(){return this.content?d.format(this.content):""}key(){return this.id.key()}}export{r as Message};
2
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/message.ts"],
4
+ "sourcesContent": ["import { Identifier } from '@omujs/omu';\nimport * as content from './content.js';\nimport type { GiftJson } from './gift.js';\nimport { Gift } from './gift.js';\nimport type { PaidJson } from './paid.js';\nimport { Paid } from './paid.js';\n\nexport type MessageJson = {\n room_id: string;\n id: string;\n created_at: string; // ISO 8601 date string\n author_id?: string;\n content?: content.Component;\n paid?: PaidJson;\n gifts?: GiftJson[];\n deleted?: boolean;\n};\n\nexport class Message {\n public roomId: Identifier;\n public id: Identifier;\n public authorId?: Identifier;\n public content?: content.Component;\n public paid?: Paid;\n public gifts?: Gift[];\n public createdAt: Date;\n public deleted?: boolean;\n\n constructor(options: {\n roomId: Identifier;\n id: Identifier;\n authorId?: Identifier;\n createdAt: Date;\n content?: content.Component;\n paid?: Paid;\n gifts?: Gift[];\n deleted?: boolean;\n }) {\n if (!(options.createdAt instanceof Date)) {\n throw new Error('created_at must be a Date');\n }\n this.roomId = options.roomId;\n this.id = options.id;\n this.authorId = options.authorId;\n this.content = options.content;\n this.paid = options.paid;\n this.gifts = options.gifts;\n this.createdAt = options.createdAt;\n this.deleted = options.deleted;\n }\n\n public static serialize(data: Message): MessageJson {\n return {\n room_id: data.roomId.key(),\n id: data.id.key(),\n author_id: data.authorId?.key(),\n created_at: data.createdAt.toISOString(),\n content: data.content,\n paid: data.paid?.toJson(),\n gifts: data.gifts?.map((gift) => gift.toJson()),\n deleted: data.deleted,\n };\n }\n\n public static deserialize(info: MessageJson): Message {\n return new Message({\n roomId: Identifier.fromKey(info.room_id),\n id: Identifier.fromKey(info.id),\n authorId: info.author_id ? Identifier.fromKey(info.author_id) : undefined,\n content: info.content,\n paid: info.paid && Paid.fromJson(info.paid),\n gifts: info.gifts?.map((gift) => Gift.fromJson(gift)),\n createdAt: new Date(info.created_at),\n deleted: info.deleted,\n });\n }\n\n get text(): string {\n if (!this.content) {\n return '';\n }\n return content.format(this.content);\n }\n\n key(): string {\n return this.id.key();\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,MAAkB,aAC3B,UAAYC,MAAa,eAEzB,OAAS,QAAAC,MAAY,YAErB,OAAS,QAAAC,MAAY,YAad,MAAMC,CAAQ,CACV,OACA,GACA,SACA,QACA,KACA,MACA,UACA,QAEP,YAAYC,EAST,CACC,GAAI,EAAEA,EAAQ,qBAAqB,MAC/B,MAAM,IAAI,MAAM,2BAA2B,EAE/C,KAAK,OAASA,EAAQ,OACtB,KAAK,GAAKA,EAAQ,GAClB,KAAK,SAAWA,EAAQ,SACxB,KAAK,QAAUA,EAAQ,QACvB,KAAK,KAAOA,EAAQ,KACpB,KAAK,MAAQA,EAAQ,MACrB,KAAK,UAAYA,EAAQ,UACzB,KAAK,QAAUA,EAAQ,OAC3B,CAEA,OAAc,UAAUC,EAA4B,CAChD,MAAO,CACH,QAASA,EAAK,OAAO,IAAI,EACzB,GAAIA,EAAK,GAAG,IAAI,EAChB,UAAWA,EAAK,UAAU,IAAI,EAC9B,WAAYA,EAAK,UAAU,YAAY,EACvC,QAASA,EAAK,QACd,KAAMA,EAAK,MAAM,OAAO,EACxB,MAAOA,EAAK,OAAO,IAAKC,GAASA,EAAK,OAAO,CAAC,EAC9C,QAASD,EAAK,OAClB,CACJ,CAEA,OAAc,YAAYE,EAA4B,CAClD,OAAO,IAAIJ,EAAQ,CACf,OAAQJ,EAAW,QAAQQ,EAAK,OAAO,EACvC,GAAIR,EAAW,QAAQQ,EAAK,EAAE,EAC9B,SAAUA,EAAK,UAAYR,EAAW,QAAQQ,EAAK,SAAS,EAAI,OAChE,QAASA,EAAK,QACd,KAAMA,EAAK,MAAQL,EAAK,SAASK,EAAK,IAAI,EAC1C,MAAOA,EAAK,OAAO,IAAKD,GAASL,EAAK,SAASK,CAAI,CAAC,EACpD,UAAW,IAAI,KAAKC,EAAK,UAAU,EACnC,QAASA,EAAK,OAClB,CAAC,CACL,CAEA,IAAI,MAAe,CACf,OAAK,KAAK,QAGHP,EAAQ,OAAO,KAAK,OAAO,EAFvB,EAGf,CAEA,KAAc,CACV,OAAO,KAAK,GAAG,IAAI,CACvB,CACJ",
6
+ "names": ["Identifier", "content", "Gift", "Paid", "Message", "options", "data", "gift", "info"]
7
+ }
@@ -0,0 +1,11 @@
1
+ export type PaidJson = {
2
+ amount: number;
3
+ currency: string;
4
+ };
5
+ export declare class Paid {
6
+ amount: number;
7
+ currency: string;
8
+ constructor(amount: number, currency: string);
9
+ static fromJson(options: PaidJson): Paid;
10
+ toJson(): PaidJson;
11
+ }
@@ -0,0 +1,2 @@
1
+ class n{constructor(r,t){this.amount=r;this.currency=t}static fromJson(r){return new n(r.amount,r.currency)}toJson(){return{amount:this.amount,currency:this.currency}}}export{n as Paid};
2
+ //# sourceMappingURL=paid.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/paid.ts"],
4
+ "sourcesContent": ["export type PaidJson = {\n amount: number;\n currency: string;\n};\n\nexport class Paid {\n constructor(\n public amount: number,\n public currency: string,\n ) { }\n\n static fromJson(options: PaidJson): Paid {\n return new Paid(options.amount, options.currency);\n }\n\n toJson(): PaidJson {\n return {\n amount: this.amount,\n currency: this.currency,\n };\n }\n}\n"],
5
+ "mappings": "AAKO,MAAMA,CAAK,CACd,YACWC,EACAC,EACT,CAFS,YAAAD,EACA,cAAAC,CACP,CAEJ,OAAO,SAASC,EAAyB,CACrC,OAAO,IAAIH,EAAKG,EAAQ,OAAQA,EAAQ,QAAQ,CACpD,CAEA,QAAmB,CACf,MAAO,CACH,OAAQ,KAAK,OACb,SAAU,KAAK,QACnB,CACJ,CACJ",
6
+ "names": ["Paid", "amount", "currency", "options"]
7
+ }
@@ -0,0 +1,34 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ export type ProviderJson = {
3
+ id: string;
4
+ url: string;
5
+ name: string;
6
+ version: string;
7
+ repository_url: string;
8
+ image_url?: string;
9
+ description: string;
10
+ regex: string;
11
+ };
12
+ export declare class Provider {
13
+ id: Identifier;
14
+ url: string;
15
+ name: string;
16
+ version: string;
17
+ repositoryUrl: string;
18
+ imageUrl?: string;
19
+ description: string;
20
+ regex: string;
21
+ constructor(options: {
22
+ id: Identifier;
23
+ url: string;
24
+ name: string;
25
+ version: string;
26
+ repository_url: string;
27
+ image_url?: string;
28
+ description: string;
29
+ regex: string;
30
+ });
31
+ static serialize(item: Provider): ProviderJson;
32
+ static deserialize(data: ProviderJson): Provider;
33
+ key(): string;
34
+ }
@@ -0,0 +1,2 @@
1
+ import{Identifier as e}from"@omujs/omu";class i{id;url;name;version;repositoryUrl;imageUrl;description;regex;constructor(r){this.id=r.id,this.url=r.url,this.name=r.name,this.version=r.version,this.repositoryUrl=r.repository_url,this.imageUrl=r.image_url,this.description=r.description,this.regex=r.regex}static serialize(r){return{id:r.id.key(),url:r.url,name:r.name,version:r.version,repository_url:r.repositoryUrl,image_url:r.imageUrl,description:r.description,regex:r.regex}}static deserialize(r){return new i({id:e.fromKey(r.id),url:r.url,name:r.name,version:r.version,repository_url:r.repository_url,image_url:r.image_url,description:r.description,regex:r.regex})}key(){return this.id.key()}}export{i as Provider};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/provider.ts"],
4
+ "sourcesContent": ["import { Identifier } from '@omujs/omu';\n\nexport type ProviderJson = {\n id: string;\n url: string;\n name: string;\n version: string;\n repository_url: string;\n image_url?: string;\n description: string;\n regex: string;\n};\n\nexport class Provider {\n public id: Identifier;\n public url: string;\n public name: string;\n public version: string;\n public repositoryUrl: string;\n public imageUrl?: string;\n public description: string;\n public regex: string;\n\n constructor(options: {\n id: Identifier;\n url: string;\n name: string;\n version: string;\n repository_url: string;\n image_url?: string;\n description: string;\n regex: string;\n }) {\n this.id = options.id;\n this.url = options.url;\n this.name = options.name;\n this.version = options.version;\n this.repositoryUrl = options.repository_url;\n this.imageUrl = options.image_url;\n this.description = options.description;\n this.regex = options.regex;\n }\n\n public static serialize(item: Provider): ProviderJson {\n return {\n id: item.id.key(),\n url: item.url,\n name: item.name,\n version: item.version,\n repository_url: item.repositoryUrl,\n image_url: item.imageUrl,\n description: item.description,\n regex: item.regex,\n };\n }\n\n public static deserialize(data: ProviderJson): Provider {\n return new Provider({\n id: Identifier.fromKey(data.id),\n url: data.url,\n name: data.name,\n version: data.version,\n repository_url: data.repository_url,\n image_url: data.image_url,\n description: data.description,\n regex: data.regex,\n });\n }\n\n key(): string {\n return this.id.key();\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,MAAkB,aAapB,MAAMC,CAAS,CACX,GACA,IACA,KACA,QACA,cACA,SACA,YACA,MAEP,YAAYC,EAST,CACC,KAAK,GAAKA,EAAQ,GAClB,KAAK,IAAMA,EAAQ,IACnB,KAAK,KAAOA,EAAQ,KACpB,KAAK,QAAUA,EAAQ,QACvB,KAAK,cAAgBA,EAAQ,eAC7B,KAAK,SAAWA,EAAQ,UACxB,KAAK,YAAcA,EAAQ,YAC3B,KAAK,MAAQA,EAAQ,KACzB,CAEA,OAAc,UAAUC,EAA8B,CAClD,MAAO,CACH,GAAIA,EAAK,GAAG,IAAI,EAChB,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,QAASA,EAAK,QACd,eAAgBA,EAAK,cACrB,UAAWA,EAAK,SAChB,YAAaA,EAAK,YAClB,MAAOA,EAAK,KAChB,CACJ,CAEA,OAAc,YAAYC,EAA8B,CACpD,OAAO,IAAIH,EAAS,CAChB,GAAID,EAAW,QAAQI,EAAK,EAAE,EAC9B,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,QAASA,EAAK,QACd,eAAgBA,EAAK,eACrB,UAAWA,EAAK,UAChB,YAAaA,EAAK,YAClB,MAAOA,EAAK,KAChB,CAAC,CACL,CAEA,KAAc,CACV,OAAO,KAAK,GAAG,IAAI,CACvB,CACJ",
6
+ "names": ["Identifier", "Provider", "options", "item", "data"]
7
+ }
@@ -0,0 +1,21 @@
1
+ import { Identifier } from '@omujs/omu';
2
+ export type ReactionJson = {
3
+ room_id: string;
4
+ reactions: {
5
+ [key: string]: number;
6
+ };
7
+ };
8
+ export declare class Reaction {
9
+ roomId: Identifier;
10
+ reactions: {
11
+ [key: string]: number;
12
+ };
13
+ constructor(options: {
14
+ roomId: Identifier;
15
+ reactions: {
16
+ [key: string]: number;
17
+ };
18
+ });
19
+ static deserialize(data: ReactionJson): Reaction;
20
+ static serialize(item: Reaction): ReactionJson;
21
+ }
@@ -0,0 +1,2 @@
1
+ import{Identifier as e}from"@omujs/omu";class o{roomId;reactions;constructor(r){this.roomId=r.roomId,this.reactions=r.reactions}static deserialize(r){return new o({roomId:e.fromKey(r.room_id),reactions:r.reactions})}static serialize(r){return{room_id:r.roomId.key(),reactions:r.reactions}}}export{o as Reaction};
2
+ //# sourceMappingURL=reaction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/models/reaction.ts"],
4
+ "sourcesContent": ["import { Identifier } from '@omujs/omu';\n\nexport type ReactionJson = {\n room_id: string;\n reactions: {\n [key: string]: number;\n };\n};\n\nexport class Reaction {\n public roomId: Identifier;\n public reactions: {\n [key: string]: number;\n };\n\n constructor(options: {\n roomId: Identifier;\n reactions: {\n [key: string]: number;\n };\n }) {\n this.roomId = options.roomId;\n this.reactions = options.reactions;\n }\n\n public static deserialize(data: ReactionJson): Reaction {\n return new Reaction({\n roomId: Identifier.fromKey(data.room_id),\n reactions: data.reactions,\n });\n }\n\n public static serialize(item: Reaction): ReactionJson {\n return {\n room_id: item.roomId.key(),\n reactions: item.reactions,\n };\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,cAAAA,MAAkB,aASpB,MAAMC,CAAS,CACX,OACA,UAIP,YAAYC,EAKT,CACC,KAAK,OAASA,EAAQ,OACtB,KAAK,UAAYA,EAAQ,SAC7B,CAEA,OAAc,YAAYC,EAA8B,CACpD,OAAO,IAAIF,EAAS,CAChB,OAAQD,EAAW,QAAQG,EAAK,OAAO,EACvC,UAAWA,EAAK,SACpB,CAAC,CACL,CAEA,OAAc,UAAUC,EAA8B,CAClD,MAAO,CACH,QAASA,EAAK,OAAO,IAAI,EACzB,UAAWA,EAAK,SACpB,CACJ,CACJ",
6
+ "names": ["Identifier", "Reaction", "options", "data", "item"]
7
+ }