@conterra/vuln-scan 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vuln-scan.js CHANGED
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var pi=Object.create;var $t=Object.defineProperty;var di=Object.getOwnPropertyDescriptor;var yi=Object.getOwnPropertyNames;var hi=Object.getPrototypeOf,Si=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var gi=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yi(e))!Si.call(t,i)&&i!==r&&$t(t,i,{get:()=>e[i],enumerable:!(n=di(e,i))||n.enumerable});return t};var Oe=(t,e,r)=>(r=t!=null?pi(hi(t)):{},gi(e||!t||!t.__esModule?$t(r,"default",{value:t,enumerable:!0}):r,t));var T=g(ut=>{"use strict";ut.fromCallback=function(t){return Object.defineProperty(function(...e){if(typeof e[e.length-1]=="function")t.apply(this,e);else return new Promise((r,n)=>{e.push((i,o)=>i!=null?n(i):r(o)),t.apply(this,e)})},"name",{value:t.name})};ut.fromPromise=function(t){return Object.defineProperty(function(...e){let r=e[e.length-1];if(typeof r!="function")return t.apply(this,e);e.pop(),t.apply(this,e).then(n=>r(null,n),r)},"name",{value:t.name})}});var qt=g((ja,Bt)=>{var te=require("constants"),Pi=process.cwd,Te=null,Li=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Te||(Te=Pi.call(process)),Te};try{process.cwd()}catch{}typeof process.chdir=="function"&&(ft=process.chdir,process.chdir=function(t){Te=null,ft.call(process,t)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ft));var ft;Bt.exports=Ei;function Ei(t){te.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&e(t),t.lutimes||r(t),t.chown=o(t.chown),t.fchown=o(t.fchown),t.lchown=o(t.lchown),t.chmod=n(t.chmod),t.fchmod=n(t.fchmod),t.lchmod=n(t.lchmod),t.chownSync=s(t.chownSync),t.fchownSync=s(t.fchownSync),t.lchownSync=s(t.lchownSync),t.chmodSync=i(t.chmodSync),t.fchmodSync=i(t.fchmodSync),t.lchmodSync=i(t.lchmodSync),t.stat=c(t.stat),t.fstat=c(t.fstat),t.lstat=c(t.lstat),t.statSync=p(t.statSync),t.fstatSync=p(t.fstatSync),t.lstatSync=p(t.lstatSync),t.chmod&&!t.lchmod&&(t.lchmod=function(a,m,u){u&&process.nextTick(u)},t.lchmodSync=function(){}),t.chown&&!t.lchown&&(t.lchown=function(a,m,u,l){l&&process.nextTick(l)},t.lchownSync=function(){}),Li==="win32"&&(t.rename=typeof t.rename!="function"?t.rename:(function(a){function m(u,l,d){var y=Date.now(),S=0;a(u,l,function w(D){if(D&&(D.code==="EACCES"||D.code==="EPERM"||D.code==="EBUSY")&&Date.now()-y<6e4){setTimeout(function(){t.stat(l,function(b,G){b&&b.code==="ENOENT"?a(u,l,w):d(D)})},S),S<100&&(S+=10);return}d&&d(D)})}return Object.setPrototypeOf&&Object.setPrototypeOf(m,a),m})(t.rename)),t.read=typeof t.read!="function"?t.read:(function(a){function m(u,l,d,y,S,w){var D;if(w&&typeof w=="function"){var b=0;D=function(G,R,rt){if(G&&G.code==="EAGAIN"&&b<10)return b++,a.call(t,u,l,d,y,S,D);w.apply(this,arguments)}}return a.call(t,u,l,d,y,S,D)}return Object.setPrototypeOf&&Object.setPrototypeOf(m,a),m})(t.read),t.readSync=typeof t.readSync!="function"?t.readSync:(function(a){return function(m,u,l,d,y){for(var S=0;;)try{return a.call(t,m,u,l,d,y)}catch(w){if(w.code==="EAGAIN"&&S<10){S++;continue}throw w}}})(t.readSync);function e(a){a.lchmod=function(m,u,l){a.open(m,te.O_WRONLY|te.O_SYMLINK,u,function(d,y){if(d){l&&l(d);return}a.fchmod(y,u,function(S){a.close(y,function(w){l&&l(S||w)})})})},a.lchmodSync=function(m,u){var l=a.openSync(m,te.O_WRONLY|te.O_SYMLINK,u),d=!0,y;try{y=a.fchmodSync(l,u),d=!1}finally{if(d)try{a.closeSync(l)}catch{}else a.closeSync(l)}return y}}function r(a){te.hasOwnProperty("O_SYMLINK")&&a.futimes?(a.lutimes=function(m,u,l,d){a.open(m,te.O_SYMLINK,function(y,S){if(y){d&&d(y);return}a.futimes(S,u,l,function(w){a.close(S,function(D){d&&d(w||D)})})})},a.lutimesSync=function(m,u,l){var d=a.openSync(m,te.O_SYMLINK),y,S=!0;try{y=a.futimesSync(d,u,l),S=!1}finally{if(S)try{a.closeSync(d)}catch{}else a.closeSync(d)}return y}):a.futimes&&(a.lutimes=function(m,u,l,d){d&&process.nextTick(d)},a.lutimesSync=function(){})}function n(a){return a&&function(m,u,l){return a.call(t,m,u,function(d){f(d)&&(d=null),l&&l.apply(this,arguments)})}}function i(a){return a&&function(m,u){try{return a.call(t,m,u)}catch(l){if(!f(l))throw l}}}function o(a){return a&&function(m,u,l,d){return a.call(t,m,u,l,function(y){f(y)&&(y=null),d&&d.apply(this,arguments)})}}function s(a){return a&&function(m,u,l){try{return a.call(t,m,u,l)}catch(d){if(!f(d))throw d}}}function c(a){return a&&function(m,u,l){typeof u=="function"&&(l=u,u=null);function d(y,S){S&&(S.uid<0&&(S.uid+=4294967296),S.gid<0&&(S.gid+=4294967296)),l&&l.apply(this,arguments)}return u?a.call(t,m,u,d):a.call(t,m,d)}}function p(a){return a&&function(m,u){var l=u?a.call(t,m,u):a.call(t,m);return l&&(l.uid<0&&(l.uid+=4294967296),l.gid<0&&(l.gid+=4294967296)),l}}function f(a){if(!a||a.code==="ENOSYS")return!0;var m=!process.getuid||process.getuid()!==0;return!!(m&&(a.code==="EINVAL"||a.code==="EPERM"))}}});var Gt=g((Ia,Xt)=>{var Ut=require("stream").Stream;Xt.exports=ki;function ki(t){return{ReadStream:e,WriteStream:r};function e(n,i){if(!(this instanceof e))return new e(n,i);Ut.call(this);var o=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,i=i||{};for(var s=Object.keys(i),c=0,p=s.length;c<p;c++){var f=s[c];this[f]=i[f]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){o._read()});return}t.open(this.path,this.flags,this.mode,function(a,m){if(a){o.emit("error",a),o.readable=!1;return}o.fd=m,o.emit("open",m),o._read()})}function r(n,i){if(!(this instanceof r))return new r(n,i);Ut.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,i=i||{};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var p=o[s];this[p]=i[p]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=t.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var Wt=g((Fa,Jt)=>{"use strict";Jt.exports=Di;var Oi=Object.getPrototypeOf||function(t){return t.__proto__};function Di(t){if(t===null||typeof t!="object")return t;if(t instanceof Object)var e={__proto__:Oi(t)};else var e=Object.create(null);return Object.getOwnPropertyNames(t).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}});var fe=g((Ma,dt)=>{var k=require("fs"),Ci=qt(),Ti=Gt(),ji=Wt(),je=require("util"),N,Fe;typeof Symbol=="function"&&typeof Symbol.for=="function"?(N=Symbol.for("graceful-fs.queue"),Fe=Symbol.for("graceful-fs.previous")):(N="___graceful-fs.queue",Fe="___graceful-fs.previous");function Ii(){}function Qt(t,e){Object.defineProperty(t,N,{get:function(){return e}})}var ae=Ii;je.debuglog?ae=je.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(ae=function(){var t=je.format.apply(je,arguments);t="GFS4: "+t.split(/\n/).join(`
3
- GFS4: `),console.error(t)});k[N]||(Ht=global[N]||[],Qt(k,Ht),k.close=(function(t){function e(r,n){return t.call(k,r,function(i){i||Yt(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(e,Fe,{value:t}),e})(k.close),k.closeSync=(function(t){function e(r){t.apply(k,arguments),Yt()}return Object.defineProperty(e,Fe,{value:t}),e})(k.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){ae(k[N]),require("assert").equal(k[N].length,0)}));var Ht;global[N]||Qt(global,k[N]);dt.exports=mt(ji(k));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!k.__patched&&(dt.exports=mt(k),k.__patched=!0);function mt(t){Ci(t),t.gracefulify=mt,t.createReadStream=R,t.createWriteStream=rt;var e=t.readFile;t.readFile=r;function r(h,v,x){return typeof v=="function"&&(x=v,v=null),I(h,v,x);function I(F,C,E,O){return e(F,C,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?ue([I,[F,C,E],P,O||Date.now(),Date.now()]):typeof E=="function"&&E.apply(this,arguments)})}}var n=t.writeFile;t.writeFile=i;function i(h,v,x,I){return typeof x=="function"&&(I=x,x=null),F(h,v,x,I);function F(C,E,O,P,M){return n(C,E,O,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?ue([F,[C,E,O,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}var o=t.appendFile;o&&(t.appendFile=s);function s(h,v,x,I){return typeof x=="function"&&(I=x,x=null),F(h,v,x,I);function F(C,E,O,P,M){return o(C,E,O,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?ue([F,[C,E,O,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}var c=t.copyFile;c&&(t.copyFile=p);function p(h,v,x,I){return typeof x=="function"&&(I=x,x=0),F(h,v,x,I);function F(C,E,O,P,M){return c(C,E,O,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?ue([F,[C,E,O,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}var f=t.readdir;t.readdir=m;var a=/^v[0-5]\./;function m(h,v,x){typeof v=="function"&&(x=v,v=null);var I=a.test(process.version)?function(E,O,P,M){return f(E,F(E,O,P,M))}:function(E,O,P,M){return f(E,O,F(E,O,P,M))};return I(h,v,x);function F(C,E,O,P){return function(M,L){M&&(M.code==="EMFILE"||M.code==="ENFILE")?ue([I,[C,E,O],M,P||Date.now(),Date.now()]):(L&&L.sort&&L.sort(),typeof O=="function"&&O.call(this,M,L))}}}if(process.version.substr(0,4)==="v0.8"){var u=Ti(t);w=u.ReadStream,b=u.WriteStream}var l=t.ReadStream;l&&(w.prototype=Object.create(l.prototype),w.prototype.open=D);var d=t.WriteStream;d&&(b.prototype=Object.create(d.prototype),b.prototype.open=G),Object.defineProperty(t,"ReadStream",{get:function(){return w},set:function(h){w=h},enumerable:!0,configurable:!0}),Object.defineProperty(t,"WriteStream",{get:function(){return b},set:function(h){b=h},enumerable:!0,configurable:!0});var y=w;Object.defineProperty(t,"FileReadStream",{get:function(){return y},set:function(h){y=h},enumerable:!0,configurable:!0});var S=b;Object.defineProperty(t,"FileWriteStream",{get:function(){return S},set:function(h){S=h},enumerable:!0,configurable:!0});function w(h,v){return this instanceof w?(l.apply(this,arguments),this):w.apply(Object.create(w.prototype),arguments)}function D(){var h=this;he(h.path,h.flags,h.mode,function(v,x){v?(h.autoClose&&h.destroy(),h.emit("error",v)):(h.fd=x,h.emit("open",x),h.read())})}function b(h,v){return this instanceof b?(d.apply(this,arguments),this):b.apply(Object.create(b.prototype),arguments)}function G(){var h=this;he(h.path,h.flags,h.mode,function(v,x){v?(h.destroy(),h.emit("error",v)):(h.fd=x,h.emit("open",x))})}function R(h,v){return new t.ReadStream(h,v)}function rt(h,v){return new t.WriteStream(h,v)}var nt=t.open;t.open=he;function he(h,v,x,I){return typeof x=="function"&&(I=x,x=null),F(h,v,x,I);function F(C,E,O,P,M){return nt(C,E,O,function(L,va){L&&(L.code==="EMFILE"||L.code==="ENFILE")?ue([F,[C,E,O,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}return t}function ue(t){ae("ENQUEUE",t[0].name,t[1]),k[N].push(t),pt()}var Ie;function Yt(){for(var t=Date.now(),e=0;e<k[N].length;++e)k[N][e].length>2&&(k[N][e][3]=t,k[N][e][4]=t);pt()}function pt(){if(clearTimeout(Ie),Ie=void 0,k[N].length!==0){var t=k[N].shift(),e=t[0],r=t[1],n=t[2],i=t[3],o=t[4];if(i===void 0)ae("RETRY",e.name,r),e.apply(null,r);else if(Date.now()-i>=6e4){ae("TIMEOUT",e.name,r);var s=r.pop();typeof s=="function"&&s.call(null,n)}else{var c=Date.now()-o,p=Math.max(o-i,1),f=Math.min(p*1.2,100);c>=f?(ae("RETRY",e.name,r),e.apply(null,r.concat([i]))):k[N].push(t)}Ie===void 0&&(Ie=setTimeout(pt,0))}}});var $=g(z=>{"use strict";var Kt=T().fromCallback,A=fe(),Fi=["access","appendFile","chmod","chown","close","copyFile","cp","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","glob","lchmod","lchown","lutimes","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","statfs","symlink","truncate","unlink","utimes","writeFile"].filter(t=>typeof A[t]=="function");Object.assign(z,A);Fi.forEach(t=>{z[t]=Kt(A[t])});z.exists=function(t,e){return typeof e=="function"?A.exists(t,e):new Promise(r=>A.exists(t,r))};z.read=function(t,e,r,n,i,o){return typeof o=="function"?A.read(t,e,r,n,i,o):new Promise((s,c)=>{A.read(t,e,r,n,i,(p,f,a)=>{if(p)return c(p);s({bytesRead:f,buffer:a})})})};z.write=function(t,e,...r){return typeof r[r.length-1]=="function"?A.write(t,e,...r):new Promise((n,i)=>{A.write(t,e,...r,(o,s,c)=>{if(o)return i(o);n({bytesWritten:s,buffer:c})})})};z.readv=function(t,e,...r){return typeof r[r.length-1]=="function"?A.readv(t,e,...r):new Promise((n,i)=>{A.readv(t,e,...r,(o,s,c)=>{if(o)return i(o);n({bytesRead:s,buffers:c})})})};z.writev=function(t,e,...r){return typeof r[r.length-1]=="function"?A.writev(t,e,...r):new Promise((n,i)=>{A.writev(t,e,...r,(o,s,c)=>{if(o)return i(o);n({bytesWritten:s,buffers:c})})})};typeof A.realpath.native=="function"?z.realpath.native=Kt(A.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var Zt=g((Ra,zt)=>{"use strict";var Mi=require("path");zt.exports.checkPath=function(e){if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(Mi.parse(e).root,""))){let n=new Error(`Path contains invalid characters: ${e}`);throw n.code="EINVAL",n}}});var nr=g((Va,yt)=>{"use strict";var er=$(),{checkPath:tr}=Zt(),rr=t=>{let e={mode:511};return typeof t=="number"?t:{...e,...t}.mode};yt.exports.makeDir=async(t,e)=>(tr(t),er.mkdir(t,{mode:rr(e),recursive:!0}));yt.exports.makeDirSync=(t,e)=>(tr(t),er.mkdirSync(t,{mode:rr(e),recursive:!0}))});var W=g((Aa,ir)=>{"use strict";var Ni=T().fromPromise,{makeDir:Ri,makeDirSync:ht}=nr(),St=Ni(Ri);ir.exports={mkdirs:St,mkdirsSync:ht,mkdirp:St,mkdirpSync:ht,ensureDir:St,ensureDirSync:ht}});var re=g(($a,sr)=>{"use strict";var Vi=T().fromPromise,or=$();function Ai(t){return or.access(t).then(()=>!0).catch(()=>!1)}sr.exports={pathExists:Vi(Ai),pathExistsSync:or.existsSync}});var gt=g((_a,ar)=>{"use strict";var me=$(),$i=T().fromPromise;async function _i(t,e,r){let n=await me.open(t,"r+"),i=null;try{await me.futimes(n,e,r)}finally{try{await me.close(n)}catch(o){i=o}}if(i)throw i}function Bi(t,e,r){let n=me.openSync(t,"r+");return me.futimesSync(n,e,r),me.closeSync(n)}ar.exports={utimesMillis:$i(_i),utimesMillisSync:Bi}});var ce=g((Ba,fr)=>{"use strict";var pe=$(),j=require("path"),cr=T().fromPromise;function qi(t,e,r){let n=r.dereference?i=>pe.stat(i,{bigint:!0}):i=>pe.lstat(i,{bigint:!0});return Promise.all([n(t),n(e).catch(i=>{if(i.code==="ENOENT")return null;throw i})]).then(([i,o])=>({srcStat:i,destStat:o}))}function Ui(t,e,r){let n,i=r.dereference?s=>pe.statSync(s,{bigint:!0}):s=>pe.lstatSync(s,{bigint:!0}),o=i(t);try{n=i(e)}catch(s){if(s.code==="ENOENT")return{srcStat:o,destStat:null};throw s}return{srcStat:o,destStat:n}}async function Xi(t,e,r,n){let{srcStat:i,destStat:o}=await qi(t,e,n);if(o){if(ge(i,o)){let s=j.basename(t),c=j.basename(e);if(r==="move"&&s!==c&&s.toLowerCase()===c.toLowerCase())return{srcStat:i,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(i.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${e}' with directory '${t}'.`);if(!i.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${e}' with non-directory '${t}'.`)}if(i.isDirectory()&&vt(t,e))throw new Error(Me(t,e,r));return{srcStat:i,destStat:o}}function Gi(t,e,r,n){let{srcStat:i,destStat:o}=Ui(t,e,n);if(o){if(ge(i,o)){let s=j.basename(t),c=j.basename(e);if(r==="move"&&s!==c&&s.toLowerCase()===c.toLowerCase())return{srcStat:i,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(i.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${e}' with directory '${t}'.`);if(!i.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${e}' with non-directory '${t}'.`)}if(i.isDirectory()&&vt(t,e))throw new Error(Me(t,e,r));return{srcStat:i,destStat:o}}async function lr(t,e,r,n){let i=j.resolve(j.dirname(t)),o=j.resolve(j.dirname(r));if(o===i||o===j.parse(o).root)return;let s;try{s=await pe.stat(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(ge(e,s))throw new Error(Me(t,r,n));return lr(t,e,o,n)}function ur(t,e,r,n){let i=j.resolve(j.dirname(t)),o=j.resolve(j.dirname(r));if(o===i||o===j.parse(o).root)return;let s;try{s=pe.statSync(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(ge(e,s))throw new Error(Me(t,r,n));return ur(t,e,o,n)}function ge(t,e){return e.ino!==void 0&&e.dev!==void 0&&e.ino===t.ino&&e.dev===t.dev}function vt(t,e){let r=j.resolve(t).split(j.sep).filter(i=>i),n=j.resolve(e).split(j.sep).filter(i=>i);return r.every((i,o)=>n[o]===i)}function Me(t,e,r){return`Cannot ${r} '${t}' to a subdirectory of itself, '${e}'.`}fr.exports={checkPaths:cr(Xi),checkPathsSync:Gi,checkParentPaths:cr(lr),checkParentPathsSync:ur,isSrcSubdir:vt,areIdentical:ge}});var pr=g((qa,mr)=>{"use strict";async function Ji(t,e){let r=[];for await(let n of t)r.push(e(n).then(()=>null,i=>i??new Error("unknown error")));await Promise.all(r.map(n=>n.then(i=>{if(i!==null)throw i})))}mr.exports={asyncIteratorConcurrentProcess:Ji}});var gr=g((Ua,Sr)=>{"use strict";var V=$(),ve=require("path"),{mkdirs:Wi}=W(),{pathExists:Hi}=re(),{utimesMillis:Yi}=gt(),we=ce(),{asyncIteratorConcurrentProcess:Qi}=pr();async function Ki(t,e,r={}){typeof r=="function"&&(r={filter:r}),r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
2
+ "use strict";var Ii=Object.create;var Yt=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var Mi=Object.getOwnPropertyNames;var Ni=Object.getPrototypeOf,_i=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var $i=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Mi(e))!_i.call(t,i)&&i!==r&&Yt(t,i,{get:()=>e[i],enumerable:!(n=Ri(e,i))||n.enumerable});return t};var Te=(t,e,r)=>(r=t!=null?Ii(Ni(t)):{},$i(e||!t||!t.__esModule?Yt(r,"default",{value:t,enumerable:!0}):r,t));var O=y(jt=>{"use strict";jt.fromCallback=function(t){return Object.defineProperty(function(...e){if(typeof e[e.length-1]=="function")t.apply(this,e);else return new Promise((r,n)=>{e.push((i,o)=>i!=null?n(i):r(o)),t.apply(this,e)})},"name",{value:t.name})};jt.fromPromise=function(t){return Object.defineProperty(function(...e){let r=e[e.length-1];if(typeof r!="function")return t.apply(this,e);e.pop(),t.apply(this,e).then(n=>r(null,n),r)},"name",{value:t.name})}});var Er=y((qc,Dr)=>{var ee=require("constants"),ro=process.cwd,Ye=null,no=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Ye||(Ye=ro.call(process)),Ye};try{process.cwd()}catch{}typeof process.chdir=="function"&&(Ft=process.chdir,process.chdir=function(t){Ye=null,Ft.call(process,t)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,Ft));var Ft;Dr.exports=io;function io(t){ee.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&e(t),t.lutimes||r(t),t.chown=o(t.chown),t.fchown=o(t.fchown),t.lchown=o(t.lchown),t.chmod=n(t.chmod),t.fchmod=n(t.fchmod),t.lchmod=n(t.lchmod),t.chownSync=s(t.chownSync),t.fchownSync=s(t.fchownSync),t.lchownSync=s(t.lchownSync),t.chmodSync=i(t.chmodSync),t.fchmodSync=i(t.fchmodSync),t.lchmodSync=i(t.lchmodSync),t.stat=c(t.stat),t.fstat=c(t.fstat),t.lstat=c(t.lstat),t.statSync=m(t.statSync),t.fstatSync=m(t.fstatSync),t.lstatSync=m(t.lstatSync),t.chmod&&!t.lchmod&&(t.lchmod=function(a,p,l){l&&process.nextTick(l)},t.lchmodSync=function(){}),t.chown&&!t.lchown&&(t.lchown=function(a,p,l,u){u&&process.nextTick(u)},t.lchownSync=function(){}),no==="win32"&&(t.rename=typeof t.rename!="function"?t.rename:(function(a){function p(l,u,f){var g=Date.now(),v=0;a(l,u,function P($){if($&&($.code==="EACCES"||$.code==="EPERM"||$.code==="EBUSY")&&Date.now()-g<6e4){setTimeout(function(){t.stat(u,function(I,ve){I&&I.code==="ENOENT"?a(l,u,P):f($)})},v),v<100&&(v+=10);return}f&&f($)})}return Object.setPrototypeOf&&Object.setPrototypeOf(p,a),p})(t.rename)),t.read=typeof t.read!="function"?t.read:(function(a){function p(l,u,f,g,v,P){var $;if(P&&typeof P=="function"){var I=0;$=function(ve,Qt,zt){if(ve&&ve.code==="EAGAIN"&&I<10)return I++,a.call(t,l,u,f,g,v,$);P.apply(this,arguments)}}return a.call(t,l,u,f,g,v,$)}return Object.setPrototypeOf&&Object.setPrototypeOf(p,a),p})(t.read),t.readSync=typeof t.readSync!="function"?t.readSync:(function(a){return function(p,l,u,f,g){for(var v=0;;)try{return a.call(t,p,l,u,f,g)}catch(P){if(P.code==="EAGAIN"&&v<10){v++;continue}throw P}}})(t.readSync);function e(a){a.lchmod=function(p,l,u){a.open(p,ee.O_WRONLY|ee.O_SYMLINK,l,function(f,g){if(f){u&&u(f);return}a.fchmod(g,l,function(v){a.close(g,function(P){u&&u(v||P)})})})},a.lchmodSync=function(p,l){var u=a.openSync(p,ee.O_WRONLY|ee.O_SYMLINK,l),f=!0,g;try{g=a.fchmodSync(u,l),f=!1}finally{if(f)try{a.closeSync(u)}catch{}else a.closeSync(u)}return g}}function r(a){ee.hasOwnProperty("O_SYMLINK")&&a.futimes?(a.lutimes=function(p,l,u,f){a.open(p,ee.O_SYMLINK,function(g,v){if(g){f&&f(g);return}a.futimes(v,l,u,function(P){a.close(v,function($){f&&f(P||$)})})})},a.lutimesSync=function(p,l,u){var f=a.openSync(p,ee.O_SYMLINK),g,v=!0;try{g=a.futimesSync(f,l,u),v=!1}finally{if(v)try{a.closeSync(f)}catch{}else a.closeSync(f)}return g}):a.futimes&&(a.lutimes=function(p,l,u,f){f&&process.nextTick(f)},a.lutimesSync=function(){})}function n(a){return a&&function(p,l,u){return a.call(t,p,l,function(f){d(f)&&(f=null),u&&u.apply(this,arguments)})}}function i(a){return a&&function(p,l){try{return a.call(t,p,l)}catch(u){if(!d(u))throw u}}}function o(a){return a&&function(p,l,u,f){return a.call(t,p,l,u,function(g){d(g)&&(g=null),f&&f.apply(this,arguments)})}}function s(a){return a&&function(p,l,u){try{return a.call(t,p,l,u)}catch(f){if(!d(f))throw f}}}function c(a){return a&&function(p,l,u){typeof l=="function"&&(u=l,l=null);function f(g,v){v&&(v.uid<0&&(v.uid+=4294967296),v.gid<0&&(v.gid+=4294967296)),u&&u.apply(this,arguments)}return l?a.call(t,p,l,f):a.call(t,p,f)}}function m(a){return a&&function(p,l){var u=l?a.call(t,p,l):a.call(t,p);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}}function d(a){if(!a||a.code==="ENOSYS")return!0;var p=!process.getuid||process.getuid()!==0;return!!(p&&(a.code==="EINVAL"||a.code==="EPERM"))}}});var jr=y((Xc,Or)=>{var Cr=require("stream").Stream;Or.exports=oo;function oo(t){return{ReadStream:e,WriteStream:r};function e(n,i){if(!(this instanceof e))return new e(n,i);Cr.call(this);var o=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,i=i||{};for(var s=Object.keys(i),c=0,m=s.length;c<m;c++){var d=s[c];this[d]=i[d]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){o._read()});return}t.open(this.path,this.flags,this.mode,function(a,p){if(a){o.emit("error",a),o.readable=!1;return}o.fd=p,o.emit("open",p),o._read()})}function r(n,i){if(!(this instanceof r))return new r(n,i);Cr.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,i=i||{};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var m=o[s];this[m]=i[m]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=t.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var Tr=y((Jc,Fr)=>{"use strict";Fr.exports=ao;var so=Object.getPrototypeOf||function(t){return t.__proto__};function ao(t){if(t===null||typeof t!="object")return t;if(t instanceof Object)var e={__proto__:so(t)};else var e=Object.create(null);return Object.getOwnPropertyNames(t).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}});var de=y((Wc,Vt)=>{var D=require("fs"),co=Er(),lo=jr(),uo=Tr(),Ze=require("util"),V,tt;typeof Symbol=="function"&&typeof Symbol.for=="function"?(V=Symbol.for("graceful-fs.queue"),tt=Symbol.for("graceful-fs.previous")):(V="___graceful-fs.queue",tt="___graceful-fs.previous");function po(){}function Ar(t,e){Object.defineProperty(t,V,{get:function(){return e}})}var se=po;Ze.debuglog?se=Ze.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(se=function(){var t=Ze.format.apply(Ze,arguments);t="GFS4: "+t.split(/\n/).join(`
3
+ GFS4: `),console.error(t)});D[V]||(kr=global[V]||[],Ar(D,kr),D.close=(function(t){function e(r,n){return t.call(D,r,function(i){i||Vr(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(e,tt,{value:t}),e})(D.close),D.closeSync=(function(t){function e(r){t.apply(D,arguments),Vr()}return Object.defineProperty(e,tt,{value:t}),e})(D.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){se(D[V]),require("assert").equal(D[V].length,0)}));var kr;global[V]||Ar(global,D[V]);Vt.exports=Tt(uo(D));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!D.__patched&&(Vt.exports=Tt(D),D.__patched=!0);function Tt(t){co(t),t.gracefulify=Tt,t.createReadStream=Qt,t.createWriteStream=zt;var e=t.readFile;t.readFile=r;function r(h,w,S){return typeof w=="function"&&(S=w,w=null),F(h,w,S);function F(T,C,L,E){return e(T,C,function(b){b&&(b.code==="EMFILE"||b.code==="ENFILE")?fe([F,[T,C,L],b,E||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var n=t.writeFile;t.writeFile=i;function i(h,w,S,F){return typeof S=="function"&&(F=S,S=null),T(h,w,S,F);function T(C,L,E,b,k){return n(C,L,E,function(x){x&&(x.code==="EMFILE"||x.code==="ENFILE")?fe([T,[C,L,E,b],x,k||Date.now(),Date.now()]):typeof b=="function"&&b.apply(this,arguments)})}}var o=t.appendFile;o&&(t.appendFile=s);function s(h,w,S,F){return typeof S=="function"&&(F=S,S=null),T(h,w,S,F);function T(C,L,E,b,k){return o(C,L,E,function(x){x&&(x.code==="EMFILE"||x.code==="ENFILE")?fe([T,[C,L,E,b],x,k||Date.now(),Date.now()]):typeof b=="function"&&b.apply(this,arguments)})}}var c=t.copyFile;c&&(t.copyFile=m);function m(h,w,S,F){return typeof S=="function"&&(F=S,S=0),T(h,w,S,F);function T(C,L,E,b,k){return c(C,L,E,function(x){x&&(x.code==="EMFILE"||x.code==="ENFILE")?fe([T,[C,L,E,b],x,k||Date.now(),Date.now()]):typeof b=="function"&&b.apply(this,arguments)})}}var d=t.readdir;t.readdir=p;var a=/^v[0-5]\./;function p(h,w,S){typeof w=="function"&&(S=w,w=null);var F=a.test(process.version)?function(L,E,b,k){return d(L,T(L,E,b,k))}:function(L,E,b,k){return d(L,E,T(L,E,b,k))};return F(h,w,S);function T(C,L,E,b){return function(k,x){k&&(k.code==="EMFILE"||k.code==="ENFILE")?fe([F,[C,L,E],k,b||Date.now(),Date.now()]):(x&&x.sort&&x.sort(),typeof E=="function"&&E.call(this,k,x))}}}if(process.version.substr(0,4)==="v0.8"){var l=lo(t);P=l.ReadStream,I=l.WriteStream}var u=t.ReadStream;u&&(P.prototype=Object.create(u.prototype),P.prototype.open=$);var f=t.WriteStream;f&&(I.prototype=Object.create(f.prototype),I.prototype.open=ve),Object.defineProperty(t,"ReadStream",{get:function(){return P},set:function(h){P=h},enumerable:!0,configurable:!0}),Object.defineProperty(t,"WriteStream",{get:function(){return I},set:function(h){I=h},enumerable:!0,configurable:!0});var g=P;Object.defineProperty(t,"FileReadStream",{get:function(){return g},set:function(h){g=h},enumerable:!0,configurable:!0});var v=I;Object.defineProperty(t,"FileWriteStream",{get:function(){return v},set:function(h){v=h},enumerable:!0,configurable:!0});function P(h,w){return this instanceof P?(u.apply(this,arguments),this):P.apply(Object.create(P.prototype),arguments)}function $(){var h=this;yt(h.path,h.flags,h.mode,function(w,S){w?(h.autoClose&&h.destroy(),h.emit("error",w)):(h.fd=S,h.emit("open",S),h.read())})}function I(h,w){return this instanceof I?(f.apply(this,arguments),this):I.apply(Object.create(I.prototype),arguments)}function ve(){var h=this;yt(h.path,h.flags,h.mode,function(w,S){w?(h.destroy(),h.emit("error",w)):(h.fd=S,h.emit("open",S))})}function Qt(h,w){return new t.ReadStream(h,w)}function zt(h,w){return new t.WriteStream(h,w)}var Ai=t.open;t.open=yt;function yt(h,w,S,F){return typeof S=="function"&&(F=S,S=null),T(h,w,S,F);function T(C,L,E,b,k){return Ai(C,L,E,function(x,xa){x&&(x.code==="EMFILE"||x.code==="ENFILE")?fe([T,[C,L,E,b],x,k||Date.now(),Date.now()]):typeof b=="function"&&b.apply(this,arguments)})}}return t}function fe(t){se("ENQUEUE",t[0].name,t[1]),D[V].push(t),kt()}var et;function Vr(){for(var t=Date.now(),e=0;e<D[V].length;++e)D[V][e].length>2&&(D[V][e][3]=t,D[V][e][4]=t);kt()}function kt(){if(clearTimeout(et),et=void 0,D[V].length!==0){var t=D[V].shift(),e=t[0],r=t[1],n=t[2],i=t[3],o=t[4];if(i===void 0)se("RETRY",e.name,r),e.apply(null,r);else if(Date.now()-i>=6e4){se("TIMEOUT",e.name,r);var s=r.pop();typeof s=="function"&&s.call(null,n)}else{var c=Date.now()-o,m=Math.max(o-i,1),d=Math.min(m*1.2,100);c>=d?(se("RETRY",e.name,r),e.apply(null,r.concat([i]))):D[V].push(t)}et===void 0&&(et=setTimeout(kt,0))}}});var M=y(Q=>{"use strict";var Ir=O().fromCallback,R=de(),mo=["access","appendFile","chmod","chown","close","copyFile","cp","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","glob","lchmod","lchown","lutimes","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","statfs","symlink","truncate","unlink","utimes","writeFile"].filter(t=>typeof R[t]=="function");Object.assign(Q,R);mo.forEach(t=>{Q[t]=Ir(R[t])});Q.exists=function(t,e){return typeof e=="function"?R.exists(t,e):new Promise(r=>R.exists(t,r))};Q.read=function(t,e,r,n,i,o){return typeof o=="function"?R.read(t,e,r,n,i,o):new Promise((s,c)=>{R.read(t,e,r,n,i,(m,d,a)=>{if(m)return c(m);s({bytesRead:d,buffer:a})})})};Q.write=function(t,e,...r){return typeof r[r.length-1]=="function"?R.write(t,e,...r):new Promise((n,i)=>{R.write(t,e,...r,(o,s,c)=>{if(o)return i(o);n({bytesWritten:s,buffer:c})})})};Q.readv=function(t,e,...r){return typeof r[r.length-1]=="function"?R.readv(t,e,...r):new Promise((n,i)=>{R.readv(t,e,...r,(o,s,c)=>{if(o)return i(o);n({bytesRead:s,buffers:c})})})};Q.writev=function(t,e,...r){return typeof r[r.length-1]=="function"?R.writev(t,e,...r):new Promise((n,i)=>{R.writev(t,e,...r,(o,s,c)=>{if(o)return i(o);n({bytesWritten:s,buffers:c})})})};typeof R.realpath.native=="function"?Q.realpath.native=Ir(R.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var Mr=y((Hc,Rr)=>{"use strict";var fo=require("path");Rr.exports.checkPath=function(e){if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(fo.parse(e).root,""))){let n=new Error(`Path contains invalid characters: ${e}`);throw n.code="EINVAL",n}}});var Br=y((Kc,At)=>{"use strict";var Nr=M(),{checkPath:_r}=Mr(),$r=t=>{let e={mode:511};return typeof t=="number"?t:{...e,...t}.mode};At.exports.makeDir=async(t,e)=>(_r(t),Nr.mkdir(t,{mode:$r(e),recursive:!0}));At.exports.makeDirSync=(t,e)=>(_r(t),Nr.mkdirSync(t,{mode:$r(e),recursive:!0}))});var q=y((Qc,Ur)=>{"use strict";var ho=O().fromPromise,{makeDir:yo,makeDirSync:It}=Br(),Rt=ho(yo);Ur.exports={mkdirs:Rt,mkdirsSync:It,mkdirp:Rt,mkdirpSync:It,ensureDir:Rt,ensureDirSync:It}});var te=y((zc,Xr)=>{"use strict";var go=O().fromPromise,qr=M();function So(t){return qr.access(t).then(()=>!0).catch(()=>!1)}Xr.exports={pathExists:go(So),pathExistsSync:qr.existsSync}});var Mt=y((Yc,Jr)=>{"use strict";var he=M(),vo=O().fromPromise;async function wo(t,e,r){let n=await he.open(t,"r+"),i=null;try{await he.futimes(n,e,r)}finally{try{await he.close(n)}catch(o){i=o}}if(i)throw i}function bo(t,e,r){let n=he.openSync(t,"r+");return he.futimesSync(n,e,r),he.closeSync(n)}Jr.exports={utimesMillis:vo(wo),utimesMillisSync:bo}});var ae=y((Zc,Kr)=>{"use strict";var ye=M(),j=require("path"),Wr=O().fromPromise;function xo(t,e,r){let n=r.dereference?i=>ye.stat(i,{bigint:!0}):i=>ye.lstat(i,{bigint:!0});return Promise.all([n(t),n(e).catch(i=>{if(i.code==="ENOENT")return null;throw i})]).then(([i,o])=>({srcStat:i,destStat:o}))}function Po(t,e,r){let n,i=r.dereference?s=>ye.statSync(s,{bigint:!0}):s=>ye.lstatSync(s,{bigint:!0}),o=i(t);try{n=i(e)}catch(s){if(s.code==="ENOENT")return{srcStat:o,destStat:null};throw s}return{srcStat:o,destStat:n}}async function Lo(t,e,r,n){let{srcStat:i,destStat:o}=await xo(t,e,n);if(o){if(Pe(i,o)){let s=j.basename(t),c=j.basename(e);if(r==="move"&&s!==c&&s.toLowerCase()===c.toLowerCase())return{srcStat:i,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(i.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${e}' with directory '${t}'.`);if(!i.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${e}' with non-directory '${t}'.`)}if(i.isDirectory()&&Nt(t,e))throw new Error(rt(t,e,r));return{srcStat:i,destStat:o}}function Do(t,e,r,n){let{srcStat:i,destStat:o}=Po(t,e,n);if(o){if(Pe(i,o)){let s=j.basename(t),c=j.basename(e);if(r==="move"&&s!==c&&s.toLowerCase()===c.toLowerCase())return{srcStat:i,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(i.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${e}' with directory '${t}'.`);if(!i.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${e}' with non-directory '${t}'.`)}if(i.isDirectory()&&Nt(t,e))throw new Error(rt(t,e,r));return{srcStat:i,destStat:o}}async function Gr(t,e,r,n){let i=j.resolve(j.dirname(t)),o=j.resolve(j.dirname(r));if(o===i||o===j.parse(o).root)return;let s;try{s=await ye.stat(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(Pe(e,s))throw new Error(rt(t,r,n));return Gr(t,e,o,n)}function Hr(t,e,r,n){let i=j.resolve(j.dirname(t)),o=j.resolve(j.dirname(r));if(o===i||o===j.parse(o).root)return;let s;try{s=ye.statSync(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(Pe(e,s))throw new Error(rt(t,r,n));return Hr(t,e,o,n)}function Pe(t,e){return e.ino!==void 0&&e.dev!==void 0&&e.ino===t.ino&&e.dev===t.dev}function Nt(t,e){let r=j.resolve(t).split(j.sep).filter(i=>i),n=j.resolve(e).split(j.sep).filter(i=>i);return r.every((i,o)=>n[o]===i)}function rt(t,e,r){return`Cannot ${r} '${t}' to a subdirectory of itself, '${e}'.`}Kr.exports={checkPaths:Wr(Lo),checkPathsSync:Do,checkParentPaths:Wr(Gr),checkParentPathsSync:Hr,isSrcSubdir:Nt,areIdentical:Pe}});var zr=y((el,Qr)=>{"use strict";async function Eo(t,e){let r=[];for await(let n of t)r.push(e(n).then(()=>null,i=>i??new Error("unknown error")));await Promise.all(r.map(n=>n.then(i=>{if(i!==null)throw i})))}Qr.exports={asyncIteratorConcurrentProcess:Eo}});var rn=y((tl,tn)=>{"use strict";var A=M(),Le=require("path"),{mkdirs:Co}=q(),{pathExists:Oo}=te(),{utimesMillis:jo}=Mt(),De=ae(),{asyncIteratorConcurrentProcess:Fo}=zr();async function To(t,e,r={}){typeof r=="function"&&(r={filter:r}),r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
4
4
 
5
- see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat:n,destStat:i}=await we.checkPaths(t,e,"copy",r);if(await we.checkParentPaths(t,n,e,"copy"),!await yr(t,e,r))return;let s=ve.dirname(e);await Hi(s)||await Wi(s),await hr(i,t,e,r)}async function yr(t,e,r){return r.filter?r.filter(t,e):!0}async function hr(t,e,r,n){let o=await(n.dereference?V.stat:V.lstat)(e);if(o.isDirectory())return to(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return zi(o,t,e,r,n);if(o.isSymbolicLink())return ro(t,e,r,n);throw o.isSocket()?new Error(`Cannot copy a socket file: ${e}`):o.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${e}`):new Error(`Unknown file: ${e}`)}async function zi(t,e,r,n,i){if(!e)return dr(t,r,n,i);if(i.overwrite)return await V.unlink(n),dr(t,r,n,i);if(i.errorOnExist)throw new Error(`'${n}' already exists`)}async function dr(t,e,r,n){if(await V.copyFile(e,r),n.preserveTimestamps){Zi(t.mode)&&await eo(r,t.mode);let i=await V.stat(e);await Yi(r,i.atime,i.mtime)}return V.chmod(r,t.mode)}function Zi(t){return(t&128)===0}function eo(t,e){return V.chmod(t,e|128)}async function to(t,e,r,n,i){e||await V.mkdir(n),await Qi(await V.opendir(r),async o=>{let s=ve.join(r,o.name),c=ve.join(n,o.name);if(await yr(s,c,i)){let{destStat:f}=await we.checkPaths(s,c,"copy",i);await hr(f,s,c,i)}}),e||await V.chmod(n,t.mode)}async function ro(t,e,r,n){let i=await V.readlink(e);if(n.dereference&&(i=ve.resolve(process.cwd(),i)),!t)return V.symlink(i,r);let o=null;try{o=await V.readlink(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return V.symlink(i,r);throw s}if(n.dereference&&(o=ve.resolve(process.cwd(),o)),we.isSrcSubdir(i,o))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${o}'.`);if(we.isSrcSubdir(o,i))throw new Error(`Cannot overwrite '${o}' with '${i}'.`);return await V.unlink(r),V.symlink(i,r)}Sr.exports=Ki});var Pr=g((Xa,xr)=>{"use strict";var _=fe(),be=require("path"),no=W().mkdirsSync,io=gt().utimesMillisSync,xe=ce();function oo(t,e,r){typeof r=="function"&&(r={filter:r}),r=r||{},r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
5
+ see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat:n,destStat:i}=await De.checkPaths(t,e,"copy",r);if(await De.checkParentPaths(t,n,e,"copy"),!await Zr(t,e,r))return;let s=Le.dirname(e);await Oo(s)||await Co(s),await en(i,t,e,r)}async function Zr(t,e,r){return r.filter?r.filter(t,e):!0}async function en(t,e,r,n){let o=await(n.dereference?A.stat:A.lstat)(e);if(o.isDirectory())return Io(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return ko(o,t,e,r,n);if(o.isSymbolicLink())return Ro(t,e,r,n);throw o.isSocket()?new Error(`Cannot copy a socket file: ${e}`):o.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${e}`):new Error(`Unknown file: ${e}`)}async function ko(t,e,r,n,i){if(!e)return Yr(t,r,n,i);if(i.overwrite)return await A.unlink(n),Yr(t,r,n,i);if(i.errorOnExist)throw new Error(`'${n}' already exists`)}async function Yr(t,e,r,n){if(await A.copyFile(e,r),n.preserveTimestamps){Vo(t.mode)&&await Ao(r,t.mode);let i=await A.stat(e);await jo(r,i.atime,i.mtime)}return A.chmod(r,t.mode)}function Vo(t){return(t&128)===0}function Ao(t,e){return A.chmod(t,e|128)}async function Io(t,e,r,n,i){e||await A.mkdir(n),await Fo(await A.opendir(r),async o=>{let s=Le.join(r,o.name),c=Le.join(n,o.name);if(await Zr(s,c,i)){let{destStat:d}=await De.checkPaths(s,c,"copy",i);await en(d,s,c,i)}}),e||await A.chmod(n,t.mode)}async function Ro(t,e,r,n){let i=await A.readlink(e);if(n.dereference&&(i=Le.resolve(process.cwd(),i)),!t)return A.symlink(i,r);let o=null;try{o=await A.readlink(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return A.symlink(i,r);throw s}if(n.dereference&&(o=Le.resolve(process.cwd(),o)),De.isSrcSubdir(i,o))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${o}'.`);if(De.isSrcSubdir(o,i))throw new Error(`Cannot overwrite '${o}' with '${i}'.`);return await A.unlink(r),A.symlink(i,r)}tn.exports=To});var cn=y((rl,an)=>{"use strict";var N=de(),Ee=require("path"),Mo=q().mkdirsSync,No=Mt().utimesMillisSync,Ce=ae();function _o(t,e,r){typeof r=="function"&&(r={filter:r}),r=r||{},r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
6
6
 
7
- see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0002");let{srcStat:n,destStat:i}=xe.checkPathsSync(t,e,"copy",r);if(xe.checkParentPathsSync(t,n,e,"copy"),r.filter&&!r.filter(t,e))return;let o=be.dirname(e);return _.existsSync(o)||no(o),vr(i,t,e,r)}function vr(t,e,r,n){let o=(n.dereference?_.statSync:_.lstatSync)(e);if(o.isDirectory())return mo(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return so(o,t,e,r,n);if(o.isSymbolicLink())return ho(t,e,r,n);throw o.isSocket()?new Error(`Cannot copy a socket file: ${e}`):o.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${e}`):new Error(`Unknown file: ${e}`)}function so(t,e,r,n,i){return e?ao(t,r,n,i):wr(t,r,n,i)}function ao(t,e,r,n){if(n.overwrite)return _.unlinkSync(r),wr(t,e,r,n);if(n.errorOnExist)throw new Error(`'${r}' already exists`)}function wr(t,e,r,n){return _.copyFileSync(e,r),n.preserveTimestamps&&co(t.mode,e,r),wt(r,t.mode)}function co(t,e,r){return lo(t)&&uo(r,t),fo(e,r)}function lo(t){return(t&128)===0}function uo(t,e){return wt(t,e|128)}function wt(t,e){return _.chmodSync(t,e)}function fo(t,e){let r=_.statSync(t);return io(e,r.atime,r.mtime)}function mo(t,e,r,n,i){return e?br(r,n,i):po(t.mode,r,n,i)}function po(t,e,r,n){return _.mkdirSync(r),br(e,r,n),wt(r,t)}function br(t,e,r){let n=_.opendirSync(t);try{let i;for(;(i=n.readSync())!==null;)yo(i.name,t,e,r)}finally{n.closeSync()}}function yo(t,e,r,n){let i=be.join(e,t),o=be.join(r,t);if(n.filter&&!n.filter(i,o))return;let{destStat:s}=xe.checkPathsSync(i,o,"copy",n);return vr(s,i,o,n)}function ho(t,e,r,n){let i=_.readlinkSync(e);if(n.dereference&&(i=be.resolve(process.cwd(),i)),t){let o;try{o=_.readlinkSync(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return _.symlinkSync(i,r);throw s}if(n.dereference&&(o=be.resolve(process.cwd(),o)),xe.isSrcSubdir(i,o))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${o}'.`);if(xe.isSrcSubdir(o,i))throw new Error(`Cannot overwrite '${o}' with '${i}'.`);return So(i,r)}else return _.symlinkSync(i,r)}function So(t,e){return _.unlinkSync(e),_.symlinkSync(t,e)}xr.exports=oo});var Ne=g((Ga,Lr)=>{"use strict";var go=T().fromPromise;Lr.exports={copy:go(gr()),copySync:Pr()}});var Pe=g((Ja,kr)=>{"use strict";var Er=fe(),vo=T().fromCallback;function wo(t,e){Er.rm(t,{recursive:!0,force:!0},e)}function bo(t){Er.rmSync(t,{recursive:!0,force:!0})}kr.exports={remove:vo(wo),removeSync:bo}});var Mr=g((Wa,Fr)=>{"use strict";var xo=T().fromPromise,Cr=$(),Tr=require("path"),jr=W(),Ir=Pe(),Or=xo(async function(e){let r;try{r=await Cr.readdir(e)}catch{return jr.mkdirs(e)}return Promise.all(r.map(n=>Ir.remove(Tr.join(e,n))))});function Dr(t){let e;try{e=Cr.readdirSync(t)}catch{return jr.mkdirsSync(t)}e.forEach(r=>{r=Tr.join(t,r),Ir.removeSync(r)})}Fr.exports={emptyDirSync:Dr,emptydirSync:Dr,emptyDir:Or,emptydir:Or}});var Ar=g((Ha,Vr)=>{"use strict";var Po=T().fromPromise,Nr=require("path"),Z=$(),Rr=W();async function Lo(t){let e;try{e=await Z.stat(t)}catch{}if(e&&e.isFile())return;let r=Nr.dirname(t),n=null;try{n=await Z.stat(r)}catch(i){if(i.code==="ENOENT"){await Rr.mkdirs(r),await Z.writeFile(t,"");return}else throw i}n.isDirectory()?await Z.writeFile(t,""):await Z.readdir(r)}function Eo(t){let e;try{e=Z.statSync(t)}catch{}if(e&&e.isFile())return;let r=Nr.dirname(t);try{Z.statSync(r).isDirectory()||Z.readdirSync(r)}catch(n){if(n&&n.code==="ENOENT")Rr.mkdirsSync(r);else throw n}Z.writeFileSync(t,"")}Vr.exports={createFile:Po(Lo),createFileSync:Eo}});var Ur=g((Ya,qr)=>{"use strict";var ko=T().fromPromise,$r=require("path"),ne=$(),_r=W(),{pathExists:Oo}=re(),{areIdentical:Br}=ce();async function Do(t,e){let r;try{r=await ne.lstat(e)}catch{}let n;try{n=await ne.lstat(t)}catch(s){throw s.message=s.message.replace("lstat","ensureLink"),s}if(r&&Br(n,r))return;let i=$r.dirname(e);await Oo(i)||await _r.mkdirs(i),await ne.link(t,e)}function Co(t,e){let r;try{r=ne.lstatSync(e)}catch{}try{let o=ne.lstatSync(t);if(r&&Br(o,r))return}catch(o){throw o.message=o.message.replace("lstat","ensureLink"),o}let n=$r.dirname(e);return ne.existsSync(n)||_r.mkdirsSync(n),ne.linkSync(t,e)}qr.exports={createLink:ko(Do),createLinkSync:Co}});var Gr=g((Qa,Xr)=>{"use strict";var ie=require("path"),Le=$(),{pathExists:To}=re(),jo=T().fromPromise;async function Io(t,e){if(ie.isAbsolute(t)){try{await Le.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:t}}let r=ie.dirname(e),n=ie.join(r,t);if(await To(n))return{toCwd:n,toDst:t};try{await Le.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:ie.relative(r,t)}}function Fo(t,e){if(ie.isAbsolute(t)){if(!Le.existsSync(t))throw new Error("absolute srcpath does not exist");return{toCwd:t,toDst:t}}let r=ie.dirname(e),n=ie.join(r,t);if(Le.existsSync(n))return{toCwd:n,toDst:t};if(!Le.existsSync(t))throw new Error("relative srcpath does not exist");return{toCwd:t,toDst:ie.relative(r,t)}}Xr.exports={symlinkPaths:jo(Io),symlinkPathsSync:Fo}});var Hr=g((Ka,Wr)=>{"use strict";var Jr=$(),Mo=T().fromPromise;async function No(t,e){if(e)return e;let r;try{r=await Jr.lstat(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}function Ro(t,e){if(e)return e;let r;try{r=Jr.lstatSync(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}Wr.exports={symlinkType:Mo(No),symlinkTypeSync:Ro}});var zr=g((za,Kr)=>{"use strict";var Vo=T().fromPromise,Yr=require("path"),H=$(),{mkdirs:Ao,mkdirsSync:$o}=W(),{symlinkPaths:_o,symlinkPathsSync:Bo}=Gr(),{symlinkType:qo,symlinkTypeSync:Uo}=Hr(),{pathExists:Xo}=re(),{areIdentical:Qr}=ce();async function Go(t,e,r){let n;try{n=await H.lstat(e)}catch{}if(n&&n.isSymbolicLink()){let[c,p]=await Promise.all([H.stat(t),H.stat(e)]);if(Qr(c,p))return}let i=await _o(t,e);t=i.toDst;let o=await qo(i.toCwd,r),s=Yr.dirname(e);return await Xo(s)||await Ao(s),H.symlink(t,e,o)}function Jo(t,e,r){let n;try{n=H.lstatSync(e)}catch{}if(n&&n.isSymbolicLink()){let c=H.statSync(t),p=H.statSync(e);if(Qr(c,p))return}let i=Bo(t,e);t=i.toDst,r=Uo(i.toCwd,r);let o=Yr.dirname(e);return H.existsSync(o)||$o(o),H.symlinkSync(t,e,r)}Kr.exports={createSymlink:Vo(Go),createSymlinkSync:Jo}});var an=g((Za,sn)=>{"use strict";var{createFile:Zr,createFileSync:en}=Ar(),{createLink:tn,createLinkSync:rn}=Ur(),{createSymlink:nn,createSymlinkSync:on}=zr();sn.exports={createFile:Zr,createFileSync:en,ensureFile:Zr,ensureFileSync:en,createLink:tn,createLinkSync:rn,ensureLink:tn,ensureLinkSync:rn,createSymlink:nn,createSymlinkSync:on,ensureSymlink:nn,ensureSymlinkSync:on}});var Re=g((ec,cn)=>{function Wo(t,{EOL:e=`
8
- `,finalEOL:r=!0,replacer:n=null,spaces:i}={}){let o=r?e:"";return JSON.stringify(t,n,i).replace(/\n/g,e)+o}function Ho(t){return Buffer.isBuffer(t)&&(t=t.toString("utf8")),t.replace(/^\uFEFF/,"")}cn.exports={stringify:Wo,stripBom:Ho}});var mn=g((tc,fn)=>{var de;try{de=fe()}catch{de=require("fs")}var Ve=T(),{stringify:ln,stripBom:un}=Re();async function Yo(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||de,n="throws"in e?e.throws:!0,i=await Ve.fromCallback(r.readFile)(t,e);i=un(i);let o;try{o=JSON.parse(i,e?e.reviver:null)}catch(s){if(n)throw s.message=`${t}: ${s.message}`,s;return null}return o}var Qo=Ve.fromPromise(Yo);function Ko(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||de,n="throws"in e?e.throws:!0;try{let i=r.readFileSync(t,e);return i=un(i),JSON.parse(i,e.reviver)}catch(i){if(n)throw i.message=`${t}: ${i.message}`,i;return null}}async function zo(t,e,r={}){let n=r.fs||de,i=ln(e,r);await Ve.fromCallback(n.writeFile)(t,i,r)}var Zo=Ve.fromPromise(zo);function es(t,e,r={}){let n=r.fs||de,i=ln(e,r);return n.writeFileSync(t,i,r)}fn.exports={readFile:Qo,readFileSync:Ko,writeFile:Zo,writeFileSync:es}});var dn=g((rc,pn)=>{"use strict";var Ae=mn();pn.exports={readJson:Ae.readFile,readJsonSync:Ae.readFileSync,writeJson:Ae.writeFile,writeJsonSync:Ae.writeFileSync}});var $e=g((nc,Sn)=>{"use strict";var ts=T().fromPromise,bt=$(),yn=require("path"),hn=W(),rs=re().pathExists;async function ns(t,e,r="utf-8"){let n=yn.dirname(t);return await rs(n)||await hn.mkdirs(n),bt.writeFile(t,e,r)}function is(t,...e){let r=yn.dirname(t);bt.existsSync(r)||hn.mkdirsSync(r),bt.writeFileSync(t,...e)}Sn.exports={outputFile:ts(ns),outputFileSync:is}});var vn=g((ic,gn)=>{"use strict";var{stringify:os}=Re(),{outputFile:ss}=$e();async function as(t,e,r={}){let n=os(e,r);await ss(t,n,r)}gn.exports=as});var bn=g((oc,wn)=>{"use strict";var{stringify:cs}=Re(),{outputFileSync:ls}=$e();function us(t,e,r){let n=cs(e,r);ls(t,n,r)}wn.exports=us});var Pn=g((sc,xn)=>{"use strict";var fs=T().fromPromise,B=dn();B.outputJson=fs(vn());B.outputJsonSync=bn();B.outputJSON=B.outputJson;B.outputJSONSync=B.outputJsonSync;B.writeJSON=B.writeJson;B.writeJSONSync=B.writeJsonSync;B.readJSON=B.readJson;B.readJSONSync=B.readJsonSync;xn.exports=B});var Dn=g((ac,On)=>{"use strict";var ms=$(),Ln=require("path"),{copy:ps}=Ne(),{remove:kn}=Pe(),{mkdirp:ds}=W(),{pathExists:ys}=re(),En=ce();async function hs(t,e,r={}){let n=r.overwrite||r.clobber||!1,{srcStat:i,isChangingCase:o=!1}=await En.checkPaths(t,e,"move",r);await En.checkParentPaths(t,i,e,"move");let s=Ln.dirname(e);return Ln.parse(s).root!==s&&await ds(s),Ss(t,e,n,o)}async function Ss(t,e,r,n){if(!n){if(r)await kn(e);else if(await ys(e))throw new Error("dest already exists.")}try{await ms.rename(t,e)}catch(i){if(i.code!=="EXDEV")throw i;await gs(t,e,r)}}async function gs(t,e,r){return await ps(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),kn(t)}On.exports=hs});var Fn=g((cc,In)=>{"use strict";var Tn=fe(),Pt=require("path"),vs=Ne().copySync,jn=Pe().removeSync,ws=W().mkdirpSync,Cn=ce();function bs(t,e,r){r=r||{};let n=r.overwrite||r.clobber||!1,{srcStat:i,isChangingCase:o=!1}=Cn.checkPathsSync(t,e,"move",r);return Cn.checkParentPathsSync(t,i,e,"move"),xs(e)||ws(Pt.dirname(e)),Ps(t,e,n,o)}function xs(t){let e=Pt.dirname(t);return Pt.parse(e).root===e}function Ps(t,e,r,n){if(n)return xt(t,e,r);if(r)return jn(e),xt(t,e,r);if(Tn.existsSync(e))throw new Error("dest already exists.");return xt(t,e,r)}function xt(t,e,r){try{Tn.renameSync(t,e)}catch(n){if(n.code!=="EXDEV")throw n;return Ls(t,e,r)}}function Ls(t,e,r){return vs(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),jn(t)}In.exports=bs});var Nn=g((lc,Mn)=>{"use strict";var Es=T().fromPromise;Mn.exports={move:Es(Dn()),moveSync:Fn()}});var Vn=g((uc,Rn)=>{"use strict";Rn.exports={...$(),...Ne(),...Mr(),...an(),...Pn(),...W(),...Nn(),...$e(),...re(),...Pe()}});var An=g(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.EXTENSIONS_LANGUAGES=void 0;_e.EXTENSIONS_LANGUAGES={1:"Groff",2:"Groff",3:"Groff",4:"Groff",5:"Groff",6:"Groff",7:"Groff",8:"Groff",9:"Groff",abap:"ABAP",asc:"Public Key",ash:"AGS Script",ampl:"AMPL",mod:"XML",g4:"ANTLR",apib:"API Blueprint",apl:"APL",dyalog:"APL",asp:"ASP",asax:"ASP",ascx:"ASP",ashx:"ASP",asmx:"ASP",aspx:"ASP",axd:"ASP",dats:"ATS",hats:"ATS",sats:"ATS",as:"ActionScript",adb:"Ada",ada:"Ada",ads:"Ada",agda:"Agda",als:"Alloy",apacheconf:"ApacheConf",vhost:"Nginx",cls:"Visual Basic",applescript:"AppleScript",scpt:"AppleScript",arc:"Arc",ino:"Arduino",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aj:"AspectJ",asm:"Assembly",a51:"Assembly",inc:"SourcePawn",nasm:"Assembly",aug:"Augeas",ahk:"AutoHotkey",ahkl:"AutoHotkey",au3:"AutoIt",awk:"Awk",auk:"Awk",gawk:"Awk",mawk:"Awk",nawk:"Awk",bat:"Batchfile",cmd:"Batchfile",befunge:"Befunge",bison:"Bison",bb:"BlitzBasic",decls:"BlitzBasic",bmx:"BlitzMax",bsv:"Bluespec",boo:"Boo",b:"Limbo",bf:"HyPhy",brs:"Brightscript",bro:"Bro",c:"C",cats:"C",h:"Objective-C",idc:"C",w:"C",cs:"Smalltalk",cake:"CoffeeScript",cshtml:"C#",csx:"C#",cpp:"C++","c++":"C++",cc:"C++",cp:"Component Pascal",cxx:"C++","h++":"C++",hh:"Hack",hpp:"C++",hxx:"C++",inl:"C++",ipp:"C++",tcc:"C++",tpp:"C++","c-objdump":"C-ObjDump",chs:"C2hs Haskell",clp:"CLIPS",cmake:"CMake","cmake.in":"CMake",cob:"COBOL",cbl:"COBOL",ccp:"COBOL",cobol:"COBOL",cpy:"COBOL",css:"CSS",csv:"CSV",capnp:"Cap'n Proto",mss:"CartoCSS",ceylon:"Ceylon",chpl:"Chapel",ch:"xBase",ck:"ChucK",cirru:"Cirru",clw:"Clarion",icl:"Clean",dcl:"Clean",click:"Click",clj:"Clojure",boot:"Clojure",cl2:"Clojure",cljc:"Clojure",cljs:"Clojure","cljs.hl":"Clojure",cljscm:"Clojure",cljx:"Clojure",hic:"Clojure",coffee:"CoffeeScript",_coffee:"CoffeeScript",cjsx:"CoffeeScript",cson:"CoffeeScript",iced:"CoffeeScript",cfm:"ColdFusion",cfml:"ColdFusion",cfc:"ColdFusion CFC",lisp:"NewLisp",asd:"Common Lisp",cl:"OpenCL",l:"PicoLisp",lsp:"NewLisp",ny:"Common Lisp",podsl:"Common Lisp",sexp:"Common Lisp",cps:"Component Pascal",coq:"Coq",v:"Verilog",cppobjdump:"Cpp-ObjDump","c++-objdump":"Cpp-ObjDump","c++objdump":"Cpp-ObjDump","cpp-objdump":"Cpp-ObjDump","cxx-objdump":"Cpp-ObjDump",creole:"Creole",cr:"Crystal",feature:"Cucumber",cu:"Cuda",cuh:"Cuda",cy:"Cycript",pyx:"Cython",pxd:"Cython",pxi:"Cython",d:"Makefile",di:"D","d-objdump":"D-ObjDump",com:"DIGITAL Command Language",dm:"DM",zone:"DNS Zone",arpa:"DNS Zone",darcspatch:"Darcs Patch",dpatch:"Darcs Patch",dart:"Dart",diff:"Diff",patch:"Diff",dockerfile:"Dockerfile",djs:"Dogescript",dylan:"Dylan",dyl:"Dylan",intr:"Dylan",lid:"Dylan",E:"E",ecl:"ECLiPSe",eclxml:"ECL",sch:"KiCad",brd:"KiCad",epj:"Ecere Projects",e:"Eiffel",ex:"Elixir",exs:"Elixir",elm:"Elm",el:"Emacs Lisp",emacs:"Emacs Lisp","emacs.desktop":"Emacs Lisp",em:"EmberScript",emberscript:"EmberScript",erl:"Erlang",es:"JavaScript",escript:"Erlang",hrl:"Erlang",xrl:"Erlang",yrl:"Erlang",fs:"GLSL",fsi:"F#",fsx:"F#",fx:"HLSL",flux:"FLUX",f90:"FORTRAN",f:"Forth",f03:"FORTRAN",f08:"FORTRAN",f77:"FORTRAN",f95:"FORTRAN",for:"Forth",fpp:"FORTRAN",factor:"Factor",fy:"Fancy",fancypack:"Fancy",fan:"Fantom","eam.fs":"Formatted",fth:"Forth","4th":"Forth",forth:"Forth",fr:"Text",frt:"Forth",ftl:"FreeMarker",g:"GAP",gco:"G-code",gcode:"G-code",gms:"GAMS",gap:"GAP",gd:"GDScript",gi:"GAP",tst:"Scilab",s:"GAS",ms:"MAXScript",glsl:"GLSL",fp:"GLSL",frag:"JavaScript",frg:"GLSL",fsh:"GLSL",fshader:"GLSL",geo:"GLSL",geom:"GLSL",glslv:"GLSL",gshader:"GLSL",shader:"GLSL",vert:"GLSL",vrx:"GLSL",vsh:"GLSL",vshader:"GLSL",gml:"XML",kid:"Genshi",ebuild:"Gentoo Ebuild",eclass:"Gentoo Eclass",po:"Gettext Catalog",pot:"Gettext Catalog",glf:"Glyph",gp:"Gnuplot",gnu:"Gnuplot",gnuplot:"Gnuplot",plot:"Gnuplot",plt:"Gnuplot",go:"Go",golo:"Golo",gs:"JavaScript",gst:"Gosu",gsx:"Gosu",vark:"Gosu",grace:"Grace",gradle:"Gradle",gf:"Grammatical Framework",graphql:"GraphQL",dot:"Graphviz (DOT)",gv:"Graphviz (DOT)",man:"Groff","1in":"Groff","1m":"Groff","1x":"Groff","3in":"Groff","3m":"Groff","3qt":"Groff","3x":"Groff",me:"Groff",n:"Nemerle",rno:"Groff",roff:"Groff",groovy:"Groovy",grt:"Groovy",gtpl:"Groovy",gvy:"Groovy",gsp:"Groovy Server Pages",hcl:"HCL",tf:"HCL",hlsl:"HLSL",fxh:"HLSL",hlsli:"HLSL",html:"HTML",htm:"HTML","html.hl":"HTML",st:"Smalltalk",xht:"HTML",xhtml:"HTML",mustache:"HTML+Django",jinja:"HTML+Django",eex:"HTML+EEX",erb:"HTML+ERB","erb.deface":"HTML+ERB",phtml:"HTML+PHP",http:"HTTP",php:"PHP",haml:"Haml","haml.deface":"Haml",handlebars:"Handlebars",hbs:"Handlebars",hb:"Harbour",hs:"Haskell",hsc:"Haskell",hx:"Haxe",hxsl:"Haxe",hy:"Hy",pro:"QMake",dlm:"IDL",ipf:"IGOR Pro",ini:"INI",cfg:"INI",prefs:"INI",properties:"INI",irclog:"IRC log",weechatlog:"IRC log",idr:"Idris",lidr:"Idris",ni:"Inform 7",i7x:"Inform 7",iss:"Inno Setup",io:"Io",ik:"Ioke",thy:"Isabelle",ijs:"J",flex:"JFlex",jflex:"JFlex",json:"JSON",geojson:"JSON",lock:"JSON",topojson:"JSON",json5:"JSON5",jsonld:"JSONLD",jq:"JSONiq",jsx:"JSX",jade:"Jade",j:"Objective-J",java:"Java",jsp:"Java Server Pages",js:"JavaScript",_js:"JavaScript",bones:"JavaScript",es6:"JavaScript",jake:"JavaScript",jsb:"JavaScript",jscad:"JavaScript",jsfl:"JavaScript",jsm:"JavaScript",jss:"JavaScript",njs:"JavaScript",pac:"JavaScript",sjs:"JavaScript",ssjs:"JavaScript","sublime-build":"JavaScript","sublime-commands":"JavaScript","sublime-completions":"JavaScript","sublime-keymap":"JavaScript","sublime-macro":"JavaScript","sublime-menu":"JavaScript","sublime-mousemap":"JavaScript","sublime-project":"JavaScript","sublime-settings":"JavaScript","sublime-theme":"JavaScript","sublime-workspace":"JavaScript",sublime_metrics:"JavaScript",sublime_session:"JavaScript",xsjs:"JavaScript",xsjslib:"JavaScript",jl:"Julia",ipynb:"Jupyter Notebook",krl:"KRL",kicad_pcb:"KiCad",kit:"Kit",kt:"Kotlin",ktm:"Kotlin",kts:"Kotlin",lfe:"LFE",ll:"LLVM",lol:"LOLCODE",lsl:"LSL",lslp:"LSL",lvproj:"LabVIEW",lasso:"Lasso",las:"Lasso",lasso8:"Lasso",lasso9:"Lasso",ldml:"Lasso",latte:"Latte",lean:"Lean",hlean:"Lean",less:"Less",lex:"Lex",ly:"LilyPond",ily:"LilyPond",m:"Objective-C",ld:"Linker Script",lds:"Linker Script",liquid:"Liquid",lagda:"Literate Agda",litcoffee:"Literate CoffeeScript",lhs:"Literate Haskell",ls:"LoomScript",_ls:"LiveScript",xm:"Logos",x:"Logos",xi:"Logos",lgt:"Logtalk",logtalk:"Logtalk",lookml:"LookML",lua:"Lua",fcgi:"Shell",nse:"Lua",pd_lua:"Lua",rbxs:"Lua",wlua:"Lua",mumps:"M",m4:"M4Sugar",mcr:"MAXScript",mtml:"MTML",muf:"MUF",mak:"Makefile",mk:"Makefile",mkfile:"Makefile",mako:"Mako",mao:"Mako",md:"Markdown",markdown:"Markdown",mkd:"Markdown",mkdn:"Markdown",mkdown:"Markdown",ron:"Markdown",mask:"Mask",mathematica:"Mathematica",cdf:"Mathematica",ma:"Mathematica",mt:"Mathematica",nb:"Text",nbp:"Mathematica",wl:"Mathematica",wlt:"Mathematica",matlab:"Matlab",maxpat:"Max",maxhelp:"Max",maxproj:"Max",mxt:"Max",pat:"Max",mediawiki:"MediaWiki",wiki:"MediaWiki",moo:"Moocode",metal:"Metal",minid:"MiniD",druby:"Mirah",duby:"Mirah",mir:"Mirah",mirah:"Mirah",mo:"Modelica",mms:"Module Management System",mmk:"Module Management System",monkey:"Monkey",moon:"MoonScript",myt:"Myghty",ncl:"Text",nl:"NewLisp",nsi:"NSIS",nsh:"NSIS",axs:"NetLinx",axi:"NetLinx","axs.erb":"NetLinx+ERB","axi.erb":"NetLinx+ERB",nlogo:"NetLogo",nginxconf:"Nginx",nim:"Nimrod",nimrod:"Nimrod",ninja:"Ninja",nit:"Nit",nix:"Nix",nu:"Nu",numpy:"NumPy",numpyw:"NumPy",numsc:"NumPy",ml:"OCaml",eliom:"OCaml",eliomi:"OCaml",ml4:"OCaml",mli:"OCaml",mll:"OCaml",mly:"OCaml",objdump:"ObjDump",mm:"XML",sj:"Objective-J",omgrofl:"Omgrofl",opa:"Opa",opal:"Opal",opencl:"OpenCL",p:"OpenEdge ABL",scad:"OpenSCAD",org:"Org",ox:"Ox",oxh:"Ox",oxo:"Ox",oxygene:"Oxygene",oz:"Oz",pwn:"PAWN",aw:"PHP",ctp:"PHP",php3:"PHP",php4:"PHP",php5:"PHP",phps:"PHP",phpt:"PHP",pls:"PLSQL",pck:"PLSQL",pkb:"PLSQL",pks:"PLSQL",plb:"PLSQL",plsql:"PLSQL",sql:"SQLPL",pov:"POV-Ray SDL",pan:"Pan",psc:"Papyrus",parrot:"Parrot",pasm:"Parrot Assembly",pir:"Parrot Internal Representation",pas:"Pascal",dfm:"Pascal",dpr:"Pascal",lpr:"Pascal",pp:"Puppet",pl:"Prolog",al:"Perl",cgi:"Shell",perl:"Perl",ph:"Perl",plx:"Perl",pm:"Perl6",pod:"Pod",psgi:"Perl",t:"Turing","6pl":"Perl6","6pm":"Perl6",nqp:"Perl6",p6:"Perl6",p6l:"Perl6",p6m:"Perl6",pl6:"Perl6",pm6:"Perl6",pkl:"Pickle",pig:"PigLatin",pike:"Pike",pmod:"Pike",pogo:"PogoScript",pony:"Pony",ps:"PostScript",eps:"PostScript",ps1:"PowerShell",psd1:"PowerShell",psm1:"PowerShell",pde:"Processing",prolog:"Prolog",yap:"Prolog",spin:"Propeller Spin",proto:"Protocol Buffer",pub:"Public Key",pd:"Pure Data",pb:"PureBasic",pbi:"PureBasic",purs:"PureScript",py:"Python",bzl:"Python",gyp:"Python",lmi:"Python",pyde:"Python",pyp:"Python",pyt:"Python",pyw:"Python",rpy:"Ren'Py",tac:"Python",wsgi:"Python",xpy:"Python",pytb:"Python traceback",qml:"QML",qbs:"QML",pri:"QMake",r:"Rebol",rd:"R",rsx:"R",raml:"RAML",rdoc:"RDoc",rbbas:"REALbasic",rbfrm:"REALbasic",rbmnu:"REALbasic",rbres:"REALbasic",rbtbar:"REALbasic",rbuistate:"REALbasic",rhtml:"RHTML",rmd:"RMarkdown",rkt:"Racket",rktd:"Racket",rktl:"Racket",scrbl:"Racket",rl:"Ragel in Ruby Host",raw:"Raw token data",reb:"Rebol",r2:"Rebol",r3:"Rebol",rebol:"Rebol",red:"Red",reds:"Red",cw:"Redcode",rs:"Rust",rsh:"RenderScript",robot:"RobotFramework",rg:"Rouge",rb:"Ruby",builder:"Ruby",gemspec:"Ruby",god:"Ruby",irbrc:"Ruby",jbuilder:"Ruby",mspec:"Ruby",pluginspec:"XML",podspec:"Ruby",rabl:"Ruby",rake:"Ruby",rbuild:"Ruby",rbw:"Ruby",rbx:"Ruby",ru:"Ruby",ruby:"Ruby",thor:"Ruby",watchr:"Ruby","rs.in":"Rust",sas:"SAS",scss:"SCSS",smt2:"SMT",smt:"SMT",sparql:"SPARQL",rq:"SPARQL",sqf:"SQF",hqf:"SQF",cql:"SQL",ddl:"SQL",prc:"SQL",tab:"SQL",udf:"SQL",viw:"SQL",db2:"SQLPL",ston:"STON",svg:"SVG",sage:"Sage",sagews:"Sage",sls:"Scheme",sass:"Sass",scala:"Scala",sbt:"Scala",sc:"SuperCollider",scaml:"Scaml",scm:"Scheme",sld:"Scheme",sps:"Scheme",ss:"Scheme",sci:"Scilab",sce:"Scilab",self:"Self",sh:"Shell",bash:"Shell",bats:"Shell",command:"Shell",ksh:"Shell","sh.in":"Shell",tmux:"Shell",tool:"Shell",zsh:"Shell","sh-session":"ShellSession",shen:"Shen",sl:"Slash",slim:"Slim",smali:"Smali",tpl:"Smarty",sp:"SourcePawn",sma:"SourcePawn",nut:"Squirrel",stan:"Stan",ML:"Standard ML",fun:"Standard ML",sig:"Standard ML",sml:"Standard ML",do:"Stata",ado:"Stata",doh:"Stata",ihlp:"Stata",mata:"Stata",matah:"Stata",sthlp:"Stata",styl:"Stylus",scd:"SuperCollider",swift:"Swift",sv:"SystemVerilog",svh:"SystemVerilog",vh:"SystemVerilog",toml:"TOML",txl:"TXL",tcl:"Tcl",adp:"Tcl",tm:"Tcl",tcsh:"Tcsh",csh:"Tcsh",tex:"TeX",aux:"TeX",bbx:"TeX",bib:"TeX",cbx:"TeX",dtx:"TeX",ins:"TeX",lbx:"TeX",ltx:"TeX",mkii:"TeX",mkiv:"TeX",mkvi:"TeX",sty:"TeX",toc:"TeX",tea:"Tea",txt:"Text",no:"Text",textile:"Textile",thrift:"Thrift",tu:"Turing",ttl:"Turtle",twig:"Twig",ts:"TypeScript",tsx:"TypeScript",upc:"Unified Parallel C",anim:"Unity3D Asset",asset:"Unity3D Asset",mat:"Unity3D Asset",meta:"Unity3D Asset",prefab:"Unity3D Asset",unity:"Unity3D Asset",uno:"Uno",uc:"UnrealScript",ur:"UrWeb",urs:"UrWeb",vcl:"VCL",vhdl:"VHDL",vhd:"VHDL",vhf:"VHDL",vhi:"VHDL",vho:"VHDL",vhs:"VHDL",vht:"VHDL",vhw:"VHDL",vala:"Vala",vapi:"Vala",veo:"Verilog",vim:"VimL",vb:"Visual Basic",bas:"Visual Basic",frm:"Visual Basic",frx:"Visual Basic",vba:"Visual Basic",vbhtml:"Visual Basic",vbs:"Visual Basic",volt:"Volt",vue:"Vue",owl:"Web Ontology Language",webidl:"WebIDL",x10:"X10",xc:"XC",xml:"XML",ant:"XML",axml:"XML",ccxml:"XML",clixml:"XML",cproject:"XML",csl:"XML",csproj:"XML",ct:"XML",dita:"XML",ditamap:"XML",ditaval:"XML","dll.config":"XML",dotsettings:"XML",filters:"XML",fsproj:"XML",fxml:"XML",glade:"XML",grxml:"XML",iml:"XML",ivy:"XML",jelly:"XML",jsproj:"XML",kml:"XML",launch:"XML",mdpolicy:"XML",mxml:"XML",nproj:"XML",nuspec:"XML",odd:"XML",osm:"XML",plist:"XML",props:"XML",ps1xml:"XML",psc1:"XML",pt:"XML",rdf:"XML",rss:"XML",scxml:"XML",srdf:"XML",storyboard:"XML",stTheme:"XML","sublime-snippet":"XML",targets:"XML",tmCommand:"XML",tml:"XML",tmLanguage:"XML",tmPreferences:"XML",tmSnippet:"XML",tmTheme:"XML",ui:"XML",urdf:"XML",ux:"XML",vbproj:"XML",vcxproj:"XML",vssettings:"XML",vxml:"XML",wsdl:"XML",wsf:"XML",wxi:"XML",wxl:"XML",wxs:"XML",x3d:"XML",xacro:"XML",xaml:"XML",xib:"XML",xlf:"XML",xliff:"XML",xmi:"XML","xml.dist":"XML",xproj:"XML",xsd:"XML",xul:"XML",zcml:"XML","xsp-config":"XPages","xsp.metadata":"XPages",xpl:"XProc",xproc:"XProc",xquery:"XQuery",xq:"XQuery",xql:"XQuery",xqm:"XQuery",xqy:"XQuery",xs:"XS",xslt:"XSLT",xsl:"XSLT",xojo_code:"Xojo",xojo_menu:"Xojo",xojo_report:"Xojo",xojo_script:"Xojo",xojo_toolbar:"Xojo",xojo_window:"Xojo",xtend:"Xtend",yml:"YAML",reek:"YAML",rviz:"YAML","sublime-syntax":"YAML",syntax:"YAML",yaml:"YAML","yaml-tmlanguage":"YAML",yang:"YANG",y:"Yacc",yacc:"Yacc",yy:"Yacc",zep:"Zephir",zimpl:"Zimpl",zmpl:"Zimpl",zpl:"Zimpl",desktop:"desktop","desktop.in":"desktop",ec:"eC",eh:"eC",edn:"edn",fish:"fish",mu:"mupad",nc:"nesC",ooc:"ooc",rst:"reStructuredText",rest:"reStructuredText","rest.txt":"reStructuredText","rst.txt":"reStructuredText",wisp:"wisp",prg:"xBase",prw:"xBase"}});var Ee=g(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Lt.setOptionValues=ks;function ks(t,e){for(let r of Object.keys(t))t[r]!==void 0&&(e[r]=t[r]);return e}});var _n=g(Y=>{"use strict";var Os=Y&&Y.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Ds=Y&&Y.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Cs=Y&&Y.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[n.length]=i);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),i=0;i<n.length;i++)n[i]!=="default"&&Os(r,e,n[i]);return Ds(r,e),r}})();Object.defineProperty(Y,"__esModule",{value:!0});Y.SarifBuilder=void 0;var $n=Cs(Vn()),Ts=An(),js=Ee(),Et=class{constructor(e={}){this.log={$schema:"http://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[]},(0,js.setOptionValues)(e,this.log)}addRun(e){this.log.runs.push(e.run)}generateSarifFileSync(e){let r=this.buildSarifJsonString();$n.writeFileSync(e,r,"utf8")}async generateSarifFile(e){let r=this.buildSarifJsonString();await $n.writeFile(e,r,"utf8")}buildSarifOutput(){return this.log.runs=this.log.runs.map(e=>this.completeRunFields(e)),this.log}buildSarifJsonString(e={indent:!1}){this.buildSarifOutput();let r=e.indent?JSON.stringify(this.log,null,2):JSON.stringify(this.log);if(r.includes("SARIF_BUILDER_INVALID"))throw new Error("Your SARIF log is invalid, please solve SARIF_BUILDER_INVALID messages");return r}completeRunFields(e){var r,n,i,o,s,c;e.artifacts=e.artifacts||[];let p=new Set(e.artifacts.map(m=>{var u;return(u=m?.location)===null||u===void 0?void 0:u.uri}).filter(Boolean));for(let m of e.results||[])for(let u of m.locations||[]){let l=(n=(r=u?.physicalLocation)===null||r===void 0?void 0:r.artifactLocation)===null||n===void 0?void 0:n.uri;if(l&&!p.has(l)){let d=l.lastIndexOf("."),y=d!==-1?l.slice(d+1):"",S=Ts.EXTENSIONS_LANGUAGES[y]||"unknown";e.artifacts.push({sourceLanguage:S,location:{uri:l}}),p.add(l)}}let f=new Map;e.artifacts.forEach((m,u)=>{var l;let d=(l=m?.location)===null||l===void 0?void 0:l.uri;d&&f.set(d,u)});let a=new Map;(((o=(i=e?.tool)===null||i===void 0?void 0:i.driver)===null||o===void 0?void 0:o.rules)||[]).forEach((m,u)=>{a.set(m.id,u)});for(let m of e.results||[]){if(m.ruleId){let u=a.get(m.ruleId);u!==void 0&&(m.ruleIndex=u)}if(m.locations)for(let u of m.locations){let l=(c=(s=u?.physicalLocation)===null||s===void 0?void 0:s.artifactLocation)===null||c===void 0?void 0:c.uri;if(l){let d=f.get(l);d!==void 0&&(u.physicalLocation.artifactLocation.index=d)}}}return e}};Y.SarifBuilder=Et});var Bn=g(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.SarifResultBuilder=void 0;var Is=Ee(),kt=class{constructor(e={}){this.result={level:"error",message:{},ruleId:"SARIF_BUILDER_INVALID: Please send the rule Id ruleId property, or call setRuleId(ruleId)"},(0,Is.setOptionValues)(e,this.result)}initSimple(e){if(this.setLevel(e.level),this.setMessageText(e.messageText),this.setRuleId(e.ruleId),e.fileUri&&this.setLocationArtifactUri({uri:e.fileUri}),e.startLine!==null&&e.startLine!==void 0){let r={startLine:e.startLine,startColumn:e.startColumn||1,endLine:e.endLine||e.startLine,endColumn:e.endColumn||1};if(e.startLine===0||e.startColumn===0||e.endLine===0||e.endColumn===0)throw new Error("Region limit can not be 0 (minimum line 1 or column 1) in "+JSON.stringify(e));this.setLocationRegion(r)}return this}setLevel(e){this.result.level=e}setMessageText(e){this.result.message.text=e}setRuleId(e){this.result.ruleId=e}setLocationRegion(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.region=e}setLocationArtifactUri(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.artifactLocation=e}manageInitLocation(){var e,r;!((r=(e=this.result)===null||e===void 0?void 0:e.locations)===null||r===void 0)&&r.length||(this.result.locations=[{}])}manageInitPhysicalLocation(){this.manageInitLocation(),!this.result.locations[0].physicalLocation&&(this.result.locations[0].physicalLocation={})}};Be.SarifResultBuilder=kt});var qn=g(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.SarifRuleBuilder=void 0;var Fs=Ee(),Ot=class{constructor(e={}){this.rule={id:"SARIF_BUILDER_INVALID: Please send the rule identifier in id property, or call setRuleId(ruleId)",shortDescription:{text:"SARIF_BUILDER_INVALID: Please send the rule text in shortDescription.text property, or call setShortDescriptionText(text)"}},(0,Fs.setOptionValues)(e,this.rule)}initSimple(e){return this.setRuleId(e.ruleId),e.shortDescriptionText&&this.setShortDescriptionText(e.shortDescriptionText),e.fullDescriptionText&&this.setFullDescriptionText(e.fullDescriptionText),e.helpUri&&this.setHelpUri(e.helpUri),this}setRuleId(e){this.rule.id=e}setShortDescriptionText(e){this.rule.shortDescription.text=e}setFullDescriptionText(e){this.rule.fullDescription=this.rule.fullDescription||{text:""},this.rule.fullDescription.text=e}setHelpUri(e){this.rule.helpUri=e}};qe.SarifRuleBuilder=Ot});var Un=g(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0});Ue.SarifRunBuilder=void 0;var Ms=Ee(),Dt=class{constructor(e={}){this.run={tool:{driver:{name:process.env.npm_package_name||"SARIF_BUILDER_INVALID: Please send the tool name in tool.driver.name property, or call setToolName(name)",rules:[]}},results:[]},(0,Ms.setOptionValues)(e,this.run)}initSimple(e){return this.setToolDriverName(e.toolDriverName),this.setToolDriverVersion(e.toolDriverVersion),e.url&&this.setToolDriverUri(e.url),this}addRule(e){this.run.tool.driver.rules.push(e.rule)}addResult(e){this.run.results.push(e.result)}setToolDriverName(e){this.run.tool.driver.name=e}setToolDriverVersion(e){this.run.tool.driver.version=e}setToolDriverUri(e){this.run.tool.driver.informationUri=e}};Ue.SarifRunBuilder=Dt});var Xn=g(Q=>{"use strict";Object.defineProperty(Q,"__esModule",{value:!0});Q.SarifResultBuilder=Q.SarifRuleBuilder=Q.SarifRunBuilder=Q.SarifBuilder=void 0;var Ns=_n();Object.defineProperty(Q,"SarifBuilder",{enumerable:!0,get:function(){return Ns.SarifBuilder}});var Rs=Bn();Object.defineProperty(Q,"SarifResultBuilder",{enumerable:!0,get:function(){return Rs.SarifResultBuilder}});var Vs=qn();Object.defineProperty(Q,"SarifRuleBuilder",{enumerable:!0,get:function(){return Vs.SarifRuleBuilder}});var As=Un();Object.defineProperty(Q,"SarifRunBuilder",{enumerable:!0,get:function(){return As.SarifRunBuilder}})});var Jn=g((gc,Gn)=>{"use strict";var $s=/["'&<>]/;Gn.exports=_s;function _s(t){var e=""+t,r=$s.exec(e);if(!r)return e;var n,i="",o=0,s=0;for(o=r.index;o<e.length;o++){switch(e.charCodeAt(o)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 39:n="&#39;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}s!==o&&(i+=e.substring(s,o)),s=o+1,i+=n}return s!==o?i+e.substring(s,o):i}});var tt=require("zx"),le=require("fs/promises");var U={UNKNOWN:0,LOW:1,MEDIUM:2,HIGH:3,CRITICAL:4};var De=class{constructor(e){this.depProvider=e}depProvider;allById=new Map;getAllVulnIds(){return new Set(this.allById.keys())}getAllVulnerabilitiesSortedBySeverity(){let e=Array.from(this.allById.values());return e.sort((r,n)=>{let i=_t(r.severity,n.severity);return i===0?r.id.localeCompare(n.id):-i}),e}addVulnerability(e,r){let n=e.id,i=this.allById,o=e;if(!i.has(n))i.set(n,e),o=e;else{let s=i.get(n);s.title=s.title||e.title,s.severity=vi(s.severity,e.severity),s.scannerSeverity[r]=e.severity,s.detectedBy=it(s.detectedBy,r),s.components=it(s.components,e.components[0]),s.refs=it(s.refs,e.refs[0]),o=s}o.componentTree=o.components?.map(s=>this.depProvider.findUsagesOfComponent(s))}enhanceWithVexData(e){let r=[];for(let n of this.allById.values()){let i=e.newestVulnerabilityStatement(n.id);if(!i){r.push({id:n.id,severity:n.severity,title:n.title,description:n.description,components:n.components??[],componentTree:n.componentTree??[],refs:n.refs});continue}n.vexStatement=i}return{unmatchedVulnerabilities:r}}};function vi(t,e){return _t(t,e)>0?t:e}function _t(t,e){return U[t]-U[e]}function it(t,e){return e?Array.from(new Set([...t,e]).values()):t}var Ce=Oe(require("path"));var q=require("fs/promises"),ot=require("path");async function X(t){try{return await se(t)?JSON.parse(await(0,q.readFile)(t,{encoding:"utf-8"})):void 0}catch(e){throw new Error(`Error reading JSON file ${t}: ${e}`,{cause:e})}}async function st(t,e){let r=JSON.stringify(e,null,4)+`
9
- `,n=await wi(t,r);await(0,q.writeFile)(t,n,{encoding:"utf-8"})}function J(t){return t?t.replace(/\?.*$/,""):""}async function se(t){try{return await(0,q.access)(t,q.constants.F_OK),!0}catch{return!1}}async function at(t){let e=(0,ot.resolve)(t),r=await(0,q.readdir)(e,{withFileTypes:!0});for(let n of r){let i=(0,ot.resolve)(n.parentPath,n.name);n.isDirectory()?await at(i):await(0,q.rm)(i)}await(0,q.rmdir)(e)}async function Se(t,e){let r=e?.user&&e?.pw?{Authorization:`Basic ${Buffer.from(`${e.user}:${e.pw}`).toString("base64")}`}:{},n=await fetch(t,{headers:r});if(!n.ok){let i="";try{i=await n.text()}catch(o){i=`${o}`}throw new Error(`Failed to fetch: ${t}: ${n.status} - ${n.statusText}: ${i}`)}return n}async function wi(t,e){let r=await xi();if(!r)return e;let n=await r.resolveConfig(t);return n?await r.format(e,{...n,filepath:t}):e}var bi;function xi(){return bi??=import("prettier").catch(()=>{})}var ct;async function lt(t){if(ct)return ct;let e="https://repository.conterra.de/repository/maven-mirror-ct",r=ee(t.workingDir,"input/vex"),n=ee(t.workingDir,"output"),i=ee(t.workingDir,"cache"),o=["grype","trivy","ossindex"],s=ee(t.workingDir,"vuln-scan-conf.json"),c=await X(s);if(!c)throw new Error(`Missing project configuration file '${s}'`);let p=c.findNoLongerDetectedVulnerabilitiesOnlyForSnapshots??!1;return ct={projectConfigFileLocation:s,onNewVulnerabilities:c.onNewVulnerabilities??(c.failOnNewVulnerabilities?"fail":"warn"),onNoLongerDetectedVulnerabilities:c.onNoLongerDetectedVulnerabilities??"ignore",reportNoLongerDetectedVulnerabilities:c.reportNoLongerDetectedVulnerabilities??!0,consoleReport:c.consoleReport||"BY_PROJECT_DETAILED",createSubDirsForProject:c.createSubDirsForProject??!0,mavenRepo:c.mavenRepo??e,vexUrls:c.vexUrls??[],vexDir:ee(t.workingDir,c.vexDir)??r,outDir:ee(t.workingDir,c.outDir)??n,cacheDir:ee(t.workingDir,c.cacheDir)??i,scanners:(c.scanners??o).map(f=>{if(typeof f!="string")throw new Error(`Invalid scanner name '${f}' in configuration file '${s}'`);let a=f.split("@");if(a.length>2)throw new Error(`Invalid scanner name '${f}' in configuration file '${s}'`);let m=a[0],u=a[1]??"";return{name:m,version:u}}),projects:(c.projects??[]).map(f=>{let a=f;if(!a.name)throw new Error("Project name is missing on entry:"+JSON.stringify(a));if(!a.version)throw new Error("Project version is missing on entry:"+JSON.stringify(a));if(!a.purl)throw new Error("Project purl is missing on entry:"+JSON.stringify(a));return a.purlAliases||(a.purlAliases=[]),a.enabled==null&&(a.enabled=!0),a.silent==null&&(a.silent=!1),a.minimumSeverity||(a.minimumSeverity="UNKNOWN"),a.sbomFile?{...a,sbomFile:ee(t.workingDir,a.sbomFile)}:(a.detectNoLongerUsedVulnerabilities=p?a.purl.endsWith("-SNAPSHOT"):!0,f)})}}function ee(t,e){if(e)return Ce.default.isAbsolute(e)?e:(0,Ce.resolve)(t,e)}var oe=Oe(Xn());var Yn=Oe(Jn());function Ge(t,e=""){return Wn(t,e,new Set,new Set)}function Wn(t,e="",r,n){let i=`${e}- ${t.purl}`;if(r.has(t.purl))return i+=" (cycle detected)",i;if(n.has(t.purl))return i+=" (deduplicated)",i;n.add(t.purl),r.add(t.purl);let o=r.size===1;for(let s of t.usedBy){let c=Wn(s,e+(o?" ":" "),r,n);c!==""&&(i+=`
10
- `,i+=c)}return r.delete(t.purl),i}var Xe=class t{constructor(e){this.sbom=e;for(let r of this.sbom.components||[]){let n={purl:J(r.purl),usedBy:[]};n.purl&&(this.purlToComponent.has(n.purl)||(this.purlToComponent.set(n.purl,n),this.sbomRefToComponent.set(r["bom-ref"],n)))}for(let r of this.sbom.dependencies||[]){let n=this.sbomRefToComponent.get(r.ref);if(n)for(let i of r.dependsOn||[]){let o=this.sbomRefToComponent.get(i);o&&!o.usedBy.includes(n)&&o.usedBy.push(n)}}}sbom;static createForSbom(e){return new t(e)}sbomRefToComponent=new Map;purlToComponent=new Map;findUsagesOfComponent(e){if(!this.sbom)return{purl:e,usedBy:[]};let r=this.purlToComponent.get(e);return r?Hn(r):{purl:e,usedBy:[]}}};function Hn(t,e=new Set){let r={purl:t.purl,usedBy:[]};if(e.has(t.purl))return r;e.add(t.purl);for(let n of t.usedBy){let i=Hn(n,new Set(e));r.usedBy.push(i)}return r}function Qn(t,e){let r=new oe.SarifRunBuilder().initSimple({toolDriverName:`${e.name}@${e.version}`,toolDriverVersion:"0.0.1"}),n=new Date().toISOString().split("T")[0];r.run.tool.driver.fullDescription={text:`Security Scan from ${n}`},r.run.tool.driver.properties={"microsoft/qualityDomain":`Security Scan from ${n}`};for(let o of t){let s=qs(o.severity),c=o.id,p=Bs(o.refs),f=new oe.SarifRuleBuilder().initSimple({ruleId:c,shortDescriptionText:o.title,fullDescriptionText:o.description,helpUri:p}),a=o.vexStatement,m,u="new",l="";a?(m=[{kind:"external",status:"accepted"}],u="updated",l=`--- INVESTIGATED (${a.status}) --- `,a.status==="under_investigation"&&(m[0].status="underReview",l="--- UNDER INVESTIGATION --- ")):U[e.minimumSeverity]>U[o.severity]?(m=[{kind:"external",status:"accepted"}],u="updated",l=`--- BELOW MINIMUM SEVERITY '${e.minimumSeverity}' ---`):e.silent&&(m=[{kind:"external",status:"accepted"}],u="updated",l="--- PROJECT SILENT ---"),Object.assign(f.rule,{name:`${l}[${o.severity}] - ${o.title.replace(`[${c}]`,"")}`,messageStrings:{default:{text:o.description,markdown:Us(o,p,l)}},properties:{severity:o.severity,scanners:o.scannerSeverity,links:o.refs,tags:["cve","vulnerability","security",`severity_${o.severity.toLowerCase()}`]}}),r.addRule(f);for(let d of o.components){let y=new oe.SarifResultBuilder().initSimple({ruleId:c,level:s,messageText:`${c} [${o.severity}] - ${d}`});y.result.message.id="default",y.result.locations=[{logicalLocations:[{fullyQualifiedName:d}]}],y.result.baselineState=u,y.result.suppressions=m,r.addResult(y)}}let i=new oe.SarifBuilder;return i.addRun(r),i.buildSarifOutput()}function Bs(t){for(let e of t)if(e.startsWith("https://nvd.nist.gov"))return e;return t[0]}function qs(t){switch(t){case"CRITICAL":return"error";case"HIGH":return"error";case"MEDIUM":return"warning";case"LOW":return"warning";default:return"note"}}function Us(t,e,r){let n=t.vexStatement,i=n?`
7
+ see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0002");let{srcStat:n,destStat:i}=Ce.checkPathsSync(t,e,"copy",r);if(Ce.checkParentPathsSync(t,n,e,"copy"),r.filter&&!r.filter(t,e))return;let o=Ee.dirname(e);return N.existsSync(o)||Mo(o),nn(i,t,e,r)}function nn(t,e,r,n){let o=(n.dereference?N.statSync:N.lstatSync)(e);if(o.isDirectory())return Wo(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return $o(o,t,e,r,n);if(o.isSymbolicLink())return Ko(t,e,r,n);throw o.isSocket()?new Error(`Cannot copy a socket file: ${e}`):o.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${e}`):new Error(`Unknown file: ${e}`)}function $o(t,e,r,n,i){return e?Bo(t,r,n,i):on(t,r,n,i)}function Bo(t,e,r,n){if(n.overwrite)return N.unlinkSync(r),on(t,e,r,n);if(n.errorOnExist)throw new Error(`'${r}' already exists`)}function on(t,e,r,n){return N.copyFileSync(e,r),n.preserveTimestamps&&Uo(t.mode,e,r),_t(r,t.mode)}function Uo(t,e,r){return qo(t)&&Xo(r,t),Jo(e,r)}function qo(t){return(t&128)===0}function Xo(t,e){return _t(t,e|128)}function _t(t,e){return N.chmodSync(t,e)}function Jo(t,e){let r=N.statSync(t);return No(e,r.atime,r.mtime)}function Wo(t,e,r,n,i){return e?sn(r,n,i):Go(t.mode,r,n,i)}function Go(t,e,r,n){return N.mkdirSync(r),sn(e,r,n),_t(r,t)}function sn(t,e,r){let n=N.opendirSync(t);try{let i;for(;(i=n.readSync())!==null;)Ho(i.name,t,e,r)}finally{n.closeSync()}}function Ho(t,e,r,n){let i=Ee.join(e,t),o=Ee.join(r,t);if(n.filter&&!n.filter(i,o))return;let{destStat:s}=Ce.checkPathsSync(i,o,"copy",n);return nn(s,i,o,n)}function Ko(t,e,r,n){let i=N.readlinkSync(e);if(n.dereference&&(i=Ee.resolve(process.cwd(),i)),t){let o;try{o=N.readlinkSync(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return N.symlinkSync(i,r);throw s}if(n.dereference&&(o=Ee.resolve(process.cwd(),o)),Ce.isSrcSubdir(i,o))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${o}'.`);if(Ce.isSrcSubdir(o,i))throw new Error(`Cannot overwrite '${o}' with '${i}'.`);return Qo(i,r)}else return N.symlinkSync(i,r)}function Qo(t,e){return N.unlinkSync(e),N.symlinkSync(t,e)}an.exports=_o});var nt=y((nl,ln)=>{"use strict";var zo=O().fromPromise;ln.exports={copy:zo(rn()),copySync:cn()}});var Oe=y((il,pn)=>{"use strict";var un=de(),Yo=O().fromCallback;function Zo(t,e){un.rm(t,{recursive:!0,force:!0},e)}function es(t){un.rmSync(t,{recursive:!0,force:!0})}pn.exports={remove:Yo(Zo),removeSync:es}});var vn=y((ol,Sn)=>{"use strict";var ts=O().fromPromise,dn=M(),hn=require("path"),yn=q(),gn=Oe(),mn=ts(async function(e){let r;try{r=await dn.readdir(e)}catch{return yn.mkdirs(e)}return Promise.all(r.map(n=>gn.remove(hn.join(e,n))))});function fn(t){let e;try{e=dn.readdirSync(t)}catch{return yn.mkdirsSync(t)}e.forEach(r=>{r=hn.join(t,r),gn.removeSync(r)})}Sn.exports={emptyDirSync:fn,emptydirSync:fn,emptyDir:mn,emptydir:mn}});var Pn=y((sl,xn)=>{"use strict";var rs=O().fromPromise,wn=require("path"),z=M(),bn=q();async function ns(t){let e;try{e=await z.stat(t)}catch{}if(e&&e.isFile())return;let r=wn.dirname(t),n=null;try{n=await z.stat(r)}catch(i){if(i.code==="ENOENT"){await bn.mkdirs(r),await z.writeFile(t,"");return}else throw i}n.isDirectory()?await z.writeFile(t,""):await z.readdir(r)}function is(t){let e;try{e=z.statSync(t)}catch{}if(e&&e.isFile())return;let r=wn.dirname(t);try{z.statSync(r).isDirectory()||z.readdirSync(r)}catch(n){if(n&&n.code==="ENOENT")bn.mkdirsSync(r);else throw n}z.writeFileSync(t,"")}xn.exports={createFile:rs(ns),createFileSync:is}});var On=y((al,Cn)=>{"use strict";var os=O().fromPromise,Ln=require("path"),re=M(),Dn=q(),{pathExists:ss}=te(),{areIdentical:En}=ae();async function as(t,e){let r;try{r=await re.lstat(e)}catch{}let n;try{n=await re.lstat(t)}catch(s){throw s.message=s.message.replace("lstat","ensureLink"),s}if(r&&En(n,r))return;let i=Ln.dirname(e);await ss(i)||await Dn.mkdirs(i),await re.link(t,e)}function cs(t,e){let r;try{r=re.lstatSync(e)}catch{}try{let o=re.lstatSync(t);if(r&&En(o,r))return}catch(o){throw o.message=o.message.replace("lstat","ensureLink"),o}let n=Ln.dirname(e);return re.existsSync(n)||Dn.mkdirsSync(n),re.linkSync(t,e)}Cn.exports={createLink:os(as),createLinkSync:cs}});var Fn=y((cl,jn)=>{"use strict";var ne=require("path"),je=M(),{pathExists:ls}=te(),us=O().fromPromise;async function ps(t,e){if(ne.isAbsolute(t)){try{await je.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:t}}let r=ne.dirname(e),n=ne.join(r,t);if(await ls(n))return{toCwd:n,toDst:t};try{await je.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:ne.relative(r,t)}}function ms(t,e){if(ne.isAbsolute(t)){if(!je.existsSync(t))throw new Error("absolute srcpath does not exist");return{toCwd:t,toDst:t}}let r=ne.dirname(e),n=ne.join(r,t);if(je.existsSync(n))return{toCwd:n,toDst:t};if(!je.existsSync(t))throw new Error("relative srcpath does not exist");return{toCwd:t,toDst:ne.relative(r,t)}}jn.exports={symlinkPaths:us(ps),symlinkPathsSync:ms}});var Vn=y((ll,kn)=>{"use strict";var Tn=M(),fs=O().fromPromise;async function ds(t,e){if(e)return e;let r;try{r=await Tn.lstat(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}function hs(t,e){if(e)return e;let r;try{r=Tn.lstatSync(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}kn.exports={symlinkType:fs(ds),symlinkTypeSync:hs}});var Mn=y((ul,Rn)=>{"use strict";var ys=O().fromPromise,An=require("path"),X=M(),{mkdirs:gs,mkdirsSync:Ss}=q(),{symlinkPaths:vs,symlinkPathsSync:ws}=Fn(),{symlinkType:bs,symlinkTypeSync:xs}=Vn(),{pathExists:Ps}=te(),{areIdentical:In}=ae();async function Ls(t,e,r){let n;try{n=await X.lstat(e)}catch{}if(n&&n.isSymbolicLink()){let[c,m]=await Promise.all([X.stat(t),X.stat(e)]);if(In(c,m))return}let i=await vs(t,e);t=i.toDst;let o=await bs(i.toCwd,r),s=An.dirname(e);return await Ps(s)||await gs(s),X.symlink(t,e,o)}function Ds(t,e,r){let n;try{n=X.lstatSync(e)}catch{}if(n&&n.isSymbolicLink()){let c=X.statSync(t),m=X.statSync(e);if(In(c,m))return}let i=ws(t,e);t=i.toDst,r=xs(i.toCwd,r);let o=An.dirname(e);return X.existsSync(o)||Ss(o),X.symlinkSync(t,e,r)}Rn.exports={createSymlink:ys(Ls),createSymlinkSync:Ds}});var Jn=y((pl,Xn)=>{"use strict";var{createFile:Nn,createFileSync:_n}=Pn(),{createLink:$n,createLinkSync:Bn}=On(),{createSymlink:Un,createSymlinkSync:qn}=Mn();Xn.exports={createFile:Nn,createFileSync:_n,ensureFile:Nn,ensureFileSync:_n,createLink:$n,createLinkSync:Bn,ensureLink:$n,ensureLinkSync:Bn,createSymlink:Un,createSymlinkSync:qn,ensureSymlink:Un,ensureSymlinkSync:qn}});var it=y((ml,Wn)=>{function Es(t,{EOL:e=`
8
+ `,finalEOL:r=!0,replacer:n=null,spaces:i}={}){let o=r?e:"";return JSON.stringify(t,n,i).replace(/\n/g,e)+o}function Cs(t){return Buffer.isBuffer(t)&&(t=t.toString("utf8")),t.replace(/^\uFEFF/,"")}Wn.exports={stringify:Es,stripBom:Cs}});var Qn=y((fl,Kn)=>{var ge;try{ge=de()}catch{ge=require("fs")}var ot=O(),{stringify:Gn,stripBom:Hn}=it();async function Os(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||ge,n="throws"in e?e.throws:!0,i=await ot.fromCallback(r.readFile)(t,e);i=Hn(i);let o;try{o=JSON.parse(i,e?e.reviver:null)}catch(s){if(n)throw s.message=`${t}: ${s.message}`,s;return null}return o}var js=ot.fromPromise(Os);function Fs(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||ge,n="throws"in e?e.throws:!0;try{let i=r.readFileSync(t,e);return i=Hn(i),JSON.parse(i,e.reviver)}catch(i){if(n)throw i.message=`${t}: ${i.message}`,i;return null}}async function Ts(t,e,r={}){let n=r.fs||ge,i=Gn(e,r);await ot.fromCallback(n.writeFile)(t,i,r)}var ks=ot.fromPromise(Ts);function Vs(t,e,r={}){let n=r.fs||ge,i=Gn(e,r);return n.writeFileSync(t,i,r)}Kn.exports={readFile:js,readFileSync:Fs,writeFile:ks,writeFileSync:Vs}});var Yn=y((dl,zn)=>{"use strict";var st=Qn();zn.exports={readJson:st.readFile,readJsonSync:st.readFileSync,writeJson:st.writeFile,writeJsonSync:st.writeFileSync}});var at=y((hl,ti)=>{"use strict";var As=O().fromPromise,$t=M(),Zn=require("path"),ei=q(),Is=te().pathExists;async function Rs(t,e,r="utf-8"){let n=Zn.dirname(t);return await Is(n)||await ei.mkdirs(n),$t.writeFile(t,e,r)}function Ms(t,...e){let r=Zn.dirname(t);$t.existsSync(r)||ei.mkdirsSync(r),$t.writeFileSync(t,...e)}ti.exports={outputFile:As(Rs),outputFileSync:Ms}});var ni=y((yl,ri)=>{"use strict";var{stringify:Ns}=it(),{outputFile:_s}=at();async function $s(t,e,r={}){let n=Ns(e,r);await _s(t,n,r)}ri.exports=$s});var oi=y((gl,ii)=>{"use strict";var{stringify:Bs}=it(),{outputFileSync:Us}=at();function qs(t,e,r){let n=Bs(e,r);Us(t,n,r)}ii.exports=qs});var ai=y((Sl,si)=>{"use strict";var Xs=O().fromPromise,_=Yn();_.outputJson=Xs(ni());_.outputJsonSync=oi();_.outputJSON=_.outputJson;_.outputJSONSync=_.outputJsonSync;_.writeJSON=_.writeJson;_.writeJSONSync=_.writeJsonSync;_.readJSON=_.readJson;_.readJSONSync=_.readJsonSync;si.exports=_});var mi=y((vl,pi)=>{"use strict";var Js=M(),ci=require("path"),{copy:Ws}=nt(),{remove:ui}=Oe(),{mkdirp:Gs}=q(),{pathExists:Hs}=te(),li=ae();async function Ks(t,e,r={}){let n=r.overwrite||r.clobber||!1,{srcStat:i,isChangingCase:o=!1}=await li.checkPaths(t,e,"move",r);await li.checkParentPaths(t,i,e,"move");let s=ci.dirname(e);return ci.parse(s).root!==s&&await Gs(s),Qs(t,e,n,o)}async function Qs(t,e,r,n){if(!n){if(r)await ui(e);else if(await Hs(e))throw new Error("dest already exists.")}try{await Js.rename(t,e)}catch(i){if(i.code!=="EXDEV")throw i;await zs(t,e,r)}}async function zs(t,e,r){return await Ws(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),ui(t)}pi.exports=Ks});var gi=y((wl,yi)=>{"use strict";var di=de(),Ut=require("path"),Ys=nt().copySync,hi=Oe().removeSync,Zs=q().mkdirpSync,fi=ae();function ea(t,e,r){r=r||{};let n=r.overwrite||r.clobber||!1,{srcStat:i,isChangingCase:o=!1}=fi.checkPathsSync(t,e,"move",r);return fi.checkParentPathsSync(t,i,e,"move"),ta(e)||Zs(Ut.dirname(e)),ra(t,e,n,o)}function ta(t){let e=Ut.dirname(t);return Ut.parse(e).root===e}function ra(t,e,r,n){if(n)return Bt(t,e,r);if(r)return hi(e),Bt(t,e,r);if(di.existsSync(e))throw new Error("dest already exists.");return Bt(t,e,r)}function Bt(t,e,r){try{di.renameSync(t,e)}catch(n){if(n.code!=="EXDEV")throw n;return na(t,e,r)}}function na(t,e,r){return Ys(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),hi(t)}yi.exports=ea});var vi=y((bl,Si)=>{"use strict";var ia=O().fromPromise;Si.exports={move:ia(mi()),moveSync:gi()}});var bi=y((xl,wi)=>{"use strict";wi.exports={...M(),...nt(),...vn(),...Jn(),...ai(),...q(),...vi(),...at(),...te(),...Oe()}});var xi=y(ct=>{"use strict";Object.defineProperty(ct,"__esModule",{value:!0});ct.EXTENSIONS_LANGUAGES=void 0;ct.EXTENSIONS_LANGUAGES={1:"Groff",2:"Groff",3:"Groff",4:"Groff",5:"Groff",6:"Groff",7:"Groff",8:"Groff",9:"Groff",abap:"ABAP",asc:"Public Key",ash:"AGS Script",ampl:"AMPL",mod:"XML",g4:"ANTLR",apib:"API Blueprint",apl:"APL",dyalog:"APL",asp:"ASP",asax:"ASP",ascx:"ASP",ashx:"ASP",asmx:"ASP",aspx:"ASP",axd:"ASP",dats:"ATS",hats:"ATS",sats:"ATS",as:"ActionScript",adb:"Ada",ada:"Ada",ads:"Ada",agda:"Agda",als:"Alloy",apacheconf:"ApacheConf",vhost:"Nginx",cls:"Visual Basic",applescript:"AppleScript",scpt:"AppleScript",arc:"Arc",ino:"Arduino",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aj:"AspectJ",asm:"Assembly",a51:"Assembly",inc:"SourcePawn",nasm:"Assembly",aug:"Augeas",ahk:"AutoHotkey",ahkl:"AutoHotkey",au3:"AutoIt",awk:"Awk",auk:"Awk",gawk:"Awk",mawk:"Awk",nawk:"Awk",bat:"Batchfile",cmd:"Batchfile",befunge:"Befunge",bison:"Bison",bb:"BlitzBasic",decls:"BlitzBasic",bmx:"BlitzMax",bsv:"Bluespec",boo:"Boo",b:"Limbo",bf:"HyPhy",brs:"Brightscript",bro:"Bro",c:"C",cats:"C",h:"Objective-C",idc:"C",w:"C",cs:"Smalltalk",cake:"CoffeeScript",cshtml:"C#",csx:"C#",cpp:"C++","c++":"C++",cc:"C++",cp:"Component Pascal",cxx:"C++","h++":"C++",hh:"Hack",hpp:"C++",hxx:"C++",inl:"C++",ipp:"C++",tcc:"C++",tpp:"C++","c-objdump":"C-ObjDump",chs:"C2hs Haskell",clp:"CLIPS",cmake:"CMake","cmake.in":"CMake",cob:"COBOL",cbl:"COBOL",ccp:"COBOL",cobol:"COBOL",cpy:"COBOL",css:"CSS",csv:"CSV",capnp:"Cap'n Proto",mss:"CartoCSS",ceylon:"Ceylon",chpl:"Chapel",ch:"xBase",ck:"ChucK",cirru:"Cirru",clw:"Clarion",icl:"Clean",dcl:"Clean",click:"Click",clj:"Clojure",boot:"Clojure",cl2:"Clojure",cljc:"Clojure",cljs:"Clojure","cljs.hl":"Clojure",cljscm:"Clojure",cljx:"Clojure",hic:"Clojure",coffee:"CoffeeScript",_coffee:"CoffeeScript",cjsx:"CoffeeScript",cson:"CoffeeScript",iced:"CoffeeScript",cfm:"ColdFusion",cfml:"ColdFusion",cfc:"ColdFusion CFC",lisp:"NewLisp",asd:"Common Lisp",cl:"OpenCL",l:"PicoLisp",lsp:"NewLisp",ny:"Common Lisp",podsl:"Common Lisp",sexp:"Common Lisp",cps:"Component Pascal",coq:"Coq",v:"Verilog",cppobjdump:"Cpp-ObjDump","c++-objdump":"Cpp-ObjDump","c++objdump":"Cpp-ObjDump","cpp-objdump":"Cpp-ObjDump","cxx-objdump":"Cpp-ObjDump",creole:"Creole",cr:"Crystal",feature:"Cucumber",cu:"Cuda",cuh:"Cuda",cy:"Cycript",pyx:"Cython",pxd:"Cython",pxi:"Cython",d:"Makefile",di:"D","d-objdump":"D-ObjDump",com:"DIGITAL Command Language",dm:"DM",zone:"DNS Zone",arpa:"DNS Zone",darcspatch:"Darcs Patch",dpatch:"Darcs Patch",dart:"Dart",diff:"Diff",patch:"Diff",dockerfile:"Dockerfile",djs:"Dogescript",dylan:"Dylan",dyl:"Dylan",intr:"Dylan",lid:"Dylan",E:"E",ecl:"ECLiPSe",eclxml:"ECL",sch:"KiCad",brd:"KiCad",epj:"Ecere Projects",e:"Eiffel",ex:"Elixir",exs:"Elixir",elm:"Elm",el:"Emacs Lisp",emacs:"Emacs Lisp","emacs.desktop":"Emacs Lisp",em:"EmberScript",emberscript:"EmberScript",erl:"Erlang",es:"JavaScript",escript:"Erlang",hrl:"Erlang",xrl:"Erlang",yrl:"Erlang",fs:"GLSL",fsi:"F#",fsx:"F#",fx:"HLSL",flux:"FLUX",f90:"FORTRAN",f:"Forth",f03:"FORTRAN",f08:"FORTRAN",f77:"FORTRAN",f95:"FORTRAN",for:"Forth",fpp:"FORTRAN",factor:"Factor",fy:"Fancy",fancypack:"Fancy",fan:"Fantom","eam.fs":"Formatted",fth:"Forth","4th":"Forth",forth:"Forth",fr:"Text",frt:"Forth",ftl:"FreeMarker",g:"GAP",gco:"G-code",gcode:"G-code",gms:"GAMS",gap:"GAP",gd:"GDScript",gi:"GAP",tst:"Scilab",s:"GAS",ms:"MAXScript",glsl:"GLSL",fp:"GLSL",frag:"JavaScript",frg:"GLSL",fsh:"GLSL",fshader:"GLSL",geo:"GLSL",geom:"GLSL",glslv:"GLSL",gshader:"GLSL",shader:"GLSL",vert:"GLSL",vrx:"GLSL",vsh:"GLSL",vshader:"GLSL",gml:"XML",kid:"Genshi",ebuild:"Gentoo Ebuild",eclass:"Gentoo Eclass",po:"Gettext Catalog",pot:"Gettext Catalog",glf:"Glyph",gp:"Gnuplot",gnu:"Gnuplot",gnuplot:"Gnuplot",plot:"Gnuplot",plt:"Gnuplot",go:"Go",golo:"Golo",gs:"JavaScript",gst:"Gosu",gsx:"Gosu",vark:"Gosu",grace:"Grace",gradle:"Gradle",gf:"Grammatical Framework",graphql:"GraphQL",dot:"Graphviz (DOT)",gv:"Graphviz (DOT)",man:"Groff","1in":"Groff","1m":"Groff","1x":"Groff","3in":"Groff","3m":"Groff","3qt":"Groff","3x":"Groff",me:"Groff",n:"Nemerle",rno:"Groff",roff:"Groff",groovy:"Groovy",grt:"Groovy",gtpl:"Groovy",gvy:"Groovy",gsp:"Groovy Server Pages",hcl:"HCL",tf:"HCL",hlsl:"HLSL",fxh:"HLSL",hlsli:"HLSL",html:"HTML",htm:"HTML","html.hl":"HTML",st:"Smalltalk",xht:"HTML",xhtml:"HTML",mustache:"HTML+Django",jinja:"HTML+Django",eex:"HTML+EEX",erb:"HTML+ERB","erb.deface":"HTML+ERB",phtml:"HTML+PHP",http:"HTTP",php:"PHP",haml:"Haml","haml.deface":"Haml",handlebars:"Handlebars",hbs:"Handlebars",hb:"Harbour",hs:"Haskell",hsc:"Haskell",hx:"Haxe",hxsl:"Haxe",hy:"Hy",pro:"QMake",dlm:"IDL",ipf:"IGOR Pro",ini:"INI",cfg:"INI",prefs:"INI",properties:"INI",irclog:"IRC log",weechatlog:"IRC log",idr:"Idris",lidr:"Idris",ni:"Inform 7",i7x:"Inform 7",iss:"Inno Setup",io:"Io",ik:"Ioke",thy:"Isabelle",ijs:"J",flex:"JFlex",jflex:"JFlex",json:"JSON",geojson:"JSON",lock:"JSON",topojson:"JSON",json5:"JSON5",jsonld:"JSONLD",jq:"JSONiq",jsx:"JSX",jade:"Jade",j:"Objective-J",java:"Java",jsp:"Java Server Pages",js:"JavaScript",_js:"JavaScript",bones:"JavaScript",es6:"JavaScript",jake:"JavaScript",jsb:"JavaScript",jscad:"JavaScript",jsfl:"JavaScript",jsm:"JavaScript",jss:"JavaScript",njs:"JavaScript",pac:"JavaScript",sjs:"JavaScript",ssjs:"JavaScript","sublime-build":"JavaScript","sublime-commands":"JavaScript","sublime-completions":"JavaScript","sublime-keymap":"JavaScript","sublime-macro":"JavaScript","sublime-menu":"JavaScript","sublime-mousemap":"JavaScript","sublime-project":"JavaScript","sublime-settings":"JavaScript","sublime-theme":"JavaScript","sublime-workspace":"JavaScript",sublime_metrics:"JavaScript",sublime_session:"JavaScript",xsjs:"JavaScript",xsjslib:"JavaScript",jl:"Julia",ipynb:"Jupyter Notebook",krl:"KRL",kicad_pcb:"KiCad",kit:"Kit",kt:"Kotlin",ktm:"Kotlin",kts:"Kotlin",lfe:"LFE",ll:"LLVM",lol:"LOLCODE",lsl:"LSL",lslp:"LSL",lvproj:"LabVIEW",lasso:"Lasso",las:"Lasso",lasso8:"Lasso",lasso9:"Lasso",ldml:"Lasso",latte:"Latte",lean:"Lean",hlean:"Lean",less:"Less",lex:"Lex",ly:"LilyPond",ily:"LilyPond",m:"Objective-C",ld:"Linker Script",lds:"Linker Script",liquid:"Liquid",lagda:"Literate Agda",litcoffee:"Literate CoffeeScript",lhs:"Literate Haskell",ls:"LoomScript",_ls:"LiveScript",xm:"Logos",x:"Logos",xi:"Logos",lgt:"Logtalk",logtalk:"Logtalk",lookml:"LookML",lua:"Lua",fcgi:"Shell",nse:"Lua",pd_lua:"Lua",rbxs:"Lua",wlua:"Lua",mumps:"M",m4:"M4Sugar",mcr:"MAXScript",mtml:"MTML",muf:"MUF",mak:"Makefile",mk:"Makefile",mkfile:"Makefile",mako:"Mako",mao:"Mako",md:"Markdown",markdown:"Markdown",mkd:"Markdown",mkdn:"Markdown",mkdown:"Markdown",ron:"Markdown",mask:"Mask",mathematica:"Mathematica",cdf:"Mathematica",ma:"Mathematica",mt:"Mathematica",nb:"Text",nbp:"Mathematica",wl:"Mathematica",wlt:"Mathematica",matlab:"Matlab",maxpat:"Max",maxhelp:"Max",maxproj:"Max",mxt:"Max",pat:"Max",mediawiki:"MediaWiki",wiki:"MediaWiki",moo:"Moocode",metal:"Metal",minid:"MiniD",druby:"Mirah",duby:"Mirah",mir:"Mirah",mirah:"Mirah",mo:"Modelica",mms:"Module Management System",mmk:"Module Management System",monkey:"Monkey",moon:"MoonScript",myt:"Myghty",ncl:"Text",nl:"NewLisp",nsi:"NSIS",nsh:"NSIS",axs:"NetLinx",axi:"NetLinx","axs.erb":"NetLinx+ERB","axi.erb":"NetLinx+ERB",nlogo:"NetLogo",nginxconf:"Nginx",nim:"Nimrod",nimrod:"Nimrod",ninja:"Ninja",nit:"Nit",nix:"Nix",nu:"Nu",numpy:"NumPy",numpyw:"NumPy",numsc:"NumPy",ml:"OCaml",eliom:"OCaml",eliomi:"OCaml",ml4:"OCaml",mli:"OCaml",mll:"OCaml",mly:"OCaml",objdump:"ObjDump",mm:"XML",sj:"Objective-J",omgrofl:"Omgrofl",opa:"Opa",opal:"Opal",opencl:"OpenCL",p:"OpenEdge ABL",scad:"OpenSCAD",org:"Org",ox:"Ox",oxh:"Ox",oxo:"Ox",oxygene:"Oxygene",oz:"Oz",pwn:"PAWN",aw:"PHP",ctp:"PHP",php3:"PHP",php4:"PHP",php5:"PHP",phps:"PHP",phpt:"PHP",pls:"PLSQL",pck:"PLSQL",pkb:"PLSQL",pks:"PLSQL",plb:"PLSQL",plsql:"PLSQL",sql:"SQLPL",pov:"POV-Ray SDL",pan:"Pan",psc:"Papyrus",parrot:"Parrot",pasm:"Parrot Assembly",pir:"Parrot Internal Representation",pas:"Pascal",dfm:"Pascal",dpr:"Pascal",lpr:"Pascal",pp:"Puppet",pl:"Prolog",al:"Perl",cgi:"Shell",perl:"Perl",ph:"Perl",plx:"Perl",pm:"Perl6",pod:"Pod",psgi:"Perl",t:"Turing","6pl":"Perl6","6pm":"Perl6",nqp:"Perl6",p6:"Perl6",p6l:"Perl6",p6m:"Perl6",pl6:"Perl6",pm6:"Perl6",pkl:"Pickle",pig:"PigLatin",pike:"Pike",pmod:"Pike",pogo:"PogoScript",pony:"Pony",ps:"PostScript",eps:"PostScript",ps1:"PowerShell",psd1:"PowerShell",psm1:"PowerShell",pde:"Processing",prolog:"Prolog",yap:"Prolog",spin:"Propeller Spin",proto:"Protocol Buffer",pub:"Public Key",pd:"Pure Data",pb:"PureBasic",pbi:"PureBasic",purs:"PureScript",py:"Python",bzl:"Python",gyp:"Python",lmi:"Python",pyde:"Python",pyp:"Python",pyt:"Python",pyw:"Python",rpy:"Ren'Py",tac:"Python",wsgi:"Python",xpy:"Python",pytb:"Python traceback",qml:"QML",qbs:"QML",pri:"QMake",r:"Rebol",rd:"R",rsx:"R",raml:"RAML",rdoc:"RDoc",rbbas:"REALbasic",rbfrm:"REALbasic",rbmnu:"REALbasic",rbres:"REALbasic",rbtbar:"REALbasic",rbuistate:"REALbasic",rhtml:"RHTML",rmd:"RMarkdown",rkt:"Racket",rktd:"Racket",rktl:"Racket",scrbl:"Racket",rl:"Ragel in Ruby Host",raw:"Raw token data",reb:"Rebol",r2:"Rebol",r3:"Rebol",rebol:"Rebol",red:"Red",reds:"Red",cw:"Redcode",rs:"Rust",rsh:"RenderScript",robot:"RobotFramework",rg:"Rouge",rb:"Ruby",builder:"Ruby",gemspec:"Ruby",god:"Ruby",irbrc:"Ruby",jbuilder:"Ruby",mspec:"Ruby",pluginspec:"XML",podspec:"Ruby",rabl:"Ruby",rake:"Ruby",rbuild:"Ruby",rbw:"Ruby",rbx:"Ruby",ru:"Ruby",ruby:"Ruby",thor:"Ruby",watchr:"Ruby","rs.in":"Rust",sas:"SAS",scss:"SCSS",smt2:"SMT",smt:"SMT",sparql:"SPARQL",rq:"SPARQL",sqf:"SQF",hqf:"SQF",cql:"SQL",ddl:"SQL",prc:"SQL",tab:"SQL",udf:"SQL",viw:"SQL",db2:"SQLPL",ston:"STON",svg:"SVG",sage:"Sage",sagews:"Sage",sls:"Scheme",sass:"Sass",scala:"Scala",sbt:"Scala",sc:"SuperCollider",scaml:"Scaml",scm:"Scheme",sld:"Scheme",sps:"Scheme",ss:"Scheme",sci:"Scilab",sce:"Scilab",self:"Self",sh:"Shell",bash:"Shell",bats:"Shell",command:"Shell",ksh:"Shell","sh.in":"Shell",tmux:"Shell",tool:"Shell",zsh:"Shell","sh-session":"ShellSession",shen:"Shen",sl:"Slash",slim:"Slim",smali:"Smali",tpl:"Smarty",sp:"SourcePawn",sma:"SourcePawn",nut:"Squirrel",stan:"Stan",ML:"Standard ML",fun:"Standard ML",sig:"Standard ML",sml:"Standard ML",do:"Stata",ado:"Stata",doh:"Stata",ihlp:"Stata",mata:"Stata",matah:"Stata",sthlp:"Stata",styl:"Stylus",scd:"SuperCollider",swift:"Swift",sv:"SystemVerilog",svh:"SystemVerilog",vh:"SystemVerilog",toml:"TOML",txl:"TXL",tcl:"Tcl",adp:"Tcl",tm:"Tcl",tcsh:"Tcsh",csh:"Tcsh",tex:"TeX",aux:"TeX",bbx:"TeX",bib:"TeX",cbx:"TeX",dtx:"TeX",ins:"TeX",lbx:"TeX",ltx:"TeX",mkii:"TeX",mkiv:"TeX",mkvi:"TeX",sty:"TeX",toc:"TeX",tea:"Tea",txt:"Text",no:"Text",textile:"Textile",thrift:"Thrift",tu:"Turing",ttl:"Turtle",twig:"Twig",ts:"TypeScript",tsx:"TypeScript",upc:"Unified Parallel C",anim:"Unity3D Asset",asset:"Unity3D Asset",mat:"Unity3D Asset",meta:"Unity3D Asset",prefab:"Unity3D Asset",unity:"Unity3D Asset",uno:"Uno",uc:"UnrealScript",ur:"UrWeb",urs:"UrWeb",vcl:"VCL",vhdl:"VHDL",vhd:"VHDL",vhf:"VHDL",vhi:"VHDL",vho:"VHDL",vhs:"VHDL",vht:"VHDL",vhw:"VHDL",vala:"Vala",vapi:"Vala",veo:"Verilog",vim:"VimL",vb:"Visual Basic",bas:"Visual Basic",frm:"Visual Basic",frx:"Visual Basic",vba:"Visual Basic",vbhtml:"Visual Basic",vbs:"Visual Basic",volt:"Volt",vue:"Vue",owl:"Web Ontology Language",webidl:"WebIDL",x10:"X10",xc:"XC",xml:"XML",ant:"XML",axml:"XML",ccxml:"XML",clixml:"XML",cproject:"XML",csl:"XML",csproj:"XML",ct:"XML",dita:"XML",ditamap:"XML",ditaval:"XML","dll.config":"XML",dotsettings:"XML",filters:"XML",fsproj:"XML",fxml:"XML",glade:"XML",grxml:"XML",iml:"XML",ivy:"XML",jelly:"XML",jsproj:"XML",kml:"XML",launch:"XML",mdpolicy:"XML",mxml:"XML",nproj:"XML",nuspec:"XML",odd:"XML",osm:"XML",plist:"XML",props:"XML",ps1xml:"XML",psc1:"XML",pt:"XML",rdf:"XML",rss:"XML",scxml:"XML",srdf:"XML",storyboard:"XML",stTheme:"XML","sublime-snippet":"XML",targets:"XML",tmCommand:"XML",tml:"XML",tmLanguage:"XML",tmPreferences:"XML",tmSnippet:"XML",tmTheme:"XML",ui:"XML",urdf:"XML",ux:"XML",vbproj:"XML",vcxproj:"XML",vssettings:"XML",vxml:"XML",wsdl:"XML",wsf:"XML",wxi:"XML",wxl:"XML",wxs:"XML",x3d:"XML",xacro:"XML",xaml:"XML",xib:"XML",xlf:"XML",xliff:"XML",xmi:"XML","xml.dist":"XML",xproj:"XML",xsd:"XML",xul:"XML",zcml:"XML","xsp-config":"XPages","xsp.metadata":"XPages",xpl:"XProc",xproc:"XProc",xquery:"XQuery",xq:"XQuery",xql:"XQuery",xqm:"XQuery",xqy:"XQuery",xs:"XS",xslt:"XSLT",xsl:"XSLT",xojo_code:"Xojo",xojo_menu:"Xojo",xojo_report:"Xojo",xojo_script:"Xojo",xojo_toolbar:"Xojo",xojo_window:"Xojo",xtend:"Xtend",yml:"YAML",reek:"YAML",rviz:"YAML","sublime-syntax":"YAML",syntax:"YAML",yaml:"YAML","yaml-tmlanguage":"YAML",yang:"YANG",y:"Yacc",yacc:"Yacc",yy:"Yacc",zep:"Zephir",zimpl:"Zimpl",zmpl:"Zimpl",zpl:"Zimpl",desktop:"desktop","desktop.in":"desktop",ec:"eC",eh:"eC",edn:"edn",fish:"fish",mu:"mupad",nc:"nesC",ooc:"ooc",rst:"reStructuredText",rest:"reStructuredText","rest.txt":"reStructuredText","rst.txt":"reStructuredText",wisp:"wisp",prg:"xBase",prw:"xBase"}});var Fe=y(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.setOptionValues=oa;function oa(t,e){for(let r of Object.keys(t))t[r]!==void 0&&(e[r]=t[r]);return e}});var Li=y(J=>{"use strict";var sa=J&&J.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),aa=J&&J.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),ca=J&&J.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[n.length]=i);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),i=0;i<n.length;i++)n[i]!=="default"&&sa(r,e,n[i]);return aa(r,e),r}})();Object.defineProperty(J,"__esModule",{value:!0});J.SarifBuilder=void 0;var Pi=ca(bi()),la=xi(),ua=Fe(),Xt=class{constructor(e={}){this.log={$schema:"http://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[]},(0,ua.setOptionValues)(e,this.log)}addRun(e){this.log.runs.push(e.run)}generateSarifFileSync(e){let r=this.buildSarifJsonString();Pi.writeFileSync(e,r,"utf8")}async generateSarifFile(e){let r=this.buildSarifJsonString();await Pi.writeFile(e,r,"utf8")}buildSarifOutput(){return this.log.runs=this.log.runs.map(e=>this.completeRunFields(e)),this.log}buildSarifJsonString(e={indent:!1}){this.buildSarifOutput();let r=e.indent?JSON.stringify(this.log,null,2):JSON.stringify(this.log);if(r.includes("SARIF_BUILDER_INVALID"))throw new Error("Your SARIF log is invalid, please solve SARIF_BUILDER_INVALID messages");return r}completeRunFields(e){var r,n,i,o,s,c;e.artifacts=e.artifacts||[];let m=new Set(e.artifacts.map(p=>{var l;return(l=p?.location)===null||l===void 0?void 0:l.uri}).filter(Boolean));for(let p of e.results||[])for(let l of p.locations||[]){let u=(n=(r=l?.physicalLocation)===null||r===void 0?void 0:r.artifactLocation)===null||n===void 0?void 0:n.uri;if(u&&!m.has(u)){let f=u.lastIndexOf("."),g=f!==-1?u.slice(f+1):"",v=la.EXTENSIONS_LANGUAGES[g]||"unknown";e.artifacts.push({sourceLanguage:v,location:{uri:u}}),m.add(u)}}let d=new Map;e.artifacts.forEach((p,l)=>{var u;let f=(u=p?.location)===null||u===void 0?void 0:u.uri;f&&d.set(f,l)});let a=new Map;(((o=(i=e?.tool)===null||i===void 0?void 0:i.driver)===null||o===void 0?void 0:o.rules)||[]).forEach((p,l)=>{a.set(p.id,l)});for(let p of e.results||[]){if(p.ruleId){let l=a.get(p.ruleId);l!==void 0&&(p.ruleIndex=l)}if(p.locations)for(let l of p.locations){let u=(c=(s=l?.physicalLocation)===null||s===void 0?void 0:s.artifactLocation)===null||c===void 0?void 0:c.uri;if(u){let f=d.get(u);f!==void 0&&(l.physicalLocation.artifactLocation.index=f)}}}return e}};J.SarifBuilder=Xt});var Di=y(lt=>{"use strict";Object.defineProperty(lt,"__esModule",{value:!0});lt.SarifResultBuilder=void 0;var pa=Fe(),Jt=class{constructor(e={}){this.result={level:"error",message:{},ruleId:"SARIF_BUILDER_INVALID: Please send the rule Id ruleId property, or call setRuleId(ruleId)"},(0,pa.setOptionValues)(e,this.result)}initSimple(e){if(this.setLevel(e.level),this.setMessageText(e.messageText),this.setRuleId(e.ruleId),e.fileUri&&this.setLocationArtifactUri({uri:e.fileUri}),e.startLine!==null&&e.startLine!==void 0){let r={startLine:e.startLine,startColumn:e.startColumn||1,endLine:e.endLine||e.startLine,endColumn:e.endColumn||1};if(e.startLine===0||e.startColumn===0||e.endLine===0||e.endColumn===0)throw new Error("Region limit can not be 0 (minimum line 1 or column 1) in "+JSON.stringify(e));this.setLocationRegion(r)}return this}setLevel(e){this.result.level=e}setMessageText(e){this.result.message.text=e}setRuleId(e){this.result.ruleId=e}setLocationRegion(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.region=e}setLocationArtifactUri(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.artifactLocation=e}manageInitLocation(){var e,r;!((r=(e=this.result)===null||e===void 0?void 0:e.locations)===null||r===void 0)&&r.length||(this.result.locations=[{}])}manageInitPhysicalLocation(){this.manageInitLocation(),!this.result.locations[0].physicalLocation&&(this.result.locations[0].physicalLocation={})}};lt.SarifResultBuilder=Jt});var Ei=y(ut=>{"use strict";Object.defineProperty(ut,"__esModule",{value:!0});ut.SarifRuleBuilder=void 0;var ma=Fe(),Wt=class{constructor(e={}){this.rule={id:"SARIF_BUILDER_INVALID: Please send the rule identifier in id property, or call setRuleId(ruleId)",shortDescription:{text:"SARIF_BUILDER_INVALID: Please send the rule text in shortDescription.text property, or call setShortDescriptionText(text)"}},(0,ma.setOptionValues)(e,this.rule)}initSimple(e){return this.setRuleId(e.ruleId),e.shortDescriptionText&&this.setShortDescriptionText(e.shortDescriptionText),e.fullDescriptionText&&this.setFullDescriptionText(e.fullDescriptionText),e.helpUri&&this.setHelpUri(e.helpUri),this}setRuleId(e){this.rule.id=e}setShortDescriptionText(e){this.rule.shortDescription.text=e}setFullDescriptionText(e){this.rule.fullDescription=this.rule.fullDescription||{text:""},this.rule.fullDescription.text=e}setHelpUri(e){this.rule.helpUri=e}};ut.SarifRuleBuilder=Wt});var Ci=y(pt=>{"use strict";Object.defineProperty(pt,"__esModule",{value:!0});pt.SarifRunBuilder=void 0;var fa=Fe(),Gt=class{constructor(e={}){this.run={tool:{driver:{name:process.env.npm_package_name||"SARIF_BUILDER_INVALID: Please send the tool name in tool.driver.name property, or call setToolName(name)",rules:[]}},results:[]},(0,fa.setOptionValues)(e,this.run)}initSimple(e){return this.setToolDriverName(e.toolDriverName),this.setToolDriverVersion(e.toolDriverVersion),e.url&&this.setToolDriverUri(e.url),this}addRule(e){this.run.tool.driver.rules.push(e.rule)}addResult(e){this.run.results.push(e.result)}setToolDriverName(e){this.run.tool.driver.name=e}setToolDriverVersion(e){this.run.tool.driver.version=e}setToolDriverUri(e){this.run.tool.driver.informationUri=e}};pt.SarifRunBuilder=Gt});var Oi=y(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.SarifResultBuilder=W.SarifRuleBuilder=W.SarifRunBuilder=W.SarifBuilder=void 0;var da=Li();Object.defineProperty(W,"SarifBuilder",{enumerable:!0,get:function(){return da.SarifBuilder}});var ha=Di();Object.defineProperty(W,"SarifResultBuilder",{enumerable:!0,get:function(){return ha.SarifResultBuilder}});var ya=Ei();Object.defineProperty(W,"SarifRuleBuilder",{enumerable:!0,get:function(){return ya.SarifRuleBuilder}});var ga=Ci();Object.defineProperty(W,"SarifRunBuilder",{enumerable:!0,get:function(){return ga.SarifRunBuilder}})});var Fi=y((Fl,ji)=>{"use strict";var Sa=/["'&<>]/;ji.exports=va;function va(t){var e=""+t,r=Sa.exec(e);if(!r)return e;var n,i="",o=0,s=0;for(o=r.index;o<e.length;o++){switch(e.charCodeAt(o)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 39:n="&#39;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}s!==o&&(i+=e.substring(s,o)),s=o+1,i+=n}return s!==o?i+e.substring(s,o):i}});var Kt=require("fs/promises");var Y=Te(require("path")),bt=require("fs/promises");var B=require("fs/promises"),gt=require("path");async function H(t){try{return await oe(t)?JSON.parse(await(0,B.readFile)(t,{encoding:"utf-8"})):void 0}catch(e){throw new Error(`Error reading JSON file ${t}: ${e}`,{cause:e})}}async function St(t,e){let r=JSON.stringify(e,null,4)+`
9
+ `,n=await Bi(t,r);await(0,B.writeFile)(t,n,{encoding:"utf-8"})}function U(t){return t?t.replace(/\?.*$/,""):""}async function oe(t){try{return await(0,B.access)(t,B.constants.F_OK),!0}catch{return!1}}async function vt(t){let e=(0,gt.resolve)(t),r=await(0,B.readdir)(e,{withFileTypes:!0});for(let n of r){let i=(0,gt.resolve)(n.parentPath,n.name);n.isDirectory()?await vt(i):await(0,B.rm)(i)}await(0,B.rmdir)(e)}function wt(t,e){return`Basic ${Buffer.from(`${t}:${e}`).toString("base64")}`}async function we(t,e){let r=e?.user&&e?.pw?{Authorization:wt(e.user,e.pw)}:{},n=await fetch(t,{headers:r});if(!n.ok){let i="";try{i=await n.text()}catch(o){i=`${o}`}throw new Error(`Failed to fetch: ${t}: ${n.status} - ${n.statusText}: ${i}`)}return n}async function Bi(t,e){let r=await qi();if(!r)return e;let n=await r.resolveConfig(t);return n?await r.format(e,{...n,filepath:t}):e}var Ui;function qi(){return Ui??=import("prettier").catch(()=>{})}var ke={UNKNOWN:0,LOW:1,MEDIUM:2,HIGH:3,CRITICAL:4},be=["UNKNOWN","LOW","MEDIUM","HIGH","CRITICAL"];function K(t,e){return ke[t]-ke[e]}function Zt(t,e){return K(t,e)>=0?t:e}function er(t,e){return ke[t]<ke[e]}function tr(t){switch(t){case"Negligible":case"Low":return"LOW";case"Medium":return"MEDIUM";case"High":return"HIGH";case"Critical":return"CRITICAL";default:return"UNKNOWN"}}function rr(t){switch(t){case"UNKNOWN":case"LOW":case"MEDIUM":case"HIGH":case"CRITICAL":return t;default:return"UNKNOWN"}}function nr(t){return t===0?"UNKNOWN":t<4?"LOW":t<7?"MEDIUM":t<9?"HIGH":"CRITICAL"}function ir(t){switch(t){case"CRITICAL":case"HIGH":return"error";case"MEDIUM":case"LOW":return"warning";default:return"note"}}var xt=class t{constructor(e){this.workingDir=e}workingDir;static DEFAULT_MAVEN_REPO="https://repository.conterra.de/repository/maven-mirror-ct";static DEFAULT_VEX_SUBDIR="input/vex";static DEFAULT_OUT_SUBDIR="output";static DEFAULT_CACHE_SUBDIR="cache";static DEFAULT_SCANNERS=["grype","trivy","ossindex"];normalize(e,r){let n=e.findNoLongerDetectedVulnerabilitiesOnlyForSnapshots??!1;return{projectConfigFileLocation:r,onNewVulnerabilities:e.onNewVulnerabilities??(e.failOnNewVulnerabilities?"fail":"warn"),onNoLongerDetectedVulnerabilities:e.onNoLongerDetectedVulnerabilities??"ignore",reportNoLongerDetectedVulnerabilities:e.reportNoLongerDetectedVulnerabilities??!0,consoleReport:e.consoleReport??"BY_PROJECT_DETAILED",createSubDirsForProject:e.createSubDirsForProject??!0,mavenRepo:e.mavenRepo??t.DEFAULT_MAVEN_REPO,vexUrls:e.vexUrls??[],vexDir:this.resolvePath(e.vexDir)??(0,Y.resolve)(this.workingDir,t.DEFAULT_VEX_SUBDIR),outDir:this.resolvePath(e.outDir)??(0,Y.resolve)(this.workingDir,t.DEFAULT_OUT_SUBDIR),cacheDir:this.resolvePath(e.cacheDir)??(0,Y.resolve)(this.workingDir,t.DEFAULT_CACHE_SUBDIR),scanners:this.normalizeScanners(e.scanners,r),projects:this.normalizeProjects(e.projects??[],n)}}normalizeScanners(e,r){return(e??t.DEFAULT_SCANNERS).map(i=>{if(typeof i!="string")throw new Error(`Invalid scanner name '${String(i)}' in configuration file '${r}'`);let o=i.split("@");if(o.length>2)throw new Error(`Invalid scanner name '${i}' in configuration file '${r}'`);return{name:o[0],version:o[1]??""}})}normalizeProjects(e,r){return e.map(n=>{let i=n;if(!i.name)throw new Error("Project name is missing on entry: "+JSON.stringify(i));if(!i.version)throw new Error("Project version is missing on entry: "+JSON.stringify(i));if(!i.purl)throw new Error("Project purl is missing on entry: "+JSON.stringify(i));let o={...i,purlAliases:i.purlAliases??[],enabled:i.enabled??!0,silent:i.silent??!1,minimumSeverity:i.minimumSeverity??"UNKNOWN"};return o.sbomFile?{...o,sbomFile:this.resolvePath(o.sbomFile)??o.sbomFile}:{...o,detectNoLongerUsedVulnerabilities:r?o.purl.endsWith("-SNAPSHOT"):!0}})}resolvePath(e){if(e)return Y.default.isAbsolute(e)?e:(0,Y.resolve)(this.workingDir,e)}},xe=class{constructor(e){this.workingDir=e;this.normalizer=new xt(e)}workingDir;normalizer;projectConfigCache;async loadProjectConfig(){return this.projectConfigCache??=this.doLoadProjectConfig(),this.projectConfigCache}async doLoadProjectConfig(){let e=(0,Y.resolve)(this.workingDir,"vuln-scan-conf.json"),r=await H(e);if(!r)throw new Error(`Missing project configuration file '${e}'`);return this.normalizer.normalize(r,e)}async loadJiraConfig(e){let r=await(0,bt.readFile)(e,"utf8"),n=JSON.parse(r);if(!n.issues&&n.issue&&(n.issues=n.issue),!n.jiraUrl||typeof n.jiraUrl!="string")throw new Error("jira-conf.json: missing or invalid 'jiraUrl' field");if(!Array.isArray(n.issues))throw new Error("jira-conf.json: missing or invalid 'issues' array");this.validateAutoCloseSeverity(n.autoCloseBelowSeverity,"jira-conf.json: invalid 'autoCloseBelowSeverity'");for(let[i,o]of n.issues.entries())o&&typeof o=="object"&&this.validateAutoCloseSeverity(o.autoCloseBelowSeverity,`jira-conf.json: invalid 'issues[${i}].autoCloseBelowSeverity'`);return n}validateAutoCloseSeverity(e,r){if(e!==void 0&&!be.includes(e))throw new Error(`${r} value '${String(e)}'. Must be one of: ${be.join(", ")}`)}async loadAutoVexConfig(e){let r=await(0,bt.readFile)(e,"utf8"),n=JSON.parse(r);if(!n.impactStatement||typeof n.impactStatement!="string")throw new Error("auto-vex-conf.json: missing or invalid 'impactStatement' field (must be a non-empty string)");if(n.maxSeverity!==void 0&&!be.includes(n.maxSeverity))throw new Error(`auto-vex-conf.json: invalid 'maxSeverity' value '${String(n.maxSeverity)}'. Must be one of: ${be.join(", ")}`);return n}};var Ae=require("fs/promises");async function or(t,e,r){if("sbomFile"in t)return await(0,Ae.copyFile)(t.sbomFile,e),t.sbomFile=e,t;let n=await r.downloadArtifact(t.sbomMavenCoordinates);return await(0,Ae.writeFile)(e,n),{...t,sbomFile:e}}var Ve=class{constructor(e,r){this.repo=e;this.authn=r}repo;authn;async downloadArtifact(e){let r=this.toArtifactInfo(e);if(this.isSnapshotVersion(r.version)&&!r.timestamp){let o=await this.fetchLatestSnapshotTimestamp(r);r={...r,timestamp:o}}let n=this.toArtifactUrl(r),i=await we(n,this.authn);return Buffer.from(await i.arrayBuffer())}async fetchLatestSnapshotTimestamp(e){let r=`${this.toArtifactBaseUrl(e)}/maven-metadata.xml`,i=await(await we(r,this.authn)).text();return Xi(i,e)}toArtifactUrl(e){let r=this.toArtifactBaseUrl(e),n=this.isSnapshotVersion(e.version)&&e.timestamp?e.version.replace(/SNAPSHOT$/,e.timestamp):e.version;return`${r}/${e.artifactId}-${n}-${e.classifier}.${e.extension}`}toArtifactBaseUrl(e){return`${this.repo}/${e.groupId.replace(/\./g,"/")}/${e.artifactId}/${e.version}`}isSnapshotVersion(e){return e.endsWith("-SNAPSHOT")}toArtifactInfo(e){let r=e.split(":");return{groupId:r[0],artifactId:r[1],version:r[2],classifier:r[3],extension:"json"}}};function Xi(t,e){if(e.classifier&&e.extension){let i=t.match(new RegExp(`<snapshotVersion>\\s*<classifier>${e.classifier}</classifier>\\s*<extension>${e.extension}</extension>\\s*<value>([^<]+)</value>\\s*<updated>[^<]+</updated>\\s*</snapshotVersion>`)),o=e.version.replace(/SNAPSHOT$/,"");if(i?.[1])return i[1].replace(o,"")}let r=t.match(/<timestamp>([^<]+)<\/timestamp>/),n=t.match(/<buildNumber>([^<]+)<\/buildNumber>/);if(!r||!n)throw new Error(`Failed to get timestamp and build number from ${t} for artifact '${e.artifactId}'`);return`${r[1]}-${n[1]}`}var lr=require("fs/promises"),Lt=require("path"),ur=require("crypto");var Re=require("fs/promises"),Me=require("path");var sr=require("crypto");var Ji="https://openvex.dev/ns/v0.2.0";function ar(t,e="conterra"){let n=`https://openvex.dev/docs/public/vex-${(0,sr.randomUUID)()}`,i=t.timestamp??new Date().toISOString();return{"@context":Ji,"@id":n,author:e,timestamp:i,last_updated:i,version:1,statements:[t]}}function cr(t,e){let r=e.timestamp??new Date().toISOString();return{...t,last_updated:r,version:t.version+1,statements:[...t.statements,e]}}var Ie=class{constructor(e){this.location=e}location;_content=void 0;_exists=!1;get exists(){return this._exists}get content(){return this._content}set content(e){this._content=e,this._exists=e!==void 0}async read(){let e=await H(this.location);this._content=e??void 0,this._exists=this._content!==void 0}async write(){if(this._content===void 0)throw new Error(`Cannot write VexFile: content is undefined (${this.location})`);await(0,Re.mkdir)((0,Me.dirname)((0,Me.resolve)(this.location)),{recursive:!0}),await St(this.location,this._content)}async delete(){await(0,Re.unlink)(this.location),this._exists=!1}upsert(e,r){return this._content===void 0?(this._content=ar(e,r),this._exists=!0,{created:!0}):(this._content=cr(this._content,e),{created:!1})}addProductId(e,r){this.assertContentLoaded("addProductId");let n=!1;for(let i of this._content.statements){if(!i.products||i.products.some(s=>s["@id"]===r))continue;let o=i.products.findIndex(s=>s["@id"]===e);o!==-1&&(i.products.splice(o+1,0,{"@id":r}),n=!0)}return n}removeProductId(e,r){this.assertContentLoaded("removeProductId");let n=this._content.statements,i=[],o=!1;for(let s of n){if(r&&!Pt(s).has(r)||!s.products)continue;let c=s.products.findIndex(m=>m["@id"]===e);c!==-1&&(s.products.splice(c,1),o=!0,s.products.length===0&&i.push(s))}if(!o)return"unchanged";for(let s of i)n.splice(n.indexOf(s),1);return n.length===0?"emptied":"changed"}hasStatementForProduct(e){return this.assertContentLoaded("hasStatementForProduct"),this._content.statements.some(r=>r.products?.some(n=>n["@id"]===e)??!1)}assertContentLoaded(e){if(this._content===void 0)throw new Error(`VexFile.${e}(): content is not loaded. Call read() first (${this.location})`)}};async function Ne(t,e){for(let r of await(0,lr.readdir)(t,{withFileTypes:!0}))r.name.endsWith(".json")?await e(new Ie((0,Lt.resolve)(r.parentPath,r.name))):r.isDirectory()&&await Ne((0,Lt.resolve)(r.parentPath,r.name),e)}function Pt(t){let e=t.vulnerability.name;return new Set([e,...t.vulnerability.aliases??[]])}var ce=class t{statements=[];filteredToProducts=[];static async fromUrl(e,r,n=new t){let o=await(await we(e,r)).json();return n.add(o),n}static async fromFiles(e,r=new t){return await Ne(e,async n=>{await n.read(),n.content&&r.add(n.content)}),r}add(e){Gi(e);let r=e.timestamp;for(let n of e.statements){n.timestamp=n.timestamp??r;let i=Date.parse(n.timestamp),o=n.vulnerability.name,s=Pt(n),c=new Set(n.products?.map(d=>d["@id"]).filter(d=>!!d)??[]),m=new Dt(i,o,s,c,n);this.statements.push(m)}this.sortStatementsByTimestampNewestFirst()}filterByProduct(e){this.assertCorrectProductId(e);let r=new t;return r.filteredToProducts=e.slice(0),r.statements=this.statements.filter(n=>n.matchesAtLeastOneProduct(e)),r}findNotMatchingVulnerabilities(e,r){let n=this.filterByProduct(r??this.filteredToProducts),i=new Set;for(let o of n.statements)i.add(o.vulnName);for(let o of e)i.delete(o);return Array.from(i)}newestVulnerabilityStatement(e,r){let n=this.filterByProduct(r??this.filteredToProducts);for(let i of n.statements)if(i.matchesVulnerability(e))return this.reduceToProductInformation(i,n.filteredToProducts[0])}toVexFileForProduct(e){let r=this.filterByProduct(e??this.filteredToProducts),n=r.statements.map(i=>this.reduceToProductInformation(i,r.filteredToProducts[0]));return this.toVexFile(n)}toVexFile(e){let r=e.filter(o=>o.status!=="under_investigation");if(r.length===0)return;this.sortVexStatementsByTimestampNewestFirst(r);let n=r[0].timestamp;return{"@context":"https://openvex.dev/ns/v0.2.0","@id":Hi(r),author:"conterra",timestamp:n,last_updated:n,version:1,statements:r}}toVexFileWithComponentIds(e){let r=e.filter(n=>n.vexStatement).map(n=>{let i={...n.vexStatement},o=(n.components??[]).map(s=>({"@id":s}));return i.products=[...i.products??[],...o],i});return this.toVexFile(r)}assertCorrectProductId(e){if(!e||e.length===0)throw new Error("Product ID must be provided");if(this.filteredToProducts.length&&!Wi(this.filteredToProducts,e))throw new Error("Cannot filter to a different product")}reduceToProductInformation(e,r){let n={timestamp:new Date(e.timestamp).toISOString(),...e.statement};if(!r)return n;let i=n.products?.filter(o=>o["@id"]===r);return i?.length||(i=[{"@id":r}]),{...n,products:i}}sortStatementsByTimestampNewestFirst(){this.statements.sort((e,r)=>r.timestamp-e.timestamp)}sortVexStatementsByTimestampNewestFirst(e){e.sort((r,n)=>Date.parse(n.timestamp)-Date.parse(r.timestamp))}};function Wi(t,e){return t.length===e.length&&t.every((r,n)=>r===e[n])}var Dt=class{constructor(e,r,n,i,o){this.timestamp=e;this.vulnName=r;this.vulnAliases=n;this.products=i;this.statement=o}timestamp;vulnName;vulnAliases;products;statement;matchesProduct(e){return this.products.has(e)}matchesAtLeastOneProduct(e){return e.some(this.matchesProduct.bind(this))}matchesVulnerability(e){return this.vulnAliases.has(e)}};function Gi(t){if(t?.["@context"]!=="https://openvex.dev/ns/v0.2.0")throw new Error("Invalid VEX file format")}function Hi(t){let e=t.map(n=>`${n.vulnerability.name}:${n.status}`).sort().join("|");return`https://openvex.dev/docs/public/vex-${(0,ur.createHash)("sha256").update(e).digest("hex")}`}var $e=require("path"),pr=require("fs/promises");function Ki(t){throw new Error(`Unhandled value: ${String(t)}`)}var _e=class{constructor(e,r,n){this.project=e;this.outputDir=r;this.useSubDirForProject=n}project;outputDir;useSubDirForProject;async lookupOutputFileForWriting(e){let r=this.useSubDirForProject?`${this.project.name}-${this.project.version}`:"",n=`${this.project.name}-${this.project.version}-`,i=this.getFileSuffix(e),o=(0,$e.resolve)(this.outputDir,r,`${n}${i}`),s=(0,$e.dirname)(o);return await oe(s)||await(0,pr.mkdir)(s,{recursive:!0}),o}getFileSuffix(e){switch(e){case"grype-results":return"scan-grype-results.json";case"trivy-results":return"scan-trivy-results.json";case"ossindex-results":return"scan-ossindex-results.json";case"aggregate-results":return"scan-aggregate-results.json";case"aggregated-sarif-results":return"scan-aggregated-results.sarif.json";case"project-cyclonedx-sbom-file":return"sbom.cdx.json";case"project-openvex-file":return"openvex.vex.json";default:return Ki(e)}}};var mr=require("zx"),Z=class{async run(e){let{image:r,volumes:n=[],envArgs:i=[],args:o=[]}=e,s=n.flatMap(m=>["-v",m]),c=await mr.$`docker run --rm ${s} ${i} ${r} ${o}`.nothrow();return{stdout:c.stdout,stderr:c.stderr,exitCode:c.exitCode}}};var Be=require("path");var le=class{};var ue=class extends le{runner=new Z;buildDockerEnvArgs(e){return[]}buildExtraVolumes(e){return[]}async scan(e,r,n,i,o){let s=await r.lookupOutputFileForWriting(this.getOutputFileKey()),c=(0,Be.dirname)(s),d=`/tmp/output/${(0,Be.basename)(s)}`,a=`${this.dockerImage}:${this.version||this.defaultVersion}`,p=`${c}:/tmp/output`,l=`${e.sbomFile}:/tmp/input.json`,u=this.buildExtraVolumes({outputDir:c,outputFile:s,sbomFile:e.sbomFile}),f=await this.runner.run({image:a,volumes:[p,l,...u],envArgs:this.buildDockerEnvArgs(i),args:this.buildDockerArgs({outputPath:d,verbose:i})});if(f.stdout&&o(` Scan log: ${f.stdout}`),f.stderr&&o(` Scan error: ${f.stderr}`),f.exitCode!==0)throw new Error(`${this.scannerLabel} scan failed with exit code ${f.exitCode}: ${f.stderr}`);o(` ${this.scannerLabel} output file: ${s}`);try{let g=await H(s);this.parseAndAdd(g,n)}catch(g){throw new Error(`${this.scannerLabel} scan results could not be read from '${s}': ${g}`,{cause:g})}}};var fr="anchore/grype",Ue=class t extends ue{constructor(r,n){super();this.version=r;this.cacheDir=n}version;cacheDir;dockerImage=fr;defaultVersion="latest";scannerLabel="Grype";async init(r){r&&console.log(`Initializing Grype DB in cache directory: ${this.cacheDir}`);let n=`${fr}:${this.version||this.defaultVersion}`,i=await new Z().run({image:n,volumes:[`${this.cacheDir}:/tmp/.cache`],envArgs:["-e","GRYPE_DB_CACHE_DIR=/tmp/.cache","-e","TMPDIR=/tmp"],args:["db","update"]});if(i.stdout&&console.log(` Grype DB Update: ${i.stdout}`),i.stderr&&console.log(` Grype DB Update error: ${i.stderr}`),i.exitCode!==0)throw new Error(`Grype DB update failed with exit code ${i.exitCode}: ${i.stderr}`)}getOutputFileKey(){return"grype-results"}buildExtraVolumes(r){return[`${this.cacheDir}:/tmp/.cache`]}buildDockerEnvArgs(r){return["-e","GRYPE_DB_CACHE_DIR=/tmp/.cache","-e","TMPDIR=/tmp","-e","GRYPE_DB_AUTO_UPDATE=false"]}buildDockerArgs(r){let n=["sbom:/tmp/input.json","-o","json","--file",r.outputPath,"--by-cve"];return r.verbose||n.push("--quiet"),n}parseAndAdd(r,n){if(r)for(let i of r.matches)n.addVulnerability(t.createVulnerability(i),"grype")}addVulnerabilities(r,n){this.parseAndAdd(n,r)}static createVulnerability(r){let n=r.vulnerability,i=tr(n.severity);return{id:n.id,severity:i,scannerSeverity:{grype:i},title:"",description:n.description,components:[U(r.artifact.purl)],detectedBy:["grype"],refs:[U(n.dataSource)]}}};var dr="aquasec/trivy",Qi="0.70.0",zi="public.ecr.aws/aquasecurity/trivy-db,aquasec/trivy-db,ghcr.io/aquasecurity/trivy-db",qe=class t extends ue{constructor(r,n,i){super();this.version=r;this.cacheDir=n;this.githubToken=i}version;cacheDir;githubToken;dockerImage=dr;defaultVersion=Qi;scannerLabel="Trivy";async init(r){let n=[];this.githubToken&&n.push("-e",`GITHUB_TOKEN=${this.githubToken}`);let i=["--db-repository",zi,"--cache-dir","/.cache","sbom","--download-db-only"];r||i.push("--quiet");let o=`${dr}:${this.version||this.defaultVersion}`,s=await new Z().run({image:o,volumes:[`${this.cacheDir}:/.cache`],envArgs:n,args:i});if(!s.stdout&&!s.stderr&&console.log(" Trivy DB Update: finished"),s.stdout&&console.log(` Trivy DB Update: ${s.stdout}`),s.stderr&&console.log(` Trivy DB Update error: ${s.stderr}`),s.exitCode!==0)throw new Error(`Trivy DB update failed with exit code ${s.exitCode}: ${s.stderr}`)}getOutputFileKey(){return"trivy-results"}buildExtraVolumes(r){return[`${this.cacheDir}:/.cache`]}buildDockerArgs(r){let n=["sbom","--cache-dir","/.cache","--format","json","--output",r.outputPath,"--skip-db-update","/tmp/input.json"];return r.verbose||n.push("--quiet"),n}parseAndAdd(r,n){if(r){for(let i of r.Results??[])if(i.Vulnerabilities)for(let o of i.Vulnerabilities)n.addVulnerability(t.createVulnerability(o),"trivy")}}addVulnerabilities(r,n){this.parseAndAdd(n,r)}static createVulnerability(r){let n=rr(r.Severity);return{id:r.VulnerabilityID,severity:n,scannerSeverity:{trivy:n},title:r.Title,description:r.Description,components:[U(r.PkgIdentifier.PURL)],detectedBy:["trivy"],refs:[U(r.PrimaryURL)]}}};var Sr=require("fs/promises");function Et(t,e=""){return hr(t,e,new Set,new Set)}function hr(t,e="",r,n){let i=`${e}- ${t.purl}`;if(r.has(t.purl))return i+=" (cycle detected)",i;if(n.has(t.purl))return i+=" (deduplicated)",i;n.add(t.purl),r.add(t.purl);let o=r.size===1;for(let s of t.usedBy){let c=hr(s,e+(o?" ":" "),r,n);c!==""&&(i+=`
10
+ `,i+=c)}return r.delete(t.purl),i}var pe=class t{constructor(e){this.sbom=e;for(let r of this.sbom.components||[]){let n={purl:U(r.purl),usedBy:[]};n.purl&&(this.purlToComponent.has(n.purl)||(this.purlToComponent.set(n.purl,n),this.sbomRefToComponent.set(r["bom-ref"],n)))}for(let r of this.sbom.dependencies||[]){let n=this.sbomRefToComponent.get(r.ref);if(n)for(let i of r.dependsOn||[]){let o=this.sbomRefToComponent.get(i);o&&!o.usedBy.includes(n)&&o.usedBy.push(n)}}}sbom;static createForSbom(e){return new t(e)}static printTree(e,r=""){return Et(e,r)}sbomRefToComponent=new Map;purlToComponent=new Map;findUsagesOfComponent(e){if(!this.sbom)return{purl:e,usedBy:[]};let r=this.purlToComponent.get(e);return r?yr(r):{purl:e,usedBy:[]}}};function yr(t,e=new Set){let r={purl:t.purl,usedBy:[]};if(e.has(t.purl))return r;e.add(t.purl);for(let n of t.usedBy){let i=yr(n,new Set(e));r.usedBy.push(i)}return r}var me=class t{constructor(e,r){this.filePath=e;this.sbom=r}filePath;sbom;static async fromFile(e){let r=await H(e);if(!r)throw new Error(`Could not read SBOM file '${e}'`);if(!r.components||r.components.length===0)throw new Error(`SBOM file '${e}' does not contain any components`);return new t(e,r)}get path(){return this.filePath}getComponents(){return this.sbom.components??[]}getExternalComponents(e=Yi){return this.getComponents().filter(e)}buildDependencyTree(){return pe.createForSbom(this.sbom)}};function Yi(t){return!!t.purl}var Xe=class{components=new Map;has(e){return this.components.has(e)}update(e,r){for(let n of r)this.components.set(U(n.coordinates),n);for(let n of e)this.components.has(n)||this.components.set(n,{coordinates:n,description:"",reference:"",vulnerabilities:[]})}read(e){let r=[];for(let n of e){let i=this.components.get(n);i&&r.push(i)}return r}};var gr=128,Zi="https://api.guide.sonatype.com",Je=class t{cache=new Xe;baseUrl;authHeader;constructor(e={}){this.baseUrl=e.baseUrl??Zi,e.user&&e.token&&(this.authHeader=wt(e.user,e.token))}async fetchVulnerableComponents(e,r){let n=new Set(e.map(m=>m.replace(/\?.*$/,"")));t.addSnapshotBaseCoordinates(n);let i=Array.from(n),o=i.filter(m=>!this.cache.has(m));r?.(` Sonatype OssIndex: ${o.length} packages to fetch, ${i.length-o.length} cache hits`);let s=this.authHeader?"/authorized":"",c=`${this.baseUrl}/api/v3${s}/component-report`;for(let m=0;m<o.length;m+=gr){let d=o.slice(m,m+gr),a=JSON.stringify({coordinates:d});r?.(` Sonatype OssIndex request ${c} with body: ${a}`);let p={"Content-Type":"application/vnd.ossindex.component-report-request.v1+json"};this.authHeader&&(p.Authorization=this.authHeader);let u=await(await fetch(c,{method:"POST",headers:p,body:a})).json();Array.isArray(u)?this.cache.update(d,u):r?.(` Sonatype OssIndex Error: ${u.code} - ${u.message}`)}return this.cache.read(i).filter(m=>m.vulnerabilities.length>0)}static addSnapshotBaseCoordinates(e){let r=/(-SNAPSHOT|-\d{8}\.\d{6}-\d+)(?=(?:\?|$))/;for(let n of Array.from(e)){let i=n.replace(r,"");i!==n&&e.add(i)}}};var We=class t extends le{client;constructor(e={}){super(),this.client=new Je(e)}async init(){}async scan(e,r,n,i,o){let s=await r.lookupOutputFileForWriting("ossindex-results");try{let d=(await me.fromFile(e.sbomFile)).getExternalComponents(l=>!!l.purl&&!eo(l)).map(l=>l.purl),a=i?l=>o(` [${e.name}] ${l}`):void 0,p=await this.client.fetchVulnerableComponents(d,a);await(0,Sr.writeFile)(s,JSON.stringify(p,null,2)),o(` Sonatype OssIndex output file: ${s}`),this.addVulnerabilities(n,p)}catch(c){throw new Error(`Sonatype OSS Index scan failed: ${c}`,{cause:c})}}addVulnerabilities(e,r){if(r)for(let n of r)for(let i of n.vulnerabilities)e.addVulnerability(t.createVulnerability(i,n.coordinates),"ossindex")}static createVulnerability(e,r){let n=U(e.reference),i=nr(e.cvssScore);return{id:e.cve||e.id,severity:i,scannerSeverity:{ossindex:i},title:e.title,description:e.description,components:[U(r)],detectedBy:["ossindex"],refs:n?[n]:[]}}};function eo(t){return t.group?t.group.startsWith("de.conterra")||t.group.startsWith("org.n52.security"):!1}function to(t,e,r){switch(t.name){case"grype":return new Ue(t.version,e);case"trivy":return new qe(t.version,e,r.trivyGithubToken);case"ossindex":return new We({user:r.ossIndexApiUser,token:r.ossIndexApiToken,baseUrl:r.ossIndexBaseUrl})}}var Ge=class{scanners;constructor(e,r,n){this.scanners=e.map(i=>to(i,r,n))}async init(e){await Promise.all(this.scanners.map(r=>r.init(e)))}async scanProject(e,r,n,i,o){await Promise.all(this.scanners.map(s=>s.scan(e,r,n,i,o)))}};async function vr(t,e,r){await Ne(t,async n=>{await n.read();let i=n.removeProductId(e,r);i==="emptied"?(console.info(`Remove ${e} from ${n.location} and delete file.`),await n.delete()):i==="changed"&&(console.info(`Remove ${e} from ${n.location}`),await n.write())})}var xr=require("fs/promises"),Pr=require("path");var He=class{data={hasError:!1,hasNewVuln:!1,hasNoLongerDetectedVuln:!1,cveDetails:new Map,vulnToProjects:new Map,noLongerDetectedVulnToProjects:new Map,projectToVulns:new Map,projectToNotLongerDetectedVulns:new Map,projectErrors:[],projectsToComponents:new Map};feed(e){let r=e.project,n=`${r.name}@${r.version}`;if(e.error&&(this.data.hasError=!0,this.data.projectErrors.push({project:n,error:e.error.message})),r.silent)return;let i=e.newVulns.filter(o=>!er(o.severity,r.minimumSeverity));for(let o of i){this.data.hasNewVuln=!0,this.mergeVulnDetails(o),this.data.vulnToProjects.has(o.id)||this.data.vulnToProjects.set(o.id,[]),this.data.projectToVulns.has(n)||this.data.projectToVulns.set(n,[]),this.data.projectsToComponents.has(n)||this.data.projectsToComponents.set(n,new Map),this.data.projectToVulns.get(n).push(o.id),this.data.vulnToProjects.get(o.id).push(n);for(let s of o.componentTree){if(!s.purl)continue;let c=this.data.projectsToComponents.get(n);c.has(s.purl)||c.set(s.purl,s)}}for(let o of e.noLongerDetectedVulns)this.data.hasNoLongerDetectedVuln=!0,this.data.noLongerDetectedVulnToProjects.has(o)||this.data.noLongerDetectedVulnToProjects.set(o,[]),this.data.projectToNotLongerDetectedVulns.has(n)||this.data.projectToNotLongerDetectedVulns.set(n,[]),this.data.projectToNotLongerDetectedVulns.get(n).push(o),this.data.noLongerDetectedVulnToProjects.get(o).push(n)}feedAll(e){for(let r of e.values())this.feed(r)}getData(){return this.data}toScanSummary(){let{data:e}=this;return{errors:e.projectErrors,vulnerabilities:Object.fromEntries(e.cveDetails),vulnerabilityToProject:Object.fromEntries(e.vulnToProjects.entries()),projectToVulnerability:Object.fromEntries(e.projectToVulns.entries()),projectsToComponents:Object.fromEntries(Array.from(e.projectsToComponents.entries()).map(([r,n])=>[r,Object.fromEntries(n.entries())])),noLongerDetectedVulnerabilities:Object.fromEntries(e.noLongerDetectedVulnToProjects)}}mergeVulnDetails(e){if(!this.data.cveDetails.has(e.id)){this.data.cveDetails.set(e.id,{id:e.id,title:e.title,severity:e.severity,description:e.description,components:e.components,refs:e.refs});return}let r=this.data.cveDetails.get(e.id);r.title=r.title||e.title,r.severity=K(r.severity,e.severity)>=0?r.severity:e.severity,r.description=r.description||e.description,r.components=wr(r.components,e.components),r.refs=wr(r.refs,e.refs)}};function wr(t,e){return Array.from(new Set([...t,...e]))}var Qe=require("fs/promises"),br=require("path");var Ke=class{constructor(e={}){this.options=e}options;summaryLogFile;async render(e){let{orderBy:r="CVE",reportNoLongerDetectedVulnerabilities:n=!0,reportCveDetails:i=!1,outputDirectory:o}=this.options;return o&&(this.summaryLogFile=(0,br.join)(o,"scan-summary.txt"),await(0,Qe.writeFile)(this.summaryLogFile,"","utf8")),await this.log("=== Scan summary ==="),e.projectErrors.length&&await this.logErrors(e.projectErrors),i&&await this.logCveDetails(e.cveDetails,e.projectsToComponents),r==="CVE"?await this.logOrderedByCve(e.vulnToProjects,e.cveDetails,n?e.noLongerDetectedVulnToProjects:new Map):await this.logOrderedByProject(e.projectToVulns,n?e.projectToNotLongerDetectedVulns:new Map,e.cveDetails),!e.hasError&&!e.hasNewVuln&&(!e.hasNoLongerDetectedVuln||!n)&&await this.log(" No issues found"),{hasError:e.hasError,hasNewVuln:e.hasNewVuln,hasNoLongerDetectedVuln:e.hasNoLongerDetectedVuln}}async log(e){console.log(e),this.summaryLogFile&&await(0,Qe.appendFile)(this.summaryLogFile,e+`
11
+ `,"utf8")}async logErrors(e){await this.log(""),await this.log("- Errors during scan:");for(let{project:r,error:n}of e)await this.log(` - ${r}:`),await this.log(` Error: ${n}`)}async logOrderedByCve(e,r,n){let i=Array.from(e.keys()).sort(Ct(s=>r.get(s)));if(i.length){await this.log(""),await this.log("- New vulnerabilities:");for(let s of i){let c=e.get(s),{severity:m}=r.get(s);await this.log(` - [${m}] ${s}`);for(let d of c.slice().sort())await this.log(` - ${d}`)}}let o=Array.from(n.keys()).sort();if(o.length){await this.log(""),await this.log("- Declared but no longer detected vulnerabilities:");for(let s of o){let c=n.get(s);await this.log(` - ${s}`);for(let m of c.slice().sort())await this.log(` - ${m}`)}}}async logOrderedByProject(e,r,n){let i=new Set([...Array.from(e.keys()),...Array.from(r.keys())]),o=Array.from(i.keys()).sort();if(o.length){await this.log(""),await this.log("- Vulnerabilities by project:");for(let s of o){await this.log(` - ${s}:`);let c=e.get(s)??[];for(let d of c.slice().sort(Ct(a=>n.get(a)))){let{severity:a}=n.get(d);await this.log(` - [${a}] ${d}`)}let m=(r.get(s)??[]).slice().sort();for(let d of m)await this.log(` - ${d} (no longer detected)`)}}}async logCveDetails(e,r){if(e.size===0)return;await this.log(""),await this.log("- Vulnerability details:");let n=Array.from(e.keys()).sort(Ct(i=>e.get(i)));for(let i of n){let o=e.get(i);if(await this.log(` - [${o.severity}] ${o.id} - ${o.title||""}:`),o.description){await this.log(" Description:");for(let s of o.description.split(/\r?\n/))await this.log(` ${s}`)}if(o.components.length){await this.log(" Components:");for(let s of o.components)await this.log(" - "+s);if(r){for(let s of o.components)for(let[c,m]of r.entries())if(m.has(s)){await this.log(` Usage Tree of ${s} by ${c} (as example):`),await this.log(pe.printTree(m.get(s)," "));break}}}if(o.refs.length){await this.log(" Links:");for(let s of o.refs)await this.log(` - ${s}`)}}}};function Ct(t){return(e,r)=>{let n=K(t(r).severity,t(e).severity);return n!==0?n:e.localeCompare(r)}}async function Lr(t,e){let r=new He;r.feedAll(t);let n=r.getData(),o=await new Ke(e).render(n);if(e.outputDirectory){let s=(0,Pr.join)(e.outputDirectory,"scan-summary.json");await(0,xr.writeFile)(s,JSON.stringify(r.toScanSummary(),null,2),"utf8")}return o}var mt=require("fs/promises");var ze=class{constructor(e){this.depProvider=e}depProvider;allById=new Map;getAllVulnIds(){return new Set(this.allById.keys())}getAllVulnerabilitiesSortedBySeverity(){let e=Array.from(this.allById.values());return e.sort((r,n)=>{let i=K(r.severity,n.severity);return i===0?r.id.localeCompare(n.id):-i}),e}addVulnerability(e,r){let n=e.id,i=this.allById,o=e;if(!i.has(n))i.set(n,e),o=e;else{let s=i.get(n);s.title=s.title||e.title,s.severity=Zt(s.severity,e.severity),s.scannerSeverity[r]=e.severity,s.detectedBy=Ot(s.detectedBy,r),s.components=Ot(s.components,e.components[0]),s.refs=Ot(s.refs,e.refs[0]),o=s}o.componentTree=o.components?.map(s=>this.depProvider.findUsagesOfComponent(s))}enhanceWithVexData(e){let r=[];for(let n of this.allById.values()){let i=e.newestVulnerabilityStatement(n.id);if(!i){r.push({id:n.id,severity:n.severity,title:n.title,description:n.description,components:n.components??[],componentTree:n.componentTree??[],refs:n.refs});continue}n.vexStatement=i}return{unmatchedVulnerabilities:r}}};function Ot(t,e){return e==null?t:Array.from(new Set([...t,e]).values())}var ie=Te(Oi());var Ti=Te(Fi());var Ht={kind:"external",status:"accepted"};function ki(t,e){let r=new ie.SarifRunBuilder().initSimple({toolDriverName:`${e.name}@${e.version}`,toolDriverVersion:"0.0.1"}),n=new Date().toISOString().split("T")[0];r.run.tool.driver.fullDescription={text:`Security Scan from ${n}`},r.run.tool.driver.properties={"microsoft/qualityDomain":`Security Scan from ${n}`};for(let o of t){let s=ir(o.severity),c=o.id,m=wa(o.refs),d=new ie.SarifRuleBuilder().initSimple({ruleId:c,shortDescriptionText:o.title,fullDescriptionText:o.description,helpUri:m}),a=o.vexStatement,p,l="new",u="";a?(p=[{...Ht}],l="updated",u=`--- INVESTIGATED (${a.status}) --- `,a.status==="under_investigation"&&(p[0].status="underReview",u="--- UNDER INVESTIGATION --- ")):K(e.minimumSeverity,o.severity)>0?(p=[{...Ht}],l="updated",u=`--- BELOW MINIMUM SEVERITY '${e.minimumSeverity}' ---`):e.silent&&(p=[{...Ht}],l="updated",u="--- PROJECT SILENT ---"),Object.assign(d.rule,{name:`${u}[${o.severity}] - ${o.title.replace(`[${c}]`,"")}`,messageStrings:{default:{text:o.description,markdown:ba(o,m,u)}},properties:{severity:o.severity,scanners:o.scannerSeverity,links:o.refs,tags:["cve","vulnerability","security",`severity_${o.severity.toLowerCase()}`]}}),r.addRule(d);for(let f of o.components){let g=new ie.SarifResultBuilder().initSimple({ruleId:c,level:s,messageText:`${c} [${o.severity}] - ${f}`});g.result.message.id="default",g.result.locations=[{logicalLocations:[{fullyQualifiedName:f}]}],g.result.baselineState=l,g.result.suppressions=p,r.addResult(g)}}let i=new ie.SarifBuilder;return i.addRun(r),i.buildSarifOutput()}function wa(t){for(let e of t)if(e.startsWith("https://nvd.nist.gov"))return e;return t[0]}function ba(t,e,r){let n=t.vexStatement,i=n?`
11
12
  ${r}
12
13
  ${n.justification??""}
13
14
  ${n.impact_statement??""}
@@ -19,7 +20,7 @@ ${i}
19
20
 
20
21
  --- DETAILS ---
21
22
 
22
- ${(0,Yn.default)(t.description)}
23
+ ${(0,Ti.default)(t.description)}
23
24
 
24
25
  ${t.refs.map(o=>`* <${o}>`).join(`
25
26
  `)}
@@ -32,12 +33,11 @@ ${t.refs.map(o=>`* <${o}>`).join(`
32
33
  Usage tree:
33
34
 
34
35
  \`\`\`plain
35
- ${t.componentTree?.map(o=>Ge(o)).join(`
36
+ ${t.componentTree?.map(o=>Et(o)).join(`
36
37
  `)}
37
38
  \`\`\`
38
- `}var We=require("fs/promises");async function Kn(t,e,r){if("sbomFile"in t)return await(0,We.copyFile)(t.sbomFile,e),t.sbomFile=e,t;let n=await r.downloadArtifact(t.sbomMavenCoordinates);return await(0,We.writeFile)(e,n),{...t,sbomFile:e}}var Je=class{constructor(e,r){this.repo=e;this.authn=r}repo;authn;async downloadArtifact(e){let r=this.toArtifactInfo(e);if(this.isSnapshotVersion(r.version)&&!r.timestamp){let o=await this.fetchLatestSnapshotTimestamp(r);r={...r,timestamp:o}}let n=this.toArtifactUrl(r),i=await Se(n,this.authn);return Buffer.from(await i.arrayBuffer())}async fetchLatestSnapshotTimestamp(e){let r=`${this.toArtifactBaseUrl(e)}/maven-metadata.xml`,i=await(await Se(r,this.authn)).text();return Xs(i,e)}toArtifactUrl(e){let r=this.toArtifactBaseUrl(e),n=this.isSnapshotVersion(e.version)&&e.timestamp?e.version.replace(/SNAPSHOT$/,e.timestamp):e.version;return`${r}/${e.artifactId}-${n}-${e.classifier}.${e.extension}`}toArtifactBaseUrl(e){return`${this.repo}/${e.groupId.replace(/\./g,"/")}/${e.artifactId}/${e.version}`}isSnapshotVersion(e){return e.endsWith("-SNAPSHOT")}toArtifactInfo(e){let r=e.split(":");return{groupId:r[0],artifactId:r[1],version:r[2],classifier:r[3],extension:"json"}}};function Xs(t,e){if(e.classifier&&e.extension){let i=t.match(new RegExp(`<snapshotVersion>\\s*<classifier>${e.classifier}</classifier>\\s*<extension>${e.extension}</extension>\\s*<value>([^<]+)</value>\\s*<updated>[^<]+</updated>\\s*</snapshotVersion>`)),o=e.version.replace(/SNAPSHOT$/,"");if(i?.[1])return i[1].replace(o,"")}let r=t.match(/<timestamp>([^<]+)<\/timestamp>/),n=t.match(/<buildNumber>([^<]+)<\/buildNumber>/);if(!r||!n)throw new Error(`Failed to get timestamp and build number from ${t} for artifact '${e.artifactId}'`);return`${r[1]}-${n[1]}`}var He=require("fs/promises"),Ct=require("path");var Tt=class{constructor(e){this.location=e}location;async read(){let e=await X(this.location);if(!e)throw new Error("Invalid VEX file");return e}async write(e){await st(this.location,e)}async delete(){await(0,He.unlink)(this.location)}};async function Ye(t,e){for(let r of await(0,He.readdir)(t,{withFileTypes:!0}))r.name.endsWith(".json")?await e(new Tt((0,Ct.resolve)(r.parentPath,r.name))):r.isDirectory()&&await Ye((0,Ct.resolve)(r.parentPath,r.name),e)}function It(t){let e=t.vulnerability.name;return new Set([e,...t.vulnerability.aliases??[]])}var ye=class t{statements=[];filteredToProducts=[];static async fromUrl(e,r,n=new t){let o=await(await Se(e,r)).json();return n.add(o),n}static async fromFiles(e,r=new t){return await Ye(e,async n=>{let i=await n.read();r.add(i)}),r}add(e){Js(e);let r=e.timestamp;for(let n of e.statements){n.timestamp=n.timestamp??r;let i=Date.parse(n.timestamp),o=n.vulnerability.name,s=It(n),c=new Set(n.products?.map(f=>f["@id"]).filter(f=>!!f)??[]),p=new jt(i,o,s,c,n);this.statements.push(p)}this.sortStatementsByTimestampNewestFirst()}filterByProduct(e){if(this.assertCorrectProductId(e),this.filteredToProducts.length)return this;let r=new t;return r.filteredToProducts=e.slice(0),r.statements=this.statements.filter(n=>n.matchesAtLeastOneProduct(e)),r}findNotMatchingVulnerabilities(e,r){let n=this.filterByProduct(r??this.filteredToProducts),i=new Set;for(let o of n.statements)i.add(o.vulnName);for(let o of e)i.delete(o);return Array.from(i)}newestVulnerabilityStatement(e,r){let n=this.filterByProduct(r??this.filteredToProducts);for(let i of n.statements)if(i.matchesVulnerability(e))return this.reduceToProductInformation(i,n.filteredToProducts[0])}toVexFileForProduct(e){let r=this.filterByProduct(e??this.filteredToProducts),n=r.statements.map(i=>this.reduceToProductInformation(i,r.filteredToProducts[0]));return this.toVexFile(n)}toVexFile(e){let r=e.filter(i=>i.status!=="under_investigation");if(r.length===0)return;this.sortVexStatementsByTimestampNewestFirst(r);let n=r[0].timestamp;return{"@context":"https://openvex.dev/ns/v0.2.0","@id":"https://openvex.dev/docs/public/vex-fc763e6eb63bfbcda20b7cbbddd4e9f8feaaa317fe8d8a6f51a5663a1180343e",author:"conterra",timestamp:n,last_updated:n,version:1,statements:r}}assertCorrectProductId(e){if(!e||e.length===0)throw new Error("Product ID must be provided");if(this.filteredToProducts.length&&!Gs(this.filteredToProducts,e))throw new Error("Cannot filter to a different product")}reduceToProductInformation(e,r){let n={timestamp:new Date(e.timestamp).toISOString(),...e.statement};if(!r)return n;let i=n.products?.filter(o=>o["@id"]===r);return i?.length||(i=[{"@id":r}]),{...n,products:i}}sortStatementsByTimestampNewestFirst(){this.statements.sort((e,r)=>r.timestamp-e.timestamp)}sortVexStatementsByTimestampNewestFirst(e){e.sort((r,n)=>Date.parse(n.timestamp)-Date.parse(r.timestamp))}};function Gs(t,e){return t.length===e.length&&t.every((r,n)=>r===e[n])}var jt=class{constructor(e,r,n,i,o){this.timestamp=e;this.vulnName=r;this.vulnAliases=n;this.products=i;this.statement=o}timestamp;vulnName;vulnAliases;products;statement;matchesProduct(e){return this.products.has(e)}matchesAtLeastOneProduct(e){return e.some(this.matchesProduct.bind(this))}matchesVulnerability(e){return this.vulnAliases.has(e)}};function Js(t){if(t?.["@context"]!=="https://openvex.dev/ns/v0.2.0")throw new Error("Invalid VEX file format")}var Ke=require("path"),zn=require("fs/promises");var Qe=class{constructor(e,r,n){this.project=e;this.outputDir=r;this.useSubDirForProject=n}project;outputDir;useSubDirForProject;async lookupOutputFileForWriting(e){let r=this.useSubDirForProject?`${this.project.name}-${this.project.version}`:"",n=`${this.project.name}-${this.project.version}-`,i=this.getFileSuffix(e),o=(0,Ke.resolve)(this.outputDir,r,`${n}${i}`),s=(0,Ke.dirname)(o);return await se(s)||await(0,zn.mkdir)(s,{recursive:!0}),o}getFileSuffix(e){switch(e){case"grype-results":return"scan-grype-results.json";case"trivy-results":return"scan-trivy-results.json";case"ossindex-results":return"scan-ossindex-results.json";case"aggregate-results":return"scan-aggregate-results.json";case"aggregated-sarif-results":return"scan-aggregated-results.sarif.json";case"project-cyclonedx-sbom-file":return"sbom.cdx.json";case"project-openvex-file":return"openvex.vex.json";default:throw new Error(`Unknown output file key: ${e}`)}}};var Ft=require("zx");var ze=require("path"),Zn="anchore/grype";async function ei(t,e,r){r&&console.log(`Initializing Grype DB in cache directory: ${e}`);let n=`${Zn}:${t||"latest"}`,i=await Ft.$`docker run --rm -v '${e}:/tmp/.cache' -e GRYPE_DB_CACHE_DIR=/tmp/.cache -e TMPDIR=/tmp ${n} db update`.nothrow();if(i.stdout&&console.log(` Grype DB Update: ${i.stdout}`),i.stderr&&console.log(` Grype DB Update error: ${i.stderr}`),i.exitCode!==0)throw new Error(`Grype DB update failed with exit code ${i.exitCode}: ${i.stderr}`)}async function ti(t,e,r,n,i,o,s){let c=(0,ze.dirname)(r),p=(0,ze.basename)(r),f=[];o||f.push("--quiet");let a=`${Zn}:${t||"latest"}`,m=`${e}:/tmp/.cache`,u=`${c}:/tmp/output`,l=`${n.sbomFile}:/tmp/input.json`,d=`/tmp/output/${p}`,y=await Ft.$`docker run --rm -v ${m} -v ${u} -v ${l} -e GRYPE_DB_CACHE_DIR=/tmp/.cache -e TMPDIR=/tmp -e GRYPE_DB_AUTO_UPDATE=false ${a} sbom:/tmp/input.json -o json --file ${d} --by-cve ${f}`.nothrow();if(y.stdout&&s(` Scan log: ${y.stdout}`),y.stderr&&s(` Scan error: ${y.stderr}`),y.exitCode!==0)throw new Error(`Grype scan failed with exit code ${y.exitCode}: ${y.stderr}`);s(` Grype output file: ${r}`);try{let S=await X(r);Ws(i,S)}catch(S){throw new Error(`Grype scan results could not be read from '${r}': ${S}`,{cause:S})}}function Ws(t,e){if(e)for(let r of e.matches){let n=Hs(r);t.addVulnerability(n,"grype")}}function Hs(t){let e=t.vulnerability,r=e.id,n=J(t.artifact.purl),i=J(e.dataSource),o=Ys(e.severity);return{id:r,severity:o,scannerSeverity:{grype:o},title:"",description:e.description,components:[n],detectedBy:["grype"],refs:[i]}}function Ys(t){switch(t){case"Negligible":return"LOW";case"Low":return"LOW";case"Medium":return"MEDIUM";case"High":return"HIGH";case"Critical":return"CRITICAL";default:return"UNKNOWN"}}var ri=require("fs/promises"),Nt=class{components=new Map;clear(){this.components.clear()}has(e){return this.components.has(e)}update(e,r){for(let n of r)this.components.set(J(n.coordinates),n);for(let n of e)this.components.has(n)||this.components.set(n,{coordinates:n,description:"",reference:"",vulnerabilities:[]})}read(e){let r=[];for(let n of e){let i=this.components.get(n);i&&r.push(i)}return r}},Mt=new Nt;async function ni(t,e,r,n="https://api.guide.sonatype.com",i,o,s){try{let c={},p="";r.user&&r.token&&(c.Authorization=`Basic ${Buffer.from(`${r.user}:${r.token}`).toString("base64")}`,p="/authorized");let f=`${n}/api/v3${p}/component-report`,a=await Qs(e.sbomFile),m=new Set(a.map(y=>y.purl.replace(/\?.*$/,"")));ra(m);let u=Array.from(m),l=u.filter(y=>!Mt.has(y));o&&s(` Sonatype OssIndex will analyze ${l.length} packages for project ${e.name}, cache hit for ${u.length-l.length} packages.`);for(let y=0;y<l.length;y+=128){let S=l.slice(y,y+128),w=JSON.stringify({coordinates:S});o&&s(` Sonatype OssIndex request ${f} with body: ${w}`);let b=await(await fetch(f,{method:"POST",headers:{...c,"Content-Type":"application/vnd.ossindex.component-report-request.v1+json"},body:w})).json();Array.isArray(b)?Mt.update(S,b):s(` Sonatype OssIndex Error: ${b.code} - ${b.message}`)}let d=Mt.read(u).filter(y=>y.vulnerabilities.length>0);await(0,ri.writeFile)(t,JSON.stringify(d,null,2)),s(` Sonatype OssIndex output file: ${t}`),Zs(i,d)}catch(c){throw new Error(`Sonatype OSS Index scan failed: ${c}`,{cause:c})}}async function Qs(t){return(await X(t)).components.filter(r=>Ks(r)&&!zs(r))}function Ks(t){return!!t.purl}function zs(t){return t.group?t.group.startsWith("de.conterra")||t.group.startsWith("org.n52.security"):!1}function Zs(t,e){if(e)for(let r of e)for(let n of r.vulnerabilities){let i=ea(n,r.coordinates);t.addVulnerability(i,"ossindex")}}function ea(t,e){let r=t.cve||t.id,n=J(e),i=J(t.reference),o=ta(t.cvssScore);return{id:r,severity:o,scannerSeverity:{ossindex:o},title:t.title,description:t.description,components:[n],detectedBy:["ossindex"],refs:i?[i]:[]}}function ta(t){return t===0?"UNKNOWN":t<4?"LOW":t<7?"MEDIUM":t<9?"HIGH":"CRITICAL"}function ra(t){let e=Array.from(t);for(let r of e){let n=r.replace(/(@[^-]+)-.*$/g,"$1");t.add(n)}}var Rt=require("zx");var Ze=require("path"),ii="aquasec/trivy",oi="0.70.0";async function si(t,e,r,n){let i=[];r&&(i.push("-e"),i.push(`GITHUB_TOKEN=${r}`));let o=[];o.push("--db-repository"),o.push("public.ecr.aws/aquasecurity/trivy-db,aquasec/trivy-db,ghcr.io/aquasecurity/trivy-db"),n||o.push("--quiet");let s=`${ii}:${t||oi}`,c=await Rt.$`docker run --rm -v '${e}:/.cache' ${i} ${s} ${o} --cache-dir '/.cache' sbom --download-db-only`.nothrow();if(!c.stdout&&!c.stderr&&console.log(" Trivy DB Update: finished"),c.stdout&&console.log(` Trivy DB Update: ${c.stdout}`),c.stderr&&console.log(` Trivy DB Update error: ${c.stderr}`),c.exitCode!==0)throw new Error(`Trivy DB update failed with exit code ${c.exitCode}: ${c.stderr}`)}async function ai(t,e,r,n,i,o,s){let c=(0,Ze.dirname)(r),p=(0,Ze.basename)(r),f=[];o||f.push("--quiet");let a=`${ii}:${t||oi}`,m=`${e}:/.cache`,u=`${c}:/tmp/output`,l=`${n.sbomFile}:/tmp/input.json`,d=`/tmp/output/${p}`,y=await Rt.$`docker run --rm -v ${m} -v ${u} -v ${l} ${a} sbom --cache-dir '/.cache' --format json --output ${d} ${f} --skip-db-update /tmp/input.json`.nothrow();if(y.stdout&&s(` Scan log: ${y.stdout}`),y.stderr&&s(` Scan error: ${y.stderr}`),y.exitCode!==0)throw new Error(`Trivy scan failed with exit code ${y.exitCode}: ${y.stderr}`);s(` Trivy output file: ${r}`);try{let S=await X(r);na(i,S)}catch(S){throw new Error(`Trivy scan results could not be read from '${r}': ${S}`,{cause:S})}}function na(t,e){if(e){for(let r of e.Results??[])if(r.Vulnerabilities)for(let n of r.Vulnerabilities){let i=ia(n);t.addVulnerability(i,"trivy")}}}function ia(t){let e=t.VulnerabilityID,r=J(t.PkgIdentifier.PURL),n=J(t.PrimaryURL),i=oa(t.Severity);return{id:e,severity:i,scannerSeverity:{trivy:i},title:t.Title,description:t.Description,components:[r],detectedBy:["trivy"],refs:[n]}}function oa(t){switch(t){case"UNKNOWN":case"LOW":case"MEDIUM":case"HIGH":case"CRITICAL":return t;default:return"UNKNOWN"}}var et=class{constructor(e,r,n){this.scanners=e;this.cacheDir=r;this.options=n}scanners;cacheDir;options;async init(e){let r=[];for(let n of this.scanners)switch(n.name){case"grype":r.push(ei(n.version,this.cacheDir,e));break;case"trivy":r.push(si(n.version,this.cacheDir,this.options.trivyGithubToken,e));break;case"ossindex":continue}await Promise.all(r)}async scanProject(e,r,n,i,o){let s=[];for(let c of this.scanners)s.push(this.scanProjectBy(c,e,r,this.cacheDir,n,this.options.ossIndexBaseUrl,this.options.ossIndexApiUser,this.options.ossIndexApiToken,i,o));await Promise.all(s)}async scanProjectBy(e,r,n,i,o,s,c,p,f,a){switch(e.name){case"grype":return ti(e.version,i,await n.lookupOutputFileForWriting("grype-results"),r,o,f,a);case"trivy":return ai(e.version,i,await n.lookupOutputFileForWriting("trivy-results"),r,o,f,a);case"ossindex":return ni(await n.lookupOutputFileForWriting("ossindex-results"),r,{user:c,token:p},s,o,f,a)}}};async function ci(t,e,r){await Ye(t,async n=>{let i=await n.read(),o=!1,s=i.statements,c=[];for(let p of s){if(r&&!It(p).has(r)||!p.products)continue;let f=p.products.findIndex(a=>a["@id"]===e);f!==-1&&(p.products.splice(f,1),o=!0,p.products.length===0&&c.push(p))}if(o){for(let p of c){let f=s.indexOf(p);s.splice(f,1)}if(s.length===0){console.info(`Remove ${e} from ${n.location} and delete file.`),await n.delete();return}console.info(`Remove ${e} from ${n.location}`),await n.write(i)}})}var ke=require("fs/promises"),Vt=require("path");async function ui(t,e){let{orderBy:r,reportNoLongerDetectedVulnerabilities:n,reportCveDetails:i,outputDirectory:o}={orderBy:"CVE",reportNoLongerDetectedVulnerabilities:!0,reportCveDetails:!1,...e},s=!1,c=!1,p=!1,f=new Map,a=new Map,m=new Map,u=new Map,l=new Map,d=[],y=new Map;for(let b of t.values()){let G=b.project,R=`${G.name}@${G.version}`;if(b.error&&(s=!0,d.push({project:R,error:b.error})),G.silent)continue;let nt=U[G.minimumSeverity],he=b.newVulns.filter(h=>nt<=U[h.severity]);for(let h of he){if(c=!0,!f.has(h.id))f.set(h.id,{id:h.id,title:h.title,severity:h.severity,description:h.description,components:h.components,refs:h.refs});else{let v=f.get(h.id);ua(v,h)}a.has(h.id)||a.set(h.id,[]),u.has(R)||u.set(R,[]),y.has(R)||y.set(R,new Map),u.get(R).push(h.id),a.get(h.id).push(R);for(let v of h.componentTree)v.purl&&(y.get(R).has(v.purl)||y.get(R).set(v.purl,v))}for(let h of b.noLongerDetectedVulns)p=!0,m.has(h)||m.set(h,[]),l.has(R)||l.set(R,[]),l.get(R).push(h),m.get(h).push(R)}let S;o&&(S=(0,Vt.join)(o,"scan-summary.txt"),await(0,ke.writeFile)(S,"","utf8"));let w=async b=>{console.log(b),S&&await(0,ke.appendFile)(S,b+`
39
- `,"utf8")};switch(await w("=== Scan summary ==="),d.length&&await sa(w,d),i&&await la(w,f,y),r){case"CVE":{await ca(w,a,f,n?m:new Map);break}case"PROJECT":{await aa(w,u,n?l:new Map,f);break}}!s&&!c&&(!p||!n)&&await w(" No issues found");let D={errors:d,vulnerabilities:Object.fromEntries(f),vulnerabilityToProject:Object.fromEntries(a.entries()),projectToVulnerability:Object.fromEntries(u.entries()),projectsToComponents:Object.fromEntries(Array.from(y.entries()).map(([b,G])=>[b,Object.fromEntries(G.entries())])),noLongerDetectedVulnerabilities:Object.fromEntries(m)};if(o){let b=(0,Vt.join)(o,"scan-summary.json");await(0,ke.writeFile)(b,JSON.stringify(D,null,2),"utf8")}return{hasError:s,hasNewVuln:c,hasNoLongerDetectedVuln:p}}async function sa(t,e){await t(""),await t("- Errors during scan:");for(let{project:r,error:n}of e)await t(` - ${r}:`),await t(` Error: ${n}`)}async function aa(t,e,r,n){let i=new Set([...Array.from(e.keys()),...Array.from(r.keys())]),o=Array.from(i.keys()).sort();if(o.length){await t(""),await t("- Vulnerabilities by project:");for(let s of o){await t(` - ${s}:`);let c=e.get(s)??[];for(let f of c.slice().sort(At(a=>n.get(a).severity))){let{severity:a}=n.get(f);await t(` - [${a}] ${f}`)}let p=(r.get(s)??[]).slice().sort();for(let f of p)await t(` - ${f} (no longer detected)`)}}}async function ca(t,e,r,n){let i=Array.from(e.keys()).sort(At(s=>r.get(s).severity));if(i.length){await t(""),await t("- New vulnerabilities:");for(let s of i){let c=e.get(s),{severity:p}=r.get(s);await t(` - [${p}] ${s}`);for(let f of c.slice().sort())await t(` - ${f}`)}}let o=Array.from(n.keys()).sort();if(o.length){await t(""),await t("- Declared but no longer detected vulnerabilities:");for(let s of o){let c=n.get(s);await t(` - ${s}`);for(let p of c.slice().sort())await t(` - ${p}`)}}}async function la(t,e,r){if(e.size===0)return;await t(""),await t("- Vulnerability details:");let n=Array.from(e.keys()).sort(At(i=>e.get(i).severity));for(let i of n){let o=e.get(i);if(await t(` - [${o.severity}] ${o.id} - ${o.title||""}:`),o.description){await t(" Description:");let s=o.description.split(/\r?\n/);for(let c of s)await t(` ${c}`)}if(o.components.length){await t(" Components:");for(let s of o.components)await t(" - "+s);if(r){for(let s of o.components)for(let[c,p]of r.entries())if(p.has(s)){await t(` Usage Tree of ${s} by ${c} (as example):`),await t(Ge(p.get(s)," "));break}}}if(o.refs.length){await t(" Links:");for(let s of o.refs)await t(` - ${s}`)}}}function ua(t,e){t.title=t.title||e.title,t.severity=U[t.severity]>U[e.severity]?t.severity:e.severity,t.description=t.description||e.description,t.components=li(t.components,e.components),t.refs=li(t.refs,e.refs)}function li(t,e){let r=new Set([...t,...e]);return Array.from(r)}function At(t){return(e,r)=>{let n=t(e),i=t(r),o=U[n],s=U[i];return o!==s?o>s?-1:1:e.localeCompare(r)}}tt.os.type().startsWith("Windows")&&(0,tt.usePowerShell)();async function fi(t){let e=await lt(t),r=e.cacheDir;await se(r)||await(0,le.mkdir)(r);let n=e.outDir;await se(n)&&await at(n),await(0,le.mkdir)(n);let i=await da(e,{user:t.vexUrlsUser,pw:t.vexUrlsPw}),o=new Je(e.mavenRepo,{user:t.mavenRepoUser,pw:t.mavenRepoPw}),s=ya(e,t,r),c=Date.now();console.log("Initializing scanner engines ..."),await s.init(t.verbose),console.log(`Scanner engines initialization took ${Date.now()-c}ms
40
- `);let p=ha(t),f=e.projects,a=new Map,m=Date.now();console.log("Scanning projects ...");let u=f.filter(p).map(d=>{let y=new Qe(d,n,e.createSubDirsForProject),S=[],w=b=>{S.push(b)};return{scan(){return fa(d,y,o,s,i,w,a,t,S)}}});await ga(u),console.log(`Scanning took ${Date.now()-m}ms`),t.autoRemoveUnusedStatements&&await Sa(a,e.vexDir);let l=await ui(a,{orderBy:e.consoleReport.startsWith("BY_CVE")?"CVE":"PROJECT",reportCveDetails:e.consoleReport.endsWith("_DETAILED"),reportNoLongerDetectedVulnerabilities:e.reportNoLongerDetectedVulnerabilities,outputDirectory:n});if(l.hasError)return 1;if(l.hasNewVuln){if(e.onNewVulnerabilities==="fail")return 1;e.onNewVulnerabilities==="warn"&&(console.log("##vso[task.logissue type=warning;]NEW_VULNERABILITIES_DETECTED"),console.log("##vso[task.complete result=SucceededWithIssues;]"))}if(l.hasNoLongerDetectedVuln){if(e.onNoLongerDetectedVulnerabilities==="fail")return 1;e.onNoLongerDetectedVulnerabilities==="warn"&&(console.log("##vso[task.logissue type=warning;]NO_LONGER_DETECTED_VULNERABILITIES"),console.log("##vso[task.complete result=SucceededWithIssues;]"))}return 0}async function fa(t,e,r,n,i,o,s,c,p){try{let{unmatchedVulnerabilities:f,noLongerDetectedVulnerabilities:a}=await ma(t,e,r,n,i,c.verbose,o);s.set(t.purl,{project:t,newVulns:f,noLongerDetectedVulns:a})}catch(f){let a=f;s.set(t.purl,{project:t,error:`${a}`,newVulns:[],noLongerDetectedVulns:[]})}if(c.verbose)for(let f of p)console.log(f)}async function ma(t,e,r,n,i,o,s){let c=await Kn(t,await e.lookupOutputFileForWriting("project-cyclonedx-sbom-file"),r);s(`Analyzing project: ${c.name} - ${c.version} - ${c.sbomFile}`);let p=await X(c.sbomFile);if(!p)throw new Error(`Could not read SBOM file ${c.sbomFile} for project ${c.name}`);if(!p.components||p.components.length===0)throw new Error(`SBOM file ${c.sbomFile} for project ${c.name} does not contain any components`);let f=new De(Xe.createForSbom(p));await n.scanProject(c,e,f,o,s);let a=i.filterByProduct([c.purl,...c.purlAliases]),{unmatchedVulnerabilities:m}=f.enhanceWithVexData(a),u=c.detectNoLongerUsedVulnerabilities?a.findNotMatchingVulnerabilities(f.getAllVulnIds()):[];return await pa(e,c,f,a,s),{unmatchedVulnerabilities:m,noLongerDetectedVulnerabilities:u}}async function pa(t,e,r,n,i){let o=r.getAllVulnerabilitiesSortedBySeverity(),s=await t.lookupOutputFileForWriting("aggregate-results");await(0,le.writeFile)(s,JSON.stringify(o,null,2)),i(` Vulnerabilities output file: ${s}`);let c=await t.lookupOutputFileForWriting("aggregated-sarif-results"),p=Qn(o,e);await(0,le.writeFile)(c,JSON.stringify(p,null,2)),i(` Vuln Sarif output file: ${c}`);let f=n.toVexFile(o.filter(m=>m.vexStatement).map(m=>{let u=m.vexStatement;for(let l of m.components??[])u.products.push({"@id":l});return u}));if(!f)return;let a=await t.lookupOutputFileForWriting("project-openvex-file");await(0,le.writeFile)(a,JSON.stringify(f,null,2)),i(` OpenVex file: ${a}`)}async function da(t,e){let r=t.vexDir,n;await se(r)?n=await ye.fromFiles(r):n=new ye;for(let i of t.vexUrls)await ye.fromUrl(i,e,n);return n}function ya(t,e,r){if(e.scannerEngine)return e.scannerEngine;if(t.scanners.length===0)throw new Error("No scanners configured");return new et(t.scanners,r,e)}function ha(t){let{reduceToProjectName:e,reduceToProjectVersion:r}=t;return n=>!(!n.enabled||e&&(n.name!==e||r&&n.version!==r))}async function Sa(t,e){for(let r of t.values())if(!r.project.silent)for(let n of r.noLongerDetectedVulns)await ci(e,r.project.purl,n)}async function ga(t,e=5){let r=0,n=0,i=0,o=t.length,s,c=new Promise(f=>{s=f});function p(){for(;r<e&&i<o;){let f=t[i++];r++,f.scan().finally(()=>{r--,n++,n>=o?s():p()})}}p(),await c}var mi=require("zx");mi.dotenv.config();var K=process.env;(async()=>{let t=await fi({workingDir:process.cwd(),reduceToProjectName:process.argv[2],reduceToProjectVersion:process.argv[3],ossIndexApiUser:K.OSS_INDEX_API_USER,ossIndexApiToken:K.OSS_INDEX_API_TOKEN,ossIndexBaseUrl:K.OSS_INDEX_BASE_URL,mavenRepoUser:K.MAVEN_REPO_USER,mavenRepoPw:K.MAVEN_REPO_PW,trivyGithubToken:K.TRIVY_GITHUB_TOKEN,vexUrlsUser:K.VEX_URLS_USER,vexUrlsPw:K.VEX_URLS_PW,verbose:K.VERBOSE==="true",autoRemoveUnusedStatements:K.AUTO_REMOVE_UNUSED_STATEMENTS==="true"});process.exitCode=t})();
39
+ `}var ft=class{constructor(e,r,n,i,o,s){this.project=e;this.outputFiles=r;this.engine=n;this.mavenRepo=i;this.vexStore=o;this.verbose=s}project;outputFiles;engine;mavenRepo;vexStore;verbose;logBuffer=[];log(e){this.logBuffer.push(e)}flushLogs(){for(let e of this.logBuffer)console.log(e)}async run(){try{let{unmatchedVulnerabilities:e,noLongerDetectedVulnerabilities:r}=await this.scanAndWrite();return{project:this.project,newVulns:e,noLongerDetectedVulns:r}}catch(e){return{project:this.project,error:e instanceof Error?e:new Error(String(e)),newVulns:[],noLongerDetectedVulns:[]}}finally{this.verbose&&this.flushLogs()}}async scanAndWrite(){let e=await or(this.project,await this.outputFiles.lookupOutputFileForWriting("project-cyclonedx-sbom-file"),this.mavenRepo);this.log(`Analyzing project: ${e.name} - ${e.version} - ${e.sbomFile}`);let r=await me.fromFile(e.sbomFile),n=new ze(r.buildDependencyTree());await this.engine.scanProject(e,this.outputFiles,n,this.verbose,this.log.bind(this));let i=this.vexStore.filterByProduct([e.purl,...e.purlAliases]),{unmatchedVulnerabilities:o}=n.enhanceWithVexData(i),s=e.detectNoLongerUsedVulnerabilities?i.findNotMatchingVulnerabilities(n.getAllVulnIds()):[];return await this.writeResults(e,n,i),{unmatchedVulnerabilities:o,noLongerDetectedVulnerabilities:s}}async writeResults(e,r,n){let i=r.getAllVulnerabilitiesSortedBySeverity(),o=await this.outputFiles.lookupOutputFileForWriting("aggregate-results");await(0,mt.writeFile)(o,JSON.stringify(i,null,2)),this.log(` Vulnerabilities output file: ${o}`);let s=await this.outputFiles.lookupOutputFileForWriting("aggregated-sarif-results"),c=ki(i,e);await(0,mt.writeFile)(s,JSON.stringify(c,null,2)),this.log(` Vuln Sarif output file: ${s}`);let m=n.toVexFileWithComponentIds(i);if(!m)return;let d=await this.outputFiles.lookupOutputFileForWriting("project-openvex-file");await(0,mt.writeFile)(d,JSON.stringify(m,null,2)),this.log(` OpenVex file: ${d}`)}};var dt=class{constructor(e=5){this.maxParallel=e}maxParallel;async run(e){let r=0,n=0,i=0,o=e.length;if(o===0)return;let s,c=new Promise(d=>{s=d}),m=()=>{for(;n<this.maxParallel&&r<o;){let d=e[r++];n++,d().catch(()=>{}).finally(()=>{n--,i++,i>=o?s():m()})}};m(),await c}};var ht=class{options;constructor(e){this.options=e}async run(){let e=await new xe(this.options.workingDir).loadProjectConfig();await this.prepareDirectories(e);let r=await this.createVexStore(e),n=new Ve(e.mavenRepo,{user:this.options.mavenRepoUser,pw:this.options.mavenRepoPw}),i=this.createEngine(e);console.log("Initializing scanner engines ...");let o=Date.now();await i.init(this.options.verbose),console.log(`Scanner engines initialization took ${Date.now()-o}ms
40
+ `);let s=e.projects.filter(this.createProjectFilter());console.log("Scanning projects ...");let c=Date.now(),m=new Map;await new dt(5).run(s.map(p=>async()=>{let l=new _e(p,e.outDir,e.createSubDirsForProject),f=await new ft(p,l,i,n,r,this.options.verbose).run();m.set(p.purl,f)})),console.log(`Scanning took ${Date.now()-c}ms`),this.options.autoRemoveUnusedStatements&&await this.removeUnusedVexStatements(m,e.vexDir);let a=await Lr(m,{orderBy:e.consoleReport.startsWith("BY_CVE")?"CVE":"PROJECT",reportCveDetails:e.consoleReport.endsWith("_DETAILED"),reportNoLongerDetectedVulnerabilities:e.reportNoLongerDetectedVulnerabilities,outputDirectory:e.outDir});return this.computeExitCode(e,a)}async prepareDirectories(e){await oe(e.cacheDir)||await(0,Kt.mkdir)(e.cacheDir),await oe(e.outDir)&&await vt(e.outDir),await(0,Kt.mkdir)(e.outDir)}async createVexStore(e){let r;await oe(e.vexDir)?r=await ce.fromFiles(e.vexDir):r=new ce;for(let n of e.vexUrls)await ce.fromUrl(n,{user:this.options.vexUrlsUser,pw:this.options.vexUrlsPw},r);return r}createEngine(e){if(this.options.scannerEngine)return this.options.scannerEngine;if(e.scanners.length===0)throw new Error("No scanners configured");return new Ge(e.scanners,e.cacheDir,this.options)}createProjectFilter(){let{reduceToProjectName:e,reduceToProjectVersion:r}=this.options;return n=>!(!n.enabled||e&&(n.name!==e||r&&n.version!==r))}async removeUnusedVexStatements(e,r){for(let n of e.values())if(!n.project.silent)for(let i of n.noLongerDetectedVulns)await vr(r,n.project.purl,i)}computeExitCode(e,r){if(r.hasError)return 1;if(r.hasNewVuln){if(e.onNewVulnerabilities==="fail")return 1;e.onNewVulnerabilities==="warn"&&(console.log("##vso[task.logissue type=warning;]NEW_VULNERABILITIES_DETECTED"),console.log("##vso[task.complete result=SucceededWithIssues;]"))}if(r.hasNoLongerDetectedVuln){if(e.onNoLongerDetectedVulnerabilities==="fail")return 1;e.onNoLongerDetectedVulnerabilities==="warn"&&(console.log("##vso[task.logissue type=warning;]NO_LONGER_DETECTED_VULNERABILITIES"),console.log("##vso[task.complete result=SucceededWithIssues;]"))}return 0}};async function Vi(t){return new ht(t).run()}var Se=require("zx");Se.dotenv.config();Se.os.type().startsWith("Windows")&&(0,Se.usePowerShell)();var G=process.env;(async()=>{let t=await Vi({workingDir:process.cwd(),reduceToProjectName:process.argv[2],reduceToProjectVersion:process.argv[3],ossIndexApiUser:G.OSS_INDEX_API_USER,ossIndexApiToken:G.OSS_INDEX_API_TOKEN,ossIndexBaseUrl:G.OSS_INDEX_BASE_URL,mavenRepoUser:G.MAVEN_REPO_USER,mavenRepoPw:G.MAVEN_REPO_PW,trivyGithubToken:G.TRIVY_GITHUB_TOKEN,vexUrlsUser:G.VEX_URLS_USER,vexUrlsPw:G.VEX_URLS_PW,verbose:G.VERBOSE==="true",autoRemoveUnusedStatements:G.AUTO_REMOVE_UNUSED_STATEMENTS==="true"});process.exitCode=t})();
41
41
  /*! Bundled license information:
42
42
 
43
43
  escape-html/index.js: