@photon-ai/advanced-imessage-kit 1.1.4 → 1.2.0
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 +8 -5
- package/dist/index.cjs +834 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +639 -0
- package/dist/index.d.ts +639 -6
- package/dist/index.js +770 -5
- package/dist/index.js.map +1 -1
- package/package.json +13 -6
- package/dist/events.d.ts +0 -32
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -32
- package/dist/events.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/Loggable.d.ts +0 -16
- package/dist/lib/Loggable.d.ts.map +0 -1
- package/dist/lib/Loggable.js +0 -34
- package/dist/lib/Loggable.js.map +0 -1
- package/dist/lib/Logger.d.ts +0 -18
- package/dist/lib/Logger.d.ts.map +0 -1
- package/dist/lib/Logger.js +0 -77
- package/dist/lib/Logger.js.map +0 -1
- package/dist/mobai.d.ts +0 -44
- package/dist/mobai.d.ts.map +0 -1
- package/dist/mobai.js +0 -176
- package/dist/mobai.js.map +0 -1
- package/dist/modules/attachment.d.ts +0 -24
- package/dist/modules/attachment.d.ts.map +0 -1
- package/dist/modules/attachment.js +0 -88
- package/dist/modules/attachment.js.map +0 -1
- package/dist/modules/chat.d.ts +0 -55
- package/dist/modules/chat.d.ts.map +0 -1
- package/dist/modules/chat.js +0 -100
- package/dist/modules/chat.js.map +0 -1
- package/dist/modules/contact.d.ts +0 -10
- package/dist/modules/contact.d.ts.map +0 -1
- package/dist/modules/contact.js +0 -23
- package/dist/modules/contact.js.map +0 -1
- package/dist/modules/facetime.d.ts +0 -7
- package/dist/modules/facetime.d.ts.map +0 -1
- package/dist/modules/facetime.js +0 -10
- package/dist/modules/facetime.js.map +0 -1
- package/dist/modules/handle.d.ts +0 -24
- package/dist/modules/handle.d.ts.map +0 -1
- package/dist/modules/handle.js +0 -40
- package/dist/modules/handle.js.map +0 -1
- package/dist/modules/icloud.d.ts +0 -10
- package/dist/modules/icloud.d.ts.map +0 -1
- package/dist/modules/icloud.js +0 -20
- package/dist/modules/icloud.js.map +0 -1
- package/dist/modules/index.d.ts +0 -10
- package/dist/modules/index.d.ts.map +0 -1
- package/dist/modules/index.js +0 -10
- package/dist/modules/index.js.map +0 -1
- package/dist/modules/message.d.ts +0 -72
- package/dist/modules/message.d.ts.map +0 -1
- package/dist/modules/message.js +0 -108
- package/dist/modules/message.js.map +0 -1
- package/dist/modules/scheduled.d.ts +0 -10
- package/dist/modules/scheduled.d.ts.map +0 -1
- package/dist/modules/scheduled.js +0 -21
- package/dist/modules/scheduled.js.map +0 -1
- package/dist/modules/server.d.ts +0 -17
- package/dist/modules/server.d.ts.map +0 -1
- package/dist/modules/server.js +0 -46
- package/dist/modules/server.js.map +0 -1
- package/dist/types/attachment.d.ts +0 -37
- package/dist/types/attachment.d.ts.map +0 -1
- package/dist/types/attachment.js +0 -2
- package/dist/types/attachment.js.map +0 -1
- package/dist/types/chat.d.ts +0 -25
- package/dist/types/chat.d.ts.map +0 -1
- package/dist/types/chat.js +0 -2
- package/dist/types/chat.js.map +0 -1
- package/dist/types/client.d.ts +0 -5
- package/dist/types/client.d.ts.map +0 -1
- package/dist/types/client.js +0 -2
- package/dist/types/client.js.map +0 -1
- package/dist/types/events.d.ts +0 -71
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -2
- package/dist/types/events.js.map +0 -1
- package/dist/types/facetime.d.ts +0 -16
- package/dist/types/facetime.d.ts.map +0 -1
- package/dist/types/facetime.js +0 -2
- package/dist/types/facetime.js.map +0 -1
- package/dist/types/findmy.d.ts +0 -12
- package/dist/types/findmy.d.ts.map +0 -1
- package/dist/types/findmy.js +0 -2
- package/dist/types/findmy.js.map +0 -1
- package/dist/types/handle.d.ts +0 -16
- package/dist/types/handle.d.ts.map +0 -1
- package/dist/types/handle.js +0 -2
- package/dist/types/handle.js.map +0 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -13
- package/dist/types/index.js.map +0 -1
- package/dist/types/message.d.ts +0 -101
- package/dist/types/message.d.ts.map +0 -1
- package/dist/types/message.js +0 -2
- package/dist/types/message.js.map +0 -1
- package/dist/types/scheduled.d.ts +0 -10
- package/dist/types/scheduled.d.ts.map +0 -1
- package/dist/types/scheduled.js +0 -2
- package/dist/types/scheduled.js.map +0 -1
- package/dist/types/server.d.ts +0 -24
- package/dist/types/server.d.ts.map +0 -1
- package/dist/types/server.js +0 -2
- package/dist/types/server.js.map +0 -1
- package/dist/types/sticker.d.ts +0 -7
- package/dist/types/sticker.d.ts.map +0 -1
- package/dist/types/sticker.js +0 -2
- package/dist/types/sticker.js.map +0 -1
- package/dist/types/tapback.d.ts +0 -3
- package/dist/types/tapback.d.ts.map +0 -1
- package/dist/types/tapback.js +0 -2
- package/dist/types/tapback.js.map +0 -1
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,834 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('reflect-metadata');
|
|
4
|
+
var EventEmitter = require('events');
|
|
5
|
+
var axios = require('axios');
|
|
6
|
+
var io = require('socket.io-client');
|
|
7
|
+
var fs = require('fs');
|
|
8
|
+
var os = require('os');
|
|
9
|
+
var path = require('path');
|
|
10
|
+
var crypto = require('crypto');
|
|
11
|
+
var promises = require('fs/promises');
|
|
12
|
+
var FormData = require('form-data');
|
|
13
|
+
|
|
14
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
|
|
16
|
+
function _interopNamespace(e) {
|
|
17
|
+
if (e && e.__esModule) return e;
|
|
18
|
+
var n = Object.create(null);
|
|
19
|
+
if (e) {
|
|
20
|
+
Object.keys(e).forEach(function (k) {
|
|
21
|
+
if (k !== 'default') {
|
|
22
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
23
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return e[k]; }
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
n.default = e;
|
|
31
|
+
return Object.freeze(n);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var EventEmitter__default = /*#__PURE__*/_interopDefault(EventEmitter);
|
|
35
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
36
|
+
var io__default = /*#__PURE__*/_interopDefault(io);
|
|
37
|
+
var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
|
|
38
|
+
var os__namespace = /*#__PURE__*/_interopNamespace(os);
|
|
39
|
+
var path__namespace = /*#__PURE__*/_interopNamespace(path);
|
|
40
|
+
var FormData__default = /*#__PURE__*/_interopDefault(FormData);
|
|
41
|
+
|
|
42
|
+
var __defProp = Object.defineProperty;
|
|
43
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
44
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
45
|
+
var Logger = class extends EventEmitter__default.default {
|
|
46
|
+
constructor(tag, level = "info", logToFile = true) {
|
|
47
|
+
super();
|
|
48
|
+
__publicField(this, "tag");
|
|
49
|
+
__publicField(this, "logLevel", "info");
|
|
50
|
+
__publicField(this, "logFile");
|
|
51
|
+
this.tag = tag;
|
|
52
|
+
this.logLevel = level;
|
|
53
|
+
if (logToFile) {
|
|
54
|
+
const logDir = path__namespace.join(os__namespace.homedir(), "Library", "Logs", "AdvancedIMessageKit");
|
|
55
|
+
if (!fs__namespace.existsSync(logDir)) {
|
|
56
|
+
fs__namespace.mkdirSync(logDir, { recursive: true });
|
|
57
|
+
}
|
|
58
|
+
this.logFile = path__namespace.join(logDir, "sdk.log");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
setLogLevel(level) {
|
|
62
|
+
this.logLevel = level;
|
|
63
|
+
}
|
|
64
|
+
shouldLog(level) {
|
|
65
|
+
const levels = ["debug", "info", "warn", "error"];
|
|
66
|
+
const currentIndex = levels.indexOf(this.logLevel);
|
|
67
|
+
const messageIndex = levels.indexOf(level);
|
|
68
|
+
return messageIndex >= currentIndex;
|
|
69
|
+
}
|
|
70
|
+
formatMessage(level, message) {
|
|
71
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
72
|
+
return `[${timestamp}][${level.toUpperCase()}][${this.tag}] ${message}`;
|
|
73
|
+
}
|
|
74
|
+
writeLog(level, message) {
|
|
75
|
+
if (!this.shouldLog(level)) return;
|
|
76
|
+
const formatted = this.formatMessage(level, message);
|
|
77
|
+
switch (level) {
|
|
78
|
+
case "error":
|
|
79
|
+
console.error(formatted);
|
|
80
|
+
break;
|
|
81
|
+
case "warn":
|
|
82
|
+
console.warn(formatted);
|
|
83
|
+
break;
|
|
84
|
+
case "debug":
|
|
85
|
+
console.debug(formatted);
|
|
86
|
+
break;
|
|
87
|
+
default:
|
|
88
|
+
console.log(formatted);
|
|
89
|
+
}
|
|
90
|
+
if (this.logFile) {
|
|
91
|
+
try {
|
|
92
|
+
fs__namespace.appendFileSync(this.logFile, `${formatted}
|
|
93
|
+
`);
|
|
94
|
+
} catch {
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
this.emit("log", { level, message, tag: this.tag });
|
|
98
|
+
}
|
|
99
|
+
info(message) {
|
|
100
|
+
this.writeLog("info", message);
|
|
101
|
+
}
|
|
102
|
+
debug(message) {
|
|
103
|
+
this.writeLog("debug", message);
|
|
104
|
+
}
|
|
105
|
+
error(message) {
|
|
106
|
+
const msg = message instanceof Error ? message.message : message;
|
|
107
|
+
this.writeLog("error", msg);
|
|
108
|
+
if (message instanceof Error && message.stack) {
|
|
109
|
+
this.writeLog("error", message.stack);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
warn(message) {
|
|
113
|
+
this.writeLog("warn", message);
|
|
114
|
+
}
|
|
115
|
+
log(message, level = "info") {
|
|
116
|
+
this.writeLog(level, message);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// lib/Loggable.ts
|
|
121
|
+
var loggers = {};
|
|
122
|
+
var globalLogLevel = "info";
|
|
123
|
+
var setGlobalLogLevel = (level) => {
|
|
124
|
+
globalLogLevel = level;
|
|
125
|
+
Object.values(loggers).forEach((logger) => {
|
|
126
|
+
logger.setLogLevel(level);
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
var getLogger = (tag) => {
|
|
130
|
+
let logger = loggers[tag];
|
|
131
|
+
if (!logger) {
|
|
132
|
+
logger = new Logger(tag, globalLogLevel);
|
|
133
|
+
loggers[tag] = logger;
|
|
134
|
+
}
|
|
135
|
+
return logger;
|
|
136
|
+
};
|
|
137
|
+
var AttachmentModule = class {
|
|
138
|
+
constructor(http, enqueueSend = (task) => task()) {
|
|
139
|
+
this.http = http;
|
|
140
|
+
this.enqueueSend = enqueueSend;
|
|
141
|
+
}
|
|
142
|
+
async getAttachmentCount() {
|
|
143
|
+
const response = await this.http.get("/api/v1/attachment/count");
|
|
144
|
+
return response.data.data.total;
|
|
145
|
+
}
|
|
146
|
+
async getAttachment(guid) {
|
|
147
|
+
const response = await this.http.get(`/api/v1/attachment/${guid}`);
|
|
148
|
+
return response.data.data;
|
|
149
|
+
}
|
|
150
|
+
async downloadAttachment(guid, options) {
|
|
151
|
+
const params = {};
|
|
152
|
+
if (options?.original !== void 0) params.original = options.original;
|
|
153
|
+
if (options?.force !== void 0) params.force = options.force;
|
|
154
|
+
if (options?.height !== void 0) params.height = options.height;
|
|
155
|
+
if (options?.width !== void 0) params.width = options.width;
|
|
156
|
+
if (options?.quality !== void 0) params.quality = options.quality;
|
|
157
|
+
const response = await this.http.get(`/api/v1/attachment/${guid}/download`, {
|
|
158
|
+
params,
|
|
159
|
+
responseType: "arraybuffer"
|
|
160
|
+
});
|
|
161
|
+
return Buffer.from(response.data);
|
|
162
|
+
}
|
|
163
|
+
async downloadAttachmentLive(guid) {
|
|
164
|
+
const response = await this.http.get(`/api/v1/attachment/${guid}/live`, {
|
|
165
|
+
responseType: "arraybuffer"
|
|
166
|
+
});
|
|
167
|
+
return Buffer.from(response.data);
|
|
168
|
+
}
|
|
169
|
+
async getAttachmentBlurhash(guid, options) {
|
|
170
|
+
const params = {};
|
|
171
|
+
if (options?.height !== void 0) params.height = options.height;
|
|
172
|
+
if (options?.width !== void 0) params.width = options.width;
|
|
173
|
+
if (options?.quality !== void 0) params.quality = options.quality;
|
|
174
|
+
const response = await this.http.get(`/api/v1/attachment/${guid}/blurhash`, {
|
|
175
|
+
params
|
|
176
|
+
});
|
|
177
|
+
return response.data.data.blurhash;
|
|
178
|
+
}
|
|
179
|
+
async sendAttachment(options) {
|
|
180
|
+
return this.enqueueSend(async () => {
|
|
181
|
+
const fileBuffer = await promises.readFile(options.filePath);
|
|
182
|
+
const fileName = options.fileName || path__namespace.default.basename(options.filePath);
|
|
183
|
+
const form = new FormData__default.default();
|
|
184
|
+
form.append("chatGuid", options.chatGuid);
|
|
185
|
+
form.append("attachment", fileBuffer, fileName);
|
|
186
|
+
form.append("name", fileName);
|
|
187
|
+
form.append("tempGuid", crypto.randomUUID());
|
|
188
|
+
if (options.isAudioMessage !== void 0) {
|
|
189
|
+
form.append("isAudioMessage", options.isAudioMessage.toString());
|
|
190
|
+
if (options.isAudioMessage) {
|
|
191
|
+
form.append("method", "private-api");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const response = await this.http.post("/api/v1/message/attachment", form, {
|
|
195
|
+
headers: form.getHeaders()
|
|
196
|
+
});
|
|
197
|
+
return response.data.data;
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
async sendSticker(options) {
|
|
201
|
+
return this.enqueueSend(async () => {
|
|
202
|
+
const fileName = options.fileName || path__namespace.default.basename(options.filePath);
|
|
203
|
+
const form = new FormData__default.default();
|
|
204
|
+
form.append("attachment", await promises.readFile(options.filePath), fileName);
|
|
205
|
+
const { data } = await this.http.post("/api/v1/attachment/upload", form, {
|
|
206
|
+
headers: form.getHeaders()
|
|
207
|
+
});
|
|
208
|
+
const response = await this.http.post("/api/v1/message/multipart", {
|
|
209
|
+
chatGuid: options.chatGuid,
|
|
210
|
+
selectedMessageGuid: options.selectedMessageGuid,
|
|
211
|
+
parts: [{ partIndex: 0, attachment: data.data.path, name: fileName }]
|
|
212
|
+
});
|
|
213
|
+
return response.data.data;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
var ChatModule = class {
|
|
218
|
+
constructor(http) {
|
|
219
|
+
this.http = http;
|
|
220
|
+
}
|
|
221
|
+
async getChats(options) {
|
|
222
|
+
const response = await this.http.post("/api/v1/chat/query", options ?? {});
|
|
223
|
+
return response.data.data;
|
|
224
|
+
}
|
|
225
|
+
async createChat(options) {
|
|
226
|
+
const response = await this.http.post("/api/v1/chat/new", options);
|
|
227
|
+
return response.data.data;
|
|
228
|
+
}
|
|
229
|
+
async getChat(guid, options) {
|
|
230
|
+
const response = await this.http.get(`/api/v1/chat/${guid}`, {
|
|
231
|
+
params: options?.with ? { with: options.with.join(",") } : {}
|
|
232
|
+
});
|
|
233
|
+
return response.data.data;
|
|
234
|
+
}
|
|
235
|
+
async updateChat(guid, options) {
|
|
236
|
+
const response = await this.http.put(`/api/v1/chat/${guid}`, options);
|
|
237
|
+
return response.data.data;
|
|
238
|
+
}
|
|
239
|
+
async deleteChat(guid) {
|
|
240
|
+
await this.http.delete(`/api/v1/chat/${guid}`);
|
|
241
|
+
}
|
|
242
|
+
async markChatRead(guid) {
|
|
243
|
+
await this.http.post(`/api/v1/chat/${guid}/read`);
|
|
244
|
+
}
|
|
245
|
+
async markChatUnread(guid) {
|
|
246
|
+
await this.http.post(`/api/v1/chat/${guid}/unread`);
|
|
247
|
+
}
|
|
248
|
+
async leaveChat(guid) {
|
|
249
|
+
await this.http.post(`/api/v1/chat/${guid}/leave`);
|
|
250
|
+
}
|
|
251
|
+
async addParticipant(chatGuid, address) {
|
|
252
|
+
const response = await this.http.post(`/api/v1/chat/${chatGuid}/participant`, {
|
|
253
|
+
address
|
|
254
|
+
});
|
|
255
|
+
return response.data.data;
|
|
256
|
+
}
|
|
257
|
+
async removeParticipant(chatGuid, address) {
|
|
258
|
+
const response = await this.http.delete(`/api/v1/chat/${chatGuid}/participant`, {
|
|
259
|
+
data: { address }
|
|
260
|
+
});
|
|
261
|
+
return response.data.data;
|
|
262
|
+
}
|
|
263
|
+
async getChatMessages(chatGuid, options) {
|
|
264
|
+
const params = {};
|
|
265
|
+
if (options?.offset !== void 0) params.offset = options.offset;
|
|
266
|
+
if (options?.limit !== void 0) params.limit = options.limit;
|
|
267
|
+
if (options?.sort) params.sort = options.sort;
|
|
268
|
+
if (options?.before !== void 0) params.before = options.before;
|
|
269
|
+
if (options?.after !== void 0) params.after = options.after;
|
|
270
|
+
if (options?.with) params.with = options.with.join(",");
|
|
271
|
+
const response = await this.http.get(`/api/v1/chat/${chatGuid}/message`, {
|
|
272
|
+
params
|
|
273
|
+
});
|
|
274
|
+
return response.data.data;
|
|
275
|
+
}
|
|
276
|
+
async setGroupIcon(chatGuid, filePath) {
|
|
277
|
+
const fileBuffer = await promises.readFile(filePath);
|
|
278
|
+
const fileName = path__namespace.default.basename(filePath);
|
|
279
|
+
const form = new FormData__default.default();
|
|
280
|
+
form.append("icon", fileBuffer, fileName);
|
|
281
|
+
await this.http.post(`/api/v1/chat/${chatGuid}/icon`, form, {
|
|
282
|
+
headers: form.getHeaders()
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
async removeGroupIcon(chatGuid) {
|
|
286
|
+
await this.http.delete(`/api/v1/chat/${chatGuid}/icon`);
|
|
287
|
+
}
|
|
288
|
+
async getGroupIcon(chatGuid) {
|
|
289
|
+
const response = await this.http.get(`/api/v1/chat/${chatGuid}/icon`, {
|
|
290
|
+
responseType: "arraybuffer"
|
|
291
|
+
});
|
|
292
|
+
return Buffer.from(response.data);
|
|
293
|
+
}
|
|
294
|
+
async getChatCount(options) {
|
|
295
|
+
const response = await this.http.get("/api/v1/chat/count", {
|
|
296
|
+
params: options?.includeArchived !== void 0 ? { includeArchived: options.includeArchived } : {}
|
|
297
|
+
});
|
|
298
|
+
return response.data.data;
|
|
299
|
+
}
|
|
300
|
+
async startTyping(chatGuid) {
|
|
301
|
+
await this.http.post(`/api/v1/chat/${chatGuid}/typing`);
|
|
302
|
+
}
|
|
303
|
+
async stopTyping(chatGuid) {
|
|
304
|
+
await this.http.delete(`/api/v1/chat/${chatGuid}/typing`);
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
// modules/contact.ts
|
|
309
|
+
var ContactModule = class {
|
|
310
|
+
constructor(http) {
|
|
311
|
+
this.http = http;
|
|
312
|
+
}
|
|
313
|
+
async getContacts() {
|
|
314
|
+
const response = await this.http.get("/api/v1/contact");
|
|
315
|
+
return response.data.data;
|
|
316
|
+
}
|
|
317
|
+
async getContactCard(address) {
|
|
318
|
+
const response = await this.http.get("/api/v1/icloud/contact", {
|
|
319
|
+
params: { address }
|
|
320
|
+
});
|
|
321
|
+
return response.data.data;
|
|
322
|
+
}
|
|
323
|
+
async shareContactCard(chatGuid) {
|
|
324
|
+
await this.http.post(`/api/v1/chat/${chatGuid}/share/contact`);
|
|
325
|
+
}
|
|
326
|
+
async shouldShareContact(chatGuid) {
|
|
327
|
+
const response = await this.http.get(`/api/v1/chat/${chatGuid}/share/contact/status`);
|
|
328
|
+
return response.data.data;
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
// modules/facetime.ts
|
|
333
|
+
var FaceTimeModule = class {
|
|
334
|
+
constructor(http) {
|
|
335
|
+
this.http = http;
|
|
336
|
+
}
|
|
337
|
+
async createFaceTimeLink() {
|
|
338
|
+
const response = await this.http.post("/api/v1/facetime/session");
|
|
339
|
+
return response.data.data;
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
// modules/handle.ts
|
|
344
|
+
var HandleModule = class {
|
|
345
|
+
constructor(http) {
|
|
346
|
+
this.http = http;
|
|
347
|
+
}
|
|
348
|
+
async getHandleCount() {
|
|
349
|
+
const response = await this.http.get("/api/v1/handle/count");
|
|
350
|
+
return response.data.data.total;
|
|
351
|
+
}
|
|
352
|
+
async queryHandles(options) {
|
|
353
|
+
const body = {};
|
|
354
|
+
if (options?.address) body.address = options.address;
|
|
355
|
+
if (options?.with) body.with = options.with.join(",");
|
|
356
|
+
if (options?.offset !== void 0) body.offset = options.offset;
|
|
357
|
+
if (options?.limit !== void 0) body.limit = options.limit;
|
|
358
|
+
const response = await this.http.post("/api/v1/handle/query", body);
|
|
359
|
+
return {
|
|
360
|
+
data: response.data.data,
|
|
361
|
+
metadata: response.data.metadata
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
async getHandle(guid) {
|
|
365
|
+
const response = await this.http.get(`/api/v1/handle/${guid}`);
|
|
366
|
+
return response.data.data;
|
|
367
|
+
}
|
|
368
|
+
async getHandleAvailability(address, type) {
|
|
369
|
+
const response = await this.http.get(`/api/v1/handle/availability/${type}`, {
|
|
370
|
+
params: { address }
|
|
371
|
+
});
|
|
372
|
+
return response.data.data.available;
|
|
373
|
+
}
|
|
374
|
+
async getHandleFocusStatus(guid) {
|
|
375
|
+
const response = await this.http.get(`/api/v1/handle/${guid}/focus`);
|
|
376
|
+
return response.data.data.status;
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
|
|
380
|
+
// modules/icloud.ts
|
|
381
|
+
var ICloudModule = class {
|
|
382
|
+
constructor(http) {
|
|
383
|
+
this.http = http;
|
|
384
|
+
}
|
|
385
|
+
async getFindMyFriends() {
|
|
386
|
+
const response = await this.http.get("/api/v1/icloud/findmy/friends");
|
|
387
|
+
return response.data.data;
|
|
388
|
+
}
|
|
389
|
+
async refreshFindMyFriends() {
|
|
390
|
+
await this.http.post("/api/v1/icloud/findmy/friends/refresh");
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
var MessageModule = class {
|
|
394
|
+
constructor(http, enqueueSend = (task) => task()) {
|
|
395
|
+
this.http = http;
|
|
396
|
+
this.enqueueSend = enqueueSend;
|
|
397
|
+
}
|
|
398
|
+
async sendMessage(options) {
|
|
399
|
+
return this.enqueueSend(async () => {
|
|
400
|
+
const payload = {
|
|
401
|
+
...options,
|
|
402
|
+
tempGuid: options.tempGuid || crypto.randomUUID()
|
|
403
|
+
};
|
|
404
|
+
const response = await this.http.post("/api/v1/message/text", payload);
|
|
405
|
+
return response.data.data;
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
async getMessage(guid, options) {
|
|
409
|
+
const response = await this.http.get(`/api/v1/message/${guid}`, {
|
|
410
|
+
params: options?.with ? { with: options.with.join(",") } : {}
|
|
411
|
+
});
|
|
412
|
+
return response.data.data;
|
|
413
|
+
}
|
|
414
|
+
async getMessages(options) {
|
|
415
|
+
const response = await this.http.post("/api/v1/message/query", options ?? {});
|
|
416
|
+
return response.data.data;
|
|
417
|
+
}
|
|
418
|
+
async getMessageCount(options) {
|
|
419
|
+
const params = {};
|
|
420
|
+
if (options?.after !== void 0) params.after = options.after;
|
|
421
|
+
if (options?.before !== void 0) params.before = options.before;
|
|
422
|
+
if (options?.chatGuid) params.chatGuid = options.chatGuid;
|
|
423
|
+
if (options?.minRowId !== void 0) params.minRowId = options.minRowId;
|
|
424
|
+
if (options?.maxRowId !== void 0) params.maxRowId = options.maxRowId;
|
|
425
|
+
const response = await this.http.get("/api/v1/message/count", { params });
|
|
426
|
+
return response.data.data.total;
|
|
427
|
+
}
|
|
428
|
+
async getUpdatedMessageCount(options) {
|
|
429
|
+
const params = {};
|
|
430
|
+
if (options?.after !== void 0) params.after = options.after;
|
|
431
|
+
if (options?.before !== void 0) params.before = options.before;
|
|
432
|
+
if (options?.chatGuid) params.chatGuid = options.chatGuid;
|
|
433
|
+
if (options?.minRowId !== void 0) params.minRowId = options.minRowId;
|
|
434
|
+
if (options?.maxRowId !== void 0) params.maxRowId = options.maxRowId;
|
|
435
|
+
const response = await this.http.get("/api/v1/message/count/updated", {
|
|
436
|
+
params
|
|
437
|
+
});
|
|
438
|
+
return response.data.data.total;
|
|
439
|
+
}
|
|
440
|
+
async getSentMessageCount(options) {
|
|
441
|
+
const params = {};
|
|
442
|
+
if (options?.after !== void 0) params.after = options.after;
|
|
443
|
+
if (options?.before !== void 0) params.before = options.before;
|
|
444
|
+
if (options?.chatGuid) params.chatGuid = options.chatGuid;
|
|
445
|
+
if (options?.minRowId !== void 0) params.minRowId = options.minRowId;
|
|
446
|
+
if (options?.maxRowId !== void 0) params.maxRowId = options.maxRowId;
|
|
447
|
+
const response = await this.http.get("/api/v1/message/count/me", {
|
|
448
|
+
params
|
|
449
|
+
});
|
|
450
|
+
return response.data.data.total;
|
|
451
|
+
}
|
|
452
|
+
async editMessage(options) {
|
|
453
|
+
return this.enqueueSend(async () => {
|
|
454
|
+
const response = await this.http.post(`/api/v1/message/${options.messageGuid}/edit`, {
|
|
455
|
+
editedMessage: options.editedMessage,
|
|
456
|
+
backwardsCompatibilityMessage: options.backwardsCompatibilityMessage || options.editedMessage,
|
|
457
|
+
partIndex: options.partIndex ?? 0
|
|
458
|
+
});
|
|
459
|
+
return response.data.data;
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
async sendReaction(options) {
|
|
463
|
+
return this.enqueueSend(async () => {
|
|
464
|
+
const response = await this.http.post("/api/v1/message/react", {
|
|
465
|
+
chatGuid: options.chatGuid,
|
|
466
|
+
selectedMessageGuid: options.messageGuid,
|
|
467
|
+
reaction: options.reaction,
|
|
468
|
+
partIndex: options.partIndex ?? 0
|
|
469
|
+
});
|
|
470
|
+
return response.data.data;
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
async unsendMessage(options) {
|
|
474
|
+
return this.enqueueSend(async () => {
|
|
475
|
+
const response = await this.http.post(`/api/v1/message/${options.messageGuid}/unsend`, {
|
|
476
|
+
partIndex: options.partIndex ?? 0
|
|
477
|
+
});
|
|
478
|
+
return response.data.data;
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
async notifyMessage(guid) {
|
|
482
|
+
await this.http.post(`/api/v1/message/${guid}/notify`);
|
|
483
|
+
}
|
|
484
|
+
async getEmbeddedMedia(guid) {
|
|
485
|
+
const response = await this.http.get(`/api/v1/message/${guid}/embedded-media`);
|
|
486
|
+
return response.data.data;
|
|
487
|
+
}
|
|
488
|
+
async searchMessages(options) {
|
|
489
|
+
const response = await this.http.post("/api/v1/message/search", options);
|
|
490
|
+
return response.data.data;
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
// modules/scheduled.ts
|
|
495
|
+
var ScheduledMessageModule = class {
|
|
496
|
+
constructor(http) {
|
|
497
|
+
this.http = http;
|
|
498
|
+
}
|
|
499
|
+
async createScheduledMessage(options) {
|
|
500
|
+
const response = await this.http.post("/api/v1/message/schedule", options);
|
|
501
|
+
return response.data.data;
|
|
502
|
+
}
|
|
503
|
+
async getScheduledMessages() {
|
|
504
|
+
const response = await this.http.get("/api/v1/message/schedule");
|
|
505
|
+
return response.data.data;
|
|
506
|
+
}
|
|
507
|
+
async updateScheduledMessage(id, options) {
|
|
508
|
+
const response = await this.http.put(`/api/v1/message/schedule/${id}`, options);
|
|
509
|
+
return response.data.data;
|
|
510
|
+
}
|
|
511
|
+
async deleteScheduledMessage(id) {
|
|
512
|
+
await this.http.delete(`/api/v1/message/schedule/${id}`);
|
|
513
|
+
}
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
// modules/server.ts
|
|
517
|
+
var ServerModule = class {
|
|
518
|
+
constructor(http) {
|
|
519
|
+
this.http = http;
|
|
520
|
+
}
|
|
521
|
+
async getServerInfo() {
|
|
522
|
+
const response = await this.http.get("/api/v1/server/info");
|
|
523
|
+
return response.data.data;
|
|
524
|
+
}
|
|
525
|
+
async getMessageStats() {
|
|
526
|
+
const response = await this.http.get("/api/v1/server/statistics/totals");
|
|
527
|
+
return response.data.data;
|
|
528
|
+
}
|
|
529
|
+
async getServerLogs(count) {
|
|
530
|
+
const response = await this.http.get("/api/v1/server/logs", {
|
|
531
|
+
params: count !== void 0 ? { count } : {}
|
|
532
|
+
});
|
|
533
|
+
return response.data.data;
|
|
534
|
+
}
|
|
535
|
+
async getAlerts() {
|
|
536
|
+
const response = await this.http.get("/api/v1/server/alert");
|
|
537
|
+
return response.data.data;
|
|
538
|
+
}
|
|
539
|
+
async markAlertAsRead(ids) {
|
|
540
|
+
const response = await this.http.post("/api/v1/server/alert/read", { ids });
|
|
541
|
+
return response.data.data;
|
|
542
|
+
}
|
|
543
|
+
async getMediaStatistics(options) {
|
|
544
|
+
const params = {};
|
|
545
|
+
if (options?.only) params.only = options.only.join(",");
|
|
546
|
+
const response = await this.http.get("/api/v1/server/statistics/media", {
|
|
547
|
+
params
|
|
548
|
+
});
|
|
549
|
+
return response.data.data;
|
|
550
|
+
}
|
|
551
|
+
async getMediaStatisticsByChat(options) {
|
|
552
|
+
const params = {};
|
|
553
|
+
if (options?.only) params.only = options.only.join(",");
|
|
554
|
+
const response = await this.http.get("/api/v1/server/statistics/media/chat", {
|
|
555
|
+
params
|
|
556
|
+
});
|
|
557
|
+
return response.data.data;
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
|
|
561
|
+
// client.ts
|
|
562
|
+
var _AdvancedIMessageKit = class _AdvancedIMessageKit extends EventEmitter.EventEmitter {
|
|
563
|
+
constructor(config = {}) {
|
|
564
|
+
super();
|
|
565
|
+
// Core
|
|
566
|
+
__publicField(this, "config");
|
|
567
|
+
__publicField(this, "logger", getLogger("AdvancedIMessageKit"));
|
|
568
|
+
__publicField(this, "http");
|
|
569
|
+
__publicField(this, "socket");
|
|
570
|
+
__publicField(this, "attachments");
|
|
571
|
+
__publicField(this, "messages");
|
|
572
|
+
__publicField(this, "chats");
|
|
573
|
+
__publicField(this, "contacts");
|
|
574
|
+
__publicField(this, "handles");
|
|
575
|
+
__publicField(this, "facetime");
|
|
576
|
+
__publicField(this, "icloud");
|
|
577
|
+
__publicField(this, "scheduledMessages");
|
|
578
|
+
__publicField(this, "server");
|
|
579
|
+
// Message deduplication feature
|
|
580
|
+
//
|
|
581
|
+
// Purpose: Prevent message reply loops caused by server repeatedly pushing
|
|
582
|
+
// the same message content with different GUIDs due to unstable Socket.IO connections.
|
|
583
|
+
// This is especially problematic when the polling transport causes connection issues.
|
|
584
|
+
__publicField(this, "processedMessages", /* @__PURE__ */ new Set());
|
|
585
|
+
// Send queue for sequential message delivery
|
|
586
|
+
//
|
|
587
|
+
// Purpose: Ensure all outgoing messages (text, attachments, stickers, etc.) from
|
|
588
|
+
// a single user/SDK instance are sent in strict order, preventing race conditions.
|
|
589
|
+
__publicField(this, "sendQueue", Promise.resolve());
|
|
590
|
+
this.config = {
|
|
591
|
+
serverUrl: "http://localhost:1234",
|
|
592
|
+
logLevel: "info",
|
|
593
|
+
...config
|
|
594
|
+
};
|
|
595
|
+
if (this.config.logLevel) {
|
|
596
|
+
setGlobalLogLevel(this.config.logLevel);
|
|
597
|
+
}
|
|
598
|
+
this.http = axios__default.default.create({
|
|
599
|
+
baseURL: this.config.serverUrl,
|
|
600
|
+
headers: this.config.apiKey ? { "X-API-Key": this.config.apiKey } : void 0
|
|
601
|
+
});
|
|
602
|
+
this.socket = io__default.default(this.config.serverUrl, {
|
|
603
|
+
auth: this.config.apiKey ? { apiKey: this.config.apiKey } : void 0,
|
|
604
|
+
// 🚨 IMPORTANT: Polling transport configuration notes
|
|
605
|
+
//
|
|
606
|
+
// Root cause analysis:
|
|
607
|
+
// 1. Socket.IO 'polling' transport can cause unstable connections in certain network environments
|
|
608
|
+
// 2. When "xhr poll error" occurs, Socket.IO attempts to reconnect
|
|
609
|
+
// 3. During reconnection, the server may repeatedly push the same message with different GUIDs
|
|
610
|
+
// 4. This is not simple client-side duplicate processing, but server-side message duplication
|
|
611
|
+
//
|
|
612
|
+
// Solutions:
|
|
613
|
+
// - Prioritize WebSocket transport, fallback to polling as backup
|
|
614
|
+
// - Set reasonable timeout to avoid frequent reconnections
|
|
615
|
+
// - Use forceNew to ensure fresh connections and avoid state pollution
|
|
616
|
+
// - Implement client-side message deduplication as the last line of defense
|
|
617
|
+
transports: ["websocket"],
|
|
618
|
+
// Only WebSocket - polling disabled to prevent message duplication
|
|
619
|
+
timeout: 1e4,
|
|
620
|
+
// 10 second timeout to avoid overly frequent reconnections
|
|
621
|
+
forceNew: true
|
|
622
|
+
// Force new connection to avoid connection state pollution
|
|
623
|
+
});
|
|
624
|
+
const enqueueSend = this.enqueueSend.bind(this);
|
|
625
|
+
this.attachments = new AttachmentModule(this.http, enqueueSend);
|
|
626
|
+
this.messages = new MessageModule(this.http, enqueueSend);
|
|
627
|
+
this.chats = new ChatModule(this.http);
|
|
628
|
+
this.contacts = new ContactModule(this.http);
|
|
629
|
+
this.handles = new HandleModule(this.http);
|
|
630
|
+
this.facetime = new FaceTimeModule(this.http);
|
|
631
|
+
this.icloud = new ICloudModule(this.http);
|
|
632
|
+
this.scheduledMessages = new ScheduledMessageModule(this.http);
|
|
633
|
+
this.server = new ServerModule(this.http);
|
|
634
|
+
}
|
|
635
|
+
static getInstance(config) {
|
|
636
|
+
const existing = _AdvancedIMessageKit.getGlobalSdk();
|
|
637
|
+
if (existing) return existing;
|
|
638
|
+
const instance = new _AdvancedIMessageKit(config);
|
|
639
|
+
_AdvancedIMessageKit.setGlobalSdk(instance);
|
|
640
|
+
return instance;
|
|
641
|
+
}
|
|
642
|
+
emit(event, ...args) {
|
|
643
|
+
return super.emit(event, ...args);
|
|
644
|
+
}
|
|
645
|
+
on(event, listener) {
|
|
646
|
+
return super.on(event, listener);
|
|
647
|
+
}
|
|
648
|
+
once(event, listener) {
|
|
649
|
+
return super.once(event, listener);
|
|
650
|
+
}
|
|
651
|
+
off(event, listener) {
|
|
652
|
+
return super.off(event, listener);
|
|
653
|
+
}
|
|
654
|
+
addListener(event, listener) {
|
|
655
|
+
return super.addListener(event, listener);
|
|
656
|
+
}
|
|
657
|
+
removeListener(event, listener) {
|
|
658
|
+
return super.removeListener(event, listener);
|
|
659
|
+
}
|
|
660
|
+
async connect() {
|
|
661
|
+
const serverEvents = [
|
|
662
|
+
"new-message",
|
|
663
|
+
"message-updated",
|
|
664
|
+
"updated-message",
|
|
665
|
+
"chat-read-status-changed",
|
|
666
|
+
"group-name-change",
|
|
667
|
+
"participant-added",
|
|
668
|
+
"participant-removed",
|
|
669
|
+
"participant-left",
|
|
670
|
+
"group-icon-changed",
|
|
671
|
+
"group-icon-removed",
|
|
672
|
+
"message-send-error",
|
|
673
|
+
"typing-indicator",
|
|
674
|
+
"new-server",
|
|
675
|
+
"incoming-facetime",
|
|
676
|
+
"ft-call-status-changed",
|
|
677
|
+
"hello-world"
|
|
678
|
+
];
|
|
679
|
+
for (const eventName of serverEvents) {
|
|
680
|
+
this.socket.on(eventName, (...args) => {
|
|
681
|
+
if (eventName === "new-message" && args.length > 0) {
|
|
682
|
+
const message = args[0];
|
|
683
|
+
if (message?.guid) {
|
|
684
|
+
if (this.processedMessages.has(message.guid)) {
|
|
685
|
+
this.logger.debug(`Message already processed, skipping duplicate: ${message.guid}`);
|
|
686
|
+
return;
|
|
687
|
+
}
|
|
688
|
+
this.processedMessages.add(message.guid);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
if (args.length > 0) {
|
|
692
|
+
super.emit(eventName, args[0]);
|
|
693
|
+
} else {
|
|
694
|
+
super.emit(eventName);
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
this.socket.on("disconnect", () => {
|
|
699
|
+
this.logger.info("Disconnected from iMessage server");
|
|
700
|
+
this.emit("disconnect");
|
|
701
|
+
});
|
|
702
|
+
this.socket.on("auth-ok", () => {
|
|
703
|
+
this.logger.info("Authentication successful");
|
|
704
|
+
this.emit("ready");
|
|
705
|
+
});
|
|
706
|
+
this.socket.on("auth-error", (error) => {
|
|
707
|
+
this.logger.error(`Authentication failed: ${error.message} ${error.reason ? `(${error.reason})` : ""}`);
|
|
708
|
+
this.emit("error", new Error(`Authentication failed: ${error.message}`));
|
|
709
|
+
});
|
|
710
|
+
if (this.socket.connected) {
|
|
711
|
+
this.logger.info("Already connected to iMessage server");
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
714
|
+
this.socket.once("connect", () => {
|
|
715
|
+
this.logger.info("Connected to iMessage server, waiting for authentication...");
|
|
716
|
+
});
|
|
717
|
+
if (!this.socket.connected) {
|
|
718
|
+
this.socket.connect();
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
async close() {
|
|
722
|
+
this.socket.disconnect();
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* Clear processed message records (prevent memory leaks)
|
|
726
|
+
* @param maxSize Maximum number of messages to retain, default 1000
|
|
727
|
+
*/
|
|
728
|
+
clearProcessedMessages(maxSize = 1e3) {
|
|
729
|
+
if (this.processedMessages.size > maxSize) {
|
|
730
|
+
const messages = Array.from(this.processedMessages);
|
|
731
|
+
this.processedMessages.clear();
|
|
732
|
+
messages.slice(-Math.floor(maxSize / 2)).forEach((guid) => {
|
|
733
|
+
this.processedMessages.add(guid);
|
|
734
|
+
});
|
|
735
|
+
this.logger.debug(`Cleared processed message records, retained ${this.processedMessages.size} messages`);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Get the count of processed messages
|
|
740
|
+
*/
|
|
741
|
+
getProcessedMessageCount() {
|
|
742
|
+
return this.processedMessages.size;
|
|
743
|
+
}
|
|
744
|
+
/**
|
|
745
|
+
* Enqueue a send operation to ensure sequential delivery.
|
|
746
|
+
* All send operations (messages, attachments, stickers) should use this method
|
|
747
|
+
* to guarantee order for a single user.
|
|
748
|
+
* @param task The async send operation to enqueue
|
|
749
|
+
* @returns Promise that resolves with the task result
|
|
750
|
+
*/
|
|
751
|
+
enqueueSend(task) {
|
|
752
|
+
const result = this.sendQueue.then(() => task());
|
|
753
|
+
this.sendQueue = result.catch(() => {
|
|
754
|
+
});
|
|
755
|
+
return result;
|
|
756
|
+
}
|
|
757
|
+
};
|
|
758
|
+
__publicField(_AdvancedIMessageKit, "getGlobalSdk", () => globalThis.__AdvancedIMessageKit__ ?? null);
|
|
759
|
+
__publicField(_AdvancedIMessageKit, "setGlobalSdk", (sdk) => {
|
|
760
|
+
globalThis.__AdvancedIMessageKit__ = sdk;
|
|
761
|
+
});
|
|
762
|
+
var AdvancedIMessageKit = _AdvancedIMessageKit;
|
|
763
|
+
var SDK = AdvancedIMessageKit.getInstance;
|
|
764
|
+
|
|
765
|
+
// events.ts
|
|
766
|
+
var SCHEDULED_MESSAGE_ERROR = "scheduled-message-error";
|
|
767
|
+
var SCHEDULED_MESSAGE_SENT = "scheduled-message-sent";
|
|
768
|
+
var SCHEDULED_MESSAGE_DELETED = "scheduled-message-deleted";
|
|
769
|
+
var SCHEDULED_MESSAGE_UPDATED = "scheduled-message-updated";
|
|
770
|
+
var SCHEDULED_MESSAGE_CREATED = "scheduled-message-created";
|
|
771
|
+
var NEW_MESSAGE = "new-message";
|
|
772
|
+
var MESSAGE_SEND_ERROR = "message-send-error";
|
|
773
|
+
var MESSAGE_UPDATED = "updated-message";
|
|
774
|
+
var NEW_SERVER = "new-server";
|
|
775
|
+
var PARTICIPANT_REMOVED = "participant-removed";
|
|
776
|
+
var PARTICIPANT_ADDED = "participant-added";
|
|
777
|
+
var PARTICIPANT_LEFT = "participant-left";
|
|
778
|
+
var GROUP_ICON_CHANGED = "group-icon-changed";
|
|
779
|
+
var GROUP_ICON_REMOVED = "group-icon-removed";
|
|
780
|
+
var CHAT_READ_STATUS_CHANGED = "chat-read-status-changed";
|
|
781
|
+
var HELLO_WORLD = "hello-world";
|
|
782
|
+
var TYPING_INDICATOR = "typing-indicator";
|
|
783
|
+
var SERVER_UPDATE = "server-update";
|
|
784
|
+
var SERVER_UPDATE_DOWNLOADING = "server-update-downloading";
|
|
785
|
+
var SERVER_UPDATE_INSTALLING = "server-update-installing";
|
|
786
|
+
var GROUP_NAME_CHANGE = "group-name-change";
|
|
787
|
+
var INCOMING_FACETIME = "incoming-facetime";
|
|
788
|
+
var SETTINGS_BACKUP_CREATED = "settings-backup-created";
|
|
789
|
+
var SETTINGS_BACKUP_DELETED = "settings-backup-deleted";
|
|
790
|
+
var SETTINGS_BACKUP_UPDATED = "settings-backup-updated";
|
|
791
|
+
var THEME_BACKUP_CREATED = "theme-backup-created";
|
|
792
|
+
var THEME_BACKUP_DELETED = "theme-backup-deleted";
|
|
793
|
+
var THEME_BACKUP_UPDATED = "theme-backup-updated";
|
|
794
|
+
var IMESSAGE_ALIASES_REMOVED = "imessage-aliases-removed";
|
|
795
|
+
var FT_CALL_STATUS_CHANGED = "ft-call-status-changed";
|
|
796
|
+
var NEW_FINDMY_LOCATION = "new-findmy-location";
|
|
797
|
+
|
|
798
|
+
exports.AdvancedIMessageKit = AdvancedIMessageKit;
|
|
799
|
+
exports.CHAT_READ_STATUS_CHANGED = CHAT_READ_STATUS_CHANGED;
|
|
800
|
+
exports.FT_CALL_STATUS_CHANGED = FT_CALL_STATUS_CHANGED;
|
|
801
|
+
exports.GROUP_ICON_CHANGED = GROUP_ICON_CHANGED;
|
|
802
|
+
exports.GROUP_ICON_REMOVED = GROUP_ICON_REMOVED;
|
|
803
|
+
exports.GROUP_NAME_CHANGE = GROUP_NAME_CHANGE;
|
|
804
|
+
exports.HELLO_WORLD = HELLO_WORLD;
|
|
805
|
+
exports.IMESSAGE_ALIASES_REMOVED = IMESSAGE_ALIASES_REMOVED;
|
|
806
|
+
exports.INCOMING_FACETIME = INCOMING_FACETIME;
|
|
807
|
+
exports.MESSAGE_SEND_ERROR = MESSAGE_SEND_ERROR;
|
|
808
|
+
exports.MESSAGE_UPDATED = MESSAGE_UPDATED;
|
|
809
|
+
exports.NEW_FINDMY_LOCATION = NEW_FINDMY_LOCATION;
|
|
810
|
+
exports.NEW_MESSAGE = NEW_MESSAGE;
|
|
811
|
+
exports.NEW_SERVER = NEW_SERVER;
|
|
812
|
+
exports.PARTICIPANT_ADDED = PARTICIPANT_ADDED;
|
|
813
|
+
exports.PARTICIPANT_LEFT = PARTICIPANT_LEFT;
|
|
814
|
+
exports.PARTICIPANT_REMOVED = PARTICIPANT_REMOVED;
|
|
815
|
+
exports.SCHEDULED_MESSAGE_CREATED = SCHEDULED_MESSAGE_CREATED;
|
|
816
|
+
exports.SCHEDULED_MESSAGE_DELETED = SCHEDULED_MESSAGE_DELETED;
|
|
817
|
+
exports.SCHEDULED_MESSAGE_ERROR = SCHEDULED_MESSAGE_ERROR;
|
|
818
|
+
exports.SCHEDULED_MESSAGE_SENT = SCHEDULED_MESSAGE_SENT;
|
|
819
|
+
exports.SCHEDULED_MESSAGE_UPDATED = SCHEDULED_MESSAGE_UPDATED;
|
|
820
|
+
exports.SDK = SDK;
|
|
821
|
+
exports.SERVER_UPDATE = SERVER_UPDATE;
|
|
822
|
+
exports.SERVER_UPDATE_DOWNLOADING = SERVER_UPDATE_DOWNLOADING;
|
|
823
|
+
exports.SERVER_UPDATE_INSTALLING = SERVER_UPDATE_INSTALLING;
|
|
824
|
+
exports.SETTINGS_BACKUP_CREATED = SETTINGS_BACKUP_CREATED;
|
|
825
|
+
exports.SETTINGS_BACKUP_DELETED = SETTINGS_BACKUP_DELETED;
|
|
826
|
+
exports.SETTINGS_BACKUP_UPDATED = SETTINGS_BACKUP_UPDATED;
|
|
827
|
+
exports.THEME_BACKUP_CREATED = THEME_BACKUP_CREATED;
|
|
828
|
+
exports.THEME_BACKUP_DELETED = THEME_BACKUP_DELETED;
|
|
829
|
+
exports.THEME_BACKUP_UPDATED = THEME_BACKUP_UPDATED;
|
|
830
|
+
exports.TYPING_INDICATOR = TYPING_INDICATOR;
|
|
831
|
+
exports.getLogger = getLogger;
|
|
832
|
+
exports.setGlobalLogLevel = setGlobalLogLevel;
|
|
833
|
+
//# sourceMappingURL=index.cjs.map
|
|
834
|
+
//# sourceMappingURL=index.cjs.map
|