@grafana/e2e-selectors
Version:
Grafana End-to-End Test Selectors Library
56 lines (51 loc) • 1.76 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var semver = require('semver');
;
function resolveSelectors(versionedSelectors, grafanaVersion = "latest") {
const version = grafanaVersion.replace(/\-.*/, "");
const finalVersion = version && semver.valid(version) ? version : "latest";
return resolveSelectorGroup(versionedSelectors, finalVersion);
}
function resolveSelectorGroup(group, grafanaVersion) {
const result = {};
for (const [key, value] of Object.entries(group)) {
if (isVersionedSelectorGroup(value)) {
result[key] = resolveSelectorGroup(value, grafanaVersion);
} else {
assertIsSemverValid(value, key);
result[key] = resolveSelector(value, grafanaVersion);
}
}
return result;
}
function isVersionedSelectorGroup(target) {
if (typeof target === "object") {
const [first] = Object.keys(target);
return !semver.valid(first);
}
return false;
}
function resolveSelector(versionedSelector, grafanaVersion) {
let versionToUse;
let versions = Object.keys(versionedSelector).sort(semver.compare);
if (grafanaVersion === "latest") {
return versionedSelector[versions[versions.length - 1]];
}
for (const version of versions) {
if (semver.gte(grafanaVersion, version)) {
versionToUse = version;
}
}
if (!versionToUse) {
versionToUse = versions[versions.length - 1];
}
return versionedSelector[versionToUse];
}
function assertIsSemverValid(versionedSelector, selectorName) {
if (!Object.keys(versionedSelector).every((version) => semver.valid(version))) {
throw new Error(`Invalid semver version: '${selectorName}'`);
}
}
exports.resolveSelectors = resolveSelectors;
//# sourceMappingURL=resolver.cjs.map