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.

197 lines (196 loc) 7.21 kB
/** * @module SharedLock */ import { type ISharedLockStateMethods } from "../../shared-lock/contracts/shared-lock.contract.js"; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type LockEventBase = { sharedLock: ISharedLockStateMethods; }; /** * The event is dispatched when a shared-lock is acquired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type AcquiredWriterLockEvent = LockEventBase; /** * The event is dispatched when a shared-lock is released. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type ReleasedWriterLockEvent = LockEventBase; /** * The event is dispatched when a shared-lock is forcefully released. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type ForceReleasedWriterLockEvent = LockEventBase & { hasReleased: boolean; }; /** * The event is dispatched when trying to release a shared-lock that is owned by a different owner. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type FailedReleaseWriterLockEvent = LockEventBase; /** * The event is dispatched when trying to refresh a shared-lock that is owned by a different owner. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type FailedRefreshWriterLockEvent = LockEventBase; /** * The event is dispatched when * 1. Trying to acquire the shared-lock as writer when in reader mode. * 2. Trying to acquire the shared-lock as reader when in writer mode. * 3. trying to acquire a shared-lock that is owned by a different owner. * 4. Trying to acquire the shared-lock as reader when limit is reached. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type UnavailableSharedLockEvent = LockEventBase; /** * The event is dispatched when a shared-lock is refreshed. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type RefreshedWriterLockEvent = LockEventBase; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export declare const WRITER_LOCK_EVENTS: { readonly WRITER_ACQUIRED: "WRITER_ACQUIRED"; readonly WRITER_RELEASED: "WRITER_RELEASED"; readonly WRITER_FAILED_RELEASE: "WRITER_FAILED_RELEASE"; readonly WRITER_FAILED_REFRESH: "WRITER_FAILED_REFRESH"; readonly WRITER_FORCE_RELEASED: "WRITER_FORCE_RELEASED"; readonly WRITER_REFRESHED: "WRITER_REFRESHED"; }; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type WriterLockEventMap = { [WRITER_LOCK_EVENTS.WRITER_ACQUIRED]: AcquiredWriterLockEvent; [WRITER_LOCK_EVENTS.WRITER_RELEASED]: ReleasedWriterLockEvent; [WRITER_LOCK_EVENTS.WRITER_FAILED_RELEASE]: FailedReleaseWriterLockEvent; [WRITER_LOCK_EVENTS.WRITER_FAILED_REFRESH]: FailedRefreshWriterLockEvent; [WRITER_LOCK_EVENTS.WRITER_FORCE_RELEASED]: ForceReleasedWriterLockEvent; [WRITER_LOCK_EVENTS.WRITER_REFRESHED]: RefreshedWriterLockEvent; }; /** * The event is dispatched when a shared-lock slot is acquired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type AcquiredReaderSemaphoreEvent = LockEventBase; /** * The event is dispatched when a shared-lock slot is released. * Note this event is only dispatched when the shared-lock slot is released and not when the shared-lock slot expired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type ReleasedReaderSemaphoreEvent = LockEventBase; /** * The event is dispatched when all slot of semaphore are released. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type AllForceReleasedReaderSemaphoreEvent = LockEventBase & { hasReleased: boolean; }; /** * The event is dispatched when trying to refresh a shared-lock slot that is already expired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type FailedRefreshReaderSemaphoreEvent = LockEventBase; /** * The event is dispatched when trying to release a shared-lock slot that is already expired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type FailedReleaseReaderSemaphoreEvent = LockEventBase; /** * The event is dispatched when a shared-lock slot is refreshed. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type RefreshedReaderSemaphoreEvent = LockEventBase; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export declare const READER_SEMAPHORE_EVENTS: { readonly READER_ACQUIRED: "READER_ACQUIRED"; readonly READER_RELEASED: "READER_RELEASED"; readonly READER_ALL_FORCE_RELEASED: "READER_ALL_FORCE_RELEASED"; readonly READER_FAILED_RELEASE: "READER_FAILED_RELEASE"; readonly READER_FAILED_REFRESH: "READER_FAILED_REFRESH"; readonly READER_REFRESHED: "READER_REFRESHED"; readonly READER_UNEXPECTED_ERROR: "READER_UNEXPECTED_ERROR"; }; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type ReaderSemaphoreEventMap = { [READER_SEMAPHORE_EVENTS.READER_ACQUIRED]: AcquiredReaderSemaphoreEvent; [READER_SEMAPHORE_EVENTS.READER_RELEASED]: ReleasedReaderSemaphoreEvent; [READER_SEMAPHORE_EVENTS.READER_ALL_FORCE_RELEASED]: AllForceReleasedReaderSemaphoreEvent; [READER_SEMAPHORE_EVENTS.READER_FAILED_RELEASE]: FailedReleaseReaderSemaphoreEvent; [READER_SEMAPHORE_EVENTS.READER_FAILED_REFRESH]: FailedRefreshReaderSemaphoreEvent; [READER_SEMAPHORE_EVENTS.READER_REFRESHED]: RefreshedReaderSemaphoreEvent; }; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type UnexpectedErrorSharedLockEvent = LockEventBase & { error: unknown; }; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export declare const SHARED_LOCK_EVENTS: { readonly UNEXPECTED_ERROR: "UNEXPECTED_ERROR"; readonly UNAVAILABLE: "UNAVAILABLE"; readonly WRITER_ACQUIRED: "WRITER_ACQUIRED"; readonly WRITER_RELEASED: "WRITER_RELEASED"; readonly WRITER_FAILED_RELEASE: "WRITER_FAILED_RELEASE"; readonly WRITER_FAILED_REFRESH: "WRITER_FAILED_REFRESH"; readonly WRITER_FORCE_RELEASED: "WRITER_FORCE_RELEASED"; readonly WRITER_REFRESHED: "WRITER_REFRESHED"; readonly READER_ACQUIRED: "READER_ACQUIRED"; readonly READER_RELEASED: "READER_RELEASED"; readonly READER_ALL_FORCE_RELEASED: "READER_ALL_FORCE_RELEASED"; readonly READER_FAILED_RELEASE: "READER_FAILED_RELEASE"; readonly READER_FAILED_REFRESH: "READER_FAILED_REFRESH"; readonly READER_REFRESHED: "READER_REFRESHED"; readonly READER_UNEXPECTED_ERROR: "READER_UNEXPECTED_ERROR"; }; /** * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type SharedLockEventMap = ReaderSemaphoreEventMap & WriterLockEventMap & { [SHARED_LOCK_EVENTS.UNEXPECTED_ERROR]: UnexpectedErrorSharedLockEvent; [SHARED_LOCK_EVENTS.UNAVAILABLE]: UnavailableSharedLockEvent; };