@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.
70 lines • 2.65 kB
JavaScript
/**
* @module Lock
*/
import { Lock, } from "../../../../lock/implementations/derivables/lock-provider/lock.js";
import { LockState, } from "../../../../lock/implementations/derivables/lock-provider/lock-state.js";
import { getConstructorName, TimeSpan, } from "../../../../utilities/_module-exports.js";
/**
* @internal
*/
export class LockSerdeTransformer {
adapter;
lockStore;
namespace;
createLazyPromise;
defaultBlockingInterval;
defaultBlockingTime;
defaultRefreshTime;
eventBus;
serdeTransformerName;
constructor(settings) {
const { adapter, lockStore, namespace, createLazyPromise, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, eventBus, serdeTransformerName, } = settings;
this.serdeTransformerName = serdeTransformerName;
this.adapter = adapter;
this.lockStore = lockStore;
this.namespace = namespace;
this.createLazyPromise = createLazyPromise;
this.defaultBlockingInterval = defaultBlockingInterval;
this.defaultBlockingTime = defaultBlockingTime;
this.defaultRefreshTime = defaultRefreshTime;
this.eventBus = eventBus;
}
get name() {
if (this.serdeTransformerName) {
return ["lock", getConstructorName(this.adapter)];
}
return [
"lock",
this.serdeTransformerName,
getConstructorName(this.adapter),
];
}
isApplicable(value) {
return (value instanceof Lock &&
getConstructorName(value) === Lock.name &&
value._internal_getSerdeTransformerName() ===
this.serdeTransformerName);
}
deserialize(serializedValue) {
const { key, owner, ttlInMs, expirationInMs } = serializedValue;
const keyObj = this.namespace._getInternal().create(key);
return new Lock({
createLazyPromise: this.createLazyPromise,
adapter: this.adapter,
lockState: new LockState(this.lockStore, keyObj.namespaced),
eventDispatcher: this.eventBus,
key: keyObj,
owner,
serdeTransformerName: this.serdeTransformerName,
ttl: ttlInMs !== null ? TimeSpan.fromMilliseconds(ttlInMs) : null,
expirationInMs,
defaultBlockingInterval: this.defaultBlockingInterval,
defaultBlockingTime: this.defaultBlockingTime,
defaultRefreshTime: this.defaultRefreshTime,
});
}
serialize(deserializedValue) {
return Lock._internal_serialize(deserializedValue);
}
}
//# sourceMappingURL=lock-serde-transformer.js.map