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.

89 lines (88 loc) 3.21 kB
/** * @module SharedLock */ import { type IEventDispatcher } from "../../../../event-bus/contracts/_module.js"; import { type IExecutionContext } from "../../../../execution-context/contracts/_module.js"; import { type Use } from "../../../../middleware/contracts/_module.js"; import { type IKey, type INamespace } from "../../../../namespace/contracts/_module.js"; import { type ISharedLock, type ISharedLockAdapter, type ISharedLockState, type SharedLockAdapterVariants, type SharedLockEventMap } from "../../../../shared-lock/contracts/_module.js"; import { type ITimeSpan } from "../../../../time-span/contracts/_module.js"; import { TimeSpan } from "../../../../time-span/implementations/_module.js"; import { type AsyncLazy, type WaitUntil } from "../../../../utilities/_module.js"; /** * @internal */ export type ISerializedSharedLock = { version: "1"; key: string; lockId: string; limit: number; ttlInMs: number | null; }; /** * @internal */ export type SharedLockSettings = { serdeTransformerName: string; namespace: INamespace; adapter: ISharedLockAdapter; originalAdapter: SharedLockAdapterVariants; eventDispatcher: IEventDispatcher<SharedLockEventMap>; limit: number; key: IKey; lockId: string; ttl: TimeSpan | null; defaultRefreshTime: TimeSpan; waitUntil: WaitUntil; executionContext: IExecutionContext; use: Use; }; /** * @internal */ export declare class SharedLock implements ISharedLock { /** * @internal */ static _serialize(deserializedValue: SharedLock): ISerializedSharedLock; private readonly namespace; private readonly adapter; private readonly originalAdapter; private readonly eventDispatcher; private readonly _key; private readonly lockId; private _ttl; private readonly defaultRefreshTime; private readonly serdeTransformerName; private readonly limit; private readonly waitUntil; private readonly executionContext; private readonly use; constructor(settings: SharedLockSettings); _getNamespace(): INamespace; _getSerdeTransformerName(): string; _getAdapter(): SharedLockAdapterVariants; runReaderOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>): Promise<TValue>; acquireReader(): Promise<boolean>; acquireReaderOrFail(): Promise<void>; releaseReader(): Promise<boolean>; releaseReaderOrFail(): Promise<void>; forceReleaseAllReaders(): Promise<boolean>; refreshReader(ttl?: ITimeSpan): Promise<boolean>; refreshReaderOrFail(ttl?: ITimeSpan): Promise<void>; runWriterOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>): Promise<TValue>; acquireWriter(): Promise<boolean>; acquireWriterOrFail(): Promise<void>; releaseWriter(): Promise<boolean>; releaseWriterOrFail(): Promise<void>; forceReleaseWriter(): Promise<boolean>; refreshWriter(ttl?: ITimeSpan): Promise<boolean>; refreshWriterOrFail(ttl?: ITimeSpan): Promise<void>; get key(): IKey; get id(): string; get ttl(): TimeSpan | null; forceRelease(): Promise<boolean>; private extractWriterState; private extractReaderState; getState(): Promise<ISharedLockState>; }