@conterra/vuln-scan 0.0.11 → 0.0.13

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