@signalapp/mock-server
Version:
Mock Signal Server for writing tests
61 lines (60 loc) • 2.09 kB
JavaScript
;
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Group = void 0;
const assert_1 = __importDefault(require("assert"));
class Group {
privChanges;
privPublicParams;
get changes() {
(0, assert_1.default)(this.privChanges !== undefined, 'Group not initialized');
return this.privChanges;
}
get publicParams() {
(0, assert_1.default)(this.privPublicParams !== undefined, 'Group not initialized');
return this.privPublicParams;
}
get state() {
const { groupChanges } = this.changes;
(0, assert_1.default)(groupChanges, 'Missing group changes in the group state');
const state = groupChanges[groupChanges.length - 1].groupState;
(0, assert_1.default)(state, 'Group must have the last state');
return state;
}
get id() {
return Buffer.from(this.publicParams.getGroupIdentifier().serialize()).toString('base64');
}
get revision() {
return this.state.version ?? 0;
}
getChangesSince(since) {
return {
groupChanges: this.changes.groupChanges?.slice(since),
};
}
getMember(uuidCiphertext) {
const state = this.state;
const userId = uuidCiphertext.serialize();
return (state.members?.find((member) => {
if (!member.userId) {
return false;
}
return userId.equals(member.userId);
}) ?? undefined);
}
getPendingMember(uuidCiphertext) {
const state = this.state;
const userId = uuidCiphertext.serialize();
return (state.membersPendingProfileKey?.find(({ member }) => {
if (!member?.userId) {
return false;
}
return userId.equals(member.userId);
}) ?? undefined);
}
}
exports.Group = Group;