@descope/sdk-mixins
Version:
Descope JavaScript SDK mixins
54 lines (50 loc) • 2.77 kB
JavaScript
;
var tslib = require('tslib');
var sdkHelpers = require('@descope/sdk-helpers');
var staticResourcesMixin = require('../staticResourcesMixin/staticResourcesMixin.js');
var constants = require('./constants.js');
var resetMixin = require('../resetMixin.js');
var initLifecycleMixin = require('../initLifecycleMixin.js');
const configMixin = sdkHelpers.createSingletonMixin((superclass) => {
var _ConfigMixinClass_instances, _ConfigMixinClass_configCacheClear, _ConfigMixinClass__configResource, _ConfigMixinClass_fetchConfig, _a;
const BaseClass = sdkHelpers.compose(staticResourcesMixin.staticResourcesMixin, resetMixin.resetMixin, initLifecycleMixin.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(constants.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', tslib.__classPrivateFieldGet(this, _ConfigMixinClass_instances, "m", _ConfigMixinClass_configCacheClear).bind(this));
}
get config() {
if (!tslib.__classPrivateFieldGet(this, _ConfigMixinClass__configResource, "f")) {
tslib.__classPrivateFieldSet(this, _ConfigMixinClass__configResource, tslib.__classPrivateFieldGet(this, _ConfigMixinClass_fetchConfig, "f").call(this), "f");
}
return tslib.__classPrivateFieldGet(this, _ConfigMixinClass__configResource, "f");
}
},
_ConfigMixinClass__configResource = new WeakMap(),
_ConfigMixinClass_fetchConfig = new WeakMap(),
_ConfigMixinClass_instances = new WeakSet(),
_ConfigMixinClass_configCacheClear = function _ConfigMixinClass_configCacheClear() {
tslib.__classPrivateFieldSet(this, _ConfigMixinClass__configResource, undefined, "f");
},
_a;
});
exports.configMixin = configMixin;
//# sourceMappingURL=configMixin.js.map