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