UNPKG

uyem

Version:
339 lines 12.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCountVideos = exports.getVideoShifts = exports.createEpisodes = exports.getVideoTime = exports.createVideoChunks = exports.TOKEN_QUERY_NAME = exports.EXT_WEBM = exports.VIDEO_BACKGROUNDS_PATH = exports.RECORD_VIDEOS_PATH = exports.TEMPORARY_PATH = exports.DELIMITER = exports.Data = exports.Connection = exports.Signaling = exports.LocaleSelector = exports.LocaleDefault = exports.Locale = exports.MessageType = exports.RecordCommand = exports.LogLevel = exports.ErrorCode = void 0; const path_browserify_1 = __importDefault(require("path-browserify")); var ErrorCode; (function (ErrorCode) { ErrorCode["initial"] = "initial"; ErrorCode["roomIsInactive"] = "roomIsInactive"; ErrorCode["errorSendMessage"] = "errorSendMessage"; ErrorCode["youAreBanned"] = "youAreBanned"; ErrorCode["videoRecordStop"] = "videoRecordStop"; ErrorCode["forbidden"] = "forbidden"; ErrorCode["notAuthorised"] = "notAuthorised"; ErrorCode["duplicateTab"] = "duplicateTab"; ErrorCode["errorDeleteMessage"] = "errorDeleteMessage"; ErrorCode["errorSetAdmin"] = "errorSetAdmin"; ErrorCode["errorToBan"] = "errorToBan"; ErrorCode["errorToMute"] = "errorToMute"; ErrorCode["errorToOffCamera"] = "errorToOffCamera"; ErrorCode["badRequest"] = "badRequest"; ErrorCode["notFound"] = "notFound"; ErrorCode["serverError"] = "serverError"; })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); // eslint-disable-next-line no-unused-vars var LogLevel; (function (LogLevel) { // eslint-disable-next-line no-unused-vars LogLevel[LogLevel["log"] = 0] = "log"; // eslint-disable-next-line no-unused-vars LogLevel[LogLevel["info"] = 1] = "info"; // eslint-disable-next-line no-unused-vars LogLevel[LogLevel["warn"] = 2] = "warn"; // eslint-disable-next-line no-unused-vars LogLevel[LogLevel["error"] = 3] = "error"; })(LogLevel = exports.LogLevel || (exports.LogLevel = {})); var RecordCommand; (function (RecordCommand) { RecordCommand["start"] = "start"; RecordCommand["stop"] = "stop"; })(RecordCommand = exports.RecordCommand || (exports.RecordCommand = {})); // eslint-disable-next-line no-shadow var MessageType; (function (MessageType) { MessageType["GET_USER_ID"] = "GET_USER_ID"; MessageType["SET_USER_ID"] = "SET_USER_ID"; MessageType["GET_LOGIN"] = "GET_LOGIN"; MessageType["TOKEN"] = "TOKEN"; MessageType["OFFER"] = "OFFER"; MessageType["CANDIDATE"] = "CANDIDATE"; MessageType["ANSWER"] = "ANSWER"; MessageType["GET_ROOM"] = "GET_ROOM"; MessageType["SET_ROOM"] = "SET_ROOM"; MessageType["GET_CHAT_UNIT"] = "GET_CHAT_UNIT"; MessageType["GET_SETTINGS_UNIT"] = "GET_SETTINGS_UNIT"; MessageType["SET_ERROR"] = "SET_ERROR"; MessageType["GET_ROOM_GUESTS"] = "GET_ROOM_GUESTS"; MessageType["SET_ROOM_GUESTS"] = "SET_ROOM_GUESTS"; MessageType["SET_CHANGE_UNIT"] = "SET_CHANGE_UNIT"; MessageType["GET_MUTE"] = "GET_MUTE"; MessageType["SET_MUTE"] = "SET_MUTE"; MessageType["GET_NEED_RECONNECT"] = "GET_NEED_RECONNECT"; MessageType["GET_CLOSE_PEER_CONNECTION"] = "GET_CLOSE_PEER_CONNECTION"; MessageType["SET_CLOSE_PEER_CONNECTION"] = "SET_CLOSE_PEER_CONNECTION"; MessageType["GET_ROOM_MESSAGE"] = "GET_ROOM_MESSAGE"; MessageType["SET_ROOM_MESSAGE"] = "SET_ROOM_MESSAGE"; MessageType["SET_CHAT_UNIT"] = "SET_CHAT_UNIT"; MessageType["SET_SETTINGS_UNIT"] = "SET_SETTINGS_UNIT"; MessageType["GET_CHAT_MESSAGES"] = "GET_CHAT_MESSAGES"; MessageType["SET_CHAT_MESSAGES"] = "SET_CHAT_MESSAGES"; MessageType["GET_EDIT_MESSAGE"] = "GET_EDIT_MESSAGE"; MessageType["SET_EDIT_MESSAGE"] = "SET_EDIT_MESSAGE"; MessageType["GET_CREATE_MESSAGE"] = "GET_CREATE_MESSAGE"; MessageType["SET_CREATE_MESSAGE"] = "SET_CREATE_MESSAGE"; MessageType["GET_CREATE_QUOTE"] = "GET_CREATE_QUOTE"; MessageType["SET_CREATE_QUOTE"] = "SET_CREATE_QUOTE"; MessageType["GET_DELETE_MESSAGE"] = "GET_DELETE_MESSAGE"; MessageType["SET_DELETE_MESSAGE"] = "SET_DELETE_MESSAGE"; MessageType["GET_TO_MUTE"] = "GET_TO_MUTE"; MessageType["GET_TO_BAN"] = "GET_TO_BAN"; MessageType["GET_TO_UNMUTE"] = "GET_TO_UNMUTE"; MessageType["GET_TO_UNBAN"] = "GET_TO_UNBAN"; MessageType["SET_BAN_LIST"] = "SET_BAN_LIST"; MessageType["SET_MUTE_LIST"] = "SET_MUTE_LIST"; MessageType["GET_RECORD"] = "GET_RECORD"; MessageType["SET_RECORDING"] = "SET_RECORDING"; MessageType["GET_VIDEO_FIND_MANY"] = "GET_VIDEO_FIND_MANY"; MessageType["SET_VIDEO_FIND_MANY"] = "SET_VIDEO_FIND_MANY"; MessageType["GET_VIDEO_FIND_FIRST"] = "GET_VIDEO_FIND_FIRST"; MessageType["SET_VIDEO_FIND_FIRST"] = "SET_VIDEO_FIND_FIRST"; MessageType["GET_ASK_FLOOR"] = "GET_ASK_FLOOR"; MessageType["SET_ASK_FLOOR"] = "SET_ASK_FLOOR"; MessageType["GET_MUTE_FOR_ALL"] = "GET_MUTE_FOR_ALL"; MessageType["SET_MUTE_FOR_ALL"] = "SET_MUTE_FOR_ALL"; MessageType["GET_BLOCK_CHAT"] = "GET_BLOCK_CHAT"; MessageType["SET_BLOCK_CHAT"] = "SET_BLOCK_CHAT"; MessageType["GET_VIDEO_TRACK"] = "GET_VIDEO_TRACK"; MessageType["SET_VIDEO_TRACK"] = "SET_VIDEO_TRACK"; MessageType["GET_TO_ADMIN"] = "GET_TO_ADMIN"; MessageType["SET_TO_ADMIN"] = "SET_TO_ADMIN"; MessageType["GET_VIDEO_SETTINGS"] = "GET_VIDEO_SETTINGS"; MessageType["SET_CREATE_VIDEO"] = "SET_CREATE_VIDEO"; MessageType["GET_VIDEO_DELETE"] = "GET_VIDEO_DELETE"; MessageType["SET_VIDEO_DELETE"] = "SET_VIDEO_DELETE"; MessageType["GET_VIDEO_UPDATE"] = "GET_VIDEO_UPDATE"; MessageType["SET_VIDEO_UPDATE"] = "SET_VIDEO_UPDATE"; MessageType["GET_LOCALE"] = "GET_LOCALE"; MessageType["SET_LOCALE"] = "SET_LOCALE"; })(MessageType = exports.MessageType || (exports.MessageType = {})); var Locale; (function (Locale) { Locale.DEFAULT = 'en'; // Implements on packages/server/src/utils/lib.ts Locale.SELECTOR = [ { name: 'English', value: 'en', impl: true, }, { name: 'Русский', value: 'ru', impl: true, }, ]; })(Locale = exports.Locale || (exports.Locale = {})); exports.LocaleDefault = Locale.DEFAULT; exports.LocaleSelector = Locale.SELECTOR; var Signaling; (function (Signaling) { class WSInterface { delimiter = '_'; } Signaling.WSInterface = WSInterface; })(Signaling = exports.Signaling || (exports.Signaling = {})); var Connection; (function (Connection) { class RTCInterface { delimiter = '_'; } Connection.RTCInterface = RTCInterface; })(Connection = exports.Connection || (exports.Connection = {})); var Data; (function (Data) { class DBInterface { } Data.DBInterface = DBInterface; })(Data = exports.Data || (exports.Data = {})); exports.DELIMITER = '_'; exports.TEMPORARY_PATH = 'tmp'; exports.RECORD_VIDEOS_PATH = 'videos'; exports.VIDEO_BACKGROUNDS_PATH = 'backgrounds'; exports.EXT_WEBM = '.webm'; exports.TOKEN_QUERY_NAME = 'token'; const createVideoChunks = ({ dir, dirPath, isBrowser, indexShift, }) => { const chunks = []; dir.forEach((item) => { const peer = item.replace(exports.EXT_WEBM, '').split(exports.DELIMITER); const start = parseFloat(peer[0]); const end = parseFloat(peer[1]); const id = peer[2]; const video = peer[3] === '1'; const audio = peer[4] === '1'; chunks.push({ id, start, end, video, audio, width: parseInt(peer[5], 10), height: parseInt(peer[6], 10), fullPath: isBrowser ? path_browserify_1.default.join(dirPath, item) : path_browserify_1.default.resolve(dirPath, item), map: '', mapA: '', }); }); return chunks .sort((a, b) => { if (a.start < b.start) { return -1; } if (a.start === b.start) { if (a.end < b.end) { return -1; } } return 1; }) .map((item, index) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const _item = { ...item }; _item.index = index + (indexShift ? 1 : 0); return _item; }); }; exports.createVideoChunks = createVideoChunks; const isEqual = (a, b) => { let check = true; if (a.length !== b.length) { return false; } a.every((item, index) => { const aKeys = Object.keys(item); aKeys.every((_item) => { if (item[_item] !== b[index]?.[_item]) { check = false; return false; } return true; }); return check; }); return check; }; const getVideoTime = (chunks, all = false) => { const min = all ? 0 : chunks[0]?.start || 0; let max = 0; chunks.forEach((item) => { if (item.end > max) { max = item.end; } }); return max - min; }; exports.getVideoTime = getVideoTime; const createEpisodes = ({ chunks }) => { const episodes = []; const endTime = (0, exports.getVideoTime)(chunks); const time = (0, exports.getVideoTime)(chunks, true) * 10; let oldChunks = []; let from; const array = new Array(time); array.fill('').forEach((_, i) => { const t = i / 10; if (from === undefined) { from = t; } const _chunks = []; chunks.forEach((chunk) => { if (chunk.start <= t && chunk.end > t) { _chunks.push(chunk); } return true; }); const isNew = oldChunks.length === 0; if (!isEqual(_chunks, oldChunks) && !isNew) { episodes.push({ start: from, end: t, video: false, audio: false, map: '', mapA: '', chunks: oldChunks, }); from = t; } if (i === array.length - 1 && _chunks.length !== 0) { episodes.push({ start: from, end: t, video: false, audio: false, map: '', mapA: '', chunks: _chunks, }); } oldChunks = _chunks; }); return episodes.map((episode, index) => { const _episode = { ...episode }; if (!episodes[index + 1]) { _episode.end = endTime; } return _episode; }); }; exports.createEpisodes = createEpisodes; const getAllDimensions = ({ chunks, countX, countY, }) => { let allWidth = 0; let allHeight = 0; let _countX = 0; let _countY = 0; chunks.forEach((chunk) => { if (chunk.video) { if (_countX < countX) { _countX++; allWidth += chunk.width; } if (_countY < countY) { _countY++; allHeight += chunk.height; } } }); return { allWidth, allHeight }; }; const getVideoShifts = ({ videoCount, chunks, videoHeight, videoWidth, border, }) => { const countX = videoCount === 2 || videoCount === 4 ? 2 : videoCount === 1 ? 1 : 3; const countY = videoCount === 2 || videoCount === 3 ? 1 : videoCount === 1 ? 1 : 2; const { allHeight, allWidth } = getAllDimensions({ chunks, countX, countY }); const width = videoWidth - allWidth; let shiftX = 0; let shiftY = 0; const diffX = Math.abs(width); if (width < 0) { shiftX = diffX / countX + border * countX; } const height = videoHeight - allHeight; const diffY = Math.abs(height); if (height < 0) { shiftY = diffY / countY + border * countY; } const x = width >= 0 ? diffX / countX / 2 : border; const y = height >= 0 ? diffY / countY / 2 : border; return { x, y, shiftX, shiftY }; }; exports.getVideoShifts = getVideoShifts; const getCountVideos = (chunks) => { let videoCount = 0; let audioCount = 0; chunks.forEach((item) => { if (item.video) { videoCount++; } if (item.audio) { audioCount++; } }); return { videoCount, audioCount, }; }; exports.getCountVideos = getCountVideos; //# sourceMappingURL=interfaces.js.map