livekit-server-sdk 1.2.7 → 2.0.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/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.github/workflows/release.yaml +46 -0
- package/.github/workflows/test.yaml +21 -21
- package/.prettierignore +1 -0
- package/CHANGELOG.md +23 -0
- package/README.md +47 -13
- package/dist/AccessToken.d.ts +4 -4
- package/dist/AccessToken.js +23 -42
- package/dist/AccessToken.js.map +1 -1
- package/dist/EgressClient.d.ts +2 -2
- package/dist/EgressClient.js +175 -185
- package/dist/EgressClient.js.map +1 -1
- package/dist/IngressClient.d.ts +2 -2
- package/dist/IngressClient.js +68 -92
- package/dist/IngressClient.js.map +1 -1
- package/dist/RoomServiceClient.d.ts +5 -5
- package/dist/RoomServiceClient.js +70 -108
- package/dist/RoomServiceClient.js.map +1 -1
- package/dist/ServiceBase.d.ts +2 -2
- package/dist/ServiceBase.js +5 -8
- package/dist/ServiceBase.js.map +1 -1
- package/dist/TwirpRPC.d.ts +2 -3
- package/dist/TwirpRPC.js +15 -23
- package/dist/TwirpRPC.js.map +1 -1
- package/dist/WebhookReceiver.d.ts +15 -2
- package/dist/WebhookReceiver.js +29 -19
- package/dist/WebhookReceiver.js.map +1 -1
- package/dist/grants.d.ts +2 -1
- package/dist/grants.js +2 -5
- package/dist/grants.js.map +1 -1
- package/dist/index.d.ts +9 -10
- package/dist/index.js +9 -48
- package/dist/index.js.map +1 -1
- package/dist/proto/livekit_egress_pb.d.ts +1650 -0
- package/dist/proto/livekit_egress_pb.js +1878 -0
- package/dist/proto/livekit_egress_pb.js.map +1 -0
- package/dist/proto/livekit_ingress_pb.d.ts +624 -0
- package/dist/proto/livekit_ingress_pb.js +824 -0
- package/dist/proto/livekit_ingress_pb.js.map +1 -0
- package/dist/proto/livekit_models_pb.d.ts +1349 -0
- package/dist/proto/livekit_models_pb.js +1829 -0
- package/dist/proto/livekit_models_pb.js.map +1 -0
- package/dist/proto/livekit_room_pb.d.ts +460 -0
- package/dist/proto/livekit_room_pb.js +695 -0
- package/dist/proto/livekit_room_pb.js.map +1 -0
- package/dist/proto/livekit_webhook_pb.d.ts +70 -0
- package/dist/proto/livekit_webhook_pb.js +76 -0
- package/dist/proto/livekit_webhook_pb.js.map +1 -0
- package/generate-proto.sh +1 -18
- package/package.json +32 -28
- package/tsconfig.eslint.json +2 -1
- package/vite.config.js +8 -0
- package/.github/workflows/publish.yaml +0 -57
- package/dist/AccessToken.test.d.ts +0 -1
- package/dist/AccessToken.test.js +0 -72
- package/dist/AccessToken.test.js.map +0 -1
- package/dist/WebhookReceiver.test.d.ts +0 -1
- package/dist/WebhookReceiver.test.js +0 -39
- package/dist/WebhookReceiver.test.js.map +0 -1
- package/dist/proto/google/protobuf/timestamp.d.ts +0 -132
- package/dist/proto/google/protobuf/timestamp.js +0 -92
- package/dist/proto/google/protobuf/timestamp.js.map +0 -1
- package/dist/proto/livekit_egress.d.ts +0 -17639
- package/dist/proto/livekit_egress.js +0 -3601
- package/dist/proto/livekit_egress.js.map +0 -1
- package/dist/proto/livekit_ingress.d.ts +0 -2260
- package/dist/proto/livekit_ingress.js +0 -1401
- package/dist/proto/livekit_ingress.js.map +0 -1
- package/dist/proto/livekit_models.d.ts +0 -1563
- package/dist/proto/livekit_models.js +0 -3259
- package/dist/proto/livekit_models.js.map +0 -1
- package/dist/proto/livekit_room.d.ts +0 -4989
- package/dist/proto/livekit_room.js +0 -1131
- package/dist/proto/livekit_room.js.map +0 -1
- package/dist/proto/livekit_webhook.d.ts +0 -6738
- package/dist/proto/livekit_webhook.js +0 -179
- package/dist/proto/livekit_webhook.js.map +0 -1
- /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Changesets
|
|
2
|
+
|
|
3
|
+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
|
|
4
|
+
with multi-package repos, or single-package repos to help you version and publish your code. You can
|
|
5
|
+
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
|
|
6
|
+
|
|
7
|
+
We have a quick list of common questions to get you started engaging with this project in
|
|
8
|
+
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json",
|
|
3
|
+
"changelog": ["@livekit/changesets-changelog-github", { "repo": "livekit/server-sdk-js" }],
|
|
4
|
+
"commit": false,
|
|
5
|
+
"fixed": [],
|
|
6
|
+
"linked": [],
|
|
7
|
+
"access": "public",
|
|
8
|
+
"baseBranch": "main",
|
|
9
|
+
"updateInternalDependencies": "patch",
|
|
10
|
+
"ignore": []
|
|
11
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release:
|
|
12
|
+
name: Release
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout Repo
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
- uses: pnpm/action-setup@v2
|
|
18
|
+
with:
|
|
19
|
+
version: 8
|
|
20
|
+
- name: Use Node.js 20
|
|
21
|
+
uses: actions/setup-node@v4
|
|
22
|
+
with:
|
|
23
|
+
node-version: 20
|
|
24
|
+
cache: 'pnpm'
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: pnpm install
|
|
27
|
+
- name: Create Release Pull Request or Publish to npm
|
|
28
|
+
id: changesets
|
|
29
|
+
uses: changesets/action@v1
|
|
30
|
+
with:
|
|
31
|
+
publish: pnpm ci:publish
|
|
32
|
+
env:
|
|
33
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
34
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
35
|
+
- name: Build Docs
|
|
36
|
+
if: steps.changesets.outputs.published == 'true'
|
|
37
|
+
run: pnpm build-docs
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
- name: S3 Upload
|
|
41
|
+
if: steps.changesets.outputs.published == 'true'
|
|
42
|
+
run: aws s3 cp docs/ s3://livekit-docs/server-sdk-js --recursive
|
|
43
|
+
env:
|
|
44
|
+
AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }}
|
|
45
|
+
AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }}
|
|
46
|
+
AWS_DEFAULT_REGION: "us-east-1"
|
|
@@ -11,36 +11,36 @@ on:
|
|
|
11
11
|
|
|
12
12
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
13
13
|
jobs:
|
|
14
|
-
test:
|
|
14
|
+
test-node:
|
|
15
15
|
# The type of runner that the job will run on
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
|
-
|
|
18
17
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
19
18
|
steps:
|
|
20
19
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
21
|
-
- uses: actions/checkout@
|
|
22
|
-
- uses:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
- uses: pnpm/action-setup@v2
|
|
23
22
|
with:
|
|
24
|
-
|
|
25
|
-
-
|
|
23
|
+
version: 8
|
|
24
|
+
- name: Use Node.js 20
|
|
25
|
+
uses: actions/setup-node@v4
|
|
26
26
|
with:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
restore-keys: |
|
|
32
|
-
${{ runner.os }}-node-server-api-
|
|
33
|
-
|
|
34
|
-
- name: Install Yarn
|
|
35
|
-
run: |
|
|
36
|
-
npm install -g yarn
|
|
37
|
-
yarn install
|
|
27
|
+
node-version: 20
|
|
28
|
+
cache: 'pnpm'
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: pnpm install
|
|
38
31
|
|
|
39
32
|
- name: Lint
|
|
40
|
-
run:
|
|
33
|
+
run: pnpm lint
|
|
41
34
|
|
|
42
35
|
- name: Prettier
|
|
43
|
-
run:
|
|
36
|
+
run: pnpm format:check
|
|
44
37
|
|
|
45
|
-
- name: Test
|
|
46
|
-
run:
|
|
38
|
+
- name: Test Node
|
|
39
|
+
run: pnpm test
|
|
40
|
+
|
|
41
|
+
- name: Test browser
|
|
42
|
+
run: pnpm test:browser
|
|
43
|
+
|
|
44
|
+
- name: Test edge runtime
|
|
45
|
+
run: pnpm test:edge
|
|
46
|
+
|
package/.prettierignore
CHANGED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# livekit-server-sdk
|
|
2
|
+
|
|
3
|
+
## 2.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- Change module type to ESM - [#118](https://github.com/livekit/server-sdk-js/pull/118) ([@lukasIO](https://github.com/lukasIO))
|
|
8
|
+
|
|
9
|
+
- Require node 18 as minimum version - [#118](https://github.com/livekit/server-sdk-js/pull/118) ([@lukasIO](https://github.com/lukasIO))
|
|
10
|
+
|
|
11
|
+
- Make `WebhookEvent` names type safe - [#125](https://github.com/livekit/server-sdk-js/pull/125) ([@lukasIO](https://github.com/lukasIO))
|
|
12
|
+
|
|
13
|
+
- Token generation is now async (replaced jsonwebtoken with jose for better JS runtime support) - [#118](https://github.com/livekit/server-sdk-js/pull/118) ([@lukasIO](https://github.com/lukasIO))
|
|
14
|
+
|
|
15
|
+
- Replace protobufjs with protobuf-es - [#118](https://github.com/livekit/server-sdk-js/pull/118) ([@lukasIO](https://github.com/lukasIO))
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- Use globally available web crypto API instead of nodeJS crypto module - [#122](https://github.com/livekit/server-sdk-js/pull/122) ([@lukasIO](https://github.com/lukasIO))
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Throw error on bad Twirp response status and use async/await instead of promise chaining for improved error catching - [#124](https://github.com/livekit/server-sdk-js/pull/124) ([@lukasIO](https://github.com/lukasIO))
|
package/README.md
CHANGED
|
@@ -10,8 +10,50 @@
|
|
|
10
10
|
|
|
11
11
|
<!--BEGIN_DESCRIPTION-->Use this SDK to manage <a href="https://livekit.io/">LiveKit</a> rooms and create access tokens from your JavaScript/Node.js backend.<!--END_DESCRIPTION-->
|
|
12
12
|
|
|
13
|
+
> [!NOTE]
|
|
14
|
+
> This is v2 of the server-sdk-js which runs in NodeJS, Deno and Bun!
|
|
15
|
+
> (It theoretically now also runs in every major browser, but that's not recommended due to the security risks involved with exposing your API secrets)
|
|
16
|
+
> Read the section below for a detailed overview on what has changed.
|
|
17
|
+
|
|
18
|
+
## Migrate from v1.x to v2.x
|
|
19
|
+
|
|
20
|
+
Because the `jsonwebtoken` lib got replaced with `jose`, there are a couple of APIs that are now async, that weren't before:
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
const at = new AccessToken('api-key', 'secret-key', {
|
|
24
|
+
identity: participantName,
|
|
25
|
+
});
|
|
26
|
+
at.addGrant({ roomJoin: true, room: roomName });
|
|
27
|
+
|
|
28
|
+
// v1
|
|
29
|
+
// const token = at.toJWT();
|
|
30
|
+
|
|
31
|
+
// v2
|
|
32
|
+
const token = await at.toJwt();
|
|
33
|
+
|
|
34
|
+
// v1
|
|
35
|
+
// const grants = v.verify(token);
|
|
36
|
+
|
|
37
|
+
// v2
|
|
38
|
+
const grants = await v.verify(token);
|
|
39
|
+
|
|
40
|
+
app.post('/webhook-endpoint', async (req, res) => {
|
|
41
|
+
// v1
|
|
42
|
+
// const event = receiver.receive(req.body, req.get('Authorization'));
|
|
43
|
+
|
|
44
|
+
// v2
|
|
45
|
+
const event = await receiver.receive(req.body, req.get('Authorization'));
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
13
49
|
## Installation
|
|
14
50
|
|
|
51
|
+
### Pnpm
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
pnpm add livekit-server-sdk
|
|
55
|
+
```
|
|
56
|
+
|
|
15
57
|
### Yarn
|
|
16
58
|
|
|
17
59
|
```
|
|
@@ -33,16 +75,6 @@ You may store credentials in environment variables. If api-key or api-secret is
|
|
|
33
75
|
- `LIVEKIT_API_KEY`
|
|
34
76
|
- `LIVEKIT_API_SECRET`
|
|
35
77
|
|
|
36
|
-
### CommonJS
|
|
37
|
-
|
|
38
|
-
If your environment doesn't support ES6 imports, replace the import statements in the examples with
|
|
39
|
-
|
|
40
|
-
```javascript
|
|
41
|
-
const livekitApi = require('livekit-server-sdk');
|
|
42
|
-
const AccessToken = livekitApi.AccessToken;
|
|
43
|
-
const RoomServiceClient = livekitApi.RoomServiceClient;
|
|
44
|
-
```
|
|
45
|
-
|
|
46
78
|
### Creating Access Tokens
|
|
47
79
|
|
|
48
80
|
Creating a token for participant to join a room.
|
|
@@ -62,7 +94,7 @@ const at = new AccessToken('api-key', 'secret-key', {
|
|
|
62
94
|
});
|
|
63
95
|
at.addGrant({ roomJoin: true, room: roomName });
|
|
64
96
|
|
|
65
|
-
const token = at.toJwt();
|
|
97
|
+
const token = await at.toJwt();
|
|
66
98
|
console.log('access token', token);
|
|
67
99
|
```
|
|
68
100
|
|
|
@@ -135,14 +167,16 @@ const receiver = new WebhookReceiver('apikey', 'apisecret');
|
|
|
135
167
|
// if you are using express middleware, ensure that `express.raw` is used for the webhook endpoint
|
|
136
168
|
// app.use(express.raw({type: 'application/webhook+json'}));
|
|
137
169
|
|
|
138
|
-
app.post('/webhook-endpoint', (req, res) => {
|
|
170
|
+
app.post('/webhook-endpoint', async (req, res) => {
|
|
139
171
|
// event is a WebhookEvent object
|
|
140
|
-
const event = receiver.receive(req.body, req.get('Authorization'));
|
|
172
|
+
const event = await receiver.receive(req.body, req.get('Authorization'));
|
|
141
173
|
});
|
|
142
174
|
```
|
|
143
175
|
|
|
144
176
|
<!--BEGIN_REPO_NAV-->
|
|
177
|
+
|
|
145
178
|
<br/><table>
|
|
179
|
+
|
|
146
180
|
<thead><tr><th colspan="2">LiveKit Ecosystem</th></tr></thead>
|
|
147
181
|
<tbody>
|
|
148
182
|
<tr><td>Client SDKs</td><td><a href="https://github.com/livekit/components-js">Components</a> · <a href="https://github.com/livekit/client-sdk-js">JavaScript</a> · <a href="https://github.com/livekit/client-sdk-swift">iOS/macOS</a> · <a href="https://github.com/livekit/client-sdk-android">Android</a> · <a href="https://github.com/livekit/client-sdk-flutter">Flutter</a> · <a href="https://github.com/livekit/client-sdk-react-native">React Native</a> · <a href="https://github.com/livekit/client-sdk-rust">Rust</a> · <a href="https://github.com/livekit/client-sdk-python">Python</a> · <a href="https://github.com/livekit/client-sdk-unity-web">Unity (web)</a> · <a href="https://github.com/livekit/client-sdk-unity">Unity (beta)</a></td></tr><tr></tr>
|
package/dist/AccessToken.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClaimGrants, VideoGrant } from './grants';
|
|
1
|
+
import { ClaimGrants, VideoGrant } from './grants.js';
|
|
2
2
|
export interface AccessTokenOptions {
|
|
3
3
|
/**
|
|
4
4
|
* amount of time before expiration
|
|
@@ -24,7 +24,7 @@ export declare class AccessToken {
|
|
|
24
24
|
private apiSecret;
|
|
25
25
|
private grants;
|
|
26
26
|
identity?: string;
|
|
27
|
-
ttl
|
|
27
|
+
ttl: number | string;
|
|
28
28
|
/**
|
|
29
29
|
* Creates a new AccessToken
|
|
30
30
|
* @param apiKey API Key, can be set in env LIVEKIT_API_KEY
|
|
@@ -46,11 +46,11 @@ export declare class AccessToken {
|
|
|
46
46
|
/**
|
|
47
47
|
* @returns JWT encoded token
|
|
48
48
|
*/
|
|
49
|
-
toJwt(): string
|
|
49
|
+
toJwt(): Promise<string>;
|
|
50
50
|
}
|
|
51
51
|
export declare class TokenVerifier {
|
|
52
52
|
private apiKey;
|
|
53
53
|
private apiSecret;
|
|
54
54
|
constructor(apiKey: string, apiSecret: string);
|
|
55
|
-
verify(token: string): ClaimGrants
|
|
55
|
+
verify(token: string): Promise<ClaimGrants>;
|
|
56
56
|
}
|
package/dist/AccessToken.js
CHANGED
|
@@ -1,29 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.TokenVerifier = exports.AccessToken = void 0;
|
|
23
|
-
const jwt = __importStar(require("jsonwebtoken"));
|
|
1
|
+
import * as jose from 'jose';
|
|
24
2
|
// 6 hours
|
|
25
|
-
const defaultTTL =
|
|
26
|
-
class AccessToken {
|
|
3
|
+
const defaultTTL = `6h`;
|
|
4
|
+
export class AccessToken {
|
|
27
5
|
/**
|
|
28
6
|
* Creates a new AccessToken
|
|
29
7
|
* @param apiKey API Key, can be set in env LIVEKIT_API_KEY
|
|
@@ -50,6 +28,9 @@ class AccessToken {
|
|
|
50
28
|
this.grants = {};
|
|
51
29
|
this.identity = options === null || options === void 0 ? void 0 : options.identity;
|
|
52
30
|
this.ttl = (options === null || options === void 0 ? void 0 : options.ttl) || defaultTTL;
|
|
31
|
+
if (typeof this.ttl === 'number') {
|
|
32
|
+
this.ttl = `${this.ttl}s`;
|
|
33
|
+
}
|
|
53
34
|
if (options === null || options === void 0 ? void 0 : options.metadata) {
|
|
54
35
|
this.metadata = options.metadata;
|
|
55
36
|
}
|
|
@@ -62,7 +43,8 @@ class AccessToken {
|
|
|
62
43
|
* @param grant
|
|
63
44
|
*/
|
|
64
45
|
addGrant(grant) {
|
|
65
|
-
|
|
46
|
+
var _a;
|
|
47
|
+
this.grants.video = Object.assign(Object.assign({}, ((_a = this.grants.video) !== null && _a !== void 0 ? _a : {})), grant);
|
|
66
48
|
}
|
|
67
49
|
/**
|
|
68
50
|
* Set metadata to be passed to the Participant, used only when joining the room
|
|
@@ -82,37 +64,36 @@ class AccessToken {
|
|
|
82
64
|
/**
|
|
83
65
|
* @returns JWT encoded token
|
|
84
66
|
*/
|
|
85
|
-
toJwt() {
|
|
67
|
+
async toJwt() {
|
|
86
68
|
// TODO: check for video grant validity
|
|
87
69
|
var _a;
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
70
|
+
const secret = new TextEncoder().encode(this.apiSecret);
|
|
71
|
+
const jwt = new jose.SignJWT(this.grants)
|
|
72
|
+
.setProtectedHeader({ alg: 'HS256' })
|
|
73
|
+
.setIssuer(this.apiKey)
|
|
74
|
+
.setExpirationTime(this.ttl)
|
|
75
|
+
.setNotBefore(0);
|
|
93
76
|
if (this.identity) {
|
|
94
|
-
|
|
95
|
-
opts.jwtid = this.identity;
|
|
77
|
+
jwt.setSubject(this.identity);
|
|
96
78
|
}
|
|
97
79
|
else if ((_a = this.grants.video) === null || _a === void 0 ? void 0 : _a.roomJoin) {
|
|
98
80
|
throw Error('identity is required for join but not set');
|
|
99
81
|
}
|
|
100
|
-
return jwt.sign(
|
|
82
|
+
return jwt.sign(secret);
|
|
101
83
|
}
|
|
102
84
|
}
|
|
103
|
-
|
|
104
|
-
class TokenVerifier {
|
|
85
|
+
export class TokenVerifier {
|
|
105
86
|
constructor(apiKey, apiSecret) {
|
|
106
87
|
this.apiKey = apiKey;
|
|
107
88
|
this.apiSecret = apiSecret;
|
|
108
89
|
}
|
|
109
|
-
verify(token) {
|
|
110
|
-
const
|
|
111
|
-
|
|
90
|
+
async verify(token) {
|
|
91
|
+
const secret = new TextEncoder().encode(this.apiSecret);
|
|
92
|
+
const { payload } = await jose.jwtVerify(token, secret, { issuer: this.apiKey });
|
|
93
|
+
if (!payload) {
|
|
112
94
|
throw Error('invalid token');
|
|
113
95
|
}
|
|
114
|
-
return
|
|
96
|
+
return payload;
|
|
115
97
|
}
|
|
116
98
|
}
|
|
117
|
-
exports.TokenVerifier = TokenVerifier;
|
|
118
99
|
//# sourceMappingURL=AccessToken.js.map
|
package/dist/AccessToken.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessToken.js","sourceRoot":"","sources":["../src/AccessToken.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccessToken.js","sourceRoot":"","sources":["../src/AccessToken.ts"],"names":[],"mappings":"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"}
|
package/dist/EgressClient.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DirectFileOutput, EgressInfo, EncodedFileOutput, EncodingOptions, EncodingOptionsPreset, SegmentedFileOutput, StreamOutput } from './proto/
|
|
2
|
-
import ServiceBase from './ServiceBase';
|
|
1
|
+
import { DirectFileOutput, EgressInfo, EncodedFileOutput, EncodingOptions, EncodingOptionsPreset, SegmentedFileOutput, StreamOutput } from './proto/livekit_egress_pb.js';
|
|
2
|
+
import ServiceBase from './ServiceBase.js';
|
|
3
3
|
export interface RoomCompositeOptions {
|
|
4
4
|
/**
|
|
5
5
|
* egress layout. optional
|