@signalapp/mock-server
Version:
Mock Signal Server for writing tests
130 lines (129 loc) • 5.91 kB
JavaScript
"use strict";
// 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.BackupMediaBatchSchema = exports.SetBackupKeySchema = exports.BackupHeadersSchema = exports.SetBackupIdSchema = exports.DeleteCallLinkSchema = exports.UpdateCallLinkSchema = exports.CreateCallLinkSchema = exports.CreateCallLinkAuthSchema = exports.PutUsernameLinkSchema = exports.UsernameConfirmationSchema = exports.UsernameReservationSchema = exports.GroupStateSchema = exports.AtomicLinkingDataSchema = exports.MessageListSchema = exports.MessageSchema = exports.DeviceKeysSchema = exports.DeviceIdSchema = exports.RegistrationIdSchema = exports.ServiceIdSchema = exports.PniSchema = exports.AciSchema = exports.PositiveInt = void 0;
const zod_1 = __importDefault(require("zod"));
const util_1 = require("../util");
exports.PositiveInt = zod_1.default.coerce.number().int().nonnegative();
exports.AciSchema = zod_1.default.string().transform((x) => x);
exports.PniSchema = zod_1.default
.string()
.refine((x) => x.startsWith('PNI:'))
.transform((x) => x);
exports.ServiceIdSchema = zod_1.default
.string()
.transform((x) => x);
exports.RegistrationIdSchema = zod_1.default
.number()
.transform((x) => x);
exports.DeviceIdSchema = zod_1.default.number().transform((x) => x);
const PreKeySchema = zod_1.default.object({
keyId: zod_1.default.number(),
publicKey: zod_1.default.string(),
});
const SignedPreKeySchema = zod_1.default.object({
keyId: zod_1.default.number(),
publicKey: zod_1.default.string(),
signature: zod_1.default.string(),
});
exports.DeviceKeysSchema = zod_1.default.object({
preKeys: PreKeySchema.array(),
pqPreKeys: SignedPreKeySchema.array().optional(),
pqLastResortPreKey: SignedPreKeySchema.optional(),
signedPreKey: SignedPreKeySchema.optional(),
});
exports.MessageSchema = zod_1.default.object({
// NOTE: Envelope.Type
type: zod_1.default.number(),
destinationDeviceId: exports.DeviceIdSchema,
destinationRegistrationId: exports.RegistrationIdSchema,
content: zod_1.default.string(),
});
exports.MessageListSchema = zod_1.default.object({
messages: exports.MessageSchema.array(),
timestamp: zod_1.default.number(),
});
exports.AtomicLinkingDataSchema = zod_1.default.object({
verificationCode: zod_1.default.string(),
accountAttributes: zod_1.default.object({
fetchesMessages: zod_1.default.boolean(),
registrationId: exports.RegistrationIdSchema,
pniRegistrationId: exports.RegistrationIdSchema,
name: zod_1.default.string(),
}),
aciSignedPreKey: SignedPreKeySchema,
pniSignedPreKey: SignedPreKeySchema,
aciPqLastResortPreKey: SignedPreKeySchema,
pniPqLastResortPreKey: SignedPreKeySchema,
});
exports.GroupStateSchema = zod_1.default.object({
publicKey: zod_1.default.instanceof(Uint8Array),
version: zod_1.default.literal(0),
accessControl: zod_1.default.object({
attributes: zod_1.default.number(),
members: zod_1.default.number(),
addFromInviteLink: zod_1.default.number(),
}),
members: zod_1.default.unknown().array().min(1),
});
exports.UsernameReservationSchema = zod_1.default.object({
usernameHashes: zod_1.default
.string()
.transform(util_1.fromURLSafeBase64)
.array()
.min(1)
.max(20),
});
exports.UsernameConfirmationSchema = zod_1.default.object({
usernameHash: zod_1.default.string().transform(util_1.fromURLSafeBase64),
zkProof: zod_1.default.string().transform(util_1.fromURLSafeBase64),
encryptedUsername: zod_1.default.string().transform(util_1.fromURLSafeBase64).optional(),
});
exports.PutUsernameLinkSchema = zod_1.default.object({
usernameLinkEncryptedValue: zod_1.default.string().transform(util_1.fromURLSafeBase64),
});
exports.CreateCallLinkAuthSchema = zod_1.default.object({
createCallLinkCredentialRequest: zod_1.default.string().transform(util_1.fromBase64),
});
exports.CreateCallLinkSchema = zod_1.default.object({
adminPasskey: zod_1.default.string().transform(util_1.fromBase64),
zkparams: zod_1.default.string().transform(util_1.fromBase64),
});
exports.UpdateCallLinkSchema = zod_1.default.object({
adminPasskey: zod_1.default.string().transform(util_1.fromBase64),
name: zod_1.default.string().optional(),
restrictions: zod_1.default.enum(['none', 'adminApproval']).optional(),
revoked: zod_1.default.boolean().optional(),
});
exports.DeleteCallLinkSchema = zod_1.default.object({
adminPasskey: zod_1.default.string().transform(util_1.fromBase64),
});
exports.SetBackupIdSchema = zod_1.default.object({
messagesBackupAuthCredentialRequest: zod_1.default.string().transform(util_1.fromBase64),
mediaBackupAuthCredentialRequest: zod_1.default.string().transform(util_1.fromBase64),
});
exports.BackupHeadersSchema = zod_1.default.object({
'x-signal-zk-auth': zod_1.default.string().transform(util_1.fromBase64),
'x-signal-zk-auth-signature': zod_1.default.string().transform(util_1.fromBase64),
});
exports.SetBackupKeySchema = zod_1.default.object({
backupIdPublicKey: zod_1.default.string().transform(util_1.fromBase64),
});
exports.BackupMediaBatchSchema = zod_1.default.object({
items: zod_1.default
.object({
sourceAttachment: zod_1.default.object({
cdn: zod_1.default.number(),
key: zod_1.default.string(),
}),
objectLength: zod_1.default.number(),
mediaId: zod_1.default.string(),
hmacKey: zod_1.default.string().transform(util_1.fromBase64),
encryptionKey: zod_1.default.string().transform(util_1.fromBase64),
})
.array(),
});