@conterra/vuln-scan 1.0.8 → 1.0.10

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