@conterra/vuln-scan 1.0.8 → 1.0.9

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,13 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var ui=Object.create;var Vt=Object.defineProperty;var fi=Object.getOwnPropertyDescriptor;var mi=Object.getOwnPropertyNames;var pi=Object.getPrototypeOf,di=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var yi=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of mi(e))!di.call(t,i)&&i!==r&&Vt(t,i,{get:()=>e[i],enumerable:!(n=fi(e,i))||n.enumerable});return t};var Ee=(t,e,r)=>(r=t!=null?ui(pi(t)):{},yi(e||!t||!t.__esModule?Vt(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 _t=g((ka,$t)=>{var ee=require("constants"),wi=process.cwd,Te=null,bi=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Te||(Te=wi.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;$t.exports=xi;function xi(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=p(t.statSync),t.fstatSync=p(t.fstatSync),t.lstatSync=p(t.lstatSync),t.chmod&&!t.lchmod&&(t.lchmod=function(a,f,m){m&&process.nextTick(m)},t.lchmodSync=function(){}),t.chown&&!t.lchown&&(t.lchown=function(a,f,m,l){l&&process.nextTick(l)},t.lchownSync=function(){}),bi==="win32"&&(t.rename=typeof t.rename!="function"?t.rename:(function(a){function f(m,l,d){var h=Date.now(),S=0;a(m,l,function w(j){if(j&&(j.code==="EACCES"||j.code==="EPERM"||j.code==="EBUSY")&&Date.now()-h<6e4){setTimeout(function(){t.stat(l,function(x,G){x&&x.code==="ENOENT"?a(m,l,w):d(j)})},S),S<100&&(S+=10);return}d&&d(j)})}return Object.setPrototypeOf&&Object.setPrototypeOf(f,a),f})(t.rename)),t.read=typeof t.read!="function"?t.read:(function(a){function f(m,l,d,h,S,w){var j;if(w&&typeof w=="function"){var x=0;j=function(G,R,rt){if(G&&G.code==="EAGAIN"&&x<10)return x++,a.call(t,m,l,d,h,S,j);w.apply(this,arguments)}}return a.call(t,m,l,d,h,S,j)}return Object.setPrototypeOf&&Object.setPrototypeOf(f,a),f})(t.read),t.readSync=typeof t.readSync!="function"?t.readSync:(function(a){return function(f,m,l,d,h){for(var S=0;;)try{return a.call(t,f,m,l,d,h)}catch(w){if(w.code==="EAGAIN"&&S<10){S++;continue}throw w}}})(t.readSync);function e(a){a.lchmod=function(f,m,l){a.open(f,ee.O_WRONLY|ee.O_SYMLINK,m,function(d,h){if(d){l&&l(d);return}a.fchmod(h,m,function(S){a.close(h,function(w){l&&l(S||w)})})})},a.lchmodSync=function(f,m){var l=a.openSync(f,ee.O_WRONLY|ee.O_SYMLINK,m),d=!0,h;try{h=a.fchmodSync(l,m),d=!1}finally{if(d)try{a.closeSync(l)}catch{}else a.closeSync(l)}return h}}function r(a){ee.hasOwnProperty("O_SYMLINK")&&a.futimes?(a.lutimes=function(f,m,l,d){a.open(f,ee.O_SYMLINK,function(h,S){if(h){d&&d(h);return}a.futimes(S,m,l,function(w){a.close(S,function(j){d&&d(w||j)})})})},a.lutimesSync=function(f,m,l){var d=a.openSync(f,ee.O_SYMLINK),h,S=!0;try{h=a.futimesSync(d,m,l),S=!1}finally{if(S)try{a.closeSync(d)}catch{}else a.closeSync(d)}return h}):a.futimes&&(a.lutimes=function(f,m,l,d){d&&process.nextTick(d)},a.lutimesSync=function(){})}function n(a){return a&&function(f,m,l){return a.call(t,f,m,function(d){u(d)&&(d=null),l&&l.apply(this,arguments)})}}function i(a){return a&&function(f,m){try{return a.call(t,f,m)}catch(l){if(!u(l))throw l}}}function o(a){return a&&function(f,m,l,d){return a.call(t,f,m,l,function(h){u(h)&&(h=null),d&&d.apply(this,arguments)})}}function s(a){return a&&function(f,m,l){try{return a.call(t,f,m,l)}catch(d){if(!u(d))throw d}}}function c(a){return a&&function(f,m,l){typeof m=="function"&&(l=m,m=null);function d(h,S){S&&(S.uid<0&&(S.uid+=4294967296),S.gid<0&&(S.gid+=4294967296)),l&&l.apply(this,arguments)}return m?a.call(t,f,m,d):a.call(t,f,d)}}function p(a){return a&&function(f,m){var l=m?a.call(t,f,m):a.call(t,f);return l&&(l.uid<0&&(l.uid+=4294967296),l.gid<0&&(l.gid+=4294967296)),l}}function u(a){if(!a||a.code==="ENOSYS")return!0;var f=!process.getuid||process.getuid()!==0;return!!(f&&(a.code==="EINVAL"||a.code==="EPERM"))}}});var Ut=g((Ea,Bt)=>{var qt=require("stream").Stream;Bt.exports=Pi;function Pi(t){return{ReadStream:e,WriteStream:r};function e(n,i){if(!(this instanceof e))return new e(n,i);qt.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 u=s[c];this[u]=i[u]}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,f){if(a){o.emit("error",a),o.readable=!1;return}o.fd=f,o.emit("open",f),o._read()})}function r(n,i){if(!(this instanceof r))return new r(n,i);qt.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 Gt=g((Da,Xt)=>{"use strict";Xt.exports=ki;var Li=Object.getPrototypeOf||function(t){return t.__proto__};function ki(t){if(t===null||typeof t!="object")return t;if(t instanceof Object)var e={__proto__:Li(t)};else var e=Object.create(null);return Object.getOwnPropertyNames(t).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}});var ue=g((Oa,dt)=>{var E=require("fs"),Ei=_t(),Di=Ut(),Oi=Gt(),Ce=require("util"),N,Ie;typeof Symbol=="function"&&typeof Symbol.for=="function"?(N=Symbol.for("graceful-fs.queue"),Ie=Symbol.for("graceful-fs.previous")):(N="___graceful-fs.queue",Ie="___graceful-fs.previous");function Ti(){}function Ht(t,e){Object.defineProperty(t,N,{get:function(){return e}})}var se=Ti;Ce.debuglog?se=Ce.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(se=function(){var t=Ce.format.apply(Ce,arguments);t="GFS4: "+t.split(/\n/).join(`
3
- GFS4: `),console.error(t)});E[N]||(Wt=global[N]||[],Ht(E,Wt),E.close=(function(t){function e(r,n){return t.call(E,r,function(i){i||Jt(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(e,Ie,{value:t}),e})(E.close),E.closeSync=(function(t){function e(r){t.apply(E,arguments),Jt()}return Object.defineProperty(e,Ie,{value:t}),e})(E.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){se(E[N]),require("assert").equal(E[N].length,0)}));var Wt;global[N]||Ht(global,E[N]);dt.exports=mt(Oi(E));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!E.__patched&&(dt.exports=mt(E),E.__patched=!0);function mt(t){Ei(t),t.gracefulify=mt,t.createReadStream=R,t.createWriteStream=rt;var e=t.readFile;t.readFile=r;function r(y,v,b){return typeof v=="function"&&(b=v,v=null),I(y,v,b);function I(F,O,k,D){return e(F,O,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?le([I,[F,O,k],P,D||Date.now(),Date.now()]):typeof k=="function"&&k.apply(this,arguments)})}}var n=t.writeFile;t.writeFile=i;function i(y,v,b,I){return typeof b=="function"&&(I=b,b=null),F(y,v,b,I);function F(O,k,D,P,M){return n(O,k,D,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?le([F,[O,k,D,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}var o=t.appendFile;o&&(t.appendFile=s);function s(y,v,b,I){return typeof b=="function"&&(I=b,b=null),F(y,v,b,I);function F(O,k,D,P,M){return o(O,k,D,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?le([F,[O,k,D,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}var c=t.copyFile;c&&(t.copyFile=p);function p(y,v,b,I){return typeof b=="function"&&(I=b,b=0),F(y,v,b,I);function F(O,k,D,P,M){return c(O,k,D,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?le([F,[O,k,D,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}var u=t.readdir;t.readdir=f;var a=/^v[0-5]\./;function f(y,v,b){typeof v=="function"&&(b=v,v=null);var I=a.test(process.version)?function(k,D,P,M){return u(k,F(k,D,P,M))}:function(k,D,P,M){return u(k,D,F(k,D,P,M))};return I(y,v,b);function F(O,k,D,P){return function(M,L){M&&(M.code==="EMFILE"||M.code==="ENFILE")?le([I,[O,k,D],M,P||Date.now(),Date.now()]):(L&&L.sort&&L.sort(),typeof D=="function"&&D.call(this,M,L))}}}if(process.version.substr(0,4)==="v0.8"){var m=Di(t);w=m.ReadStream,x=m.WriteStream}var l=t.ReadStream;l&&(w.prototype=Object.create(l.prototype),w.prototype.open=j);var d=t.WriteStream;d&&(x.prototype=Object.create(d.prototype),x.prototype.open=G),Object.defineProperty(t,"ReadStream",{get:function(){return w},set:function(y){w=y},enumerable:!0,configurable:!0}),Object.defineProperty(t,"WriteStream",{get:function(){return x},set:function(y){x=y},enumerable:!0,configurable:!0});var h=w;Object.defineProperty(t,"FileReadStream",{get:function(){return h},set:function(y){h=y},enumerable:!0,configurable:!0});var S=x;Object.defineProperty(t,"FileWriteStream",{get:function(){return S},set:function(y){S=y},enumerable:!0,configurable:!0});function w(y,v){return this instanceof w?(l.apply(this,arguments),this):w.apply(Object.create(w.prototype),arguments)}function j(){var y=this;ye(y.path,y.flags,y.mode,function(v,b){v?(y.autoClose&&y.destroy(),y.emit("error",v)):(y.fd=b,y.emit("open",b),y.read())})}function x(y,v){return this instanceof x?(d.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function G(){var y=this;ye(y.path,y.flags,y.mode,function(v,b){v?(y.destroy(),y.emit("error",v)):(y.fd=b,y.emit("open",b))})}function R(y,v){return new t.ReadStream(y,v)}function rt(y,v){return new t.WriteStream(y,v)}var nt=t.open;t.open=ye;function ye(y,v,b,I){return typeof b=="function"&&(I=b,b=null),F(y,v,b,I);function F(O,k,D,P,M){return nt(O,k,D,function(L,pa){L&&(L.code==="EMFILE"||L.code==="ENFILE")?le([F,[O,k,D,P],L,M||Date.now(),Date.now()]):typeof P=="function"&&P.apply(this,arguments)})}}return t}function le(t){se("ENQUEUE",t[0].name,t[1]),E[N].push(t),pt()}var je;function Jt(){for(var t=Date.now(),e=0;e<E[N].length;++e)E[N][e].length>2&&(E[N][e][3]=t,E[N][e][4]=t);pt()}function pt(){if(clearTimeout(je),je=void 0,E[N].length!==0){var t=E[N].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,p=Math.max(o-i,1),u=Math.min(p*1.2,100);c>=u?(se("RETRY",e.name,r),e.apply(null,r.concat([i]))):E[N].push(t)}je===void 0&&(je=setTimeout(pt,0))}}});var $=g(Q=>{"use strict";var Yt=T().fromCallback,A=ue(),Ci=["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(Q,A);Ci.forEach(t=>{Q[t]=Yt(A[t])});Q.exists=function(t,e){return typeof e=="function"?A.exists(t,e):new Promise(r=>A.exists(t,r))};Q.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,u,a)=>{if(p)return c(p);s({bytesRead:u,buffer:a})})})};Q.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})})})};Q.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})})})};Q.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"?Q.realpath.native=Yt(A.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var Kt=g((Ca,Qt)=>{"use strict";var ji=require("path");Qt.exports.checkPath=function(e){if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(ji.parse(e).root,""))){let n=new Error(`Path contains invalid characters: ${e}`);throw n.code="EINVAL",n}}});var tr=g((ja,yt)=>{"use strict";var zt=$(),{checkPath:Zt}=Kt(),er=t=>{let e={mode:511};return typeof t=="number"?t:{...e,...t}.mode};yt.exports.makeDir=async(t,e)=>(Zt(t),zt.mkdir(t,{mode:er(e),recursive:!0}));yt.exports.makeDirSync=(t,e)=>(Zt(t),zt.mkdirSync(t,{mode:er(e),recursive:!0}))});var J=g((Ia,rr)=>{"use strict";var Ii=T().fromPromise,{makeDir:Fi,makeDirSync:ht}=tr(),St=Ii(Fi);rr.exports={mkdirs:St,mkdirsSync:ht,mkdirp:St,mkdirpSync:ht,ensureDir:St,ensureDirSync:ht}});var te=g((Fa,ir)=>{"use strict";var Mi=T().fromPromise,nr=$();function Ni(t){return nr.access(t).then(()=>!0).catch(()=>!1)}ir.exports={pathExists:Mi(Ni),pathExistsSync:nr.existsSync}});var gt=g((Ma,or)=>{"use strict";var fe=$(),Ri=T().fromPromise;async function Vi(t,e,r){let n=await fe.open(t,"r+"),i=null;try{await fe.futimes(n,e,r)}finally{try{await fe.close(n)}catch(o){i=o}}if(i)throw i}function Ai(t,e,r){let n=fe.openSync(t,"r+");return fe.futimesSync(n,e,r),fe.closeSync(n)}or.exports={utimesMillis:Ri(Vi),utimesMillisSync:Ai}});var ae=g((Na,lr)=>{"use strict";var me=$(),C=require("path"),sr=T().fromPromise;function $i(t,e,r){let n=r.dereference?i=>me.stat(i,{bigint:!0}):i=>me.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 _i(t,e,r){let n,i=r.dereference?s=>me.statSync(s,{bigint:!0}):s=>me.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 qi(t,e,r,n){let{srcStat:i,destStat:o}=await $i(t,e,n);if(o){if(Se(i,o)){let s=C.basename(t),c=C.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(Fe(t,e,r));return{srcStat:i,destStat:o}}function Bi(t,e,r,n){let{srcStat:i,destStat:o}=_i(t,e,n);if(o){if(Se(i,o)){let s=C.basename(t),c=C.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(Fe(t,e,r));return{srcStat:i,destStat:o}}async function ar(t,e,r,n){let i=C.resolve(C.dirname(t)),o=C.resolve(C.dirname(r));if(o===i||o===C.parse(o).root)return;let s;try{s=await me.stat(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(Se(e,s))throw new Error(Fe(t,r,n));return ar(t,e,o,n)}function cr(t,e,r,n){let i=C.resolve(C.dirname(t)),o=C.resolve(C.dirname(r));if(o===i||o===C.parse(o).root)return;let s;try{s=me.statSync(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(Se(e,s))throw new Error(Fe(t,r,n));return cr(t,e,o,n)}function Se(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=C.resolve(t).split(C.sep).filter(i=>i),n=C.resolve(e).split(C.sep).filter(i=>i);return r.every((i,o)=>n[o]===i)}function Fe(t,e,r){return`Cannot ${r} '${t}' to a subdirectory of itself, '${e}'.`}lr.exports={checkPaths:sr(qi),checkPathsSync:Bi,checkParentPaths:sr(ar),checkParentPathsSync:cr,isSrcSubdir:vt,areIdentical:Se}});var fr=g((Ra,ur)=>{"use strict";async function Ui(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})))}ur.exports={asyncIteratorConcurrentProcess:Ui}});var hr=g((Va,yr)=>{"use strict";var V=$(),ge=require("path"),{mkdirs:Xi}=J(),{pathExists:Gi}=te(),{utimesMillis:Wi}=gt(),ve=ae(),{asyncIteratorConcurrentProcess:Ji}=fr();async function Hi(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 mi=Object.create;var $t=Object.defineProperty;var pi=Object.getOwnPropertyDescriptor;var di=Object.getOwnPropertyNames;var yi=Object.getPrototypeOf,hi=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Si=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of di(e))!hi.call(t,i)&&i!==r&&$t(t,i,{get:()=>e[i],enumerable:!(n=pi(e,i))||n.enumerable});return t};var Oe=(t,e,r)=>(r=t!=null?mi(yi(t)):{},Si(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((Ta,Bt)=>{var te=require("constants"),xi=process.cwd,Te=null,Pi=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Te||(Te=xi.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=Li;function Li(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(){}),Pi==="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((ja,Xt)=>{var Ut=require("stream").Stream;Xt.exports=Ei;function Ei(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((Ia,Jt)=>{"use strict";Jt.exports=Oi;var ki=Object.getPrototypeOf||function(t){return t.__proto__};function Oi(t){if(t===null||typeof t!="object")return t;if(t instanceof Object)var e={__proto__:ki(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((Fa,dt)=>{var k=require("fs"),Di=qt(),Ci=Gt(),Ti=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 ji(){}function Qt(t,e){Object.defineProperty(t,N,{get:function(){return e}})}var ae=ji;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(Ti(k));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!k.__patched&&(dt.exports=mt(k),k.__patched=!0);function mt(t){Di(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=Ci(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,ga){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(),Ii=["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);Ii.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((Na,zt)=>{"use strict";var Fi=require("path");zt.exports.checkPath=function(e){if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(Fi.parse(e).root,""))){let n=new Error(`Path contains invalid characters: ${e}`);throw n.code="EINVAL",n}}});var nr=g((Ra,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((Va,ir)=>{"use strict";var Mi=T().fromPromise,{makeDir:Ni,makeDirSync:ht}=nr(),St=Mi(Ni);ir.exports={mkdirs:St,mkdirsSync:ht,mkdirp:St,mkdirpSync:ht,ensureDir:St,ensureDirSync:ht}});var re=g((Aa,sr)=>{"use strict";var Ri=T().fromPromise,or=$();function Vi(t){return or.access(t).then(()=>!0).catch(()=>!1)}sr.exports={pathExists:Ri(Vi),pathExistsSync:or.existsSync}});var gt=g(($a,ar)=>{"use strict";var me=$(),Ai=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 _i(t,e,r){let n=me.openSync(t,"r+");return me.futimesSync(n,e,r),me.closeSync(n)}ar.exports={utimesMillis:Ai($i),utimesMillisSync:_i}});var ce=g((_a,fr)=>{"use strict";var pe=$(),j=require("path"),cr=T().fromPromise;function Bi(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 qi(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 Ui(t,e,r,n){let{srcStat:i,destStat:o}=await Bi(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 Xi(t,e,r,n){let{srcStat:i,destStat:o}=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}}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(Ui),checkPathsSync:Xi,checkParentPaths:cr(lr),checkParentPathsSync:ur,isSrcSubdir:vt,areIdentical:ge}});var pr=g((Ba,mr)=>{"use strict";async function Gi(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:Gi}});var gr=g((qa,Sr)=>{"use strict";var V=$(),ve=require("path"),{mkdirs:Ji}=W(),{pathExists:Wi}=re(),{utimesMillis:Hi}=gt(),we=ce(),{asyncIteratorConcurrentProcess:Yi}=pr();async function Qi(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 ve.checkPaths(t,e,"copy",r);if(await ve.checkParentPaths(t,n,e,"copy"),!await pr(t,e,r))return;let s=ge.dirname(e);await Gi(s)||await Xi(s),await dr(i,t,e,r)}async function pr(t,e,r){return r.filter?r.filter(t,e):!0}async function dr(t,e,r,n){let o=await(n.dereference?V.stat:V.lstat)(e);if(o.isDirectory())return zi(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return Yi(o,t,e,r,n);if(o.isSymbolicLink())return Zi(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 Yi(t,e,r,n,i){if(!e)return mr(t,r,n,i);if(i.overwrite)return await V.unlink(n),mr(t,r,n,i);if(i.errorOnExist)throw new Error(`'${n}' already exists`)}async function mr(t,e,r,n){if(await V.copyFile(e,r),n.preserveTimestamps){Qi(t.mode)&&await Ki(r,t.mode);let i=await V.stat(e);await Wi(r,i.atime,i.mtime)}return V.chmod(r,t.mode)}function Qi(t){return(t&128)===0}function Ki(t,e){return V.chmod(t,e|128)}async function zi(t,e,r,n,i){e||await V.mkdir(n),await Ji(await V.opendir(r),async o=>{let s=ge.join(r,o.name),c=ge.join(n,o.name);if(await pr(s,c,i)){let{destStat:u}=await ve.checkPaths(s,c,"copy",i);await dr(u,s,c,i)}}),e||await V.chmod(n,t.mode)}async function Zi(t,e,r,n){let i=await V.readlink(e);if(n.dereference&&(i=ge.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=ge.resolve(process.cwd(),o)),ve.isSrcSubdir(i,o))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${o}'.`);if(ve.isSrcSubdir(o,i))throw new Error(`Cannot overwrite '${o}' with '${i}'.`);return await V.unlink(r),V.symlink(i,r)}yr.exports=Hi});var br=g((Aa,wr)=>{"use strict";var _=ue(),we=require("path"),eo=J().mkdirsSync,to=gt().utimesMillisSync,be=ae();function ro(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 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 Wi(s)||await Ji(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 eo(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return Ki(o,t,e,r,n);if(o.isSymbolicLink())return to(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 Ki(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 Zi(r,t.mode);let i=await V.stat(e);await Hi(r,i.atime,i.mtime)}return V.chmod(r,t.mode)}function zi(t){return(t&128)===0}function Zi(t,e){return V.chmod(t,e|128)}async function eo(t,e,r,n,i){e||await V.mkdir(n),await Yi(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 to(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=Qi});var Pr=g((Ua,xr)=>{"use strict";var _=fe(),be=require("path"),ro=W().mkdirsSync,no=gt().utimesMillisSync,xe=ce();function io(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}=be.checkPathsSync(t,e,"copy",r);if(be.checkParentPathsSync(t,n,e,"copy"),r.filter&&!r.filter(t,e))return;let o=we.dirname(e);return _.existsSync(o)||eo(o),Sr(i,t,e,r)}function Sr(t,e,r,n){let o=(n.dereference?_.statSync:_.lstatSync)(e);if(o.isDirectory())return lo(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return no(o,t,e,r,n);if(o.isSymbolicLink())return mo(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 no(t,e,r,n,i){return e?io(t,r,n,i):gr(t,r,n,i)}function io(t,e,r,n){if(n.overwrite)return _.unlinkSync(r),gr(t,e,r,n);if(n.errorOnExist)throw new Error(`'${r}' already exists`)}function gr(t,e,r,n){return _.copyFileSync(e,r),n.preserveTimestamps&&oo(t.mode,e,r),wt(r,t.mode)}function oo(t,e,r){return so(t)&&ao(r,t),co(e,r)}function so(t){return(t&128)===0}function ao(t,e){return wt(t,e|128)}function wt(t,e){return _.chmodSync(t,e)}function co(t,e){let r=_.statSync(t);return to(e,r.atime,r.mtime)}function lo(t,e,r,n,i){return e?vr(r,n,i):uo(t.mode,r,n,i)}function uo(t,e,r,n){return _.mkdirSync(r),vr(e,r,n),wt(r,t)}function vr(t,e,r){let n=_.opendirSync(t);try{let i;for(;(i=n.readSync())!==null;)fo(i.name,t,e,r)}finally{n.closeSync()}}function fo(t,e,r,n){let i=we.join(e,t),o=we.join(r,t);if(n.filter&&!n.filter(i,o))return;let{destStat:s}=be.checkPathsSync(i,o,"copy",n);return Sr(s,i,o,n)}function mo(t,e,r,n){let i=_.readlinkSync(e);if(n.dereference&&(i=we.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=we.resolve(process.cwd(),o)),be.isSrcSubdir(i,o))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${o}'.`);if(be.isSrcSubdir(o,i))throw new Error(`Cannot overwrite '${o}' with '${i}'.`);return po(i,r)}else return _.symlinkSync(i,r)}function po(t,e){return _.unlinkSync(e),_.symlinkSync(t,e)}wr.exports=ro});var Me=g(($a,xr)=>{"use strict";var yo=T().fromPromise;xr.exports={copy:yo(hr()),copySync:br()}});var xe=g((_a,Lr)=>{"use strict";var Pr=ue(),ho=T().fromCallback;function So(t,e){Pr.rm(t,{recursive:!0,force:!0},e)}function go(t){Pr.rmSync(t,{recursive:!0,force:!0})}Lr.exports={remove:ho(So),removeSync:go}});var Ir=g((qa,jr)=>{"use strict";var vo=T().fromPromise,Dr=$(),Or=require("path"),Tr=J(),Cr=xe(),kr=vo(async function(e){let r;try{r=await Dr.readdir(e)}catch{return Tr.mkdirs(e)}return Promise.all(r.map(n=>Cr.remove(Or.join(e,n))))});function Er(t){let e;try{e=Dr.readdirSync(t)}catch{return Tr.mkdirsSync(t)}e.forEach(r=>{r=Or.join(t,r),Cr.removeSync(r)})}jr.exports={emptyDirSync:Er,emptydirSync:Er,emptyDir:kr,emptydir:kr}});var Rr=g((Ba,Nr)=>{"use strict";var wo=T().fromPromise,Fr=require("path"),K=$(),Mr=J();async function bo(t){let e;try{e=await K.stat(t)}catch{}if(e&&e.isFile())return;let r=Fr.dirname(t),n=null;try{n=await K.stat(r)}catch(i){if(i.code==="ENOENT"){await Mr.mkdirs(r),await K.writeFile(t,"");return}else throw i}n.isDirectory()?await K.writeFile(t,""):await K.readdir(r)}function xo(t){let e;try{e=K.statSync(t)}catch{}if(e&&e.isFile())return;let r=Fr.dirname(t);try{K.statSync(r).isDirectory()||K.readdirSync(r)}catch(n){if(n&&n.code==="ENOENT")Mr.mkdirsSync(r);else throw n}K.writeFileSync(t,"")}Nr.exports={createFile:wo(bo),createFileSync:xo}});var qr=g((Ua,_r)=>{"use strict";var Po=T().fromPromise,Vr=require("path"),re=$(),Ar=J(),{pathExists:Lo}=te(),{areIdentical:$r}=ae();async function ko(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&&$r(n,r))return;let i=Vr.dirname(e);await Lo(i)||await Ar.mkdirs(i),await re.link(t,e)}function Eo(t,e){let r;try{r=re.lstatSync(e)}catch{}try{let o=re.lstatSync(t);if(r&&$r(o,r))return}catch(o){throw o.message=o.message.replace("lstat","ensureLink"),o}let n=Vr.dirname(e);return re.existsSync(n)||Ar.mkdirsSync(n),re.linkSync(t,e)}_r.exports={createLink:Po(ko),createLinkSync:Eo}});var Ur=g((Xa,Br)=>{"use strict";var ne=require("path"),Pe=$(),{pathExists:Do}=te(),Oo=T().fromPromise;async function To(t,e){if(ne.isAbsolute(t)){try{await Pe.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 Do(n))return{toCwd:n,toDst:t};try{await Pe.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:ne.relative(r,t)}}function Co(t,e){if(ne.isAbsolute(t)){if(!Pe.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(Pe.existsSync(n))return{toCwd:n,toDst:t};if(!Pe.existsSync(t))throw new Error("relative srcpath does not exist");return{toCwd:t,toDst:ne.relative(r,t)}}Br.exports={symlinkPaths:Oo(To),symlinkPathsSync:Co}});var Wr=g((Ga,Gr)=>{"use strict";var Xr=$(),jo=T().fromPromise;async function Io(t,e){if(e)return e;let r;try{r=await Xr.lstat(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}function Fo(t,e){if(e)return e;let r;try{r=Xr.lstatSync(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}Gr.exports={symlinkType:jo(Io),symlinkTypeSync:Fo}});var Qr=g((Wa,Yr)=>{"use strict";var Mo=T().fromPromise,Jr=require("path"),H=$(),{mkdirs:No,mkdirsSync:Ro}=J(),{symlinkPaths:Vo,symlinkPathsSync:Ao}=Ur(),{symlinkType:$o,symlinkTypeSync:_o}=Wr(),{pathExists:qo}=te(),{areIdentical:Hr}=ae();async function Bo(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(Hr(c,p))return}let i=await Vo(t,e);t=i.toDst;let o=await $o(i.toCwd,r),s=Jr.dirname(e);return await qo(s)||await No(s),H.symlink(t,e,o)}function Uo(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(Hr(c,p))return}let i=Ao(t,e);t=i.toDst,r=_o(i.toCwd,r);let o=Jr.dirname(e);return H.existsSync(o)||Ro(o),H.symlinkSync(t,e,r)}Yr.exports={createSymlink:Mo(Bo),createSymlinkSync:Uo}});var on=g((Ja,nn)=>{"use strict";var{createFile:Kr,createFileSync:zr}=Rr(),{createLink:Zr,createLinkSync:en}=qr(),{createSymlink:tn,createSymlinkSync:rn}=Qr();nn.exports={createFile:Kr,createFileSync:zr,ensureFile:Kr,ensureFileSync:zr,createLink:Zr,createLinkSync:en,ensureLink:Zr,ensureLinkSync:en,createSymlink:tn,createSymlinkSync:rn,ensureSymlink:tn,ensureSymlinkSync:rn}});var Ne=g((Ha,sn)=>{function Xo(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 Go(t){return Buffer.isBuffer(t)&&(t=t.toString("utf8")),t.replace(/^\uFEFF/,"")}sn.exports={stringify:Xo,stripBom:Go}});var un=g((Ya,ln)=>{var pe;try{pe=ue()}catch{pe=require("fs")}var Re=T(),{stringify:an,stripBom:cn}=Ne();async function Wo(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||pe,n="throws"in e?e.throws:!0,i=await Re.fromCallback(r.readFile)(t,e);i=cn(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 Jo=Re.fromPromise(Wo);function Ho(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||pe,n="throws"in e?e.throws:!0;try{let i=r.readFileSync(t,e);return i=cn(i),JSON.parse(i,e.reviver)}catch(i){if(n)throw i.message=`${t}: ${i.message}`,i;return null}}async function Yo(t,e,r={}){let n=r.fs||pe,i=an(e,r);await Re.fromCallback(n.writeFile)(t,i,r)}var Qo=Re.fromPromise(Yo);function Ko(t,e,r={}){let n=r.fs||pe,i=an(e,r);return n.writeFileSync(t,i,r)}ln.exports={readFile:Jo,readFileSync:Ho,writeFile:Qo,writeFileSync:Ko}});var mn=g((Qa,fn)=>{"use strict";var Ve=un();fn.exports={readJson:Ve.readFile,readJsonSync:Ve.readFileSync,writeJson:Ve.writeFile,writeJsonSync:Ve.writeFileSync}});var Ae=g((Ka,yn)=>{"use strict";var zo=T().fromPromise,bt=$(),pn=require("path"),dn=J(),Zo=te().pathExists;async function es(t,e,r="utf-8"){let n=pn.dirname(t);return await Zo(n)||await dn.mkdirs(n),bt.writeFile(t,e,r)}function ts(t,...e){let r=pn.dirname(t);bt.existsSync(r)||dn.mkdirsSync(r),bt.writeFileSync(t,...e)}yn.exports={outputFile:zo(es),outputFileSync:ts}});var Sn=g((za,hn)=>{"use strict";var{stringify:rs}=Ne(),{outputFile:ns}=Ae();async function is(t,e,r={}){let n=rs(e,r);await ns(t,n,r)}hn.exports=is});var vn=g((Za,gn)=>{"use strict";var{stringify:os}=Ne(),{outputFileSync:ss}=Ae();function as(t,e,r){let n=os(e,r);ss(t,n,r)}gn.exports=as});var bn=g((ec,wn)=>{"use strict";var cs=T().fromPromise,q=mn();q.outputJson=cs(Sn());q.outputJsonSync=vn();q.outputJSON=q.outputJson;q.outputJSONSync=q.outputJsonSync;q.writeJSON=q.writeJson;q.writeJSONSync=q.writeJsonSync;q.readJSON=q.readJson;q.readJSONSync=q.readJsonSync;wn.exports=q});var En=g((tc,kn)=>{"use strict";var ls=$(),xn=require("path"),{copy:us}=Me(),{remove:Ln}=xe(),{mkdirp:fs}=J(),{pathExists:ms}=te(),Pn=ae();async function ps(t,e,r={}){let n=r.overwrite||r.clobber||!1,{srcStat:i,isChangingCase:o=!1}=await Pn.checkPaths(t,e,"move",r);await Pn.checkParentPaths(t,i,e,"move");let s=xn.dirname(e);return xn.parse(s).root!==s&&await fs(s),ds(t,e,n,o)}async function ds(t,e,r,n){if(!n){if(r)await Ln(e);else if(await ms(e))throw new Error("dest already exists.")}try{await ls.rename(t,e)}catch(i){if(i.code!=="EXDEV")throw i;await ys(t,e,r)}}async function ys(t,e,r){return await us(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),Ln(t)}kn.exports=ps});var jn=g((rc,Cn)=>{"use strict";var On=ue(),Pt=require("path"),hs=Me().copySync,Tn=xe().removeSync,Ss=J().mkdirpSync,Dn=ae();function gs(t,e,r){r=r||{};let n=r.overwrite||r.clobber||!1,{srcStat:i,isChangingCase:o=!1}=Dn.checkPathsSync(t,e,"move",r);return Dn.checkParentPathsSync(t,i,e,"move"),vs(e)||Ss(Pt.dirname(e)),ws(t,e,n,o)}function vs(t){let e=Pt.dirname(t);return Pt.parse(e).root===e}function ws(t,e,r,n){if(n)return xt(t,e,r);if(r)return Tn(e),xt(t,e,r);if(On.existsSync(e))throw new Error("dest already exists.");return xt(t,e,r)}function xt(t,e,r){try{On.renameSync(t,e)}catch(n){if(n.code!=="EXDEV")throw n;return bs(t,e,r)}}function bs(t,e,r){return hs(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),Tn(t)}Cn.exports=gs});var Fn=g((nc,In)=>{"use strict";var xs=T().fromPromise;In.exports={move:xs(En()),moveSync:jn()}});var Nn=g((ic,Mn)=>{"use strict";Mn.exports={...$(),...Me(),...Ir(),...on(),...bn(),...J(),...Fn(),...Ae(),...te(),...xe()}});var Rn=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 Le=g(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Lt.setOptionValues=Ps;function Ps(t,e){for(let r of Object.keys(t))t[r]!==void 0&&(e[r]=t[r]);return e}});var An=g(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.SarifBuilder=void 0;var Vn=Nn(),Ls=Rn(),ks=Le(),kt=class{constructor(e={}){this.log={$schema:"http://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[]},(0,ks.setOptionValues)(e,this.log)}addRun(e){this.log.runs.push(e.run)}generateSarifFileSync(e){let r=this.buildSarifJsonString();Vn.writeFileSync(e,r,"utf8")}async generateSarifFile(e){let r=this.buildSarifJsonString();await Vn.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(f=>{var m;return(m=f?.location)===null||m===void 0?void 0:m.uri}).filter(Boolean));for(let f of e.results||[])for(let m of f.locations||[]){let l=(n=(r=m?.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("."),h=d!==-1?l.slice(d+1):"",S=Ls.EXTENSIONS_LANGUAGES[h]||"unknown";e.artifacts.push({sourceLanguage:S,location:{uri:l}}),p.add(l)}}let u=new Map;e.artifacts.forEach((f,m)=>{var l;let d=(l=f?.location)===null||l===void 0?void 0:l.uri;d&&u.set(d,m)});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((f,m)=>{a.set(f.id,m)});for(let f of e.results||[]){let m=a.get(f.ruleId);if(m!==void 0&&(f.ruleIndex=m),f.locations)for(let l of f.locations){let d=(c=(s=l?.physicalLocation)===null||s===void 0?void 0:s.artifactLocation)===null||c===void 0?void 0:c.uri;if(d){let h=u.get(d);h!==void 0&&(l.physicalLocation.artifactLocation.index=h)}}}return e}};_e.SarifBuilder=kt});var $n=g(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.SarifResultBuilder=void 0;var Es=Le(),Et=class{constructor(e={}){this.result={level:"error",message:{},ruleId:"SARIF_BUILDER_INVALID: Please send the rule Id ruleId property, or call setRuleId(ruleId)"},(0,Es.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(){var e;this.manageInitLocation(),!(!((e=this.result)===null||e===void 0)&&e.locations[0].physicalLocation)&&(this.result.locations[0].physicalLocation={})}};qe.SarifResultBuilder=Et});var _n=g(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.SarifRuleBuilder=void 0;var Ds=Le(),Dt=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,Ds.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}};Be.SarifRuleBuilder=Dt});var qn=g(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0});Ue.SarifRunBuilder=void 0;var Os=Le(),Ot=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,Os.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=Ot});var Bn=g(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.SarifResultBuilder=Y.SarifRuleBuilder=Y.SarifRunBuilder=Y.SarifBuilder=void 0;var Ts=An();Object.defineProperty(Y,"SarifBuilder",{enumerable:!0,get:function(){return Ts.SarifBuilder}});var Cs=$n();Object.defineProperty(Y,"SarifResultBuilder",{enumerable:!0,get:function(){return Cs.SarifResultBuilder}});var js=_n();Object.defineProperty(Y,"SarifRuleBuilder",{enumerable:!0,get:function(){return js.SarifRuleBuilder}});var Is=qn();Object.defineProperty(Y,"SarifRunBuilder",{enumerable:!0,get:function(){return Is.SarifRunBuilder}})});var Xn=g((mc,Un)=>{"use strict";var Fs=/["'&<>]/;Un.exports=Ms;function Ms(t){var e=""+t,r=Fs.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"),ce=require("fs/promises");var U={UNKNOWN:0,LOW:1,MEDIUM:2,HIGH:3,CRITICAL:4};var De=class{constructor(e){this.depProvider=e}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=At(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=hi(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 hi(t,e){return At(t,e)>0?t:e}function At(t,e){return U[t]-U[e]}function it(t,e){return e?Array.from(new Set([...t,e]).values()):t}var Oe=Ee(require("path"));var B=require("fs/promises"),ot=require("path");async function X(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 Si(t,r);await(0,B.writeFile)(t,n,{encoding:"utf-8"})}function W(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 at(t){let e=(0,ot.resolve)(t),r=await(0,B.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,B.rm)(i)}await(0,B.rmdir)(e)}async function he(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 Si(t,e){let r=await vi();if(!r)return e;let n=await r.resolveConfig(t);return n?await r.format(e,{...n,filepath:t}):e}var gi;function vi(){return gi??=import("prettier").catch(()=>{})}var ct;async function lt(t){if(ct)return ct;let e="https://repository.conterra.de/repository/maven-mirror-ct",r=Z(t.workingDir,"input/vex"),n=Z(t.workingDir,"output"),i=Z(t.workingDir,"cache"),o=["grype","trivy","ossindex"],s=Z(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:Z(t.workingDir,c.vexDir)??r,outDir:Z(t.workingDir,c.outDir)??n,cacheDir:Z(t.workingDir,c.cacheDir)??i,scanners:(c.scanners??o).map(u=>{if(typeof u!="string")throw new Error(`Invalid scanner name '${u}' in configuration file '${s}'`);let a=u.split("@");if(a.length>2)throw new Error(`Invalid scanner name '${u}' in configuration file '${s}'`);let f=a[0],m=a[1]??"";return{name:f,version:m}}),projects:(c.projects??[]).map(u=>{let a=u;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:Z(t.workingDir,a.sbomFile)}:(a.detectNoLongerUsedVulnerabilities=p?a.purl.endsWith("-SNAPSHOT"):!0,u)})}}function Z(t,e){if(e)return Oe.default.isAbsolute(e)?e:(0,Oe.resolve)(t,e)}var ie=Ee(Bn());var Jn=Ee(Xn());function Ge(t,e=""){return Gn(t,e,new Set,new Set)}function Gn(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=Gn(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:W(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)}}}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?Wn(r):{purl:e,usedBy:[]}}};function Wn(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=Wn(n,new Set(e));r.usedBy.push(i)}return r}function Hn(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=Rs(o.severity),c=o.id,p=Ns(o.refs),u=new ie.SarifRuleBuilder().initSimple({ruleId:c,shortDescriptionText:o.title,fullDescriptionText:o.description,helpUri:p}),a=o.vexStatement,f,m="new",l="";a?(f=[{kind:"external",status:"accepted"}],m="updated",l=`--- INVESTIGATED (${a.status}) --- `,a.status==="under_investigation"&&(f[0].status="underReview",l="--- UNDER INVESTIGATION --- ")):U[e.minimumSeverity]>U[o.severity]?(f=[{kind:"external",status:"accepted"}],m="updated",l=`--- BELOW MINIMUM SEVERITY '${e.minimumSeverity}' ---`):e.silent&&(f=[{kind:"external",status:"accepted"}],m="updated",l="--- PROJECT SILENT ---"),Object.assign(u.rule,{name:`${l}[${o.severity}] - ${o.title.replace(`[${c}]`,"")}`,messageStrings:{default:{text:o.description,markdown:Vs(o,p,l)}},properties:{severity:o.severity,scanners:o.scannerSeverity,links:o.refs,tags:["cve","vulnerability","security",`severity_${o.severity.toLowerCase()}`]}}),r.addRule(u);for(let d of o.components){let h=new ie.SarifResultBuilder().initSimple({ruleId:c,level:s,messageText:`${c} [${o.severity}] - ${d}`});h.result.message.id="default",h.result.locations=[{logicalLocations:[{fullyQualifiedName:d}]}],h.result.baselineState=m,h.result.suppressions=f,r.addResult(h)}}let i=new ie.SarifBuilder;return i.addRun(r),i.buildSarifOutput()}function Ns(t){for(let e of t)if(e.startsWith("https://nvd.nist.gov"))return e;return t[0]}function Rs(t){switch(t){case"CRITICAL":return"error";case"HIGH":return"error";case"MEDIUM":return"warning";case"LOW":return"warning";default:return"note"}}function Vs(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}=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)||ro(o),vr(i,t,e,r)}function vr(t,e,r,n){let o=(n.dereference?_.statSync:_.lstatSync)(e);if(o.isDirectory())return fo(o,t,e,r,n);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return oo(o,t,e,r,n);if(o.isSymbolicLink())return yo(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 oo(t,e,r,n,i){return e?so(t,r,n,i):wr(t,r,n,i)}function so(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&&ao(t.mode,e,r),wt(r,t.mode)}function ao(t,e,r){return co(t)&&lo(r,t),uo(e,r)}function co(t){return(t&128)===0}function lo(t,e){return wt(t,e|128)}function wt(t,e){return _.chmodSync(t,e)}function uo(t,e){let r=_.statSync(t);return no(e,r.atime,r.mtime)}function fo(t,e,r,n,i){return e?br(r,n,i):mo(t.mode,r,n,i)}function mo(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;)po(i.name,t,e,r)}finally{n.closeSync()}}function po(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 yo(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 ho(i,r)}else return _.symlinkSync(i,r)}function ho(t,e){return _.unlinkSync(e),_.symlinkSync(t,e)}xr.exports=io});var Ne=g((Xa,Lr)=>{"use strict";var So=T().fromPromise;Lr.exports={copy:So(gr()),copySync:Pr()}});var Pe=g((Ga,kr)=>{"use strict";var Er=fe(),go=T().fromCallback;function vo(t,e){Er.rm(t,{recursive:!0,force:!0},e)}function wo(t){Er.rmSync(t,{recursive:!0,force:!0})}kr.exports={remove:go(vo),removeSync:wo}});var Mr=g((Ja,Fr)=>{"use strict";var bo=T().fromPromise,Cr=$(),Tr=require("path"),jr=W(),Ir=Pe(),Or=bo(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((Wa,Vr)=>{"use strict";var xo=T().fromPromise,Nr=require("path"),Z=$(),Rr=W();async function Po(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 Lo(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:xo(Po),createFileSync:Lo}});var Ur=g((Ha,qr)=>{"use strict";var Eo=T().fromPromise,$r=require("path"),ne=$(),_r=W(),{pathExists:ko}=re(),{areIdentical:Br}=ce();async function Oo(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 ko(i)||await _r.mkdirs(i),await ne.link(t,e)}function Do(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:Eo(Oo),createLinkSync:Do}});var Gr=g((Ya,Xr)=>{"use strict";var ie=require("path"),Le=$(),{pathExists:Co}=re(),To=T().fromPromise;async function jo(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 Co(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 Io(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:To(jo),symlinkPathsSync:Io}});var Hr=g((Qa,Wr)=>{"use strict";var Jr=$(),Fo=T().fromPromise;async function Mo(t,e){if(e)return e;let r;try{r=await Jr.lstat(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}function No(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:Fo(Mo),symlinkTypeSync:No}});var zr=g((Ka,Kr)=>{"use strict";var Ro=T().fromPromise,Yr=require("path"),H=$(),{mkdirs:Vo,mkdirsSync:Ao}=W(),{symlinkPaths:$o,symlinkPathsSync:_o}=Gr(),{symlinkType:Bo,symlinkTypeSync:qo}=Hr(),{pathExists:Uo}=re(),{areIdentical:Qr}=ce();async function Xo(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 Bo(i.toCwd,r),s=Yr.dirname(e);return await Uo(s)||await Vo(s),H.symlink(t,e,o)}function Go(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=_o(t,e);t=i.toDst,r=qo(i.toCwd,r);let o=Yr.dirname(e);return H.existsSync(o)||Ao(o),H.symlinkSync(t,e,r)}Kr.exports={createSymlink:Ro(Xo),createSymlinkSync:Go}});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((Za,cn)=>{function Jo(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 Wo(t){return Buffer.isBuffer(t)&&(t=t.toString("utf8")),t.replace(/^\uFEFF/,"")}cn.exports={stringify:Jo,stripBom:Wo}});var mn=g((ec,fn)=>{var de;try{de=fe()}catch{de=require("fs")}var Ve=T(),{stringify:ln,stripBom:un}=Re();async function Ho(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 Yo=Ve.fromPromise(Ho);function Qo(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 Ko(t,e,r={}){let n=r.fs||de,i=ln(e,r);await Ve.fromCallback(n.writeFile)(t,i,r)}var zo=Ve.fromPromise(Ko);function Zo(t,e,r={}){let n=r.fs||de,i=ln(e,r);return n.writeFileSync(t,i,r)}fn.exports={readFile:Yo,readFileSync:Qo,writeFile:zo,writeFileSync:Zo}});var dn=g((tc,pn)=>{"use strict";var Ae=mn();pn.exports={readJson:Ae.readFile,readJsonSync:Ae.readFileSync,writeJson:Ae.writeFile,writeJsonSync:Ae.writeFileSync}});var $e=g((rc,Sn)=>{"use strict";var es=T().fromPromise,bt=$(),yn=require("path"),hn=W(),ts=re().pathExists;async function rs(t,e,r="utf-8"){let n=yn.dirname(t);return await ts(n)||await hn.mkdirs(n),bt.writeFile(t,e,r)}function ns(t,...e){let r=yn.dirname(t);bt.existsSync(r)||hn.mkdirsSync(r),bt.writeFileSync(t,...e)}Sn.exports={outputFile:es(rs),outputFileSync:ns}});var vn=g((nc,gn)=>{"use strict";var{stringify:is}=Re(),{outputFile:os}=$e();async function ss(t,e,r={}){let n=is(e,r);await os(t,n,r)}gn.exports=ss});var bn=g((ic,wn)=>{"use strict";var{stringify:as}=Re(),{outputFileSync:cs}=$e();function ls(t,e,r){let n=as(e,r);cs(t,n,r)}wn.exports=ls});var Pn=g((oc,xn)=>{"use strict";var us=T().fromPromise,B=dn();B.outputJson=us(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((sc,On)=>{"use strict";var fs=$(),Ln=require("path"),{copy:ms}=Ne(),{remove:kn}=Pe(),{mkdirp:ps}=W(),{pathExists:ds}=re(),En=ce();async function ys(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 ps(s),hs(t,e,n,o)}async function hs(t,e,r,n){if(!n){if(r)await kn(e);else if(await ds(e))throw new Error("dest already exists.")}try{await fs.rename(t,e)}catch(i){if(i.code!=="EXDEV")throw i;await Ss(t,e,r)}}async function Ss(t,e,r){return await ms(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),kn(t)}On.exports=ys});var Fn=g((ac,In)=>{"use strict";var Tn=fe(),Pt=require("path"),gs=Ne().copySync,jn=Pe().removeSync,vs=W().mkdirpSync,Cn=ce();function ws(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"),bs(e)||vs(Pt.dirname(e)),xs(t,e,n,o)}function bs(t){let e=Pt.dirname(t);return Pt.parse(e).root===e}function xs(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 Ps(t,e,r)}}function Ps(t,e,r){return gs(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),jn(t)}In.exports=ws});var Nn=g((cc,Mn)=>{"use strict";var Ls=T().fromPromise;Mn.exports={move:Ls(Dn()),moveSync:Fn()}});var Vn=g((lc,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=Es;function Es(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 ks=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]})),Os=Y&&Y.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Ds=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"&&ks(r,e,n[i]);return Os(r,e),r}})();Object.defineProperty(Y,"__esModule",{value:!0});Y.SarifBuilder=void 0;var $n=Ds(Vn()),Cs=An(),Ts=Ee(),Et=class{constructor(e={}){this.log={$schema:"http://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[]},(0,Ts.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=Cs.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 js=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,js.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 Is=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,Is.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 Fs=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,Fs.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 Ms=_n();Object.defineProperty(Q,"SarifBuilder",{enumerable:!0,get:function(){return Ms.SarifBuilder}});var Ns=Bn();Object.defineProperty(Q,"SarifResultBuilder",{enumerable:!0,get:function(){return Ns.SarifResultBuilder}});var Rs=qn();Object.defineProperty(Q,"SarifRuleBuilder",{enumerable:!0,get:function(){return Rs.SarifRuleBuilder}});var Vs=Un();Object.defineProperty(Q,"SarifRunBuilder",{enumerable:!0,get:function(){return Vs.SarifRunBuilder}})});var Jn=g((Sc,Gn)=>{"use strict";var As=/["'&<>]/;Gn.exports=$s;function $s(t){var e=""+t,r=As.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=gi(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 gi(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 vi(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 vi(t,e){let r=await bi();if(!r)return e;let n=await r.resolveConfig(t);return n?await r.format(e,{...n,filepath:t}):e}var wi;function bi(){return wi??=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=Bs(o.severity),c=o.id,p=_s(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:qs(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 _s(t){for(let e of t)if(e.startsWith("https://nvd.nist.gov"))return e;return t[0]}function Bs(t){switch(t){case"CRITICAL":return"error";case"HIGH":return"error";case"MEDIUM":return"warning";case"LOW":return"warning";default:return"note"}}function qs(t,e,r){let n=t.vexStatement,i=n?`
11
11
  ${r}
12
12
  ${n.justification??""}
13
13
  ${n.impact_statement??""}
@@ -19,7 +19,7 @@ ${i}
19
19
 
20
20
  --- DETAILS ---
21
21
 
22
- ${(0,Jn.default)(t.description)}
22
+ ${(0,Yn.default)(t.description)}
23
23
 
24
24
  ${t.refs.map(o=>`* <${o}>`).join(`
25
25
  `)}
@@ -35,9 +35,9 @@ Usage tree:
35
35
  ${t.componentTree?.map(o=>Ge(o)).join(`
36
36
  `)}
37
37
  \`\`\`
38
- `}var Je=require("fs/promises");async function Yn(t,e,r){if("sbomFile"in t)return await(0,Je.copyFile)(t.sbomFile,e),t.sbomFile=e,t;let n=await r.downloadArtifact(t.sbomMavenCoordinates);return await(0,Je.writeFile)(e,n),{...t,sbomFile:e}}var We=class{constructor(e,r){this.repo=e;this.authn=r}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 he(n,this.authn);return Buffer.from(await i.arrayBuffer())}async fetchLatestSnapshotTimestamp(e){let r=`${this.toArtifactBaseUrl(e)}/maven-metadata.xml`,i=await(await he(r,this.authn)).text();return As(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 As(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"),Tt=require("path");var Ct=class{constructor(e){this.location=e}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 Ct((0,Tt.resolve)(r.parentPath,r.name))):r.isDirectory()&&await Ye((0,Tt.resolve)(r.parentPath,r.name),e)}function It(t){let e=t.vulnerability.name;return new Set([e,...t.vulnerability.aliases??[]])}var de=class t{statements=[];filteredToProducts=[];static async fromUrl(e,r,n=new t){let o=await(await he(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){_s(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(u=>u["@id"]).filter(u=>!!u)??[]),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&&!$s(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 $s(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}matchesProduct(e){return this.products.has(e)}matchesAtLeastOneProduct(e){return e.some(this.matchesProduct.bind(this))}matchesVulnerability(e){return this.vulnAliases.has(e)}};function _s(t){if(t?.["@context"]!=="https://openvex.dev/ns/v0.2.0")throw new Error("Invalid VEX file format")}var Ke=require("path"),Qn=require("fs/promises");var Qe=class{constructor(e,r,n){this.project=e;this.outputDir=r;this.useSubDirForProject=n}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 oe(s)||await(0,Qn.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"),Kn="anchore/grype";async function zn(t,e,r){r&&console.log(`Initializing Grype DB in cache directory: ${e}`);let n=`${Kn}:${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 Zn(t,e,r,n,i,o,s){let c=(0,ze.dirname)(r),p=(0,ze.basename)(r),u=[];o||u.push("--quiet");let a=`${Kn}:${t||"latest"}`,f=`${e}:/tmp/.cache`,m=`${c}:/tmp/output`,l=`${n.sbomFile}:/tmp/input.json`,d=`/tmp/output/${p}`,h=await Ft.$`docker run --rm -v ${f} -v ${m} -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 ${u}`.nothrow();if(h.stdout&&s(` Scan log: ${h.stdout}`),h.stderr&&s(` Scan error: ${h.stderr}`),h.exitCode!==0)throw new Error(`Grype scan failed with exit code ${h.exitCode}: ${h.stderr}`);s(` Grype output file: ${r}`);try{let S=await X(r);qs(i,S)}catch(S){throw new Error(`Grype scan results could not be read from '${r}': ${S}`,{cause:S})}}function qs(t,e){if(e)for(let r of e.matches){let n=Bs(r);t.addVulnerability(n,"grype")}}function Bs(t){let e=t.vulnerability,r=e.id,n=W(t.artifact.purl),i=W(e.dataSource),o=Us(e.severity);return{id:r,severity:o,scannerSeverity:{grype:o},title:"",description:e.description,components:[n],detectedBy:["grype"],refs:[i]}}function Us(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 ei=require("fs/promises");async function ti(t,e,r,n,i,o){try{let s={},c="";r.user&&r.token&&(s.Authorization=`Basic ${Buffer.from(`${r.user}:${r.token}`).toString("base64")}`,c="/authorized");let p=`https://ossindex.sonatype.org/api/v3${c}/component-report`,u=await Xs(e.sbomFile),a=new Set(u.map(l=>l.purl.replace(/\?.*$/,"")));Qs(a);let f=Array.from(a),m=[];for(let l=0;l<f.length;l+=128){let d=JSON.stringify({coordinates:f.slice(l,l+128)});i&&o(` Sonatype OssIndex request ${p} with body: ${d}`);let S=await(await fetch(p,{method:"POST",headers:{...s,"Content-Type":"application/vnd.ossindex.component-report-request.v1+json"},body:d})).json();Array.isArray(S)?m.push(...S.filter(w=>w.vulnerabilities.length>0)):o(` Sonatype OssIndex Error: ${S.code} - ${S.message}`)}await(0,ei.writeFile)(t,JSON.stringify(m,null,2)),o(` Sonatype OssIndex output file: ${t}`),Js(n,m)}catch(s){throw new Error(`Sonatype OSS Index scan failed: ${s}`,{cause:s})}}async function Xs(t){return(await X(t)).components.filter(r=>Gs(r)&&!Ws(r))}function Gs(t){return!!t.purl}function Ws(t){return t.group?t.group.startsWith("de.conterra")||t.group.startsWith("org.n52.security"):!1}function Js(t,e){if(e)for(let r of e)for(let n of r.vulnerabilities){let i=Hs(n,r.coordinates);t.addVulnerability(i,"ossindex")}}function Hs(t,e){let r=t.cve||t.id,n=W(e),i=W(t.reference),o=Ys(t.cvssScore);return{id:r,severity:o,scannerSeverity:{ossindex:o},title:t.title,description:t.description,components:[n],detectedBy:["ossindex"],refs:i?[i]:[]}}function Ys(t){return t===0?"UNKNOWN":t<4?"LOW":t<7?"MEDIUM":t<9?"HIGH":"CRITICAL"}function Qs(t){let e=Array.from(t);for(let r of e){let n=r.replace(/(@[^-]+)-.*$/g,"$1");t.add(n)}}var Mt=require("zx");var Ze=require("path"),ri="aquasec/trivy";async function ni(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=`${ri}:${t||"0.69.3"}`,c=await Mt.$`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 ii(t,e,r,n,i,o,s){let c=(0,Ze.dirname)(r),p=(0,Ze.basename)(r),u=[];o||u.push("--quiet");let a=`${ri}:${t||"0.69.3"}`,f=`${e}:/.cache`,m=`${c}:/tmp/output`,l=`${n.sbomFile}:/tmp/input.json`,d=`/tmp/output/${p}`,h=await Mt.$`docker run --rm -v ${f} -v ${m} -v ${l} ${a} sbom --cache-dir '/.cache' --format json --output ${d} ${u} --skip-db-update /tmp/input.json`.nothrow();if(h.stdout&&s(` Scan log: ${h.stdout}`),h.stderr&&s(` Scan error: ${h.stderr}`),h.exitCode!==0)throw new Error(`Trivy scan failed with exit code ${h.exitCode}: ${h.stderr}`);s(` Trivy output file: ${r}`);try{let S=await X(r);Ks(i,S)}catch(S){throw new Error(`Trivy scan results could not be read from '${r}': ${S}`,{cause:S})}}function Ks(t,e){if(e){for(let r of e.Results??[])if(r.Vulnerabilities)for(let n of r.Vulnerabilities){let i=zs(n);t.addVulnerability(i,"trivy")}}}function zs(t){let e=t.VulnerabilityID,r=W(t.PkgIdentifier.PURL),n=W(t.PrimaryURL),i=Zs(t.Severity);return{id:e,severity:i,scannerSeverity:{trivy:i},title:t.Title,description:t.Description,components:[r],detectedBy:["trivy"],refs:[n]}}function Zs(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}async init(e){let r=[];for(let n of this.scanners)switch(n.name){case"grype":r.push(zn(n.version,this.cacheDir,e));break;case"trivy":r.push(ni(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.ossIndexApiUser,this.options.ossIndexApiToken,i,o));await Promise.all(s)}async scanProjectBy(e,r,n,i,o,s,c,p,u){switch(e.name){case"grype":return Zn(e.version,i,await n.lookupOutputFileForWriting("grype-results"),r,o,p,u);case"trivy":return ii(e.version,i,await n.lookupOutputFileForWriting("trivy-results"),r,o,p,u);case"ossindex":return ti(await n.lookupOutputFileForWriting("ossindex-results"),r,{user:s,token:c},o,p,u)}}};async function oi(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 u=p.products.findIndex(a=>a["@id"]===e);u!==-1&&(p.products.splice(u,1),o=!0,p.products.length===0&&c.push(p))}if(o){for(let p of c){let u=s.indexOf(p);s.splice(u,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"),Nt=require("path");async function ai(t,e){let{orderBy:r,reportNoLongerDetectedVulnerabilities:n,reportCveDetails:i,outputDirectory:o}={orderBy:"CVE",reportNoLongerDetectedVulnerabilities:!0,reportCveDetails:!1,...e},s=!1,c=!1,p=!1,u=new Map,a=new Map,f=new Map,m=new Map,l=new Map,d=[],h=new Map;for(let x of t.values()){let G=x.project,R=`${G.name}@${G.version}`;if(x.error&&(s=!0,d.push({project:R,error:x.error})),G.silent)continue;let nt=U[G.minimumSeverity],ye=x.newVulns.filter(y=>nt<=U[y.severity]);for(let y of ye){if(c=!0,!u.has(y.id))u.set(y.id,{id:y.id,title:y.title,severity:y.severity,description:y.description,components:y.components,refs:y.refs});else{let v=u.get(y.id);ia(v,y)}a.has(y.id)||a.set(y.id,[]),m.has(R)||m.set(R,[]),h.has(R)||h.set(R,new Map),m.get(R).push(y.id),a.get(y.id).push(R);for(let v of y.componentTree)v.purl&&(h.get(R).has(v.purl)||h.get(R).set(v.purl,v))}for(let y of x.noLongerDetectedVulns)p=!0,f.has(y)||f.set(y,[]),l.has(R)||l.set(R,[]),l.get(R).push(y),f.get(y).push(R)}let S;o&&(S=(0,Nt.join)(o,"scan-summary.txt"),await(0,ke.writeFile)(S,"","utf8"));let w=async x=>{console.log(x),S&&await(0,ke.appendFile)(S,x+`
39
- `,"utf8")};switch(await w("=== Scan summary ==="),d.length&&await ea(w,d),i&&await na(w,u,h),r){case"CVE":{await ra(w,a,u,n?f:new Map);break}case"PROJECT":{await ta(w,m,n?l:new Map,u);break}}!s&&!c&&(!p||!n)&&await w(" No issues found");let j={errors:d,vulnerabilities:Object.fromEntries(u),vulnerabilityToProject:Object.fromEntries(a.entries()),projectToVulnerability:Object.fromEntries(m.entries()),projectsToComponents:Object.fromEntries(Array.from(h.entries()).map(([x,G])=>[x,Object.fromEntries(G.entries())])),noLongerDetectedVulnerabilities:Object.fromEntries(f)};if(o){let x=(0,Nt.join)(o,"scan-summary.json");await(0,ke.writeFile)(x,JSON.stringify(j,null,2),"utf8")}return{hasError:s,hasNewVuln:c,hasNoLongerDetectedVuln:p}}async function ea(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 ta(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 u of c.slice().sort(Rt(a=>n.get(a).severity))){let{severity:a}=n.get(u);await t(` - [${a}] ${u}`)}let p=(r.get(s)??[]).slice().sort();for(let u of p)await t(` - ${u} (no longer detected)`)}}}async function ra(t,e,r,n){let i=Array.from(e.keys()).sort(Rt(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 u of c.slice().sort())await t(` - ${u}`)}}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 na(t,e,r){if(e.size===0)return;await t(""),await t("- Vulnerability details:");let n=Array.from(e.keys()).sort(Rt(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 ia(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=si(t.components,e.components),t.refs=si(t.refs,e.refs)}function si(t,e){let r=new Set([...t,...e]);return Array.from(r)}function Rt(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 ci(t){let e=await lt(t),r=e.cacheDir;await oe(r)||await(0,ce.mkdir)(r);let n=e.outDir;await oe(n)&&await at(n),await(0,ce.mkdir)(n);let i=await ca(e,{user:t.vexUrlsUser,pw:t.vexUrlsPw}),o=new We(e.mavenRepo,{user:t.mavenRepoUser,pw:t.mavenRepoPw}),s=la(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=ua(t),u=e.projects,a=new Map,f=Date.now();console.log("Scanning projects ...");let m=u.filter(p).map(d=>{let h=new Qe(d,n,e.createSubDirsForProject),S=[],w=x=>{S.push(x)};return{scan(){return oa(d,h,o,s,i,w,a,t,S)}}});await ma(m),console.log(`Scanning took ${Date.now()-f}ms`),t.autoRemoveUnusedStatements&&await fa(a,e.vexDir);let l=await ai(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 oa(t,e,r,n,i,o,s,c,p){try{let{unmatchedVulnerabilities:u,noLongerDetectedVulnerabilities:a}=await sa(t,e,r,n,i,c.verbose,o);s.set(t.purl,{project:t,newVulns:u,noLongerDetectedVulns:a})}catch(u){let a=u;s.set(t.purl,{project:t,error:`${a}`,newVulns:[],noLongerDetectedVulns:[]})}if(c.verbose)for(let u of p)console.log(u)}async function sa(t,e,r,n,i,o,s){let c=await Yn(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 u=new De(Xe.createForSbom(p));await n.scanProject(c,e,u,o,s);let a=i.filterByProduct([c.purl,...c.purlAliases]),{unmatchedVulnerabilities:f}=u.enhanceWithVexData(a),m=c.detectNoLongerUsedVulnerabilities?a.findNotMatchingVulnerabilities(u.getAllVulnIds()):[];return await aa(e,c,u,a,s),{unmatchedVulnerabilities:f,noLongerDetectedVulnerabilities:m}}async function aa(t,e,r,n,i){let o=r.getAllVulnerabilitiesSortedBySeverity(),s=await t.lookupOutputFileForWriting("aggregate-results");await(0,ce.writeFile)(s,JSON.stringify(o,null,2)),i(` Vulnerabilities output file: ${s}`);let c=await t.lookupOutputFileForWriting("aggregated-sarif-results"),p=Hn(o,e);await(0,ce.writeFile)(c,JSON.stringify(p,null,2)),i(` Vuln Sarif output file: ${c}`);let u=n.toVexFile(o.filter(f=>f.vexStatement).map(f=>{let m=f.vexStatement;for(let l of f.components??[])m.products.push({"@id":l});return m}));if(!u)return;let a=await t.lookupOutputFileForWriting("project-openvex-file");await(0,ce.writeFile)(a,JSON.stringify(u,null,2)),i(` OpenVex file: ${a}`)}async function ca(t,e){let r=t.vexDir,n;await oe(r)?n=await de.fromFiles(r):n=new de;for(let i of t.vexUrls)await de.fromUrl(i,e,n);return n}function la(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 ua(t){let{reduceToProjectName:e,reduceToProjectVersion:r}=t;return n=>!(!n.enabled||e&&(n.name!==e||r&&n.version!==r))}async function fa(t,e){for(let r of t.values())if(!r.project.silent)for(let n of r.noLongerDetectedVulns)await oi(e,r.project.purl,n)}async function ma(t,e=5){let r=0,n=0,i=0,o=t.length,s,c=new Promise(u=>{s=u});function p(){for(;r<e&&i<o;){let u=t[i++];r++,u.scan().finally(()=>{r--,n++,n>=o?s():p()})}}p(),await c}var li=require("zx");li.dotenv.config();var z=process.env;(async()=>{let t=await ci({workingDir:process.cwd(),reduceToProjectName:process.argv[2],reduceToProjectVersion:process.argv[3],ossIndexApiUser:z.OSS_INDEX_API_USER,ossIndexApiToken:z.OSS_INDEX_API_TOKEN,mavenRepoUser:z.MAVEN_REPO_USER,mavenRepoPw:z.MAVEN_REPO_PW,trivyGithubToken:z.TRIVY_GITHUB_TOKEN,vexUrlsUser:z.VEX_URLS_USER,vexUrlsPw:z.VEX_URLS_PW,verbose:z.VERBOSE==="true",autoRemoveUnusedStatements:z.AUTO_REMOVE_UNUSED_STATEMENTS==="true"});process.exitCode=t})();
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 Us(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 Us(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){Gs(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&&!Xs(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 Xs(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 Gs(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);Js(i,S)}catch(S){throw new Error(`Grype scan results could not be read from '${r}': ${S}`,{cause:S})}}function Js(t,e){if(e)for(let r of e.matches){let n=Ws(r);t.addVulnerability(n,"grype")}}function Ws(t){let e=t.vulnerability,r=e.id,n=J(t.artifact.purl),i=J(e.dataSource),o=Hs(e.severity);return{id:r,severity:o,scannerSeverity:{grype:o},title:"",description:e.description,components:[n],detectedBy:["grype"],refs:[i]}}function Hs(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 Ys(e.sbomFile),m=new Set(a.map(y=>y.purl.replace(/\?.*$/,"")));ta(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 Ys(t){return(await X(t)).components.filter(r=>Qs(r)&&!Ks(r))}function Qs(t){return!!t.purl}function Ks(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=Zs(n,r.coordinates);t.addVulnerability(i,"ossindex")}}function Zs(t,e){let r=t.cve||t.id,n=J(e),i=J(t.reference),o=ea(t.cvssScore);return{id:r,severity:o,scannerSeverity:{ossindex:o},title:t.title,description:t.description,components:[n],detectedBy:["ossindex"],refs:i?[i]:[]}}function ea(t){return t===0?"UNKNOWN":t<4?"LOW":t<7?"MEDIUM":t<9?"HIGH":"CRITICAL"}function ta(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";async function oi(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||"0.70.0"}`,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 si(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||"0.69.3"}`,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);ra(i,S)}catch(S){throw new Error(`Trivy scan results could not be read from '${r}': ${S}`,{cause:S})}}function ra(t,e){if(e){for(let r of e.Results??[])if(r.Vulnerabilities)for(let n of r.Vulnerabilities){let i=na(n);t.addVulnerability(i,"trivy")}}}function na(t){let e=t.VulnerabilityID,r=J(t.PkgIdentifier.PURL),n=J(t.PrimaryURL),i=ia(t.Severity);return{id:e,severity:i,scannerSeverity:{trivy:i},title:t.Title,description:t.Description,components:[r],detectedBy:["trivy"],refs:[n]}}function ia(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(oi(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 si(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 ai(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 li(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);la(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 oa(w,d),i&&await ca(w,f,y),r){case"CVE":{await aa(w,a,f,n?m:new Map);break}case"PROJECT":{await sa(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 oa(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 sa(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 aa(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 ca(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 la(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=ci(t.components,e.components),t.refs=ci(t.refs,e.refs)}function ci(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 ui(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 pa(e,{user:t.vexUrlsUser,pw:t.vexUrlsPw}),o=new Je(e.mavenRepo,{user:t.mavenRepoUser,pw:t.mavenRepoPw}),s=da(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=ya(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 ua(d,y,o,s,i,w,a,t,S)}}});await Sa(u),console.log(`Scanning took ${Date.now()-m}ms`),t.autoRemoveUnusedStatements&&await ha(a,e.vexDir);let l=await li(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 ua(t,e,r,n,i,o,s,c,p){try{let{unmatchedVulnerabilities:f,noLongerDetectedVulnerabilities:a}=await fa(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 fa(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 ma(e,c,f,a,s),{unmatchedVulnerabilities:m,noLongerDetectedVulnerabilities:u}}async function ma(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 pa(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 da(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 ya(t){let{reduceToProjectName:e,reduceToProjectVersion:r}=t;return n=>!(!n.enabled||e&&(n.name!==e||r&&n.version!==r))}async function ha(t,e){for(let r of t.values())if(!r.project.silent)for(let n of r.noLongerDetectedVulns)await ai(e,r.project.purl,n)}async function Sa(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 fi=require("zx");fi.dotenv.config();var K=process.env;(async()=>{let t=await ui({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})();
41
41
  /*! Bundled license information:
42
42
 
43
43
  escape-html/index.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conterra/vuln-scan",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "con terra vulnerability scan process",
5
5
  "author": "con terra GmbH",
6
6
  "license": "Apache-2.0",
@@ -38,19 +38,19 @@
38
38
  "@types/escape-html": "1.0.4",
39
39
  "@types/sarif": "^2.1.7",
40
40
  "copyfiles": "2.4.1",
41
- "esbuild": "0.27.4",
41
+ "esbuild": "0.28.0",
42
42
  "escape-html": "1.0.3",
43
43
  "eslint-plugin-headers": "1.3.4",
44
44
  "eslint": "^9.39.1",
45
- "globals": "17.4.0",
45
+ "globals": "17.5.0",
46
46
  "json-schema-to-typescript": "15.0.4",
47
- "node-sarif-builder": "4.0.0",
47
+ "node-sarif-builder": "4.1.0",
48
48
  "prettier": "^3.8.1",
49
49
  "rimraf": "6.1.3",
50
50
  "typescript": "5.9.3",
51
- "typescript-eslint": "8.57.2",
52
- "vitest": "4.1.1",
53
- "@inquirer/prompts": "8.3.2"
51
+ "typescript-eslint": "8.59.0",
52
+ "vitest": "4.1.5",
53
+ "@inquirer/prompts": "8.4.2"
54
54
  },
55
55
  "scripts": {
56
56
  "full-build": "pnpm run clean && pnpm run type-check && pnpm run lint && pnpm run prod",