@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.
180 lines • 5.15 kB
JavaScript
/**
* @module Lock
*/
import { CORE, resolveOneOrMore, } from "../../utilities/_module-exports.js";
/**
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class LockError extends Error {
static deserialize(serializedError) {
return new LockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class UnexpectedLockError extends LockError {
static deserialize(serializedError) {
return new UnexpectedLockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
* The error is thrown when an unexpected error occurs while acquiring a lock.
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class UnableToAquireLockError extends UnexpectedLockError {
static deserialize(serializedError) {
return new UnableToAquireLockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
* The error is thrown when an unexpected error occurs while releasing a lock.
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class UnableToReleaseLockError extends UnexpectedLockError {
static deserialize(serializedError) {
return new UnableToReleaseLockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
* The error is thrown when trying to acquire a lock that is owned by a different owner.
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class KeyAlreadyAcquiredLockError extends LockError {
static deserialize(serializedError) {
return new KeyAlreadyAcquiredLockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
* The error is thrown when trying to release a lock that is owned by a different owner.
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class UnownedReleaseLockError extends LockError {
static deserialize(serializedError) {
return new UnownedReleaseLockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
* The error is thrown when trying to referesh a lock that is owned by a different owner.
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export class UnownedRefreshLockError extends LockError {
static deserialize(serializedError) {
return new UnownedRefreshLockError(serializedError.message, serializedError.cause);
}
constructor(message, cause) {
super(message, { cause });
}
serialize() {
return {
cause: this.cause,
message: this.message,
name: this.name,
};
}
}
/**
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export const LOCK_ERRORS = {
Base: LockError,
Unexpected: UnexpectedLockError,
UnableToAquire: UnableToAquireLockError,
UnableToRelease: UnableToReleaseLockError,
KeyAlreadyAcquired: KeyAlreadyAcquiredLockError,
UnownedRelease: UnownedReleaseLockError,
};
/**
* The `registerLockErrorsToSerde` function registers all {@link ILock | `ILock`} related errors with `IFlexibleSerde`, ensuring they will properly be serialized and deserialized.
*
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
* @group Errors
*/
export function registerLockErrorsToSerde(serde) {
for (const serde_ of resolveOneOrMore(serde)) {
serde_
.registerClass(LockError, CORE)
.registerClass(UnexpectedLockError, CORE)
.registerClass(UnableToAquireLockError, CORE)
.registerClass(UnableToReleaseLockError, CORE)
.registerClass(KeyAlreadyAcquiredLockError, CORE)
.registerClass(UnownedReleaseLockError, CORE);
}
}
//# sourceMappingURL=lock.errors.js.map