livekit-server-sdk 2.3.0 → 2.5.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 +80 -95
- package/dist/AccessToken.d.ts +15 -3
- package/dist/AccessToken.d.ts.map +1 -0
- package/dist/AccessToken.js +32 -3
- package/dist/AccessToken.js.map +1 -1
- package/dist/EgressClient.d.ts +1 -0
- package/dist/EgressClient.d.ts.map +1 -0
- package/dist/EgressClient.js +5 -2
- package/dist/EgressClient.js.map +1 -1
- package/dist/IngressClient.d.ts +1 -0
- package/dist/IngressClient.d.ts.map +1 -0
- package/dist/IngressClient.js +3 -0
- package/dist/IngressClient.js.map +1 -1
- package/dist/RoomServiceClient.d.ts +4 -2
- package/dist/RoomServiceClient.d.ts.map +1 -0
- package/dist/RoomServiceClient.js.map +1 -1
- package/dist/ServiceBase.d.ts +3 -2
- package/dist/ServiceBase.d.ts.map +1 -0
- package/dist/ServiceBase.js +7 -1
- package/dist/ServiceBase.js.map +1 -1
- package/dist/SipClient.d.ts +43 -1
- package/dist/SipClient.d.ts.map +1 -0
- package/dist/SipClient.js +111 -11
- package/dist/SipClient.js.map +1 -1
- package/dist/TwirpRPC.d.ts +1 -0
- package/dist/TwirpRPC.d.ts.map +1 -0
- package/dist/TwirpRPC.js.map +1 -1
- package/dist/WebhookReceiver.d.ts +2 -1
- package/dist/WebhookReceiver.d.ts.map +1 -0
- package/dist/WebhookReceiver.js.map +1 -1
- package/dist/grants.d.ts +12 -2
- package/dist/grants.d.ts.map +1 -0
- package/dist/grants.js +3 -0
- package/dist/grants.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -8
- package/src/AccessToken.test.ts +100 -0
- package/src/AccessToken.ts +184 -0
- package/src/EgressClient.ts +617 -0
- package/src/IngressClient.ts +257 -0
- package/src/RoomServiceClient.ts +359 -0
- package/src/ServiceBase.ts +38 -0
- package/src/SipClient.ts +427 -0
- package/src/TwirpRPC.ts +54 -0
- package/src/WebhookReceiver.test.ts +44 -0
- package/src/WebhookReceiver.ts +85 -0
- package/src/grants.test.ts +30 -0
- package/src/grants.ts +107 -0
- package/src/index.ts +53 -0
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -11
- package/.eslintrc.cjs +0 -17
- package/.github/banner_dark.png +0 -0
- package/.github/banner_light.png +0 -0
- package/.github/workflows/release.yaml +0 -46
- package/.github/workflows/test.yaml +0 -46
- package/.gitmodules +0 -3
- package/.prettierignore +0 -8
- package/CHANGELOG.md +0 -87
- package/NOTICE +0 -13
- package/renovate.json +0 -18
- package/tsconfig.eslint.json +0 -5
- package/vite.config.js +0 -8
package/dist/SipClient.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { CreateSIPDispatchRuleRequest, CreateSIPInboundTrunkRequest, CreateSIPOutboundTrunkRequest, CreateSIPParticipantRequest, CreateSIPTrunkRequest, DeleteSIPDispatchRuleRequest, DeleteSIPTrunkRequest, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, ListSIPInboundTrunkRequest, ListSIPInboundTrunkResponse, ListSIPOutboundTrunkRequest, ListSIPOutboundTrunkResponse, ListSIPTrunkRequest, ListSIPTrunkResponse, SIPDispatchRule, SIPDispatchRuleDirect, SIPDispatchRuleIndividual, SIPDispatchRuleInfo, SIPInboundTrunkInfo, SIPOutboundTrunkInfo, SIPParticipantInfo, SIPTransport, SIPTrunkInfo, } from '@livekit/protocol';
|
|
2
5
|
import ServiceBase from './ServiceBase.js';
|
|
3
|
-
import {
|
|
6
|
+
import { TwirpRpc, livekitPackage } from './TwirpRPC.js';
|
|
4
7
|
const svc = 'SIP';
|
|
5
8
|
/**
|
|
6
9
|
* Client to access Egress APIs
|
|
@@ -18,6 +21,7 @@ export class SipClient extends ServiceBase {
|
|
|
18
21
|
/**
|
|
19
22
|
* @param number phone number of the trunk
|
|
20
23
|
* @param opts CreateSipTrunkOptions
|
|
24
|
+
* @deprecated use createSipInboundTrunk or createSipOutboundTrunk
|
|
21
25
|
*/
|
|
22
26
|
async createSipTrunk(number, opts) {
|
|
23
27
|
let inboundAddresses;
|
|
@@ -27,6 +31,8 @@ export class SipClient extends ServiceBase {
|
|
|
27
31
|
let outboundAddress = '';
|
|
28
32
|
let outboundUsername = '';
|
|
29
33
|
let outboundPassword = '';
|
|
34
|
+
let name = '';
|
|
35
|
+
let metadata = '';
|
|
30
36
|
if (opts !== undefined) {
|
|
31
37
|
inboundAddresses = opts.inbound_addresses;
|
|
32
38
|
inboundNumbers = opts.inbound_numbers;
|
|
@@ -35,8 +41,12 @@ export class SipClient extends ServiceBase {
|
|
|
35
41
|
outboundAddress = opts.outbound_address || '';
|
|
36
42
|
outboundUsername = opts.outbound_username || '';
|
|
37
43
|
outboundPassword = opts.outbound_password || '';
|
|
44
|
+
name = opts.name || '';
|
|
45
|
+
metadata = opts.metadata || '';
|
|
38
46
|
}
|
|
39
47
|
const req = new CreateSIPTrunkRequest({
|
|
48
|
+
name: name,
|
|
49
|
+
metadata: metadata,
|
|
40
50
|
inboundAddresses: inboundAddresses,
|
|
41
51
|
inboundNumbers: inboundNumbers,
|
|
42
52
|
inboundUsername: inboundUsername,
|
|
@@ -46,20 +56,98 @@ export class SipClient extends ServiceBase {
|
|
|
46
56
|
outboundUsername: outboundUsername,
|
|
47
57
|
outboundPassword: outboundPassword,
|
|
48
58
|
}).toJson();
|
|
49
|
-
const data = await this.rpc.request(svc, 'CreateSIPTrunk', req, await this.authHeader({}));
|
|
59
|
+
const data = await this.rpc.request(svc, 'CreateSIPTrunk', req, await this.authHeader({}, { admin: true }));
|
|
50
60
|
return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
51
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
@param name human-readable name of the trunk
|
|
64
|
+
* @param numbers phone numbers of the trunk
|
|
65
|
+
* @param opts CreateSipTrunkOptions
|
|
66
|
+
*/
|
|
67
|
+
async createSipInboundTrunk(name, numbers, opts) {
|
|
68
|
+
let allowedAddresses;
|
|
69
|
+
let allowedNumbers;
|
|
70
|
+
let authUsername = '';
|
|
71
|
+
let authPassword = '';
|
|
72
|
+
let metadata = '';
|
|
73
|
+
if (opts !== undefined) {
|
|
74
|
+
allowedAddresses = opts.allowed_addresses;
|
|
75
|
+
allowedNumbers = opts.allowed_numbers;
|
|
76
|
+
authUsername = opts.auth_username || '';
|
|
77
|
+
authPassword = opts.auth_password || '';
|
|
78
|
+
metadata = opts.metadata || '';
|
|
79
|
+
}
|
|
80
|
+
const req = new CreateSIPInboundTrunkRequest({
|
|
81
|
+
trunk: new SIPInboundTrunkInfo({
|
|
82
|
+
name: name,
|
|
83
|
+
numbers: numbers,
|
|
84
|
+
metadata: metadata,
|
|
85
|
+
allowedAddresses: allowedAddresses,
|
|
86
|
+
allowedNumbers: allowedNumbers,
|
|
87
|
+
authUsername: authUsername,
|
|
88
|
+
authPassword: authPassword,
|
|
89
|
+
}),
|
|
90
|
+
}).toJson();
|
|
91
|
+
const data = await this.rpc.request(svc, 'CreateSIPInboundTrunk', req, await this.authHeader({}, { admin: true }));
|
|
92
|
+
return SIPInboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @param name human-readable name of the trunk
|
|
96
|
+
* @param address hostname and port of the SIP server to dial
|
|
97
|
+
* @param numbers phone numbers of the trunk
|
|
98
|
+
* @param opts CreateSipTrunkOptions
|
|
99
|
+
*/
|
|
100
|
+
async createSipOutboundTrunk(name, address, numbers, opts) {
|
|
101
|
+
let authUsername = '';
|
|
102
|
+
let authPassword = '';
|
|
103
|
+
let transport = SIPTransport.SIP_TRANSPORT_AUTO;
|
|
104
|
+
let metadata = '';
|
|
105
|
+
if (opts !== undefined) {
|
|
106
|
+
authUsername = opts.auth_username || '';
|
|
107
|
+
authPassword = opts.auth_password || '';
|
|
108
|
+
transport = opts.transport || SIPTransport.SIP_TRANSPORT_AUTO;
|
|
109
|
+
metadata = opts.metadata || '';
|
|
110
|
+
}
|
|
111
|
+
const req = new CreateSIPOutboundTrunkRequest({
|
|
112
|
+
trunk: new SIPOutboundTrunkInfo({
|
|
113
|
+
name: name,
|
|
114
|
+
address: address,
|
|
115
|
+
numbers: numbers,
|
|
116
|
+
metadata: metadata,
|
|
117
|
+
transport: transport,
|
|
118
|
+
authUsername: authUsername,
|
|
119
|
+
authPassword: authPassword,
|
|
120
|
+
}),
|
|
121
|
+
}).toJson();
|
|
122
|
+
const data = await this.rpc.request(svc, 'CreateSIPOutboundTrunk', req, await this.authHeader({}, { admin: true }));
|
|
123
|
+
return SIPOutboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @deprecated use listSipInboundTrunk or listSipOutboundTrunk
|
|
127
|
+
*/
|
|
52
128
|
async listSipTrunk() {
|
|
53
129
|
var _a;
|
|
54
|
-
|
|
55
|
-
const data = await this.rpc.request(svc, 'ListSIPTrunk', new ListSIPTrunkRequest(req).toJson(), await this.authHeader({}));
|
|
130
|
+
const req = {};
|
|
131
|
+
const data = await this.rpc.request(svc, 'ListSIPTrunk', new ListSIPTrunkRequest(req).toJson(), await this.authHeader({}, { admin: true }));
|
|
56
132
|
return (_a = ListSIPTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
|
|
57
133
|
}
|
|
134
|
+
async listSipInboundTrunk() {
|
|
135
|
+
var _a;
|
|
136
|
+
const req = {};
|
|
137
|
+
const data = await this.rpc.request(svc, 'ListSIPInboundTrunk', new ListSIPInboundTrunkRequest(req).toJson(), await this.authHeader({}, { admin: true }));
|
|
138
|
+
return (_a = ListSIPInboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
|
|
139
|
+
}
|
|
140
|
+
async listSipOutboundTrunk() {
|
|
141
|
+
var _a;
|
|
142
|
+
const req = {};
|
|
143
|
+
const data = await this.rpc.request(svc, 'ListSIPOutboundTrunk', new ListSIPOutboundTrunkRequest(req).toJson(), await this.authHeader({}, { admin: true }));
|
|
144
|
+
return (_a = ListSIPOutboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
|
|
145
|
+
}
|
|
58
146
|
/**
|
|
59
147
|
* @param sipTrunkId sip trunk to delete
|
|
60
148
|
*/
|
|
61
149
|
async deleteSipTrunk(sipTrunkId) {
|
|
62
|
-
const data = await this.rpc.request(svc, 'DeleteSIPTrunk', new DeleteSIPTrunkRequest({ sipTrunkId }).toJson(), await this.authHeader({}));
|
|
150
|
+
const data = await this.rpc.request(svc, 'DeleteSIPTrunk', new DeleteSIPTrunkRequest({ sipTrunkId }).toJson(), await this.authHeader({}, { admin: true }));
|
|
63
151
|
return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
64
152
|
}
|
|
65
153
|
/**
|
|
@@ -69,10 +157,14 @@ export class SipClient extends ServiceBase {
|
|
|
69
157
|
async createSipDispatchRule(rule, opts) {
|
|
70
158
|
let trunkIds;
|
|
71
159
|
let hidePhoneNumber = false;
|
|
160
|
+
let name = '';
|
|
161
|
+
let metadata = '';
|
|
72
162
|
let ruleProto = undefined;
|
|
73
163
|
if (opts !== undefined) {
|
|
74
164
|
trunkIds = opts.trunkIds;
|
|
75
165
|
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
166
|
+
name = opts.name || '';
|
|
167
|
+
metadata = opts.metadata || '';
|
|
76
168
|
}
|
|
77
169
|
if (rule.type == 'direct') {
|
|
78
170
|
ruleProto = new SIPDispatchRule({
|
|
@@ -100,21 +192,23 @@ export class SipClient extends ServiceBase {
|
|
|
100
192
|
rule: ruleProto,
|
|
101
193
|
trunkIds: trunkIds,
|
|
102
194
|
hidePhoneNumber: hidePhoneNumber,
|
|
195
|
+
name: name,
|
|
196
|
+
metadata: metadata,
|
|
103
197
|
}).toJson();
|
|
104
|
-
const data = await this.rpc.request(svc, 'CreateSIPDispatchRule', req, await this.authHeader({}));
|
|
198
|
+
const data = await this.rpc.request(svc, 'CreateSIPDispatchRule', req, await this.authHeader({}, { admin: true }));
|
|
105
199
|
return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
106
200
|
}
|
|
107
201
|
async listSipDispatchRule() {
|
|
108
202
|
var _a;
|
|
109
|
-
|
|
110
|
-
const data = await this.rpc.request(svc, 'ListSIPDispatchRule', new ListSIPDispatchRuleRequest(req).toJson(), await this.authHeader({}));
|
|
203
|
+
const req = {};
|
|
204
|
+
const data = await this.rpc.request(svc, 'ListSIPDispatchRule', new ListSIPDispatchRuleRequest(req).toJson(), await this.authHeader({}, { admin: true }));
|
|
111
205
|
return (_a = ListSIPDispatchRuleResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
|
|
112
206
|
}
|
|
113
207
|
/**
|
|
114
208
|
* @param sipDispatchRuleId sip trunk to delete
|
|
115
209
|
*/
|
|
116
210
|
async deleteSipDispatchRule(sipDispatchRuleId) {
|
|
117
|
-
const data = await this.rpc.request(svc, 'DeleteSIPDispatchRule', new DeleteSIPDispatchRuleRequest({ sipDispatchRuleId }).toJson(), await this.authHeader({}));
|
|
211
|
+
const data = await this.rpc.request(svc, 'DeleteSIPDispatchRule', new DeleteSIPDispatchRuleRequest({ sipDispatchRuleId }).toJson(), await this.authHeader({}, { admin: true }));
|
|
118
212
|
return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
119
213
|
}
|
|
120
214
|
/**
|
|
@@ -126,13 +220,17 @@ export class SipClient extends ServiceBase {
|
|
|
126
220
|
async createSipParticipant(sipTrunkId, number, roomName, opts) {
|
|
127
221
|
let participantIdentity = '';
|
|
128
222
|
let participantName = '';
|
|
223
|
+
let participantMetadata = '';
|
|
129
224
|
let dtmf = '';
|
|
130
225
|
let playRingtone = false;
|
|
226
|
+
let hidePhoneNumber = false;
|
|
131
227
|
if (opts !== undefined) {
|
|
132
228
|
participantIdentity = opts.participantIdentity || '';
|
|
133
229
|
participantName = opts.participantName || '';
|
|
230
|
+
participantMetadata = opts.participantMetadata || '';
|
|
134
231
|
dtmf = opts.dtmf || '';
|
|
135
232
|
playRingtone = opts.playRingtone || false;
|
|
233
|
+
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
136
234
|
}
|
|
137
235
|
const req = new CreateSIPParticipantRequest({
|
|
138
236
|
sipTrunkId: sipTrunkId,
|
|
@@ -140,10 +238,12 @@ export class SipClient extends ServiceBase {
|
|
|
140
238
|
roomName: roomName,
|
|
141
239
|
participantIdentity: participantIdentity,
|
|
142
240
|
participantName: participantName,
|
|
241
|
+
participantMetadata: participantMetadata,
|
|
143
242
|
dtmf: dtmf,
|
|
144
243
|
playRingtone: playRingtone,
|
|
244
|
+
hidePhoneNumber: hidePhoneNumber,
|
|
145
245
|
}).toJson();
|
|
146
|
-
const data = await this.rpc.request(svc, 'CreateSIPParticipant', req, await this.authHeader({}));
|
|
246
|
+
const data = await this.rpc.request(svc, 'CreateSIPParticipant', req, await this.authHeader({}, { call: true }));
|
|
147
247
|
return SIPParticipantInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
148
248
|
}
|
|
149
249
|
}
|
package/dist/SipClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SipClient.js","sourceRoot":"","sources":["../src/SipClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"SipClient.js","sourceRoot":"","sources":["../src/SipClient.ts"],"names":[],"mappings":"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"}
|
package/dist/TwirpRPC.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwirpRPC.d.ts","sourceRoot":"","sources":["../src/TwirpRPC.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOpD,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,MAAM,WAAW,GAAG;IAClB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3F;AAED;;GAEG;AACH,qBAAa,QAAQ;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAShD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAmBvF"}
|
package/dist/TwirpRPC.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TwirpRPC.js","sourceRoot":"","sources":["../src/TwirpRPC.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TwirpRPC.js","sourceRoot":"","sources":["../src/TwirpRPC.ts"],"names":[],"mappings":"AAIA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAE3C,8CAA8C;AAE9C,MAAM,aAAa,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAKxC;;GAEG;AACH,MAAM,OAAO,QAAQ;IAOnB,YAAY,IAAY,EAAE,GAAW,EAAE,MAAe;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,MAAc,EAAE,IAAS,EAAE,OAAa;QACrE,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,kBACL,cAAc,EAAE,gCAAgC,IAC7C,OAAO,CACX;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BinaryReadOptions,
|
|
1
|
+
import type { BinaryReadOptions, JsonReadOptions, JsonValue } from '@bufbuild/protobuf';
|
|
2
2
|
import { WebhookEvent as ProtoWebhookEvent } from '@livekit/protocol';
|
|
3
3
|
export declare const authorizeHeader = "Authorize";
|
|
4
4
|
export declare class WebhookEvent extends ProtoWebhookEvent {
|
|
@@ -25,3 +25,4 @@ export declare class WebhookReceiver {
|
|
|
25
25
|
*/
|
|
26
26
|
receive(body: string, authHeader?: string, skipAuth?: boolean): Promise<WebhookEvent>;
|
|
27
27
|
}
|
|
28
|
+
//# sourceMappingURL=WebhookReceiver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookReceiver.d.ts","sourceRoot":"","sources":["../src/WebhookReceiver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtE,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,qBAAa,YAAa,SAAQ,iBAAiB;IACjD,KAAK,EAAE,iBAAiB,CAAM;IAE9B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAIxF,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,YAAY;IAIvF,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,YAAY;CAG5F;AAED,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,eAAe;AACjB;;;GAGG;GACD,EAAE,CAAC;AAEP,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAI7C;;;;;;OAMG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC,YAAY,CAAC;CAuBzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookReceiver.js","sourceRoot":"","sources":["../src/WebhookReceiver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebhookReceiver.js","sourceRoot":"","sources":["../src/WebhookReceiver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAE3C,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAAnD;;QACE,UAAK,GAAsB,EAAE,CAAC;IAahC,CAAC;IAXC,MAAM,CAAC,UAAU,CAAC,KAAiB,EAAE,OAAoC;QACvE,OAAO,IAAI,YAAY,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,SAAoB,EAAE,OAAkC;QACtE,OAAO,IAAI,YAAY,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,UAAkB,EAAE,OAAkC;QAC1E,OAAO,IAAI,YAAY,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAoBD,MAAM,OAAO,eAAe;IAG1B,YAAY,MAAc,EAAE,SAAiB;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,UAAmB,EACnB,WAAoB,KAAK;QAEzB,eAAe;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACtD,cAAc;YACd,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,WAAW,GAAG,IAAI,CACtB,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;iBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;iBAClC,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;CACF"}
|
package/dist/grants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { JWTPayload } from 'jose';
|
|
2
1
|
import { TrackSource } from '@livekit/protocol';
|
|
2
|
+
import type { JWTPayload } from 'jose';
|
|
3
3
|
export declare function trackSourceToString(source: TrackSource): "camera" | "microphone" | "screen_share" | "screen_share_audio";
|
|
4
4
|
export declare function claimsToJwtPayload(grant: ClaimGrants): JWTPayload & {
|
|
5
5
|
video?: Record<string, unknown>;
|
|
@@ -43,13 +43,23 @@ export interface VideoGrant {
|
|
|
43
43
|
hidden?: boolean;
|
|
44
44
|
/** participant is recording the room, when set, allows room to indicate it's being recorded */
|
|
45
45
|
recorder?: boolean;
|
|
46
|
-
/** participant
|
|
46
|
+
/** participant allowed to connect to LiveKit as Agent Framework worker */
|
|
47
47
|
agent?: boolean;
|
|
48
48
|
}
|
|
49
|
+
export interface SIPGrant {
|
|
50
|
+
/** manage sip resources */
|
|
51
|
+
admin?: boolean;
|
|
52
|
+
/** make outbound calls */
|
|
53
|
+
call?: boolean;
|
|
54
|
+
}
|
|
49
55
|
/** @internal */
|
|
50
56
|
export interface ClaimGrants extends JWTPayload {
|
|
51
57
|
name?: string;
|
|
52
58
|
video?: VideoGrant;
|
|
59
|
+
sip?: SIPGrant;
|
|
60
|
+
kind?: string;
|
|
53
61
|
metadata?: string;
|
|
62
|
+
attributes?: Record<string, string>;
|
|
54
63
|
sha256?: string;
|
|
55
64
|
}
|
|
65
|
+
//# sourceMappingURL=grants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,mEAatD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,GACjB,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAOlD;AAED,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC;IAElC,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,gBAAgB;AAChB,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/grants.js
CHANGED
package/dist/grants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW,CAAC,MAAM;YACrB,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW,CAAC,UAAU;YACzB,OAAO,YAAY,CAAC;QACtB,KAAK,WAAW,CAAC,YAAY;YAC3B,OAAO,cAAc,CAAC;QACxB,KAAK,WAAW,CAAC,kBAAkB;YACjC,OAAO,oBAAoB,CAAC;QAC9B;YACE,MAAM,IAAI,SAAS,CAAC,8BAA8B,MAAM,YAAY,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAkB;;IAElB,MAAM,KAAK,qBAA6B,KAAK,CAAE,CAAC;IAChD,gDAAgD;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAA,KAAK,CAAC,KAAK,0CAAE,iBAAiB,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ export * from './RoomServiceClient.js';
|
|
|
6
6
|
export * from './WebhookReceiver.js';
|
|
7
7
|
export * from './grants.js';
|
|
8
8
|
export { AliOSSUpload, AzureBlobUpload, DirectFileOutput, EgressInfo, EncodedFileOutput, EncodedFileType, EncodingOptions, EncodingOptionsPreset, GCPUpload, ImageOutput, ParticipantEgressRequest, RoomCompositeEgressRequest, S3Upload, SegmentedFileOutput, SegmentedFileProtocol, StreamOutput, StreamProtocol, TrackCompositeEgressRequest, TrackEgressRequest, WebEgressRequest, IngressAudioEncodingOptions, IngressAudioEncodingPreset, IngressAudioOptions, IngressInfo, IngressInput, IngressState, IngressVideoEncodingOptions, IngressVideoEncodingPreset, IngressVideoOptions, DataPacket_Kind, ParticipantInfo, ParticipantInfo_State, ParticipantPermission, Room, TrackInfo, TrackType, TrackSource, SIPTrunkInfo, SIPDispatchRuleInfo, SIPParticipantInfo, } from '@livekit/protocol';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,QAAQ,EACR,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,QAAQ,EACR,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,QAAQ,EACR,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livekit-server-sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Server-side SDK for LiveKit",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,8 +8,12 @@
|
|
|
8
8
|
"author": "David Zhao <david@davidzhao.com>",
|
|
9
9
|
"license": "Apache-2.0",
|
|
10
10
|
"type": "module",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"src"
|
|
14
|
+
],
|
|
11
15
|
"dependencies": {
|
|
12
|
-
"@livekit/protocol": "^1.
|
|
16
|
+
"@livekit/protocol": "^1.19.0",
|
|
13
17
|
"camelcase-keys": "^9.0.0",
|
|
14
18
|
"jose": "^5.1.2"
|
|
15
19
|
},
|
|
@@ -19,11 +23,6 @@
|
|
|
19
23
|
"@edge-runtime/vm": "^3.1.7",
|
|
20
24
|
"@livekit/changesets-changelog-github": "^0.0.4",
|
|
21
25
|
"@types/node": "^20.10.1",
|
|
22
|
-
"@typescript-eslint/eslint-plugin": "^7.7.0",
|
|
23
|
-
"eslint": "^8.56.0",
|
|
24
|
-
"eslint-config-airbnb-typescript": "^18.0.0",
|
|
25
|
-
"eslint-config-prettier": "^9.1.0",
|
|
26
|
-
"eslint-plugin-import": "^2.29.1",
|
|
27
26
|
"happy-dom": "^14.0.0",
|
|
28
27
|
"prettier": "^3.0.0",
|
|
29
28
|
"typedoc": "^0.25.13",
|
|
@@ -40,7 +39,7 @@
|
|
|
40
39
|
"build-docs": "typedoc",
|
|
41
40
|
"changeset": "changeset",
|
|
42
41
|
"ci:publish": "pnpm build && changeset publish",
|
|
43
|
-
"lint": "eslint
|
|
42
|
+
"lint": "eslint src",
|
|
44
43
|
"format": "prettier --write src",
|
|
45
44
|
"format:check": "prettier --check src",
|
|
46
45
|
"test": "vitest --environment node run",
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import * as jose from 'jose';
|
|
5
|
+
import { describe, expect, it } from 'vitest';
|
|
6
|
+
import { AccessToken, TokenVerifier } from './AccessToken';
|
|
7
|
+
import type { ClaimGrants } from './grants';
|
|
8
|
+
|
|
9
|
+
const testApiKey = 'abcdefg';
|
|
10
|
+
const testSecret = 'abababa';
|
|
11
|
+
|
|
12
|
+
describe('encoded tokens are valid', () => {
|
|
13
|
+
const t = new AccessToken(testApiKey, testSecret, {
|
|
14
|
+
identity: 'me',
|
|
15
|
+
name: 'myname',
|
|
16
|
+
});
|
|
17
|
+
t.addGrant({ room: 'myroom' });
|
|
18
|
+
const EncodedTestSecret = new TextEncoder().encode(testSecret);
|
|
19
|
+
it('can be decoded', async () => {
|
|
20
|
+
const { payload } = await jose.jwtVerify(await t.toJwt(), EncodedTestSecret, {
|
|
21
|
+
issuer: testApiKey,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
expect(payload).not.toBe(undefined);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('has name set', async () => {
|
|
28
|
+
const { payload } = await jose.jwtVerify(await t.toJwt(), EncodedTestSecret, {
|
|
29
|
+
issuer: testApiKey,
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
expect(payload.name).toBe('myname');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('has video grants set', async () => {
|
|
36
|
+
const { payload } = await jose.jwtVerify(await t.toJwt(), EncodedTestSecret, {
|
|
37
|
+
issuer: testApiKey,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
expect(payload.video).toBeTruthy();
|
|
41
|
+
expect((payload as ClaimGrants).video?.room).toEqual('myroom');
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('identity is required for only join grants', () => {
|
|
46
|
+
it('allows empty identity for create', async () => {
|
|
47
|
+
const t = new AccessToken(testApiKey, testSecret);
|
|
48
|
+
t.addGrant({ roomCreate: true });
|
|
49
|
+
|
|
50
|
+
expect(await t.toJwt()).toBeTruthy();
|
|
51
|
+
});
|
|
52
|
+
it('throws error when identity is not provided for join', async () => {
|
|
53
|
+
const t = new AccessToken(testApiKey, testSecret);
|
|
54
|
+
t.addGrant({ roomJoin: true });
|
|
55
|
+
|
|
56
|
+
await expect(async () => {
|
|
57
|
+
await t.toJwt();
|
|
58
|
+
}).rejects.toThrow();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
describe('verify token is valid', () => {
|
|
63
|
+
it('can decode encoded token', async () => {
|
|
64
|
+
const t = new AccessToken(testApiKey, testSecret);
|
|
65
|
+
t.sha256 = 'abcdefg';
|
|
66
|
+
t.kind = 'agent';
|
|
67
|
+
t.addGrant({ roomCreate: true });
|
|
68
|
+
t.attributes = { foo: 'bar', live: 'kit' };
|
|
69
|
+
|
|
70
|
+
const v = new TokenVerifier(testApiKey, testSecret);
|
|
71
|
+
const decoded = await v.verify(await t.toJwt());
|
|
72
|
+
|
|
73
|
+
expect(decoded).not.toBe(undefined);
|
|
74
|
+
expect(decoded.sha256).toEqual('abcdefg');
|
|
75
|
+
expect(decoded.video?.roomCreate).toBeTruthy();
|
|
76
|
+
expect(decoded.kind).toEqual('agent');
|
|
77
|
+
expect(decoded.attributes).toEqual(t.attributes);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe('adding grants should not overwrite existing grants', () => {
|
|
82
|
+
const EncodedTestSecret = new TextEncoder().encode(testSecret);
|
|
83
|
+
|
|
84
|
+
it('should not overwrite existing grants', async () => {
|
|
85
|
+
const t = new AccessToken(testApiKey, testSecret, {
|
|
86
|
+
identity: 'me',
|
|
87
|
+
name: 'myname',
|
|
88
|
+
});
|
|
89
|
+
t.addGrant({ roomCreate: true });
|
|
90
|
+
t.addGrant({ roomJoin: true });
|
|
91
|
+
|
|
92
|
+
const { payload }: jose.JWTVerifyResult<ClaimGrants> = await jose.jwtVerify(
|
|
93
|
+
await t.toJwt(),
|
|
94
|
+
EncodedTestSecret,
|
|
95
|
+
{ issuer: testApiKey },
|
|
96
|
+
);
|
|
97
|
+
expect(payload.video?.roomCreate).toBeTruthy();
|
|
98
|
+
expect(payload.video?.roomJoin).toBeTruthy();
|
|
99
|
+
});
|
|
100
|
+
});
|