wooks
Version:
66 lines (62 loc) • 2.55 kB
TypeScript
import { TConsoleBase, TProstoLoggerOptions } from '@prostojs/logger';
import { ProstoRouter, TParsedSegment, TProstoRouterPathHandle } from '@prostojs/router';
export { TProstoRouterPathHandle } from '@prostojs/router';
import { TEventOptions } from '@wooksjs/event-core';
export { useEventId, useEventLogger, useRouteParams } from '@wooksjs/event-core';
type TWooksHandler<ResType = unknown> = () => Promise<ResType> | ResType;
interface TWooksOptions {
logger?: TConsoleBase;
router?: {
ignoreTrailingSlash?: boolean;
ignoreCase?: boolean;
cacheLimit?: number;
};
}
declare class Wooks {
protected router: ProstoRouter<TWooksHandler>;
protected logger: TConsoleBase;
constructor(opts?: TWooksOptions);
getRouter(): ProstoRouter<TWooksHandler>;
getLogger(topic: string): TConsoleBase;
getLoggerOptions(): TProstoLoggerOptions;
lookup(method: string, path: string): {
handlers: TWooksHandler[] | null;
segments: TParsedSegment[] | null;
firstStatic: string | null;
path: string | null;
};
on<ResType = unknown, ParamsType = Record<string, string | string[]>>(method: string, path: string, handler: TWooksHandler<ResType>): TProstoRouterPathHandle<ParamsType>;
}
/**
* Clear global wooks instance
*
* (useful for tests or dev-mode)
*/
declare function clearGlobalWooks(): void;
/**
* Creates global wooks singleton instance to share across adapters
* @param logger
* @param routerOpts
* @returns
*/
declare function getGlobalWooks(logger?: TConsoleBase, routerOpts?: TWooksOptions['router']): Wooks;
declare class WooksAdapterBase {
protected wooks: Wooks;
constructor(wooks?: Wooks | WooksAdapterBase, logger?: TConsoleBase, routerOpts?: TWooksOptions['router']);
getWooks(): Wooks;
/**
* Get logger instance for application logs
* ```js
* const app = createHttpApp()
* const logger = app.getLogger('[app-logger]')
* logger.log('My App log message')
* ```
* @param topic topic for logger
* @returns logger instance
*/
getLogger(topic: string): TConsoleBase;
protected getLoggerOptions(): TProstoLoggerOptions;
protected mergeEventOptions(opts?: TEventOptions): TEventOptions;
on<ResType = unknown, ParamsType = Record<string, string | string[]>>(method: string, path: string, handler: TWooksHandler<ResType>): TProstoRouterPathHandle<ParamsType>;
}
export { type TWooksHandler, type TWooksOptions, Wooks, WooksAdapterBase, clearGlobalWooks, getGlobalWooks };