"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rangeFromSemver = rangeFromSemver; exports.stripCaret = stripCaret; const semver = require("semver"); const toolkit_error_1 = require("../toolkit/toolkit-error"); function rangeFromSemver(ver, targetType) { const re = ver.match(/^([^\d]*)([\d.]*)[^\s]*$/); if (!re || !semver.valid(re[2])) { throw new toolkit_error_1.ToolkitError('not a semver or unsupported range syntax'); } const prefixPart = re[1]; const verPart = re[2]; switch (targetType) { // NuGet normally installs the lowest version in the range // That's okay for aws-cdk-lib where we always specify the lowest version // For constructs, we rather want people to use the highest version // The only way to do this is to specify this as .* // see https://learn.microsoft.com/en-us/nuget/concepts/package-versioning case 'major.*': switch (prefixPart) { case '': // if there's no prefix and the remaining is a valid semver, there's no range specified return ver; case '^': return `${semver.major(verPart)}.*`; default: throw new toolkit_error_1.ToolkitError(`unsupported range syntax - ${prefixPart}`); } case 'bracket': switch (prefixPart) { case '': // if there's no prefix and the remaining is a valid semver, there's no range specified return ver; case '^': return `[${verPart},${semver.major(verPart) + 1}.0.0)`; default: throw new toolkit_error_1.ToolkitError(`unsupported range syntax - ${prefixPart}`); } case 'pep': switch (prefixPart) { case '': // if there's no prefix and the remaining is a valid semver, there's no range specified return `==${ver}`; case '^': return `>=${verPart},<${semver.major(verPart) + 1}.0.0`; default: throw new toolkit_error_1.ToolkitError(`unsupported range syntax - ${prefixPart}`); } } } /** * Strips a leading caret ^, if present */ function stripCaret(ver) { return ver.startsWith('^') ? ver.slice(1) : ver; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1yYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24tcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSwwQ0E2Q0M7QUFLRCxnQ0FFQztBQTNERCxpQ0FBaUM7QUFDakMsNERBQXdEO0FBTXhELFNBQWdCLGVBQWUsQ0FBQyxHQUFXLEVBQUUsVUFBcUI7SUFDaEUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLDRCQUFZLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0QixRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLDBEQUEwRDtRQUMxRCx5RUFBeUU7UUFDekUsbUVBQW1FO1FBQ25FLDBEQUEwRDtRQUMxRCwwRUFBMEU7UUFDMUUsS0FBSyxTQUFTO1lBQ1osUUFBUSxVQUFVLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxFQUFFO29CQUNMLHVGQUF1RjtvQkFDdkYsT0FBTyxHQUFHLENBQUM7Z0JBQ2IsS0FBSyxHQUFHO29CQUNOLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDO29CQUNFLE1BQU0sSUFBSSw0QkFBWSxDQUFDLDhCQUE4QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7UUFDSCxLQUFLLFNBQVM7WUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLEVBQUU7b0JBQ0wsdUZBQXVGO29CQUN2RixPQUFPLEdBQUcsQ0FBQztnQkFDYixLQUFLLEdBQUc7b0JBQ04sT0FBTyxJQUFJLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFDLENBQUMsT0FBTyxDQUFDO2dCQUN2RDtvQkFDRSxNQUFNLElBQUksNEJBQVksQ0FBQyw4QkFBOEIsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDO1FBQ0gsS0FBSyxLQUFLO1lBQ1IsUUFBUSxVQUFVLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxFQUFFO29CQUNMLHVGQUF1RjtvQkFDdkYsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLEdBQUc7b0JBQ04sT0FBTyxLQUFLLE9BQU8sS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN4RDtvQkFDRSxNQUFNLElBQUksNEJBQVksQ0FBQyw4QkFBOEIsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5cbi8vIGJyYWNrZXQgLSBodHRwczovL2RvY3Mub3JhY2xlLmNvbS9taWRkbGV3YXJlLzEyMTIvY29yZS9NQVZFTi9tYXZlbl92ZXJzaW9uLmh0bSNNQVZFTjQwMVxuLy8gcGVwIC0gaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ0MC8jdmVyc2lvbi1zcGVjaWZpZXJzXG5leHBvcnQgdHlwZSBSYW5nZVR5cGUgPSAnYnJhY2tldCcgfCAnbWFqb3IuKicgfCAncGVwJyA7XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5nZUZyb21TZW12ZXIodmVyOiBzdHJpbmcsIHRhcmdldFR5cGU6IFJhbmdlVHlwZSkge1xuICBjb25zdCByZSA9IHZlci5tYXRjaCgvXihbXlxcZF0qKShbXFxkLl0qKVteXFxzXSokLyk7XG4gIGlmICghcmUgfHwgIXNlbXZlci52YWxpZChyZVsyXSkpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdub3QgYSBzZW12ZXIgb3IgdW5zdXBwb3J0ZWQgcmFuZ2Ugc3ludGF4Jyk7XG4gIH1cbiAgY29uc3QgcHJlZml4UGFydCA9IHJlWzFdO1xuICBjb25zdCB2ZXJQYXJ0ID0gcmVbMl07XG5cbiAgc3dpdGNoICh0YXJnZXRUeXBlKSB7XG4gICAgLy8gTnVHZXQgbm9ybWFsbHkgaW5zdGFsbHMgdGhlIGxvd2VzdCB2ZXJzaW9uIGluIHRoZSByYW5nZVxuICAgIC8vIFRoYXQncyBva2F5IGZvciBhd3MtY2RrLWxpYiB3aGVyZSB3ZSBhbHdheXMgc3BlY2lmeSB0aGUgbG93ZXN0IHZlcnNpb25cbiAgICAvLyBGb3IgY29uc3RydWN0cywgd2UgcmF0aGVyIHdhbnQgcGVvcGxlIHRvIHVzZSB0aGUgaGlnaGVzdCB2ZXJzaW9uXG4gICAgLy8gVGhlIG9ubHkgd2F5IHRvIGRvIHRoaXMgaXMgdG8gc3BlY2lmeSB0aGlzIGFzIDxNQUpPUj4uKlxuICAgIC8vIHNlZSBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvbnVnZXQvY29uY2VwdHMvcGFja2FnZS12ZXJzaW9uaW5nXG4gICAgY2FzZSAnbWFqb3IuKic6XG4gICAgICBzd2l0Y2ggKHByZWZpeFBhcnQpIHtcbiAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWZpeCBhbmQgdGhlIHJlbWFpbmluZyBpcyBhIHZhbGlkIHNlbXZlciwgdGhlcmUncyBubyByYW5nZSBzcGVjaWZpZWRcbiAgICAgICAgICByZXR1cm4gdmVyO1xuICAgICAgICBjYXNlICdeJzpcbiAgICAgICAgICByZXR1cm4gYCR7c2VtdmVyLm1ham9yKHZlclBhcnQpfS4qYDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGB1bnN1cHBvcnRlZCByYW5nZSBzeW50YXggLSAke3ByZWZpeFBhcnR9YCk7XG4gICAgICB9XG4gICAgY2FzZSAnYnJhY2tldCc6XG4gICAgICBzd2l0Y2ggKHByZWZpeFBhcnQpIHtcbiAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWZpeCBhbmQgdGhlIHJlbWFpbmluZyBpcyBhIHZhbGlkIHNlbXZlciwgdGhlcmUncyBubyByYW5nZSBzcGVjaWZpZWRcbiAgICAgICAgICByZXR1cm4gdmVyO1xuICAgICAgICBjYXNlICdeJzpcbiAgICAgICAgICByZXR1cm4gYFske3ZlclBhcnR9LCR7c2VtdmVyLm1ham9yKHZlclBhcnQpKzF9LjAuMClgO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYHVuc3VwcG9ydGVkIHJhbmdlIHN5bnRheCAtICR7cHJlZml4UGFydH1gKTtcbiAgICAgIH1cbiAgICBjYXNlICdwZXAnOlxuICAgICAgc3dpdGNoIChwcmVmaXhQYXJ0KSB7XG4gICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgLy8gaWYgdGhlcmUncyBubyBwcmVmaXggYW5kIHRoZSByZW1haW5pbmcgaXMgYSB2YWxpZCBzZW12ZXIsIHRoZXJlJ3Mgbm8gcmFuZ2Ugc3BlY2lmaWVkXG4gICAgICAgICAgcmV0dXJuIGA9PSR7dmVyfWA7XG4gICAgICAgIGNhc2UgJ14nOlxuICAgICAgICAgIHJldHVybiBgPj0ke3ZlclBhcnR9LDwke3NlbXZlci5tYWpvcih2ZXJQYXJ0KSsxfS4wLjBgO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYHVuc3VwcG9ydGVkIHJhbmdlIHN5bnRheCAtICR7cHJlZml4UGFydH1gKTtcbiAgICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFN0cmlwcyBhIGxlYWRpbmcgY2FyZXQgXiwgaWYgcHJlc2VudFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBDYXJldCh2ZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2ZXIuc3RhcnRzV2l0aCgnXicpID8gdmVyLnNsaWNlKDEpIDogdmVyO1xufVxuIl19