UNPKG

@signalapp/mock-server

Version:
204 lines (203 loc) 9.31 kB
"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(), });