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