Skip to content

Type Alias: HookHandlerProvider<Args, CleanUpArgs>

ts
type HookHandlerProvider<Args, CleanUpArgs> = {
  name: string;
  handle:
    | void
    | CleanupHandler<CleanUpArgs>
    | Promise<void>
    | Promise<CleanupHandler<CleanUpArgs>>;
};

Hook represented as an object with a name and handle method.

This is useful when you want to specify a custom name for the hook, or when you want to reuse the same handler function for multiple events.

Example

ts
const hashPasswordProvider: HookHandlerProvider<[User], [Error | null]> = {
  name: "hashPassword",
  handle(event, user) {
    user.password = hash(user.password);
  },
};

// Reuse the same handler for multiple events
function handleSave(event: string, model: Model) {
  console.log(`Handling ${event} for`, model);
}

hooks.add("saving", { name: "beforeSave", handle: handleSave });
hooks.add("creating", { name: "beforeCreate", handle: handleSave });

Type Parameters

Type ParameterDescription
Args extends any[]The arguments passed to the handle method (after the event name)
CleanUpArgs extends any[]The arguments that will be passed to the cleanup handler

Properties

PropertyType
namestring

Methods

handle()

ts
handle(event: string, ...args: Args):
  | void
  | CleanupHandler<CleanUpArgs>
  | Promise<void>
| Promise<CleanupHandler<CleanUpArgs>>;

Parameters

ParameterType
eventstring
...argsArgs

Returns

| void | CleanupHandler<CleanUpArgs> | Promise<void> | Promise<CleanupHandler<CleanUpArgs>>