livekit-server-sdk 1.0.2 → 1.1.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/.eslintrc.js +1 -1
- package/README.md +2 -0
- package/dist/EgressClient.d.ts +68 -12
- package/dist/EgressClient.js +59 -28
- package/dist/EgressClient.js.map +1 -1
- package/dist/IngressClient.d.ts +84 -0
- package/dist/IngressClient.js +113 -0
- package/dist/IngressClient.js.map +1 -0
- package/dist/RoomServiceClient.d.ts +10 -6
- package/dist/RoomServiceClient.js +13 -14
- package/dist/RoomServiceClient.js.map +1 -1
- package/dist/ServiceBase.d.ts +16 -0
- package/dist/ServiceBase.js +27 -0
- package/dist/ServiceBase.js.map +1 -0
- package/dist/grants.d.ts +2 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/proto/google/protobuf/timestamp.d.ts +5 -5
- package/dist/proto/google/protobuf/timestamp.js +17 -32
- package/dist/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/proto/livekit_egress.d.ts +3750 -929
- package/dist/proto/livekit_egress.js +973 -486
- package/dist/proto/livekit_egress.js.map +1 -1
- package/dist/proto/livekit_ingress.d.ts +152 -110
- package/dist/proto/livekit_ingress.js +218 -272
- package/dist/proto/livekit_ingress.js.map +1 -1
- package/dist/proto/livekit_models.d.ts +77 -58
- package/dist/proto/livekit_models.js +396 -447
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_room.d.ts +1238 -79
- package/dist/proto/livekit_room.js +252 -197
- package/dist/proto/livekit_room.js.map +1 -1
- package/dist/proto/livekit_webhook.d.ts +1015 -89
- package/dist/proto/livekit_webhook.js +43 -68
- package/dist/proto/livekit_webhook.js.map +1 -1
- package/generate-proto.sh +25 -0
- package/package.json +3 -3
- package/dist/proto/google/protobuf/empty.d.ts +0 -31
- package/dist/proto/google/protobuf/empty.js +0 -67
- package/dist/proto/google/protobuf/empty.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { VideoGrant } from './grants';
|
|
2
|
+
/**
|
|
3
|
+
* Utilities to handle authentication
|
|
4
|
+
*/
|
|
5
|
+
export default class ServiceBase {
|
|
6
|
+
private readonly apiKey?;
|
|
7
|
+
private readonly secret?;
|
|
8
|
+
private readonly ttl;
|
|
9
|
+
/**
|
|
10
|
+
* @param apiKey API Key.
|
|
11
|
+
* @param secret API Secret.
|
|
12
|
+
* @param ttl token TTL
|
|
13
|
+
*/
|
|
14
|
+
constructor(apiKey?: string, secret?: string, ttl?: string);
|
|
15
|
+
authHeader(grant: VideoGrant): any;
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const AccessToken_1 = require("./AccessToken");
|
|
4
|
+
/**
|
|
5
|
+
* Utilities to handle authentication
|
|
6
|
+
*/
|
|
7
|
+
class ServiceBase {
|
|
8
|
+
/**
|
|
9
|
+
* @param apiKey API Key.
|
|
10
|
+
* @param secret API Secret.
|
|
11
|
+
* @param ttl token TTL
|
|
12
|
+
*/
|
|
13
|
+
constructor(apiKey, secret, ttl) {
|
|
14
|
+
this.apiKey = apiKey;
|
|
15
|
+
this.secret = secret;
|
|
16
|
+
this.ttl = ttl || '10m';
|
|
17
|
+
}
|
|
18
|
+
authHeader(grant) {
|
|
19
|
+
const at = new AccessToken_1.AccessToken(this.apiKey, this.secret, { ttl: this.ttl });
|
|
20
|
+
at.addGrant(grant);
|
|
21
|
+
return {
|
|
22
|
+
Authorization: `Bearer ${at.toJwt()}`,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = ServiceBase;
|
|
27
|
+
//# sourceMappingURL=ServiceBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceBase.js","sourceRoot":"","sources":["../src/ServiceBase.ts"],"names":[],"mappings":";;AAAA,+CAA4C;AAG5C;;GAEG;AACH,MAAqB,WAAW;IAO9B;;;;OAIG;IACH,YAAY,MAAe,EAAE,MAAe,EAAE,GAAY;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,KAAiB;QAC1B,MAAM,EAAE,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO;YACL,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;SACtC,CAAC;IACJ,CAAC;CACF;AAzBD,8BAyBC"}
|
package/dist/grants.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export interface VideoGrant {
|
|
|
11
11
|
roomAdmin?: boolean;
|
|
12
12
|
/** name of the room, must be set for admin or join permissions */
|
|
13
13
|
room?: string;
|
|
14
|
+
/** permissions to control ingress, not specific to any room or ingress */
|
|
15
|
+
ingressAdmin?: boolean;
|
|
14
16
|
/**
|
|
15
17
|
* allow participant to publish. If neither canPublish or canSubscribe is set,
|
|
16
18
|
* both publish and subscribe are enabled
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from './AccessToken';
|
|
2
|
-
export
|
|
2
|
+
export * from './EgressClient';
|
|
3
3
|
export * from './grants';
|
|
4
|
+
export * from './IngressClient';
|
|
4
5
|
export { DirectFileOutput, EgressInfo, EncodedFileOutput, EncodedFileType, EncodingOptions, EncodingOptionsPreset, SegmentedFileOutput, SegmentedFileProtocol, StreamOutput, StreamProtocol, } from './proto/livekit_egress';
|
|
6
|
+
export { IngressAudioOptions, IngressInfo, IngressInput, IngressState, IngressVideoOptions, } from './proto/livekit_ingress';
|
|
5
7
|
export { DataPacket_Kind, ParticipantInfo, ParticipantInfo_State, ParticipantPermission, Room, TrackInfo, TrackType, } from './proto/livekit_models';
|
|
6
8
|
export * from './RoomServiceClient';
|
|
7
9
|
export * from './WebhookReceiver';
|
package/dist/index.js
CHANGED
|
@@ -9,15 +9,12 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
9
9
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
-
};
|
|
15
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.TrackType = exports.TrackInfo = exports.Room = exports.ParticipantPermission = exports.ParticipantInfo_State = exports.ParticipantInfo = exports.DataPacket_Kind = exports.StreamProtocol = exports.StreamOutput = exports.SegmentedFileProtocol = exports.SegmentedFileOutput = exports.EncodingOptionsPreset = exports.EncodingOptions = exports.EncodedFileType = exports.EncodedFileOutput = exports.EgressInfo = exports.DirectFileOutput =
|
|
13
|
+
exports.TrackType = exports.TrackInfo = exports.Room = exports.ParticipantPermission = exports.ParticipantInfo_State = exports.ParticipantInfo = exports.DataPacket_Kind = exports.IngressVideoOptions = exports.IngressState = exports.IngressInput = exports.IngressInfo = exports.IngressAudioOptions = exports.StreamProtocol = exports.StreamOutput = exports.SegmentedFileProtocol = exports.SegmentedFileOutput = exports.EncodingOptionsPreset = exports.EncodingOptions = exports.EncodedFileType = exports.EncodedFileOutput = exports.EgressInfo = exports.DirectFileOutput = void 0;
|
|
17
14
|
__exportStar(require("./AccessToken"), exports);
|
|
18
|
-
|
|
19
|
-
Object.defineProperty(exports, "EgressClient", { enumerable: true, get: function () { return __importDefault(EgressClient_1).default; } });
|
|
15
|
+
__exportStar(require("./EgressClient"), exports);
|
|
20
16
|
__exportStar(require("./grants"), exports);
|
|
17
|
+
__exportStar(require("./IngressClient"), exports);
|
|
21
18
|
var livekit_egress_1 = require("./proto/livekit_egress");
|
|
22
19
|
Object.defineProperty(exports, "DirectFileOutput", { enumerable: true, get: function () { return livekit_egress_1.DirectFileOutput; } });
|
|
23
20
|
Object.defineProperty(exports, "EgressInfo", { enumerable: true, get: function () { return livekit_egress_1.EgressInfo; } });
|
|
@@ -29,6 +26,12 @@ Object.defineProperty(exports, "SegmentedFileOutput", { enumerable: true, get: f
|
|
|
29
26
|
Object.defineProperty(exports, "SegmentedFileProtocol", { enumerable: true, get: function () { return livekit_egress_1.SegmentedFileProtocol; } });
|
|
30
27
|
Object.defineProperty(exports, "StreamOutput", { enumerable: true, get: function () { return livekit_egress_1.StreamOutput; } });
|
|
31
28
|
Object.defineProperty(exports, "StreamProtocol", { enumerable: true, get: function () { return livekit_egress_1.StreamProtocol; } });
|
|
29
|
+
var livekit_ingress_1 = require("./proto/livekit_ingress");
|
|
30
|
+
Object.defineProperty(exports, "IngressAudioOptions", { enumerable: true, get: function () { return livekit_ingress_1.IngressAudioOptions; } });
|
|
31
|
+
Object.defineProperty(exports, "IngressInfo", { enumerable: true, get: function () { return livekit_ingress_1.IngressInfo; } });
|
|
32
|
+
Object.defineProperty(exports, "IngressInput", { enumerable: true, get: function () { return livekit_ingress_1.IngressInput; } });
|
|
33
|
+
Object.defineProperty(exports, "IngressState", { enumerable: true, get: function () { return livekit_ingress_1.IngressState; } });
|
|
34
|
+
Object.defineProperty(exports, "IngressVideoOptions", { enumerable: true, get: function () { return livekit_ingress_1.IngressVideoOptions; } });
|
|
32
35
|
var livekit_models_1 = require("./proto/livekit_models");
|
|
33
36
|
Object.defineProperty(exports, "DataPacket_Kind", { enumerable: true, get: function () { return livekit_models_1.DataPacket_Kind; } });
|
|
34
37
|
Object.defineProperty(exports, "ParticipantInfo", { enumerable: true, get: function () { return livekit_models_1.ParticipantInfo; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B;AAC/B,2CAAyB;AACzB,kDAAgC;AAChC,yDAWgC;AAV9B,kHAAA,gBAAgB,OAAA;AAChB,4GAAA,UAAU,OAAA;AACV,mHAAA,iBAAiB,OAAA;AACjB,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,uHAAA,qBAAqB,OAAA;AACrB,qHAAA,mBAAmB,OAAA;AACnB,uHAAA,qBAAqB,OAAA;AACrB,8GAAA,YAAY,OAAA;AACZ,gHAAA,cAAc,OAAA;AAEhB,2DAMiC;AAL/B,sHAAA,mBAAmB,OAAA;AACnB,8GAAA,WAAW,OAAA;AACX,+GAAA,YAAY,OAAA;AACZ,+GAAA,YAAY,OAAA;AACZ,sHAAA,mBAAmB,OAAA;AAErB,yDAQgC;AAP9B,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,uHAAA,qBAAqB,OAAA;AACrB,uHAAA,qBAAqB,OAAA;AACrB,sGAAA,IAAI,OAAA;AACJ,2GAAA,SAAS,OAAA;AACT,2GAAA,SAAS,OAAA;AAEX,sDAAoC;AACpC,oDAAkC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _m0 from "protobufjs/minimal";
|
|
2
2
|
export declare const protobufPackage = "google.protobuf";
|
|
3
3
|
/**
|
|
4
4
|
* A Timestamp represents a point in time independent of any time zone or local
|
|
@@ -51,7 +51,6 @@ export declare const protobufPackage = "google.protobuf";
|
|
|
51
51
|
* Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
|
|
52
52
|
* .setNanos((int) ((millis % 1000) * 1000000)).build();
|
|
53
53
|
*
|
|
54
|
-
*
|
|
55
54
|
* Example 5: Compute Timestamp from Java `Instant.now()`.
|
|
56
55
|
*
|
|
57
56
|
* Instant now = Instant.now();
|
|
@@ -60,7 +59,6 @@ export declare const protobufPackage = "google.protobuf";
|
|
|
60
59
|
* Timestamp.newBuilder().setSeconds(now.getEpochSecond())
|
|
61
60
|
* .setNanos(now.getNano()).build();
|
|
62
61
|
*
|
|
63
|
-
*
|
|
64
62
|
* Example 6: Compute Timestamp from current time in Python.
|
|
65
63
|
*
|
|
66
64
|
* timestamp = Timestamp()
|
|
@@ -119,7 +117,7 @@ export declare const Timestamp: {
|
|
|
119
117
|
} & {
|
|
120
118
|
seconds?: number | undefined;
|
|
121
119
|
nanos?: number | undefined;
|
|
122
|
-
} &
|
|
120
|
+
} & { [K in Exclude<keyof I, keyof Timestamp>]: never; }>(object: I): Timestamp;
|
|
123
121
|
};
|
|
124
122
|
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
125
123
|
export declare type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
|
|
@@ -128,5 +126,7 @@ export declare type DeepPartial<T> = T extends Builtin ? T : T extends Array<inf
|
|
|
128
126
|
declare type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
129
127
|
export declare type Exact<P, I extends P> = P extends Builtin ? P : P & {
|
|
130
128
|
[K in keyof P]: Exact<P[K], I[K]>;
|
|
131
|
-
} &
|
|
129
|
+
} & {
|
|
130
|
+
[K in Exclude<keyof I, KeysOfUnion<P>>]: never;
|
|
131
|
+
};
|
|
132
132
|
export {};
|
|
@@ -1,23 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
4
|
};
|
|
@@ -25,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
25
6
|
exports.Timestamp = exports.protobufPackage = void 0;
|
|
26
7
|
/* eslint-disable */
|
|
27
8
|
const long_1 = __importDefault(require("long"));
|
|
28
|
-
const
|
|
29
|
-
exports.protobufPackage =
|
|
9
|
+
const minimal_1 = __importDefault(require("protobufjs/minimal"));
|
|
10
|
+
exports.protobufPackage = "google.protobuf";
|
|
30
11
|
function createBaseTimestamp() {
|
|
31
12
|
return { seconds: 0, nanos: 0 };
|
|
32
13
|
}
|
|
33
14
|
exports.Timestamp = {
|
|
34
|
-
encode(message, writer =
|
|
15
|
+
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
35
16
|
if (message.seconds !== 0) {
|
|
36
17
|
writer.uint32(8).int64(message.seconds);
|
|
37
18
|
}
|
|
@@ -41,7 +22,7 @@ exports.Timestamp = {
|
|
|
41
22
|
return writer;
|
|
42
23
|
},
|
|
43
24
|
decode(input, length) {
|
|
44
|
-
const reader = input instanceof
|
|
25
|
+
const reader = input instanceof minimal_1.default.Reader ? input : new minimal_1.default.Reader(input);
|
|
45
26
|
let end = length === undefined ? reader.len : reader.pos + length;
|
|
46
27
|
const message = createBaseTimestamp();
|
|
47
28
|
while (reader.pos < end) {
|
|
@@ -81,25 +62,29 @@ exports.Timestamp = {
|
|
|
81
62
|
},
|
|
82
63
|
};
|
|
83
64
|
var globalThis = (() => {
|
|
84
|
-
if (typeof globalThis !==
|
|
65
|
+
if (typeof globalThis !== "undefined") {
|
|
85
66
|
return globalThis;
|
|
86
|
-
|
|
67
|
+
}
|
|
68
|
+
if (typeof self !== "undefined") {
|
|
87
69
|
return self;
|
|
88
|
-
|
|
70
|
+
}
|
|
71
|
+
if (typeof window !== "undefined") {
|
|
89
72
|
return window;
|
|
90
|
-
|
|
73
|
+
}
|
|
74
|
+
if (typeof global !== "undefined") {
|
|
91
75
|
return global;
|
|
92
|
-
|
|
76
|
+
}
|
|
77
|
+
throw "Unable to locate global object";
|
|
93
78
|
})();
|
|
94
79
|
function longToNumber(long) {
|
|
95
80
|
if (long.gt(Number.MAX_SAFE_INTEGER)) {
|
|
96
|
-
throw new globalThis.Error(
|
|
81
|
+
throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
|
|
97
82
|
}
|
|
98
83
|
return long.toNumber();
|
|
99
84
|
}
|
|
100
|
-
if (
|
|
101
|
-
|
|
102
|
-
|
|
85
|
+
if (minimal_1.default.util.Long !== long_1.default) {
|
|
86
|
+
minimal_1.default.util.Long = long_1.default;
|
|
87
|
+
minimal_1.default.configure();
|
|
103
88
|
}
|
|
104
89
|
function isSet(value) {
|
|
105
90
|
return value !== null && value !== undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../../../src/proto/google/protobuf/timestamp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../../../src/proto/google/protobuf/timestamp.ts"],"names":[],"mappings":"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"}
|