summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-07-15 19:17:57 +0200
committerRaindropsSys <contact@minteck.org>2023-07-15 19:17:57 +0200
commit70fc2f42251e2259c56728d033164682f85135bc (patch)
tree7c48ac0739a0a5f6dfd821f8b427370523c56984
parentd9156eb4cfe53991a2e866e6281342417dd1c772 (diff)
downloadsignal.js-70fc2f42251e2259c56728d033164682f85135bc.tar.gz
signal.js-70fc2f42251e2259c56728d033164682f85135bc.tar.bz2
signal.js-70fc2f42251e2259c56728d033164682f85135bc.zip
Updated 24 files and added 16 files (automated)
-rw-r--r--ROADMAP.md16
-rw-r--r--classes/CLIDispatcher.ts43
-rw-r--r--classes/Client.ts121
-rw-r--r--classes/Device.ts54
-rw-r--r--classes/Identity.ts49
-rw-r--r--classes/StickerPack.ts18
-rw-r--r--classes/User.ts3
-rw-r--r--classes/UserProfile.ts69
-rw-r--r--dist/classes/CLIDispatcher.js42
-rw-r--r--dist/classes/CLIDispatcher.js.map2
-rw-r--r--dist/classes/Client.d.ts34
-rw-r--r--dist/classes/Client.js89
-rw-r--r--dist/classes/Client.js.map2
-rw-r--r--dist/classes/Device.d.ts33
-rw-r--r--dist/classes/Device.js31
-rw-r--r--dist/classes/Device.js.map1
-rw-r--r--dist/classes/Identity.d.ts34
-rw-r--r--dist/classes/Identity.js22
-rw-r--r--dist/classes/Identity.js.map1
-rw-r--r--dist/classes/StickerPack.d.ts8
-rw-r--r--dist/classes/StickerPack.js14
-rw-r--r--dist/classes/StickerPack.js.map2
-rw-r--r--dist/classes/User.js4
-rw-r--r--dist/classes/User.js.map2
-rw-r--r--dist/classes/UserProfile.d.ts46
-rw-r--r--dist/classes/UserProfile.js31
-rw-r--r--dist/classes/UserProfile.js.map1
-rw-r--r--dist/enums/UserDataType.d.ts6
-rw-r--r--dist/enums/UserDataType.js4
-rw-r--r--dist/enums/UserDataType.js.map2
-rw-r--r--dist/index.d.ts4
-rw-r--r--dist/index.js10
-rw-r--r--dist/index.js.map2
-rw-r--r--dist/types/IUserProfileStatus.d.ts5
-rw-r--r--dist/types/IUserProfileStatus.js3
-rw-r--r--dist/types/IUserProfileStatus.js.map1
-rw-r--r--enums/UserDataType.ts7
-rw-r--r--index.ts4
-rw-r--r--package.json2
-rw-r--r--types/IUserProfileStatus.ts6
40 files changed, 772 insertions, 56 deletions
diff --git a/ROADMAP.md b/ROADMAP.md
index 8ab0658..aa68868 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -43,11 +43,11 @@
* [ ] Status (emoji + text)
* [ ] Sticker packs
* [ ] Configuration
- * [ ] Adding/removing linked devices
-* [ ] Listings
- * [ ] Known contacts
- * [ ] Linked devices
- * [ ] Groups
- * [ ] Known identities
- * [ ] Check if a phone number is on Signal
- * [ ] Sticker packs \ No newline at end of file
+ * [x] <s>Adding/removing linked devices</s>
+* [x] <s>Listings</s>
+ * [x] <s>Known contacts</s>
+ * [x] <s>Linked devices</s>
+ * [x] <s>Groups</s>
+ * [x] <s>Known identities</s>
+ * [x] <s>Check if a phone number is on Signal</s>
+ * [x] <s>Sticker packs</s> \ No newline at end of file
diff --git a/classes/CLIDispatcher.ts b/classes/CLIDispatcher.ts
index 50ba9e1..8e214ea 100644
--- a/classes/CLIDispatcher.ts
+++ b/classes/CLIDispatcher.ts
@@ -26,17 +26,42 @@ export class CLIDispatcher {
id
}
- let callback: (raw) => void = (raw): void => {
- if (raw.toString().trim() === "") return;
- let data = JSON.parse(raw.toString());
+ let lastData;
- if (data.error) {
- rej(new SignalAPIError(data.error.message ?? null, data.error.code ?? null));
- }
+ let callback: (raw) => void = (chunk): void => {
+ if (chunk.toString().trim() === "") return;
+
+ for (let line of chunk.toString().trim().replaceAll("\r\n").split("\n")) {
+ try {
+ JSON.parse(line);
+ lastData = null;
+ } catch (e) {
+ if (lastData) {
+ line = lastData + line;
+
+ try {
+ JSON.parse(line);
+ lastData = null;
+ } catch (e) {
+ lastData = line;
+ }
+ } else {
+ lastData = line;
+ }
+ }
+
+ if (!lastData) {
+ let data = JSON.parse(line);
+
+ if (data.error) {
+ rej(new SignalAPIError(data.error.message ?? null, data.error.code ?? null));
+ }
- if (data.id === id) {
- res(data);
- proc.stdout.removeListener("data", callback);
+ if (data.id === id) {
+ res(data);
+ proc.stdout.removeListener("data", callback);
+ }
+ }
}
}
diff --git a/classes/Client.ts b/classes/Client.ts
index 3fc9cf4..6d6720b 100644
--- a/classes/Client.ts
+++ b/classes/Client.ts
@@ -19,6 +19,11 @@ import {GroupDeleteMessage} from "./GroupDeleteMessage";
import {DMDeleteMessage} from "./DMDeleteMessage";
import {Group} from "./Group";
import {CLIDispatcher} from "./CLIDispatcher";
+import {Device} from "./Device";
+import {UserProfile} from "./UserProfile";
+import {Identity} from "./Identity";
+import {StickerPack} from "./StickerPack";
+import {Sticker} from "./Sticker";
export declare interface Client {
/**
@@ -123,6 +128,8 @@ export class Client extends EventEmitter {
parameters.push("--account", config.account);
parameters.push("jsonRpc");
+ let lastData;
+
this.process = spawn(command, parameters, config.system?.spawn ?? {
stdio: "pipe",
windowsHide: true
@@ -131,10 +138,32 @@ export class Client extends EventEmitter {
this.process.stdout.on('data', (chunk) => {
if (chunk.toString().trim().length === 0) return;
- if (JSON.parse(chunk.toString()).params) {
- let data: ICLIEvent = JSON.parse(chunk.toString());
- if (config.logEvents) console.log(data);
- CLIEvent.fromEvent(this, data);
+ for (let line of chunk.toString().trim().replaceAll("\r\n").split("\n")) {
+ try {
+ JSON.parse(line);
+ lastData = null;
+ } catch (e) {
+ if (lastData) {
+ line = lastData + line;
+
+ try {
+ JSON.parse(line);
+ lastData = null;
+ } catch (e) {
+ lastData = line;
+ }
+ } else {
+ lastData = line;
+ }
+ }
+
+ if (!lastData) {
+ if (JSON.parse(line).params) {
+ let data: ICLIEvent = JSON.parse(line);
+ if (config.logEvents) console.log(data);
+ CLIEvent.fromEvent(this, data);
+ }
+ }
}
});
@@ -168,4 +197,88 @@ export class Client extends EventEmitter {
return new Group(data?.result?.groupId, this);
}
+
+ /**
+ * Check if a number is a Signal user
+ * @param number - The number to check
+ */
+ public async isNumberOnSignal(number: string): Promise<boolean> {
+ let data = await CLIDispatcher.dispatch("getUserStatus", {
+ recipient: number
+ }, this.process);
+
+ return data?.result[0]?.isRegistered;
+ }
+
+ /**
+ * Get a list of {@link Group}s the client is part of
+ */
+ public async getGroups(): Promise<Group[]> {
+ return (await CLIDispatcher.dispatch(
+ "listGroups",
+ {},
+ this.process
+ ))['result'].map(i => new Group(i.id, this));
+ }
+
+ /**
+ * Get a list of {@link Device}s associated with the client
+ */
+ public async getDevices(): Promise<Device[]> {
+ return (await CLIDispatcher.dispatch(
+ "listDevices",
+ {},
+ this.process
+ ))['result'].map(i => new Device(i, this));
+ }
+
+ /**
+ * Associate a new device with this Signal account
+ * @param uri - The URI corresponding to the QR code on the device
+ */
+ public async addDevice(uri: string): Promise<Device> {
+ return new Device((await CLIDispatcher.dispatch(
+ "addDevice",
+ {
+ uri: uri
+ },
+ this.process
+ ))['result'][0], this);
+ }
+
+ /**
+ * Get a list of {@link UserProfile}s the client knows about
+ */
+ public async getContacts(): Promise<UserProfile[]> {
+ return (await CLIDispatcher.dispatch(
+ "listContacts",
+ {},
+ this.process
+ ))['result'].map(i => new UserProfile(i, this));
+ }
+
+ /**
+ * Get a list of {@link Identity} the client knows about
+ */
+ public async getIdentities(): Promise<Identity[]> {
+ return (await CLIDispatcher.dispatch(
+ "listIdentities",
+ {},
+ this.process
+ ))['result'].filter(i => i.number && i.number.trim() !== "").map(i => new Identity(i, this));
+ }
+
+ /**
+ * Get a list of {@link StickerPack}s the client has access to
+ */
+ public async getStickerPacks(): Promise<StickerPack[]> {
+ let list = (await CLIDispatcher.dispatch(
+ "listStickerPacks",
+ {},
+ this.process
+ ))['result'];
+
+ this.stickerPacks['list'] = list;
+ return list.map(i => new StickerPack(i, this));
+ }
} \ No newline at end of file
diff --git a/classes/Device.ts b/classes/Device.ts
new file mode 100644
index 0000000..cf3e30a
--- /dev/null
+++ b/classes/Device.ts
@@ -0,0 +1,54 @@
+import {Client} from "./Client";
+import {CLIDispatcher} from "./CLIDispatcher";
+
+/**
+ * A device associated with the client's Signal account
+ */
+export class Device {
+ /**
+ * Device ID
+ */
+ public id: number;
+
+ /**
+ * Name of the device, if applicable
+ */
+ public name?: string;
+
+ /**
+ * {@link Date} the device was created (first seen) at
+ */
+ public createdAt: Date;
+
+ /**
+ * {@link Date} the device was last seen at
+ */
+ public lastSeenAt: Date;
+ private client: Client;
+
+ /**
+ * @internal
+ * @param data - Data to reconstruct the device
+ * @param client
+ */
+ constructor(data: any, client: Client) {
+ this.id = data.id;
+ this.name = data.name;
+ this.createdAt = new Date(data.createdTimestamp);
+ this.lastSeenAt = new Date(data.lastSeenTimestamp);
+ this.client = client;
+ }
+
+ /**
+ * Remove this device from the Signal account
+ */
+ public async remove() {
+ await CLIDispatcher.dispatch(
+ "removeDevice",
+ {
+ deviceId: this.id
+ },
+ this.client.process
+ );
+ }
+} \ No newline at end of file
diff --git a/classes/Identity.ts b/classes/Identity.ts
new file mode 100644
index 0000000..7391ad5
--- /dev/null
+++ b/classes/Identity.ts
@@ -0,0 +1,49 @@
+import {User} from "./User";
+import {Client} from "./Client";
+import {UserDataType} from "../enums/UserDataType";
+
+export class Identity {
+ /**
+ * {@link User} this identity corresponds to
+ */
+ public user: User;
+
+ /**
+ * Fingerprint of the key used by this identity
+ */
+ public fingerprint: string;
+
+ /**
+ * Safety number for this identity
+ */
+ public safetyNumber: string;
+
+ /**
+ * Version of the safety number that can be converted to a QR code
+ */
+ public safetyNumberScannable: string;
+
+ /**
+ * Whether the identity is trusted (verified) or not
+ */
+ public trusted: boolean;
+
+ /**
+ * {@link Date} at which the identity was first seen
+ */
+ public addedAt: Date;
+
+ /**
+ * @internal
+ * @param data - The data used to construct the identity
+ * @param client
+ */
+ constructor(data: any, client: Client) {
+ this.user = new User(data, UserDataType.ProfileOrIdentity, client);
+ this.fingerprint = data.fingerprint;
+ this.safetyNumber = data.safetyNumber;
+ this.safetyNumberScannable = data.scannableSafetyNumber;
+ this.trusted = data.trustLevel === "TRUSTED_VERIFIED";
+ this.addedAt = new Date(data.addedTimestamp);
+ }
+} \ No newline at end of file
diff --git a/classes/StickerPack.ts b/classes/StickerPack.ts
index e250bc0..e1079e4 100644
--- a/classes/StickerPack.ts
+++ b/classes/StickerPack.ts
@@ -37,12 +37,23 @@ export class StickerPack {
public items: Sticker[];
/**
- * @param id - The sticker pack's ID
+ * Whether the sticker pack is installed or not
+ */
+ public installed?: boolean;
+
+ /**
+ * @param data - The sticker pack's ID or data
* @param client
* @internal
*/
- constructor(id: string, client: Client) {
- let cacheData = client.stickerPacks['list'].filter(i => i.packId === id)[0];
+ constructor(data: string|any, client: Client) {
+ let cacheData;
+
+ if (typeof data === "string") {
+ cacheData = client.stickerPacks['list'].filter(i => i.packId === data)[0];
+ } else {
+ cacheData = data;
+ }
this.id = cacheData.packId;
this.title = cacheData.title;
@@ -52,5 +63,6 @@ export class StickerPack {
this.items = cacheData.stickers.map(i => {
return new Sticker(StickerSource.Pack, i, client, this);
});
+ if (typeof cacheData.installed === "boolean") this.installed = cacheData.installed;
}
} \ No newline at end of file
diff --git a/classes/User.ts b/classes/User.ts
index a94e0d4..1898fe9 100644
--- a/classes/User.ts
+++ b/classes/User.ts
@@ -48,9 +48,10 @@ export class User {
} else if (dataType === UserDataType.Reaction) {
if (data.targetAuthorNumber && typeof data.targetAuthorNumber === "string") this.number = data.targetAuthorNumber;
if (data.targetAuthorUuid && typeof data.targetAuthorUuid === "string") this.uuid = data.targetAuthorUuid;
- } else if (dataType === UserDataType.MentionOrGroup) {
+ } else if (dataType === UserDataType.MentionOrGroup || dataType === UserDataType.ProfileOrIdentity) {
if (data.number && typeof data.number === "string") this.number = data.number;
if (data.uuid && typeof data.uuid === "string") this.uuid = data.uuid;
+ if (data.name && typeof data.name === "string") this.nickName = data.name;
} else if (dataType === UserDataType.Number) {
if (data && typeof data === "string") this.number = data;
}
diff --git a/classes/UserProfile.ts b/classes/UserProfile.ts
new file mode 100644
index 0000000..5e84ccb
--- /dev/null
+++ b/classes/UserProfile.ts
@@ -0,0 +1,69 @@
+import {User} from "./User";
+import {IUserProfileStatus} from "../types/IUserProfileStatus";
+import {Client} from "./Client";
+import {UserDataType} from "../enums/UserDataType";
+import {Emoji} from "./Emoji";
+
+/**
+ * A user profile with additional data
+ */
+export class UserProfile {
+ /**
+ * {@link User} this profile is associated with
+ */
+ public user: User;
+
+ /**
+ * The Signal user name for this user
+ */
+ public userName?: string;
+
+ /**
+ * Whether this user is blocked or not
+ */
+ public blocked: boolean;
+
+ /**
+ * {@link Date} the profile was updated for the last time
+ */
+ public lastUpdatedAt: Date;
+
+ /**
+ * User's first name
+ */
+ public firstName?: string;
+
+ /**
+ * User's last name
+ */
+ public lastName?: string;
+
+ /**
+ * User status message
+ */
+ public status: IUserProfileStatus;
+
+ /**
+ * User MobileCoin address
+ */
+ public mobileCoinAddress?: string;
+
+ /**
+ * @internal
+ * @param data - The data to reconstruct the profile
+ * @param client
+ */
+ constructor(data: any, client: Client) {
+ this.user = new User(data, UserDataType.ProfileOrIdentity, client);
+ this.userName = data.username;
+ this.blocked = data.isBlocked;
+ this.lastUpdatedAt = new Date(data.profile.lastUpdateTimestamp);
+ this.firstName = data.givenName && data.givenName.trim() !== "" ? data.givenName : null;
+ this.lastName = data.lastName && data.lastName.trim() !== "" ? data.lastName : null;
+ this.status = {
+ text: data.profile.about && data.profile.about.trim() !== "" ? data.profile.about : null,
+ emoji: data.profile.aboutEmoji && data.profile.aboutEmoji.trim() !== "" ? new Emoji(data.profile.aboutEmoji) : null
+ }
+ this.mobileCoinAddress = data.mobileCoinAddress;
+ }
+} \ No newline at end of file
diff --git a/dist/classes/CLIDispatcher.js b/dist/classes/CLIDispatcher.js
index ae8a320..ef8aa6e 100644
--- a/dist/classes/CLIDispatcher.js
+++ b/dist/classes/CLIDispatcher.js
@@ -24,16 +24,40 @@ class CLIDispatcher {
params,
id
};
- let callback = (raw) => {
- if (raw.toString().trim() === "")
+ let lastData;
+ let callback = (chunk) => {
+ if (chunk.toString().trim() === "")
return;
- let data = JSON.parse(raw.toString());
- if (data.error) {
- rej(new SignalAPIError_1.SignalAPIError(data.error.message ?? null, data.error.code ?? null));
- }
- if (data.id === id) {
- res(data);
- proc.stdout.removeListener("data", callback);
+ for (let line of chunk.toString().trim().replaceAll("\r\n").split("\n")) {
+ try {
+ JSON.parse(line);
+ lastData = null;
+ }
+ catch (e) {
+ if (lastData) {
+ line = lastData + line;
+ try {
+ JSON.parse(line);
+ lastData = null;
+ }
+ catch (e) {
+ lastData = line;
+ }
+ }
+ else {
+ lastData = line;
+ }
+ }
+ if (!lastData) {
+ let data = JSON.parse(line);
+ if (data.error) {
+ rej(new SignalAPIError_1.SignalAPIError(data.error.message ?? null, data.error.code ?? null));
+ }
+ if (data.id === id) {
+ res(data);
+ proc.stdout.removeListener("data", callback);
+ }
+ }
}
};
proc.stdout.addListener('data', callback);
diff --git a/dist/classes/CLIDispatcher.js.map b/dist/classes/CLIDispatcher.js.map
index 4409a2b..533da7e 100644
--- a/dist/classes/CLIDispatcher.js.map
+++ b/dist/classes/CLIDispatcher.js.map
@@ -1 +1 @@
-{"version":3,"file":"CLIDispatcher.js","sourceRoot":"","sources":["../../classes/CLIDispatcher.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAGxC,qDAAgD;AAEhD;;GAEG;AACH,MAAa,aAAa;IACtB;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,MAAW,EAAE,IAAkB;QAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,EAAE,GAAS,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAI,OAAO,GAAgB;gBACvB,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,MAAM;gBACN,EAAE;aACL,CAAA;YAED,IAAI,QAAQ,GAAkB,CAAC,GAAG,EAAQ,EAAE;gBACxC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;oBAAE,OAAO;gBACzC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEtC,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,GAAG,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;iBAChF;gBAED,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;oBAChB,GAAG,CAAC,IAAI,CAAC,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBAChD;YACL,CAAC,CAAA;YAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AArCD,sCAqCC"} \ No newline at end of file
+{"version":3,"file":"CLIDispatcher.js","sourceRoot":"","sources":["../../classes/CLIDispatcher.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAGxC,qDAAgD;AAEhD;;GAEG;AACH,MAAa,aAAa;IACtB;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,MAAW,EAAE,IAAkB;QAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,EAAE,GAAS,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAI,OAAO,GAAgB;gBACvB,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,MAAM;gBACN,EAAE;aACL,CAAA;YAED,IAAI,QAAQ,CAAC;YAEb,IAAI,QAAQ,GAAkB,CAAC,KAAK,EAAQ,EAAE;gBAC1C,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;oBAAE,OAAO;gBAE3C,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACrE,IAAI;wBACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACjB,QAAQ,GAAG,IAAI,CAAC;qBACnB;oBAAC,OAAO,CAAC,EAAE;wBACR,IAAI,QAAQ,EAAE;4BACV,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;4BAEvB,IAAI;gCACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCACjB,QAAQ,GAAG,IAAI,CAAC;6BACnB;4BAAC,OAAO,CAAC,EAAE;gCACR,QAAQ,GAAG,IAAI,CAAC;6BACnB;yBACJ;6BAAM;4BACH,QAAQ,GAAG,IAAI,CAAC;yBACnB;qBACJ;oBAED,IAAI,CAAC,QAAQ,EAAE;wBACX,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAE5B,IAAI,IAAI,CAAC,KAAK,EAAE;4BACZ,GAAG,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;yBAChF;wBAED,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;4BAChB,GAAG,CAAC,IAAI,CAAC,CAAC;4BACV,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;yBAChD;qBACJ;iBACJ;YACL,CAAC,CAAA;YAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA9DD,sCA8DC"} \ No newline at end of file
diff --git a/dist/classes/Client.d.ts b/dist/classes/Client.d.ts
index 238b697..2da4a81 100644
--- a/dist/classes/Client.d.ts
+++ b/dist/classes/Client.d.ts
@@ -18,6 +18,10 @@ import { GroupEditMessage } from "./GroupEditMessage";
import { GroupDeleteMessage } from "./GroupDeleteMessage";
import { DMDeleteMessage } from "./DMDeleteMessage";
import { Group } from "./Group";
+import { Device } from "./Device";
+import { UserProfile } from "./UserProfile";
+import { Identity } from "./Identity";
+import { StickerPack } from "./StickerPack";
export declare interface Client {
/**
* Emitted when a Signal event, even if unsupported, is received by signal-cli
@@ -101,4 +105,34 @@ export declare class Client extends EventEmitter {
* @param url - The URL of the invite link to use
*/
joinGroup(url: string): Promise<Group>;
+ /**
+ * Check if a number is a Signal user
+ * @param number - The number to check
+ */
+ isNumberOnSignal(number: string): Promise<boolean>;
+ /**
+ * Get a list of {@link Group}s the client is part of
+ */
+ getGroups(): Promise<Group[]>;
+ /**
+ * Get a list of {@link Device}s associated with the client
+ */
+ getDevices(): Promise<Device[]>;
+ /**
+ * Associate a new device with this Signal account
+ * @param uri - The URI corresponding to the QR code on the device
+ */
+ addDevice(uri: string): Promise<Device>;
+ /**
+ * Get a list of {@link UserProfile}s the client knows about
+ */
+ getContacts(): Promise<UserProfile[]>;
+ /**
+ * Get a list of {@link Identity} the client knows about
+ */
+ getIdentities(): Promise<Identity[]>;
+ /**
+ * Get a list of {@link StickerPack}s the client has access to
+ */
+ getStickerPacks(): Promise<StickerPack[]>;
}
diff --git a/dist/classes/Client.js b/dist/classes/Client.js
index f22a622..0d53006 100644
--- a/dist/classes/Client.js
+++ b/dist/classes/Client.js
@@ -7,6 +7,10 @@ const SignalCLIError_1 = require("./SignalCLIError");
const events_1 = require("events");
const Group_1 = require("./Group");
const CLIDispatcher_1 = require("./CLIDispatcher");
+const Device_1 = require("./Device");
+const UserProfile_1 = require("./UserProfile");
+const Identity_1 = require("./Identity");
+const StickerPack_1 = require("./StickerPack");
/**
* The base Signal.js client interface
*/
@@ -43,6 +47,7 @@ class Client extends events_1.EventEmitter {
this.verbose = true;
parameters.push("--account", config.account);
parameters.push("jsonRpc");
+ let lastData;
this.process = (0, child_process_1.spawn)(command, parameters, config.system?.spawn ?? {
stdio: "pipe",
windowsHide: true
@@ -50,11 +55,34 @@ class Client extends events_1.EventEmitter {
this.process.stdout.on('data', (chunk) => {
if (chunk.toString().trim().length === 0)
return;
- if (JSON.parse(chunk.toString()).params) {
- let data = JSON.parse(chunk.toString());
- if (config.logEvents)
- console.log(data);
- CLIEvent_1.CLIEvent.fromEvent(this, data);
+ for (let line of chunk.toString().trim().replaceAll("\r\n").split("\n")) {
+ try {
+ JSON.parse(line);
+ lastData = null;
+ }
+ catch (e) {
+ if (lastData) {
+ line = lastData + line;
+ try {
+ JSON.parse(line);
+ lastData = null;
+ }
+ catch (e) {
+ lastData = line;
+ }
+ }
+ else {
+ lastData = line;
+ }
+ }
+ if (!lastData) {
+ if (JSON.parse(line).params) {
+ let data = JSON.parse(line);
+ if (config.logEvents)
+ console.log(data);
+ CLIEvent_1.CLIEvent.fromEvent(this, data);
+ }
+ }
}
});
this.process.stderr.on('data', (chunk) => {
@@ -85,6 +113,57 @@ class Client extends events_1.EventEmitter {
}, this.process);
return new Group_1.Group(data?.result?.groupId, this);
}
+ /**
+ * Check if a number is a Signal user
+ * @param number - The number to check
+ */
+ async isNumberOnSignal(number) {
+ let data = await CLIDispatcher_1.CLIDispatcher.dispatch("getUserStatus", {
+ recipient: number
+ }, this.process);
+ return data?.result[0]?.isRegistered;
+ }
+ /**
+ * Get a list of {@link Group}s the client is part of
+ */
+ async getGroups() {
+ return (await CLIDispatcher_1.CLIDispatcher.dispatch("listGroups", {}, this.process))['result'].map(i => new Group_1.Group(i.id, this));
+ }
+ /**
+ * Get a list of {@link Device}s associated with the client
+ */
+ async getDevices() {
+ return (await CLIDispatcher_1.CLIDispatcher.dispatch("listDevices", {}, this.process))['result'].map(i => new Device_1.Device(i, this));
+ }
+ /**
+ * Associate a new device with this Signal account
+ * @param uri - The URI corresponding to the QR code on the device
+ */
+ async addDevice(uri) {
+ return new Device_1.Device((await CLIDispatcher_1.CLIDispatcher.dispatch("addDevice", {
+ uri: uri
+ }, this.process))['result'][0], this);
+ }
+ /**
+ * Get a list of {@link UserProfile}s the client knows about
+ */
+ async getContacts() {
+ return (await CLIDispatcher_1.CLIDispatcher.dispatch("listContacts", {}, this.process))['result'].map(i => new UserProfile_1.UserProfile(i, this));
+ }
+ /**
+ * Get a list of {@link Identity} the client knows about
+ */
+ async getIdentities() {
+ return (await CLIDispatcher_1.CLIDispatcher.dispatch("listIdentities", {}, this.process))['result'].filter(i => i.number && i.number.trim() !== "").map(i => new Identity_1.Identity(i, this));
+ }
+ /**
+ * Get a list of {@link StickerPack}s the client has access to
+ */
+ async getStickerPacks() {
+ let list = (await CLIDispatcher_1.CLIDispatcher.dispatch("listStickerPacks", {}, this.process))['result'];
+ this.stickerPacks['list'] = list;
+ return list.map(i => new StickerPack_1.StickerPack(i, this));
+ }
}
exports.Client = Client;
//# sourceMappingURL=Client.js.map \ No newline at end of file
diff --git a/dist/classes/Client.js.map b/dist/classes/Client.js.map
index 05c0959..f3326fc 100644
--- a/dist/classes/Client.js.map
+++ b/dist/classes/Client.js.map
@@ -1 +1 @@
-{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../classes/Client.ts"],"names":[],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../classes/Client.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/dist/classes/Device.d.ts b/dist/classes/Device.d.ts
new file mode 100644
index 0000000..97ea365
--- /dev/null
+++ b/dist/classes/Device.d.ts
@@ -0,0 +1,33 @@
+import { Client } from "./Client";
+/**
+ * A device associated with the client's Signal account
+ */
+export declare class Device {
+ /**
+ * Device ID
+ */
+ id: number;
+ /**
+ * Name of the device, if applicable
+ */
+ name?: string;
+ /**
+ * {@link Date} the device was created (first seen) at
+ */
+ createdAt: Date;
+ /**
+ * {@link Date} the device was last seen at
+ */
+ lastSeenAt: Date;
+ private client;
+ /**
+ * @internal
+ * @param data - Data to reconstruct the device
+ * @param client
+ */
+ constructor(data: any, client: Client);
+ /**
+ * Remove this device from the Signal account
+ */
+ remove(): Promise<void>;
+}
diff --git a/dist/classes/Device.js b/dist/classes/Device.js
new file mode 100644
index 0000000..e3ebd20
--- /dev/null
+++ b/dist/classes/Device.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Device = void 0;
+const CLIDispatcher_1 = require("./CLIDispatcher");
+/**
+ * A device associated with the client's Signal account
+ */
+class Device {
+ /**
+ * @internal
+ * @param data - Data to reconstruct the device
+ * @param client
+ */
+ constructor(data, client) {
+ this.id = data.id;
+ this.name = data.name;
+ this.createdAt = new Date(data.createdTimestamp);
+ this.lastSeenAt = new Date(data.lastSeenTimestamp);
+ this.client = client;
+ }
+ /**
+ * Remove this device from the Signal account
+ */
+ async remove() {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("removeDevice", {
+ deviceId: this.id
+ }, this.client.process);
+ }
+}
+exports.Device = Device;
+//# sourceMappingURL=Device.js.map \ No newline at end of file
diff --git a/dist/classes/Device.js.map b/dist/classes/Device.js.map
new file mode 100644
index 0000000..3cf4a9d
--- /dev/null
+++ b/dist/classes/Device.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Device.js","sourceRoot":"","sources":["../../classes/Device.ts"],"names":[],"mappings":";;;AACA,mDAA8C;AAE9C;;GAEG;AACH,MAAa,MAAM;IAsBf;;;;OAIG;IACH,YAAY,IAAS,EAAE,MAAc;QACjC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACf,MAAM,6BAAa,CAAC,QAAQ,CACxB,cAAc,EACd;YACI,QAAQ,EAAE,IAAI,CAAC,EAAE;SACpB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AA/CD,wBA+CC"} \ No newline at end of file
diff --git a/dist/classes/Identity.d.ts b/dist/classes/Identity.d.ts
new file mode 100644
index 0000000..08cc3ee
--- /dev/null
+++ b/dist/classes/Identity.d.ts
@@ -0,0 +1,34 @@
+import { User } from "./User";
+import { Client } from "./Client";
+export declare class Identity {
+ /**
+ * {@link User} this identity corresponds to
+ */
+ user: User;
+ /**
+ * Fingerprint of the key used by this identity
+ */
+ fingerprint: string;
+ /**
+ * Safety number for this identity
+ */
+ safetyNumber: string;
+ /**
+ * Version of the safety number that can be converted to a QR code
+ */
+ safetyNumberScannable: string;
+ /**
+ * Whether the identity is trusted (verified) or not
+ */
+ trusted: boolean;
+ /**
+ * {@link Date} at which the identity was first seen
+ */
+ addedAt: Date;
+ /**
+ * @internal
+ * @param data - The data used to construct the identity
+ * @param client
+ */
+ constructor(data: any, client: Client);
+}
diff --git a/dist/classes/Identity.js b/dist/classes/Identity.js
new file mode 100644
index 0000000..1a2a740
--- /dev/null
+++ b/dist/classes/Identity.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Identity = void 0;
+const User_1 = require("./User");
+const UserDataType_1 = require("../enums/UserDataType");
+class Identity {
+ /**
+ * @internal
+ * @param data - The data used to construct the identity
+ * @param client
+ */
+ constructor(data, client) {
+ this.user = new User_1.User(data, UserDataType_1.UserDataType.ProfileOrIdentity, client);
+ this.fingerprint = data.fingerprint;
+ this.safetyNumber = data.safetyNumber;
+ this.safetyNumberScannable = data.scannableSafetyNumber;
+ this.trusted = data.trustLevel === "TRUSTED_VERIFIED";
+ this.addedAt = new Date(data.addedTimestamp);
+ }
+}
+exports.Identity = Identity;
+//# sourceMappingURL=Identity.js.map \ No newline at end of file
diff --git a/dist/classes/Identity.js.map b/dist/classes/Identity.js.map
new file mode 100644
index 0000000..5fcb2f7
--- /dev/null
+++ b/dist/classes/Identity.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Identity.js","sourceRoot":"","sources":["../../classes/Identity.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAE5B,wDAAmD;AAEnD,MAAa,QAAQ;IA+BjB;;;;OAIG;IACH,YAAY,IAAS,EAAE,MAAc;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,EAAE,2BAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,kBAAkB,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACJ;AA5CD,4BA4CC"} \ No newline at end of file
diff --git a/dist/classes/StickerPack.d.ts b/dist/classes/StickerPack.d.ts
index 10af6c4..b9d6aee 100644
--- a/dist/classes/StickerPack.d.ts
+++ b/dist/classes/StickerPack.d.ts
@@ -29,9 +29,13 @@ export declare class StickerPack {
*/
items: Sticker[];
/**
- * @param id - The sticker pack's ID
+ * Whether the sticker pack is installed or not
+ */
+ installed?: boolean;
+ /**
+ * @param data - The sticker pack's ID or data
* @param client
* @internal
*/
- constructor(id: string, client: Client);
+ constructor(data: string | any, client: Client);
}
diff --git a/dist/classes/StickerPack.js b/dist/classes/StickerPack.js
index fff8d46..15573f8 100644
--- a/dist/classes/StickerPack.js
+++ b/dist/classes/StickerPack.js
@@ -8,12 +8,18 @@ const StickerSource_1 = require("../enums/StickerSource");
*/
class StickerPack {
/**
- * @param id - The sticker pack's ID
+ * @param data - The sticker pack's ID or data
* @param client
* @internal
*/
- constructor(id, client) {
- let cacheData = client.stickerPacks['list'].filter(i => i.packId === id)[0];
+ constructor(data, client) {
+ let cacheData;
+ if (typeof data === "string") {
+ cacheData = client.stickerPacks['list'].filter(i => i.packId === data)[0];
+ }
+ else {
+ cacheData = data;
+ }
this.id = cacheData.packId;
this.title = cacheData.title;
this.author = cacheData.author;
@@ -22,6 +28,8 @@ class StickerPack {
this.items = cacheData.stickers.map(i => {
return new Sticker_1.Sticker(StickerSource_1.StickerSource.Pack, i, client, this);
});
+ if (typeof cacheData.installed === "boolean")
+ this.installed = cacheData.installed;
}
}
exports.StickerPack = StickerPack;
diff --git a/dist/classes/StickerPack.js.map b/dist/classes/StickerPack.js.map
index ac6df91..63c4c11 100644
--- a/dist/classes/StickerPack.js.map
+++ b/dist/classes/StickerPack.js.map
@@ -1 +1 @@
-{"version":3,"file":"StickerPack.js","sourceRoot":"","sources":["../../classes/StickerPack.ts"],"names":[],"mappings":";;;AACA,uCAAkC;AAClC,0DAAqD;AAErD;;GAEG;AACH,MAAa,WAAW;IA+BpB;;;;OAIG;IACH,YAAY,EAAU,EAAE,MAAc;QAClC,IAAI,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAO,CAAC,6BAAa,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,IAAI,iBAAO,CAAC,6BAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhDD,kCAgDC"} \ No newline at end of file
+{"version":3,"file":"StickerPack.js","sourceRoot":"","sources":["../../classes/StickerPack.ts"],"names":[],"mappings":";;;AACA,uCAAkC;AAClC,0DAAqD;AAErD;;GAEG;AACH,MAAa,WAAW;IAoCpB;;;;OAIG;IACH,YAAY,IAAgB,EAAE,MAAc;QACxC,IAAI,SAAS,CAAC;QAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7E;aAAM;YACH,SAAS,GAAG,IAAI,CAAC;SACpB;QAED,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAO,CAAC,6BAAa,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,IAAI,iBAAO,CAAC,6BAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACvF,CAAC;CACJ;AA5DD,kCA4DC"} \ No newline at end of file
diff --git a/dist/classes/User.js b/dist/classes/User.js
index 913b491..c99b29a 100644
--- a/dist/classes/User.js
+++ b/dist/classes/User.js
@@ -54,11 +54,13 @@ class User {
if (data.targetAuthorUuid && typeof data.targetAuthorUuid === "string")
this.uuid = data.targetAuthorUuid;
}
- else if (dataType === UserDataType_1.UserDataType.MentionOrGroup) {
+ else if (dataType === UserDataType_1.UserDataType.MentionOrGroup || dataType === UserDataType_1.UserDataType.ProfileOrIdentity) {
if (data.number && typeof data.number === "string")
this.number = data.number;
if (data.uuid && typeof data.uuid === "string")
this.uuid = data.uuid;
+ if (data.name && typeof data.name === "string")
+ this.nickName = data.name;
}
else if (dataType === UserDataType_1.UserDataType.Number) {
if (data && typeof data === "string")
diff --git a/dist/classes/User.js.map b/dist/classes/User.js.map
index 41ed4be..1bfb8ae 100644
--- a/dist/classes/User.js.map
+++ b/dist/classes/User.js.map
@@ -1 +1 @@
-{"version":3,"file":"User.js","sourceRoot":"","sources":["../../classes/User.ts"],"names":[],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"User.js","sourceRoot":"","sources":["../../classes/User.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/dist/classes/UserProfile.d.ts b/dist/classes/UserProfile.d.ts
new file mode 100644
index 0000000..911e6d6
--- /dev/null
+++ b/dist/classes/UserProfile.d.ts
@@ -0,0 +1,46 @@
+import { User } from "./User";
+import { IUserProfileStatus } from "../types/IUserProfileStatus";
+import { Client } from "./Client";
+/**
+ * A user profile with additional data
+ */
+export declare class UserProfile {
+ /**
+ * {@link User} this profile is associated with
+ */
+ user: User;
+ /**
+ * The Signal user name for this user
+ */
+ userName?: string;
+ /**
+ * Whether this user is blocked or not
+ */
+ blocked: boolean;
+ /**
+ * {@link Date} the profile was updated for the last time
+ */
+ lastUpdatedAt: Date;
+ /**
+ * User's first name
+ */
+ firstName?: string;
+ /**
+ * User's last name
+ */
+ lastName?: string;
+ /**
+ * User status message
+ */
+ status: IUserProfileStatus;
+ /**
+ * User MobileCoin address
+ */
+ mobileCoinAddress?: string;
+ /**
+ * @internal
+ * @param data - The data to reconstruct the profile
+ * @param client
+ */
+ constructor(data: any, client: Client);
+}
diff --git a/dist/classes/UserProfile.js b/dist/classes/UserProfile.js
new file mode 100644
index 0000000..b1011e5
--- /dev/null
+++ b/dist/classes/UserProfile.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.UserProfile = void 0;
+const User_1 = require("./User");
+const UserDataType_1 = require("../enums/UserDataType");
+const Emoji_1 = require("./Emoji");
+/**
+ * A user profile with additional data
+ */
+class UserProfile {
+ /**
+ * @internal
+ * @param data - The data to reconstruct the profile
+ * @param client
+ */
+ constructor(data, client) {
+ this.user = new User_1.User(data, UserDataType_1.UserDataType.ProfileOrIdentity, client);
+ this.userName = data.username;
+ this.blocked = data.isBlocked;
+ this.lastUpdatedAt = new Date(data.profile.lastUpdateTimestamp);
+ this.firstName = data.givenName && data.givenName.trim() !== "" ? data.givenName : null;
+ this.lastName = data.lastName && data.lastName.trim() !== "" ? data.lastName : null;
+ this.status = {
+ text: data.profile.about && data.profile.about.trim() !== "" ? data.profile.about : null,
+ emoji: data.profile.aboutEmoji && data.profile.aboutEmoji.trim() !== "" ? new Emoji_1.Emoji(data.profile.aboutEmoji) : null
+ };
+ this.mobileCoinAddress = data.mobileCoinAddress;
+ }
+}
+exports.UserProfile = UserProfile;
+//# sourceMappingURL=UserProfile.js.map \ No newline at end of file
diff --git a/dist/classes/UserProfile.js.map b/dist/classes/UserProfile.js.map
new file mode 100644
index 0000000..7c5613f
--- /dev/null
+++ b/dist/classes/UserProfile.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"UserProfile.js","sourceRoot":"","sources":["../../classes/UserProfile.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAG5B,wDAAmD;AACnD,mCAA8B;AAE9B;;GAEG;AACH,MAAa,WAAW;IAyCpB;;;;OAIG;IACH,YAAY,IAAS,EAAE,MAAc;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,EAAE,2BAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACxF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,CAAC,MAAM,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACxF,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,aAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;SACtH,CAAA;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACpD,CAAC;CACJ;AA3DD,kCA2DC"} \ No newline at end of file
diff --git a/dist/enums/UserDataType.d.ts b/dist/enums/UserDataType.d.ts
index 6f8bdfc..6849abd 100644
--- a/dist/enums/UserDataType.d.ts
+++ b/dist/enums/UserDataType.d.ts
@@ -21,5 +21,9 @@ export declare enum UserDataType {
/**
* From an arbitrary phone number
*/
- Number = 4
+ Number = 4,
+ /**
+ * From a user's profile or identity
+ */
+ ProfileOrIdentity = 5
}
diff --git a/dist/enums/UserDataType.js b/dist/enums/UserDataType.js
index f59e499..96bcaba 100644
--- a/dist/enums/UserDataType.js
+++ b/dist/enums/UserDataType.js
@@ -26,5 +26,9 @@ var UserDataType;
* From an arbitrary phone number
*/
UserDataType[UserDataType["Number"] = 4] = "Number";
+ /**
+ * From a user's profile or identity
+ */
+ UserDataType[UserDataType["ProfileOrIdentity"] = 5] = "ProfileOrIdentity";
})(UserDataType || (exports.UserDataType = UserDataType = {}));
//# sourceMappingURL=UserDataType.js.map \ No newline at end of file
diff --git a/dist/enums/UserDataType.js.map b/dist/enums/UserDataType.js.map
index 4373837..4c6e3e3 100644
--- a/dist/enums/UserDataType.js.map
+++ b/dist/enums/UserDataType.js.map
@@ -1 +1 @@
-{"version":3,"file":"UserDataType.js","sourceRoot":"","sources":["../../enums/UserDataType.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,YAyBX;AAzBD,WAAY,YAAY;IACpB;;OAEG;IACH,uDAAQ,CAAA;IAER;;OAEG;IACH,iDAAK,CAAA;IAEL;;OAEG;IACH,uDAAQ,CAAA;IAER;;OAEG;IACH,mEAAc,CAAA;IAEd;;OAEG;IACH,mDAAM,CAAA;AACV,CAAC,EAzBW,YAAY,4BAAZ,YAAY,QAyBvB"} \ No newline at end of file
+{"version":3,"file":"UserDataType.js","sourceRoot":"","sources":["../../enums/UserDataType.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,YA8BX;AA9BD,WAAY,YAAY;IACpB;;OAEG;IACH,uDAAQ,CAAA;IAER;;OAEG;IACH,iDAAK,CAAA;IAEL;;OAEG;IACH,uDAAQ,CAAA;IAER;;OAEG;IACH,mEAAc,CAAA;IAEd;;OAEG;IACH,mDAAM,CAAA;IAEN;;OAEG;IACH,yEAAiB,CAAA;AACrB,CAAC,EA9BW,YAAY,4BAAZ,YAAY,QA8BvB"} \ No newline at end of file
diff --git a/dist/index.d.ts b/dist/index.d.ts
index c83f905..922f803 100644
--- a/dist/index.d.ts
+++ b/dist/index.d.ts
@@ -15,6 +15,7 @@ export { DMStickerMessage } from "./classes/DMStickerMessage";
export { DMTypingMessage } from "./classes/DMTypingMessage";
export { DataMessage } from "./classes/DataMessage";
export { DeleteMessage } from "./classes/DeleteMessage";
+export { Device } from "./classes/Device";
export { EditMessage } from "./classes/EditMessage";
export { Emoji } from "./classes/Emoji";
export { Group } from "./classes/Group";
@@ -27,6 +28,7 @@ export { GroupPermissions } from "./classes/GroupPermissions";
export { GroupReactionMessage } from "./classes/GroupReactionMessage";
export { GroupStickerMessage } from "./classes/GroupStickerMessage";
export { GroupTypingMessage } from "./classes/GroupTypingMessage";
+export { Identity } from "./classes/Identity";
export { MessageFormatting } from "./classes/MessageFormatting";
export { MessageFormattingRule } from "./classes/MessageFormattingRule";
export { ObjectCache } from "./classes/ObjectCache";
@@ -47,6 +49,7 @@ export { StickerPack } from "./classes/StickerPack";
export { TypingMessage } from "./classes/TypingMessage";
export { User } from "./classes/User";
export { UserMention } from "./classes/UserMention";
+export { UserProfile } from "./classes/UserProfile";
export { IAttachmentBuilderData } from "./types/IAttachmentBuilderData";
export { ICLIEvent } from "./types/ICLIEvent";
export { ICLIRequest } from "./types/ICLIRequest";
@@ -60,6 +63,7 @@ export { IMimeType } from "./types/IMimeType";
export { IReceivedMessageURLPreview } from "./types/IReceivedMessageURLPreview";
export { ISentMessageURLPreview } from "./types/ISentMessageURLPreview";
export { ISystemConfig } from "./types/ISystemConfig";
+export { IUserProfileStatus } from "./types/IUserProfileStatus";
export { IUserResolvable } from "./types/IUserResolvable";
export { ConfigEnvironment } from "./enums/ConfigEnvironment";
export { ConfigTrustLevel } from "./enums/ConfigTrustLevel";
diff --git a/dist/index.js b/dist/index.js
index b371b16..cc9b7fd 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.ConfigEnvironment = exports.UserMention = exports.User = exports.TypingMessage = exports.StickerPack = exports.StickerMessage = exports.Sticker = exports.SignalCLIError = exports.SignalAPIError = exports.SentStickerMessage = exports.SentMessage = exports.SentDataMessage = exports.ReceivedURLPreview = exports.ReceivedMessage = exports.ReactionTarget = exports.ReactionMessage = exports.QuoteMessage = exports.QuoteBuilder = exports.ObjectCache = exports.MessageFormattingRule = exports.MessageFormatting = exports.GroupTypingMessage = exports.GroupStickerMessage = exports.GroupReactionMessage = exports.GroupPermissions = exports.GroupMessage = exports.GroupEditor = exports.GroupEditMessage = exports.GroupDeleteMessage = exports.GroupDataMessage = exports.Group = exports.Emoji = exports.EditMessage = exports.DeleteMessage = exports.DataMessage = exports.DMTypingMessage = exports.DMStickerMessage = exports.DMReactionMessage = exports.DMMessage = exports.DMEditMessage = exports.DMDeleteMessage = exports.DMDataMessage = exports.DM = exports.Client = exports.Channel = exports.CLIEvent = exports.CLIDispatcher = exports.AttachmentSize = exports.AttachmentBuilder = exports.Attachment = void 0;
-exports.UserDataType = exports.TypingMessageAction = exports.StickerSource = exports.MessageReceipt = exports.MessageFormattingStyle = exports.GroupPermissionName = exports.GroupPermissionLevel = exports.GroupLinkStatus = exports.ConfigTrustLevel = void 0;
+exports.User = exports.TypingMessage = exports.StickerPack = exports.StickerMessage = exports.Sticker = exports.SignalCLIError = exports.SignalAPIError = exports.SentStickerMessage = exports.SentMessage = exports.SentDataMessage = exports.ReceivedURLPreview = exports.ReceivedMessage = exports.ReactionTarget = exports.ReactionMessage = exports.QuoteMessage = exports.QuoteBuilder = exports.ObjectCache = exports.MessageFormattingRule = exports.MessageFormatting = exports.Identity = exports.GroupTypingMessage = exports.GroupStickerMessage = exports.GroupReactionMessage = exports.GroupPermissions = exports.GroupMessage = exports.GroupEditor = exports.GroupEditMessage = exports.GroupDeleteMessage = exports.GroupDataMessage = exports.Group = exports.Emoji = exports.EditMessage = exports.Device = exports.DeleteMessage = exports.DataMessage = exports.DMTypingMessage = exports.DMStickerMessage = exports.DMReactionMessage = exports.DMMessage = exports.DMEditMessage = exports.DMDeleteMessage = exports.DMDataMessage = exports.DM = exports.Client = exports.Channel = exports.CLIEvent = exports.CLIDispatcher = exports.AttachmentSize = exports.AttachmentBuilder = exports.Attachment = void 0;
+exports.UserDataType = exports.TypingMessageAction = exports.StickerSource = exports.MessageReceipt = exports.MessageFormattingStyle = exports.GroupPermissionName = exports.GroupPermissionLevel = exports.GroupLinkStatus = exports.ConfigTrustLevel = exports.ConfigEnvironment = exports.UserProfile = exports.UserMention = void 0;
// Classes
var Attachment_1 = require("./classes/Attachment");
Object.defineProperty(exports, "Attachment", { enumerable: true, get: function () { return Attachment_1.Attachment; } });
@@ -37,6 +37,8 @@ var DataMessage_1 = require("./classes/DataMessage");
Object.defineProperty(exports, "DataMessage", { enumerable: true, get: function () { return DataMessage_1.DataMessage; } });
var DeleteMessage_1 = require("./classes/DeleteMessage");
Object.defineProperty(exports, "DeleteMessage", { enumerable: true, get: function () { return DeleteMessage_1.DeleteMessage; } });
+var Device_1 = require("./classes/Device");
+Object.defineProperty(exports, "Device", { enumerable: true, get: function () { return Device_1.Device; } });
var EditMessage_1 = require("./classes/EditMessage");
Object.defineProperty(exports, "EditMessage", { enumerable: true, get: function () { return EditMessage_1.EditMessage; } });
var Emoji_1 = require("./classes/Emoji");
@@ -61,6 +63,8 @@ var GroupStickerMessage_1 = require("./classes/GroupStickerMessage");
Object.defineProperty(exports, "GroupStickerMessage", { enumerable: true, get: function () { return GroupStickerMessage_1.GroupStickerMessage; } });
var GroupTypingMessage_1 = require("./classes/GroupTypingMessage");
Object.defineProperty(exports, "GroupTypingMessage", { enumerable: true, get: function () { return GroupTypingMessage_1.GroupTypingMessage; } });
+var Identity_1 = require("./classes/Identity");
+Object.defineProperty(exports, "Identity", { enumerable: true, get: function () { return Identity_1.Identity; } });
var MessageFormatting_1 = require("./classes/MessageFormatting");
Object.defineProperty(exports, "MessageFormatting", { enumerable: true, get: function () { return MessageFormatting_1.MessageFormatting; } });
var MessageFormattingRule_1 = require("./classes/MessageFormattingRule");
@@ -101,6 +105,8 @@ var User_1 = require("./classes/User");
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
var UserMention_1 = require("./classes/UserMention");
Object.defineProperty(exports, "UserMention", { enumerable: true, get: function () { return UserMention_1.UserMention; } });
+var UserProfile_1 = require("./classes/UserProfile");
+Object.defineProperty(exports, "UserProfile", { enumerable: true, get: function () { return UserProfile_1.UserProfile; } });
// Enums
var ConfigEnvironment_1 = require("./enums/ConfigEnvironment");
Object.defineProperty(exports, "ConfigEnvironment", { enumerable: true, get: function () { return ConfigEnvironment_1.ConfigEnvironment; } });
diff --git a/dist/index.js.map b/dist/index.js.map
index e589964..cbc0b4d 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/dist/types/IUserProfileStatus.d.ts b/dist/types/IUserProfileStatus.d.ts
new file mode 100644
index 0000000..f217123
--- /dev/null
+++ b/dist/types/IUserProfileStatus.d.ts
@@ -0,0 +1,5 @@
+import { Emoji } from "../classes/Emoji";
+export interface IUserProfileStatus {
+ text?: string;
+ emoji?: Emoji;
+}
diff --git a/dist/types/IUserProfileStatus.js b/dist/types/IUserProfileStatus.js
new file mode 100644
index 0000000..5ae4939
--- /dev/null
+++ b/dist/types/IUserProfileStatus.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=IUserProfileStatus.js.map \ No newline at end of file
diff --git a/dist/types/IUserProfileStatus.js.map b/dist/types/IUserProfileStatus.js.map
new file mode 100644
index 0000000..5bff64e
--- /dev/null
+++ b/dist/types/IUserProfileStatus.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"IUserProfileStatus.js","sourceRoot":"","sources":["../../types/IUserProfileStatus.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/enums/UserDataType.ts b/enums/UserDataType.ts
index b2df3c0..d002322 100644
--- a/enums/UserDataType.ts
+++ b/enums/UserDataType.ts
@@ -25,5 +25,10 @@ export enum UserDataType {
/**
* From an arbitrary phone number
*/
- Number
+ Number,
+
+ /**
+ * From a user's profile or identity
+ */
+ ProfileOrIdentity
} \ No newline at end of file
diff --git a/index.ts b/index.ts
index 4965f0e..d9dc0af 100644
--- a/index.ts
+++ b/index.ts
@@ -16,6 +16,7 @@ export {DMStickerMessage} from "./classes/DMStickerMessage";
export {DMTypingMessage} from "./classes/DMTypingMessage";
export {DataMessage} from "./classes/DataMessage";
export {DeleteMessage} from "./classes/DeleteMessage";
+export {Device} from "./classes/Device";
export {EditMessage} from "./classes/EditMessage";
export {Emoji} from "./classes/Emoji";
export {Group} from "./classes/Group";
@@ -28,6 +29,7 @@ export {GroupPermissions} from "./classes/GroupPermissions";
export {GroupReactionMessage} from "./classes/GroupReactionMessage";
export {GroupStickerMessage} from "./classes/GroupStickerMessage";
export {GroupTypingMessage} from "./classes/GroupTypingMessage";
+export {Identity} from "./classes/Identity";
export {MessageFormatting} from "./classes/MessageFormatting";
export {MessageFormattingRule} from "./classes/MessageFormattingRule";
export {ObjectCache} from "./classes/ObjectCache";
@@ -48,6 +50,7 @@ export {StickerPack} from "./classes/StickerPack";
export {TypingMessage} from "./classes/TypingMessage";
export {User} from "./classes/User";
export {UserMention} from "./classes/UserMention";
+export {UserProfile} from "./classes/UserProfile";
// Types
export {IAttachmentBuilderData} from "./types/IAttachmentBuilderData";
@@ -63,6 +66,7 @@ export {IMimeType} from "./types/IMimeType";
export {IReceivedMessageURLPreview} from "./types/IReceivedMessageURLPreview";
export {ISentMessageURLPreview} from "./types/ISentMessageURLPreview";
export {ISystemConfig} from "./types/ISystemConfig";
+export {IUserProfileStatus} from "./types/IUserProfileStatus";
export {IUserResolvable} from "./types/IUserResolvable";
// Enums
diff --git a/package.json b/package.json
index 2e18e0a..1bec48e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@equestria.dev/signal.js",
- "version": "0.3.2-beta.1",
+ "version": "0.4.0-beta.0",
"description": "An easy-to-use Node.js library for Signal",
"main": "dist/index.js",
"publishConfig": {
diff --git a/types/IUserProfileStatus.ts b/types/IUserProfileStatus.ts
new file mode 100644
index 0000000..a5f848f
--- /dev/null
+++ b/types/IUserProfileStatus.ts
@@ -0,0 +1,6 @@
+import {Emoji} from "../classes/Emoji";
+
+export interface IUserProfileStatus {
+ text?: string;
+ emoji?: Emoji;
+} \ No newline at end of file