import { assertMethodDecorator } from "../common/decorators.js"; import type { Method } from "../common/types.js"; export function createDelayedMethod( originalMethod: Method, delayMs: number, ): Method { return function(this: This, ...args: Args): void { setTimeout(() => { originalMethod.apply(this, args); }, delayMs); }; } export function delay(delayMs: number) { return function( value: Method, context: ClassMethodDecoratorContext>, ): Method { assertMethodDecorator("delay", value, context); return createDelayedMethod(value, delayMs); }; }