@conterra/vuln-scan 0.0.4 → 0.0.5
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 +8 -0
- package/dist/add-statement.js +5 -5
- package/dist/schema/conf-schema.json +8 -3
- package/dist/vuln-scan.js +8 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -102,6 +102,10 @@ The following sample lists all available options with their default values:
|
|
|
102
102
|
"mavenRepo": "https://repository.conterra.de/repository/maven-mirror-ct",
|
|
103
103
|
/* The list of scanners to use. Possible values are "grype", "trivy" and "ossindex". */
|
|
104
104
|
"scanners": ["grype", "trivy", "ossindex"],
|
|
105
|
+
/* (optional) The list of vex files to download. Default is empty array. */
|
|
106
|
+
"vexUrls": [
|
|
107
|
+
"https://example.com/my-vex.json"
|
|
108
|
+
],
|
|
105
109
|
/* The directory where the vex files are stored. */
|
|
106
110
|
"vexDir": "./input/vex",
|
|
107
111
|
/* The directory where the scan results are written to. */
|
|
@@ -164,6 +168,10 @@ MAVEN_REPO_PW=[password]
|
|
|
164
168
|
OSS_INDEX_API_USER=[username]
|
|
165
169
|
OSS_INDEX_API_TOKEN=[token]
|
|
166
170
|
|
|
171
|
+
# (optional) for authentication downloading vex files specified by vexUrls option
|
|
172
|
+
VEX_URLS_USER=[username]
|
|
173
|
+
VEX_URLS_PW=[password]
|
|
174
|
+
|
|
167
175
|
# (optional) helps to fix the rate limit issue during downloading the trivy database from github
|
|
168
176
|
# See <https://aquasecurity.github.io/trivy/v0.38/docs/references/troubleshooting/#github-rate-limiting>
|
|
169
177
|
TRIVY_GITHUB_TOKEN=[token]
|
package/dist/add-statement.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
2
|
+
"use strict";var k=Object.create;var S=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var N=(t,e,o,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of E(e))!C.call(t,r)&&r!==o&&S(t,r,{get:()=>e[r],enumerable:!(m=A(e,r))||m.enumerable});return t};var b=(t,e,o)=>(o=t!=null?k(I(t)):{},N(e||!t||!t.__esModule?S(o,"default",{value:t,enumerable:!0}):o,t));var F=b(require("node:readline/promises")),x=require("node:process");var _=b(require("path"));var c=require("fs/promises");async function v(t){if(await T(t))return JSON.parse(await(0,c.readFile)(t,{encoding:"utf-8"}))}async function T(t){try{return await(0,c.access)(t,c.constants.F_OK),!0}catch{return!1}}async function y(t){let e="https://repository.conterra.de/repository/maven-mirror-ct",o=l(t.workingDir,"input/vex"),m=l(t.workingDir,"output"),r=l(t.workingDir,"cache"),D=["grype","trivy","ossindex"],g=l(t.workingDir,"vuln-scan-conf.json"),i=await v(g);if(!i)throw new Error(`Missing project configuration file '${g}'`);return{failOnNewVulnerabilities:!1,createSubDirsForProject:i.createSubDirsForProject??!0,mavenRepo:i.mavenRepo??e,vexUrls:i.vexUrls??[],vexDir:l(t.workingDir,i.vexDir)??o,outDir:l(t.workingDir,i.outDir)??m,cacheDir:l(t.workingDir,i.cacheDir)??r,scanners:i.scanners??D,projects:(i.projects??[]).map(a=>{let u=a;return u.sbomFile?{...u,sbomFile:l(t.workingDir,u.sbomFile)}:a})}}function l(t,e){if(e)return _.default.isAbsolute(e)?e:(0,_.resolve)(t,e)}var h=require("path");var P=require("fs/promises"),$=require("crypto");(async()=>{let t=await y({workingDir:process.cwd()});console.info("## Add New VEX Statement ##");let e=F.default.createInterface({input:x.stdin,output:x.stdout}),o=await e.question(`CVE name (e.g. CVE-2023-52070):
|
|
3
3
|
> `);o||(console.log("Please provide a CVE name."),process.exit(1));let m=t.projects.map(n=>`${n.name}@${n.version}`),r=await e.question(`Projects to add? Available are:
|
|
4
4
|
- ${m.join(`,
|
|
5
5
|
- `)}
|
|
6
6
|
You can list multiple projects separated by comma:
|
|
7
|
-
> `);r||(console.log("Please provide projects to add."),process.exit(1));let
|
|
7
|
+
> `);r||(console.log("Please provide projects to add."),process.exit(1));let D=r.split(/\s*,\s*/).map(n=>{let s=n.split("@");return{name:s[0],version:s[1]}}),g=new Set(function*(){for(let n of D)for(let s of t.projects)s.name===n.name&&s.version===n.version&&(yield s.purl)}()),i=(0,h.resolve)(t.vexDir,`${o}.json`),a=await v(i),u=["under_investigation","affected","fixed","not_affected"],p=await e.question(`Status? Available are:
|
|
8
8
|
- ${u.join(`,
|
|
9
9
|
- `)}
|
|
10
10
|
> `);u.includes(p)||(p?(console.log("Invalid status."),process.exit(1)):p="under_investigation");let f={};switch(p){case"affected":{let n=await e.question(`Action statement? (required):
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
> (optional) `);if(s)if(!n.includes(s))console.log("Invalid justification."),process.exit(1);else{f.justification=s;let d=await e.question(`Impact statement? (optional):
|
|
15
15
|
> `);d&&(f.impact_statement=d)}else{let d=await e.question(`Impact statement? (required):
|
|
16
16
|
> `);d||(console.log("Please provide an impact statement."),process.exit(1)),f.impact_statement=d}break}case"fixed":{let n=await e.question(`Status note? (optional):
|
|
17
|
-
> `);n&&(f.status_notes=n);break}}let w=new Date().toISOString(),
|
|
18
|
-
${JSON.stringify(
|
|
17
|
+
> `);n&&(f.status_notes=n);break}}let w=new Date().toISOString(),j={vulnerability:{name:o},timestamp:w,products:Array.from(g).map(n=>({"@id":n})),status:p,...f};(await e.question(`Following statement will be added to ${i}:
|
|
18
|
+
${JSON.stringify(j,null,2)}
|
|
19
19
|
|
|
20
20
|
Do you want to proceed? (y/n)?
|
|
21
|
-
> `)).toLowerCase()!=="y"&&(console.log("Aborted."),process.exit(0)),a?(a.last_updated=w,a.version+=1,a.statements.push(
|
|
21
|
+
> `)).toLowerCase()!=="y"&&(console.log("Aborted."),process.exit(0)),a?(a.last_updated=w,a.version+=1,a.statements.push(j)):a={"@context":"https://openvex.dev/ns/v0.2.0","@id":`https://openvex.dev/docs/public/vex-${(0,$.randomUUID)()}`,author:"conterra",timestamp:w,last_updated:w,version:1,statements:[j]},await(0,P.writeFile)(i,JSON.stringify(a,null,2)),e.close()})();
|
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
},
|
|
19
19
|
"default": ["grype", "trivy", "ossindex"]
|
|
20
20
|
},
|
|
21
|
+
"vexUrls": {
|
|
22
|
+
"type": "array",
|
|
23
|
+
"items": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
"default": []
|
|
27
|
+
},
|
|
21
28
|
"vexDir": {
|
|
22
29
|
"type": "string",
|
|
23
30
|
"default": "./input/vex"
|
|
@@ -67,7 +74,5 @@
|
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
},
|
|
70
|
-
"required": [
|
|
71
|
-
"projects"
|
|
72
|
-
]
|
|
77
|
+
"required": ["projects"]
|
|
73
78
|
}
|
package/dist/vuln-scan.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var _i=Object.create;var
|
|
3
|
-
GFS4: `),console.error(t)});F[A]||(Rt=global[A]||[],_t(F,Rt),F.close=function(t){function e(r,i){return t.call(F,r,function(n){n||qt(),typeof i=="function"&&i.apply(this,arguments)})}return Object.defineProperty(e,je,{value:t}),e}(F.close),F.closeSync=function(t){function e(r){t.apply(F,arguments),qt()}return Object.defineProperty(e,je,{value:t}),e}(F.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){ie(F[A]),require("assert").equal(F[A].length,0)}));var Rt;global[A]||_t(global,F[A]);ot.exports=it(dn(F));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!F.__patched&&(ot.exports=it(F),F.__patched=!0);function it(t){mn(t),t.gracefulify=it,t.createReadStream=fe,t.createWriteStream=me;var e=t.readFile;t.readFile=r;function r(y,b,v){return typeof b=="function"&&(v=b,b=null),T(y,b,v);function T(C,E,k,D){return e(C,E,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?se([T,[C,E,k],L,D||Date.now(),Date.now()]):typeof k=="function"&&k.apply(this,arguments)})}}var i=t.writeFile;t.writeFile=n;function n(y,b,v,T){return typeof v=="function"&&(T=v,v=null),C(y,b,v,T);function C(E,k,D,L,I){return i(E,k,D,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?se([C,[E,k,D,L],P,I||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var o=t.appendFile;o&&(t.appendFile=s);function s(y,b,v,T){return typeof v=="function"&&(T=v,v=null),C(y,b,v,T);function C(E,k,D,L,I){return o(E,k,D,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?se([C,[E,k,D,L],P,I||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var c=t.copyFile;c&&(t.copyFile=l);function l(y,b,v,T){return typeof v=="function"&&(T=v,v=0),C(y,b,v,T);function C(E,k,D,L,I){return c(E,k,D,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?se([C,[E,k,D,L],P,I||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var f=t.readdir;t.readdir=u;var a=/^v[0-5]\./;function u(y,b,v){typeof b=="function"&&(v=b,b=null);var T=a.test(process.version)?function(k,D,L,I){return f(k,C(k,D,L,I))}:function(k,D,L,I){return f(k,D,C(k,D,L,I))};return T(y,b,v);function C(E,k,D,L){return function(I,P){I&&(I.code==="EMFILE"||I.code==="ENFILE")?se([T,[E,k,D],I,L||Date.now(),Date.now()]):(P&&P.sort&&P.sort(),typeof D=="function"&&D.call(this,I,P))}}}if(process.version.substr(0,4)==="v0.8"){var p=pn(t);g=p.ReadStream,x=p.WriteStream}var m=t.ReadStream;m&&(g.prototype=Object.create(m.prototype),g.prototype.open=O);var d=t.WriteStream;d&&(x.prototype=Object.create(d.prototype),x.prototype.open=X),Object.defineProperty(t,"ReadStream",{get:function(){return g},set:function(y){g=y},enumerable:!0,configurable:!0}),Object.defineProperty(t,"WriteStream",{get:function(){return x},set:function(y){x=y},enumerable:!0,configurable:!0});var S=g;Object.defineProperty(t,"FileReadStream",{get:function(){return S},set:function(y){S=y},enumerable:!0,configurable:!0});var w=x;Object.defineProperty(t,"FileWriteStream",{get:function(){return w},set:function(y){w=y},enumerable:!0,configurable:!0});function g(y,b){return this instanceof g?(m.apply(this,arguments),this):g.apply(Object.create(g.prototype),arguments)}function O(){var y=this;Qe(y.path,y.flags,y.mode,function(b,v){b?(y.autoClose&&y.destroy(),y.emit("error",b)):(y.fd=v,y.emit("open",v),y.read())})}function x(y,b){return this instanceof x?(d.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function X(){var y=this;Qe(y.path,y.flags,y.mode,function(b,v){b?(y.destroy(),y.emit("error",b)):(y.fd=v,y.emit("open",v))})}function fe(y,b){return new t.ReadStream(y,b)}function me(y,b){return new t.WriteStream(y,b)}var He=t.open;t.open=Qe;function Qe(y,b,v,T){return typeof v=="function"&&(T=v,v=null),C(y,b,v,T);function C(E,k,D,L,I){return He(E,k,D,function(P,Fs){P&&(P.code==="EMFILE"||P.code==="ENFILE")?se([C,[E,k,D,L],P,I||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}return t}function se(t){ie("ENQUEUE",t[0].name,t[1]),F[A].push(t),nt()}var Ee;function qt(){for(var t=Date.now(),e=0;e<F[A].length;++e)F[A][e].length>2&&(F[A][e][3]=t,F[A][e][4]=t);nt()}function nt(){if(clearTimeout(Ee),Ee=void 0,F[A].length!==0){var t=F[A].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,l=Math.max(o-n,1),f=Math.min(l*1.2,100);c>=f?(ie("RETRY",e.name,r),e.apply(null,r.concat([n]))):F[A].push(t)}Ee===void 0&&(Ee=setTimeout(nt,0))}}});var q=h(H=>{"use strict";var Vt=j().fromCallback,R=ae(),hn=["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);hn.forEach(t=>{H[t]=Vt(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,(l,f,a)=>{if(l)return c(l);s({bytesRead:f,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=Vt(R.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var Xt=h((Ws,$t)=>{"use strict";var Sn=require("path");$t.exports.checkPath=function(e){if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(Sn.parse(e).root,""))){let i=new Error(`Path contains invalid characters: ${e}`);throw i.code="EINVAL",i}}});var Ut=h((Hs,st)=>{"use strict";var Bt=q(),{checkPath:Gt}=Xt(),Jt=t=>{let e={mode:511};return typeof t=="number"?t:{...e,...t}.mode};st.exports.makeDir=async(t,e)=>(Gt(t),Bt.mkdir(t,{mode:Jt(e),recursive:!0}));st.exports.makeDirSync=(t,e)=>(Gt(t),Bt.mkdirSync(t,{mode:Jt(e),recursive:!0}))});var B=h((Qs,Wt)=>{"use strict";var gn=j().fromPromise,{makeDir:vn,makeDirSync:at}=Ut(),ct=gn(vn);Wt.exports={mkdirs:ct,mkdirsSync:at,mkdirp:ct,mkdirpSync:at,ensureDir:ct,ensureDirSync:at}});var Y=h((Ks,Qt)=>{"use strict";var wn=j().fromPromise,Ht=q();function bn(t){return Ht.access(t).then(()=>!0).catch(()=>!1)}Qt.exports={pathExists:wn(bn),pathExistsSync:Ht.existsSync}});var lt=h((zs,Kt)=>{"use strict";var ce=q(),xn=j().fromPromise;async function Ln(t,e,r){let i=await ce.open(t,"r+"),n=null;try{await ce.futimes(i,e,r)}finally{try{await ce.close(i)}catch(o){n=o}}if(n)throw n}function Pn(t,e,r){let i=ce.openSync(t,"r+");return ce.futimesSync(i,e,r),ce.closeSync(i)}Kt.exports={utimesMillis:xn(Ln),utimesMillisSync:Pn}});var ne=h((Ys,er)=>{"use strict";var le=q(),M=require("path"),zt=j().fromPromise;function kn(t,e,r){let i=r.dereference?n=>le.stat(n,{bigint:!0}):n=>le.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 Fn(t,e,r){let i,n=r.dereference?s=>le.statSync(s,{bigint:!0}):s=>le.lstatSync(s,{bigint:!0}),o=n(t);try{i=n(e)}catch(s){if(s.code==="ENOENT")return{srcStat:o,destStat:null};throw s}return{srcStat:o,destStat:i}}async function On(t,e,r,i){let{srcStat:n,destStat:o}=await kn(t,e,i);if(o){if(pe(n,o)){let s=M.basename(t),c=M.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(Me(t,e,r));return{srcStat:n,destStat:o}}function Dn(t,e,r,i){let{srcStat:n,destStat:o}=Fn(t,e,i);if(o){if(pe(n,o)){let s=M.basename(t),c=M.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(Me(t,e,r));return{srcStat:n,destStat:o}}async function Yt(t,e,r,i){let n=M.resolve(M.dirname(t)),o=M.resolve(M.dirname(r));if(o===n||o===M.parse(o).root)return;let s;try{s=await le.stat(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(pe(e,s))throw new Error(Me(t,r,i));return Yt(t,e,o,i)}function Zt(t,e,r,i){let n=M.resolve(M.dirname(t)),o=M.resolve(M.dirname(r));if(o===n||o===M.parse(o).root)return;let s;try{s=le.statSync(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(pe(e,s))throw new Error(Me(t,r,i));return Zt(t,e,o,i)}function pe(t,e){return e.ino&&e.dev&&e.ino===t.ino&&e.dev===t.dev}function ut(t,e){let r=M.resolve(t).split(M.sep).filter(n=>n),i=M.resolve(e).split(M.sep).filter(n=>n);return r.every((n,o)=>i[o]===n)}function Me(t,e,r){return`Cannot ${r} '${t}' to a subdirectory of itself, '${e}'.`}er.exports={checkPaths:zt(On),checkPathsSync:Dn,checkParentPaths:zt(Yt),checkParentPathsSync:Zt,isSrcSubdir:ut,areIdentical:pe}});var or=h((Zs,nr)=>{"use strict";var N=q(),de=require("path"),{mkdirs:En}=B(),{pathExists:jn}=Y(),{utimesMillis:Mn}=lt(),ye=ne();async function Tn(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 _i=Object.create;var xt=Object.defineProperty;var Xi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames;var Bi=Object.getPrototypeOf,Ui=Object.prototype.hasOwnProperty;var h=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Gi=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $i(e))!Ui.call(t,n)&&n!==r&&xt(t,n,{get:()=>e[n],enumerable:!(i=Xi(e,n))||i.enumerable});return t};var ze=(t,e,r)=>(r=t!=null?_i(Bi(t)):{},Gi(e||!t||!t.__esModule?xt(r,"default",{value:t,enumerable:!0}):r,t));var D=h(rt=>{"use strict";rt.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})};rt.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 Mt=h((Us,Tt)=>{var Z=require("constants"),an=process.cwd,je=null,cn=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return je||(je=an.call(process)),je};try{process.cwd()}catch{}typeof process.chdir=="function"&&(it=process.chdir,process.chdir=function(t){je=null,it.call(process,t)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,it));var it;Tt.exports=ln;function ln(t){Z.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,l,p){p&&process.nextTick(p)},t.lchmodSync=function(){}),t.chown&&!t.lchown&&(t.lchown=function(a,l,p,f){f&&process.nextTick(f)},t.lchownSync=function(){}),cn==="win32"&&(t.rename=typeof t.rename!="function"?t.rename:function(a){function l(p,f,d){var S=Date.now(),v=0;a(p,f,function b(A){if(A&&(A.code==="EACCES"||A.code==="EPERM"||A.code==="EBUSY")&&Date.now()-S<6e4){setTimeout(function(){t.stat(f,function(x,$){x&&x.code==="ENOENT"?a(p,f,b):d(A)})},v),v<100&&(v+=10);return}d&&d(A)})}return Object.setPrototypeOf&&Object.setPrototypeOf(l,a),l}(t.rename)),t.read=typeof t.read!="function"?t.read:function(a){function l(p,f,d,S,v,b){var A;if(b&&typeof b=="function"){var x=0;A=function($,X,z){if($&&$.code==="EAGAIN"&&x<10)return x++,a.call(t,p,f,d,S,v,A);b.apply(this,arguments)}}return a.call(t,p,f,d,S,v,A)}return Object.setPrototypeOf&&Object.setPrototypeOf(l,a),l}(t.read),t.readSync=typeof t.readSync!="function"?t.readSync:function(a){return function(l,p,f,d,S){for(var v=0;;)try{return a.call(t,l,p,f,d,S)}catch(b){if(b.code==="EAGAIN"&&v<10){v++;continue}throw b}}}(t.readSync);function e(a){a.lchmod=function(l,p,f){a.open(l,Z.O_WRONLY|Z.O_SYMLINK,p,function(d,S){if(d){f&&f(d);return}a.fchmod(S,p,function(v){a.close(S,function(b){f&&f(v||b)})})})},a.lchmodSync=function(l,p){var f=a.openSync(l,Z.O_WRONLY|Z.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){Z.hasOwnProperty("O_SYMLINK")&&a.futimes?(a.lutimes=function(l,p,f,d){a.open(l,Z.O_SYMLINK,function(S,v){if(S){d&&d(S);return}a.futimes(v,p,f,function(b){a.close(v,function(A){d&&d(b||A)})})})},a.lutimesSync=function(l,p,f){var d=a.openSync(l,Z.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(l,p,f,d){d&&process.nextTick(d)},a.lutimesSync=function(){})}function i(a){return a&&function(l,p,f){return a.call(t,l,p,function(d){m(d)&&(d=null),f&&f.apply(this,arguments)})}}function n(a){return a&&function(l,p){try{return a.call(t,l,p)}catch(f){if(!m(f))throw f}}}function o(a){return a&&function(l,p,f,d){return a.call(t,l,p,f,function(S){m(S)&&(S=null),d&&d.apply(this,arguments)})}}function s(a){return a&&function(l,p,f){try{return a.call(t,l,p,f)}catch(d){if(!m(d))throw d}}}function c(a){return a&&function(l,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,l,p,d):a.call(t,l,d)}}function u(a){return a&&function(l,p){var f=p?a.call(t,l,p):a.call(t,l);return f&&(f.uid<0&&(f.uid+=4294967296),f.gid<0&&(f.gid+=4294967296)),f}}function m(a){if(!a||a.code==="ENOSYS")return!0;var l=!process.getuid||process.getuid()!==0;return!!(l&&(a.code==="EINVAL"||a.code==="EPERM"))}}});var At=h((Gs,It)=>{var Ct=require("stream").Stream;It.exports=un;function un(t){return{ReadStream:e,WriteStream:r};function e(i,n){if(!(this instanceof e))return new e(i,n);Ct.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 m=s[c];this[m]=n[m]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){o._read()});return}t.open(this.path,this.flags,this.mode,function(a,l){if(a){o.emit("error",a),o.readable=!1;return}o.fd=l,o.emit("open",l),o._read()})}function r(i,n){if(!(this instanceof r))return new r(i,n);Ct.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((Js,Rt)=>{"use strict";Rt.exports=mn;var fn=Object.getPrototypeOf||function(t){return t.__proto__};function mn(t){if(t===null||typeof t!="object")return t;if(t instanceof Object)var e={__proto__:fn(t)};else var e=Object.create(null);return Object.getOwnPropertyNames(t).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}});var fe=h((Ws,st)=>{var F=require("fs"),pn=Mt(),dn=At(),yn=Nt(),Te=require("util"),I,Ce;typeof Symbol=="function"&&typeof Symbol.for=="function"?(I=Symbol.for("graceful-fs.queue"),Ce=Symbol.for("graceful-fs.previous")):(I="___graceful-fs.queue",Ce="___graceful-fs.previous");function hn(){}function _t(t,e){Object.defineProperty(t,I,{get:function(){return e}})}var oe=hn;Te.debuglog?oe=Te.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(oe=function(){var t=Te.format.apply(Te,arguments);t="GFS4: "+t.split(/\n/).join(`
|
|
3
|
+
GFS4: `),console.error(t)});F[I]||(qt=global[I]||[],_t(F,qt),F.close=function(t){function e(r,i){return t.call(F,r,function(n){n||Vt(),typeof i=="function"&&i.apply(this,arguments)})}return Object.defineProperty(e,Ce,{value:t}),e}(F.close),F.closeSync=function(t){function e(r){t.apply(F,arguments),Vt()}return Object.defineProperty(e,Ce,{value:t}),e}(F.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){oe(F[I]),require("assert").equal(F[I].length,0)}));var qt;global[I]||_t(global,F[I]);st.exports=nt(yn(F));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!F.__patched&&(st.exports=nt(F),F.__patched=!0);function nt(t){pn(t),t.gracefulify=nt,t.createReadStream=X,t.createWriteStream=z;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(M,E,k,O){return e(M,E,function(L){L&&(L.code==="EMFILE"||L.code==="ENFILE")?ue([T,[M,E,k],L,O||Date.now(),Date.now()]):typeof k=="function"&&k.apply(this,arguments)})}}var i=t.writeFile;t.writeFile=n;function n(y,w,g,T){return typeof g=="function"&&(T=g,g=null),M(y,w,g,T);function M(E,k,O,L,C){return i(E,k,O,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?ue([M,[E,k,O,L],P,C||Date.now(),Date.now()]):typeof L=="function"&&L.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),M(y,w,g,T);function M(E,k,O,L,C){return o(E,k,O,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?ue([M,[E,k,O,L],P,C||Date.now(),Date.now()]):typeof L=="function"&&L.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),M(y,w,g,T);function M(E,k,O,L,C){return c(E,k,O,function(P){P&&(P.code==="EMFILE"||P.code==="ENFILE")?ue([M,[E,k,O,L],P,C||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var m=t.readdir;t.readdir=l;var a=/^v[0-5]\./;function l(y,w,g){typeof w=="function"&&(g=w,w=null);var T=a.test(process.version)?function(k,O,L,C){return m(k,M(k,O,L,C))}:function(k,O,L,C){return m(k,O,M(k,O,L,C))};return T(y,w,g);function M(E,k,O,L){return function(C,P){C&&(C.code==="EMFILE"||C.code==="ENFILE")?ue([T,[E,k,O],C,L||Date.now(),Date.now()]):(P&&P.sort&&P.sort(),typeof O=="function"&&O.call(this,C,P))}}}if(process.version.substr(0,4)==="v0.8"){var p=dn(t);b=p.ReadStream,x=p.WriteStream}var f=t.ReadStream;f&&(b.prototype=Object.create(f.prototype),b.prototype.open=A);var d=t.WriteStream;d&&(x.prototype=Object.create(d.prototype),x.prototype.open=$),Object.defineProperty(t,"ReadStream",{get:function(){return b},set:function(y){b=y},enumerable:!0,configurable:!0}),Object.defineProperty(t,"WriteStream",{get:function(){return x},set:function(y){x=y},enumerable:!0,configurable:!0});var S=b;Object.defineProperty(t,"FileReadStream",{get:function(){return S},set:function(y){S=y},enumerable:!0,configurable:!0});var v=x;Object.defineProperty(t,"FileWriteStream",{get:function(){return v},set:function(y){v=y},enumerable:!0,configurable:!0});function b(y,w){return this instanceof b?(f.apply(this,arguments),this):b.apply(Object.create(b.prototype),arguments)}function A(){var y=this;le(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 x(y,w){return this instanceof x?(d.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function $(){var y=this;le(y.path,y.flags,y.mode,function(w,g){w?(y.destroy(),y.emit("error",w)):(y.fd=g,y.emit("open",g))})}function X(y,w){return new t.ReadStream(y,w)}function z(y,w){return new t.WriteStream(y,w)}var ke=t.open;t.open=le;function le(y,w,g,T){return typeof g=="function"&&(T=g,g=null),M(y,w,g,T);function M(E,k,O,L,C){return ke(E,k,O,function(P,Es){P&&(P.code==="EMFILE"||P.code==="ENFILE")?ue([M,[E,k,O,L],P,C||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}return t}function ue(t){oe("ENQUEUE",t[0].name,t[1]),F[I].push(t),ot()}var Me;function Vt(){for(var t=Date.now(),e=0;e<F[I].length;++e)F[I][e].length>2&&(F[I][e][3]=t,F[I][e][4]=t);ot()}function ot(){if(clearTimeout(Me),Me=void 0,F[I].length!==0){var t=F[I].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),m=Math.min(u*1.2,100);c>=m?(oe("RETRY",e.name,r),e.apply(null,r.concat([n]))):F[I].push(t)}Me===void 0&&(Me=setTimeout(ot,0))}}});var q=h(Q=>{"use strict";var Xt=D().fromCallback,N=fe(),Sn=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter(t=>typeof N[t]=="function");Object.assign(Q,N);Sn.forEach(t=>{Q[t]=Xt(N[t])});Q.exists=function(t,e){return typeof e=="function"?N.exists(t,e):new Promise(r=>N.exists(t,r))};Q.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,m,a)=>{if(u)return c(u);s({bytesRead:m,buffer:a})})})};Q.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})})})};Q.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})})})};Q.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"?Q.realpath.native=Xt(N.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var Bt=h((Qs,$t)=>{"use strict";var gn=require("path");$t.exports.checkPath=function(e){if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(gn.parse(e).root,""))){let i=new Error(`Path contains invalid characters: ${e}`);throw i.code="EINVAL",i}}});var Wt=h((Ks,at)=>{"use strict";var Ut=q(),{checkPath:Gt}=Bt(),Jt=t=>{let e={mode:511};return typeof t=="number"?t:{...e,...t}.mode};at.exports.makeDir=async(t,e)=>(Gt(t),Ut.mkdir(t,{mode:Jt(e),recursive:!0}));at.exports.makeDirSync=(t,e)=>(Gt(t),Ut.mkdirSync(t,{mode:Jt(e),recursive:!0}))});var U=h((zs,Ht)=>{"use strict";var vn=D().fromPromise,{makeDir:wn,makeDirSync:ct}=Wt(),lt=vn(wn);Ht.exports={mkdirs:lt,mkdirsSync:ct,mkdirp:lt,mkdirpSync:ct,ensureDir:lt,ensureDirSync:ct}});var ee=h((Ys,Kt)=>{"use strict";var bn=D().fromPromise,Qt=q();function xn(t){return Qt.access(t).then(()=>!0).catch(()=>!1)}Kt.exports={pathExists:bn(xn),pathExistsSync:Qt.existsSync}});var ut=h((Zs,zt)=>{"use strict";var me=q(),Ln=D().fromPromise;async function Pn(t,e,r){let i=await me.open(t,"r+"),n=null;try{await me.futimes(i,e,r)}finally{try{await me.close(i)}catch(o){n=o}}if(n)throw n}function kn(t,e,r){let i=me.openSync(t,"r+");return me.futimesSync(i,e,r),me.closeSync(i)}zt.exports={utimesMillis:Ln(Pn),utimesMillisSync:kn}});var se=h((ea,tr)=>{"use strict";var pe=q(),j=require("path"),Yt=D().fromPromise;function Fn(t,e,r){let i=r.dereference?n=>pe.stat(n,{bigint:!0}):n=>pe.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 On(t,e,r){let i,n=r.dereference?s=>pe.statSync(s,{bigint:!0}):s=>pe.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 En(t,e,r,i){let{srcStat:n,destStat:o}=await Fn(t,e,i);if(o){if(Se(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()&&ft(t,e))throw new Error(Ie(t,e,r));return{srcStat:n,destStat:o}}function Dn(t,e,r,i){let{srcStat:n,destStat:o}=On(t,e,i);if(o){if(Se(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()&&ft(t,e))throw new Error(Ie(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 pe.stat(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(Se(e,s))throw new Error(Ie(t,r,i));return Zt(t,e,o,i)}function er(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=pe.statSync(o,{bigint:!0})}catch(c){if(c.code==="ENOENT")return;throw c}if(Se(e,s))throw new Error(Ie(t,r,i));return er(t,e,o,i)}function Se(t,e){return e.ino&&e.dev&&e.ino===t.ino&&e.dev===t.dev}function ft(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 Ie(t,e,r){return`Cannot ${r} '${t}' to a subdirectory of itself, '${e}'.`}tr.exports={checkPaths:Yt(En),checkPathsSync:Dn,checkParentPaths:Yt(Zt),checkParentPathsSync:er,isSrcSubdir:ft,areIdentical:Se}});var sr=h((ta,or)=>{"use strict";var R=q(),ge=require("path"),{mkdirs:jn}=U(),{pathExists:Tn}=ee(),{utimesMillis:Mn}=ut(),ve=se();async function Cn(t,e,r={}){typeof r=="function"&&(r={filter:r}),r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
|
|
4
4
|
|
|
5
|
-
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat:i,destStat:n}=await
|
|
5
|
+
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat:i,destStat:n}=await ve.checkPaths(t,e,"copy",r);if(await ve.checkParentPaths(t,i,e,"copy"),!await ir(t,e,r))return;let s=ge.dirname(e);await Tn(s)||await jn(s),await nr(n,t,e,r)}async function ir(t,e,r){return r.filter?r.filter(t,e):!0}async function nr(t,e,r,i){let o=await(i.dereference?R.stat:R.lstat)(e);if(o.isDirectory())return Nn(o,t,e,r,i);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return In(o,t,e,r,i);if(o.isSymbolicLink())return qn(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 In(t,e,r,i,n){if(!e)return rr(t,r,i,n);if(n.overwrite)return await R.unlink(i),rr(t,r,i,n);if(n.errorOnExist)throw new Error(`'${i}' already exists`)}async function rr(t,e,r,i){if(await R.copyFile(e,r),i.preserveTimestamps){An(t.mode)&&await Rn(r,t.mode);let n=await R.stat(e);await Mn(r,n.atime,n.mtime)}return R.chmod(r,t.mode)}function An(t){return(t&128)===0}function Rn(t,e){return R.chmod(t,e|128)}async function Nn(t,e,r,i,n){e||await R.mkdir(i);let o=await R.readdir(r);await Promise.all(o.map(async s=>{let c=ge.join(r,s),u=ge.join(i,s);if(!await ir(c,u,n))return;let{destStat:a}=await ve.checkPaths(c,u,"copy",n);return nr(a,c,u,n)})),e||await R.chmod(i,t.mode)}async function qn(t,e,r,i){let n=await R.readlink(e);if(i.dereference&&(n=ge.resolve(process.cwd(),n)),!t)return R.symlink(n,r);let o=null;try{o=await R.readlink(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return R.symlink(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 await R.unlink(r),R.symlink(n,r)}or.exports=Cn});var fr=h((ra,ur)=>{"use strict";var V=fe(),we=require("path"),Vn=U().mkdirsSync,_n=ut().utimesMillisSync,be=se();function Xn(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}=
|
|
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 Eo(t){return Buffer.isBuffer(t)&&(t=t.toString("utf8")),t.replace(/^\uFEFF/,"")}Hr.exports={stringify:Do,stripBom:Eo}});var Yr=h((fa,zr)=>{var ue;try{ue=ae()}catch{ue=require("fs")}var Ie=j(),{stringify:Qr,stripBom:Kr}=Ce();async function jo(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||ue,i="throws"in e?e.throws:!0,n=await Ie.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 Mo=Ie.fromPromise(jo);function To(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||ue,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 Co(t,e,r={}){let i=r.fs||ue,n=Qr(e,r);await Ie.fromCallback(i.writeFile)(t,n,r)}var Io=Ie.fromPromise(Co);function Ao(t,e,r={}){let i=r.fs||ue,n=Qr(e,r);return i.writeFileSync(t,n,r)}var No={readFile:Mo,readFileSync:To,writeFile:Io,writeFileSync:Ao};zr.exports=No});var ei=h((ma,Zr)=>{"use strict";var Ae=Yr();Zr.exports={readJson:Ae.readFile,readJsonSync:Ae.readFileSync,writeJson:Ae.writeFile,writeJsonSync:Ae.writeFileSync}});var Ne=h((pa,ii)=>{"use strict";var Ro=j().fromPromise,mt=q(),ti=require("path"),ri=B(),qo=Y().pathExists;async function _o(t,e,r="utf-8"){let i=ti.dirname(t);return await qo(i)||await ri.mkdirs(i),mt.writeFile(t,e,r)}function Vo(t,...e){let r=ti.dirname(t);mt.existsSync(r)||ri.mkdirsSync(r),mt.writeFileSync(t,...e)}ii.exports={outputFile:Ro(_o),outputFileSync:Vo}});var oi=h((da,ni)=>{"use strict";var{stringify:$o}=Ce(),{outputFile:Xo}=Ne();async function Bo(t,e,r={}){let i=$o(e,r);await Xo(t,i,r)}ni.exports=Bo});var ai=h((ya,si)=>{"use strict";var{stringify:Go}=Ce(),{outputFileSync:Jo}=Ne();function Uo(t,e,r){let i=Go(e,r);Jo(t,i,r)}si.exports=Uo});var li=h((ha,ci)=>{"use strict";var Wo=j().fromPromise,V=ei();V.outputJson=Wo(oi());V.outputJsonSync=ai();V.outputJSON=V.outputJson;V.outputJSONSync=V.outputJsonSync;V.writeJSON=V.writeJson;V.writeJSONSync=V.writeJsonSync;V.readJSON=V.readJson;V.readJSONSync=V.readJsonSync;ci.exports=V});var di=h((Sa,pi)=>{"use strict";var Ho=q(),ui=require("path"),{copy:Qo}=Te(),{remove:mi}=ge(),{mkdirp:Ko}=B(),{pathExists:zo}=Y(),fi=ne();async function Yo(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 Ko(s),Zo(t,e,i,o)}async function Zo(t,e,r,i){if(!i){if(r)await mi(e);else if(await zo(e))throw new Error("dest already exists.")}try{await Ho.rename(t,e)}catch(n){if(n.code!=="EXDEV")throw n;await es(t,e,r)}}async function es(t,e,r){return await Qo(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),mi(t)}pi.exports=Yo});var vi=h((ga,gi)=>{"use strict";var hi=ae(),dt=require("path"),ts=Te().copySync,Si=ge().removeSync,rs=B().mkdirpSync,yi=ne();function is(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"),ns(e)||rs(dt.dirname(e)),os(t,e,i,o)}function ns(t){let e=dt.dirname(t);return dt.parse(e).root===e}function os(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 ss(t,e,r)}}function ss(t,e,r){return ts(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),Si(t)}gi.exports=is});var bi=h((va,wi)=>{"use strict";var as=j().fromPromise;wi.exports={move:as(di()),moveSync:vi()}});var Li=h((wa,xi)=>{"use strict";xi.exports={...q(),...Te(),...br(),...Wr(),...li(),...B(),...bi(),...Ne(),...Y(),...ge()}});var Pi=h(Re=>{"use strict";Object.defineProperty(Re,"__esModule",{value:!0});Re.EXTENSIONS_LANGUAGES=void 0;Re.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 we=h(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});yt.setOptionValues=cs;function cs(t,e){for(let r of Object.keys(e))t[r]!==void 0&&(e[r]=t[r]);return e}});var Fi=h(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.SarifBuilder=void 0;var ls=require("path"),ki=Li(),us=Pi(),fs=we(),ht=class{constructor(e={}){this.log={$schema:"http://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[]},(0,fs.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 l of e.results)for(let f of l.locations||[])if(!((i=(r=f?.physicalLocation)===null||r===void 0?void 0:r.artifactLocation)===null||i===void 0)&&i.uri&&e.artifacts.filter(a=>{var u;return((u=a?.location)===null||u===void 0?void 0:u.uri)===f.physicalLocation.artifactLocation.uri}).length===0){let a=ls.extname(f.physicalLocation.artifactLocation.uri).replace(".",""),u=us.EXTENSIONS_LANGUAGES[a]||"unknown";e.artifacts.push({sourceLanguage:u,location:{uri:f.physicalLocation.artifactLocation.uri}})}let s=e.artifacts.map(l=>{var f;return(f=l?.location)===null||f===void 0?void 0:f.uri}),c=(((o=(n=e?.tool)===null||n===void 0?void 0:n.driver)===null||o===void 0?void 0:o.rules)||[]).map(l=>l.id);return e.results=e.results.map(l=>(c.indexOf(l.ruleId)>-1&&(l.ruleIndex=c.indexOf(l.ruleId)),l.locations&&(l.locations=l.locations.map(f=>{var a,u;let p=(u=(a=f?.physicalLocation)===null||a===void 0?void 0:a.artifactLocation)===null||u===void 0?void 0:u.uri;return p&&s.indexOf(p)>-1&&(f.physicalLocation.artifactLocation.index=s.indexOf(p)),f})),l)),e}};qe.SarifBuilder=ht});var Oi=h(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.SarifResultBuilder=void 0;var ms=we(),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,ms.setOptionValues)(e,this.result)}initSimple(e){if(this.setLevel(e.level),this.setMessageText(e.messageText),this.setRuleId(e.ruleId),e.fileUri&&this.setLocationArtifactUri({uri:e.fileUri}),e.startLine!==null&&e.startLine!==void 0){let r={startLine:e.startLine,startColumn:e.startColumn||1,endLine:e.endLine||e.startLine,endColumn:e.endColumn||1};if(e.startLine===0||e.startColumn===0||e.endLine===0||e.endColumn===0)throw new Error("Region limit can not be 0 (minimum line 1 or column 1) in "+JSON.stringify(e));this.setLocationRegion(r)}return this}setLevel(e){this.result.level=e}setMessageText(e){this.result.message.text=e}setRuleId(e){this.result.ruleId=e}setLocationRegion(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.region=e}setLocationArtifactUri(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.artifactLocation=e}manageInitLocation(){var e,r;!((r=(e=this.result)===null||e===void 0?void 0:e.locations)===null||r===void 0)&&r.length||(this.result.locations=[{}])}manageInitPhysicalLocation(){var e;this.manageInitLocation(),!(!((e=this.result)===null||e===void 0)&&e.locations[0].physicalLocation)&&(this.result.locations[0].physicalLocation={})}};_e.SarifResultBuilder=St});var Di=h(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.SarifRuleBuilder=void 0;var ps=we(),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,ps.setOptionValues)(e,this.rule)}initSimple(e){return this.setRuleId(e.ruleId),e.shortDescriptionText&&this.setShortDescriptionText(e.shortDescriptionText),e.fullDescriptionText&&this.setFullDescriptionText(e.fullDescriptionText),e.helpUri&&this.setHelpUri(e.helpUri),this}setRuleId(e){this.rule.id=e}setShortDescriptionText(e){this.rule.shortDescription.text=e}setFullDescriptionText(e){this.rule.fullDescription=this.rule.fullDescription||{text:""},this.rule.fullDescription.text=e}setHelpUri(e){this.rule.helpUri=e}};Ve.SarifRuleBuilder=gt});var Ei=h($e=>{"use strict";Object.defineProperty($e,"__esModule",{value:!0});$e.SarifRunBuilder=void 0;var ds=we(),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,ds.setOptionValues)(e,this.run)}initSimple(e){return this.setToolDriverName(e.toolDriverName),this.setToolDriverVersion(e.toolDriverVersion),e.url&&this.setToolDriverUri(e.url),this}addRule(e){this.run.tool.driver.rules.push(e.rule)}addResult(e){this.run.results.push(e.result)}setToolDriverName(e){this.run.tool.driver.name=e}setToolDriverVersion(e){this.run.tool.driver.version=e}setToolDriverUri(e){this.run.tool.driver.informationUri=e}};$e.SarifRunBuilder=vt});var ji=h(U=>{"use strict";Object.defineProperty(U,"__esModule",{value:!0});U.SarifResultBuilder=U.SarifRuleBuilder=U.SarifRunBuilder=U.SarifBuilder=void 0;var ys=Fi();Object.defineProperty(U,"SarifBuilder",{enumerable:!0,get:function(){return ys.SarifBuilder}});var hs=Oi();Object.defineProperty(U,"SarifResultBuilder",{enumerable:!0,get:function(){return hs.SarifResultBuilder}});var Ss=Di();Object.defineProperty(U,"SarifRuleBuilder",{enumerable:!0,get:function(){return Ss.SarifRuleBuilder}});var gs=Ei();Object.defineProperty(U,"SarifRunBuilder",{enumerable:!0,get:function(){return gs.SarifRunBuilder}})});var Ti=h((Da,Mi)=>{"use strict";var vs=/["'&<>]/;Mi.exports=ws;function ws(t){var e=""+t,r=vs.exec(e);if(!r)return e;var i,n="",o=0,s=0;for(o=r.index;o<e.length;o++){switch(e.charCodeAt(o)){case 34:i=""";break;case 38:i="&";break;case 39:i="'";break;case 60:i="<";break;case 62:i=">";break;default:continue}s!==o&&(n+=e.substring(s,o)),s=o+1,n+=i}return s!==o?n+e.substring(s,o):n}});var We=require("zx"),oe=require("fs/promises");var ze={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=xt(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=Ji(o.severity,e.severity),o.scannerSeverity[r]=e.severity,o.detectedBy=Ye(o.detectedBy,r),o.components=Ye(o.components,e.components[0]),o.refs=Ye(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(i.id);continue}i.vexStatement=n}return{unmatchedVulnerabilities:r}}};function Ji(t,e){return xt(t,e)>0?t:e}function xt(t,e){return ze[t]-ze[e]}function Ye(t,e){return e?Array.from(new Set([...t,e]).values()):t}var Pe=Ke(require("path"));var $=require("fs/promises"),Ze=require("path");async function G(t){if(await re(t))return JSON.parse(await(0,$.readFile)(t,{encoding:"utf-8"}))}function W(t){return t&&t.replace(/\?.*$/,"")}async function re(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 Lt(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 G(s);if(!c)throw new Error(`Missing project configuration file '${s}'`);return{failOnNewVulnerabilities:!1,createSubDirsForProject:c.createSubDirsForProject??!0,mavenRepo:c.mavenRepo??e,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(l=>{let f=l;return f.sbomFile?{...f,sbomFile:K(t.workingDir,f.sbomFile)}:l})}}function K(t,e){if(e)return Pe.default.isAbsolute(e)?e:(0,Pe.resolve)(t,e)}var Pt=require("zx");var ke=require("path");async function kt(t,e,r,i){console.log(" with Grype ...");let n=(0,ke.dirname)(e),o=(0,ke.basename)(e),s=await Pt.$`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 G(e);Ui(i,c)}function Ui(t,e){if(e)for(let r of e.matches){let i=Wi(r);t.addVulnerability(i,"grype")}}function Wi(t){let e=t.vulnerability,r=e.id,i=W(t.artifact.purl),n=W(e.dataSource),o=Hi(e.severity);return{id:r,severity:o,scannerSeverity:{grype:o},title:"",description:e.description,components:[i],detectedBy:["grype"],refs:[n]}}function Hi(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 Ft=require("zx");var Fe=require("path");async function Ot(t,e,r,i,n){let o=(0,Fe.dirname)(e),s=(0,Fe.basename)(e),c=[];i&&(c.push("-e"),c.push(`GITHUB_TOKEN=${i}`));let l=[];l.push("--db-repository"),l.push("public.ecr.aws/aquasecurity/trivy-db,aquasec/trivy-db,ghcr.io/aquasecurity/trivy-db"),console.log(` with Trivy...${i?" (with GitHub token)":""}`);let f=await Ft.$`docker run --rm -v '${t}:/.cache' -v '${o}:/tmp/output' -v '${r.sbomFile}:/tmp/input.json' ${c} aquasec/trivy:latest sbom ${l} --cache-dir '/.cache' --format json --output '/tmp/output/${s}' --quiet /tmp/input.json`;f.stdout&&console.log(` Scan log: ${f.stdout}`),f.stderr&&console.log(` Scan error: ${f.stderr}`),console.log(` Trivy output file: ${e}`);let a=await G(e);Qi(n,a)}function Qi(t,e){if(e){for(let r of e.Results)if(r.Vulnerabilities)for(let i of r.Vulnerabilities){let n=Ki(i);t.addVulnerability(n,"trivy")}}}function Ki(t){let e=t.VulnerabilityID,r=W(t.PkgIdentifier.PURL),i=W(t.PrimaryURL),n=zi(t.Severity);return{id:e,severity:n,scannerSeverity:{trivy:n},title:t.Title,description:t.Description,components:[r],detectedBy:["trivy"],refs:[i]}}function zi(t){switch(t){case"UNKNOWN":case"LOW":case"MEDIUM":case"HIGH":case"CRITICAL":return t;default:return"UNKNOWN"}}var Dt=require("fs/promises");async function Et(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 Yi(e.sbomFile),l=new Set(c.map(u=>u.purl.replace(/\?.*$/,"")));on(l);let f=Array.from(l),a=[];for(let u=0;u<f.length;u+=128){let p=JSON.stringify({coordinates:f.slice(u,u+128)}),d=await(await fetch(s,{method:"POST",headers:{...n,"Content-Type":"application/vnd.ossindex.component-report-request.v1+json"},body:p})).json();Array.isArray(d)?a.push(...d.filter(S=>S.vulnerabilities.length>0)):console.log(` Sonatype OssIndex Error: ${d.code} - ${d.message}`)}await(0,Dt.writeFile)(t,JSON.stringify(a,null,2)),console.log(` Sonatype OssIndex output file: ${t}`),tn(i,a)}async function Yi(t){return(await G(t)).components.filter(r=>Zi(r)&&!en(r))}function Zi(t){return!!t.purl}function en(t){return t.group?t.group.startsWith("de.conterra")||t.group.startsWith("org.n52.security"):!1}function tn(t,e){if(e)for(let r of e)for(let i of r.vulnerabilities){let n=rn(i,r.coordinates);t.addVulnerability(n,"ossindex")}}function rn(t,e){let r=t.cve||t.id,i=W(e),n=W(t.reference),o=nn(t.cvssScore);return{id:r,severity:o,scannerSeverity:{ossindex:o},title:t.title,description:t.description,components:[i],detectedBy:["ossindex"],refs:n?[n]:[]}}function nn(t){return t===0?"UNKNOWN":t<4?"LOW":t<7?"MEDIUM":t<9?"HIGH":"CRITICAL"}function on(t){let e=Array.from(t);for(let r of e){let i=r.replace(/(@[^-]+)-.*$/g,"$1");t.add(i)}}var te=Ke(ji()),Ci=Ke(Ti());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=xs(o.severity),c=o.id,l=bs(o.refs),f=new te.SarifRuleBuilder().initSimple({ruleId:c,shortDescriptionText:o.title,fullDescriptionText:o.description,helpUri:l}),a=o.vexStatement,u,p="new",m="";a&&(s="none",p="updated",m=`--- INVESTIGATED (${a.status}) --- `,a.status==="under_investigation"&&(m="--- UNDER INVESTIGATION --- ")),Object.assign(f.rule,{name:`${m}[${o.severity}] - ${o.title.replace(`[${c}]`,"")}`,messageStrings:{default:{text:o.description,markdown:Ls(o,l,m)}},properties:{severity:o.severity,scanners:o.scannerSeverity,links:o.refs,tags:["cve","vulnerability","security",`severity_${o.severity.toLowerCase()}`]}}),r.addRule(f);for(let d of o.components){let 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=u,r.addResult(S)}}let n=new te.SarifBuilder;return n.addRun(r),n.buildSarifOutput()}function bs(t){for(let e of t)if(e.startsWith("https://nvd.nist.gov"))return e;return t[0]}function xs(t){switch(t){case"CRITICAL":return"error";case"HIGH":return"error";case"MEDIUM":return"warning";case"LOW":return"note";default:return"note"}}function Ls(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}=be.checkPathsSync(t,e,"copy",r);if(be.checkParentPathsSync(t,i,e,"copy"),r.filter&&!r.filter(t,e))return;let o=we.dirname(e);return V.existsSync(o)||Vn(o),ar(n,t,e,r)}function ar(t,e,r,i){let o=(i.dereference?V.statSync:V.lstatSync)(e);if(o.isDirectory())return Hn(o,t,e,r,i);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return $n(o,t,e,r,i);if(o.isSymbolicLink())return zn(t,e,r,i);throw o.isSocket()?new Error(`Cannot copy a socket file: ${e}`):o.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${e}`):new Error(`Unknown file: ${e}`)}function $n(t,e,r,i,n){return e?Bn(t,r,i,n):cr(t,r,i,n)}function Bn(t,e,r,i){if(i.overwrite)return V.unlinkSync(r),cr(t,e,r,i);if(i.errorOnExist)throw new Error(`'${r}' already exists`)}function cr(t,e,r,i){return V.copyFileSync(e,r),i.preserveTimestamps&&Un(t.mode,e,r),mt(r,t.mode)}function Un(t,e,r){return Gn(t)&&Jn(r,t),Wn(e,r)}function Gn(t){return(t&128)===0}function Jn(t,e){return mt(t,e|128)}function mt(t,e){return V.chmodSync(t,e)}function Wn(t,e){let r=V.statSync(t);return _n(e,r.atime,r.mtime)}function Hn(t,e,r,i,n){return e?lr(r,i,n):Qn(t.mode,r,i,n)}function Qn(t,e,r,i){return V.mkdirSync(r),lr(e,r,i),mt(r,t)}function lr(t,e,r){V.readdirSync(t).forEach(i=>Kn(i,t,e,r))}function Kn(t,e,r,i){let n=we.join(e,t),o=we.join(r,t);if(i.filter&&!i.filter(n,o))return;let{destStat:s}=be.checkPathsSync(n,o,"copy",i);return ar(s,n,o,i)}function zn(t,e,r,i){let n=V.readlinkSync(e);if(i.dereference&&(n=we.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=we.resolve(process.cwd(),o)),be.isSrcSubdir(n,o))throw new Error(`Cannot copy '${n}' to a subdirectory of itself, '${o}'.`);if(be.isSrcSubdir(o,n))throw new Error(`Cannot overwrite '${o}' with '${n}'.`);return Yn(n,r)}else return V.symlinkSync(n,r)}function Yn(t,e){return V.unlinkSync(e),V.symlinkSync(t,e)}ur.exports=Xn});var Ae=h((ia,mr)=>{"use strict";var Zn=D().fromPromise;mr.exports={copy:Zn(sr()),copySync:fr()}});var xe=h((na,dr)=>{"use strict";var pr=fe(),eo=D().fromCallback;function to(t,e){pr.rm(t,{recursive:!0,force:!0},e)}function ro(t){pr.rmSync(t,{recursive:!0,force:!0})}dr.exports={remove:eo(to),removeSync:ro}});var xr=h((oa,br)=>{"use strict";var io=D().fromPromise,Sr=q(),gr=require("path"),vr=U(),wr=xe(),yr=io(async function(e){let r;try{r=await Sr.readdir(e)}catch{return vr.mkdirs(e)}return Promise.all(r.map(i=>wr.remove(gr.join(e,i))))});function hr(t){let e;try{e=Sr.readdirSync(t)}catch{return vr.mkdirsSync(t)}e.forEach(r=>{r=gr.join(t,r),wr.removeSync(r)})}br.exports={emptyDirSync:hr,emptydirSync:hr,emptyDir:yr,emptydir:yr}});var Fr=h((sa,kr)=>{"use strict";var no=D().fromPromise,Lr=require("path"),K=q(),Pr=U();async function oo(t){let e;try{e=await K.stat(t)}catch{}if(e&&e.isFile())return;let r=Lr.dirname(t),i=null;try{i=await K.stat(r)}catch(n){if(n.code==="ENOENT"){await Pr.mkdirs(r),await K.writeFile(t,"");return}else throw n}i.isDirectory()?await K.writeFile(t,""):await K.readdir(r)}function so(t){let e;try{e=K.statSync(t)}catch{}if(e&&e.isFile())return;let r=Lr.dirname(t);try{K.statSync(r).isDirectory()||K.readdirSync(r)}catch(i){if(i&&i.code==="ENOENT")Pr.mkdirsSync(r);else throw i}K.writeFileSync(t,"")}kr.exports={createFile:no(oo),createFileSync:so}});var Tr=h((aa,jr)=>{"use strict";var ao=D().fromPromise,Or=require("path"),te=q(),Er=U(),{pathExists:co}=ee(),{areIdentical:Dr}=se();async function lo(t,e){let r;try{r=await te.lstat(e)}catch{}let i;try{i=await te.lstat(t)}catch(s){throw s.message=s.message.replace("lstat","ensureLink"),s}if(r&&Dr(i,r))return;let n=Or.dirname(e);await co(n)||await Er.mkdirs(n),await te.link(t,e)}function uo(t,e){let r;try{r=te.lstatSync(e)}catch{}try{let o=te.lstatSync(t);if(r&&Dr(o,r))return}catch(o){throw o.message=o.message.replace("lstat","ensureLink"),o}let i=Or.dirname(e);return te.existsSync(i)||Er.mkdirsSync(i),te.linkSync(t,e)}jr.exports={createLink:ao(lo),createLinkSync:uo}});var Cr=h((ca,Mr)=>{"use strict";var re=require("path"),Le=q(),{pathExists:fo}=ee(),mo=D().fromPromise;async function po(t,e){if(re.isAbsolute(t)){try{await Le.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:t}}let r=re.dirname(e),i=re.join(r,t);if(await fo(i))return{toCwd:i,toDst:t};try{await Le.lstat(t)}catch(o){throw o.message=o.message.replace("lstat","ensureSymlink"),o}return{toCwd:t,toDst:re.relative(r,t)}}function yo(t,e){if(re.isAbsolute(t)){if(!Le.existsSync(t))throw new Error("absolute srcpath does not exist");return{toCwd:t,toDst:t}}let r=re.dirname(e),i=re.join(r,t);if(Le.existsSync(i))return{toCwd:i,toDst:t};if(!Le.existsSync(t))throw new Error("relative srcpath does not exist");return{toCwd:t,toDst:re.relative(r,t)}}Mr.exports={symlinkPaths:mo(po),symlinkPathsSync:yo}});var Rr=h((la,Ar)=>{"use strict";var Ir=q(),ho=D().fromPromise;async function So(t,e){if(e)return e;let r;try{r=await Ir.lstat(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}function go(t,e){if(e)return e;let r;try{r=Ir.lstatSync(t)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}Ar.exports={symlinkType:ho(So),symlinkTypeSync:go}});var _r=h((ua,Vr)=>{"use strict";var vo=D().fromPromise,Nr=require("path"),J=q(),{mkdirs:wo,mkdirsSync:bo}=U(),{symlinkPaths:xo,symlinkPathsSync:Lo}=Cr(),{symlinkType:Po,symlinkTypeSync:ko}=Rr(),{pathExists:Fo}=ee(),{areIdentical:qr}=se();async function Oo(t,e,r){let i;try{i=await J.lstat(e)}catch{}if(i&&i.isSymbolicLink()){let[c,u]=await Promise.all([J.stat(t),J.stat(e)]);if(qr(c,u))return}let n=await xo(t,e);t=n.toDst;let o=await Po(n.toCwd,r),s=Nr.dirname(e);return await Fo(s)||await wo(s),J.symlink(t,e,o)}function Eo(t,e,r){let i;try{i=J.lstatSync(e)}catch{}if(i&&i.isSymbolicLink()){let c=J.statSync(t),u=J.statSync(e);if(qr(c,u))return}let n=Lo(t,e);t=n.toDst,r=ko(n.toCwd,r);let o=Nr.dirname(e);return J.existsSync(o)||bo(o),J.symlinkSync(t,e,r)}Vr.exports={createSymlink:vo(Oo),createSymlinkSync:Eo}});var Hr=h((fa,Wr)=>{"use strict";var{createFile:Xr,createFileSync:$r}=Fr(),{createLink:Br,createLinkSync:Ur}=Tr(),{createSymlink:Gr,createSymlinkSync:Jr}=_r();Wr.exports={createFile:Xr,createFileSync:$r,ensureFile:Xr,ensureFileSync:$r,createLink:Br,createLinkSync:Ur,ensureLink:Br,ensureLinkSync:Ur,createSymlink:Gr,createSymlinkSync:Jr,ensureSymlink:Gr,ensureSymlinkSync:Jr}});var Re=h((ma,Qr)=>{function Do(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 jo(t){return Buffer.isBuffer(t)&&(t=t.toString("utf8")),t.replace(/^\uFEFF/,"")}Qr.exports={stringify:Do,stripBom:jo}});var Zr=h((pa,Yr)=>{var de;try{de=fe()}catch{de=require("fs")}var Ne=D(),{stringify:Kr,stripBom:zr}=Re();async function To(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||de,i="throws"in e?e.throws:!0,n=await Ne.fromCallback(r.readFile)(t,e);n=zr(n);let o;try{o=JSON.parse(n,e?e.reviver:null)}catch(s){if(i)throw s.message=`${t}: ${s.message}`,s;return null}return o}var Mo=Ne.fromPromise(To);function Co(t,e={}){typeof e=="string"&&(e={encoding:e});let r=e.fs||de,i="throws"in e?e.throws:!0;try{let n=r.readFileSync(t,e);return n=zr(n),JSON.parse(n,e.reviver)}catch(n){if(i)throw n.message=`${t}: ${n.message}`,n;return null}}async function Io(t,e,r={}){let i=r.fs||de,n=Kr(e,r);await Ne.fromCallback(i.writeFile)(t,n,r)}var Ao=Ne.fromPromise(Io);function Ro(t,e,r={}){let i=r.fs||de,n=Kr(e,r);return i.writeFileSync(t,n,r)}var No={readFile:Mo,readFileSync:Co,writeFile:Ao,writeFileSync:Ro};Yr.exports=No});var ti=h((da,ei)=>{"use strict";var qe=Zr();ei.exports={readJson:qe.readFile,readJsonSync:qe.readFileSync,writeJson:qe.writeFile,writeJsonSync:qe.writeFileSync}});var Ve=h((ya,ni)=>{"use strict";var qo=D().fromPromise,pt=q(),ri=require("path"),ii=U(),Vo=ee().pathExists;async function _o(t,e,r="utf-8"){let i=ri.dirname(t);return await Vo(i)||await ii.mkdirs(i),pt.writeFile(t,e,r)}function Xo(t,...e){let r=ri.dirname(t);pt.existsSync(r)||ii.mkdirsSync(r),pt.writeFileSync(t,...e)}ni.exports={outputFile:qo(_o),outputFileSync:Xo}});var si=h((ha,oi)=>{"use strict";var{stringify:$o}=Re(),{outputFile:Bo}=Ve();async function Uo(t,e,r={}){let i=$o(e,r);await Bo(t,i,r)}oi.exports=Uo});var ci=h((Sa,ai)=>{"use strict";var{stringify:Go}=Re(),{outputFileSync:Jo}=Ve();function Wo(t,e,r){let i=Go(e,r);Jo(t,i,r)}ai.exports=Wo});var ui=h((ga,li)=>{"use strict";var Ho=D().fromPromise,_=ti();_.outputJson=Ho(si());_.outputJsonSync=ci();_.outputJSON=_.outputJson;_.outputJSONSync=_.outputJsonSync;_.writeJSON=_.writeJson;_.writeJSONSync=_.writeJsonSync;_.readJSON=_.readJson;_.readJSONSync=_.readJsonSync;li.exports=_});var yi=h((va,di)=>{"use strict";var Qo=q(),fi=require("path"),{copy:Ko}=Ae(),{remove:pi}=xe(),{mkdirp:zo}=U(),{pathExists:Yo}=ee(),mi=se();async function Zo(t,e,r={}){let i=r.overwrite||r.clobber||!1,{srcStat:n,isChangingCase:o=!1}=await mi.checkPaths(t,e,"move",r);await mi.checkParentPaths(t,n,e,"move");let s=fi.dirname(e);return fi.parse(s).root!==s&&await zo(s),es(t,e,i,o)}async function es(t,e,r,i){if(!i){if(r)await pi(e);else if(await Yo(e))throw new Error("dest already exists.")}try{await Qo.rename(t,e)}catch(n){if(n.code!=="EXDEV")throw n;await ts(t,e,r)}}async function ts(t,e,r){return await Ko(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),pi(t)}di.exports=Zo});var wi=h((wa,vi)=>{"use strict";var Si=fe(),yt=require("path"),rs=Ae().copySync,gi=xe().removeSync,is=U().mkdirpSync,hi=se();function ns(t,e,r){r=r||{};let i=r.overwrite||r.clobber||!1,{srcStat:n,isChangingCase:o=!1}=hi.checkPathsSync(t,e,"move",r);return hi.checkParentPathsSync(t,n,e,"move"),os(e)||is(yt.dirname(e)),ss(t,e,i,o)}function os(t){let e=yt.dirname(t);return yt.parse(e).root===e}function ss(t,e,r,i){if(i)return dt(t,e,r);if(r)return gi(e),dt(t,e,r);if(Si.existsSync(e))throw new Error("dest already exists.");return dt(t,e,r)}function dt(t,e,r){try{Si.renameSync(t,e)}catch(i){if(i.code!=="EXDEV")throw i;return as(t,e,r)}}function as(t,e,r){return rs(t,e,{overwrite:r,errorOnExist:!0,preserveTimestamps:!0}),gi(t)}vi.exports=ns});var xi=h((ba,bi)=>{"use strict";var cs=D().fromPromise;bi.exports={move:cs(yi()),moveSync:wi()}});var Pi=h((xa,Li)=>{"use strict";Li.exports={...q(),...Ae(),...xr(),...Hr(),...ui(),...U(),...xi(),...Ve(),...ee(),...xe()}});var ki=h(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.EXTENSIONS_LANGUAGES=void 0;_e.EXTENSIONS_LANGUAGES={1:"Groff",2:"Groff",3:"Groff",4:"Groff",5:"Groff",6:"Groff",7:"Groff",8:"Groff",9:"Groff",abap:"ABAP",asc:"Public Key",ash:"AGS Script",ampl:"AMPL",mod:"XML",g4:"ANTLR",apib:"API Blueprint",apl:"APL",dyalog:"APL",asp:"ASP",asax:"ASP",ascx:"ASP",ashx:"ASP",asmx:"ASP",aspx:"ASP",axd:"ASP",dats:"ATS",hats:"ATS",sats:"ATS",as:"ActionScript",adb:"Ada",ada:"Ada",ads:"Ada",agda:"Agda",als:"Alloy",apacheconf:"ApacheConf",vhost:"Nginx",cls:"Visual Basic",applescript:"AppleScript",scpt:"AppleScript",arc:"Arc",ino:"Arduino",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aj:"AspectJ",asm:"Assembly",a51:"Assembly",inc:"SourcePawn",nasm:"Assembly",aug:"Augeas",ahk:"AutoHotkey",ahkl:"AutoHotkey",au3:"AutoIt",awk:"Awk",auk:"Awk",gawk:"Awk",mawk:"Awk",nawk:"Awk",bat:"Batchfile",cmd:"Batchfile",befunge:"Befunge",bison:"Bison",bb:"BlitzBasic",decls:"BlitzBasic",bmx:"BlitzMax",bsv:"Bluespec",boo:"Boo",b:"Limbo",bf:"HyPhy",brs:"Brightscript",bro:"Bro",c:"C",cats:"C",h:"Objective-C",idc:"C",w:"C",cs:"Smalltalk",cake:"CoffeeScript",cshtml:"C#",csx:"C#",cpp:"C++","c++":"C++",cc:"C++",cp:"Component Pascal",cxx:"C++","h++":"C++",hh:"Hack",hpp:"C++",hxx:"C++",inl:"C++",ipp:"C++",tcc:"C++",tpp:"C++","c-objdump":"C-ObjDump",chs:"C2hs Haskell",clp:"CLIPS",cmake:"CMake","cmake.in":"CMake",cob:"COBOL",cbl:"COBOL",ccp:"COBOL",cobol:"COBOL",cpy:"COBOL",css:"CSS",csv:"CSV",capnp:"Cap'n Proto",mss:"CartoCSS",ceylon:"Ceylon",chpl:"Chapel",ch:"xBase",ck:"ChucK",cirru:"Cirru",clw:"Clarion",icl:"Clean",dcl:"Clean",click:"Click",clj:"Clojure",boot:"Clojure",cl2:"Clojure",cljc:"Clojure",cljs:"Clojure","cljs.hl":"Clojure",cljscm:"Clojure",cljx:"Clojure",hic:"Clojure",coffee:"CoffeeScript",_coffee:"CoffeeScript",cjsx:"CoffeeScript",cson:"CoffeeScript",iced:"CoffeeScript",cfm:"ColdFusion",cfml:"ColdFusion",cfc:"ColdFusion CFC",lisp:"NewLisp",asd:"Common Lisp",cl:"OpenCL",l:"PicoLisp",lsp:"NewLisp",ny:"Common Lisp",podsl:"Common Lisp",sexp:"Common Lisp",cps:"Component Pascal",coq:"Coq",v:"Verilog",cppobjdump:"Cpp-ObjDump","c++-objdump":"Cpp-ObjDump","c++objdump":"Cpp-ObjDump","cpp-objdump":"Cpp-ObjDump","cxx-objdump":"Cpp-ObjDump",creole:"Creole",cr:"Crystal",feature:"Cucumber",cu:"Cuda",cuh:"Cuda",cy:"Cycript",pyx:"Cython",pxd:"Cython",pxi:"Cython",d:"Makefile",di:"D","d-objdump":"D-ObjDump",com:"DIGITAL Command Language",dm:"DM",zone:"DNS Zone",arpa:"DNS Zone",darcspatch:"Darcs Patch",dpatch:"Darcs Patch",dart:"Dart",diff:"Diff",patch:"Diff",dockerfile:"Dockerfile",djs:"Dogescript",dylan:"Dylan",dyl:"Dylan",intr:"Dylan",lid:"Dylan",E:"E",ecl:"ECLiPSe",eclxml:"ECL",sch:"KiCad",brd:"KiCad",epj:"Ecere Projects",e:"Eiffel",ex:"Elixir",exs:"Elixir",elm:"Elm",el:"Emacs Lisp",emacs:"Emacs Lisp","emacs.desktop":"Emacs Lisp",em:"EmberScript",emberscript:"EmberScript",erl:"Erlang",es:"JavaScript",escript:"Erlang",hrl:"Erlang",xrl:"Erlang",yrl:"Erlang",fs:"GLSL",fsi:"F#",fsx:"F#",fx:"HLSL",flux:"FLUX",f90:"FORTRAN",f:"Forth",f03:"FORTRAN",f08:"FORTRAN",f77:"FORTRAN",f95:"FORTRAN",for:"Forth",fpp:"FORTRAN",factor:"Factor",fy:"Fancy",fancypack:"Fancy",fan:"Fantom","eam.fs":"Formatted",fth:"Forth","4th":"Forth",forth:"Forth",fr:"Text",frt:"Forth",ftl:"FreeMarker",g:"GAP",gco:"G-code",gcode:"G-code",gms:"GAMS",gap:"GAP",gd:"GDScript",gi:"GAP",tst:"Scilab",s:"GAS",ms:"MAXScript",glsl:"GLSL",fp:"GLSL",frag:"JavaScript",frg:"GLSL",fsh:"GLSL",fshader:"GLSL",geo:"GLSL",geom:"GLSL",glslv:"GLSL",gshader:"GLSL",shader:"GLSL",vert:"GLSL",vrx:"GLSL",vsh:"GLSL",vshader:"GLSL",gml:"XML",kid:"Genshi",ebuild:"Gentoo Ebuild",eclass:"Gentoo Eclass",po:"Gettext Catalog",pot:"Gettext Catalog",glf:"Glyph",gp:"Gnuplot",gnu:"Gnuplot",gnuplot:"Gnuplot",plot:"Gnuplot",plt:"Gnuplot",go:"Go",golo:"Golo",gs:"JavaScript",gst:"Gosu",gsx:"Gosu",vark:"Gosu",grace:"Grace",gradle:"Gradle",gf:"Grammatical Framework",graphql:"GraphQL",dot:"Graphviz (DOT)",gv:"Graphviz (DOT)",man:"Groff","1in":"Groff","1m":"Groff","1x":"Groff","3in":"Groff","3m":"Groff","3qt":"Groff","3x":"Groff",me:"Groff",n:"Nemerle",rno:"Groff",roff:"Groff",groovy:"Groovy",grt:"Groovy",gtpl:"Groovy",gvy:"Groovy",gsp:"Groovy Server Pages",hcl:"HCL",tf:"HCL",hlsl:"HLSL",fxh:"HLSL",hlsli:"HLSL",html:"HTML",htm:"HTML","html.hl":"HTML",st:"Smalltalk",xht:"HTML",xhtml:"HTML",mustache:"HTML+Django",jinja:"HTML+Django",eex:"HTML+EEX",erb:"HTML+ERB","erb.deface":"HTML+ERB",phtml:"HTML+PHP",http:"HTTP",php:"PHP",haml:"Haml","haml.deface":"Haml",handlebars:"Handlebars",hbs:"Handlebars",hb:"Harbour",hs:"Haskell",hsc:"Haskell",hx:"Haxe",hxsl:"Haxe",hy:"Hy",pro:"QMake",dlm:"IDL",ipf:"IGOR Pro",ini:"INI",cfg:"INI",prefs:"INI",properties:"INI",irclog:"IRC log",weechatlog:"IRC log",idr:"Idris",lidr:"Idris",ni:"Inform 7",i7x:"Inform 7",iss:"Inno Setup",io:"Io",ik:"Ioke",thy:"Isabelle",ijs:"J",flex:"JFlex",jflex:"JFlex",json:"JSON",geojson:"JSON",lock:"JSON",topojson:"JSON",json5:"JSON5",jsonld:"JSONLD",jq:"JSONiq",jsx:"JSX",jade:"Jade",j:"Objective-J",java:"Java",jsp:"Java Server Pages",js:"JavaScript",_js:"JavaScript",bones:"JavaScript",es6:"JavaScript",jake:"JavaScript",jsb:"JavaScript",jscad:"JavaScript",jsfl:"JavaScript",jsm:"JavaScript",jss:"JavaScript",njs:"JavaScript",pac:"JavaScript",sjs:"JavaScript",ssjs:"JavaScript","sublime-build":"JavaScript","sublime-commands":"JavaScript","sublime-completions":"JavaScript","sublime-keymap":"JavaScript","sublime-macro":"JavaScript","sublime-menu":"JavaScript","sublime-mousemap":"JavaScript","sublime-project":"JavaScript","sublime-settings":"JavaScript","sublime-theme":"JavaScript","sublime-workspace":"JavaScript",sublime_metrics:"JavaScript",sublime_session:"JavaScript",xsjs:"JavaScript",xsjslib:"JavaScript",jl:"Julia",ipynb:"Jupyter Notebook",krl:"KRL",kicad_pcb:"KiCad",kit:"Kit",kt:"Kotlin",ktm:"Kotlin",kts:"Kotlin",lfe:"LFE",ll:"LLVM",lol:"LOLCODE",lsl:"LSL",lslp:"LSL",lvproj:"LabVIEW",lasso:"Lasso",las:"Lasso",lasso8:"Lasso",lasso9:"Lasso",ldml:"Lasso",latte:"Latte",lean:"Lean",hlean:"Lean",less:"Less",lex:"Lex",ly:"LilyPond",ily:"LilyPond",m:"Objective-C",ld:"Linker Script",lds:"Linker Script",liquid:"Liquid",lagda:"Literate Agda",litcoffee:"Literate CoffeeScript",lhs:"Literate Haskell",ls:"LoomScript",_ls:"LiveScript",xm:"Logos",x:"Logos",xi:"Logos",lgt:"Logtalk",logtalk:"Logtalk",lookml:"LookML",lua:"Lua",fcgi:"Shell",nse:"Lua",pd_lua:"Lua",rbxs:"Lua",wlua:"Lua",mumps:"M",m4:"M4Sugar",mcr:"MAXScript",mtml:"MTML",muf:"MUF",mak:"Makefile",mk:"Makefile",mkfile:"Makefile",mako:"Mako",mao:"Mako",md:"Markdown",markdown:"Markdown",mkd:"Markdown",mkdn:"Markdown",mkdown:"Markdown",ron:"Markdown",mask:"Mask",mathematica:"Mathematica",cdf:"Mathematica",ma:"Mathematica",mt:"Mathematica",nb:"Text",nbp:"Mathematica",wl:"Mathematica",wlt:"Mathematica",matlab:"Matlab",maxpat:"Max",maxhelp:"Max",maxproj:"Max",mxt:"Max",pat:"Max",mediawiki:"MediaWiki",wiki:"MediaWiki",moo:"Moocode",metal:"Metal",minid:"MiniD",druby:"Mirah",duby:"Mirah",mir:"Mirah",mirah:"Mirah",mo:"Modelica",mms:"Module Management System",mmk:"Module Management System",monkey:"Monkey",moon:"MoonScript",myt:"Myghty",ncl:"Text",nl:"NewLisp",nsi:"NSIS",nsh:"NSIS",axs:"NetLinx",axi:"NetLinx","axs.erb":"NetLinx+ERB","axi.erb":"NetLinx+ERB",nlogo:"NetLogo",nginxconf:"Nginx",nim:"Nimrod",nimrod:"Nimrod",ninja:"Ninja",nit:"Nit",nix:"Nix",nu:"Nu",numpy:"NumPy",numpyw:"NumPy",numsc:"NumPy",ml:"OCaml",eliom:"OCaml",eliomi:"OCaml",ml4:"OCaml",mli:"OCaml",mll:"OCaml",mly:"OCaml",objdump:"ObjDump",mm:"XML",sj:"Objective-J",omgrofl:"Omgrofl",opa:"Opa",opal:"Opal",opencl:"OpenCL",p:"OpenEdge ABL",scad:"OpenSCAD",org:"Org",ox:"Ox",oxh:"Ox",oxo:"Ox",oxygene:"Oxygene",oz:"Oz",pwn:"PAWN",aw:"PHP",ctp:"PHP",php3:"PHP",php4:"PHP",php5:"PHP",phps:"PHP",phpt:"PHP",pls:"PLSQL",pck:"PLSQL",pkb:"PLSQL",pks:"PLSQL",plb:"PLSQL",plsql:"PLSQL",sql:"SQLPL",pov:"POV-Ray SDL",pan:"Pan",psc:"Papyrus",parrot:"Parrot",pasm:"Parrot Assembly",pir:"Parrot Internal Representation",pas:"Pascal",dfm:"Pascal",dpr:"Pascal",lpr:"Pascal",pp:"Puppet",pl:"Prolog",al:"Perl",cgi:"Shell",perl:"Perl",ph:"Perl",plx:"Perl",pm:"Perl6",pod:"Pod",psgi:"Perl",t:"Turing","6pl":"Perl6","6pm":"Perl6",nqp:"Perl6",p6:"Perl6",p6l:"Perl6",p6m:"Perl6",pl6:"Perl6",pm6:"Perl6",pkl:"Pickle",pig:"PigLatin",pike:"Pike",pmod:"Pike",pogo:"PogoScript",pony:"Pony",ps:"PostScript",eps:"PostScript",ps1:"PowerShell",psd1:"PowerShell",psm1:"PowerShell",pde:"Processing",prolog:"Prolog",yap:"Prolog",spin:"Propeller Spin",proto:"Protocol Buffer",pub:"Public Key",pd:"Pure Data",pb:"PureBasic",pbi:"PureBasic",purs:"PureScript",py:"Python",bzl:"Python",gyp:"Python",lmi:"Python",pyde:"Python",pyp:"Python",pyt:"Python",pyw:"Python",rpy:"Ren'Py",tac:"Python",wsgi:"Python",xpy:"Python",pytb:"Python traceback",qml:"QML",qbs:"QML",pri:"QMake",r:"Rebol",rd:"R",rsx:"R",raml:"RAML",rdoc:"RDoc",rbbas:"REALbasic",rbfrm:"REALbasic",rbmnu:"REALbasic",rbres:"REALbasic",rbtbar:"REALbasic",rbuistate:"REALbasic",rhtml:"RHTML",rmd:"RMarkdown",rkt:"Racket",rktd:"Racket",rktl:"Racket",scrbl:"Racket",rl:"Ragel in Ruby Host",raw:"Raw token data",reb:"Rebol",r2:"Rebol",r3:"Rebol",rebol:"Rebol",red:"Red",reds:"Red",cw:"Redcode",rs:"Rust",rsh:"RenderScript",robot:"RobotFramework",rg:"Rouge",rb:"Ruby",builder:"Ruby",gemspec:"Ruby",god:"Ruby",irbrc:"Ruby",jbuilder:"Ruby",mspec:"Ruby",pluginspec:"XML",podspec:"Ruby",rabl:"Ruby",rake:"Ruby",rbuild:"Ruby",rbw:"Ruby",rbx:"Ruby",ru:"Ruby",ruby:"Ruby",thor:"Ruby",watchr:"Ruby","rs.in":"Rust",sas:"SAS",scss:"SCSS",smt2:"SMT",smt:"SMT",sparql:"SPARQL",rq:"SPARQL",sqf:"SQF",hqf:"SQF",cql:"SQL",ddl:"SQL",prc:"SQL",tab:"SQL",udf:"SQL",viw:"SQL",db2:"SQLPL",ston:"STON",svg:"SVG",sage:"Sage",sagews:"Sage",sls:"Scheme",sass:"Sass",scala:"Scala",sbt:"Scala",sc:"SuperCollider",scaml:"Scaml",scm:"Scheme",sld:"Scheme",sps:"Scheme",ss:"Scheme",sci:"Scilab",sce:"Scilab",self:"Self",sh:"Shell",bash:"Shell",bats:"Shell",command:"Shell",ksh:"Shell","sh.in":"Shell",tmux:"Shell",tool:"Shell",zsh:"Shell","sh-session":"ShellSession",shen:"Shen",sl:"Slash",slim:"Slim",smali:"Smali",tpl:"Smarty",sp:"SourcePawn",sma:"SourcePawn",nut:"Squirrel",stan:"Stan",ML:"Standard ML",fun:"Standard ML",sig:"Standard ML",sml:"Standard ML",do:"Stata",ado:"Stata",doh:"Stata",ihlp:"Stata",mata:"Stata",matah:"Stata",sthlp:"Stata",styl:"Stylus",scd:"SuperCollider",swift:"Swift",sv:"SystemVerilog",svh:"SystemVerilog",vh:"SystemVerilog",toml:"TOML",txl:"TXL",tcl:"Tcl",adp:"Tcl",tm:"Tcl",tcsh:"Tcsh",csh:"Tcsh",tex:"TeX",aux:"TeX",bbx:"TeX",bib:"TeX",cbx:"TeX",dtx:"TeX",ins:"TeX",lbx:"TeX",ltx:"TeX",mkii:"TeX",mkiv:"TeX",mkvi:"TeX",sty:"TeX",toc:"TeX",tea:"Tea",txt:"Text",no:"Text",textile:"Textile",thrift:"Thrift",tu:"Turing",ttl:"Turtle",twig:"Twig",ts:"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 Pe=h(ht=>{"use strict";Object.defineProperty(ht,"__esModule",{value:!0});ht.setOptionValues=ls;function ls(t,e){for(let r of Object.keys(e))t[r]!==void 0&&(e[r]=t[r]);return e}});var Oi=h(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.SarifBuilder=void 0;var us=require("path"),Fi=Pi(),fs=ki(),ms=Pe(),St=class{constructor(e={}){this.log={$schema:"http://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[]},(0,ms.setOptionValues)(e,this.log)}addRun(e){this.log.runs.push(e.run)}generateSarifFileSync(e){let r=this.buildSarifJsonString();Fi.writeFileSync(e,r,"utf8")}async generateSarifFile(e){let r=this.buildSarifJsonString();await Fi.writeFile(e,r,"utf8")}buildSarifOutput(){return this.log.runs=this.log.runs.map(e=>this.completeRunFields(e)),this.log}buildSarifJsonString(e={indent:!1}){this.buildSarifOutput();let r=e.indent?JSON.stringify(this.log,null,2):JSON.stringify(this.log);if(r.includes("SARIF_BUILDER_INVALID"))throw new Error("Your SARIF log is invalid, please solve SARIF_BUILDER_INVALID messages");return r}completeRunFields(e){var r,i,n,o;e.artifacts=e.artifacts||[];for(let u of e.results)for(let m of u.locations||[])if(!((i=(r=m?.physicalLocation)===null||r===void 0?void 0:r.artifactLocation)===null||i===void 0)&&i.uri&&e.artifacts.filter(a=>{var l;return((l=a?.location)===null||l===void 0?void 0:l.uri)===m.physicalLocation.artifactLocation.uri}).length===0){let a=us.extname(m.physicalLocation.artifactLocation.uri).replace(".",""),l=fs.EXTENSIONS_LANGUAGES[a]||"unknown";e.artifacts.push({sourceLanguage:l,location:{uri:m.physicalLocation.artifactLocation.uri}})}let s=e.artifacts.map(u=>{var m;return(m=u?.location)===null||m===void 0?void 0:m.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(m=>{var a,l;let p=(l=(a=m?.physicalLocation)===null||a===void 0?void 0:a.artifactLocation)===null||l===void 0?void 0:l.uri;return p&&s.indexOf(p)>-1&&(m.physicalLocation.artifactLocation.index=s.indexOf(p)),m})),u)),e}};Xe.SarifBuilder=St});var Ei=h($e=>{"use strict";Object.defineProperty($e,"__esModule",{value:!0});$e.SarifResultBuilder=void 0;var ps=Pe(),gt=class{constructor(e={}){this.result={level:"error",message:{},ruleId:"SARIF_BUILDER_INVALID: Please send the rule Id ruleId property, or call setRuleId(ruleId)"},(0,ps.setOptionValues)(e,this.result)}initSimple(e){if(this.setLevel(e.level),this.setMessageText(e.messageText),this.setRuleId(e.ruleId),e.fileUri&&this.setLocationArtifactUri({uri:e.fileUri}),e.startLine!==null&&e.startLine!==void 0){let r={startLine:e.startLine,startColumn:e.startColumn||1,endLine:e.endLine||e.startLine,endColumn:e.endColumn||1};if(e.startLine===0||e.startColumn===0||e.endLine===0||e.endColumn===0)throw new Error("Region limit can not be 0 (minimum line 1 or column 1) in "+JSON.stringify(e));this.setLocationRegion(r)}return this}setLevel(e){this.result.level=e}setMessageText(e){this.result.message.text=e}setRuleId(e){this.result.ruleId=e}setLocationRegion(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.region=e}setLocationArtifactUri(e){this.manageInitPhysicalLocation(),this.result.locations[0].physicalLocation.artifactLocation=e}manageInitLocation(){var e,r;!((r=(e=this.result)===null||e===void 0?void 0:e.locations)===null||r===void 0)&&r.length||(this.result.locations=[{}])}manageInitPhysicalLocation(){var e;this.manageInitLocation(),!(!((e=this.result)===null||e===void 0)&&e.locations[0].physicalLocation)&&(this.result.locations[0].physicalLocation={})}};$e.SarifResultBuilder=gt});var Di=h(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.SarifRuleBuilder=void 0;var ds=Pe(),vt=class{constructor(e={}){this.rule={id:"SARIF_BUILDER_INVALID: Please send the rule identifier in id property, or call setRuleId(ruleId)",shortDescription:{text:"SARIF_BUILDER_INVALID: Please send the rule text in shortDescription.text property, or call setShortDescriptionText(text)"}},(0,ds.setOptionValues)(e,this.rule)}initSimple(e){return this.setRuleId(e.ruleId),e.shortDescriptionText&&this.setShortDescriptionText(e.shortDescriptionText),e.fullDescriptionText&&this.setFullDescriptionText(e.fullDescriptionText),e.helpUri&&this.setHelpUri(e.helpUri),this}setRuleId(e){this.rule.id=e}setShortDescriptionText(e){this.rule.shortDescription.text=e}setFullDescriptionText(e){this.rule.fullDescription=this.rule.fullDescription||{text:""},this.rule.fullDescription.text=e}setHelpUri(e){this.rule.helpUri=e}};Be.SarifRuleBuilder=vt});var ji=h(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0});Ue.SarifRunBuilder=void 0;var ys=Pe(),wt=class{constructor(e={}){this.run={tool:{driver:{name:process.env.npm_package_name||"SARIF_BUILDER_INVALID: Please send the tool name in tool.driver.name property, or call setToolName(name)",rules:[]}},results:[]},(0,ys.setOptionValues)(e,this.run)}initSimple(e){return this.setToolDriverName(e.toolDriverName),this.setToolDriverVersion(e.toolDriverVersion),e.url&&this.setToolDriverUri(e.url),this}addRule(e){this.run.tool.driver.rules.push(e.rule)}addResult(e){this.run.results.push(e.result)}setToolDriverName(e){this.run.tool.driver.name=e}setToolDriverVersion(e){this.run.tool.driver.version=e}setToolDriverUri(e){this.run.tool.driver.informationUri=e}};Ue.SarifRunBuilder=wt});var Ti=h(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.SarifResultBuilder=W.SarifRuleBuilder=W.SarifRunBuilder=W.SarifBuilder=void 0;var hs=Oi();Object.defineProperty(W,"SarifBuilder",{enumerable:!0,get:function(){return hs.SarifBuilder}});var Ss=Ei();Object.defineProperty(W,"SarifResultBuilder",{enumerable:!0,get:function(){return Ss.SarifResultBuilder}});var gs=Di();Object.defineProperty(W,"SarifRuleBuilder",{enumerable:!0,get:function(){return gs.SarifRuleBuilder}});var vs=ji();Object.defineProperty(W,"SarifRunBuilder",{enumerable:!0,get:function(){return vs.SarifRunBuilder}})});var Ci=h((ja,Mi)=>{"use strict";var ws=/["'&<>]/;Mi.exports=bs;function bs(t){var e=""+t,r=ws.exec(e);if(!r)return e;var i,n="",o=0,s=0;for(o=r.index;o<e.length;o++){switch(e.charCodeAt(o)){case 34:i=""";break;case 38:i="&";break;case 39:i="'";break;case 60:i="<";break;case 62:i=">";break;default:continue}s!==o&&(n+=e.substring(s,o)),s=o+1,n+=i}return s!==o?n+e.substring(s,o):n}});var Ke=require("zx"),ae=require("fs/promises");var Ye={UNKNOWN:0,LOW:1,MEDIUM:2,HIGH:3,CRITICAL:4};var Fe=class{allById=new Map;getAllVulnerabilitiesSortedBySeverity(){let e=Array.from(this.allById.values());return e.sort((r,i)=>{let n=Lt(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=Ji(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(i.id);continue}i.vexStatement=n}return{unmatchedVulnerabilities:r}}};function Ji(t,e){return Lt(t,e)>0?t:e}function Lt(t,e){return Ye[t]-Ye[e]}function Ze(t,e){return e?Array.from(new Set([...t,e]).values()):t}var Oe=ze(require("path"));var B=require("fs/promises"),et=require("path");async function G(t){if(await ne(t))return JSON.parse(await(0,B.readFile)(t,{encoding:"utf-8"}))}function H(t){return t&&t.replace(/\?.*$/,"")}async function ne(t){try{return await(0,B.access)(t,B.constants.F_OK),!0}catch{return!1}}async function tt(t){let e=(0,et.resolve)(t),r=await(0,B.readdir)(e,{withFileTypes:!0});for(let i of r){let n=(0,et.resolve)(i.parentPath,i.name);i.isDirectory()?await tt(n):await(0,B.rm)(n)}await(0,B.rmdir)(e)}async function he(t,e){let r=e?.user&&e?.pw?{Authorization:`Basic ${Buffer.from(`${e.user}:${e.pw}`).toString("base64")}`}:{},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 Pt(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 G(s);if(!c)throw new Error(`Missing project configuration file '${s}'`);return{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 m=u;return m.sbomFile?{...m,sbomFile:Y(t.workingDir,m.sbomFile)}:u})}}function Y(t,e){if(e)return Oe.default.isAbsolute(e)?e:(0,Oe.resolve)(t,e)}var kt=require("zx");var Ee=require("path");async function Ft(t,e,r,i){console.log(" with Grype ...");let n=(0,Ee.dirname)(e),o=(0,Ee.basename)(e),s=await kt.$`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 G(e);Wi(i,c)}function Wi(t,e){if(e)for(let r of e.matches){let i=Hi(r);t.addVulnerability(i,"grype")}}function Hi(t){let e=t.vulnerability,r=e.id,i=H(t.artifact.purl),n=H(e.dataSource),o=Qi(e.severity);return{id:r,severity:o,scannerSeverity:{grype:o},title:"",description:e.description,components:[i],detectedBy:["grype"],refs:[n]}}function Qi(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 Ot=require("zx");var De=require("path");async function Et(t,e,r,i,n){let o=(0,De.dirname)(e),s=(0,De.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 m=await Ot.$`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`;m.stdout&&console.log(` Scan log: ${m.stdout}`),m.stderr&&console.log(` Scan error: ${m.stderr}`),console.log(` Trivy output file: ${e}`);let a=await G(e);Ki(n,a)}function Ki(t,e){if(e){for(let r of e.Results)if(r.Vulnerabilities)for(let i of r.Vulnerabilities){let n=zi(i);t.addVulnerability(n,"trivy")}}}function zi(t){let e=t.VulnerabilityID,r=H(t.PkgIdentifier.PURL),i=H(t.PrimaryURL),n=Yi(t.Severity);return{id:e,severity:n,scannerSeverity:{trivy:n},title:t.Title,description:t.Description,components:[r],detectedBy:["trivy"],refs:[i]}}function Yi(t){switch(t){case"UNKNOWN":case"LOW":case"MEDIUM":case"HIGH":case"CRITICAL":return t;default:return"UNKNOWN"}}var Dt=require("fs/promises");async function jt(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 Zi(e.sbomFile),u=new Set(c.map(l=>l.purl.replace(/\?.*$/,"")));sn(u);let m=Array.from(u),a=[];for(let l=0;l<m.length;l+=128){let p=JSON.stringify({coordinates:m.slice(l,l+128)}),d=await(await fetch(s,{method:"POST",headers:{...n,"Content-Type":"application/vnd.ossindex.component-report-request.v1+json"},body:p})).json();Array.isArray(d)?a.push(...d.filter(S=>S.vulnerabilities.length>0)):console.log(` Sonatype OssIndex Error: ${d.code} - ${d.message}`)}await(0,Dt.writeFile)(t,JSON.stringify(a,null,2)),console.log(` Sonatype OssIndex output file: ${t}`),rn(i,a)}async function Zi(t){return(await G(t)).components.filter(r=>en(r)&&!tn(r))}function en(t){return!!t.purl}function tn(t){return t.group?t.group.startsWith("de.conterra")||t.group.startsWith("org.n52.security"):!1}function rn(t,e){if(e)for(let r of e)for(let i of r.vulnerabilities){let n=nn(i,r.coordinates);t.addVulnerability(n,"ossindex")}}function nn(t,e){let r=t.cve||t.id,i=H(e),n=H(t.reference),o=on(t.cvssScore);return{id:r,severity:o,scannerSeverity:{ossindex:o},title:t.title,description:t.description,components:[i],detectedBy:["ossindex"],refs:n?[n]:[]}}function on(t){return t===0?"UNKNOWN":t<4?"LOW":t<7?"MEDIUM":t<9?"HIGH":"CRITICAL"}function sn(t){let e=Array.from(t);for(let r of e){let i=r.replace(/(@[^-]+)-.*$/g,"$1");t.add(i)}}var ie=ze(Ti()),Ii=ze(Ci());function Ai(t,e){let r=new ie.SarifRunBuilder().initSimple({toolDriverName:`${e.name} - ${e.version}`,toolDriverVersion:"0.0.1"}),i=new Date().toISOString().split("T")[0];r.run.tool.driver.fullDescription={text:`Security Scan from ${i}`},r.run.tool.driver.properties={"microsoft/qualityDomain":`Security Scan from ${i}`};for(let o of t){let s=Ls(o.severity),c=o.id,u=xs(o.refs),m=new ie.SarifRuleBuilder().initSimple({ruleId:c,shortDescriptionText:o.title,fullDescriptionText:o.description,helpUri:u}),a=o.vexStatement,l,p="new",f="";a&&(s="none",p="updated",f=`--- INVESTIGATED (${a.status}) --- `,a.status==="under_investigation"&&(f="--- UNDER INVESTIGATION --- ")),Object.assign(m.rule,{name:`${f}[${o.severity}] - ${o.title.replace(`[${c}]`,"")}`,messageStrings:{default:{text:o.description,markdown:Ps(o,u,f)}},properties:{severity:o.severity,scanners:o.scannerSeverity,links:o.refs,tags:["cve","vulnerability","security",`severity_${o.severity.toLowerCase()}`]}}),r.addRule(m);for(let d of o.components){let S=new ie.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=l,r.addResult(S)}}let n=new ie.SarifBuilder;return n.addRun(r),n.buildSarifOutput()}function xs(t){for(let e of t)if(e.startsWith("https://nvd.nist.gov"))return e;return t[0]}function Ls(t){switch(t){case"CRITICAL":return"error";case"HIGH":return"error";case"MEDIUM":return"warning";case"LOW":return"note";default:return"note"}}function Ps(t,e,r){let i=t.vexStatement,n=i?`
|
|
9
9
|
${r}
|
|
10
10
|
${i.justification??""}
|
|
11
11
|
${i.impact_statement??""}
|
|
@@ -17,12 +17,12 @@ ${n}
|
|
|
17
17
|
|
|
18
18
|
--- DETAILS ---
|
|
19
19
|
|
|
20
|
-
${(0,
|
|
20
|
+
${(0,Ii.default)(t.description)}
|
|
21
21
|
|
|
22
22
|
${t.refs.map(o=>`* <${o}>`).join(`
|
|
23
23
|
`)}
|
|
24
|
-
`}var
|
|
25
|
-
Detected new vulnerabilities for products:`);for(let[
|
|
24
|
+
`}var Je=require("fs/promises");async function Ri(t,e,r){if("sbomFile"in t)return await(0,Je.copyFile)(t.sbomFile,e),t.sbomFile=e,t;let i=await r.downloadArtifact(t.sbomMavenCoordinates);return await(0,Je.writeFile)(e,i),{...t,sbomFile:e}}var Ge=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 he(i,this.authn);return Buffer.from(await n.arrayBuffer())}async fetchLatestSnapshotTimestamp(e){let r=`${this.toArtifactBaseUrl(e)}/maven-metadata.xml`,n=await(await he(r,this.authn)).text(),o=n.match(/<timestamp>([^<]+)<\/timestamp>/),s=n.match(/<buildNumber>([^<]+)<\/buildNumber>/);if(!o||!s)throw new Error(`Failed to get timestamp and build number from ${r}`);return`${o[1]}-${s[1]}`}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"}}};var Ni=require("fs/promises"),We=require("path");var ye=class t{statements=[];filteredToProduct;static async fromUrl(e,r,i=new t){let o=await(await he(e,r)).json();return i.add(o),i}static async fromFiles(e,r=new t){let i=(0,We.resolve)(e);for(let n of await(0,Ni.readdir)(i,{withFileTypes:!0}))if(n.name.endsWith(".json")){let o=await G((0,We.resolve)(n.parentPath,n.name));r.add(o)}else n.isDirectory()&&await t.fromFiles((0,We.resolve)(n.parentPath,n.name),r);return r}add(e){ks(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(m=>m["@id"]).filter(m=>!!m)??[]),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 ks(t){if(t?.["@context"]!=="https://openvex.dev/ns/v0.2.0")throw new Error("Invalid VEX file format")}var Qe=require("path"),qi=require("fs/promises");var He=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,Qe.resolve)(this.outputDir,r,`${i}${n}`),s=(0,Qe.dirname)(o);return await ne(s)||await(0,qi.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}`)}}};Ke.os.type().startsWith("Windows")&&(0,Ke.usePowerShell)();async function Vi(t){let{mavenRepoUser:e,mavenRepoPw:r,reduceToProjectVersion:i,reduceToProjectName:n,ossIndexApiUser:o,ossIndexApiToken:s,trivyGithubToken:c,vexUrlsUser:u,vexUrlsPw:m}=t,a=await Pt(t),l=a.cacheDir;await ne(l)||await(0,ae.mkdir)(l);let p=a.outDir;await ne(p)&&await tt(p),await(0,ae.mkdir)(p);let f=a.vexDir,d;await ne(f)?d=await ye.fromFiles(f):d=new ye;for(let x of a.vexUrls)await ye.fromUrl(x,{user:u,pw:m},d);let S=new Ge(a.mavenRepo,{user:e,pw:r}),v=a.projects,b=new Map,A=t.scannerEngines??a.scanners.map(x=>({scanProject($,X,z){return Fs(x,$,X,l,z,o,s,c)}}));for(let x of v){if(n&&(x.name!==n||i&&x.version!==i))continue;let $=new He(x,p,a.createSubDirsForProject),X=await Ri(x,await $.lookupOutputFileForWriting("project-cyclonedx-sbom-file"),S);console.log(`Analyzing project: ${X.name} - ${X.version} - ${X.sbomFile}`);let z=new Fe;await Promise.all(A.map(y=>y.scanProject(X,$,z)));let ke=d.filterByProduct(X.purl),{unmatchedVulnerabilities:le}=z.enhanceWithVexData(ke);le.length>0&&b.set(X.purl,le),await Os($,X,z,ke)}if(b.size>0){console.log(`
|
|
25
|
+
Detected new vulnerabilities for products:`);for(let[x,$]of b){console.log(` ${x}:`);for(let X of $)console.log(` ${X}`)}t.mode!=="test"&&console.log("##vso[task.complete result=SucceededWithIssues;]NEW_VULNERABILITIES_DETECTED"),a.failOnNewVulnerabilities&&process.exit(1)}}async function Fs(t,e,r,i,n,o,s,c){switch(t){case"grype":return Ft(i,await r.lookupOutputFileForWriting("grype-results"),e,n);case"trivy":return Et(i,await r.lookupOutputFileForWriting("trivy-results"),e,c,n);case"ossindex":return jt(await r.lookupOutputFileForWriting("ossindex-results"),e,{user:o,token:s},n)}}async function Os(t,e,r,i){let n=r.getAllVulnerabilitiesSortedBySeverity(),o=await t.lookupOutputFileForWriting("aggregate-results");await(0,ae.writeFile)(o,JSON.stringify(n,null,2)),console.log(` Vulnerabilities output file: ${o}`);let s=await t.lookupOutputFileForWriting("aggregated-sarif-results"),c=Ai(n,e);await(0,ae.writeFile)(s,JSON.stringify(c,null,2)),console.log(` Vuln Sarif output file: ${s}`);let u=i.toVexFileForProduct();if(!u)return;let m=await t.lookupOutputFileForWriting("project-openvex-file");await(0,ae.writeFile)(m,JSON.stringify(u,null,2)),console.log(` OpenVex file: ${m}`)}var ce=process.env;Vi({workingDir:process.cwd(),reduceToProjectName:process.argv[2],reduceToProjectVersion:process.argv[3],ossIndexApiUser:ce.OSS_INDEX_API_USER,ossIndexApiToken:ce.OSS_INDEX_API_TOKEN,mavenRepoUser:ce.MAVEN_REPO_USER,mavenRepoPw:ce.MAVEN_REPO_PW,trivyGithubToken:ce.TRIVY_GITHUB_TOKEN,vexUrlsUser:ce.VEX_URLS_USER,vexUrlsPw:ce.VEX_URLS_PW});
|
|
26
26
|
/*! Bundled license information:
|
|
27
27
|
|
|
28
28
|
escape-html/index.js:
|