@descope/sdk-mixins
Version:
Descope JavaScript SDK mixins
41 lines (37 loc) • 2.26 kB
JavaScript
;
var tslib = require('tslib');
var sdkHelpers = require('@descope/sdk-helpers');
var observeAttributesMixin = require('../observeAttributesMixin/observeAttributesMixin.js');
var initLifecycleMixin = require('../initLifecycleMixin.js');
var loggerMixin = require('../loggerMixin/loggerMixin.js');
var commonValidators = require('./commonValidators.js');
const createValidateAttributesMixin = (mappings) => (superclass) => {
var _ValidateAttributesMixinClass_instances, _ValidateAttributesMixinClass_handleError, _a;
const BaseClass = sdkHelpers.compose(loggerMixin.loggerMixin, initLifecycleMixin.initLifecycleMixin, observeAttributesMixin.observeAttributesMixin)(superclass);
const mappingsNames = Object.keys(mappings);
return _a = class ValidateAttributesMixinClass extends BaseClass {
constructor(...args) {
super(...args);
_ValidateAttributesMixinClass_instances.add(this);
this.observeAttributes(mappingsNames, tslib.__classPrivateFieldGet(this, _ValidateAttributesMixinClass_instances, "m", _ValidateAttributesMixinClass_handleError).bind(this));
}
async init() {
var _b;
// check attributes initial values
mappingsNames.forEach((attr) => tslib.__classPrivateFieldGet(this, _ValidateAttributesMixinClass_instances, "m", _ValidateAttributesMixinClass_handleError).call(this, attr, this.getAttribute(attr)));
await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
}
},
_ValidateAttributesMixinClass_instances = new WeakSet(),
_ValidateAttributesMixinClass_handleError = function _ValidateAttributesMixinClass_handleError(attrName, newValue) {
const onError = mappings[attrName];
const error = typeof onError === 'function' ? onError(attrName, newValue) : onError;
if (error) {
this.logger.error(error);
}
},
_a;
};
createValidateAttributesMixin.missingAttrValidator = commonValidators.missingAttrValidator;
exports.createValidateAttributesMixin = createValidateAttributesMixin;
//# sourceMappingURL=createValidateAttributesMixin.js.map