@platformos/pos-cli
Version:
Manage your platformOS application
53 lines • 1.49 kB
JavaScript
// tslint:disable:no-unsafe-any
/**
* Memo class used for decycle json objects. Uses WeakSet if available otherwise array.
*/
var Memo = /** @class */ (function () {
function Memo() {
// tslint:disable-next-line
this._hasWeakSet = typeof WeakSet === 'function';
this._inner = this._hasWeakSet ? new WeakSet() : [];
}
/**
* Sets obj to remember.
* @param obj Object to remember
*/
Memo.prototype.memoize = function (obj) {
if (this._hasWeakSet) {
if (this._inner.has(obj)) {
return true;
}
this._inner.add(obj);
return false;
}
// tslint:disable-next-line:prefer-for-of
for (var i = 0; i < this._inner.length; i++) {
var value = this._inner[i];
if (value === obj) {
return true;
}
}
this._inner.push(obj);
return false;
};
/**
* Removes object from internal storage.
* @param obj Object to forget
*/
Memo.prototype.unmemoize = function (obj) {
if (this._hasWeakSet) {
this._inner.delete(obj);
}
else {
for (var i = 0; i < this._inner.length; i++) {
if (this._inner[i] === obj) {
this._inner.splice(i, 1);
break;
}
}
}
};
return Memo;
}());
export { Memo };
//# sourceMappingURL=memo.js.map