@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
TypeScript
/**
* @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>>;