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