@spartacus/core
Version:
Spartacus - the core framework
39 lines • 5.79 kB
JavaScript
function isFeatureConfig(config) {
return typeof config === 'object' && !!config.features;
}
function isInLevel(level, version) {
if (level === '*') {
return true;
}
const levelParts = level.split('.');
const versionParts = version.split('.');
for (let i = 0; i < versionParts.length; i++) {
const versionNumberPart = Number(versionParts[i]);
const levelNumberPart = Number(levelParts[i]) || 0;
if (versionNumberPart !== levelNumberPart) {
return levelNumberPart > versionNumberPart;
}
}
return true;
}
export function isFeatureLevel(config, level) {
if (isFeatureConfig(config) && config.features.level) {
return level.startsWith('!')
? !isInLevel(config.features.level, level.substr(1, level.length))
: isInLevel(config.features.level, level);
}
return false;
}
export function isFeatureEnabled(config, feature) {
if (isFeatureConfig(config)) {
const featureConfig = feature[0] === '!'
? config.features[feature.substr(1, feature.length)]
: config.features[feature];
const result = typeof featureConfig === 'string'
? isFeatureLevel(config, featureConfig)
: featureConfig;
return feature.startsWith('!') ? !result : !!result;
}
return false;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1jb25maWctdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9mZWF0dXJlcy1jb25maWcvdXRpbHMvZmVhdHVyZS1jb25maWctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsU0FBUyxlQUFlLENBQUMsTUFBYztJQUNyQyxPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLE9BQWU7SUFDL0MsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxJQUFJLGlCQUFpQixLQUFLLGVBQWUsRUFBRTtZQUN6QyxPQUFPLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztTQUM1QztLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFjLEVBQUUsS0FBYTtJQUMxRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtRQUNwRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM3QztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsT0FBZTtJQUM5RCxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMzQixNQUFNLGFBQWEsR0FDakIsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLE1BQU0sTUFBTSxHQUNWLE9BQU8sYUFBYSxLQUFLLFFBQVE7WUFDL0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFcEIsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNyRDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZy9jb25maWctdG9rZW5zJztcbmltcG9ydCB7IEZlYXR1cmVzQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2ZlYXR1cmVzLWNvbmZpZyc7XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZUNvbmZpZyhjb25maWc6IENvbmZpZyk6IGNvbmZpZyBpcyBSZXF1aXJlZDxGZWF0dXJlc0NvbmZpZz4ge1xuICByZXR1cm4gdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgJiYgISFjb25maWcuZmVhdHVyZXM7XG59XG5cbmZ1bmN0aW9uIGlzSW5MZXZlbChsZXZlbDogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGxldmVsID09PSAnKicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBsZXZlbFBhcnRzID0gbGV2ZWwuc3BsaXQoJy4nKTtcbiAgY29uc3QgdmVyc2lvblBhcnRzID0gdmVyc2lvbi5zcGxpdCgnLicpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmVyc2lvblBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdmVyc2lvbk51bWJlclBhcnQgPSBOdW1iZXIodmVyc2lvblBhcnRzW2ldKTtcbiAgICBjb25zdCBsZXZlbE51bWJlclBhcnQgPSBOdW1iZXIobGV2ZWxQYXJ0c1tpXSkgfHwgMDtcblxuICAgIGlmICh2ZXJzaW9uTnVtYmVyUGFydCAhPT0gbGV2ZWxOdW1iZXJQYXJ0KSB7XG4gICAgICByZXR1cm4gbGV2ZWxOdW1iZXJQYXJ0ID4gdmVyc2lvbk51bWJlclBhcnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlTGV2ZWwoY29uZmlnOiBDb25maWcsIGxldmVsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzRmVhdHVyZUNvbmZpZyhjb25maWcpICYmIGNvbmZpZy5mZWF0dXJlcy5sZXZlbCkge1xuICAgIHJldHVybiBsZXZlbC5zdGFydHNXaXRoKCchJylcbiAgICAgID8gIWlzSW5MZXZlbChjb25maWcuZmVhdHVyZXMubGV2ZWwsIGxldmVsLnN1YnN0cigxLCBsZXZlbC5sZW5ndGgpKVxuICAgICAgOiBpc0luTGV2ZWwoY29uZmlnLmZlYXR1cmVzLmxldmVsLCBsZXZlbCk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlRW5hYmxlZChjb25maWc6IENvbmZpZywgZmVhdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc0ZlYXR1cmVDb25maWcoY29uZmlnKSkge1xuICAgIGNvbnN0IGZlYXR1cmVDb25maWcgPVxuICAgICAgZmVhdHVyZVswXSA9PT0gJyEnXG4gICAgICAgID8gY29uZmlnLmZlYXR1cmVzW2ZlYXR1cmUuc3Vic3RyKDEsIGZlYXR1cmUubGVuZ3RoKV1cbiAgICAgICAgOiBjb25maWcuZmVhdHVyZXNbZmVhdHVyZV07XG5cbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgdHlwZW9mIGZlYXR1cmVDb25maWcgPT09ICdzdHJpbmcnXG4gICAgICAgID8gaXNGZWF0dXJlTGV2ZWwoY29uZmlnLCBmZWF0dXJlQ29uZmlnKVxuICAgICAgICA6IGZlYXR1cmVDb25maWc7XG5cbiAgICByZXR1cm4gZmVhdHVyZS5zdGFydHNXaXRoKCchJykgPyAhcmVzdWx0IDogISFyZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19