unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
30 lines • 1.26 kB
JavaScript
import semver from 'semver';
import BadDataError from '../error/bad-data-error.js';
import { mustParseStrictSemVer, parseStrictSemVer } from '../util/semver.js';
export class ClientSpecService {
constructor(config) {
this.clientSpecHeader = 'Unleash-Client-Spec';
this.clientSpecFeatures = {
segments: mustParseStrictSemVer('4.2.0'),
deltaApi: mustParseStrictSemVer('5.2.0'),
};
this.logger = config.getLogger('services/capability-service.ts');
}
requestSupportsSpec(request, feature) {
return this.versionSupportsSpec(feature, request.header(this.clientSpecHeader));
}
versionSupportsSpec(feature, version) {
if (!version) {
return false;
}
const parsedVersion = parseStrictSemVer(version);
if (!parsedVersion && !/^\d/.test(version)) {
throw new BadDataError(`Invalid prefix in the ${this.clientSpecHeader} header: "${version}".`);
}
if (!parsedVersion) {
throw new BadDataError(`Invalid SemVer in the ${this.clientSpecHeader} header: "${version}".`);
}
return semver.gte(parsedVersion, this.clientSpecFeatures[feature]);
}
}
//# sourceMappingURL=client-spec-service.js.map