mirror of
https://github.com/denoland/deno
synced 2024-11-05 18:45:24 +00:00
79b3bc05d6
* establish basic event loop for workers * make "self.close()" inside worker * remove "runWorkerMessageLoop() - instead manually call global function in Rust when message arrives. This is done in preparation for structured clone * refactor "WorkerChannel" and use distinct structs for internal and external channels; "WorkerChannelsInternal" and "WorkerHandle" * move "State.worker_channels_internal" to "Worker.internal_channels" * add "WorkerEvent" enum for child->host communication; currently "Message(Buf)" and "Error(ErrBox)" variants are supported * add tests for nested workers * add tests for worker throwing error on startup
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
|
|
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-interface, @typescript-eslint/no-explicit-any */
|
|
|
|
/// <reference no-default-lib="true" />
|
|
/// <reference lib="deno_shared_globals" />
|
|
/// <reference lib="esnext" />
|
|
|
|
declare interface DedicatedWorkerGlobalScope extends WindowOrWorkerGlobalScope {
|
|
self: DedicatedWorkerGlobalScope &
|
|
WindowOrWorkerGlobalScope &
|
|
typeof globalThis;
|
|
onmessage: (e: { data: any }) => void;
|
|
onerror: undefined | typeof onerror;
|
|
name: typeof __workerMain.name;
|
|
close: typeof __workerMain.close;
|
|
postMessage: typeof __workerMain.postMessage;
|
|
}
|
|
|
|
declare const self: DedicatedWorkerGlobalScope &
|
|
WindowOrWorkerGlobalScope &
|
|
typeof globalThis;
|
|
declare let onmessage: ((e: { data: any }) => Promise<void> | void) | undefined;
|
|
declare let onerror:
|
|
| ((
|
|
msg: string,
|
|
source: string,
|
|
lineno: number,
|
|
colno: number,
|
|
e: Event
|
|
) => boolean | void)
|
|
| undefined;
|
|
declare const close: typeof __workerMain.close;
|
|
declare const name: typeof __workerMain.name;
|
|
declare const postMessage: typeof __workerMain.postMessage;
|
|
|
|
declare namespace __workerMain {
|
|
export let onmessage: (e: { data: any }) => void;
|
|
export function postMessage(data: any): void;
|
|
export function close(): void;
|
|
export const name: string;
|
|
}
|
|
|
|
/* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-interface, @typescript-eslint/no-explicit-any */
|