diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 05356c0..0000000 --- a/.dockerignore +++ /dev/null @@ -1,8 +0,0 @@ -.github/ -.husky/ -.idea/ -.vscode/ - -node_modules/ -dist/ -files/ diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 3df58d7..1019af7 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -18,6 +18,7 @@ - cdn - api - gateway + - webrtc - admin-api - cdn-cs - gateway-offload diff --git a/extra/admin-api/outputs.nix b/extra/admin-api/outputs.nix index fa80b39..511b92f 100644 --- a/extra/admin-api/outputs.nix +++ b/extra/admin-api/outputs.nix @@ -221,7 +221,7 @@ Spacebar-UApi = makeNupkg { name = "Spacebar.UApi"; nugetDeps = Spacebar.UApi/deps.json; - projectFile = "Spacebar.UApid.csproj"; + projectFile = "Spacebar.UApi.csproj"; srcRoot = ./Spacebar.UApi; packNupkg = false; projectReferences = [ diff --git a/node-modules.nix b/node-modules.nix index aa75d6c..b064ee0 100644 --- a/node-modules.nix +++ b/node-modules.nix @@ -37,6 +37,7 @@ dontNpmBuild = true; makeCacheWritable = true; + nativeBuildInputs = with pkgs; [ (pkgs.python3.withPackages (ps: with ps; [ setuptools ])) ]; diff --git a/package-lock.json b/package-lock.json index 612c59e..286a077 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "hasInstallScript": true, "license": "AGPL-3.0-only", "dependencies": { + "@spacebarchat/medooze-webrtc": "^1.0.10", "@toondepauw/node-zstd": "^1.2.0", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", @@ -204,6 +205,12 @@ "node": ">=12" } }, + "node_modules/@dank074/medooze-media-server-src": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@dank074/medooze-media-server-src/-/medooze-media-server-src-3.1.2.tgz", + "integrity": "sha512-2FPvMruHWBdPOZSNTOeq77nIH2jg7zy7oR46NrqR/SSVH4h/u1bMSZrYOFkYMl3uubBa0G4imHaz9R9ljRXEtw==", + "peer": true + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -1190,12 +1197,58 @@ "node": ">=12.*" } }, + "node_modules/@spacebarchat/medooze-media-server": { + "version": "1.156.9", + "resolved": "https://registry.npmjs.org/@spacebarchat/medooze-media-server/-/medooze-media-server-1.156.9.tgz", + "integrity": "sha512-mfwtgy7zhVGdFwjwpHuXyVGcJfkHggMjWs3e/FISakfHWZtGe2JM8vDYMoQELbmOjDm0keMN+pf3BNQexqmzmA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "lfsr": "0.0.3", + "medooze-event-emitter": "^1.2.0", + "nan": "^2.25.0", + "semantic-sdp": "^3.31.1", + "uuid": "^13.0.0" + }, + "optionalDependencies": { + "netlink": "^0" + }, + "peerDependencies": { + "@dank074/medooze-media-server-src": "^3.1.2" + } + }, + "node_modules/@spacebarchat/medooze-media-server/node_modules/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/@spacebarchat/medooze-webrtc": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@spacebarchat/medooze-webrtc/-/medooze-webrtc-1.0.10.tgz", + "integrity": "sha512-FOzDmmlaCfVNkjVv8xWkaC3mylgtGmyRGro8v/0v6y3uaD4mp4+zwTItO0hze1cPGZIfnBrheNRzBnPh/wbfBw==", + "license": "AGPL-3.0-only", + "dependencies": { + "@spacebarchat/medooze-media-server": "^1.156.9", + "semantic-sdp": "^3.31.1" + }, + "peerDependencies": { + "@spacebarchat/spacebar-webrtc-types": "^1.0.1" + } + }, "node_modules/@spacebarchat/spacebar-webrtc-types": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@spacebarchat/spacebar-webrtc-types/-/spacebar-webrtc-types-1.0.1.tgz", "integrity": "sha512-WfBRUN2520w7o5vU9HNDug9alNvydQP7H/jwAy8LeHTHwlMMUw/60A54FQDIAtsahw787fR3QZ83UGjhKDzDTg==", - "dev": true, - "license": "AGPL-3.0-only" + "license": "AGPL-3.0-only", + "peer": true }, "node_modules/@sqltools/formatter": { "version": "1.2.5", @@ -3271,6 +3324,12 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/equals-ignore-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equals-ignore-case/-/equals-ignore-case-1.0.1.tgz", + "integrity": "sha512-krgK/Px09jhcc7wK5/lxApRv7XmIT/fSgrMwdaW/V1FmPJEIJMNGEMhe0U9tJ/97rPe75MHKPRqi7/8Tqz6NMA==", + "license": "ISC" + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -4831,6 +4890,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lfsr": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/lfsr/-/lfsr-0.0.3.tgz", + "integrity": "sha512-ULgtgP6beEo825H4BExHQgNeD3YuKK/roMnWKdDbWA/g1PzFPkAb2tF0yPdMCF4T4OJ6LhzhG3TRQu56usjFfA==", + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4967,6 +5032,12 @@ "node": ">= 0.8" } }, + "node_modules/medooze-event-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/medooze-event-emitter/-/medooze-event-emitter-1.2.1.tgz", + "integrity": "sha512-1gu3IGm+aj6xdjVKNdE8qABP6s4/m6qNUKxmEg5LOLxsNNd9AB+/h/K4iAN77338e/XxigTdfuzk0EZMyTw0Pw==", + "license": "MIT" + }, "node_modules/merge-descriptors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", @@ -5233,6 +5304,12 @@ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==", "license": "MIT" }, + "node_modules/nan": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz", + "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==", + "license": "MIT" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5287,6 +5364,29 @@ "node": ">= 0.6" } }, + "node_modules/netlink": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/netlink/-/netlink-0.3.0.tgz", + "integrity": "sha512-rv4E4AAdtzhmltFKdzgOPSrFqM/D5YcJR+t99zwoQ997KMmx0W52AxyUkOILyk+zGZzr7U9M60BXoSTHfkmCPg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "^12.0.0", + "node-addon-api": "*", + "node-gyp-build": "^4.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/netlink/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT", + "optional": true + }, "node_modules/node-2fa": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/node-2fa/-/node-2fa-2.0.3.tgz", @@ -6202,6 +6302,15 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "license": "MIT" }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -6392,6 +6501,26 @@ "node": ">=11.0.0" } }, + "node_modules/sdp-transform": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.15.0.tgz", + "integrity": "sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==", + "license": "MIT", + "bin": { + "sdp-verify": "checker.js" + } + }, + "node_modules/semantic-sdp": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/semantic-sdp/-/semantic-sdp-3.31.1.tgz", + "integrity": "sha512-esBGP11uWeHyvGwqDT1sf1p45H+kb7m5D49TIBHwYXXepzDFD24ar91eIwBQ8kwWWO8MNZfizsZ7CvBgYV9GuA==", + "license": "MIT", + "dependencies": { + "equals-ignore-case": "^1.0.0", + "randombytes": "^2.0.3", + "sdp-transform": "^2" + } + }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", diff --git a/package.json b/package.json index e9a103e..e3bc55e 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "typescript-json-schema": "^0.65.1" }, "dependencies": { + "@spacebarchat/medooze-webrtc": "^1.0.10", "@toondepauw/node-zstd": "^1.2.0", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", diff --git a/src/webrtc/util/MediaServer.ts b/src/webrtc/util/MediaServer.ts index 0f64bc0..eb16632 100644 --- a/src/webrtc/util/MediaServer.ts +++ b/src/webrtc/util/MediaServer.ts @@ -52,7 +52,7 @@ console.log(`[WebRTC] ${green(`Succesfully loaded ${selectedWrtcLibrary}`)}`); return Promise.resolve(); } catch (error) { - console.log(`[WebRTC] ${red(`Failed to import ${selectedWrtcLibrary}: ${error instanceof NoConfiguredLibraryError ? error.message : ""}`)}`); + console.log(`[WebRTC] ${red(`Failed to import ${selectedWrtcLibrary}: ${error instanceof NoConfiguredLibraryError ? error.message : (error as Error).message}`)}`); return Promise.reject(); }