cdkdx
Version:
Zero-config CLI for aws cdk development
44 lines • 4.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Semver = void 0;
const VALIDATE_SEMVER = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
const ALLOWED_MODES = ['~', '^'];
class Semver {
constructor(version, mode) {
if (!VALIDATE_SEMVER.test(version)) {
throw new Error(`Invalid semver: ${version}`);
}
if (mode && !ALLOWED_MODES.includes(mode)) {
throw new Error(`Mode "${mode}" not allowed. Allowed modes: ${ALLOWED_MODES.join(',')}`);
}
this.version = version;
this.mode = mode;
this.spec = `${mode !== null && mode !== void 0 ? mode : ''}${version}`;
}
/**
* Accept only an exact version
*/
static pinned(version) {
return new Semver(version);
}
/**
* Accept any minor version.
*
* >= version
* < next major version
*/
static caret(version) {
return new Semver(version, '^');
}
/**
* Accept patches.
*
* >= version
* < next minor version
*/
static tilde(version) {
return new Semver(version, '~');
}
}
exports.Semver = Semver;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlbXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLGVBQWUsR0FDbkIscUxBQXFMLENBQUM7QUFDeEwsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFakMsTUFBYSxNQUFNO0lBZ0NqQixZQUFvQixPQUFlLEVBQUUsSUFBYTtRQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsU0FBUyxJQUFJLGlDQUFpQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3hFLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQTdDRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBZTtRQUNsQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBZTtRQUNqQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQWU7UUFDakMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQXFCRjtBQS9DRCx3QkErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWQUxJREFURV9TRU1WRVIgPVxuICAvXigwfFsxLTldXFxkKilcXC4oMHxbMS05XVxcZCopXFwuKDB8WzEtOV1cXGQqKSg/Oi0oKD86MHxbMS05XVxcZCp8XFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKD86XFwuKD86MHxbMS05XVxcZCp8XFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKSopKT8oPzpcXCsoWzAtOWEtekEtWi1dKyg/OlxcLlswLTlhLXpBLVotXSspKikpPyQvO1xuY29uc3QgQUxMT1dFRF9NT0RFUyA9IFsnficsICdeJ107XG5cbmV4cG9ydCBjbGFzcyBTZW12ZXIge1xuICAvKipcbiAgICogQWNjZXB0IG9ubHkgYW4gZXhhY3QgdmVyc2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwaW5uZWQodmVyc2lvbjogc3RyaW5nKTogU2VtdmVyIHtcbiAgICByZXR1cm4gbmV3IFNlbXZlcih2ZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgYW55IG1pbm9yIHZlcnNpb24uXG4gICAqXG4gICAqID49IHZlcnNpb25cbiAgICogPCBuZXh0IG1ham9yIHZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2FyZXQodmVyc2lvbjogc3RyaW5nKTogU2VtdmVyIHtcbiAgICByZXR1cm4gbmV3IFNlbXZlcih2ZXJzaW9uLCAnXicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2VwdCBwYXRjaGVzLlxuICAgKlxuICAgKiA+PSB2ZXJzaW9uXG4gICAqIDwgbmV4dCBtaW5vciB2ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRpbGRlKHZlcnNpb246IHN0cmluZyk6IFNlbXZlciB7XG4gICAgcmV0dXJuIG5ldyBTZW12ZXIodmVyc2lvbiwgJ34nKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBzcGVjOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBtb2RlPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmVyc2lvbjogc3RyaW5nLCBtb2RlPzogc3RyaW5nKSB7XG4gICAgaWYgKCFWQUxJREFURV9TRU1WRVIudGVzdCh2ZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbXZlcjogJHt2ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGlmIChtb2RlICYmICFBTExPV0VEX01PREVTLmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBNb2RlIFwiJHttb2RlfVwiIG5vdCBhbGxvd2VkLiBBbGxvd2VkIG1vZGVzOiAke0FMTE9XRURfTU9ERVMuam9pbignLCcpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICB0aGlzLnNwZWMgPSBgJHttb2RlID8/ICcnfSR7dmVyc2lvbn1gO1xuICB9XG59XG4iXX0=