simplex-chat 0.0.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/LICENSE +661 -0
- package/README.md +40 -0
- package/dist/browser_globals.d.ts +8 -0
- package/dist/browser_globals.js +4 -0
- package/dist/browser_globals.js.map +1 -0
- package/dist/client.d.ts +53 -0
- package/dist/client.js +267 -0
- package/dist/client.js.map +1 -0
- package/dist/command.d.ts +150 -0
- package/dist/command.js +68 -0
- package/dist/command.js.map +1 -0
- package/dist/index-web.d.ts +2 -0
- package/dist/index-web.js +3 -0
- package/dist/index-web.js.map +1 -0
- package/dist/index.bundle.js +537 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +585 -0
- package/dist/queue.d.ts +24 -0
- package/dist/queue.js +72 -0
- package/dist/queue.js.map +1 -0
- package/dist/response.d.ts +379 -0
- package/dist/response.js +2 -0
- package/dist/response.js.map +1 -0
- package/dist/test.html +7 -0
- package/dist/transport.d.ts +51 -0
- package/dist/transport.js +122 -0
- package/dist/transport.js.map +1 -0
- package/dist/websocket.d.ts +8 -0
- package/dist/websocket.js +4 -0
- package/dist/websocket.js.map +1 -0
- package/package.json +60 -0
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# SimpleX Chat JavaScript client
|
|
2
|
+
|
|
3
|
+
## Quick start
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
npm i simplex-chat
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```javascript
|
|
10
|
+
const ChatClient = require("simplex-chat").ChatClient
|
|
11
|
+
const chat = await ChatClient.create("ws://localhost:5225")
|
|
12
|
+
await processMessages(chat)
|
|
13
|
+
const user = await chat.apiGetActiveUser()
|
|
14
|
+
|
|
15
|
+
async function processMessages(chat) {
|
|
16
|
+
for await (const m of chat.msgQ) {
|
|
17
|
+
const msg = m instanceof Promise ? await m : m
|
|
18
|
+
switch (msg.type) {
|
|
19
|
+
case "newChatItem": // do something
|
|
20
|
+
return
|
|
21
|
+
default:
|
|
22
|
+
console.log(msg)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Documentation
|
|
29
|
+
|
|
30
|
+
Please refer to:
|
|
31
|
+
|
|
32
|
+
- available client API - [client.ts](./src/client.ts).
|
|
33
|
+
- available commands - `ChatCommand` type in [command.ts](./src/command.ts) - if some command is not created as a ChatClient method, you can pass any command object to `sendChatCommand` method, or if the type for some command is not available you can pass command string (same strings as supported in terminal/mobile API) to `sendChatCmdStr` method.
|
|
34
|
+
- available chat messages - `ChatResponse` type in [response.ts](./src/command.ts).
|
|
35
|
+
|
|
36
|
+
**Please note**: you should NOT use local display names that are supported in terminal app, as they can change when contact profile is updated and you can have race conditions - use commands that use chat IDs.
|
|
37
|
+
|
|
38
|
+
## Lisense
|
|
39
|
+
|
|
40
|
+
[AGPL v3](./LICENSE)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser_globals.js","sourceRoot":"","sources":["../src/browser_globals.ts"],"names":[],"mappings":";AAAA,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAqB,CAAA;AAEvD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC,CAAA"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ABQueue } from "./queue";
|
|
2
|
+
import { ChatServer, ChatResponseError } from "./transport";
|
|
3
|
+
import { ChatCommand, ChatType } from "./command";
|
|
4
|
+
import { ChatResponse } from "./response";
|
|
5
|
+
import * as CC from "./command";
|
|
6
|
+
import * as C 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 | C.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<C.User | undefined>;
|
|
40
|
+
apiCreateActiveUser(profile: CC.Profile): Promise<C.User>;
|
|
41
|
+
apiStartChat(): Promise<void>;
|
|
42
|
+
apiGetChats(): Promise<C.Chat[]>;
|
|
43
|
+
apiGetChat(chatType: ChatType, chatId: number, pagination?: CC.ChatPagination): Promise<C.Chat>;
|
|
44
|
+
apiSendMessage(chatType: ChatType, chatId: number, message: CC.ComposedMessage): Promise<C.AChatItem>;
|
|
45
|
+
apiSendTextMessage(chatType: ChatType, chatId: number, text: string): Promise<C.AChatItem>;
|
|
46
|
+
apiUpdateChatItem(chatType: ChatType, chatId: number, chatItemId: CC.ChatItemId, msgContent: CC.MsgContent): Promise<C.ChatItem>;
|
|
47
|
+
apiDeleteChatItem(chatType: ChatType, chatId: number, chatItemId: number, deleteMode: CC.DeleteMode): Promise<C.ChatItem>;
|
|
48
|
+
apiCreateLink(): Promise<string>;
|
|
49
|
+
apiConnect(connReq: string): Promise<ConnReqType>;
|
|
50
|
+
apiDeleteChat(chatType: ChatType, chatId: number): Promise<void>;
|
|
51
|
+
apiUpdateProfile(profile: CC.Profile): Promise<CC.Profile | undefined>;
|
|
52
|
+
get connected(): boolean;
|
|
53
|
+
}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { ABQueue } from "./queue";
|
|
2
|
+
import { ChatTransport, ChatResponseError, localServer, noop } from "./transport";
|
|
3
|
+
import * as CC from "./command";
|
|
4
|
+
export class ChatCommandError extends Error {
|
|
5
|
+
constructor(message, response) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.message = message;
|
|
8
|
+
this.response = response;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export var ConnReqType;
|
|
12
|
+
(function (ConnReqType) {
|
|
13
|
+
ConnReqType["Invitation"] = "invitation";
|
|
14
|
+
ConnReqType["Contact"] = "contact";
|
|
15
|
+
})(ConnReqType || (ConnReqType = {}));
|
|
16
|
+
export class ChatClient {
|
|
17
|
+
constructor(server, config, msgQ, client, transport) {
|
|
18
|
+
this.server = server;
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.msgQ = msgQ;
|
|
21
|
+
this.client = client;
|
|
22
|
+
this.transport = transport;
|
|
23
|
+
this._connected = true;
|
|
24
|
+
this.clientCorrId = 0;
|
|
25
|
+
this.sentCommands = new Map();
|
|
26
|
+
}
|
|
27
|
+
static async create(server = localServer, cfg = ChatClient.defaultConfig) {
|
|
28
|
+
const transport = await ChatTransport.connect(server, cfg.tcpTimeout, cfg.qSize);
|
|
29
|
+
const msgQ = new ABQueue(cfg.qSize);
|
|
30
|
+
const client = runClient().then(noop, noop);
|
|
31
|
+
const c = new ChatClient(server, cfg, msgQ, client, transport);
|
|
32
|
+
return c;
|
|
33
|
+
async function runClient() {
|
|
34
|
+
for await (const t of transport) {
|
|
35
|
+
const apiResp = (t instanceof Promise ? await t : t);
|
|
36
|
+
if (apiResp instanceof ChatResponseError) {
|
|
37
|
+
console.log("chat response error: ", apiResp);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const { corrId, resp } = apiResp;
|
|
41
|
+
if (corrId) {
|
|
42
|
+
const req = c.sentCommands.get(corrId);
|
|
43
|
+
if (req) {
|
|
44
|
+
c.sentCommands.delete(corrId);
|
|
45
|
+
if (resp.type === "chatCmdError") {
|
|
46
|
+
req.reject(resp);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
req.resolve(resp);
|
|
50
|
+
}
|
|
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(noop, 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) {
|
|
92
|
+
const r = await this.sendChatCommand({ type: "createActiveUser", profile });
|
|
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 apiGetChats() {
|
|
104
|
+
const r = await this.sendChatCommand({ type: "apiGetChats" });
|
|
105
|
+
if (r.type === "apiChats")
|
|
106
|
+
return r.chats;
|
|
107
|
+
throw new ChatCommandError("error loading chats", r);
|
|
108
|
+
}
|
|
109
|
+
async apiGetChat(chatType, chatId, pagination = { count: 100 }) {
|
|
110
|
+
const r = await this.sendChatCommand({ type: "apiGetChat", chatType, chatId, pagination });
|
|
111
|
+
if (r.type === "apiChat")
|
|
112
|
+
return r.chat;
|
|
113
|
+
throw new ChatCommandError("error loading chat", r);
|
|
114
|
+
}
|
|
115
|
+
async apiSendMessage(chatType, chatId, message) {
|
|
116
|
+
const r = await this.sendChatCommand({ type: "apiSendMessage", chatType, chatId, message });
|
|
117
|
+
if (r.type === "newChatItem")
|
|
118
|
+
return r.chatItem;
|
|
119
|
+
throw new ChatCommandError("unexpected response", r);
|
|
120
|
+
}
|
|
121
|
+
apiSendTextMessage(chatType, chatId, text) {
|
|
122
|
+
return this.apiSendMessage(chatType, chatId, { msgContent: { type: "text", text } });
|
|
123
|
+
}
|
|
124
|
+
async apiUpdateChatItem(chatType, chatId, chatItemId, msgContent) {
|
|
125
|
+
const r = await this.sendChatCommand({ type: "apiUpdateChatItem", chatType, chatId, chatItemId, msgContent });
|
|
126
|
+
if (r.type === "chatItemUpdated")
|
|
127
|
+
return r.chatItem.chatItem;
|
|
128
|
+
throw new ChatCommandError("error updating chat item", r);
|
|
129
|
+
}
|
|
130
|
+
async apiDeleteChatItem(chatType, chatId, chatItemId, deleteMode) {
|
|
131
|
+
const r = await this.sendChatCommand({ type: "apiDeleteChatItem", chatType, chatId, chatItemId, deleteMode });
|
|
132
|
+
if (r.type === "chatItemDeleted")
|
|
133
|
+
return r.toChatItem.chatItem;
|
|
134
|
+
throw new ChatCommandError("error deleting chat item", r);
|
|
135
|
+
}
|
|
136
|
+
// func getUserSMPServers() throws -> [String] {
|
|
137
|
+
// let r = chatSendCmdSync(.getUserSMPServers)
|
|
138
|
+
// if case let .userSMPServers(smpServers) = r { return smpServers }
|
|
139
|
+
// throw r
|
|
140
|
+
// }
|
|
141
|
+
// func setUserSMPServers(smpServers: [String]) async throws {
|
|
142
|
+
// let r = await chatSendCmd(.setUserSMPServers(smpServers: smpServers))
|
|
143
|
+
// if case .cmdOk = r { return }
|
|
144
|
+
// throw r
|
|
145
|
+
// }
|
|
146
|
+
async apiCreateLink() {
|
|
147
|
+
const r = await this.sendChatCommand({ type: "addContact" });
|
|
148
|
+
if (r.type === "invitation")
|
|
149
|
+
return r.connReqInvitation;
|
|
150
|
+
throw new ChatCommandError("error creating link", r);
|
|
151
|
+
}
|
|
152
|
+
async apiConnect(connReq) {
|
|
153
|
+
const r = await this.sendChatCommand({ type: "connect", connReq });
|
|
154
|
+
switch (r.type) {
|
|
155
|
+
case "sentConfirmation":
|
|
156
|
+
return ConnReqType.Invitation;
|
|
157
|
+
case "sentInvitation":
|
|
158
|
+
return ConnReqType.Contact;
|
|
159
|
+
default:
|
|
160
|
+
throw new ChatCommandError("connection error", r);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async apiDeleteChat(chatType, chatId) {
|
|
164
|
+
const r = await this.sendChatCommand({ type: "apiDeleteChat", chatType, chatId });
|
|
165
|
+
if (r.type !== "contactDeleted")
|
|
166
|
+
throw new ChatCommandError("error deleting chat", r);
|
|
167
|
+
}
|
|
168
|
+
async apiUpdateProfile(profile) {
|
|
169
|
+
const r = await this.sendChatCommand({ type: "apiUpdateProfile", profile });
|
|
170
|
+
switch (r.type) {
|
|
171
|
+
case "userProfileNoChange":
|
|
172
|
+
return undefined;
|
|
173
|
+
case "userProfileUpdated":
|
|
174
|
+
return r.toProfile;
|
|
175
|
+
default:
|
|
176
|
+
throw new ChatCommandError("error updating profile", r);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// func apiParseMarkdown(text: String) throws -> [FormattedText]? {
|
|
180
|
+
// let r = chatSendCmdSync(.apiParseMarkdown(text: text))
|
|
181
|
+
// if case let .apiParsedMarkdown(formattedText) = r { return formattedText }
|
|
182
|
+
// throw r
|
|
183
|
+
// }
|
|
184
|
+
// func apiCreateUserAddress() async throws -> String {
|
|
185
|
+
// let r = await chatSendCmd(.createMyAddress)
|
|
186
|
+
// if case let .userContactLinkCreated(connReq) = r { return connReq }
|
|
187
|
+
// throw r
|
|
188
|
+
// }
|
|
189
|
+
// func apiDeleteUserAddress() async throws {
|
|
190
|
+
// let r = await chatSendCmd(.deleteMyAddress)
|
|
191
|
+
// if case .userContactLinkDeleted = r { return }
|
|
192
|
+
// throw r
|
|
193
|
+
// }
|
|
194
|
+
// func apiGetUserAddress() async throws -> String? {
|
|
195
|
+
// let r = await chatSendCmd(.showMyAddress)
|
|
196
|
+
// switch r {
|
|
197
|
+
// case let .userContactLink(connReq):
|
|
198
|
+
// return connReq
|
|
199
|
+
// case .chatCmdError(chatError: .errorStore(storeError: .userContactLinkNotFound)):
|
|
200
|
+
// return nil
|
|
201
|
+
// default: throw r
|
|
202
|
+
// }
|
|
203
|
+
// }
|
|
204
|
+
// func apiAcceptContactRequest(contactReqId: Int64) async throws -> Contact {
|
|
205
|
+
// let r = await chatSendCmd(.apiAcceptContact(contactReqId: contactReqId))
|
|
206
|
+
// if case let .acceptingContactRequest(contact) = r { return contact }
|
|
207
|
+
// throw r
|
|
208
|
+
// }
|
|
209
|
+
// func apiRejectContactRequest(contactReqId: Int64) async throws {
|
|
210
|
+
// let r = await chatSendCmd(.apiRejectContact(contactReqId: contactReqId))
|
|
211
|
+
// if case .contactRequestRejected = r { return }
|
|
212
|
+
// throw r
|
|
213
|
+
// }
|
|
214
|
+
// func apiChatRead(type: ChatType, id: Int64, itemRange: (Int64, Int64)) async throws {
|
|
215
|
+
// let r = await chatSendCmd(.apiChatRead(type: type, id: id, itemRange: itemRange))
|
|
216
|
+
// if case .cmdOk = r { return }
|
|
217
|
+
// throw r
|
|
218
|
+
// }
|
|
219
|
+
// func acceptContactRequest(_ contactRequest: UserContactRequest) async {
|
|
220
|
+
// do {
|
|
221
|
+
// let contact = try await apiAcceptContactRequest(contactReqId: contactRequest.apiId)
|
|
222
|
+
// let chat = Chat(chatInfo: ChatInfo.direct(contact: contact), chatItems: [])
|
|
223
|
+
// DispatchQueue.main.async { ChatModel.shared.replaceChat(contactRequest.id, chat) }
|
|
224
|
+
// } catch let error {
|
|
225
|
+
// logger.error("acceptContactRequest error: \(error.localizedDescription)")
|
|
226
|
+
// }
|
|
227
|
+
// }
|
|
228
|
+
// func rejectContactRequest(_ contactRequest: UserContactRequest) async {
|
|
229
|
+
// do {
|
|
230
|
+
// try await apiRejectContactRequest(contactReqId: contactRequest.apiId)
|
|
231
|
+
// DispatchQueue.main.async { ChatModel.shared.removeChat(contactRequest.id) }
|
|
232
|
+
// } catch let error {
|
|
233
|
+
// logger.error("rejectContactRequest: \(error.localizedDescription)")
|
|
234
|
+
// }
|
|
235
|
+
// }
|
|
236
|
+
// func markChatRead(_ chat: Chat) async {
|
|
237
|
+
// do {
|
|
238
|
+
// let minItemId = chat.chatStats.minUnreadItemId
|
|
239
|
+
// let itemRange = (minItemId, chat.chatItems.last?.id ?? minItemId)
|
|
240
|
+
// let cInfo = chat.chatInfo
|
|
241
|
+
// try await apiChatRead(type: cInfo.chatType, id: cInfo.apiId, itemRange: itemRange)
|
|
242
|
+
// DispatchQueue.main.async { ChatModel.shared.markChatItemsRead(cInfo) }
|
|
243
|
+
// } catch {
|
|
244
|
+
// logger.error("markChatRead apiChatRead error: \(error.localizedDescription)")
|
|
245
|
+
// }
|
|
246
|
+
// }
|
|
247
|
+
// func markChatItemRead(_ cInfo: ChatInfo, _ cItem: ChatItem) async {
|
|
248
|
+
// do {
|
|
249
|
+
// try await apiChatRead(type: cInfo.chatType, id: cInfo.apiId, itemRange: (cItem.id, cItem.id))
|
|
250
|
+
// DispatchQueue.main.async { ChatModel.shared.markChatItemRead(cInfo, cItem) }
|
|
251
|
+
// } catch {
|
|
252
|
+
// logger.error("markChatItemRead apiChatRead error: \(error.localizedDescription)")
|
|
253
|
+
// }
|
|
254
|
+
// }
|
|
255
|
+
// private async okChatCommand(command: ChatCommand): Promise<void> {
|
|
256
|
+
// const resp = await this.sendChatCommand(command)
|
|
257
|
+
// if (resp.type !== "cmdOk") throw new ChatCommandError("unexpected response", resp)
|
|
258
|
+
// }
|
|
259
|
+
get connected() {
|
|
260
|
+
return this._connected;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
ChatClient.defaultConfig = {
|
|
264
|
+
qSize: 16,
|
|
265
|
+
tcpTimeout: 4000,
|
|
266
|
+
};
|
|
267
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export declare type ChatCommand = ShowActiveUser | CreateActiveUser | StartChat | SetFilesFolder | APIGetChats | APIGetChat | APISendMessage | APIUpdateChatItem | APIDeleteChatItem | APIChatRead | APIDeleteChat | APIAcceptContact | APIRejectContact | APIUpdateProfile | APIParseMarkdown | GetUserSMPServers | SetUserSMPServers | AddContact | Connect | ConnectSimplex | CreateMyAddress | DeleteMyAddress | ShowMyAddress | AddressAutoAccept;
|
|
2
|
+
declare type ChatCommandTag = "showActiveUser" | "createActiveUser" | "startChat" | "setFilesFolder" | "apiGetChats" | "apiGetChat" | "apiSendMessage" | "apiUpdateChatItem" | "apiDeleteChatItem" | "apiChatRead" | "apiDeleteChat" | "apiAcceptContact" | "apiRejectContact" | "apiUpdateProfile" | "apiParseMarkdown" | "getUserSMPServers" | "setUserSMPServers" | "addContact" | "connect" | "connectSimplex" | "createMyAddress" | "deleteMyAddress" | "showMyAddress" | "addressAutoAccept";
|
|
3
|
+
interface IChatCommand {
|
|
4
|
+
type: ChatCommandTag;
|
|
5
|
+
}
|
|
6
|
+
export interface ShowActiveUser extends IChatCommand {
|
|
7
|
+
type: "showActiveUser";
|
|
8
|
+
}
|
|
9
|
+
export interface CreateActiveUser extends IChatCommand {
|
|
10
|
+
type: "createActiveUser";
|
|
11
|
+
profile: Profile;
|
|
12
|
+
}
|
|
13
|
+
export interface StartChat extends IChatCommand {
|
|
14
|
+
type: "startChat";
|
|
15
|
+
}
|
|
16
|
+
export interface SetFilesFolder extends IChatCommand {
|
|
17
|
+
type: "setFilesFolder";
|
|
18
|
+
filePath: string;
|
|
19
|
+
}
|
|
20
|
+
export interface APIGetChats extends IChatCommand {
|
|
21
|
+
type: "apiGetChats";
|
|
22
|
+
}
|
|
23
|
+
export interface APIGetChat extends IChatCommand {
|
|
24
|
+
type: "apiGetChat";
|
|
25
|
+
chatType: ChatType;
|
|
26
|
+
chatId: number;
|
|
27
|
+
pagination: ChatPagination;
|
|
28
|
+
}
|
|
29
|
+
export interface APISendMessage extends IChatCommand {
|
|
30
|
+
type: "apiSendMessage";
|
|
31
|
+
chatType: ChatType;
|
|
32
|
+
chatId: number;
|
|
33
|
+
message: ComposedMessage;
|
|
34
|
+
}
|
|
35
|
+
export interface ComposedMessage {
|
|
36
|
+
filePath?: string;
|
|
37
|
+
quotedItemId?: ChatItemId;
|
|
38
|
+
msgContent: MsgContent;
|
|
39
|
+
}
|
|
40
|
+
export interface APIUpdateChatItem extends IChatCommand {
|
|
41
|
+
type: "apiUpdateChatItem";
|
|
42
|
+
chatType: ChatType;
|
|
43
|
+
chatId: number;
|
|
44
|
+
chatItemId: ChatItemId;
|
|
45
|
+
msgContent: MsgContent;
|
|
46
|
+
}
|
|
47
|
+
export interface APIDeleteChatItem extends IChatCommand {
|
|
48
|
+
type: "apiDeleteChatItem";
|
|
49
|
+
chatType: ChatType;
|
|
50
|
+
chatId: number;
|
|
51
|
+
chatItemId: ChatItemId;
|
|
52
|
+
deleteMode: DeleteMode;
|
|
53
|
+
}
|
|
54
|
+
export interface APIChatRead extends IChatCommand {
|
|
55
|
+
type: "apiChatRead";
|
|
56
|
+
chatType: ChatType;
|
|
57
|
+
chatId: number;
|
|
58
|
+
fromItem: ChatItemId;
|
|
59
|
+
toItem: ChatItemId;
|
|
60
|
+
}
|
|
61
|
+
export interface APIDeleteChat extends IChatCommand {
|
|
62
|
+
type: "apiDeleteChat";
|
|
63
|
+
chatType: ChatType;
|
|
64
|
+
chatId: number;
|
|
65
|
+
}
|
|
66
|
+
export interface APIAcceptContact extends IChatCommand {
|
|
67
|
+
type: "apiAcceptContact";
|
|
68
|
+
contactReqId: number;
|
|
69
|
+
}
|
|
70
|
+
export interface APIRejectContact extends IChatCommand {
|
|
71
|
+
type: "apiRejectContact";
|
|
72
|
+
contactReqId: number;
|
|
73
|
+
}
|
|
74
|
+
export interface APIUpdateProfile extends IChatCommand {
|
|
75
|
+
type: "apiUpdateProfile";
|
|
76
|
+
profile: Profile;
|
|
77
|
+
}
|
|
78
|
+
export interface APIParseMarkdown extends IChatCommand {
|
|
79
|
+
type: "apiParseMarkdown";
|
|
80
|
+
text: string;
|
|
81
|
+
}
|
|
82
|
+
export interface GetUserSMPServers extends IChatCommand {
|
|
83
|
+
type: "getUserSMPServers";
|
|
84
|
+
}
|
|
85
|
+
export interface SetUserSMPServers extends IChatCommand {
|
|
86
|
+
type: "setUserSMPServers";
|
|
87
|
+
servers: [string];
|
|
88
|
+
}
|
|
89
|
+
export interface AddContact extends IChatCommand {
|
|
90
|
+
type: "addContact";
|
|
91
|
+
}
|
|
92
|
+
export interface Connect extends IChatCommand {
|
|
93
|
+
type: "connect";
|
|
94
|
+
connReq: string;
|
|
95
|
+
}
|
|
96
|
+
export interface ConnectSimplex extends IChatCommand {
|
|
97
|
+
type: "connectSimplex";
|
|
98
|
+
}
|
|
99
|
+
export interface CreateMyAddress extends IChatCommand {
|
|
100
|
+
type: "createMyAddress";
|
|
101
|
+
}
|
|
102
|
+
export interface DeleteMyAddress extends IChatCommand {
|
|
103
|
+
type: "deleteMyAddress";
|
|
104
|
+
}
|
|
105
|
+
export interface ShowMyAddress extends IChatCommand {
|
|
106
|
+
type: "showMyAddress";
|
|
107
|
+
}
|
|
108
|
+
export interface AddressAutoAccept extends IChatCommand {
|
|
109
|
+
type: "addressAutoAccept";
|
|
110
|
+
enable: boolean;
|
|
111
|
+
}
|
|
112
|
+
export interface Profile {
|
|
113
|
+
displayName: string;
|
|
114
|
+
fullName: string;
|
|
115
|
+
image?: string;
|
|
116
|
+
}
|
|
117
|
+
export declare enum ChatType {
|
|
118
|
+
CTDirect = "@",
|
|
119
|
+
CTGroup = "#",
|
|
120
|
+
CTContactRequest = "<@"
|
|
121
|
+
}
|
|
122
|
+
export declare type ChatPagination = {
|
|
123
|
+
count: number;
|
|
124
|
+
} | {
|
|
125
|
+
count: number;
|
|
126
|
+
after: ChatItemId;
|
|
127
|
+
} | {
|
|
128
|
+
count: number;
|
|
129
|
+
before: ChatItemId;
|
|
130
|
+
};
|
|
131
|
+
export declare type ChatItemId = number;
|
|
132
|
+
declare type MsgContentTag = "text" | "link" | "images";
|
|
133
|
+
export declare type MsgContent = MCText | MCUnknown;
|
|
134
|
+
interface MC {
|
|
135
|
+
type: MsgContentTag;
|
|
136
|
+
}
|
|
137
|
+
interface MCText extends MC {
|
|
138
|
+
type: "text";
|
|
139
|
+
text: string;
|
|
140
|
+
}
|
|
141
|
+
interface MCUnknown {
|
|
142
|
+
type: string;
|
|
143
|
+
text?: string;
|
|
144
|
+
}
|
|
145
|
+
export declare enum DeleteMode {
|
|
146
|
+
Broadcast = "broadcast",
|
|
147
|
+
Internal = "internal"
|
|
148
|
+
}
|
|
149
|
+
export declare function cmdString(cmd: ChatCommand): string;
|
|
150
|
+
export {};
|
package/dist/command.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export var ChatType;
|
|
2
|
+
(function (ChatType) {
|
|
3
|
+
ChatType["CTDirect"] = "@";
|
|
4
|
+
ChatType["CTGroup"] = "#";
|
|
5
|
+
ChatType["CTContactRequest"] = "<@";
|
|
6
|
+
})(ChatType || (ChatType = {}));
|
|
7
|
+
export var DeleteMode;
|
|
8
|
+
(function (DeleteMode) {
|
|
9
|
+
DeleteMode["Broadcast"] = "broadcast";
|
|
10
|
+
DeleteMode["Internal"] = "internal";
|
|
11
|
+
})(DeleteMode || (DeleteMode = {}));
|
|
12
|
+
export function cmdString(cmd) {
|
|
13
|
+
switch (cmd.type) {
|
|
14
|
+
case "showActiveUser":
|
|
15
|
+
return "/u";
|
|
16
|
+
case "createActiveUser":
|
|
17
|
+
return `/u ${JSON.stringify(cmd.profile)}`;
|
|
18
|
+
case "startChat":
|
|
19
|
+
return "/_start";
|
|
20
|
+
case "setFilesFolder":
|
|
21
|
+
return `/_files_folder ${cmd.filePath}`;
|
|
22
|
+
case "apiGetChats":
|
|
23
|
+
return "/_get chats";
|
|
24
|
+
case "apiGetChat":
|
|
25
|
+
return `/_get chat ${cmd.chatType}${cmd.chatId}${paginationStr(cmd.pagination)}`;
|
|
26
|
+
case "apiSendMessage":
|
|
27
|
+
return `/_send ${cmd.chatType}${cmd.chatId} json ${JSON.stringify(cmd.message)}`;
|
|
28
|
+
case "apiUpdateChatItem":
|
|
29
|
+
return `/_update item ${cmd.chatType}${cmd.chatId} ${cmd.chatItemId} json ${JSON.stringify(cmd.msgContent)}`;
|
|
30
|
+
case "apiDeleteChatItem":
|
|
31
|
+
return `/_delete item ${cmd.chatType}${cmd.chatId} ${cmd.chatItemId} ${cmd.deleteMode}`;
|
|
32
|
+
case "apiChatRead":
|
|
33
|
+
return `/_read chat ${cmd.chatType}${cmd.chatId} from=${cmd.fromItem} to=${cmd.toItem}`;
|
|
34
|
+
case "apiDeleteChat":
|
|
35
|
+
return `/_delete ${cmd.chatType}${cmd.chatId}`;
|
|
36
|
+
case "apiAcceptContact":
|
|
37
|
+
return `/_accept ${cmd.contactReqId}`;
|
|
38
|
+
case "apiRejectContact":
|
|
39
|
+
return `/_reject ${cmd.contactReqId}`;
|
|
40
|
+
case "apiUpdateProfile":
|
|
41
|
+
return `/_profile ${JSON.stringify(cmd.profile)}`;
|
|
42
|
+
case "apiParseMarkdown":
|
|
43
|
+
return `/_parse ${cmd.text}`;
|
|
44
|
+
case "getUserSMPServers":
|
|
45
|
+
return "/smp_servers";
|
|
46
|
+
case "setUserSMPServers":
|
|
47
|
+
return `/smp_servers ${cmd.servers.join(",") || "default"}`;
|
|
48
|
+
case "addContact":
|
|
49
|
+
return "/connect";
|
|
50
|
+
case "connect":
|
|
51
|
+
return `/connect ${cmd.connReq}`;
|
|
52
|
+
case "connectSimplex":
|
|
53
|
+
return "/simplex";
|
|
54
|
+
case "createMyAddress":
|
|
55
|
+
return "/address";
|
|
56
|
+
case "deleteMyAddress":
|
|
57
|
+
return "/delete_address";
|
|
58
|
+
case "showMyAddress":
|
|
59
|
+
return "/show_address";
|
|
60
|
+
case "addressAutoAccept":
|
|
61
|
+
return `/auto_accept ${cmd.enable ? "on" : "off"}`;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function paginationStr(cp) {
|
|
65
|
+
const base = "after" in cp ? ` after=${cp.after}` : "before" in cp ? ` before=${cp.before}` : "";
|
|
66
|
+
return base + ` count=${cp.count}`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-web.js","sourceRoot":"","sources":["../src/index-web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAA;AACnC,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAA"}
|