@sockethub/irc2as 4.0.0-alpha.11 → 4.0.0-alpha.13
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/README.md +9 -2
- package/dist/as-emitter.d.ts +34 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +32 -20
- package/dist/index.js.map +4 -4
- package/package.json +6 -6
- package/src/as-emitter.js +0 -277
- package/src/index.js +0 -298
- package/src/index.test.data.irc.txt +0 -86
- package/src/index.test.data.js +0 -492
- package/src/index.test.js +0 -96
package/README.md
CHANGED
|
@@ -11,8 +11,15 @@ of them, and as time goes on hopefully become more compliant (PRs & feedback wel
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
13
|
```javascript
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
import { IrcToActivityStreams } from '@sockethub/irc2as';
|
|
15
|
+
const irc2as = new IrcToActivityStreams({
|
|
16
|
+
server: 'irc.freenode.net',
|
|
17
|
+
contexts: [
|
|
18
|
+
'https://www.w3.org/ns/activitystreams',
|
|
19
|
+
'https://sockethub.org/ns/context/v1.jsonld',
|
|
20
|
+
'https://sockethub.org/ns/context/platform/irc/v1.jsonld'
|
|
21
|
+
]
|
|
22
|
+
});
|
|
16
23
|
|
|
17
24
|
irc2as.events.on('incoming', function (asObject) {
|
|
18
25
|
console.log('activity stream: ', asObject);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export class ASEmitter {
|
|
2
|
+
constructor(events: any, server: any, contexts: any);
|
|
3
|
+
server: any;
|
|
4
|
+
events: any;
|
|
5
|
+
contexts: any[];
|
|
6
|
+
emitEvent(code: any, asObject: any): void;
|
|
7
|
+
__generalError(nick: any, content: any): {
|
|
8
|
+
"@context": any[];
|
|
9
|
+
type: string;
|
|
10
|
+
actor: {
|
|
11
|
+
type: string;
|
|
12
|
+
id: string;
|
|
13
|
+
name: any;
|
|
14
|
+
};
|
|
15
|
+
target: {
|
|
16
|
+
type: string;
|
|
17
|
+
id: any;
|
|
18
|
+
};
|
|
19
|
+
error: any;
|
|
20
|
+
};
|
|
21
|
+
presence(nick: any, role: any, channel: any): void;
|
|
22
|
+
channelError(channel: any, nick: any, content: any): void;
|
|
23
|
+
nickError(nick: any, content: any): void;
|
|
24
|
+
notice(nick: any, content: any): void;
|
|
25
|
+
serviceError(nick: any, content: any): void;
|
|
26
|
+
joinError(nick: any): void;
|
|
27
|
+
topicChange(channel: any, nick: any, content: any): void;
|
|
28
|
+
joinRoom(channel: any, nick: any): void;
|
|
29
|
+
userQuit(nick: any): void;
|
|
30
|
+
userPart(channel: any, nick: any): void;
|
|
31
|
+
privMsg(nick: any, target: any, content: any): void;
|
|
32
|
+
role(type: any, nick: any, target: any, role: any, channel: any): void;
|
|
33
|
+
nickChange(nick: any, content: any): void;
|
|
34
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class IrcToActivityStreams {
|
|
2
|
+
constructor(cfg: any);
|
|
3
|
+
server: any;
|
|
4
|
+
contexts: any[];
|
|
5
|
+
events: events<[never]>;
|
|
6
|
+
__buffer: {};
|
|
7
|
+
input(payload: any): boolean;
|
|
8
|
+
__processIRCCodes(code: any, server: any, channel: any, pos1: any, pos2: any, pos3: any, content: any, msg: any, incoming: any): void;
|
|
9
|
+
}
|
|
10
|
+
import events from "node:events";
|
package/dist/index.js
CHANGED
|
@@ -6,19 +6,23 @@ var EVENT_INCOMING = "incoming";
|
|
|
6
6
|
var EVENT_ERROR = "error";
|
|
7
7
|
|
|
8
8
|
class ASEmitter {
|
|
9
|
-
constructor(events, server) {
|
|
9
|
+
constructor(events, server, contexts) {
|
|
10
|
+
if (!Array.isArray(contexts) || contexts.length === 0) {
|
|
11
|
+
throw new Error("ASEmitter requires a non-empty contexts array from the caller");
|
|
12
|
+
}
|
|
10
13
|
this.server = server;
|
|
11
14
|
this.events = events;
|
|
15
|
+
this.contexts = [...contexts];
|
|
12
16
|
}
|
|
13
17
|
emitEvent(code, asObject) {
|
|
14
18
|
if (typeof asObject === "object" && !asObject.published) {
|
|
15
|
-
asObject.published =
|
|
19
|
+
asObject.published = new Date().toISOString();
|
|
16
20
|
}
|
|
17
21
|
this.events.emit(code, asObject);
|
|
18
22
|
}
|
|
19
23
|
__generalError(nick, content) {
|
|
20
24
|
return {
|
|
21
|
-
context:
|
|
25
|
+
"@context": this.contexts,
|
|
22
26
|
type: "update",
|
|
23
27
|
actor: {
|
|
24
28
|
type: "person",
|
|
@@ -34,7 +38,7 @@ class ASEmitter {
|
|
|
34
38
|
}
|
|
35
39
|
presence(nick, role, channel) {
|
|
36
40
|
this.emitEvent(EVENT_INCOMING, {
|
|
37
|
-
context:
|
|
41
|
+
"@context": this.contexts,
|
|
38
42
|
type: "update",
|
|
39
43
|
actor: {
|
|
40
44
|
type: "person",
|
|
@@ -54,7 +58,7 @@ class ASEmitter {
|
|
|
54
58
|
}
|
|
55
59
|
channelError(channel, nick, content) {
|
|
56
60
|
this.emitEvent(EVENT_ERROR, {
|
|
57
|
-
context:
|
|
61
|
+
"@context": this.contexts,
|
|
58
62
|
type: "update",
|
|
59
63
|
actor: {
|
|
60
64
|
type: "person",
|
|
@@ -72,7 +76,7 @@ class ASEmitter {
|
|
|
72
76
|
}
|
|
73
77
|
notice(nick, content) {
|
|
74
78
|
this.emitEvent(EVENT_INCOMING, {
|
|
75
|
-
context:
|
|
79
|
+
"@context": this.contexts,
|
|
76
80
|
type: "send",
|
|
77
81
|
actor: {
|
|
78
82
|
type: "service",
|
|
@@ -94,7 +98,7 @@ class ASEmitter {
|
|
|
94
98
|
}
|
|
95
99
|
joinError(nick) {
|
|
96
100
|
this.emitEvent(EVENT_ERROR, {
|
|
97
|
-
context:
|
|
101
|
+
"@context": this.contexts,
|
|
98
102
|
type: "join",
|
|
99
103
|
actor: {
|
|
100
104
|
id: this.server,
|
|
@@ -109,7 +113,7 @@ class ASEmitter {
|
|
|
109
113
|
}
|
|
110
114
|
topicChange(channel, nick, content) {
|
|
111
115
|
this.emitEvent(EVENT_INCOMING, {
|
|
112
|
-
context:
|
|
116
|
+
"@context": this.contexts,
|
|
113
117
|
type: "update",
|
|
114
118
|
actor: {
|
|
115
119
|
type: "person",
|
|
@@ -129,7 +133,7 @@ class ASEmitter {
|
|
|
129
133
|
}
|
|
130
134
|
joinRoom(channel, nick) {
|
|
131
135
|
this.emitEvent(EVENT_INCOMING, {
|
|
132
|
-
context:
|
|
136
|
+
"@context": this.contexts,
|
|
133
137
|
type: "join",
|
|
134
138
|
actor: {
|
|
135
139
|
type: "person",
|
|
@@ -145,7 +149,7 @@ class ASEmitter {
|
|
|
145
149
|
}
|
|
146
150
|
userQuit(nick) {
|
|
147
151
|
this.emitEvent(EVENT_INCOMING, {
|
|
148
|
-
context:
|
|
152
|
+
"@context": this.contexts,
|
|
149
153
|
type: "leave",
|
|
150
154
|
actor: {
|
|
151
155
|
type: "person",
|
|
@@ -164,7 +168,7 @@ class ASEmitter {
|
|
|
164
168
|
}
|
|
165
169
|
userPart(channel, nick) {
|
|
166
170
|
this.emitEvent(EVENT_INCOMING, {
|
|
167
|
-
context:
|
|
171
|
+
"@context": this.contexts,
|
|
168
172
|
type: "leave",
|
|
169
173
|
actor: {
|
|
170
174
|
type: "person",
|
|
@@ -193,7 +197,7 @@ class ASEmitter {
|
|
|
193
197
|
message = content;
|
|
194
198
|
}
|
|
195
199
|
this.emitEvent(EVENT_INCOMING, {
|
|
196
|
-
context:
|
|
200
|
+
"@context": this.contexts,
|
|
197
201
|
type: "send",
|
|
198
202
|
actor: {
|
|
199
203
|
type: "person",
|
|
@@ -213,7 +217,7 @@ class ASEmitter {
|
|
|
213
217
|
}
|
|
214
218
|
role(type, nick, target, role, channel) {
|
|
215
219
|
this.emitEvent(EVENT_INCOMING, {
|
|
216
|
-
context:
|
|
220
|
+
"@context": this.contexts,
|
|
217
221
|
type,
|
|
218
222
|
actor: {
|
|
219
223
|
type: "person",
|
|
@@ -242,7 +246,7 @@ class ASEmitter {
|
|
|
242
246
|
}
|
|
243
247
|
nickChange(nick, content) {
|
|
244
248
|
this.emitEvent(EVENT_INCOMING, {
|
|
245
|
-
context:
|
|
249
|
+
"@context": this.contexts,
|
|
246
250
|
type: "update",
|
|
247
251
|
actor: {
|
|
248
252
|
type: "person",
|
|
@@ -314,6 +318,10 @@ class IrcToActivityStreams {
|
|
|
314
318
|
constructor(cfg) {
|
|
315
319
|
const config = cfg || {};
|
|
316
320
|
this.server = config.server;
|
|
321
|
+
if (!Array.isArray(config.contexts) || config.contexts.length === 0) {
|
|
322
|
+
throw new Error("IrcToActivityStreams requires a non-empty contexts array");
|
|
323
|
+
}
|
|
324
|
+
this.contexts = [...config.contexts];
|
|
317
325
|
this.events = new events.EventEmitter;
|
|
318
326
|
this.__buffer = {};
|
|
319
327
|
this.__buffer[NAMES] = {};
|
|
@@ -336,7 +344,7 @@ class IrcToActivityStreams {
|
|
|
336
344
|
this.__processIRCCodes(code, server, channel, pos1, pos2, pos3, content, msg, incoming);
|
|
337
345
|
}
|
|
338
346
|
__processIRCCodes(code, server, channel, pos1, pos2, pos3, content, msg, incoming) {
|
|
339
|
-
const ase = new ASEmitter(this.events, this.server);
|
|
347
|
+
const ase = new ASEmitter(this.events, this.server, this.contexts);
|
|
340
348
|
let nick;
|
|
341
349
|
let type;
|
|
342
350
|
let role;
|
|
@@ -384,7 +392,7 @@ class IrcToActivityStreams {
|
|
|
384
392
|
case MOTD:
|
|
385
393
|
if (!this.__buffer[MOTD]) {
|
|
386
394
|
this.__buffer[MOTD] = {
|
|
387
|
-
context:
|
|
395
|
+
"@context": this.contexts,
|
|
388
396
|
type: "update",
|
|
389
397
|
actor: {
|
|
390
398
|
type: "service",
|
|
@@ -441,7 +449,7 @@ class IrcToActivityStreams {
|
|
|
441
449
|
break;
|
|
442
450
|
case TOPIC_IS:
|
|
443
451
|
this.__buffer[TOPIC_IS] = {
|
|
444
|
-
context:
|
|
452
|
+
"@context": this.contexts,
|
|
445
453
|
type: "update",
|
|
446
454
|
actor: undefined,
|
|
447
455
|
target: {
|
|
@@ -455,7 +463,7 @@ class IrcToActivityStreams {
|
|
|
455
463
|
}
|
|
456
464
|
};
|
|
457
465
|
break;
|
|
458
|
-
case TOPIC_SET_BY:
|
|
466
|
+
case TOPIC_SET_BY: {
|
|
459
467
|
if (!this.__buffer[TOPIC_IS]) {
|
|
460
468
|
break;
|
|
461
469
|
}
|
|
@@ -465,10 +473,14 @@ class IrcToActivityStreams {
|
|
|
465
473
|
id: `${nick}@${this.server}`,
|
|
466
474
|
name: nick
|
|
467
475
|
};
|
|
468
|
-
|
|
476
|
+
const topicSetEpochSeconds = Number.parseInt(msg[0], 10);
|
|
477
|
+
if (Number.isFinite(topicSetEpochSeconds)) {
|
|
478
|
+
this.__buffer[TOPIC_IS].published = new Date(topicSetEpochSeconds * 1000).toISOString();
|
|
479
|
+
}
|
|
469
480
|
ase.emitEvent(EVENT_INCOMING2, this.__buffer[TOPIC_IS]);
|
|
470
481
|
delete this.__buffer[TOPIC_IS];
|
|
471
482
|
break;
|
|
483
|
+
}
|
|
472
484
|
case WHO:
|
|
473
485
|
case WHO_OLD:
|
|
474
486
|
nick = msg[3].length <= 2 ? msg[2] : msg[3];
|
|
@@ -488,4 +500,4 @@ export {
|
|
|
488
500
|
IrcToActivityStreams
|
|
489
501
|
};
|
|
490
502
|
|
|
491
|
-
//# debugId=
|
|
503
|
+
//# debugId=7A36A45E2CE5F78564756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.js", "../src/as-emitter.js"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import events from \"node:events\";\nimport { ASEmitter } from \"./as-emitter.js\";\n\nconst EVENT_INCOMING = \"incoming\";\n// EVENT_ERROR = 'error',\nconst EVENT_PONG = \"pong\";\nconst EVENT_PING = \"ping\";\nconst EVENT_UNPROCESSED = \"unprocessed\";\n\nconst ERR_BAD_NICK = \"432\";\nconst ERR_CHAN_PRIVS = \"482\";\nconst ERR_NICK_IN_USE = \"433\";\nconst ERR_TEMP_UNAVAIL = \"437\";\nconst ERR_NO_CHANNEL = \"403\";\nconst ERR_NOT_INVITED = \"471\";\nconst ERR_BADMODE = \"472\";\nconst ERR_INVITE_ONLY = \"473\";\nconst ERR_BANNED = \"474\";\nconst ERR_BADKEY = \"475\";\nconst ERR_BADMASK = \"476\";\nconst ERR_NOCHANMODES = \"477\";\nconst ERR_BANLISTFULL = \"478\";\nconst JOIN = \"JOIN\";\nconst MODE = \"MODE\";\nconst MOTD = \"372\";\nconst MOTD_END = \"376\";\nconst NAMES = \"353\";\n// NAMES_END = \"366\",\nconst NICK = \"NICK\";\nconst NOTICE = \"NOTICE\";\nconst PART = \"PART\";\nconst PING = \"PING\";\nconst PONG = \"PONG\";\nconst PRIVMSG = \"PRIVMSG\";\nconst QUIT = \"QUIT\";\nconst TOPIC_CHANGE = \"TOPIC\";\nconst TOPIC_IS = \"332\";\nconst TOPIC_SET_BY = \"333\";\nconst WHO = \"352\";\nconst WHO_OLD = \"354\";\n// WHO_END = \"315\";\n\nconst ROLE = {\n \"@\": \"owner\",\n \"%\": \"admin\",\n \"*\": \"participant\",\n};\n\nconst MODES = {\n o: \"owner\",\n h: \"admin\",\n v: \"participant\",\n};\n\nfunction getNickFromServer(server) {\n return server.split(/^:/)[1].split(\"!\")[0];\n}\n\nexport class IrcToActivityStreams {\n constructor(cfg) {\n const config = cfg || {};\n this.server = config.server;\n this.events = new events.EventEmitter();\n this.__buffer = {};\n this.__buffer[NAMES] = {};\n }\n\n input(payload) {\n if (typeof payload !== \"string\") {\n return false;\n }\n if (payload.length < 3) {\n return false;\n }\n const incoming = payload.trim();\n const [metadata, content] = incoming.split(\" :\");\n const [server, code, pos1, pos2, pos3, ...msg] = metadata.split(\" \");\n const channel =\n typeof pos1 === \"string\" && pos1.startsWith(\"#\")\n ? pos1\n : typeof pos2 === \"string\" && pos2.startsWith(\"#\")\n ? pos2\n : typeof pos3 === \"string\" && pos3.startsWith(\"#\")\n ? pos3\n : undefined;\n if (metadata === PING) {\n this.events.emit(EVENT_PING, `${Date.now()}`);\n return true;\n }\n this.__processIRCCodes(\n code,\n server,\n channel,\n pos1,\n pos2,\n pos3,\n content,\n msg,\n incoming,\n );\n }\n\n __processIRCCodes(\n code,\n server,\n channel,\n pos1,\n pos2,\n pos3,\n content,\n msg,\n incoming,\n ) {\n const ase = new ASEmitter(this.events, this.server);\n let nick;\n let type;\n let role;\n\n switch (code) {\n /** */\n case ERR_CHAN_PRIVS:\n case ERR_NOT_INVITED:\n case ERR_BADMODE:\n case ERR_INVITE_ONLY:\n case ERR_BANNED:\n case ERR_BADKEY:\n case ERR_BADMASK:\n case ERR_NOCHANMODES:\n case ERR_BANLISTFULL:\n ase.channelError(channel, pos1, content);\n break;\n\n /** */\n case ERR_NICK_IN_USE: // nick conflict\n case ERR_BAD_NICK:\n ase.serviceError(pos2, content);\n break;\n\n /** */\n case ERR_NO_CHANNEL: // no such channel\n ase.joinError(pos2);\n break;\n\n /** */\n case ERR_TEMP_UNAVAIL: // nick conflict\n ase.nickError(pos2, content);\n break;\n\n /** */\n case JOIN: // room join\n ase.joinRoom(channel, getNickFromServer(server));\n break;\n\n // custom event indicating a channel mode has been updated, used to re-query user or channel\n case MODE: {\n const user_mode = pos2 || content;\n if (!channel) {\n break;\n } // don't handle cases with no channel defined\n if (!pos3) {\n break;\n } // we need target user\n role = MODES[user_mode[1]] || \"member\";\n type = \"add\";\n if (user_mode[0] === \"-\") {\n type = \"remove\";\n }\n ase.role(type, getNickFromServer(server), pos3, role, channel);\n break;\n }\n\n /** */\n case MOTD: // MOTD\n if (!this.__buffer[MOTD]) {\n this.__buffer[MOTD] = {\n
|
|
6
|
-
"const EVENT_INCOMING = \"incoming\";\nconst EVENT_ERROR = \"error\";\n\nexport class ASEmitter {\n constructor(events, server) {\n this.server = server;\n this.events = events;\n }\n\n emitEvent(code, asObject) {\n if (typeof asObject === \"object\" && !asObject.published) {\n asObject.published =
|
|
5
|
+
"import events from \"node:events\";\nimport { ASEmitter } from \"./as-emitter.js\";\n\nconst EVENT_INCOMING = \"incoming\";\n// EVENT_ERROR = 'error',\nconst EVENT_PONG = \"pong\";\nconst EVENT_PING = \"ping\";\nconst EVENT_UNPROCESSED = \"unprocessed\";\n\nconst ERR_BAD_NICK = \"432\";\nconst ERR_CHAN_PRIVS = \"482\";\nconst ERR_NICK_IN_USE = \"433\";\nconst ERR_TEMP_UNAVAIL = \"437\";\nconst ERR_NO_CHANNEL = \"403\";\nconst ERR_NOT_INVITED = \"471\";\nconst ERR_BADMODE = \"472\";\nconst ERR_INVITE_ONLY = \"473\";\nconst ERR_BANNED = \"474\";\nconst ERR_BADKEY = \"475\";\nconst ERR_BADMASK = \"476\";\nconst ERR_NOCHANMODES = \"477\";\nconst ERR_BANLISTFULL = \"478\";\nconst JOIN = \"JOIN\";\nconst MODE = \"MODE\";\nconst MOTD = \"372\";\nconst MOTD_END = \"376\";\nconst NAMES = \"353\";\n// NAMES_END = \"366\",\nconst NICK = \"NICK\";\nconst NOTICE = \"NOTICE\";\nconst PART = \"PART\";\nconst PING = \"PING\";\nconst PONG = \"PONG\";\nconst PRIVMSG = \"PRIVMSG\";\nconst QUIT = \"QUIT\";\nconst TOPIC_CHANGE = \"TOPIC\";\nconst TOPIC_IS = \"332\";\nconst TOPIC_SET_BY = \"333\";\nconst WHO = \"352\";\nconst WHO_OLD = \"354\";\n// WHO_END = \"315\";\n\nconst ROLE = {\n \"@\": \"owner\",\n \"%\": \"admin\",\n \"*\": \"participant\",\n};\n\nconst MODES = {\n o: \"owner\",\n h: \"admin\",\n v: \"participant\",\n};\n\nfunction getNickFromServer(server) {\n return server.split(/^:/)[1].split(\"!\")[0];\n}\n\nexport class IrcToActivityStreams {\n constructor(cfg) {\n const config = cfg || {};\n this.server = config.server;\n if (!Array.isArray(config.contexts) || config.contexts.length === 0) {\n throw new Error(\n \"IrcToActivityStreams requires a non-empty contexts array\",\n );\n }\n this.contexts = [...config.contexts];\n this.events = new events.EventEmitter();\n this.__buffer = {};\n this.__buffer[NAMES] = {};\n }\n\n input(payload) {\n if (typeof payload !== \"string\") {\n return false;\n }\n if (payload.length < 3) {\n return false;\n }\n const incoming = payload.trim();\n const [metadata, content] = incoming.split(\" :\");\n const [server, code, pos1, pos2, pos3, ...msg] = metadata.split(\" \");\n const channel =\n typeof pos1 === \"string\" && pos1.startsWith(\"#\")\n ? pos1\n : typeof pos2 === \"string\" && pos2.startsWith(\"#\")\n ? pos2\n : typeof pos3 === \"string\" && pos3.startsWith(\"#\")\n ? pos3\n : undefined;\n if (metadata === PING) {\n this.events.emit(EVENT_PING, `${Date.now()}`);\n return true;\n }\n this.__processIRCCodes(\n code,\n server,\n channel,\n pos1,\n pos2,\n pos3,\n content,\n msg,\n incoming,\n );\n }\n\n __processIRCCodes(\n code,\n server,\n channel,\n pos1,\n pos2,\n pos3,\n content,\n msg,\n incoming,\n ) {\n const ase = new ASEmitter(this.events, this.server, this.contexts);\n let nick;\n let type;\n let role;\n\n switch (code) {\n /** */\n case ERR_CHAN_PRIVS:\n case ERR_NOT_INVITED:\n case ERR_BADMODE:\n case ERR_INVITE_ONLY:\n case ERR_BANNED:\n case ERR_BADKEY:\n case ERR_BADMASK:\n case ERR_NOCHANMODES:\n case ERR_BANLISTFULL:\n ase.channelError(channel, pos1, content);\n break;\n\n /** */\n case ERR_NICK_IN_USE: // nick conflict\n case ERR_BAD_NICK:\n ase.serviceError(pos2, content);\n break;\n\n /** */\n case ERR_NO_CHANNEL: // no such channel\n ase.joinError(pos2);\n break;\n\n /** */\n case ERR_TEMP_UNAVAIL: // nick conflict\n ase.nickError(pos2, content);\n break;\n\n /** */\n case JOIN: // room join\n ase.joinRoom(channel, getNickFromServer(server));\n break;\n\n // custom event indicating a channel mode has been updated, used to re-query user or channel\n case MODE: {\n const user_mode = pos2 || content;\n if (!channel) {\n break;\n } // don't handle cases with no channel defined\n if (!pos3) {\n break;\n } // we need target user\n role = MODES[user_mode[1]] || \"member\";\n type = \"add\";\n if (user_mode[0] === \"-\") {\n type = \"remove\";\n }\n ase.role(type, getNickFromServer(server), pos3, role, channel);\n break;\n }\n\n /** */\n case MOTD: // MOTD\n if (!this.__buffer[MOTD]) {\n this.__buffer[MOTD] = {\n \"@context\": this.contexts,\n type: \"update\",\n actor: {\n type: \"service\",\n id: this.server,\n name: this.server,\n },\n object: {\n type: \"topic\",\n content: content,\n },\n };\n } else {\n this.__buffer[MOTD].object.content += ` ${content}`;\n }\n break;\n case MOTD_END: // end of MOTD\n if (!this.__buffer[MOTD]) {\n break;\n }\n ase.emitEvent(EVENT_INCOMING, this.__buffer[MOTD]);\n delete this.__buffer[MOTD];\n break;\n\n /** */\n case NAMES: // user list\n for (const entry of content.split(\" \")) {\n role = \"member\";\n let username = entry;\n if (ROLE[entry[0]]) {\n username = entry.substr(1);\n role = ROLE[entry[0]];\n }\n ase.presence(username, role, channel);\n }\n break;\n\n /** */\n case NICK: // nick change\n // log(`- 2 nick: ${nick} from content: ${content}`);\n ase.nickChange(getNickFromServer(server), content);\n break;\n\n /** */\n case NOTICE: // notice\n ase.notice(pos1, content);\n break;\n\n /** */\n case PART: // leaving\n ase.userPart(channel, getNickFromServer(server));\n break;\n\n /** */\n case PONG: // ping response received\n this.events.emit(EVENT_PONG, `${Date.now()}`);\n break;\n\n /** */\n case PRIVMSG: // msg\n ase.privMsg(getNickFromServer(server), pos1, content);\n break;\n\n /** */\n case QUIT: // quit user\n ase.userQuit(getNickFromServer(server));\n break;\n\n /** */\n case TOPIC_CHANGE: // topic changed now\n ase.topicChange(channel, getNickFromServer(server), content);\n break;\n\n /** */\n case TOPIC_IS: // topic currently set to\n this.__buffer[TOPIC_IS] = {\n \"@context\": this.contexts,\n type: \"update\",\n actor: undefined,\n target: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n name: channel,\n },\n object: {\n type: \"topic\",\n content: content,\n },\n };\n break;\n case TOPIC_SET_BY: {\n // current topic set by\n if (!this.__buffer[TOPIC_IS]) {\n break;\n }\n nick = pos3.split(\"!\")[0];\n this.__buffer[TOPIC_IS].actor = {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n };\n // IRC RPL_TOPICWHOTIME (333) timestamp is Unix epoch seconds; normalize when valid\n const topicSetEpochSeconds = Number.parseInt(msg[0], 10);\n if (Number.isFinite(topicSetEpochSeconds)) {\n this.__buffer[TOPIC_IS].published = new Date(\n topicSetEpochSeconds * 1000,\n ).toISOString();\n }\n ase.emitEvent(EVENT_INCOMING, this.__buffer[TOPIC_IS]);\n delete this.__buffer[TOPIC_IS];\n break;\n }\n\n /** */\n case WHO:\n case WHO_OLD:\n nick = msg[3].length <= 2 ? msg[2] : msg[3];\n if (nick === \"undefined\") {\n break;\n }\n role = MODES[pos2[1]] || \"member\";\n ase.presence(nick, role, channel);\n break;\n\n /** */\n default:\n this.events.emit(EVENT_UNPROCESSED, incoming);\n break;\n }\n }\n}\n",
|
|
6
|
+
"const EVENT_INCOMING = \"incoming\";\nconst EVENT_ERROR = \"error\";\n\nexport class ASEmitter {\n constructor(events, server, contexts) {\n if (!Array.isArray(contexts) || contexts.length === 0) {\n throw new Error(\n \"ASEmitter requires a non-empty contexts array from the caller\",\n );\n }\n this.server = server;\n this.events = events;\n this.contexts = [...contexts];\n }\n\n emitEvent(code, asObject) {\n if (typeof asObject === \"object\" && !asObject.published) {\n asObject.published = new Date().toISOString();\n }\n this.events.emit(code, asObject);\n }\n\n __generalError(nick, content) {\n return {\n \"@context\": this.contexts,\n type: \"update\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"service\",\n id: this.server,\n },\n error: content,\n };\n }\n\n presence(nick, role, channel) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"update\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n name: channel,\n },\n object: {\n type: \"presence\",\n role: role,\n },\n });\n }\n\n channelError(channel, nick, content) {\n this.emitEvent(EVENT_ERROR, {\n \"@context\": this.contexts,\n type: \"update\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n },\n target: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n },\n error: content,\n });\n }\n\n nickError(nick, content) {\n this.emitEvent(EVENT_ERROR, this.__generalError(nick, content));\n }\n\n notice(nick, content) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"send\",\n actor: {\n type: \"service\",\n id: this.server,\n },\n object: {\n type: \"message\",\n content: content,\n },\n target: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n });\n }\n\n serviceError(nick, content) {\n this.emitEvent(EVENT_ERROR, this.__generalError(nick, content));\n }\n\n joinError(nick) {\n this.emitEvent(EVENT_ERROR, {\n \"@context\": this.contexts,\n type: \"join\",\n actor: {\n id: this.server,\n type: \"service\",\n },\n error: `no such channel ${nick}`,\n target: {\n id: `${nick}@${this.server}`,\n type: \"person\",\n },\n });\n }\n\n topicChange(channel, nick, content) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"update\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n name: channel,\n },\n object: {\n type: \"topic\",\n content: content,\n },\n });\n }\n\n joinRoom(channel, nick) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"join\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n name: channel,\n },\n });\n }\n\n userQuit(nick) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"leave\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"service\",\n id: this.server,\n },\n object: {\n type: \"message\",\n content: \"user has quit\",\n },\n });\n }\n\n userPart(channel, nick) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"leave\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n name: channel,\n },\n object: {\n type: \"message\",\n content: \"user has left the channel\",\n },\n });\n }\n\n privMsg(nick, target, content) {\n let type;\n let message;\n if (content.startsWith(\"+\\u0001ACTION \")) {\n type = \"me\";\n message = content\n // biome-ignore lint/suspicious/noControlCharactersInRegex: IRC ACTION framing uses control chars\n .split(/^\\+\\u0001ACTION\\s+/)[1]\n // biome-ignore lint/suspicious/noControlCharactersInRegex: IRC ACTION framing uses control chars\n .split(/\\u0001$/)[0];\n } else {\n type = \"message\";\n message = content;\n }\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"send\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: target.startsWith(\"#\") ? \"room\" : \"person\",\n id: `${this.server}/${target}`,\n name: target,\n },\n object: {\n type: type,\n content: message,\n },\n });\n }\n\n role(type, nick, target, role, channel) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: type,\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"person\",\n id: `${target}@${this.server}`,\n name: target,\n },\n object: {\n type: \"relationship\",\n relationship: \"role\",\n subject: {\n type: \"presence\",\n role: role,\n },\n object: {\n type: \"room\",\n id: `${this.server}/${channel}`,\n name: channel,\n },\n },\n });\n }\n\n nickChange(nick, content) {\n this.emitEvent(EVENT_INCOMING, {\n \"@context\": this.contexts,\n type: \"update\",\n actor: {\n type: \"person\",\n id: `${nick}@${this.server}`,\n name: nick,\n },\n target: {\n type: \"person\",\n id: `${content}@${this.server}`,\n name: content,\n },\n object: {\n type: \"address\",\n },\n });\n }\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": ";AAAA;;;ACAA,IAAM,iBAAiB;AACvB,IAAM,cAAc;AAAA;AAEb,MAAM,UAAU;AAAA,EACnB,WAAW,CAAC,QAAQ,QAAQ;AAAA,
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "7A36A45E2CE5F78564756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/package.json
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sockethub/irc2as",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.13",
|
|
4
4
|
"description": "IRC to ActivityStreams objects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
10
|
"import": "./dist/index.js",
|
|
11
11
|
"default": "./dist/index.js"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
|
-
"src/",
|
|
16
15
|
"dist/"
|
|
17
16
|
],
|
|
18
17
|
"engines": {
|
|
19
|
-
"
|
|
18
|
+
"node": ">=20"
|
|
20
19
|
},
|
|
21
20
|
"repository": {
|
|
22
21
|
"type": "git",
|
|
@@ -46,7 +45,8 @@
|
|
|
46
45
|
"fast-deep-equal": "^3.1.3"
|
|
47
46
|
},
|
|
48
47
|
"devDependencies": {
|
|
49
|
-
"@sockethub/schemas": "^3.0.0-alpha.
|
|
48
|
+
"@sockethub/schemas": "^3.0.0-alpha.13"
|
|
50
49
|
},
|
|
51
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "864733e5b34449ef39542eceb4ff11aa308081bc",
|
|
51
|
+
"types": "./dist/index.d.ts"
|
|
52
52
|
}
|