@signalapp/mock-server
Version:
Mock Signal Server for writing tests
204 lines (203 loc) • 9.31 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.SubmitVerificationCodeSchema = exports.RequestVerificationCodeSchema = exports.CreateVerificationSessionSchema = exports.ModifyVerificationSessionSchema = exports.ClientTypeSchema = exports.TransportSchema = exports.RegisterAccountSchema = exports.UpdateProfileSchema = 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.UpdateProfileSchema = zod_1.default.object({
commitment: zod_1.default.string(),
version: zod_1.default.string(),
name: zod_1.default.string(),
aboutEmoji: zod_1.default.string().nullish(),
about: zod_1.default.string().nullish(),
paymentAddress: zod_1.default.string().nullish(),
avatar: zod_1.default.boolean(),
sameAvatar: zod_1.default.boolean(),
badgeIds: zod_1.default.array(zod_1.default.string()).nullish(),
phoneNumberSharing: zod_1.default.string().nullish(),
});
exports.RegisterAccountSchema = zod_1.default.object({
sessionId: zod_1.default.string(),
recoveryPassword: zod_1.default.string().optional(),
accountAttributes: zod_1.default.object({
fetchesMessages: zod_1.default.boolean(),
registrationId: exports.RegistrationIdSchema,
pniRegistrationId: exports.RegistrationIdSchema,
name: zod_1.default.string().optional(),
capabilities: zod_1.default.object({
attachmentBackfill: zod_1.default.boolean(),
spqr: zod_1.default.boolean(),
usernameChangeSyncMessage: zod_1.default.boolean(),
}),
registrationLock: zod_1.default.string().optional(),
unidentifiedAccessKey: zod_1.default.array(zod_1.default.number()),
unrestrictedUnidentifiedAccess: zod_1.default.boolean(),
discoverableByPhoneNumber: zod_1.default.boolean(),
recoveryPassword: zod_1.default.string(),
phoneNumberIdentityRegistrationId: zod_1.default.string().optional(),
}),
skipDeviceTransfer: zod_1.default.boolean(),
aciIdentityKey: zod_1.default.string(),
pniIdentityKey: zod_1.default.string(),
aciSignedPreKey: SignedPreKeySchema,
pniSignedPreKey: SignedPreKeySchema,
aciPqLastResortPreKey: SignedPreKeySchema,
pniPqLastResortPreKey: SignedPreKeySchema,
apnToken: zod_1.default
.object({
apnRegistrationId: zod_1.default.string(),
})
.optional(),
gcmToken: zod_1.default
.object({
gcmRegistrationId: zod_1.default.string(),
})
.optional(),
});
exports.TransportSchema = zod_1.default.literal('sms').or(zod_1.default.literal('voice'));
exports.ClientTypeSchema = zod_1.default
.literal('desktop')
.or(zod_1.default.literal('ios'))
.or(zod_1.default.literal('android'));
exports.ModifyVerificationSessionSchema = zod_1.default.object({
pushToken: zod_1.default.string().optional(),
pushTokenType: zod_1.default.string().optional(),
pushChallenge: zod_1.default.string().optional(),
captcha: zod_1.default.string().optional(),
mcc: zod_1.default.string().optional(),
mnc: zod_1.default.string().optional(),
});
exports.CreateVerificationSessionSchema = zod_1.default.object({
number: zod_1.default.string(),
...exports.ModifyVerificationSessionSchema.shape,
});
exports.RequestVerificationCodeSchema = zod_1.default.object({
transport: exports.TransportSchema,
client: exports.ClientTypeSchema,
});
exports.SubmitVerificationCodeSchema = zod_1.default.object({
code: zod_1.default.string(),
});
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(),
});