UNPKG

@descope/sdk-mixins

Version:
52 lines (49 loc) 2.69 kB
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib'; import { createSingletonMixin, compose } from '@descope/sdk-helpers'; import { staticResourcesMixin } from '../staticResourcesMixin/staticResourcesMixin.js'; import { CONFIG_FILENAME } from './constants.js'; import { resetMixin } from '../resetMixin.js'; import { initLifecycleMixin } from '../initLifecycleMixin.js'; const configMixin = createSingletonMixin((superclass) => { var _ConfigMixinClass_instances, _ConfigMixinClass_configCacheClear, _ConfigMixinClass__configResource, _ConfigMixinClass_fetchConfig, _a; const BaseClass = compose(staticResourcesMixin, resetMixin, initLifecycleMixin)(superclass); return _a = class ConfigMixinClass extends BaseClass { constructor() { super(...arguments); _ConfigMixinClass_instances.add(this); _ConfigMixinClass__configResource.set(this, void 0); _ConfigMixinClass_fetchConfig.set(this, async () => { try { const { body, headers, } = await this.fetchStaticResource(CONFIG_FILENAME, 'json'); return { projectConfig: body, executionContext: { geo: headers['x-geo'] }, }; } catch (e) { this.logger.error('Cannot fetch config file', 'make sure that your projectId & flowId are correct'); } return undefined; }); } async init() { await super.init(); this.onReset('config', __classPrivateFieldGet(this, _ConfigMixinClass_instances, "m", _ConfigMixinClass_configCacheClear).bind(this)); } get config() { if (!__classPrivateFieldGet(this, _ConfigMixinClass__configResource, "f")) { __classPrivateFieldSet(this, _ConfigMixinClass__configResource, __classPrivateFieldGet(this, _ConfigMixinClass_fetchConfig, "f").call(this), "f"); } return __classPrivateFieldGet(this, _ConfigMixinClass__configResource, "f"); } }, _ConfigMixinClass__configResource = new WeakMap(), _ConfigMixinClass_fetchConfig = new WeakMap(), _ConfigMixinClass_instances = new WeakSet(), _ConfigMixinClass_configCacheClear = function _ConfigMixinClass_configCacheClear() { __classPrivateFieldSet(this, _ConfigMixinClass__configResource, undefined, "f"); }, _a; }); export { configMixin }; //# sourceMappingURL=configMixin.js.map