simplex-chat 0.3.0 → 6.5.0-beta.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -22
- package/binding.gyp +35 -0
- package/dist/api.d.ts +371 -0
- package/dist/api.js +774 -0
- package/dist/api.js.map +1 -0
- package/dist/bot.d.ts +31 -0
- package/dist/bot.js +189 -0
- package/dist/bot.js.map +1 -0
- package/dist/core.d.ts +128 -0
- package/dist/core.js +121 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/simplex.d.ts +10 -0
- package/dist/simplex.js +1 -0
- package/dist/util.d.ts +15 -0
- package/dist/util.js +91 -0
- package/dist/util.js.map +1 -0
- package/package.json +32 -48
- package/src/api.ts +834 -0
- package/src/bot.ts +216 -0
- package/src/core.ts +210 -0
- package/src/download-libs.js +224 -0
- package/src/index.ts +22 -0
- package/src/simplex.d.ts +10 -0
- package/src/simplex.js +1 -0
- package/src/util.ts +92 -0
- package/dist/client.d.ts +0 -61
- package/dist/client.js +0 -271
- package/dist/client.js.map +0 -1
- package/dist/command.d.ts +0 -408
- package/dist/command.js +0 -184
- package/dist/command.js.map +0 -1
- package/dist/index-web.d.ts +0 -1
- package/dist/index-web.js +0 -6
- package/dist/index-web.js.map +0 -1
- package/dist/index.bundle.js +0 -11
- package/dist/queue.d.ts +0 -24
- package/dist/queue.js +0 -77
- package/dist/queue.js.map +0 -1
- package/dist/response.d.ts +0 -754
- package/dist/response.js +0 -21
- package/dist/response.js.map +0 -1
- package/dist/test.html +0 -7
- package/dist/transport.d.ts +0 -54
- package/dist/transport.js +0 -131
- package/dist/transport.js.map +0 -1
- package/dist/websocket.d.ts +0 -8
- package/dist/websocket.js +0 -4
- package/dist/websocket.js.map +0 -1
package/src/util.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import {T} from "@simplex-chat/types"
|
|
2
|
+
import {BotAddressSettings} from "./api"
|
|
3
|
+
|
|
4
|
+
export function chatInfoRef(cInfo: T.ChatInfo): T.ChatRef | undefined {
|
|
5
|
+
switch (cInfo.type) {
|
|
6
|
+
case T.ChatType.Direct: return {chatType: T.ChatType.Direct, chatId: cInfo.contact.contactId}
|
|
7
|
+
case T.ChatType.Group: {
|
|
8
|
+
const chatScope: T.GroupChatScope | undefined =
|
|
9
|
+
cInfo.groupChatScope?.type == "memberSupport"
|
|
10
|
+
? {type: "memberSupport", groupMemberId_: cInfo.groupChatScope.groupMember_?.groupMemberId}
|
|
11
|
+
: undefined
|
|
12
|
+
return {chatType: T.ChatType.Group, chatId: cInfo.groupInfo.groupId, chatScope}
|
|
13
|
+
}
|
|
14
|
+
default: return undefined
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function chatInfoName(cInfo: T.ChatInfo): string {
|
|
19
|
+
switch (cInfo.type) {
|
|
20
|
+
case "direct": return `@${cInfo.contact.profile.displayName}`
|
|
21
|
+
case "group": {
|
|
22
|
+
const scope = cInfo.groupChatScope
|
|
23
|
+
const scopeName = scope?.type === "memberSupport"
|
|
24
|
+
? `(support${scope.groupMember_ ? ` ${scope.groupMember_.memberProfile.displayName}` : ""})`
|
|
25
|
+
: ""
|
|
26
|
+
return `#${cInfo.groupInfo.groupProfile.displayName}${scopeName}`
|
|
27
|
+
}
|
|
28
|
+
case "local": return "private notes"
|
|
29
|
+
case "contactRequest": return `request from @${cInfo.contactRequest.profile.displayName}`
|
|
30
|
+
case "contactConnection": {
|
|
31
|
+
const alias = cInfo.contactConnection.localAlias
|
|
32
|
+
return `pending connection${alias ? ` (@${alias})` : ""}`
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function senderName(cInfo: T.ChatInfo, chatDir: T.CIDirection) {
|
|
38
|
+
const sender = chatDir.type === "groupRcv"
|
|
39
|
+
? ` @${chatDir.groupMember.memberProfile.displayName}`
|
|
40
|
+
: ""
|
|
41
|
+
return chatInfoName(cInfo) + sender
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function contactAddressStr(link: T.CreatedConnLink): string {
|
|
45
|
+
return link.connShortLink || link.connFullLink
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function botAddressSettings({addressSettings}: T.UserContactLink): BotAddressSettings {
|
|
49
|
+
return {
|
|
50
|
+
autoAccept: addressSettings.autoAccept ? true : false,
|
|
51
|
+
welcomeMessage: addressSettings.autoReply,
|
|
52
|
+
businessAddress: addressSettings.businessAddress
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function fromLocalProfile({displayName, fullName, shortDescr, image, contactLink, preferences, peerType}: T.LocalProfile): T.Profile {
|
|
57
|
+
const profile = {displayName, fullName, shortDescr, image, contactLink, preferences, peerType}
|
|
58
|
+
for (const key in profile) {
|
|
59
|
+
if (typeof (profile as any)[key] === "undefined") delete (profile as any)[key]
|
|
60
|
+
}
|
|
61
|
+
return profile
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function ciContentText({content}: T.ChatItem): string | undefined {
|
|
65
|
+
switch (content.type) {
|
|
66
|
+
case "sndMsgContent": return content.msgContent.text;
|
|
67
|
+
case "rcvMsgContent": return content.msgContent.text;
|
|
68
|
+
default: return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface BotCommand {
|
|
73
|
+
keyword: string
|
|
74
|
+
params: string
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// returns command (without /) and trimmed parameters
|
|
78
|
+
export function ciBotCommand(chatItem: T.ChatItem): BotCommand | undefined {
|
|
79
|
+
const msg = ciContentText(chatItem)?.trim()
|
|
80
|
+
if (msg) {
|
|
81
|
+
const r = msg.match(/\/([^\s]+)(.*)/)
|
|
82
|
+
if (r && r.length >= 3) {
|
|
83
|
+
return {keyword: r[1], params: r[2].trim()}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return undefined
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function reactionText(reaction: T.ACIReaction): string {
|
|
90
|
+
const r = reaction.chatReaction
|
|
91
|
+
return r.reaction.type === "emoji" ? r.reaction.emoji : r.reaction.tag
|
|
92
|
+
}
|
package/dist/client.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { ABQueue } from "./queue";
|
|
2
|
-
import { ChatServer, ChatResponseError } from "./transport";
|
|
3
|
-
import { ChatResponse, CR, ChatEvent, T } from "@simplex-chat/types";
|
|
4
|
-
export interface ChatClientConfig {
|
|
5
|
-
readonly qSize: number;
|
|
6
|
-
readonly tcpTimeout: number;
|
|
7
|
-
}
|
|
8
|
-
export interface Request {
|
|
9
|
-
readonly resolve: (resp: ChatResponse) => void;
|
|
10
|
-
readonly reject: (err?: ChatResponseError | CR.ChatCmdError) => void;
|
|
11
|
-
}
|
|
12
|
-
export declare class ChatCommandError extends Error {
|
|
13
|
-
message: string;
|
|
14
|
-
response: ChatResponse;
|
|
15
|
-
constructor(message: string, response: ChatResponse);
|
|
16
|
-
}
|
|
17
|
-
export declare enum ConnReqType {
|
|
18
|
-
Invitation = "invitation",
|
|
19
|
-
Contact = "contact"
|
|
20
|
-
}
|
|
21
|
-
export declare class ChatClient {
|
|
22
|
-
readonly server: ChatServer | string;
|
|
23
|
-
readonly config: ChatClientConfig;
|
|
24
|
-
readonly msgQ: ABQueue<ChatEvent>;
|
|
25
|
-
readonly client: Promise<void>;
|
|
26
|
-
private readonly transport;
|
|
27
|
-
private _connected;
|
|
28
|
-
private clientCorrId;
|
|
29
|
-
private readonly sentCommands;
|
|
30
|
-
static defaultConfig: ChatClientConfig;
|
|
31
|
-
private constructor();
|
|
32
|
-
static create(server?: ChatServer | string, cfg?: ChatClientConfig): Promise<ChatClient>;
|
|
33
|
-
sendChatCmd(cmd: string): Promise<ChatResponse>;
|
|
34
|
-
disconnect(): Promise<void>;
|
|
35
|
-
apiGetActiveUser(): Promise<T.User | undefined>;
|
|
36
|
-
apiCreateActiveUser(profile?: T.Profile): Promise<T.User>;
|
|
37
|
-
enableAddressAutoAccept(userId: number, autoReply?: T.MsgContent, businessAddress?: boolean): Promise<void>;
|
|
38
|
-
disableAddressAutoAccept(userId: number, businessAddress?: boolean): Promise<void>;
|
|
39
|
-
apiSendMessages(chatType: T.ChatType, chatId: number, messages: T.ComposedMessage[]): Promise<T.AChatItem[]>;
|
|
40
|
-
apiSendTextMessage(chatType: T.ChatType, chatId: number, text: string): Promise<T.AChatItem[]>;
|
|
41
|
-
apiUpdateChatItem(chatType: T.ChatType, chatId: number, chatItemId: number, msgContent: T.MsgContent): Promise<T.ChatItem>;
|
|
42
|
-
apiDeleteChatItems(chatType: T.ChatType, chatId: number, chatItemIds: number[], deleteMode: T.CIDeleteMode): Promise<T.ChatItemDeletion[] | undefined>;
|
|
43
|
-
apiCreateLink(userId: number): Promise<string>;
|
|
44
|
-
apiConnectActiveUser(connLink: string): Promise<ConnReqType>;
|
|
45
|
-
apiDeleteChat(chatType: T.ChatType, chatId: number, deleteMode?: T.ChatDeleteMode): Promise<void>;
|
|
46
|
-
apiUpdateProfile(userId: number, profile: T.Profile): Promise<T.Profile | undefined>;
|
|
47
|
-
apiCreateUserAddress(userId: number): Promise<string>;
|
|
48
|
-
apiDeleteUserAddress(userId: number): Promise<void>;
|
|
49
|
-
apiGetUserAddress(userId: number): Promise<string | undefined>;
|
|
50
|
-
apiAcceptContactRequest(contactReqId: number): Promise<T.Contact>;
|
|
51
|
-
apiRejectContactRequest(contactReqId: number): Promise<void>;
|
|
52
|
-
apiReceiveFile(fileId: number): Promise<T.AChatItem>;
|
|
53
|
-
apiNewGroup(userId: number, groupProfile: T.GroupProfile): Promise<T.GroupInfo>;
|
|
54
|
-
apiAddMember(groupId: number, contactId: number, memberRole: T.GroupMemberRole): Promise<T.GroupMember>;
|
|
55
|
-
apiJoinGroup(groupId: number): Promise<T.GroupInfo>;
|
|
56
|
-
apiRemoveMembers(groupId: number, memberIds: number[], withMessages?: boolean): Promise<T.GroupMember[]>;
|
|
57
|
-
apiLeaveGroup(groupId: number): Promise<T.GroupInfo>;
|
|
58
|
-
apiListMembers(groupId: number): Promise<T.GroupMember[]>;
|
|
59
|
-
apiUpdateGroup(groupId: number, groupProfile: T.GroupProfile): Promise<T.GroupInfo>;
|
|
60
|
-
get connected(): boolean;
|
|
61
|
-
}
|
package/dist/client.js
DELETED
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ChatClient = exports.ConnReqType = exports.ChatCommandError = void 0;
|
|
4
|
-
const queue_1 = require("./queue");
|
|
5
|
-
const transport_1 = require("./transport");
|
|
6
|
-
const types_1 = require("@simplex-chat/types");
|
|
7
|
-
class ChatCommandError extends Error {
|
|
8
|
-
constructor(message, response) {
|
|
9
|
-
super(message);
|
|
10
|
-
this.message = message;
|
|
11
|
-
this.response = response;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.ChatCommandError = ChatCommandError;
|
|
15
|
-
var ConnReqType;
|
|
16
|
-
(function (ConnReqType) {
|
|
17
|
-
ConnReqType["Invitation"] = "invitation";
|
|
18
|
-
ConnReqType["Contact"] = "contact";
|
|
19
|
-
})(ConnReqType = exports.ConnReqType || (exports.ConnReqType = {}));
|
|
20
|
-
class ChatClient {
|
|
21
|
-
constructor(server, config, msgQ, client, transport) {
|
|
22
|
-
this.server = server;
|
|
23
|
-
this.config = config;
|
|
24
|
-
this.msgQ = msgQ;
|
|
25
|
-
this.client = client;
|
|
26
|
-
this.transport = transport;
|
|
27
|
-
this._connected = true;
|
|
28
|
-
this.clientCorrId = 0;
|
|
29
|
-
this.sentCommands = new Map();
|
|
30
|
-
}
|
|
31
|
-
static async create(server = transport_1.localServer, cfg = ChatClient.defaultConfig) {
|
|
32
|
-
const transport = await transport_1.ChatTransport.connect(server, cfg.tcpTimeout, cfg.qSize);
|
|
33
|
-
const msgQ = new queue_1.ABQueue(cfg.qSize);
|
|
34
|
-
const client = runClient().then(transport_1.noop, transport_1.noop);
|
|
35
|
-
const c = new ChatClient(server, cfg, msgQ, client, transport);
|
|
36
|
-
return c;
|
|
37
|
-
async function runClient() {
|
|
38
|
-
for await (const t of transport) {
|
|
39
|
-
const apiResp = (t instanceof Promise ? await t : t);
|
|
40
|
-
if (apiResp instanceof transport_1.ChatResponseError) {
|
|
41
|
-
console.log("chat response error: ", apiResp);
|
|
42
|
-
}
|
|
43
|
-
else if ("corrId" in apiResp) {
|
|
44
|
-
const { corrId, resp } = apiResp;
|
|
45
|
-
const req = c.sentCommands.get(corrId);
|
|
46
|
-
if (req) {
|
|
47
|
-
c.sentCommands.delete(corrId);
|
|
48
|
-
req.resolve(resp);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
// TODO send error to errQ?
|
|
52
|
-
console.log("no command sent for chat response: ", apiResp);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
await msgQ.enqueue(apiResp.resp);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
c._connected = false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
sendChatCmd(cmd) {
|
|
63
|
-
const corrId = `${++this.clientCorrId}`;
|
|
64
|
-
const t = { corrId, cmd };
|
|
65
|
-
const p = new Promise((resolve, reject) => this.sentCommands.set(corrId, { resolve, reject }));
|
|
66
|
-
this.transport.write(t).then(transport_1.noop, transport_1.noop);
|
|
67
|
-
return p;
|
|
68
|
-
}
|
|
69
|
-
async disconnect() {
|
|
70
|
-
await this.transport.close();
|
|
71
|
-
await this.client;
|
|
72
|
-
}
|
|
73
|
-
async apiGetActiveUser() {
|
|
74
|
-
const r = await this.sendChatCmd(types_1.CC.ShowActiveUser.cmdString({}));
|
|
75
|
-
switch (r.type) {
|
|
76
|
-
case "activeUser":
|
|
77
|
-
return r.user;
|
|
78
|
-
case "chatCmdError":
|
|
79
|
-
if (r.chatError.type === "error" && r.chatError.errorType.type === "noActiveUser")
|
|
80
|
-
return undefined;
|
|
81
|
-
throw new ChatCommandError("unexpected response error", r);
|
|
82
|
-
default:
|
|
83
|
-
throw new ChatCommandError("unexpected response", r);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async apiCreateActiveUser(profile) {
|
|
87
|
-
const r = await this.sendChatCmd(types_1.CC.CreateActiveUser.cmdString({ newUser: { profile, pastTimestamp: false } }));
|
|
88
|
-
if (r.type === "activeUser")
|
|
89
|
-
return r.user;
|
|
90
|
-
throw new ChatCommandError("unexpected response", r);
|
|
91
|
-
}
|
|
92
|
-
async enableAddressAutoAccept(userId, autoReply, businessAddress = false) {
|
|
93
|
-
const r = await this.sendChatCmd(types_1.CC.APISetAddressSettings.cmdString({ userId, settings: { businessAddress, autoAccept: { acceptIncognito: false }, autoReply } }));
|
|
94
|
-
if (r.type !== "userContactLinkUpdated") {
|
|
95
|
-
throw new ChatCommandError("error changing user contact address mode", r);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
async disableAddressAutoAccept(userId, businessAddress = false) {
|
|
99
|
-
const r = await this.sendChatCmd(types_1.CC.APISetAddressSettings.cmdString({ userId, settings: { businessAddress } }));
|
|
100
|
-
if (r.type !== "userContactLinkUpdated") {
|
|
101
|
-
throw new ChatCommandError("error changing user contact address mode", r);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async apiSendMessages(chatType, chatId, messages) {
|
|
105
|
-
const r = await this.sendChatCmd(types_1.CC.APISendMessages.cmdString({ sendRef: { chatType, chatId }, composedMessages: messages, liveMessage: false }));
|
|
106
|
-
if (r.type === "newChatItems")
|
|
107
|
-
return r.chatItems;
|
|
108
|
-
throw new ChatCommandError("unexpected response", r);
|
|
109
|
-
}
|
|
110
|
-
async apiSendTextMessage(chatType, chatId, text) {
|
|
111
|
-
return this.apiSendMessages(chatType, chatId, [{ msgContent: { type: "text", text }, mentions: {} }]);
|
|
112
|
-
}
|
|
113
|
-
async apiUpdateChatItem(chatType, chatId, chatItemId, msgContent) {
|
|
114
|
-
const r = await this.sendChatCmd(types_1.CC.APIUpdateChatItem.cmdString({
|
|
115
|
-
chatRef: { chatType, chatId },
|
|
116
|
-
chatItemId,
|
|
117
|
-
liveMessage: false,
|
|
118
|
-
updatedMessage: { msgContent, mentions: {} },
|
|
119
|
-
}));
|
|
120
|
-
if (r.type === "chatItemUpdated")
|
|
121
|
-
return r.chatItem.chatItem;
|
|
122
|
-
throw new ChatCommandError("error updating chat item", r);
|
|
123
|
-
}
|
|
124
|
-
async apiDeleteChatItems(chatType, chatId, chatItemIds, deleteMode) {
|
|
125
|
-
const r = await this.sendChatCmd(types_1.CC.APIDeleteChatItem.cmdString({ chatRef: { chatType, chatId }, chatItemIds, deleteMode }));
|
|
126
|
-
if (r.type === "chatItemsDeleted")
|
|
127
|
-
return r.chatItemDeletions;
|
|
128
|
-
throw new ChatCommandError("error deleting chat item", r);
|
|
129
|
-
}
|
|
130
|
-
async apiCreateLink(userId) {
|
|
131
|
-
const r = await this.sendChatCmd(types_1.CC.APIAddContact.cmdString({ userId, incognito: false }));
|
|
132
|
-
if (r.type === "invitation") {
|
|
133
|
-
const link = r.connLinkInvitation;
|
|
134
|
-
return link.connShortLink || link.connFullLink;
|
|
135
|
-
}
|
|
136
|
-
throw new ChatCommandError("error creating link", r);
|
|
137
|
-
}
|
|
138
|
-
async apiConnectActiveUser(connLink) {
|
|
139
|
-
const r = await this.sendChatCmd(types_1.CC.Connect.cmdString({ incognito: false, connLink_: connLink }));
|
|
140
|
-
switch (r.type) {
|
|
141
|
-
case "sentConfirmation":
|
|
142
|
-
return ConnReqType.Invitation;
|
|
143
|
-
case "sentInvitation":
|
|
144
|
-
return ConnReqType.Contact;
|
|
145
|
-
default:
|
|
146
|
-
throw new ChatCommandError("connection error", r);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
async apiDeleteChat(chatType, chatId, deleteMode = { type: "full", notify: true }) {
|
|
150
|
-
const r = await this.sendChatCmd(types_1.CC.APIDeleteChat.cmdString({ chatRef: { chatType, chatId }, chatDeleteMode: deleteMode }));
|
|
151
|
-
switch (chatType) {
|
|
152
|
-
case types_1.T.ChatType.Direct:
|
|
153
|
-
if (r.type === "contactDeleted")
|
|
154
|
-
return;
|
|
155
|
-
break;
|
|
156
|
-
case types_1.T.ChatType.Group:
|
|
157
|
-
if (r.type === "groupDeletedUser")
|
|
158
|
-
return;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
throw new ChatCommandError("error deleting chat", r);
|
|
162
|
-
}
|
|
163
|
-
async apiUpdateProfile(userId, profile) {
|
|
164
|
-
const r = await this.sendChatCmd(types_1.CC.APIUpdateProfile.cmdString({ userId, profile }));
|
|
165
|
-
switch (r.type) {
|
|
166
|
-
case "userProfileNoChange":
|
|
167
|
-
return undefined;
|
|
168
|
-
case "userProfileUpdated":
|
|
169
|
-
return r.toProfile;
|
|
170
|
-
default:
|
|
171
|
-
throw new ChatCommandError("error updating profile", r);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
async apiCreateUserAddress(userId) {
|
|
175
|
-
const r = await this.sendChatCmd(types_1.CC.APICreateMyAddress.cmdString({ userId }));
|
|
176
|
-
if (r.type === "userContactLinkCreated") {
|
|
177
|
-
const link = r.connLinkContact;
|
|
178
|
-
return link.connShortLink || link.connFullLink;
|
|
179
|
-
}
|
|
180
|
-
throw new ChatCommandError("error creating user address", r);
|
|
181
|
-
}
|
|
182
|
-
async apiDeleteUserAddress(userId) {
|
|
183
|
-
const r = await this.sendChatCmd(types_1.CC.APIDeleteMyAddress.cmdString({ userId }));
|
|
184
|
-
if (r.type === "userContactLinkDeleted")
|
|
185
|
-
return;
|
|
186
|
-
throw new ChatCommandError("error deleting user address", r);
|
|
187
|
-
}
|
|
188
|
-
async apiGetUserAddress(userId) {
|
|
189
|
-
const r = await this.sendChatCmd(types_1.CC.APIShowMyAddress.cmdString({ userId }));
|
|
190
|
-
switch (r.type) {
|
|
191
|
-
case "userContactLink": {
|
|
192
|
-
const link = r.contactLink.connLinkContact;
|
|
193
|
-
return link.connShortLink || link.connFullLink;
|
|
194
|
-
}
|
|
195
|
-
default:
|
|
196
|
-
if (r.type === "chatCmdError" && r.chatError.type === "errorStore" && r.chatError.storeError.type === "userContactLinkNotFound") {
|
|
197
|
-
return undefined;
|
|
198
|
-
}
|
|
199
|
-
throw new ChatCommandError("error loading user address", r);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
async apiAcceptContactRequest(contactReqId) {
|
|
203
|
-
const r = await this.sendChatCmd(types_1.CC.APIAcceptContact.cmdString({ contactReqId }));
|
|
204
|
-
if (r.type === "acceptingContactRequest")
|
|
205
|
-
return r.contact;
|
|
206
|
-
throw new ChatCommandError("error accepting contact request", r);
|
|
207
|
-
}
|
|
208
|
-
async apiRejectContactRequest(contactReqId) {
|
|
209
|
-
const r = await this.sendChatCmd(types_1.CC.APIRejectContact.cmdString({ contactReqId }));
|
|
210
|
-
if (r.type === "contactRequestRejected")
|
|
211
|
-
return;
|
|
212
|
-
throw new ChatCommandError("error rejecting contact request", r);
|
|
213
|
-
}
|
|
214
|
-
async apiReceiveFile(fileId) {
|
|
215
|
-
const r = await this.sendChatCmd(types_1.CC.ReceiveFile.cmdString({ fileId, userApprovedRelays: true }));
|
|
216
|
-
if (r.type === "rcvFileAccepted")
|
|
217
|
-
return r.chatItem;
|
|
218
|
-
throw new ChatCommandError("error receiving file", r);
|
|
219
|
-
}
|
|
220
|
-
async apiNewGroup(userId, groupProfile) {
|
|
221
|
-
const r = await this.sendChatCmd(types_1.CC.APINewGroup.cmdString({ userId, groupProfile, incognito: false }));
|
|
222
|
-
if (r.type === "groupCreated")
|
|
223
|
-
return r.groupInfo;
|
|
224
|
-
throw new ChatCommandError("error creating group", r);
|
|
225
|
-
}
|
|
226
|
-
async apiAddMember(groupId, contactId, memberRole) {
|
|
227
|
-
const r = await this.sendChatCmd(types_1.CC.APIAddMember.cmdString({ groupId, contactId, memberRole }));
|
|
228
|
-
if (r.type === "sentGroupInvitation")
|
|
229
|
-
return r.member;
|
|
230
|
-
throw new ChatCommandError("error adding member", r);
|
|
231
|
-
}
|
|
232
|
-
async apiJoinGroup(groupId) {
|
|
233
|
-
const r = await this.sendChatCmd(types_1.CC.APIJoinGroup.cmdString({ groupId }));
|
|
234
|
-
if (r.type === "userAcceptedGroupSent")
|
|
235
|
-
return r.groupInfo;
|
|
236
|
-
throw new ChatCommandError("error joining group", r);
|
|
237
|
-
}
|
|
238
|
-
async apiRemoveMembers(groupId, memberIds, withMessages = false) {
|
|
239
|
-
const r = await this.sendChatCmd(types_1.CC.APIRemoveMembers.cmdString({ groupId, groupMemberIds: memberIds, withMessages }));
|
|
240
|
-
if (r.type === "userDeletedMembers")
|
|
241
|
-
return r.members;
|
|
242
|
-
throw new ChatCommandError("error removing member", r);
|
|
243
|
-
}
|
|
244
|
-
async apiLeaveGroup(groupId) {
|
|
245
|
-
const r = await this.sendChatCmd(types_1.CC.APILeaveGroup.cmdString({ groupId }));
|
|
246
|
-
if (r.type === "leftMemberUser")
|
|
247
|
-
return r.groupInfo;
|
|
248
|
-
throw new ChatCommandError("error leaving group", r);
|
|
249
|
-
}
|
|
250
|
-
async apiListMembers(groupId) {
|
|
251
|
-
const r = await this.sendChatCmd(types_1.CC.APIListMembers.cmdString({ groupId }));
|
|
252
|
-
if (r.type === "groupMembers")
|
|
253
|
-
return r.group.members;
|
|
254
|
-
throw new ChatCommandError("error getting group members", r);
|
|
255
|
-
}
|
|
256
|
-
async apiUpdateGroup(groupId, groupProfile) {
|
|
257
|
-
const r = await this.sendChatCmd(types_1.CC.APIUpdateGroupProfile.cmdString({ groupId, groupProfile }));
|
|
258
|
-
if (r.type === "groupUpdated")
|
|
259
|
-
return r.toGroup;
|
|
260
|
-
throw new ChatCommandError("error updating group", r);
|
|
261
|
-
}
|
|
262
|
-
get connected() {
|
|
263
|
-
return this._connected;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
exports.ChatClient = ChatClient;
|
|
267
|
-
ChatClient.defaultConfig = {
|
|
268
|
-
qSize: 16,
|
|
269
|
-
tcpTimeout: 4000,
|
|
270
|
-
};
|
|
271
|
-
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|