12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- onload = async () => {
- chrome.runtime.sendNativeMessage(
- 'native_messaging_espeakng',
- {},
- async (nativeMessage) => {
- parent.postMessage(nativeMessage, name);
- await new Promise((resolve) => setTimeout(resolve, 100));
- const controller = new AbortController();
- const { signal } = controller;
- parent.postMessage('Ready.', name);
- onmessage = async (e) => {
- if (e.data instanceof ReadableStream) {
- try {
- const { value: file, done } = await e.data.getReader().read();
- const fd = new FormData();
- const stdin = await file.text();
- fd.append(file.name, stdin);
- const { body } = await fetch('http://localhost:8000', {
- method: 'post',
- cache: 'no-store',
- credentials: 'omit',
- body: fd,
- signal,
- });
- parent.postMessage(body, name, [body]);
- } catch (err) {
- parent.postMessage(err, name);
- }
- } else {
- if (e.data === 'Done writing input stream.') {
- chrome.runtime.sendNativeMessage(
- 'native_messaging_espeakng',
- {},
- (nativeMessage) => {
- parent.postMessage(nativeMessage, name);
- }
- );
- }
- if (e.data === 'Abort.') {
- controller.abort();
- }
- }
- };
- }
- );
- };
|