UNPKG

@push.rocks/lik

Version:

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

66 lines 4.38 kB
import * as plugins from './lik.plugins.js'; import { InterestMap } from './lik.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLmludGVyZXN0bWFwLmludGVyZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbGlrLmludGVyZXN0bWFwLmludGVyZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFdBQVcsRUFBZ0MsTUFBTSxzQkFBc0IsQ0FBQztBQU9qRixNQUFNLE9BQU8sUUFBUTtJQWNuQjs7T0FFRztJQUNILElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBTUQ7O09BRUc7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFpQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFDRSxjQUFpRSxFQUNqRSxXQUF5QixFQUN6QixpQkFBd0QsRUFDeEQsVUFBcUQ7UUFuQ2hELHFCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSSxzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFTN0IscUJBQWdCLEdBQ3RCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBb0J4RCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFFMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRTtZQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRjtJQUNILENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsdUJBQXVCO0lBQ3ZCLGtDQUFrQztJQUVsQzs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0=