@livekit/agents 0.1.0 → 0.3.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +47 -0
- package/LICENSE +201 -0
- package/dist/audio.d.ts +9 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +54 -0
- package/dist/audio.js.map +1 -0
- package/dist/cli.d.ts +12 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +102 -19
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +17 -6
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +20 -3
- package/dist/generator.js.map +1 -1
- package/dist/http_server.d.ts +1 -1
- package/dist/http_server.d.ts.map +1 -1
- package/dist/http_server.js +5 -3
- package/dist/http_server.js.map +1 -1
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/ipc/job_executor.d.ts +19 -0
- package/dist/ipc/job_executor.d.ts.map +1 -0
- package/dist/ipc/job_executor.js +8 -0
- package/dist/ipc/job_executor.js.map +1 -0
- package/dist/ipc/job_main.d.ts +7 -4
- package/dist/ipc/job_main.d.ts.map +1 -1
- package/dist/ipc/job_main.js +102 -59
- package/dist/ipc/job_main.js.map +1 -1
- package/dist/ipc/message.d.ts +41 -0
- package/dist/ipc/message.d.ts.map +1 -0
- package/dist/ipc/message.js +2 -0
- package/dist/ipc/message.js.map +1 -0
- package/dist/ipc/proc_job_executor.d.ts +15 -0
- package/dist/ipc/proc_job_executor.d.ts.map +1 -0
- package/dist/ipc/proc_job_executor.js +150 -0
- package/dist/ipc/proc_job_executor.js.map +1 -0
- package/dist/ipc/proc_pool.d.ts +26 -0
- package/dist/ipc/proc_pool.d.ts.map +1 -0
- package/dist/ipc/proc_pool.js +83 -0
- package/dist/ipc/proc_pool.js.map +1 -0
- package/dist/job.d.ts +100 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +213 -0
- package/dist/job.js.map +1 -0
- package/dist/llm/function_context.d.ts +20 -0
- package/dist/llm/function_context.d.ts.map +1 -0
- package/dist/llm/function_context.js +37 -0
- package/dist/llm/function_context.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +6 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/log.d.ts +12 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +28 -11
- package/dist/log.js.map +1 -1
- package/dist/multimodal/agent_playout.d.ts +34 -0
- package/dist/multimodal/agent_playout.d.ts.map +1 -0
- package/dist/multimodal/agent_playout.js +221 -0
- package/dist/multimodal/agent_playout.js.map +1 -0
- package/dist/multimodal/index.d.ts +3 -0
- package/dist/multimodal/index.d.ts.map +1 -0
- package/dist/multimodal/index.js +6 -0
- package/dist/multimodal/index.js.map +1 -0
- package/dist/multimodal/multimodal_agent.d.ts +47 -0
- package/dist/multimodal/multimodal_agent.d.ts.map +1 -0
- package/dist/multimodal/multimodal_agent.js +331 -0
- package/dist/multimodal/multimodal_agent.js.map +1 -0
- package/dist/plugin.js +20 -7
- package/dist/plugin.js.map +1 -1
- package/dist/stt/index.d.ts +1 -1
- package/dist/stt/index.d.ts.map +1 -1
- package/dist/stt/index.js.map +1 -1
- package/dist/stt/stream_adapter.d.ts +2 -11
- package/dist/stt/stream_adapter.d.ts.map +1 -1
- package/dist/stt/stream_adapter.js +47 -33
- package/dist/stt/stream_adapter.js.map +1 -1
- package/dist/stt/stt.d.ts +27 -0
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +32 -5
- package/dist/stt/stt.js.map +1 -1
- package/dist/transcription.d.ts +22 -0
- package/dist/transcription.d.ts.map +1 -0
- package/dist/transcription.js +111 -0
- package/dist/transcription.js.map +1 -0
- package/dist/tts/stream_adapter.d.ts +4 -11
- package/dist/tts/stream_adapter.d.ts.map +1 -1
- package/dist/tts/stream_adapter.js +66 -32
- package/dist/tts/stream_adapter.js.map +1 -1
- package/dist/tts/tts.d.ts +10 -0
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +48 -7
- package/dist/tts/tts.js.map +1 -1
- package/dist/utils.d.ts +59 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +212 -6
- package/dist/utils.js.map +1 -1
- package/dist/vad.d.ts +29 -0
- package/dist/vad.d.ts.map +1 -1
- package/dist/vad.js.map +1 -1
- package/dist/worker.d.ts +69 -50
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +414 -213
- package/dist/worker.js.map +1 -1
- package/package.json +12 -10
- package/src/audio.ts +62 -0
- package/src/cli.ts +108 -20
- package/src/generator.ts +27 -7
- package/src/http_server.ts +5 -0
- package/src/index.ts +15 -3
- package/src/ipc/job_executor.ts +25 -0
- package/src/ipc/job_main.ts +141 -61
- package/src/ipc/message.ts +39 -0
- package/src/ipc/proc_job_executor.ts +162 -0
- package/src/ipc/proc_pool.ts +109 -0
- package/src/job.ts +278 -0
- package/src/llm/function_context.ts +61 -0
- package/src/llm/index.ts +11 -0
- package/src/log.ts +40 -8
- package/src/multimodal/agent_playout.ts +254 -0
- package/src/multimodal/index.ts +5 -0
- package/src/multimodal/multimodal_agent.ts +428 -0
- package/src/stt/index.ts +1 -1
- package/src/stt/stream_adapter.ts +32 -32
- package/src/stt/stt.ts +27 -0
- package/src/transcription.ts +128 -0
- package/src/tts/stream_adapter.ts +32 -31
- package/src/tts/tts.ts +10 -0
- package/src/utils.ts +257 -3
- package/src/vad.ts +29 -0
- package/src/worker.ts +465 -172
- package/tsconfig.json +7 -1
- package/dist/ipc/job_process.d.ts +0 -22
- package/dist/ipc/job_process.d.ts.map +0 -1
- package/dist/ipc/job_process.js +0 -73
- package/dist/ipc/job_process.js.map +0 -1
- package/dist/ipc/protocol.d.ts +0 -40
- package/dist/ipc/protocol.d.ts.map +0 -1
- package/dist/ipc/protocol.js +0 -14
- package/dist/ipc/protocol.js.map +0 -1
- package/dist/job_context.d.ts +0 -16
- package/dist/job_context.d.ts.map +0 -1
- package/dist/job_context.js +0 -31
- package/dist/job_context.js.map +0 -1
- package/dist/job_request.d.ts +0 -42
- package/dist/job_request.d.ts.map +0 -1
- package/dist/job_request.js +0 -79
- package/dist/job_request.js.map +0 -1
- package/src/ipc/job_process.ts +0 -96
- package/src/ipc/protocol.ts +0 -51
- package/src/job_context.ts +0 -49
- package/src/job_request.ts +0 -118
|
@@ -1,47 +1,79 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
13
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
+
var m = o[Symbol.asyncIterator], i;
|
|
15
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
16
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
17
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
18
|
+
};
|
|
19
|
+
var _StreamAdapterWrapper_closed, _StreamAdapterWrapper_tts, _StreamAdapterWrapper_sentenceStream, _StreamAdapterWrapper_eventQueue, _StreamAdapterWrapper_task, _StreamAdapter_tts, _StreamAdapter_tokenizer;
|
|
1
20
|
import { SynthesisEvent, SynthesisEventType, SynthesizeStream, TTS } from './tts.js';
|
|
2
21
|
export class StreamAdapterWrapper extends SynthesizeStream {
|
|
3
|
-
closed;
|
|
4
|
-
tts;
|
|
5
|
-
sentenceStream;
|
|
6
|
-
eventQueue;
|
|
7
|
-
task;
|
|
8
22
|
constructor(tts, sentenceStream) {
|
|
9
23
|
super();
|
|
10
|
-
this
|
|
11
|
-
this
|
|
12
|
-
this
|
|
13
|
-
this
|
|
14
|
-
this
|
|
24
|
+
_StreamAdapterWrapper_closed.set(this, void 0);
|
|
25
|
+
_StreamAdapterWrapper_tts.set(this, void 0);
|
|
26
|
+
_StreamAdapterWrapper_sentenceStream.set(this, void 0);
|
|
27
|
+
_StreamAdapterWrapper_eventQueue.set(this, void 0);
|
|
28
|
+
_StreamAdapterWrapper_task.set(this, void 0);
|
|
29
|
+
__classPrivateFieldSet(this, _StreamAdapterWrapper_closed, false, "f");
|
|
30
|
+
__classPrivateFieldSet(this, _StreamAdapterWrapper_tts, tts, "f");
|
|
31
|
+
__classPrivateFieldSet(this, _StreamAdapterWrapper_sentenceStream, sentenceStream, "f");
|
|
32
|
+
__classPrivateFieldSet(this, _StreamAdapterWrapper_eventQueue, [], "f");
|
|
33
|
+
__classPrivateFieldSet(this, _StreamAdapterWrapper_task, {
|
|
15
34
|
run: new Promise((_, reject) => {
|
|
16
35
|
this.run(reject);
|
|
17
36
|
}),
|
|
18
37
|
cancel: () => { },
|
|
19
|
-
};
|
|
38
|
+
}, "f");
|
|
20
39
|
}
|
|
21
40
|
async run(reject) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
41
|
+
var _a, e_1, _b, _c;
|
|
42
|
+
while (!__classPrivateFieldGet(this, _StreamAdapterWrapper_closed, "f")) {
|
|
43
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_task, "f").cancel = () => {
|
|
44
|
+
__classPrivateFieldSet(this, _StreamAdapterWrapper_closed, true, "f");
|
|
25
45
|
reject(new Error('cancelled'));
|
|
26
46
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.
|
|
47
|
+
try {
|
|
48
|
+
for (var _d = true, _e = (e_1 = void 0, __asyncValues(__classPrivateFieldGet(this, _StreamAdapterWrapper_sentenceStream, "f"))), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
49
|
+
_c = _f.value;
|
|
50
|
+
_d = false;
|
|
51
|
+
const sentence = _c;
|
|
52
|
+
const audio = await __classPrivateFieldGet(this, _StreamAdapterWrapper_tts, "f").synthesize(sentence.text).then((data) => data.next());
|
|
53
|
+
if (!audio.done) {
|
|
54
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_eventQueue, "f").push(new SynthesisEvent(SynthesisEventType.STARTED));
|
|
55
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_eventQueue, "f").push(new SynthesisEvent(SynthesisEventType.AUDIO, audio.value));
|
|
56
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_eventQueue, "f").push(new SynthesisEvent(SynthesisEventType.FINISHED));
|
|
57
|
+
}
|
|
33
58
|
}
|
|
34
59
|
}
|
|
60
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
61
|
+
finally {
|
|
62
|
+
try {
|
|
63
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
64
|
+
}
|
|
65
|
+
finally { if (e_1) throw e_1.error; }
|
|
66
|
+
}
|
|
35
67
|
}
|
|
36
68
|
}
|
|
37
69
|
pushText(token) {
|
|
38
|
-
this.
|
|
70
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_sentenceStream, "f").pushText(token);
|
|
39
71
|
}
|
|
40
72
|
async flush() {
|
|
41
|
-
await this.
|
|
73
|
+
await __classPrivateFieldGet(this, _StreamAdapterWrapper_sentenceStream, "f").flush();
|
|
42
74
|
}
|
|
43
75
|
next() {
|
|
44
|
-
const event = this.
|
|
76
|
+
const event = __classPrivateFieldGet(this, _StreamAdapterWrapper_eventQueue, "f").shift();
|
|
45
77
|
if (event) {
|
|
46
78
|
return { done: false, value: event };
|
|
47
79
|
}
|
|
@@ -50,28 +82,30 @@ export class StreamAdapterWrapper extends SynthesizeStream {
|
|
|
50
82
|
}
|
|
51
83
|
}
|
|
52
84
|
async close() {
|
|
53
|
-
this.
|
|
85
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_task, "f").cancel();
|
|
54
86
|
try {
|
|
55
|
-
await this.
|
|
87
|
+
await __classPrivateFieldGet(this, _StreamAdapterWrapper_task, "f").run;
|
|
56
88
|
}
|
|
57
89
|
finally {
|
|
58
|
-
this.
|
|
90
|
+
__classPrivateFieldGet(this, _StreamAdapterWrapper_eventQueue, "f").push(undefined);
|
|
59
91
|
}
|
|
60
92
|
}
|
|
61
93
|
}
|
|
94
|
+
_StreamAdapterWrapper_closed = new WeakMap(), _StreamAdapterWrapper_tts = new WeakMap(), _StreamAdapterWrapper_sentenceStream = new WeakMap(), _StreamAdapterWrapper_eventQueue = new WeakMap(), _StreamAdapterWrapper_task = new WeakMap();
|
|
62
95
|
export class StreamAdapter extends TTS {
|
|
63
|
-
tts;
|
|
64
|
-
tokenizer;
|
|
65
96
|
constructor(tts, tokenizer) {
|
|
66
97
|
super(true);
|
|
67
|
-
this
|
|
68
|
-
this
|
|
98
|
+
_StreamAdapter_tts.set(this, void 0);
|
|
99
|
+
_StreamAdapter_tokenizer.set(this, void 0);
|
|
100
|
+
__classPrivateFieldSet(this, _StreamAdapter_tts, tts, "f");
|
|
101
|
+
__classPrivateFieldSet(this, _StreamAdapter_tokenizer, tokenizer, "f");
|
|
69
102
|
}
|
|
70
103
|
synthesize(text) {
|
|
71
|
-
return this.
|
|
104
|
+
return __classPrivateFieldGet(this, _StreamAdapter_tts, "f").synthesize(text);
|
|
72
105
|
}
|
|
73
106
|
stream() {
|
|
74
|
-
return new StreamAdapterWrapper(this
|
|
107
|
+
return new StreamAdapterWrapper(__classPrivateFieldGet(this, _StreamAdapter_tts, "f"), __classPrivateFieldGet(this, _StreamAdapter_tokenizer, "f").stream(undefined));
|
|
75
108
|
}
|
|
76
109
|
}
|
|
110
|
+
_StreamAdapter_tts = new WeakMap(), _StreamAdapter_tokenizer = new WeakMap();
|
|
77
111
|
//# sourceMappingURL=stream_adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream_adapter.js","sourceRoot":"","sources":["../../src/tts/stream_adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream_adapter.js","sourceRoot":"","sources":["../../src/tts/stream_adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/tts/tts.d.ts
CHANGED
|
@@ -4,8 +4,18 @@ export interface SynthesizedAudio {
|
|
|
4
4
|
data: AudioFrame;
|
|
5
5
|
}
|
|
6
6
|
export declare enum SynthesisEventType {
|
|
7
|
+
/**
|
|
8
|
+
* Indicate the start of synthesis.
|
|
9
|
+
* Retriggered after FINISHED.
|
|
10
|
+
*/
|
|
7
11
|
STARTED = 0,
|
|
12
|
+
/**
|
|
13
|
+
* Indicate that audio data is available.
|
|
14
|
+
*/
|
|
8
15
|
AUDIO = 1,
|
|
16
|
+
/**
|
|
17
|
+
* Indicate the end of synthesis. Does not necessarily mean stream is done.
|
|
18
|
+
*/
|
|
9
19
|
FINISHED = 2
|
|
10
20
|
}
|
|
11
21
|
export declare class SynthesisEvent {
|
package/dist/tts/tts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,oBAAY,kBAAkB;IAC5B,OAAO,IAAI;IACX,KAAK,IAAI;IACT,QAAQ,IAAI;CACb;AAED,qBAAa,cAAc;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAC;gBAEb,IAAI,EAAE,kBAAkB,EAAE,KAAK,GAAE,gBAAgB,GAAG,SAAqB;CAItF;AAED,8BAAsB,gBAAiB,YAAW,gBAAgB,CAAC,cAAc,CAAC;IAChF,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAEvC,cAAc;IAId,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAC,cAAc,CAAC;IAE/C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB;CAGtC;AAED,8BAAsB,GAAG;;gBAGX,kBAAkB,EAAE,OAAO;IAIvC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAEzD,QAAQ,CAAC,MAAM,IAAI,gBAAgB;IAEnC,IAAI,kBAAkB,IAAI,OAAO,CAEhC;CACF;AAED,8BAAsB,aAAc,YAAW,qBAAqB,CAAC,gBAAgB,CAAC;IAC9E,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAQpC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAE1D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa;IAIlC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa;CAGxC"}
|
|
1
|
+
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,oBAAY,kBAAkB;IAC5B;;;OAGG;IACH,OAAO,IAAI;IACX;;OAEG;IACH,KAAK,IAAI;IACT;;OAEG;IACH,QAAQ,IAAI;CACb;AAED,qBAAa,cAAc;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAC;gBAEb,IAAI,EAAE,kBAAkB,EAAE,KAAK,GAAE,gBAAgB,GAAG,SAAqB;CAItF;AAED,8BAAsB,gBAAiB,YAAW,gBAAgB,CAAC,cAAc,CAAC;IAChF,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAEvC,cAAc;IAId,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAC,cAAc,CAAC;IAE/C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB;CAGtC;AAED,8BAAsB,GAAG;;gBAGX,kBAAkB,EAAE,OAAO;IAIvC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAEzD,QAAQ,CAAC,MAAM,IAAI,gBAAgB;IAEnC,IAAI,kBAAkB,IAAI,OAAO,CAEhC;CACF;AAED,8BAAsB,aAAc,YAAW,qBAAqB,CAAC,gBAAgB,CAAC;IAC9E,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAQpC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAE1D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa;IAIlC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa;CAGxC"}
|
package/dist/tts/tts.js
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
13
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
+
var m = o[Symbol.asyncIterator], i;
|
|
15
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
16
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
17
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
18
|
+
};
|
|
19
|
+
var _TTS_streamingSupported;
|
|
1
20
|
import { mergeFrames } from '../utils.js';
|
|
2
21
|
export var SynthesisEventType;
|
|
3
22
|
(function (SynthesisEventType) {
|
|
23
|
+
/**
|
|
24
|
+
* Indicate the start of synthesis.
|
|
25
|
+
* Retriggered after FINISHED.
|
|
26
|
+
*/
|
|
4
27
|
SynthesisEventType[SynthesisEventType["STARTED"] = 0] = "STARTED";
|
|
28
|
+
/**
|
|
29
|
+
* Indicate that audio data is available.
|
|
30
|
+
*/
|
|
5
31
|
SynthesisEventType[SynthesisEventType["AUDIO"] = 1] = "AUDIO";
|
|
32
|
+
/**
|
|
33
|
+
* Indicate the end of synthesis. Does not necessarily mean stream is done.
|
|
34
|
+
*/
|
|
6
35
|
SynthesisEventType[SynthesisEventType["FINISHED"] = 2] = "FINISHED";
|
|
7
36
|
})(SynthesisEventType || (SynthesisEventType = {}));
|
|
8
37
|
export class SynthesisEvent {
|
|
9
|
-
type;
|
|
10
|
-
audio;
|
|
11
38
|
constructor(type, audio = undefined) {
|
|
12
39
|
this.type = type;
|
|
13
40
|
this.audio = audio;
|
|
@@ -22,19 +49,33 @@ export class SynthesizeStream {
|
|
|
22
49
|
}
|
|
23
50
|
}
|
|
24
51
|
export class TTS {
|
|
25
|
-
#streamingSupported;
|
|
26
52
|
constructor(streamingSupported) {
|
|
27
|
-
this
|
|
53
|
+
_TTS_streamingSupported.set(this, void 0);
|
|
54
|
+
__classPrivateFieldSet(this, _TTS_streamingSupported, streamingSupported, "f");
|
|
28
55
|
}
|
|
29
56
|
get streamingSupported() {
|
|
30
|
-
return this
|
|
57
|
+
return __classPrivateFieldGet(this, _TTS_streamingSupported, "f");
|
|
31
58
|
}
|
|
32
59
|
}
|
|
60
|
+
_TTS_streamingSupported = new WeakMap();
|
|
33
61
|
export class ChunkedStream {
|
|
34
62
|
async collect() {
|
|
63
|
+
var _a, e_1, _b, _c;
|
|
35
64
|
const frames = [];
|
|
36
|
-
|
|
37
|
-
|
|
65
|
+
try {
|
|
66
|
+
for (var _d = true, _e = __asyncValues(this), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
67
|
+
_c = _f.value;
|
|
68
|
+
_d = false;
|
|
69
|
+
const ev = _c;
|
|
70
|
+
frames.push(ev.data);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
74
|
+
finally {
|
|
75
|
+
try {
|
|
76
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
77
|
+
}
|
|
78
|
+
finally { if (e_1) throw e_1.error; }
|
|
38
79
|
}
|
|
39
80
|
return mergeFrames(frames);
|
|
40
81
|
}
|
package/dist/tts/tts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO1C,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO1C,MAAM,CAAN,IAAY,kBAcX;AAdD,WAAY,kBAAkB;IAC5B;;;OAGG;IACH,iEAAW,CAAA;IACX;;OAEG;IACH,6DAAS,CAAA;IACT;;OAEG;IACH,mEAAY,CAAA;AACd,CAAC,EAdW,kBAAkB,KAAlB,kBAAkB,QAc7B;AAED,MAAM,OAAO,cAAc;IAIzB,YAAY,IAAwB,EAAE,QAAsC,SAAS;QACnF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAgB,gBAAgB;IAGpC,cAAc;QACZ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAKD,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAgB,GAAG;IAGvB,YAAY,kBAA2B;QAFvC,0CAA6B;QAG3B,uBAAA,IAAI,2BAAuB,kBAAkB,MAAA,CAAC;IAChD,CAAC;IAMD,IAAI,kBAAkB;QACpB,OAAO,uBAAA,IAAI,+BAAoB,CAAC;IAClC,CAAC;CACF;;AAED,MAAM,OAAgB,aAAa;IACjC,KAAK,CAAC,OAAO;;QACX,MAAM,MAAM,GAAG,EAAE,CAAC;;YAClB,KAAuB,eAAA,KAAA,cAAA,IAAI,CAAA,IAAA,sDAAE,CAAC;gBAAP,cAAI;gBAAJ,WAAI;gBAAhB,MAAM,EAAE,KAAA,CAAA;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;;;;;;;;;QACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAKD,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,63 @@
|
|
|
1
|
+
import type { Room } from '@livekit/rtc-node';
|
|
1
2
|
import { AudioFrame } from '@livekit/rtc-node';
|
|
3
|
+
/** Union of a single and a list of {@link AudioFrame}s */
|
|
2
4
|
export type AudioBuffer = AudioFrame[] | AudioFrame;
|
|
5
|
+
/**
|
|
6
|
+
* Merge one or more {@link AudioFrame}s into a single one.
|
|
7
|
+
*
|
|
8
|
+
* @param buffer Either an {@link AudioFrame} or a list thereof
|
|
9
|
+
* @throws
|
|
10
|
+
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError
|
|
11
|
+
* | TypeError} if sample rate or channel count are mismatched
|
|
12
|
+
*/
|
|
3
13
|
export declare const mergeFrames: (buffer: AudioBuffer) => AudioFrame;
|
|
14
|
+
export declare const findMicroTrackId: (room: Room, identity: string) => string;
|
|
15
|
+
/** @internal */
|
|
16
|
+
export declare class Mutex {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(limit?: number);
|
|
19
|
+
isLocked(): boolean;
|
|
20
|
+
lock(): Promise<() => void>;
|
|
21
|
+
}
|
|
22
|
+
/** @internal */
|
|
23
|
+
export declare class Queue<T> {
|
|
24
|
+
#private;
|
|
25
|
+
/** @internal */
|
|
26
|
+
items: T[];
|
|
27
|
+
constructor(limit?: number);
|
|
28
|
+
get(): Promise<T>;
|
|
29
|
+
put(item: T): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
/** @internal */
|
|
32
|
+
export declare class Future {
|
|
33
|
+
#private;
|
|
34
|
+
get await(): Promise<void>;
|
|
35
|
+
get done(): boolean;
|
|
36
|
+
resolve(): void;
|
|
37
|
+
reject(_: Error): void;
|
|
38
|
+
}
|
|
39
|
+
/** @internal */
|
|
40
|
+
export declare class CancellablePromise<T> {
|
|
41
|
+
#private;
|
|
42
|
+
constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: (cancelFn: () => void) => void) => void);
|
|
43
|
+
get isCancelled(): boolean;
|
|
44
|
+
get error(): Error | null;
|
|
45
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | Promise<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | Promise<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
46
|
+
catch<TResult = never>(onrejected?: ((reason: any) => TResult | Promise<TResult>) | null): Promise<T | TResult>;
|
|
47
|
+
finally(onfinally?: (() => void) | null): Promise<T>;
|
|
48
|
+
cancel(): void;
|
|
49
|
+
static from<T>(promise: Promise<T>): CancellablePromise<T>;
|
|
50
|
+
}
|
|
51
|
+
/** @internal */
|
|
52
|
+
export declare function gracefullyCancel<T>(promise: CancellablePromise<T>): Promise<void>;
|
|
53
|
+
/** @internal */
|
|
54
|
+
export declare class AsyncIterableQueue<T> implements AsyncIterable<T> {
|
|
55
|
+
private queue;
|
|
56
|
+
private closed;
|
|
57
|
+
private static readonly QUEUE_END_MARKER;
|
|
58
|
+
constructor();
|
|
59
|
+
put(item: T): void;
|
|
60
|
+
close(): void;
|
|
61
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
62
|
+
}
|
|
4
63
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _Mutex_locking, _Mutex_locks, _Mutex_limit, _Queue_limit, _Queue_events, _Future_await, _Future_done, _CancellablePromise_promise, _CancellablePromise_cancelFn, _CancellablePromise_isCancelled, _CancellablePromise_error;
|
|
13
|
+
import { AudioFrame, TrackSource } from '@livekit/rtc-node';
|
|
14
|
+
import { EventEmitter, once } from 'events';
|
|
15
|
+
/**
|
|
16
|
+
* Merge one or more {@link AudioFrame}s into a single one.
|
|
17
|
+
*
|
|
18
|
+
* @param buffer Either an {@link AudioFrame} or a list thereof
|
|
19
|
+
* @throws
|
|
20
|
+
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError
|
|
21
|
+
* | TypeError} if sample rate or channel count are mismatched
|
|
22
|
+
*/
|
|
5
23
|
export const mergeFrames = (buffer) => {
|
|
6
24
|
if (Array.isArray(buffer)) {
|
|
7
25
|
buffer = buffer;
|
|
@@ -11,7 +29,7 @@ export const mergeFrames = (buffer) => {
|
|
|
11
29
|
const sampleRate = buffer[0].sampleRate;
|
|
12
30
|
const channels = buffer[0].channels;
|
|
13
31
|
let samplesPerChannel = 0;
|
|
14
|
-
let data = new
|
|
32
|
+
let data = new Int16Array();
|
|
15
33
|
for (const frame of buffer) {
|
|
16
34
|
if (frame.sampleRate !== sampleRate) {
|
|
17
35
|
throw new TypeError('sample rate mismatch');
|
|
@@ -19,11 +37,199 @@ export const mergeFrames = (buffer) => {
|
|
|
19
37
|
if (frame.channels !== channels) {
|
|
20
38
|
throw new TypeError('channel count mismatch');
|
|
21
39
|
}
|
|
22
|
-
data = new
|
|
40
|
+
data = new Int16Array([...data, ...frame.data]);
|
|
23
41
|
samplesPerChannel += frame.samplesPerChannel;
|
|
24
42
|
}
|
|
25
43
|
return new AudioFrame(data, sampleRate, channels, samplesPerChannel);
|
|
26
44
|
}
|
|
27
45
|
return buffer;
|
|
28
46
|
};
|
|
47
|
+
export const findMicroTrackId = (room, identity) => {
|
|
48
|
+
var _a;
|
|
49
|
+
let p = room.remoteParticipants.get(identity);
|
|
50
|
+
if (identity === ((_a = room.localParticipant) === null || _a === void 0 ? void 0 : _a.identity)) {
|
|
51
|
+
p = room.localParticipant;
|
|
52
|
+
}
|
|
53
|
+
if (!p) {
|
|
54
|
+
throw new Error(`participant ${identity} not found`);
|
|
55
|
+
}
|
|
56
|
+
// find first micro track
|
|
57
|
+
let trackId;
|
|
58
|
+
p.trackPublications.forEach((track) => {
|
|
59
|
+
if (track.source === TrackSource.SOURCE_MICROPHONE) {
|
|
60
|
+
trackId = track.sid;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (!trackId) {
|
|
65
|
+
throw new Error(`participant ${identity} does not have a microphone track`);
|
|
66
|
+
}
|
|
67
|
+
return trackId;
|
|
68
|
+
};
|
|
69
|
+
/** @internal */
|
|
70
|
+
export class Mutex {
|
|
71
|
+
constructor(limit = 1) {
|
|
72
|
+
_Mutex_locking.set(this, void 0);
|
|
73
|
+
_Mutex_locks.set(this, void 0);
|
|
74
|
+
_Mutex_limit.set(this, void 0);
|
|
75
|
+
__classPrivateFieldSet(this, _Mutex_locking, Promise.resolve(), "f");
|
|
76
|
+
__classPrivateFieldSet(this, _Mutex_locks, 0, "f");
|
|
77
|
+
__classPrivateFieldSet(this, _Mutex_limit, limit, "f");
|
|
78
|
+
}
|
|
79
|
+
isLocked() {
|
|
80
|
+
return __classPrivateFieldGet(this, _Mutex_locks, "f") >= __classPrivateFieldGet(this, _Mutex_limit, "f");
|
|
81
|
+
}
|
|
82
|
+
async lock() {
|
|
83
|
+
__classPrivateFieldSet(this, _Mutex_locks, __classPrivateFieldGet(this, _Mutex_locks, "f") + 1, "f");
|
|
84
|
+
let unlockNext;
|
|
85
|
+
const willLock = new Promise((resolve) => (unlockNext = () => {
|
|
86
|
+
__classPrivateFieldSet(this, _Mutex_locks, __classPrivateFieldGet(this, _Mutex_locks, "f") - 1, "f");
|
|
87
|
+
resolve();
|
|
88
|
+
}));
|
|
89
|
+
const willUnlock = __classPrivateFieldGet(this, _Mutex_locking, "f").then(() => unlockNext);
|
|
90
|
+
__classPrivateFieldSet(this, _Mutex_locking, __classPrivateFieldGet(this, _Mutex_locking, "f").then(() => willLock), "f");
|
|
91
|
+
return willUnlock;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_Mutex_locking = new WeakMap(), _Mutex_locks = new WeakMap(), _Mutex_limit = new WeakMap();
|
|
95
|
+
/** @internal */
|
|
96
|
+
export class Queue {
|
|
97
|
+
constructor(limit) {
|
|
98
|
+
/** @internal */
|
|
99
|
+
this.items = [];
|
|
100
|
+
_Queue_limit.set(this, void 0);
|
|
101
|
+
_Queue_events.set(this, new EventEmitter());
|
|
102
|
+
__classPrivateFieldSet(this, _Queue_limit, limit, "f");
|
|
103
|
+
}
|
|
104
|
+
async get() {
|
|
105
|
+
if (this.items.length === 0) {
|
|
106
|
+
await once(__classPrivateFieldGet(this, _Queue_events, "f"), 'put');
|
|
107
|
+
}
|
|
108
|
+
const item = this.items.shift();
|
|
109
|
+
__classPrivateFieldGet(this, _Queue_events, "f").emit('get');
|
|
110
|
+
return item;
|
|
111
|
+
}
|
|
112
|
+
async put(item) {
|
|
113
|
+
if (__classPrivateFieldGet(this, _Queue_limit, "f") && this.items.length >= __classPrivateFieldGet(this, _Queue_limit, "f")) {
|
|
114
|
+
await once(__classPrivateFieldGet(this, _Queue_events, "f"), 'get');
|
|
115
|
+
}
|
|
116
|
+
this.items.push(item);
|
|
117
|
+
__classPrivateFieldGet(this, _Queue_events, "f").emit('put');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
_Queue_limit = new WeakMap(), _Queue_events = new WeakMap();
|
|
121
|
+
/** @internal */
|
|
122
|
+
export class Future {
|
|
123
|
+
constructor() {
|
|
124
|
+
_Future_await.set(this, new Promise((resolve, reject) => {
|
|
125
|
+
this.resolve = resolve;
|
|
126
|
+
this.reject = reject;
|
|
127
|
+
}));
|
|
128
|
+
_Future_done.set(this, false);
|
|
129
|
+
}
|
|
130
|
+
get await() {
|
|
131
|
+
return __classPrivateFieldGet(this, _Future_await, "f");
|
|
132
|
+
}
|
|
133
|
+
get done() {
|
|
134
|
+
return __classPrivateFieldGet(this, _Future_done, "f");
|
|
135
|
+
}
|
|
136
|
+
resolve() {
|
|
137
|
+
__classPrivateFieldSet(this, _Future_done, true, "f");
|
|
138
|
+
}
|
|
139
|
+
reject(_) {
|
|
140
|
+
__classPrivateFieldSet(this, _Future_done, true, "f");
|
|
141
|
+
_;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
_Future_await = new WeakMap(), _Future_done = new WeakMap();
|
|
145
|
+
/** @internal */
|
|
146
|
+
export class CancellablePromise {
|
|
147
|
+
constructor(executor) {
|
|
148
|
+
_CancellablePromise_promise.set(this, void 0);
|
|
149
|
+
_CancellablePromise_cancelFn.set(this, void 0);
|
|
150
|
+
_CancellablePromise_isCancelled.set(this, false);
|
|
151
|
+
_CancellablePromise_error.set(this, null);
|
|
152
|
+
let cancel;
|
|
153
|
+
__classPrivateFieldSet(this, _CancellablePromise_promise, new Promise((resolve, reject) => {
|
|
154
|
+
executor(resolve, (reason) => {
|
|
155
|
+
__classPrivateFieldSet(this, _CancellablePromise_error, reason instanceof Error ? reason : new Error(String(reason)), "f");
|
|
156
|
+
reject(reason);
|
|
157
|
+
}, (cancelFn) => {
|
|
158
|
+
cancel = () => {
|
|
159
|
+
__classPrivateFieldSet(this, _CancellablePromise_isCancelled, true, "f");
|
|
160
|
+
cancelFn();
|
|
161
|
+
};
|
|
162
|
+
});
|
|
163
|
+
}), "f");
|
|
164
|
+
__classPrivateFieldSet(this, _CancellablePromise_cancelFn, cancel, "f");
|
|
165
|
+
}
|
|
166
|
+
get isCancelled() {
|
|
167
|
+
return __classPrivateFieldGet(this, _CancellablePromise_isCancelled, "f");
|
|
168
|
+
}
|
|
169
|
+
get error() {
|
|
170
|
+
return __classPrivateFieldGet(this, _CancellablePromise_error, "f");
|
|
171
|
+
}
|
|
172
|
+
then(onfulfilled, onrejected) {
|
|
173
|
+
return __classPrivateFieldGet(this, _CancellablePromise_promise, "f").then(onfulfilled, onrejected);
|
|
174
|
+
}
|
|
175
|
+
catch(onrejected) {
|
|
176
|
+
return __classPrivateFieldGet(this, _CancellablePromise_promise, "f").catch(onrejected);
|
|
177
|
+
}
|
|
178
|
+
finally(onfinally) {
|
|
179
|
+
return __classPrivateFieldGet(this, _CancellablePromise_promise, "f").finally(onfinally);
|
|
180
|
+
}
|
|
181
|
+
cancel() {
|
|
182
|
+
__classPrivateFieldGet(this, _CancellablePromise_cancelFn, "f").call(this);
|
|
183
|
+
}
|
|
184
|
+
static from(promise) {
|
|
185
|
+
return new CancellablePromise((resolve, reject) => {
|
|
186
|
+
promise.then(resolve).catch(reject);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
_CancellablePromise_promise = new WeakMap(), _CancellablePromise_cancelFn = new WeakMap(), _CancellablePromise_isCancelled = new WeakMap(), _CancellablePromise_error = new WeakMap();
|
|
191
|
+
/** @internal */
|
|
192
|
+
export async function gracefullyCancel(promise) {
|
|
193
|
+
if (!promise.isCancelled) {
|
|
194
|
+
promise.cancel();
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
await promise;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
// Ignore the error, as it's expected due to cancellation
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** @internal */
|
|
204
|
+
export class AsyncIterableQueue {
|
|
205
|
+
constructor() {
|
|
206
|
+
this.closed = false;
|
|
207
|
+
this.queue = new Queue();
|
|
208
|
+
}
|
|
209
|
+
put(item) {
|
|
210
|
+
if (this.closed) {
|
|
211
|
+
throw new Error('Queue is closed');
|
|
212
|
+
}
|
|
213
|
+
this.queue.put(item);
|
|
214
|
+
}
|
|
215
|
+
close() {
|
|
216
|
+
this.closed = true;
|
|
217
|
+
this.queue.put(AsyncIterableQueue.QUEUE_END_MARKER);
|
|
218
|
+
}
|
|
219
|
+
[Symbol.asyncIterator]() {
|
|
220
|
+
return {
|
|
221
|
+
next: async () => {
|
|
222
|
+
if (this.closed && this.queue.items.length === 0) {
|
|
223
|
+
return { value: undefined, done: true };
|
|
224
|
+
}
|
|
225
|
+
const item = await this.queue.get();
|
|
226
|
+
if (item === AsyncIterableQueue.QUEUE_END_MARKER && this.closed) {
|
|
227
|
+
return { value: undefined, done: true };
|
|
228
|
+
}
|
|
229
|
+
return { value: item, done: false };
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
AsyncIterableQueue.QUEUE_END_MARKER = Symbol('QUEUE_END_MARKER');
|
|
29
235
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|