Skip to content

Commit

Permalink
add jsdoc.
Browse files Browse the repository at this point in the history
  • Loading branch information
dojyorin committed Jan 20, 2024
1 parent 6a96d37 commit d1b45e1
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/worker.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
/**
* WIP.
* Communication content between main thread and worker thread.
*/
export interface WorkerMessage<T extends unknown>{
message: T;
transfer?: Transferable[];
}

/**
* WIP.
* Content of processing run by worker thread.
*/
export type WorkerTask<T extends unknown, K extends unknown> = (message:T) => WorkerMessage<K> | Promise<WorkerMessage<K>>;
export type TaskAction<T extends unknown, K extends unknown> = (message:T) => WorkerMessage<K> | Promise<WorkerMessage<K>>;

/**
* WIP.
* Run registered `TaskAction` in worker thread.
*/
export type WorkerContext<T extends unknown, K extends unknown> = (message:T, transfer?:Transferable[]) => Promise<K>;
export type TaskContext<T extends unknown, K extends unknown> = (message:T, transfer?:Transferable[]) => Promise<K>;

/**
* WIP.
* Register `TaskAction` and return reusable task execution context.
* `Worker` instance is created and destroyed each time they run `TaskContext`.
* `import` can only use "syntax", not "declaration".
* @example
* ```ts
* const task = createTask<number, number>(async(data)=>{
Expand All @@ -31,7 +33,7 @@ export type WorkerContext<T extends unknown, K extends unknown> = (message:T, tr
* const result2 = await task(2);
* ```
*/
export function createTask<T extends unknown, K extends unknown>(task:WorkerTask<T, K>):WorkerContext<T, K>{
export function createTask<T extends unknown, K extends unknown>(task:TaskAction<T, K>):TaskContext<T, K>{
const script = task.toString();
const regist = /*js*/`
globalThis.onmessage = async({data})=>{
Expand Down

0 comments on commit d1b45e1

Please sign in to comment.