[mirotalk] - add network stats, update dep
This commit is contained in:
+1
-1
@@ -45,7 +45,7 @@ dependencies: {
|
||||
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.6.38
|
||||
* @version 1.6.39
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
Generated
+84
-84
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"name": "mirotalk",
|
||||
"version": "1.6.37",
|
||||
"version": "1.6.39",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "mirotalk",
|
||||
"version": "1.6.37",
|
||||
"version": "1.6.39",
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
"@mattermost/client": "11.1.0",
|
||||
"@ngrok/ngrok": "1.5.2",
|
||||
"@sentry/node": "^10.25.0",
|
||||
"@ngrok/ngrok": "1.6.0",
|
||||
"@sentry/node": "^10.26.0",
|
||||
"axios": "^1.13.2",
|
||||
"chokidar": "^4.0.3",
|
||||
"colors": "^1.4.0",
|
||||
@@ -29,7 +29,7 @@
|
||||
"jsdom": "^27.2.0",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"nodemailer": "^7.0.10",
|
||||
"openai": "^6.9.0",
|
||||
"openai": "^6.9.1",
|
||||
"qs": "^6.14.0",
|
||||
"socket.io": "^4.8.1",
|
||||
"swagger-ui-express": "^5.0.1",
|
||||
@@ -336,33 +336,33 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok/-/ngrok-1.5.2.tgz",
|
||||
"integrity": "sha512-gN7KKdLTKer+wBSk9s9eDx53MUFdcnXNHsXxiC5sJLLD5HY9JRMSn6UzcCqnk7IgeIgCgw5h1k6YDqhjx6lmtg==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok/-/ngrok-1.6.0.tgz",
|
||||
"integrity": "sha512-TWC6nh4Kl16HjhG/bVhpYNP5UIyJc9oZetCrnO4r5+gq95eIxZKoLXzuAyC0gF/J+NEY3c1euFAET5Sn9wOWaw==",
|
||||
"license": "(MIT OR Apache-2.0)",
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@ngrok/ngrok-android-arm64": "1.5.2",
|
||||
"@ngrok/ngrok-darwin-arm64": "1.5.2",
|
||||
"@ngrok/ngrok-darwin-universal": "1.5.2",
|
||||
"@ngrok/ngrok-darwin-x64": "1.5.2",
|
||||
"@ngrok/ngrok-freebsd-x64": "1.5.2",
|
||||
"@ngrok/ngrok-linux-arm-gnueabihf": "1.5.2",
|
||||
"@ngrok/ngrok-linux-arm64-gnu": "1.5.2",
|
||||
"@ngrok/ngrok-linux-arm64-musl": "1.5.2",
|
||||
"@ngrok/ngrok-linux-x64-gnu": "1.5.2",
|
||||
"@ngrok/ngrok-linux-x64-musl": "1.5.2",
|
||||
"@ngrok/ngrok-win32-arm64-msvc": "1.5.2",
|
||||
"@ngrok/ngrok-win32-ia32-msvc": "1.5.2",
|
||||
"@ngrok/ngrok-win32-x64-msvc": "1.5.2"
|
||||
"@ngrok/ngrok-android-arm64": "1.6.0",
|
||||
"@ngrok/ngrok-darwin-arm64": "1.6.0",
|
||||
"@ngrok/ngrok-darwin-universal": "1.6.0",
|
||||
"@ngrok/ngrok-darwin-x64": "1.6.0",
|
||||
"@ngrok/ngrok-freebsd-x64": "1.6.0",
|
||||
"@ngrok/ngrok-linux-arm-gnueabihf": "1.6.0",
|
||||
"@ngrok/ngrok-linux-arm64-gnu": "1.6.0",
|
||||
"@ngrok/ngrok-linux-arm64-musl": "1.6.0",
|
||||
"@ngrok/ngrok-linux-x64-gnu": "1.6.0",
|
||||
"@ngrok/ngrok-linux-x64-musl": "1.6.0",
|
||||
"@ngrok/ngrok-win32-arm64-msvc": "1.6.0",
|
||||
"@ngrok/ngrok-win32-ia32-msvc": "1.6.0",
|
||||
"@ngrok/ngrok-win32-x64-msvc": "1.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-android-arm64": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm64/-/ngrok-android-arm64-1.5.2.tgz",
|
||||
"integrity": "sha512-v81VbxxAgg2W7jbjhEcn8K9R2aUf0h1AuTx+8tDlw3L4H1YEmbmllIpBAGgMjHRBxLZKOo5GBi0k7oS+VRM5TA==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm64/-/ngrok-android-arm64-1.6.0.tgz",
|
||||
"integrity": "sha512-gOfVVjYq7ruPMgH108j99uaBUkwD1DxDpnk+RufQHzxRKL72MZad7QfaRwc1v8iRMyOh3EKYYvU2y8HSXDbSkA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -376,9 +376,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-darwin-arm64": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-arm64/-/ngrok-darwin-arm64-1.5.2.tgz",
|
||||
"integrity": "sha512-8CVzS9AveYpNhWbydm7cJ6XqmVg29/VRKF15l4kJ2djlNoJxuGSibgM9A627dWRdnJyj5uhmU3VzsgeU8t+/3g==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-arm64/-/ngrok-darwin-arm64-1.6.0.tgz",
|
||||
"integrity": "sha512-YdKlEkz0PHHnoy2UlEH2XMrupetmT6K6bLrF+MFWrKYKpIbOuGV4HcVioh1iu0NTmn7xJwrAbo/Mwx2E95/qdg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -392,9 +392,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-darwin-universal": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-universal/-/ngrok-darwin-universal-1.5.2.tgz",
|
||||
"integrity": "sha512-mEMH1OxN6RxnqRSWb4xY9RqbtdlCpv+WlRKxq4lVy8JVsxEyFNnzVQ0jn+iuiy981jCXjokctzJeGMvECuSQBQ==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-universal/-/ngrok-darwin-universal-1.6.0.tgz",
|
||||
"integrity": "sha512-yiUCkg10+vUKgvkD2rAZHlzvZmINUNF7mna7iL+ydh4pOx6jamSwDQ2QRseVAyxC9eZVy/rKFYLVnz2Ci+0D9w==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -405,9 +405,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-darwin-x64": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-x64/-/ngrok-darwin-x64-1.5.2.tgz",
|
||||
"integrity": "sha512-rGdcADw4NtMSU7SHUTly7uvMVYX6eMeMCppKyL5g3CSlEQntKf3AWs/89ah2TBWJA2WVl0UgGLkXp4xs1tg9eQ==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-x64/-/ngrok-darwin-x64-1.6.0.tgz",
|
||||
"integrity": "sha512-a6LbwODDDCRpriILe+1lq+zuIjGbj+pR1A0KThTP8riVTQ538DMqR09kv5Oz7ZqcclS/IK+3ZLKkxHuPX9ob3g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -421,9 +421,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-freebsd-x64": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-freebsd-x64/-/ngrok-freebsd-x64-1.5.2.tgz",
|
||||
"integrity": "sha512-WgY54qUekaUGa5+lFvzYUMjlzf22IEXuZHhxnzJM2/gMqa7gjU8N5W4U8XNDjVW/oz6DekrzIjuoAEPO+2icDg==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-freebsd-x64/-/ngrok-freebsd-x64-1.6.0.tgz",
|
||||
"integrity": "sha512-t77ayWr0zPrW75DstzvoE6Hwj7h1mpQSFKQ3I0B3iC9o7XZhcNkwFpX8QLbmQNkeHxz5UhlBtzOYPdzDJY+3uw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -437,9 +437,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-linux-arm-gnueabihf": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm-gnueabihf/-/ngrok-linux-arm-gnueabihf-1.5.2.tgz",
|
||||
"integrity": "sha512-azMxr/TGEeFU4JAUbSu5MO2aZEvdq+TzcxiLw6d+yhdEtNAjDW9TOyCczTrIZPOG5fP8G3lcCd8TP7mVIWdOnw==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm-gnueabihf/-/ngrok-linux-arm-gnueabihf-1.6.0.tgz",
|
||||
"integrity": "sha512-NBCJnPAbl44Ua3dpO+kOkyz4cGGLu2FiDcEHBES7OARiSscoui+DyNPLe5auZFjag5/0B3ZNiDgCcdRBAi+KNQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -453,9 +453,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-linux-arm64-gnu": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-gnu/-/ngrok-linux-arm64-gnu-1.5.2.tgz",
|
||||
"integrity": "sha512-79eFCxio4rM0ICRBXx/CVvbXDeWk1Jxr7szkezEYWtHaL+gXivrtS1QjtMnJpGY1GJlLTQL+49w2lGydqPOJQA==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-gnu/-/ngrok-linux-arm64-gnu-1.6.0.tgz",
|
||||
"integrity": "sha512-i65WIaeImO2/oyTfwUAVW1j/poLMzX/PAYsDRLXOac6/1DV6kIQX1kmr+CEs6NtmKgD76QiApbqtksd9MDlncg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -469,9 +469,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-linux-arm64-musl": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-musl/-/ngrok-linux-arm64-musl-1.5.2.tgz",
|
||||
"integrity": "sha512-ou9Z7iPQJIQ0RX5bdBhb3y7GwYRt+X0G9tenyRzKLXXvs0XfUUcg/23aBP61hmdRvBq7xpliV1PnvEVBgUIYMg==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-musl/-/ngrok-linux-arm64-musl-1.6.0.tgz",
|
||||
"integrity": "sha512-7osqE43Pl6HiTeLZSEnSTtgbNQ1zqYovYjZ7lGgeKJHlgWXE6RvE7qhdjDw17ebUuT0IS8JPGZFnlyF6J0UKPQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -485,9 +485,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-linux-x64-gnu": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-gnu/-/ngrok-linux-x64-gnu-1.5.2.tgz",
|
||||
"integrity": "sha512-VI1mmtl3Ie5uXTVAR9thPiMNMsCWeqkjBUbHAyk2vZ2OXR4Vs2DGjOPXK+wTl/hjF29FXoxunjhMy6caF9ht0Q==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-gnu/-/ngrok-linux-x64-gnu-1.6.0.tgz",
|
||||
"integrity": "sha512-jP3enLStnTGTKLBXqctVt3wIVvGLP/BkLKYuXwrU1EqchtvDcsAhpspeUeX23SAtLXUgbX9vN1B6IvsAxWcyxw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -501,9 +501,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-linux-x64-musl": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-musl/-/ngrok-linux-x64-musl-1.5.2.tgz",
|
||||
"integrity": "sha512-F4j9EyC/0R3IgYSd+OER4bC8bxuBubvj33e24GvQnRF/IQaKhpybkvQbz54fnvsL7y0j2BB42NAIm2CFtk7tCw==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-musl/-/ngrok-linux-x64-musl-1.6.0.tgz",
|
||||
"integrity": "sha512-hrBrXCofgmY9pc36N0nfDS+bfomu5hOqt0N5IQkL4n0UaQcl48tKddIex2eR+mU3QBYh6p1XKxAwyAVjwplD2w==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -517,9 +517,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-win32-arm64-msvc": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-arm64-msvc/-/ngrok-win32-arm64-msvc-1.5.2.tgz",
|
||||
"integrity": "sha512-0OMXNjWElM1MQX7lMBnpRtafS9+3ybauqGD4m2dZcIm6hFvexsJFwNgx0mCa5aKxe2mQ4zNarEUd+SqG2Aa4/g==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-arm64-msvc/-/ngrok-win32-arm64-msvc-1.6.0.tgz",
|
||||
"integrity": "sha512-EXJXFaXh/cNRaTqs02EmysILtcSImFWwC98mjG6PU5MEG+gqNz8AddnqFytY0RRxkR9SxwnC+7QAV3qYOSU6kA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -533,9 +533,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-win32-ia32-msvc": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-ia32-msvc/-/ngrok-win32-ia32-msvc-1.5.2.tgz",
|
||||
"integrity": "sha512-hdvhnr7Br4XhUblpW67v5XP6FyoQwJ2xSbwas4KW4hZ3F4cw0m6sqXpssRfmqg3/5HJony1H5B2jLi0x4J7uOw==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-ia32-msvc/-/ngrok-win32-ia32-msvc-1.6.0.tgz",
|
||||
"integrity": "sha512-R+5WB6ONT4ynHFusxRw8kbXx2SBYftl6XUiNQNmwwCdwdNO7fPzdwhbmbzgfCEjQrYQrXD1vs5J+zJJeSaAicw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -549,9 +549,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrok/ngrok-win32-x64-msvc": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-x64-msvc/-/ngrok-win32-x64-msvc-1.5.2.tgz",
|
||||
"integrity": "sha512-aHuMiRti9Taow9DlYLGVmu9CXtXD/v4CBQWpZlmt7VGuK1KsTWWLaGIBFVp6UXnyW87b0A+KC69Kn/Xjylw+sg==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-x64-msvc/-/ngrok-win32-x64-msvc-1.6.0.tgz",
|
||||
"integrity": "sha512-4QViW0GSPsjmghYPExO0Jt9DtIybK23MXPP0BltOuoFP0iyA15vb03QXAI4223zlSLWSWYnOx+qnCuzV1qT0lQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1170,18 +1170,18 @@
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@sentry/core": {
|
||||
"version": "10.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.25.0.tgz",
|
||||
"integrity": "sha512-mGi4BYIPwZjWdOXHrPoXz1AW4/cQbFoiuW/m+OOATmtSoGTDnWYwP+qZU7VLlL+v8ZEzxfPi2C1NPfJtPj7QWA==",
|
||||
"version": "10.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.26.0.tgz",
|
||||
"integrity": "sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/node": {
|
||||
"version": "10.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.25.0.tgz",
|
||||
"integrity": "sha512-++mugiYF8X7CLtpymGN3N4J40SvQVIsVa6K7pURhooT4eX1QXYOBJSaOqvOXk5GN4qed5wETHNBkZuXSO0RARQ==",
|
||||
"version": "10.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.26.0.tgz",
|
||||
"integrity": "sha512-VUwNoKYhRpnHQSj9lty1TgooO+1wcpS1V0K87HU8sZEas5gx3Ujiouk5ocPjlgbKreoYOApgOnEEIq5W/hfQcQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@opentelemetry/api": "^1.9.0",
|
||||
@@ -1214,9 +1214,9 @@
|
||||
"@opentelemetry/sdk-trace-base": "^2.1.0",
|
||||
"@opentelemetry/semantic-conventions": "^1.37.0",
|
||||
"@prisma/instrumentation": "6.15.0",
|
||||
"@sentry/core": "10.25.0",
|
||||
"@sentry/node-core": "10.25.0",
|
||||
"@sentry/opentelemetry": "10.25.0",
|
||||
"@sentry/core": "10.26.0",
|
||||
"@sentry/node-core": "10.26.0",
|
||||
"@sentry/opentelemetry": "10.26.0",
|
||||
"import-in-the-middle": "^1.14.2",
|
||||
"minimatch": "^9.0.0"
|
||||
},
|
||||
@@ -1225,14 +1225,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/node-core": {
|
||||
"version": "10.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.25.0.tgz",
|
||||
"integrity": "sha512-Hk0s7r9pkotZ1yfUc9+XX0ALDQ/bjaYsWF23O2q8Yfc4m8NcQio54ztAmdI+Yf+YiHLpt0x9Hlgwpl3AaRvwIA==",
|
||||
"version": "10.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.26.0.tgz",
|
||||
"integrity": "sha512-7OrHVn8XAsq9mMVMlpL18XTKQEVcLOJSo0n2M7QGKfFk/OfVtSFMcUWGqN1qhYtT9aMTr2bjtR5+BI33djnNTQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@apm-js-collab/tracing-hooks": "^0.3.1",
|
||||
"@sentry/core": "10.25.0",
|
||||
"@sentry/opentelemetry": "10.25.0",
|
||||
"@sentry/core": "10.26.0",
|
||||
"@sentry/opentelemetry": "10.26.0",
|
||||
"import-in-the-middle": "^1.14.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1249,12 +1249,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/opentelemetry": {
|
||||
"version": "10.25.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.25.0.tgz",
|
||||
"integrity": "sha512-AWCRzUIzvI+0RHXTmGvVx+MUtyyjwmC6F6d6XCnWhBKWGO52I+ucz1X8INIZxCrK05dpviFpeLZy+pzfgw892g==",
|
||||
"version": "10.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.26.0.tgz",
|
||||
"integrity": "sha512-ASJdOwn6NwMH2ZeBrnGJI+l/xkJp1AOiQ5FWkvTqLc/vHX+r3PDMO7c+koecY+LiZxSzZF4IV8sALXfOh6UnwA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry/core": "10.25.0"
|
||||
"@sentry/core": "10.26.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -3056,9 +3056,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/glob": {
|
||||
"version": "10.4.5",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
|
||||
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
|
||||
"version": "10.5.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
|
||||
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
@@ -4224,9 +4224,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/openai": {
|
||||
"version": "6.9.0",
|
||||
"resolved": "https://registry.npmjs.org/openai/-/openai-6.9.0.tgz",
|
||||
"integrity": "sha512-n2sJRYmM+xfJ0l3OfH8eNnIyv3nQY7L08gZQu3dw6wSdfPtKAk92L83M2NIP5SS8Cl/bsBBG3yKzEOjkx0O+7A==",
|
||||
"version": "6.9.1",
|
||||
"resolved": "https://registry.npmjs.org/openai/-/openai-6.9.1.tgz",
|
||||
"integrity": "sha512-vQ5Rlt0ZgB3/BNmTa7bIijYFhz3YBceAA3Z4JuoMSBftBF9YqFHIEhZakSs+O/Ad7EaoEimZvHxD5ylRjN11Lg==",
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"openai": "bin/cli"
|
||||
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mirotalk",
|
||||
"version": "1.6.38",
|
||||
"version": "1.6.39",
|
||||
"description": "A free WebRTC browser-based video call",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
@@ -42,8 +42,8 @@
|
||||
"homepage": "https://github.com/miroslavpejic85/mirotalk",
|
||||
"dependencies": {
|
||||
"@mattermost/client": "11.1.0",
|
||||
"@ngrok/ngrok": "1.5.2",
|
||||
"@sentry/node": "^10.25.0",
|
||||
"@ngrok/ngrok": "1.6.0",
|
||||
"@sentry/node": "^10.26.0",
|
||||
"axios": "^1.13.2",
|
||||
"chokidar": "^4.0.3",
|
||||
"colors": "^1.4.0",
|
||||
@@ -61,7 +61,7 @@
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"js-yaml": "^4.1.1",
|
||||
"nodemailer": "^7.0.10",
|
||||
"openai": "^6.9.0",
|
||||
"openai": "^6.9.1",
|
||||
"qs": "^6.14.0",
|
||||
"socket.io": "^4.8.1",
|
||||
"swagger-ui-express": "^5.0.1",
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ let brand = {
|
||||
},
|
||||
about: {
|
||||
imageUrl: '../images/mirotalk-logo.gif',
|
||||
title: 'WebRTC P2P v1.6.38',
|
||||
title: 'WebRTC P2P v1.6.39',
|
||||
html: `
|
||||
<button
|
||||
id="support-button"
|
||||
|
||||
+4
-10
@@ -15,7 +15,7 @@
|
||||
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.6.38
|
||||
* @version 1.6.39
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -555,6 +555,8 @@ let chatDataChannels = {}; // keep track of our peer chat data channels
|
||||
let fileDataChannels = {}; // keep track of our peer file sharing data channels
|
||||
let allPeers = {}; // keep track of all peers in the room, indexed by peer_id == socket.io id
|
||||
|
||||
let lastStats = null;
|
||||
|
||||
// stream
|
||||
let initStream; // initial webcam stream
|
||||
let localVideoMediaStream; // my webcam
|
||||
@@ -1213,14 +1215,6 @@ function initClientPeer() {
|
||||
signalingSocket.on('peerAction', handlePeerAction);
|
||||
signalingSocket.on('cmd', handleCmd);
|
||||
signalingSocket.on('message', handleMessage);
|
||||
signalingSocket.on('wbCanvasToJson', handleJsonToWbCanvas);
|
||||
signalingSocket.on('whiteboardAction', handleWhiteboardAction);
|
||||
signalingSocket.on('caption', handleCaptionActions);
|
||||
signalingSocket.on('kickOut', handleKickedOut);
|
||||
signalingSocket.on('fileInfo', handleFileInfo);
|
||||
signalingSocket.on('fileAbort', handleFileAbort);
|
||||
signalingSocket.on('fileReceiveAbort', handleAbortFileTransfer);
|
||||
signalingSocket.on('videoPlayer', handleVideoPlayer);
|
||||
signalingSocket.on('disconnect', handleDisconnect);
|
||||
signalingSocket.on('removePeer', handleRemovePeer);
|
||||
} // end [initClientPeer]
|
||||
@@ -12328,7 +12322,7 @@ function showAbout() {
|
||||
Swal.fire({
|
||||
background: swBg,
|
||||
position: 'center',
|
||||
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.6.38',
|
||||
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.6.39',
|
||||
imageUrl: brand.about?.imageUrl && brand.about.imageUrl.trim() !== '' ? brand.about.imageUrl : images.about,
|
||||
customClass: { image: 'img-about' },
|
||||
html: `
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
'use strict';
|
||||
|
||||
/*
|
||||
Fully correct WebRTC network stats collector.
|
||||
- Supports audio + video
|
||||
- Correct RTT (remote-inbound-rtp)
|
||||
- Correct jitter (inbound-rtp)
|
||||
- Multi-peer aggregation
|
||||
*/
|
||||
|
||||
const networkSent = document.getElementById('networkSent');
|
||||
const networkReceived = document.getElementById('networkReceived');
|
||||
const networkJitter = document.getElementById('networkJitter');
|
||||
const networkPacketLost = document.getElementById('networkPacketLost');
|
||||
const networkRtt = document.getElementById('networkRtt');
|
||||
|
||||
const statsInterval = 3000; // every 3 seconds
|
||||
|
||||
/**
|
||||
* Read network stats for a single RTCPeerConnection.
|
||||
* Works for both audio and video.
|
||||
*/
|
||||
async function getNetworkStats(pc) {
|
||||
let bytesSent = 0;
|
||||
let bytesReceived = 0;
|
||||
let packetsLost = 0;
|
||||
|
||||
let jitterSum = 0;
|
||||
let jitterCount = 0;
|
||||
|
||||
let rttSum = 0;
|
||||
let rttCount = 0;
|
||||
|
||||
if (!pc) {
|
||||
return { bytesSent, bytesReceived, packetsLost, jitter: 0, rtt: 0 };
|
||||
}
|
||||
|
||||
const stats = await pc.getStats();
|
||||
|
||||
stats.forEach((report) => {
|
||||
// Outbound: Anything we send (audio/video)
|
||||
if (report.type === 'outbound-rtp') {
|
||||
bytesSent += report.bytesSent || 0;
|
||||
}
|
||||
|
||||
// Inbound: Anything we receive (audio/video)
|
||||
if (report.type === 'inbound-rtp') {
|
||||
bytesReceived += report.bytesReceived || 0;
|
||||
packetsLost += report.packetsLost || 0;
|
||||
|
||||
if (report.jitter !== undefined) {
|
||||
jitterSum += report.jitter;
|
||||
jitterCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// RTT only exists in remote-inbound-rtp
|
||||
if (report.type === 'remote-inbound-rtp') {
|
||||
if (report.roundTripTime !== undefined) {
|
||||
rttSum += report.roundTripTime;
|
||||
rttCount++;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
bytesSent,
|
||||
bytesReceived,
|
||||
packetsLost,
|
||||
jitter: jitterCount ? jitterSum / jitterCount : 0,
|
||||
rtt: rttCount ? rttSum / rttCount : 0,
|
||||
};
|
||||
}
|
||||
|
||||
/** Convert bytes to readable string */
|
||||
function bytesToSize(bytes) {
|
||||
if (bytes === 0) return '0 b';
|
||||
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
||||
const sizes = ['b', 'Kb', 'Mb', 'Gb', 'Tb'];
|
||||
return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + sizes[i];
|
||||
}
|
||||
|
||||
/** Display into UI */
|
||||
function showNetworkStats(stats) {
|
||||
networkSent.innerText = stats.bytesSent;
|
||||
networkReceived.innerText = stats.bytesReceived;
|
||||
networkJitter.innerText = stats.jitter.toFixed(3) + ' s';
|
||||
networkPacketLost.innerText = stats.packetsLost;
|
||||
networkRtt.innerText = stats.rtt.toFixed(3) + ' s';
|
||||
|
||||
console.log('Network Stats:', stats);
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggregate all peer connections
|
||||
*/
|
||||
setInterval(async () => {
|
||||
let global = {
|
||||
bytesSent: 0,
|
||||
bytesReceived: 0,
|
||||
packetsLost: 0,
|
||||
jitter: 0,
|
||||
rtt: 0,
|
||||
};
|
||||
|
||||
let jitterCount = 0;
|
||||
let rttCount = 0;
|
||||
|
||||
for (const pc of Object.values(peerConnections)) {
|
||||
const s = await getNetworkStats(pc);
|
||||
|
||||
global.bytesSent += s.bytesSent;
|
||||
global.bytesReceived += s.bytesReceived;
|
||||
global.packetsLost += s.packetsLost;
|
||||
|
||||
if (s.jitter > 0) {
|
||||
global.jitter += s.jitter;
|
||||
jitterCount++;
|
||||
}
|
||||
|
||||
if (s.rtt > 0) {
|
||||
global.rtt += s.rtt;
|
||||
rttCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (jitterCount > 0) global.jitter /= jitterCount;
|
||||
if (rttCount > 0) global.rtt /= rttCount;
|
||||
|
||||
showNetworkStats({
|
||||
bytesSent: bytesToSize(global.bytesSent),
|
||||
bytesReceived: bytesToSize(global.bytesReceived),
|
||||
packetsLost: global.packetsLost,
|
||||
jitter: global.jitter,
|
||||
rtt: global.rtt,
|
||||
});
|
||||
}, statsInterval);
|
||||
@@ -791,7 +791,56 @@ access to use this app.
|
||||
<td><p id="networkTurn">🔴</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- <hr class="hr" /> -->
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<table id="mySettingsTable">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="title">
|
||||
<i class="fa-solid fa-upload"></i>
|
||||
<p>Sent</p>
|
||||
</div>
|
||||
</td>
|
||||
<td><p id="networkSent"></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="title">
|
||||
<i class="fa-solid fa-download"></i>
|
||||
<p>Received</p>
|
||||
</div>
|
||||
</td>
|
||||
<td><p id="networkReceived"></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="title">
|
||||
<i class="fa-solid fa-circle-exclamation"></i>
|
||||
<p>Packet Lost</p>
|
||||
</div>
|
||||
</td>
|
||||
<td><p id="networkPacketLost"></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="title">
|
||||
<i class="fa-solid fa-wave-square"></i>
|
||||
<p>Jitter</p>
|
||||
</div>
|
||||
</td>
|
||||
<td><p id="networkJitter"></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="title">
|
||||
<i class="fa-solid fa-clock-rotate-left"></i>
|
||||
<p>RTT</p>
|
||||
</div>
|
||||
</td>
|
||||
<td><p id="networkRtt"></p></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="tabStyling" class="tabcontent">
|
||||
@@ -1055,6 +1104,7 @@ access to use this app.
|
||||
<script defer src="../js/fixWebmDuration.js"></script>
|
||||
<script defer src="../js/screenReader.js"></script>
|
||||
<script defer src="../js/client.js"></script>
|
||||
<script defer src="../js/networkStats.js"></script>
|
||||
<script defer src="../js/speechRecognition.js"></script>
|
||||
<script defer src="../js/nodeProcessor.js"></script>
|
||||
|
||||
|
||||
@@ -800,7 +800,7 @@
|
||||
<div class="support-footer">
|
||||
<p class="text-sm mb-0">
|
||||
<strong>Other ways to help:</strong>
|
||||
<span class="ml-8" title="Star on GitHub">
|
||||
<span class="mlroomAction-8" title="Star on GitHub">
|
||||
<i class="fab fa-github"></i> Star us
|
||||
</span>
|
||||
<span class="mx-8">|</span>
|
||||
|
||||
Reference in New Issue
Block a user