@rapidmx/meet-plugin 0.14.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -55
- package/apps/meet/[token].tsx +341 -341
- package/apps/meet/_CallControls.tsx +508 -463
- package/apps/meet/_CallView.tsx +1060 -891
- package/apps/meet/_ChatPanel.tsx +194 -0
- package/apps/meet/_ColorWheel.tsx +136 -0
- package/apps/meet/_DiagnosticsPanel.tsx +65 -7
- package/apps/meet/_MeetLobby.tsx +224 -224
- package/apps/meet/_ParticipantTile.tsx +243 -169
- package/apps/meet/_ParticipantsDrawer.tsx +10 -7
- package/apps/meet/_Whiteboard.tsx +577 -0
- package/apps/meet/_icons.tsx +135 -80
- package/apps/meet/_meetApi.ts +213 -212
- package/apps/shared/collab/CollabSession.ts +675 -0
- package/apps/shared/collab/WhiteboardModel.ts +216 -0
- package/apps/shared/collab/chatMarkdown.tsx +375 -0
- package/apps/shared/collab/color.ts +67 -0
- package/apps/shared/collab/protocol.ts +321 -0
- package/apps/shared/collab/whiteboardRender.ts +311 -0
- package/apps/shared/media/filters/VideoFilterProcessor.ts +408 -408
- package/apps/shared/media/filters/mlModels.ts +174 -174
- package/apps/shared/relay/AudioPlayer.ts +29 -0
- package/apps/shared/relay/AudioSender.ts +23 -0
- package/apps/shared/relay/RelayClient.ts +54 -2
- package/apps/shared/relay/RelayReceiver.ts +43 -2
- package/apps/shared/relay/RelaySender.ts +23 -1
- package/apps/shared/relay/RelayTransport.ts +21 -1
- package/apps/shared/relay/SilenceMeter.ts +59 -0
- package/apps/shared/relay/relayEnv.ts +1 -1
- package/apps/shared/signaling/SignalingClient.ts +335 -0
- package/apps/shared/webrtc/MeshConnectionManager.ts +971 -949
- package/apps/shared/webrtc/types.ts +335 -247
- package/dist/apps/meet/[token].js +1 -1
- package/dist/apps/meet/_CallControls.d.ts +21 -6
- package/dist/apps/meet/_CallControls.js +14 -8
- package/dist/apps/meet/_CallView.d.ts +36 -7
- package/dist/apps/meet/_CallView.js +132 -16
- package/dist/apps/meet/_ChatPanel.d.ts +24 -0
- package/dist/apps/meet/_ChatPanel.js +116 -0
- package/dist/apps/meet/_ColorWheel.d.ts +14 -0
- package/dist/apps/meet/_ColorWheel.js +82 -0
- package/dist/apps/meet/_DiagnosticsPanel.d.ts +5 -3
- package/dist/apps/meet/_DiagnosticsPanel.js +17 -1
- package/dist/apps/meet/_ParticipantTile.d.ts +11 -3
- package/dist/apps/meet/_ParticipantTile.js +36 -5
- package/dist/apps/meet/_ParticipantsDrawer.js +3 -3
- package/dist/apps/meet/_Whiteboard.d.ts +64 -0
- package/dist/apps/meet/_Whiteboard.js +312 -0
- package/dist/apps/meet/_icons.d.ts +16 -0
- package/dist/apps/meet/_icons.js +16 -0
- package/dist/apps/meet/_meetApi.d.ts +8 -7
- package/dist/apps/meet/_meetApi.js +2 -2
- package/dist/apps/shared/collab/CollabSession.d.ts +208 -0
- package/dist/apps/shared/collab/CollabSession.js +559 -0
- package/dist/apps/shared/collab/WhiteboardModel.d.ts +54 -0
- package/dist/apps/shared/collab/WhiteboardModel.js +197 -0
- package/dist/apps/shared/collab/chatMarkdown.d.ts +65 -0
- package/dist/apps/shared/collab/chatMarkdown.js +311 -0
- package/dist/apps/shared/collab/color.d.ts +18 -0
- package/dist/apps/shared/collab/color.js +59 -0
- package/dist/apps/shared/collab/protocol.d.ts +157 -0
- package/dist/apps/shared/collab/protocol.js +222 -0
- package/dist/apps/shared/collab/whiteboardRender.d.ts +31 -0
- package/dist/apps/shared/collab/whiteboardRender.js +268 -0
- package/dist/apps/shared/relay/AudioPlayer.d.ts +9 -0
- package/dist/apps/shared/relay/AudioPlayer.js +24 -4
- package/dist/apps/shared/relay/AudioSender.d.ts +8 -0
- package/dist/apps/shared/relay/AudioSender.js +20 -4
- package/dist/apps/shared/relay/RelayClient.d.ts +16 -0
- package/dist/apps/shared/relay/RelayClient.js +46 -2
- package/dist/apps/shared/relay/RelayReceiver.d.ts +5 -0
- package/dist/apps/shared/relay/RelayReceiver.js +38 -6
- package/dist/apps/shared/relay/RelaySender.d.ts +7 -0
- package/dist/apps/shared/relay/RelaySender.js +20 -5
- package/dist/apps/shared/relay/RelayTransport.d.ts +6 -1
- package/dist/apps/shared/relay/RelayTransport.js +16 -1
- package/dist/apps/shared/relay/SilenceMeter.d.ts +25 -0
- package/dist/apps/shared/relay/SilenceMeter.js +55 -0
- package/dist/apps/shared/relay/relayEnv.d.ts +1 -1
- package/dist/apps/shared/signaling/SignalingClient.d.ts +95 -0
- package/dist/apps/shared/signaling/SignalingClient.js +278 -0
- package/dist/apps/shared/webrtc/MeshConnectionManager.d.ts +7 -7
- package/dist/apps/shared/webrtc/MeshConnectionManager.js +28 -9
- package/dist/apps/shared/webrtc/types.d.ts +104 -26
- package/dist/apps/shared/webrtc/types.js +3 -4
- package/dist/lib/routes/BaseVideoMeetingRoute.js +171 -69
- package/dist/lib/routes/BaseVideoMeetingRoute.js.map +1 -1
- package/dist/lib/util/RelayHub.js +15 -2
- package/dist/lib/util/RelayHub.js.map +1 -1
- package/dist/lib/util/SignalingHub.js +339 -0
- package/dist/lib/util/SignalingHub.js.map +1 -0
- package/dist/types/routes/BaseVideoMeetingRoute.d.ts +68 -46
- package/dist/types/util/RelayHub.d.ts +5 -2
- package/dist/types/util/SignalingHub.d.ts +112 -0
- package/package.json +208 -208
- package/apps/shared/push/GuestSignalingClient.ts +0 -359
- package/dist/apps/shared/push/GuestSignalingClient.d.ts +0 -98
- package/dist/apps/shared/push/GuestSignalingClient.js +0 -312
package/package.json
CHANGED
|
@@ -1,208 +1,208 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@rapidmx/meet-plugin",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "RapidMX plugin that provides WebRTC video conferencing, joinable from a calendar invite or a shared link.",
|
|
5
|
-
"repository": "https://github.com/rapidmx/meet-plugin.git",
|
|
6
|
-
"author": "RapidREST <rapidrests@gmail.com>",
|
|
7
|
-
"license": "MPL-2.0",
|
|
8
|
-
"contributors": [
|
|
9
|
-
"Jean-Philippe Steinmetz"
|
|
10
|
-
],
|
|
11
|
-
"scripts": {
|
|
12
|
-
"build": "yarn lint && rimraf dist && tsc && tsc -p tsconfig.apps.json",
|
|
13
|
-
"lint": "eslint ./src ./apps ./test",
|
|
14
|
-
"local-audit": "yarn install && yarn npm audit -A -R \"$@\"",
|
|
15
|
-
"checkup": "yarn dlx @yarnpkg/doctor \"$@\"",
|
|
16
|
-
"dependency-check": "yarn dlx depcheck \"$@\"",
|
|
17
|
-
"report-coverage": "cat ./coverage/lcov.info | coveralls",
|
|
18
|
-
"test": "vitest run",
|
|
19
|
-
"test:prod": "npm run lint && vitest run --coverage",
|
|
20
|
-
"test:watch": "vitest",
|
|
21
|
-
"release": "npx @rapidrest/cli release",
|
|
22
|
-
"prepublish": "yarn build"
|
|
23
|
-
},
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"@mediapipe/tasks-vision": "^1.0.1"
|
|
26
|
-
},
|
|
27
|
-
"peerDependencies": {
|
|
28
|
-
"@rapidmx/restapi": ">=0.23.0 <1",
|
|
29
|
-
"@rapidmx/web-client": ">=0.22.0 <1",
|
|
30
|
-
"@rapidrest/core": "5.x",
|
|
31
|
-
"@rapidrest/react": ">=2.1.0 <3",
|
|
32
|
-
"@rapidrest/service-core": "2.x",
|
|
33
|
-
"react": "19.x",
|
|
34
|
-
"react-dom": "19.x"
|
|
35
|
-
},
|
|
36
|
-
"devDependencies": {
|
|
37
|
-
"@rapidmx/restapi": "^0.28.1",
|
|
38
|
-
"@rapidmx/web-client": "^0.31.0",
|
|
39
|
-
"@rapidrest/core": "^6.0.0",
|
|
40
|
-
"@rapidrest/react": "^2.1.0",
|
|
41
|
-
"@rapidrest/service-core": "^2.4.0",
|
|
42
|
-
"@swc/core": "^1.16.2",
|
|
43
|
-
"@testing-library/dom": "^10.4.1",
|
|
44
|
-
"@testing-library/jest-dom": "^7.0.1",
|
|
45
|
-
"@testing-library/react": "^16.3.3",
|
|
46
|
-
"@testing-library/user-event": "^14.6.7",
|
|
47
|
-
"@types/nconf": "^0.10.7",
|
|
48
|
-
"@types/node": "^26.5.0",
|
|
49
|
-
"@types/react": "^19.2.18",
|
|
50
|
-
"@types/react-dom": "^19.2.7",
|
|
51
|
-
"@typescript-eslint/eslint-plugin": "^8.70.0",
|
|
52
|
-
"@typescript-eslint/parser": "^8.70.0",
|
|
53
|
-
"@vitest/coverage-v8": "^5.0.0",
|
|
54
|
-
"better-sqlite3": "^13.0.3",
|
|
55
|
-
"eslint": "^10.10.0",
|
|
56
|
-
"eslint-config-prettier": "^10.1.8",
|
|
57
|
-
"eslint-plugin-import": "^2.32.0",
|
|
58
|
-
"eslint-plugin-jsdoc": "^64.3.6",
|
|
59
|
-
"globals": "^17.12.0",
|
|
60
|
-
"jsdom": "^30.0.1",
|
|
61
|
-
"lodash-es": "^4.18.1",
|
|
62
|
-
"mongodb": "^7.6.0",
|
|
63
|
-
"mongodb-memory-server": "^11.2.0",
|
|
64
|
-
"nconf": "^0.13.0",
|
|
65
|
-
"openapi3-ts": "^4.6.1",
|
|
66
|
-
"prom-client": "^15.1.3",
|
|
67
|
-
"react": "^19.2.8",
|
|
68
|
-
"react-dom": "^19.2.8",
|
|
69
|
-
"redis": "^6.2.1",
|
|
70
|
-
"reflect-metadata": "^0.2.2",
|
|
71
|
-
"rimraf": "^6.1.3",
|
|
72
|
-
"ts-node": "^10.9.2",
|
|
73
|
-
"tsx": "^4.23.13",
|
|
74
|
-
"typeorm": "^1.1.1",
|
|
75
|
-
"typescript": "^6.0.3",
|
|
76
|
-
"unplugin-swc": "^1.6.0",
|
|
77
|
-
"uuid": "^14.0.2",
|
|
78
|
-
"vite": "^8.2.2",
|
|
79
|
-
"vitest": "^5.0.0",
|
|
80
|
-
"winston": "^3.19.0"
|
|
81
|
-
},
|
|
82
|
-
"resolutions": {
|
|
83
|
-
"@rapidmx/restapi": "^0.23.0",
|
|
84
|
-
"@rapidmx/web-client": "^0.22.0"
|
|
85
|
-
},
|
|
86
|
-
"packageManager": "yarn@4.5.3",
|
|
87
|
-
"engines": {
|
|
88
|
-
"node": ">=24.0.0"
|
|
89
|
-
},
|
|
90
|
-
"publishConfig": {
|
|
91
|
-
"registry": "https://registry.npmjs.org/"
|
|
92
|
-
},
|
|
93
|
-
"type": "module",
|
|
94
|
-
"main": "dist/lib/index.js",
|
|
95
|
-
"exports": {
|
|
96
|
-
".": {
|
|
97
|
-
"import": "./dist/lib/index.js",
|
|
98
|
-
"types": "./dist/types/index.d.ts"
|
|
99
|
-
},
|
|
100
|
-
"./mongo": {
|
|
101
|
-
"import": "./dist/lib/mongo.js",
|
|
102
|
-
"types": "./dist/types/mongo.d.ts"
|
|
103
|
-
},
|
|
104
|
-
"./sql": {
|
|
105
|
-
"import": "./dist/lib/sql.js",
|
|
106
|
-
"types": "./dist/types/sql.d.ts"
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
"typings": "dist/types/index.d.ts",
|
|
110
|
-
"files": [
|
|
111
|
-
"apps",
|
|
112
|
-
"dist"
|
|
113
|
-
],
|
|
114
|
-
"rapidmx": {
|
|
115
|
-
"plugin": {
|
|
116
|
-
"apiVersion": 1,
|
|
117
|
-
"displayName": "Meet",
|
|
118
|
-
"description": "Private and public WebRTC video meetings. A private meeting mints one link per invitee for a calendar invite's location and body; a public meeting shares a single link. Joining needs no account - a guest picks a name, checks their camera and microphone, and enters.",
|
|
119
|
-
"mailboxScopedData": true,
|
|
120
|
-
"settings": [
|
|
121
|
-
{
|
|
122
|
-
"key": "mail:videoconf:public_url",
|
|
123
|
-
"label": "Public join page URL",
|
|
124
|
-
"type": "string",
|
|
125
|
-
"default": "https://<host>/meet",
|
|
126
|
-
"help": "The address of the public join pages. Filled in with this server's address when the plugin is installed. Calendar invites include a join link only when this is set."
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"key": "mail:videoconf:turn:url",
|
|
130
|
-
"label": "TURN server URL",
|
|
131
|
-
"type": "string",
|
|
132
|
-
"default": "",
|
|
133
|
-
"help": "A turn: or turns: URL (e.g. turns:turn.example.com:5349), or several separated by commas (turn:turn.example.com:3478,turns:turn.example.com:5349), relaying media for a participant behind a restrictive NAT or firewall, for whom a direct peer-to-peer connection fails. A plain turn: address is offered over both UDP and TCP (a network that blocks UDP can still use the TCP one); add ?transport=udp or ?transport=tcp to an address to offer only that. Public STUN servers are used for everyone else and need no configuration. Leave empty to serve calls with STUN only - most calls will still connect, but some participants may not."
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"key": "mail:videoconf:turn:username",
|
|
137
|
-
"label": "TURN server username",
|
|
138
|
-
"type": "string",
|
|
139
|
-
"default": "",
|
|
140
|
-
"help": "Used as-is unless a shared secret is also set below, in which case it is combined with a per-join expiring credential instead (coturn's time-limited REST credential mechanism) and this value is ignored."
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"key": "mail:videoconf:turn:credential",
|
|
144
|
-
"label": "TURN server credential (static)",
|
|
145
|
-
"type": "string",
|
|
146
|
-
"secret": true,
|
|
147
|
-
"default": "",
|
|
148
|
-
"help": "The TURN server's password for the username above. Ignored when a shared secret is set below."
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"key": "mail:videoconf:turn:shared_secret",
|
|
152
|
-
"label": "TURN server shared secret (for expiring credentials)",
|
|
153
|
-
"type": "string",
|
|
154
|
-
"secret": true,
|
|
155
|
-
"default": "",
|
|
156
|
-
"help": "coturn's static-auth-secret, if configured. When set, every join mints its own short-lived username/credential pair (an HMAC-SHA1 of a timestamp with this secret) instead of handing out one permanent password to every participant - the recommended setup. Leave empty to use the static username/credential above instead."
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
"key": "mail:videoconf:relay:enabled",
|
|
160
|
-
"label": "WebSocket media relay",
|
|
161
|
-
"type": "boolean",
|
|
162
|
-
"default": true,
|
|
163
|
-
"help": "The last-resort tier for a participant whose network blocks both a direct connection and TURN (e.g. a corporate firewall that only allows web traffic): their media travels over a WebSocket this server relays between the meeting's participants. Turn off to serve calls with direct and TURN connections only. With several server replicas it connects participants across them through the same Redis the push system uses; without that Redis it works only between participants on the same replica."
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"key": "mail:videoconf:effects:assets_url",
|
|
167
|
-
"label": "Video effects assets URL",
|
|
168
|
-
"type": "string",
|
|
169
|
-
"default": "",
|
|
170
|
-
"help": "Video effects (background blur, custom backgrounds, face accessories) run a small machine-learning model in the participant's browser. By default the model files and their WebAssembly runtime are downloaded, only when a participant turns such an effect on, from cdn.jsdelivr.net and storage.googleapis.com. To serve them yourself instead, set this to the base URL (https://files.example.com/meet-effects, or a path on this server) of a directory holding wasm/ (the contents of the @mediapipe/tasks-vision package's wasm directory), selfie_segmenter.tflite and face_landmarker.task. Leave empty to use the public CDNs."
|
|
171
|
-
}
|
|
172
|
-
],
|
|
173
|
-
"ui": {
|
|
174
|
-
"apps": [
|
|
175
|
-
{
|
|
176
|
-
"id": "meet",
|
|
177
|
-
"host": "public",
|
|
178
|
-
"mount": "/meet",
|
|
179
|
-
"dir": "apps/meet"
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"id": "video-conferencing",
|
|
183
|
-
"host": "www",
|
|
184
|
-
"mount": "/settings/video-conferencing",
|
|
185
|
-
"dir": "apps/settings-video-conferencing"
|
|
186
|
-
}
|
|
187
|
-
],
|
|
188
|
-
"appRail": [
|
|
189
|
-
{
|
|
190
|
-
"id": "meet",
|
|
191
|
-
"label": "Meet",
|
|
192
|
-
"href": "/meet",
|
|
193
|
-
"icon": "HiOutlineVideoCamera",
|
|
194
|
-
"resolveFrom": "/mail/video-meetings/personal-room"
|
|
195
|
-
}
|
|
196
|
-
],
|
|
197
|
-
"settingsSections": [
|
|
198
|
-
{
|
|
199
|
-
"id": "video-conferencing",
|
|
200
|
-
"label": "Video Conferencing",
|
|
201
|
-
"href": "/settings/video-conferencing",
|
|
202
|
-
"icon": "HiOutlineVideoCamera"
|
|
203
|
-
}
|
|
204
|
-
]
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@rapidmx/meet-plugin",
|
|
3
|
+
"version": "0.16.0",
|
|
4
|
+
"description": "RapidMX plugin that provides WebRTC video conferencing, joinable from a calendar invite or a shared link.",
|
|
5
|
+
"repository": "https://github.com/rapidmx/meet-plugin.git",
|
|
6
|
+
"author": "RapidREST <rapidrests@gmail.com>",
|
|
7
|
+
"license": "MPL-2.0",
|
|
8
|
+
"contributors": [
|
|
9
|
+
"Jean-Philippe Steinmetz"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "yarn lint && rimraf dist && tsc && tsc -p tsconfig.apps.json",
|
|
13
|
+
"lint": "eslint ./src ./apps ./test",
|
|
14
|
+
"local-audit": "yarn install && yarn npm audit -A -R \"$@\"",
|
|
15
|
+
"checkup": "yarn dlx @yarnpkg/doctor \"$@\"",
|
|
16
|
+
"dependency-check": "yarn dlx depcheck \"$@\"",
|
|
17
|
+
"report-coverage": "cat ./coverage/lcov.info | coveralls",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"test:prod": "npm run lint && vitest run --coverage",
|
|
20
|
+
"test:watch": "vitest",
|
|
21
|
+
"release": "npx @rapidrest/cli release",
|
|
22
|
+
"prepublish": "yarn build"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@mediapipe/tasks-vision": "^1.0.1"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@rapidmx/restapi": ">=0.23.0 <1",
|
|
29
|
+
"@rapidmx/web-client": ">=0.22.0 <1",
|
|
30
|
+
"@rapidrest/core": "5.x",
|
|
31
|
+
"@rapidrest/react": ">=2.1.0 <3",
|
|
32
|
+
"@rapidrest/service-core": "2.x",
|
|
33
|
+
"react": "19.x",
|
|
34
|
+
"react-dom": "19.x"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@rapidmx/restapi": "^0.28.1",
|
|
38
|
+
"@rapidmx/web-client": "^0.31.0",
|
|
39
|
+
"@rapidrest/core": "^6.0.0",
|
|
40
|
+
"@rapidrest/react": "^2.1.0",
|
|
41
|
+
"@rapidrest/service-core": "^2.4.0",
|
|
42
|
+
"@swc/core": "^1.16.2",
|
|
43
|
+
"@testing-library/dom": "^10.4.1",
|
|
44
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
45
|
+
"@testing-library/react": "^16.3.3",
|
|
46
|
+
"@testing-library/user-event": "^14.6.7",
|
|
47
|
+
"@types/nconf": "^0.10.7",
|
|
48
|
+
"@types/node": "^26.5.0",
|
|
49
|
+
"@types/react": "^19.2.18",
|
|
50
|
+
"@types/react-dom": "^19.2.7",
|
|
51
|
+
"@typescript-eslint/eslint-plugin": "^8.70.0",
|
|
52
|
+
"@typescript-eslint/parser": "^8.70.0",
|
|
53
|
+
"@vitest/coverage-v8": "^5.0.0",
|
|
54
|
+
"better-sqlite3": "^13.0.3",
|
|
55
|
+
"eslint": "^10.10.0",
|
|
56
|
+
"eslint-config-prettier": "^10.1.8",
|
|
57
|
+
"eslint-plugin-import": "^2.32.0",
|
|
58
|
+
"eslint-plugin-jsdoc": "^64.3.6",
|
|
59
|
+
"globals": "^17.12.0",
|
|
60
|
+
"jsdom": "^30.0.1",
|
|
61
|
+
"lodash-es": "^4.18.1",
|
|
62
|
+
"mongodb": "^7.6.0",
|
|
63
|
+
"mongodb-memory-server": "^11.2.0",
|
|
64
|
+
"nconf": "^0.13.0",
|
|
65
|
+
"openapi3-ts": "^4.6.1",
|
|
66
|
+
"prom-client": "^15.1.3",
|
|
67
|
+
"react": "^19.2.8",
|
|
68
|
+
"react-dom": "^19.2.8",
|
|
69
|
+
"redis": "^6.2.1",
|
|
70
|
+
"reflect-metadata": "^0.2.2",
|
|
71
|
+
"rimraf": "^6.1.3",
|
|
72
|
+
"ts-node": "^10.9.2",
|
|
73
|
+
"tsx": "^4.23.13",
|
|
74
|
+
"typeorm": "^1.1.1",
|
|
75
|
+
"typescript": "^6.0.3",
|
|
76
|
+
"unplugin-swc": "^1.6.0",
|
|
77
|
+
"uuid": "^14.0.2",
|
|
78
|
+
"vite": "^8.2.2",
|
|
79
|
+
"vitest": "^5.0.0",
|
|
80
|
+
"winston": "^3.19.0"
|
|
81
|
+
},
|
|
82
|
+
"resolutions": {
|
|
83
|
+
"@rapidmx/restapi": "^0.23.0",
|
|
84
|
+
"@rapidmx/web-client": "^0.22.0"
|
|
85
|
+
},
|
|
86
|
+
"packageManager": "yarn@4.5.3",
|
|
87
|
+
"engines": {
|
|
88
|
+
"node": ">=24.0.0"
|
|
89
|
+
},
|
|
90
|
+
"publishConfig": {
|
|
91
|
+
"registry": "https://registry.npmjs.org/"
|
|
92
|
+
},
|
|
93
|
+
"type": "module",
|
|
94
|
+
"main": "dist/lib/index.js",
|
|
95
|
+
"exports": {
|
|
96
|
+
".": {
|
|
97
|
+
"import": "./dist/lib/index.js",
|
|
98
|
+
"types": "./dist/types/index.d.ts"
|
|
99
|
+
},
|
|
100
|
+
"./mongo": {
|
|
101
|
+
"import": "./dist/lib/mongo.js",
|
|
102
|
+
"types": "./dist/types/mongo.d.ts"
|
|
103
|
+
},
|
|
104
|
+
"./sql": {
|
|
105
|
+
"import": "./dist/lib/sql.js",
|
|
106
|
+
"types": "./dist/types/sql.d.ts"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"typings": "dist/types/index.d.ts",
|
|
110
|
+
"files": [
|
|
111
|
+
"apps",
|
|
112
|
+
"dist"
|
|
113
|
+
],
|
|
114
|
+
"rapidmx": {
|
|
115
|
+
"plugin": {
|
|
116
|
+
"apiVersion": 1,
|
|
117
|
+
"displayName": "Meet",
|
|
118
|
+
"description": "Private and public WebRTC video meetings. A private meeting mints one link per invitee for a calendar invite's location and body; a public meeting shares a single link. Joining needs no account - a guest picks a name, checks their camera and microphone, and enters.",
|
|
119
|
+
"mailboxScopedData": true,
|
|
120
|
+
"settings": [
|
|
121
|
+
{
|
|
122
|
+
"key": "mail:videoconf:public_url",
|
|
123
|
+
"label": "Public join page URL",
|
|
124
|
+
"type": "string",
|
|
125
|
+
"default": "https://<host>/meet",
|
|
126
|
+
"help": "The address of the public join pages. Filled in with this server's address when the plugin is installed. Calendar invites include a join link only when this is set."
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"key": "mail:videoconf:turn:url",
|
|
130
|
+
"label": "TURN server URL",
|
|
131
|
+
"type": "string",
|
|
132
|
+
"default": "",
|
|
133
|
+
"help": "A turn: or turns: URL (e.g. turns:turn.example.com:5349), or several separated by commas (turn:turn.example.com:3478,turns:turn.example.com:5349), relaying media for a participant behind a restrictive NAT or firewall, for whom a direct peer-to-peer connection fails. A plain turn: address is offered over both UDP and TCP (a network that blocks UDP can still use the TCP one); add ?transport=udp or ?transport=tcp to an address to offer only that. Public STUN servers are used for everyone else and need no configuration. Leave empty to serve calls with STUN only - most calls will still connect, but some participants may not."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"key": "mail:videoconf:turn:username",
|
|
137
|
+
"label": "TURN server username",
|
|
138
|
+
"type": "string",
|
|
139
|
+
"default": "",
|
|
140
|
+
"help": "Used as-is unless a shared secret is also set below, in which case it is combined with a per-join expiring credential instead (coturn's time-limited REST credential mechanism) and this value is ignored."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"key": "mail:videoconf:turn:credential",
|
|
144
|
+
"label": "TURN server credential (static)",
|
|
145
|
+
"type": "string",
|
|
146
|
+
"secret": true,
|
|
147
|
+
"default": "",
|
|
148
|
+
"help": "The TURN server's password for the username above. Ignored when a shared secret is set below."
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"key": "mail:videoconf:turn:shared_secret",
|
|
152
|
+
"label": "TURN server shared secret (for expiring credentials)",
|
|
153
|
+
"type": "string",
|
|
154
|
+
"secret": true,
|
|
155
|
+
"default": "",
|
|
156
|
+
"help": "coturn's static-auth-secret, if configured. When set, every join mints its own short-lived username/credential pair (an HMAC-SHA1 of a timestamp with this secret) instead of handing out one permanent password to every participant - the recommended setup. Leave empty to use the static username/credential above instead."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"key": "mail:videoconf:relay:enabled",
|
|
160
|
+
"label": "WebSocket media relay",
|
|
161
|
+
"type": "boolean",
|
|
162
|
+
"default": true,
|
|
163
|
+
"help": "The last-resort tier for a participant whose network blocks both a direct connection and TURN (e.g. a corporate firewall that only allows web traffic): their media travels over a WebSocket this server relays between the meeting's participants. Turn off to serve calls with direct and TURN connections only. With several server replicas it connects participants across them through the same Redis the push system uses; without that Redis it works only between participants on the same replica."
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"key": "mail:videoconf:effects:assets_url",
|
|
167
|
+
"label": "Video effects assets URL",
|
|
168
|
+
"type": "string",
|
|
169
|
+
"default": "",
|
|
170
|
+
"help": "Video effects (background blur, custom backgrounds, face accessories) run a small machine-learning model in the participant's browser. By default the model files and their WebAssembly runtime are downloaded, only when a participant turns such an effect on, from cdn.jsdelivr.net and storage.googleapis.com. To serve them yourself instead, set this to the base URL (https://files.example.com/meet-effects, or a path on this server) of a directory holding wasm/ (the contents of the @mediapipe/tasks-vision package's wasm directory), selfie_segmenter.tflite and face_landmarker.task. Leave empty to use the public CDNs."
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"ui": {
|
|
174
|
+
"apps": [
|
|
175
|
+
{
|
|
176
|
+
"id": "meet",
|
|
177
|
+
"host": "public",
|
|
178
|
+
"mount": "/meet",
|
|
179
|
+
"dir": "apps/meet"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "video-conferencing",
|
|
183
|
+
"host": "www",
|
|
184
|
+
"mount": "/settings/video-conferencing",
|
|
185
|
+
"dir": "apps/settings-video-conferencing"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"appRail": [
|
|
189
|
+
{
|
|
190
|
+
"id": "meet",
|
|
191
|
+
"label": "Meet",
|
|
192
|
+
"href": "/meet",
|
|
193
|
+
"icon": "HiOutlineVideoCamera",
|
|
194
|
+
"resolveFrom": "/mail/video-meetings/personal-room"
|
|
195
|
+
}
|
|
196
|
+
],
|
|
197
|
+
"settingsSections": [
|
|
198
|
+
{
|
|
199
|
+
"id": "video-conferencing",
|
|
200
|
+
"label": "Video Conferencing",
|
|
201
|
+
"href": "/settings/video-conferencing",
|
|
202
|
+
"icon": "HiOutlineVideoCamera"
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|