UNPKG

@push.rocks/lik

Version:

Provides a collection of lightweight helpers and utilities for Node.js projects.

66 lines 4.42 kB
import * as plugins from './classes.plugins.js'; import { InterestMap } from './classes.interestmap.js'; export class Interest { /** * quick access to a string that makes the interest comparable for checking for similar interests */ get comparisonString() { return this.comparisonFunc(this.originalInterest); } /** * fullfill the interest */ fullfillInterest(objectArg) { this.isFullfilled = true; this.fullfillmentStore = []; this.interestDeferred.resolve(objectArg); } /** * */ constructor(interestMapArg, interestArg, comparisonFuncArg, optionsArg) { this.destructionTimer = new plugins.smarttime.Timer(10000); this.isFullfilled = false; /** * a generic store to store objects in that are needed for fullfillment; */ this.fullfillmentStore = []; this.interestDeferred = new plugins.smartpromise.Deferred(); this.interestFullfilled = this.interestDeferred.promise; this.interestMapRef = interestMapArg; this.originalInterest = interestArg; this.comparisonFunc = comparisonFuncArg; this.options = optionsArg; this.destructionTimer.completed.then(() => { this.destroy(); }); if (this.options?.markLostAfterDefault) { plugins.smartdelay.delayFor(this.options.markLostAfterDefault).then(this.markLost); } } // =============================== // LIFECYCLE MANAGEMENT // =============================== /** * self destructs the interest */ destroy() { this.interestMapRef.removeInterest(this); if (!this.isFullfilled && this.options.defaultFullfillment) { this.fullfillInterest(this.options.defaultFullfillment); } } /** * notifies the interest that the interest in it has been lost */ markLost() { this.destructionTimer.start(); } /** * notifies the interest that the interest in it has been restored */ renew() { this.destructionTimer.reset(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pbnRlcmVzdG1hcC5pbnRlcmVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuaW50ZXJlc3RtYXAuaW50ZXJlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFnQyxNQUFNLDBCQUEwQixDQUFDO0FBT3JGLE1BQU0sT0FBTyxRQUFRO0lBY25COztPQUVHO0lBQ0gsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFNRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLFNBQWlDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUNFLGNBQWlFLEVBQ2pFLFdBQXlCLEVBQ3pCLGlCQUF3RCxFQUN4RCxVQUFxRDtRQW5DaEQscUJBQWdCLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU1Qjs7V0FFRztRQUNJLHNCQUFpQixHQUFVLEVBQUUsQ0FBQztRQVM3QixxQkFBZ0IsR0FDdEIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFvQnhELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUUxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLENBQUM7WUFDdkMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckYsQ0FBQztJQUNILENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsdUJBQXVCO0lBQ3ZCLGtDQUFrQztJQUVsQzs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRiJ9