@omujs/chat 0.9.10 → 0.9.26
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.
- package/CHANGELOG.md +146 -0
- package/README.md +19 -1
- package/dist/dts/chat.d.ts +18 -19
- package/dist/dts/const.d.ts +2 -3
- package/dist/dts/event/event-types.d.ts +13 -8
- package/dist/dts/event/event.d.ts +24 -25
- package/dist/dts/event/index.d.ts +2 -3
- package/dist/dts/index.d.ts +6 -5
- package/dist/dts/models/author.d.ts +32 -35
- package/dist/dts/models/channel.d.ts +28 -31
- package/dist/dts/models/content.d.ts +26 -84
- package/dist/dts/models/gift.d.ts +20 -22
- package/dist/dts/models/index.d.ts +13 -12
- package/dist/dts/models/message.d.ts +37 -40
- package/dist/dts/models/paid.d.ts +8 -10
- package/dist/dts/models/provider.d.ts +31 -34
- package/dist/dts/models/reaction.d.ts +18 -20
- package/dist/dts/models/role.d.ts +23 -25
- package/dist/dts/models/room.d.ts +39 -42
- package/dist/dts/models/vote.d.ts +28 -31
- package/dist/dts/permissions.d.ts +7 -7
- package/dist/esm/chat.js +7652 -112
- package/dist/esm/const.js +4751 -3
- package/dist/esm/event/event-types.js +75 -9
- package/dist/esm/event/event.js +101 -75
- package/dist/esm/event/index.js +115 -3
- package/dist/esm/index.js +7698 -5
- package/dist/esm/models/author.js +4823 -38
- package/dist/esm/models/channel.js +4789 -41
- package/dist/esm/models/content.js +39 -168
- package/dist/esm/models/gift.js +39 -32
- package/dist/esm/models/index.js +5190 -12
- package/dist/esm/models/message.js +4886 -57
- package/dist/esm/models/paid.js +24 -17
- package/dist/esm/models/provider.js +4792 -44
- package/dist/esm/models/reaction.js +4763 -15
- package/dist/esm/models/role.js +43 -36
- package/dist/esm/models/room.js +4788 -40
- package/dist/esm/models/vote.js +4784 -36
- package/dist/esm/permissions.js +4764 -8
- package/package.json +26 -37
- package/src/chat.ts +49 -43
- package/src/const.ts +2 -2
- package/src/event/event-types.ts +13 -7
- package/src/event/event.ts +18 -18
- package/src/event/index.ts +2 -1
- package/src/index.ts +5 -4
- package/src/models/author.ts +15 -17
- package/src/models/channel.ts +11 -13
- package/src/models/content.ts +42 -206
- package/src/models/gift.ts +1 -3
- package/src/models/index.ts +14 -11
- package/src/models/message.ts +19 -22
- package/src/models/paid.ts +1 -3
- package/src/models/provider.ts +16 -18
- package/src/models/reaction.ts +5 -6
- package/src/models/role.ts +1 -3
- package/src/models/room.ts +11 -13
- package/src/models/vote.ts +9 -11
- package/src/permissions.ts +8 -7
- package/tsconfig.json +5 -2
- package/tsconfig.tsbuildinfo +1 -0
- package/LICENSE +0 -21
- package/dist/dts/chat.d.ts.map +0 -1
- package/dist/dts/const.d.ts.map +0 -1
- package/dist/dts/event/event-types.d.ts.map +0 -1
- package/dist/dts/event/event.d.ts.map +0 -1
- package/dist/dts/event/index.d.ts.map +0 -1
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/models/author.d.ts.map +0 -1
- package/dist/dts/models/channel.d.ts.map +0 -1
- package/dist/dts/models/content.d.ts.map +0 -1
- package/dist/dts/models/gift.d.ts.map +0 -1
- package/dist/dts/models/index.d.ts.map +0 -1
- package/dist/dts/models/message.d.ts.map +0 -1
- package/dist/dts/models/paid.d.ts.map +0 -1
- package/dist/dts/models/provider.d.ts.map +0 -1
- package/dist/dts/models/reaction.d.ts.map +0 -1
- package/dist/dts/models/role.d.ts.map +0 -1
- package/dist/dts/models/room.d.ts.map +0 -1
- package/dist/dts/models/vote.d.ts.map +0 -1
- package/dist/dts/permissions.d.ts.map +0 -1
- package/dist/esm/chat.js.map +0 -1
- package/dist/esm/const.js.map +0 -1
- package/dist/esm/event/event-types.js.map +0 -1
- package/dist/esm/event/event.js.map +0 -1
- package/dist/esm/event/index.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/models/author.js.map +0 -1
- package/dist/esm/models/channel.js.map +0 -1
- package/dist/esm/models/content.js.map +0 -1
- package/dist/esm/models/gift.js.map +0 -1
- package/dist/esm/models/index.js.map +0 -1
- package/dist/esm/models/message.js.map +0 -1
- package/dist/esm/models/paid.js.map +0 -1
- package/dist/esm/models/provider.js.map +0 -1
- package/dist/esm/models/reaction.js.map +0 -1
- package/dist/esm/models/role.js.map +0 -1
- package/dist/esm/models/room.js.map +0 -1
- package/dist/esm/models/vote.js.map +0 -1
- package/dist/esm/permissions.js.map +0 -1
- package/eslint.config.js +0 -6
package/package.json
CHANGED
|
@@ -1,39 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
"type": "module",
|
|
3
|
+
"name": "@omujs/chat",
|
|
4
|
+
"version": "0.9.26",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"import": "./dist/esm/index.js",
|
|
8
|
+
"types": "./dist/dts/index.d.ts"
|
|
9
|
+
},
|
|
10
|
+
"./*": {
|
|
11
|
+
"import": "./dist/esm/*/index.js",
|
|
12
|
+
"types": "./dist/dts/*/index.d.js"
|
|
13
|
+
}
|
|
9
14
|
},
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
"dependencies": {
|
|
26
|
-
"@omujs/omu": "0.9.10"
|
|
27
|
-
},
|
|
28
|
-
"gitHead": "04559d5aec52117d707e0d554ee429b858da522a",
|
|
29
|
-
"scripts": {
|
|
30
|
-
"build": "pnpm run ts",
|
|
31
|
-
"dev": "pnpm run watch",
|
|
32
|
-
"ts": "pnpm run ts-esm && pnpm run ts-dts",
|
|
33
|
-
"ts-dts": "tsc --outDir dist/dts --declaration true --emitDeclarationOnly true --declarationMap true",
|
|
34
|
-
"ts-esm": "tsc --outDir dist/esm",
|
|
35
|
-
"watch": "nodemon -w src -e ts,json --exec \"pnpm --workspace-root build --only @omujs/chat\"",
|
|
36
|
-
"lint": "eslint .",
|
|
37
|
-
"fix": "eslint . --fix"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "bun ../../scripts/package-helper.ts --glob --entrypoint \"src/**/*.ts\" --outdir \"dist/esm\" --dtsdir \"../dts\" --root \"src/\"",
|
|
17
|
+
"dev": "bun run watch",
|
|
18
|
+
"watch": "bun ../../scripts/package-helper.ts --glob --entrypoint \"src/**/*.ts\" --outdir \"dist/esm\" --dtsdir \"../dts\" --root \"src/\" --watch"
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/OMUAPPS/omuapps"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@omujs/omu": "0.9.26"
|
|
26
|
+
},
|
|
27
|
+
"gitHead": "04559d5aec52117d707e0d554ee429b858da522a"
|
|
28
|
+
}
|
package/src/chat.ts
CHANGED
|
@@ -1,86 +1,92 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import type { Omu } from '@omujs/omu';
|
|
2
|
+
import { Serializer } from '@omujs/omu';
|
|
3
|
+
import { EndpointType } from '@omujs/omu/api/endpoint';
|
|
4
|
+
import type { Signal } from '@omujs/omu/api/signal';
|
|
5
|
+
import { SignalType } from '@omujs/omu/api/signal';
|
|
6
|
+
import type { Table } from '@omujs/omu/api/table';
|
|
7
|
+
import { TableType } from '@omujs/omu/api/table';
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
import type { EventHandler, EventSource } from './event
|
|
11
|
-
import { EventRegistry } from './event
|
|
12
|
-
import { Author, Channel, Message, Provider, Reaction, Room, Vote } from './models
|
|
9
|
+
import { PLUGIN_ID } from './const';
|
|
10
|
+
import type { EventHandler, EventSource } from './event';
|
|
11
|
+
import { EventRegistry } from './event';
|
|
12
|
+
import { Author, Channel, Message, Provider, Reaction, Room, Vote } from './models';
|
|
13
13
|
import {
|
|
14
14
|
CHAT_CHANNEL_TREE_PERMISSION_ID,
|
|
15
15
|
CHAT_PERMISSION_ID,
|
|
16
16
|
CHAT_READ_PERMISSION_ID,
|
|
17
17
|
CHAT_WRITE_PERMISSION_ID,
|
|
18
|
-
} from './permissions
|
|
18
|
+
} from './permissions';
|
|
19
19
|
|
|
20
|
-
const MESSAGE_TABLE_TYPE = TableType.
|
|
20
|
+
const MESSAGE_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {
|
|
21
21
|
name: 'messages',
|
|
22
|
-
|
|
22
|
+
serializer: Message,
|
|
23
|
+
key: (item) => item.key(),
|
|
23
24
|
permissions: {
|
|
24
25
|
all: CHAT_PERMISSION_ID,
|
|
25
26
|
read: CHAT_READ_PERMISSION_ID,
|
|
26
27
|
write: CHAT_WRITE_PERMISSION_ID,
|
|
27
28
|
},
|
|
28
29
|
});
|
|
29
|
-
const AUTHOR_TABLE_TYPE = TableType.
|
|
30
|
+
const AUTHOR_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {
|
|
30
31
|
name: 'authors',
|
|
31
|
-
|
|
32
|
+
serializer: Author,
|
|
33
|
+
key: (item) => item.key(),
|
|
32
34
|
permissions: {
|
|
33
35
|
all: CHAT_PERMISSION_ID,
|
|
34
36
|
read: CHAT_READ_PERMISSION_ID,
|
|
35
37
|
write: CHAT_WRITE_PERMISSION_ID,
|
|
36
38
|
},
|
|
37
39
|
});
|
|
38
|
-
const CHANNEL_TABLE_TYPE = TableType.
|
|
40
|
+
const CHANNEL_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {
|
|
39
41
|
name: 'channels',
|
|
40
|
-
|
|
42
|
+
serializer: Channel,
|
|
43
|
+
key: (item) => item.key(),
|
|
41
44
|
permissions: {
|
|
42
45
|
all: CHAT_PERMISSION_ID,
|
|
43
46
|
read: CHAT_READ_PERMISSION_ID,
|
|
44
47
|
write: CHAT_WRITE_PERMISSION_ID,
|
|
45
48
|
},
|
|
46
49
|
});
|
|
47
|
-
const PROVIDER_TABLE_TYPE = TableType.
|
|
50
|
+
const PROVIDER_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {
|
|
48
51
|
name: 'providers',
|
|
49
|
-
|
|
52
|
+
serializer: Provider,
|
|
53
|
+
key: (item) => item.key(),
|
|
50
54
|
permissions: {
|
|
51
55
|
all: CHAT_PERMISSION_ID,
|
|
52
56
|
read: CHAT_READ_PERMISSION_ID,
|
|
53
57
|
write: CHAT_WRITE_PERMISSION_ID,
|
|
54
58
|
},
|
|
55
59
|
});
|
|
56
|
-
const ROOM_TABLE_TYPE = TableType.
|
|
60
|
+
const ROOM_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {
|
|
57
61
|
name: 'rooms',
|
|
58
|
-
|
|
62
|
+
serializer: Room,
|
|
63
|
+
key: (item) => item.key(),
|
|
59
64
|
permissions: {
|
|
60
65
|
all: CHAT_PERMISSION_ID,
|
|
61
66
|
read: CHAT_READ_PERMISSION_ID,
|
|
62
67
|
write: CHAT_WRITE_PERMISSION_ID,
|
|
63
68
|
},
|
|
64
69
|
});
|
|
65
|
-
const VOTE_TABLE_TYPE = TableType.
|
|
70
|
+
const VOTE_TABLE_TYPE = TableType.createJson(PLUGIN_ID, {
|
|
66
71
|
name: 'votes',
|
|
67
|
-
|
|
72
|
+
serializer: Vote,
|
|
73
|
+
key: (item) => item.key(),
|
|
68
74
|
permissions: {
|
|
69
75
|
all: CHAT_PERMISSION_ID,
|
|
70
76
|
read: CHAT_READ_PERMISSION_ID,
|
|
71
77
|
write: CHAT_WRITE_PERMISSION_ID,
|
|
72
78
|
},
|
|
73
79
|
});
|
|
74
|
-
const CREATE_CHANNEL_TREE_ENDPOINT = EndpointType.createJson(
|
|
80
|
+
const CREATE_CHANNEL_TREE_ENDPOINT = EndpointType.createJson(PLUGIN_ID, {
|
|
75
81
|
name: 'create_channel_tree',
|
|
76
82
|
requestSerializer: Serializer.noop<string>(),
|
|
77
|
-
responseSerializer: Serializer.
|
|
83
|
+
responseSerializer: Serializer.of(Channel).toArray(),
|
|
78
84
|
permissionId: CHAT_CHANNEL_TREE_PERMISSION_ID,
|
|
79
85
|
});
|
|
80
|
-
const REACTION_SIGNAL = SignalType.createJson(
|
|
86
|
+
const REACTION_SIGNAL = SignalType.createJson(PLUGIN_ID, {
|
|
81
87
|
name: 'reaction',
|
|
82
|
-
serializer:
|
|
83
|
-
permissions:
|
|
88
|
+
serializer: Reaction,
|
|
89
|
+
permissions: { all: CHAT_PERMISSION_ID },
|
|
84
90
|
});
|
|
85
91
|
|
|
86
92
|
export class Chat {
|
|
@@ -93,30 +99,30 @@ export class Chat {
|
|
|
93
99
|
public readonly reactionSignal: Signal<Reaction>;
|
|
94
100
|
private readonly eventRegistry: EventRegistry;
|
|
95
101
|
|
|
96
|
-
private constructor(private readonly
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
private constructor(private readonly omu: Omu) {
|
|
103
|
+
omu.sessions.require(PLUGIN_ID);
|
|
104
|
+
omu.permissions.require(CHAT_PERMISSION_ID);
|
|
99
105
|
this.eventRegistry = new EventRegistry(this);
|
|
100
|
-
this.messages =
|
|
101
|
-
this.authors =
|
|
102
|
-
this.channels =
|
|
103
|
-
this.providers =
|
|
104
|
-
this.rooms =
|
|
105
|
-
this.votes =
|
|
106
|
-
this.reactionSignal =
|
|
106
|
+
this.messages = omu.tables.get(MESSAGE_TABLE_TYPE);
|
|
107
|
+
this.authors = omu.tables.get(AUTHOR_TABLE_TYPE);
|
|
108
|
+
this.channels = omu.tables.get(CHANNEL_TABLE_TYPE);
|
|
109
|
+
this.providers = omu.tables.get(PROVIDER_TABLE_TYPE);
|
|
110
|
+
this.rooms = omu.tables.get(ROOM_TABLE_TYPE);
|
|
111
|
+
this.votes = omu.tables.get(VOTE_TABLE_TYPE);
|
|
112
|
+
this.reactionSignal = omu.signals.get(REACTION_SIGNAL);
|
|
107
113
|
this.messages.setCacheSize(1000);
|
|
108
114
|
this.authors.setCacheSize(500);
|
|
109
115
|
}
|
|
110
116
|
|
|
111
|
-
public static create(
|
|
112
|
-
if (
|
|
117
|
+
public static create(omu: Omu): Chat {
|
|
118
|
+
if (omu.ready) {
|
|
113
119
|
throw new Error('OMU instance is already started');
|
|
114
120
|
}
|
|
115
|
-
return new Chat(
|
|
121
|
+
return new Chat(omu);
|
|
116
122
|
}
|
|
117
123
|
|
|
118
124
|
public async createChannelTree(url: string): Promise<Channel[]> {
|
|
119
|
-
return await this.
|
|
125
|
+
return await this.omu.endpoints.call(CREATE_CHANNEL_TREE_ENDPOINT, url);
|
|
120
126
|
}
|
|
121
127
|
|
|
122
128
|
public on<P extends Array<any>>(event: EventSource<P>, handler: EventHandler<P>): void {
|
package/src/const.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Identifier } from '@omujs/omu
|
|
1
|
+
import { Identifier } from '@omujs/omu';
|
|
2
2
|
|
|
3
|
-
export const
|
|
3
|
+
export const PLUGIN_ID: Identifier = new Identifier('com.omuapps', 'chat');
|
package/src/event/event-types.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
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';
|
|
1
7
|
import { TableEvent } from './event.js';
|
|
2
8
|
|
|
3
|
-
export const events = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
export const events: { Message: TableEvent<Message>; Author: TableEvent<Author>; Channel: TableEvent<Channel>; Provider: TableEvent<Provider>; Room: TableEvent<Room>; Vote: TableEvent<Vote> } = {
|
|
10
|
+
Message: new TableEvent((chat) => chat.messages),
|
|
11
|
+
Author: new TableEvent((chat) => chat.authors),
|
|
12
|
+
Channel: new TableEvent((chat) => chat.channels),
|
|
13
|
+
Provider: new TableEvent((chat) => chat.providers),
|
|
14
|
+
Room: new TableEvent((chat) => chat.rooms),
|
|
15
|
+
Vote: new TableEvent((chat) => chat.votes),
|
|
10
16
|
};
|
package/src/event/event.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
4
|
|
|
5
5
|
import type { Chat } from '../chat.js';
|
|
6
6
|
|
|
@@ -20,24 +20,24 @@ export class ListenerEvent<P extends Array<any>> implements EventSource<P> {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export class TableEvent<T> extends ListenerEvent<[Map<string, T>]> {
|
|
23
|
-
public readonly
|
|
24
|
-
public readonly
|
|
25
|
-
public readonly
|
|
26
|
-
public readonly
|
|
27
|
-
public readonly
|
|
28
|
-
public readonly
|
|
29
|
-
public readonly
|
|
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
30
|
public readonly wrappers: Record<string, Unlisten>;
|
|
31
31
|
|
|
32
32
|
constructor(private readonly getTable: (chat: Chat) => Table<T>) {
|
|
33
33
|
super((chat) => getTable(chat).event.cacheUpdate);
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
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
41
|
this.wrappers = {};
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -63,7 +63,7 @@ export class TableEvent<T> extends ListenerEvent<[Map<string, T>]> {
|
|
|
63
63
|
return () => {
|
|
64
64
|
stopListen();
|
|
65
65
|
clearEvent();
|
|
66
|
-
}
|
|
66
|
+
};
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
return {
|
package/src/event/index.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { Chat } from './chat.js';
|
|
2
|
-
export {
|
|
3
|
-
export * as
|
|
4
|
-
export
|
|
5
|
-
|
|
2
|
+
export { Events as ChatEvents } from './event';
|
|
3
|
+
export * as Models from './models';
|
|
4
|
+
export { Content };
|
|
5
|
+
import { Content } from './models';
|
|
6
|
+
export * as ChatPermissions from './permissions.js';
|
package/src/models/author.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { Identifier } from '@omujs/omu
|
|
2
|
-
import type { Keyable } from '@omujs/omu/interface.js';
|
|
3
|
-
import type { Model } from '@omujs/omu/model.js';
|
|
1
|
+
import { Identifier } from '@omujs/omu';
|
|
4
2
|
|
|
5
3
|
import type { RoleJson } from './role.js';
|
|
6
4
|
import { Role } from './role.js';
|
|
@@ -16,37 +14,37 @@ export type AuthorMetadata = {
|
|
|
16
14
|
export type AuthorJson = {
|
|
17
15
|
provider_id: string;
|
|
18
16
|
id: string;
|
|
17
|
+
metadata: AuthorMetadata;
|
|
19
18
|
name?: string;
|
|
20
19
|
avatar_url?: string;
|
|
21
20
|
roles?: RoleJson[];
|
|
22
|
-
metadata?: AuthorMetadata;
|
|
23
21
|
};
|
|
24
22
|
|
|
25
|
-
export class Author
|
|
23
|
+
export class Author {
|
|
26
24
|
public providerId: Identifier;
|
|
27
25
|
public id: Identifier;
|
|
26
|
+
public metadata: AuthorMetadata;
|
|
28
27
|
public name?: string;
|
|
29
28
|
public avatarUrl?: string;
|
|
30
29
|
public roles?: Role[];
|
|
31
|
-
public metadata?: AuthorMetadata;
|
|
32
30
|
|
|
33
31
|
constructor(options: {
|
|
34
32
|
providerId: Identifier;
|
|
35
33
|
id: Identifier;
|
|
34
|
+
metadata?: AuthorMetadata;
|
|
36
35
|
name?: string;
|
|
37
36
|
avatarUrl?: string;
|
|
38
37
|
roles?: Role[];
|
|
39
|
-
metadata?: AuthorMetadata;
|
|
40
38
|
}) {
|
|
41
39
|
this.providerId = options.providerId;
|
|
42
40
|
this.id = options.id;
|
|
41
|
+
this.metadata = options.metadata || {};
|
|
43
42
|
this.name = options.name;
|
|
44
43
|
this.avatarUrl = options.avatarUrl;
|
|
45
44
|
this.roles = options.roles;
|
|
46
|
-
this.metadata = options.metadata;
|
|
47
45
|
}
|
|
48
46
|
|
|
49
|
-
static
|
|
47
|
+
public static deserialize(info: AuthorJson): Author {
|
|
50
48
|
return new Author({
|
|
51
49
|
providerId: Identifier.fromKey(info.provider_id),
|
|
52
50
|
id: Identifier.fromKey(info.id),
|
|
@@ -58,17 +56,17 @@ export class Author implements Keyable, Model<AuthorJson> {
|
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
key(): string {
|
|
61
|
-
return
|
|
59
|
+
return this.id.key();
|
|
62
60
|
}
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
public static serialize(item: Author): AuthorJson {
|
|
65
63
|
return {
|
|
66
|
-
provider_id:
|
|
67
|
-
id:
|
|
68
|
-
name:
|
|
69
|
-
avatar_url:
|
|
70
|
-
roles:
|
|
71
|
-
metadata:
|
|
64
|
+
provider_id: item.providerId.key(),
|
|
65
|
+
id: item.id.key(),
|
|
66
|
+
name: item.name,
|
|
67
|
+
avatar_url: item.avatarUrl,
|
|
68
|
+
roles: item.roles?.map((role) => role.toJson()),
|
|
69
|
+
metadata: item.metadata,
|
|
72
70
|
};
|
|
73
71
|
}
|
|
74
72
|
}
|
package/src/models/channel.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { Identifier } from '@omujs/omu
|
|
2
|
-
import type { Keyable } from '@omujs/omu/interface.js';
|
|
3
|
-
import type { Model } from '@omujs/omu/model.js';
|
|
1
|
+
import { Identifier } from '@omujs/omu';
|
|
4
2
|
|
|
5
3
|
export type ChannelJson = {
|
|
6
4
|
provider_id: string;
|
|
@@ -12,7 +10,7 @@ export type ChannelJson = {
|
|
|
12
10
|
icon_url: string;
|
|
13
11
|
};
|
|
14
12
|
|
|
15
|
-
export class Channel
|
|
13
|
+
export class Channel {
|
|
16
14
|
providerId: Identifier;
|
|
17
15
|
id: Identifier;
|
|
18
16
|
url: string;
|
|
@@ -39,7 +37,7 @@ export class Channel implements Model<ChannelJson>, Keyable {
|
|
|
39
37
|
this.iconUrl = option.iconUrl;
|
|
40
38
|
}
|
|
41
39
|
|
|
42
|
-
static
|
|
40
|
+
public static deserialize(json: ChannelJson): Channel {
|
|
43
41
|
return new Channel({
|
|
44
42
|
providerId: Identifier.fromKey(json.provider_id),
|
|
45
43
|
id: Identifier.fromKey(json.id),
|
|
@@ -55,15 +53,15 @@ export class Channel implements Model<ChannelJson>, Keyable {
|
|
|
55
53
|
return this.id.key();
|
|
56
54
|
}
|
|
57
55
|
|
|
58
|
-
|
|
56
|
+
public static serialize(item: Channel): ChannelJson {
|
|
59
57
|
return {
|
|
60
|
-
provider_id:
|
|
61
|
-
id:
|
|
62
|
-
url:
|
|
63
|
-
name:
|
|
64
|
-
description:
|
|
65
|
-
active:
|
|
66
|
-
icon_url:
|
|
58
|
+
provider_id: item.providerId.key(),
|
|
59
|
+
id: item.id.key(),
|
|
60
|
+
url: item.url,
|
|
61
|
+
name: item.name,
|
|
62
|
+
description: item.description,
|
|
63
|
+
active: item.active,
|
|
64
|
+
icon_url: item.iconUrl,
|
|
67
65
|
};
|
|
68
66
|
}
|
|
69
67
|
}
|