UNPKG

semver-conflict-resolver

Version:

Plugin for git-json-resolver that applies semver-based merge strategies (max, min, secure, override) to resolve version conflicts in package.json and similar files.

2 lines (1 loc) 2.31 kB
var g=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,v=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");let r=e.match(g);if(!r)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return r.shift(),r},y=e=>e==="*"||e==="x"||e==="X",P=e=>{let r=parseInt(e,10);return isNaN(r)?e:r},z=(e,r)=>typeof e!=typeof r?[String(e),String(r)]:[e,r],C=(e,r)=>{if(y(e)||y(r))return 0;let[s,a]=z(P(e),P(r));return s>a?1:s<a?-1:0},p=(e,r)=>{for(let s=0;s<Math.max(e.length,r.length);s++){let a=C(e[s]||"0",r[s]||"0");if(a!==0)return a}return 0};var u=(e,r)=>{let s=v(e),a=v(r),c=s.pop(),m=a.pop(),i=p(s,a);return i!==0?i:c&&m?p(c.split("."),m.split(".")):c||m?c?-1:1:0};var d=e=>typeof e=="string"&&/^[v\d]/.test(e)&&g.test(e),S=e=>typeof e=="string"&&/^(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-]+)*))?$/.test(e);import{StrategyStatus_OK as o,StrategyStatus_CONTINUE as k,StrategyStatus_FAIL as A}from"git-json-resolver/utils";var x={strict:!0,fallback:"continue",preferValid:!0,preferRange:!1,workspacePattern:""},w=(e=x)=>{let r=t=>{if(typeof t!="string")return!1;let n=t.trim().replace(/^\^/,"");return e.strict&&S(n),d(n)},s=({ours:t,theirs:n})=>{if(r(t)&&r(n)){let f=u(t,n)>=0?t:n;return{status:o,value:f}}return i({ours:t,theirs:n})},a=({ours:t,theirs:n})=>{if(r(t)&&r(n)){let f=u(t,n)<=0?t:n;return{status:o,value:f}}return i({ours:t,theirs:n})},c=({ours:t,theirs:n})=>r(t)?{status:o,value:t}:i({ours:t,theirs:n}),m=({ours:t,theirs:n})=>r(n)?{status:o,value:n}:i({ours:t,theirs:n}),i=({ours:t,theirs:n})=>{if(e.preferValid){if(r(t))return{status:o,value:t};if(r(n))return{status:o,value:n}}switch(e.fallback){case"ours":return{status:o,value:t};case"theirs":return{status:o,value:n};case"error":return{status:A,reason:"No valid semver found"};case"continue":default:return{status:k}}};return{strategies:{"semver-max":s,"semver-min":a,"semver-ours":c,"semver-theirs":m}}},j=w,{strategies:l}=w(x),R=l["semver-max"],E=l["semver-min"],_=l["semver-ours"],$=l["semver-theirs"],q=e=>{Object.assign(x,e)};export{j as a,R as b,E as c,_ as d,$ as e,q as f};