UNPKG

loop-controls

Version:

break/continue controls for loops and higher-order functions (sync, async, concurrent). Designed to compose with ts-pattern.

18 lines (15 loc) 474 B
export class _Break<T = unknown> extends Error { readonly value?: T; constructor(value?: T) { super("BREAK"); this.value = value; } } export class _Continue extends Error { constructor() { super("CONTINUE"); } } export type Control = { break: <T = unknown>(value?: T) => never; continue: () => never; }; export const $control: Control = { break: (value?: unknown): never => { throw new _Break(value); }, continue: (): never => { throw new _Continue(); }, };