UNPKG

@looker/embed-services

Version:
101 lines (100 loc) 4.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.themeServiceCreator = exports.registerThemeService = exports.getThemeService = exports.THEME_SERVICE_NAME = void 0; var _sdk = require("@looker/sdk"); var _ItemList = require("./ItemList"); var _ServiceFactory = require("./ServiceFactory"); function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } 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); } class ThemeService extends _ItemList.ItemList { constructor() { super(...arguments); _defineProperty(this, "defaultTheme", void 0); } get(id, options) { var _this = this; return _asyncToGenerator(function* () { var cache = _this.getCacheDefault(options); _this.clearIfExpired(); var item = _this.indexedItems[id]; if (cache && item) { return item; } item = yield _this.sdk.ok((0, _sdk.theme)(_this.sdk, id, options === null || options === void 0 ? void 0 : options.fields)); if (item) { _this.items = [..._this.items, item]; _this.index(); _this.setExpiration(); } return item; })(); } getAll(options) { var _this2 = this; return _asyncToGenerator(function* () { if (_this2.getCacheDefault(options) && !_this2.expired()) { return _this2; } yield _this2.load(options); return _this2; })(); } set(id, item) { var _this3 = this; return _asyncToGenerator(function* () { _this3.clearIfExpired(); var theme = yield _this3.sdk.ok((0, _sdk.update_theme)(_this3.sdk, id, item)); if (theme) { _this3.items = [..._this3.items, theme]; _this3.index(); _this3.setExpiration(); } return theme; })(); } getDefaultTheme(ts) { var _this4 = this; return _asyncToGenerator(function* () { if (_this4.expired()) { _this4.defaultTheme = yield _this4.sdk.ok((0, _sdk.default_theme)(_this4.sdk, ts)); } return _this4.defaultTheme; })(); } delete(id) { var _this5 = this; return _asyncToGenerator(function* () { _this5.clearIfExpired(); yield _this5.sdk.ok((0, _sdk.delete_theme)(_this5.sdk, id)); _this5.items = _this5.items.filter(item => item.id !== id); _this5.index(); })(); } load(options) { var _this6 = this; return _asyncToGenerator(function* () { yield _this6.getDefaultTheme(); _this6.items = yield _this6.sdk.ok((0, _sdk.all_themes)(_this6.sdk, options === null || options === void 0 ? void 0 : options.fields)); _this6.index(); _this6.setExpiration(); return _this6; })(); } } var THEME_SERVICE_NAME = exports.THEME_SERVICE_NAME = 'ThemeService'; var themeServiceCreator = (sdk, timeToLive) => { return new ThemeService(sdk, timeToLive); }; exports.themeServiceCreator = themeServiceCreator; var registerThemeService = timeToLive => { (0, _ServiceFactory.getFactory)().register(THEME_SERVICE_NAME, themeServiceCreator, timeToLive); }; exports.registerThemeService = registerThemeService; var getThemeService = () => (0, _ServiceFactory.getFactory)().get(THEME_SERVICE_NAME); exports.getThemeService = getThemeService; //# sourceMappingURL=ThemeService.js.map