livekit-client 0.14.0 → 0.15.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/.github/workflows/{lint.yaml → test.yaml} +7 -4
- package/README.md +27 -12
- package/dist/api/SignalClient.d.ts +4 -31
- package/dist/api/SignalClient.js +25 -7
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/connect.d.ts +1 -1
- package/dist/connect.js +70 -56
- package/dist/connect.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +10 -0
- package/dist/logger.js +14 -0
- package/dist/logger.js.map +1 -1
- package/dist/options.d.ts +77 -12
- package/dist/options.js +0 -10
- package/dist/options.js.map +1 -1
- package/dist/proto/livekit_models.d.ts +28 -1
- package/dist/proto/livekit_models.js +194 -3
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_rtc.d.ts +49 -7
- package/dist/proto/livekit_rtc.js +303 -28
- package/dist/proto/livekit_rtc.js.map +1 -1
- package/dist/room/RTCEngine.d.ts +2 -2
- package/dist/room/RTCEngine.js +6 -4
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +12 -14
- package/dist/room/Room.js +78 -45
- package/dist/room/Room.js.map +1 -1
- package/dist/room/events.d.ts +98 -1
- package/dist/room/events.js +97 -0
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.d.ts +27 -9
- package/dist/room/participant/LocalParticipant.js +194 -155
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.js +6 -2
- package/dist/room/participant/Participant.js.map +1 -1
- package/dist/room/participant/RemoteParticipant.d.ts +1 -1
- package/dist/room/participant/RemoteParticipant.js +6 -5
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/participant/publishUtils.d.ts +11 -0
- package/dist/room/participant/publishUtils.js +148 -0
- package/dist/room/participant/publishUtils.js.map +1 -0
- package/dist/room/participant/publishUtils.test.d.ts +1 -0
- package/dist/room/participant/publishUtils.test.js +79 -0
- package/dist/room/participant/publishUtils.test.js.map +1 -0
- package/dist/room/track/LocalAudioTrack.d.ts +4 -3
- package/dist/room/track/LocalAudioTrack.js +5 -3
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalTrack.d.ts +1 -3
- package/dist/room/track/LocalTrack.js +2 -49
- package/dist/room/track/LocalTrack.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.d.ts +6 -4
- package/dist/room/track/LocalVideoTrack.js +41 -12
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.test.d.ts +1 -0
- package/dist/room/track/LocalVideoTrack.test.js +68 -0
- package/dist/room/track/LocalVideoTrack.test.js.map +1 -0
- package/dist/room/track/RemoteTrackPublication.d.ts +10 -4
- package/dist/room/track/RemoteTrackPublication.js +60 -4
- package/dist/room/track/RemoteTrackPublication.js.map +1 -1
- package/dist/room/track/RemoteVideoTrack.d.ts +15 -1
- package/dist/room/track/RemoteVideoTrack.js +98 -1
- package/dist/room/track/RemoteVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +15 -2
- package/dist/room/track/Track.js +6 -2
- package/dist/room/track/Track.js.map +1 -1
- package/dist/room/track/options.d.ts +15 -65
- package/dist/room/track/options.js +14 -13
- package/dist/room/track/options.js.map +1 -1
- package/dist/room/track/utils.d.ts +3 -0
- package/dist/room/track/utils.js +68 -0
- package/dist/room/track/utils.js.map +1 -0
- package/dist/room/track/utils.test.d.ts +1 -0
- package/dist/room/track/utils.test.js +85 -0
- package/dist/room/track/utils.test.js.map +1 -0
- package/dist/room/utils.d.ts +6 -0
- package/dist/room/utils.js +25 -1
- package/dist/room/utils.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/example/index.html +183 -178
- package/example/sample.ts +410 -326
- package/example/styles.css +144 -0
- package/example/webpack.config.js +1 -1
- package/jest.config.js +6 -0
- package/package.json +9 -6
- package/tsconfig.eslint.json +8 -1
- package/dist/room/defaults.d.ts +0 -5
- package/dist/room/defaults.js +0 -32
- package/dist/room/defaults.js.map +0 -1
- package/dist/room/track/create.d.ts +0 -25
- package/dist/room/track/create.js +0 -170
- package/dist/room/track/create.js.map +0 -1
@@ -0,0 +1,144 @@
|
|
1
|
+
#connect-area {
|
2
|
+
display: grid;
|
3
|
+
grid-template-columns: 1fr 1fr;
|
4
|
+
grid-template-rows: min-content min-content;
|
5
|
+
grid-auto-flow: column;
|
6
|
+
grid-gap: 10px;
|
7
|
+
margin-bottom: 15px;
|
8
|
+
}
|
9
|
+
|
10
|
+
#options-area {
|
11
|
+
display: grid;
|
12
|
+
grid-template-columns: repeat(4, fit-content(120px)) auto;
|
13
|
+
margin-left: 1.25rem;
|
14
|
+
margin-right: 1.25rem;
|
15
|
+
grid-gap: 3rem;
|
16
|
+
margin-bottom: 10px;
|
17
|
+
}
|
18
|
+
|
19
|
+
#actions-area {
|
20
|
+
display: grid;
|
21
|
+
grid-template-columns: fit-content(100px) auto;
|
22
|
+
grid-gap: 1.25rem;
|
23
|
+
margin-bottom: 15px;
|
24
|
+
}
|
25
|
+
|
26
|
+
#inputs-area {
|
27
|
+
display: grid;
|
28
|
+
grid-template-columns: repeat(3, 1fr);
|
29
|
+
grid-gap: 1.25rem;
|
30
|
+
margin-bottom: 10px;
|
31
|
+
}
|
32
|
+
|
33
|
+
#chat-input-area {
|
34
|
+
margin-top: 1.2rem;
|
35
|
+
display: grid;
|
36
|
+
grid-template-columns: auto min-content;
|
37
|
+
gap: 1.25rem;
|
38
|
+
}
|
39
|
+
|
40
|
+
#screenshare-area {
|
41
|
+
position: relative;
|
42
|
+
margin-top: 1.25rem;
|
43
|
+
margin-bottom: 1.25rem;
|
44
|
+
display: none;
|
45
|
+
}
|
46
|
+
|
47
|
+
#screenshare-area video {
|
48
|
+
max-width: 900px;
|
49
|
+
max-height: 900px;
|
50
|
+
border: 3px solid rgba(0, 0, 0, 0.5);
|
51
|
+
}
|
52
|
+
|
53
|
+
#participants-area {
|
54
|
+
display: grid;
|
55
|
+
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
56
|
+
gap: 20px;
|
57
|
+
}
|
58
|
+
|
59
|
+
#participants-area > .participant {
|
60
|
+
width: 100%;
|
61
|
+
}
|
62
|
+
|
63
|
+
#participants-area > .participant::before {
|
64
|
+
content: "";
|
65
|
+
display: inline-block;
|
66
|
+
width: 1px;
|
67
|
+
height: 0;
|
68
|
+
padding-bottom: calc(100% / (16/9));
|
69
|
+
}
|
70
|
+
|
71
|
+
#log-area {
|
72
|
+
margin-top: 1.25rem;
|
73
|
+
margin-bottom: 1rem;
|
74
|
+
}
|
75
|
+
|
76
|
+
#log {
|
77
|
+
width: 66.6%;
|
78
|
+
height: 100px;
|
79
|
+
}
|
80
|
+
|
81
|
+
.participant {
|
82
|
+
position: relative;
|
83
|
+
padding: 0;
|
84
|
+
margin: 0;
|
85
|
+
border-radius: 5px;
|
86
|
+
border: 3px solid rgba(0, 0, 0, 0);
|
87
|
+
overflow: hidden;
|
88
|
+
}
|
89
|
+
|
90
|
+
.participant video {
|
91
|
+
position: absolute;
|
92
|
+
left: 0;
|
93
|
+
top: 0;
|
94
|
+
width: 100%;
|
95
|
+
height: 100%;
|
96
|
+
background-color: #aaa;
|
97
|
+
object-fit: cover;
|
98
|
+
border-radius: 5px;
|
99
|
+
}
|
100
|
+
|
101
|
+
.participant .info-bar {
|
102
|
+
position: absolute;
|
103
|
+
width: 100%;
|
104
|
+
bottom: 0;
|
105
|
+
display: grid;
|
106
|
+
color: #eee;
|
107
|
+
padding: 2px 8px 2px 8px;
|
108
|
+
background-color: rgba(0, 0, 0, 0.35);
|
109
|
+
grid-template-columns: minmax(50px, auto) 1fr minmax(50px, auto);
|
110
|
+
z-index: 5;
|
111
|
+
}
|
112
|
+
|
113
|
+
.participant .size {
|
114
|
+
text-align: center;
|
115
|
+
}
|
116
|
+
|
117
|
+
.participant .right {
|
118
|
+
text-align: right;
|
119
|
+
}
|
120
|
+
|
121
|
+
.participant.speaking {
|
122
|
+
border: 3px solid rgba(94, 166, 190, 0.7);
|
123
|
+
}
|
124
|
+
|
125
|
+
.participant .mic-off {
|
126
|
+
color: #d33;
|
127
|
+
text-align: right;
|
128
|
+
}
|
129
|
+
|
130
|
+
.participant .mic-on {
|
131
|
+
text-align: right;
|
132
|
+
}
|
133
|
+
|
134
|
+
.participant .connection-excellent {
|
135
|
+
color: green;
|
136
|
+
}
|
137
|
+
|
138
|
+
.participant .connection-good {
|
139
|
+
color: orange;
|
140
|
+
}
|
141
|
+
|
142
|
+
.participant .connection-poor {
|
143
|
+
color: red;
|
144
|
+
}
|
package/jest.config.js
ADDED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.15.0",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"source": "src/index.ts",
|
@@ -13,26 +13,29 @@
|
|
13
13
|
"build-docs": "yarn exec typedoc",
|
14
14
|
"proto": "protoc --plugin=node_modules/ts-proto/protoc-gen-ts_proto --ts_proto_opt=esModuleInterop=true --ts_proto_out=./src/proto --ts_proto_opt=outputClientImpl=false,useOptionals=true -I../protocol ../protocol/livekit_rtc.proto ../protocol/livekit_models.proto",
|
15
15
|
"sample": "cd example && webpack serve",
|
16
|
-
"build-sample": "cd example && webpack && cp index.html dist/",
|
16
|
+
"build-sample": "cd example && webpack && cp styles.css index.html dist/",
|
17
17
|
"lint": "yarn exec eslint src",
|
18
18
|
"test": "jest",
|
19
19
|
"deploy": "gh-pages -d example/dist"
|
20
20
|
},
|
21
21
|
"dependencies": {
|
22
|
-
"@types/ws": "^7.4.0",
|
23
22
|
"events": "^3.3.0",
|
24
|
-
"loglevel": "^1.
|
25
|
-
"protobufjs": "^6.
|
23
|
+
"loglevel": "^1.8.0",
|
24
|
+
"protobufjs": "^6.11.2",
|
26
25
|
"ts-debounce": "^3.0.0",
|
27
|
-
"webrtc-adapter": "^
|
26
|
+
"webrtc-adapter": "^8.1.0"
|
28
27
|
},
|
29
28
|
"devDependencies": {
|
29
|
+
"@types/jest": "^27.0.3",
|
30
|
+
"@types/ws": "^7.4.0",
|
30
31
|
"@typescript-eslint/eslint-plugin": "^4.31.2",
|
31
32
|
"@webpack-cli/serve": "^1.5.2",
|
32
33
|
"eslint": "^7.32.0",
|
33
34
|
"eslint-config-airbnb-typescript": "^12.3.1",
|
34
35
|
"eslint-plugin-import": "^2.24.2",
|
35
36
|
"gh-pages": "^3.2.3",
|
37
|
+
"jest": "^27.4.3",
|
38
|
+
"ts-jest": "^27.0.7",
|
36
39
|
"ts-loader": "^8.1.0",
|
37
40
|
"ts-proto": "^1.85.0",
|
38
41
|
"typedoc": "^0.20.35",
|
package/tsconfig.eslint.json
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"extends": "./tsconfig.json",
|
3
|
-
"include": [
|
3
|
+
"include": [
|
4
|
+
"src/**/*.ts",
|
5
|
+
"src/**/*.js",
|
6
|
+
"example/**/*.ts",
|
7
|
+
"example/**/*.js",
|
8
|
+
".eslintrc.js",
|
9
|
+
"jest.config.js",
|
10
|
+
]
|
4
11
|
}
|
package/dist/room/defaults.d.ts
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
import { TrackCaptureDefaults, TrackPublishDefaults } from './track/options';
|
2
|
-
export declare function getTrackPublishDefaults(): TrackPublishDefaults;
|
3
|
-
export declare function setTrackPublishDefaults(defaults: TrackPublishDefaults): void;
|
4
|
-
export declare function getTrackCaptureDefaults(): TrackCaptureDefaults;
|
5
|
-
export declare function setTrackCaptureDefaults(defaults: TrackCaptureDefaults): void;
|
package/dist/room/defaults.js
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.setTrackCaptureDefaults = exports.getTrackCaptureDefaults = exports.setTrackPublishDefaults = exports.getTrackPublishDefaults = void 0;
|
4
|
-
const options_1 = require("./track/options");
|
5
|
-
let publishDefaults = {
|
6
|
-
audioBitrate: options_1.AudioPresets.speech.maxBitrate,
|
7
|
-
stopMicTrackOnMute: false,
|
8
|
-
};
|
9
|
-
let captureDefaults = {
|
10
|
-
autoGainControl: true,
|
11
|
-
channelCount: 1,
|
12
|
-
echoCancellation: true,
|
13
|
-
noiseSuppression: true,
|
14
|
-
videoResolution: options_1.VideoPresets.qhd.resolution,
|
15
|
-
};
|
16
|
-
function getTrackPublishDefaults() {
|
17
|
-
return publishDefaults;
|
18
|
-
}
|
19
|
-
exports.getTrackPublishDefaults = getTrackPublishDefaults;
|
20
|
-
function setTrackPublishDefaults(defaults) {
|
21
|
-
publishDefaults = defaults;
|
22
|
-
}
|
23
|
-
exports.setTrackPublishDefaults = setTrackPublishDefaults;
|
24
|
-
function getTrackCaptureDefaults() {
|
25
|
-
return captureDefaults;
|
26
|
-
}
|
27
|
-
exports.getTrackCaptureDefaults = getTrackCaptureDefaults;
|
28
|
-
function setTrackCaptureDefaults(defaults) {
|
29
|
-
captureDefaults = defaults;
|
30
|
-
}
|
31
|
-
exports.setTrackCaptureDefaults = setTrackCaptureDefaults;
|
32
|
-
//# sourceMappingURL=defaults.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/room/defaults.ts"],"names":[],"mappings":";;;AAAA,6CAEyB;AAEzB,IAAI,eAAe,GAAyB;IAC1C,YAAY,EAAE,sBAAY,CAAC,MAAM,CAAC,UAAU;IAC5C,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,IAAI,eAAe,GAAyB;IAC1C,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,sBAAY,CAAC,GAAG,CAAC,UAAU;CAC7C,CAAC;AAEF,SAAgB,uBAAuB;IACrC,OAAO,eAAe,CAAC;AACzB,CAAC;AAFD,0DAEC;AAED,SAAgB,uBAAuB,CAAC,QAA8B;IACpE,eAAe,GAAG,QAAQ,CAAC;AAC7B,CAAC;AAFD,0DAEC;AAED,SAAgB,uBAAuB;IACrC,OAAO,eAAe,CAAC;AACzB,CAAC;AAFD,0DAEC;AAED,SAAgB,uBAAuB,CAAC,QAA8B;IACpE,eAAe,GAAG,QAAQ,CAAC;AAC7B,CAAC;AAFD,0DAEC"}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import LocalAudioTrack from './LocalAudioTrack';
|
2
|
-
import LocalTrack from './LocalTrack';
|
3
|
-
import LocalVideoTrack from './LocalVideoTrack';
|
4
|
-
import { CreateAudioTrackOptions, CreateLocalTracksOptions, CreateScreenTrackOptions, CreateVideoTrackOptions } from './options';
|
5
|
-
export declare function getLastAudioCreateError(): Error | undefined;
|
6
|
-
export declare function getLastVideoCreateError(): Error | undefined;
|
7
|
-
/**
|
8
|
-
* Creates a local video and audio track at the same time. When acquiring both
|
9
|
-
* audio and video tracks together, it'll display a single permission prompt to
|
10
|
-
* the user instead of two separate ones.
|
11
|
-
* @param options
|
12
|
-
*/
|
13
|
-
export declare function createLocalTracks(options?: CreateLocalTracksOptions): Promise<Array<LocalTrack>>;
|
14
|
-
/**
|
15
|
-
* Creates a [[LocalVideoTrack]] with getUserMedia()
|
16
|
-
* @param options
|
17
|
-
*/
|
18
|
-
export declare function createLocalVideoTrack(options?: CreateVideoTrackOptions): Promise<LocalVideoTrack>;
|
19
|
-
export declare function createLocalAudioTrack(options?: CreateAudioTrackOptions): Promise<LocalAudioTrack>;
|
20
|
-
/**
|
21
|
-
* Creates a screen capture tracks with getDisplayMedia().
|
22
|
-
* A LocalVideoTrack is always created and returned.
|
23
|
-
* If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
|
24
|
-
*/
|
25
|
-
export declare function createLocalScreenTracks(options?: CreateScreenTrackOptions): Promise<Array<LocalTrack>>;
|
@@ -1,170 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
exports.createLocalScreenTracks = exports.createLocalAudioTrack = exports.createLocalVideoTrack = exports.createLocalTracks = exports.getLastVideoCreateError = exports.getLastAudioCreateError = void 0;
|
16
|
-
const errors_1 = require("../errors");
|
17
|
-
const LocalAudioTrack_1 = __importDefault(require("./LocalAudioTrack"));
|
18
|
-
const LocalTrack_1 = __importDefault(require("./LocalTrack"));
|
19
|
-
const LocalVideoTrack_1 = __importDefault(require("./LocalVideoTrack"));
|
20
|
-
const options_1 = require("./options");
|
21
|
-
const Track_1 = require("./Track");
|
22
|
-
let audioError;
|
23
|
-
function getLastAudioCreateError() {
|
24
|
-
return audioError;
|
25
|
-
}
|
26
|
-
exports.getLastAudioCreateError = getLastAudioCreateError;
|
27
|
-
let videoError;
|
28
|
-
function getLastVideoCreateError() {
|
29
|
-
return videoError;
|
30
|
-
}
|
31
|
-
exports.getLastVideoCreateError = getLastVideoCreateError;
|
32
|
-
/**
|
33
|
-
* Creates a local video and audio track at the same time. When acquiring both
|
34
|
-
* audio and video tracks together, it'll display a single permission prompt to
|
35
|
-
* the user instead of two separate ones.
|
36
|
-
* @param options
|
37
|
-
*/
|
38
|
-
function createLocalTracks(options) {
|
39
|
-
return __awaiter(this, void 0, void 0, function* () {
|
40
|
-
if (!options)
|
41
|
-
options = {};
|
42
|
-
if (options.audio === true)
|
43
|
-
options.audio = {};
|
44
|
-
if (options.video === true)
|
45
|
-
options.video = {};
|
46
|
-
const constraints = LocalTrack_1.default.constraintsForOptions(options);
|
47
|
-
let stream;
|
48
|
-
try {
|
49
|
-
stream = yield navigator.mediaDevices.getUserMedia(constraints);
|
50
|
-
}
|
51
|
-
catch (err) {
|
52
|
-
if (err instanceof Error) {
|
53
|
-
if (constraints.audio) {
|
54
|
-
audioError = err;
|
55
|
-
}
|
56
|
-
if (constraints.video) {
|
57
|
-
videoError = err;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
throw err;
|
61
|
-
}
|
62
|
-
if (constraints.audio) {
|
63
|
-
audioError = undefined;
|
64
|
-
}
|
65
|
-
if (constraints.video) {
|
66
|
-
videoError = undefined;
|
67
|
-
}
|
68
|
-
return stream.getTracks().map((mediaStreamTrack) => {
|
69
|
-
const isAudio = mediaStreamTrack.kind === 'audio';
|
70
|
-
let trackOptions = isAudio ? options.audio : options.video;
|
71
|
-
if (typeof trackOptions === 'boolean' || !trackOptions) {
|
72
|
-
trackOptions = {};
|
73
|
-
}
|
74
|
-
let trackConstraints;
|
75
|
-
const conOrBool = isAudio ? constraints.audio : constraints.video;
|
76
|
-
if (typeof conOrBool !== 'boolean') {
|
77
|
-
trackConstraints = conOrBool;
|
78
|
-
}
|
79
|
-
const track = createLocalTrack(mediaStreamTrack, trackOptions === null || trackOptions === void 0 ? void 0 : trackOptions.name, trackConstraints);
|
80
|
-
if (track.kind === Track_1.Track.Kind.Video) {
|
81
|
-
track.source = Track_1.Track.Source.Camera;
|
82
|
-
}
|
83
|
-
else if (track.kind === Track_1.Track.Kind.Audio) {
|
84
|
-
track.source = Track_1.Track.Source.Microphone;
|
85
|
-
}
|
86
|
-
return track;
|
87
|
-
});
|
88
|
-
});
|
89
|
-
}
|
90
|
-
exports.createLocalTracks = createLocalTracks;
|
91
|
-
/**
|
92
|
-
* Creates a [[LocalVideoTrack]] with getUserMedia()
|
93
|
-
* @param options
|
94
|
-
*/
|
95
|
-
function createLocalVideoTrack(options) {
|
96
|
-
return __awaiter(this, void 0, void 0, function* () {
|
97
|
-
const tracks = yield createLocalTracks({
|
98
|
-
audio: false,
|
99
|
-
video: options,
|
100
|
-
});
|
101
|
-
return tracks[0];
|
102
|
-
});
|
103
|
-
}
|
104
|
-
exports.createLocalVideoTrack = createLocalVideoTrack;
|
105
|
-
function createLocalAudioTrack(options) {
|
106
|
-
return __awaiter(this, void 0, void 0, function* () {
|
107
|
-
const tracks = yield createLocalTracks({
|
108
|
-
audio: options,
|
109
|
-
video: false,
|
110
|
-
});
|
111
|
-
return tracks[0];
|
112
|
-
});
|
113
|
-
}
|
114
|
-
exports.createLocalAudioTrack = createLocalAudioTrack;
|
115
|
-
/**
|
116
|
-
* Creates a screen capture tracks with getDisplayMedia().
|
117
|
-
* A LocalVideoTrack is always created and returned.
|
118
|
-
* If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
|
119
|
-
*/
|
120
|
-
function createLocalScreenTracks(options) {
|
121
|
-
var _a;
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
123
|
-
if (options === undefined) {
|
124
|
-
options = {};
|
125
|
-
}
|
126
|
-
if (options.name === undefined) {
|
127
|
-
options.name = 'screen';
|
128
|
-
}
|
129
|
-
if (options.resolution === undefined) {
|
130
|
-
options.resolution = options_1.VideoPresets.fhd.resolution;
|
131
|
-
}
|
132
|
-
let videoConstraints = true;
|
133
|
-
if (options.resolution) {
|
134
|
-
videoConstraints = {
|
135
|
-
width: options.resolution.width,
|
136
|
-
height: options.resolution.height,
|
137
|
-
};
|
138
|
-
}
|
139
|
-
// typescript definition is missing getDisplayMedia: https://github.com/microsoft/TypeScript/issues/33232
|
140
|
-
// @ts-ignore
|
141
|
-
const stream = yield navigator.mediaDevices.getDisplayMedia({
|
142
|
-
audio: (_a = options.audio) !== null && _a !== void 0 ? _a : false,
|
143
|
-
video: videoConstraints,
|
144
|
-
});
|
145
|
-
const tracks = stream.getVideoTracks();
|
146
|
-
if (tracks.length === 0) {
|
147
|
-
throw new errors_1.TrackInvalidError('no video track found');
|
148
|
-
}
|
149
|
-
const screenVideo = new LocalVideoTrack_1.default(tracks[0], options.name);
|
150
|
-
screenVideo.source = Track_1.Track.Source.ScreenShare;
|
151
|
-
const localTracks = [screenVideo];
|
152
|
-
if (stream.getAudioTracks().length > 0) {
|
153
|
-
localTracks.push(new LocalAudioTrack_1.default(stream.getAudioTracks()[0], options.name));
|
154
|
-
}
|
155
|
-
return localTracks;
|
156
|
-
});
|
157
|
-
}
|
158
|
-
exports.createLocalScreenTracks = createLocalScreenTracks;
|
159
|
-
/** @internal */
|
160
|
-
function createLocalTrack(mediaStreamTrack, name, constraints) {
|
161
|
-
switch (mediaStreamTrack.kind) {
|
162
|
-
case 'audio':
|
163
|
-
return new LocalAudioTrack_1.default(mediaStreamTrack, name, constraints);
|
164
|
-
case 'video':
|
165
|
-
return new LocalVideoTrack_1.default(mediaStreamTrack, name, constraints);
|
166
|
-
default:
|
167
|
-
throw new errors_1.TrackInvalidError(`unsupported track type: ${mediaStreamTrack.kind}`);
|
168
|
-
}
|
169
|
-
}
|
170
|
-
//# sourceMappingURL=create.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/room/track/create.ts"],"names":[],"mappings":"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"}
|