diff --git a/package-lock.json b/package-lock.json index cf5f1ee12..54aea9b83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -111,6 +111,7 @@ "langchain": "0.2.17", "language-tags": "1.0.9", "line-replace": "2.0.1", + "livekit-server-sdk": "^2.12.0", "lodash": "4.17.21", "luxon": "3.5.0", "mammoth": "1.8.0", @@ -2833,6 +2834,12 @@ "node": ">=6.9.0" } }, + "node_modules/@bufbuild/protobuf": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.1.tgz", + "integrity": "sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, "node_modules/@canvas/image-data": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", @@ -5919,6 +5926,15 @@ "integrity": "sha512-QZqem4QuAnAyzfz+Gj5/+SLxqwCAw2qmt7732ZXodr6VDWGeYLG6w1i/vYLa55JQM9wRuBKLmXmiZ2P0LtE5rw==", "license": "MIT" }, + "node_modules/@livekit/protocol": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@livekit/protocol/-/protocol-1.37.0.tgz", + "integrity": "sha512-TV53woej1pvKQLDUA7DxEVpQiK2hX/6nLNxUP8TZrzguIX4CreTkdb97cLyMq5rPi/YB/uLRoG373WqhCnNRbA==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^1.10.0" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -24988,6 +25004,15 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jose": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -27237,6 +27262,75 @@ "dev": true, "license": "0BSD" }, + "node_modules/livekit-server-sdk": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/livekit-server-sdk/-/livekit-server-sdk-2.12.0.tgz", + "integrity": "sha512-6i2l0Ja1yhYvCXqU9wZ3SlWPEm1pYXpSJbpmT3sN0UWS61+jF6qkVY4AeSRQ53w5zrgzLBIyDwooBEMxz7XyMw==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^1.7.2", + "@livekit/protocol": "^1.36.1", + "camelcase-keys": "^9.0.0", + "jose": "^5.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/livekit-server-sdk/node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/livekit-server-sdk/node_modules/camelcase-keys": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-9.1.3.tgz", + "integrity": "sha512-Rircqi9ch8AnZscQcsA1C47NFdaO3wukpmIRzYcDOrmvgt78hM/sj5pZhZNec2NM12uk5vTwRHZ4anGcrC4ZTg==", + "license": "MIT", + "dependencies": { + "camelcase": "^8.0.0", + "map-obj": "5.0.0", + "quick-lru": "^6.1.1", + "type-fest": "^4.3.2" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/livekit-server-sdk/node_modules/map-obj": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.0.tgz", + "integrity": "sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/livekit-server-sdk/node_modules/type-fest": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", + "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/load-bmfont": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", diff --git a/package.json b/package.json index b1fcaf76f..38919725f 100644 --- a/package.json +++ b/package.json @@ -171,6 +171,7 @@ "langchain": "0.2.17", "language-tags": "1.0.9", "line-replace": "2.0.1", + "livekit-server-sdk": "^2.12.0", "lodash": "4.17.21", "luxon": "3.5.0", "mammoth": "1.8.0", diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index d0c8e3c35..3dfc351df 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -37,6 +37,7 @@ import { createRpcServer } from '@push-rpc/core'; import AuthenticationContext from 'adal-node'; import arrayBufferToBuffer from 'arraybuffer-to-buffer'; import { Semaphore } from 'async-mutex'; +import { AccessToken } from 'livekit-server-sdk'; import { Mutex } from 'async-mutex'; import chokidar from 'chokidar'; import cors from 'cors'; @@ -588,7 +589,7 @@ export class GBMinService { } // 3. Generate token - const { AccessToken } = require('livekit-server-sdk'); + const token = new AccessToken(apiKey, apiSecret, { identity: identity.toString(), name: name?.toString() || identity.toString()