dd-trace
Version:
Datadog APM tracing client for JavaScript
1 lines • 2.29 kB
JavaScript
(()=>{var e={"./semifies/index.js"(e){function checkAll(e,t){for(let[n,r]of e)if(!test(t,r,n))return!1;return!0}function match(e){return"latest"===e&&(e=">=0"),e.match(/^([^\d+]*)(\d.*)$/)||[null,"","*.*.*"]}function compile(e){let t=[],n=[],r=e.trim().split(/\s+/);for(let e=0;e<r.length;e++){let i=r[e];if("-"===i)continue;if("||"===i){t.push(n),n=[];continue}if(/^[<>=~v^]+$/.test(i)&&e+1<r.length){r[e+1]=i+r[e+1];continue}let u=match(i),l=u[1]||"=";l.endsWith("v")&&(l=l.slice(0,-1));let[s,c]=parse(u[2],l);if(e+2<r.length&&"-"===r[e+1]){let t=match(r[e+2]);r[e+2]="<="+(-1===t[2].indexOf("-")?t[2]+".*.*":t[2]),c=">="}if("~"===c[0]){let e=u[2].split("-")[0].split(".").length;n.push([">=",s]),n.push(["<",1===e?inc(s,0):inc(s,1)])}else if("^"===c[0]){let e=0!==s[0]?0:0!==s[1]?1:2;n.push([">=",s]),n.push(["<",0===e?inc(s,0):1===e?inc(s,1):inc(s,2)])}else n.push([c.replace("~","").replace("^",""),s])}return n.length&&t.push(n),t}function inc(e,t){let n=e.slice(0);if(-1===e[t])return n;for(n[t++]++;t<3;t++)n[t]=0;return n}function num(e){return"x"===e||"X"===e||"*"===e||"latest"===e?-1:Number(e)}function numOrString(e){return/^\d+$/.test(e)?Number(e):e}function ok(e,t,n){return -1===n?"<"!==e:"="===e?t===n:">"===e?t>n:">="===e?t>=n:"<"===e?t<n:"<="===e&&t<=n}function parse(e,t){let[n,r]=(e=e.split("+")[0]).split("-"),i=n.split(".").map(num).slice(0,3),u=Math.max(i.length-1,0);return(">"===t?(t=">=",i.push(0,0,0),i[u]++):""===t?i.push(0,0,0):i.push(-1,-1,-1),r)?[i.slice(0,3).concat(r.split(".").map(numOrString)),t]:[i.slice(0,3),t]}function test(e,t,n){if(!ok("=",e[0],t[0]))return ok(n,e[0],t[0]);if(!ok("=",e[1],t[1]))return ok(n,e[1],t[1]);if(!ok("=",e[2],t[2])||3===e.length&&3===t.length)return ok(n,e[2],t[2]);if("<"===n[0]&&(3===t.length||3===e.length))return!1;if(">"===n[0]){if(3===e.length)return!0;if(3===t.length)return!1}for(let r=3;r<Math.max(e.length,t.length);r++)if(ok(n,e[r]||"",t[r]||""))return!0;return!1}e.exports=function satisfies(e,t){let[n]=parse(e,"");for(let e of compile(t))if(checkAll(e,n))return!0;return!1}}},t={};function __webpack_require__(n){var r=t[n];if(void 0!==r)return r.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,__webpack_require__),i.exports}var n=__webpack_require__("./semifies/index.js");module.exports=n})();