UNPKG

@grafana/e2e-selectors

Version:

Grafana End-to-End Test Selectors Library

56 lines (51 loc) 1.76 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var semver = require('semver'); "use strict"; 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