UNPKG

@daiso-tech/core

Version:

The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.

45 lines (44 loc) 1.42 kB
/** * @module SharedLock */ import { type MiddlewareFn } from "../../../middleware/contracts/_module.js"; import { type ISharedLockFactoryBase } from "../../../shared-lock/contracts/_module.js"; import { type ITimeSpan } from "../../../time-span/contracts/time-span.contract.js"; import { type Invokable } from "../../../utilities/_module.js"; /** * @group Middleware */ export declare const SHARED_LOCK_WHEN: { readonly READER: "READER"; readonly WRITER: "WRITER"; }; export type SharedLockWhenSetting = (typeof SHARED_LOCK_WHEN)[keyof typeof SHARED_LOCK_WHEN]; /** * @group Middleware */ export type SharedLockMiddlewareSettings<TParameters extends Array<unknown> = Array<unknown>> = { /** * @default * ```ts * (...args) => JSON.stringify(args) * ``` */ key?: Invokable<TParameters, string>; /** * @default * ```ts * import { v4 } from "uuid"; * * () => v4() * ``` */ lockId?: Invokable<TParameters, string>; ttl?: ITimeSpan | null; limit: number; when: SharedLockWhenSetting; }; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/middlewares"` * @group Middleware */ export declare function sharedLockMiddlewareFactory(sharedLockFactory: ISharedLockFactoryBase): <TParameters extends Array<unknown>, TReturn>(settings: SharedLockMiddlewareSettings<TParameters>) => MiddlewareFn<TParameters, Promise<TReturn>>;