UNPKG

@looker/embed-services

Version:
68 lines 2.45 kB
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } import { EntityService } from './EntityService'; export var DEFAULT_TTL = 900; export class ItemList extends EntityService { constructor(sdk) { var timeToLive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_TTL; super(sdk, timeToLive); _defineProperty(this, "items", []); _defineProperty(this, "indexedItems", {}); _defineProperty(this, "expiresAt", 0); _defineProperty(this, "keyField", 'id'); } index() { var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.keyField; this.keyField = key; this.indexedItems = {}; this.items.forEach(el => { if (el && el !== null && el !== void 0 && el[this.keyField]) { this.indexedItems[el[this.keyField]] = el; } }); return this; } setExpiration() { this.expiresAt = Date.now() + this.timeToLive * 1000; } expired() { return this.expiresAt <= Date.now(); } clearIfExpired() { if (this.expired()) { this.items = []; this.indexedItems = {}; } } find(key, expression) { var result; var keys; if (typeof key === 'string') { keys = [key]; } else { keys = key; } try { var rx = new RegExp(expression, 'i'); for (var _item of this.items) { for (var k of keys) { var _item$k; var match = (_item$k = _item[k]) === null || _item$k === void 0 ? void 0 : _item$k.toString().match(rx); if (match) { result = _item; return result; } } } return result; } catch (e) { throw new Error(e); } } getCacheDefault(options) { var cache = options && 'useCache' in options && options.useCache !== undefined ? options.useCache : true; return cache; } } //# sourceMappingURL=ItemList.js.map