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.

206 lines (205 loc) 7.27 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 lock is aquired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type AcquiredWriterLockEvent = LockEventBase; /** * The event is dispatched when a lock is released. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type ReleasedWriterLockEvent = LockEventBase; /** * The event is dispatched when a 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 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 refefresh a 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 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 lock slot is aquired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type AcquiredReaderSemaphoreEvent = LockEventBase; /** * The event is dispatched when a 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 semapahore are released. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type AllForceReleasedReaderSemaphoreEvent = LockEventBase & { hasReleased: boolean; }; /** * The error is dispatched when trying to referesh a lock slot that is already expired. * * IMPORT_PATH: `"@daiso-tech/core/shared-lock/contracts"` * @group Events */ export type FailedRefreshReaderSemaphoreEvent = LockEventBase; /** * The error is dispatched when trying to release a 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 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_LIMIT_REACHED: "READER_LIMIT_REACHED"; 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_LIMIT_REACHED: "READER_LIMIT_REACHED"; 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; };