优化目录结构
12
.vscode/tasks.json
vendored
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "dev_secure",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"label": "npm: dev_secure",
|
|
||||||
"detail": "ts-node ./src/index.ts -p 8080 -m private -s -k ./server.key -c ./server.crt"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 472 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@@ -1,13 +1,13 @@
|
|||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('chat');
|
const logger = createLogger('chat');
|
||||||
/**
|
/**
|
||||||
* 消息模块
|
* 消息模块
|
||||||
* 处理聊天消息的发送、接收和显示
|
* 处理聊天消息的发送、接收和显示
|
||||||
*/
|
*/
|
||||||
import { showNotification, generateId } from './utils.js';
|
import { showNotification, generateId } from '../../shared/utils.js';
|
||||||
import store from './store.js';
|
import store from '../store.js';
|
||||||
import { mockMessages } from './models.js';
|
import { mockMessages } from '../models.js';
|
||||||
|
|
||||||
const MAX_IMAGE_SIZE = 5 * 1024 * 1024; // 5MB
|
const MAX_IMAGE_SIZE = 5 * 1024 * 1024; // 5MB
|
||||||
|
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
import { showNotification } from './utils.js';
|
import { showNotification } from '../shared/utils.js';
|
||||||
import store from './store.js';
|
import store from './store.js';
|
||||||
import {
|
import {
|
||||||
fetchConnectionDirectory,
|
fetchConnectionDirectory,
|
||||||
fetchOnlineUsers,
|
fetchOnlineUsers,
|
||||||
renderConnectionIds,
|
renderConnectionIds,
|
||||||
renderOnlineUsers
|
renderOnlineUsers
|
||||||
} from './connect-directory.js';
|
} from './signaling/connect-directory.js';
|
||||||
import { createProfileSettingsController } from './profile-settings.js';
|
import { createProfileSettingsController } from './controllers/profile-settings.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('connectview');
|
const logger = createLogger('connectview');
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('invite');
|
const logger = createLogger('invite');
|
||||||
const DEFAULT_CALLER_NAME = '\u9080\u8bf7\u65b9';
|
const DEFAULT_CALLER_NAME = '\u9080\u8bf7\u65b9';
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('profile');
|
const logger = createLogger('profile');
|
||||||
const DEFAULT_AVATAR = '/images/p1.png';
|
const DEFAULT_AVATAR = '/images/p1.png';
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<title>VideoCall - 一对一视频通话</title>
|
<title>VideoCall - 一对一视频通话</title>
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="css/style.css">
|
<link rel="stylesheet" href="/styles/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="h-screen w-screen flex flex-col text-white bg-grid relative">
|
<body class="h-screen w-screen flex flex-col text-white bg-grid relative">
|
||||||
@@ -726,8 +726,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 引入模块化JavaScript文件 -->
|
<!-- 引入模块化JavaScript文件 -->
|
||||||
<script type="module" src="connectview.js"></script>
|
<script type="module" src="/call/connectview.js"></script>
|
||||||
<script type="module" src="main.js"></script>
|
<script type="module" src="/call/main.js"></script>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
import store from './store.js';
|
import store from './store.js';
|
||||||
import UIRenderer from './renderer.js';
|
import UIRenderer from './renderers/renderer.js';
|
||||||
import { showNotification, randomMeetingId } from './utils.js';
|
import { showNotification, randomMeetingId } from '../shared/utils.js';
|
||||||
import chatMessage from './chatmessage.js';
|
import chatMessage from './chat/chatmessage.js';
|
||||||
import { createCallViewController } from './call-view-controller.js';
|
import { createCallViewController } from './controllers/call-view-controller.js';
|
||||||
import {
|
import {
|
||||||
bindConnectViewEvents,
|
bindConnectViewEvents,
|
||||||
initWebSocket,
|
initWebSocket,
|
||||||
loadUserSettings
|
loadUserSettings
|
||||||
} from './connectview.js';
|
} from './connectview.js';
|
||||||
import { createInviteController } from './invite-controller.js';
|
import { createInviteController } from './controllers/invite-controller.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('main');
|
const logger = createLogger('main');
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { createParticipantTile, getParticipantTile } from './renderer-participant-grid.js';
|
import { createParticipantTile, getParticipantTile } from '../participants/renderer-participant-grid.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('renderer-media');
|
const logger = createLogger('renderer-media');
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { formatTime, formatTimestamp, toggleElement, toggleButtonState } from './utils.js';
|
import { formatTime, formatTimestamp, toggleElement, toggleButtonState } from '../../shared/utils.js';
|
||||||
import { mockCallSession } from './models.js';
|
import { mockCallSession } from '../models.js';
|
||||||
import chatMessage from './chatmessage.js';
|
import chatMessage from '../chat/chatmessage.js';
|
||||||
import store from './store.js';
|
import store from '../store.js';
|
||||||
import {
|
import {
|
||||||
buildUserCountLabel,
|
buildUserCountLabel,
|
||||||
createUserEntryElement,
|
createUserEntryElement,
|
||||||
@@ -10,11 +10,11 @@ import {
|
|||||||
getNetworkQualityDisplay,
|
getNetworkQualityDisplay,
|
||||||
getRemoteVideoPlaceholderText
|
getRemoteVideoPlaceholderText
|
||||||
} from './renderer-ui.js';
|
} from './renderer-ui.js';
|
||||||
import { renderChatMessagesInto } from './renderer-chat.js';
|
import { renderChatMessagesInto } from '../chat/renderer-chat.js';
|
||||||
import {
|
import {
|
||||||
updateParticipantTileName as syncParticipantTileName,
|
updateParticipantTileName as syncParticipantTileName,
|
||||||
updateParticipantTilePlaceholder
|
updateParticipantTilePlaceholder
|
||||||
} from './renderer-participant-grid.js';
|
} from '../participants/renderer-participant-grid.js';
|
||||||
import {
|
import {
|
||||||
adjustVideoSize,
|
adjustVideoSize,
|
||||||
clearParticipantGrid,
|
clearParticipantGrid,
|
||||||
@@ -22,8 +22,8 @@ import {
|
|||||||
removeParticipantTile,
|
removeParticipantTile,
|
||||||
renderParticipantStreamMedia,
|
renderParticipantStreamMedia,
|
||||||
renderSingleRemoteStreamMedia
|
renderSingleRemoteStreamMedia
|
||||||
} from './renderer-media.js';
|
} from '../media/renderer-media.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('renderer');
|
const logger = createLogger('renderer');
|
||||||
|
|
||||||
@@ -513,7 +513,7 @@ class UIRenderer {
|
|||||||
renderCallEnded() {
|
renderCallEnded() {
|
||||||
logger.debug('Call ended');
|
logger.debug('Call ended');
|
||||||
clearParticipantGrid(this.elements.participantGrid);
|
clearParticipantGrid(this.elements.participantGrid);
|
||||||
window.location.href = './endcall/endcall.html';
|
window.location.href = '/endcall/';
|
||||||
}
|
}
|
||||||
|
|
||||||
renderParticipantLeft(connectionId) {
|
renderParticipantLeft(connectionId) {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Signaling, WebSocketSignaling } from "../../module/signaling.js";
|
import { Signaling, WebSocketSignaling } from '/module/core/signaling.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('signaling');
|
const logger = createLogger('signaling');
|
||||||
|
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
import { mockCallSession } from './models.js';
|
import { mockCallSession } from './models.js';
|
||||||
import { RenderStreaming } from "../../module/renderstreaming.js";
|
import { RenderStreaming } from '/module/core/renderstreaming.js';
|
||||||
import { getServerConfig, getRTCConfiguration } from "../js/config.js";
|
import { getServerConfig, getRTCConfiguration } from '../render-streaming/config.js';
|
||||||
import { showNotification, generateId } from './utils.js';
|
import { showNotification, generateId } from '../shared/utils.js';
|
||||||
import chatMessage from './chatmessage.js';
|
import chatMessage from './chat/chatmessage.js';
|
||||||
import { DEFAULT_PARTICIPANT_AVATAR, DEFAULT_PARTICIPANT_NAME, buildParticipantsSyncData, omitParticipant, removeParticipant, upsertParticipant } from './participants.js';
|
import { DEFAULT_PARTICIPANT_AVATAR, DEFAULT_PARTICIPANT_NAME, buildParticipantsSyncData, omitParticipant, removeParticipant, upsertParticipant } from './participants/participants.js';
|
||||||
import { AUDIO_CONFIG, VAD_CONFIG, VIDEO_ONLY_CONSTRAINT, buildVideoConstraints, getAdaptiveVideoBitrate, getResolutionLabel, getTargetResolutionBitrate } from './media-config.js';
|
import { AUDIO_CONFIG, VAD_CONFIG, VIDEO_ONLY_CONSTRAINT, buildVideoConstraints, getAdaptiveVideoBitrate, getResolutionLabel, getTargetResolutionBitrate } from './media/media-config.js';
|
||||||
import { buildStatsLogPayload, createAudioAnalyser, getAudioLevel } from './media-monitoring.js';
|
import { buildStatsLogPayload, createAudioAnalyser, getAudioLevel } from './media/media-monitoring.js';
|
||||||
import { bindInviteSocketEvents, buildSocketUserInfoPayload, createSignalingInstance, ensureSignalingStarted, getActiveSignalingInstance, sendInviteSignal, sendSocketUserInfo } from './signaling-session.js';
|
import { bindInviteSocketEvents, buildSocketUserInfoPayload, createSignalingInstance, ensureSignalingStarted, getActiveSignalingInstance, sendInviteSignal, sendSocketUserInfo } from './signaling/signaling-session.js';
|
||||||
import { getNetworkQualityFromSummary, summarizeInboundStats } from './webrtc-stats.js';
|
import { getNetworkQualityFromSummary, summarizeInboundStats } from './media/webrtc-stats.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from '../shared/logger.js';
|
||||||
import { MeetingRecorder } from './meeting-recorder.js';
|
import { MeetingRecorder } from './media/meeting-recorder.js';
|
||||||
|
|
||||||
const logger = createLogger('store');
|
const logger = createLogger('store');
|
||||||
class CallStateManager {
|
class CallStateManager {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { createLogger } from '../logger.js';
|
import { createLogger } from '../shared/logger.js';
|
||||||
|
|
||||||
const logger = createLogger('legacy-connect');
|
const logger = createLogger('legacy-connect');
|
||||||
/**
|
/**
|
||||||
@@ -6,7 +6,7 @@ const logger = createLogger('legacy-connect');
|
|||||||
* 处理初始连接、创建通话和加入通话的功能
|
* 处理初始连接、创建通话和加入通话的功能
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { showNotification, randomMeetingId } from '../utils.js';
|
import { showNotification, randomMeetingId } from '../shared/utils.js';
|
||||||
|
|
||||||
const MAX_AVATAR_SIZE = 2 * 1024 * 1024; // 2MB
|
const MAX_AVATAR_SIZE = 2 * 1024 * 1024; // 2MB
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ function joinCall() {
|
|||||||
localStorage.setItem('connectionId', connectionId);
|
localStorage.setItem('connectionId', connectionId);
|
||||||
|
|
||||||
// 跳转到通话界面
|
// 跳转到通话界面
|
||||||
window.location.href = '../index.html';
|
window.location.href = '/';
|
||||||
} else {
|
} else {
|
||||||
showNotification('请输入连接ID', 'error');
|
showNotification('请输入连接ID', 'error');
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,7 @@ function createCall() {
|
|||||||
localStorage.setItem('connectionId', connectionId);
|
localStorage.setItem('connectionId', connectionId);
|
||||||
|
|
||||||
// 跳转到通话界面
|
// 跳转到通话界面
|
||||||
window.location.href = '../index.html';
|
window.location.href = '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<title>VideoCall - 重定向</title>
|
<title>VideoCall - 重定向</title>
|
||||||
<script>
|
<script>
|
||||||
// 重定向到SPA入口页面(index.html)
|
// 重定向到SPA入口页面(index.html)
|
||||||
window.location.href = '../index.html';
|
window.location.href = '/';
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -3,14 +3,14 @@
|
|||||||
* 处理通话结束后的操作,如重新连接或返回连接界面
|
* 处理通话结束后的操作,如重新连接或返回连接界面
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { showNotification } from '../utils.js';
|
import { showNotification } from '../shared/utils.js';
|
||||||
|
|
||||||
// 重新连接
|
// 重新连接
|
||||||
function reconnectCall() {
|
function reconnectCall() {
|
||||||
showNotification('正在重新连接...');
|
showNotification('正在重新连接...');
|
||||||
|
|
||||||
// 跳转到通话界面
|
// 跳转到通话界面
|
||||||
window.location.href = '../index.html';
|
window.location.href = '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 离开
|
// 离开
|
||||||
@@ -19,7 +19,7 @@ function leaveCall() {
|
|||||||
localStorage.removeItem('connectionId');
|
localStorage.removeItem('connectionId');
|
||||||
|
|
||||||
// 跳转到连接界面
|
// 跳转到连接界面
|
||||||
window.location.href = '../connect/connect.html';
|
window.location.href = '/connect/';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 绑定事件监听器
|
// 绑定事件监听器
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<title>VideoCall - 通话结束</title>
|
<title>VideoCall - 通话结束</title>
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="../css/style.css">
|
<link rel="stylesheet" href="/styles/style.css">
|
||||||
</head>
|
</head>
|
||||||
<body class="h-screen w-screen flex flex-col text-white bg-grid relative">
|
<body class="h-screen w-screen flex flex-col text-white bg-grid relative">
|
||||||
<!--
|
<!--
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<title>VideoCall - 录制管理</title>
|
<title>VideoCall - 录制管理</title>
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/styles/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="min-h-screen w-screen text-white bg-grid recordings-page">
|
<body class="min-h-screen w-screen text-white bg-grid recordings-page">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Observer, Sender } from "../module/sender.js";
|
import { Observer, Sender } from "/module/core/sender.js";
|
||||||
import { InputRemoting } from "../module/inputremoting.js";
|
import { InputRemoting } from "/module/input/inputremoting.js";
|
||||||
|
|
||||||
export class VideoPlayer {
|
export class VideoPlayer {
|
||||||
constructor() {
|
constructor() {
|
||||||
@@ -210,4 +210,4 @@ export class VideoPlayer {
|
|||||||
await new Promise(resolve => setTimeout(resolve, 100));
|
await new Promise(resolve => setTimeout(resolve, 100));
|
||||||
this.inputRemoting.startSending();
|
this.inputRemoting.startSending();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as Logger from "./logger.js";
|
import * as Logger from "../utils/logger.js";
|
||||||
|
|
||||||
export default class Peer extends EventTarget {
|
export default class Peer extends EventTarget {
|
||||||
constructor(connectionId, polite, config, resendIntervalMsec = 5000) {
|
constructor(connectionId, polite, config, resendIntervalMsec = 5000) {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import Peer from "./peer.js";
|
import Peer from "./peer.js";
|
||||||
import * as Logger from "./logger.js";
|
import * as Logger from "../utils/logger.js";
|
||||||
|
|
||||||
function uuid4() {
|
function uuid4() {
|
||||||
var temp_url = URL.createObjectURL(new Blob());
|
var temp_url = URL.createObjectURL(new Blob());
|
||||||
@@ -314,4 +314,4 @@ export class RenderStreaming {
|
|||||||
this._signaling = null;
|
this._signaling = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,11 +5,11 @@ import {
|
|||||||
Touchscreen,
|
Touchscreen,
|
||||||
StateEvent,
|
StateEvent,
|
||||||
TextEvent
|
TextEvent
|
||||||
} from "./inputdevice.js";
|
} from "../input/inputdevice.js";
|
||||||
|
|
||||||
import { LocalInputManager } from "./inputremoting.js";
|
import { LocalInputManager } from "../input/inputremoting.js";
|
||||||
import { GamepadHandler } from "./gamepadhandler.js";
|
import { GamepadHandler } from "../input/gamepadhandler.js";
|
||||||
import { PointerCorrector } from "./pointercorrect.js";
|
import { PointerCorrector } from "../input/pointercorrect.js";
|
||||||
|
|
||||||
export class Sender extends LocalInputManager {
|
export class Sender extends LocalInputManager {
|
||||||
constructor(elem) {
|
constructor(elem) {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as Logger from "./logger.js";
|
import * as Logger from "../utils/logger.js";
|
||||||
|
|
||||||
export class Signaling extends EventTarget {
|
export class Signaling extends EventTarget {
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import {
|
import {
|
||||||
MemoryHelper,
|
MemoryHelper,
|
||||||
} from "./memoryhelper.js";
|
} from "../utils/memoryhelper.js";
|
||||||
|
|
||||||
import { CharNumber } from "./charnumber.js";
|
import { CharNumber } from "../utils/charnumber.js";
|
||||||
import { Keymap } from "./keymap.js";
|
import { Keymap } from "./keymap.js";
|
||||||
import { MouseButton } from "./mousebutton.js";
|
import { MouseButton } from "./mousebutton.js";
|
||||||
import { GamepadButton } from "./gamepadbutton.js";
|
import { GamepadButton } from "./gamepadbutton.js";
|
||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
MemoryHelper
|
MemoryHelper
|
||||||
} from "./memoryhelper.js";
|
} from "../utils/memoryhelper.js";
|
||||||
|
|
||||||
export class LocalInputManager {
|
export class LocalInputManager {
|
||||||
constructor() {
|
constructor() {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { sleep } from "./testutils";
|
import { sleep } from "../helpers/testutils.js";
|
||||||
|
|
||||||
/** @type {MockPrivateSignalingManager | MockPublicSignalingManager} */
|
/** @type {MockPrivateSignalingManager | MockPublicSignalingManager} */
|
||||||
let manager;
|
let manager;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { sleep, getUniqueId } from './testutils';
|
import { sleep, getUniqueId } from '../helpers/testutils.js';
|
||||||
|
|
||||||
export class PeerConnectionMock extends EventTarget {
|
export class PeerConnectionMock extends EventTarget {
|
||||||
constructor(config) {
|
constructor(config) {
|
||||||
@@ -313,4 +313,4 @@ export class IceCandidateMock {
|
|||||||
candidate;
|
candidate;
|
||||||
sdpMLineIndex;
|
sdpMLineIndex;
|
||||||
sdpMid;
|
sdpMid;
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
StateEvent,
|
StateEvent,
|
||||||
InputEvent,
|
InputEvent,
|
||||||
TextEvent
|
TextEvent
|
||||||
} from "../src/inputdevice.js";
|
} from "../../src/input/inputdevice.js";
|
||||||
|
|
||||||
describe(`FourCC`, () => {
|
describe(`FourCC`, () => {
|
||||||
test('toInt32', () => {
|
test('toInt32', () => {
|
||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
KeyboardState,
|
KeyboardState,
|
||||||
TouchscreenState,
|
TouchscreenState,
|
||||||
GamepadState
|
GamepadState
|
||||||
} from "../src/inputdevice.js";
|
} from "../../src/input/inputdevice.js";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
MessageType,
|
MessageType,
|
||||||
@@ -12,14 +12,14 @@ import {
|
|||||||
NewEventsMsg,
|
NewEventsMsg,
|
||||||
RemoveDeviceMsg,
|
RemoveDeviceMsg,
|
||||||
InputRemoting,
|
InputRemoting,
|
||||||
} from "../src/inputremoting.js";
|
} from "../../src/input/inputremoting.js";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Sender,
|
Sender,
|
||||||
Observer
|
Observer
|
||||||
} from "../src/sender.js";
|
} from "../../src/core/sender.js";
|
||||||
|
|
||||||
import {DOMRect} from "./domrect.js";
|
import {DOMRect} from "../helpers/domrect.js";
|
||||||
|
|
||||||
describe(`InputRemoting`, () => {
|
describe(`InputRemoting`, () => {
|
||||||
let sender = null;
|
let sender = null;
|
||||||
@@ -129,4 +129,4 @@ test('create RemoveDeviceMsg', () => {
|
|||||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { MeetingRecorder } from '../public/meeting-recorder.js';
|
import { MeetingRecorder } from '../../public/call/media/meeting-recorder.js';
|
||||||
|
|
||||||
class MediaStreamMock {
|
class MediaStreamMock {
|
||||||
constructor(tracks = []) {
|
constructor(tracks = []) {
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
MemoryHelper
|
MemoryHelper
|
||||||
} from "../src/memoryhelper.js";
|
} from "../../src/utils/memoryhelper.js";
|
||||||
|
|
||||||
describe(`MemoryHelper.writeSingleBit`, () => {
|
describe(`MemoryHelper.writeSingleBit`, () => {
|
||||||
test('turn on with offset 0', () => {
|
test('turn on with offset 0', () => {
|
||||||
@@ -64,4 +64,4 @@ describe(`MemoryHelper.writeSingleBit`, () => {
|
|||||||
expect(view[1]).toBe(0);
|
expect(view[1]).toBe(0);
|
||||||
expect(view[2]).toBe(0);
|
expect(view[2]).toBe(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import Peer from "../src/peer.js";
|
import Peer from "../../src/core/peer.js";
|
||||||
import { waitFor, sleep, getUniqueId, getRTCConfiguration } from "./testutils.js";
|
import { waitFor, sleep, getUniqueId, getRTCConfiguration } from "../helpers/testutils.js";
|
||||||
|
|
||||||
|
|
||||||
describe(`peer connection test`, () => {
|
describe(`peer connection test`, () => {
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import {
|
import {
|
||||||
LetterBoxType,
|
LetterBoxType,
|
||||||
PointerCorrector
|
PointerCorrector
|
||||||
} from "../src/pointercorrect.js";
|
} from "../../src/input/pointercorrect.js";
|
||||||
|
|
||||||
import {DOMRect} from "./domrect.js";
|
import {DOMRect} from "../helpers/domrect.js";
|
||||||
import {DOMHTMLVideoElement} from "./domvideoelement.js";
|
import {DOMHTMLVideoElement} from "../helpers/domvideoelement.js";
|
||||||
|
|
||||||
describe(`PointerCorrector.map`, () => {
|
describe(`PointerCorrector.map`, () => {
|
||||||
test('letterboxType', () => {
|
test('letterboxType', () => {
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { MockSignaling, reset } from "./mocksignaling.js";
|
import { MockSignaling, reset } from "../mocks/mocksignaling.js";
|
||||||
import { waitFor, getUniqueId, getRTCConfiguration } from "./testutils.js";
|
import { waitFor, getUniqueId, getRTCConfiguration } from "../helpers/testutils.js";
|
||||||
import { RenderStreaming } from "../src/renderstreaming.js";
|
import { RenderStreaming } from "../../src/core/renderstreaming.js";
|
||||||
|
|
||||||
describe.each([
|
describe.each([
|
||||||
{ mode: "private" },
|
{ mode: "private" },
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
import {
|
import {
|
||||||
InputRemoting,
|
InputRemoting,
|
||||||
} from "../src/inputremoting.js";
|
} from "../../src/input/inputremoting.js";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Sender,
|
Sender,
|
||||||
Observer
|
Observer
|
||||||
} from "../src/sender.js";
|
} from "../../src/core/sender.js";
|
||||||
|
|
||||||
import {jest} from '@jest/globals';
|
import {jest} from '@jest/globals';
|
||||||
import {DOMRect} from "./domrect.js";
|
import {DOMRect} from "../helpers/domrect.js";
|
||||||
|
|
||||||
// mock
|
// mock
|
||||||
|
|
||||||
@@ -140,4 +140,4 @@ describe(`Sender`, () => {
|
|||||||
describe('gamepad', () => {
|
describe('gamepad', () => {
|
||||||
//todo
|
//todo
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
import { jest } from '@jest/globals';
|
import { jest } from '@jest/globals';
|
||||||
import * as Path from 'path';
|
import * as Path from 'path';
|
||||||
import { setup, teardown } from 'jest-dev-server';
|
import { setup, teardown } from 'jest-dev-server';
|
||||||
import { Signaling, WebSocketSignaling } from "../src/signaling.js";
|
import { Signaling, WebSocketSignaling } from "../../src/core/signaling.js";
|
||||||
import { MockSignaling, reset } from "./mocksignaling.js";
|
import { MockSignaling, reset } from "../mocks/mocksignaling.js";
|
||||||
import { waitFor, sleep, serverExeName } from "./testutils.js";
|
import { waitFor, sleep, serverExeName } from "../helpers/testutils.js";
|
||||||
|
|
||||||
const portNumber = 8081;
|
const portNumber = 8081;
|
||||||
jest.setTimeout(10000);
|
jest.setTimeout(10000);
|
||||||