@vapi-ai/web 1.0.124 → 1.0.126
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/AtomicMediaSource.ts +1 -6
- package/dist/AtomicMediaSource.d.ts +1 -1
- package/dist/AtomicMediaSource.js +0 -4
- package/dist/player.js +12 -1
- package/package.json +1 -1
- package/player.ts +15 -1
package/AtomicMediaSource.ts
CHANGED
|
@@ -4,7 +4,7 @@ import EventEmitter from "events";
|
|
|
4
4
|
|
|
5
5
|
class AtomicMediaSource extends EventEmitter {
|
|
6
6
|
mediaSource: MediaSource;
|
|
7
|
-
|
|
7
|
+
sourceBuffer: SourceBuffer | null = null;
|
|
8
8
|
private operationsQueue: QueueObject<() => Promise<void>>;
|
|
9
9
|
|
|
10
10
|
constructor() {
|
|
@@ -28,7 +28,6 @@ class AtomicMediaSource extends EventEmitter {
|
|
|
28
28
|
this.sourceBuffer.addEventListener(
|
|
29
29
|
"updateend",
|
|
30
30
|
() => {
|
|
31
|
-
this.emit("audio-loaded");
|
|
32
31
|
resolve();
|
|
33
32
|
},
|
|
34
33
|
{ once: true }
|
|
@@ -42,16 +41,12 @@ class AtomicMediaSource extends EventEmitter {
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
public clearBuffer() {
|
|
45
|
-
console.log("CLEAR OP PUSHED");
|
|
46
44
|
this.operationsQueue.push(() => {
|
|
47
|
-
console.log("CLEAR OP START");
|
|
48
|
-
|
|
49
45
|
return new Promise((resolve, reject) => {
|
|
50
46
|
if (this.sourceBuffer) {
|
|
51
47
|
this.sourceBuffer.addEventListener(
|
|
52
48
|
"updateend",
|
|
53
49
|
() => {
|
|
54
|
-
console.log("CLEAR OP END");
|
|
55
50
|
resolve();
|
|
56
51
|
},
|
|
57
52
|
{ once: true }
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import EventEmitter from "events";
|
|
3
3
|
declare class AtomicMediaSource extends EventEmitter {
|
|
4
4
|
mediaSource: MediaSource;
|
|
5
|
-
|
|
5
|
+
sourceBuffer: SourceBuffer | null;
|
|
6
6
|
private operationsQueue;
|
|
7
7
|
constructor();
|
|
8
8
|
appendBuffer(buffer: ArrayBuffer): void;
|
|
@@ -22,7 +22,6 @@ class AtomicMediaSource extends events_1.default {
|
|
|
22
22
|
return new Promise((resolve, reject) => {
|
|
23
23
|
if (this.sourceBuffer) {
|
|
24
24
|
this.sourceBuffer.addEventListener("updateend", () => {
|
|
25
|
-
this.emit("audio-loaded");
|
|
26
25
|
resolve();
|
|
27
26
|
}, { once: true });
|
|
28
27
|
this.sourceBuffer.appendBuffer(buffer);
|
|
@@ -34,13 +33,10 @@ class AtomicMediaSource extends events_1.default {
|
|
|
34
33
|
});
|
|
35
34
|
}
|
|
36
35
|
clearBuffer() {
|
|
37
|
-
console.log("CLEAR OP PUSHED");
|
|
38
36
|
this.operationsQueue.push(() => {
|
|
39
|
-
console.log("CLEAR OP START");
|
|
40
37
|
return new Promise((resolve, reject) => {
|
|
41
38
|
if (this.sourceBuffer) {
|
|
42
39
|
this.sourceBuffer.addEventListener("updateend", () => {
|
|
43
|
-
console.log("CLEAR OP END");
|
|
44
40
|
resolve();
|
|
45
41
|
}, { once: true });
|
|
46
42
|
this.sourceBuffer.remove(0, this.mediaSource.duration);
|
package/dist/player.js
CHANGED
|
@@ -12,9 +12,16 @@ class ContinuousPlayer extends events_1.default {
|
|
|
12
12
|
this.audio = document.createElement("audio");
|
|
13
13
|
this.audio.addEventListener("playing", () => this.emit("speech-start"));
|
|
14
14
|
this.audio.addEventListener("play", () => this.emit("speech-start"));
|
|
15
|
-
this.audio.addEventListener("canplay", () =>
|
|
15
|
+
this.audio.addEventListener("canplay", () => {
|
|
16
|
+
console.log("CAN PLAY");
|
|
17
|
+
this.audio.play();
|
|
18
|
+
});
|
|
16
19
|
this.audio.addEventListener("waiting", () => this.emit("speech-end"));
|
|
17
20
|
this.atomic = new AtomicMediaSource_1.default();
|
|
21
|
+
this.atomic.on("audio-loaded", () => {
|
|
22
|
+
console.log("AUDIO LOADED");
|
|
23
|
+
this.audio.play();
|
|
24
|
+
});
|
|
18
25
|
this.audio.src = URL.createObjectURL(this.atomic.mediaSource);
|
|
19
26
|
document.body.appendChild(this.audio);
|
|
20
27
|
}
|
|
@@ -22,6 +29,10 @@ class ContinuousPlayer extends events_1.default {
|
|
|
22
29
|
this.audio.play();
|
|
23
30
|
}
|
|
24
31
|
playChunk(audioData) {
|
|
32
|
+
var _a;
|
|
33
|
+
(_a = this.atomic.sourceBuffer) === null || _a === void 0 ? void 0 : _a.addEventListener("updateend", () => {
|
|
34
|
+
this.audio.play().catch((error) => console.error("Play error:", error));
|
|
35
|
+
}, { once: true });
|
|
25
36
|
this.atomic.appendBuffer(audioData);
|
|
26
37
|
}
|
|
27
38
|
clear() {
|
package/package.json
CHANGED
package/player.ts
CHANGED
|
@@ -12,11 +12,18 @@ export class ContinuousPlayer extends EventEmitter {
|
|
|
12
12
|
|
|
13
13
|
this.audio.addEventListener("playing", () => this.emit("speech-start"));
|
|
14
14
|
this.audio.addEventListener("play", () => this.emit("speech-start"));
|
|
15
|
-
this.audio.addEventListener("canplay", () =>
|
|
15
|
+
this.audio.addEventListener("canplay", () => {
|
|
16
|
+
console.log("CAN PLAY");
|
|
17
|
+
this.audio.play();
|
|
18
|
+
});
|
|
16
19
|
|
|
17
20
|
this.audio.addEventListener("waiting", () => this.emit("speech-end"));
|
|
18
21
|
|
|
19
22
|
this.atomic = new AtomicMediaSource();
|
|
23
|
+
this.atomic.on("audio-loaded", () => {
|
|
24
|
+
console.log("AUDIO LOADED");
|
|
25
|
+
this.audio.play();
|
|
26
|
+
});
|
|
20
27
|
|
|
21
28
|
this.audio.src = URL.createObjectURL(this.atomic.mediaSource);
|
|
22
29
|
document.body.appendChild(this.audio);
|
|
@@ -27,6 +34,13 @@ export class ContinuousPlayer extends EventEmitter {
|
|
|
27
34
|
}
|
|
28
35
|
|
|
29
36
|
playChunk(audioData: ArrayBuffer) {
|
|
37
|
+
this.atomic.sourceBuffer?.addEventListener(
|
|
38
|
+
"updateend",
|
|
39
|
+
() => {
|
|
40
|
+
this.audio.play().catch((error) => console.error("Play error:", error));
|
|
41
|
+
},
|
|
42
|
+
{ once: true }
|
|
43
|
+
);
|
|
30
44
|
this.atomic.appendBuffer(audioData);
|
|
31
45
|
}
|
|
32
46
|
|