@descope/sdk-mixins
Version:
Descope JavaScript SDK mixins
52 lines (49 loc) • 2.69 kB
JavaScript
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