simplex-chat 0.2.1 → 6.5.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +108 -21
  2. package/binding.gyp +50 -0
  3. package/cpp/simplex.cc +426 -0
  4. package/cpp/simplex.h +46 -0
  5. package/dist/api.d.ts +423 -0
  6. package/dist/api.js +857 -0
  7. package/dist/api.js.map +1 -0
  8. package/dist/bot.d.ts +29 -0
  9. package/dist/bot.js +189 -0
  10. package/dist/bot.js.map +1 -0
  11. package/dist/core.d.ts +128 -0
  12. package/dist/core.js +121 -0
  13. package/dist/core.js.map +1 -0
  14. package/dist/index.d.ts +19 -2
  15. package/dist/index.js +20 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/simplex.d.ts +10 -0
  18. package/dist/simplex.js +1 -0
  19. package/dist/util.d.ts +15 -0
  20. package/dist/util.js +91 -0
  21. package/dist/util.js.map +1 -0
  22. package/docs/Namespace.api.md +33 -0
  23. package/docs/Namespace.bot.md +23 -0
  24. package/docs/Namespace.core.md +48 -0
  25. package/docs/Namespace.util.md +25 -0
  26. package/docs/README.md +12 -0
  27. package/docs/api.Class.ChatApi.md +1752 -0
  28. package/docs/api.Class.ChatCommandError.md +205 -0
  29. package/docs/api.Enumeration.ConnReqType.md +27 -0
  30. package/docs/api.Interface.BotAddressSettings.md +60 -0
  31. package/docs/api.TypeAlias.DbConfig.md +64 -0
  32. package/docs/api.TypeAlias.EventSubscriberFunc.md +27 -0
  33. package/docs/api.TypeAlias.EventSubscribers.md +11 -0
  34. package/docs/api.Variable.defaultBotAddressSettings.md +11 -0
  35. package/docs/bot.Function.run.md +21 -0
  36. package/docs/bot.Interface.BotConfig.md +75 -0
  37. package/docs/bot.Interface.BotOptions.md +81 -0
  38. package/docs/bot.TypeAlias.BotDbOpts.md +17 -0
  39. package/docs/core.Class.ChatAPIError.md +205 -0
  40. package/docs/core.Class.ChatInitError.md +205 -0
  41. package/docs/core.DBMigrationError.Interface.ErrorMigration.md +41 -0
  42. package/docs/core.DBMigrationError.Interface.ErrorNotADatabase.md +33 -0
  43. package/docs/core.DBMigrationError.Interface.ErrorSQL.md +41 -0
  44. package/docs/core.DBMigrationError.Interface.InvalidConfirmation.md +25 -0
  45. package/docs/core.DBMigrationError.TypeAlias.Tag.md +11 -0
  46. package/docs/core.Enumeration.MigrationConfirmation.md +43 -0
  47. package/docs/core.Function.chatCloseStore.md +23 -0
  48. package/docs/core.Function.chatDecryptFile.md +31 -0
  49. package/docs/core.Function.chatEncryptFile.md +31 -0
  50. package/docs/core.Function.chatMigrateInit.md +31 -0
  51. package/docs/core.Function.chatReadFile.md +27 -0
  52. package/docs/core.Function.chatRecvMsgWait.md +27 -0
  53. package/docs/core.Function.chatSendCmd.md +27 -0
  54. package/docs/core.Function.chatWriteFile.md +31 -0
  55. package/docs/core.Interface.APIResult.md +31 -0
  56. package/docs/core.Interface.CryptoArgs.md +27 -0
  57. package/docs/core.Interface.UpMigration.md +25 -0
  58. package/docs/core.MTRError.Interface.MTREDifferent.md +33 -0
  59. package/docs/core.MTRError.Interface.MTRENoDown.md +33 -0
  60. package/docs/core.MTRError.TypeAlias.Tag.md +11 -0
  61. package/docs/core.MigrationError.Interface.MEDowngrade.md +33 -0
  62. package/docs/core.MigrationError.Interface.MEUpgrade.md +33 -0
  63. package/docs/core.MigrationError.Interface.MigrationError.md +33 -0
  64. package/docs/core.MigrationError.TypeAlias.Tag.md +11 -0
  65. package/docs/core.Namespace.DBMigrationError.md +18 -0
  66. package/docs/core.Namespace.MTRError.md +16 -0
  67. package/docs/core.Namespace.MigrationError.md +17 -0
  68. package/docs/core.TypeAlias.DBMigrationError.md +11 -0
  69. package/docs/core.TypeAlias.MTRError.md +11 -0
  70. package/docs/core.TypeAlias.MigrationError.md +11 -0
  71. package/docs/util.Function.botAddressSettings.md +21 -0
  72. package/docs/util.Function.chatInfoName.md +21 -0
  73. package/docs/util.Function.chatInfoRef.md +21 -0
  74. package/docs/util.Function.ciBotCommand.md +21 -0
  75. package/docs/util.Function.ciContentText.md +21 -0
  76. package/docs/util.Function.contactAddressStr.md +21 -0
  77. package/docs/util.Function.fromLocalProfile.md +21 -0
  78. package/docs/util.Function.reactionText.md +21 -0
  79. package/docs/util.Function.senderName.md +25 -0
  80. package/docs/util.Interface.BotCommand.md +25 -0
  81. package/examples/squaring-bot-pg.js +21 -0
  82. package/examples/squaring-bot-readme.js +17 -0
  83. package/examples/squaring-bot.ts +42 -0
  84. package/package.json +34 -37
  85. package/src/api.ts +939 -0
  86. package/src/bot.ts +214 -0
  87. package/src/core.ts +210 -0
  88. package/src/download-libs.js +239 -0
  89. package/src/index.ts +22 -0
  90. package/src/simplex.d.ts +10 -0
  91. package/src/simplex.js +1 -0
  92. package/src/util.ts +92 -0
  93. package/tsconfig.json +23 -0
  94. package/dist/client.d.ts +0 -76
  95. package/dist/client.js +0 -329
  96. package/dist/client.js.map +0 -1
  97. package/dist/command.d.ts +0 -412
  98. package/dist/command.js +0 -186
  99. package/dist/command.js.map +0 -1
  100. package/dist/index-web.d.ts +0 -1
  101. package/dist/index-web.js +0 -6
  102. package/dist/index-web.js.map +0 -1
  103. package/dist/index.bundle.js +0 -11
  104. package/dist/queue.d.ts +0 -24
  105. package/dist/queue.js +0 -77
  106. package/dist/queue.js.map +0 -1
  107. package/dist/response.d.ts +0 -755
  108. package/dist/response.js +0 -21
  109. package/dist/response.js.map +0 -1
  110. package/dist/test.html +0 -7
  111. package/dist/transport.d.ts +0 -51
  112. package/dist/transport.js +0 -131
  113. package/dist/transport.js.map +0 -1
  114. package/dist/websocket.d.ts +0 -8
  115. package/dist/websocket.js +0 -4
  116. 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/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "include": ["src"],
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "forceConsistentCasingInFileNames": true,
6
+ "lib": ["ES2018"],
7
+ "module": "CommonJS",
8
+ "moduleResolution": "Node",
9
+ "noFallthroughCasesInSwitch": true,
10
+ "noImplicitAny": true,
11
+ "noImplicitReturns": true,
12
+ "noImplicitThis": true,
13
+ "noUnusedLocals": true,
14
+ "noUnusedParameters": true,
15
+ "noEmitOnError": true,
16
+ "outDir": "dist",
17
+ "sourceMap": true,
18
+ "strict": true,
19
+ "strictNullChecks": true,
20
+ "target": "ES2018",
21
+ "types": ["node"]
22
+ }
23
+ }
package/dist/client.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import { ABQueue } from "./queue";
2
- import { ChatServer, ChatResponseError } from "./transport";
3
- import { ChatCommand, ChatType, Profile } from "./command";
4
- import { ChatResponse, ChatInfo } from "./response";
5
- import * as CC from "./command";
6
- import * as CR from "./response";
7
- export interface ChatClientConfig {
8
- readonly qSize: number;
9
- readonly tcpTimeout: number;
10
- }
11
- export interface Request {
12
- readonly resolve: (resp: ChatResponse) => void;
13
- readonly reject: (err?: ChatResponseError | CR.CRChatCmdError) => void;
14
- }
15
- export declare class ChatCommandError extends Error {
16
- message: string;
17
- response: ChatResponse;
18
- constructor(message: string, response: ChatResponse);
19
- }
20
- export declare enum ConnReqType {
21
- Invitation = "invitation",
22
- Contact = "contact"
23
- }
24
- export declare class ChatClient {
25
- readonly server: ChatServer | string;
26
- readonly config: ChatClientConfig;
27
- readonly msgQ: ABQueue<ChatResponse>;
28
- readonly client: Promise<void>;
29
- private readonly transport;
30
- private _connected;
31
- private clientCorrId;
32
- private readonly sentCommands;
33
- static defaultConfig: ChatClientConfig;
34
- private constructor();
35
- static create(server?: ChatServer | string, cfg?: ChatClientConfig): Promise<ChatClient>;
36
- sendChatCmdStr(cmd: string): Promise<ChatResponse>;
37
- sendChatCommand(command: ChatCommand): Promise<ChatResponse>;
38
- disconnect(): Promise<void>;
39
- apiGetActiveUser(): Promise<CR.User | undefined>;
40
- apiCreateActiveUser(profile?: Profile, sameServers?: boolean, pastTimestamp?: boolean): Promise<CR.User>;
41
- apiStartChat(): Promise<void>;
42
- apiStopChat(): Promise<void>;
43
- apiSetIncognito(incognito: boolean): Promise<void>;
44
- enableAddressAutoAccept(acceptIncognito?: boolean, autoReply?: CC.MsgContent): Promise<void>;
45
- disableAddressAutoAccept(): Promise<void>;
46
- apiGetChats(userId: number): Promise<CR.Chat[]>;
47
- apiGetChat(chatType: ChatType, chatId: number, pagination?: CC.ChatPagination, search?: string | undefined): Promise<CR.Chat>;
48
- apiSendMessages(chatType: ChatType, chatId: number, messages: CC.ComposedMessage[]): Promise<CR.AChatItem[]>;
49
- apiSendTextMessage(chatType: ChatType, chatId: number, text: string): Promise<CR.AChatItem[]>;
50
- apiUpdateChatItem(chatType: ChatType, chatId: number, chatItemId: CC.ChatItemId, msgContent: CC.MsgContent): Promise<CR.ChatItem>;
51
- apiDeleteChatItem(chatType: ChatType, chatId: number, chatItemId: number, deleteMode: CC.DeleteMode): Promise<CR.ChatItem | undefined>;
52
- apiCreateLink(): Promise<string>;
53
- apiConnect(connReq: string): Promise<ConnReqType>;
54
- apiDeleteChat(chatType: ChatType, chatId: number): Promise<void>;
55
- apiClearChat(chatType: ChatType, chatId: number): Promise<ChatInfo>;
56
- apiUpdateProfile(userId: number, profile: CC.Profile): Promise<CC.Profile | undefined>;
57
- apiSetContactAlias(contactId: number, localAlias: string): Promise<CR.Contact>;
58
- apiCreateUserAddress(): Promise<string>;
59
- apiDeleteUserAddress(): Promise<void>;
60
- apiGetUserAddress(): Promise<string | undefined>;
61
- apiAcceptContactRequest(contactReqId: number): Promise<CR.Contact>;
62
- apiRejectContactRequest(contactReqId: number): Promise<void>;
63
- apiChatRead(chatType: ChatType, chatId: number, itemRange?: CC.ItemRange): Promise<void>;
64
- apiContactInfo(contactId: number): Promise<[CR.ConnectionStats?, Profile?]>;
65
- apiGroupMemberInfo(groupId: number, memberId: number): Promise<CR.ConnectionStats | undefined>;
66
- apiReceiveFile(fileId: number): Promise<CR.AChatItem>;
67
- apiNewGroup(groupProfile: CR.GroupProfile): Promise<CR.GroupInfo>;
68
- apiAddMember(groupId: number, contactId: number, memberRole: CC.GroupMemberRole): Promise<CR.GroupMember>;
69
- apiJoinGroup(groupId: number): Promise<CR.GroupInfo>;
70
- apiRemoveMember(groupId: number, memberId: number): Promise<CR.GroupMember>;
71
- apiLeaveGroup(groupId: number): Promise<CR.GroupInfo>;
72
- apiListMembers(groupId: number): Promise<CR.GroupMember[]>;
73
- apiUpdateGroup(groupId: number, groupProfile: CR.GroupProfile): Promise<CR.GroupInfo>;
74
- private okChatCommand;
75
- get connected(): boolean;
76
- }
package/dist/client.js DELETED
@@ -1,329 +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 command_1 = require("./command");
7
- const CC = require("./command");
8
- class ChatCommandError extends Error {
9
- constructor(message, response) {
10
- super(message);
11
- this.message = message;
12
- this.response = response;
13
- }
14
- }
15
- exports.ChatCommandError = ChatCommandError;
16
- var ConnReqType;
17
- (function (ConnReqType) {
18
- ConnReqType["Invitation"] = "invitation";
19
- ConnReqType["Contact"] = "contact";
20
- })(ConnReqType = exports.ConnReqType || (exports.ConnReqType = {}));
21
- class ChatClient {
22
- constructor(server, config, msgQ, client, transport) {
23
- this.server = server;
24
- this.config = config;
25
- this.msgQ = msgQ;
26
- this.client = client;
27
- this.transport = transport;
28
- this._connected = true;
29
- this.clientCorrId = 0;
30
- this.sentCommands = new Map();
31
- }
32
- static async create(server = transport_1.localServer, cfg = ChatClient.defaultConfig) {
33
- const transport = await transport_1.ChatTransport.connect(server, cfg.tcpTimeout, cfg.qSize);
34
- const msgQ = new queue_1.ABQueue(cfg.qSize);
35
- const client = runClient().then(transport_1.noop, transport_1.noop);
36
- const c = new ChatClient(server, cfg, msgQ, client, transport);
37
- return c;
38
- async function runClient() {
39
- for await (const t of transport) {
40
- const apiResp = (t instanceof Promise ? await t : t);
41
- if (apiResp instanceof transport_1.ChatResponseError) {
42
- console.log("chat response error: ", apiResp);
43
- }
44
- else {
45
- const { corrId, resp } = apiResp;
46
- if (corrId) {
47
- const req = c.sentCommands.get(corrId);
48
- if (req) {
49
- c.sentCommands.delete(corrId);
50
- req.resolve(resp);
51
- }
52
- else {
53
- // TODO send error to errQ?
54
- console.log("no command sent for chat response: ", apiResp);
55
- }
56
- }
57
- else {
58
- await msgQ.enqueue(resp);
59
- }
60
- }
61
- }
62
- c._connected = false;
63
- }
64
- }
65
- sendChatCmdStr(cmd) {
66
- const corrId = `${++this.clientCorrId}`;
67
- const t = { corrId, cmd };
68
- this.transport.write(t).then(transport_1.noop, transport_1.noop);
69
- return new Promise((resolve, reject) => this.sentCommands.set(corrId, { resolve, reject }));
70
- }
71
- sendChatCommand(command) {
72
- return this.sendChatCmdStr(CC.cmdString(command));
73
- }
74
- async disconnect() {
75
- await this.transport.close();
76
- await this.client;
77
- }
78
- async apiGetActiveUser() {
79
- const r = await this.sendChatCommand({ type: "showActiveUser" });
80
- switch (r.type) {
81
- case "activeUser":
82
- return r.user;
83
- case "chatCmdError":
84
- if (r.chatError.type === "error" && r.chatError.errorType.type === "noActiveUser")
85
- return undefined;
86
- throw new ChatCommandError("unexpected response error", r);
87
- default:
88
- throw new ChatCommandError("unexpected response", r);
89
- }
90
- }
91
- async apiCreateActiveUser(profile, sameServers = true, pastTimestamp = false) {
92
- const r = await this.sendChatCommand({ type: "createActiveUser", profile, sameServers, pastTimestamp });
93
- if (r.type === "activeUser")
94
- return r.user;
95
- throw new ChatCommandError("unexpected response", r);
96
- }
97
- async apiStartChat() {
98
- const r = await this.sendChatCommand({ type: "startChat" });
99
- if (r.type !== "chatStarted" && r.type !== "chatRunning") {
100
- throw new ChatCommandError("error starting chat", r);
101
- }
102
- }
103
- async apiStopChat() {
104
- const r = await this.sendChatCommand({ type: "apiStopChat" });
105
- if (r.type !== "chatStopped") {
106
- throw new ChatCommandError("error stopping chat", r);
107
- }
108
- }
109
- apiSetIncognito(incognito) {
110
- return this.okChatCommand({ type: "setIncognito", incognito });
111
- }
112
- async enableAddressAutoAccept(acceptIncognito = false, autoReply) {
113
- const r = await this.sendChatCommand({ type: "addressAutoAccept", autoAccept: { acceptIncognito, autoReply } });
114
- if (r.type !== "userContactLinkUpdated") {
115
- throw new ChatCommandError("error changing user contact address mode", r);
116
- }
117
- }
118
- async disableAddressAutoAccept() {
119
- const r = await this.sendChatCommand({ type: "addressAutoAccept" });
120
- if (r.type !== "userContactLinkUpdated") {
121
- throw new ChatCommandError("error changing user contact address mode", r);
122
- }
123
- }
124
- async apiGetChats(userId) {
125
- const r = await this.sendChatCommand({ type: "apiGetChats", userId });
126
- if (r.type === "apiChats")
127
- return r.chats;
128
- throw new ChatCommandError("error loading chats", r);
129
- }
130
- async apiGetChat(chatType, chatId, pagination = { count: 100 }, search = undefined) {
131
- const r = await this.sendChatCommand({ type: "apiGetChat", chatType, chatId, pagination, search });
132
- if (r.type === "apiChat")
133
- return r.chat;
134
- throw new ChatCommandError("error loading chat", r);
135
- }
136
- async apiSendMessages(chatType, chatId, messages) {
137
- const r = await this.sendChatCommand({ type: "apiSendMessage", chatType, chatId, messages });
138
- if (r.type === "newChatItems")
139
- return r.chatItems;
140
- throw new ChatCommandError("unexpected response", r);
141
- }
142
- async apiSendTextMessage(chatType, chatId, text) {
143
- return this.apiSendMessages(chatType, chatId, [{ msgContent: { type: "text", text } }]);
144
- }
145
- async apiUpdateChatItem(chatType, chatId, chatItemId, msgContent) {
146
- const r = await this.sendChatCommand({ type: "apiUpdateChatItem", chatType, chatId, chatItemId, msgContent });
147
- if (r.type === "chatItemUpdated")
148
- return r.chatItem.chatItem;
149
- throw new ChatCommandError("error updating chat item", r);
150
- }
151
- async apiDeleteChatItem(chatType, chatId, chatItemId, deleteMode) {
152
- var _a;
153
- const r = await this.sendChatCommand({ type: "apiDeleteChatItem", chatType, chatId, chatItemId, deleteMode });
154
- if (r.type === "chatItemDeleted")
155
- return (_a = r.toChatItem) === null || _a === void 0 ? void 0 : _a.chatItem;
156
- throw new ChatCommandError("error deleting chat item", r);
157
- }
158
- async apiCreateLink() {
159
- const r = await this.sendChatCommand({ type: "addContact" });
160
- if (r.type === "invitation")
161
- return r.connReqInvitation;
162
- throw new ChatCommandError("error creating link", r);
163
- }
164
- async apiConnect(connReq) {
165
- const r = await this.sendChatCommand({ type: "connect", connReq });
166
- switch (r.type) {
167
- case "sentConfirmation":
168
- return ConnReqType.Invitation;
169
- case "sentInvitation":
170
- return ConnReqType.Contact;
171
- default:
172
- throw new ChatCommandError("connection error", r);
173
- }
174
- }
175
- async apiDeleteChat(chatType, chatId) {
176
- const r = await this.sendChatCommand({ type: "apiDeleteChat", chatType, chatId });
177
- switch (chatType) {
178
- case command_1.ChatType.Direct:
179
- if (r.type === "contactDeleted")
180
- return;
181
- break;
182
- case command_1.ChatType.Group:
183
- if (r.type === "groupDeletedUser")
184
- return;
185
- break;
186
- case command_1.ChatType.ContactRequest:
187
- if (r.type === "contactConnectionDeleted")
188
- return;
189
- break;
190
- }
191
- throw new ChatCommandError("error deleting chat", r);
192
- }
193
- async apiClearChat(chatType, chatId) {
194
- const r = await this.sendChatCommand({ type: "apiClearChat", chatType, chatId });
195
- if (r.type === "chatCleared")
196
- return r.chatInfo;
197
- throw new ChatCommandError("error clearing chat", r);
198
- }
199
- async apiUpdateProfile(userId, profile) {
200
- const r = await this.sendChatCommand({ type: "apiUpdateProfile", userId, profile });
201
- switch (r.type) {
202
- case "userProfileNoChange":
203
- return undefined;
204
- case "userProfileUpdated":
205
- return r.toProfile;
206
- default:
207
- throw new ChatCommandError("error updating profile", r);
208
- }
209
- }
210
- async apiSetContactAlias(contactId, localAlias) {
211
- const r = await this.sendChatCommand({ type: "apiSetContactAlias", contactId, localAlias });
212
- if (r.type === "contactAliasUpdated")
213
- return r.toContact;
214
- throw new ChatCommandError("error updating contact alias", r);
215
- }
216
- async apiCreateUserAddress() {
217
- const r = await this.sendChatCommand({ type: "createMyAddress" });
218
- if (r.type === "userContactLinkCreated")
219
- return r.connReqContact;
220
- throw new ChatCommandError("error creating user address", r);
221
- }
222
- async apiDeleteUserAddress() {
223
- const r = await this.sendChatCommand({ type: "deleteMyAddress" });
224
- if (r.type === "userContactLinkDeleted")
225
- return;
226
- throw new ChatCommandError("error deleting user address", r);
227
- }
228
- async apiGetUserAddress() {
229
- const r = await this.sendChatCommand({ type: "showMyAddress" });
230
- switch (r.type) {
231
- case "userContactLink":
232
- return r.contactLink.connReqContact;
233
- default:
234
- if (r.type === "chatCmdError" && r.chatError.type === "errorStore" && r.chatError.storeError.type === "userContactLinkNotFound") {
235
- return undefined;
236
- }
237
- throw new ChatCommandError("error loading user address", r);
238
- }
239
- }
240
- async apiAcceptContactRequest(contactReqId) {
241
- const r = await this.sendChatCommand({ type: "apiAcceptContact", contactReqId });
242
- if (r.type === "acceptingContactRequest")
243
- return r.contact;
244
- throw new ChatCommandError("error accepting contact request", r);
245
- }
246
- async apiRejectContactRequest(contactReqId) {
247
- const r = await this.sendChatCommand({ type: "apiRejectContact", contactReqId });
248
- if (r.type === "contactRequestRejected")
249
- return;
250
- throw new ChatCommandError("error rejecting contact request", r);
251
- }
252
- apiChatRead(chatType, chatId, itemRange) {
253
- return this.okChatCommand({ type: "apiChatRead", chatType, chatId, itemRange });
254
- }
255
- async apiContactInfo(contactId) {
256
- const r = await this.sendChatCommand({ type: "apiContactInfo", contactId });
257
- if (r.type === "contactInfo")
258
- return [r.connectionStats, r.customUserProfile];
259
- throw new ChatCommandError("error getting contact info", r);
260
- }
261
- async apiGroupMemberInfo(groupId, memberId) {
262
- const r = await this.sendChatCommand({ type: "apiGroupMemberInfo", groupId, memberId });
263
- if (r.type === "groupMemberInfo")
264
- return r.connectionStats_;
265
- throw new ChatCommandError("error getting group info", r);
266
- }
267
- async apiReceiveFile(fileId) {
268
- const r = await this.sendChatCommand({ type: "receiveFile", fileId });
269
- if (r.type === "rcvFileAccepted")
270
- return r.chatItem;
271
- throw new ChatCommandError("error receiving file", r);
272
- }
273
- async apiNewGroup(groupProfile) {
274
- const r = await this.sendChatCommand({ type: "newGroup", groupProfile });
275
- if (r.type === "groupCreated")
276
- return r.groupInfo;
277
- throw new ChatCommandError("error creating group", r);
278
- }
279
- async apiAddMember(groupId, contactId, memberRole) {
280
- const r = await this.sendChatCommand({ type: "apiAddMember", groupId, contactId, memberRole });
281
- if (r.type === "sentGroupInvitation")
282
- return r.member;
283
- throw new ChatCommandError("error adding member", r);
284
- }
285
- async apiJoinGroup(groupId) {
286
- const r = await this.sendChatCommand({ type: "apiJoinGroup", groupId });
287
- if (r.type === "userAcceptedGroupSent")
288
- return r.groupInfo;
289
- throw new ChatCommandError("error joining group", r);
290
- }
291
- async apiRemoveMember(groupId, memberId) {
292
- const r = await this.sendChatCommand({ type: "apiRemoveMember", groupId, memberId });
293
- if (r.type === "userDeletedMember")
294
- return r.member;
295
- throw new ChatCommandError("error removing member", r);
296
- }
297
- async apiLeaveGroup(groupId) {
298
- const r = await this.sendChatCommand({ type: "apiLeaveGroup", groupId });
299
- if (r.type === "leftMemberUser")
300
- return r.groupInfo;
301
- throw new ChatCommandError("error leaving group", r);
302
- }
303
- async apiListMembers(groupId) {
304
- const r = await this.sendChatCommand({ type: "apiListMembers", groupId });
305
- if (r.type === "groupMembers")
306
- return r.group.members;
307
- throw new ChatCommandError("error getting group members", r);
308
- }
309
- async apiUpdateGroup(groupId, groupProfile) {
310
- const r = await this.sendChatCommand({ type: "apiUpdateGroupProfile", groupId, groupProfile });
311
- if (r.type === "groupUpdated")
312
- return r.toGroup;
313
- throw new ChatCommandError("error updating group", r);
314
- }
315
- async okChatCommand(command) {
316
- const r = await this.sendChatCommand(command);
317
- if (r.type !== "cmdOk")
318
- throw new ChatCommandError(`${command.type} command error`, r);
319
- }
320
- get connected() {
321
- return this._connected;
322
- }
323
- }
324
- exports.ChatClient = ChatClient;
325
- ChatClient.defaultConfig = {
326
- qSize: 16,
327
- tcpTimeout: 4000,
328
- };
329
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}