@signalapp/mock-server
Version:
Mock Signal Server for writing tests
53 lines (52 loc) • 2.19 kB
JavaScript
;
// Copyright 2026 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.IcePasswordSchema = exports.ICE_PASSWORD_SIZE = exports.IceUsernameFragmentSchema = exports.ICE_USERNAME_FRAGMENT_SIZE = void 0;
exports.getRandomIceUsernameFragment = getRandomIceUsernameFragment;
exports.getIceUsernames = getIceUsernames;
exports.getClientIceUsername = getClientIceUsername;
exports.getRandomIcePassword = getRandomIcePassword;
const node_assert_1 = __importDefault(require("node:assert"));
const node_crypto_1 = require("node:crypto");
const zod_1 = __importDefault(require("zod"));
function getRandomBase64String(size) {
(0, node_assert_1.default)(size % 4 === 0, 'Must be multiple of 4');
const byteLength = (size * 6) / 8;
const bytes = (0, node_crypto_1.randomBytes)(byteLength);
const base64 = bytes.toString('base64');
(0, node_assert_1.default)(base64.length === size, 'Must be exact length');
return base64;
}
exports.ICE_USERNAME_FRAGMENT_SIZE = 4;
function getRandomIceUsernameFragment() {
return getRandomBase64String(exports.ICE_USERNAME_FRAGMENT_SIZE);
}
exports.IceUsernameFragmentSchema = zod_1.default
.string()
.min(4)
.max(256)
.transform((input) => input);
function toIceUsername(a, b) {
return `${a}:${b}`;
}
function getIceUsernames(params) {
const serverIceUsername = toIceUsername(params.serverIceUsernameFragment, params.clientIceUsernameFragment);
const clientIceUsername = toIceUsername(params.clientIceUsernameFragment, params.serverIceUsernameFragment);
return { serverIceUsername, clientIceUsername };
}
function getClientIceUsername(params) {
return `${params.clientIceUsernameFragment}:${params.serverIceUsernameFragment}`;
}
exports.ICE_PASSWORD_SIZE = 32;
function getRandomIcePassword() {
return getRandomBase64String(exports.ICE_PASSWORD_SIZE);
}
exports.IcePasswordSchema = zod_1.default
.string()
.min(22)
.max(256)
.transform((input) => input);