UNPKG

@omnia/fx-models

Version:
86 lines (85 loc) 4.36 kB
"use strict"; 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) => { this.checkAvailable(featureDefinition) .then(resolve) .catch(err => { console.error(err); resolve(false); }); }); }; this.checkContextAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters) => { return checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters); }; } } exports.TenantScopedFeatureValidatorBase = TenantScopedFeatureValidatorBase; class ProfileScopedFeatureValidatorBase { constructor() { this.isAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters, profile) => { return new Promise((resolve, reject) => { this.checkAvailable(featureDefinition, profile) .then(resolve) .catch(err => { console.error(err); resolve(false); }); }); }; this.checkContextAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters) => { return checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters); }; } } exports.ProfileScopedFeatureValidatorBase = ProfileScopedFeatureValidatorBase; class AppScopedFeatureValidatorBase { constructor() { this.isAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters, appDefinition, appTemplate, appInstance) => { return new Promise((resolve, reject) => { this.checkAvailable(featureDefinition, appDefinition, appTemplate, appInstance) .then(resolve) .catch(err => { console.error(err); resolve(false); }); }); }; this.checkContextAvailable = (featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters) => { return checkContextAvailable(featureDefinition, contextParameterValues, requiredProvidedContextParameters, optionalProvidedContextParameters); }; } } exports.AppScopedFeatureValidatorBase = AppScopedFeatureValidatorBase;