livekit-server-sdk 2.4.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/LICENSE +201 -0
- package/dist/AccessToken.d.ts +14 -3
- package/dist/AccessToken.d.ts.map +1 -1
- package/dist/AccessToken.js +29 -3
- package/dist/AccessToken.js.map +1 -1
- package/dist/EgressClient.js +1 -1
- package/dist/EgressClient.js.map +1 -1
- package/dist/RoomServiceClient.d.ts +3 -2
- package/dist/RoomServiceClient.d.ts.map +1 -1
- package/dist/RoomServiceClient.js.map +1 -1
- package/dist/ServiceBase.d.ts +2 -2
- package/dist/ServiceBase.d.ts.map +1 -1
- package/dist/ServiceBase.js +4 -1
- package/dist/ServiceBase.js.map +1 -1
- package/dist/SipClient.d.ts +37 -1
- package/dist/SipClient.d.ts.map +1 -1
- package/dist/SipClient.js +90 -8
- package/dist/SipClient.js.map +1 -1
- package/dist/grants.d.ts +11 -2
- package/dist/grants.d.ts.map +1 -1
- package/package.json +3 -8
- package/src/AccessToken.test.ts +5 -1
- package/src/AccessToken.ts +37 -4
- package/src/EgressClient.ts +1 -1
- package/src/RoomServiceClient.ts +4 -3
- package/src/ServiceBase.ts +5 -2
- package/src/SipClient.ts +157 -7
- package/src/grants.ts +13 -2
package/dist/SipClient.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import { CreateSIPDispatchRuleRequest, CreateSIPParticipantRequest, CreateSIPTrunkRequest, DeleteSIPDispatchRuleRequest, DeleteSIPTrunkRequest, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, ListSIPTrunkRequest, ListSIPTrunkResponse, SIPDispatchRule, SIPDispatchRuleDirect, SIPDispatchRuleIndividual, SIPDispatchRuleInfo, SIPParticipantInfo, SIPTrunkInfo, } from '@livekit/protocol';
|
|
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';
|
|
5
5
|
import ServiceBase from './ServiceBase.js';
|
|
6
6
|
import { TwirpRpc, livekitPackage } from './TwirpRPC.js';
|
|
7
7
|
const svc = 'SIP';
|
|
@@ -21,6 +21,7 @@ export class SipClient extends ServiceBase {
|
|
|
21
21
|
/**
|
|
22
22
|
* @param number phone number of the trunk
|
|
23
23
|
* @param opts CreateSipTrunkOptions
|
|
24
|
+
* @deprecated use createSipInboundTrunk or createSipOutboundTrunk
|
|
24
25
|
*/
|
|
25
26
|
async createSipTrunk(number, opts) {
|
|
26
27
|
let inboundAddresses;
|
|
@@ -55,20 +56,98 @@ export class SipClient extends ServiceBase {
|
|
|
55
56
|
outboundUsername: outboundUsername,
|
|
56
57
|
outboundPassword: outboundPassword,
|
|
57
58
|
}).toJson();
|
|
58
|
-
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 }));
|
|
59
60
|
return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
60
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
|
+
*/
|
|
61
128
|
async listSipTrunk() {
|
|
62
129
|
var _a;
|
|
63
130
|
const req = {};
|
|
64
|
-
const data = await this.rpc.request(svc, 'ListSIPTrunk', new ListSIPTrunkRequest(req).toJson(), await this.authHeader({}));
|
|
131
|
+
const data = await this.rpc.request(svc, 'ListSIPTrunk', new ListSIPTrunkRequest(req).toJson(), await this.authHeader({}, { admin: true }));
|
|
65
132
|
return (_a = ListSIPTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
|
|
66
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
|
+
}
|
|
67
146
|
/**
|
|
68
147
|
* @param sipTrunkId sip trunk to delete
|
|
69
148
|
*/
|
|
70
149
|
async deleteSipTrunk(sipTrunkId) {
|
|
71
|
-
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 }));
|
|
72
151
|
return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
73
152
|
}
|
|
74
153
|
/**
|
|
@@ -116,20 +195,20 @@ export class SipClient extends ServiceBase {
|
|
|
116
195
|
name: name,
|
|
117
196
|
metadata: metadata,
|
|
118
197
|
}).toJson();
|
|
119
|
-
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 }));
|
|
120
199
|
return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
121
200
|
}
|
|
122
201
|
async listSipDispatchRule() {
|
|
123
202
|
var _a;
|
|
124
203
|
const req = {};
|
|
125
|
-
const data = await this.rpc.request(svc, 'ListSIPDispatchRule', new ListSIPDispatchRuleRequest(req).toJson(), await this.authHeader({}));
|
|
204
|
+
const data = await this.rpc.request(svc, 'ListSIPDispatchRule', new ListSIPDispatchRuleRequest(req).toJson(), await this.authHeader({}, { admin: true }));
|
|
126
205
|
return (_a = ListSIPDispatchRuleResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
|
|
127
206
|
}
|
|
128
207
|
/**
|
|
129
208
|
* @param sipDispatchRuleId sip trunk to delete
|
|
130
209
|
*/
|
|
131
210
|
async deleteSipDispatchRule(sipDispatchRuleId) {
|
|
132
|
-
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 }));
|
|
133
212
|
return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
134
213
|
}
|
|
135
214
|
/**
|
|
@@ -144,12 +223,14 @@ export class SipClient extends ServiceBase {
|
|
|
144
223
|
let participantMetadata = '';
|
|
145
224
|
let dtmf = '';
|
|
146
225
|
let playRingtone = false;
|
|
226
|
+
let hidePhoneNumber = false;
|
|
147
227
|
if (opts !== undefined) {
|
|
148
228
|
participantIdentity = opts.participantIdentity || '';
|
|
149
229
|
participantName = opts.participantName || '';
|
|
150
230
|
participantMetadata = opts.participantMetadata || '';
|
|
151
231
|
dtmf = opts.dtmf || '';
|
|
152
232
|
playRingtone = opts.playRingtone || false;
|
|
233
|
+
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
153
234
|
}
|
|
154
235
|
const req = new CreateSIPParticipantRequest({
|
|
155
236
|
sipTrunkId: sipTrunkId,
|
|
@@ -160,8 +241,9 @@ export class SipClient extends ServiceBase {
|
|
|
160
241
|
participantMetadata: participantMetadata,
|
|
161
242
|
dtmf: dtmf,
|
|
162
243
|
playRingtone: playRingtone,
|
|
244
|
+
hidePhoneNumber: hidePhoneNumber,
|
|
163
245
|
}).toJson();
|
|
164
|
-
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 }));
|
|
165
247
|
return SIPParticipantInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
166
248
|
}
|
|
167
249
|
}
|
package/dist/SipClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SipClient.js","sourceRoot":"","sources":["../src/SipClient.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAO,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,GAAG,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"SipClient.js","sourceRoot":"","sources":["../src/SipClient.ts"],"names":[],"mappings":"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"}
|
package/dist/grants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TrackSource } from '@livekit/protocol';
|
|
2
|
-
import { JWTPayload } from 'jose';
|
|
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,14 +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
|
}
|
|
56
65
|
//# sourceMappingURL=grants.d.ts.map
|
package/dist/grants.d.ts.map
CHANGED
|
@@ -1 +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,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
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/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",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"src"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@livekit/protocol": "^1.
|
|
16
|
+
"@livekit/protocol": "^1.19.0",
|
|
17
17
|
"camelcase-keys": "^9.0.0",
|
|
18
18
|
"jose": "^5.1.2"
|
|
19
19
|
},
|
|
@@ -23,11 +23,6 @@
|
|
|
23
23
|
"@edge-runtime/vm": "^3.1.7",
|
|
24
24
|
"@livekit/changesets-changelog-github": "^0.0.4",
|
|
25
25
|
"@types/node": "^20.10.1",
|
|
26
|
-
"@typescript-eslint/eslint-plugin": "^7.7.0",
|
|
27
|
-
"eslint": "^8.56.0",
|
|
28
|
-
"eslint-config-airbnb-typescript": "^18.0.0",
|
|
29
|
-
"eslint-config-prettier": "^9.1.0",
|
|
30
|
-
"eslint-plugin-import": "^2.29.1",
|
|
31
26
|
"happy-dom": "^14.0.0",
|
|
32
27
|
"prettier": "^3.0.0",
|
|
33
28
|
"typedoc": "^0.25.13",
|
|
@@ -44,7 +39,7 @@
|
|
|
44
39
|
"build-docs": "typedoc",
|
|
45
40
|
"changeset": "changeset",
|
|
46
41
|
"ci:publish": "pnpm build && changeset publish",
|
|
47
|
-
"lint": "eslint
|
|
42
|
+
"lint": "eslint src",
|
|
48
43
|
"format": "prettier --write src",
|
|
49
44
|
"format:check": "prettier --check src",
|
|
50
45
|
"test": "vitest --environment node run",
|
package/src/AccessToken.test.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import * as jose from 'jose';
|
|
5
5
|
import { describe, expect, it } from 'vitest';
|
|
6
6
|
import { AccessToken, TokenVerifier } from './AccessToken';
|
|
7
|
-
import { ClaimGrants } from './grants';
|
|
7
|
+
import type { ClaimGrants } from './grants';
|
|
8
8
|
|
|
9
9
|
const testApiKey = 'abcdefg';
|
|
10
10
|
const testSecret = 'abababa';
|
|
@@ -63,7 +63,9 @@ describe('verify token is valid', () => {
|
|
|
63
63
|
it('can decode encoded token', async () => {
|
|
64
64
|
const t = new AccessToken(testApiKey, testSecret);
|
|
65
65
|
t.sha256 = 'abcdefg';
|
|
66
|
+
t.kind = 'agent';
|
|
66
67
|
t.addGrant({ roomCreate: true });
|
|
68
|
+
t.attributes = { foo: 'bar', live: 'kit' };
|
|
67
69
|
|
|
68
70
|
const v = new TokenVerifier(testApiKey, testSecret);
|
|
69
71
|
const decoded = await v.verify(await t.toJwt());
|
|
@@ -71,6 +73,8 @@ describe('verify token is valid', () => {
|
|
|
71
73
|
expect(decoded).not.toBe(undefined);
|
|
72
74
|
expect(decoded.sha256).toEqual('abcdefg');
|
|
73
75
|
expect(decoded.video?.roomCreate).toBeTruthy();
|
|
76
|
+
expect(decoded.kind).toEqual('agent');
|
|
77
|
+
expect(decoded.attributes).toEqual(t.attributes);
|
|
74
78
|
});
|
|
75
79
|
});
|
|
76
80
|
|
package/src/AccessToken.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import * as jose from 'jose';
|
|
5
|
-
import { ClaimGrants,
|
|
5
|
+
import type { ClaimGrants, SIPGrant, VideoGrant } from './grants.js';
|
|
6
|
+
import { claimsToJwtPayload } from './grants.js';
|
|
6
7
|
|
|
7
8
|
// 6 hours
|
|
8
9
|
const defaultTTL = `6h`;
|
|
@@ -82,12 +83,32 @@ export class AccessToken {
|
|
|
82
83
|
|
|
83
84
|
/**
|
|
84
85
|
* Adds a video grant to this token.
|
|
85
|
-
* @param grant
|
|
86
|
+
* @param grant -
|
|
86
87
|
*/
|
|
87
88
|
addGrant(grant: VideoGrant) {
|
|
88
89
|
this.grants.video = { ...(this.grants.video ?? {}), ...grant };
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Adds a SIP grant to this token.
|
|
94
|
+
* @param grant -
|
|
95
|
+
*/
|
|
96
|
+
addSIPGrant(grant: SIPGrant) {
|
|
97
|
+
this.grants.sip = { ...(this.grants.sip ?? {}), ...grant };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
get name(): string | undefined {
|
|
101
|
+
return this.grants.name;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
set name(name: string) {
|
|
105
|
+
this.grants.name = name;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
get metadata(): string | undefined {
|
|
109
|
+
return this.grants.metadata;
|
|
110
|
+
}
|
|
111
|
+
|
|
91
112
|
/**
|
|
92
113
|
* Set metadata to be passed to the Participant, used only when joining the room
|
|
93
114
|
*/
|
|
@@ -95,8 +116,20 @@ export class AccessToken {
|
|
|
95
116
|
this.grants.metadata = md;
|
|
96
117
|
}
|
|
97
118
|
|
|
98
|
-
|
|
99
|
-
this.grants.
|
|
119
|
+
get attributes(): Record<string, string> | undefined {
|
|
120
|
+
return this.grants.attributes;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
set attributes(attrs: Record<string, string>) {
|
|
124
|
+
this.grants.attributes = attrs;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
get kind(): string | undefined {
|
|
128
|
+
return this.grants.kind;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
set kind(kind: string) {
|
|
132
|
+
this.grants.kind = kind;
|
|
100
133
|
}
|
|
101
134
|
|
|
102
135
|
get sha256(): string | undefined {
|
package/src/EgressClient.ts
CHANGED
|
@@ -282,7 +282,7 @@ export class EgressClient extends ServiceBase {
|
|
|
282
282
|
svc,
|
|
283
283
|
'StartParticipantEgress',
|
|
284
284
|
req,
|
|
285
|
-
this.authHeader({ roomRecord: true }),
|
|
285
|
+
await this.authHeader({ roomRecord: true }),
|
|
286
286
|
);
|
|
287
287
|
return EgressInfo.fromJson(data, { ignoreUnknownFields: true });
|
|
288
288
|
}
|
package/src/RoomServiceClient.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import type { DataPacket_Kind, TrackInfo } from '@livekit/protocol';
|
|
4
|
+
import type { DataPacket_Kind, RoomEgress, TrackInfo } from '@livekit/protocol';
|
|
5
5
|
import {
|
|
6
6
|
CreateRoomRequest,
|
|
7
7
|
DeleteRoomRequest,
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
ParticipantInfo,
|
|
15
15
|
ParticipantPermission,
|
|
16
16
|
Room,
|
|
17
|
-
RoomEgress,
|
|
18
17
|
RoomParticipantIdentity,
|
|
19
18
|
SendDataRequest,
|
|
20
19
|
UpdateParticipantRequest,
|
|
@@ -22,7 +21,8 @@ import {
|
|
|
22
21
|
UpdateSubscriptionsRequest,
|
|
23
22
|
} from '@livekit/protocol';
|
|
24
23
|
import ServiceBase from './ServiceBase.js';
|
|
25
|
-
import { Rpc
|
|
24
|
+
import type { Rpc } from './TwirpRPC.js';
|
|
25
|
+
import { TwirpRpc, livekitPackage } from './TwirpRPC.js';
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Options for when creating a room
|
|
@@ -40,6 +40,7 @@ export interface CreateOptions {
|
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* number of seconds to keep the room open after the last participant leaves
|
|
43
|
+
* this option is helpful to give a grace period for participants to re-join
|
|
43
44
|
*/
|
|
44
45
|
departureTimeout?: number;
|
|
45
46
|
|
package/src/ServiceBase.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import { AccessToken } from './AccessToken.js';
|
|
5
|
-
import { VideoGrant } from './grants.js';
|
|
5
|
+
import { SIPGrant, VideoGrant } from './grants.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Utilities to handle authentication
|
|
@@ -25,9 +25,12 @@ export default class ServiceBase {
|
|
|
25
25
|
this.ttl = ttl || '10m';
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
async authHeader(grant: VideoGrant): Promise<any> {
|
|
28
|
+
async authHeader(grant: VideoGrant, sip?: SIPGrant): Promise<any> {
|
|
29
29
|
const at = new AccessToken(this.apiKey, this.secret, { ttl: this.ttl });
|
|
30
30
|
at.addGrant(grant);
|
|
31
|
+
if (sip) {
|
|
32
|
+
at.addSIPGrant(sip);
|
|
33
|
+
}
|
|
31
34
|
return {
|
|
32
35
|
Authorization: `Bearer ${await at.toJwt()}`,
|
|
33
36
|
};
|