@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
95 lines (94 loc) • 4.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppScopedFeatureValidatorBase = exports.ProfileScopedFeatureValidatorBase = exports.TenantScopedFeatureValidatorBase = void 0;
function checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters) {
let available = true;
for (const param of featureDefinition.parameters) {
const paramKey = param.name.toLowerCase();
contextParameterValues = toLowerKeys(contextParameterValues);
requiredProvidedContextParameters = requiredProvidedContextParameters.map(p => p.toLowerCase());
optionalProvidedContextParameters = optionalProvidedContextParameters.map(p => p.toLowerCase());
const requiredIsValid = contextParameterValues[paramKey] != null || requiredProvidedContextParameters.indexOf(paramKey) >= 0 ? true : false;
const optionalIsValid = optionalProvidedContextParameters.indexOf(paramKey) >= 0 ? true : false;
if (param.isRequiredToBuildTarget || param.isRequired) {
//creating
available = requiredIsValid;
}
else {
available = requiredIsValid || optionalIsValid;
}
if (!available) {
break;
}
}
return available;
}
function toLowerKeys(obj) {
return Object.keys(obj).reduce((accumulator, key) => {
accumulator[key.toLowerCase()] = obj[key];
return accumulator;
}, {});
}
class TenantScopedFeatureValidatorBase {
constructor() {
this.isAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters) => {
return new Promise((resolve, reject) => {
const result = checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters);
if (!result) {
resolve(false);
}
else {
this.checkAvailable(featureDefinition)
.then(resolve)
.catch(err => {
console.error(err);
resolve(false);
});
}
});
};
}
}
exports.TenantScopedFeatureValidatorBase = TenantScopedFeatureValidatorBase;
class ProfileScopedFeatureValidatorBase {
constructor() {
this.isAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters, profile) => {
return new Promise((resolve, reject) => {
const result = checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters);
if (!result) {
resolve(false);
}
else {
this.checkAvailable(featureDefinition, profile)
.then(resolve)
.catch(err => {
console.error(err);
resolve(false);
});
}
});
};
}
}
exports.ProfileScopedFeatureValidatorBase = ProfileScopedFeatureValidatorBase;
class AppScopedFeatureValidatorBase {
constructor() {
this.isAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters, appDefinition, appTemplate, appInstance) => {
return new Promise((resolve, reject) => {
const result = checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters);
if (!result) {
resolve(false);
}
else {
this.checkAvailable(featureDefinition, appDefinition, appTemplate, appInstance)
.then(resolve)
.catch(err => {
console.error(err);
resolve(false);
});
}
});
};
}
}
exports.AppScopedFeatureValidatorBase = AppScopedFeatureValidatorBase;