UNPKG

@looker/embed-services

Version:
75 lines (74 loc) 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ItemList = exports.DEFAULT_TTL = void 0; var _EntityService = require("./EntityService"); function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(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); } var DEFAULT_TTL = exports.DEFAULT_TTL = 900; class ItemList extends _EntityService.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; } } exports.ItemList = ItemList; //# sourceMappingURL=ItemList.js.map