@omujs/chat 0.1.22
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/.eslintignore +13 -0
- package/.eslintrc.cjs +6 -0
- package/.prettierignore +1 -0
- package/CHANGELOG.md +262 -0
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/built/dts/chat.d.ts +14 -0
- package/built/dts/chat.d.ts.map +1 -0
- package/built/dts/client.d.ts +24 -0
- package/built/dts/client.d.ts.map +1 -0
- package/built/dts/const.d.ts +3 -0
- package/built/dts/const.d.ts.map +1 -0
- package/built/dts/event/event-registry.d.ts +12 -0
- package/built/dts/event/event-registry.d.ts.map +1 -0
- package/built/dts/event/event.d.ts +26 -0
- package/built/dts/event/event.d.ts.map +1 -0
- package/built/dts/event/index.d.ts +3 -0
- package/built/dts/event/index.d.ts.map +1 -0
- package/built/dts/index.d.ts +4 -0
- package/built/dts/index.d.ts.map +1 -0
- package/built/dts/models/author.d.ts +40 -0
- package/built/dts/models/author.d.ts.map +1 -0
- package/built/dts/models/channel.d.ts +34 -0
- package/built/dts/models/channel.d.ts.map +1 -0
- package/built/dts/models/content.d.ts +76 -0
- package/built/dts/models/content.d.ts.map +1 -0
- package/built/dts/models/gift.d.ts +25 -0
- package/built/dts/models/gift.d.ts.map +1 -0
- package/built/dts/models/index.d.ts +10 -0
- package/built/dts/models/index.d.ts.map +1 -0
- package/built/dts/models/message.d.ts +40 -0
- package/built/dts/models/message.d.ts.map +1 -0
- package/built/dts/models/paid.d.ts +13 -0
- package/built/dts/models/paid.d.ts.map +1 -0
- package/built/dts/models/provider.d.ts +37 -0
- package/built/dts/models/provider.d.ts.map +1 -0
- package/built/dts/models/role.d.ts +28 -0
- package/built/dts/models/role.d.ts.map +1 -0
- package/built/dts/models/room.d.ts +45 -0
- package/built/dts/models/room.d.ts.map +1 -0
- package/built/dts/permissions.d.ts +6 -0
- package/built/dts/permissions.d.ts.map +1 -0
- package/built/esm/chat.js +81 -0
- package/built/esm/chat.js.map +1 -0
- package/built/esm/client.js +44 -0
- package/built/esm/client.js.map +1 -0
- package/built/esm/const.js +3 -0
- package/built/esm/const.js.map +1 -0
- package/built/esm/event/event-registry.js +35 -0
- package/built/esm/event/event-registry.js.map +1 -0
- package/built/esm/event/event.js +40 -0
- package/built/esm/event/event.js.map +1 -0
- package/built/esm/event/index.js +3 -0
- package/built/esm/event/index.js.map +1 -0
- package/built/esm/index.js +4 -0
- package/built/esm/index.js.map +1 -0
- package/built/esm/models/author.js +42 -0
- package/built/esm/models/author.js.map +1 -0
- package/built/esm/models/channel.js +45 -0
- package/built/esm/models/channel.js.map +1 -0
- package/built/esm/models/content.js +154 -0
- package/built/esm/models/content.js.map +1 -0
- package/built/esm/models/gift.js +33 -0
- package/built/esm/models/gift.js.map +1 -0
- package/built/esm/models/index.js +10 -0
- package/built/esm/models/index.js.map +1 -0
- package/built/esm/models/message.js +57 -0
- package/built/esm/models/message.js.map +1 -0
- package/built/esm/models/paid.js +18 -0
- package/built/esm/models/paid.js.map +1 -0
- package/built/esm/models/provider.js +49 -0
- package/built/esm/models/provider.js.map +1 -0
- package/built/esm/models/role.js +37 -0
- package/built/esm/models/role.js.map +1 -0
- package/built/esm/models/room.js +45 -0
- package/built/esm/models/room.js.map +1 -0
- package/built/esm/permissions.js +7 -0
- package/built/esm/permissions.js.map +1 -0
- package/package.json +53 -0
- package/src/chat.ts +90 -0
- package/src/const.ts +3 -0
- package/src/index.ts +3 -0
- package/src/models/author.ts +74 -0
- package/src/models/channel.ts +69 -0
- package/src/models/content.ts +207 -0
- package/src/models/gift.ts +51 -0
- package/src/models/index.ts +10 -0
- package/src/models/message.ts +85 -0
- package/src/models/paid.ts +24 -0
- package/src/models/provider.ts +75 -0
- package/src/models/role.ts +57 -0
- package/src/models/room.ts +82 -0
- package/src/permissions.ts +7 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
export class Component {
|
|
2
|
+
type;
|
|
3
|
+
constructor(type) {
|
|
4
|
+
this.type = type;
|
|
5
|
+
}
|
|
6
|
+
isParent() {
|
|
7
|
+
return 'children' in this;
|
|
8
|
+
}
|
|
9
|
+
walk(cb) {
|
|
10
|
+
const stack = [this];
|
|
11
|
+
while (stack.length) {
|
|
12
|
+
const component = stack.pop();
|
|
13
|
+
if (!component) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
cb(component);
|
|
17
|
+
if (component.isParent()) {
|
|
18
|
+
stack.push(...component.children);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
*iter() {
|
|
23
|
+
const stack = [this];
|
|
24
|
+
while (stack.length) {
|
|
25
|
+
const component = stack.pop();
|
|
26
|
+
if (!component) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
yield component;
|
|
30
|
+
if (component.isParent()) {
|
|
31
|
+
stack.push(...component.children);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
toString() {
|
|
36
|
+
const parts = [];
|
|
37
|
+
for (const component of this.iter()) {
|
|
38
|
+
if (component instanceof Text) {
|
|
39
|
+
parts.push(component.text);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return parts.join('');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const componentTypes = {};
|
|
46
|
+
export function deserialize(json) {
|
|
47
|
+
const type = componentTypes[json.type];
|
|
48
|
+
if (!type) {
|
|
49
|
+
throw new Error(`Unknown component type: ${json.type}`);
|
|
50
|
+
}
|
|
51
|
+
return type.fromJson(json.data);
|
|
52
|
+
}
|
|
53
|
+
export function serialize(component) {
|
|
54
|
+
return {
|
|
55
|
+
type: component.type,
|
|
56
|
+
data: component.toJson(),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function register(type, deserialize) {
|
|
60
|
+
if (componentTypes[type]) {
|
|
61
|
+
throw new Error(`Component type already registered: ${type}`);
|
|
62
|
+
}
|
|
63
|
+
componentTypes[type] = {
|
|
64
|
+
type,
|
|
65
|
+
fromJson: deserialize,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export class Root extends Component {
|
|
69
|
+
children;
|
|
70
|
+
constructor(children) {
|
|
71
|
+
super('root');
|
|
72
|
+
this.children = children;
|
|
73
|
+
}
|
|
74
|
+
toJson() {
|
|
75
|
+
return this.children.map(serialize);
|
|
76
|
+
}
|
|
77
|
+
add(component) {
|
|
78
|
+
this.children.push(component);
|
|
79
|
+
}
|
|
80
|
+
text() {
|
|
81
|
+
const parts = [];
|
|
82
|
+
for (const component of this.iter()) {
|
|
83
|
+
if (component instanceof Text) {
|
|
84
|
+
parts.push(component.text);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return parts.join('');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class Text extends Component {
|
|
91
|
+
text;
|
|
92
|
+
constructor(text) {
|
|
93
|
+
super('text');
|
|
94
|
+
this.text = text;
|
|
95
|
+
}
|
|
96
|
+
toJson() {
|
|
97
|
+
return this.text;
|
|
98
|
+
}
|
|
99
|
+
static of(text) {
|
|
100
|
+
return new Text(text);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export class Image extends Component {
|
|
104
|
+
url;
|
|
105
|
+
id;
|
|
106
|
+
name;
|
|
107
|
+
constructor(url, id, name = undefined) {
|
|
108
|
+
super('image');
|
|
109
|
+
this.url = url;
|
|
110
|
+
this.id = id;
|
|
111
|
+
this.name = name;
|
|
112
|
+
}
|
|
113
|
+
toJson() {
|
|
114
|
+
return {
|
|
115
|
+
url: this.url,
|
|
116
|
+
id: this.id,
|
|
117
|
+
name: this.name,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
static of({ url, id, name }) {
|
|
121
|
+
return new Image(url, id, name);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export class Link extends Component {
|
|
125
|
+
url;
|
|
126
|
+
children;
|
|
127
|
+
constructor(url, children) {
|
|
128
|
+
super('link');
|
|
129
|
+
this.url = url;
|
|
130
|
+
this.children = children;
|
|
131
|
+
}
|
|
132
|
+
toJson() {
|
|
133
|
+
return {
|
|
134
|
+
url: this.url,
|
|
135
|
+
children: this.children.map(serialize),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export class System extends Component {
|
|
140
|
+
children;
|
|
141
|
+
constructor(children) {
|
|
142
|
+
super('system');
|
|
143
|
+
this.children = children;
|
|
144
|
+
}
|
|
145
|
+
toJson() {
|
|
146
|
+
return this.children.map(serialize);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
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)));
|
|
154
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/models/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class Gift {
|
|
2
|
+
id;
|
|
3
|
+
name;
|
|
4
|
+
amount;
|
|
5
|
+
isPaid;
|
|
6
|
+
imageUrl;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.id = options.id;
|
|
9
|
+
this.name = options.name;
|
|
10
|
+
this.amount = options.amount;
|
|
11
|
+
this.isPaid = options.isPaid;
|
|
12
|
+
this.imageUrl = options.imageUrl;
|
|
13
|
+
}
|
|
14
|
+
static fromJson(options) {
|
|
15
|
+
return new Gift({
|
|
16
|
+
id: options.id,
|
|
17
|
+
name: options.name,
|
|
18
|
+
amount: options.amount,
|
|
19
|
+
isPaid: options.is_paid,
|
|
20
|
+
imageUrl: options.image_url,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
toJson() {
|
|
24
|
+
return {
|
|
25
|
+
id: this.id,
|
|
26
|
+
name: this.name,
|
|
27
|
+
amount: this.amount,
|
|
28
|
+
is_paid: this.isPaid,
|
|
29
|
+
image_url: this.imageUrl,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=gift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gift.js","sourceRoot":"","sources":["../../../src/models/gift.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,IAAI;IACb,EAAE,CAAS;IACX,IAAI,CAAU;IACd,MAAM,CAAU;IAChB,MAAM,CAAW;IACjB,QAAQ,CAAU;IAElB,YAAY,OAMX;QACG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAiB;QAC7B,OAAO,IAAI,IAAI,CAAC;YACZ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,OAAO;YACvB,QAAQ,EAAE,OAAO,CAAC,SAAS;SAC9B,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,SAAS,EAAE,IAAI,CAAC,QAAQ;SAC3B,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Author } from './author.js';
|
|
2
|
+
export { Channel } from './channel.js';
|
|
3
|
+
export * as content from './content.js';
|
|
4
|
+
export { Gift } from './gift.js';
|
|
5
|
+
export { Message } from './message.js';
|
|
6
|
+
export { Paid } from './paid.js';
|
|
7
|
+
export { Provider } from './provider.js';
|
|
8
|
+
export { Role } from './role.js';
|
|
9
|
+
export { Room } from './room.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Identifier } from '@omujs/omu/identifier.js';
|
|
2
|
+
import * as content from './content.js';
|
|
3
|
+
import { Gift } from './gift.js';
|
|
4
|
+
import { Paid } from './paid.js';
|
|
5
|
+
export class Message {
|
|
6
|
+
roomId;
|
|
7
|
+
id;
|
|
8
|
+
authorId;
|
|
9
|
+
content;
|
|
10
|
+
paid;
|
|
11
|
+
gifts;
|
|
12
|
+
createdAt;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
if (!(options.createdAt instanceof Date)) {
|
|
15
|
+
throw new Error('created_at must be a Date');
|
|
16
|
+
}
|
|
17
|
+
this.roomId = options.roomId;
|
|
18
|
+
this.id = options.id;
|
|
19
|
+
this.authorId = options.authorId;
|
|
20
|
+
this.content = options.content;
|
|
21
|
+
this.paid = options.paid;
|
|
22
|
+
this.gifts = options.gifts;
|
|
23
|
+
this.createdAt = options.createdAt;
|
|
24
|
+
}
|
|
25
|
+
static fromJson(info) {
|
|
26
|
+
return new Message({
|
|
27
|
+
roomId: Identifier.fromKey(info.room_id),
|
|
28
|
+
id: Identifier.fromKey(info.id),
|
|
29
|
+
authorId: info.author_id ? Identifier.fromKey(info.author_id) : undefined,
|
|
30
|
+
content: info.content && content.deserialize(info.content),
|
|
31
|
+
paid: info.paid && Paid.fromJson(info.paid),
|
|
32
|
+
gifts: info.gifts?.map((gift) => Gift.fromJson(gift)),
|
|
33
|
+
createdAt: new Date(info.created_at),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
get text() {
|
|
37
|
+
if (!this.content) {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
return this.content.toString();
|
|
41
|
+
}
|
|
42
|
+
key() {
|
|
43
|
+
return this.id.key();
|
|
44
|
+
}
|
|
45
|
+
toJson() {
|
|
46
|
+
return {
|
|
47
|
+
room_id: this.roomId.key(),
|
|
48
|
+
id: this.id.key(),
|
|
49
|
+
author_id: this.authorId?.key(),
|
|
50
|
+
created_at: this.createdAt.toISOString(),
|
|
51
|
+
content: this.content && content.serialize(this.content),
|
|
52
|
+
paid: this.paid?.toJson(),
|
|
53
|
+
gifts: this.gifts?.map((gift) => gift.toJson()),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/models/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class Paid {
|
|
2
|
+
amount;
|
|
3
|
+
currency;
|
|
4
|
+
constructor(amount, currency) {
|
|
5
|
+
this.amount = amount;
|
|
6
|
+
this.currency = currency;
|
|
7
|
+
}
|
|
8
|
+
static fromJson(options) {
|
|
9
|
+
return new Paid(options.amount, options.currency);
|
|
10
|
+
}
|
|
11
|
+
toJson() {
|
|
12
|
+
return {
|
|
13
|
+
amount: this.amount,
|
|
14
|
+
currency: this.currency,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=paid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paid.js","sourceRoot":"","sources":["../../../src/models/paid.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,IAAI;IAEF;IACA;IAFX,YACW,MAAc,EACd,QAAgB;QADhB,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAQ;IACvB,CAAC;IAEL,MAAM,CAAC,QAAQ,CAAC,OAAiB;QAC7B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,MAAM;QACF,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Identifier } from '@omujs/omu/identifier.js';
|
|
2
|
+
export class Provider {
|
|
3
|
+
id;
|
|
4
|
+
url;
|
|
5
|
+
name;
|
|
6
|
+
version;
|
|
7
|
+
repositoryUrl;
|
|
8
|
+
imageUrl;
|
|
9
|
+
description;
|
|
10
|
+
regex;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.id = options.id;
|
|
13
|
+
this.url = options.url;
|
|
14
|
+
this.name = options.name;
|
|
15
|
+
this.version = options.version;
|
|
16
|
+
this.repositoryUrl = options.repository_url;
|
|
17
|
+
this.imageUrl = options.image_url;
|
|
18
|
+
this.description = options.description;
|
|
19
|
+
this.regex = options.regex;
|
|
20
|
+
}
|
|
21
|
+
static fromJson(data) {
|
|
22
|
+
return new Provider({
|
|
23
|
+
id: Identifier.fromKey(data.id),
|
|
24
|
+
url: data.url,
|
|
25
|
+
name: data.name,
|
|
26
|
+
version: data.version,
|
|
27
|
+
repository_url: data.repository_url,
|
|
28
|
+
image_url: data.image_url,
|
|
29
|
+
description: data.description,
|
|
30
|
+
regex: data.regex,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
toJson() {
|
|
34
|
+
return {
|
|
35
|
+
id: this.id.key(),
|
|
36
|
+
url: this.url,
|
|
37
|
+
name: this.name,
|
|
38
|
+
version: this.version,
|
|
39
|
+
repository_url: this.repositoryUrl,
|
|
40
|
+
image_url: this.imageUrl,
|
|
41
|
+
description: this.description,
|
|
42
|
+
regex: this.regex,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
key() {
|
|
46
|
+
return this.id.key();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/models/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAetD,MAAM,OAAO,QAAQ;IACV,EAAE,CAAa;IACf,GAAG,CAAS;IACZ,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,aAAa,CAAS;IACtB,QAAQ,CAAU;IAClB,WAAW,CAAS;IACpB,KAAK,CAAS;IAErB,YAAY,OASX;QACG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAkB;QAC9B,OAAO,IAAI,QAAQ,CAAC;YAChB,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC;IACN,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;CACJ"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class Role {
|
|
2
|
+
id;
|
|
3
|
+
name;
|
|
4
|
+
isOwner;
|
|
5
|
+
isModerator;
|
|
6
|
+
iconUrl;
|
|
7
|
+
color;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.id = options.id;
|
|
10
|
+
this.name = options.name;
|
|
11
|
+
this.isOwner = options.isOwner;
|
|
12
|
+
this.isModerator = options.isModerator;
|
|
13
|
+
this.iconUrl = options.iconUrl;
|
|
14
|
+
this.color = options.color;
|
|
15
|
+
}
|
|
16
|
+
static fromJson(json) {
|
|
17
|
+
return new Role({
|
|
18
|
+
id: json.id,
|
|
19
|
+
name: json.name,
|
|
20
|
+
isOwner: json.is_owner,
|
|
21
|
+
isModerator: json.is_moderator,
|
|
22
|
+
iconUrl: json.icon_url,
|
|
23
|
+
color: json.color,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
toJson() {
|
|
27
|
+
return {
|
|
28
|
+
id: this.id,
|
|
29
|
+
name: this.name,
|
|
30
|
+
color: this.color,
|
|
31
|
+
icon_url: this.iconUrl,
|
|
32
|
+
is_owner: this.isOwner,
|
|
33
|
+
is_moderator: this.isModerator,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../../src/models/role.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,IAAI;IACb,EAAE,CAAU;IACZ,IAAI,CAAS;IACb,OAAO,CAAU;IACjB,WAAW,CAAU;IACrB,OAAO,CAAU;IACjB,KAAK,CAAU;IAEf,YAAY,OAOX;QACG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC1B,OAAO,IAAI,IAAI,CAAC;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,OAAO;YACtB,QAAQ,EAAE,IAAI,CAAC,OAAO;YACtB,YAAY,EAAE,IAAI,CAAC,WAAW;SACjC,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Identifier } from '@omujs/omu/identifier.js';
|
|
2
|
+
export class Room {
|
|
3
|
+
id;
|
|
4
|
+
providerId;
|
|
5
|
+
connected;
|
|
6
|
+
status;
|
|
7
|
+
metadata;
|
|
8
|
+
channelId;
|
|
9
|
+
createdAt;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.id = options.id;
|
|
12
|
+
this.providerId = options.providerId;
|
|
13
|
+
this.connected = options.connected;
|
|
14
|
+
this.status = options.status;
|
|
15
|
+
this.metadata = options.metadata;
|
|
16
|
+
this.channelId = options.channelId;
|
|
17
|
+
this.createdAt = options.createdAt;
|
|
18
|
+
}
|
|
19
|
+
static fromJson(options) {
|
|
20
|
+
return new Room({
|
|
21
|
+
id: Identifier.fromKey(options.id),
|
|
22
|
+
providerId: Identifier.fromKey(options.provider_id),
|
|
23
|
+
connected: options.connected,
|
|
24
|
+
status: options.status,
|
|
25
|
+
metadata: options.metadata,
|
|
26
|
+
channelId: options.channel_id,
|
|
27
|
+
createdAt: new Date(options.created_at),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
toJson() {
|
|
31
|
+
return {
|
|
32
|
+
id: this.id.key(),
|
|
33
|
+
provider_id: this.providerId.key(),
|
|
34
|
+
connected: this.connected,
|
|
35
|
+
status: this.status,
|
|
36
|
+
metadata: this.metadata,
|
|
37
|
+
channel_id: this.channelId,
|
|
38
|
+
created_at: this.createdAt.toISOString(),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
key() {
|
|
42
|
+
return this.id.key();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=room.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDENTIFIER } from './const.js';
|
|
2
|
+
export const CHAT_PERMISSION_ID = IDENTIFIER;
|
|
3
|
+
export const CHAT_READ_PERMISSION_ID = IDENTIFIER.join('chat', 'read');
|
|
4
|
+
export const CHAT_WRITE_PERMISSION_ID = IDENTIFIER.join('chat', 'write');
|
|
5
|
+
export const CHAT_SEND_PERMISSION_ID = IDENTIFIER.join('chat', 'send');
|
|
6
|
+
export const CHAT_CHANNEL_TREE_PERMISSION_ID = IDENTIFIER.join('create_channel_tree');
|
|
7
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "module",
|
|
3
|
+
"name": "@omujs/chat",
|
|
4
|
+
"version": "0.1.22",
|
|
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"
|
|
13
|
+
},
|
|
14
|
+
"./*": {
|
|
15
|
+
"import": "./built/esm/*",
|
|
16
|
+
"types": "./built/dts/*"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "^20.12.12",
|
|
21
|
+
"@types/websocket": "1.0.10",
|
|
22
|
+
"@types/ws": "8.5.10",
|
|
23
|
+
"@typescript-eslint/eslint-plugin": "^7.9.0",
|
|
24
|
+
"@typescript-eslint/parser": "^7.9.0",
|
|
25
|
+
"axios": "^1.6.8",
|
|
26
|
+
"eslint": "^8.57.0",
|
|
27
|
+
"eslint-config-prettier": "^9.1.0",
|
|
28
|
+
"eslint-plugin-import": "^2.29.1",
|
|
29
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
30
|
+
"eslint-plugin-svelte": "^2.39.0",
|
|
31
|
+
"eslint-plugin-unused-imports": "^3.2.0",
|
|
32
|
+
"nodemon": "^3.1.0",
|
|
33
|
+
"ts-node": "10.9.2",
|
|
34
|
+
"typescript": "^5.4.5",
|
|
35
|
+
"websocket": "1.0.34",
|
|
36
|
+
"ws": "8.16.0",
|
|
37
|
+
"@omujs/omu": "0.1.22"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@omujs/omu": "0.1.22"
|
|
41
|
+
},
|
|
42
|
+
"gitHead": "04559d5aec52117d707e0d554ee429b858da522a",
|
|
43
|
+
"scripts": {
|
|
44
|
+
"ts": "pnpm run ts-esm && pnpm run ts-dts",
|
|
45
|
+
"ts-esm": "tsc --outDir built/esm",
|
|
46
|
+
"ts-dts": "tsc --outDir built/dts --declaration true --emitDeclarationOnly true --declarationMap true",
|
|
47
|
+
"watch": "nodemon -w src -e ts,json --exec \"pnpm run ts\"",
|
|
48
|
+
"dev": "pnpm run watch",
|
|
49
|
+
"build": "pnpm run ts",
|
|
50
|
+
"lint": "eslint . --ext .js,.ts",
|
|
51
|
+
"format": "eslint . --ext .js,.ts --fix"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/src/chat.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { Client } from '@omujs/omu/client.js';
|
|
2
|
+
import { EndpointType } from '@omujs/omu/extension/endpoint/endpoint.js';
|
|
3
|
+
import type { Table } from '@omujs/omu/extension/table/index.js';
|
|
4
|
+
import { TableType } from '@omujs/omu/extension/table/index.js';
|
|
5
|
+
import { Serializer } from '@omujs/omu/serializer.js';
|
|
6
|
+
|
|
7
|
+
import { IDENTIFIER } from './const.js';
|
|
8
|
+
import { Author, Channel, Message, Provider, Room } from './models/index.js';
|
|
9
|
+
import {
|
|
10
|
+
CHAT_CHANNEL_TREE_PERMISSION_ID,
|
|
11
|
+
CHAT_PERMISSION_ID,
|
|
12
|
+
CHAT_READ_PERMISSION_ID,
|
|
13
|
+
CHAT_WRITE_PERMISSION_ID,
|
|
14
|
+
} from './permissions.js';
|
|
15
|
+
|
|
16
|
+
const MESSAGE_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
|
|
17
|
+
name: 'messages',
|
|
18
|
+
model: Message,
|
|
19
|
+
permissions: {
|
|
20
|
+
all: CHAT_PERMISSION_ID,
|
|
21
|
+
read: CHAT_READ_PERMISSION_ID,
|
|
22
|
+
write: CHAT_WRITE_PERMISSION_ID,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const AUTHOR_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
|
|
26
|
+
name: 'authors',
|
|
27
|
+
model: Author,
|
|
28
|
+
permissions: {
|
|
29
|
+
all: CHAT_PERMISSION_ID,
|
|
30
|
+
read: CHAT_READ_PERMISSION_ID,
|
|
31
|
+
write: CHAT_WRITE_PERMISSION_ID,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const CHANNEL_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
|
|
35
|
+
name: 'channels',
|
|
36
|
+
model: Channel,
|
|
37
|
+
permissions: {
|
|
38
|
+
all: CHAT_PERMISSION_ID,
|
|
39
|
+
read: CHAT_READ_PERMISSION_ID,
|
|
40
|
+
write: CHAT_WRITE_PERMISSION_ID,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
const PROVIDER_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
|
|
44
|
+
name: 'providers',
|
|
45
|
+
model: Provider,
|
|
46
|
+
permissions: {
|
|
47
|
+
all: CHAT_PERMISSION_ID,
|
|
48
|
+
read: CHAT_READ_PERMISSION_ID,
|
|
49
|
+
write: CHAT_WRITE_PERMISSION_ID,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
const ROOM_TABLE_TYPE = TableType.createModel(IDENTIFIER, {
|
|
53
|
+
name: 'rooms',
|
|
54
|
+
model: Room,
|
|
55
|
+
permissions: {
|
|
56
|
+
all: CHAT_PERMISSION_ID,
|
|
57
|
+
read: CHAT_READ_PERMISSION_ID,
|
|
58
|
+
write: CHAT_WRITE_PERMISSION_ID,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
const CREATE_CHANNEL_TREE_ENDPOINT = EndpointType.createJson(IDENTIFIER, {
|
|
62
|
+
name: 'create_channel_tree',
|
|
63
|
+
requestSerializer: Serializer.noop<string>(),
|
|
64
|
+
responseSerializer: Serializer.model(Channel).toArray(),
|
|
65
|
+
permissionId: CHAT_CHANNEL_TREE_PERMISSION_ID,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
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>;
|
|
74
|
+
|
|
75
|
+
constructor(private readonly client: Client) {
|
|
76
|
+
client.server.require(IDENTIFIER);
|
|
77
|
+
client.permissions.require(CHAT_PERMISSION_ID);
|
|
78
|
+
this.messages = client.tables.get(MESSAGE_TABLE_TYPE);
|
|
79
|
+
this.authors = client.tables.get(AUTHOR_TABLE_TYPE);
|
|
80
|
+
this.channels = client.tables.get(CHANNEL_TABLE_TYPE);
|
|
81
|
+
this.providers = client.tables.get(PROVIDER_TABLE_TYPE);
|
|
82
|
+
this.rooms = client.tables.get(ROOM_TABLE_TYPE);
|
|
83
|
+
this.messages.setCacheSize(1000);
|
|
84
|
+
this.authors.setCacheSize(500);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async createChannelTree(url: string): Promise<Channel[]> {
|
|
88
|
+
return await this.client.endpoints.call(CREATE_CHANNEL_TREE_ENDPOINT, url);
|
|
89
|
+
}
|
|
90
|
+
}
|
package/src/const.ts
ADDED
package/src/index.ts
ADDED