Offload functions to worker threads with shared memory primitives for Node.js.
1import { setTimeout } from 'node:timers/promises';
2import { mo } from 'moroutine';
3
4export const delayedSquare = mo(import.meta, async (n: number, ms: number): Promise<number> => {
5 await setTimeout(ms);
6 return n * n;
7});
8
9export const toUpper = mo(import.meta, (s: string): string => s.toUpperCase());
10
11export const waitAborted = mo(import.meta, async (n: number, signal: AbortSignal): Promise<number> => {
12 await new Promise<void>((resolve) => {
13 if (signal.aborted) return resolve();
14 signal.addEventListener('abort', () => resolve());
15 });
16 return n;
17});